Next: , Up: Languages Which Aspell can Support



B.1 Supported

Aspell 0.60 should be able to support the following languages as, to the best of my knowledge, they all contain 210 or fewer symbols and can thus, fit within an 8-bit character set. If an existing character set does not exists than a new one can be invented. This is true even if the script is not yet supported by Unicode as the private use area can be used.

Code Language Name Script Dictionary Available Gettext Translation

aa Afar Latin - -
af Afrikaans Latin Yes -
ak Akan Latin - -
am Amharic Ethiopic Planned -
ar Arabic Arabic Planned -
as Assamese Bengali - -
ast Asturian / Bable Latin Maybe -
av Avar Cyrillic - -
ay Aymara Latin - -
az Azerbaijani Latin Experimental -

ba Bashkir Cyrillic - -
be Belarusian Cyrillic Yes Yes
bem Bemba Latin Maybe -
bg Bulgarian Cyrillic Yes -
bh Bihari Devanagari - -
bi Bislama Latin Maybe -
bm Bambara Latin - -
bn Bengali Bengali Experimental -
bo Tibetan Tibetan - -
br Breton Latin Yes -
bs Bosnian Latin Maybe -

ca Catalan / Valencian Latin Yes -
ce Chechen Cyrillic - -
ceb Cebuano Latin Maybe -
ch Chamorro Latin Maybe -
co Corsican Latin Maybe -
cs Czech Latin Yes Yes
cv Chuvash Cyrillic - -
cy Welsh Latin Yes -

da Danish Latin Yes Yes
de German Latin Yes Yes

ee Ewe Latin - -
el Greek Greek Yes -
en English Latin Yes Yes
eo Esperanto Latin Yes -
es Spanish Latin Yes Incomplete
et Estonian Latin Experimental -
eu Basque Latin Maybe -

fa Persian Arabic Maybe -
ff Fulah Latin - -
fi Finnish Latin Experimental -
fj Fijian Latin Maybe -
fo Faroese Latin Yes -
fr French Latin Yes Yes
fur Friulian Latin Maybe -
fy Frisian Latin Maybe -

ga Irish Latin Yes Yes
gd Scottish Gaelic Latin Yes -
gl Gallegan Latin Yes -
gn Guarani Latin Maybe -
gu Gujarati Gujarati Maybe -
gv Manx Gaelic Latin Yes -

ha Hausa Latin Maybe -
haw Hawaiian Latin Maybe -
he Hebrew Hebrew Experimental -
hi Hindi Devanagari Maybe -
hil Hiligaynon Latin Maybe -
ho Hiri Motu Latin - -
hr Croatian Latin Yes -
hsb Upper Sorbian Latin Experimental -
ht Haitian Creole Latin Maybe -
hu Hungarian Latin Experimental -
hy Armenian Armenian - -
hz Herero Latin - -

ia Interlingua (IALA) Latin Yes -
iba Iban Latin Maybe -
id Indonesian Latin Yes -
ig Igbo Latin Maybe -
ii Sichuan Yi Yi - -
ilo Iloko Latin Maybe -
io Ido Latin - -
is Icelandic Latin Yes -
it Italian Latin Yes -

jv Javanese Javanese, Latin - -

ka Georgian Georgian - -
kac Kachin Latin Maybe -
kg Kongo Latin Maybe -
ki Kikuyu / Gikuyu Latin - -
kj Kwanyama Latin - -
kk Kazakh Cyrillic - -
kl Kalaallisut / Greenlandic Latin Maybe -
kn Kannada Kannada - -
kr Kanuri Latin - -
ks Kashmiri Arabic - -
ku Kurdish Arabic, Cyrillic, Latin - -
kv Komi Cyrillic - -
kw Cornish Latin Maybe -
ky Kirghiz Cyrillic - -

la Latin Latin Experimental -
lb Luxembourgish Latin Maybe -
lg Ganda Latin Maybe -
li Limburgian Latin Maybe -
ln Lingala Latin Maybe -
lt Lithuanian Latin Experimental -
lu Luba-Katanga Latin - -
luo Luo (Kenya and Tanzania) Latin Maybe -
lv Latvian Latin Experimental -

mg Malagasy Latin Maybe -
mi Maori Latin Yes -
min Minangkabau Latin Maybe -
mk Macedonian Cyrillic Yes -
ml Malayalam Malayalam Maybe -
mn Mongolian Cyrillic Maybe -
mo Moldavian Cyrillic - -
mr Marathi Devanagari Maybe -
ms Malay Latin Yes -
mt Maltese Latin Yes -
my Burmese Myanmar - -

nb Norwegian Bokmal Latin Yes -
nd North Ndebele Latin Maybe -
nds Low Saxon Latin Maybe -
ne Nepali Devanagari Maybe -
ng Ndonga Latin Maybe -
nl Dutch Latin Yes Yes
nn Norwegian Nynorsk Latin Yes -
nr South Ndebele Latin - -
nso Northern Sotho Latin Maybe -
nv Navajo Latin - -
ny Nyanja Latin Maybe -

oc Occitan / Provencal Latin Maybe -
om Oromo Latin - -
or Oriya Oriya - -
os Ossetic Cyrillic - -

pa Punjabi Gurmukhi - -
pam Pampanga Latin Maybe -
pap Papiamento Latin Maybe -
pl Polish Latin Yes -
ps Pushto Arabic - -
pt Portuguese Latin Yes Yes

qu Quechua Latin Maybe -

rn Rundi Latin Maybe -
ro Romanian Latin Yes Yes
ru Russian Cyrillic Yes Yes
rw Kinyarwanda Latin Yes -

sc Sardinian Latin Yes -
sd Sindhi Arabic - -
se Northern Sami Latin Maybe -
sg Sango Latin - -
si Sinhalese Sinhala - -
sk Slovak Latin Yes -
sl Slovenian Latin Yes -
sm Samoan Latin Maybe -
sn Shona Latin Maybe -
so Somali Latin Maybe -
sq Albanian Latin Maybe -
sr Serbian Cyrillic, Latin Planned Yes
ss Swati Latin Maybe -
st Southern Sotho Latin Maybe -
su Sundanese Latin Maybe -
sv Swedish Latin Yes -
sw Swahili Latin Yes -

ta Tamil Tamil Experimental -
te Telugu Telugu Maybe -
tet Tetum Latin Yes -
tg Tajik Cyrillic Planned Yes
ti Tigrinya Ethiopic Maybe -
tk Turkmen Latin - -
tl Tagalog Latin Planned -
tn Tswana Latin Yes -
to Tonga Latin Maybe -
tpi Tok Pisin Latin Maybe -
tr Turkish Latin Yes -
ts Tsonga Latin Maybe -
tt Tatar Cyrillic - -
tw Twi Latin - -
ty Tahitian Latin Maybe -

ug Uighur Arabic - -
uk Ukrainian Cyrillic Yes Yes
ur Urdu Arabic Maybe -
uz Uzbek Cyrillic Experimental -

ve Venda Latin Maybe -
vi Vietnamese Latin Experimental -

wa Walloon Latin Yes Incomplete
wo Wolof Latin - -

xh Xhosa Latin Maybe -

yi Yiddish Hebrew Experimental -
yo Yoruba Latin - -

za Zhuang Latin - -
zu Zulu Latin Yes -

Dictionaries marked as Yes are available for Aspell 0.50. Ones marked as Experimental are available for Aspell 0.60 only. Ones marked as Planned should eventually be available (see Planned Dictionaries). Ones marked as Maybe might be available in the future.

B.1.1 Notes on Latin Languages

Any word that can be written using on of the Latin ISO-8859 character sets (ISO-8859-1,2,3,4,9,10,13,14,15,16) can be written, in decomposed form, using the ASCII characters, the 23 additional letters:

     U+00C6 LATIN CAPITAL LETTER AE
     U+00D0 LATIN CAPITAL LETTER ETH
     U+00D8 LATIN CAPITAL LETTER O WITH STROKE
     U+00DE LATIN CAPITAL LETTER THORN
     U+00DE LATIN SMALL LETTER THORN
     U+00DF LATIN SMALL LETTER SHARP S
     U+00E6 LATIN SMALL LETTER AE
     U+00F0 LATIN SMALL LETTER ETH
     U+00F8 LATIN SMALL LETTER O WITH STROKE
     U+0110 LATIN CAPITAL LETTER D WITH STROKE
     U+0111 LATIN SMALL LETTER D WITH STROKE
     U+0126 LATIN CAPITAL LETTER H WITH STROKE
     U+0127 LATIN SMALL LETTER H WITH STROKE
     U+0131 LATIN SMALL LETTER DOTLESS I
     U+0138 LATIN SMALL LETTER KRA
     U+0141 LATIN CAPITAL LETTER L WITH STROKE
     U+0142 LATIN SMALL LETTER L WITH STROKE
     U+014A LATIN CAPITAL LETTER ENG
     U+014B LATIN SMALL LETTER ENG
     U+0152 LATIN CAPITAL LIGATURE OE
     U+0153 LATIN SMALL LIGATURE OE
     U+0166 LATIN CAPITAL LETTER T WITH STROKE
     U+0167 LATIN SMALL LETTER T WITH STROKE

