Many more things are now translated!
Added more things to translate to translations.json
This commit is contained in:
parent
710e5eaa8d
commit
aa11c49eec
19 changed files with 212 additions and 146 deletions
|
@ -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"
|
||||
|
|
|
@ -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":{}
|
||||
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
|
||||
|
|
|
@ -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 }
|
||||
|
|
|
@ -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) }
|
||||
}
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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))
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue