RecAPI
Language identifiers

Language identifier names at functions like kRecGetLanguageInfo and kRecFindLanguageEx can be accessed or specified by their English names or by their coding in a range of standards. Note that some standards don't support all of our languages, these are noted below. There is a different problem with the Chinese, Portuguese and Serbian languages: we use two separate language codes in all of these 3 cases based on the country or the script used: Simplified and Traditional Chinese, Portugal and Brazilian Portuguese, Cyrillic and Latin Serbian. The different ISO 639-x standards don't make such a difference. The handling of these languages is described at "In case of language-pairs" below.

CSDK internal code: This is the last 3 letters of the name used by us as the LANGUAGES enum, i.e. the 3 letters following "LANG_". Note that the kRecFindLanguage family of functions accepts both 3-letter internal codes and the "LANG_" prefixed 8-letter ones. This identifier can be used to uniquely identify any of our languages. Standard ISO idetifiers (see later here) all lack some of our languages. The ISO 639-3 superset used by us also has the feature of uniquely identifying all of our languages so if you want to have a close-to-standard identifier then you may consider using that one instead of this internal code.

ISO 639-1: Some of our languages are not supported by this standard, in such cases kRecGetLanguageInfo returns an empty string in Name_639_1. In case of language-pairs the ISO 639-1 standard code is returned at both languages. The kRecFindLanguage family of functions supports both the 2-letter language codes (e.g. en) and the combined language and country codes (e.g. en-US). Sometimes the country codes are needed for the correct mapping (e.g. pt-BR for Brazilian Portuguese, zh-TW for Traditional Chinese, etc.), while sometimes the script code is necessary (e.g. sr-Cyrl for Cyrillic Serbian and sr-Latn for Latin Serbian). The table below shows those combined codes that could be necessary, but other combinations not shown in the table are supported as well. Note that kRecGetLanguageInfo always returns the 2-letter basic code only.

ISO 639-2/B: Some of our languages are not supported by this standard, in such cases kRecGetLanguageInfo returns an empty string in Name_639_2B. In case of language-pairs the ISO 639-2/B standard code is returned at the first language of the language-pair only, while an empty string is returned at the second language. Note that some of the identifier codes in our 639-2/B implementation do not refer to a specific language, but a language collection. These identifiers are:

ISO 639-3: This is the only language identifier standard that can map 1-to-1 to our languages. That is because it has a method to define local language codes. The used local codes are:

In case of language-pairs the ISO 639-3 standard code is returned at the first language of the language-pair only, while a local code is returned at the second language. (In previous versions Simplified Chinese was also coded with a local code, qcs, now zho is returned; qcs can still be used with the kRecFindLanguage family of functions.) Some of our languages are language collections that don't have an ISO 639-3 code but do have an ISO 639-2/B code. In these cases the capitalized 639-2/B codes are used by us as extended 639-3 codes:

These are not standard 639-3 names, but adding them made the 639-3 superset able to identify all of our languages.

Windows 3 letter code: This is the GetLocaleInfo(LOCALE_SABBREVLANGNAME) identifier that is sometimes called ISO 639x in the Microsoft documentations, however it does not match any of the ISO standards. It is mostly (but not always) based on the ISO 639-1 two-letter codes by adding a third character. It looks similar to the ISO 639-2/B and ISO 639-3 standards, but has some different codes (e. g. The Swedish language ISO identifier is swe while the Windows identifier is SVE.) Some of our languages are not supported by the Windows 3 letter codes, in such cases kRecGetLanguageInfo returns an empty string in Name_Win_3.

Windows locale ID (LCID): The kRecGetLanguageInfo function returns this identifier as an integer. The kRecFindLanguages and kRecFindLanguageEx functions can use this numeric value directly to find a language, while the kRecFindLanguage family of functions as well as the kRecSetUILang functions support a special string representation: "LCID_12345" i.e. the decimal value of the local ID prefixed by the "LCID_" string. In C/C++ it can be generated with the "LCID_%d" sprintf format. Some of our languages are not supported by the LCID codes, in such cases kRecGetLanguageInfo returns the ID of English (0x0409) in LangID.

