Add initial i18n support

xkb
Jose Riha 3 years ago committed by sezanzeb
parent a2b751d298
commit bcd60f4895

@ -24,6 +24,10 @@
import sys
import atexit
import gettext
import locale
from keymapper.data import get_data_path
import os.path
from argparse import ArgumentParser
import gi
@ -31,10 +35,17 @@ gi.require_version('Gtk', '3.0')
gi.require_version('GLib', '2.0')
from gi.repository import Gtk
APP_NAME = 'key-mapper'
LOCALE_DIR = os.path.join(get_data_path(), 'lang')
locale.bindtextdomain(APP_NAME, LOCALE_DIR)
locale.textdomain(APP_NAME)
# https://github.com/Nuitka/Nuitka/issues/607#issuecomment-650217096
Gtk.init()
from keymapper.logger import update_verbosity, log_info
from keymapper.logger import logger, update_verbosity, log_info
if __name__ == '__main__':
@ -48,6 +59,7 @@ if __name__ == '__main__':
options = parser.parse_args(sys.argv[1:])
update_verbosity(options.debug)
log_info('key-mapper-gtk')
logger.debug('Using locale directory: {}'.format(LOCALE_DIR))
# import key-mapper stuff after setting the log verbosity
from keymapper.gui.window import Window

@ -206,7 +206,7 @@ To give your keys back their original mapping.</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkButton" id="apply_preset">
<property name="label">Apply</property>
<property name="label" translatable="yes">Apply</property>
<property name="width-request">80</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
@ -225,7 +225,7 @@ To give your keys back their original mapping.</property>
</child>
<child>
<object class="GtkButton" id="copy_preset">
<property name="label">Copy</property>
<property name="label" translatable="yes">Copy</property>
<property name="width-request">80</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
@ -243,7 +243,7 @@ To give your keys back their original mapping.</property>
</child>
<child>
<object class="GtkButton" id="create_preset">
<property name="label">New</property>
<property name="label" translatable="yes">New</property>
<property name="width-request">80</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
@ -262,7 +262,7 @@ To give your keys back their original mapping.</property>
</child>
<child>
<object class="GtkButton" id="delete_preset">
<property name="label">Delete</property>
<property name="label" translatable="yes">Delete</property>
<property name="width-request">80</property>
<property name="visible">True</property>
<property name="can-focus">True</property>

@ -16,4 +16,4 @@ build_deb() {
build_deb &
# add more build targets here
wait
wait

@ -22,10 +22,16 @@
import glob
import os
import re
import pathlib
import subprocess
from os.path import basename, splitext, join
from setuptools import setup
from setuptools.command.install import install
from setuptools.command.build_ext import build_ext
PO_FILES = 'po/*.po'
class Install(install):
"""Add the current commit hash to logger.py."""
def run(self):
@ -33,6 +39,8 @@ class Install(install):
if re.match(r'^([a-z]|[0-9])+$', commit):
with open('keymapper/commit_hash.py', 'w') as f:
f.write(f"COMMIT_HASH = '{commit}'\n")
# generate .mo files
make_lang()
install.run(self)
@ -55,6 +63,25 @@ def get_packages():
return result
def make_lang():
mo_files = []
prefix = 'keymapper'
os.makedirs('mo', exist_ok=True)
for po_file in glob.glob(PO_FILES):
lang = splitext(basename(po_file))[0]
os.makedirs(join('mo', lang), exist_ok=True)
print(f'generating translation for {lang}')
subprocess.run(['msgfmt', '-o', join('mo', lang, 'key-mapper.mo'), str(po_file)], check=True)
lang_data = []
for po_file in glob.glob(PO_FILES):
lang = splitext(basename(po_file))[0]
lang_data.append((
f'/usr/share/key-mapper/lang/{lang}/LC_MESSAGES',
[f'mo/{lang}/key-mapper.mo']
))
setup(
name='key-mapper',
version='1.0.0',
@ -64,8 +91,10 @@ setup(
url='https://github.com/sezanzeb/key-mapper',
license='GPL-3.0',
packages=get_packages(),
include_package_data = True,
data_files=[
# see development.md#files
*lang_data,
('/usr/share/key-mapper/', glob.glob('data/*')),
('/usr/share/applications/', ['data/key-mapper.desktop']),
('/usr/share/polkit-1/actions/', ['data/key-mapper.policy']),

Loading…
Cancel
Save