Add i18n support for C code, and most menu items can be translated, now
authorXiao Xiangquan <xiaoxiangquan@gmail.com>
Fri, 10 Jun 2011 04:36:51 +0000 (04:36 +0000)
committerXiao Xiangquan <xiaoxiangquan@gmail.com>
Fri, 10 Jun 2011 04:36:51 +0000 (04:36 +0000)
po/POTFILES.in
po/update_all.py [new file with mode: 0755]
po/update_mo.py [new file with mode: 0755]
po/update_po.py [moved from po/update-po.py with 84% similarity]
po/update_pot.py [moved from po/update-pot.py with 100% similarity]
source/blender/blenfont/BLF_api.h
source/blender/editors/space_info/space_info.c
source/blender/windowmanager/intern/wm_init_exit.c
source/blender/windowmanager/intern/wm_operators.c

index fb0f96cc6aebb8b235111e4230b792fa5b82c848..ac949ade10a9c8f3689851e0673b0d7d62db92f6 100755 (executable)
@@ -1 +1,4 @@
 release/scripts/startup/bl_ui/space_info.py
+
+source/blender/editors/space_info/space_info.c
+source/blender/windowmanager/intern/wm_operators.c
diff --git a/po/update_all.py b/po/update_all.py
new file mode 100755 (executable)
index 0000000..c961cbd
--- /dev/null
@@ -0,0 +1,7 @@
+#!/usr/bin/python
+
+#update all
+
+import update_pot
+import update_po
+import update_mo
diff --git a/po/update_mo.py b/po/update_mo.py
new file mode 100755 (executable)
index 0000000..840d2ff
--- /dev/null
@@ -0,0 +1,40 @@
+#!/usr/bin/python
+
+#update all mo files in the LANGS
+
+import os
+
+LOCALE_DIR="../release/bin/.blender/locale"
+DOMAIN = "blender"
+LANGS = (
+  "ar",
+  "bg",
+  "ca",
+  "cs",
+  "de",
+  "el",
+  "es",
+  "fi",
+  "fr",
+  "hr",
+  "it",
+  "ja",
+  "ko",
+  "nl",
+  "pl",
+  "pt_BR",
+  "ro",
+  "ru",
+  "sr@Latn",
+  "sr",
+  "sv",
+  "uk",
+  "zh_CN"
+)
+
+#-o %s.new.po
+for lang in LANGS:
+    # show stats
+    cmd = "msgfmt --statistics %s.po -o %s/%s/LC_MESSAGES/%s.mo" % ( lang, LOCALE_DIR, lang, DOMAIN )
+    print cmd
+    os.system( cmd )
similarity index 84%
rename from po/update-po.py
rename to po/update_po.py
index c824b537a955faf398ba9935e153cff8cfc38d69..640b3a5f2d27e81237ecedc92df833023c72b7f6 100755 (executable)
@@ -36,7 +36,4 @@ for lang in LANGS:
     cmd = "msgmerge --update --lang=%s %s.po %s.pot" % (lang, lang, DOMAIN)
     print(cmd)
     os.system( cmd )
-
-    # show stats
-    cmd = "msgfmt --statistics %s.po" % lang
-    os.system( cmd )
+    
similarity index 100%
rename from po/update-pot.py
rename to po/update_pot.py
index ed86cf7fa3d56dba5398694f00c27dd0e6c1f2ff..e305345d6bc8d0dd80c2eac3826f4b1d99a9b2f3 100644 (file)
@@ -223,6 +223,6 @@ extern int blf_mono_font_render; // dont mess drawing with render threads.
 // XXX, me, too
 extern int blf_unifont;
 extern int blf_unifont_render; // dont mess drawing with render threads.
-#define _(msgid) (msgid)
+#define _(msgid) BLF_gettext(msgid)
 
 #endif /* BLF_API_H */
index bd2e8077eabd4852e73dca122c58ab5dc5e78e91..beb9f7dc58990c19414f9c264e75eae4731ca523 100644 (file)
@@ -41,6 +41,8 @@
 #include "BLI_rand.h"
 #include "BLI_utildefines.h"
 
+#include "BLF_api.h"
+
 #include "BKE_context.h"
 #include "BKE_global.h"
 #include "BKE_screen.h"
@@ -278,7 +280,7 @@ static void recent_files_menu_draw(const bContext *UNUSED(C), Menu *menu)
                        uiItemStringO(layout, BLI_path_basename(recent->filepath), ICON_FILE_BLEND, "WM_OT_open_mainfile", "filepath", recent->filepath);
                }
        } else {
-               uiItemL(layout, "No Recent Files", ICON_NONE);
+               uiItemL(layout, _("No Recent Files"), ICON_NONE);
        }
 }
 
