mirror of
https://github.com/an-anime-team/sleepy-launcher.git
synced 2025-03-15 06:28:27 +03:00
refactor(i18n): changed i18n mod again, nothing important
This commit is contained in:
parent
681ad01835
commit
c7a92718db
3 changed files with 29 additions and 34 deletions
|
@ -10,7 +10,7 @@ pub struct Background {
|
|||
pub fn get_uri() -> String {
|
||||
let uri = concat!("https://sdk-os-static.", "ho", "yo", "verse", ".com/hk4e_global/mdk/launcher/api/content?filter_adv=true&key=gcStgarh&launcher_id=10&language=");
|
||||
|
||||
uri.to_owned() + crate::i18n::get_lang()
|
||||
uri.to_owned() + &crate::i18n::format_lang(crate::i18n::get_lang())
|
||||
}
|
||||
|
||||
#[cached::proc_macro::cached(result)]
|
||||
|
|
55
src/i18n.rs
55
src/i18n.rs
|
@ -10,37 +10,31 @@ fluent_templates::static_loader! {
|
|||
}
|
||||
|
||||
/// Map of supported languages
|
||||
pub const SUPPORTED_LANGUAGES: &[(&str, LanguageIdentifier)] = &[
|
||||
("en-us", langid!("en")),
|
||||
("ru-ru", langid!("ru"))
|
||||
pub const SUPPORTED_LANGUAGES: &[LanguageIdentifier] = &[
|
||||
langid!("en"),
|
||||
langid!("ru")
|
||||
];
|
||||
|
||||
static mut LANG: LanguageIdentifier = langid!("en");
|
||||
|
||||
/// Set launcher language
|
||||
pub fn set_lang<T: AsRef<str>>(lang: T) -> anyhow::Result<()> {
|
||||
for (key, id) in SUPPORTED_LANGUAGES {
|
||||
if key == &lang.as_ref() {
|
||||
unsafe {
|
||||
LANG = id.to_owned()
|
||||
}
|
||||
|
||||
return Ok(());
|
||||
pub fn set_lang(lang: LanguageIdentifier) -> anyhow::Result<()> {
|
||||
if SUPPORTED_LANGUAGES.iter().any(|item| item.language == lang.language) {
|
||||
unsafe {
|
||||
LANG = lang
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
anyhow::bail!("Language {} is not supported", lang.as_ref())
|
||||
else {
|
||||
anyhow::bail!("Language '{lang}' is not supported")
|
||||
}
|
||||
}
|
||||
|
||||
/// Get launcher language
|
||||
pub fn get_lang() -> &'static str {
|
||||
for (key, lang) in SUPPORTED_LANGUAGES {
|
||||
if lang == unsafe { &LANG } {
|
||||
return key;
|
||||
}
|
||||
}
|
||||
|
||||
unreachable!()
|
||||
pub fn get_lang() -> LanguageIdentifier {
|
||||
unsafe { LANG.clone() }
|
||||
}
|
||||
|
||||
/// Get system language or default language if system one is not supported
|
||||
|
@ -49,25 +43,24 @@ pub fn get_lang() -> &'static str {
|
|||
/// - `LC_ALL`
|
||||
/// - `LC_MESSAGES`
|
||||
/// - `LANG`
|
||||
pub fn get_default_lang() -> String {
|
||||
pub fn get_default_lang() -> LanguageIdentifier {
|
||||
let lang = std::env::var("LC_ALL")
|
||||
.unwrap_or_else(|_| std::env::var("LC_MESSAGES")
|
||||
.unwrap_or_else(|_| std::env::var("LANG")
|
||||
.unwrap_or_else(|_| String::from("en_US.UTF-8"))));
|
||||
|
||||
let lang = lang.split('.')
|
||||
.next()
|
||||
.unwrap_or("en_US")
|
||||
.replace('_', "-")
|
||||
.to_ascii_lowercase();
|
||||
lang.parse().unwrap_or_else(|_| langid!("en-us"))
|
||||
}
|
||||
|
||||
for (key, _) in SUPPORTED_LANGUAGES {
|
||||
if key == &lang {
|
||||
return lang;
|
||||
}
|
||||
pub fn format_lang(lang: LanguageIdentifier) -> String {
|
||||
let mut formatted = lang.language.to_string();
|
||||
|
||||
if let Some(region) = lang.region {
|
||||
formatted += "-";
|
||||
formatted += ®ion.to_string().to_ascii_lowercase();
|
||||
}
|
||||
|
||||
String::from("en-us")
|
||||
formatted
|
||||
}
|
||||
|
||||
/// Get translated message by key
|
||||
|
|
|
@ -69,7 +69,7 @@ fn main() {
|
|||
// Set initial launcher language based on system language
|
||||
let mut config = config::get().expect("Failed to get config");
|
||||
|
||||
config.launcher.language = i18n::get_default_lang();
|
||||
config.launcher.language = i18n::format_lang(i18n::get_default_lang());
|
||||
|
||||
config::update_raw(config).expect("Failed to update config");
|
||||
}
|
||||
|
@ -139,7 +139,9 @@ fn main() {
|
|||
", BACKGROUND_FILE.to_string_lossy()));
|
||||
|
||||
// Set UI language
|
||||
i18n::set_lang(config::get().unwrap().launcher.language).expect("Failed to set launcher language");
|
||||
let lang = config::get().unwrap().launcher.language.parse().expect("Wrong language format used in config");
|
||||
|
||||
i18n::set_lang(lang).expect("Failed to set launcher language");
|
||||
|
||||
tracing::info!("Set UI language to {}", i18n::get_lang());
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue