Ecere SDK/eC Forums • View topic - project documentor using tools of gettext translate en to cn




Ecere SDK/eC Forums

Ecere Developers Community

project documentor using tools of gettext translate en to cn

来自中国的朋友,欢迎您在本版面使用中文讨论问题。请注意,如果您想得到不懂中文的人的帮助,请同时提供英文译文。
Help and discussions in Chinese.

project documentor using tools of gettext translate en to cn

Postby liqi98136 » Sun Aug 28, 2011 7:57 am

project documentor using tools of gettext translate en to cn
利用gettext工具翻译项目documentor
主文件加

Documentor.ec
Code: Select all


#include <locale.h>
#include <libintl.h>
#include <stdlib.h>
#define PACKAGE "documentor"
#define LOCALEDIR "locale"
#define _(STRING) gettext(STRING) 


....
Code: Select all

class Ecgettext
{
      Ecgettext()
      {
         char * lang = "cn";      //change language
         putenv("LANG=zh_CN");
         setlocale(LC_ALL, "zh_CN");
/*

        if ("cn" == lang) {
          putenv("LANG=zh_CN");
          setlocale(LC_ALL, "zh_CN");
      } else if ("en" == lang) {
          putenv("LANG=en_US");
          setlocale(LC_ALL, "en_US");
      }
*/     
      bindtextdomain(PACKAGE, LOCALEDIR);
      textdomain(PACKAGE);             
      bind_textdomain_codeset (PACKAGE, "utf-8");   ///newlines
       
      }
}

Ecgettext eclanguage { };


附文件加
SettingsDialog.ec
Code: Select all

#include <locale.h>
#include <libintl.h>

#define _(STRING) gettext(STRING)


将要翻译的字符串之间加 _( 和 )

然后利用poedit翻译生成po和mo文件,放到指定位置
Attachments
documentor.7z
(145.68 KiB) Downloaded 52209 times
Last edited by liqi98136 on Sun Aug 28, 2011 9:05 am, edited 1 time in total.
liqi98136
 
Posts: 53
Joined: Sun Jan 17, 2010 11:37 pm

Re: project documentor using tools of gettext translate en t

Postby liqi98136 » Sun Aug 28, 2011 8:03 am

问题question
1.为什么主界面不能翻译成中文呢?
mainform cannot be translated into chinese.
2.还有就是static char * 不让替换replace
show error:initializer element is not constant
提示错误:
eC Shared Library files (*.dll, *.so, *.dylib)
不让改为not modify
_(eC Shared Library files (*.dll, *.so, *.dylib))
liqi98136
 
Posts: 53
Joined: Sun Jan 17, 2010 11:37 pm

Re: project documentor using tools of gettext translate en t

Postby liqi98136 » Sun Aug 28, 2011 9:07 am

first question is done.第一个问题已经解决
与Ecgettext eclanguage { }; 定义和执行的位置有关,要放在最前面定义和执行就可以了.成功!
:D
liqi98136
 
Posts: 53
Joined: Sun Jan 17, 2010 11:37 pm

Re: project documentor using tools of gettext translate en t

Postby jerome » Sun Aug 28, 2011 4:22 pm

Dear liqi,

I've just implemented some i18n support in the eC compiler!

Checkout this commit: https://github.com/ecere/sdk/commit/e78 ... 5d94ab3362
Please pull and rebuild the latest sources of the SDK.

The syntax for localizable strings is: $"string".

No other modification to the source code is required, all the initialization is automated by the symbol loader generator (ecs).

A .pot file is automatically generated inside the object directory (e.g. documentor/obj/debug.win32/documentor.pot).

I've cleaned up the localizable strings in your localized documentor source, ideally non-localizable strings should not have $ in front. I have then updated your .po file through Poedit, using the 'Update from pot file' feature. Only localizable strings remain. The resulting documentor.po has been committed to the documentor source.

As for changing environment variables for testing purposes, I have recently fixed the environment variables support in the IDE, so you can use that to set the language to Chinese, in Project / Settings / Workspace (e.g. LANGUAGE / zh_CN)

I'm hoping this will make it easy to integrate all your localization work of the Ecere SDK to our main source base on git :)

Thank you for your contributions!

All the best,

Jerome
jerome
Site Admin
 
Posts: 614
Joined: Sat Jan 16, 2010 11:16 pm

Re: project documentor using tools of gettext translate en t

Postby liqi98136 » Sun Aug 28, 2011 5:59 pm

Great:-).
That is just my want.
liqi98136
 
Posts: 53
Joined: Sun Jan 17, 2010 11:37 pm

Re: project documentor using tools of gettext translate en t

Postby jerome » Sun Aug 28, 2011 10:22 pm

liqi,

The remaining problem is that 'locale' is a relative path, and so installed executables cannot find the localization data... I think the way forward will be to build our own gettext function within the Ecere library, that understands the .mo format. This way it can read files embedded within the executable/libraries files (project resources) and the localization data can be embedded. Also it removes the need for an extra requirement of the libintl library. I hope to implement this this coming week =)

Cheers,

Jerome
jerome
Site Admin
 
Posts: 614
Joined: Sat Jan 16, 2010 11:16 pm


Return to 欢迎使用中文讨论

Who is online

Users browsing this forum: No registered users and 7 guests

cron