Note:
There are some conflicting values in different language code standards, so take care when using them with the kRecFindLanguage family of functions:
  • CRO means Croatian as an internal code, while cro means Crow as a 639-3 code
  • LAT means Latvian as an internal code, while lat means Latin as a 639-3 or 639-2B code
  • MAY means Mayan as an internal code, while may means Malay as a 639-2B code
  • ROM means Romanian as an internal or Windows code, while rom means Romany as a 639-3 or 639-2B code
  • SRP means LatinSerbian as a Windows code, while srp means CyrillicSerbian as a 639-3 or 639-2B code
  • pt means both Portugal and BrazilianPortuguese as a 639-1 code
  • sr means both Cyrillic and LatinSerbian as a 639-1 code
  • zh means both Simplified and TraditionalChinese as a 639-1 code
With kRecFindLanguages it's suggested to stick to a single standard and place the language name in the corresponding field of the LANGUAGE_INFO structure, and not the common EnglishName field. With the simpler kRecFindLanguage function you don't have such choice; in case of conflicting languages it returns the most relevant of the possible languages (usually based on the character case) with a warning. If you're using the CSDK internal code with kRecFindLanguage it's best to use it with the "LANG_" prefix. It is suggested to use kRecFindLanguageEx instead of these functions. With kRecFindLanguageEx you can stick to a single standard, and it is the most flexible even when the general query with LANGCODE_ALL is used. In case of conflicting languages kRecFindLanguageEx returns the most relevant of the possible languages (usually based on the character case) with a warning, and the conflicting other language can be learned as well.

The below table shows all supported languages with the supported language names and identifiers. Some languages have multiple identifiers listed in cells below, in those cases the first ID is the one returned by kRecGetLanguageInfo while the other IDs can also be used with the kRecFindLanguage family of functions.

