问题描述

我有几个 gettext()问题,在 WordPress Codex 的任何地方都没有涵盖,但我认为它们很重要。

  1. 主题中的__('string')应用于可能还存在于主 WordPress 翻译文件中的字符串。没有必要的文本域。示例:一,二,提交,取消,删除等常用单词。正确?

  2. 主题中的__('string', 'textdomain')应用于 theme-specific 的字符串。示例:’ 此选项启用 X 功能’ 。正确?

  3. 我认为最好为主题 front-end 设一个文本域,另一个为 back-end 。像__('string', 'textdomain')__('string', 'textdomain-admin')。不是每个人都想花上几个小时来翻译 100 个额外的管理面板字符串。正确还是坏习惯?

  4. 每个 PLUGIN 应该有自己的文本域:__('string', 'plugin-name')。正确?

  5. 我认为为 THEME 字符串设置 CONTEXT 非常非常有用,但没有人这样做。为什么?如:_x('add item', 'add slide text', 'textdomain')_x('add item', 'shopping cart', 'textdomain')

  6. 如何翻译评论,日期,货币,小时,数字?

    1. 例如:一个评论,两个评论,但在某些语言中可能是:一个评论,两个评论,三个评论 X,四个评论 XY,五个评论 XYZ,六个评论 ABXY(复杂的形式与复杂的模式) 。

    2. 示例:几乎所有主题都使用 the_time(get_option('date_format')); – 不应该是 echo date_i18n(get_option('date_format'), strtotime($post->post_date)); 还是 echo date_i18n('F jS, Y'), strtotime($post->post_date));

    3. 示例:英语使用 12,345.12,但一些语言可能使用 12.345,12 。

最佳解决思路

有趣的问题,我会尽力而为,但我希望其他人也可以提供意见。

通常我使用主题的文本域也可能存在于主 WordPress 翻译文件中的字符串

re 2. 正确

我认为这是一个好主意,但我不知道这是不好的做法还是这样的事情

正确

我也认为这是非常有用的。

再 6.1 几个月前,奥托对 a post 做了正确的国际化字符串方式。对于与数字相关的任何内容,他给出以下内容:

$string = sprintf( __('You have %d tacos', 'plugin-domain'), $number );

re 6.2 。正确

re 6.3 。我不得不看这个,并在 WordPress forum 的线程上找到答案:

if (0 < $numtags) $numcats= number_format_i18n($numtags);

请记住,主题和插件的国际化还没有广泛传播,WordPress 是非常美国 (或英语) 的导向,只有今年才有更多的人关注。我今年早些时候写了一篇 article on WPCandy 关于这个主题。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。