tag language español internationalization iso icu

internationalization - language - Obtenga un código de script ISO 15924 para una etiqueta de idioma IETF determinada(o par ISO 639-ISO 3166-1)



bcp 47 español (5)

Estoy integrando ICU en algunos programas internos. Me gustaría poder tomar una cadena como "en_US" y obtener el nombre de secuencia de comandos "Latin" para ello. (Aunque, en última instancia, en realidad quiero un ICU ScriptCode).

Intenté usar la clase Locale de ICU, pero este código:

Locale *ul = new Locale("en_US",); LOG(ul->getScript());

Registra una cadena vacía, a pesar de la documentación que indica que este es el caso de uso. Incluso lo intenté usando el método estático de la clase Locale Locale::getEnglish y todavía tengo una cadena vacía. Soy nuevo en esta materia de internacionalización y en la UCI. ¿Se me escapa algo? Parece que esto debería ser una tarea bastante sencilla.

Editar : después de leer el código fuente de Locale, parece que la única vez que puede proporcionar un código de script es cuando se pasa al constructor (es decir, "en_Latn_US"). Saludos por documentación inadecuada. Mi pregunta general sigue en pie.


Mejor: http://unicode.org/repos/cldr/trunk/common/supplemental/supplementalData.xml

std::map<std::string /*ISO 639-1*/, std::map<std::string/*ISO ISO3166-1 Alpha 2 or empty*/, std::string /*ISO 15924*/>> table = { {"aa", {{"", "Latn"}}}, {"ab", {{"", "Cyrl"}}}, {"abq", {{"", "Cyrl"}}}, {"abr", {{"", ""}}}, {"ace", {{"", "Latn"}}}, {"ach", {{"", "Latn"}}}, {"ada", {{"", "Latn"}}}, {"ady", {{"", "Cyrl"}}}, {"ae", {{"", "Avst"}}}, {"af", {{"", "Latn"}}}, {"agq", {{"", "Latn"}}}, {"aii", {{"", "Cyrl"}}}, {"ain", {{"", "Kana"}}}, {"ak", {{"", "Latn"}}}, {"akk", {{"", "Xsux"}}}, {"ale", {{"", "Latn"}}}, {"alt", {{"", "Cyrl"}}}, {"am", {{"", "Ethi"}}}, {"amo", {{"", "Latn"}}}, {"an", {{"", "Latn"}}}, {"anp", {{"", "Deva"}}}, {"aoz", {{"", ""}}}, {"ar", {{"", "Arab"}, {"IR", "Syrc"}}}, {"arc", {{"", "Armi"}}}, {"arn", {{"", "Latn"}}}, {"arp", {{"", "Latn"}}}, {"arw", {{"", "Latn"}}}, {"as", {{"", "Beng"}}}, {"asa", {{"", "Latn"}}}, {"ast", {{"", "Latn"}}}, {"atj", {{"", ""}}}, {"av", {{"", "Cyrl"}}}, {"awa", {{"", "Deva"}}}, {"ay", {{"", "Latn"}}}, {"az", {{"", "Latn"}, {"AZ", "Cyrl"}, {"IR", "Arab"}}}, {"ba", {{"", "Cyrl"}}}, {"bal", {{"", "Arab"}, {"IR", "Latn"}, {"PK", "Latn"}}}, {"ban", {{"", "Latn"}, {"ID", "Bali"}}}, {"bap", {{"", ""}}}, {"bas", {{"", "Latn"}}}, {"bax", {{"", "Bamu"}}}, {"bbc", {{"", "Latn"}, {"ID", "Batk"}}}, {"bbj", {{"", ""}}}, {"bci", {{"", ""}}}, {"be", {{"", "Cyrl"}}}, {"bej", {{"", "Arab"}}}, {"bem", {{"", "Latn"}}}, {"bew", {{"", ""}}}, {"bez", {{"", "Latn"}}}, {"bfd", {{"", ""}}}, {"bfq", {{"", "Taml"}}}, {"bft", {{"", "Arab"}}}, {"bfy", {{"", "Deva"}}}, {"bg", {{"", "Cyrl"}}}, {"bgc", {{"", ""}}}, {"bgx", {{"", ""}}}, {"bh", {{"", "Deva"}}}, {"bhb", {{"", "Deva"}}}, {"bhi", {{"", ""}}}, {"bhk", {{"", ""}}}, {"bho", {{"", "Deva"}}}, {"bi", {{"", "Latn"}}}, {"bik", {{"", "Latn"}}}, {"bin", {{"", "Latn"}}}, {"bjj", {{"", "Deva"}}}, {"bjn", {{"", ""}}}, {"bkm", {{"", ""}}}, {"bku", {{"", "Latn"}}}, {"bla", {{"", "Latn"}}}, {"blt", {{"", "Tavt"}}}, {"bm", {{"", "Latn"}}}, {"bmq", {{"", ""}}}, {"bn", {{"", "Beng"}}}, {"bo", {{"", "Tibt"}}}, {"bqi", {{"", ""}}}, {"bqv", {{"", "Latn"}}}, {"br", {{"", "Latn"}}}, {"bra", {{"", "Deva"}}}, {"brh", {{"", ""}}}, {"brx", {{"", "Deva"}}}, {"bs", {{"", "Latn"}}}, {"bss", {{"", ""}}}, {"bto", {{"", ""}}}, {"btv", {{"", "Deva"}}}, {"bua", {{"", "Cyrl"}}}, {"buc", {{"", "Latn"}}}, {"bug", {{"", "Latn"}, {"ID", "Bugi"}}}, {"bum", {{"", ""}}}, {"bvb", {{"", ""}}}, {"bya", {{"", "Latn"}}}, {"byn", {{"", "Ethi"}}}, {"byv", {{"", ""}}}, {"bze", {{"", ""}}}, {"bzx", {{"", ""}}}, {"ca", {{"", "Latn"}}}, {"cad", {{"", "Latn"}}}, {"car", {{"", "Latn"}}}, {"cay", {{"", "Latn"}}}, {"cch", {{"", "Latn"}}}, {"ccp", {{"", "Beng"}}}, {"ce", {{"", "Cyrl"}}}, {"ceb", {{"", "Latn"}}}, {"cgg", {{"", "Latn"}}}, {"ch", {{"", "Latn"}}}, {"chk", {{"", "Latn"}}}, {"chm", {{"", "Cyrl"}}}, {"chn", {{"", "Latn"}}}, {"cho", {{"", "Latn"}}}, {"chp", {{"", "Latn"}}}, {"chr", {{"", "Cher"}}}, {"chy", {{"", "Latn"}}}, {"cja", {{"", "Arab"}}}, {"cjm", {{"", "Cham"}}}, {"cjs", {{"", "Cyrl"}}}, {"ckb", {{"", "Arab"}}}, {"ckt", {{"", "Cyrl"}}}, {"co", {{"", "Latn"}}}, {"cop", {{"", "Arab"}}}, {"cpe", {{"", "Latn"}}}, {"cr", {{"", "Cans"}}}, {"crh", {{"", "Cyrl"}}}, {"crj", {{"", ""}}}, {"crk", {{"", "Cans"}}}, {"crl", {{"", ""}}}, {"crm", {{"", ""}}}, {"crs", {{"", ""}}}, {"cs", {{"", "Latn"}}}, {"csb", {{"", "Latn"}}}, {"csw", {{"", ""}}}, {"cu", {{"", "Glag"}}}, {"cv", {{"", "Cyrl"}}}, {"cy", {{"", "Latn"}}}, {"da", {{"", "Latn"}}}, {"daf", {{"", ""}}}, {"dak", {{"", "Latn"}}}, {"dar", {{"", "Cyrl"}}}, {"dav", {{"", "Latn"}}}, {"dcc", {{"", ""}}}, {"de", {{"", "Latn"}, {"BR", "Runr"}, {"KZ", "Runr"}, {"US", "Runr"}}}, {"del", {{"", "Latn"}}}, {"den", {{"", "Latn"}}}, {"dgr", {{"", "Latn"}}}, {"din", {{"", "Latn"}}}, {"dje", {{"", "Latn"}}}, {"dng", {{"", "Cyrl"}}}, {"doi", {{"", "Arab"}}}, {"dsb", {{"", "Latn"}}}, {"dtm", {{"", ""}}}, {"dua", {{"", "Latn"}}}, {"dv", {{"", "Thaa"}}}, {"dyo", {{"", "Arab"}}}, {"dyu", {{"", "Latn"}}}, {"dz", {{"", "Tibt"}}}, {"ebu", {{"", "Latn"}}}, {"ee", {{"", "Latn"}}}, {"efi", {{"", "Latn"}}}, {"egy", {{"", "Egyp"}}}, {"eka", {{"", "Latn"}}}, {"eky", {{"", "Kali"}}}, {"el", {{"", "Grek"}}}, {"en", {{"", "Latn"}}}, {"eo", {{"", "Latn"}}}, {"es", {{"", "Latn"}}}, {"et", {{"", "Latn"}}}, {"ett", {{"", "Ital"}}}, {"eu", {{"", "Latn"}}}, {"evn", {{"", "Cyrl"}}}, {"ewo", {{"", "Latn"}}}, {"fa", {{"", "Arab"}}}, {"fan", {{"", "Latn"}}}, {"ff", {{"", "Latn"}}}, {"ffm", {{"", ""}}}, {"fi", {{"", "Latn"}}}, {"fil", {{"", "Latn"}, {"US", "Tglg"}}}, {"fiu", {{"", "Latn"}}}, {"fj", {{"", "Latn"}}}, {"fo", {{"", "Latn"}}}, {"fon", {{"", "Latn"}}}, {"fr", {{"", "Latn"}}}, {"frr", {{"", "Latn"}}}, {"frs", {{"", "Latn"}}}, {"fud", {{"", ""}}}, {"fuq", {{"", ""}}}, {"fur", {{"", "Latn"}}}, {"fuv", {{"", ""}}}, {"fy", {{"", "Latn"}}}, {"ga", {{"", "Latn"}}}, {"gaa", {{"", "Latn"}}}, {"gag", {{"", "Latn"}, {"MD", "Cyrl"}}}, {"gay", {{"", "Latn"}}}, {"gba", {{"", "Arab"}}}, {"gbm", {{"", "Deva"}}}, {"gcr", {{"", "Latn"}}}, {"gd", {{"", "Latn"}}}, {"gez", {{"", "Ethi"}}}, {"ggn", {{"", ""}}}, {"gil", {{"", "Latn"}}}, {"gjk", {{"", ""}}}, {"gju", {{"", ""}}}, {"gl", {{"", "Latn"}}}, {"gld", {{"", "Cyrl"}}}, {"glk", {{"", ""}}}, {"gn", {{"", "Latn"}}}, {"gon", {{"", "Telu"}}}, {"gor", {{"", "Latn"}}}, {"gos", {{"", ""}}}, {"got", {{"", "Goth"}}}, {"grb", {{"", "Latn"}}}, {"grc", {{"", "Cprt"}}}, {"grt", {{"", "Beng"}}}, {"gsw", {{"", "Latn"}}}, {"gu", {{"", "Gujr"}}}, {"gub", {{"", ""}}}, {"guz", {{"", "Latn"}}}, {"gv", {{"", "Latn"}}}, {"gvr", {{"", ""}}}, {"gwi", {{"", "Latn"}}}, {"ha", {{"", "Arab"}, {"NE", "Latn"}, {"GH", "Latn"}}}, {"hai", {{"", "Latn"}}}, {"haw", {{"", "Latn"}}}, {"haz", {{"", ""}}}, {"he", {{"", "Hebr"}}}, {"hi", {{"", "Deva"}}}, {"hil", {{"", "Latn"}}}, {"hit", {{"", "Xsux"}}}, {"hmn", {{"", "Latn"}}}, {"hnd", {{"", ""}}}, {"hne", {{"", "Deva"}}}, {"hnn", {{"", "Latn"}}}, {"hno", {{"", ""}}}, {"ho", {{"", "Latn"}}}, {"hoc", {{"", "Deva"}}}, {"hoj", {{"", "Deva"}}}, {"hop", {{"", "Latn"}}}, {"hr", {{"", "Latn"}}}, {"hsb", {{"", "Latn"}}}, {"ht", {{"", "Latn"}}}, {"hu", {{"", "Latn"}}}, {"hup", {{"", "Latn"}}}, {"hy", {{"", "Armn"}}}, {"hz", {{"", "Latn"}}}, {"ia", {{"", "Latn"}}}, {"iba", {{"", "Latn"}}}, {"ibb", {{"", "Latn"}}}, {"id", {{"", "Latn"}}}, {"ig", {{"", "Latn"}}}, {"ii", {{"", "Yiii"}, {"CN", "Latn"}}}, {"ik", {{"", "Latn"}}}, {"ikt", {{"", ""}}}, {"ilo", {{"", "Latn"}}}, {"inh", {{"", "Cyrl"}}}, {"is", {{"", "Latn"}}}, {"it", {{"", "Latn"}}}, {"iu", {{"", "Cans"}, {"CA", "Latn"}}}, {"ja", {{"", "Jpan"}}}, {"jmc", {{"", "Latn"}}}, {"jml", {{"", ""}}}, {"jpr", {{"", "Hebr"}}}, {"jrb", {{"", "Hebr"}}}, {"jv", {{"", "Latn"}, {"ID", "Java"}}}, {"ka", {{"", "Geor"}}}, {"kaa", {{"", "Cyrl"}}}, {"kab", {{"", "Latn"}}}, {"kac", {{"", "Latn"}}}, {"kaj", {{"", "Latn"}}}, {"kam", {{"", "Latn"}}}, {"kao", {{"", ""}}}, {"kbd", {{"", "Cyrl"}}}, {"kca", {{"", "Cyrl"}}}, {"kcg", {{"", "Latn"}}}, {"kck", {{"", ""}}}, {"kde", {{"", "Latn"}}}, {"kdt", {{"", "Thai"}}}, {"kea", {{"", "Latn"}}}, {"kfo", {{"", "Latn"}}}, {"kfr", {{"", "Deva"}}}, {"kfy", {{"", ""}}}, {"kg", {{"", "Latn"}}}, {"kge", {{"", ""}}}, {"kgp", {{"", ""}}}, {"kha", {{"", "Latn"}, {"IN", "Beng"}}}, {"khb", {{"", "Talu"}}}, {"khn", {{"", ""}}}, {"khq", {{"", "Latn"}}}, {"kht", {{"", "Mymr"}}}, {"khw", {{"", ""}}}, {"ki", {{"", "Latn"}}}, {"kj", {{"", "Latn"}}}, {"kjg", {{"", ""}}}, {"kjh", {{"", "Cyrl"}}}, {"kk", {{"", "Arab"}, {"KZ", "Cyrl"}, {"TR", "Cyrl"}}}, {"kkj", {{"", ""}}}, {"kl", {{"", "Latn"}}}, {"kln", {{"", "Latn"}}}, {"km", {{"", "Khmr"}}}, {"kmb", {{"", "Latn"}}}, {"kn", {{"", "Knda"}}}, {"ko", {{"", "Kore"}}}, {"koi", {{"", "Cyrl"}}}, {"kok", {{"", "Deva"}}}, {"kos", {{"", "Latn"}}}, {"kpe", {{"", "Latn"}}}, {"kpy", {{"", "Cyrl"}}}, {"kr", {{"", "Latn"}}}, {"krc", {{"", "Cyrl"}}}, {"kri", {{"", "Latn"}}}, {"krl", {{"", "Latn"}}}, {"kru", {{"", "Deva"}}}, {"ks", {{"", "Arab"}}}, {"ksb", {{"", "Latn"}}}, {"ksf", {{"", "Latn"}}}, {"ksh", {{"", "Latn"}}}, {"ku", {{"", "Latn"}, {"LB", "Arab"}}}, {"kum", {{"", "Cyrl"}}}, {"kut", {{"", "Latn"}}}, {"kv", {{"", "Cyrl"}}}, {"kvr", {{"", ""}}}, {"kvx", {{"", ""}}}, {"kw", {{"", "Latn"}}}, {"kxm", {{"", ""}}}, {"kxp", {{"", ""}}}, {"ky", {{"", "Cyrl"}, {"CN", "Arab"}, {"TR", "Latn"}}}, {"kyu", {{"", "Kali"}}}, {"la", {{"", "Latn"}}}, {"lad", {{"", "Hebr"}}}, {"lag", {{"", "Latn"}}}, {"lah", {{"", "Arab"}}}, {"laj", {{"", ""}}}, {"lam", {{"", "Latn"}}}, {"lb", {{"", "Latn"}}}, {"lbe", {{"", "Cyrl"}}}, {"lbw", {{"", ""}}}, {"lcp", {{"", "Thai"}}}, {"lep", {{"", "Lepc"}}}, {"lez", {{"", "Cyrl"}}}, {"lg", {{"", "Latn"}}}, {"li", {{"", "Latn"}}}, {"lif", {{"", "Deva"}}}, {"lis", {{"", "Lisu"}}}, {"ljp", {{"", ""}}}, {"lki", {{"", "Arab"}}}, {"lkt", {{"", ""}}}, {"lmn", {{"", "Telu"}}}, {"lmo", {{"", ""}}}, {"ln", {{"", "Latn"}}}, {"lo", {{"", "Laoo"}}}, {"lol", {{"", "Latn"}}}, {"loz", {{"", "Latn"}}}, {"lrc", {{"", ""}}}, {"lt", {{"", "Latn"}}}, {"lu", {{"", "Latn"}}}, {"lua", {{"", "Latn"}}}, {"lui", {{"", "Latn"}}}, {"lun", {{"", "Latn"}}}, {"luo", {{"", "Latn"}}}, {"lus", {{"", "Beng"}}}, {"lut", {{"", "Latn"}}}, {"luy", {{"", "Latn"}}}, {"luz", {{"", ""}}}, {"lv", {{"", "Latn"}}}, {"lwl", {{"", "Thai"}}}, {"mad", {{"", "Latn"}}}, {"maf", {{"", ""}}}, {"mag", {{"", "Deva"}}}, {"mai", {{"", "Deva"}}}, {"mak", {{"", "Latn"}, {"ID", "Bugi"}}}, {"man", {{"", "Latn"}, {"GN", "Nkoo"}}}, {"mas", {{"", "Latn"}}}, {"maz", {{"", ""}}}, {"mdf", {{"", "Cyrl"}}}, {"mdh", {{"", "Latn"}}}, {"mdr", {{"", "Latn"}}}, {"mdt", {{"", ""}}}, {"men", {{"", "Latn"}}}, {"mer", {{"", "Latn"}}}, {"mfa", {{"", ""}}}, {"mfe", {{"", "Latn"}}}, {"mg", {{"", "Latn"}}}, {"mgh", {{"", "Latn"}}}, {"mgp", {{"", ""}}}, {"mgy", {{"", ""}}}, {"mh", {{"", "Latn"}}}, {"mi", {{"", "Latn"}}}, {"mic", {{"", "Latn"}}}, {"min", {{"", "Latn"}}}, {"mk", {{"", "Cyrl"}}}, {"ml", {{"", "Mlym"}}}, {"mn", {{"", "Cyrl"}, {"CN", "Mong"}}}, {"mnc", {{"", "Mong"}}}, {"mni", {{"", "Beng"}, {"IN", "Mtei"}}}, {"mns", {{"", "Cyrl"}}}, {"mnw", {{"", "Mymr"}}}, {"moe", {{"", ""}}}, {"moh", {{"", "Latn"}}}, {"mos", {{"", "Latn"}}}, {"mr", {{"", "Deva"}}}, {"mrd", {{"", ""}}}, {"mrj", {{"", ""}}}, {"ms", {{"", "Arab"}, {"MY", "Latn"}, {"SG", "Latn"}}}, {"mt", {{"", "Latn"}}}, {"mtr", {{"", ""}}}, {"mua", {{"", "Latn"}}}, {"mus", {{"", "Latn"}}}, {"mvy", {{"", ""}}}, {"mwk", {{"", ""}}}, {"mwl", {{"", "Latn"}}}, {"mwr", {{"", "Deva"}}}, {"mxc", {{"", ""}}}, {"my", {{"", "Mymr"}}}, {"myv", {{"", "Cyrl"}}}, {"myx", {{"", ""}}}, {"myz", {{"", "Mand"}}}, {"na", {{"", "Latn"}}}, {"nap", {{"", "Latn"}}}, {"naq", {{"", "Latn"}}}, {"nb", {{"", "Latn"}}}, {"nbf", {{"", ""}}}, {"nch", {{"", ""}}}, {"nd", {{"", "Latn"}}}, {"ndc", {{"", ""}}}, {"nds", {{"", "Latn"}}}, {"ne", {{"", "Deva"}}}, {"new", {{"", "Deva"}}}, {"ng", {{"", "Latn"}}}, {"ngl", {{"", ""}}}, {"nhe", {{"", ""}}}, {"nhw", {{"", ""}}}, {"nia", {{"", "Latn"}}}, {"nij", {{"", ""}}}, {"niu", {{"", "Latn"}}}, {"nl", {{"", "Latn"}}}, {"nmg", {{"", "Latn"}}}, {"nn", {{"", "Latn"}}}, {"nnh", {{"", ""}}}, {"nod", {{"", "Lana"}}}, {"noe", {{"", ""}}}, {"nog", {{"", "Cyrl"}}}, {"nqo", {{"", "Nkoo"}}}, {"nr", {{"", "Latn"}}}, {"nsk", {{"", ""}}}, {"nso", {{"", "Latn"}}}, {"nus", {{"", "Latn"}}}, {"nv", {{"", "Latn"}}}, {"ny", {{"", "Latn"}}}, {"nym", {{"", "Latn"}}}, {"nyn", {{"", "Latn"}}}, {"nyo", {{"", "Latn"}}}, {"nzi", {{"", "Latn"}}}, {"oc", {{"", "Latn"}}}, {"oj", {{"", "Cans"}}}, {"om", {{"", "Latn"}, {"ET", "Ethi"}}}, {"or", {{"", "Orya"}}}, {"os", {{"", "Cyrl"}}}, {"osa", {{"", "Latn"}}}, {"osc", {{"", "Ital"}}}, {"otk", {{"", "Orkh"}}}, {"pa", {{"", "Guru"}, {"PK", "Arab"}}}, {"pag", {{"", "Latn"}}}, {"pal", {{"", "Phli"}}}, {"pam", {{"", "Latn"}}}, {"pap", {{"", "Latn"}}}, {"pau", {{"", "Latn"}}}, {"peo", {{"", "Xpeo"}}}, {"phn", {{"", "Phnx"}}}, {"pi", {{"", "Deva"}}}, {"pko", {{"", ""}}}, {"pl", {{"", "Latn"}}}, {"pon", {{"", "Latn"}}}, {"pra", {{"", "Brah"}}}, {"prd", {{"", "Arab"}}}, {"prg", {{"", "Latn"}}}, {"prs", {{"", "Arab"}}}, {"ps", {{"", "Arab"}}}, {"pt", {{"", "Latn"}}}, {"puu", {{"", ""}}}, {"qu", {{"", "Latn"}}}, {"raj", {{"", "Latn"}}}, {"rap", {{"", "Latn"}}}, {"rar", {{"", "Latn"}}}, {"rcf", {{"", "Latn"}}}, {"rej", {{"", "Latn"}, {"ID", "Rjng"}}}, {"ria", {{"", ""}}}, {"rif", {{"", ""}}}, {"rjs", {{"", "Deva"}}}, {"rkt", {{"", "Beng"}}}, {"rm", {{"", "Latn"}}}, {"rmf", {{"", ""}}}, {"rmo", {{"", ""}}}, {"rmt", {{"", ""}}}, {"rn", {{"", "Latn"}}}, {"rng", {{"", ""}}}, {"ro", {{"", "Latn"}, {"RS", "Cyrl"}}}, {"rob", {{"", ""}}}, {"rof", {{"", "Latn"}}}, {"rom", {{"", "Cyrl"}}}, {"ru", {{"", "Cyrl"}}}, {"rue", {{"", ""}}}, {"rup", {{"", "Latn"}}}, {"rw", {{"", "Latn"}}}, {"rwk", {{"", "Latn"}}}, {"ryu", {{"", ""}}}, {"sa", {{"", "Deva"}}}, {"sad", {{"", "Latn"}}}, {"saf", {{"", "Latn"}}}, {"sah", {{"", "Cyrl"}}}, {"sam", {{"", "Hebr"}}}, {"saq", {{"", "Latn"}}}, {"sas", {{"", "Latn"}}}, {"sat", {{"", "Latn"}}}, {"saz", {{"", "Saur"}}}, {"sbp", {{"", "Latn"}}}, {"sc", {{"", "Latn"}}}, {"sck", {{"", ""}}}, {"scn", {{"", "Latn"}}}, {"sco", {{"", "Latn"}}}, {"scs", {{"", ""}}}, {"sd", {{"", "Arab"}, {"IN", "Deva"}}}, {"sdh", {{"", "Arab"}}}, {"se", {{"", "Latn"}, {"NO", "Cyrl"}}}, {"see", {{"", "Latn"}}}, {"sef", {{"", ""}}}, {"seh", {{"", "Latn"}}}, {"sel", {{"", "Cyrl"}}}, {"ses", {{"", "Latn"}}}, {"sg", {{"", "Latn"}}}, {"sga", {{"", "Latn"}}}, {"shi", {{"", "Tfng"}}}, {"shn", {{"", "Mymr"}}}, {"si", {{"", "Sinh"}}}, {"sid", {{"", "Latn"}}}, {"sk", {{"", "Latn"}}}, {"skr", {{"", ""}}}, {"sl", {{"", "Latn"}}}, {"sm", {{"", "Latn"}}}, {"sma", {{"", "Latn"}}}, {"smi", {{"", "Latn"}}}, {"smj", {{"", "Latn"}}}, {"smn", {{"", "Latn"}}}, {"sms", {{"", "Latn"}}}, {"sn", {{"", "Latn"}}}, {"snk", {{"", "Latn"}}}, {"so", {{"", "Latn"}}}, {"son", {{"", "Latn"}}}, {"sou", {{"", ""}}}, {"sq", {{"", "Latn"}}}, {"sr", {{"", "Latn"}}}, {"srn", {{"", "Latn"}}}, {"srr", {{"", "Latn"}}}, {"srx", {{"", ""}}}, {"ss", {{"", "Latn"}}}, {"ssy", {{"", "Latn"}}}, {"st", {{"", "Latn"}}}, {"su", {{"", "Latn"}}}, {"suk", {{"", "Latn"}}}, {"sus", {{"", "Latn"}, {"GN", "Arab"}}}, {"sv", {{"", "Latn"}}}, {"sw", {{"", "Latn"}}}, {"swb", {{"", "Arab"}, {"YT", "Latn"}}}, {"swc", {{"", "Latn"}}}, {"swv", {{"", ""}}}, {"sxn", {{"", ""}}}, {"syi", {{"", ""}}}, {"syl", {{"", "Beng"}, {"BD", "Sylo"}}}, {"syr", {{"", "Syrc"}}}, {"ta", {{"", "Taml"}}}, {"tab", {{"", "Cyrl"}}}, {"taj", {{"", ""}}}, {"tbw", {{"", "Latn"}}}, {"tcy", {{"", "Knda"}}}, {"tdd", {{"", "Tale"}}}, {"tdg", {{"", ""}}}, {"tdh", {{"", ""}}}, {"te", {{"", "Telu"}}}, {"tem", {{"", "Latn"}}}, {"teo", {{"", "Latn"}}}, {"ter", {{"", "Latn"}}}, {"tet", {{"", "Latn"}}}, {"tg", {{"", "Cyrl"}, {"PK", "Arab"}}}, {"th", {{"", "Thai"}}}, {"thl", {{"", ""}}}, {"thq", {{"", ""}}}, {"thr", {{"", ""}}}, {"ti", {{"", "Ethi"}}}, {"tig", {{"", "Ethi"}}}, {"tiv", {{"", "Latn"}}}, {"tk", {{"", "Latn"}}}, {"tkl", {{"", "Latn"}}}, {"tkt", {{"", ""}}}, {"tli", {{"", "Latn"}}}, {"tmh", {{"", "Latn"}}}, {"tn", {{"", "Latn"}}}, {"to", {{"", "Latn"}}}, {"tog", {{"", "Latn"}}}, {"tpi", {{"", "Latn"}}}, {"tr", {{"", "Latn"}, {"DE", "Arab"}, {"MK", "Arab"}}}, {"tru", {{"", "Latn"}}}, {"trv", {{"", "Latn"}}}, {"ts", {{"", "Latn"}}}, {"tsf", {{"", ""}}}, {"tsg", {{"", "Latn"}}}, {"tsi", {{"", "Latn"}}}, {"tsj", {{"", ""}}}, {"tt", {{"", "Cyrl"}}}, {"ttj", {{"", ""}}}, {"tts", {{"", "Thai"}}}, {"tum", {{"", "Latn"}}}, {"tut", {{"", "Cyrl"}}}, {"tvl", {{"", "Latn"}}}, {"twq", {{"", "Latn"}}}, {"ty", {{"", "Latn"}}}, {"tyv", {{"", "Cyrl"}}}, {"tzm", {{"", "Latn"}}}, {"ude", {{"", "Cyrl"}}}, {"udm", {{"", "Cyrl"}, {"RU", "Latn"}}}, {"ug", {{"", "Arab"}, {"KZ", "Cyrl"}, {"MN", "Cyrl"}}}, {"uga", {{"", "Ugar"}}}, {"uk", {{"", "Cyrl"}}}, {"uli", {{"", "Latn"}}}, {"umb", {{"", "Latn"}}}, {"und", {{"", ""}}}, {"unr", {{"", "Beng"}, {"NP", "Deva"}}}, {"unx", {{"", "Beng"}}}, {"ur", {{"", "Arab"}}}, {"uz", {{"", "Latn"}, {"AF", "Arab"}, {"CN", "Cyrl"}}}, {"vai", {{"", "Vaii"}}}, {"ve", {{"", "Latn"}}}, {"vi", {{"", "Latn"}, {"US", "Hani"}}}, {"vic", {{"", ""}}}, {"vmw", {{"", ""}}}, {"vo", {{"", "Latn"}}}, {"vot", {{"", "Latn"}}}, {"vun", {{"", "Latn"}}}, {"wa", {{"", "Latn"}}}, {"wae", {{"", "Latn"}}}, {"wak", {{"", "Latn"}}}, {"wal", {{"", "Ethi"}}}, {"war", {{"", "Latn"}}}, {"was", {{"", "Latn"}}}, {"wbq", {{"", ""}}}, {"wbr", {{"", ""}}}, {"wls", {{"", ""}}}, {"wo", {{"", "Latn"}}}, {"wtm", {{"", ""}}}, {"xal", {{"", "Cyrl"}}}, {"xav", {{"", ""}}}, {"xcr", {{"", "Cari"}}}, {"xh", {{"", "Latn"}}}, {"xnr", {{"", ""}}}, {"xog", {{"", "Latn"}}}, {"xpr", {{"", "Prti"}}}, {"xsa", {{"", "Sarb"}}}, {"xsr", {{"", "Deva"}}}, {"xum", {{"", "Ital"}}}, {"yao", {{"", "Latn"}}}, {"yap", {{"", "Latn"}}}, {"yav", {{"", "Latn"}}}, {"ybb", {{"", ""}}}, {"yi", {{"", "Hebr"}}}, {"yo", {{"", "Latn"}}}, {"yrk", {{"", "Cyrl"}}}, {"yua", {{"", ""}}}, {"yue", {{"", "Hans"}}}, {"za", {{"", "Latn"}, {"CN", "Hans"}}}, {"zap", {{"", "Latn"}}}, {"zdj", {{"", ""}}}, {"zea", {{"", ""}}}, {"zen", {{"", "Tfng"}}}, {"zh", {{"", "Hant"}, {"CN", "Hans"}, {"HK", "Hans"}, {"MO", "Hans"}, {"SG", "Hans"}, {"MN", "Hans"}}}, {"zmi", {{"", ""}}}, {"zu", {{"", "Latn"}}}, {"zun", {{"", "Latn"}}}, {"zza", {{"", "Arab"}}} };

