summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-09-03 18:46:56 +0200
committermetamuffin <metamuffin@disroot.org>2024-09-03 18:46:56 +0200
commitac28cfd3085b4b1b87d5708084df3a1d08901a91 (patch)
tree6d796584cc5d64ebfb6f176ec9a2d730d651ac13
parent5c1f99fe6c5286d9fad42fff6ae5849143c4b1e0 (diff)
downloadhurrycurry-ac28cfd3085b4b1b87d5708084df3a1d08901a91.tar
hurrycurry-ac28cfd3085b4b1b87d5708084df3a1d08901a91.tar.bz2
hurrycurry-ac28cfd3085b4b1b87d5708084df3a1d08901a91.tar.zst
po export
-rw-r--r--client/makefile2
-rw-r--r--client/project.godot1
-rw-r--r--locale/tools/src/main.rs45
3 files changed, 36 insertions, 12 deletions
diff --git a/client/makefile b/client/makefile
index 71a4fb38..2f17bee1 100644
--- a/client/makefile
+++ b/client/makefile
@@ -37,4 +37,4 @@ po/locales.csv: $(LT)
po/%.po: ../locale/%.ini $(LT)
@mkdir -p po
- $(LT) export-po $< $@
+ $(LT) export-po $< $@ --remap-ids ../locale/en.ini
diff --git a/client/project.godot b/client/project.godot
index 56715d1f..65ff288c 100644
--- a/client/project.godot
+++ b/client/project.godot
@@ -195,6 +195,7 @@ scroll_up={
[internationalization]
+locale/translations=PackedStringArray("res://po/ar.po", "res://po/de.po", "res://po/en.po", "res://po/es.po", "res://po/eu.po", "res://po/fi.po", "res://po/fr.po", "res://po/he.po", "res://po/ja.po", "res://po/pl.po", "res://po/pt.po", "res://po/tr.po", "res://po/zh_Hans.po", "res://po/zh_Hant.po")
locale/translations_pot_files=PackedStringArray("res://global.gd", "res://menu/overlay.tscn", "res://menu/setup.tscn", "res://menu/character.tscn", "res://menu/error.tscn", "res://menu/ingame.tscn", "res://menu/lobby.tscn", "res://menu/main.tscn", "res://menu/settings.tscn", "res://menu/ingame.gd", "res://menu/lobby.gd", "res://menu/popup_message.gd", "res://multiplayer.gd", "res://menu/hairstyle_preview.gd", "res://menu/credits.tscn", "res://menu/credits.gd", "res://menu/rating/rating.gd", "res://menu/warning_popup.tscn", "res://menu/play.tscn", "res://menu/settings/input/input_value_node.gd", "res://menu/settings/input/input_value_node.tscn", "res://menu/settings/input/input_manager.gd")
[rendering]
diff --git a/locale/tools/src/main.rs b/locale/tools/src/main.rs
index de11cd35..401fbc63 100644
--- a/locale/tools/src/main.rs
+++ b/locale/tools/src/main.rs
@@ -24,6 +24,8 @@ enum Args {
output: PathBuf,
},
ExportPo {
+ #[arg(long)]
+ remap_ids: Option<PathBuf>,
input: PathBuf,
output: PathBuf,
},
@@ -32,20 +34,41 @@ enum Args {
fn main() -> Result<()> {
let args = Args::parse();
match args {
- Args::ExportPo { input, output } => {
+ Args::ExportPo {
+ remap_ids: id_map,
+ input,
+ output,
+ } => {
let ini = load_ini(&input)?;
+ let id_map = id_map.map(|path| load_ini(&path)).transpose()?;
File::create(output)?.write_all(
- ini.into_iter()
- .map(|(key, value)| {
- format!(
- "msgid {}\nmsgstr{}\n",
- serde_json::to_string(&key).unwrap(),
- serde_json::to_string(&value).unwrap(),
- )
- })
- .collect::<String>()
- .as_bytes(),
+ format!(
+ r#"
+msgid ""
+msgstr ""
+"Language: {}\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+{}"#,
+ input.file_stem().unwrap().to_string_lossy(),
+ ini.into_iter()
+ .map(|(mut key, value)| {
+ if let Some(id_map) = &id_map {
+ if let Some(new_id) = id_map.get(&key) {
+ key = new_id.to_owned()
+ }
+ }
+ format!(
+ "msgid {}\nmsgstr {}\n\n",
+ serde_json::to_string(&key).unwrap(),
+ serde_json::to_string(&value).unwrap(),
+ )
+ })
+ .collect::<String>()
+ )
+ .as_bytes(),
)?;
Ok(())
}