inkstitch/lib/inx/utils.py

53 wiersze
1.6 KiB
Python
Czysty Zwykły widok Historia

import os
2018-08-21 00:42:02 +00:00
import gettext
from os.path import dirname
from jinja2 import Environment, FileSystemLoader
2018-08-22 01:43:09 +00:00
from ..i18n import translation as default_translation, locale_dir, N_
_top_path = dirname(dirname(dirname(os.path.realpath(__file__))))
inx_path = os.path.join(_top_path, "inx")
template_path = os.path.join(_top_path, "templates")
2018-08-21 00:42:02 +00:00
current_translation = default_translation
current_locale = "en_US"
2018-08-22 00:32:50 +00:00
def build_environment():
env = Environment(
2018-08-22 00:32:50 +00:00
loader=FileSystemLoader(template_path),
autoescape=True,
extensions=['jinja2.ext.i18n']
)
2018-08-21 00:42:02 +00:00
env.install_gettext_translations(current_translation)
env.globals["locale"] = current_locale
return env
2018-08-22 00:32:50 +00:00
def write_inx_file(name, contents):
2018-08-21 00:42:02 +00:00
inx_file_name = "inkstitch_%s_%s.inx" % (name, current_locale)
with open(os.path.join(inx_path, inx_file_name), 'w') as inx_file:
2018-08-22 18:12:39 +00:00
print >> inx_file, contents.encode("utf-8")
2018-08-21 00:42:02 +00:00
2018-08-22 00:32:50 +00:00
2018-08-21 00:42:02 +00:00
def iterate_inx_locales():
global current_translation, current_locale
locales = sorted(os.listdir(locale_dir))
for locale in locales:
translation = gettext.translation("inkstitch", locale_dir, languages=[locale], fallback=True)
# L10N If you translate this string, that will tell Ink/Stitch to
# generate menu items for this language in Inkscape's "Extensions"
# menu.
magic_string = N_("Generate INX files")
2018-09-19 00:24:53 +00:00
translated_magic_string = translation.ugettext(magic_string)
2018-08-21 00:42:02 +00:00
if translated_magic_string != magic_string or locale == "en_US":
current_translation = translation
current_locale = locale
yield locale