这真的总是很糟糕吗?(l10n函数中的变量)

时间:2017-07-28 作者:Luca Reghellin

我需要在当前$语言环境以外的另一种语言上翻译字符串,因此我需要更改语言环境并在以后恢复它,而且我真的无法重复我必须翻译的30++字符串的所有代码。

所以我最终得到了这个函数:

function __2($string, $textdomain, $locale){
  global $l10n;
  if(isset($l10n[$textdomain])) $backup = $l10n[$textdomain];
  load_textdomain($textdomain, get_template_directory() . \'/languages/\'. $locale . \'.mo\');
  $translation = __($string,$textdomain);
  if(isset($bkup)) $l10n[$textdomain] = $backup;
  return $translation;
}
现在,根据这篇著名的文章,我真的不应该编写这个函数:

http://ottopress.com/2012/internationalization-youre-probably-doing-it-wrong/

...但它确实有效。所以我的问题是:将变量传递给l10n函数真的总是错误的吗?最终为什么?如果功能正常,为什么我不能使用它呢?

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

答案是:有时。只要您知道自己在做什么,就不会有bug方面的问题。在某些情况下,这是可能的和安全的,而在其他情况下,这可能是必要的或非常有用的。

为了完成并共享上述代码,我添加了以下内容:

function _e2($string, $textdomain, $locale){
  echo __2($string, $textdomain, $locale);
}

// example

_e2(\'hello\',\'stratboy\',\'it_IT\');

UPDATE:

可以在此处找到一些奖金代码:

How to get a traslated string from a language other than the current one?

SO网友:Mark Kaplun

不,这行不通,需要翻译字符串的人将无法使用他们通常用于提取需要翻译的字符串的自动工具。

是的,总是很糟糕。

结束

相关推荐

L10n.js在WordPress 3.1中做什么?那我怎么移除它呢?

我刚刚在测试服务器上安装了WP 3.1 Beta 2。我注意到它带有一个新的l10n.js 自动插入到标头中的文件。我做了一些挖掘,这与本地化有关。我猜很多人不使用这个,所以我想知道如何删除它?如果重要的是不要删除它,请让我也知道。