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-4 = act
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,
languages: Vec<String>,
downloaded_wine_versions: Vec<wine::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
#[wrap(Some)]
set_model = &gtk::StringList::new(&[
"English",
"Русский"
]),
set_model: Some(&gtk::StringList::new(&model.languages.iter().map(|lang| lang.as_str()).collect::<Vec<&str>>())),
set_selected: match CONFIG.launcher.language.as_str() {
"en-us" => 0,
"ru-ru" => 1,
_ => 0
set_selected: {
let selected = crate::i18n::get_lang().language;
SUPPORTED_LANGUAGES.iter()
.position(|lang| lang.language == selected)
.unwrap_or(0) as u32
},
connect_selected_notify => move |row| {
if is_ready() {
if let Ok(mut config) = config::get() {
config.launcher.language = String::from(*[
"en-us",
"ru-ru"
].get(row.selected() as usize).unwrap_or(&"en-us"));
config.launcher.language = SUPPORTED_LANGUAGES
.get(row.selected() as usize)
.unwrap_or(&SUPPORTED_LANGUAGES[0])
.language.to_string();
config::update(config);
}
@ -503,6 +503,8 @@ impl SimpleAsyncComponent for GeneralApp {
style: CONFIG.launcher.style,
languages: SUPPORTED_LANGUAGES.iter().map(|lang| tr(lang.language.as_str())).collect(),
downloaded_wine_versions: vec![],
downloaded_dxvk_versions: vec![],