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()
+

-- 


Reply via email to