forked from enlightenment/efl
Elm gettext: Only translate if the app using elm is translatable.
It assumes gettext is initialized before the call to elm_init. SVN revision: 63452
This commit is contained in:
parent
b4c88023c6
commit
80b062cf07
|
@ -1658,12 +1658,33 @@ elm_mirrored_set(Eina_Bool mirrored)
|
||||||
_elm_rescale();
|
_elm_rescale();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_translation_init()
|
||||||
|
{
|
||||||
|
#ifdef ENABLE_NLS
|
||||||
|
const char *cur_dom = textdomain(NULL);
|
||||||
|
const char *trans_comment = gettext("");
|
||||||
|
const char *msg_locale = setlocale(LC_MESSAGES, NULL);
|
||||||
|
|
||||||
|
/* Same concept as what glib does:
|
||||||
|
* We shouldn't translate if there are no translations for the
|
||||||
|
* application in the current locale + domain. (Unless locale is
|
||||||
|
* en_/C where translating only parts of the interface make some
|
||||||
|
* sense).
|
||||||
|
*/
|
||||||
|
_elm_config->translate = !(strcmp (cur_dom, "messages") &&
|
||||||
|
!*trans_comment && strncmp (msg_locale, "en_", 3) &&
|
||||||
|
strcmp (msg_locale, "C"));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_elm_config_init(void)
|
_elm_config_init(void)
|
||||||
{
|
{
|
||||||
_desc_init();
|
_desc_init();
|
||||||
_profile_fetch_from_conf();
|
_profile_fetch_from_conf();
|
||||||
_config_load();
|
_config_load();
|
||||||
|
_translation_init();
|
||||||
_env_get();
|
_env_get();
|
||||||
_config_apply();
|
_config_apply();
|
||||||
_elm_config_font_overlay_apply();
|
_elm_config_font_overlay_apply();
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
|
|
||||||
#ifdef ENABLE_NLS
|
#ifdef ENABLE_NLS
|
||||||
# include <libintl.h>
|
# include <libintl.h>
|
||||||
# define E_(string) dgettext(PACKAGE, string)
|
# define E_(string) _elm_dgettext(string)
|
||||||
#else
|
#else
|
||||||
# define bindtextdomain(domain,dir)
|
# define bindtextdomain(domain,dir)
|
||||||
# define E_(string) (string)
|
# define E_(string) (string)
|
||||||
|
@ -148,6 +148,7 @@ struct _Elm_Config
|
||||||
|
|
||||||
/* Not part of the EET file */
|
/* Not part of the EET file */
|
||||||
Eina_Bool is_mirrored : 1;
|
Eina_Bool is_mirrored : 1;
|
||||||
|
Eina_Bool translate : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _Elm_Module
|
struct _Elm_Module
|
||||||
|
@ -247,6 +248,20 @@ extern int _elm_log_dom;
|
||||||
extern Eina_List *_elm_win_list;
|
extern Eina_List *_elm_win_list;
|
||||||
extern int _elm_win_deferred_free;
|
extern int _elm_win_deferred_free;
|
||||||
|
|
||||||
|
/* Our gettext wrapper, used to disable translation of elm if the app
|
||||||
|
* is not translated. */
|
||||||
|
static inline const char *
|
||||||
|
_elm_dgettext(const char *string)
|
||||||
|
{
|
||||||
|
if (EINA_UNLIKELY(_elm_config->translate == EINA_FALSE))
|
||||||
|
{
|
||||||
|
return string;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dgettext(PACKAGE, string);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Used by the paste handler */
|
/* Used by the paste handler */
|
||||||
void _elm_entry_entry_paste(Evas_Object *obj, const char *entry);
|
void _elm_entry_entry_paste(Evas_Object *obj, const char *entry);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue