summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lang/afrikaans.txt1
-rw-r--r--src/lang/arabic_egypt.txt1
-rw-r--r--src/lang/brazilian_portuguese.txt1
-rw-r--r--src/lang/bulgarian.txt1
-rw-r--r--src/lang/catalan.txt1
-rw-r--r--src/lang/croatian.txt1
-rw-r--r--src/lang/czech.txt1
-rw-r--r--src/lang/danish.txt1
-rw-r--r--src/lang/dutch.txt1
-rw-r--r--src/lang/english.txt1
-rw-r--r--src/lang/english_US.txt1
-rw-r--r--src/lang/esperanto.txt1
-rw-r--r--src/lang/estonian.txt1
-rw-r--r--src/lang/finnish.txt1
-rw-r--r--src/lang/french.txt1
-rw-r--r--src/lang/galician.txt1
-rw-r--r--src/lang/german.txt1
-rw-r--r--src/lang/hebrew.txt1
-rw-r--r--src/lang/hungarian.txt1
-rw-r--r--src/lang/icelandic.txt1
-rw-r--r--src/lang/indonesian.txt1
-rw-r--r--src/lang/italian.txt1
-rw-r--r--src/lang/japanese.txt1
-rw-r--r--src/lang/korean.txt1
-rw-r--r--src/lang/latvian.txt1
-rw-r--r--src/lang/lithuanian.txt1
-rw-r--r--src/lang/luxembourgish.txt1
-rw-r--r--src/lang/norwegian_bokmal.txt1
-rw-r--r--src/lang/norwegian_nynorsk.txt1
-rw-r--r--src/lang/origveh.txt1
-rw-r--r--src/lang/piglatin.txt1
-rw-r--r--src/lang/polish.txt1
-rw-r--r--src/lang/portuguese.txt1
-rw-r--r--src/lang/romanian.txt1
-rw-r--r--src/lang/russian.txt1
-rw-r--r--src/lang/simplified_chinese.txt1
-rw-r--r--src/lang/slovak.txt1
-rw-r--r--src/lang/slovenian.txt1
-rw-r--r--src/lang/spanish.txt1
-rw-r--r--src/lang/swedish.txt1
-rw-r--r--src/lang/traditional_chinese.txt1
-rw-r--r--src/lang/turkish.txt1
-rw-r--r--src/lang/ukrainian.txt1
-rw-r--r--src/lang/unfinished/frisian.txt1
-rw-r--r--src/lang/unfinished/greek.txt1
-rw-r--r--src/lang/unfinished/ido.txt3
-rw-r--r--src/lang/unfinished/macedonian.txt1
-rw-r--r--src/lang/unfinished/malay.txt1
-rw-r--r--src/lang/unfinished/persian.txt1
-rw-r--r--src/lang/unfinished/serbian.txt3
-rw-r--r--src/lang/unfinished/thai.txt1
-rw-r--r--src/lang/unfinished/urdu.txt1
-rw-r--r--src/lang/welsh.txt1
-rw-r--r--src/newgrf_text.cpp109
-rw-r--r--src/newgrf_text.h2
-rw-r--r--src/strgen/strgen.cpp12
-rw-r--r--src/strgen/strgen.h3
-rw-r--r--src/strings.cpp2
58 files changed, 75 insertions, 110 deletions
diff --git a/src/lang/afrikaans.txt b/src/lang/afrikaans.txt
index afcb6234d..f6d4f8b11 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 8f23d5cdb..45c2997af 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 0d06cf09d..e73c4c77b 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 750e4a96b..b5706c59b 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 f854a5fef..91c0a68dd 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 dac0b623d..c489d0e18 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 423a3ae74..92cf62ff7 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 8531c92a7..4c7992a1c 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 6a698ea8b..6628732d7 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 0519d74fe..588964860 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 06aab3df4..e6c7774ad 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 58d6520e2..774e89b9b 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 21b37f27b..87017d8c3 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 2f6f14f49..9a0380024 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 2a811464f..18b231a5f 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 e65b3e22b..2b7c9df4e 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 b904e0903..6120dc1a3 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 30a5fc29d..3022a4091 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 f657f4e76..0d9847c99 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 77526c885..3a2e9b2a7 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 1f8f069e7..a169a6ac4 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 4867ad336..0b8990fe0 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 d35ab19e5..61cf845b3 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 edb06605a..208310c2e 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 caffb12a4..c45277bfa 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 ab412828e..5f4d1dd2f 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 441cd3044..d647d0efa 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 cdd2795aa..b6cfd4e39 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 be6784984..532e6dcf5 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 d1cc58ee3..f10e21f2a 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 48b313560..882602483 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 76c719fb0..382cc6c8c 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 b4d508d7c..5db9ca563 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 f13633d9b..39c9ad8bf 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 b1bc488b1..7875bde7c 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 81b17c2b0..6f8b27b1b 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 1d1a8eb92..91855661f 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 1bbbb6489..89866cd1f 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 fb9de9519..e47c5c17e 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 953ead546..8dcdb14d4 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 212e0e13a..960f60c37 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 4ab2fcedf..f3416d8c2 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 24122e90d..c3b8af308 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 6102c6f17..691a40242 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 d0e5b73ac..c3c22a4af 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 8eb3e276c..a67f12293 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 f98f28576..c063c1e78 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 ae46da2a8..5355850d9 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 af917b2db..3eab78ce4 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 87350c3a6..5d9bca6fd 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 c8a828bbe..7eb2f3b98 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 44d896059..4116eb06d 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 409ceaccd..771dab19c 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 d630b01dc..6c0507d3a 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 1b72a8c94..01c6e8c2f 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 02de3c076..0cb2d02eb 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 93253259f..3bf104f8b 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 0d421a9e5..93fdac5cb 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;
}