From aa11c49eec8df546c7f045c1cf16a9f177540a9e Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Mon, 18 Jun 2018 21:41:07 +0300 Subject: [PATCH] Many more things are now translated! Added more things to translate to translations.json --- android/assets/jsons/Buildings.json | 11 - android/assets/jsons/Translations.json | 245 ++++++++++++------ .../com/unciv/logic/automation/Automation.kt | 3 +- core/src/com/unciv/logic/battle/Battle.kt | 15 +- .../com/unciv/logic/city/CityConstructions.kt | 8 +- .../unciv/logic/city/CityExpansionManager.kt | 3 +- core/src/com/unciv/logic/city/CityInfo.kt | 4 +- .../com/unciv/logic/city/PopulationManager.kt | 5 +- .../logic/civilization/GoldenAgeManager.kt | 2 +- .../unciv/logic/civilization/TechManager.kt | 7 +- .../com/unciv/models/gamebasics/Building.kt | 20 +- .../com/unciv/models/gamebasics/Technology.kt | 4 +- core/src/com/unciv/ui/VictoryScreen.kt | 2 + .../pickerscreens/ImprovementPickerScreen.kt | 2 +- .../ui/pickerscreens/TechPickerScreen.kt | 7 +- .../unciv/ui/utils/CameraStageBaseScreen.kt | 2 +- .../ui/worldscreen/NotificationsScroll.kt | 2 +- .../com/unciv/ui/worldscreen/WorldScreen.kt | 6 +- .../ui/worldscreen/bottombar/BattleTable.kt | 10 +- 19 files changed, 212 insertions(+), 146 deletions(-) diff --git a/android/assets/jsons/Buildings.json b/android/assets/jsons/Buildings.json index c7060177..9eff0456 100644 --- a/android/assets/jsons/Buildings.json +++ b/android/assets/jsons/Buildings.json @@ -114,7 +114,6 @@ }, { name:"Chichen Itza", - baseDescription: "Length of golden ages increased +50%", culture:1, greatPersonPoints:{production:1}, isWonder:true, @@ -260,7 +259,6 @@ }, { name:"Angkor Wat", - baseDescription: "Cost of acquiring new tiles reduced by 25%", culture:1, greatPersonPoints:{production:1}, isWonder:true, @@ -304,7 +302,6 @@ }, { name:"Sistine Chapel", - baseDescription: "Culture in all cities increased by 25%", culture:1, isWonder:true, unique:"Culture in all cities increased by 25%", @@ -321,7 +318,6 @@ }, { name:"Forbidden Palace", - baseDescription: "Unhappiness from population decreased by 10%", culture:1, isWonder:true, unique:"Unhappiness from population decreased by 10%", @@ -486,7 +482,6 @@ }, { name:"Apollo Program", - baseDescription: "Allows the building of spaceship parts", cost:1500, isWonder:true, unique:"Enables construction of Spaceship parts", @@ -494,7 +489,6 @@ }, { name:"Nuclear Plant", - baseDescription: "Can only be built in cities next to deserts; cannot be built in a city with a Nuclear Plant", production:5, percentStatBonus:{production:15}, requiredBuilding:"Factory", @@ -505,7 +499,6 @@ }, { name:"Spaceship Factory", - baseDescription: "Increases production of spaceship parts by 50%", production:3, requiredResource:"Aluminum", cost:360, @@ -514,28 +507,24 @@ }, { name:"SS Booster", - baseDescription: "Spaceship part", requiredResource:"Aluminum", requiredTech:"Robotics", unique:"Spaceship part" }, { name:"SS Cockpit", - baseDescription: "Spaceship part", requiredResource:"Aluminum", requiredTech:"Satellites", unique:"Spaceship part" }, { name:"SS Engine", - baseDescription: "Spaceship part", requiredResource:"Aluminum", requiredTech:"Particle Physics", unique:"Spaceship part" }, { name:"SS Statis Chamber", - baseDescription: "Spaceship part", requiredResource:"Aluminum", requiredTech:"Nanotechnology", unique:"Spaceship part" diff --git a/android/assets/jsons/Translations.json b/android/assets/jsons/Translations.json index 5c8e1374..2d1ad3e7 100644 --- a/android/assets/jsons/Translations.json +++ b/android/assets/jsons/Translations.json @@ -6,6 +6,9 @@ Romanian:"Runda urmatoare" } + "Waiting":{ // Displayed when next turn is being...turned + } + "Turn":{ // For main screen at top left, e.g. Turn 234 Italian:"Turno" Russian:"Ход" @@ -13,10 +16,10 @@ Romanian:"Runda" } - "in ":{ // As in "Opera House in 3 turns" - Italian:"in " + "in":{ // As in "Opera House in 3 turns" + Italian:"in" Russian:"в" - French:"dans " + French:"dans" Romanian:"în" } @@ -98,6 +101,9 @@ French:"Implanter" Romanian:"Dispune" } + + "Promote":{ + } "Health":{ Italian:"Salute" @@ -126,10 +132,6 @@ Romanian:"Fericire" } "Production":{ - Italian:"" - Russian:"" - French:"" - Romanian:"" } "Culture":{ Italian:"Cultura" @@ -143,6 +145,9 @@ French:"Nourriture" Romanian:"Hrană" } + + "GOLDEN AGE":{ + } // Menu table @@ -167,6 +172,9 @@ French:"Chargement du jeu" Romanian:"Incarca jocul" } + + "Load copied data":{ + } "Victory status":{ Italian:"Stato di vittoria" @@ -188,6 +196,16 @@ French:"Option d'affichage" Romanian:"Opțiuni ecran" } + + "Show":{ + } + "Hide":{ + } + + "worked tiles":{ + } + "resources and improvements":{ + } "Close":{ Italian:"Chiudi" @@ -233,7 +251,7 @@ } - "Pick construction":{ // eg Build Granary + "Pick construction":{ Italian:"Scegli la costruzione" Russian:"Выбор здания" French:"Choisissez la construction" @@ -267,83 +285,99 @@ French:"Recherche" Romanian:"Exploreaza" } - "Units enabled":{ // eg "Research Pottery" + "Units enabled":{ Italian:"Unità abilitate" Russian:"Активные юниты" French:"Unités activées" Romanian:"Unități activate" } - "Buildings enabled":{ // eg "Research Pottery" + "Buildings enabled":{ Italian:"Edifici abilitati" Russian:"Активные здания" French:"Bâtiments activés" Romanian:"Clădirile active" } - "Wonders enabled":{ // eg "Research Pottery" + + "Wonder":{} + + "Wonders enabled":{ Italian:"Meraviglie abilitate" Russian:"Активные чудеса" French:"Merveilles activées" Romanian:"Minuni active" } - "Tile improvements enabled":{ // eg "Research Pottery" + "Tile improvements enabled":{ Italian:"Miglioramenti delle celle abilitati" Russian:"Улучшены улучшения плит" French:"Améliorations apportées aux carreaux" Romanian:"Ameliorare activa a plăcilor" } + "Reveals":{ // As in "Reveals Coal on the map" + } + "on the map":{ + } + + "provide":{ // as in "Camp, Customs House provide +1 Gold" + } + "provides":{ // as in "Camp provides +1 Gold" (singular of above) + } + // Notifications // Some notifications have an exclamation mark after them - is the exclamation mark different in other languages? // If so then we need to deal with that as well // I remember that some languages have upside-down question marks before to mark a question - " has grown":{ - Italian:" è cresciuto" - Russian:" вырос" - French:" a grandi" - Romanian:" a crescut" + "has grown":{ + Italian:"è cresciuto" + Russian:"вырос" + French:"a grandi" + Romanian:"a crescut" } - " has been founded!":{ - Italian:" è stato fondato!" - Russian:" была создана!" - French:" a été fondé!" - Romanian:" a fost fondat!" + "has been founded":{ + Italian:"è stato fondato" + Russian:"была создана" + French:"a été fondé" + Romanian:"a fost fondat" } - " has been razed to the ground!":{ - Italian:" è stato raso al suolo!" - Russian:" был снесен на землю!" - French:" a été rasé à terre!" - Romanian:" a fost distrus la pământ!" + "has been razed to the ground":{ + Italian:"è stato raso al suolo" + Russian:"был снесен на землю" + French:"a été rasé à terre" + Romanian:"a fost distrus la pământ" } - "We have conquered the city of ":{ - Italian:"Abbiamo conquistato la città di " - Russian:"Мы завоевали город " - French:"Nous avons conquis la ville de " - Romanian:"Am cucerit orașul " + "We have conquered the city of":{ + Italian:"Abbiamo conquistato la città di" + Russian:"Мы завоевали город" + French:"Nous avons conquis la ville de" + Romanian:"Am cucerit orașul" } - "Research of ":{ // For technology notifications EG Research of Writing has completed - Italian:"Ricerca di " - Russian:"Исследование " - French:"Recherche de " - Romanian:"Cercetarea " + "Research of":{ // For technology notifications EG Research of Writing has completed + Italian:"Ricerca di" + Russian:"Исследование" + French:"Recherche de" + Romanian:"Cercetarea" } - " has completed":{ - Italian:" ha completato" - Russian:" завершилось" - French:" a completé" - Romanian:" a finalizat" + "has completed":{ + Italian:"ha completato" + Russian:"завершилось" + French:"a completé" + Romanian:"a finalizat" + } + + "You have entered a golden age":{ } - " is starving!":{ - Italian:" sta morendo di fame!" - Russian:" голодает!" - French:" est affamé!" - Romanian:" suferă de foame!" + "is starving":{ + Italian:"sta morendo di fame" + Russian:"голодает" + French:"est affamé" + Romanian:"suferă de foame" } "has been built in":{ @@ -367,59 +401,69 @@ Romanian:"Nu pot continua munca pentru" } - " has expanded its borders":{ - Italian:" ha allargato i suoi confini" - Russian:" расширил границы" - French:" a élargi ses frontières" - Romanian:" și-a extins frontierele" + "has expanded its borders":{ + Italian:"ha allargato i suoi confini" + Russian:"расширил границы" + French:"a élargi ses frontières" + Romanian:"și-a extins frontierele" } - "An enemy ":{ - Italian:"Un nemico " - Russian:"Враг " - French:"Un ennemi " - Romanian:"Un dusman " + "An enemy":{ + Italian:"Un nemico" + Russian:"Враг" + French:"Un ennemi" + Romanian:"Un dusman" } - " has attacked ":{ - Italian:" ha attaccato " - Russian:" атаковал " - French:" a attaqué " - Romanian:" a atacat " + "has attacked":{ + Italian:"ha attaccato" + Russian:"атаковал" + French:"a attaqué" + Romanian:"a atacat" } - " has destroyed ":{ - Italian:" ha distrutto " - Russian:" уничтожил " - French:" a détruit " - Romanian:" a distrus " + "has destroyed":{ + Italian:"ha distrutto" + Russian:"уничтожил" + French:"a détruit" + Romanian:"a distrus" } - " has captured ":{ - Italian:" ha catturato " - Russian:" захватил " - French:" a capturé " - Romanian:" a capturat " + "has captured":{ + Italian:"ha catturato" + Russian:"захватил" + French:"a capturé" + Romanian:"a capturat" } - " revealed near ":{ // As in "Coal revealed near London" - Italian:" rivelato vicino a" - Russian:" выявлено вблизи " - French:" a capturé " - Romanian:" dezvăluit aproape " + + "was destroyed while attacking":{ } + "our":{ + } + + + "revealed near":{ // As in "Coal revealed near London" + Italian:"rivelato vicino a" + Russian:"выявлено вблизи " + French:"a capturé" + Romanian:"dezvăluit aproape" + } + + + "The civilization of":{ Italian:"La civiltà di" Russian:"Цивилизация" French:"La civilisation de" Romanian:"Civilizația" } - "has been destroyed!":{ - Italian:"è stata distrutta!" - Russian:"был уничтожен!" - French:"a été détruit!" - Romanian:"a fost distrus!" + "has been destroyed":{ + Italian:"è stata distrutta" + Russian:"был уничтожен" + French:"a été détruit" + Romanian:"a fost distrus" } // Save and load game @@ -467,6 +511,19 @@ Romanian:"Salvat la" } + + // Battle table + + "City strength":{} + + "City health":{} + + "Captured":{ // Shown in the battle table when attacking a civilian unit or a defeated city + } + + "Attack":{ + } + // Terrains "Grassland":{ @@ -1089,6 +1146,8 @@ French:"Médias de masse" Romanian:"Mass media" } + "Flight":{ + } // Technologies (Information Era) @@ -1155,4 +1214,26 @@ Romanian:"Tehnologia viitoare" } + // Building unique abilities + + "+1 Science Per 2 Population":{} + "Worker construction increased 25%, provides 2 free workers":{} + "Free Social Policy":{} + "Golden Age length increases +50%":{} + "+33% great person generation in all cities":{} + "Gold from all trade routes +25%":{} + "40% of food is carried over after a new citizen is born":{} + "Jungles provide +2 science":{} + "Cost of acquiring new tiles reduced by 25%":{} + "Culture in all cities increased by 25%":{} + "Unhappiness from population decreased by 10%":{} + "Empire enters golden age":{} + "Free Great Artist Appears":{} + "Culture cost of adopting new Policies reduced by 10%":{} + "Provides 1 happiness per social policy":{} + "Must be next to desert":{} + "Enables construction of Spaceship parts":{} + "Increases production of spaceship parts by 50%":{} + "Spaceship part":{} + } diff --git a/core/src/com/unciv/logic/automation/Automation.kt b/core/src/com/unciv/logic/automation/Automation.kt index a427f66a..502ec94f 100644 --- a/core/src/com/unciv/logic/automation/Automation.kt +++ b/core/src/com/unciv/logic/automation/Automation.kt @@ -10,7 +10,6 @@ import com.unciv.models.gamebasics.GameBasics import com.unciv.models.gamebasics.unit.Unit import com.unciv.models.gamebasics.unit.UnitType import com.unciv.ui.utils.getRandom -import com.unciv.ui.utils.tr class Automation { @@ -115,7 +114,7 @@ class Automation { } if (cityInfo.civInfo == cityInfo.civInfo.gameInfo.getPlayerCivilization()) - cityInfo.civInfo.addNotification("{Work has started on} $currentConstruction".tr(), cityInfo.location, Color.BROWN) + cityInfo.civInfo.addNotification("{Work has started on} {$currentConstruction}", cityInfo.location, Color.BROWN) } } diff --git a/core/src/com/unciv/logic/battle/Battle.kt b/core/src/com/unciv/logic/battle/Battle.kt index 6276c9c5..554a10d7 100644 --- a/core/src/com/unciv/logic/battle/Battle.kt +++ b/core/src/com/unciv/logic/battle/Battle.kt @@ -6,7 +6,6 @@ import com.unciv.logic.GameInfo import com.unciv.logic.city.CityInfo import com.unciv.logic.map.TileInfo import com.unciv.models.gamebasics.unit.UnitType -import com.unciv.ui.utils.tr import java.util.* import kotlin.math.max @@ -49,12 +48,12 @@ class Battle(val gameInfo:GameInfo=UnCivGame.Current.gameInfo) { if(attacker.getCivilization()!=defender.getCivilization()) { // If what happened was that a civilian unit was captures, that's dealt with in the CaptureCilvilianUnit function val whatHappenedString = - if (attacker.isDefeated()) " was destroyed while attacking" - else " has " + (if (defender.isDefeated()) "destroyed" else "attacked") + if (attacker.isDefeated()) " {was destroyed while attacking}" + else " {has " + (if (defender.isDefeated()) "destroyed" else "attacked")+"}" val defenderString = if (defender.getUnitType() == UnitType.City) " " + defender.getName() - else " our " + defender.getName() - val notificationString = "{An enemy} ".tr() + attacker.getName() + whatHappenedString + defenderString + else " {our} " + defender.getName() + val notificationString = "{An enemy} " + attacker.getName() + whatHappenedString + defenderString defender.getCivilization().addNotification(notificationString, attackedTile.position, Color.RED) } @@ -100,7 +99,7 @@ class Battle(val gameInfo:GameInfo=UnCivGame.Current.gameInfo) { private fun conquerCity(city: CityInfo, attacker: ICombatant) { val enemyCiv = city.civInfo - attacker.getCivilization().addNotification("We have conquered the city of ${city.name}!",city.location, Color.RED) + attacker.getCivilization().addNotification("{We have conquered the city of} ${city.name}!",city.location, Color.RED) enemyCiv.cities.remove(city) attacker.getCivilization().cities.add(city) city.civInfo = attacker.getCivilization() @@ -121,7 +120,7 @@ class Battle(val gameInfo:GameInfo=UnCivGame.Current.gameInfo) { city.cityConstructions.builtBuildings.remove("Palace") if(enemyCiv.cities.isEmpty()) { gameInfo.getPlayerCivilization() - .addNotification("The civilization of ${enemyCiv.civName} has been destroyed!", null, Color.RED) + .addNotification("{The civilization of} ${enemyCiv.civName} {has been destroyed}!", null, Color.RED) } else{ enemyCiv.cities.first().cityConstructions.builtBuildings.add("Palace") // relocate palace @@ -149,7 +148,7 @@ class Battle(val gameInfo:GameInfo=UnCivGame.Current.gameInfo) { return } // barbarians don't capture civilians! val capturedUnit = (defender as MapUnitCombatant).unit - capturedUnit.civInfo.addNotification("{An enemy} ".tr()+attacker.getName()+" {has captured} our "+defender.getName()+"!", + capturedUnit.civInfo.addNotification("{An enemy} {"+attacker.getName()+"} {has captured} {our} {"+defender.getName()+"}!", defender.getTile().position, Color.RED) capturedUnit.civInfo = attacker.getCivilization() capturedUnit.owner = capturedUnit.civInfo.civName diff --git a/core/src/com/unciv/logic/city/CityConstructions.kt b/core/src/com/unciv/logic/city/CityConstructions.kt index 29c0341c..4d8ccc9d 100644 --- a/core/src/com/unciv/logic/city/CityConstructions.kt +++ b/core/src/com/unciv/logic/city/CityConstructions.kt @@ -52,7 +52,7 @@ class CityConstructions { fun getProductionForTileInfo(): String { var result = currentConstruction if (result != "Science" && result != "Gold") - result += "\r\nin " + turnsToConstruction(currentConstruction) + " {turns}".tr() + result += "\r\n{in} ".tr() + turnsToConstruction(currentConstruction) + " {turns}".tr() return result } @@ -96,7 +96,7 @@ class CityConstructions { currentConstruction = "lie" if (!construction.isBuildable(this)) { // We can't build this building anymore! (Wonder has been built / resource is gone / etc.) - cityInfo.civInfo.addNotification("{Cannot continue work on} $saveCurrentConstruction".tr(), cityInfo.location, Color.BROWN) + cityInfo.civInfo.addNotification("{Cannot continue work on} {$saveCurrentConstruction}", cityInfo.location, Color.BROWN) Automation().chooseNextConstruction(this) construction = getConstruction(currentConstruction) } else @@ -111,10 +111,10 @@ class CityConstructions { if(construction is Building && construction.isWonder && construction.requiredBuildingInAllCities==null) { val playerCiv = cityInfo.civInfo.gameInfo.getPlayerCivilization() val builtLocation = if(playerCiv.exploredTiles.contains(cityInfo.location)) cityInfo.name else "a faraway land" - playerCiv.addNotification("$currentConstruction {has been built in} $builtLocation".tr(), cityInfo.location, Color.BROWN) + playerCiv.addNotification("{$currentConstruction} {has been built in} $builtLocation", cityInfo.location, Color.BROWN) } else - cityInfo.civInfo.addNotification(currentConstruction + " {has been built in} ".tr() + cityInfo.name, cityInfo.location, Color.BROWN) + cityInfo.civInfo.addNotification("{$currentConstruction} {has been built in} " + cityInfo.name, cityInfo.location, Color.BROWN) Automation().chooseNextConstruction(this) } diff --git a/core/src/com/unciv/logic/city/CityExpansionManager.kt b/core/src/com/unciv/logic/city/CityExpansionManager.kt index 6f955e6e..cf05d41e 100644 --- a/core/src/com/unciv/logic/city/CityExpansionManager.kt +++ b/core/src/com/unciv/logic/city/CityExpansionManager.kt @@ -3,7 +3,6 @@ package com.unciv.logic.city import com.badlogic.gdx.graphics.Color import com.unciv.logic.automation.Automation import com.unciv.logic.map.TileInfo -import com.unciv.ui.utils.tr class CityExpansionManager { @@ -50,7 +49,7 @@ class CityExpansionManager { cultureStored += culture.toInt() if (cultureStored >= getCultureToNextTile()) { addNewTileWithCulture() - cityInfo.civInfo.addNotification(cityInfo.name + " {has expanded its borders}!".tr(), cityInfo.location, Color.PURPLE) + cityInfo.civInfo.addNotification(cityInfo.name + " {has expanded its borders}!", cityInfo.location, Color.PURPLE) } } diff --git a/core/src/com/unciv/logic/city/CityInfo.kt b/core/src/com/unciv/logic/city/CityInfo.kt index 68b7f7ff..60bd0a9d 100644 --- a/core/src/com/unciv/logic/city/CityInfo.kt +++ b/core/src/com/unciv/logic/city/CityInfo.kt @@ -95,7 +95,7 @@ class CityInfo { this.location = cityLocation civInfo.cities.add(this) if(civInfo == civInfo.gameInfo.getPlayerCivilization()) - civInfo.addNotification("$name has been founded!", cityLocation, Color.PURPLE) + civInfo.addNotification("$name {has been founded}!", cityLocation, Color.PURPLE) if (civInfo.policies.isAdopted("Legalism") && civInfo.cities.size <= 4) cityConstructions.addCultureBuilding() if (civInfo.cities.size == 1) { cityConstructions.builtBuildings.add("Palace") @@ -135,7 +135,7 @@ class CityInfo { if(isBeingRazed){ population.population-- if(population.population==0){ - civInfo.addNotification("$name has been razed to the ground!",location, Color.RED) + civInfo.addNotification("$name {has been razed to the ground}!",location, Color.RED) civInfo.cities.remove(this) if(isCapital() && civInfo.cities.isNotEmpty()) // Yes, we actually razed the capital. Some people do this. civInfo.cities.first().cityConstructions.builtBuildings.add("Palace") diff --git a/core/src/com/unciv/logic/city/PopulationManager.kt b/core/src/com/unciv/logic/city/PopulationManager.kt index 355eb9b7..1f0f7b17 100644 --- a/core/src/com/unciv/logic/city/PopulationManager.kt +++ b/core/src/com/unciv/logic/city/PopulationManager.kt @@ -4,7 +4,6 @@ import com.badlogic.gdx.graphics.Color import com.unciv.logic.automation.Automation import com.unciv.logic.map.TileInfo import com.unciv.models.stats.Stats -import com.unciv.ui.utils.tr class PopulationManager { @@ -48,7 +47,7 @@ class PopulationManager { { population-- foodStored = 0 - cityInfo.civInfo.addNotification(cityInfo.name + " {is starving}!".tr(), cityInfo.location, Color.RED) + cityInfo.civInfo.addNotification(cityInfo.name + " {is starving}!", cityInfo.location, Color.RED) } if (foodStored >= getFoodToNextPopulation()) // growth! @@ -57,7 +56,7 @@ class PopulationManager { if (cityInfo.buildingUniques.contains("40% of food is carried over after a new citizen is born")) foodStored += (0.4f * getFoodToNextPopulation()).toInt() // Aqueduct special population++ autoAssignPopulation() - cityInfo.civInfo.addNotification(cityInfo.name + " {has grown}!".tr(), cityInfo.location, Color.GREEN) + cityInfo.civInfo.addNotification(cityInfo.name + " {has grown}!", cityInfo.location, Color.GREEN) } } diff --git a/core/src/com/unciv/logic/civilization/GoldenAgeManager.kt b/core/src/com/unciv/logic/civilization/GoldenAgeManager.kt index c2e3d215..bfa36ba0 100644 --- a/core/src/com/unciv/logic/civilization/GoldenAgeManager.kt +++ b/core/src/com/unciv/logic/civilization/GoldenAgeManager.kt @@ -21,7 +21,7 @@ class GoldenAgeManager { if (civInfo.buildingUniques.contains("Golden Age length increases +50%")) turnsToGoldenAge *= 1.5 if (civInfo.policies.isAdopted("Freedom Complete")) turnsToGoldenAge *= 1.5 turnsLeftForCurrentGoldenAge += turnsToGoldenAge.toInt() - civInfo.addNotification("You have entered a golden age!", null, Color.GOLD) + civInfo.addNotification("{You have entered a golden age}!", null, Color.GOLD) } fun endTurn(happiness: Int) { diff --git a/core/src/com/unciv/logic/civilization/TechManager.kt b/core/src/com/unciv/logic/civilization/TechManager.kt index 9a0852fa..56da8c59 100644 --- a/core/src/com/unciv/logic/civilization/TechManager.kt +++ b/core/src/com/unciv/logic/civilization/TechManager.kt @@ -5,7 +5,6 @@ import com.badlogic.gdx.graphics.Color import com.unciv.models.gamebasics.GameBasics import com.unciv.models.gamebasics.Technology import com.unciv.models.gamebasics.unit.Unit -import com.unciv.ui.utils.tr import java.util.* class TechManager { @@ -57,7 +56,7 @@ class TechManager { techsInProgress.remove(currentTechnology) techsToResearch.remove(currentTechnology) techsResearched.add(currentTechnology) - civInfo.addNotification("{Research of} $currentTechnology {has completed}!".tr(), null, Color.BLUE) + civInfo.addNotification("{Research of} {$currentTechnology} {has completed}!", null, Color.BLUE) val revealedResource = GameBasics.TileResources.values.firstOrNull { currentTechnology == it.revealedBy } @@ -68,8 +67,8 @@ class TechManager { val closestCityTile = tileInfo.getTilesInDistance(4) .firstOrNull { it.isCityCenter() } if (closestCityTile != null) { - civInfo.addNotification( - revealedResource.name.tr() + " {revealed near} ".tr() + closestCityTile.getCity()!!.name, tileInfo.position, Color.BLUE) + civInfo.addNotification("{"+revealedResource.name + "} {revealed near} " + + closestCityTile.getCity()!!.name, tileInfo.position, Color.BLUE) break } } diff --git a/core/src/com/unciv/models/gamebasics/Building.kt b/core/src/com/unciv/models/gamebasics/Building.kt index 07a21a43..8232f877 100644 --- a/core/src/com/unciv/models/gamebasics/Building.kt +++ b/core/src/com/unciv/models/gamebasics/Building.kt @@ -40,7 +40,7 @@ class Building : NamedStats(), IConstruction{ /** * The bonus stats that a resource gets when this building is built */ - @JvmField var resourceBonusStats: Stats? = null + var resourceBonusStats: Stats? = null fun getRequiredTech(): Technology = GameBasics.Technologies[requiredTech]!! @@ -51,11 +51,11 @@ class Building : NamedStats(), IConstruction{ val improvedResources = GameBasics.TileResources.values.filter { it.building==name }.map { it.name.tr() } if(improvedResources.isNotEmpty()){ // buildings that improve resources - infoList += resourceBonusStats.toString() +" from "+improvedResources.joinToString() + infoList += improvedResources.joinToString()+ " {provide} ".tr()+ resourceBonusStats.toString() } if(unique!=null) infoList += unique!! - if(cityStrength!=0) infoList+="city strength +"+cityStrength - if(cityHealth!=0) infoList+="city health +"+cityHealth + if(cityStrength!=0) infoList+="{City strength} +".tr()+cityStrength + if(cityHealth!=0) infoList+="{City health} +".tr()+cityHealth return infoList.joinToString() } @@ -96,8 +96,8 @@ class Building : NamedStats(), IConstruction{ fun getDescription(forBuildingPickerScreen: Boolean, adoptedPolicies: HashSet): String { val stats = getStats(adoptedPolicies) val stringBuilder = StringBuilder() - if (!forBuildingPickerScreen) stringBuilder.appendln("Cost: $cost") - if (isWonder) stringBuilder.appendln("Wonder") + if (!forBuildingPickerScreen) stringBuilder.appendln("{Cost}: $cost".tr()) + if (isWonder) stringBuilder.appendln("Wonder".tr()) if (!forBuildingPickerScreen && requiredTech != null) stringBuilder.appendln("Requires {$requiredTech} to be researched".tr()) if (!forBuildingPickerScreen && requiredBuilding != null) @@ -125,13 +125,13 @@ class Building : NamedStats(), IConstruction{ } if (resourceBonusStats != null) { val resources = GameBasics.TileResources.values.filter { name == it.building }.joinToString { it.name.tr() } - stringBuilder.appendln("$resources provide $resourceBonusStats") + stringBuilder.appendln("$resources {provide} $resourceBonusStats") } - if(cityStrength!=0) stringBuilder.appendln("City strength +"+cityStrength) - if(cityHealth!=0) stringBuilder.appendln("City health +"+cityHealth) + if(cityStrength!=0) stringBuilder.appendln("{City strength} +".tr() + cityStrength) + if(cityHealth!=0) stringBuilder.appendln("{City health} +".tr() + cityHealth) if (maintenance != 0) - stringBuilder.appendln("Maintenance cost: $maintenance {Gold}".tr()) + stringBuilder.appendln("{Maintenance cost}: $maintenance {Gold}".tr()) return stringBuilder.toString().trim() } diff --git a/core/src/com/unciv/models/gamebasics/Technology.kt b/core/src/com/unciv/models/gamebasics/Technology.kt index 5dacca8d..9cb20993 100644 --- a/core/src/com/unciv/models/gamebasics/Technology.kt +++ b/core/src/com/unciv/models/gamebasics/Technology.kt @@ -12,8 +12,8 @@ class Technology : ICivilopedia { val improvedImprovements = GameBasics.TileImprovements.values.filter { it.improvingTech==name }.groupBy { it.improvingTechStats.toString() } improvedImprovements.forEach{ - val impimpString = it.value.joinToString { it.name } +" provide" + (if(it.value.size==1) "s" else "") +" "+it.key - SB.appendln(impimpString) + val impimpString = it.value.joinToString { it.name.tr() } +" {provide" + (if(it.value.size==1) "s" else "") +"} "+it.key + SB.appendln(impimpString.tr()) } val enabledUnits = GameBasics.Units.values.filter { it.requiredTech==name } diff --git a/core/src/com/unciv/ui/VictoryScreen.kt b/core/src/com/unciv/ui/VictoryScreen.kt index ae1e7335..9464d285 100644 --- a/core/src/com/unciv/ui/VictoryScreen.kt +++ b/core/src/com/unciv/ui/VictoryScreen.kt @@ -7,6 +7,7 @@ import com.unciv.UnCivGame import com.unciv.models.gamebasics.GameBasics import com.unciv.ui.pickerscreens.PickerScreen import com.unciv.ui.utils.addClickListener +import com.unciv.ui.utils.enable import com.unciv.ui.utils.tr class VictoryScreen : PickerScreen() { @@ -50,6 +51,7 @@ class VictoryScreen : PickerScreen() { rightSideButton.setText("Start new game".tr()) rightSideButton.isVisible=true closeButton.isVisible=false + rightSideButton.enable() rightSideButton.addClickListener { UnCivGame.Current.startNewGame(true) } } diff --git a/core/src/com/unciv/ui/pickerscreens/ImprovementPickerScreen.kt b/core/src/com/unciv/ui/pickerscreens/ImprovementPickerScreen.kt index f89aacf2..f419988e 100644 --- a/core/src/com/unciv/ui/pickerscreens/ImprovementPickerScreen.kt +++ b/core/src/com/unciv/ui/pickerscreens/ImprovementPickerScreen.kt @@ -36,7 +36,7 @@ class ImprovementPickerScreen(tileInfo: TileInfo) : PickerScreen() { improvementButton.add(ImageGetter.getImage("OtherIcons/Stop.png")).size(30f).pad(10f) else improvementButton.add(ImageGetter.getImprovementIcon(improvement.name)).size(30f).pad(10f) - improvementButton.add(Label(improvement.name + " - " + improvement.getTurnsToBuild(civInfo) + " "+"turns".tr(),skin) + improvementButton.add(Label(improvement.name + " - " + improvement.getTurnsToBuild(civInfo) + " {turns}".tr(),skin) .setFontColor(Color.WHITE)).pad(10f) improvementButton.addClickListener { diff --git a/core/src/com/unciv/ui/pickerscreens/TechPickerScreen.kt b/core/src/com/unciv/ui/pickerscreens/TechPickerScreen.kt index 2e63603b..0f8c9a09 100644 --- a/core/src/com/unciv/ui/pickerscreens/TechPickerScreen.kt +++ b/core/src/com/unciv/ui/pickerscreens/TechPickerScreen.kt @@ -64,7 +64,6 @@ class TechPickerScreen(internal val civInfo: CivilizationInfo) : PickerScreen() if (isFreeTechPick) { civTech.techsResearched.add(selectedTech!!.name) civTech.freeTechs -= 1 - civInfo.addNotification("We have stumbled upon the discovery of " + selectedTech!!.name + "!", null, Color.BLUE) if (selectedTech!!.name == civTech.currentTechnology()) civTech.techsToResearch.remove(selectedTech!!.name) } else @@ -99,7 +98,7 @@ class TechPickerScreen(internal val civInfo: CivilizationInfo) : PickerScreen() text += " (" + techsToResearch.indexOf(techName) + ")" } - if (!civTech.isResearched(techName)) text += "\r\n" + turnsToTech[techName] + " "+"turns".tr() + if (!civTech.isResearched(techName)) text += "\r\n" + turnsToTech[techName] + " {turns}".tr() TB.setText(text) } } @@ -139,13 +138,13 @@ class TechPickerScreen(internal val civInfo: CivilizationInfo) : PickerScreen() while (!prerequisites.isEmpty()) techsToResearch.add(prerequisites.pop()) } - pick("{Research} \r\n".tr() + techsToResearch[0]) + pick("{Research} \r\n".tr() + techsToResearch[0].tr()) setButtonsInfo() } private fun selectTechnologyForFreeTech(tech: Technology) { if (researchableTechs.contains(tech.name)) { - pick("Pick " + selectedTech!!.name + "\r\n as free tech!") + pick("Pick " + selectedTech!!.name.tr() + "\r\n as free tech!") } else { rightSideButton.setText("Pick a free tech") rightSideButton.disable() diff --git a/core/src/com/unciv/ui/utils/CameraStageBaseScreen.kt b/core/src/com/unciv/ui/utils/CameraStageBaseScreen.kt index 0ad971de..6b28438a 100644 --- a/core/src/com/unciv/ui/utils/CameraStageBaseScreen.kt +++ b/core/src/com/unciv/ui/utils/CameraStageBaseScreen.kt @@ -130,7 +130,7 @@ fun Label.setFontColor(color:Color): Label {style=Label.LabelStyle(style).apply fun String.tr(): String { if(contains("{")){ // sentence var toReturn = this - return Regex("\\{(.*)}").replace(this,{matchResult -> matchResult.groups[1]!!.value.tr() }) + return Regex("\\{(.*?)}").replace(this,{matchResult -> matchResult.groups[1]!!.value.tr() }) } else return GameBasics.Translations.get(this,UnCivGame.Current.settings.language) // single word } diff --git a/core/src/com/unciv/ui/worldscreen/NotificationsScroll.kt b/core/src/com/unciv/ui/worldscreen/NotificationsScroll.kt index 753484d9..6754c1e5 100644 --- a/core/src/com/unciv/ui/worldscreen/NotificationsScroll.kt +++ b/core/src/com/unciv/ui/worldscreen/NotificationsScroll.kt @@ -18,7 +18,7 @@ class NotificationsScroll(private val notifications: List, interna internal fun update() { notificationsTable.clearChildren() for (notification in notifications) { - val label = Label(notification.text, CameraStageBaseScreen.skin).setFontColor(Color.BLACK) + val label = Label(notification.text.tr(), CameraStageBaseScreen.skin).setFontColor(Color.BLACK) .setFont(14) val minitable = Table() diff --git a/core/src/com/unciv/ui/worldscreen/WorldScreen.kt b/core/src/com/unciv/ui/worldscreen/WorldScreen.kt index 7abbaf47..f25ec967 100644 --- a/core/src/com/unciv/ui/worldscreen/WorldScreen.kt +++ b/core/src/com/unciv/ui/worldscreen/WorldScreen.kt @@ -93,10 +93,10 @@ class WorldScreen : CameraStageBaseScreen() { } if (civInfo.tech.currentTechnology() == null) - techButton.setText("Choose a tech!") + techButton.setText("{Pick a tech}!".tr()) else - techButton.setText(civInfo.tech.currentTechnology() + "\r\n" - + civInfo.tech.turnsToTech(civInfo.tech.currentTechnology()!!) + " "+"turns".tr()) + techButton.setText(civInfo.tech.currentTechnology()!!.tr() + "\r\n" + + civInfo.tech.turnsToTech(civInfo.tech.currentTechnology()!!) + " {turns}".tr()) techButton.setSize(techButton.prefWidth, techButton.prefHeight) techButton.setPosition(10f, topBar.y - techButton.height - 5f) diff --git a/core/src/com/unciv/ui/worldscreen/bottombar/BattleTable.kt b/core/src/com/unciv/ui/worldscreen/bottombar/BattleTable.kt index ca55dbf3..349a5222 100644 --- a/core/src/com/unciv/ui/worldscreen/bottombar/BattleTable.kt +++ b/core/src/com/unciv/ui/worldscreen/bottombar/BattleTable.kt @@ -63,8 +63,8 @@ class BattleTable(val worldScreen: WorldScreen): Table() { row().pad(5f) - add("Strength: "+attacker.getAttackingStrength(defender)) - add("Strength: "+defender.getDefendingStrength(attacker)) + add("{Strength}: ".tr()+attacker.getAttackingStrength(defender)) + add("{Strength}: ".tr()+defender.getDefendingStrength(attacker)) row().pad(5f) val attackerModifiers = BattleDamage().getAttackModifiers(attacker,defender) .map { it.key+": "+(if(it.value>0)"+" else "")+(it.value*100).toInt()+"%" } @@ -104,14 +104,14 @@ class BattleTable(val worldScreen: WorldScreen): Table() { if(attacker.isMelee() && (defender.getUnitType()==UnitType.Civilian || defender.getUnitType()==UnitType.City && defender.isDefeated())) { add("") - add("Captured!") + add("{Captured!}".tr()) } else { - add("Health: " + attacker.getHealth().toString() + " -> " + add("{Health}: ".tr() + attacker.getHealth().toString() + " -> " + (attacker.getHealth() - damageToAttacker)) - add("Health: " + defender.getHealth().toString() + " -> " + add("{Health}: ".tr() + defender.getHealth().toString() + " -> " + (defender.getHealth() - damageToDefender)) }