翻译(I18n)必须从英文PO开始吗?

时间:2014-03-17 作者:Luca Reghellin

我在想:看来翻译一定是英语的翻译。我的意思是,开始文件是英文的,然后你就可以从中翻译出来。

但如果说我是意大利人呢?那么基础语言是意大利语,其他的是意大利语的翻译?因为它只是这样的:我想有原始的订单文件在意大利语,并从那里开始。

怎么做呢?

2 个回复
最合适的回答,由SO网友:Luca Reghellin 整理而成

好的,我只是在我自己的问题中添加一个答案,以澄清所有的故事和解决方案。这也适用于其他与lang相关的问题。

那么,我得到的是:

本地多站点安装每个站点都代表一种不同的语言每个站点都有自己的主题,主语言的子语言是意大利语(it\\it)

  • 这只是一个生产自定义主题,因此无需分发它。我们有一个称为“父主题”的父主题和一个称为“子主题”的子主题。

    步骤如下:

    在父主题中

    时尚。css添加此行>Text Domain: parent-theme

  • 。php,英寸\'after_setup_theme\' filter 添加:

    load_theme_textdomain( \'parent-theme\', TEMPLATEPATH . \'/languages\' );

    languages folder

    在那个文件夹里add locale.mo files. 我的意思是,例如,en\\u US。mo、fr\\U fr.mo等。。。

  • 的。mo文件将由wordpress翻译功能(\\uuU(),\\ u e())等使用。。

    这个mo文件是将从中创建的二进制文件。po文件(本质上与.pot相同),使用一些软件,如poedit或其他软件(仅谷歌)。

    这个采购订单文件将包含此类内容(示例表单en\\u US.po):

    #: front-page.php
    msgid "prodotti"
    msgstr "products"
    
    #: front-page.php
    msgid "EVENTI"
    msgstr "EVENTS"
    
    #[etc....]
    
    在哪里# are comments, msgid is the original (main language) string (在本例中为意大利字符串)和msgstr is the translation. NOTE: case sensitive.

    主题/语言中的po文件仅包含您自己需要的主题翻译定义(因此可能很少),仅此而已。

    然后,您只需在主题(和子主题)中使用翻译函数(请参阅wordpress codex),如_u()、\\u e()等。。。

    所以I did nothing in the child themes, 所有的工作都围绕着主题。如果需要特定的上下文,只需为子主题注册textdomain(请参阅http://codex.wordpress.org/Function_Reference/load_child_theme_textdomain), 将语言文件夹添加到子主题,并添加采购订单/生产订单文件。

    NOTE: 请记住,转换函数使用get\\u locale()来选择正确的语言。要进行翻译的mo文件表单。get\\u locale()检查是否存在WPLANG constant (最终在wp config.php中设置)或其他来自admin的设置,或者它接受来自“locale”过滤器的内容。为了满足我的需要,我甚至没有设置WPLANG。

    最后,可能需要have different languages in frontend but the same language for the admin 对于多站点中的所有站点。如果是这样的话,您可以从admin中的常规设置设置管理语言。然后,在每个主题的功能。php:

    add_filter(\'locale\', \'set_admin_locale\');
    function set_admin_locale() {
      return \'en_US\';//or whichever language/locale you want in frontend
    }
    
    希望它能帮助人们在这场混乱中找到出路。这并不难,但你需要整理一下,这就是为什么我写了这么长的答案。

    SO网友:Pieter Goosen

    基本上所有的主题都是用英语写的,本地化字符串看起来像这样_e( \'Some English text\', \'domainname\' );. 通常作者包括pot 具有主题的模板。我从codex

    “POT(Portable Object Template)文件本地化过程的第一步是使用一个程序搜索WordPress源代码,并找出传递到\\uuu()或e()函数中的每条消息。此英文消息列表放入一个特殊格式的模板文件(POT文件)这是所有翻译的基础。通常,您可以为WordPress下载POT文件,因此不必生成自己的文件。如果主题/插件开发人员已将所有文本包含在()或\\u e()函数中,也可以为主题和插件创建单独的POT文件。“”

    因此,要将文本翻译成意大利语,您必须创建pomo 原始文件中的文件pot 模板,并根据语言对其进行相应的命名。

    也就是说,您可以创建自己的自定义主题,而不是使用英语,在您的本地化字符串中使用意大利语,如下所示_e( \'Some Italian text\', \'domainname\' ). 因此,您的默认语言将是意大利语,没有设置语言wp-config.php. 你的pot 您要创建的模板现在将保存意大利语文本而不是英语,因为您的主题是意大利语。然后,用户可以通过创建pomo 模板内有正确的语言名称和文本。

    好的,现在的辩论,正如法典中所述,pot 模板使用英语,我再次引用了抄本

    “此英文邮件列表被放入特殊格式的模板文件(POT文件)”中。

    我说的是南非荷兰语,但为了保持世界和wordpress的标准语言,我用英语写所有的东西,创建我的pot 文件,并从中创建pomo 南非荷兰语模板。

    我个人认为应该遵守标准。尊重或不尊重这些标准是每个人的责任。我的意思是,以南非荷兰语为例,全世界讲南非荷兰语的人不到150万,除了比利时和荷兰人可能在某种程度上懂南非荷兰语之外,没有人懂这种语言或语法。所以基本上,如果你用南非荷兰语写一个主题,只有少数人能够使用它,因为没有人能够将它翻译成他们的外语。

    这是一个问题,如果你正在考虑出售你的主题。好吧,如果你把你的主题卖给使用相同语言的人,这可能会奏效,但你的市场太小,不值得。

    但正如我所说的,这取决于你们是否遵守标准。我希望这有帮助

    结束

    相关推荐

    Plugin Localization

    我刚刚为wp构建了我的第一个插件,即使它不是一个伟大的“代码诗意”;)它正常工作。这是一个使用GalleryView 3.0 jquery插件转换默认wp库的插件(http://spaceforaname.com/galleryview).我唯一不能做的就是本地化。此插件的本地化意味着转换管理界面,在这里可以配置jquery插件选项来更改结果库的外观。我试着关注网络上数百万的教程,在论坛上阅读了很多关于这个问题的帖子,并遵循了codex的指南。。。但仍然没有运气。这就是我所做的:每个文本行都位于gette