and the 14 modifiers:

     U+0300 COMBINING GRAVE ACCENT
     U+0301 COMBINING ACUTE ACCENT
     U+0302 COMBINING CIRCUMFLEX ACCENT
     U+0303 COMBINING TILDE
     U+0304 COMBINING MACRON
     U+0306 COMBINING BREVE
     U+0307 COMBINING DOT ABOVE
     U+0308 COMBINING DIAERESIS
     U+030A COMBINING RING ABOVE
     U+030B COMBINING DOUBLE ACUTE ACCENT
     U+030C COMBINING CARON
     U+0326 COMBINING COMMA BELOW
     U+0327 COMBINING CEDILLA
     U+0328 COMBINING OGONEK

Which is a total of 37 additional Unicode code points.

All ISO-8859 character leaves the characters 0x00 - 0x1F, and 0x80 - 0x9F unmapped as they are generally used as control characters. Of those, 0x01 - 0x0F, 0x11 - 0x1F and 0x80 - 0x9F may be mapped to anything in Aspell. This is a total of 62 characters which can be remapped in any ISO-8859 character set. Thus, by remapping 37 of the 62 characters to the previously specifed Unicode code-points, any modified ISO-8859 character set can be used for any Latin languages covered by ISO-8859. Of course decomposing every single accented character wastes a lot of space, so only characters that can be not be represented in the precomposed form should be broken up. By using this trick it is possible to store foreign words in the correctly accented form in the dictionary even if the precomposed character is not in the current character set.

Any letter in the Unicode range U+0000 - U+0249, U+1E00 - U+1EFF (Basic Latin, Latin-1 Supplement, Latin Extended-A, Latin Extended-B, and Latin Extended Additional) can be represented using around 175 basic letters, and 25 modifiers which is less than 210 and can thus fit in an Aspell 8-bit character set. Since this unicode range covers any possible Latin language this special character set can be used to reperesnt any word written using the Latin script if so desired.

B.1.2 Syllabic

Syllabic languages use a separate symbol for each syllable of the language. Even thought most of them have more than 210 distinct symbols Aspell can still support them by breaking them up.

B.1.2.1 The Ethiopic Syllabary

Even though the Ethiopic script has more than 210 distinct characters Aspell can still handle it. The idea is to split each character into two parts based on the matrix representation. The first 3 bits will be the first part and could be mapped to 10110???. The next 6 bits will be the second part and could be mapped to 11??????. The combined character will then be mapped with the upper bits coming first. Thus each Ethiopic syllabary will have the form 11?????? 10110???. By mapping the first and second parts to separate 8-bit characters it is easy to tell which part represents the consonant and which part represents the vowel of the syllabary. This encoding of the syllabary is far more useful to Aspell than if they were stored in UTF-8 or UTF-16. In fact, the exiting suggestion strategy of Aspell will work well with this encoding with out any additional modifications. However, additional improvements may be possible by taking advantage of the consonant-vowel structure of this encoding.

In fact, the split consonant-vowel representation may prove to be so useful that it may be beneficial to encode other syllabary in this fashion, even if they are less than 210 of them.

The code to break up a syllabary into the consonant-vowel part is part of the Unicode normalization process.

B.1.2.2 The Yi Syllabary

A very large syllabary with 819 distince symbols. However, like Ethiopic, it should be possible to support this script by breaking it up.

B.1.2.3 The Ojibwe Syllabary

With only 120 distinct symbols, Aspell can actually support this one as is. However, as previously mentioned, it may be beneficial to break it up into the consonant-vowel representation anyway.