@@ -288,7 +290,7 @@ static void recent_files_menu_register(void)
 
        mt= MEM_callocN(sizeof(MenuType), "spacetype info menu recent files");
        strcpy(mt->idname, "INFO_MT_file_open_recent");
-       strcpy(mt->label, "Open Recent...");
+       strcpy(mt->label, _("Open Recent..."));
        mt->draw= recent_files_menu_draw;
        WM_menutype_add(mt);
 }
index a27be49af43d0a445fdc043e5a8b355ea40859bf..4acf5157ff1ec04e7cf085a5868c09215efd305e 100644 (file)
@@ -126,16 +126,6 @@ void WM_init(bContext *C, int argc, const char **argv)
                wm_init_cursor_data();
        }
        GHOST_CreateSystemPaths();
-       wm_operatortype_init();
-       
-       set_free_windowmanager_cb(wm_close_and_free);   /* library.c */
-       set_blender_test_break_cb(wm_window_testbreak); /* blender.c */
-       DAG_editors_update_cb(ED_render_id_flush_update); /* depsgraph.c */
-       
-       ED_spacetypes_init();   /* editors/space_api/spacetype.c */
-       
-       ED_file_init();                 /* for fsmenu */
-       ED_init_node_butfuncs();        
        
        BLF_init(11, U.dpi); /* Please update source/gamengine/GamePlayer/GPG_ghost.cpp if you change this */
        BLF_lang_init();
@@ -143,6 +133,17 @@ void WM_init(bContext *C, int argc, const char **argv)
        BLF_lang_encoding("");
        BLF_lang_set("");
 
+       wm_operatortype_init();
+
+       set_free_windowmanager_cb(wm_close_and_free);   /* library.c */
+       set_blender_test_break_cb(wm_window_testbreak); /* blender.c */
+       DAG_editors_update_cb(ED_render_id_flush_update); /* depsgraph.c */
+
+       ED_spacetypes_init();   /* editors/space_api/spacetype.c */
+
+       ED_file_init();                 /* for fsmenu */
+       ED_init_node_butfuncs();
+
        /* get the default database, plus a wm */
        WM_read_homefile(C, NULL, G.factory_startup);
 
index 34702558bc803692c5990ef62afdb877e82f66fd..bb9804273eec85a8ac0977d4420cf146c43b36bd 100644 (file)
@@ -77,6 +77,7 @@
 
 #include "BIF_gl.h"
 #include "BIF_glutil.h" /* for paint cursor */
+#include "BLF_api.h"
 
 #include "IMB_imbuf_types.h"
 
