Bert Frees | 84f9dbf | 2017-11-12 22:38:01 +0100 | [diff] [blame] | 1 | package main |
| 2 | |
| 3 | import ( |
Bert Frees | 062c67b | 2021-06-07 14:10:19 +0200 | [diff] [blame] | 4 | "C" |
Bert Frees | 84f9dbf | 2017-11-12 22:38:01 +0100 | [diff] [blame] | 5 | "golang.org/x/text/language" |
| 6 | "golang.org/x/text/language/display" |
| 7 | ) |
| 8 | |
| 9 | //export DisplayLanguage |
| 10 | func DisplayLanguage(lang_c *C.char) *C.char { |
| 11 | var lang string |
| 12 | var ret string |
| 13 | lang = C.GoString(lang_c) |
| 14 | switch (lang) { |
| 15 | case "bh": |
| 16 | ret = "Bihari"; |
| 17 | break; |
| 18 | case "bn": |
| 19 | ret = "Bengali"; |
| 20 | break; |
| 21 | case "ckb": |
| 22 | ret = "Kurdish"; |
| 23 | break; |
| 24 | case "dra": |
| 25 | ret = "Dravidian"; |
| 26 | break; |
| 27 | case "en-GB": |
| 28 | ret = "U.K. English"; |
| 29 | break; |
| 30 | case "en-US": |
| 31 | ret = "U.S. English"; |
| 32 | break; |
| 33 | case "eo-xsistemo": |
| 34 | ret = "Esperanto x-system";; |
| 35 | break; |
| 36 | case "gez": |
| 37 | ret = "Ethiopic"; |
| 38 | break; |
Bert Frees | 708c67d | 2021-02-15 17:46:11 +0100 | [diff] [blame] | 39 | case "kmr": |
| 40 | ret = "Northern Kurdish"; |
| 41 | break; |
Bert Frees | 84f9dbf | 2017-11-12 22:38:01 +0100 | [diff] [blame] | 42 | case "mun": |
| 43 | ret = "Munda"; |
| 44 | break; |
| 45 | case "no": |
| 46 | ret = "Norwegian"; |
| 47 | break; |
| 48 | case "or": |
| 49 | ret = "Oriya"; |
| 50 | break; |
Bert Frees | 74f6e0d | 2021-04-26 10:31:56 +0200 | [diff] [blame] | 51 | case "sah": |
| 52 | ret = "Yakut"; // not "Sakha" |
| 53 | break; |
Bert Frees | 062c67b | 2021-06-07 14:10:19 +0200 | [diff] [blame] | 54 | case "st": |
| 55 | ret = "Sesotho"; // South Africans say "Sesotho", not "Sotho" or "Southern Sotho" |
| 56 | break; |
| 57 | case "tn": |
| 58 | ret = "Setswana"; // South Africans say "Setswana", not "Tswana" |
| 59 | break; |
| 60 | case "xh": |
| 61 | ret = "isiXhosa"; // South Africans say "isiXhosa", not "Xhosa" |
| 62 | break; |
Bert Frees | f1622fd | 2021-08-30 11:23:40 +0200 | [diff] [blame] | 63 | case "ve": |
| 64 | ret = "Tshivenda"; // South Africans say "Tshivenda", not "Venda" |
| 65 | break; |
Bert Frees | 062c67b | 2021-06-07 14:10:19 +0200 | [diff] [blame] | 66 | case "zu": |
| 67 | ret = "isiZulu"; // South Africans say "isiZulu", not "Zulu" |
| 68 | break; |
Bert Frees | 84f9dbf | 2017-11-12 22:38:01 +0100 | [diff] [blame] | 69 | default: |
| 70 | var namer display.Namer |
| 71 | namer = display.English.Languages() |
| 72 | ret = namer.Name(language.MustParse(lang)) |
| 73 | } |
| 74 | return C.CString(ret) |
| 75 | } |
| 76 | |
| 77 | //export NativeLanguage |
| 78 | func NativeLanguage(lang_c *C.char) *C.char { |
| 79 | var lang string |
| 80 | var ret string |
| 81 | var namer display.Namer |
| 82 | lang = C.GoString(lang_c) |
| 83 | namer = display.Self |
| 84 | ret = namer.Name(language.MustParse(lang)) |
| 85 | return C.CString(ret) |
| 86 | } |
| 87 | |
| 88 | // main function required for interfacing with C |
| 89 | func main() {} |