From 63b4294851e1f5f1b243072a1b39f720d89e2b14 Mon Sep 17 00:00:00 2001 From: Jimmy Huang Date: Tue, 18 Feb 2014 16:17:54 -0800 Subject: [PATCH] Add gettext support for internationalization - Integrate gettext and change all UI elements to use the new gettext wrapper for strings - Removed hard-coded strings and replaced with msgids - Changed make files to build with gettext tools and the genereated pot files Change-Id: I308345eedf1678c3fa3c6a8ec1e8a69c049d52af Signed-off-by: Jimmy Huang --- Makefile.am | 6 +- autogen.sh | 1 + configure.ac | 4 +- data/themes/default/answer_screen.edc | 2 +- data/themes/default/call.edc | 6 +- data/themes/night/answer_screen.edc | 2 +- data/themes/night/call.edc | 4 +- dialer/callscreen.c | 28 ++- dialer/gui.c | 34 ++- dialer/history.c | 11 +- dialer/keypad.c | 5 +- dialer/ussd.c | 18 +- packaging/lemolo.changes | 3 + packaging/lemolo.spec | 4 +- po/LINGUAS | 1 + po/Makefile.in.in | 444 ++++++++++++++++++++++++++++++++++ po/Makevars | 41 ++++ po/POTFILES.in | 8 + po/en_US.po | 245 +++++++++++++++++++ tizen/answer_daemon.c | 9 +- utils/contacts-tizen.c | 38 +-- utils/contacts.c | 8 +- utils/i18n.h | 13 + utils/util.c | 1 - 24 files changed, 868 insertions(+), 68 deletions(-) create mode 100644 po/LINGUAS create mode 100644 po/Makefile.in.in create mode 100644 po/Makevars create mode 100644 po/POTFILES.in create mode 100644 po/en_US.po create mode 100644 utils/i18n.h diff --git a/Makefile.am b/Makefile.am index 8957662..6b0c393 100644 --- a/Makefile.am +++ b/Makefile.am @@ -4,6 +4,7 @@ AM_CFLAGS = \ -DPACKAGE_DATA_DIR=\"$(pkgdatadir)/\" \ -DPACKAGE_BIN_DIR=\"$(bindir)\" \ -DPACKAGE_LIB_DIR=\"$(libdir)\" \ + -DLOCALEDIR=\"${datadir}/locale\" \ -I$(top_srcdir)/utils \ @EFL_CFLAGS@ \ @PULSEAUDIO_CFLAGS@ \ @@ -22,7 +23,7 @@ MAINTAINERCLEANFILES = \ Makefile.in \ missing \ mkinstalldirs -EXTRA_DIST = +EXTRA_DIST = config.rpath noinst_LTLIBRARIES = utils/libofono-efl-utils.la @@ -30,6 +31,7 @@ utils_libofono_efl_utils_la_SOURCES = \ utils/amb.c \ utils/amb.h \ utils/contacts-ofono-efl.h \ + utils/i18n.h \ utils/log.h \ utils/ofono.c \ utils/ofono.h \ @@ -289,3 +291,5 @@ scripts_SCRIPTS = \ data/scripts/ofono-efl-contacts-db-create.py EXTRA_DIST += $(examples_DATA) $(scripts_SCRIPTS) + +SUBDIRS = po diff --git a/autogen.sh b/autogen.sh index b43d171..15ead12 100755 --- a/autogen.sh +++ b/autogen.sh @@ -1,5 +1,6 @@ #!/bin/sh +gettextize -f autoreconf -f -i if [ -z "$NOCONFIGURE" ]; then diff --git a/configure.ac b/configure.ac index 2daff61..86a7179 100644 --- a/configure.ac +++ b/configure.ac @@ -15,9 +15,9 @@ AC_USE_SYSTEM_EXTENSIONS AC_PROG_CC AM_PROG_CC_C_O AC_C___ATTRIBUTE__ - AC_DISABLE_STATIC AC_PROG_LIBTOOL +AM_GNU_GETTEXT([external]) EFL_COMPILER_FLAG EFL_COMPILER_FLAG([-Wall]) @@ -114,7 +114,7 @@ AC_SUBST(BIN_DIR) eval "eval DATA_DIR=$datadir" AC_SUBST(DATA_DIR) -AC_CONFIG_FILES([ +AC_CONFIG_FILES([ po/Makefile.in Makefile ]) diff --git a/data/themes/default/answer_screen.edc b/data/themes/default/answer_screen.edc index 271cc87..b532eba 100644 --- a/data/themes/default/answer_screen.edc +++ b/data/themes/default/answer_screen.edc @@ -102,7 +102,7 @@ group { offset: 0 (SEPARATOR_HEIGHT + CONTACT_PHOTO_SIZE); } text { - text: "Gustavo Barbieri"; + text: "Unknown"; font: FONT_NORMAL; size: SIZE_HUGE; size_range: SIZE_TINY SIZE_HUGE; diff --git a/data/themes/default/call.edc b/data/themes/default/call.edc index ba94176..b86dfe2 100644 --- a/data/themes/default/call.edc +++ b/data/themes/default/call.edc @@ -316,7 +316,7 @@ group { offset: -1 -CALL_TEXT_OFFSET; \ } \ text { \ - text: "Gustavo Barbieri"; \ + text: "Unknown"; \ font: FONT_NORMAL; \ size: SIZE_MEDIUM; \ size_range: SIZE_MEDIUM SIZE_MEDIUM; \ @@ -2126,7 +2126,7 @@ group { offset: -BORDER_PADDING ACTION_HEIGHT; } text { - text: "Someone"; + text: "Unknown"; font: FONT_NORMAL; size: SIZE_MEDIUM; size_range: SIZE_TINY SIZE_MEDIUM; @@ -2372,7 +2372,7 @@ group { offset: (-ITEM_PADDING - 1) -1; } text { - text: "Gustavo Barbieri"; + text: "Unknown"; font: FONT_NORMAL; size: SIZE_MEDIUM; align: 0.0 0.5; diff --git a/data/themes/night/answer_screen.edc b/data/themes/night/answer_screen.edc index 271cc87..b532eba 100644 --- a/data/themes/night/answer_screen.edc +++ b/data/themes/night/answer_screen.edc @@ -102,7 +102,7 @@ group { offset: 0 (SEPARATOR_HEIGHT + CONTACT_PHOTO_SIZE); } text { - text: "Gustavo Barbieri"; + text: "Unknown"; font: FONT_NORMAL; size: SIZE_HUGE; size_range: SIZE_TINY SIZE_HUGE; diff --git a/data/themes/night/call.edc b/data/themes/night/call.edc index d6ce7c1..b6a8bcb 100644 --- a/data/themes/night/call.edc +++ b/data/themes/night/call.edc @@ -316,7 +316,7 @@ group { offset: -1 -CALL_TEXT_OFFSET; \ } \ text { \ - text: "Gustavo Barbieri"; \ + text: "Unknown"; \ font: FONT_NORMAL; \ size: SIZE_MEDIUM; \ size_range: SIZE_MEDIUM SIZE_MEDIUM; \ @@ -2372,7 +2372,7 @@ group { offset: (-ITEM_PADDING - 1) -1; } text { - text: "Gustavo Barbieri"; + text: "Unknown"; font: FONT_NORMAL; size: SIZE_MEDIUM; align: 0.0 0.5; diff --git a/dialer/callscreen.c b/dialer/callscreen.c index 65aa6d2..42ab020 100644 --- a/dialer/callscreen.c +++ b/dialer/callscreen.c @@ -1,6 +1,9 @@ #ifdef HAVE_CONFIG_H #include "config.h" #endif +#ifdef HAVE_TIZEN +#include +#endif #include #include "log.h" @@ -8,6 +11,7 @@ #include "ofono.h" #include "util.h" #include "simple-popup.h" +#include "i18n.h" typedef struct _Callscreen { @@ -249,19 +253,19 @@ static const char *_call_state_str(OFono_Call_State state) { switch (state) { case OFONO_CALL_STATE_DISCONNECTED: - return "Disconnected"; + return _("Disconnected"); case OFONO_CALL_STATE_ACTIVE: - return "Active"; + return _("Active"); case OFONO_CALL_STATE_HELD: - return "On Hold"; + return _("On Hold"); case OFONO_CALL_STATE_DIALING: - return "Dialing..."; + return _("Dialing..."); case OFONO_CALL_STATE_ALERTING: - return "Alerting..."; + return _("Alerting..."); case OFONO_CALL_STATE_INCOMING: - return "Incoming..."; + return _("Incoming..."); case OFONO_CALL_STATE_WAITING: - return "Waiting..."; + return _("Waiting..."); default: ERR("unknown state: %d", state); return NULL; @@ -789,20 +793,20 @@ static void _call_disconnected_show(Callscreen *ctx, OFono_Call *c, goto done; if (strcmp(reason, "network") == 0) - title = "Network Disconnected!"; + title = _("Network Disconnected!"); else - title = "Disconnected!"; + title = _("Disconnected!"); - snprintf(msg, sizeof(msg), "Try to redial %s", number); + snprintf(msg, sizeof(msg), _("Try to redial %s"), number); eina_stringshare_replace(&ctx->disconnected.number, number); ctx->disconnected.popup = p = gui_simple_popup(title, msg); simple_popup_buttons_set(p, - "Dismiss", + _("Dismiss"), "dialer", _popup_close, - "Redial", + _("Redial"), "dialer", _popup_redial, ctx); diff --git a/dialer/gui.c b/dialer/gui.c index 30500c0..4cf8e36 100644 --- a/dialer/gui.c +++ b/dialer/gui.c @@ -11,6 +11,7 @@ #include "ussd.h" #include "util.h" #include "simple-popup.h" +#include "i18n.h" #ifdef HAVE_TIZEN #include @@ -52,9 +53,9 @@ static void _dial_reply(void *data, OFono_Error err, if (err != OFONO_ERROR_NONE) { char buf[1024]; const char *msg = ofono_error_message_get(err); - snprintf(buf, sizeof(buf), "Could not call %s: %s", + snprintf(buf, sizeof(buf), _("Could not call %s: %s"), number, msg); - gui_simple_popup("Error", buf); + gui_simple_popup(_("Error"), buf); } free(number); @@ -66,6 +67,28 @@ OFono_Pending *gui_dial(const char *number) return ofono_dial(copy, NULL, _dial_reply, copy); } +static void _gui_set_text(void) +{ + elm_object_part_text_set(cs, "label.hide-keypad", _("Hide Keypad")); + elm_object_part_text_set(cs, "label.answer", _("Answer")); + elm_object_part_text_set(cs, "label.hangup", _("Hangup")); + elm_object_part_text_set(cs, "label.multiparty", _("Conference")); + elm_object_part_text_set(cs, "label.multiparty-details-back", _("Back")); + elm_object_part_text_set(cs, "label.waiting", _("Waiting...")); + elm_object_part_text_set(cs, "elm.text.name", _("Unknown")); + elm_object_part_text_set(cs, "elm.text.waiting", _("Unknown")); + + elm_object_part_text_set(keypad, "label.all", _("Decline")); + elm_object_part_text_set(keypad, "label.missed", _("Hold + Answer")); + elm_object_part_text_set(keypad, "label.clear", _("Hangup + Answer")); + elm_object_part_text_set(keypad, "label.edit,done", _("Redial")); + + elm_object_part_text_set(history, "label.all", _("All")); + elm_object_part_text_set(history, "label.missed", _("Missed")); + elm_object_part_text_set(history, "label.clear", _("Clear")); + elm_object_part_text_set(history, "label.edit,done", _("Done")); +} + static void _gui_show(Evas_Object *o) { Last_User_Mode *last; @@ -322,10 +345,14 @@ Eina_Bool gui_init(void) elm_win_autodel_set(win, EINA_FALSE); #ifdef HAVE_TIZEN - appcore_set_i18n("ofono-efl", "en-US"); + appcore_set_i18n("lemolo", NULL); #ifdef HAVE_UI_GADGET UG_INIT_EFL(win, UG_OPT_INDICATOR_PORTRAIT_ONLY); #endif +#else + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); #endif flip = elm_flip_add(win); @@ -370,6 +397,7 @@ Eina_Bool gui_init(void) elm_object_part_content_set(flip, "back", obj); evas_object_show(obj); + _gui_set_text(); _load_last_user_view(); callback_node_modem_changed = diff --git a/dialer/history.c b/dialer/history.c index 2bfef25..0224265 100644 --- a/dialer/history.c +++ b/dialer/history.c @@ -13,6 +13,7 @@ #include "util.h" #include "gui.h" #include "simple-popup.h" +#include "i18n.h" #ifndef EET_COMPRESSION_DEFAULT #define EET_COMPRESSION_DEFAULT 1 @@ -633,14 +634,14 @@ static void _history_clear(History *ctx) EINA_SAFETY_ON_TRUE_RETURN(ctx->clear_popup != NULL); - ctx->clear_popup = p = gui_simple_popup("Clear History", - "Do you want to clear all history entries?"); + ctx->clear_popup = p = gui_simple_popup(_("Clear History"), + _("Do you want to clear all history entries?")); simple_popup_buttons_set(p, - "Dismiss", + _("Dismiss"), "dialer", _history_clear_cancel, - "Yes, Clear", + _("Yes, Clear"), "dialer-caution", _history_clear_do, ctx); @@ -689,7 +690,7 @@ static char *_item_label_get(void *data, Evas_Object *obj __UNUSED__, if (!strcmp(part, "type")) { if (!call_info->contact_type) - return strdup("Unknown"); + return strdup(_("Unknown")); return strdup(call_info->contact_type); } diff --git a/dialer/keypad.c b/dialer/keypad.c index d5b54cd..54de83c 100644 --- a/dialer/keypad.c +++ b/dialer/keypad.c @@ -9,6 +9,7 @@ #include "ussd.h" #include "util.h" #include "simple-popup.h" +#include "i18n.h" /* timeout before a popup is show for supplementary services. It is * not shown immediately as the call may fail as "not supported" in @@ -97,7 +98,7 @@ static void _number_display(Keypad *ctx) static void _imei_show(void) { const char *imei = ofono_modem_serial_get(); - gui_simple_popup("IMEI Request", imei ? imei : "No modem"); + gui_simple_popup(_("IMEI Request"), imei ? imei : _("No modem")); INF("Show IMEI: %s", imei); } @@ -284,7 +285,7 @@ static void _ss_initiate_reply(void *data, OFono_Error err, const char *str) snprintf(buf, sizeof(buf), "Could not complete.
Error: %s", ofono_error_message_get(err)); - simple_popup_title_set(ctx->ss_popup, "Error"); + simple_popup_title_set(ctx->ss_popup, _("Error")); simple_popup_message_set(ctx->ss_popup, buf); simple_popup_button_dismiss_set(ctx->ss_popup); evas_object_show(ctx->ss_popup); diff --git a/dialer/ussd.c b/dialer/ussd.c index 3952a01..5946f51 100644 --- a/dialer/ussd.c +++ b/dialer/ussd.c @@ -7,6 +7,7 @@ #include "gui.h" #include "ofono.h" #include "simple-popup.h" +#include "i18n.h" typedef struct _USSD { @@ -33,24 +34,23 @@ static void _ussd_respond_reply(void *data, OFono_Error err, const char *str) eina_stringshare_replace(&(ctx->message), str); simple_popup_message_set(ctx->popup, ctx->message); } else if (err == OFONO_ERROR_OFFLINE) { - simple_popup_title_set(ctx->popup, "Offline"); - simple_popup_message_set(ctx->popup, "System is Offline"); + simple_popup_title_set(ctx->popup, _("Offline")); + simple_popup_message_set(ctx->popup, _("System is Offline")); simple_popup_button_dismiss_set(ctx->popup); } else { char buf[256]; if (ctx->state == OFONO_USSD_STATE_USER_RESPONSE) snprintf(buf, sizeof(buf), - "Could not complete.
Error: %s.
" - "Try again:

