Add gettext support for internationalization 52/16552/1
authorJimmy Huang <jimmy.huang@intel.com>
Wed, 19 Feb 2014 00:17:54 +0000 (16:17 -0800)
committerJimmy Huang <jimmy.huang@intel.com>
Wed, 19 Feb 2014 00:21:56 +0000 (16:21 -0800)
- 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 <jimmy.huang@intel.com>
24 files changed:
Makefile.am
autogen.sh
configure.ac
data/themes/default/answer_screen.edc
data/themes/default/call.edc
data/themes/night/answer_screen.edc
data/themes/night/call.edc
dialer/callscreen.c
dialer/gui.c
dialer/history.c
dialer/keypad.c
dialer/ussd.c
packaging/lemolo.changes
packaging/lemolo.spec
po/LINGUAS [new file with mode: 0644]
po/Makefile.in.in [new file with mode: 0644]
po/Makevars [new file with mode: 0644]
po/POTFILES.in [new file with mode: 0644]
po/en_US.po [new file with mode: 0644]
tizen/answer_daemon.c
utils/contacts-tizen.c
utils/contacts.c
utils/i18n.h [new file with mode: 0644]
utils/util.c

index 8957662..6b0c393 100644 (file)
@@ -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
index b43d171..15ead12 100755 (executable)
@@ -1,5 +1,6 @@
 #!/bin/sh
 
+gettextize -f
 autoreconf -f -i
 
 if [ -z "$NOCONFIGURE" ]; then
index 2daff61..86a7179 100644 (file)
@@ -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
 ])
 
index 271cc87..b532eba 100644 (file)
@@ -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;
index ba94176..b86dfe2 100644 (file)
@@ -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;
index 271cc87..b532eba 100644 (file)
@@ -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;
index d6ce7c1..b6a8bcb 100644 (file)
@@ -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;
index 65aa6d2..42ab020 100644 (file)
@@ -1,6 +1,9 @@
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
+#ifdef HAVE_TIZEN
+#include <appcore-efl.h>
+#endif
 #include <Elementary.h>
 
 #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);
index 30500c0..4cf8e36 100644 (file)
@@ -11,6 +11,7 @@
 #include "ussd.h"
 #include "util.h"
 #include "simple-popup.h"
+#include "i18n.h"
 
 #ifdef HAVE_TIZEN
 #include <appcore-efl.h>
@@ -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 =
index 2bfef25..0224265 100644 (file)
@@ -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);
        }
 
index d5b54cd..54de83c 100644 (file)
@@ -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.<br>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);
index 3952a01..5946f51 100644 (file)
@@ -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.<br>Error: %s.<br>"
-                                       "Try again:<br><br>%s",
+                                       _("Could not complete.<br>Error: %s.<br>Try again:<br><br>%s"),
                                        ofono_error_message_get(err),
                                        ctx->message);
                else
                        snprintf(buf, sizeof(buf),
-                                       "Could not complete.<br>Error: %s.",
+                                       _("Could not complete.<br>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);
index d141abb..41d58ea 100644 (file)
@@ -1,3 +1,6 @@
+* Tue Feb 18 2014 Jimmy Huang <jimmy.huang@intel.com> submit/accepted/tizen/ivi/20140131.204941@2b2d852
+- Add gettext support for internationalization
+
 * Wed Jan 29 2014 Jimmy Huang <jimmy.huang@intel.com> accepted/tizen/20131115.212927@9ce884c
 - Use FindObject instead of deprecated findProperty to pull from AMB
 - Fixes TIVI-2631
index b7824d5..fe8274e 100644 (file)
@@ -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 (file)
index 0000000..7741b83
--- /dev/null
@@ -0,0 +1 @@
+en_US
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
new file mode 100644 (file)
index 0000000..83d8838
--- /dev/null
@@ -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 <drepper@gnu.ai.mit.edu>
+#
+# 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 (file)
index 0000000..32692ab
--- /dev/null
@@ -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 (file)
index 0000000..a61f993
--- /dev/null
@@ -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 (file)
index 0000000..6e5bd81
--- /dev/null
@@ -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 <jimmy.huang@intel.com>, 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 <jimmy.huang@intel.com>\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.<br>Error: %s.<br>Try again:<br><br>%s"
+msgstr "Could not complete.<br>Error: %s.<br>Try again:<br><br>%s"
+
+#: dialer/ussd.c:53
+#, c-format
+msgid "Could not complete.<br>Error: %s."
+msgstr "Could not complete.<br>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"
index 5bb6917..985ce2a 100644 (file)
@@ -19,6 +19,7 @@
 #include <power.h>
 #include <aul.h>
 #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);
index 27ece84..4370d96 100644 (file)
@@ -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__,
index 386f1d0..cf1e6e1 100644 (file)
@@ -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 (file)
index 0000000..907c417
--- /dev/null
@@ -0,0 +1,13 @@
+#ifndef _I18N_H__
+#define _I18N_H__
+
+#ifdef HAVE_TIZEN
+#include <appcore-efl.h>
+#else
+#include <libintl.h>
+#define _(String) gettext (String)
+#define gettext_noop(String) String
+#define N_(String) gettext_noop (String)
+#endif
+
+#endif
index 98fb83e..de91e6e 100644 (file)
@@ -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();