lang updater

This commit is contained in:
minjaesong
2019-02-24 00:27:50 +09:00
parent e56149f953
commit 7cbe09eee8
34 changed files with 266 additions and 198 deletions

View File

@@ -5,7 +5,7 @@ import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.console.ConsoleCommand
import net.torvald.terrarum.console.Echo
import net.torvald.terrarum.modulebasegame.Ingame
import net.torvald.terrarum.serialise.SavegameWriter
import net.torvald.terrarum.utils.JsonWriter
import java.io.BufferedWriter
import java.io.FileWriter
import java.io.IOException
@@ -17,7 +17,7 @@ internal object GsonTest : ConsoleCommand {
override fun execute(args: Array<String>) {
if (args.size == 2) {
val jsonBuilder = SavegameWriter.getJsonBuilder()
val jsonBuilder = JsonWriter.getJsonBuilder()
val jsonString = jsonBuilder.toJson((Terrarum.ingame!! as Ingame).actorNowPlaying)

View File

@@ -8,11 +8,11 @@ import com.badlogic.gdx.graphics.glutils.ShapeRenderer
import net.torvald.terrarum.*
import net.torvald.terrarum.AppLoader.printdbg
import net.torvald.terrarum.Terrarum.gamepadLabelEast
import net.torvald.terrarum.Terrarum.gamepadLabelLEFTRIGHT
import net.torvald.terrarum.Terrarum.gamepadLabelLStick
import net.torvald.terrarum.Terrarum.gamepadLabelLT
import net.torvald.terrarum.Terrarum.gamepadLabelNorth
import net.torvald.terrarum.Terrarum.gamepadLabelRIGHT
import net.torvald.terrarum.Terrarum.gamepadLabelRStick
import net.torvald.terrarum.Terrarum.gamepadLabelRT
import net.torvald.terrarum.Terrarum.gamepadLabelStart
import net.torvald.terrarum.Terrarum.gamepadLabelWest
import net.torvald.terrarum.gameactors.ActorWBMovable
@@ -57,7 +57,7 @@ class UIInventoryFull(
internal val catArrangement: IntArray = intArrayOf(9,6,7,1,0,2,3,4,5,8)
private val SP = "${0x3000.toChar()}${0x3000.toChar()}"
private val SP = "${0x3000.toChar()} "
val listControlHelp: String
get() = if (AppLoader.environment == RunningEnvironment.PC)
"${0xe031.toChar()} ${Lang["GAME_ACTION_CLOSE"]}$SP" +
@@ -66,7 +66,8 @@ class UIInventoryFull(
"${0xe034.toChar()} ${Lang["GAME_INVENTORY_DROP"]}"
else
"$gamepadLabelStart ${Lang["GAME_ACTION_CLOSE"]}$SP" +
"$gamepadLabelLEFTRIGHT ${"$ Section"}$SP" +
"$gamepadLabelLT ${Lang["CONTEXT_ITEM_MAP"]}$SP" +
"$gamepadLabelRT ${Lang["MENU_LABEL_MENU"]}$SP" +
"$gamepadLabelWest ${Lang["GAME_INVENTORY_USE"]}$SP" +
"$gamepadLabelNorth$gamepadLabelLStick ${Lang["GAME_INVENTORY_REGISTER"]}$SP" +
"$gamepadLabelEast ${Lang["GAME_INVENTORY_DROP"]}"
@@ -77,13 +78,13 @@ class UIInventoryFull(
else
"$gamepadLabelStart ${Lang["GAME_ACTION_CLOSE"]}$SP" +
"$gamepadLabelRStick ${Lang["GAME_ACTION_MOVE_VERB"]}$SP" +
"$gamepadLabelRIGHT ${Lang["GAME_INVENTORY"]}"
"$gamepadLabelRT ${Lang["GAME_INVENTORY"]}"
val gameMenuControlHelp: String
get() = if (AppLoader.environment == RunningEnvironment.PC)
"${0xe031.toChar()} ${Lang["GAME_ACTION_CLOSE"]}"
else
"$gamepadLabelStart ${Lang["GAME_ACTION_CLOSE"]}$SP" +
"${0xe068.toChar()} ${Lang["GAME_INVENTORY"]}"
"$gamepadLabelLT ${Lang["GAME_INVENTORY"]}"
val controlHelpHeight = Terrarum.fontGame.lineHeight
private var encumbrancePerc = 0f

View File

@@ -1,7 +1,6 @@
package net.torvald.terrarum.serialise
import com.badlogic.gdx.Gdx
import com.google.gson.GsonBuilder
import net.torvald.terrarum.AppLoader
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.gameactors.AVKey
@@ -10,6 +9,7 @@ import net.torvald.terrarum.itemproperties.GameItem
import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.*
import net.torvald.terrarum.roundInt
import net.torvald.terrarum.utils.JsonWriter.getJsonBuilder
import java.io.File
import java.nio.charset.Charset
@@ -133,23 +133,6 @@ object SavegameWriter {
TODO()
}
fun getJsonBuilder() = if (AppLoader.IS_DEVELOPMENT_BUILD) {
GsonBuilder()
.setPrettyPrinting()
.serializeNulls()
.disableHtmlEscaping()
.enableComplexMapKeySerialization()
.create()
}
else {
GsonBuilder()
.serializeNulls()
.disableHtmlEscaping()
.enableComplexMapKeySerialization()
.create()
}
private fun serialiseActor(a: Actor): ByteArray64 {
val gson = getJsonBuilder().toJson(a).toByteArray(charset)
return ByteArray64.fromByteArray(gson)

View File

@@ -107,83 +107,83 @@ internal object WriteLayerDataZip {
wb(PAYLOAD_HEADER); wb("TERR".toByteArray())
wi48(world.width * world.height * 3L / 2)
deflater = DeflaterOutputStream(outputStream, Deflater(Deflater.BEST_COMPRESSION), true)
deflater = DeflaterOutputStream(outputStream, Deflater(Deflater.BEST_COMPRESSION, true), false)
deflater.write(world.terrainArray)
deflater.write(world.layerTerrainLowBits.data)
deflater.finish()
deflater.flush(); deflater.finish()
wb(PAYLOAD_FOOTER)
// WALL payload
wb(PAYLOAD_HEADER); wb("WALL".toByteArray())
wi48(world.width * world.height * 3L / 2)
deflater = DeflaterOutputStream(outputStream, Deflater(Deflater.BEST_COMPRESSION), true)
deflater = DeflaterOutputStream(outputStream, Deflater(Deflater.BEST_COMPRESSION, true), false)
deflater.write(world.wallArray)
deflater.write(world.layerWallLowBits.data)
deflater.finish()
deflater.flush(); deflater.finish()
wb(PAYLOAD_FOOTER)
// WIRE payload
wb(PAYLOAD_HEADER); wb("WIRE".toByteArray())
wi48(world.width * world.height.toLong())
deflater = DeflaterOutputStream(outputStream, Deflater(Deflater.BEST_COMPRESSION), true)
deflater = DeflaterOutputStream(outputStream, Deflater(Deflater.BEST_COMPRESSION, true), false)
deflater.write(world.wireArray)
deflater.finish()
deflater.flush(); deflater.finish()
wb(PAYLOAD_FOOTER)
// TdMG payload
wb(PAYLOAD_HEADER); wb("TdMG".toByteArray())
wi48(world.terrainDamages.size * 10L)
deflater = DeflaterOutputStream(outputStream, Deflater(Deflater.BEST_COMPRESSION), true)
deflater = DeflaterOutputStream(outputStream, Deflater(Deflater.BEST_COMPRESSION, true), false)
world.terrainDamages.forEach { t, u ->
deflater.write(t.toULittle48())
deflater.write(u.toRawBits().toLittle())
}
deflater.finish()
deflater.flush(); deflater.finish()
wb(PAYLOAD_FOOTER)
// WdMG payload
wb(PAYLOAD_HEADER); wb("WdMG".toByteArray())
wi48(world.wallDamages.size * 10L)
deflater = DeflaterOutputStream(outputStream, Deflater(Deflater.BEST_COMPRESSION), true)
deflater = DeflaterOutputStream(outputStream, Deflater(Deflater.BEST_COMPRESSION, true), false)
world.wallDamages.forEach { t, u ->
deflater.write(t.toULittle48())
deflater.write(u.toRawBits().toLittle())
}
deflater.finish()
deflater.flush(); deflater.finish()
wb(PAYLOAD_FOOTER)
// FlTP payload
wb(PAYLOAD_HEADER); wb("FlTP".toByteArray())
wi48(world.fluidTypes.size * 8L)
deflater = DeflaterOutputStream(outputStream, Deflater(Deflater.BEST_COMPRESSION), true)
deflater = DeflaterOutputStream(outputStream, Deflater(Deflater.BEST_COMPRESSION, true), false)
world.fluidTypes.forEach { t, u ->
deflater.write(t.toULittle48())
deflater.write(u.value.toLittleShort())
}
deflater.finish()
deflater.flush(); deflater.finish()
wb(PAYLOAD_FOOTER)
// FlFL payload
wb(PAYLOAD_HEADER); wb("FlFL".toByteArray())
wi48(world.fluidFills.size * 10L)
deflater = DeflaterOutputStream(outputStream, Deflater(Deflater.BEST_COMPRESSION), true)
deflater = DeflaterOutputStream(outputStream, Deflater(Deflater.BEST_COMPRESSION, true), false)
world.fluidFills.forEach { t, u ->
deflater.write(t.toULittle48())
deflater.write(u.toRawBits().toLittle())
}
deflater.finish()
deflater.flush(); deflater.finish()
wb(PAYLOAD_FOOTER)

View File

@@ -0,0 +1,72 @@
import net.torvald.terrarum.utils.JsonFetcher
import net.torvald.terrarum.utils.JsonWriter
import java.io.File
/**
* Created by minjaesong on 2019-02-23.
*/
val locales = arrayOf(
"en",
"frFR",
"es",
"de",
"it",
"ptBR",
"ptPT",
"ruRU",
"elGR",
"trTR",
"daDK",
"noNB",
"svSE",
"nlNL",
"plPL",
"fiFI",
"jaJP",
"zhCN",
"zhTW",
"koKR",
"csCZ",
"huHU",
"roRO",
"thTH",
"bgBG",
"heIL",
"ar",
"bsBS",
"msMS",
"idID"
)
val delimiter = '\t'
val input = arrayOf(
"CONTEXT_ITEM_MAP [Noun] Map Carte Mapa Karte Mappa Mapa Mapa Карта Χαρτης Harita Kort Kart Karta Kaart Mapa Kartta 地図 地图 地圖 지도 Mapa Térkép Hartă แผนที่ Карта מפה خريطة Mapa Peta Peta",
"MENU_LABEL_MENU We have \"Main Menu\" but don't have generic \"Menu\" Menu Menu Menú Menü Menu Menu Menu Меню Μενού Menü Menu Meny Meny Menu Menu Valikko メニュー 菜单 功能表 메뉴 Nabídka Menü Meniu เมนู Меню תפריט القائمة Meni Menu Menu",
"GAME_INVENTORY_REGISTER [Infinitive/tutorial verb] to register an item onto a keyboard shortcut, as favourites, etc. Register Inscrire Registrar Registrieren Registrare Registrar Registar Зарегистрировать Εγγραφή Registrer Registrer Registrera Registreren Zarejestruj Rekisteröidä 登録する 注册 註冊 등록하기 Zaregistrovat "
)
val inTable = input.map { it.split(delimiter) }
fun main() {
locales.forEachIndexed { index, it ->
val file = File("./assets/mods/basegame/locales/$it/game.json")
println("Locale: $it")
if (file.exists()) {
val jsonObject = JsonFetcher(file)
inTable.forEach { record ->
val key = record[0]
val value = record[index + 2]
if (value.isNotBlank()) {
jsonObject.addProperty(key, value)
}
}
JsonWriter.writeToFile(jsonObject, file.absolutePath)
}
}
}

View File

@@ -1,5 +1,5 @@
import net.torvald.terrarum.serialise.SavegameWriter
import net.torvald.terrarum.utils.JsonWriter
import org.dyn4j.geometry.Vector2
/**
@@ -21,7 +21,7 @@ object GsonTest {
operator fun invoke() {
val gson = SavegameWriter.getJsonBuilder()
val gson = JsonWriter.getJsonBuilder()
val jsonString = gson.toJson(testClass)
println(jsonString)

View File

@@ -1,5 +1,8 @@
package net.torvald.terrarum.utils
import com.google.gson.GsonBuilder
import net.torvald.terrarum.AppLoader
/**
* Created by minjaesong on 2016-03-04.
*/
@@ -7,6 +10,25 @@ object JsonWriter {
private val formattingRegex = Regex("""(?<=[\{,\[])|(?=[\]}])""")
fun getJsonBuilder() = if (AppLoader.IS_DEVELOPMENT_BUILD) {
getPrettyBuilder()
}
else {
GsonBuilder()
.serializeNulls()
.disableHtmlEscaping()
.enableComplexMapKeySerialization()
.create()
}
fun getPrettyBuilder() = GsonBuilder()
.setPrettyPrinting()
.serializeNulls()
.disableHtmlEscaping()
.enableComplexMapKeySerialization()
.create()
/**
* serialise a class to the file as JSON, using Google GSON.
*
@@ -15,9 +37,9 @@ object JsonWriter {
*/
@Throws(java.io.IOException::class)
fun writeToFile(c: Any, path: String) {
val classElem = com.google.gson.Gson().toJsonTree(c)
val jsonString = classElem.toString()
val writer = java.io.FileWriter(path)
val jsonString = getJsonBuilder().toJson(c)
val writer = java.io.FileWriter(path, false)
writer.write(jsonString.replace(formattingRegex, "\n"))
writer.close()
}
@@ -30,8 +52,10 @@ object JsonWriter {
*/
@Throws(java.io.IOException::class)
fun writeToFile(jsonObject: com.google.gson.JsonObject, path: String) {
val writer = java.io.FileWriter(path)
writer.write(jsonObject.toString().replace(formattingRegex, "\n"))
val writer = java.io.FileWriter(path, false)
writer.write(getPrettyBuilder().toJson(jsonObject))
//writer.write(jsonObject.toString().replace(formattingRegex, "\n"))
writer.close()
}