diff --git a/app/ui/__init__.py b/app/ui/__init__.py index 811757c8..fad47d8d 100644 --- a/app/ui/__init__.py +++ b/app/ui/__init__.py @@ -1,3 +1,5 @@ +import locale + import gi import os @@ -7,6 +9,11 @@ from gi.repository import Gtk, Gdk # path to *.glade files UI_RESOURCES_PATH = "app/ui/" if os.path.exists("app/ui/") else "/usr/share/demoneditor/app/ui/" +# translation +TEXT_DOMAIN = "demon-editor" +LANG_DIR = UI_RESOURCES_PATH + "lang" +locale.bindtextdomain(TEXT_DOMAIN, UI_RESOURCES_PATH + "lang") + theme = Gtk.IconTheme.get_default() _IMAGE_MISSING = theme.load_icon("image-missing", 16, 0) if theme.lookup_icon("image-missing", 16, 0) else None CODED_ICON = theme.load_icon("emblem-readonly", 16, 0) if theme.lookup_icon( diff --git a/app/ui/dialogs.py b/app/ui/dialogs.py index 85175a14..73075fb0 100644 --- a/app/ui/dialogs.py +++ b/app/ui/dialogs.py @@ -2,7 +2,7 @@ from enum import Enum from app.commons import run_idle -from . import Gtk, UI_RESOURCES_PATH +from . import Gtk, UI_RESOURCES_PATH, TEXT_DOMAIN class DialogType(Enum): @@ -72,7 +72,7 @@ def show_dialog(dialog_type: DialogType, transient, text=None, options=None, act def get_dialog_from_xml(dialog_type, transient): builder = Gtk.Builder() - builder.set_translation_domain("demon-editor") + builder.set_translation_domain(TEXT_DOMAIN) builder.add_from_file(UI_RESOURCES_PATH + "dialogs.glade") dialog = builder.get_object(dialog_type.value) dialog.set_transient_for(transient) diff --git a/app/ui/download_dialog.py b/app/ui/download_dialog.py index d8fe8ce8..3fbd3152 100644 --- a/app/ui/download_dialog.py +++ b/app/ui/download_dialog.py @@ -1,7 +1,7 @@ from app.commons import run_idle, run_task from app.ftp import download_data, DownloadDataType, upload_data from app.properties import Profile -from . import Gtk, UI_RESOURCES_PATH +from . import Gtk, UI_RESOURCES_PATH, TEXT_DOMAIN from .dialogs import show_dialog, DialogType @@ -22,7 +22,7 @@ class DownloadDialog: "on_info_bar_close": self.on_info_bar_close} builder = Gtk.Builder() - builder.set_translation_domain("demon-editor") + builder.set_translation_domain(TEXT_DOMAIN) builder.add_objects_from_file(UI_RESOURCES_PATH + "dialogs.glade", ("download_dialog",)) builder.connect_signals(handlers) diff --git a/app/ui/lang/ru/LC_MESSAGES/demon-editor.mo b/app/ui/lang/ru/LC_MESSAGES/demon-editor.mo new file mode 100644 index 00000000..b3a5cab9 Binary files /dev/null and b/app/ui/lang/ru/LC_MESSAGES/demon-editor.mo differ diff --git a/app/ui/picons_dialog.py b/app/ui/picons_dialog.py index 3276049b..3d2ee606 100644 --- a/app/ui/picons_dialog.py +++ b/app/ui/picons_dialog.py @@ -9,7 +9,7 @@ from app.commons import run_idle, run_task from app.ftp import upload_data, DownloadDataType from app.picons.picons import PiconsParser, parse_providers, Provider from app.properties import Profile -from . import Gtk, Gdk, UI_RESOURCES_PATH +from . import Gtk, Gdk, UI_RESOURCES_PATH, TEXT_DOMAIN from .dialogs import show_dialog, DialogType from .main_helper import update_entry_data @@ -36,7 +36,7 @@ class PiconsDialog: "on_position_edited": self.on_position_edited} builder = Gtk.Builder() - builder.set_translation_domain("demon-editor") + builder.set_translation_domain(TEXT_DOMAIN) builder.add_objects_from_file(UI_RESOURCES_PATH + "picons_dialog.glade", ("picons_dialog", "receive_image", "providers_list_store")) builder.connect_signals(handlers) diff --git a/app/ui/satellites_dialog.py b/app/ui/satellites_dialog.py index 3ab58f8a..0a5268eb 100644 --- a/app/ui/satellites_dialog.py +++ b/app/ui/satellites_dialog.py @@ -3,7 +3,7 @@ from math import fabs from app.commons import run_idle from app.eparser import get_satellites, write_satellites, Satellite, Transponder -from . import Gtk, Gdk, UI_RESOURCES_PATH +from . import Gtk, Gdk, UI_RESOURCES_PATH, TEXT_DOMAIN from .dialogs import show_dialog, DialogType, WaitDialog from .main_helper import move_items, scroll_to @@ -38,7 +38,7 @@ class SatellitesDialog: "on_quit": self.on_quit} builder = Gtk.Builder() - builder.set_translation_domain("demon-editor") + builder.set_translation_domain(TEXT_DOMAIN) builder.add_objects_from_file(UI_RESOURCES_PATH + "satellites_dialog.glade", ("satellites_editor_dialog", "satellites_tree_store", "popup_menu", "add_popup_menu", "add_menu_icon")) @@ -309,7 +309,7 @@ class TransponderDialog: handlers = {"on_entry_changed": self.on_entry_changed} builder = Gtk.Builder() - builder.set_translation_domain("demon-editor") + builder.set_translation_domain(TEXT_DOMAIN) builder.add_objects_from_file(UI_RESOURCES_PATH + "satellites_dialog.glade", ("transponder_dialog", "pol_store", "fec_store", @@ -393,7 +393,7 @@ class SatelliteDialog: def __init__(self, transient, satellite: Satellite = None): builder = Gtk.Builder() - builder.set_translation_domain("demon-editor") + builder.set_translation_domain(TEXT_DOMAIN) builder.add_objects_from_file(UI_RESOURCES_PATH + "satellites_dialog.glade", ("satellite_dialog", "side_store", "pos_adjustment")) diff --git a/app/ui/service_details_dialog.py b/app/ui/service_details_dialog.py index 286afa55..23ec397a 100644 --- a/app/ui/service_details_dialog.py +++ b/app/ui/service_details_dialog.py @@ -3,12 +3,12 @@ from functools import lru_cache from app.commons import run_idle from app.eparser import Service, get_satellites -from app.eparser.ecommons import MODULATION, Inversion, ROLL_OFF, Pilot, Flag, Pids, SERVICE_TYPE, POLARIZATION, \ +from app.eparser.ecommons import MODULATION, Inversion, ROLL_OFF, Pilot, Flag, Pids, POLARIZATION, \ get_key_by_value, get_value_by_name, FEC_DEFAULT, PLS_MODE from app.properties import Profile from app.ui.dialogs import show_dialog, DialogType from app.ui.main_helper import get_base_model -from . import Gtk, Gdk, UI_RESOURCES_PATH, HIDE_ICON +from . import Gtk, Gdk, UI_RESOURCES_PATH, HIDE_ICON, TEXT_DOMAIN class ServiceDetailsDialog: @@ -32,7 +32,7 @@ class ServiceDetailsDialog: "on_tr_edit_toggled": self.on_tr_edit_toggled} builder = Gtk.Builder() - builder.set_translation_domain("demon-editor") + builder.set_translation_domain(TEXT_DOMAIN) builder.add_from_file(UI_RESOURCES_PATH + "service_details_dialog.glade") builder.connect_signals(handlers) @@ -442,7 +442,7 @@ class ServiceDetailsDialog: class TransponderServicesDialog: def __init__(self, transient, model, transponder, tr_iters): builder = Gtk.Builder() - builder.set_translation_domain("demon-editor") + builder.set_translation_domain(TEXT_DOMAIN) builder.add_objects_from_file(UI_RESOURCES_PATH + "service_details_dialog.glade", ("tr_services_dialog", "transponder_services_liststore")) self._dialog = builder.get_object("tr_services_dialog") diff --git a/app/ui/settings_dialog.py b/app/ui/settings_dialog.py index 77585c46..24234d1f 100644 --- a/app/ui/settings_dialog.py +++ b/app/ui/settings_dialog.py @@ -1,5 +1,5 @@ from app.properties import write_config, Profile, get_default_settings -from . import Gtk, UI_RESOURCES_PATH +from . import Gtk, UI_RESOURCES_PATH, TEXT_DOMAIN from .main_helper import update_entry_data @@ -16,7 +16,7 @@ class SettingsDialog: "apply_settings": self.apply_settings} builder = Gtk.Builder() - builder.set_translation_domain("demon-editor") + builder.set_translation_domain(TEXT_DOMAIN) builder.add_objects_from_file(UI_RESOURCES_PATH + "dialogs.glade", ("settings_dialog", "telnet_timeout_adjustment")) builder.connect_signals(handlers)