C #, usos excluidos para el recuento de caracteres:

namespace territoryInfoScraper { class MainClass { static string LanguageEntryToString(KeyValuePair<string, Dictionary<string, List<string>>> entry, Dictionary<string, List<string>> languagePrimaryScripts) { var language = entry.Key; var scriptsByTerritory = entry.Value; var result = new StringBuilder (); result.Append ("{/""); result.Append (language); result.Append ("/", {{/"/", /""); string defaultScript; if (languagePrimaryScripts.ContainsKey (language) && languagePrimaryScripts [language].Count == 1) { defaultScript = languagePrimaryScripts [language] [0]; } else { IEnumerable<string> listOfScripts = scriptsByTerritory.SelectMany (x => x.Value); var groupsWithCounts = from s in listOfScripts group s by s into g select new {Item = g.Key, Count = g.Count()}; var groupsSorted = groupsWithCounts.OrderByDescending (g => g.Count); if (groupsSorted.Count () > 0) { defaultScript = groupsSorted.First ().Item; } else { System.Diagnostics.Debug.WriteLine ("Could not determine a default script"); defaultScript = ""; } } result.Append (defaultScript); result.Append ("/"}"); var specifiedTerritories = scriptsByTerritory.Where (x => x.Key != "" && x.Value.Count == 1 && x.Value[0] != defaultScript).Select (x => "{/"" + x.Key + "/", /"" + x.Value [0] + "/"}").ToArray (); if (specifiedTerritories.Count () > 0) { result.Append (", "); } result.Append (String.Join (", ", specifiedTerritories)); result.Append ("}}"); return result.ToString (); } static void Main (string[] args) { var document = XDocument.Load ("/Users/Brent/Downloads/core/common/supplemental/supplementalData.xml"); var scriptIfLanguageHasMultiplePossibilitiesAndRegionHasNoneSpecified = new Dictionary<string, List<string>> (); string defaultLocale = document.XPathSelectElement ("/supplementalData/parentLocales/parentLocale[@parent=''root'']").Attribute("locales").Value; foreach (var entry in defaultLocale.Split(new[] {'' ''}, StringSplitOptions.RemoveEmptyEntries)) { int indexOfUnderscore = entry.IndexOf (''_''); string language = entry.Substring (0, indexOfUnderscore); string script = entry.Substring (indexOfUnderscore + 1); if (!scriptIfLanguageHasMultiplePossibilitiesAndRegionHasNoneSpecified.ContainsKey (language)) { scriptIfLanguageHasMultiplePossibilitiesAndRegionHasNoneSpecified.Add (language, new List<string> ()); } scriptIfLanguageHasMultiplePossibilitiesAndRegionHasNoneSpecified [language].Add (script); } var languageTerritoryScript = new Dictionary<string, Dictionary<string, List<string>>> (); var languagePrimaryScripts = new Dictionary<string, List<string>> (); var languageInfo = document.XPathSelectElements ("/supplementalData/languageData/language"); foreach (var languageNode in languageInfo) { bool isSecondary = languageNode.Attribute ("alt") != null && languageNode.Attribute ("alt").Value == "secondary"; string language = languageNode.Attribute ("type").Value; if (!languageTerritoryScript.ContainsKey (language)) { languageTerritoryScript.Add (language, new Dictionary<string, List<string>> ()); } if (languageNode.Attribute ("territories") != null) { String[] territories = languageNode.Attribute ("territories").Value.Split (new[] { '' '' }, StringSplitOptions.RemoveEmptyEntries); if (languageNode.Attribute ("scripts") != null) { String[] scripts = languageNode.Attribute ("scripts").Value.Split (new[] { '' '' }, StringSplitOptions.RemoveEmptyEntries); foreach (string territory in territories) { if (!languageTerritoryScript [language].ContainsKey (territory)) { languageTerritoryScript [language].Add (territory, new List<string> ()); } foreach (string script in scripts) { languageTerritoryScript [language] [territory].Add (script); if (!isSecondary) { if (!languagePrimaryScripts.ContainsKey (language)) { languagePrimaryScripts.Add (language, new List<string> ()); } languagePrimaryScripts [language].Add (script); } } } } else { foreach (string territory in territories) { if (!languageTerritoryScript [language].ContainsKey (territory)) { languageTerritoryScript [language].Add (territory, new List<string> ()); } } } } else if (languageNode.Attributes ("scripts") != null) { String[] scripts = languageNode.Attribute ("scripts").Value.Split (new[] { '' '' }, StringSplitOptions.RemoveEmptyEntries); if (!languageTerritoryScript [language].ContainsKey ("")) { languageTerritoryScript [language].Add ("", new List<string> ()); } foreach (string script in scripts) { languageTerritoryScript [language] [""].Add (script); if (!isSecondary) { if (!languagePrimaryScripts.ContainsKey (language)) { languagePrimaryScripts.Add (language, new List<string> ()); } languagePrimaryScripts [language].Add (script); } } } } var territoryInfo = document.XPathSelectElements ("/supplementalData/territoryInfo/territory"); foreach (var territoryNode in territoryInfo) { string territory = territoryNode.Attribute ("type").Value; foreach (var languagePopulationNode in territoryNode.Elements()) { string languageAndMaybeScript = languagePopulationNode.Attribute ("type").Value; int underscoreIndex = languageAndMaybeScript.IndexOf (''_''); if (underscoreIndex != -1) { string language = languageAndMaybeScript.Substring (0, underscoreIndex); string script = languageAndMaybeScript.Substring (underscoreIndex + 1); if (!languageTerritoryScript.ContainsKey (language)) { languageTerritoryScript.Add (language, new Dictionary<string, List<string>> ()); } if (!languageTerritoryScript [language].ContainsKey (territory)) { languageTerritoryScript [language].Add (territory, new List<string> ()); } languageTerritoryScript [language] [territory].Clear (); //we''ve gotten a specific script specification for the region and language, so use it, and only it. languageTerritoryScript [language] [territory].Add (script); } else { string language = languageAndMaybeScript; if (!languageTerritoryScript.ContainsKey (language)) { languageTerritoryScript.Add (language, new Dictionary<string, List<string>> ()); } if (!languageTerritoryScript [language].ContainsKey (territory)) { languageTerritoryScript [language].Add (territory, new List<string> ()); } } } } StringBuilder result = new StringBuilder ("static std::map<std::string /*ISO 639-1*/, std::map<std::string/*ISO ISO3166-1 Alpha 2 or empty*/, std::string /*ISO 15924*/>> table = {"); result.Append (System.Environment.NewLine); result.Append (String.Join (", " + System.Environment.NewLine, languageTerritoryScript.Where (x => x.Value.Count > 0).OrderBy(x => x.Key).Select (x => LanguageEntryToString (x, languagePrimaryScripts)))); result.Append (System.Environment.NewLine); result.Append ("}"); string stringResult = result.ToString (); System.Diagnostics.Debug.WriteLine (stringResult); } } }


Creé una versión de Java que hace esto, disponible aquí . Básicamente, toma la tabla en la respuesta anterior (con entradas adicionales) y la asigna a un Map<String, Map<String, String>> contiene la información útil, luego se usa un método de búsqueda simple. Para usar esta clase en tu proyecto, simplemente llama:

String script = LocaleUtilities.getScript(Locale.getDefault());

para obtener la secuencia de comandos para la configuración regional predeterminada.


EDITAR: He hecho una nueva y mejor respuesta. Usa eso. No tuve suerte para encontrar nada, así que decidí hacer mi mejor esfuerzo para hacer una mesa yo mismo. Después de buscar un poco, encontré esta joya . Al hacer clic (casi) en cualquier idioma, obtendrá el código ISO 639-1 (y más) y al hacer clic en cualquier categoría de secuencia de comandos, obtendrá el código 15924. Probablemente podría haber escrito algo para burlar las tablas en c ++ manualmente, pero solo necesitaba un par de docenas y no podía justificar la automatización (en mi moneda de diez) así que aquí está la tabla que hice a mano:

std::map<std::string /*ISO 639-1*/, std::string /*ISO 15924*/> table = { {"ar", "Arab"}, //Arabic {"bn", "Beng"}, //Bengali {"zh", "Hani"}, //Chinese {"en", "Latn"}, //English {"fr", "Latn"}, //French {"de", "Latn"}, //German {"hi", "Deva"}, //Hindi {"it", "Latn"}, //Italian {"ja", "Hani"}, //Japanese {"jv", "Latn"}, //Javanese {"ko", "Hani"}, //Korean {"ms", "Latn"}, //Malay/Indonesian {"mr", "Deva"}, //Marathi {"fa", "Arab"}, //Persian {"pt", "Latn"}, //Porteugese {"pa", "Arab"}, //Punjabi {"ru", "Cyrl"}, //Russian {"es", "Latn"}, //Spanish {"ta", "Taml"}, //Tamil {"te", "Telu"}, //Telugu {"tr", "Latn"}, //Turkish {"ur", "Arab"}, //Urdu {"vi", "Latn"} //Vietnamese };


Pero en_US no tiene una etiqueta de script, solo es un identificador. ¿Qué sugieres para mejorar la documentación aquí?

Si quiere adivinar cuál es el script, puede usar uloc_addLikelySubtags() (o ICU4J equivalente) que en_Latn_US en en_Latn_US , pero dejará zh_Hant_CN como zh_Hant_CN , utilizando los datos de CLR likelySubtag .


La parte C de ICU4C contiene la llamada uscript_getCode () que debe hacer lo que está buscando.