26 | 26 |
import os
|
27 | 27 |
import sys
|
28 | 28 |
import site
|
|
29 |
import gettext
|
|
30 |
import locale
|
29 | 31 |
|
30 | 32 |
from gi.repository import Gio, Gdk
|
31 | 33 |
|
32 | 34 |
|
|
35 |
LOCALE_DOMAIN = "mirage"
|
33 | 36 |
MIRAGE_RESOURCE_FILE_NAME = "io.thomasross.mirage.gresource"
|
34 | 37 |
|
35 | 38 |
|
|
52 | 55 |
return path
|
53 | 56 |
|
54 | 57 |
return None
|
|
58 |
|
|
59 |
|
|
60 |
def get_locale_directory():
|
|
61 |
ru_mo_file = get_data_file_path(
|
|
62 |
os.path.join("share", "locale", "ru", "LC_MESSAGES", "mirage.mo")
|
|
63 |
)
|
|
64 |
|
|
65 |
if not ru_mo_file:
|
|
66 |
return None
|
|
67 |
|
|
68 |
return os.path.dirname(os.path.dirname(os.path.dirname(ru_mo_file)))
|
55 | 69 |
|
56 | 70 |
|
57 | 71 |
def main():
|
|
85 | 99 |
|
86 | 100 |
import mirage
|
87 | 101 |
|
|
102 |
try:
|
|
103 |
locale.setlocale(locale.LC_ALL, "")
|
|
104 |
except locale.Error as e:
|
|
105 |
print("Could not set locale: {}.".format(e), 'Using "C".', file=sys.stderr)
|
|
106 |
locale.setlocale(locale.LC_ALL, "C")
|
|
107 |
|
|
108 |
locale_directory = get_locale_directory()
|
|
109 |
gettext.bindtextdomain(LOCALE_DOMAIN, locale_directory)
|
|
110 |
gettext.textdomain(LOCALE_DOMAIN)
|
|
111 |
translation = gettext.translation(LOCALE_DOMAIN, locale_directory, fallback=True)
|
|
112 |
translation.install()
|
|
113 |
|
|
114 |
try:
|
|
115 |
locale.bindtextdomain(LOCALE_DOMAIN, locale_directory)
|
|
116 |
locale.bind_textdomain_codeset(LOCALE_DOMAIN, "UTF-8")
|
|
117 |
locale.textdomain(LOCALE_DOMAIN)
|
|
118 |
except locale.error as e:
|
|
119 |
print(
|
|
120 |
"Could not bind locale domain: {}.".format(e),
|
|
121 |
"Not all translations will work.",
|
|
122 |
file=sys.stderr,
|
|
123 |
)
|
|
124 |
|
88 | 125 |
app = mirage.Base()
|
89 | 126 |
Gdk.threads_enter()
|
90 | 127 |
|