diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2021-05-10 20:30:15 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2021-05-19 12:13:36 +0000 |
| commit | 9b8d75866eb0742ef05bcd739d5439b20bee3062 (patch) | |
| tree | ba90f6950e4987e8d0d3fb3d59646b83509a6370 | |
| parent | b95c734b19931709c9f0fcacff1e92d6babdddba (diff) | |
| download | mullvadvpn-9b8d75866eb0742ef05bcd739d5439b20bee3062.tar.xz mullvadvpn-9b8d75866eb0742ef05bcd739d5439b20bee3062.zip | |
Implement `Normalize` for `gettext::MsgString`
| -rw-r--r-- | android/translations-converter/src/gettext/mod.rs | 3 | ||||
| -rw-r--r-- | android/translations-converter/src/normalize.rs | 24 |
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() + } + } +} |