Name Alternate Name enum name Script Continent ISO 639-3 ISO 639-2/B ISO 639-1 Windows Microsoft ID
English   LANG_ENG Latin Europe, Oceania,
North America
eng eng en ENU, ENG, ENA,
ENC, ENZ
0409, 0809, 0C09,
1009, 1409
German   LANG_GER Latin Europe deu ger de DEU, GER 0407
French   LANG_FRE Latin Europe, North America fra fre fr FRA, FRC 040C, 0C0C
Dutch   LANG_DUT Latin Europe nld dut nl NLD 0413
Norwegian   LANG_NOR Latin Europe nor nor no, nb, nn NOR, NON 0414, 0814
Swedish   LANG_SWE Latin Europe swe swe sv SVE 041D
Finnish   LANG_FIN Latin Europe fin fin fi FIN 040B
Danish   LANG_DAN Latin Europe dan dan da DAN 0406
Icelandic   LANG_ICE Latin Europe isl ice is ISL 040F
Portuguese   LANG_POR Latin Europe por por pt, pt-PT PTG 0816
Spanish   LANG_SPA Latin Europe, Latin America spa spa es ESN, ESM 0C0A, 080A
Catalan Catalonian LANG_CAT Latin Europe cat cat ca CAT 0403
Galician Gallegan LANG_GAL Latin Europe glg glg gl GLC 0456
Italian   LANG_ITA Latin Europe ita ita it ITA 0410
Maltese   LANG_MAL Latin Europe mlt mlt mt MLT 043A
Greek   LANG_GRE Greek Europe ell gre el ELL 0408
Polish   LANG_POL Latin Europe pol pol pl PLK 0415
Czech   LANG_CZH Latin Europe ces cze cs CSY 0405
Slovak   LANG_SLK Latin Europe slk slo sk SKY 041B
Hungarian   LANG_HUN Latin Europe hun hun hu HUN 040E
Slovenian   LANG_SLN Latin Europe slv slv sl SLV 0424
Croatian   LANG_CRO Latin Europe hrv scr hr HRV, HRB 041A, 001A
Romanian Rumanian LANG_ROM Latin Europe ron rum ro ROM 0418
Albanian   LANG_ALB Latin Europe sqi alb sq SQI 041C
Turkish   LANG_TUR Latin Europe, Asia tur tur tr TRK 041F
Estonian   LANG_EST Latin Europe est est et ETI 0425
Latvian   LANG_LAT Latin Europe lav lav lv LVI 0426
Lithuanian   LANG_LIT Latin Europe lit lit lt LTH 0427
Esperanto   LANG_ESP Latin International epo epo eo    
Serbian(Latin) Bosnian LANG_SRL Latin Europe qsl   sr, sr-Latn,
Lt-sr, bs
SRL, SRS, SRM,
SRP, BSB
081A, 181A, 241A,
2C1A, 701A, 141A,
681A
Serbian   LANG_SRB Cyrillic Europe srp srp, scc sr, sr-Cyrl,
Cy-sr
SRB, SRN, SRO,
SRQ, BSC
0C1A, 1C1A, 281A,
301A, 6C1A, 7C1A,
201A, 641A, 781A
Macedonian   LANG_MAC Cyrillic Europe mkd mac mk MKI 042F
Moldavian   LANG_MOL Cyrillic Europe mol mol mo, ro-MO   0818
Bulgarian   LANG_BUL Cyrillic Europe bul bul bg BGR 0402
Byelorussian Belarusian,
Belarusan
LANG_BEL Cyrillic Europe bel bel be BEL 0423
Ukrainian   LANG_UKR Cyrillic Europe ukr ukr uk UKR 0422
Russian   LANG_RUS Cyrillic Europe, Asia rus rus ru RUS 0419
Chechen   LANG_CHE Cyrillic Asia che che ce    
Kabardian   LANG_KAB Cyrillic Asia kbd kbd      
Afrikaans   LANG_AFR Latin Africa afr afr af AFK 0436
Aymara   LANG_AYM Latin Latin America aym aym ay    
Basque   LANG_BAS Latin Europe eus baq eu EUQ 042D
Bemba Ichibemba LANG_BEM Latin Africa bem bem      
Blackfoot Siksika LANG_BLA Latin North America bla bla      
Breton   LANG_BRE Latin Europe bre bre br BRE 047E
Brazilian   LANG_BRA Latin Latin America qbp   pt, pt-BR PTB 0416
Bugotu Bughotu LANG_BUG Latin Oceania bgt        
Chamorro   LANG_CHA Latin Oceania cha cha ch    
Tswana(Chuana) Chuana,
Setswana
LANG_CHU Latin Africa tsn tsn tn TSN, TNA 0432
Corsican   LANG_COR Latin Europe cos cos co COS 0483
Crow   LANG_CRW Latin North America cro        
Eskimo Inuit LANG_ESK Latin Europe, North America qes        
Faroese   LANG_FAR Latin Europe fao fao fo FOS 0438
Fijian   LANG_FIJ Latin Oceania fij fij fj    
Frisian   LANG_FRI Latin Europe fry fry fy FYN 0462
Friulian   LANG_FRU Latin Europe fur fur      
Gaelic(Irish) Irish LANG_GLI Latin Europe gle gle ga, gd-IE IRE 083C
Gaelic(Scottish) Scottish LANG_GLS Latin Europe gla gla gd GLA 0491, 043C
Ganda(Luganda) Luganda LANG_GAN Latin Africa lug lug lg    
Guarani   LANG_GUA Latin Latin America grn grn gn   0474
Hani   LANG_HAN Latin Asia hni        
Hawaiian   LANG_HAW Latin Oceania haw haw     0475
Ido   LANG_IDO Latin International ido ido io    
Indonesian   LANG_IND Latin Asia ind ind id IND 0421
Interlingua   LANG_INT Latin International ina ina ia    
Kasub Kashubian LANG_KAS Latin Europe csb csb      
Kawa Wa, Blang LANG_KAW Latin Asia wbm        
Kikuyu Gikuyu LANG_KIK Latin Africa kik kik ki    
Kongo   LANG_KON Latin Africa kon kon kg    
Kpelle   LANG_KPE Latin Africa kpe kpe      
Kurdish   LANG_KUR Latin Asia kur kur ku    
Latin   LANG_LTN Latin International lat lat la   0476
Luba   LANG_LUB Latin Africa lua lua      
Luxembourgish Luxembourgian,
Letzeburgesch,
Luxembourgeois
LANG_LUX Latin Europe ltz ltz lb LBX 046E
Malagasy   LANG_MLG Latin Africa mlg mlg mg    
Malay   LANG_MLY Latin Asia msa may ms MSL 043E
Malinke Maninkakan LANG_MLN Latin Africa mlq        
Maori   LANG_MAO Latin Oceania mri mao mi MRI 0481
Mayan   LANG_MAY Latin Latin America MYN myn      
Miao Hmong LANG_MIA Latin Asia hmn hmn      
Minangkabau Minankabaw LANG_MIN Latin Asia min min      
Mohawk   LANG_MOH Latin North America moh moh   MWK 047C
Nahuatl   LANG_NAH Latin Latin America NAH nah      
Nyanja Chewa, Chichewa LANG_NYA Latin Africa nya nya ny    
Occidental   LANG_OCC Latin International ile, occ ile ie    
Ojibway Ojibwa LANG_OJI Latin North America oji oji oj    
Papiamento   LANG_PAP Latin Latin America pap pap     0479
PidginEnglish Tok Pisin LANG_PID Latin Oceania tpi tpi      
Provencal Occitan LANG_PRO Latin Europe oci, prv oci oc OCI 0482
Quechua   LANG_QUE Latin Latin America que, quz que qu QUE 086B
Rhaetic Romansh LANG_RHA Latin Europe roh roh rm RMC 0417
Romany   LANG_ROY Latin Europe rom rom      
Rwanda Ruanda,
Kinyarwanda
LANG_RUA Latin Africa kin kin rw KIN  
Rundi   LANG_RUN Latin Africa run run rn    
Samoan   LANG_SAM Latin Oceania smo smo sm    
Sardinian   LANG_SAR Latin Europe srd srd sc    
Shona   LANG_SHO Latin Africa sna sna sn    
Sioux Dakota LANG_SIO Latin North America dak dak      
Sami   LANG_SMI Latin Europe SMI smi   "", SZI 003B
Sami(Lule) Lule Sami LANG_SML Latin Europe smj smj   SMJ 103B
Sami(Northern) Northern Sami LANG_SMN Latin Europe sme sme se SME 043B
Sami(Southern) Southern Sami LANG_SMS Latin Europe sma sma   SMA 183B
Somali   LANG_SOM Latin Africa som som so   0477
Sotho Sesotho, Sutu LANG_SOT Latin Africa sot sot st   0430
Sundanese   LANG_SUN Latin Asia sun sun su    
Swahili Kiswahili LANG_SWA Latin Africa swa swa sw SWK 0441
Swazi Swati LANG_SWZ Latin Africa ssw ssw ss    
Tagalog Filipino LANG_TAG Latin Asia tgl, fil tgl, fil tl FPO 0464
Tahitian   LANG_TAH Latin Oceania tah tah ty    
Pirez Tinpo LANG_TIN Latin Asia qti        
Tongan   LANG_TON Latin Oceania ton ton to    
Tun Tunia LANG_TUN Latin Asia tug        
Visayan Cebuano LANG_VIS Latin Asia qis, ceb "", ceb      
Welsh   LANG_WEL Latin Europe cym wel cy CYM 0452
Sorbian(Wend) Wend LANG_WEN Latin Europe WEN, hsb, dsb wen, hsb, dsb sb HSB, DSB 042E
Wolof   LANG_WOL Latin Africa wol wol wo WOL 0488
Xhosa   LANG_XHO Latin Africa xho xho xh XHO 0434
Zapotec   LANG_ZAP Latin Latin America zap zap      
Zulu   LANG_ZUL Latin Africa zul zul zu ZUL 0435
Japanese   LANG_JPN Asian Asia jpn jpn ja JPN 0411
Chinese(S) Simplified Chinese LANG_CHS Asian Asia zho, qcs chi zh, zh-Hans,
zh-CHS, zh-CN,
zh-SG
CHS, ZHI 0004, 0804, 1004
Chinese(T) Traditional Chinese LANG_CHT Asian Asia qct   zh, zh-Hant,
zh-CHT, zh-HK,
zh-MO, zh-TW
CHT, ZHH, ZHM 7C04, 0404, 0C04,
1404
Korean   LANG_KRN Asian Asia kor kor ko KOR 0412
Thai   LANG_THA Asian Asia tha tha th THA 041E
Arabic   LANG_ARA Right-to-left Asia ara ara ar ARA 0401
Hebrew   LANG_HEB Right-to-left Europe, Asia heb heb he HEB 040D
Vietnamese   LANG_VIE Latin Asia vie vie vi VIT 042A