summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
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()
+ }
+ }
+}