diff --git a/src/lang/afrikaans.txt b/src/lang/afrikaans.txt index afcb6234d2..f6d4f8b11f 100644 --- a/src/lang/afrikaans.txt +++ b/src/lang/afrikaans.txt @@ -2,6 +2,7 @@ ##ownname Jaybee ##isocode af_ZA ##winlangid 0x0436 +##grflangid 0x1b ##plural 0 ##gender male diff --git a/src/lang/arabic_egypt.txt b/src/lang/arabic_egypt.txt index 8f23d5cdb6..45c2997afd 100644 --- a/src/lang/arabic_egypt.txt +++ b/src/lang/arabic_egypt.txt @@ -2,6 +2,7 @@ ##ownname Arabic (Egypt) ##isocode ar_EG ##winlangid 0x0c01 +##grflangid 0x14 ##plural 1 ##textdir rtl diff --git a/src/lang/brazilian_portuguese.txt b/src/lang/brazilian_portuguese.txt index 0d06cf09d5..e73c4c77bd 100644 --- a/src/lang/brazilian_portuguese.txt +++ b/src/lang/brazilian_portuguese.txt @@ -2,6 +2,7 @@ ##ownname Português (BR) ##isocode pt_BR ##winlangid 0x0416 +##grflangid 0x37 ##plural 2 ##gender m f diff --git a/src/lang/bulgarian.txt b/src/lang/bulgarian.txt index 750e4a96b0..b5706c59b9 100644 --- a/src/lang/bulgarian.txt +++ b/src/lang/bulgarian.txt @@ -2,6 +2,7 @@ ##ownname Български ##isocode bg_BG ##winlangid 0x0402 +##grflangid 0x18 ##plural 0 ##case m f n p ##gender m f n p diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt index f854a5fef0..91c0a68dd7 100644 --- a/src/lang/catalan.txt +++ b/src/lang/catalan.txt @@ -2,6 +2,7 @@ ##ownname Català ##isocode ca_ES ##winlangid 0x0403 +##grflangid 0x22 ##plural 0 # diff --git a/src/lang/croatian.txt b/src/lang/croatian.txt index dac0b623da..c489d0e180 100644 --- a/src/lang/croatian.txt +++ b/src/lang/croatian.txt @@ -2,6 +2,7 @@ ##ownname Hrvatski ##isocode hr_HR ##winlangid 0x041a +##grflangid 0x38 ##plural 6 ##case nom gen dat aku vok lok ins ##gender male female middle diff --git a/src/lang/czech.txt b/src/lang/czech.txt index 423a3ae742..92cf62ff75 100644 --- a/src/lang/czech.txt +++ b/src/lang/czech.txt @@ -2,6 +2,7 @@ ##ownname Čeština ##isocode cs_CZ ##winlangid 0x0405 +##grflangid 0x15 ##plural 6 ##case nom gen dat acc voc loc ins big small ##gender m f n diff --git a/src/lang/danish.txt b/src/lang/danish.txt index 8531c92a77..4c7992a1c1 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -2,6 +2,7 @@ ##ownname Dansk ##isocode da_DA ##winlangid 0x0406 +##grflangid 0x2d ##plural 0 # diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt index 6a698ea8bf..6628732d7f 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -2,6 +2,7 @@ ##ownname Nederlands ##isocode nl_NL ##winlangid 0x0413 +##grflangid 0x1f ##plural 0 # diff --git a/src/lang/english.txt b/src/lang/english.txt index 0519d74fe9..5889648602 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -2,6 +2,7 @@ ##ownname English (UK) ##isocode en_GB ##winlangid 0x0809 +##grflangid 0x01 ##plural 0 # diff --git a/src/lang/english_US.txt b/src/lang/english_US.txt index 06aab3df4b..e6c7774add 100644 --- a/src/lang/english_US.txt +++ b/src/lang/english_US.txt @@ -2,6 +2,7 @@ ##ownname English (US) ##isocode en_US ##winlangid 0x0409 +##grflangid 0x00 ##plural 0 # diff --git a/src/lang/esperanto.txt b/src/lang/esperanto.txt index 58d6520e26..774e89b9bb 100644 --- a/src/lang/esperanto.txt +++ b/src/lang/esperanto.txt @@ -2,6 +2,7 @@ ##ownname Esperanto ##isocode eo_EO ##winlangid 0x0000 +##grflangid 0x05 ##plural 0 ##case n diff --git a/src/lang/estonian.txt b/src/lang/estonian.txt index 21b37f27b5..87017d8c3a 100644 --- a/src/lang/estonian.txt +++ b/src/lang/estonian.txt @@ -2,6 +2,7 @@ ##ownname Eesti keel ##isocode et_ET ##winlangid 0x0425 +##grflangid 0x34 ##plural 0 ##case g in diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index 2f6f14f492..9a03800246 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -2,6 +2,7 @@ ##ownname Suomi ##isocode fi_FI ##winlangid 0x040b +##grflangid 0x35 ##plural 0 # diff --git a/src/lang/french.txt b/src/lang/french.txt index 2a811464ff..18b231a5fc 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -2,6 +2,7 @@ ##ownname Français ##isocode fr_FR ##winlangid 0x040c +##grflangid 0x03 ##plural 2 ##gender m m2 f diff --git a/src/lang/galician.txt b/src/lang/galician.txt index e65b3e22b9..2b7c9df4e4 100644 --- a/src/lang/galician.txt +++ b/src/lang/galician.txt @@ -2,6 +2,7 @@ ##ownname Galego ##isocode gl_ES ##winlangid 0x0456 +##grflangid 0x31 ##plural 0 ##gender m f n diff --git a/src/lang/german.txt b/src/lang/german.txt index b904e09037..6120dc1a39 100644 --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -2,6 +2,7 @@ ##ownname Deutsch ##isocode de_DE ##winlangid 0x0407 +##grflangid 0x02 ##plural 0 ##gender m w n p diff --git a/src/lang/hebrew.txt b/src/lang/hebrew.txt index 30a5fc29d6..3022a4091e 100644 --- a/src/lang/hebrew.txt +++ b/src/lang/hebrew.txt @@ -2,6 +2,7 @@ ##ownname עברית ##isocode he_IL ##winlangid 0x040d +##grflangid 0x61 ##plural 0 ##gender m f ##textdir rtl diff --git a/src/lang/hungarian.txt b/src/lang/hungarian.txt index f657f4e766..0d9847c995 100644 --- a/src/lang/hungarian.txt +++ b/src/lang/hungarian.txt @@ -2,6 +2,7 @@ ##ownname Magyar ##isocode hu_HU ##winlangid 0x040e +##grflangid 0x24 ##plural 2 ##case t ba diff --git a/src/lang/icelandic.txt b/src/lang/icelandic.txt index 77526c8853..3a2e9b2a78 100644 --- a/src/lang/icelandic.txt +++ b/src/lang/icelandic.txt @@ -2,6 +2,7 @@ ##ownname Íslenska ##isocode is_IS ##winlangid 0x040f +##grflangid 0x29 ##plural 0 ##gender karlkyn kvenkyn hvorugkyn diff --git a/src/lang/indonesian.txt b/src/lang/indonesian.txt index 1f8f069e7d..a169a6ac46 100644 --- a/src/lang/indonesian.txt +++ b/src/lang/indonesian.txt @@ -2,6 +2,7 @@ ##ownname Bahasa Indonesia ##isocode id_ID ##winlangid 0x0421 +##grflangid 0x5a ##plural 1 # diff --git a/src/lang/italian.txt b/src/lang/italian.txt index 4867ad3369..0b8990fe0f 100644 --- a/src/lang/italian.txt +++ b/src/lang/italian.txt @@ -2,6 +2,7 @@ ##ownname Italiano ##isocode it_IT ##winlangid 0x0410 +##grflangid 0x27 ##plural 0 ##case ms mp fs fp ##gender m f diff --git a/src/lang/japanese.txt b/src/lang/japanese.txt index d35ab19e53..61cf845b39 100644 --- a/src/lang/japanese.txt +++ b/src/lang/japanese.txt @@ -2,6 +2,7 @@ ##ownname 日本語 ##isocode ja_JP ##winlangid 0x0411 +##grflangid 0x39 ##plural 1 # diff --git a/src/lang/korean.txt b/src/lang/korean.txt index edb06605ac..208310c2e5 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -2,6 +2,7 @@ ##ownname 한국어 ##isocode ko_KR ##winlangid 0x0412 +##grflangid 0x3a ##plural 1 ##gender m f diff --git a/src/lang/latvian.txt b/src/lang/latvian.txt index caffb12a45..c45277bfa7 100644 --- a/src/lang/latvian.txt +++ b/src/lang/latvian.txt @@ -2,6 +2,7 @@ ##ownname Latviešu ##isocode lv_LV ##winlangid 0x0426 +##grflangid 0x2a ##plural 3 ##case kas ##gender m f diff --git a/src/lang/lithuanian.txt b/src/lang/lithuanian.txt index ab412828e9..5f4d1dd2ff 100644 --- a/src/lang/lithuanian.txt +++ b/src/lang/lithuanian.txt @@ -2,6 +2,7 @@ ##ownname Lietuvių ##isocode lt_LT ##winlangid 0x0427 +##grflangid 0x2b ##plural 5 ##case kas ko kam ka kuo kur kreip ##gender vyr mot diff --git a/src/lang/luxembourgish.txt b/src/lang/luxembourgish.txt index 441cd30445..d647d0efa5 100644 --- a/src/lang/luxembourgish.txt +++ b/src/lang/luxembourgish.txt @@ -2,6 +2,7 @@ ##ownname Luxembourgish ##isocode lb_LU ##winlangid 0x046e +##grflangid 0x23 ##plural 0 # diff --git a/src/lang/norwegian_bokmal.txt b/src/lang/norwegian_bokmal.txt index cdd2795aa8..b6cfd4e394 100644 --- a/src/lang/norwegian_bokmal.txt +++ b/src/lang/norwegian_bokmal.txt @@ -2,6 +2,7 @@ ##ownname Norsk (bokmål) ##isocode nb_NO ##winlangid 0x0414 +##grflangid 0x2f ##plural 0 # diff --git a/src/lang/norwegian_nynorsk.txt b/src/lang/norwegian_nynorsk.txt index be6784984f..532e6dcf50 100644 --- a/src/lang/norwegian_nynorsk.txt +++ b/src/lang/norwegian_nynorsk.txt @@ -2,6 +2,7 @@ ##ownname Norsk, Nynorsk ##isocode nn_NO ##winlangid 0x0814 +##grflangid 0x0e ##plural 0 ##gender masculine feminine neuter diff --git a/src/lang/origveh.txt b/src/lang/origveh.txt index d1cc58ee30..f10e21f2a2 100644 --- a/src/lang/origveh.txt +++ b/src/lang/origveh.txt @@ -2,6 +2,7 @@ ##ownname Original vehicle names (ENG) ##isocode xx_OV ##winlangid 0x0000 +##grflangid 0x01 ##id 0x8000 STR_8000_KIRBY_PAUL_TANK_STEAM :Collett Pannier Tank (Steam) diff --git a/src/lang/piglatin.txt b/src/lang/piglatin.txt index 48b3135607..8826024835 100644 --- a/src/lang/piglatin.txt +++ b/src/lang/piglatin.txt @@ -2,6 +2,7 @@ ##ownname Igpay atinlay ##isocode xx_PL ##winlangid 0x0000 +##grflangid 0x01 ##plural 0 # diff --git a/src/lang/polish.txt b/src/lang/polish.txt index 76c719fb04..382cc6c8c6 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt @@ -2,6 +2,7 @@ ##ownname Polski ##isocode pl_PL ##winlangid 0x0415 +##grflangid 0x30 ##plural 7 ##case d c b n m w ##gender m f n diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index b4d508d7c7..5db9ca563c 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -2,6 +2,7 @@ ##ownname Português ##isocode pt_PT ##winlangid 0x0816 +##grflangid 0x36 ##plural 0 # diff --git a/src/lang/romanian.txt b/src/lang/romanian.txt index f13633d9b8..39c9ad8bfa 100644 --- a/src/lang/romanian.txt +++ b/src/lang/romanian.txt @@ -2,6 +2,7 @@ ##ownname Românã ##isocode ro_RO ##winlangid 0x0418 +##grflangid 0x28 ##plural 0 # diff --git a/src/lang/russian.txt b/src/lang/russian.txt index b1bc488b1b..7875bde7c5 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -2,6 +2,7 @@ ##ownname Русский ##isocode ru_RU ##winlangid 0x0419 +##grflangid 0x07 ##plural 6 ##case m f n p ##gender m f n p diff --git a/src/lang/simplified_chinese.txt b/src/lang/simplified_chinese.txt index 81b17c2b0e..6f8b27b1b4 100644 --- a/src/lang/simplified_chinese.txt +++ b/src/lang/simplified_chinese.txt @@ -2,6 +2,7 @@ ##ownname 简体中文 ##isocode zh_CN ##winlangid 0x0804 +##grflangid 0x56 ##plural 1 # diff --git a/src/lang/slovak.txt b/src/lang/slovak.txt index 1d1a8eb92c..91855661f7 100644 --- a/src/lang/slovak.txt +++ b/src/lang/slovak.txt @@ -2,6 +2,7 @@ ##ownname Slovensky ##isocode sk_SK ##winlangid 0x041b +##grflangid 0x16 ##plural 6 ##case g ##gender m z s diff --git a/src/lang/slovenian.txt b/src/lang/slovenian.txt index 1bbbb64890..89866cd1f6 100644 --- a/src/lang/slovenian.txt +++ b/src/lang/slovenian.txt @@ -2,6 +2,7 @@ ##ownname Slovenščina ##isocode sl_SL ##winlangid 0x0424 +##grflangid 0x2c ##plural 8 ##case r d t diff --git a/src/lang/spanish.txt b/src/lang/spanish.txt index fb9de9519f..e47c5c17e4 100644 --- a/src/lang/spanish.txt +++ b/src/lang/spanish.txt @@ -2,6 +2,7 @@ ##ownname Español (ES) ##isocode es_ES ##winlangid 0x0c0a +##grflangid 0x04 ##plural 0 ##gender masculino femenino diff --git a/src/lang/swedish.txt b/src/lang/swedish.txt index 953ead5466..8dcdb14d45 100644 --- a/src/lang/swedish.txt +++ b/src/lang/swedish.txt @@ -2,6 +2,7 @@ ##ownname Svenska ##isocode sv_SE ##winlangid 0x081d +##grflangid 0x2e ##plural 0 # diff --git a/src/lang/traditional_chinese.txt b/src/lang/traditional_chinese.txt index 212e0e13a5..960f60c374 100644 --- a/src/lang/traditional_chinese.txt +++ b/src/lang/traditional_chinese.txt @@ -2,6 +2,7 @@ ##ownname 繁體中文 ##isocode zh_TW ##winlangid 0x0404 +##grflangid 0x0c ##plural 1 # diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt index 4ab2fcedf1..f3416d8c25 100644 --- a/src/lang/turkish.txt +++ b/src/lang/turkish.txt @@ -2,6 +2,7 @@ ##ownname Türkçe ##isocode tr_TR ##winlangid 0x041f +##grflangid 0x3e ##plural 1 # diff --git a/src/lang/ukrainian.txt b/src/lang/ukrainian.txt index 24122e90d7..c3b8af3080 100644 --- a/src/lang/ukrainian.txt +++ b/src/lang/ukrainian.txt @@ -2,6 +2,7 @@ ##ownname Українська ##isocode uk_UA ##winlangid 0x0422 +##grflangid 0x33 ##plural 6 ##gender m f s mn ##case r d z diff --git a/src/lang/unfinished/frisian.txt b/src/lang/unfinished/frisian.txt index 6102c6f175..691a40242e 100644 --- a/src/lang/unfinished/frisian.txt +++ b/src/lang/unfinished/frisian.txt @@ -2,6 +2,7 @@ ##ownname Frysk ##isocode fy_NL ##winlangid 0x0462 +##grflangid 0x32 ##plural 0 # diff --git a/src/lang/unfinished/greek.txt b/src/lang/unfinished/greek.txt index d0e5b73ac3..c3c22a4af9 100644 --- a/src/lang/unfinished/greek.txt +++ b/src/lang/unfinished/greek.txt @@ -2,6 +2,7 @@ ##ownname Ελληνικά ##isocode el_GR ##winlangid 0x0408 +##grflangid 0x1e ##plural 0 ##gender m f n diff --git a/src/lang/unfinished/ido.txt b/src/lang/unfinished/ido.txt index 8eb3e276ca..a67f122932 100644 --- a/src/lang/unfinished/ido.txt +++ b/src/lang/unfinished/ido.txt @@ -1,7 +1,8 @@ ##name Ido ##ownname Ido -##isocode io_XX +##isocode io_IO ##winlangid 0x0000 +##grflangid 0x06 ##plural 0 # diff --git a/src/lang/unfinished/macedonian.txt b/src/lang/unfinished/macedonian.txt index f98f28576d..c063c1e78a 100644 --- a/src/lang/unfinished/macedonian.txt +++ b/src/lang/unfinished/macedonian.txt @@ -2,6 +2,7 @@ ##ownname Македонски ##isocode mk_MK ##winlangid 0x042f +##grflangid 0x26 ##plural 0 # diff --git a/src/lang/unfinished/malay.txt b/src/lang/unfinished/malay.txt index ae46da2a8b..5355850d96 100644 --- a/src/lang/unfinished/malay.txt +++ b/src/lang/unfinished/malay.txt @@ -2,6 +2,7 @@ ##ownname Melayu ##isocode ms_MY ##winlangid 0x043a +##grflangid 0x3c ##plural 0 # diff --git a/src/lang/unfinished/persian.txt b/src/lang/unfinished/persian.txt index af917b2dbc..3eab78ce46 100644 --- a/src/lang/unfinished/persian.txt +++ b/src/lang/unfinished/persian.txt @@ -2,6 +2,7 @@ ##ownname فارسی ##isocode fa_IR ##winlangid 0x0429 +##grflangid 0x62 ##plural 0 ##textdir rtl diff --git a/src/lang/unfinished/serbian.txt b/src/lang/unfinished/serbian.txt index 87350c3a6d..5d9bca6fd9 100644 --- a/src/lang/unfinished/serbian.txt +++ b/src/lang/unfinished/serbian.txt @@ -1,7 +1,8 @@ ##name Serbian ##ownname Srpski -##isocode srp +##isocode sr_RS ##winlangid 0x7c1a +##grflangid 0x0d ##plural 6 ##case nom big gen dat aku vok lok ins ##gender muški ženski srednji diff --git a/src/lang/unfinished/thai.txt b/src/lang/unfinished/thai.txt index c8a828bbe5..7eb2f3b980 100644 --- a/src/lang/unfinished/thai.txt +++ b/src/lang/unfinished/thai.txt @@ -2,6 +2,7 @@ ##ownname Thai ##isocode th_TH ##winlangid 0x041e +##grflangid 0x42 ##plural 1 ##textdir ltr diff --git a/src/lang/unfinished/urdu.txt b/src/lang/unfinished/urdu.txt index 44d8960597..4116eb06d5 100644 --- a/src/lang/unfinished/urdu.txt +++ b/src/lang/unfinished/urdu.txt @@ -2,6 +2,7 @@ ##ownname Urdu ##isocode ur_PK ##winlangid 0x0420 +##grflangid 0x5c ##plural 0 ##textdir rtl ##gender m f diff --git a/src/lang/welsh.txt b/src/lang/welsh.txt index 409ceaccdd..771dab19c0 100644 --- a/src/lang/welsh.txt +++ b/src/lang/welsh.txt @@ -2,6 +2,7 @@ ##ownname Cymraeg ##isocode cy_GB ##winlangid 0x0452 +##grflangid 0x0f ##plural 0 # diff --git a/src/newgrf_text.cpp b/src/newgrf_text.cpp index d630b01dc0..6c0507d3ab 100644 --- a/src/newgrf_text.cpp +++ b/src/newgrf_text.cpp @@ -27,7 +27,7 @@ * the grf base will not be used in order to find the string, but rather for * jumping from standard langID scheme to the new one. */ -enum grf_base_languages { +enum GRFBaseLanguages { GRFLB_AMERICAN = 0x01, GRFLB_ENGLISH = 0x02, GRFLB_GERMAN = 0x04, @@ -36,101 +36,15 @@ enum grf_base_languages { GRFLB_GENERIC = 0x80, }; -enum grf_extended_languages { +enum GRFExtendedLanguages { GRFLX_AMERICAN = 0x00, GRFLX_ENGLISH = 0x01, GRFLX_GERMAN = 0x02, GRFLX_FRENCH = 0x03, GRFLX_SPANISH = 0x04, - GRFLX_ESPERANTO = 0x05, - GRFLX_RUSSIAN = 0x07, - GRFLX_CZECH = 0x15, - GRFLX_SLOVAK = 0x16, - GRFLX_BULGARIAN = 0x18, - GRFLX_AFRIKAANS = 0x1B, - GRFLX_GREEK = 0x1E, - GRFLX_DUTCH = 0x1F, - GRFLX_CATALAN = 0x22, - GRFLX_HUNGARIAN = 0x24, - GRFLX_ITALIAN = 0x27, - GRFLX_ROMANIAN = 0x28, - GRFLX_ICELANDIC = 0x29, - GRFLX_LATVIAN = 0x2A, - GRFLX_LITHUANIAN = 0x2B, - GRFLX_SLOVENIAN = 0x2C, - GRFLX_DANISH = 0x2D, - GRFLX_SWEDISH = 0x2E, - GRFLX_NORWEGIAN = 0x2F, - GRFLX_POLISH = 0x30, - GRFLX_GALICIAN = 0x31, - GRFLX_FRISIAN = 0x32, - GRFLX_UKRAINIAN = 0x33, - GRFLX_ESTONIAN = 0x34, - GRFLX_FINNISH = 0x35, - GRFLX_PORTUGUESE = 0x36, - GRFLX_BRAZILIAN = 0x37, - GRFLX_CROATIAN = 0x38, - GRFLX_JAPANESE = 0x39, - GRFLX_KOREAN = 0x3A, - GRFLX_TURKISH = 0x3E, GRFLX_UNSPECIFIED = 0x7F, }; - -struct iso_grf { - char code[6]; - byte grfLangID; -}; - -/** - * ISO code VS NewGrf langID conversion array. - * This array is used in two ways: - * 1-its ISO part is matching OpenTTD dynamic language id - * with newgrf bit positionning language id - * 2-its shift part is used to know what is the shift to - * watch for when inserting new strings, hence analysing newgrf langid - */ -const iso_grf iso_codes[] = { - {"en_US", GRFLX_AMERICAN}, - {"en_GB", GRFLX_ENGLISH}, - {"de_DE", GRFLX_GERMAN}, - {"fr_FR", GRFLX_FRENCH}, - {"es_ES", GRFLX_SPANISH}, - {"af_ZA", GRFLX_AFRIKAANS}, - {"hr_HR", GRFLX_CROATIAN}, - {"cs_CZ", GRFLX_CZECH}, - {"ca_ES", GRFLX_CATALAN}, - {"da_DA", GRFLX_DANISH}, - {"nl_NL", GRFLX_DUTCH}, - {"et_ET", GRFLX_ESTONIAN}, - {"fi_FI", GRFLX_FINNISH}, - {"fy_NL", GRFLX_FRISIAN}, - {"gl_ES", GRFLX_GALICIAN}, - {"el_GR", GRFLX_GREEK}, - {"hu_HU", GRFLX_HUNGARIAN}, - {"is_IS", GRFLX_ICELANDIC}, - {"it_IT", GRFLX_ITALIAN}, - {"lv_LV", GRFLX_LATVIAN}, - {"lt_LT", GRFLX_LITHUANIAN}, - {"nb_NO", GRFLX_NORWEGIAN}, - {"pl_PL", GRFLX_POLISH}, - {"pt_PT", GRFLX_PORTUGUESE}, - {"pt_BR", GRFLX_BRAZILIAN}, - {"ro_RO", GRFLX_ROMANIAN}, - {"ru_RU", GRFLX_RUSSIAN}, - {"sk_SK", GRFLX_SLOVAK}, - {"sl_SL", GRFLX_SLOVENIAN}, - {"sv_SE", GRFLX_SWEDISH}, - {"tr_TR", GRFLX_TURKISH}, - {"uk_UA", GRFLX_UKRAINIAN}, - {"eo_EO", GRFLX_ESPERANTO}, - {"bg_BG", GRFLX_BULGARIAN}, - {"ja_JP", GRFLX_JAPANESE}, - {"ko_KR", GRFLX_KOREAN}, - {"gen", GRFLB_GENERIC} ///< this is not iso code, but there has to be something... -}; - - /** * Element of the linked list. * Each of those elements represent the string, @@ -453,26 +367,13 @@ const char *GetGRFStringPtr(uint16 stringid) * Equivalence Setter function between game and newgrf langID. * This function will adjust _currentLangID as to what is the LangID * of the current language set by the user. - * The array iso_codes will be used to find that match. - * If not found, it will have to be standard english * This function is called after the user changed language, * from strings.cpp:ReadLanguagePack - * @param iso_name iso code of current selection + * @param langauge_id iso code of current selection */ -void SetCurrentGrfLangID(const char *iso_name) +void SetCurrentGrfLangID(byte language_id) { - /* Use English by default, if we can't match up the iso_code. */ - byte ret = GRFLX_ENGLISH; - byte i; - - for (i=0; i < lengthof(iso_codes); i++) { - if (strncmp(iso_codes[i].code, iso_name, strlen(iso_codes[i].code)) == 0) { - /* We found a match, so let's use it. */ - ret = iso_codes[i].grfLangID; - break; - } - } - _currentLangID = ret; + _currentLangID = language_id; } bool CheckGrfLangID(byte lang_id, byte grf_version) diff --git a/src/newgrf_text.h b/src/newgrf_text.h index 1b72a8c94b..01c6e8c2f5 100644 --- a/src/newgrf_text.h +++ b/src/newgrf_text.h @@ -9,7 +9,7 @@ StringID AddGRFString(uint32 grfid, uint16 stringid, byte langid, bool new_schem StringID GetGRFStringID(uint32 grfid, uint16 stringid); const char *GetGRFStringPtr(uint16 stringid); void CleanUpStrings(); -void SetCurrentGrfLangID(const char *iso_name); +void SetCurrentGrfLangID(byte language_id); char *TranslateTTDPatchCodes(uint32 grfid, const char *str); bool CheckGrfLangID(byte lang_id, byte grf_version); diff --git a/src/strgen/strgen.cpp b/src/strgen/strgen.cpp index 02de3c076a..0cb2d02ebd 100644 --- a/src/strgen/strgen.cpp +++ b/src/strgen/strgen.cpp @@ -88,6 +88,7 @@ static char _lang_name[32], _lang_ownname[32], _lang_isocode[16]; static byte _lang_pluralform; static byte _lang_textdir; static uint16 _lang_winlangid; +static uint8 _lang_newgrflangid; #define MAX_NUM_GENDER 8 static char _genders[MAX_NUM_GENDER][16]; static uint _numgenders; @@ -663,12 +664,19 @@ static void HandlePragma(char *str) error("Invalid textdir %s", str + 8); } } else if (!memcmp(str, "winlangid ", 10)) { - char *buf = str + 10; + const char *buf = str + 10; long langid = strtol(buf, NULL, 16); if (langid > UINT16_MAX || langid < 0) { error("Invalid winlangid %s", buf); } _lang_winlangid = (uint16)langid; + } else if (!memcmp(str, "grflangid ", 10)) { + const char *buf = str + 10; + long langid = strtol(buf, NULL, 16); + if (langid >= 0x7F || langid < 0) { + error("Invalid grflangid %s", buf); + } + _lang_newgrflangid = (uint8)langid; } else if (!memcmp(str, "gender ", 7)) { char *buf = str + 7; @@ -933,6 +941,7 @@ static void ParseFile(const char *file, bool english) _lang_name[0] = _lang_ownname[0] = _lang_isocode[0] = '\0'; _lang_textdir = TD_LTR; _lang_winlangid = 0x0000; // neutral language code + _lang_newgrflangid = 0; // standard english // TODO:!! We can't reset the cases. In case the translated strings // derive some strings from english.... @@ -1183,6 +1192,7 @@ static void WriteLangfile(const char *filename) hdr.plural_form = _lang_pluralform; hdr.text_dir = _lang_textdir; hdr.winlangid = TO_LE16(_lang_winlangid); + hdr.newgrflangid = _lang_newgrflangid; strcpy(hdr.name, _lang_name); strcpy(hdr.own_name, _lang_ownname); strcpy(hdr.isocode, _lang_isocode); diff --git a/src/strgen/strgen.h b/src/strgen/strgen.h index 93253259fb..3bf104f8bd 100644 --- a/src/strgen/strgen.h +++ b/src/strgen/strgen.h @@ -23,7 +23,8 @@ struct LanguagePackHeader { * http://msdn.microsoft.com/en-us/library/ms776294.aspx */ uint16 winlangid; // windows language id - /* byte pad[0]; // pad header to be a multiple of 4 */ + uint8 newgrflangid; // newgrf language id + byte pad[3]; // pad header to be a multiple of 4 }; assert_compile(sizeof(LanguagePackHeader) % 4 == 0); diff --git a/src/strings.cpp b/src/strings.cpp index 0d421a9e5a..93fdac5cb5 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -1315,7 +1315,7 @@ bool ReadLanguagePack(int lang_index) _dynlang.curr = lang_index; _dynlang.text_dir = (TextDirection)lang_pack->text_dir; - SetCurrentGrfLangID(_langpack->isocode); + SetCurrentGrfLangID(_langpack->newgrflangid); SortNetworkLanguages(); return true; }