Language lookup improvements

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@35275 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-MacDonald 2012-07-09 10:47:48 +00:00
parent bf185d82d8
commit 6b5a2c4c03
6 changed files with 728 additions and 487 deletions

View file

@ -3,6 +3,8 @@
* Source/NSBundle.m: Fixes for bug #34815 ... map between old and
new style language names and use the best language specific
resource available.
* Resources/Languages/Locale.canonical: Add mappings from three
letter language names to two letter names where they exist.
2012-07-08 Richard Frith-Macdonald <rfm@gnu.org>

View file

@ -1,391 +1,576 @@
{
Abkhazian = ab;
Achinese = ace;
Acoli = ach;
Adangme = ada;
Adyghe = ady;
Afar = aa;
Afrikaans = af;
Akan = ak;
Albanian = sq;
AlgeriaArabic = ar_DZ;
AmericanEnglish = en_US;
Amharic = am;
Angika = anp;
Arabic = ar;
Aragonese = an;
ArgentinaSpanish = es_AR;
Armenian = hy;
Aromanian = rup;
Assamese = as;
Asturian = ast;
AustraliaEnglish = en_AU;
AustriaGerman = de_AT;
Avaric = av;
Awadhi = awa;
Aymara = ay;
Azerbaijani = az; /* -Cyrl, or -Latn ?*/
BahrainArabic = ar_BH;
Balinese = ban;
Baluchi = bal;
Bambara = bm;
BangladeshBengali = bn_BD;
Basa = bas;
Bashkir = ba;
Basque = eu;
Beja = bej;
Belarusian = be;
BelgiumDutch = nl_BE;
BelgiumFrench = fr_BE;
BelgiumGerman = de_BE;
Bemba = bem;
Bengali = bn;
Bhojpuri = bho;
Bhutani = dz;
Bihari = bh;
Bikol = bik;
Bini = bin;
Bislama = bi;
Blin = byn;
BoliviaSpanish = es_BO;
Bosnian = bs;
BotswanaEnglish = en_BW;
BrasilPortuguese = pt_BR;
Breton = br;
BritainEnglish = en_GB;
Buginese = bug;
Bulgarian = bg;
Buriat = bua;
Burmese = my;
Cambodian = km;
CanadaEnglish = en_CA;
CanadaFrench = fr_CA;
Catalan = ca;
Cebuano = ceb;
Chamorro = ch;
Chechen = ce;
Chichewa = ny;
ChileSpanish = es_CL;
Chinese = zh;
ChurchSlavic = cu;
Chuvash = cv;
ColombiaSpanish = es_CO;
Cornish = kw;
Corsican = co;
CostaRicaSpanish = es_CR;
Cree = cr;
CrimeanTatar = crh;
Croatian = hr;
Czech = cs;
Danish = da;
Dargwa = dar;
DenmarkEnglish = en_DK;
Dinka = din;
DjiboutiAfar = aa_DJ;
DjiboutiSomali = so_DJ;
Dogri = doi;
DominicanRepublicSpanish = es_DO;
Dutch = nl;
Dyula = dyu;
EcuadorSpanish = es_EC;
Efik = efi;
EgyptArabic = ar_EG;
ElSalvadorSpanish = es_SV;
English = en;
EritreaAfar = aa_ER;
EritreaGeez = gez_ER;
EritreaTigrinya = ti_ER;
Erzya = myv;
Esperanto = eo;
EstoniaEstonian = et_EE;
Estonian = et;
EthiopiaAfar = aa_ET;
EthiopiaGeez = gez_ET;
EthiopiaOromo = om_ET;
EthiopiaSomali = so_ET;
EthiopiaTigrinya = ti_ET;
Ewondo = ewo;
Fang = fan;
Faroese = fo;
Fijian = fj;
Filipino = fil;
FinlandSwedish = sv_FI;
Finnish = fi;
Fon = fon;
French = fr;
Friulian = fur;
Fulah = ff;
Ga = gaa;
Gaelic = gd;
Gallegan = gl;
Ganda = lg;
Gayo = gay;
Gbaya = gba;
Geez = gez;
Georgian = ka;
German = de;
Gondi = gon;
Gorontalo = gor;
Grebo = grb;
GreeceGreek = el_GR;
Greek = el;
Greenlandic = kl;
Guarani = gn;
GuatemalaSpanish = es_GT;
Gujarati = gu;
Haitian = ht;
Hausa = ha-Latn;
Hebrew = he;
Hebrew = iw;
Herero = hz;
Hiligaynon = hil;
Hindi = hi;
HiriMotu = ho;
Hmong = hmn;
HondurasSpanish = es_HN;
HongKongChinese = zh-Hant_HK;
HongKongEnglish = en_HK;
Hungarian = hu;
Iban = iba;
Icelandic = is;
Ido = io;
Igbo = ig;
Iloko = ilo;
IndiaArabic = ar_IN;
IndiaBengali = bn_IN;
IndiaEnglish = en_IN;
Indonesian = id;
Ingush = inh;
Interlingua = ia;
Interlingue = ie;
Inuktitut = iu;
Inupiak = ik;
IraqArabic = ar_IQ;
IrelandEnglish = en_IE;
Irish = ga;
Italian = it;
Japanese = ja;
Javanese = jv;
JordanArabic = ar_JO;
Kabardian = kbd;
Kabyle = kab;
Kachin = kac;
Kalmyk = xal;
Kamba = kam;
Kannada = kn;
Kanuri = kr;
KarachayBalkar = krc;
KaraKalpak = kaa;
Karelian = krl;
Kashmiri = ks;
Kazakh = kk-Cyrl;
KenyaOromo = om_KE;
KenyaSomali = so_KE;
Khasi = kha;
Kikuyu = ki;
Kimbundu = kmb;
Kinyarwanda = rw;
Kirghiz = ky;
Komi = kv;
Kongo = kg;
Korean = ko;
Kumyk = kum;
Kurdish = ku;
Kurukh = kru;
KuwaitArabic = ar_KW;
Kwanyama = kj;
Ladino = lad;
Lamba = lam;
Lao = lo;
Latin = la;
Latvian = lv;
LebanonArabic = ar_LB;
Lezghian = lez;
LibyaArabic = ar_LY;
Limburgish = li;
Lingala = ln;
Lithuanian = lt;
Lozi = loz;
LubaKatanga = lu;
LubaLulua = lua;
Luganda = lug;
Lunda = lun;
Luo = luo;
Lushai = lus;
Luxembourgish = lb;
LuxemburgFrench = fr_LU;
LuxemburgGerman = de_LU;
Macedonian = mk;
Madurese = mad;
Magahi = mag;
Maithili = mai;
Makasar = mak;
Malagasy = mg;
Malay = ms;
Malayalam = ml;
Maldivian = dv;
Maltese = mt;
Mandar = mdr;
Mandingo = man;
Manipuri = mni;
Manx = gv;
Maori = mi;
Mapudungun = arn;
Marathi = mr;
Mari = chm;
Marshallese = mh;
Masai = mas;
Mende = men;
MexicoSpanish = es_MX;
Minangkabau = min;
Moksha = mdf;
Moldavian = mo;
Mongo = lol;
Mongolian = mn;
MoroccoArabic = ar_MA;
Mossi = mos;
Nauru = na;
Navajo = nv;
NdebeleNorth = nd;
NdebeleSouth = nr;
Ndonga = ng;
Neapolitan = nap;
NepalBhasa = new;
Nepali = ne;
NetherlandsDutch = nl_NL;
NewZealandEnglish = en_NZ;
Nias = nia;
NicaraguaSpanish = es_NI;
NorthernSaami = se;
Norwegian = no;
NorwegianBokmal = nb;
NorwegianNynorsk = nn;
Nyamwezi = nym;
Nyankole = nyn;
Nyoro = nyo;
Nzima = nzi;
Occitan = oc;
Ojibwa = oj;
OmanArabic = ar_OM;
Oriya = or;
Oromo = om;
Ossetian = os;
Pali = pi;
Pampanga = pam;
PanamaSpanish = es_PA;
Pangasinan = pag;
Papiamento = pap;
ParaguaySpanish = es_PY;
Pashto = ps;
Pedi = nso;
Persian = fa;
PeruSpanish = es_PE;
PhilippinesEnglish = en_PH;
Polish = pl;
Portuguese = pt;
PuertoRicoSpanish = es_PR;
Punjabi = pa; /* -Arab, or -Guru ?*/
QatarArabic = ar_QA;
Quechua = qu;
Rajasthani = raj;
Romanian = ro;
Romansh = rm;
Rundi = rn;
Russian = ru;
Samoan = sm;
Sango = sg;
Sanskrit = sa;
Santali = sat;
Sardinian = sc;
Sasak = sas;
SaudiArabiaArabic = ar_SA;
Scots = sco;
ScotsGaelic = gd_GB;
Serbian = sr; /* -Cyrl, or -Latn ?*/
Serer = srr;
Shan = shn;
Shona = sn;
SichuanYi = ii;
Sicilian = scn;
Sidamo = sid;
SimplifiedChinese = zh-Hans;
Sindhi = sd;
SingaporeChinese = zh-Hans_SG;
SingaporeEnglish = en_SG;
Sinhala = si;
Slovak = sk;
Slovenian = sl;
Somali = so;
SomaliaSomali = so_SO;
Soninke = snk;
Sotho = st;
SouthAfricaEnglish = en_ZA;
SpainBasque = eu_ES;
SpainSpanish = es_ES;
Spanish = es;
SudanArabic = ar_SD;
Sukuma = suk;
Sundanese = su;
Susu = sus;
Swahili = sw;
Swati = ss;
Swedish = sv;
SwitzerlandFrench = fr_CH;
SwitzerlandGerman = de_CH;
SwitzerlandItalian = it_CH;
SyriaArabic = ar_SY;
Tagalog = tl;
Tahitian = ty;
Tajik = tg;
Tamil = ta;
Tatar = tt;
Telugu = te;
Tetum = tet;
Thai = th;
Tibetan = bo;
Tigre = tig;
Tigrinya = ti;
Timne = tem;
Tiv = tiv;
TokPisin = tpi;
Tonga = to;
TongaNyasa = tog;
TraditionalChinese = zh-Hant;
Tsonga = ts;
Tswana = tn;
Tumbuka = tum;
TunisiaArabic = ar_TN;
Turkish = tr;
Turkmen = tk;
Tuvinian = tyv;
Twi = tw;
Udmurt = udm;
Uighur = ug;
UkraineRussian = ru_UA;
Ukrainian = uk;
Umbundu = umb;
UnitedArabEmiratesArabic = ar_AE;
Urdu = ur;
UruguaySpanish = es_UY;
USASpanish = es_US;
Uzbek = uz; /* -Arab, -Cyrl, or -Latn ?*/
Vai = vai;
Venda = ve;
VenezuelaSpanish = es_VE;
Vietnamese = vi;
Walamo = wal;
Walloon = wa;
Waray = war;
Welsh = cy;
WesternFrisian = fy;
Wolof = wo;
Xhosa = xh;
Yakut = sah;
Yao = yao;
YemenArabic = ar_YE;
Yiddish = yi;
Yoruba = yo;
Zhuang = za;
ZimbabweEnglish = en_ZW;
Zulu = zu;
}
{
Abkhazian = ab;
Achinese = ace;
Acoli = ach;
Adangme = ada;
Adyghe = ady;
Afar = aa;
Afrikaans = af;
Akan = ak;
Albanian = sq;
AlgeriaArabic = ar_DZ;
AmericanEnglish = en_US;
Amharic = am;
Angika = anp;
Arabic = ar;
Aragonese = an;
ArgentinaSpanish = es_AR;
Armenian = hy;
Aromanian = rup;
Assamese = as;
Asturian = ast;
AustraliaEnglish = en_AU;
AustriaGerman = de_AT;
Avaric = av;
Awadhi = awa;
Aymara = ay;
Azerbaijani = az; /* -Cyrl, or -Latn ?*/
BahrainArabic = ar_BH;
Balinese = ban;
Baluchi = bal;
Bambara = bm;
BangladeshBengali = bn_BD;
Basa = bas;
Bashkir = ba;
Basque = eu;
Beja = bej;
Belarusian = be;
BelgiumDutch = nl_BE;
BelgiumFrench = fr_BE;
BelgiumGerman = de_BE;
Bemba = bem;
Bengali = bn;
Bhojpuri = bho;
Bhutani = dz;
Bihari = bh;
Bikol = bik;
Bini = bin;
Bislama = bi;
Blin = byn;
BoliviaSpanish = es_BO;
Bosnian = bs;
BotswanaEnglish = en_BW;
BrasilPortuguese = pt_BR;
Breton = br;
BritainEnglish = en_GB;
Buginese = bug;
Bulgarian = bg;
Buriat = bua;
Burmese = my;
Cambodian = km;
CanadaEnglish = en_CA;
CanadaFrench = fr_CA;
Catalan = ca;
Cebuano = ceb;
Chamorro = ch;
Chechen = ce;
Chichewa = ny;
ChileSpanish = es_CL;
Chinese = zh;
ChurchSlavic = cu;
Chuvash = cv;
ColombiaSpanish = es_CO;
Cornish = kw;
Corsican = co;
CostaRicaSpanish = es_CR;
Cree = cr;
CrimeanTatar = crh;
Croatian = hr;
Czech = cs;
Danish = da;
Dargwa = dar;
DenmarkEnglish = en_DK;
Dinka = din;
DjiboutiAfar = aa_DJ;
DjiboutiSomali = so_DJ;
Dogri = doi;
DominicanRepublicSpanish = es_DO;
Dutch = nl;
Dyula = dyu;
EcuadorSpanish = es_EC;
Efik = efi;
EgyptArabic = ar_EG;
ElSalvadorSpanish = es_SV;
English = en;
EritreaAfar = aa_ER;
EritreaGeez = gez_ER;
EritreaTigrinya = ti_ER;
Erzya = myv;
Esperanto = eo;
EstoniaEstonian = et_EE;
Estonian = et;
EthiopiaAfar = aa_ET;
EthiopiaGeez = gez_ET;
EthiopiaOromo = om_ET;
EthiopiaSomali = so_ET;
EthiopiaTigrinya = ti_ET;
Ewondo = ewo;
Fang = fan;
Faroese = fo;
Fijian = fj;
Filipino = fil;
FinlandSwedish = sv_FI;
Finnish = fi;
Fon = fon;
French = fr;
Friulian = fur;
Fulah = ff;
Ga = gaa;
Gaelic = gd;
Gallegan = gl;
Ganda = lg;
Gayo = gay;
Gbaya = gba;
Geez = gez;
Georgian = ka;
German = de;
Gondi = gon;
Gorontalo = gor;
Grebo = grb;
GreeceGreek = el_GR;
Greek = el;
Greenlandic = kl;
Guarani = gn;
GuatemalaSpanish = es_GT;
Gujarati = gu;
Haitian = ht;
Hausa = ha-Latn;
Hebrew = he;
Hebrew = iw;
Herero = hz;
Hiligaynon = hil;
Hindi = hi;
HiriMotu = ho;
Hmong = hmn;
HondurasSpanish = es_HN;
HongKongChinese = zh-Hant_HK;
HongKongEnglish = en_HK;
Hungarian = hu;
Iban = iba;
Icelandic = is;
Ido = io;
Igbo = ig;
Iloko = ilo;
IndiaArabic = ar_IN;
IndiaBengali = bn_IN;
IndiaEnglish = en_IN;
Indonesian = id;
Ingush = inh;
Interlingua = ia;
Interlingue = ie;
Inuktitut = iu;
Inupiak = ik;
IraqArabic = ar_IQ;
IrelandEnglish = en_IE;
Irish = ga;
Italian = it;
Japanese = ja;
Javanese = jv;
JordanArabic = ar_JO;
Kabardian = kbd;
Kabyle = kab;
Kachin = kac;
Kalmyk = xal;
Kamba = kam;
Kannada = kn;
Kanuri = kr;
KarachayBalkar = krc;
KaraKalpak = kaa;
Karelian = krl;
Kashmiri = ks;
Kazakh = kk-Cyrl;
KenyaOromo = om_KE;
KenyaSomali = so_KE;
Khasi = kha;
Kikuyu = ki;
Kimbundu = kmb;
Kinyarwanda = rw;
Kirghiz = ky;
Komi = kv;
Kongo = kg;
Korean = ko;
Kumyk = kum;
Kurdish = ku;
Kurukh = kru;
KuwaitArabic = ar_KW;
Kwanyama = kj;
Ladino = lad;
Lamba = lam;
Lao = lo;
Latin = la;
Latvian = lv;
LebanonArabic = ar_LB;
Lezghian = lez;
LibyaArabic = ar_LY;
Limburgish = li;
Lingala = ln;
Lithuanian = lt;
Lozi = loz;
LubaKatanga = lu;
LubaLulua = lua;
Luganda = lug;
Lunda = lun;
Luo = luo;
Lushai = lus;
Luxembourgish = lb;
LuxemburgFrench = fr_LU;
LuxemburgGerman = de_LU;
Macedonian = mk;
Madurese = mad;
Magahi = mag;
Maithili = mai;
Makasar = mak;
Malagasy = mg;
Malay = ms;
Malayalam = ml;
Maldivian = dv;
Maltese = mt;
Mandar = mdr;
Mandingo = man;
Manipuri = mni;
Manx = gv;
Maori = mi;
Mapudungun = arn;
Marathi = mr;
Mari = chm;
Marshallese = mh;
Masai = mas;
Mende = men;
MexicoSpanish = es_MX;
Minangkabau = min;
Moksha = mdf;
Moldavian = mo;
Mongo = lol;
Mongolian = mn;
MoroccoArabic = ar_MA;
Mossi = mos;
Nauru = na;
Navajo = nv;
NdebeleNorth = nd;
NdebeleSouth = nr;
Ndonga = ng;
Neapolitan = nap;
NepalBhasa = new;
Nepali = ne;
NetherlandsDutch = nl_NL;
NewZealandEnglish = en_NZ;
Nias = nia;
NicaraguaSpanish = es_NI;
NorthernSaami = se;
Norwegian = no;
NorwegianBokmal = nb;
NorwegianNynorsk = nn;
Nyamwezi = nym;
Nyankole = nyn;
Nyoro = nyo;
Nzima = nzi;
Occitan = oc;
Ojibwa = oj;
OmanArabic = ar_OM;
Oriya = or;
Oromo = om;
Ossetian = os;
Pali = pi;
Pampanga = pam;
PanamaSpanish = es_PA;
Pangasinan = pag;
Papiamento = pap;
ParaguaySpanish = es_PY;
Pashto = ps;
Pedi = nso;
Persian = fa;
PeruSpanish = es_PE;
PhilippinesEnglish = en_PH;
Polish = pl;
Portuguese = pt;
PuertoRicoSpanish = es_PR;
Punjabi = pa; /* -Arab, or -Guru ?*/
QatarArabic = ar_QA;
Quechua = qu;
Rajasthani = raj;
Romanian = ro;
Romansh = rm;
Rundi = rn;
Russian = ru;
Samoan = sm;
Sango = sg;
Sanskrit = sa;
Santali = sat;
Sardinian = sc;
Sasak = sas;
SaudiArabiaArabic = ar_SA;
Scots = sco;
ScotsGaelic = gd_GB;
Serbian = sr; /* -Cyrl, or -Latn ?*/
Serer = srr;
Shan = shn;
Shona = sn;
SichuanYi = ii;
Sicilian = scn;
Sidamo = sid;
SimplifiedChinese = zh-Hans;
Sindhi = sd;
SingaporeChinese = zh-Hans_SG;
SingaporeEnglish = en_SG;
Sinhala = si;
Slovak = sk;
Slovenian = sl;
Somali = so;
SomaliaSomali = so_SO;
Soninke = snk;
Sotho = st;
SouthAfricaEnglish = en_ZA;
SpainBasque = eu_ES;
SpainSpanish = es_ES;
Spanish = es;
SudanArabic = ar_SD;
Sukuma = suk;
Sundanese = su;
Susu = sus;
Swahili = sw;
Swati = ss;
Swedish = sv;
SwitzerlandFrench = fr_CH;
SwitzerlandGerman = de_CH;
SwitzerlandItalian = it_CH;
SyriaArabic = ar_SY;
Tagalog = tl;
Tahitian = ty;
Tajik = tg;
Tamil = ta;
Tatar = tt;
Telugu = te;
Tetum = tet;
Thai = th;
Tibetan = bo;
Tigre = tig;
Tigrinya = ti;
Timne = tem;
Tiv = tiv;
TokPisin = tpi;
Tonga = to;
TongaNyasa = tog;
TraditionalChinese = zh-Hant;
Tsonga = ts;
Tswana = tn;
Tumbuka = tum;
TunisiaArabic = ar_TN;
Turkish = tr;
Turkmen = tk;
Tuvinian = tyv;
Twi = tw;
Udmurt = udm;
Uighur = ug;
UkraineRussian = ru_UA;
Ukrainian = uk;
Umbundu = umb;
UnitedArabEmiratesArabic = ar_AE;
Urdu = ur;
UruguaySpanish = es_UY;
USASpanish = es_US;
Uzbek = uz; /* -Arab, -Cyrl, or -Latn ?*/
Vai = vai;
Venda = ve;
VenezuelaSpanish = es_VE;
Vietnamese = vi;
Walamo = wal;
Walloon = wa;
Waray = war;
Welsh = cy;
WesternFrisian = fy;
Wolof = wo;
Xhosa = xh;
Yakut = sah;
Yao = yao;
YemenArabic = ar_YE;
Yiddish = yi;
Yoruba = yo;
Zhuang = za;
ZimbabweEnglish = en_ZW;
Zulu = zu;
aar = aa;
abk = ab;
afr = af;
alb = sq;
amh = am;
ara = ar;
arm = hy;
asm = as;
ave = ae;
aym = ay;
aze = az;
bak = ba;
baq = eu;
bel = be;
ben = bn;
bih = bh;
bis = bi;
bod = bo;
bos = bs;
bre = br;
bul = bg;
bur = my;
cat = ca;
ces = cs;
cha = ch;
che = ce;
chi = zh;
chu = cu;
chv = cv;
cor = kw;
cos = co;
cym = cy;
cze = cs;
dan = da;
deu = de;
dut = nl;
dzo = dz;
ell = el;
eng = en;
epo = eo;
est = et;
eus = eu;
fao = fo;
fas = fa;
fij = fj;
fin = fi;
fra = fr;
fre = fr;
fry = fy;
geo = ka;
ger = de;
gla = gd;
gle = ga;
glg = gl;
glv = gv;
gre = el;
grn = gn;
guj = gu;
hau = ha;
heb = he;
her = hz;
hin = hi;
hmo = ho;
hrv = hr;
hun = hu;
hye = hy;
ice = is;
iku = iu;
ile = ie;
ina = ia;
ind = id;
ipk = ik;
isl = is;
ita = it;
jav = jw;
jaw = jw;
jpn = ja;
kal = kl;
kan = kn;
kas = ks;
kat = ka;
kaz = kk;
khm = km;
kik = ki;
kin = rw;
kir = ky;
kom = kv;
kor = ko;
kua = kj;
kur = ku;
lao = lo;
lat = la;
lav = lv;
lin = ln;
lit = lt;
ltz = lb;
mac = mk;
mah = mh;
mal = ml;
mao = mi;
mar = mr;
may = ms;
mkd = mk;
mlg = mg;
mlt = mt;
mol = mo;
mon = mn;
mri = mi;
msa = ms;
mya = my;
nau = na;
nav = nv;
nbl = nr;
nde = nd;
ndo = ng;
nep = ne;
nld = nl;
nno = nn;
nob = nb;
nor = no;
nya = ny;
oci = oc;
ori = or;
orm = om;
oss = os;
pan = pa;
per = fa;
pli = pi;
pol = pl;
por = pt;
pus = ps;
que = qu;
roh = rm;
ron = ro;
rum = ro;
run = rn;
rus = ru;
sag = sg;
san = sa;
scc = sr;
scr = hr;
sin = si;
slk = sk;
slo = sk;
slv = sl;
sme = se;
smo = sm;
sna = sn;
snd = sd;
som = so;
sot = st;
spa = es;
sqi = sq;
srd = sc;
srp = sr;
ssw = ss;
sun = su;
swa = sw;
swe = sv;
tah = ty;
tam = ta;
tat = tt;
tel = te;
tgk = tg;
tgl = tl;
tha = th;
tib = bo;
tsn = tn;
tso = ts;
tuk = tk;
tur = tr;
twi = tw;
uig = ug;
ukr = uk;
urd = ur;
uzb = uz;
vie = vi;
vol = vo;
wel = cy;
wol = wo;
xho = xh;
yid = yi;
zha = za;
zho = zh;
zul = zu;
}

