使用gettext进行I18N编程:.mo路径? Topic is solved

这是wxWidgets论坛的中文版本。在这里,您可以用您的母语汉语讨论上面任一子论坛所涉及的所有关于wxWidgets的话题。欢迎大家参与到对有价值的帖子的中英互译工作中来!
Post Reply
Loaden
I live to help wx-kind
I live to help wx-kind
Posts: 177
Joined: Tue Feb 19, 2008 10:21 am
Location: China

使用gettext进行I18N编程:.mo路径?

Post by Loaden »

如题,能否修改路径?
bindtextdomain("test", "langs");
这样的话,只能将语言文件放在langs目录下,即:
langs\zh_CN\LC_MESSAGES\test.mo
能否改成:
langs\zh_CN\test.mo

因为我觉得LC_MESSAGES没有用,这个目录不要更好。

另,能否不使用test.mo文件名?比如:test.lng?

下面是我写的全局函数:

Code: Select all

tr::shared_ptr<std::wstring> getText(char* str)
{
    static bool init = true;
    if (init)
    {
        init = false;
        std::string name = (*unicodeToAnsi((*getSdkName()).c_str())).c_str();
        bind_textdomain_codeset(name.c_str(), "UTF-8");
        bindtextdomain(name.c_str(), "langs");
        textdomain(name.c_str());
    }

    return utf8ToUnicode(gettext(str));
}
说明:因为我现在的工程是只用wx来做界面,所以只能自己调用gettext。
Life is not fair, get used to it.
Loaden
I live to help wx-kind
I live to help wx-kind
Posts: 177
Joined: Tue Feb 19, 2008 10:21 am
Location: China

Post by Loaden »

看来没人关注gettext。
自己解决了:自己写算法,从po文件生成二进制语言文件;自己写算法从生成的二进制语言文件中检索。
Life is not fair, get used to it.
Satervalley
Knows some wx things
Knows some wx things
Posts: 47
Joined: Fri Dec 14, 2007 1:10 am

Post by Satervalley »

不用啊,这个很简单的,只要一句即可:
locale.AddCatalogLookupPathPrefix(wxT("[your path]"));
其中locale是 wxLocale的实例,把mo文件放到[your path]后面相应的语言编码目录里,如[your path]/zh_CN, [your path]/en_GB 等。
Loaden
I live to help wx-kind
I live to help wx-kind
Posts: 177
Joined: Tue Feb 19, 2008 10:21 am
Location: China

Post by Loaden »

我用的是纯gettext,不是wxWidgets里的那个。wxWidgets的那个应该是自己实现的?(猜想)
Life is not fair, get used to it.
Post Reply