From ac12f3adf246898f80085eb3bb0355d15cc113eb Mon Sep 17 00:00:00 2001 From: Lukasz Stanislawski Date: Fri, 2 Oct 2015 17:04:38 +0200 Subject: [PATCH] atspi: add translation domain for name and description. @feature --- src/lib/elm_interface_atspi_accessible.c | 31 ++++++++++++++++++++++++++++++- src/lib/elm_interface_atspi_accessible.eo | 24 ++++++++++++++++++++++++ src/lib/elm_widget.c | 2 ++ 3 files changed, 56 insertions(+), 1 deletion(-) diff --git a/src/lib/elm_interface_atspi_accessible.c b/src/lib/elm_interface_atspi_accessible.c index 483a35f..709d142 100644 --- a/src/lib/elm_interface_atspi_accessible.c +++ b/src/lib/elm_interface_atspi_accessible.c @@ -126,6 +126,7 @@ struct _Elm_Interface_Atspi_Accessible_Data Elm_Atspi_Role role; const char *name; const char *description; + const char *translation_domain; Elm_Interface_Atspi_Accessible *parent; }; @@ -215,7 +216,19 @@ _elm_interface_atspi_accessible_role_name_get(Eo *obj EINA_UNUSED, Elm_Interface EOLIAN char * _elm_interface_atspi_accessible_name_get(Eo *obj EINA_UNUSED, Elm_Interface_Atspi_Accessible_Data *pd) { - return pd->name ? strdup(pd->name) : NULL; + if (pd->name) + { +#ifdef ENABLE_NLS + if (pd->translation_domain) + return strdup(dgettext(pd->translation_domain, pd->name)); + else + return strdup(pd->name); +#else + return strdup(pd->name); +#endif + } + + return NULL; } EOLIAN static void @@ -226,6 +239,10 @@ _elm_interface_atspi_accessible_name_set(Eo *obj EINA_UNUSED, Elm_Interface_Atsp const char * _elm_interface_atspi_accessible_description_get(Eo *obj EINA_UNUSED, Elm_Interface_Atspi_Accessible_Data *pd) { +#ifdef ENABLE_NLS + if (pd->translation_domain) + return dgettext(pd->translation_domain, pd->description); +#endif return pd->description; } @@ -340,4 +357,16 @@ _elm_interface_atspi_accessible_event_handler_del(Eo *class EINA_UNUSED, void *p } } +EOLIAN void +_elm_interface_atspi_accessible_translation_domain_set(Eo *obj EINA_UNUSED, Elm_Interface_Atspi_Accessible_Data *pd, const char *domain) +{ + eina_stringshare_replace(&pd->translation_domain, domain); +} + +EOLIAN const char* +_elm_interface_atspi_accessible_translation_domain_get(Eo *obj EINA_UNUSED, Elm_Interface_Atspi_Accessible_Data *pd) +{ + return pd->translation_domain; +} + #include "elm_interface_atspi_accessible.eo.c" diff --git a/src/lib/elm_interface_atspi_accessible.eo b/src/lib/elm_interface_atspi_accessible.eo index 98e02ad..f6a4ed7 100644 --- a/src/lib/elm_interface_atspi_accessible.eo +++ b/src/lib/elm_interface_atspi_accessible.eo @@ -123,6 +123,30 @@ mixin Elm_Interface_Atspi_Accessible () @in event_info: void*; [[Accessibility event details.]] } } + @property translation_domain @protected { + get { + [[Gets the translation domain of "name" and "description" + properties.]] + } + set { + [[Sets the translation domain of "name" and "description" + properties. + + Translation domain should be set if application wants to support i18n + for accessibily "name" and "description" properties. + + When translation domain is set values of "name" and "description" + properties will be translated with dgettext function using + current translation domain as "domainname" parameter. + + It is application developer responsibility to ensure that + translation files are loaded and binded to translation domain + when accessibility is enabled.]] + } + values { + domain: const(char)*; [[ translation domain ]] + } + } } events { property,changed: const(char)*; diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c index b14a625..73d024a 100644 --- a/src/lib/elm_widget.c +++ b/src/lib/elm_widget.c @@ -4433,6 +4433,7 @@ _elm_widget_item_eo_base_destructor(Eo *eo_item, Elm_Widget_Item_Data *item) eo_do(eo_item, elm_interface_atspi_accessible_description_set(NULL)); eo_do(eo_item, elm_interface_atspi_accessible_name_set(NULL)); + eo_do(eo_item, elm_interface_atspi_accessible_translation_domain_set(NULL)); if (_elm_config->atspi_mode && item->widget) elm_interface_atspi_accessible_children_changed_del_signal_emit(item->widget, eo_item); @@ -5707,6 +5708,7 @@ _elm_widget_eo_base_destructor(Eo *obj, Elm_Widget_Smart_Data *sd EINA_UNUSED) { eo_do(obj, elm_interface_atspi_accessible_description_set(NULL)); eo_do(obj, elm_interface_atspi_accessible_name_set(NULL)); + eo_do(obj, elm_interface_atspi_accessible_translation_domain_set(NULL)); elm_interface_atspi_accessible_removed(obj); eo_do_super(obj, ELM_WIDGET_CLASS, eo_destructor()); -- 2.7.4