@@ -346,7 +347,7 @@ wmOperatorType *WM_operatortype_append_macro(const char *idname, const char *nam
        ot->poll= NULL;
 
        if(!ot->description)
-               ot->description= "(undocumented operator)";
+               ot->description= _("(undocumented operator)");
        
        RNA_def_struct_ui_text(ot->srna, ot->name, ot->description); // XXX All ops should have a description but for now allow them not to.
        RNA_def_struct_identifier(ot->srna, ot->idname);
@@ -371,7 +372,7 @@ void WM_operatortype_append_macro_ptr(void (*opfunc)(wmOperatorType*, void*), vo
        ot->poll= NULL;
 
        if(!ot->description)
-               ot->description= "(undocumented operator)";
+               ot->description= _("(undocumented operator)");
 
        opfunc(ot, userdata);
 
@@ -766,7 +767,7 @@ int WM_operator_confirm_message(bContext *C, wmOperator *op, const char *message
        else
                properties= NULL;
 
-       pup= uiPupMenuBegin(C, "OK?", ICON_QUESTION);
+       pup= uiPupMenuBegin(C, _("OK?"), ICON_QUESTION);
        layout= uiPupMenuLayout(pup);
        uiItemFullO(layout, op->type->idname, message, ICON_NONE, properties, WM_OP_EXEC_REGION_WIN, 0);
        uiPupMenuEnd(C, pup);
@@ -981,7 +982,7 @@ static uiBlock *wm_block_create_dialog(bContext *C, ARegion *ar, void *userData)
                col= uiLayoutColumn(layout, FALSE);
                col_block= uiLayoutGetBlock(col);
                /* Create OK button, the callback of which will execute op */
-               btn= uiDefBut(col_block, BUT, 0, "OK", 0, -30, 0, 20, NULL, 0, 0, 0, 0, "");
+               btn= uiDefBut(col_block, BUT, 0, _("OK"), 0, -30, 0, 20, NULL, 0, 0, 0, 0, "");
                uiButSetFunc(btn, dialog_exec_cb, op, col_block);
        }
 
@@ -1094,7 +1095,7 @@ static void WM_OT_debug_menu(wmOperatorType *ot)
 {
        ot->name= "Debug Menu";
        ot->idname= "WM_OT_debug_menu";
-       ot->description= "Open a popup to set the debug level";
+       ot->description= _("Open a popup to set the debug level");
        
        ot->invoke= wm_debug_menu_invoke;
        ot->exec= wm_debug_menu_exec;
@@ -1208,19 +1209,19 @@ static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *UNUSED(ar
        
        split = uiLayoutSplit(layout, 0, 0);
        col = uiLayoutColumn(split, 0);
-       uiItemL(col, "Links", ICON_NONE);
-       uiItemStringO(col, "Donations", ICON_URL, "WM_OT_url_open", "url", "http://www.blender.org/blenderorg/blender-foundation/donation-payment/");
-       uiItemStringO(col, "Release Log", ICON_URL, "WM_OT_url_open", "url", "http://www.blender.org/development/release-logs/blender-257/");
-       uiItemStringO(col, "Manual", ICON_URL, "WM_OT_url_open", "url", "http://wiki.blender.org/index.php/Doc:2.5/Manual");
-       uiItemStringO(col, "Blender Website", ICON_URL, "WM_OT_url_open", "url", "http://www.blender.org/");
-       uiItemStringO(col, "User Community", ICON_URL, "WM_OT_url_open", "url", "http://www.blender.org/community/user-community/"); // 
+       uiItemL(col, _("Links"), ICON_NONE);
+       uiItemStringO(col, _("Donations"), ICON_URL, "WM_OT_url_open", "url", "http://www.blender.org/blenderorg/blender-foundation/donation-payment/");
+       uiItemStringO(col, _("Release Log"), ICON_URL, "WM_OT_url_open", "url", "http://www.blender.org/development/release-logs/blender-257/");
+       uiItemStringO(col, _("Manual"), ICON_URL, "WM_OT_url_open", "url", "http://wiki.blender.org/index.php/Doc:2.5/Manual");
+       uiItemStringO(col, _("Blender Website"), ICON_URL, "WM_OT_url_open", "url", "http://www.blender.org/");
+       uiItemStringO(col, _("User Community"), ICON_URL, "WM_OT_url_open", "url", "http://www.blender.org/community/user-community/"); // 
        if(strcmp(STRINGIFY(BLENDER_VERSION_CYCLE), "release")==0) {
                BLI_snprintf(url, sizeof(url), "http://www.blender.org/documentation/blender_python_api_%d_%d" STRINGIFY(BLENDER_VERSION_CHAR) "_release", BLENDER_VERSION/100, BLENDER_VERSION%100);
        }
        else {
                BLI_snprintf(url, sizeof(url), "http://www.blender.org/documentation/blender_python_api_%d_%d_%d", BLENDER_VERSION/100, BLENDER_VERSION%100, BLENDER_SUBVERSION);
        }
-       uiItemStringO(col, "Python API Reference", ICON_URL, "WM_OT_url_open", "url", url);
+       uiItemStringO(col, _("Python API Reference"), ICON_URL, "WM_OT_url_open", "url", url);
        uiItemL(col, "", ICON_NONE);
 
        col = uiLayoutColumn(split, 0);
@@ -1230,7 +1231,7 @@ static uiBlock *wm_block_create_splash(bContext *C, ARegion *ar, void *UNUSED(ar
                uiItemS(col);
        }
 
-       uiItemL(col, "Recent", ICON_NONE);
+       uiItemL(col, _("Recent"), ICON_NONE);
        for(recent = G.recent_files.first, i=0; (i<5) && (recent); recent = recent->next, i++) {
                uiItemStringO(col, BLI_path_basename(recent->filepath), ICON_FILE_BLEND, "WM_OT_open_mainfile", "filepath", recent->filepath);
        }
@@ -1408,9 +1409,9 @@ static int wm_operator_winactive_normal(bContext *C)
 
 static void WM_OT_window_duplicate(wmOperatorType *ot)
 {
-       ot->name= "Duplicate Window";
+       ot->name= _("Duplicate Window");
        ot->idname= "WM_OT_window_duplicate";
-       ot->description="Duplicate the current Blender window";
+       ot->description=_("Duplicate the current Blender window");
                
        ot->exec= wm_window_duplicate_exec;
        ot->poll= wm_operator_winactive_normal;
@@ -1418,9 +1419,9 @@ static void WM_OT_window_duplicate(wmOperatorType *ot)
 
 static void WM_OT_save_homefile(wmOperatorType *ot)
 {
-       ot->name= "Save User Settings";
+       ot->name= _("Save User Settings");
        ot->idname= "WM_OT_save_homefile";
-       ot->description="Make the current file the default .blend file";
+       ot->description=_("Make the current file the default .blend file");
                
        ot->invoke= WM_operator_confirm;
        ot->exec= WM_write_homefile;
@@ -1429,9 +1430,9 @@ static void WM_OT_save_homefile(wmOperatorType *ot)
 
 static void WM_OT_read_homefile(wmOperatorType *ot)
 {
-       ot->name= "Reload Start-Up File";
+       ot->name= _("Reload Start-Up File");
        ot->idname= "WM_OT_read_homefile";
-       ot->description="Open the default file (doesn't save the current file)";
+       ot->description=_("Open the default file (doesn't save the current file)");
        
        ot->invoke= WM_operator_confirm;
        ot->exec= WM_read_homefile_exec;
@@ -1440,9 +1441,9 @@ static void WM_OT_read_homefile(wmOperatorType *ot)
 
 static void WM_OT_read_factory_settings(wmOperatorType *ot)
 {
-       ot->name= "Load Factory Settings";
+       ot->name= _("Load Factory Settings");
        ot->idname= "WM_OT_read_factory_settings";
-       ot->description="Load default file and user preferences";
+       ot->description=_("Load default file and user preferences");
        
        ot->invoke= WM_operator_confirm;
        ot->exec= WM_read_homefile_exec;
@@ -1517,7 +1518,7 @@ static void WM_OT_open_mainfile(wmOperatorType *ot)
 {
        ot->name= "Open Blender File";
        ot->idname= "WM_OT_open_mainfile";
-       ot->description="Open a Blender file";
+       ot->description=_("Open a Blender file");
        
        ot->invoke= wm_open_mainfile_invoke;
        ot->exec= wm_open_mainfile_exec;
@@ -1685,7 +1686,7 @@ static void WM_OT_link_append(wmOperatorType *ot)
 {
        ot->name= "Link/Append from Library";
        ot->idname= "WM_OT_link_append";
-       ot->description= "Link or Append from a Library .blend file";
+       ot->description= _("Link or Append from a Library .blend file");
        
        ot->invoke= wm_link_append_invoke;
        ot->exec= wm_link_append_exec;
@@ -1725,9 +1726,9 @@ static int wm_recover_last_session_exec(bContext *C, wmOperator *op)
 
 static void WM_OT_recover_last_session(wmOperatorType *ot)
 {
-       ot->name= "Recover Last Session";
+       ot->name= _("Recover Last Session");
        ot->idname= "WM_OT_recover_last_session";
-       ot->description="Open the last closed file (\"quit.blend\")";
+       ot->description=_("Open the last closed file (\"quit.blend\")");
        
        ot->exec= wm_recover_last_session_exec;
        ot->poll= WM_operator_winactive;
@@ -1770,7 +1771,7 @@ static void WM_OT_recover_auto_save(wmOperatorType *ot)
 {
        ot->name= "Recover Auto Save";
        ot->idname= "WM_OT_recover_auto_save";
-       ot->description="Open an automatically saved file to recover it";
+       ot->description=_("Open an automatically saved file to recover it");
        
        ot->exec= wm_recover_auto_save_exec;
        ot->invoke= wm_recover_auto_save_invoke;
@@ -1876,7 +1877,7 @@ static void WM_OT_save_as_mainfile(wmOperatorType *ot)
 {
        ot->name= "Save As Blender File";
        ot->idname= "WM_OT_save_as_mainfile";
-       ot->description="Save the current file in the desired location";
+       ot->description=_("Save the current file in the desired location");
        
        ot->invoke= wm_save_as_mainfile_invoke;
        ot->exec= wm_save_as_mainfile_exec;
@@ -1935,7 +1936,7 @@ static void WM_OT_save_mainfile(wmOperatorType *ot)
 {
        ot->name= "Save Blender File";
        ot->idname= "WM_OT_save_mainfile";
-       ot->description="Save the current Blender file";
+       ot->description=_("Save the current Blender file");
        
        ot->invoke= wm_save_mainfile_invoke;
        ot->exec= wm_save_as_mainfile_exec;
@@ -2053,7 +2054,7 @@ static void WM_OT_quit_blender(wmOperatorType *ot)
 {
        ot->name= "Quit Blender";
        ot->idname= "WM_OT_quit_blender";
-       ot->description= "Quit Blender";
+       ot->description= _("Quit Blender");
 
        ot->invoke= WM_operator_confirm;
        ot->exec= wm_exit_blender_op;
@@ -2074,7 +2075,7 @@ static void WM_OT_console_toggle(wmOperatorType *ot)
 {
        ot->name= "Toggle System Console";
        ot->idname= "WM_OT_console_toggle";
-       ot->description= "Toggle System Console";
+       ot->description= _("Toggle System Console");
        
        ot->exec= wm_console_toggle_op;
        ot->poll= WM_operator_winactive;
@@ -3312,7 +3313,7 @@ static void WM_OT_memory_statistics(wmOperatorType *ot)
 {
        ot->name= "Memory Statistics";
        ot->idname= "WM_OT_memory_statistics";
-       ot->description= "Print memory statistics to the console";
+       ot->description= _("Print memory statistics to the console");
        
        ot->exec= memory_statistics_exec;
 }