From f96804b90c5faf7072ac86be2c5dee6b5db420fe Mon Sep 17 00:00:00 2001 From: Maan2003 Date: Fri, 16 Jul 2021 13:42:13 +0530 Subject: [PATCH 1/4] x11: logging in Application::get_locale --- druid-shell/src/backend/x11/application.rs | 29 +++++++++++++++------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/druid-shell/src/backend/x11/application.rs b/druid-shell/src/backend/x11/application.rs index acec8042b1..b4c57cb3b3 100644 --- a/druid-shell/src/backend/x11/application.rs +++ b/druid-shell/src/backend/x11/application.rs @@ -770,21 +770,32 @@ impl Application { } pub fn get_locale() -> String { - let var_non_empty = |var| match std::env::var(var) { - Ok(s) if s.is_empty() => None, - Ok(s) => Some(s), - Err(_) => None, - }; + fn locale_env_var(var: &str) -> Option { + match std::env::var(var) { + Ok(s) if s.is_empty() => { + tracing::debug!("locale: ignoring empty env var {}", var); + None + } + Ok(s) => { + tracing::debug!("locale: env var {} found: {:?}", var, &s); + Some(s) + } + Err(_) => { + tracing::debug!("locale: env var {} not found", var); + None + } + } + } // from gettext manual // https://www.gnu.org/software/gettext/manual/html_node/Locale-Environment-Variables.html#Locale-Environment-Variables - var_non_empty("LANGUAGE") + locale_env_var("LANGUAGE") // the LANGUAGE value is priority list seperated by : // See: https://www.gnu.org/software/gettext/manual/html_node/The-LANGUAGE-variable.html#The-LANGUAGE-variable .and_then(|locale| locale.split(':').next().map(String::from)) - .or_else(|| var_non_empty("LC_ALL")) - .or_else(|| var_non_empty("LC_MESSAGES")) - .or_else(|| var_non_empty("LANG")) + .or_else(|| locale_env_var("LC_ALL")) + .or_else(|| locale_env_var("LC_MESSAGES")) + .or_else(|| locale_env_var("LANG")) .unwrap_or_else(|| "en-US".to_string()) } From c854002067cf21f2cf4f5770cd1f0d67d6d2e128 Mon Sep 17 00:00:00 2001 From: Maan2003 Date: Fri, 16 Jul 2021 14:15:13 +0530 Subject: [PATCH 2/4] Update CHANGELOG --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index aa2ba81f97..da12221e77 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -110,6 +110,7 @@ You can find its changes [documented below](#070---2021-01-01). - Updated to x11rb 0.8.0. ([#1519] by [@psychon]) - Updated fluent-bundle to 0.15.1 and fluent syntax to 0.11.0 ([#1772] by [@r-ml]) - Updated usvg to 0.14.1 ([#1802] by [@r-ml]) +- x11: Add logging to `Application::get_locale` ([#1876] by [@Maan2003]) ### Outside News @@ -759,6 +760,7 @@ Last release without a changelog :( [#1866]: https://github.com/linebender/druid/pull/1866 [#1867]: https://github.com/linebender/druid/pull/1867 [#1868]: https://github.com/linebender/druid/pull/1868 +[#1876]: https://github.com/linebender/druid/pull/1876 [Unreleased]: https://github.com/linebender/druid/compare/v0.7.0...master [0.7.0]: https://github.com/linebender/druid/compare/v0.6.0...v0.7.0 From d642815e43fa1a2f56a8ce43b92e59f3c5562ec7 Mon Sep 17 00:00:00 2001 From: Maan2003 Date: Fri, 16 Jul 2021 14:18:26 +0530 Subject: [PATCH 3/4] Better error message --- druid-shell/src/backend/x11/application.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/druid-shell/src/backend/x11/application.rs b/druid-shell/src/backend/x11/application.rs index b4c57cb3b3..49aaa22c84 100644 --- a/druid-shell/src/backend/x11/application.rs +++ b/druid-shell/src/backend/x11/application.rs @@ -780,10 +780,14 @@ impl Application { tracing::debug!("locale: env var {} found: {:?}", var, &s); Some(s) } - Err(_) => { + Err(std::env::VarError::NotPresent) => { tracing::debug!("locale: env var {} not found", var); None } + Err(std::env::VarError::NotUnicode(_)) => { + tracing::debug!("locale: ignoring invalid unicode env var {}", var); + None + } } } From 979a5780b33ea23bb64fb3ed3ff61ffaccadadaf Mon Sep 17 00:00:00 2001 From: Maan2003 Date: Fri, 16 Jul 2021 20:55:00 +0530 Subject: [PATCH 4/4] missing semicolon --- druid-shell/src/backend/x11/application.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/druid-shell/src/backend/x11/application.rs b/druid-shell/src/backend/x11/application.rs index 0782d9addd..2cad86b49d 100644 --- a/druid-shell/src/backend/x11/application.rs +++ b/druid-shell/src/backend/x11/application.rs @@ -800,7 +800,7 @@ impl Application { .or_else(|| locale_env_var("LC_ALL")) .or_else(|| locale_env_var("LC_MESSAGES")) .or_else(|| locale_env_var("LANG")) - .unwrap_or_else(|| "en-US".to_string()) + .unwrap_or_else(|| "en-US".to_string()); // This is done because the locale parsing library we use expects an unicode locale, but these vars have an ISO locale if let Some(idx) = locale.chars().position(|c| c == '.' || c == '@') {