Mercurial > hg > openttd
changeset 11346:1b8ff09217a8 draft
(svn r15696) -Codechange: move the NewGRF language ID into the language file instead of maintaining a table in the code.
line wrap: on
line diff
--- 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
--- 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
--- 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
--- 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
--- 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 #
--- 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
--- 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
--- 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 #
--- 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 #
--- 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 #
--- 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 #
--- 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
--- 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
--- 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 #
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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 #
--- 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
--- a/src/lang/japanese.txt +++ b/src/lang/japanese.txt @@ -2,6 +2,7 @@ ##ownname 日本語 ##isocode ja_JP ##winlangid 0x0411 +##grflangid 0x39 ##plural 1 #
--- 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
--- 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
--- 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
--- 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 #
--- 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 #
--- 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
--- 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)
--- 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 #
--- 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
--- 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 #
--- 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 #
--- 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
--- 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 #
--- 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
--- 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
--- 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
--- 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 #
--- 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 #
--- 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 #
--- 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
--- 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 #
--- 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
--- 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 #
--- 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 #
--- 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 #
--- 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
--- 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
--- 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
--- 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
--- 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 #
--- 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 @@ 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 @@ * 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)
--- a/src/newgrf_text.h +++ b/src/newgrf_text.h @@ -9,7 +9,7 @@ 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);
--- a/src/strgen/strgen.cpp +++ b/src/strgen/strgen.cpp @@ -88,6 +88,7 @@ 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 @@ 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 @@ _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 @@ 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);
--- a/src/strgen/strgen.h +++ b/src/strgen/strgen.h @@ -23,7 +23,8 @@ * 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);