Retirado do Guia do desenvolvedor do NVDA:

+ Empacotar Código Como Add-ons do NVDA +

Para facilitar a partilha e instalação de plugins e drivers, estes podem ser empacotados num único add-on do NVDA, que o utilizador pode instalar numa cópia do NVDA através do Gestor de Extras, encontrado no menu Ferramentas no menu do NVDA. Um Add-on é apenas um ficheiro zip com a extensão .nvda-addon, contendo um ficheiro manifest, código opcional para instalação/desinstalação e uma ou s> mais pastas contendo plugins e/ou drivers. ++ Ficheiros Manifest ++ Cada Add-on deve conter um ficheiro Manifest chamado manifest.ini. Este ficheiro Manifest contém vários pares key = value declarando informação tal como o nome do Add-on, versão e descrição.

+++ Campos Disponíveis +++

Apesar de ser altamente recomendável que o manifest tenha todos os campos, os campos marcados como obrigatórios Têm de ser sempre incluídos. Caso contrário, o Add-on não será instalado. - name: Um nome curto e identificativo do Add-on. É usado para diferenciar os Add-ons internamente. (Obrigatório) - summary: Algumas palavras descrevendo o Add-on. É o nome que aparece no Gestor de Extras. (Obrigatório) - version: A versão do Add-on, por exemplo, 2.0. (Obrigatório) - author: O autor do Add-on, de preferência no formato Name Completo , por exemplo Michael Curran . (Obrigatório) - description: Uma frase ou duas descrevendo o que faz o Add-on mais detalhadamente. - url: Um URL onde este Add-on, mais informações e futuras actualizações poderão ser encontrados .

+++ Um Exemplo de Ficheiro Manifest +++

*** --- Início --- name = MeuAddonDeTeste summary = Um bom teste de Add-on version = 1.0 description = Um exemplo de Add-on mostrando como se criam Add-ons! author = Michael Curran url = http://www.nvda-project.org/wiki/Development --- fim --- ```

++ Plugins e Drivers ++

Os Plugins e Drivers seguintes podem ser incluídos num Add-on: - App modules: Coloque-os numa pasta appModules do ficheiro; - Braille display drivers: Coloque-os numa pasta brailleDisplayDrivers do ficheiro; - Global plugins: Coloque-os numa pasta globalPlugins do ficheiro ; - Synthesizer drivers: Coloque-os numa pasta synthDrivers do ficheiro; -

++ Código Opcional Para instalação / Desinstalação code ++

Se for necessário executar qualquer código enquanto o Add-on é instalado ou desinstalado do NVDA (por exemplo, validar informação da licença ou copiar ficheiros para uma localização específica), pode fornecer um ficheiro Python chamado installTasks.py contendo funções especiais que o NVDA correrá durante a instalação ou desinstalação do Add-on. Este ficheiro deve evitar carregar quaisquer módulos que não sejam absolutamente necessários, especialmente extensões C para Python ou DLLs do seu próprio Add-on, pois isso pode causar futuras falhas na remoção do Add-on. Contudo, se esta falha acontecer, a pasta do Add-on será renomeada e apagada no próximo reinício do NVDA. Finalmente, não deve depender da existência ou estado de outros Add-ons, pois estes podem não estar instalados, terem sido removidos ou ainda não terem sido iniciados.

+++ A função onInstall +++

O NVDA procurará e executará uma função onInstall no ficheiro installTasks.py após concluir a extração do Add-on para o NVDA. Note que apesar de o Add-on já ter sido descompactado, a sua directoria terá uma extensão .pendingInstall até o NVDA ser reiniciado, a diretoria ser renomeada e o Add-on ser realmente carregado pela primeira vez. Se esta função levantar uma excepção, a instalação do Add-on falhará e a sua directoria será eliminada.

+++ A Função onUninstall +++

O NVDA procurará e executará uma função onUninstall no ficheiro installTasks.py quando o NVDA é reiniciado após o utilizador ter escolhido remover o Add-on. Após esta função terminar, a directoria do Add-on será automaticamente removida. Como isto acontece no arranque do NVDA, antes de outros componentes serem inicializados, esta função não poderá requerer intervenção do utilizador.

++ Localização de Add-ons ++

É possível incluir num Add-on informação e mensagens noutros idiomas. Essa informação deve ser incluida na directoria locale . Esta directoria deve conter as sub-directorias necessárias para os idiomas pretendidos, usando o mesmo formato de código de idiomas usado pelo NVDA, por exemplo, en para inglês, fr_CA para o francês do Canadá.

+++ Ficheiros Manifest Localizados +++

Cada uma das directorias de idioma deve conter um ficheiro chamado manifest.ini, que deve conter uma parte dos campos do manifest para serem traduzidos.> Esses campos são "summary" e "description". Todos os outros campos serão ignorados.

+++ Mensagens Localizadas+++

Cada uma das directorias de idioma deve conter informação gettext, que é o sistema usado para traduzir o restante do NVDA, interface e mensagens anunciadas. Tal como no NVDA, um ficheiro gettext database compilado, nvda.mo, deve ser colocado na directoria LC_MESSAGES da pasta respeitante a cada idioma. Para permitir que os plugins do Add-on acedam às mensagens gettext, via chamadas às funções _(), deve inicializar as traduções no ínicio de cada módulo Python chamando addonHandler.initTranslations(). Para mais informações sobre gettext e tradução do NVDA em geral, por favor, consulte http://www.nvda-project.org/wiki/TranslatingNVDA

Atenciozamente Acessibilidade Total.

Faça por sua conta e risco!