diff options
author | metamuffin <metamuffin@disroot.org> | 2024-09-03 18:46:56 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-09-03 18:46:56 +0200 |
commit | ac28cfd3085b4b1b87d5708084df3a1d08901a91 (patch) | |
tree | 6d796584cc5d64ebfb6f176ec9a2d730d651ac13 | |
parent | 5c1f99fe6c5286d9fad42fff6ae5849143c4b1e0 (diff) | |
download | hurrycurry-ac28cfd3085b4b1b87d5708084df3a1d08901a91.tar hurrycurry-ac28cfd3085b4b1b87d5708084df3a1d08901a91.tar.bz2 hurrycurry-ac28cfd3085b4b1b87d5708084df3a1d08901a91.tar.zst |
po export
-rw-r--r-- | client/makefile | 2 | ||||
-rw-r--r-- | client/project.godot | 1 | ||||
-rw-r--r-- | locale/tools/src/main.rs | 45 |
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(()) } |