From 8a34d904fb33548eaa3b2ddf41b36437a46356f7 Mon Sep 17 00:00:00 2001 From: coderkun Date: Sat, 22 Apr 2017 15:03:55 +0200 Subject: [PATCH] Add translations support (including EN and DE) (close #6) --- data/de.coderkun.mcg.gresource | Bin 146190 -> 146154 bytes data/de.coderkun.mcg.gschema.xml | 2 +- data/gtk.glade | 18 +++--- locale/de/LC_MESSAGES/mcg.mo | Bin 0 -> 1577 bytes locale/de/LC_MESSAGES/mcg.po | 104 +++++++++++++++++++++++++++++++ locale/en/LC_MESSAGES/mcg.mo | Bin 0 -> 1494 bytes locale/en/LC_MESSAGES/mcg.po | 103 ++++++++++++++++++++++++++++++ mcg/__init__.py | 5 ++ mcg/application.py | 9 +++ mcg/widgets.py | 2 +- setup.py | 4 ++ 11 files changed, 236 insertions(+), 11 deletions(-) create mode 100644 locale/de/LC_MESSAGES/mcg.mo create mode 100644 locale/de/LC_MESSAGES/mcg.po create mode 100644 locale/en/LC_MESSAGES/mcg.mo create mode 100644 locale/en/LC_MESSAGES/mcg.po diff --git a/data/de.coderkun.mcg.gresource b/data/de.coderkun.mcg.gresource index 942a01911959336f68ecc9f64ad9591a8de6b6f6..96e44a730152c4952a78470fb2d22593314a5d39 100644 GIT binary patch delta 271 zcmeDC#_{Sa$Akw=udEs$ZGFV3X32PIJEs++Y2ft0ZpL&O*SwO{B880n;*z|?+*F19 zA_dO?g~XJUqSWHz>5Scsn$tJrGxBc#)Xlh(NgSd$G{^^}E+;=ZF-M^wu_R-9;uN5v zHT{f_7@_7BBo-H!=NF}b)ukqur79%lB<4*IlwuN}exZv|Y5Tm1jLN)hsmUezMU~qR z&SRXdGhN{{qssIK6Q+de4{8`WxBofKc#n7byqk<>(|!S6VQ`qSYPyFW)9>l?k1%pi pxBtkF#7VrHE&;F!PLySHI`|k6#)CyX(<2z delta 243 zcmaF$m80()$Akw=eAbPRwmxE1vt<0XozsfZG;sQ~hm0cA?YkM%m_71~ryrcgs5N~< zJ|pk;@7;_mnWo>G$H+f@;#EeC=@*(Am8NwvI!_mv%ILbiv!C%1<8+5Pj2zRiPh?b^ z{-BFdX#0VQjLN)>R@l_lL$*eVtVTIjjT+O(+{i!TK!-pqtNsRHH@6o xzaC}e->z_m@jNeB;r0(V8CyjO=;=>o '' - Image dir + Image directory Directory which a webserver is providing images on diff --git a/data/gtk.glade b/data/gtk.glade index ef763e0..9706c7c 100644 --- a/data/gtk.glade +++ b/data/gtk.glade @@ -431,8 +431,8 @@ True True - localhost - Host + localhost + Enter hostname or IP address @@ -444,7 +444,7 @@ True True - Image Directory + Enter URL or local path 1 @@ -456,7 +456,7 @@ True True False - Password + Enter password or leave blank password @@ -517,7 +517,7 @@ True False start - Image Dir: + Image Directory: 1 @@ -730,7 +730,7 @@ page0 - page0 + page0 @@ -798,7 +798,7 @@ page1 - page1 + page1 1 @@ -897,7 +897,7 @@ page0 - page0 + page0 @@ -966,7 +966,7 @@ page1 - page1 + page1 1 diff --git a/locale/de/LC_MESSAGES/mcg.mo b/locale/de/LC_MESSAGES/mcg.mo new file mode 100644 index 0000000000000000000000000000000000000000..134b06a8eee1c6de6d0c9fb77d0b533948bd3d8f GIT binary patch literal 1577 zcmaKrJ&YVR6vquDBw4fjl6*JGe}Ruc-+DlZhrtuzcgX!T$bNo@ zbB=cxdNU(H6ppLJq@Gt^IUA{fmePm zigYX&g;8_EsT9uR#147RXa|Dm>u5;yy&8^di%ORy<0Ouoz3NTv0m5eve#v+xZ2OwJgEp(wyq-O zve)Uply%N#y`Joz&Ci{Cq0{ShV3=K_UCl23*KSLNnBk%}7==RRa_CC(xSvmvXQX%I^3*78SLCo# zK2Th}-oKQcU)XUPH_2xk7Gbp=O8k zyS-dLt-{Q_GT9~PCn1-1T8m+|w<4R@)#t5zc2#!ItSsE@xS1c)T9aKaoAmaB?9`vR zK$xt9E32rMM{(R98HMYMD|f!P0d3<`Yu8PUTB5DT%8-@CO;t+5wP--LZd2}UE4kok z@9aX|-Lx=Cts3`t8dF2;6m6Wm?>CH@4|h~EcByI9e9uhr4pZ)if0ks1)UGyS*Y zHTjtxao>|^*2Zw8yc{EElC>&rdUxluf9#YfTNP%*isU`<$L8NBt-^1zC{!&rG3(dY HRprIs#DR%n literal 0 HcmV?d00001 diff --git a/locale/de/LC_MESSAGES/mcg.po b/locale/de/LC_MESSAGES/mcg.po new file mode 100644 index 0000000..5afbf78 --- /dev/null +++ b/locale/de/LC_MESSAGES/mcg.po @@ -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 \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" diff --git a/locale/en/LC_MESSAGES/mcg.mo b/locale/en/LC_MESSAGES/mcg.mo new file mode 100644 index 0000000000000000000000000000000000000000..70a23a78e46f4e5a69b2f96f329c686ed328373a GIT binary patch literal 1494 zcmdUuzi-qq6vqv;(1u^7Kw$u3gpfceY3|fQm2wFBlM`1FwO0gU@?FebIA3zI-NFq> zj0~NSn1F!|2{ADuCd7geVqiqfNc;&bd|xi@F)*@V<>lk&_x${|<9r_-c*4+*z>dMb z!cM?8w&8^~w4Je?;4nA{j)0Uq22#EU9tW@G@faL|pMtxy2pj?*gH-1!NOfO; z1K`Vi{544VZ@_)vJ8(bvDfhqS{?FY11@1-M*}>Qz@F@5k+E0U2|2>M+dLKd3{RJf5 zKS0twh#inKH) z4|aqx_fj2YGo@IUyrx9bVplOKVCA-GNIn;9S+}X~2CNd-w9s7^=FJTPXEs7$teF%SCVJCUoJx1d*1n8UPTz|Vxx&s0tXfFdKyXHT1)uFRH^v#rt3xWl2Z{$ zV-4r(R;6eMe9I5GOq`|i(tKZa!SkKj6kj(%`ECa~t-No?J4(dKG_N;>Hqw?>s|)T_ zKaXVGk=mV4uxy+(0zOrXt#i{|l!??mePJr2*z%(1dj&*#t~(=)q>B@9&l}GkCsb=% zD0d;%Z4>aMlewl;oaVi5=}f{;mU!Xpbid3>_8~(Qa{Yiu!iw>RZFvnPBI&UI;O63I Xz~}qN_ZL?;-#U7|Ujv<6bYXu3`MPIk literal 0 HcmV?d00001 diff --git a/locale/en/LC_MESSAGES/mcg.po b/locale/en/LC_MESSAGES/mcg.po new file mode 100644 index 0000000..a238dce --- /dev/null +++ b/locale/en/LC_MESSAGES/mcg.po @@ -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 \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" diff --git a/mcg/__init__.py b/mcg/__init__.py index 6e47e0e..e7b27ba 100644 --- a/mcg/__init__.py +++ b/mcg/__init__.py @@ -10,6 +10,7 @@ import os # Set environment srcdir = os.path.abspath(os.path.dirname(__file__)) datadir = os.path.join(srcdir, '..', 'data') +localedir = os.path.join(srcdir, '..', 'locale') # Set GSettings schema dir (if not set already) if not os.environ.get('GSETTINGS_SCHEMA_DIR'): @@ -28,3 +29,7 @@ class Environment: def get_data(subdir): return os.path.join(datadir, subdir) + + + def get_locale(): + return localedir diff --git a/mcg/application.py b/mcg/application.py index 94e13d1..d6770ab 100644 --- a/mcg/application.py +++ b/mcg/application.py @@ -3,6 +3,7 @@ import gi gi.require_version('Gtk', '3.0') +import locale import logging import urllib @@ -17,6 +18,7 @@ from mcg import widgets class Application(Gtk.Application): TITLE = "MPDCoverGrid" ID = 'de.coderkun.mcg' + DOMAIN = 'mcg' def _get_option(shortname, longname, description): @@ -52,6 +54,7 @@ class Application(Gtk.Application): self._load_resource() self._load_settings() self._load_css() + self._setup_locale() 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): # Create builder to load UI self._builder = Gtk.Builder() + self._builder.set_translation_domain(Application.DOMAIN) self._builder.add_from_resource(self._get_resource_path('gtk.glade')) diff --git a/mcg/widgets.py b/mcg/widgets.py index 2907fb5..0b5b786 100644 --- a/mcg/widgets.py +++ b/mcg/widgets.py @@ -569,7 +569,7 @@ class ConnectionPanel(GObject.GObject): self._port_spinner = builder.get_object('server-port') # Passwort self._password_entry = builder.get_object('server-password') - # Image dir + # Image directory self._image_dir_entry = builder.get_object('server-image-dir') # Zeroconf provider diff --git a/setup.py b/setup.py index cbc1bac..799e302 100644 --- a/setup.py +++ b/setup.py @@ -52,6 +52,10 @@ setup( "data/gtk.glade", "data/mcg.css", "data/noise-texture.png" + ]), + (os.path.join('share', 'locale'), [ + 'locale/en/LC_MESSAGES/mcg.mo', + 'locale/de/LC_MESSAGES/mcg.mo' ]) ], classifiers = [