feat(i18n): added automatic language settings updating from i18n mod

This commit is contained in:
Observer KRypt0n_ 2023-02-26 15:05:43 +02:00
parent b1bdfc9105
commit c8e8413a00
No known key found for this signature in database
GPG key ID: 844DA47BA25FE1E2
2 changed files with 19 additions and 13 deletions

View file

@ -13,3 +13,7 @@ company-alter-name = {-company-alter-name-1}{-company-alter-name-2}{-company-alt
-game-name-3 = Imp -game-name-3 = Imp
-game-name-4 = act -game-name-4 = act
game-name = {-game-name-1}{-game-name-2} {-game-name-3}{-game-name-4} game-name = {-game-name-1}{-game-name-2} {-game-name-3}{-game-name-4}
en = English
ru = Русский
de = Deutsch

View file

@ -24,6 +24,8 @@ pub struct GeneralApp {
style: LauncherStyle, style: LauncherStyle,
languages: Vec<String>,
downloaded_wine_versions: Vec<wine::Version>, downloaded_wine_versions: Vec<wine::Version>,
downloaded_dxvk_versions: Vec<dxvk::Version>, downloaded_dxvk_versions: Vec<dxvk::Version>,
@ -167,25 +169,23 @@ impl SimpleAsyncComponent for GeneralApp {
// TODO: maybe simplify it by some way? e.g. specify such stuff in i18n mod // TODO: maybe simplify it by some way? e.g. specify such stuff in i18n mod
#[wrap(Some)] set_model: Some(&gtk::StringList::new(&model.languages.iter().map(|lang| lang.as_str()).collect::<Vec<&str>>())),
set_model = &gtk::StringList::new(&[
"English",
"Русский"
]),
set_selected: match CONFIG.launcher.language.as_str() { set_selected: {
"en-us" => 0, let selected = crate::i18n::get_lang().language;
"ru-ru" => 1,
_ => 0 SUPPORTED_LANGUAGES.iter()
.position(|lang| lang.language == selected)
.unwrap_or(0) as u32
}, },
connect_selected_notify => move |row| { connect_selected_notify => move |row| {
if is_ready() { if is_ready() {
if let Ok(mut config) = config::get() { if let Ok(mut config) = config::get() {
config.launcher.language = String::from(*[ config.launcher.language = SUPPORTED_LANGUAGES
"en-us", .get(row.selected() as usize)
"ru-ru" .unwrap_or(&SUPPORTED_LANGUAGES[0])
].get(row.selected() as usize).unwrap_or(&"en-us")); .language.to_string();
config::update(config); config::update(config);
} }
@ -503,6 +503,8 @@ impl SimpleAsyncComponent for GeneralApp {
style: CONFIG.launcher.style, style: CONFIG.launcher.style,
languages: SUPPORTED_LANGUAGES.iter().map(|lang| tr(lang.language.as_str())).collect(),
downloaded_wine_versions: vec![], downloaded_wine_versions: vec![],
downloaded_dxvk_versions: vec![], downloaded_dxvk_versions: vec![],