View file

@ -1,3 +1,8 @@
The file Locale.aliases is used to map common language specifications to
old-style long names.
The file Locale.canonical is used to map old style names and three letter
ISO-639-2 names to the preferred tewo letter ISO-639-1 names.
Language files which contain non-ascii characters should either be properly
marked unicode files (UTF-8 with a leading Byte Order Mark or UTF-16 with a
@ -13,14 +18,14 @@ in the default encoding used by your system.
For example, to edit the French language file so that it contains an ascii
propertly list with \u escape sequeneces, you could do -
cvtenc -EscapeIn yes French > tmpfile
cvtenc -EscapeIn yes fr > tmpfile
vi tmpfile
cvtenc -EscapeOut yes tmpfile > French
cvtenc -EscapeOut yes tmpfile > fr
rm tmpfile
A common case is where you have a file in UTF-8, but the Byte Order Mark is
missing, so you need to fix it up ...
cvtenc -Encoding 'UNICODE UTF-8' FileWithMissingBOM >tmpFile
cvtenc -EscapeOut yes tmpFile > French
cvtenc -EscapeOut yes tmpFile > fr

View file

@ -75,10 +75,11 @@ manager()
return mgr;
}
static NSDictionary *alternativeLanguageMap = nil;
static NSDictionary *langAliases = nil;
static NSDictionary *langCanonical = nil;
/* Map a language name to any alternative versions. This function should
* return an array of alternative language/localisation directry names in
* return an array of alternative language/localisation directory names in
* the preferred order of precedence (ie resources in the directories named
* earlier in the array are to be preferred to those in directories named
* later).
@ -88,91 +89,85 @@ static NSDictionary *alternativeLanguageMap = nil;
* in the United States region).
*/
static NSArray *
altLang(NSString *lang)
altLang(NSString *full)
{
if (lang)
NSMutableArray *a = nil;
if (nil != full)
{
NSArray *a;
NSString *alias = nil;
NSString *canon = nil;
NSString *lang = nil;
NSString *dialect = nil;
NSString *region = nil;
NSRange r;
r = [lang rangeOfString: @"-"];
if (r.length > 0)
alias = [langAliases objectForKey: full];
if (nil == alias)
{
NSString *full = lang;
lang = [full substringToIndex: r.location];
r = [lang rangeOfString: @"_"];
if (r.length > 0)
canon = [langCanonical objectForKey: full];
if (nil != canon)
{
NSString *national = [full substringToIndex: r.location];
// language-dialect_region
a = [alternativeLanguageMap objectForKey: lang];
if (nil == a)
{
return [NSArray arrayWithObjects: full, national, lang, nil];
}
else
{
NSMutableArray *m = [a mutableCopy];
[m insertObject: full atIndex: 0];
[m insertObject: national atIndex: 0];
return [m autorelease];
}
alias = [langAliases objectForKey: canon];
}
else
if (nil == alias)
{
// language-dialect
a = [alternativeLanguageMap objectForKey: lang];
if (nil == a)
{
return [NSArray arrayWithObjects: full, lang, nil];
}
else
{
NSMutableArray *m = [a mutableCopy];
[m insertObject: full atIndex: 0];
return [m autorelease];
}
alias = full;
}
}
canon = [langCanonical objectForKey: alias];
if (nil == canon)
{
canon = [langCanonical objectForKey: full];
if (nil == canon)
{
canon = full;
}
}
if ([canon rangeOfString: @"-"].length > 1)
{
dialect = [canon substringFromIndex: NSMaxRange(r)];
lang = [canon substringToIndex: r.location];
if ([dialect rangeOfString: @"_"].length > 1)
{
region = [dialect substringFromIndex: NSMaxRange(r)];
dialect = [dialect substringToIndex: r.location];
}
}
else if ([canon rangeOfString: @"_"].length > 1)
{
region = [canon substringFromIndex: NSMaxRange(r)];
lang = [canon substringToIndex: r.location];
}
else
{
NSString *full = lang;
lang = canon;
}
r = [lang rangeOfString: @"_"];
if (r.length > 0)
{
// language_region
lang = [full substringToIndex: r.location];
a = [alternativeLanguageMap objectForKey: lang];
if (nil == a)
{
return [NSArray arrayWithObjects: full, lang, nil];
}
else
{
NSMutableArray *m = [a mutableCopy];
[m insertObject: full atIndex: 0];
return [m autorelease];
}
}
else
{
// language
a = [alternativeLanguageMap objectForKey: lang];
if (nil == a)
{
return [NSArray arrayWithObject: lang];
}
return a;
}
a = [NSMutableArray arrayWithCapacity: 5];
if (nil != dialect && nil != region)
{
[a addObject: [NSString stringWithFormat: @"%@-%@_%@",
lang, dialect, region]];
}
if (nil != dialect)
{
[a addObject: [NSString stringWithFormat: @"%@-%@",
lang, dialect]];
}
if (nil != region)
{
[a addObject: [NSString stringWithFormat: @"%@_%@",
lang, region]];
}
[a addObject: lang];
if (NO == [a containsObject: alias])
{
[a addObject: alias];
}
}
return nil;
return a;
}
static NSLock *pathCacheLock = nil;
@ -1066,6 +1061,7 @@ _bundle_load_callback(Class theClass, struct objc_category *theCategory)
if (self == [NSBundle class])
{
extern const char *GSPathHandling(const char *);
NSString *file;
const char *mode;
NSDictionary *env;
NSString *str;
@ -1075,25 +1071,41 @@ _bundle_load_callback(Class theClass, struct objc_category *theCategory)
mode = GSPathHandling("right");
_emptyTable = RETAIN([NSDictionary dictionary]);
/* Check ... I think this is all the languages we traditionally
* support ... but maybe we need others.
/* Create basic mapping dictionaries for bootstrapping and
* for use if the full ductionaries can't be loaded from the
* gnustep-base library resource bundle.
*/
alternativeLanguageMap = [[NSDictionary alloc] initWithObjectsAndKeys:
[NSArray arrayWithObjects: @"zh", @"Chinese", nil], @"Chinese",
[NSArray arrayWithObjects: @"en", @"English", nil], @"English",
[NSArray arrayWithObjects: @"eo", @"Esperanto", nil], @"Esperanto",
[NSArray arrayWithObjects: @"fr", @"French", nil], @"French",
[NSArray arrayWithObjects: @"de", @"German", nil], @"German",
[NSArray arrayWithObjects: @"it", @"Italian", nil], @"Italian",
[NSArray arrayWithObjects: @"ko", @"Korean", nil], @"Korean",
[NSArray arrayWithObjects: @"zh", @"Chinese", nil], @"zh",
[NSArray arrayWithObjects: @"en", @"English", nil], @"en",
[NSArray arrayWithObjects: @"eo", @"Esperanto", nil], @"eo",
[NSArray arrayWithObjects: @"fr", @"French", nil], @"fr",
[NSArray arrayWithObjects: @"de", @"German", nil], @"de",
[NSArray arrayWithObjects: @"it", @"Italian", nil], @"it",
[NSArray arrayWithObjects: @"ko", @"Korean", nil], @"ko",
[NSArray arrayWithObjects: @"es", @"Spanish", nil], @"es",
langAliases = [[NSDictionary alloc] initWithObjectsAndKeys:
@"German", @"de",
@"English", @"en",
@"Esperanto", @"eo",
@"Spanish", @"es",
@"French", @"fr",
@"Italian", @"it",
@"Korean", @"ko",
@"TraditionalChinese", @"zh",
nil];
langCanonical = [[NSDictionary alloc] initWithObjectsAndKeys:
@"en", @"English",
@"en", @"eng",
@"ep", @"Esperanto",
@"ep", @"epo",
@"ep", @"epo",
@"fr", @"French",
@"fr", @"fra",
@"fr", @"fre",
@"de", @"German",
@"de", @"ger",
@"de", @"deu",
@"it", @"Italian",
@"it", @"ita",
@"ko", @"Korean",
@"ko", @"kir",
@"sp", @"Spanish",
@"sp", @"spa",
@"zh", @"TraditionalChinese",
@"zh", @"chi",
@"zh", @"zho",
nil];
/* Initialise manager here so it's thread-safe.
@ -1138,6 +1150,43 @@ _bundle_load_callback(Class theClass, struct objc_category *theCategory)
_gnustep_bundle = RETAIN([self bundleForLibrary: @"gnustep-base"
version: _base_version]);
/* The Locale aliases map converts canonical names to old-style names
*/
file = [_gnustep_bundle pathForResource: @"Locale"
ofType: @"aliases"
inDirectory: @"Languages"];
if (file != nil)
{
NSDictionary *d;
d = [[NSDictionary alloc] initWithContentsOfFile: file];
if ([d count] > 0)
{
ASSIGN(langAliases, d);
}
[d release];
}
/* The Locale canonical map converts old-style names to ISO 639 names
* and converts ISO 639-2 names to the preferred ISO 639-1 names where
* an ISO 639-1 name exists.
*/
file = [_gnustep_bundle pathForResource: @"Locale"
ofType: @"canonical"
inDirectory: @"Languages"];
if (file != nil)
{
NSDictionary *d;
d = [[NSDictionary alloc] initWithContentsOfFile: file];
if ([d count] > 0)
{
ASSIGN(langCanonical, d);
}
[d release];
}
#if 0
_loadingBundle = [self mainBundle];
handle = objc_open_main_module(stderr);

View file

@ -116,6 +116,7 @@ AUTOGSDOC=./$(GNUSTEP_OBJ_DIR_NAME)/autogsdoc
include Makefile.preamble
include $(GNUSTEP_MAKEFILES)/tool.make
#include $(GNUSTEP_MAKEFILES)/test-tool.make
include $(GNUSTEP_MAKEFILES)/ctool.make
include $(GNUSTEP_MAKEFILES)/aggregate.make

View file

@ -59,9 +59,8 @@ loc_read_file(const char *dir, const char *file)
language[0] = '\0';
country[0] = '\0';
while (1)
while (NULL != fgets(buf, MAXSTRING, fp))
{
fgets(buf, MAXSTRING, fp);
if (strstr(buf, "anguage") != NULL)
{
sscanf(&buf[2], "%s", language);
@ -131,7 +130,7 @@ main(int argc, char *argv[])
/* Write out a skeleton file from the current locale */
dict = GSDomainFromDefaultLocale();
lang = GSLanguageFromLocale(GSSetLocale(NULL));
lang = GSLanguageFromLocale(GSSetLocale(0,NULL));
if (lang == nil)
lang = @"Locale";
if (dict)