diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-07-10 17:43:38 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-08-11 22:04:40 +0000 |
| commit | 757a4885c4c46d13712108ac3f86744f44da3ed0 (patch) | |
| tree | 4089d35d4443920f145549cb1fe5f1c60e3aa152 | |
| parent | f3dfa68c98db4614b2cfea8857f03540ea537bc1 (diff) | |
| download | mullvadvpn-757a4885c4c46d13712108ac3f86744f44da3ed0.tar.xz mullvadvpn-757a4885c4c46d13712108ac3f86744f44da3ed0.zip | |
Load main Android string resources file
| -rw-r--r-- | Cargo.lock | 46 | ||||
| -rw-r--r-- | android/translations-converter/Cargo.toml | 2 | ||||
| -rw-r--r-- | android/translations-converter/src/android.rs | 18 | ||||
| -rw-r--r-- | android/translations-converter/src/main.rs | 13 |
4 files changed, 78 insertions, 1 deletions
diff --git a/Cargo.lock b/Cargo.lock index ca7fff3b06..7abf803c38 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2593,6 +2593,17 @@ dependencies = [ ] [[package]] +name = "serde-xml-rs" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror 1.0.20 (registry+https://github.com/rust-lang/crates.io-index)", + "xml-rs 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] name = "serde_derive" version = "1.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2973,6 +2984,24 @@ dependencies = [ ] [[package]] +name = "thiserror" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "thiserror-impl 1.0.20 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] name = "thread_local" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3537,6 +3566,14 @@ dependencies = [ ] [[package]] +name = "translations-converter" +version = "0.1.0" +dependencies = [ + "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", + "serde-xml-rs 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] name = "triggered" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -3855,6 +3892,11 @@ dependencies = [ ] [[package]] +name = "xml-rs" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] name = "zeroize" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -4136,6 +4178,7 @@ dependencies = [ "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" "checksum serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)" = "9796c9b7ba2ffe7a9ce53c2287dfc48080f4b2b362fcc245a259b3a7201119dd" +"checksum serde-xml-rs 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "efe415925cf3d0bbb2fc47d09b56ce03eef51c5d56846468a39bcc293c7a846c" "checksum serde_derive 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)" = "4b133a43a1ecd55d4086bd5b4dc6c1751c68b1bfbeba7a5040442022c7e7c02e" "checksum serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)" = "2f72eb2a68a7dc3f9a691bfda9305a1c017a6215e5a4545c258500d2099a37c2" "checksum shared_child 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8cebcf3a403e4deafaf34dc882c4a1b6a648b43e5670aa2e4bb985914eaeb2d2" @@ -4167,6 +4210,8 @@ dependencies = [ "checksum term 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "fa63644f74ce96fbeb9b794f66aff2a52d601cbd5e80f4b97123e3899f4570f1" "checksum termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "96d6098003bde162e4277c70665bd87c326f5a0c3f3fbfb285787fa482d54e6e" "checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +"checksum thiserror 1.0.20 (registry+https://github.com/rust-lang/crates.io-index)" = "7dfdd070ccd8ccb78f4ad66bf1982dc37f620ef696c6b5028fe2ed83dd3d0d08" +"checksum thiserror-impl 1.0.20 (registry+https://github.com/rust-lang/crates.io-index)" = "bd80fc12f73063ac132ac92aceea36734f04a1d93c1240c6944e23a3b8841793" "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" "checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" "checksum tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" @@ -4258,5 +4303,6 @@ dependencies = [ "checksum winres 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "ff4fb510bbfe5b8992ff15f77a2e6fe6cf062878f0eda00c0f44963a807ca5dc" "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" "checksum x25519-dalek 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "637ff90c9540fa3073bb577e65033069e4bae7c79d49d74aa3ffdf5342a53217" +"checksum xml-rs 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b07db065a5cf61a7e4ba64f29e67db906fb1787316516c4e6e5ff0fea1efcd8a" "checksum zeroize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3cbac2ed2ba24cc90f5e06485ac8c7c1e5449fe8911aef4d8877218af021a5b8" "checksum zeroize_derive 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "de251eec69fc7c1bc3923403d18ececb929380e016afe103da75f396704f8ca2" diff --git a/android/translations-converter/Cargo.toml b/android/translations-converter/Cargo.toml index 62e5edadf3..5ab975215a 100644 --- a/android/translations-converter/Cargo.toml +++ b/android/translations-converter/Cargo.toml @@ -7,3 +7,5 @@ edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +serde = { version = "1", features = ["derive"] } +serde-xml-rs = "0.4" diff --git a/android/translations-converter/src/android.rs b/android/translations-converter/src/android.rs new file mode 100644 index 0000000000..b79580db8f --- /dev/null +++ b/android/translations-converter/src/android.rs @@ -0,0 +1,18 @@ +use serde::{Deserialize, Serialize}; + +/// Contents of an Android string resources file. +/// +/// This type can be created directly deserializing the `strings.xml` file. +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct StringResources { + #[serde(rename = "string")] + entries: Vec<StringResource>, +} + +/// An entry in an Android string resources file. +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct StringResource { + name: String, + #[serde(rename = "$value")] + value: String, +} diff --git a/android/translations-converter/src/main.rs b/android/translations-converter/src/main.rs index e7a11a969c..28297c6131 100644 --- a/android/translations-converter/src/main.rs +++ b/android/translations-converter/src/main.rs @@ -1,3 +1,14 @@ +//! Helper tool to convert translations from gettext messages to Android string resources. + +mod android; + +use std::fs::File; + fn main() { - println!("Hello, world!"); + let strings_file = File::open("../src/main/res/values/strings.xml") + .expect("Failed to open string resources file"); + let string_resources: android::StringResources = + serde_xml_rs::from_reader(strings_file).expect("Failed to read string resources file"); + + dbg!(string_resources); } |
