| package main |
| |
| import ( |
| "C" |
| "golang.org/x/text/language" |
| "golang.org/x/text/language/display" |
| ) |
| |
| //export DisplayLanguage |
| func DisplayLanguage(lang_c *C.char) *C.char { |
| var lang string |
| var ret string |
| lang = C.GoString(lang_c) |
| switch (lang) { |
| case "bh": |
| ret = "Bihari"; |
| break; |
| case "bn": |
| ret = "Bengali"; |
| break; |
| case "ckb": |
| ret = "Kurdish"; |
| break; |
| case "dra": |
| ret = "Dravidian"; |
| break; |
| case "en-GB": |
| ret = "U.K. English"; |
| break; |
| case "en-US": |
| ret = "U.S. English"; |
| break; |
| case "eo-xsistemo": |
| ret = "Esperanto x-system";; |
| break; |
| case "gez": |
| ret = "Ethiopic"; |
| break; |
| case "kmr": |
| ret = "Northern Kurdish"; |
| break; |
| case "lg": |
| ret = "Luganda"; // or "Ganda" |
| break; |
| case "mun": |
| ret = "Munda"; |
| break; |
| case "no": |
| ret = "Norwegian"; |
| break; |
| case "ny": |
| ret = "Chichewa"; // a.k.a. Chinyanja, Nyanja or Chewa |
| break; |
| case "or": |
| ret = "Oriya"; |
| break; |
| case "sah": |
| ret = "Yakut"; // not "Sakha" |
| break; |
| case "st": |
| ret = "Sesotho"; // South Africans say "Sesotho", not "Sotho" or "Southern Sotho" |
| break; |
| case "tn": |
| ret = "Setswana"; // South Africans say "Setswana", not "Tswana" |
| break; |
| case "xh": |
| ret = "isiXhosa"; // South Africans say "isiXhosa", not "Xhosa" |
| break; |
| case "ve": |
| ret = "Tshivenda"; // South Africans say "Tshivenda", not "Venda" |
| break; |
| case "zu": |
| ret = "isiZulu"; // South Africans say "isiZulu", not "Zulu" |
| break; |
| default: |
| var namer display.Namer |
| namer = display.English.Languages() |
| ret = namer.Name(language.MustParse(lang)) |
| } |
| return C.CString(ret) |
| } |
| |
| //export NativeLanguage |
| func NativeLanguage(lang_c *C.char) *C.char { |
| var lang string |
| var ret string |
| var namer display.Namer |
| lang = C.GoString(lang_c) |
| namer = display.Self |
| ret = namer.Name(language.MustParse(lang)) |
| return C.CString(ret) |
| } |
| |
| //export DisplayRegion |
| func DisplayRegion(region_c *C.char) *C.char { |
| var region string |
| var ret string |
| region = C.GoString(region_c) |
| switch (region) { |
| case "CA": |
| ret = "Canada"; |
| break; |
| case "GB": |
| ret = "the U.K."; |
| break; |
| case "US": |
| ret = "the U.S."; |
| break; |
| default: |
| ret = ""; |
| break; |
| } |
| return C.CString(ret) |
| } |
| |
| // main function required for interfacing with C |
| func main() {} |