summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-05-10 20:30:15 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-05-19 12:13:36 +0000
commit9b8d75866eb0742ef05bcd739d5439b20bee3062 (patch)
treeba90f6950e4987e8d0d3fb3d59646b83509a6370 /android
parentb95c734b19931709c9f0fcacff1e92d6babdddba (diff)
downloadmullvadvpn-9b8d75866eb0742ef05bcd739d5439b20bee3062.tar.xz
mullvadvpn-9b8d75866eb0742ef05bcd739d5439b20bee3062.zip
Implement `Normalize` for `gettext::MsgString`
Diffstat (limited to 'android')
-rw-r--r--android/translations-converter/src/gettext/mod.rs3
-rw-r--r--android/translations-converter/src/normalize.rs24
2 files changed, 25 insertions, 2 deletions
diff --git a/android/translations-converter/src/gettext/mod.rs b/android/translations-converter/src/gettext/mod.rs
index 438f281cef..2b529c0eb5 100644
--- a/android/translations-converter/src/gettext/mod.rs
+++ b/android/translations-converter/src/gettext/mod.rs
@@ -1,7 +1,6 @@
mod msg_string;
mod plural_form;
-use self::msg_string::MsgString;
use lazy_static::lazy_static;
use regex::Regex;
use std::{
@@ -12,7 +11,7 @@ use std::{
path::Path,
};
-pub use self::plural_form::PluralForm;
+pub use self::{msg_string::MsgString, plural_form::PluralForm};
lazy_static! {
static ref APOSTROPHE_VARIATION: Regex = Regex::new("’").unwrap();
diff --git a/android/translations-converter/src/normalize.rs b/android/translations-converter/src/normalize.rs
index 395f0186cf..56c45d661e 100644
--- a/android/translations-converter/src/normalize.rs
+++ b/android/translations-converter/src/normalize.rs
@@ -35,3 +35,27 @@ mod android {
}
}
}
+
+mod gettext {
+ use super::*;
+ use crate::gettext::MsgString;
+
+ lazy_static! {
+ static ref APOSTROPHE_VARIATION: Regex = Regex::new("’").unwrap();
+ static ref ESCAPED_DOUBLE_QUOTES: Regex = Regex::new(r#"\\""#).unwrap();
+ static ref PARAMETERS: Regex = Regex::new(r"%\([^)]*\)").unwrap();
+ }
+
+ impl Normalize for MsgString {
+ fn normalize(&self) -> String {
+ // Use a single common apostrophe character
+ let string = APOSTROPHE_VARIATION.replace_all(&*self, "'");
+ // Mark where parameters are positioned, removing the parameter name
+ let string = PARAMETERS.replace_all(&string, "%");
+ // Remove escaped double-quotes
+ let string = ESCAPED_DOUBLE_QUOTES.replace_all(&string, r#"""#);
+
+ string.into_owned()
+ }
+ }
+}