summaryrefslogtreecommitdiff
path: root/locale/tools/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'locale/tools/src/main.rs')
-rw-r--r--locale/tools/src/main.rs35
1 files changed, 34 insertions, 1 deletions
diff --git a/locale/tools/src/main.rs b/locale/tools/src/main.rs
index 1ae59c83..68805b99 100644
--- a/locale/tools/src/main.rs
+++ b/locale/tools/src/main.rs
@@ -26,11 +26,30 @@ enum Args {
ExportPo {
#[arg(long)]
remap_ids: Option<PathBuf>,
+ #[arg(long)]
+ fallback: Option<PathBuf>,
input: PathBuf,
output: PathBuf,
},
}
+static NATIVE_LANGUAGE_NAMES: &[(&'static str, &'static str)] = &[
+ ("en", "English"),
+ ("de", "Deutsch"),
+ ("fr", "Français"),
+ ("es", "Español"),
+ ("eu", "euskara"),
+ ("ja", "日本語"),
+ ("he", "עִברִית"),
+ ("tr", "Türkçe"),
+ ("fi", "suomen"),
+ ("ar", "العربية"),
+ ("zh_Hans", "中文 (简化字)"),
+ ("zh_Hant", "中文 (繁體字)"),
+ ("pl", "Polski"),
+ ("pt", "Português"),
+];
+
fn main() -> Result<()> {
let args = Args::parse();
match args {
@@ -38,9 +57,23 @@ fn main() -> Result<()> {
remap_ids: id_map,
input,
output,
+ fallback,
} => {
- let ini = load_ini(&input)?;
+ let mut ini = load_ini(&input)?;
let id_map = id_map.map(|path| load_ini(&path)).transpose()?;
+ if let Some(fallback) = fallback {
+ let f = load_ini(&fallback)?;
+ for (k, v) in f {
+ if !ini.contains_key(&k) {
+ eprintln!("fallback: key {k:?} is missing");
+ ini.insert(k, v);
+ }
+ }
+ }
+
+ for &(code, name) in NATIVE_LANGUAGE_NAMES {
+ ini.insert(format!("c.settings.ui.language.{code}"), name.to_owned());
+ }
File::create(output)?.write_all(
format!(