Add translations support (including EN and DE) (close #6)
This commit is contained in:
parent
3b3e921595
commit
8a34d904fb
11 changed files with 236 additions and 11 deletions
Binary file not shown.
|
|
@ -23,7 +23,7 @@
|
||||||
</key>
|
</key>
|
||||||
<key type="s" name="image-dir">
|
<key type="s" name="image-dir">
|
||||||
<default>''</default>
|
<default>''</default>
|
||||||
<summary>Image dir</summary>
|
<summary>Image directory</summary>
|
||||||
<description>Directory which a webserver is providing images on</description>
|
<description>Directory which a webserver is providing images on</description>
|
||||||
</key>
|
</key>
|
||||||
<key type="b" name="connected">
|
<key type="b" name="connected">
|
||||||
|
|
|
||||||
|
|
@ -431,8 +431,8 @@
|
||||||
<object class="GtkEntry" id="server-host">
|
<object class="GtkEntry" id="server-host">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="text" translatable="yes">localhost</property>
|
<property name="text">localhost</property>
|
||||||
<property name="placeholder_text" translatable="yes">Host</property>
|
<property name="placeholder_text" translatable="yes">Enter hostname or IP address</property>
|
||||||
<signal name="focus-out-event" handler="on_server-host_focus_out_event" swapped="no"/>
|
<signal name="focus-out-event" handler="on_server-host_focus_out_event" swapped="no"/>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
|
|
@ -444,7 +444,7 @@
|
||||||
<object class="GtkEntry" id="server-image-dir">
|
<object class="GtkEntry" id="server-image-dir">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="placeholder_text" translatable="yes">Image Directory</property>
|
<property name="placeholder_text" translatable="yes">Enter URL or local path</property>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="left_attach">1</property>
|
<property name="left_attach">1</property>
|
||||||
|
|
@ -456,7 +456,7 @@
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="visibility">False</property>
|
<property name="visibility">False</property>
|
||||||
<property name="placeholder_text" translatable="yes">Password</property>
|
<property name="placeholder_text" translatable="yes">Enter password or leave blank</property>
|
||||||
<property name="input_purpose">password</property>
|
<property name="input_purpose">password</property>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
|
|
@ -517,7 +517,7 @@
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="halign">start</property>
|
<property name="halign">start</property>
|
||||||
<property name="label" translatable="yes">Image Dir:</property>
|
<property name="label" translatable="yes">Image Directory:</property>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="left_attach">1</property>
|
<property name="left_attach">1</property>
|
||||||
|
|
@ -730,7 +730,7 @@
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="name">page0</property>
|
<property name="name">page0</property>
|
||||||
<property name="title" translatable="yes">page0</property>
|
<property name="title">page0</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
|
|
@ -798,7 +798,7 @@
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="name">page1</property>
|
<property name="name">page1</property>
|
||||||
<property name="title" translatable="yes">page1</property>
|
<property name="title">page1</property>
|
||||||
<property name="position">1</property>
|
<property name="position">1</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
|
@ -897,7 +897,7 @@
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="name">page0</property>
|
<property name="name">page0</property>
|
||||||
<property name="title" translatable="yes">page0</property>
|
<property name="title">page0</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
|
|
@ -966,7 +966,7 @@
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="name">page1</property>
|
<property name="name">page1</property>
|
||||||
<property name="title" translatable="yes">page1</property>
|
<property name="title">page1</property>
|
||||||
<property name="position">1</property>
|
<property name="position">1</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
|
|
|
||||||
BIN
locale/de/LC_MESSAGES/mcg.mo
Normal file
BIN
locale/de/LC_MESSAGES/mcg.mo
Normal file
Binary file not shown.
104
locale/de/LC_MESSAGES/mcg.po
Normal file
104
locale/de/LC_MESSAGES/mcg.po
Normal file
|
|
@ -0,0 +1,104 @@
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: MPDCoverGrid\n"
|
||||||
|
"POT-Creation-Date: 2017-04-22 14:55+0200\n"
|
||||||
|
"PO-Revision-Date: 2017-04-22 14:55+0200\n"
|
||||||
|
"Last-Translator: coderkun <olli@coderkun.de>\n"
|
||||||
|
"Language-Team: \n"
|
||||||
|
"Language: de\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"X-Generator: Poedit 2.0.1\n"
|
||||||
|
"X-Poedit-Basepath: ../../..\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
"X-Poedit-SourceCharset: UTF-8\n"
|
||||||
|
"X-Poedit-SearchPath-0: data/gtk.glade\n"
|
||||||
|
|
||||||
|
#: data/gtk.glade:21
|
||||||
|
msgid "Tracklist"
|
||||||
|
msgstr "Titelliste"
|
||||||
|
|
||||||
|
#: data/gtk.glade:31
|
||||||
|
msgid "large tracklist"
|
||||||
|
msgstr "große Titelliste"
|
||||||
|
|
||||||
|
#: data/gtk.glade:47
|
||||||
|
msgid "small tracklist"
|
||||||
|
msgstr "kleine Titelliste"
|
||||||
|
|
||||||
|
#: data/gtk.glade:64
|
||||||
|
msgid "hide tracklist"
|
||||||
|
msgstr "gar keine Titelliste"
|
||||||
|
|
||||||
|
#: data/gtk.glade:116 data/gtk.glade:172
|
||||||
|
msgid "Title"
|
||||||
|
msgstr "Titel"
|
||||||
|
|
||||||
|
#: data/gtk.glade:133 data/gtk.glade:189
|
||||||
|
msgid "Artist"
|
||||||
|
msgstr "Künstler"
|
||||||
|
|
||||||
|
#: data/gtk.glade:269
|
||||||
|
msgid "Sort"
|
||||||
|
msgstr "Sortierung"
|
||||||
|
|
||||||
|
#: data/gtk.glade:279
|
||||||
|
msgid "sort by artist"
|
||||||
|
msgstr "nach Künstler"
|
||||||
|
|
||||||
|
#: data/gtk.glade:295
|
||||||
|
msgid "sort by title"
|
||||||
|
msgstr "nach Titel"
|
||||||
|
|
||||||
|
#: data/gtk.glade:311
|
||||||
|
msgid "sort by year"
|
||||||
|
msgstr "nach Jahr"
|
||||||
|
|
||||||
|
#: data/gtk.glade:435
|
||||||
|
msgid "Enter hostname or IP address"
|
||||||
|
msgstr "Hostnamen oder IP-Adresse eingeben"
|
||||||
|
|
||||||
|
#: data/gtk.glade:447
|
||||||
|
msgid "Enter URL or local path"
|
||||||
|
msgstr "URL oder lokalen Pfad eingeben"
|
||||||
|
|
||||||
|
#: data/gtk.glade:459
|
||||||
|
msgid "Enter password or leave blank"
|
||||||
|
msgstr "Passwort eingeben oder leer lassen"
|
||||||
|
|
||||||
|
#: data/gtk.glade:484
|
||||||
|
msgid "Host:"
|
||||||
|
msgstr "Host:"
|
||||||
|
|
||||||
|
#: data/gtk.glade:496
|
||||||
|
msgid "Port:"
|
||||||
|
msgstr "Port:"
|
||||||
|
|
||||||
|
#: data/gtk.glade:508
|
||||||
|
msgid "Password:"
|
||||||
|
msgstr "Passwort:"
|
||||||
|
|
||||||
|
#: data/gtk.glade:520
|
||||||
|
msgid "Image Directory:"
|
||||||
|
msgstr "Bildordner:"
|
||||||
|
|
||||||
|
#: data/gtk.glade:544 data/gtk.glade:1200
|
||||||
|
msgid "Server"
|
||||||
|
msgstr "Server"
|
||||||
|
|
||||||
|
#: data/gtk.glade:697 data/gtk.glade:1185
|
||||||
|
msgid "Cover"
|
||||||
|
msgstr "Cover"
|
||||||
|
|
||||||
|
#: data/gtk.glade:808 data/gtk.glade:1234
|
||||||
|
msgid "Playlist"
|
||||||
|
msgstr "Wiedergabeliste"
|
||||||
|
|
||||||
|
#: data/gtk.glade:835
|
||||||
|
msgid "search library"
|
||||||
|
msgstr "durchsuche Bibliothek"
|
||||||
|
|
||||||
|
#: data/gtk.glade:976 data/gtk.glade:1289
|
||||||
|
msgid "Library"
|
||||||
|
msgstr "Bibliothek"
|
||||||
BIN
locale/en/LC_MESSAGES/mcg.mo
Normal file
BIN
locale/en/LC_MESSAGES/mcg.mo
Normal file
Binary file not shown.
103
locale/en/LC_MESSAGES/mcg.po
Normal file
103
locale/en/LC_MESSAGES/mcg.po
Normal file
|
|
@ -0,0 +1,103 @@
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: MPDCoverGrid\n"
|
||||||
|
"POT-Creation-Date: 2017-04-22 14:55+0200\n"
|
||||||
|
"PO-Revision-Date: 2017-04-22 14:56+0200\n"
|
||||||
|
"Last-Translator: coderkun <olli@coderkun.de>\n"
|
||||||
|
"Language-Team: \n"
|
||||||
|
"Language: en\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"X-Generator: Poedit 2.0.1\n"
|
||||||
|
"X-Poedit-Basepath: ../../..\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
"X-Poedit-SearchPath-0: data/gtk.glade\n"
|
||||||
|
|
||||||
|
#: data/gtk.glade:21
|
||||||
|
msgid "Tracklist"
|
||||||
|
msgstr "Tracklist"
|
||||||
|
|
||||||
|
#: data/gtk.glade:31
|
||||||
|
msgid "large tracklist"
|
||||||
|
msgstr "large tracklist"
|
||||||
|
|
||||||
|
#: data/gtk.glade:47
|
||||||
|
msgid "small tracklist"
|
||||||
|
msgstr "small tracklist"
|
||||||
|
|
||||||
|
#: data/gtk.glade:64
|
||||||
|
msgid "hide tracklist"
|
||||||
|
msgstr "hide tracklist"
|
||||||
|
|
||||||
|
#: data/gtk.glade:116 data/gtk.glade:172
|
||||||
|
msgid "Title"
|
||||||
|
msgstr "Title"
|
||||||
|
|
||||||
|
#: data/gtk.glade:133 data/gtk.glade:189
|
||||||
|
msgid "Artist"
|
||||||
|
msgstr "Artist"
|
||||||
|
|
||||||
|
#: data/gtk.glade:269
|
||||||
|
msgid "Sort"
|
||||||
|
msgstr "Sort order"
|
||||||
|
|
||||||
|
#: data/gtk.glade:279
|
||||||
|
msgid "sort by artist"
|
||||||
|
msgstr "by Artist"
|
||||||
|
|
||||||
|
#: data/gtk.glade:295
|
||||||
|
msgid "sort by title"
|
||||||
|
msgstr "by Title"
|
||||||
|
|
||||||
|
#: data/gtk.glade:311
|
||||||
|
msgid "sort by year"
|
||||||
|
msgstr "by Year"
|
||||||
|
|
||||||
|
#: data/gtk.glade:435
|
||||||
|
msgid "Enter hostname or IP address"
|
||||||
|
msgstr "Enter hostname or IP address"
|
||||||
|
|
||||||
|
#: data/gtk.glade:447
|
||||||
|
msgid "Enter URL or local path"
|
||||||
|
msgstr "Enter URL or local path"
|
||||||
|
|
||||||
|
#: data/gtk.glade:459
|
||||||
|
msgid "Enter password or leave blank"
|
||||||
|
msgstr "Enter password or leave blank"
|
||||||
|
|
||||||
|
#: data/gtk.glade:484
|
||||||
|
msgid "Host:"
|
||||||
|
msgstr "Host:"
|
||||||
|
|
||||||
|
#: data/gtk.glade:496
|
||||||
|
msgid "Port:"
|
||||||
|
msgstr "Port:"
|
||||||
|
|
||||||
|
#: data/gtk.glade:508
|
||||||
|
msgid "Password:"
|
||||||
|
msgstr "Password:"
|
||||||
|
|
||||||
|
#: data/gtk.glade:520
|
||||||
|
msgid "Image Directory:"
|
||||||
|
msgstr "Image Directory:"
|
||||||
|
|
||||||
|
#: data/gtk.glade:544 data/gtk.glade:1200
|
||||||
|
msgid "Server"
|
||||||
|
msgstr "Server"
|
||||||
|
|
||||||
|
#: data/gtk.glade:697 data/gtk.glade:1185
|
||||||
|
msgid "Cover"
|
||||||
|
msgstr "Cover"
|
||||||
|
|
||||||
|
#: data/gtk.glade:808 data/gtk.glade:1234
|
||||||
|
msgid "Playlist"
|
||||||
|
msgstr "Playlist"
|
||||||
|
|
||||||
|
#: data/gtk.glade:835
|
||||||
|
msgid "search library"
|
||||||
|
msgstr "search library"
|
||||||
|
|
||||||
|
#: data/gtk.glade:976 data/gtk.glade:1289
|
||||||
|
msgid "Library"
|
||||||
|
msgstr "Library"
|
||||||
|
|
@ -10,6 +10,7 @@ import os
|
||||||
# Set environment
|
# Set environment
|
||||||
srcdir = os.path.abspath(os.path.dirname(__file__))
|
srcdir = os.path.abspath(os.path.dirname(__file__))
|
||||||
datadir = os.path.join(srcdir, '..', 'data')
|
datadir = os.path.join(srcdir, '..', 'data')
|
||||||
|
localedir = os.path.join(srcdir, '..', 'locale')
|
||||||
|
|
||||||
# Set GSettings schema dir (if not set already)
|
# Set GSettings schema dir (if not set already)
|
||||||
if not os.environ.get('GSETTINGS_SCHEMA_DIR'):
|
if not os.environ.get('GSETTINGS_SCHEMA_DIR'):
|
||||||
|
|
@ -28,3 +29,7 @@ class Environment:
|
||||||
|
|
||||||
def get_data(subdir):
|
def get_data(subdir):
|
||||||
return os.path.join(datadir, subdir)
|
return os.path.join(datadir, subdir)
|
||||||
|
|
||||||
|
|
||||||
|
def get_locale():
|
||||||
|
return localedir
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
import gi
|
import gi
|
||||||
gi.require_version('Gtk', '3.0')
|
gi.require_version('Gtk', '3.0')
|
||||||
|
import locale
|
||||||
import logging
|
import logging
|
||||||
import urllib
|
import urllib
|
||||||
|
|
||||||
|
|
@ -17,6 +18,7 @@ from mcg import widgets
|
||||||
class Application(Gtk.Application):
|
class Application(Gtk.Application):
|
||||||
TITLE = "MPDCoverGrid"
|
TITLE = "MPDCoverGrid"
|
||||||
ID = 'de.coderkun.mcg'
|
ID = 'de.coderkun.mcg'
|
||||||
|
DOMAIN = 'mcg'
|
||||||
|
|
||||||
|
|
||||||
def _get_option(shortname, longname, description):
|
def _get_option(shortname, longname, description):
|
||||||
|
|
@ -52,6 +54,7 @@ class Application(Gtk.Application):
|
||||||
self._load_resource()
|
self._load_resource()
|
||||||
self._load_settings()
|
self._load_settings()
|
||||||
self._load_css()
|
self._load_css()
|
||||||
|
self._setup_locale()
|
||||||
self._load_ui()
|
self._load_ui()
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -90,9 +93,15 @@ class Application(Gtk.Application):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def _setup_locale(self):
|
||||||
|
relpath = Environment.get_locale()
|
||||||
|
locale.bindtextdomain(Application.DOMAIN, relpath)
|
||||||
|
|
||||||
|
|
||||||
def _load_ui(self):
|
def _load_ui(self):
|
||||||
# Create builder to load UI
|
# Create builder to load UI
|
||||||
self._builder = Gtk.Builder()
|
self._builder = Gtk.Builder()
|
||||||
|
self._builder.set_translation_domain(Application.DOMAIN)
|
||||||
self._builder.add_from_resource(self._get_resource_path('gtk.glade'))
|
self._builder.add_from_resource(self._get_resource_path('gtk.glade'))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -569,7 +569,7 @@ class ConnectionPanel(GObject.GObject):
|
||||||
self._port_spinner = builder.get_object('server-port')
|
self._port_spinner = builder.get_object('server-port')
|
||||||
# Passwort
|
# Passwort
|
||||||
self._password_entry = builder.get_object('server-password')
|
self._password_entry = builder.get_object('server-password')
|
||||||
# Image dir
|
# Image directory
|
||||||
self._image_dir_entry = builder.get_object('server-image-dir')
|
self._image_dir_entry = builder.get_object('server-image-dir')
|
||||||
|
|
||||||
# Zeroconf provider
|
# Zeroconf provider
|
||||||
|
|
|
||||||
4
setup.py
4
setup.py
|
|
@ -52,6 +52,10 @@ setup(
|
||||||
"data/gtk.glade",
|
"data/gtk.glade",
|
||||||
"data/mcg.css",
|
"data/mcg.css",
|
||||||
"data/noise-texture.png"
|
"data/noise-texture.png"
|
||||||
|
]),
|
||||||
|
(os.path.join('share', 'locale'), [
|
||||||
|
'locale/en/LC_MESSAGES/mcg.mo',
|
||||||
|
'locale/de/LC_MESSAGES/mcg.mo'
|
||||||
])
|
])
|
||||||
],
|
],
|
||||||
classifiers = [
|
classifiers = [
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue