From 539758b9058f0f1425079adc811c0fe16a18d93d Mon Sep 17 00:00:00 2001 From: lyrjie Date: Thu, 26 Dec 2019 15:39:15 +0300 Subject: [PATCH] Translation placeholder testing (#1542) * Added translation string placeholders test * Fixed the placeholder typos in all translations * [30] to 30 migration --- .../translationsByLanguage/Czech.properties | 2 +- .../translationsByLanguage/Dutch.properties | 8 +++--- .../translationsByLanguage/English.properties | 2 +- .../translationsByLanguage/French.properties | 2 +- .../translationsByLanguage/German.properties | 2 +- .../translationsByLanguage/Italian.properties | 2 +- .../translationsByLanguage/Korean.properties | 4 +-- .../translationsByLanguage/Malay.properties | 2 +- .../translationsByLanguage/Polish.properties | 16 ++++++------ .../Portuguese.properties | 6 ++--- .../Romanian.properties | 4 +-- .../translationsByLanguage/Russian.properties | 2 +- .../Simplified_Chinese.properties | 2 +- .../translationsByLanguage/Spanish.properties | 14 +++++------ .../translationsByLanguage/Thai.properties | 2 +- .../Traditional_Chinese.properties | 2 +- .../Ukrainian.properties | 14 +++++------ .../template.properties | 2 +- .../src/com/unciv/ui/trade/DiplomacyScreen.kt | 8 +++--- .../src/com/unciv/testing/TranslationTests.kt | 25 +++++++++++++++++++ 20 files changed, 73 insertions(+), 48 deletions(-) diff --git a/android/assets/jsons/translationsByLanguage/Czech.properties b/android/assets/jsons/translationsByLanguage/Czech.properties index 7ca4184489..beed53f7fb 100644 --- a/android/assets/jsons/translationsByLanguage/Czech.properties +++ b/android/assets/jsons/translationsByLanguage/Czech.properties @@ -354,7 +354,7 @@ We noticed your new city near our borders, despite your promise. This will have. # City states -Provides [amountOfCulture] culture at [30] Influence = Poskytují [amountOfCulture] bodů Kultury při Vlivu [30] +Provides [amountOfCulture] culture at 30 Influence = Poskytují [amountOfCulture] bodů Kultury při Vlivu 30 Provides 3 food in capital and 1 food in other cities at 30 Influence = Poskytuje 3 jídla v hlavním městě a 1 jídlo ve všech ostatních městech při Vlivu 30 Provides 3 happiness at 30 Influence = Poskytuje 3 body Spokojenosti při Vlivu 30 Provides land units every 20 turns at 30 Influence = Poskytuje pozemní jednotky každých 20 kol při Vlivu 30 diff --git a/android/assets/jsons/translationsByLanguage/Dutch.properties b/android/assets/jsons/translationsByLanguage/Dutch.properties index 8899a363b8..3e6e04009c 100644 --- a/android/assets/jsons/translationsByLanguage/Dutch.properties +++ b/android/assets/jsons/translationsByLanguage/Dutch.properties @@ -599,7 +599,7 @@ We noticed your new city near our borders, despite your promise. This will have. # City states # Requires translation! -Provides [amountOfCulture] culture at [30] Influence = +Provides [amountOfCulture] culture at 30 Influence = # Requires translation! Provides 3 food in capital and 1 food in other cities at 30 Influence = # Requires translation! @@ -1068,7 +1068,7 @@ Cannot provide unit upkeep for [unitName] - unit has been disbanded! = Kan unit [cityName] has been founded! = [cityName] is gesticht! [cityName] is starving! = [cityName] verhongerd! [construction] has been built in [cityName] = [construction] is gebouwd in [cityName] -[wonder] has been built in a faraway land = is gebouwd in een land ver weg +[wonder] has been built in a faraway land = [wonder] is gebouwd in een land ver weg Work has started on [construction] = Werk is begonen aan [construction] [cityName] cannot continue work on [construction] = [cityName] kan niet verder werken aan [construction] [cityname] has expanded its borders! = [cityname] heeft zijn grenzen uitgebreid! @@ -1085,7 +1085,7 @@ An enemy [unit] has destroyed our [ourUnit] = Een vijandige [unit] heeft onze [o An enemy [RangedUnit] has destroyed the defence of [cityname] = Een vijand [RangedUnit] heeft de verdediging van [cityname] vernietigd Enemy city [cityName] has destroyed our [ourUnit] = Vijandelijke stad [cityName] heeft onze [ourUnit] vernietigd An enemy [unit] was destroyed while attacking [cityname] = Een vijandige [unit] werd gedood tijdens zijn aanval op [cityname] -An enemy [unit] was destroyed while attacking our [ourUnit] = Een vijandige [unit] werd gedood tijdens zijn aanval op onze [unit] +An enemy [unit] was destroyed while attacking our [ourUnit] = Een vijandige [unit] werd gedood tijdens zijn aanval op onze [ourUnit] Our [attackerName] was destroyed by an intercepting [interceptorName] = Onze [attackerName] is vernietigd door een onderscheppende [interceptorName] # Requires translation! Our [interceptorName] intercepted and destroyed an enemy [attackerName] = @@ -1244,7 +1244,7 @@ Raze city = Stad vernietigen Stop razing city = Stad vernieteging stoppen Buy for [amount] gold = Voor [amount] gold kopen Buy = Kopen -Would you like to purchase [constructionName] for [buildingGoldCost] gold? = Wilt u [constructionName] kopen voor [buildGoldCost] goud? +Would you like to purchase [constructionName] for [buildingGoldCost] gold? = Wilt u [constructionName] kopen voor [buildingGoldCost] goud? Maintenance cost = Onderhouskosten Pick construction = Bouwwerk kiezen # Requires translation! diff --git a/android/assets/jsons/translationsByLanguage/English.properties b/android/assets/jsons/translationsByLanguage/English.properties index 4708acef7e..355e14b4f6 100644 --- a/android/assets/jsons/translationsByLanguage/English.properties +++ b/android/assets/jsons/translationsByLanguage/English.properties @@ -620,7 +620,7 @@ We noticed your new city near our borders, despite your promise. This will have. # City states # Requires translation! -Provides [amountOfCulture] culture at [30] Influence = +Provides [amountOfCulture] culture at 30 Influence = # Requires translation! Provides 3 food in capital and 1 food in other cities at 30 Influence = # Requires translation! diff --git a/android/assets/jsons/translationsByLanguage/French.properties b/android/assets/jsons/translationsByLanguage/French.properties index 70ae9fbb7f..82880489f0 100644 --- a/android/assets/jsons/translationsByLanguage/French.properties +++ b/android/assets/jsons/translationsByLanguage/French.properties @@ -352,7 +352,7 @@ We noticed your new city near our borders, despite your promise. This will have. # City states -Provides [amountOfCulture] culture at [30] Influence = Fournit [amountOfCulture] de Culture à 30 d'influence +Provides [amountOfCulture] culture at 30 Influence = Fournit [amountOfCulture] de Culture à 30 d'influence Provides 3 food in capital and 1 food in other cities at 30 Influence = Fournit 3 Nourriture à la capitale et 1 nourriture pour les autres villes à 30 d'influence Provides 3 happiness at 30 Influence = Fournit 3 de Bonheur à 30 d'influence Provides land units every 20 turns at 30 Influence = Fournit des unités terrestres tous les 20 tours à 30 d'influence diff --git a/android/assets/jsons/translationsByLanguage/German.properties b/android/assets/jsons/translationsByLanguage/German.properties index 9f146f4bde..0958836bd6 100644 --- a/android/assets/jsons/translationsByLanguage/German.properties +++ b/android/assets/jsons/translationsByLanguage/German.properties @@ -357,7 +357,7 @@ We noticed your new city near our borders, despite your promise. This will have. # City states -Provides [amountOfCulture] culture at [30] Influence = Bietet [amountOfCulture] Kultur für 30 Einflusspunkte +Provides [amountOfCulture] culture at 30 Influence = Bietet [amountOfCulture] Kultur für 30 Einflusspunkte Provides 3 food in capital and 1 food in other cities at 30 Influence = Bietet 3 Nahrung in der Hauptstadt und 1 Nahrung in anderen Städten für 30 Einflusspunkte Provides 3 happiness at 30 Influence = Bietet 3 Zufriedenheit für 30 Einflusspunkte Provides land units every 20 turns at 30 Influence = Bietet eine Landeinheit alle 20 Runden für 30 Einflusspunkte diff --git a/android/assets/jsons/translationsByLanguage/Italian.properties b/android/assets/jsons/translationsByLanguage/Italian.properties index 20d1b1f913..d898c828ca 100644 --- a/android/assets/jsons/translationsByLanguage/Italian.properties +++ b/android/assets/jsons/translationsByLanguage/Italian.properties @@ -352,7 +352,7 @@ We noticed your new city near our borders, despite your promise. This will have. # City states -Provides [amountOfCulture] culture at [30] Influence = Dona [amountOfCulture] punti Cultura a minimo 30 Punti Influenza +Provides [amountOfCulture] culture at 30 Influence = Dona [amountOfCulture] punti Cultura a minimo 30 Punti Influenza Provides 3 food in capital and 1 food in other cities at 30 Influence = Dona 3 Cibo alla Capitale e 1 Cibo alle altre Città a minimo 30 Punti Influenza Provides 3 happiness at 30 Influence = Dona 3 Punti Felicità a minimo 30 Punti Influenza Provides land units every 20 turns at 30 Influence = Concede un'unità terrestre ogni 20 turni a minimo 30 Punti Influenza diff --git a/android/assets/jsons/translationsByLanguage/Korean.properties b/android/assets/jsons/translationsByLanguage/Korean.properties index 84bf1a6a60..4f4df25389 100644 --- a/android/assets/jsons/translationsByLanguage/Korean.properties +++ b/android/assets/jsons/translationsByLanguage/Korean.properties @@ -368,7 +368,7 @@ We noticed your new city near our borders, despite your promise. This will have. # City states -Provides [amountOfCulture] culture at [30] Influence = 영향력이 [30]일 때부터 문화 [amountOfCulture]을(를) 제공합니다. +Provides [amountOfCulture] culture at 30 Influence = 영향력이 30일 때부터 문화 [amountOfCulture]을(를) 제공합니다. Provides 3 food in capital and 1 food in other cities at 30 Influence = 영향력이 30일 때부터 수도에 식량 +3, 수도가 아닌 도시에 식량 +1을 제공합니다. Provides 3 happiness at 30 Influence = 영향력이 30일 때부터 행복 +3을 제공합니다. Provides land units every 20 turns at 30 Influence = 영향력이 30일 때부터 20턴마다 지상 유닛을 제공합니다. @@ -1656,7 +1656,7 @@ Siege II = 공성 II Siege III = 공성 III Evasion = 회피 Reduces damage taken from interception by 50% = 요격으로 인한 피해 -50% -Bonus when intercepting [amount]% = 적을 요격할 때 전투력 +[bonusAmount]% +Bonus when intercepting [amount]% = 적을 요격할 때 전투력 +[amount]% Ambush I = 공중 매복 I Ambush II = 공중 매복 II Haka War Dance = 하카 전쟁 의식 diff --git a/android/assets/jsons/translationsByLanguage/Malay.properties b/android/assets/jsons/translationsByLanguage/Malay.properties index 782ee444c8..1043cdbc12 100644 --- a/android/assets/jsons/translationsByLanguage/Malay.properties +++ b/android/assets/jsons/translationsByLanguage/Malay.properties @@ -537,7 +537,7 @@ We noticed your new city near our borders, despite your promise. This will have. # City states # Requires translation! -Provides [amountOfCulture] culture at [30] Influence = +Provides [amountOfCulture] culture at 30 Influence = # Requires translation! Provides 3 food in capital and 1 food in other cities at 30 Influence = # Requires translation! diff --git a/android/assets/jsons/translationsByLanguage/Polish.properties b/android/assets/jsons/translationsByLanguage/Polish.properties index 07b3c5e493..c7f420f3f6 100644 --- a/android/assets/jsons/translationsByLanguage/Polish.properties +++ b/android/assets/jsons/translationsByLanguage/Polish.properties @@ -352,7 +352,7 @@ We noticed your new city near our borders, despite your promise. This will have. # City states -Provides [amountOfCulture] culture at [30] Influence = Dodaje [amountOfCulture] kultury przy Wpływie równym 30 +Provides [amountOfCulture] culture at 30 Influence = Dodaje [amountOfCulture] kultury przy Wpływie równym 30 Provides 3 food in capital and 1 food in other cities at 30 Influence = Dodaje 3 jednostki żywności w stolicy i 1 jednostkę w innych miastach przy poziomie Wpływów równym 30 Provides 3 happiness at 30 Influence = Dodaje z jednostki zadowolenia przy poziomie Wpływów równym 30 Provides land units every 20 turns at 30 Influence = Zapewnia jednostki lądowe co 20 tur przy poziomie Wpływów równym 30 @@ -642,7 +642,7 @@ Enemy city [cityName] has destroyed our [ourUnit] = Wrogie miasto [cityName] pok An enemy [unit] was destroyed while attacking [cityname] = Miasto [cityname] odparło atak wrogich jednostek [unit] An enemy [unit] was destroyed while attacking our [ourUnit] = Nasze jednostki [ourUnit] odparły atak wrogich jednostek [unit] Our [attackerName] was destroyed by an intercepting [interceptorName] = Nasz [attackerName] został przechwycony przez [interceptorName] -Our [interceptorName] intercepted and destroyed an enemy [attackerName] = Nasza jednostka przechwytująca [interceptor] przechwyciła i zniszczyła przeciwnika [attackerName] +Our [interceptorName] intercepted and destroyed an enemy [attackerName] = Nasza jednostka przechwytująca [interceptorName] przechwyciła i zniszczyła przeciwnika [attackerName] Our [$attackerName] was attacked by an intercepting [$interceptorName] = Nasz [$attackerName] został zaatakowany przez [$interceptorName] Our [$interceptorName] intercepted and attacked an enemy [$attackerName] = Nasza jednostka przechwytująca [$interceptorName] przechwyciła i zaatakowała [$attackerName] An enemy [unit] was spotted near our territory = Wroga jednostka [unit] została zauważona blisko naszego terytorium @@ -678,7 +678,7 @@ One of our trades with [nation] has been cut short = Jedna z naszych wymian hand [nation] refused to stop settling cities near us! = Nacja [nation] nadal będzie zakładać nowe miasta w pobliżu nas! We have allied with [nation]. = Jesteśmy sojusznikami z [nation]. We have lost alliance with [nation]. = Nie jesteśmy już w sojuszu z [nation]. -We have discovered [naturalWonder]! = Odkryliśmy [naturlWonder]! +We have discovered [naturalWonder]! = Odkryliśmy [naturalWonder]! We have received [goldAmount] Gold for discovering [naturalWonder] = Otrzymaliśmy [goldAmount] Złota za odkrycie [naturalWonder] Your relationship with [cityStateName] is about to degrade = Twoja relacje z [cityStateName] jest bliska degradacji Your relationship with [cityStateName] degraded = Twoja relacja z [cityStateName] została zdegradowana @@ -711,7 +711,7 @@ Fortification = Umocnienia Sleep = Uśpij Moving = W ruchu Set up = Przygotowane -Upgrade to [unitType] ([goldCost] gold) = Ulepsz jednostkę +Upgrade to [unitType] ([goldCost] gold) = Ulepsz do [unitType] ([goldCost] gold) Found city = Załóż miasto Promote = Awansuj Health = Zdrowie @@ -776,9 +776,9 @@ Stopped expansion = Zatrzymana ekspansja Food converts to production = Przetwarzanie żywności na produkcje [turnsToStarvation] turns to lose population = Ilość tur do utraty populacji: [turnsToStarvation] Stopped population growth = Zatrzymane rośnięcie populacji -In resistance for another [numberOfTurns] turns = W oporze przez następne tur: [numerOfTurns] +In resistance for another [numberOfTurns] turns = W oporze przez następne tur: [numberOfTurns] Sell for [sellAmount] gold = Sprzedaj za [sellAmount] złota -Are you sure you want to sell this [building]? = Aby czy na pewno chcesz sprzedać [buildings]? +Are you sure you want to sell this [building]? = Aby czy na pewno chcesz sprzedać [building]? [greatPerson] points = Punkty [greatPerson] Great person points = Punkty wielkiego człowieka Current points = Obecne punkty @@ -825,7 +825,7 @@ Conduct Trade Mission = Prowadzenie Misji Handlowej Your trade mission to [civName] has earned you [goldAmount] gold and [influenceAmount] influence! = Twoja misja handlowa do [civName] zdobyła dla ciebie [goldAmount] złota oraz [influenceAmount] wpływów Hurry Wonder = Przyspiesz Budowanie Cudu Your citizens have been happy with your rule for so long that the empire enters a Golden Age! = Twoi obywatele są zadowoleni pod twoim panowaniem tak długo że imperium wkracza w Złotą Era -You have entered the [newEra]! = Wkroczyłeś do +You have entered the [newEra]! = Wkroczyłeś do [newEra]! [policyBranch] policy branch unlocked! = Odblokowano gałąź ustroju społecznego [policyBranch] Overview = Przegląd Total = Łącznie @@ -960,7 +960,7 @@ Workers = Robotnicy # Other civilopedia things Nations = Kraje Promotions = Awanse -Available for [unitTypes] = Dostępne dla jednostki [unitType] +Available for [unitTypes] = Dostępne dla jednostki [unitTypes] # Policies diff --git a/android/assets/jsons/translationsByLanguage/Portuguese.properties b/android/assets/jsons/translationsByLanguage/Portuguese.properties index 6c43d0144e..71a3fb9ebf 100644 --- a/android/assets/jsons/translationsByLanguage/Portuguese.properties +++ b/android/assets/jsons/translationsByLanguage/Portuguese.properties @@ -354,7 +354,7 @@ We noticed your new city near our borders, despite your promise. This will have. # City states -Provides [amountOfCulture] culture at [30] Influence = Provê [amountOfCulture] de cultura aos [30] de influência +Provides [amountOfCulture] culture at 30 Influence = Provê [amountOfCulture] de cultura aos 30 de influência # Requires translation! Provides 3 food in capital and 1 food in other cities at 30 Influence = # Requires translation! @@ -660,7 +660,7 @@ An enemy [RangedUnit] has destroyed the defence of [cityname] = # Requires translation! Enemy city [cityName] has destroyed our [ourUnit] = An enemy [unit] was destroyed while attacking [cityname] = Um(a) [unit] inimigo(a) foi destruido enquanto atacava [cityname] -An enemy [unit] was destroyed while attacking our [ourUnit] = Um(a) [unit] inimigo(a) foi destruido(a) enquanto atacando nosso(a) [ourUit] +An enemy [unit] was destroyed while attacking our [ourUnit] = Um(a) [unit] inimigo(a) foi destruido(a) enquanto atacando nosso(a) [ourUnit] # Requires translation! Our [attackerName] was destroyed by an intercepting [interceptorName] = # Requires translation! @@ -686,7 +686,7 @@ We have found survivors in the ruins - population added to [cityName] = Encontra We have discovered the lost technology of [techName] in the ruins! = Nós descobrimos a tecnologia perdida de [techName] nas ruínas! A [unitName] has joined us! = Um [unitName] se juntou a nós! An ancient tribe trains our [unitName] in their ways of combat! = Uma antiga tribo treina nosso [unitName] em suas formas de combate! -We have found a stash of [amount] gold in the ruins! = Encontramos um estoque de [quantidade] de ouro nas ruínas! +We have found a stash of [amount] gold in the ruins! = Encontramos um estoque de [amount] de ouro nas ruínas! # Requires translation! [unit] finished exploring. = # Requires translation! diff --git a/android/assets/jsons/translationsByLanguage/Romanian.properties b/android/assets/jsons/translationsByLanguage/Romanian.properties index 44686917a2..9f76d56f4e 100644 --- a/android/assets/jsons/translationsByLanguage/Romanian.properties +++ b/android/assets/jsons/translationsByLanguage/Romanian.properties @@ -502,7 +502,7 @@ We noticed your new city near our borders, despite your promise. This will have. # City states # Requires translation! -Provides [amountOfCulture] culture at [30] Influence = +Provides [amountOfCulture] culture at 30 Influence = # Requires translation! Provides 3 food in capital and 1 food in other cities at 30 Influence = # Requires translation! @@ -1099,7 +1099,7 @@ Raze city = Demolează orașul Stop razing city = Anulează demolarea orașului Buy for [amount] gold = Cumpără cu [amount] aur Buy = A cumpara -Would you like to purchase [constructionName] for [buildingGoldCost] gold? = Doriți să achiziționați [buildingName] pentru aur [buildingGoldCost]? +Would you like to purchase [constructionName] for [buildingGoldCost] gold? = Doriți să achiziționați [constructionName] pentru aur [buildingGoldCost]? Maintenance cost = Cost întreținere Pick construction = Alege construcția # Requires translation! diff --git a/android/assets/jsons/translationsByLanguage/Russian.properties b/android/assets/jsons/translationsByLanguage/Russian.properties index 848cd64052..703fbe111d 100644 --- a/android/assets/jsons/translationsByLanguage/Russian.properties +++ b/android/assets/jsons/translationsByLanguage/Russian.properties @@ -353,7 +353,7 @@ We noticed your new city near our borders, despite your promise. This will have. # City states -Provides [amountOfCulture] culture at [30] Influence = Даёт [amountOfCulture] культуры при 30 Влияния +Provides [amountOfCulture] culture at 30 Influence = Даёт [amountOfCulture] культуры при 30 Влияния Provides 3 food in capital and 1 food in other cities at 30 Influence = Даёт 3 Еды в столице и 1 Еда в остальных городах при 30 Влияния Provides 3 happiness at 30 Influence = Даёт 3 Счастья при 30 Влияния Provides land units every 20 turns at 30 Influence = Даёт сухопутные юниты каждые 20 ходов при 30 Влияния diff --git a/android/assets/jsons/translationsByLanguage/Simplified_Chinese.properties b/android/assets/jsons/translationsByLanguage/Simplified_Chinese.properties index 32703bc79d..74f1a1d9f8 100644 --- a/android/assets/jsons/translationsByLanguage/Simplified_Chinese.properties +++ b/android/assets/jsons/translationsByLanguage/Simplified_Chinese.properties @@ -353,7 +353,7 @@ We noticed your new city near our borders, despite your promise. This will have. # City states -Provides [amountOfCulture] culture at [30] Influence = 当影响力不低于30时提供[amountOfCulture]文化 +Provides [amountOfCulture] culture at 30 Influence = 当影响力不低于30时提供[amountOfCulture]文化 Provides 3 food in capital and 1 food in other cities at 30 Influence = 当影响力不低于30时为首都提供3食物,为其他城市提供1食物 Provides 3 happiness at 30 Influence = 当影响力不低于30时提供3快乐 Provides land units every 20 turns at 30 Influence = 当影响力不低于30时每20回合提供陆军单位 diff --git a/android/assets/jsons/translationsByLanguage/Spanish.properties b/android/assets/jsons/translationsByLanguage/Spanish.properties index ef1b8e94ec..fb74dcbd07 100644 --- a/android/assets/jsons/translationsByLanguage/Spanish.properties +++ b/android/assets/jsons/translationsByLanguage/Spanish.properties @@ -359,12 +359,12 @@ We noticed your new city near our borders, despite your promise. This will have. # City states -Provides [amountOfCulture] culture at [30] Influence = Proporciona [amountOfCulture] de cultura al alcanzar [30] de influencia +Provides [amountOfCulture] culture at 30 Influence = Proporciona [amountOfCulture] de cultura al alcanzar 30 de influencia Provides 3 food in capital and 1 food in other cities at 30 Influence = Proporciona 3 alimentos en la capital y 1 alimento en las demás ciudades al alcanzar 30 de Influencia Provides 3 happiness at 30 Influence = Proporciona 3 felicidad al alcanzar 30 de influencia Provides land units every 20 turns at 30 Influence = Proporciona unidades de tierra cada 20 turnos al alcanzar 30 de influencia Gift [giftAmount] gold (+[influenceAmount] influence) = Regalar [giftAmount] de oro (+[influenceAmount] influencia) -Relationship changes in another [turnsToRelationshipChange] turns = La relación cambiará en [turnToRelationshipChange] turnos +Relationship changes in another [turnsToRelationshipChange] turns = La relación cambiará en [turnsToRelationshipChange] turnos Cultured = Culta Maritime = Marítima @@ -633,7 +633,7 @@ Cannot provide unit upkeep for [unitName] - unit has been disbanded! = ¡No se p [construction] has been built in [cityName] = [construction] se ha construido en [cityName] [wonder] has been built in a faraway land = [wonder] ha terminado su construcción en tierras lejanas Work has started on [construction] = Se ha empezado a trabajar en [construction] -[cityName] cannot continue work on [construction] = La ciudad de [cityname] no puede continuar construyendo [construction] +[cityName] cannot continue work on [construction] = La ciudad de [cityName] no puede continuar construyendo [construction] [cityname] has expanded its borders! = ¡[cityname] ha expandido sus fronteras Your Golden Age has ended. = La edad dorada ha acabado. [cityName] has been razed to the ground! = ¡[cityName] ha sido arrasada hasta los cimientos! @@ -649,9 +649,9 @@ Enemy city [cityName] has destroyed our [ourUnit] = La ciudad enemiga [cityName] An enemy [unit] was destroyed while attacking [cityname] = Un [unit] enemigo ha sido destruido mientras atacaba [cityname] An enemy [unit] was destroyed while attacking our [ourUnit] = Un [unit] enemigo ha sido destruido mientras atacaba nuestro [ourUnit] Our [attackerName] was destroyed by an intercepting [interceptorName] = Nuestro [attackerName] fue interceptado y destruido por [interceptorName] -Our [interceptorName] intercepted and destroyed an enemy [attackerName] = Nuestro [interceptorName] interceptó y destruyó a un [atackerName] enemigo +Our [interceptorName] intercepted and destroyed an enemy [attackerName] = Nuestro [interceptorName] interceptó y destruyó a un [attackerName] enemigo Our [$attackerName] was attacked by an intercepting [$interceptorName] = Nuestro [$attackerName] fue interceptado y atacado por [$interceptorName] -Our [$interceptorName] intercepted and attacked an enemy [$attackerName] = Nuestro [$interceptorName] interceptó y atacó a un [$atackerName] enemigo +Our [$interceptorName] intercepted and attacked an enemy [$attackerName] = Nuestro [$interceptorName] interceptó y atacó a un [$attackerName] enemigo An enemy [unit] was spotted near our territory = Se ha avistado un [unit] enemigo cerca de nuestro territorio An enemy [unit] was spotted in our territory = Se ha avistado un [unit] enemigo en nuestro territorio [amount] enemy units were spotted near our territory = [amount] unidades enemigas fueron vistas cerca de nuestro territorio @@ -1519,7 +1519,7 @@ Cannon = Cañón Musketman = Mosquetero Musketeer = Mosquetero Revolucionario Janissary = Jenízaro -Heals [amountHealed] damage if it kills a unit = Se cura [amoutHealed] de daño si mata a una unidad +Heals [amountHealed] damage if it kills a unit = Se cura [amountHealed] de daño si mata a una unidad Minuteman = Milicia Revolucionaria Frigate = Fragata Ship of the Line = Barco De La Línea @@ -1546,7 +1546,7 @@ Anti-Aircraft Gun = Cañón antiaéreo Infantry = Infanteria Battleship = Buque de guerra Submarine = Submarino -Bonus as Attacker [amount]% = Bonus al atacar [amout]% +Bonus as Attacker [amount]% = Bonus al atacar [amount]% Invisible to others = Invisible para los demás Can only attack water = Sólo puede atacar a agua Carrier = Porta Aviones diff --git a/android/assets/jsons/translationsByLanguage/Thai.properties b/android/assets/jsons/translationsByLanguage/Thai.properties index 619b9e4ad0..db47cb00a7 100644 --- a/android/assets/jsons/translationsByLanguage/Thai.properties +++ b/android/assets/jsons/translationsByLanguage/Thai.properties @@ -351,7 +351,7 @@ We noticed your new city near our borders, despite your promise. This will have. # City states -Provides [amountOfCulture] culture at [30] Influence = ให้ [amountOfCulture] แต้มวัฒนธรรมที่ [30] คะแนนอิทธิพล +Provides [amountOfCulture] culture at 30 Influence = ให้ [amountOfCulture] แต้มวัฒนธรรมที่ 30 คะแนนอิทธิพล Provides 3 food in capital and 1 food in other cities at 30 Influence = ให้ 3 อาหารที่เมืองหลวง และ 1 อาหารในเมืองอื่นๆที่ 30 คะแนนอิทธิพล Provides 3 happiness at 30 Influence = ให้ 3 ความสุขที่ 30 คะแนนอิทธิพล Provides land units every 20 turns at 30 Influence = ให้ยูนิตทัพบกทุกๆ 20 เทิร์นที่ 30 คะแนนอิทธิพล diff --git a/android/assets/jsons/translationsByLanguage/Traditional_Chinese.properties b/android/assets/jsons/translationsByLanguage/Traditional_Chinese.properties index 38cf546762..d4881bb9e9 100644 --- a/android/assets/jsons/translationsByLanguage/Traditional_Chinese.properties +++ b/android/assets/jsons/translationsByLanguage/Traditional_Chinese.properties @@ -353,7 +353,7 @@ We noticed your new city near our borders, despite your promise. This will have. # City states -Provides [amountOfCulture] culture at [30] Influence = 當影響力不低於30時提供[amountOfCulture]文化 +Provides [amountOfCulture] culture at 30 Influence = 當影響力不低於30時提供[amountOfCulture]文化 Provides 3 food in capital and 1 food in other cities at 30 Influence = 當影響力不低於30時為首都提供3食物,為其他城市提供1食物 Provides 3 happiness at 30 Influence = 當影響力不低於30時提供3快樂 Provides land units every 20 turns at 30 Influence = 當影響力不低於30時每20回合提供陸軍單位 diff --git a/android/assets/jsons/translationsByLanguage/Ukrainian.properties b/android/assets/jsons/translationsByLanguage/Ukrainian.properties index 6ba68b681a..a691c32899 100644 --- a/android/assets/jsons/translationsByLanguage/Ukrainian.properties +++ b/android/assets/jsons/translationsByLanguage/Ukrainian.properties @@ -355,7 +355,7 @@ We noticed your new city near our borders, despite your promise. This will have. # City states # Requires translation! -Provides [amountOfCulture] culture at [30] Influence = +Provides [amountOfCulture] culture at 30 Influence = # Requires translation! Provides 3 food in capital and 1 food in other cities at 30 Influence = # Requires translation! @@ -750,8 +750,8 @@ Culture = Культура Food = Їжа GOLDEN AGE = ЗОЛОТИЙ ВІК Golden Age = Золотий вік -[year] BC = до н.е. -[year] AD = після н.е. +[year] BC = [year] до н.е. +[year] AD = [year] після н.е. Civilopedia = Цивілопедія Start new game = Розпочати нову гру Save game = Зберегти гру @@ -768,7 +768,7 @@ Raze city = Зруйнувати місто Stop razing city = Зупинити руйнування міста Buy for [amount] gold = Купити за [amount] золота Buy = Купити -Would you like to purchase [constructionName] for [buildingGoldCost] gold? = Чи хотіли б ви придбати [ConstructionName] за [buildingGoldCost]? +Would you like to purchase [constructionName] for [buildingGoldCost] gold? = Чи хотіли б ви придбати [constructionName] за [buildingGoldCost]? Maintenance cost = Вартість обслуговування Pick construction = Вибрати споруду Pick improvement = Вибрати вдосконалення @@ -776,7 +776,7 @@ Provides [resource] = Забезпечити [resource] Replaces [improvement] = Замінити [improvement] Pick now! = Вибрати зараз! Build [building] = Побудувати [building] -Train [unit] = Обучити +Train [unit] = Обучити [unit] Produce [thingToProduce] = Виробляє [thingToProduce] Nothing = Нічого Annex city = Анексоване місто @@ -977,7 +977,7 @@ Workers = Робітники # Other civilopedia things Nations = Нації Promotions = Акції -Available for [unitTypes] = Доступно для +Available for [unitTypes] = Доступно для [unitTypes] # Policies @@ -1611,7 +1611,7 @@ Great Scientist = Видатний науковець Can hurry technology research = Може пришвидшити технологічне дослідження Can build improvement: Academy = Може будувати вдосконалення: Академія Great Merchant = Видатний торговець -Can undertake a trade mission with City-State, giving a large sum of gold and [influenceAmount] Influence = Може здійснити торгівлю і отримати багато золота +Can undertake a trade mission with City-State, giving a large sum of gold and [influenceAmount] Influence = Може очолити торговельну місію в місто-державу, яка заробить вам велику суму золота та [influenceAmount] впливу Can build improvement: Customs house = Може будувати вдосконалення: Митниця Great Engineer = Видатний інженер Can speed up construction of a wonder = Може прискорити будівництво дива світу diff --git a/android/assets/jsons/translationsByLanguage/template.properties b/android/assets/jsons/translationsByLanguage/template.properties index 93ad893b82..713278f058 100644 --- a/android/assets/jsons/translationsByLanguage/template.properties +++ b/android/assets/jsons/translationsByLanguage/template.properties @@ -352,7 +352,7 @@ We noticed your new city near our borders, despite your promise. This will have. # City states -Provides [amountOfCulture] culture at [30] Influence = +Provides [amountOfCulture] culture at 30 Influence = Provides 3 food in capital and 1 food in other cities at 30 Influence = Provides 3 happiness at 30 Influence = Provides land units every 20 turns at 30 Influence = diff --git a/core/src/com/unciv/ui/trade/DiplomacyScreen.kt b/core/src/com/unciv/ui/trade/DiplomacyScreen.kt index 908965c104..b1421430ac 100644 --- a/core/src/com/unciv/ui/trade/DiplomacyScreen.kt +++ b/core/src/com/unciv/ui/trade/DiplomacyScreen.kt @@ -116,10 +116,10 @@ class DiplomacyScreen(val viewingCiv:CivilizationInfo):CameraStageBaseScreen() { } val friendBonusText = when (otherCiv.getCityStateType()) { - CityStateType.Cultured -> ("Provides [" + (3 * (viewingCiv.getEra().ordinal + 1)).toString() + "] culture at [30] Influence").tr() - CityStateType.Maritime -> "Provides 3 food in capital and 1 food in other cities at [30] Influence".tr() - CityStateType.Mercantile -> "Provides 3 happiness at [30] Influence".tr() - CityStateType.Militaristic -> "Provides land units every 20 turns at [30] Influence".tr() + CityStateType.Cultured -> ("Provides [" + (3 * (viewingCiv.getEra().ordinal + 1)).toString() + "] culture at 30 Influence").tr() + CityStateType.Maritime -> "Provides 3 food in capital and 1 food in other cities at 30 Influence".tr() + CityStateType.Mercantile -> "Provides 3 happiness at 30 Influence".tr() + CityStateType.Militaristic -> "Provides land units every 20 turns at 30 Influence".tr() } val friendBonusLabelColor:Color diff --git a/tests/src/com/unciv/testing/TranslationTests.kt b/tests/src/com/unciv/testing/TranslationTests.kt index 261e44be29..65090bdebf 100644 --- a/tests/src/com/unciv/testing/TranslationTests.kt +++ b/tests/src/com/unciv/testing/TranslationTests.kt @@ -146,4 +146,29 @@ class TranslationTests { Assert.assertTrue("This test will only pass when there is a translation for all promotions", true) } + + /** For every translatable string find its placeholders and check if all translations have them */ + @Test + fun allTranslationsHaveCorrectPlaceholders() { + val placeholderPattern = """\[[^]]*]""".toRegex() + var allTranslationsHaveCorrectPlaceholders = true + val languages = translations.getLanguages() + for (key in translations.keys) { + val placeholders = placeholderPattern.findAll(key).map { it.value }.toList() + for (language in languages) { + placeholders.forEach { placeholder -> + if(!translations.get(key, language).contains(placeholder)) { + allTranslationsHaveCorrectPlaceholders = false + println("Placeholder `$placeholder` not found in `$language` for key `$key`") + } + } + + } + } + Assert.assertTrue( + "This test will only pass when all translations' placeholders match those of the key", + allTranslationsHaveCorrectPlaceholders + ) + } + } \ No newline at end of file