From patchwork Wed Sep 5 19:18:43 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anthony Liguori X-Patchwork-Id: 181918 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 0B7C72C0090 for ; Thu, 6 Sep 2012 05:19:41 +1000 (EST) Received: from localhost ([::1]:34473 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T9L8V-00061b-1k for incoming@patchwork.ozlabs.org; Wed, 05 Sep 2012 15:19:39 -0400 Received: from eggs.gnu.org ([208.118.235.92]:58230) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T9L8A-0005o3-OG for qemu-devel@nongnu.org; Wed, 05 Sep 2012 15:19:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T9L84-0000OV-F1 for qemu-devel@nongnu.org; Wed, 05 Sep 2012 15:19:18 -0400 Received: from e36.co.us.ibm.com ([32.97.110.154]:54222) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T9L84-0000OL-5N for qemu-devel@nongnu.org; Wed, 05 Sep 2012 15:19:12 -0400 Received: from /spool/local by e36.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 5 Sep 2012 13:19:11 -0600 Received: from d03dlp02.boulder.ibm.com (9.17.202.178) by e36.co.us.ibm.com (192.168.1.136) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Wed, 5 Sep 2012 13:19:05 -0600 Received: from d03relay02.boulder.ibm.com (d03relay02.boulder.ibm.com [9.17.195.227]) by d03dlp02.boulder.ibm.com (Postfix) with ESMTP id 2946E3E40039 for ; Wed, 5 Sep 2012 13:19:03 -0600 (MDT) Received: from d03av02.boulder.ibm.com (d03av02.boulder.ibm.com [9.17.195.168]) by d03relay02.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id q85JJ1Ad256258 for ; Wed, 5 Sep 2012 13:19:02 -0600 Received: from d03av02.boulder.ibm.com (loopback [127.0.0.1]) by d03av02.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id q85JJ0C1010194 for ; Wed, 5 Sep 2012 13:19:00 -0600 Received: from titi.austin.rr.com (sig-9-65-197-11.mts.ibm.com [9.65.197.11]) by d03av02.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id q85JIle9008806; Wed, 5 Sep 2012 13:18:58 -0600 From: Anthony Liguori To: qemu-devel@nongnu.org Date: Wed, 5 Sep 2012 14:18:43 -0500 Message-Id: <1346872724-9156-7-git-send-email-aliguori@us.ibm.com> X-Mailer: git-send-email 1.7.5.4 In-Reply-To: <1346872724-9156-1-git-send-email-aliguori@us.ibm.com> References: <1346872724-9156-1-git-send-email-aliguori@us.ibm.com> X-Content-Scanned: Fidelis XPS MAILER x-cbid: 12090519-7606-0000-0000-00000361737B X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 32.97.110.154 Cc: Anthony Liguori Subject: [Qemu-devel] [PATCH 6/7] gtk: add translation support X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org This includes a de_DE translation from Kevin Wolf and an it translation from Paolo Bonzini. Signed-off-by: Anthony Liguori --- Makefile | 3 +++ configure | 4 +++- po/Makefile | 43 +++++++++++++++++++++++++++++++++++++++++++ po/de_DE.po | 37 +++++++++++++++++++++++++++++++++++++ po/it.po | 37 +++++++++++++++++++++++++++++++++++++ po/messages.po | 37 +++++++++++++++++++++++++++++++++++++ ui/gtk.c | 20 ++++++++++++++------ 7 files changed, 174 insertions(+), 7 deletions(-) create mode 100644 po/Makefile create mode 100644 po/de_DE.po create mode 100644 po/it.po create mode 100644 po/messages.po diff --git a/Makefile b/Makefile index 9523e05..d75ef30 100644 --- a/Makefile +++ b/Makefile @@ -315,6 +315,9 @@ ifneq ($(BLOBS),) $(INSTALL_DATA) $(SRC_PATH)/pc-bios/$$x "$(DESTDIR)$(qemu_datadir)"; \ done endif +ifeq ($(CONFIG_GTK),y) + $(MAKE) -C po $@ || exit 1 +endif $(INSTALL_DIR) "$(DESTDIR)$(qemu_datadir)/keymaps" set -e; for x in $(KEYMAPS); do \ $(INSTALL_DATA) $(SRC_PATH)/pc-bios/keymaps/$$x "$(DESTDIR)$(qemu_datadir)/keymaps"; \ diff --git a/configure b/configure index 586dbd3..befc65c 100755 --- a/configure +++ b/configure @@ -3055,6 +3055,7 @@ fi qemu_confdir=$sysconfdir$confsuffix qemu_datadir=$datadir$confsuffix +qemu_localedir="$datadir/locale" tools= if test "$softmmu" = yes ; then @@ -3207,6 +3208,7 @@ echo "sysconfdir=$sysconfdir" >> $config_host_mak echo "qemu_confdir=$qemu_confdir" >> $config_host_mak echo "qemu_datadir=$qemu_datadir" >> $config_host_mak echo "qemu_docdir=$qemu_docdir" >> $config_host_mak +echo "qemu_localedir=$qemu_localedir" >> $config_host_mak echo "libexecdir=\${prefix}/libexec" >> $config_host_mak echo "CONFIG_QEMU_HELPERDIR=\"$prefix/libexec\"" >> $config_host_mak @@ -4135,7 +4137,7 @@ DIRS="$DIRS qapi-generated" DIRS="$DIRS libcacard libcacard/libcacard libcacard/trace" FILES="Makefile tests/tcg/Makefile qdict-test-data.txt" FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit" -FILES="$FILES tests/tcg/lm32/Makefile libcacard/Makefile" +FILES="$FILES tests/tcg/lm32/Makefile libcacard/Makefile po/Makefile" FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps" FILES="$FILES pc-bios/spapr-rtas/Makefile" FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile" diff --git a/po/Makefile b/po/Makefile new file mode 100644 index 0000000..0e2c11b --- /dev/null +++ b/po/Makefile @@ -0,0 +1,43 @@ +# This makefile is very special as it's meant to build as part of the build +# process and also within the source tree to update the translation files. + +VERSION=$(shell cat ../VERSION) +TRANSLATIONS=de_DE +SRCS=$(addsuffix .po, $(TRANSLATIONS)) +OBJS=$(addsuffix .mo, $(TRANSLATIONS)) + +SRC_PATH=.. + +-include ../config-host.mak + +vpath %.po $(SRC_PATH)/po + +all: + @echo Use 'make update' to update translation files + @echo or us 'make build' or 'make install' to build and install + @echo the translation files + +update: $(SRCS) + +build: $(OBJS) + +clean: + $(RM) $(OBJS) + +install: $(OBJS) + for obj in $(OBJS); do \ + base=`basename $$obj .mo`; \ + $(INSTALL) -d $(DESTDIR)$(prefix)/share/locale/$$base/LC_MESSAGES; \ + $(INSTALL) -m644 $$obj $(DESTDIR)$(prefix)/share/locale/$$base/LC_MESSAGES/qemu.mo; \ + done + +%.mo: + @msgfmt -o $@ $(SRC_PATH)/po/`basename $@ .mo`.po + +messages.po: $(SRC_PATH)/ui/gtk.c + @xgettext -o $@ --foreign-user --package-name=QEMU --package-version=1.0.50 --msgid-bugs-address=qemu-devel@nongnu.org -k_ -C $< + +de_DE.po: messages.po $(SRC_PATH)/ui/gtk.c + @msgmerge $@ $< > $@.bak && mv $@.bak $@ + +.PHONY: $(SRCS) clean all diff --git a/po/de_DE.po b/po/de_DE.po new file mode 100644 index 0000000..aa4ef42 --- /dev/null +++ b/po/de_DE.po @@ -0,0 +1,37 @@ +# SOME DESCRIPTIVE TITLE. +# This file is put in the public domain. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: QEMU 1.0.50\n" +"Report-Msgid-Bugs-To: qemu-devel@nongnu.org\n" +"POT-Creation-Date: 2012-02-26 11:30-0600\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../ui/gtk.c:769 +msgid "_File" +msgstr "_File FIXME" + +#: ../ui/gtk.c:779 +msgid "_View" +msgstr "_View FIXME" + +#: ../ui/gtk.c:781 +msgid "_Full Screen" +msgstr "_Full Screen FIXME" + +#: ../ui/gtk.c:805 +msgid "_Grab Input" +msgstr "_Grab Input FIXME" + +#: ../ui/gtk.c:831 +msgid "Show _Tabs" +msgstr "Show _Tabs FIXME" diff --git a/po/it.po b/po/it.po new file mode 100644 index 0000000..85eeef9 --- /dev/null +++ b/po/it.po @@ -0,0 +1,37 @@ +# Italian translation for QEMU. +# This file is put in the public domain. +# Paolo Bonzini , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: QEMU 1.0.50\n" +"Report-Msgid-Bugs-To: qemu-devel@nongnu.org\n" +"POT-Creation-Date: 2012-02-26 11:30-0600\n" +"PO-Revision-Date: 2012-02-27 08:23+0100\n" +"Last-Translator: Paolo Bonzini \n" +"Language-Team: Italian \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: ../ui/gtk.c:769 +msgid "_File" +msgstr "_File" + +#: ../ui/gtk.c:779 +msgid "_View" +msgstr "_Visualizza" + +#: ../ui/gtk.c:781 +msgid "_Full Screen" +msgstr "_Schermo intero" + +#: ../ui/gtk.c:805 +msgid "_Grab Input" +msgstr "_Cattura input" + +#: ../ui/gtk.c:831 +msgid "Show _Tabs" +msgstr "Mostra _tab" diff --git a/po/messages.po b/po/messages.po new file mode 100644 index 0000000..741e782 --- /dev/null +++ b/po/messages.po @@ -0,0 +1,37 @@ +# SOME DESCRIPTIVE TITLE. +# This file is put in the public domain. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: QEMU 1.0.50\n" +"Report-Msgid-Bugs-To: qemu-devel@nongnu.org\n" +"POT-Creation-Date: 2012-02-26 11:30-0600\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../ui/gtk.c:769 +msgid "_File" +msgstr "" + +#: ../ui/gtk.c:779 +msgid "_View" +msgstr "" + +#: ../ui/gtk.c:781 +msgid "_Full Screen" +msgstr "" + +#: ../ui/gtk.c:805 +msgid "_Grab Input" +msgstr "" + +#: ../ui/gtk.c:831 +msgid "Show _Tabs" +msgstr "" diff --git a/ui/gtk.c b/ui/gtk.c index 5a5d8e2..aa80ef4 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -31,8 +31,12 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#define GETTEXT_PACKAGE "qemu" +#define LOCALEDIR "po" + #include #include +#include #include #include #include @@ -940,7 +944,7 @@ static void gd_create_menus(GtkDisplayState *s) accel_group = gtk_accel_group_new(); s->file_menu = gtk_menu_new(); gtk_menu_set_accel_group(GTK_MENU(s->file_menu), accel_group); - s->file_menu_item = gtk_menu_item_new_with_mnemonic("_File"); + s->file_menu_item = gtk_menu_item_new_with_mnemonic(_("_File")); s->quit_item = gtk_image_menu_item_new_from_stock(GTK_STOCK_QUIT, NULL); gtk_stock_lookup(GTK_STOCK_QUIT, &item); @@ -950,9 +954,9 @@ static void gd_create_menus(GtkDisplayState *s) s->view_menu = gtk_menu_new(); gtk_menu_set_accel_group(GTK_MENU(s->view_menu), accel_group); - s->view_menu_item = gtk_menu_item_new_with_mnemonic("_View"); + s->view_menu_item = gtk_menu_item_new_with_mnemonic(_("_View")); - s->full_screen_item = gtk_check_menu_item_new_with_mnemonic("_Full Screen"); + s->full_screen_item = gtk_check_menu_item_new_with_mnemonic(_("_Full Screen")); gtk_menu_item_set_accel_path(GTK_MENU_ITEM(s->full_screen_item), "/View/Full Screen"); gtk_accel_map_add_entry("/View/Full Screen", GDK_KEY_f, GDK_CONTROL_MASK | GDK_MOD1_MASK); @@ -985,10 +989,10 @@ static void gd_create_menus(GtkDisplayState *s) separator = gtk_separator_menu_item_new(); gtk_menu_append(GTK_MENU(s->view_menu), separator); - s->grab_on_hover_item = gtk_check_menu_item_new_with_mnemonic("Grab On _Hover"); + s->grab_on_hover_item = gtk_check_menu_item_new_with_mnemonic(_("Grab On _Hover")); gtk_menu_append(GTK_MENU(s->view_menu), s->grab_on_hover_item); - s->grab_item = gtk_check_menu_item_new_with_mnemonic("_Grab Input"); + s->grab_item = gtk_check_menu_item_new_with_mnemonic(_("_Grab Input")); gtk_menu_item_set_accel_path(GTK_MENU_ITEM(s->grab_item), "/View/Grab Input"); gtk_accel_map_add_entry("/View/Grab Input", GDK_KEY_g, GDK_CONTROL_MASK | GDK_MOD1_MASK); @@ -1014,7 +1018,7 @@ static void gd_create_menus(GtkDisplayState *s) separator = gtk_separator_menu_item_new(); gtk_menu_append(GTK_MENU(s->view_menu), separator); - s->show_tabs_item = gtk_check_menu_item_new_with_mnemonic("Show _Tabs"); + s->show_tabs_item = gtk_check_menu_item_new_with_mnemonic(_("Show _Tabs")); gtk_menu_append(GTK_MENU(s->view_menu), s->show_tabs_item); g_object_set_data(G_OBJECT(s->window), "accel_group", accel_group); @@ -1051,6 +1055,10 @@ void gtk_display_init(DisplayState *ds) s->scale_y = 1.0; s->free_scale = FALSE; + setlocale(LC_ALL, ""); + bindtextdomain("qemu", CONFIG_QEMU_LOCALEDIR); + textdomain("qemu"); + s->null_cursor = gdk_cursor_new(GDK_BLANK_CURSOR); s->mouse_mode_notifier.notify = gd_mouse_mode_change;