release: 1.1.0
Release / Cria a release (push) Canceled after 0s
Release / CLI (linux-aarch64) (push) Canceled after 0s
Release / CLI (linux-x86_64) (push) Canceled after 0s
Release / CLI (macos-aarch64) (push) Canceled after 0s
Release / CLI (macos-x86_64) (push) Canceled after 0s
Release / CLI (windows-x86_64) (push) Canceled after 0s
Release / App desktop (linux-x86_64) (push) Canceled after 0s
Release / App desktop (macos-aarch64) (push) Canceled after 0s
Release / App desktop (macos-x86_64) (push) Canceled after 0s
Release / App desktop (windows-x86_64) (push) Canceled after 0s
Release / Publica a release (push) Canceled after 0s
Release / Cria a release (push) Canceled after 0s
Release / CLI (linux-aarch64) (push) Canceled after 0s
Release / CLI (linux-x86_64) (push) Canceled after 0s
Release / CLI (macos-aarch64) (push) Canceled after 0s
Release / CLI (macos-x86_64) (push) Canceled after 0s
Release / CLI (windows-x86_64) (push) Canceled after 0s
Release / App desktop (linux-x86_64) (push) Canceled after 0s
Release / App desktop (macos-aarch64) (push) Canceled after 0s
Release / App desktop (macos-x86_64) (push) Canceled after 0s
Release / App desktop (windows-x86_64) (push) Canceled after 0s
Release / Publica a release (push) Canceled after 0s
This commit is contained in:
1 parent
5e43fa6d20
commit
b4a85722a6
28 files changed
+706
-160
No files matched your search
@@ -13,6 +13,10 @@ pub struct Settings {
|
||||
/// Idioma da interface: "auto", "pt" ou "en".
|
||||
#[serde(default = "auto")]
|
||||
pub lang: String,
|
||||
/// Idioma que a interface resolveu de fato ("pt" ou "en"), para as
|
||||
/// notificações do sistema e a saída do terminal acompanharem a tela.
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
pub ui_lang: Option<String>,
|
||||
/// Notificação do sistema quando uma tarefa longa termina.
|
||||
#[serde(default = "yes")]
|
||||
pub notify: bool,
|
||||
@@ -34,6 +38,7 @@ impl Default for Settings {
|
||||
Self {
|
||||
theme: auto(),
|
||||
lang: auto(),
|
||||
ui_lang: None,
|
||||
notify: true,
|
||||
maps: false,
|
||||
}
|
||||
@@ -101,6 +106,30 @@ pub fn load() -> Settings {
|
||||
.unwrap_or_default()
|
||||
}
|
||||
|
||||
/// Idioma efetivo para textos gerados fora da interface (notificações e CLI).
|
||||
/// Usa o que a interface informou; sem isso, a preferência e o ambiente.
|
||||
pub fn ui_lang() -> String {
|
||||
let s = load();
|
||||
if let Some(l) = s.ui_lang.as_deref() {
|
||||
if l == "pt" || l == "en" {
|
||||
return l.to_string();
|
||||
}
|
||||
}
|
||||
if s.lang == "pt" || s.lang == "en" {
|
||||
return s.lang;
|
||||
}
|
||||
let env = std::env::var("LC_ALL")
|
||||
.or_else(|_| std::env::var("LC_MESSAGES"))
|
||||
.or_else(|_| std::env::var("LANG"))
|
||||
.unwrap_or_default()
|
||||
.to_ascii_lowercase();
|
||||
if env.starts_with("pt") {
|
||||
"pt".into()
|
||||
} else {
|
||||
"en".into()
|
||||
}
|
||||
}
|
||||
|
||||
pub fn save(s: &Settings) -> Result<()> {
|
||||
crate::owner::write_owned(&file(), serde_json::to_vec_pretty(s)?)?;
|
||||
Ok(())
|
||||
|
||||
Reference in new issue
Block a user