ajwillia-ms pushed a commit to branch master. http://git.enlightenment.org/tools/examples.git/commit/?id=95c0ffad658aa57eb7d4ddeda4b444faeb051daa
commit 95c0ffad658aa57eb7d4ddeda4b444faeb051daa Author: Andy Williams <a...@andywilliams.me> Date: Wed Dec 6 12:46:15 2017 +0000 ui: Add starter of a translation reference example --- .gitignore | 2 ++ reference/c/ui/meson.build | 1 + reference/c/ui/po/LINGUAS | 0 reference/c/ui/po/POTFILES | 1 + reference/c/ui/po/meson.build | 4 +++ reference/c/ui/src/meson.build | 8 ++++++ reference/c/ui/src/ui_translation.c | 54 +++++++++++++++++++++++++++++++++++++ 7 files changed, 70 insertions(+) diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 index 378eac2..74c3478 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ build +*.pot + diff --git a/reference/c/ui/meson.build b/reference/c/ui/meson.build index 2100252..b42fa20 100644 --- a/reference/c/ui/meson.build +++ b/reference/c/ui/meson.build @@ -9,4 +9,5 @@ efl = dependency('efl-ui', version : '>=1.20.99') inc = include_directories('.') subdir('src') +subdir('po') diff --git a/reference/c/ui/po/LINGUAS b/reference/c/ui/po/LINGUAS new file mode 100644 index 0000000..e69de29 diff --git a/reference/c/ui/po/POTFILES b/reference/c/ui/po/POTFILES new file mode 100644 index 0000000..2d2079f --- /dev/null +++ b/reference/c/ui/po/POTFILES @@ -0,0 +1 @@ +src/ui_translation.c diff --git a/reference/c/ui/po/meson.build b/reference/c/ui/po/meson.build new file mode 100644 index 0000000..0f35612 --- /dev/null +++ b/reference/c/ui/po/meson.build @@ -0,0 +1,4 @@ +i18n = import('i18n') +i18n.gettext('example_translation', + args : '--keyword=efl_ui_translatable_text_set:2') + diff --git a/reference/c/ui/src/meson.build b/reference/c/ui/src/meson.build index 82793b4..07ff9fc 100644 --- a/reference/c/ui/src/meson.build +++ b/reference/c/ui/src/meson.build @@ -13,3 +13,11 @@ executable('efl_reference_ui_container', include_directories : inc, install : true ) + +executable('efl_reference_ui_translation', + files(['ui_translation.c']), + dependencies : deps, + include_directories : inc, + install : true +) + diff --git a/reference/c/ui/src/ui_translation.c b/reference/c/ui/src/ui_translation.c new file mode 100644 index 0000000..70f383c --- /dev/null +++ b/reference/c/ui/src/ui_translation.c @@ -0,0 +1,54 @@ +#define EFL_EO_API_SUPPORT 1 +#define EFL_BETA_API_SUPPORT 1 + +#include <stdio.h> + +#include <Eina.h> +#include <Elementary.h> +#include <Efl_Ui.h> + +/* + * Efl.Ui translation exmaples. + * + * Efl.Ui contains a way to manage translations provided by gettext or + * other translation provider. This example shows how to set it up and to + * extract strings for translation. (see src/meson.build). + * + * The gettext extraction command is: + * "xgettext --keyword=efl_ui_translatable_text_set:2 --from-code=utf-8 --foreign-user" + * + * In this project you can go to build/ and execute "ninja example_translation-pot" + */ +#define _TEXT_DOMAIN "example_translation" + +EAPI_MAIN void +efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED) +{ + Efl_Ui_Win *win, *box; + + win = efl_add(EFL_UI_WIN_CLASS, NULL, + efl_ui_win_type_set(efl_added, EFL_UI_WIN_BASIC), + efl_ui_translatable_text_set(efl_added, "Translations", + _TEXT_DOMAIN), + efl_ui_win_autodel_set(efl_added, EINA_TRUE)); + + box = efl_add(EFL_UI_BOX_CLASS, win, + efl_content_set(win, efl_added)); + + efl_add(EFL_UI_BUTTON_CLASS, win, + efl_ui_translatable_text_set(efl_added, "Translations", _TEXT_DOMAIN), + efl_pack_end(box, efl_added)); + + efl_add(EFL_UI_BUTTON_CLASS, win, + efl_ui_translatable_text_set(efl_added, "Help", _TEXT_DOMAIN), + efl_pack_end(box, efl_added)); + + efl_add(EFL_UI_BUTTON_CLASS, win, + efl_ui_translatable_text_set(efl_added, "Quit", _TEXT_DOMAIN), + efl_pack_end(box, efl_added), + efl_gfx_size_hint_min_set(efl_added, EINA_SIZE2D(100, 100))); + + efl_gfx_size_set(win, EINA_SIZE2D(320, 320)); +} +EFL_MAIN() + --