Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_int_menus.c e_intl.c e_intl.h 


Log Message:


more intl support

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_menus.c,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -3 -r1.43 -r1.44
--- e_int_menus.c       11 Apr 2005 20:25:52 -0000      1.43
+++ e_int_menus.c       11 Apr 2005 23:32:24 -0000      1.44
@@ -114,7 +114,7 @@
    e_menu_item_callback_set(mi, _e_int_menus_main_restart, NULL);
 
    mi = e_menu_item_new(m);
-   e_menu_item_label_set(mi, _("Exit Enlightement"));
+   e_menu_item_label_set(mi, _("Exit Enlightenment"));
    e_menu_item_icon_edje_set(mi, e_path_find(path_icons, "default.edj"),
                             "power");
    e_menu_item_callback_set(mi, _e_int_menus_main_exit, NULL);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_intl.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- e_intl.c    11 Apr 2005 20:25:52 -0000      1.1
+++ e_intl.c    11 Apr 2005 23:32:24 -0000      1.2
@@ -7,20 +7,127 @@
 /* TODO List:
  */
 
+static char *_e_intl_language = NULL;
+static Evas_List *_e_intl_languages = NULL;
+
+#define ADD_LANG(lang) _e_intl_languages = evas_list_append(_e_intl_languages, 
lang)
+
 int
 e_intl_init(void)
 {
+   if (_e_intl_languages) return 1;
+
+   /* supporeted languages - as we get translations - add them here */
+   ADD_LANG("C");
+   ADD_LANG("en");
+   ADD_LANG("jp");
+
+   /* FIXME: NULL == use LANG. make this read a config value if it exists */
+   e_intl_language_set(NULL);
+   return 1;
+}
+
+int
+e_intl_shutdown(void)
+{
+   return 1;
+}
+
+void
+e_intl_language_set(const char *lang)
+{
+   char buf[4096];
+   
+   if (_e_intl_language) free(_e_intl_language);
+   if (!lang) lang = getenv("LANG");
+   _e_intl_language = strdup(lang);
+   snprintf(buf, sizeof(buf), "LANG=%s", _e_intl_language);
+   putenv(buf);
    setlocale(LC_ALL, "");
    bindtextdomain(PACKAGE, LOCALE_DIR);
    textdomain(PACKAGE);
 //   XSetLocaleModifiers("");
    bind_textdomain_codeset(PACKAGE, "UTF-8");
+}
+
+const char *
+e_intl_language_get(void)
+{
+   return _e_intl_language;
+}
+
+#define IFL(l) if (!strcmp(lang, l)) return
+const char *
+e_intl_language_name_get(const char *lang)
+{
+   if (!lang) return "None";
+   /* FIXME: add as many as we can to this */
+   IFL("C") "None";
+   IFL("bg") "Bulgarian";
+   IFL("bs") "Bosnian";
+   IFL("ca") "Catalan";
+   IFL("cs") "Czech";
+   IFL("cy") "Welsh";
+   IFL("da") "Danish";
+   IFL("de") "German";
+   IFL("el") "Greek";
+   IFL("en") "English"; 
+   IFL("eu") "Basque";
+   IFL("fa") "Persian";
+   IFL("fr") "French";
+   IFL("fi") "Finnish";
+   IFL("gl") "Galician";
+   IFL("hi") "Hindi";
+   IFL("hr") "Croatian";
+   IFL("hu") "Hungarian";
+   IFL("id") "Indonesian";
+   IFL("it") "Italian";
+   IFL("jp") "Japanese";
+   IFL("kr") "Korean";
+   IFL("lt") "Lithuanian";
+   IFL("lv") "Latvian";
+   IFL("nl") "Dutch";
+   IFL("nn") "Norwegian Bokmall";
+   IFL("no") "Norwegian Nynorsk";
+   IFL("pl") "Polish";
+   IFL("pt") "Portuguese";
+   IFL("pt_BR") "Portuguese (Brazil)";
+   IFL("ro") "Romanian";
+   IFL("ru") "Russian";
+   IFL("sk") "Slovak";
+   IFL("sl") "Slovenian";
+   IFL("sq") "Albanian";
+   IFL("sr") "Serbian";
+   IFL("sv") "Swedish";
+   IFL("tr") "Tuirkish";
+   IFL("uk") "Ukrainian";
+   IFL("vi") "Vietnamese";
+   IFL("zh") "Chinese (Simplified)";
+   IFL("zh_TW") "Chinese (Traditional)";
+   return "Unknown";
+}
+
+#define ISL(l) (!strcasecmp(buf, l))
+const char *
+e_intl_language_simple_get(const char *lang)
+{
+   char buf[4096], *p;
    
-   return 1;
+   if (!lang) return "C";
+   strncpy(buf, lang, sizeof(buf) - 1);
+   p = strchr(buf, '.');
+   if (p) *p = 0;
+   if (ISL("en") || ISL("en_US") || ISL("en_GB") || ISL("en_CA") ||
+       ISL("en_AU") || ISL("en_NZ") || ISL("en_RN"))
+     return "en";
+   if (ISL("ja") || ISL("ja_JP") || ISL("JP") || ISL("en_CA"))
+     return "ja";
+   /* FIXME: add all sorts of fuzzy matching here */
+   return lang;
 }
 
-int
-e_intl_shutdown(void)
+const Evas_List *
+e_intl_language_list(void)
 {
-   return 1;
+   return _e_intl_languages;
 }
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_intl.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- e_intl.h    11 Apr 2005 20:25:52 -0000      1.1
+++ e_intl.h    11 Apr 2005 23:32:24 -0000      1.2
@@ -15,6 +15,11 @@
 
 EAPI int e_intl_init(void);
 EAPI int e_intl_shutdown(void);
+EAPI void e_intl_language_set(const char *lang);
+EAPI const char *e_intl_language_get(void);
+EAPI const char *e_intl_language_name_get(const char *lang);
+EAPI const char *e_intl_language_simple_get(const char *lang);
+EAPI const Evas_List *e_intl_language_list(void);
     
 #endif
 #endif




-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to