mirror of
https://github.com/gnustep/libs-base.git
synced 2025-05-10 16:20:42 +00:00
Added mappings to canonical locale identifers. The NSLocale class can now, for example, map from AmericanEnglish to en_US. The -preferredLanguages method now works, as well.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@31809 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
69c04b8ab7
commit
e970eb14d6
4 changed files with 465 additions and 11 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2010-12-31 Stefan Bidigaray <stefanbidi@gmail.com>
|
||||||
|
|
||||||
|
* Resources/GNUmakefile:
|
||||||
|
* Resources/Languages/Locale.canonical: Added mapping to go from long
|
||||||
|
locale identifiers to short identifiers used by ICU.
|
||||||
|
* Source/NSLocale.m: Implemented -canonical* and -preferredLanaguges methods.
|
||||||
|
|
||||||
2010-12-31 14:03 David Chisnall <theraven@gna.org>
|
2010-12-31 14:03 David Chisnall <theraven@gna.org>
|
||||||
|
|
||||||
* libs/base/trunk/Headers/Foundation/NSBundle.h: Add __attribute__
|
* libs/base/trunk/Headers/Foundation/NSBundle.h: Add __attribute__
|
||||||
|
|
|
@ -74,7 +74,7 @@ Languages/Ukrainian \
|
||||||
Languages/Esperanto \
|
Languages/Esperanto \
|
||||||
Languages/Korean
|
Languages/Korean
|
||||||
LANGUAGE_INSTALL_FILES = $(LANGUAGE_FILES) Languages/Locale.aliases \
|
LANGUAGE_INSTALL_FILES = $(LANGUAGE_FILES) Languages/Locale.aliases \
|
||||||
Languages/Locale.encodings
|
Languages/Locale.encodings Languages/Locale.canonical
|
||||||
|
|
||||||
include $(GNUSTEP_MAKEFILES)/resource-set.make
|
include $(GNUSTEP_MAKEFILES)/resource-set.make
|
||||||
|
|
||||||
|
|
391
Resources/Languages/Locale.canonical
Normal file
391
Resources/Languages/Locale.canonical
Normal file
|
@ -0,0 +1,391 @@
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
|
@ -25,6 +25,7 @@
|
||||||
#import "common.h"
|
#import "common.h"
|
||||||
#import "Foundation/NSLocale.h"
|
#import "Foundation/NSLocale.h"
|
||||||
#import "Foundation/NSArray.h"
|
#import "Foundation/NSArray.h"
|
||||||
|
#import "Foundation/NSBundle.h"
|
||||||
#import "Foundation/NSCalendar.h"
|
#import "Foundation/NSCalendar.h"
|
||||||
#import "Foundation/NSCoder.h"
|
#import "Foundation/NSCoder.h"
|
||||||
#import "Foundation/NSCharacterSet.h"
|
#import "Foundation/NSCharacterSet.h"
|
||||||
|
@ -316,6 +317,7 @@ static NSLocale *autoupdatingLocale = nil;
|
||||||
static NSLocale *currentLocale = nil;
|
static NSLocale *currentLocale = nil;
|
||||||
static NSLocale *systemLocale = nil;
|
static NSLocale *systemLocale = nil;
|
||||||
static NSMutableDictionary *allLocales = nil;
|
static NSMutableDictionary *allLocales = nil;
|
||||||
|
static NSDictionary *canonicalLocales = nil;
|
||||||
static NSRecursiveLock *classLock = nil;
|
static NSRecursiveLock *classLock = nil;
|
||||||
|
|
||||||
+ (void) initialize
|
+ (void) initialize
|
||||||
|
@ -375,14 +377,45 @@ static NSRecursiveLock *classLock = nil;
|
||||||
|
|
||||||
+ (NSString *) canonicalLanguageIdentifierFromString: (NSString *) string
|
+ (NSString *) canonicalLanguageIdentifierFromString: (NSString *) string
|
||||||
{
|
{
|
||||||
// FIXME
|
NSString *result;
|
||||||
return string;
|
NSString *localeId;
|
||||||
|
NSArray *localeComps;
|
||||||
|
|
||||||
|
/* Can't use the ICU functions here because, according to Apple locale docs,
|
||||||
|
the language has a format like "zh-Hant". ICU, however, uses an
|
||||||
|
underscore to separate Scripts "zh_Hant". */
|
||||||
|
localeId = [self canonicalLocaleIdentifierFromString: string];
|
||||||
|
localeComps = [localeId componentsSeparatedByString: @"_"];
|
||||||
|
result = [localeComps objectAtIndex: 0];
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (NSString *) canonicalLocaleIdentifierFromString: (NSString *) string
|
+ (NSString *) canonicalLocaleIdentifierFromString: (NSString *) string
|
||||||
{
|
{
|
||||||
// FIXME
|
/* The way this works, according to Apple docs, is a mess. It seems
|
||||||
return string;
|
that both BCP 47's "-" and ICU's "_" separators are used. According to
|
||||||
|
"Language and Locale Designations" (Apple docs) Taiwan, for example, has
|
||||||
|
zh-Hant_TW as it's locale identifier (was zh_TW on 10.3.9 and below).
|
||||||
|
Since ICU doesn't use "-" as a separator it will modify that identifier
|
||||||
|
to zh_Hant_TW. */
|
||||||
|
NSString *result;
|
||||||
|
|
||||||
|
if (canonicalLocales == nil)
|
||||||
|
{
|
||||||
|
NSBundle *gbundle = [NSBundle bundleForLibrary: @"gnustep-base"];
|
||||||
|
NSString *file = [gbundle pathForResource: @"Locale"
|
||||||
|
ofType: @"canonical"
|
||||||
|
inDirectory: @"Languages"];
|
||||||
|
if (file != nil)
|
||||||
|
canonicalLocales = [[NSDictionary alloc] initWithContentsOfFile: file];
|
||||||
|
}
|
||||||
|
|
||||||
|
result = [canonicalLocales objectForKey: string];
|
||||||
|
if (result == nil)
|
||||||
|
result = string;
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (NSLocaleLanguageDirection) characterDirectionForLanguage:
|
+ (NSLocaleLanguageDirection) characterDirectionForLanguage:
|
||||||
|
@ -590,8 +623,26 @@ static NSRecursiveLock *classLock = nil;
|
||||||
|
|
||||||
+ (NSArray *) preferredLanguages
|
+ (NSArray *) preferredLanguages
|
||||||
{
|
{
|
||||||
// FIXME
|
NSArray *result;
|
||||||
return [NSUserDefaults userLanguages];
|
NSMutableArray *mArray;
|
||||||
|
NSUInteger cnt;
|
||||||
|
NSUInteger idx = 0;
|
||||||
|
NSArray *languages = [NSUserDefaults userLanguages];
|
||||||
|
|
||||||
|
if (languages == nil)
|
||||||
|
return [NSArray arrayWithObject: @"en"];
|
||||||
|
|
||||||
|
mArray = [NSMutableArray array];
|
||||||
|
cnt = [languages count];
|
||||||
|
while (idx < cnt)
|
||||||
|
{
|
||||||
|
NSString *lang = [languages objectAtIndex: idx];
|
||||||
|
[mArray addObject: [self canonicalLanguageIdentifierFromString: lang]];
|
||||||
|
++idx;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = [NSArray arrayWithArray: mArray];
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (id) systemLocale
|
+ (id) systemLocale
|
||||||
|
@ -662,7 +713,8 @@ static NSRecursiveLock *classLock = nil;
|
||||||
|
|
||||||
return [NSString stringWithUTF8String: buffer];
|
return [NSString stringWithUTF8String: buffer];
|
||||||
#else
|
#else
|
||||||
return nil; // FIXME
|
return nil; // FIXME Check
|
||||||
|
// msdn.microsoft.com/en-us/library/0h88fahh%28v=vs.85%29.aspx
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -671,7 +723,8 @@ static NSRecursiveLock *classLock = nil;
|
||||||
#if GS_USE_ICU == 1
|
#if GS_USE_ICU == 1
|
||||||
return uloc_getLCID ([localeIdentifier UTF8String]);
|
return uloc_getLCID ([localeIdentifier UTF8String]);
|
||||||
#else
|
#else
|
||||||
return 0; // FIXME
|
return 0; // FIXME: Check
|
||||||
|
// msdn.microsoft.com/en-us/library/0h88fahh%28v=vs.85%29.aspx
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -753,14 +806,17 @@ static NSRecursiveLock *classLock = nil;
|
||||||
int32_t length;
|
int32_t length;
|
||||||
char cLocaleId[ULOC_FULLNAME_CAPACITY];
|
char cLocaleId[ULOC_FULLNAME_CAPACITY];
|
||||||
UErrorCode error = U_ZERO_ERROR;
|
UErrorCode error = U_ZERO_ERROR;
|
||||||
|
|
||||||
length = uloc_canonicalize ([string UTF8String], cLocaleId,
|
localeId = [NSLocale canonicalLocaleIdentifierFromString: string];
|
||||||
|
// Normalize locale ID
|
||||||
|
length = uloc_canonicalize ([localeId UTF8String], cLocaleId,
|
||||||
ULOC_FULLNAME_CAPACITY, &error);
|
ULOC_FULLNAME_CAPACITY, &error);
|
||||||
if (U_FAILURE(error))
|
if (U_FAILURE(error))
|
||||||
{
|
{
|
||||||
[self release];
|
[self release];
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
localeId = [NSString stringWithUTF8String: cLocaleId];
|
localeId = [NSString stringWithUTF8String: cLocaleId];
|
||||||
#else
|
#else
|
||||||
localeId = string;
|
localeId = string;
|
||||||
|
|
Loading…
Reference in a new issue