From: Javier S. Pedro Date: Thu, 31 Dec 2009 01:46:16 +0000 (+0100) Subject: translating X-Git-Tag: drnoksnes_1_3_0~35 X-Git-Url: http://git.maemo.org/git/?p=drnoksnes;a=commitdiff_plain;h=cc94edcc567bc1b7d147933b09de2da8a3a30a63 translating --- diff --git a/debian/optify b/debian/optify new file mode 100644 index 0000000..865faf1 --- /dev/null +++ b/debian/optify @@ -0,0 +1 @@ +auto diff --git a/debian/rules b/debian/rules index 31e3802..a74a522 100755 --- a/debian/rules +++ b/debian/rules @@ -75,7 +75,8 @@ endif echo CXXFLAGS="$(CFLAGS)" >> config.mk echo LDFLAGS="$(LDFLAGS)" >> config.mk - echo CFLAGS="$(GUI_CFLAGS)" > gui/config.mk + echo CONF_NLS=1 > gui/config.mk + echo CFLAGS="$(GUI_CFLAGS)" >> gui/config.mk echo LDFLAGS="$(GUI_LDFLAGS)" >> gui/config.mk echo MAEMO_VERSION="$(MAEMO_VERSION)" >> gui/config.mk echo GAME_VERSION="$(GAME_VERSION)" >> gui/config.mk @@ -125,10 +126,6 @@ binary-arch: build install dh_installdeb dh_shlibdeps dh_gencontrol -ifeq ($(shell expr "$(MAEMO_VERSION)" ">" 4), 1) -# Optify only in Maemo 5 - maemo-optify -endif dh_md5sums dh_builddeb diff --git a/gui/Makefile b/gui/Makefile index c52d593..b4df9bd 100644 --- a/gui/Makefile +++ b/gui/Makefile @@ -7,6 +7,11 @@ LDLIBS:=$(shell pkg-config --libs $(PKGS)) # The about dialog will use this CPPFLAGS+=-DGAME_VERSION=$(GAME_VERSION) +GETTEXT_PACKAGE:=drnoksnes_plugin +ifeq ($(CONF_NLS), 1) + CPPFLAGS += -DCONF_NLS=1 -DGETTEXT_PACKAGE=\"$(GETTEXT_PACKAGE)\" +endif + # Some hardcoded paths GAME_SHARE_PATH=/usr/share/games/drnoksnes GAME_PLUGIN_PATH=/usr/lib/drnoksnes_plugin.so @@ -23,26 +28,46 @@ ifdef MAEMO_VERSION M4DEFS+= -DMAEMO -DMAEMO_MAJOR=$(MAEMO_VERSION) endif -OBJS:=plugin.o state.o save.o controls.o cellrendererkey.o advanced.o about.o +XGETTEXT:=xgettext +XGETTEXT_OPTS:=--default-domain=$(GETTEXT_PACKAGE) --from-code=UTF-8 \ + --language=C --msgid-bugs-address=maemo@javispedro.com \ + --keyword=_ --keyword=N_ + +SRCS:=plugin.c state.c save.c controls.c cellrendererkey.c settings.c about.c +OBJS:=$(SRCS:.c=.o) + +POT:=$(GETTEXT_PACKAGE).pot +PO_FILES:=$(wildcard i18n/*.po) +MO_FILES:=$(PO_FILES:.po=.mo) +LANGS:=$(basename $(notdir $(PO_FILES))) DATA_FILES:=drnoksnes.conf drnoksnes.desktop drnoksnes.game DATA_FILES+=drnoksnes.service drnoksnes.startup.service DATA_FILES+=drnoksnes.schemas -all: drnoksnes_plugin.so data +all: drnoksnes_plugin.so $(DATA_FILES) $(MO_FILES) drnoksnes_plugin.so: $(OBJS) - $(CC) $(LDFLAGS) $^ $(LDLIBS)-o $@ + $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@ + +$(POT): $(SRCS) + $(XGETTEXT) $(XGETTEXT_OPTS) -o$@ $^ + +$(MO_FILES): %.mo: %.po + msgfmt -o $@ $< + +$(PO_FILES): %: $(POT) + msgmerge -U $@ $(POT) + @touch $@ clean: rm -f drnoksnes_plugin.so *.o + rm -f $(POT) $(MO_FILES) rm -f $(DATA_FILES) %: %.m4 $(M4) $(M4DEFS) $^ > $@ -data: $(DATA_FILES) - install: all install -d $(DESTDIR)$(GAME_SHARE_PATH) install drnoksnes_plugin.so $(DESTDIR)$(GAME_PLUGIN_PATH) @@ -60,6 +85,11 @@ install: all ifneq ($(GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL),1) gconftool-2 --makefile-install-rule $(DESTDIR)/usr/share/gconf/schemas/drnoksnes.schemas > /dev/null endif + for lang in $(LANGS); do \ + install -d $(DESTDIR)/usr/share/locale/$$lang/LC_MESSAGES ; \ + install -m 0644 i18n/$$lang.mo \ + $(DESTDIR)/usr/share/locale/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo ; \ + done -.PHONY: all clean data install +.PHONY: all clean install diff --git a/gui/about.c b/gui/about.c index 3cbbc56..65ce6ce 100644 --- a/gui/about.c +++ b/gui/about.c @@ -51,7 +51,7 @@ static void cb_url_response(GtkWidget * button, gpointer data) void about_dialog(GtkWindow* parent) { - dialog = GTK_DIALOG(gtk_dialog_new_with_buttons("About", + dialog = GTK_DIALOG(gtk_dialog_new_with_buttons(_("About"), parent, GTK_DIALOG_MODAL, GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL)); diff --git a/gui/cellrendererkey.c b/gui/cellrendererkey.c index 07ef6fd..974a7a0 100644 --- a/gui/cellrendererkey.c +++ b/gui/cellrendererkey.c @@ -1,11 +1,9 @@ -#include #include #include #include #include "cellrendererkey.h" -#define _(x) x -#define N_(x) x +#include "i18n.h" #define CELL_RENDERER_TEXT_PATH "cell-renderer-key-text" @@ -137,8 +135,8 @@ cell_renderer_key_class_init (CellRendererKeyClass *cell_key_class) g_object_class_install_property (object_class, PROP_SCANCODE, g_param_spec_int ("scancode", - _("Scancode"), - _("Scancode"), + "Scancode", + "Scancode", -1, G_MAXINT, -1, diff --git a/gui/i18n.h b/gui/i18n.h index 6199aaa..fe8ec60 100644 --- a/gui/i18n.h +++ b/gui/i18n.h @@ -1,9 +1,10 @@ #ifndef __I18N_H__ #define __I18N_H__ -#define GETTEXT_PACKAGE "drnoksnes" - #if CONF_NLS +#if !defined(GETTEXT_PACKAGE) +# error GETTEXT_PACKAGE not defined +#endif #include #define _(String) dgettext(GETTEXT_PACKAGE, String) #ifdef gettext_noop diff --git a/gui/i18n/es_ES.po b/gui/i18n/es_ES.po new file mode 100644 index 0000000..ef1ad12 --- /dev/null +++ b/gui/i18n/es_ES.po @@ -0,0 +1,141 @@ +# Spanish translations for PACKAGE package +# Traducciones al español para el paquete PACKAGE. +# Copyright (C) 2009 THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Javier , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: DrNokSnes 1.2.5\n" +"Report-Msgid-Bugs-To: maemo@javispedro.com\n" +"POT-Creation-Date: 2009-12-31 02:34+0100\n" +"PO-Revision-Date: 2009-12-31 02:08+0100\n" +"Last-Translator: Javier \n" +"Language-Team: Spanish \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" +"X-Poedit-Language: Spanish\n" +"X-Poedit-Country: SPAIN\n" + +#: plugin.c:106 +msgid "" +msgstr "" + +#: plugin.c:211 +msgid "ROM" +msgstr "ROM" + +#: plugin.c:229 +msgid "Select ROM..." +msgstr "Seleccionar ROM..." + +#: plugin.c:246 +msgid "Sound" +msgstr "Sonido" + +#: plugin.c:252 +msgid "Target framerate" +msgstr "Velocidad objetivo" + +#: plugin.c:269 +msgid "Show while in game" +msgstr "Mostrar durante el juego" + +#: plugin.c:273 plugin.c:291 +msgid "Turbo mode" +msgstr "Modo Turbo" + +#: plugin.c:288 +msgid "Enable sound" +msgstr "Activar sonido" + +#: plugin.c:293 +msgid "Display framerate" +msgstr "Mostrar velocidad" + +#: plugin.c:312 settings.c:171 +msgid "Accurate graphics" +msgstr "Mejores gráficos" + +#: plugin.c:316 +msgid "Framerate:" +msgstr "Velocidad:" + +#: plugin.c:325 +msgid "No speedhacks" +msgstr "Sin speedhacks" + +#: plugin.c:326 +msgid "Safe hacks only" +msgstr "Sólo hacks seguros" + +#: plugin.c:327 +msgid "All speedhacks" +msgstr "Todos los hacks" + +#: plugin.c:421 +msgid "Settings…" +msgstr "Ajustes…" + +#: plugin.c:423 plugin.c:444 +msgid "Controls…" +msgstr "Controles…" + +#: plugin.c:425 plugin.c:436 +msgid "About…" +msgstr "Acerca de…" + +#: plugin.c:435 settings.c:148 +msgid "Settings" +msgstr "Ajustes" + +#: plugin.c:448 +msgid "Advanced…" +msgstr "Avanzados…" + +#: plugin.c:510 +msgid "No ROM selected" +msgstr "Sin ROM seleccionada" + +#: plugin.c:515 +msgid "ROM file does not exist" +msgstr "El archivo ROM no existe" + +#: cellrendererkey.c:10 +msgid "Press key or…" +msgstr "Pulsa tecla o…" + +#: settings.c:49 +msgid "Simple 2x zoom (fast)" +msgstr "Zoom 2X simple (rápido)" + +#: settings.c:51 settings.c:57 settings.c:59 +msgid "Simple 2x zoom" +msgstr "Zoom 2X simple" + +#: settings.c:53 +msgid "Fill the entire screen" +msgstr "Rellenar toda la pantalla" + +#: settings.c:56 +msgid "Antialiased 2x zoom (fast)" +msgstr "Zoom 2X suavizado (rápido)" + +#: settings.c:62 +msgid "Original size" +msgstr "Tamaño original" + +#: settings.c:161 +#, fuzzy +msgid "Controls" +msgstr "Controles…" + +#: settings.c:165 +msgid "Advanced" +msgstr "Avanzado" + +#: settings.c:177 +msgid "Zoom" +msgstr "Zoom" diff --git a/gui/plugin.c b/gui/plugin.c index dabe18a..d186308 100644 --- a/gui/plugin.c +++ b/gui/plugin.c @@ -103,7 +103,7 @@ static void set_rom(const char * rom_file) if (current_rom_file) g_free(current_rom_file); if (!rom_file || strlen(rom_file) == 0) { current_rom_file = NULL; - set_rom_label(""); + set_rom_label(_("")); return; } @@ -208,7 +208,7 @@ static GtkWidget * load_plugin(void) select_rom_btn = HILDON_BUTTON(hildon_button_new_with_text( HILDON_SIZE_AUTO_WIDTH | HILDON_SIZE_THUMB_HEIGHT, HILDON_BUTTON_ARRANGEMENT_VERTICAL, - "ROM", + _("ROM"), NULL)); hildon_button_set_alignment(select_rom_btn, 0.0f, 0.5f, 0.9f, 0.2f); @@ -226,7 +226,7 @@ static GtkWidget * load_plugin(void) #else { GtkWidget* rom_hbox = gtk_hbox_new(FALSE, HILDON_MARGIN_DEFAULT); - select_rom_btn = GTK_BUTTON(gtk_button_new_with_label("Select ROM...")); + select_rom_btn = GTK_BUTTON(gtk_button_new_with_label(_("Select ROM..."))); gtk_widget_set_size_request(GTK_WIDGET(select_rom_btn), 180, 46); rom_label = GTK_LABEL(gtk_label_new(NULL)); @@ -270,7 +270,7 @@ static GtkWidget * load_plugin(void) turbo_check = HILDON_CHECK_BUTTON(hildon_check_button_new(HILDON_SIZE_FINGER_HEIGHT)); gtk_button_set_label(GTK_BUTTON(turbo_check), - "Turbo mode"); + _("Turbo mode")); gtk_box_pack_start_defaults(framerate_sel_box, GTK_WIDGET(display_fps_check)); gtk_box_pack_start_defaults(framerate_sel_box, GTK_WIDGET(turbo_check)); @@ -285,12 +285,12 @@ static GtkWidget * load_plugin(void) { GtkBox* opt_hbox1 = GTK_BOX(gtk_hbox_new(FALSE, HILDON_MARGIN_DEFAULT)); sound_check = - GTK_CHECK_BUTTON(gtk_check_button_new_with_label("Enable sound")); + GTK_CHECK_BUTTON(gtk_check_button_new_with_label(_("Enable sound"))); turbo_check = - GTK_CHECK_BUTTON(gtk_check_button_new_with_label("Turbo mode")); + GTK_CHECK_BUTTON(gtk_check_button_new_with_label(_("Turbo mode"))); display_fps_check = - GTK_CHECK_BUTTON(gtk_check_button_new_with_label("Display framerate")); + GTK_CHECK_BUTTON(gtk_check_button_new_with_label(_("Display framerate"))); speedhacks_combo = GTK_COMBO_BOX(gtk_combo_box_new_text()); @@ -309,11 +309,11 @@ static GtkWidget * load_plugin(void) GtkBox* opt_hbox2 = GTK_BOX(gtk_hbox_new(FALSE, HILDON_MARGIN_DEFAULT)); accu_check = - GTK_CHECK_BUTTON(gtk_check_button_new_with_label("Accurate graphics")); + GTK_CHECK_BUTTON(gtk_check_button_new_with_label(_("Accurate graphics"))); framerate_combo = GTK_COMBO_BOX(gtk_combo_box_new_text()); - GtkWidget* framerate_box = hildon_caption_new(NULL, "Framerate:", + GtkWidget* framerate_box = hildon_caption_new(NULL, _("Framerate:"), GTK_WIDGET(framerate_combo), NULL, HILDON_CAPTION_OPTIONAL); gtk_combo_box_append_text(framerate_combo, "Auto"); @@ -322,9 +322,9 @@ static GtkWidget * load_plugin(void) sprintf(buffer, "%d-%d", 50/i, 60/i); gtk_combo_box_append_text(framerate_combo, buffer); } - gtk_combo_box_append_text(speedhacks_combo, "No speedhacks"); - gtk_combo_box_append_text(speedhacks_combo, "Safe hacks only"); - gtk_combo_box_append_text(speedhacks_combo, "All speedhacks"); + gtk_combo_box_append_text(speedhacks_combo, _("No speedhacks")); + gtk_combo_box_append_text(speedhacks_combo, _("Safe hacks only")); + gtk_combo_box_append_text(speedhacks_combo, _("All speedhacks")); gtk_box_pack_start(opt_hbox2, GTK_WIDGET(accu_check), FALSE, FALSE, 0); gtk_box_pack_start(opt_hbox2, GTK_WIDGET(framerate_box), TRUE, FALSE, 0); @@ -418,11 +418,11 @@ static GtkWidget **load_menu(guint *nitems) const HildonSizeType button_size = HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_AUTO_WIDTH; menu_items[0] = hildon_gtk_button_new(button_size); - gtk_button_set_label(GTK_BUTTON(menu_items[0]), "Settings…"); + gtk_button_set_label(GTK_BUTTON(menu_items[0]), _("Settings…")); menu_items[1] = hildon_gtk_button_new(button_size); - gtk_button_set_label(GTK_BUTTON(menu_items[1]), "Controls…"); + gtk_button_set_label(GTK_BUTTON(menu_items[1]), _("Controls…")); menu_items[2] = hildon_gtk_button_new(button_size); - gtk_button_set_label(GTK_BUTTON(menu_items[2]), "About…"); + gtk_button_set_label(GTK_BUTTON(menu_items[2]), _("About…")); *nitems = 3; g_signal_connect(G_OBJECT(menu_items[0]), "clicked", @@ -432,8 +432,8 @@ static GtkWidget **load_menu(guint *nitems) g_signal_connect(G_OBJECT(menu_items[2]), "clicked", G_CALLBACK(about_item_callback), NULL); #else - menu_items[0] = gtk_menu_item_new_with_label("Settings"); - menu_items[1] = gtk_menu_item_new_with_label("About…"); + menu_items[0] = gtk_menu_item_new_with_label(_("Settings")); + menu_items[1] = gtk_menu_item_new_with_label(_("About…")); *nitems = 2; GtkMenu* settings_menu = GTK_MENU(gtk_menu_new()); @@ -441,11 +441,11 @@ static GtkWidget **load_menu(guint *nitems) GTK_WIDGET(settings_menu)); GtkMenuItem* controls_item = - GTK_MENU_ITEM(gtk_menu_item_new_with_label("Controls…")); + GTK_MENU_ITEM(gtk_menu_item_new_with_label(_("Controls…"))); gtk_menu_append(GTK_MENU(settings_menu), GTK_WIDGET(controls_item)); GtkMenuItem* advanced_item = - GTK_MENU_ITEM(gtk_menu_item_new_with_label("Advanced…")); + GTK_MENU_ITEM(gtk_menu_item_new_with_label(_("Advanced…"))); gtk_menu_append(GTK_MENU(settings_menu), GTK_WIDGET(advanced_item)); g_signal_connect(G_OBJECT(controls_item), "activate", @@ -507,12 +507,12 @@ static void plugin_callback(GtkWidget * menu_item, gpointer data) } if (!current_rom_file) { GtkWidget* note = hildon_note_new_information(get_parent_window(), - "No ROM selected"); + _("No ROM selected")); gtk_dialog_run(GTK_DIALOG(note)); gtk_widget_destroy(note); } else if (!current_rom_file_exists) { GtkWidget* note = hildon_note_new_information(get_parent_window(), - "ROM file does not exist"); + _("ROM file does not exist")); gtk_dialog_run(GTK_DIALOG(note)); gtk_widget_destroy(note); } diff --git a/gui/settings.c b/gui/settings.c index c50a189..6176b0b 100644 --- a/gui/settings.c +++ b/gui/settings.c @@ -20,6 +20,7 @@ * */ +#include #include #include @@ -28,6 +29,7 @@ #include #include #include +#include #else #include #endif @@ -70,7 +72,17 @@ static GtkComboBox* scaler_combo; static int find_scaler(const char * id) { + gchar* lid = g_ascii_strdown(id, -1); + for (int i = 0; i < sizeof(scalers)/sizeof(struct scaler); i++) { + if (strcmp(id, scalers[i].id) == 0) { + g_free(lid); + return i; + } + } + + g_free(lid); + return -1; } static void fill_scaler_list(GtkWidget* w) @@ -87,12 +99,16 @@ static void fill_scaler_list(GtkWidget* w) static void load_settings() { + gchar* scaler_id = gconf_client_get_string(gcc, kGConfScaler, NULL); + int scaler_num = find_scaler(scaler_id); + if (scaler_num < 0) scaler_num = 0; + #if MAEMO_VERSION >= 5 hildon_check_button_set_active(accu_check, gconf_client_get_bool(gcc, kGConfTransparency, NULL)); + hildon_picker_button_set_active(scaler_picker, scaler_num); #else - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(xsp_check), - gconf_client_get_bool(gcc, kGConfXSP, NULL)); + gtk_combo_box_set_active(scaler_combo, scaler_num); #endif } @@ -129,34 +145,53 @@ static void set_button_layout(HildonButton* button, GtkSizeGroup* sizegroup) void settings_dialog(GtkWindow* parent) { - dialog = GTK_DIALOG(gtk_dialog_new_with_buttons("Settings", + dialog = GTK_DIALOG(gtk_dialog_new_with_buttons(_("Settings"), parent, GTK_DIALOG_MODAL, - GTK_STOCK_SAVE, GTK_RESPONSE_OK, + GTK_STOCK_OK, GTK_RESPONSE_OK, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL)); #if MAEMO_VERSION >= 5 GtkSizeGroup * size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); + PangoAttrList *pattrlist = pango_attr_list_new(); + PangoAttribute *attr = pango_attr_size_new(22 * PANGO_SCALE); + attr->start_index = 0; + attr->end_index = G_MAXINT; + pango_attr_list_insert(pattrlist, attr); + + GtkLabel* separator_1 = GTK_LABEL(gtk_label_new(_("Controls"))); + gtk_label_set_attributes(separator_1, pattrlist); + gtk_label_set_justify(separator_1, GTK_JUSTIFY_CENTER); + + GtkLabel* separator_2 = GTK_LABEL(gtk_label_new(_("Advanced"))); + gtk_label_set_attributes(separator_2, pattrlist); + gtk_label_set_justify(separator_2, GTK_JUSTIFY_CENTER); + accu_check = HILDON_CHECK_BUTTON(hildon_check_button_new( HILDON_SIZE_FULLSCREEN_WIDTH | HILDON_SIZE_FINGER_HEIGHT)); - gtk_button_set_label(GTK_BUTTON(accu_check), "Accurate graphics"); + gtk_button_set_label(GTK_BUTTON(accu_check), _("Accurate graphics")); set_button_layout(HILDON_BUTTON(accu_check), size_group); scaler_picker = HILDON_PICKER_BUTTON(hildon_picker_button_new( HILDON_SIZE_FULLSCREEN_WIDTH | HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_VERTICAL)); - hildon_button_set_title(HILDON_BUTTON(scaler_picker), "Zoom"); + hildon_button_set_title(HILDON_BUTTON(scaler_picker), _("Zoom")); set_button_layout(HILDON_BUTTON(scaler_picker), size_group); HildonTouchSelector* scaler_sel = HILDON_TOUCH_SELECTOR(hildon_touch_selector_new_text()); fill_scaler_list(GTK_WIDGET(scaler_sel)); hildon_picker_button_set_selector(scaler_picker, scaler_sel); - + + gtk_box_pack_start(GTK_BOX(dialog->vbox), GTK_WIDGET(separator_1), + FALSE, FALSE, HILDON_MARGIN_DEFAULT); + gtk_box_pack_start(GTK_BOX(dialog->vbox), GTK_WIDGET(separator_2), + FALSE, FALSE, HILDON_MARGIN_DEFAULT); gtk_box_pack_start(GTK_BOX(dialog->vbox), GTK_WIDGET(accu_check), FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(dialog->vbox), GTK_WIDGET(scaler_picker), FALSE, FALSE, 0); + pango_attr_list_unref(pattrlist); g_object_unref(size_group); #else xsp_check = GTK_CHECK_BUTTON(gtk_check_button_new());