diff --git a/bin/mirage b/bin/mirage index 532dad2..c7d3a08 100755 --- a/bin/mirage +++ b/bin/mirage @@ -27,10 +27,13 @@ import os import sys import site +import gettext +import locale from gi.repository import Gio, Gdk +LOCALE_DOMAIN = "mirage" MIRAGE_RESOURCE_FILE_NAME = "io.thomasross.mirage.gresource" @@ -53,6 +56,17 @@ return path return None + + +def get_locale_directory(): + ru_mo_file = get_data_file_path( + os.path.join("share", "locale", "ru", "LC_MESSAGES", "mirage.mo") + ) + + if not ru_mo_file: + return None + + return os.path.dirname(os.path.dirname(os.path.dirname(ru_mo_file))) def main(): @@ -86,6 +100,29 @@ import mirage + try: + locale.setlocale(locale.LC_ALL, "") + except locale.Error as e: + print("Could not set locale: {}.".format(e), 'Using "C".', file=sys.stderr) + locale.setlocale(locale.LC_ALL, "C") + + locale_directory = get_locale_directory() + gettext.bindtextdomain(LOCALE_DOMAIN, locale_directory) + gettext.textdomain(LOCALE_DOMAIN) + translation = gettext.translation(LOCALE_DOMAIN, locale_directory, fallback=True) + translation.install() + + try: + locale.bindtextdomain(LOCALE_DOMAIN, locale_directory) + locale.bind_textdomain_codeset(LOCALE_DOMAIN, "UTF-8") + locale.textdomain(LOCALE_DOMAIN) + except locale.error as e: + print( + "Could not bind locale domain: {}.".format(e), + "Not all translations will work.", + file=sys.stderr, + ) + app = mirage.Base() Gdk.threads_enter() diff --git a/mirage/__init__.py b/mirage/__init__.py index 78a238b..9384d8b 100755 --- a/mirage/__init__.py +++ b/mirage/__init__.py @@ -27,7 +27,7 @@ from gi.repository import Gtk, Gdk, GdkPixbuf, GLib, Gio import cairo import os, sys, getopt, configparser, string, gc -import random, urllib.request, gettext, locale +import random, urllib.request, locale import stat, time, subprocess, shutil, filecmp import tempfile, socket, threading @@ -81,11 +81,6 @@ def do_activate(self): Gdk.threads_init() - - # FIX THIS! Does not work on windows and what happens if mo-files exists - # in both dirs? - gettext.install("mirage", "/usr/share/locale") - gettext.install("mirage", "/usr/local/share/locale") # Constants self.open_mode_smart = 0