Many more things are now translated!

Added more things to translate to translations.json
This commit is contained in:
Yair Morgenstern 2018-06-18 21:41:07 +03:00
parent 710e5eaa8d
commit aa11c49eec
19 changed files with 212 additions and 146 deletions

View file

@ -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"

View file

@ -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":{}
}

View file

@ -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)
}
}

View file

@ -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

View file

@ -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)
}

View file

@ -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)
}
}

View file

@ -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")

View file

@ -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)
}
}

View file

@ -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) {

View file

@ -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
}
}

View file

@ -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>): 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()
}

View file

@ -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 }

View file

@ -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) }
}

View file

@ -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 {

View file

@ -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()

View file

@ -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
}

View file

@ -18,7 +18,7 @@ class NotificationsScroll(private val notifications: List<Notification>, 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()

View file

@ -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)

View file

@ -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))
}