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
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
# 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
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)
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
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));
-#include <libintl.h>
#include <gtk/gtk.h>
#include <gdk/gdkx.h>
#include <gdk/gdkkeysyms.h>
#include "cellrendererkey.h"
-#define _(x) x
-#define N_(x) x
+#include "i18n.h"
#define CELL_RENDERER_TEXT_PATH "cell-renderer-key-text"
g_object_class_install_property (object_class,
PROP_SCANCODE,
g_param_spec_int ("scancode",
- _("Scancode"),
- _("Scancode"),
+ "Scancode",
+ "Scancode",
-1,
G_MAXINT,
-1,
#ifndef __I18N_H__
#define __I18N_H__
-#define GETTEXT_PACKAGE "drnoksnes"
-
#if CONF_NLS
+#if !defined(GETTEXT_PACKAGE)
+# error GETTEXT_PACKAGE not defined
+#endif
#include <libintl.h>
#define _(String) dgettext(GETTEXT_PACKAGE, String)
#ifdef gettext_noop
--- /dev/null
+# 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 <maemo@javispedro.com>, 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 <javier@javispedro.com>\n"
+"Language-Team: Spanish <maemo@javispedro.com>\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 "<no rom selected>"
+msgstr "<sin rom seleccionada>"
+
+#: 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"
if (current_rom_file) g_free(current_rom_file);
if (!rom_file || strlen(rom_file) == 0) {
current_rom_file = NULL;
- set_rom_label("<no rom selected>");
+ set_rom_label(_("<no rom selected>"));
return;
}
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);
#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));
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));
{
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());
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");
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);
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",
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());
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",
}
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);
}
*
*/
+#include <string.h>
#include <gtk/gtk.h>
#include <hildon/hildon-helper.h>
#include <hildon/hildon-check-button.h>
#include <hildon/hildon-picker-button.h>
#include <hildon/hildon-touch-selector.h>
+#include <pango/pango-attributes.h>
#else
#include <hildon/hildon-caption.h>
#endif
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)
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
}
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());