You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
To make it easy for users to share and install plugins, drivers and braille translation tables, they can be packaged in to a single NVDA add-on package which the user can then install into a copy of NVDA via the Add-on Store found under Tools in the NVDA menu.
952
+
Add-ons make it easy for users to share and install plugins, drivers, speech symbol dictionaries and braille translation tables.
953
+
They can be packaged in to a single NVDA add-on package, which the user can then install into a copy of NVDA via the Add-on Store found under Tools in the NVDA menu.
953
954
Add-on packages are only supported in NVDA 2012.2 and later.
954
-
An add-on package is simply a standard zip archive with the file extension of "`nvda-addon`" which contains a manifest file, optional install/uninstall code and one or more directories containing plugins, drivers and/or and braille translation tables.
955
+
An add-on package is simply a standard zip archive with the file extension of "`nvda-addon`".
956
+
It can contain a manifest file, install/uninstall code and directories containing plugins, drivers, speech symbol dictionaries and braille translation tables.
955
957
956
958
### Non-ASCII File Names in Zip Archives {#nonASCIIFileNamesInZip}
957
959
@@ -1013,21 +1015,23 @@ The lastTestedNVDAVersion field in particular is used to ensure that users can b
1013
1015
It allows the add-on author to make an assurance that the add-on will not cause instability, or break the users system.
1014
1016
When this is not provided, or is less than the current version of NVDA (ignoring minor point updates e.g. 2018.3.1) then the user will be warned not to install the add-on.
1015
1017
1016
-
The manifest can also specify information regarding the additional braille translation tables provided by the add-on.
1017
-
Please refer to the [braille translation tables section](#BrailleTables)later on in this document.
1018
+
The manifest can also specify information regarding the additional speech symbol dictionaries and braille translation tables provided by the add-on.
1019
+
Please refer to the [speech symbol dictionaries](#AddonSymbolDictionaries) and [braille translation tables](#BrailleTables)sections.
1018
1020
1019
1021
#### An Example Manifest File {#manifestExample}
1020
-
--- start ---
1021
-
name = "myTestAddon"
1022
-
summary = "Cool Test Add-on"
1023
-
version = "1.0.0"
1024
-
description = "An example add-on showing how to create add-ons!"
The following plugins and drivers can be included in an add-on:
@@ -1036,6 +1040,7 @@ The following plugins and drivers can be included in an add-on:
1036
1040
* Braille display drivers: Place them in a brailleDisplayDrivers directory in the archive.
1037
1041
* Global plugins: Place them in a globalPlugins directory in the archive.
1038
1042
* Synthesizer drivers: Place them in a synthDrivers directory in the archive.
1043
+
*[Speech symbol dictionaries](#AddonSymbolDictionaries): Place them in the directory for one or more [locales](#localizingAddons) with a file name of `symbols-<name>.dic`, e.g. `locale\en\symbols-greek.dic`.
1039
1044
*[Braille translation tables](#BrailleTables): Place them in a brailleTables directory in the archive.
@@ -1067,6 +1072,7 @@ This directory should contain directories for each language it supports, using t
1067
1072
1068
1073
Each of these language directories can contain a locale-specific manifest file called manifest.ini, which can contain a small subset of the manifest fields for translation.
1069
1074
These fields are summary and description.
1075
+
You can also override the `displayName` field for speech symbol dictionaries and braille translation tables.
1070
1076
All other fields will be ignored.
1071
1077
1072
1078
#### Locale-specific Messages {#localeMessages}
@@ -1077,6 +1083,47 @@ To allow plugins in your add-on to access gettext message information via calls
1077
1083
This function cannot be called in modules that do not belong to an add-on, e.g. in a scratchpad subdirectory.
1078
1084
For more information about gettext and NVDA translation in general, please read the [Translating NVDA page](https://github.com/nvaccess/nvda/blob/master/projectDocs/translating/readme.md)
1079
1085
1086
+
#### Speech symbol dictionaries {#AddonSymbolDictionaries}
1087
+
1088
+
You can provide custom speech symbol dictionaries in add-ons to improve symbol pronunciation.
1089
+
The process to create custom speech symbol dictionaries is very similar to that of the [translation process of existing symbols](#symbolPronunciation).
1090
+
Note that [complex symbols](#complexSymbols) are not supported.
1091
+
1092
+
Custom dictionaries must be placed in a language directory and have a filename in the form `symbols-<name>.dic`, where `<name>` is the name that has to be provided in the add-ons manifest.
1093
+
All locales implicitly inherit the symbol information for English, though any of this information can be overridden for specific locales.
1094
+
1095
+
When adding a dictionary not marked as mandatory, some information must be provided such as its display name, since it should be shown in the speech category of the settings dialog.
1096
+
A dictionary can also be marked mandatory, in which case it is always enabled with the add-on.
1097
+
When an add-on ships with dictionaries, this information is included in its manifest in the optional `symbolDictionaries` section.
1098
+
For example:
1099
+
1100
+
```ini
1101
+
[symbolDictionaries]
1102
+
[[greek]]
1103
+
displayName = Greek
1104
+
mandatory = false
1105
+
1106
+
[[hebrew]]
1107
+
displayName = Biblical Hebrew
1108
+
mandatory = true
1109
+
```
1110
+
1111
+
In the above example, `greek` is a dictionary that is optional and will be listed in the speech category of NVDA's settings dialog under the "Extra dictionaries for character and symbol processing" setting.
1112
+
Its file will be stored as `locale\en\symbols-greek.dic`, whereas French translations of the symbols are stored in `locale\fr\symbols-greek.dic`.
1113
+
When using NVDA in French, symbols that aren't defined in the French dictionary inherit the symbol information for English.
1114
+
1115
+
Also in the example, the `hebrew` dictionary is marked mandatory and will therefore always be enabled as long as the add-on is active.
1116
+
Its file will be stored as `locale\en\symbols-hebrew.dic`, whereas French translations of the symbols are stored in `locale\fr\symbols-hebrew.dic`.
1117
+
1118
+
Note that for the display name of the dictionary to be translated, an entry should be added to a [locale manifest](#localeManifest).
1119
+
For example, add the following to `locale\fr\manifest.ini`:
1120
+
1121
+
```ini
1122
+
[symbolDictionaries]
1123
+
[[hebrew]]
1124
+
displayName = Hébreu Biblique
1125
+
```
1126
+
1080
1127
### Add-on Documentation {#AddonDoc}
1081
1128
1082
1129
Documentation for an add-on should be placed in a doc directory in the archive.
@@ -1121,6 +1168,15 @@ Providing a custom table, whether it has the same file name as a standard table
1121
1168
The only exception to this rule applies to tables that are included within other tables.
1122
1169
While they don't have to be included in the manifest of the add-on, they can only be included from other tables that are part of the same add-on.
1123
1170
1171
+
Note that for the display name of the table to be translated, an entry should be added to a [locale manifest](#localeManifest).
1172
+
For example, add the following to `locale\fr\manifest.ini`:
0 commit comments