kopia lustrzana https://github.com/inkstitch/inkstitch
93 wiersze
3.4 KiB
Python
93 wiersze
3.4 KiB
Python
# Authors: see git history
|
|
#
|
|
# Copyright (c) 2010 Authors
|
|
# Licensed under the GNU GPL version 3.0 or later. See the file LICENSE for details.
|
|
|
|
import errno
|
|
import gettext
|
|
import os
|
|
import sys
|
|
from os.path import dirname
|
|
|
|
from jinja2 import Environment, FileSystemLoader
|
|
|
|
from ..i18n import N_, locale_dir
|
|
from ..i18n import translation as default_translation
|
|
|
|
_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")
|
|
version_path = _top_path
|
|
|
|
current_translation = default_translation
|
|
current_locale = "en_US"
|
|
|
|
|
|
def build_environment():
|
|
env = Environment(
|
|
loader=FileSystemLoader(template_path),
|
|
autoescape=True,
|
|
extensions=['jinja2.ext.i18n']
|
|
)
|
|
|
|
env.install_gettext_translations(current_translation)
|
|
env.globals["locale"] = current_locale
|
|
|
|
with open(os.path.join(version_path, 'LICENSE'), 'r') as license:
|
|
env.globals["inkstitch_license"] = "".join(license.readlines())
|
|
|
|
if "BUILD" in os.environ:
|
|
# building a ZIP release, with inkstitch packaged as a binary
|
|
# About extension: add version information
|
|
with open(os.path.join(version_path, 'VERSION'), 'r') as version:
|
|
env.globals["inkstitch_version"] = "%s %s" % (version.readline(), current_locale)
|
|
# Command tag and icons path
|
|
if sys.platform == "win32":
|
|
env.globals["command_tag"] = '<command location="inx">inkstitch/bin/inkstitch.exe</command>'
|
|
env.globals["image_path"] = 'inkstitch/bin/icons/'
|
|
elif sys.platform == "darwin":
|
|
env.globals["command_tag"] = '<command location="inx">inkstitch.app/Contents/MacOS/inkstitch</command>'
|
|
env.globals["image_path"] = 'inkstitch.app/Contents/MacOS/icons/'
|
|
else:
|
|
env.globals["command_tag"] = '<command location="inx">inkstitch/bin/inkstitch</command>'
|
|
env.globals["image_path"] = 'inkstitch/bin/icons/'
|
|
else:
|
|
# user is running inkstitch.py directly as a developer
|
|
env.globals["command_tag"] = '<command location="inx" interpreter="python">../../inkstitch.py</command>'
|
|
env.globals["image_path"] = '../../icons/'
|
|
env.globals["inkstitch_version"] = "Manual Install"
|
|
return env
|
|
|
|
|
|
def write_inx_file(name, contents):
|
|
inx_locale_dir = os.path.join(inx_path, current_locale)
|
|
|
|
try:
|
|
os.makedirs(inx_locale_dir)
|
|
except OSError as e:
|
|
if e.errno != errno.EEXIST:
|
|
raise
|
|
|
|
inx_file_name = "inkstitch_%s.inx" % name
|
|
with open(os.path.join(inx_locale_dir, inx_file_name), 'w', encoding="utf-8") as inx_file:
|
|
print(contents, file=inx_file)
|
|
|
|
|
|
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")
|
|
translated_magic_string = translation.gettext(magic_string)
|
|
|
|
if translated_magic_string != magic_string or locale == "en_US":
|
|
current_translation = translation
|
|
current_locale = locale
|
|
yield locale
|