%s", + _("Could not complete.
Error: %s.
Try again:

%s"), ofono_error_message_get(err), ctx->message); else snprintf(buf, sizeof(buf), - "Could not complete.
Error: %s.", + _("Could not complete.
Error: %s."), ofono_error_message_get(err)); - simple_popup_title_set(ctx->popup, "Error"); + simple_popup_title_set(ctx->popup, _("Error")); simple_popup_message_set(ctx->popup, buf); } } @@ -116,10 +116,10 @@ static void _ofono_changed(void *data) } else { simple_popup_entry_enable(ctx->popup); simple_popup_buttons_set(ctx->popup, - "Respond", + _("Respond"), "dialer", _ussd_respond, - "Cancel", + _("Cancel"), "dialer-caution", _ussd_cancel, ctx); @@ -159,7 +159,7 @@ void ussd_start(const char *message) ctx->state = -1; ctx->cb_changed = ofono_modem_changed_cb_add(_ofono_changed, ctx); - ctx->popup = gui_simple_popup("Supplementary Services", ctx->message); + ctx->popup = gui_simple_popup(_("Supplementary Services"), ctx->message); evas_object_event_callback_add(ctx->popup, EVAS_CALLBACK_DEL, _on_del, ctx); _ofono_changed(ctx); diff --git a/packaging/lemolo.changes b/packaging/lemolo.changes index d141abb..41d58ea 100644 --- a/packaging/lemolo.changes +++ b/packaging/lemolo.changes @@ -1,3 +1,6 @@ +* Tue Feb 18 2014 Jimmy Huang submit/accepted/tizen/ivi/20140131.204941@2b2d852 +- Add gettext support for internationalization + * Wed Jan 29 2014 Jimmy Huang accepted/tizen/20131115.212927@9ce884c - Use FindObject instead of deprecated findProperty to pull from AMB - Fixes TIVI-2631 diff --git a/packaging/lemolo.spec b/packaging/lemolo.spec index b7824d5..fe8274e 100644 --- a/packaging/lemolo.spec +++ b/packaging/lemolo.spec @@ -23,6 +23,7 @@ BuildRequires: pkgconfig(appsvc) BuildRequires: pkgconfig(notification) BuildRequires: pkgconfig(libpulse) BuildRequires: edje-tools +BuildRequires: gettext-tools Requires: ofono Requires: automotive-message-broker @@ -47,8 +48,9 @@ make %{?jobs:-j%jobs} %install rm -rf %{buildroot} %make_install +%find_lang %{name} -%files +%files -f %{name}.lang %defattr(-,root,root,-) %{_bindir}/answer_daemon %{_bindir}/dialer diff --git a/po/LINGUAS b/po/LINGUAS new file mode 100644 index 0000000..7741b83 --- /dev/null +++ b/po/LINGUAS @@ -0,0 +1 @@ +en_US diff --git a/po/Makefile.in.in b/po/Makefile.in.in new file mode 100644 index 0000000..83d8838 --- /dev/null +++ b/po/Makefile.in.in @@ -0,0 +1,444 @@ +# Makefile for PO directory in any package using GNU gettext. +# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License but which still want to provide support for the GNU gettext +# functionality. +# Please note that the actual code of GNU gettext is covered by the GNU +# General Public License and is *not* in the public domain. +# +# Origin: gettext-0.18 +GETTEXT_MACRO_VERSION = 0.18 + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + +SHELL = /bin/sh +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datarootdir = @datarootdir@ +datadir = @datadir@ +localedir = @localedir@ +gettextsrcdir = $(datadir)/gettext/po + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + +# We use $(mkdir_p). +# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as +# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, +# @install_sh@ does not start with $(SHELL), so we add it. +# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined +# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake +# versions, $(mkinstalldirs) and $(install_sh) are unused. +mkinstalldirs = $(SHELL) @install_sh@ -d +install_sh = $(SHELL) @install_sh@ +MKDIR_P = @MKDIR_P@ +mkdir_p = @mkdir_p@ + +GMSGFMT_ = @GMSGFMT@ +GMSGFMT_no = @GMSGFMT@ +GMSGFMT_yes = @GMSGFMT_015@ +GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) +MSGFMT_ = @MSGFMT@ +MSGFMT_no = @MSGFMT@ +MSGFMT_yes = @MSGFMT_015@ +MSGFMT = $(MSGFMT_$(USE_MSGCTXT)) +XGETTEXT_ = @XGETTEXT@ +XGETTEXT_no = @XGETTEXT@ +XGETTEXT_yes = @XGETTEXT_015@ +XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) +MSGMERGE = msgmerge +MSGMERGE_UPDATE = @MSGMERGE@ --update +MSGINIT = msginit +MSGCONV = msgconv +MSGFILTER = msgfilter + +POFILES = @POFILES@ +GMOFILES = @GMOFILES@ +UPDATEPOFILES = @UPDATEPOFILES@ +DUMMYPOFILES = @DUMMYPOFILES@ +DISTFILES.common = Makefile.in.in remove-potcdate.sin \ +$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) +DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ +$(POFILES) $(GMOFILES) \ +$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) + +POTFILES = \ + +CATALOGS = @CATALOGS@ + +# Makevars gets inserted here. (Don't remove this line!) + +.SUFFIXES: +.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update + +.po.mo: + @echo "$(MSGFMT) -c -o $@ $<"; \ + $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ + +.po.gmo: + @lang=`echo $* | sed -e 's,.*/,,'`; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \ + cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo + +.sin.sed: + sed -e '/^#/d' $< > t-$@ + mv t-$@ $@ + + +all: check-macro-version all-@USE_NLS@ + +all-yes: stamp-po +all-no: + +# Ensure that the gettext macros and this Makefile.in.in are in sync. +check-macro-version: + @test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \ + || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \ + exit 1; \ + } + +# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no +# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because +# we don't want to bother translators with empty POT files). We assume that +# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. +# In this case, stamp-po is a nop (i.e. a phony target). + +# stamp-po is a timestamp denoting the last time at which the CATALOGS have +# been loosely updated. Its purpose is that when a developer or translator +# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, +# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent +# invocations of "make" will do nothing. This timestamp would not be necessary +# if updating the $(CATALOGS) would always touch them; however, the rule for +# $(POFILES) has been designed to not touch files that don't need to be +# changed. +stamp-po: $(srcdir)/$(DOMAIN).pot + test ! -f $(srcdir)/$(DOMAIN).pot || \ + test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) + @test ! -f $(srcdir)/$(DOMAIN).pot || { \ + echo "touch stamp-po" && \ + echo timestamp > stamp-poT && \ + mv stamp-poT stamp-po; \ + } + +# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', +# otherwise packages like GCC can not be built if only parts of the source +# have been downloaded. + +# This target rebuilds $(DOMAIN).pot; it is an expensive operation. +# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. +$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed + if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \ + package_gnu='GNU '; \ + else \ + package_gnu=''; \ + fi; \ + if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ + msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ + else \ + msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ + fi; \ + case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + ;; \ + *) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --package-name="$${package_gnu}@PACKAGE@" \ + --package-version='@VERSION@' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + ;; \ + esac + test ! -f $(DOMAIN).po || { \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ + sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ + if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ + else \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + else \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + } + +# This rule has no dependencies: we don't need to update $(DOMAIN).pot at +# every "make" invocation, only create it when it is missing. +# Only "make $(DOMAIN).pot-update" or "make dist" will force an update. +$(srcdir)/$(DOMAIN).pot: + $(MAKE) $(DOMAIN).pot-update + +# This target rebuilds a PO file if $(DOMAIN).pot has changed. +# Note that a PO file is not touched if it doesn't need to be changed. +$(POFILES): $(srcdir)/$(DOMAIN).pot + @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ + if test -f "$(srcdir)/$${lang}.po"; then \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \ + cd $(srcdir) \ + && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ + $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \ + *) \ + $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \ + esac; \ + }; \ + else \ + $(MAKE) $${lang}.po-create; \ + fi + + +install: install-exec install-data +install-exec: +install-data: install-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + for file in $(DISTFILES.common) Makevars.template; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + for file in Makevars; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +install-data-no: all +install-data-yes: all + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ + $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ + echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ + fi; \ + done; \ + done + +install-strip: install + +installdirs: installdirs-exec installdirs-data +installdirs-exec: +installdirs-data: installdirs-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi +installdirs-data-no: +installdirs-data-yes: + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkdir_p) $(DESTDIR)$$dir; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + fi; \ + done; \ + done + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: uninstall-exec uninstall-data +uninstall-exec: +uninstall-data: uninstall-data-@USE_NLS@ + if test "$(PACKAGE)" = "gettext-tools"; then \ + for file in $(DISTFILES.common) Makevars.template; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi +uninstall-data-no: +uninstall-data-yes: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ + for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + done; \ + done + +check: all + +info dvi ps pdf html tags TAGS ctags CTAGS ID: + +mostlyclean: + rm -f remove-potcdate.sed + rm -f stamp-poT + rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES *.mo + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f stamp-po $(GMOFILES) + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: + $(MAKE) update-po + @$(MAKE) dist2 +# This is a separate target because 'update-po' must be executed before. +dist2: stamp-po $(DISTFILES) + dists="$(DISTFILES)"; \ + if test "$(PACKAGE)" = "gettext-tools"; then \ + dists="$$dists Makevars.template"; \ + fi; \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + dists="$$dists $(DOMAIN).pot stamp-po"; \ + fi; \ + if test -f $(srcdir)/ChangeLog; then \ + dists="$$dists ChangeLog"; \ + fi; \ + for i in 0 1 2 3 4 5 6 7 8 9; do \ + if test -f $(srcdir)/ChangeLog.$$i; then \ + dists="$$dists ChangeLog.$$i"; \ + fi; \ + done; \ + if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ + for file in $$dists; do \ + if test -f $$file; then \ + cp -p $$file $(distdir) || exit 1; \ + else \ + cp -p $(srcdir)/$$file $(distdir) || exit 1; \ + fi; \ + done + +update-po: Makefile + $(MAKE) $(DOMAIN).pot-update + test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) + $(MAKE) update-gmo + +# General rule for creating PO files. + +.nop.po-create: + @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ + echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ + exit 1 + +# General rule for updating PO files. + +.nop.po-update: + @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ + if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ + cd $(srcdir); \ + if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ + $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ + *) \ + $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ + esac; \ + }; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "msgmerge for $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi + +$(DUMMYPOFILES): + +update-gmo: Makefile $(GMOFILES) + @: + +# Recreate Makefile by invoking config.status. Explicitly invoke the shell, +# because execution permission bits may not work on the current file system. +# Use @SHELL@, which is the shell determined by autoconf for the use by its +# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient. +Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ + cd $(top_builddir) \ + && @SHELL@ ./config.status $(subdir)/$@.in po-directories + +force: + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/po/Makevars b/po/Makevars new file mode 100644 index 0000000..32692ab --- /dev/null +++ b/po/Makevars @@ -0,0 +1,41 @@ +# Makefile variables for PO directory in any package using GNU gettext. + +# Usually the message domain is the same as the package name. +DOMAIN = $(PACKAGE) + +# These two variables depend on the location of this directory. +subdir = po +top_builddir = .. + +# These options get passed to xgettext. +XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ + +# This is the copyright holder that gets inserted into the header of the +# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding +# package. (Note that the msgstr strings, extracted from the package's +# sources, belong to the copyright holder of the package.) Translators are +# expected to transfer the copyright for their translations to this person +# or entity, or to disclaim their copyright. The empty string stands for +# the public domain; in this case the translators are expected to disclaim +# their copyright. +COPYRIGHT_HOLDER = Free Software Foundation, Inc. + +# This is the email address or URL to which the translators shall report +# bugs in the untranslated strings: +# - Strings which are not entire sentences, see the maintainer guidelines +# in the GNU gettext documentation, section 'Preparing Strings'. +# - Strings which use unclear terms or require additional context to be +# understood. +# - Strings which make invalid assumptions about notation of date, time or +# money. +# - Pluralisation problems. +# - Incorrect English spelling. +# - Incorrect formatting. +# It can be your email address, or a mailing list address where translators +# can write to without being subscribed, or the URL of a web page through +# which the translators can contact you. +MSGID_BUGS_ADDRESS = + +# This is the list of locale categories, beyond LC_MESSAGES, for which the +# message catalogs shall be used. It is usually empty. +EXTRA_LOCALE_CATEGORIES = diff --git a/po/POTFILES.in b/po/POTFILES.in new file mode 100644 index 0000000..a61f993 --- /dev/null +++ b/po/POTFILES.in @@ -0,0 +1,8 @@ +dialer/callscreen.c +dialer/gui.c +dialer/history.c +dialer/keypad.c +dialer/ussd.c +tizen/answer_daemon.c +utils/contacts-tizen.c +utils/contacts.c diff --git a/po/en_US.po b/po/en_US.po new file mode 100644 index 0000000..6e5bd81 --- /dev/null +++ b/po/en_US.po @@ -0,0 +1,245 @@ +# English translations for lemolo package. +# Copyright (C) 2014 Free Software Foundation, Inc. +# This file is distributed under the same license as the lemolo package. +# Jimmy Huang , 2014. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: lemolo 0.1.4\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-02-18 14:47-0800\n" +"PO-Revision-Date: 2014-01-20 13:46-0800\n" +"Last-Translator: Jimmy Huang \n" +"Language-Team: English\n" +"Language: en_US\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" + +#: dialer/callscreen.c:256 +msgid "Disconnected" +msgstr "Disconnected" + +#: dialer/callscreen.c:258 +msgid "Active" +msgstr "Active" + +#: dialer/callscreen.c:260 +msgid "On Hold" +msgstr "On Hold" + +#: dialer/callscreen.c:262 +msgid "Dialing..." +msgstr "Dialing..." + +#: dialer/callscreen.c:264 +msgid "Alerting..." +msgstr "Alerting..." + +#: dialer/callscreen.c:266 tizen/answer_daemon.c:153 tizen/answer_daemon.c:479 +msgid "Incoming..." +msgstr "Incoming..." + +#: dialer/callscreen.c:268 dialer/gui.c:345 +msgid "Waiting..." +msgstr "Waiting..." + +#: dialer/callscreen.c:796 +msgid "Network Disconnected!" +msgstr "Disconnected" + +#: dialer/callscreen.c:798 +msgid "Disconnected!" +msgstr "Disconnected" + +#: dialer/callscreen.c:800 +#, c-format +msgid "Try to redial %s" +msgstr "Try to redial %s" + +#: dialer/callscreen.c:806 dialer/history.c:645 +msgid "Dismiss" +msgstr "Dismiss" + +#: dialer/callscreen.c:809 dialer/gui.c:352 +msgid "Redial" +msgstr "Redial" + +#: dialer/gui.c:56 +#, c-format +msgid "Could not call %s: %s" +msgstr "Could not call %s: %s" + +#: dialer/gui.c:58 dialer/keypad.c:291 dialer/ussd.c:56 +msgid "Error" +msgstr "Error" + +#: dialer/gui.c:91 +msgid "Switching to history" +msgstr "Switching to history" + +#: dialer/gui.c:340 +msgid "Hide Keypad" +msgstr "Hide Keypad" + +#: dialer/gui.c:341 tizen/answer_daemon.c:491 +msgid "Answer" +msgstr "Answer" + +#: dialer/gui.c:342 tizen/answer_daemon.c:490 +msgid "Hangup" +msgstr "Hangup" + +#: dialer/gui.c:343 +msgid "Conference" +msgstr "Conference" + +#: dialer/gui.c:344 utils/contacts.c:889 +msgid "Back" +msgstr "Back" + +#: dialer/gui.c:346 dialer/gui.c:347 dialer/history.c:697 +#: tizen/answer_daemon.c:478 utils/contacts-tizen.c:777 +#: utils/contacts-tizen.c:789 utils/contacts-tizen.c:925 +msgid "Unknown" +msgstr "Unknown" + +#: dialer/gui.c:349 +msgid "Decline" +msgstr "Decline" + +#: dialer/gui.c:350 +msgid "Hold + Answer" +msgstr "Hold + Answer" + +#: dialer/gui.c:351 +msgid "Hangup + Answer" +msgstr "Hangup + Answer" + +#: dialer/gui.c:354 +msgid "All" +msgstr "All" + +#: dialer/gui.c:355 +msgid "Missed" +msgstr "Missed" + +#: dialer/gui.c:356 +msgid "Clear" +msgstr "Clear" + +#: dialer/gui.c:357 +msgid "Done" +msgstr "Done" + +#: dialer/history.c:641 +msgid "Clear History" +msgstr "Clear History" + +#: dialer/history.c:642 +msgid "Do you want to clear all history entries?" +msgstr "Do you want to clear all history entries?" + +#: dialer/history.c:648 +msgid "Yes, Clear" +msgstr "Yes, Clear" + +#: dialer/keypad.c:104 +msgid "IMEI Request" +msgstr "IMEI Request" + +#: dialer/keypad.c:104 +msgid "No modem" +msgstr "No Modem" + +#: dialer/ussd.c:40 +msgid "Offline" +msgstr "Offline" + +#: dialer/ussd.c:41 +msgid "System is Offline" +msgstr "System is Offline" + +#: dialer/ussd.c:48 +#, c-format +msgid "Could not complete.
Error: %s.
Try again:

%s" +msgstr "Could not complete.
Error: %s.
Try again:

%s" + +#: dialer/ussd.c:53 +#, c-format +msgid "Could not complete.
Error: %s." +msgstr "Could not complete.
Error: %s." + +#: dialer/ussd.c:122 +msgid "Respond" +msgstr "Respond" + +#: dialer/ussd.c:125 +msgid "Cancel" +msgstr "Cancel" + +#: dialer/ussd.c:165 +msgid "Supplementary Services" +msgstr "Supplementary Services" + +#: utils/contacts-tizen.c:729 +msgid "Other" +msgstr "Other" + +#: utils/contacts-tizen.c:732 utils/contacts-tizen.c:738 utils/contacts.c:711 +msgid "Home" +msgstr "Home" + +#: utils/contacts-tizen.c:735 utils/contacts.c:727 +msgid "Work" +msgstr "Work" + +#: utils/contacts-tizen.c:741 +msgid "Fax" +msgstr "Fax" + +#: utils/contacts-tizen.c:744 +msgid "Message" +msgstr "Message" + +#: utils/contacts-tizen.c:747 utils/contacts.c:695 +msgid "Mobile" +msgstr "Mobile" + +#: utils/contacts-tizen.c:750 +msgid "Pager" +msgstr "Pager" + +#: utils/contacts-tizen.c:753 +msgid "Bulletin board" +msgstr "Bulletin board" + +#: utils/contacts-tizen.c:756 +msgid "Modem" +msgstr "Modem" + +#: utils/contacts-tizen.c:759 +msgid "Car phone" +msgstr "Car phone" + +#: utils/contacts-tizen.c:762 +msgid "ISDN" +msgstr "ISDN" + +#: utils/contacts-tizen.c:765 +msgid "Video conference" +msgstr "Video conference" + +#: utils/contacts-tizen.c:768 +msgid "Personal communicatior" +msgstr "Personal communicatior" + +#: utils/contacts-tizen.c:771 +msgid "Assistant telephone" +msgstr "Assistant telephone" + +#: utils/contacts-tizen.c:774 +msgid "Custom" +msgstr "Custom" diff --git a/tizen/answer_daemon.c b/tizen/answer_daemon.c index 5bb6917..985ce2a 100644 --- a/tizen/answer_daemon.c +++ b/tizen/answer_daemon.c @@ -19,6 +19,7 @@ #include #include #endif +#include "i18n.h" #define APP_NAME "org.tizen.answer" #define BUS_NAME "org.tizen.dialer" @@ -147,7 +148,7 @@ static void _call_screen_show(Call_Screen *cs) } else elm_icon_standard_set(icon, "no-picture"); - elm_object_part_text_set(cs->layout, "elm.text.state", "Incoming..."); + elm_object_part_text_set(cs->layout, "elm.text.state", _("Incoming...")); elm_object_part_text_set(cs->layout, "elm.text.phone.type", c->type); elm_object_part_content_set(cs->layout, "elm.swallow.photo", icon); elm_object_signal_emit(cs->layout, "show,activecall", "gui"); @@ -472,6 +473,8 @@ static Eina_Bool _gui_init(Call_Screen *cs) win = elm_win_util_standard_add("answer screen", "oFono Answer"); EINA_SAFETY_ON_NULL_RETURN_VAL(win, EINA_FALSE); elm_win_autodel_set(win, EINA_FALSE); + elm_object_part_text_set(win, "elm.text.name", _("Unknown")); + elm_object_part_text_set(win, "elm.text.state", _("Incoming...")); lay = gui_layout_add(win, "answer"); EINA_SAFETY_ON_NULL_RETURN_VAL(lay, EINA_FALSE); @@ -482,8 +485,8 @@ static Eina_Bool _gui_init(Call_Screen *cs) elm_object_style_set(slider, "answer"); elm_actionslider_indicator_pos_set(slider, ELM_ACTIONSLIDER_CENTER); elm_actionslider_magnet_pos_set(slider, ELM_ACTIONSLIDER_CENTER); - elm_object_part_text_set(slider, "left", "Hangup"); - elm_object_part_text_set(slider, "right", "Answer"); + elm_object_part_text_set(slider, "left", _("Hangup")); + elm_object_part_text_set(slider, "right", _("Answer")); evas_object_smart_callback_add(slider, "selected", _slider_pos_changed_cb, cs); evas_object_show(slider); diff --git a/utils/contacts-tizen.c b/utils/contacts-tizen.c index 27ece84..4370d96 100644 --- a/utils/contacts-tizen.c +++ b/utils/contacts-tizen.c @@ -726,55 +726,55 @@ static const char *_contact_number_type_get(contacts_record_h contact_number_h) return NULL; if (number_type & CONTACTS_NUMBER_TYPE_OTHER) { - return "Other"; + return _("Other"); } else if (number_type & CONTACTS_NUMBER_TYPE_HOME) { - return "Home"; + return _("Home"); } else if (number_type & CONTACTS_NUMBER_TYPE_WORK) { - return "Work"; + return _("Work"); } else if (number_type & CONTACTS_NUMBER_TYPE_VOICE) { - return "Home"; + return _("Home"); } else if (number_type & CONTACTS_NUMBER_TYPE_FAX) { - return "Fax"; + return _("Fax"); } else if (number_type & CONTACTS_NUMBER_TYPE_MSG) { - return "Message"; + return _("Message"); } else if (number_type & CONTACTS_NUMBER_TYPE_CELL) { - return "Mobile"; + return _("Mobile"); } else if (number_type & CONTACTS_NUMBER_TYPE_PAGER) { - return "Pager"; + return _("Pager"); } else if (number_type & CONTACTS_NUMBER_TYPE_BBS) { - return "Bulletin board"; + return _("Bulletin board"); } else if (number_type & CONTACTS_NUMBER_TYPE_MODEM) { - return "Modem"; + return _("Modem"); } else if (number_type & CONTACTS_NUMBER_TYPE_CAR) { - return "Car phone"; + return _("Car phone"); } else if (number_type & CONTACTS_NUMBER_TYPE_ISDN) { - return "ISDN"; + return _("ISDN"); } else if (number_type & CONTACTS_NUMBER_TYPE_VIDEO) { - return "Video conference"; + return _("Video conference"); } else if (number_type & CONTACTS_NUMBER_TYPE_PCS) { - return "Personal communicatior"; + return _("Personal communicatior"); } else if (number_type & CONTACTS_NUMBER_TYPE_ASSISTANT) { - return "Assistant telephone"; + return _("Assistant telephone"); } else if (number_type & CONTACTS_NUMBER_TYPE_CUSTOM) { - return "Custom"; + return _("Custom"); } else { - return "Unknown"; + return _("Unknown"); } } @@ -786,7 +786,7 @@ static const char *_alias_phone_type_match(Contact_Info *c_info, if (_is_alias(cn, alias)) return cn->type; } - return "Unknown"; + return _("Unknown"); } static Eina_Bool _alias_create(Contact_Info *c_info, const char *number) @@ -922,7 +922,7 @@ const char *contact_info_number_check(const Contact_Info *c, if (_contact_number_is_equal(cn, number)) return cn->type; } - return "Unknown"; + return _("Unknown"); } Eina_Bool contact_info_picture_set(Contact_Info *c __UNUSED__, diff --git a/utils/contacts.c b/utils/contacts.c index 386f1d0..cf1e6e1 100644 --- a/utils/contacts.c +++ b/utils/contacts.c @@ -10,6 +10,7 @@ #include "ofono.h" #include "contacts-ofono-efl.h" #include "util.h" +#include "i18n.h" #ifndef EET_COMPRESSION_DEFAULT #define EET_COMPRESSION_DEFAULT 1 @@ -688,7 +689,7 @@ static void _on_item_click(void *data, Evas_Object *obj __UNUSED__, EINA_SAFETY_ON_NULL_RETURN(btn); elm_object_style_set(btn, "contacts"); phone = phone_format(c_info->mobile); - elm_object_part_text_set(btn, "elm.text.type", "Mobile"); + elm_object_part_text_set(btn, "elm.text.type", _("Mobile")); elm_object_part_text_set(btn, "elm.text.phone", phone); free(phone); evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, @@ -704,7 +705,7 @@ static void _on_item_click(void *data, Evas_Object *obj __UNUSED__, EINA_SAFETY_ON_NULL_RETURN(btn); elm_object_style_set(btn, "contacts"); phone = phone_format(c_info->home); - elm_object_part_text_set(btn, "elm.text.type", "Home"); + elm_object_part_text_set(btn, "elm.text.type", _("Home")); elm_object_part_text_set(btn, "elm.text.phone", phone); free(phone); evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, @@ -720,7 +721,7 @@ static void _on_item_click(void *data, Evas_Object *obj __UNUSED__, EINA_SAFETY_ON_NULL_RETURN(btn); elm_object_style_set(btn, "contacts"); phone = phone_format(c_info->work); - elm_object_part_text_set(btn, "elm.text.type", "Work"); + elm_object_part_text_set(btn, "elm.text.type", _("Work")); elm_object_part_text_set(btn, "elm.text.phone", phone); free(phone); evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, @@ -882,6 +883,7 @@ Evas_Object *contacts_add(Evas_Object *parent) details = layout_add(parent, "contacts_details"); EINA_SAFETY_ON_NULL_GOTO(details, err_layout); + elm_object_part_text_set(details, "label.back", _("Back")); obj = layout_add(parent, "contacts_bg"); EINA_SAFETY_ON_NULL_GOTO(obj, err_obj); diff --git a/utils/i18n.h b/utils/i18n.h new file mode 100644 index 0000000..907c417 --- /dev/null +++ b/utils/i18n.h @@ -0,0 +1,13 @@ +#ifndef _I18N_H__ +#define _I18N_H__ + +#ifdef HAVE_TIZEN +#include +#else +#include +#define _(String) gettext (String) +#define gettext_noop(String) String +#define N_(String) gettext_noop (String) +#endif + +#endif diff --git a/utils/util.c b/utils/util.c index 98fb83e..de91e6e 100644 --- a/utils/util.c +++ b/utils/util.c @@ -243,7 +243,6 @@ Eina_Bool util_init(const char *theme) int ret; const char *config_path; char base_dir[PATH_MAX]; - Eet_File *efile; eet_init(); config_path = efreet_config_home_get(); -- 2.7.4