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": "

v9.5+ Library

", "json_migration.title.old_lib": "

v9.4 Library

", "landing.open_create_library": "Open/Create Library {shortcut}", + "language.am": "Amharic", + "language.ceb": "Cebuano", + "language.cs": "Czech", + "language.da": "Danish", + "language.de": "German", + "language.el": "Greek", + "language.en": "English", + "language.es": "Spanish", + "language.fi": "Finnish", + "language.fil": "Filipino", + "language.fr": "French", + "language.hu": "Hungarian", + "language.is": "Icelandic", + "language.it": "Italian", + "language.ja": "Japanese", + "language.nb_NO": "Norwegian Bokmål", + "language.nl": "Dutch", + "language.pl": "Polish", + "language.pt": "Portuguese", + "language.pt_BR": "Portuguese (Brazil)", + "language.qpv": "Viossa", + "language.ro": "Romanian", + "language.ru": "Russian", + "language.sv": "Swedish", + "language.ta": "Tamil", + "language.th": "Thai", + "language.tok": "Toki Pona", + "language.tr": "Turkish", + "language.zh_Hans": "Chinese (Simplified)", + "language.zh_Hant": "Chinese (Traditional)", "library_info.cleanup": "Cleanup", "library_info.cleanup.backups": "Library Backups:", "library_info.cleanup.dupe_files": "Duplicate Files:",