diff --git a/src/tagstudio/qt/mixed/settings_panel.py b/src/tagstudio/qt/mixed/settings_panel.py index b82393ac..0a82c12e 100644 --- a/src/tagstudio/qt/mixed/settings_panel.py +++ b/src/tagstudio/qt/mixed/settings_panel.py @@ -134,12 +134,15 @@ class SettingsPanel(PanelWidget): # Language self.language_combobox = QComboBox() - for k in LANGUAGES: - self.language_combobox.addItem(k, LANGUAGES[k]) + translated_langs = [(Translations[f"language.{lang}"], lang) for lang in LANGUAGES] + translated_langs.sort(key=lambda x: x[0]) + + for lang in translated_langs: + self.language_combobox.addItem(lang[0], lang[1]) current_lang: str = self.driver.settings.language - if current_lang not in LANGUAGES.values(): + if current_lang not in LANGUAGES: current_lang = DEFAULT_TRANSLATION - self.language_combobox.setCurrentIndex(list(LANGUAGES.values()).index(current_lang)) + self.language_combobox.setCurrentIndex([x[1] for x in translated_langs].index(current_lang)) self.language_combobox.currentIndexChanged.connect(self.__update_restart_label) form_layout.addRow(Translations["settings.language"], self.language_combobox) @@ -311,12 +314,9 @@ class SettingsPanel(PanelWidget): todo_label = QLabel("TODO") form_layout.addRow(todo_label) - def __get_language(self) -> str: - return list(LANGUAGES.values())[self.language_combobox.currentIndex()] - def get_settings(self) -> dict[str, Any]: # pyright: ignore[reportExplicitAny] return { - "language": self.__get_language(), + "language": self.language_combobox.currentData(), "open_last_loaded_on_startup": self.open_last_lib_checkbox.isChecked(), "generate_thumbs": self.generate_thumbs.isChecked(), "thumb_cache_size": max( diff --git a/src/tagstudio/qt/translations.py b/src/tagstudio/qt/translations.py index 60f0dab1..eb0b88a8 100644 --- a/src/tagstudio/qt/translations.py +++ b/src/tagstudio/qt/translations.py @@ -16,38 +16,38 @@ logger = structlog.get_logger(__name__) DEFAULT_TRANSLATION = "en" -LANGUAGES = { - # "Amharic": "am", # Minimal - "Cebuano": "ceb", - "Chinese (Simplified)": "zh_Hans", - "Chinese (Traditional)": "zh_Hant", - "Czech": "cs", - # "Danish": "da", # Minimal - "Dutch": "nl", - "English": "en", - "Filipino": "fil", - "Finnish": "fi", - "French": "fr", - "German": "de", - "Greek": "el", - "Hungarian": "hu", - # "Icelandic": "is", # Minimal - "Italian": "it", - "Japanese": "ja", - "Norwegian Bokmål": "nb_NO", - "Polish": "pl", - "Portuguese (Brazil)": "pt_BR", - "Portuguese (Portugal)": "pt", - "Romanian": "ro", - "Russian": "ru", - "Spanish": "es", - "Swedish": "sv", - "Tamil": "ta", - # "Thai": "th", # Minimal - "Toki Pona": "tok", - "Turkish": "tr", - "Viossa": "qpv", -} +LANGUAGES = [ + # "am", # Minimal + "ceb", + "cs", + # "da", # Minimal + "de", + "el", + "en", + "es", + "fi", + "fil", + "fr", + "hu", + # "is", # Minimal + "it", + "ja", + "nb_NO", + "nl", + "pl", + "pt_BR", + "pt", + "qpv", + "ro", + "ru", + "sv", + "ta", + # "th", # Minimal + "tok", + "tr", + "zh_Hans", + "zh_Hant", +] # A map of field class names to their respective translation keys. FIELD_TYPE_KEYS = { diff --git a/src/tagstudio/resources/translations/en.json b/src/tagstudio/resources/translations/en.json index 5e9d27a6..51e37e2a 100644 --- a/src/tagstudio/resources/translations/en.json +++ b/src/tagstudio/resources/translations/en.json @@ -196,6 +196,36 @@ "json_migration.title.new_lib": "