在数组中需要帮助翻译代码

时间:2011-05-05 04:12:37

标签: php

我需要帮助php中的翻译代码。我的网站是英文和马来文。所以我必须在每个页面准备翻译代码。像这样

<?php __('Business/Company Registration No :');?>
它起作用了。所以生成要在default.po中翻译的页面如下。所以第二行是翻译后的单词。

msgid "Business/Company Registration No "
msgstr "Nombor Pendaftaran Perniagaan/Syarikat"

这是我在数组中的代码。所以我需要把代码

<?php __('WORD')?>

在这里,

$salutation = array(
  'Mr'=>'Mr',
  'Mrs'=>'Mrs',
  'Ms'=>'Ms');

如果我输入翻译代码,如下所示

$salutation = array(
 'Mr'=>__('Mr'),
 'Mrs'=>__('Mrs'),
 'Ms'=>__('Ms');

选择列表在页面中不起作用,如果有人可以提供帮助?应该在哪里放置翻译代码?

2 个答案:

答案 0 :(得分:2)

问题是你的__函数回应了字符串而不是返回它。 这是一个解决方法

function ___($key){ //Note, 3 underscores
   ob_start(); //Start output buffering. Every echo will be 'trapped' and saved to the buffer
   __($key); //This echoes the translation to the buffer
   return ob_get_clean(); //Returns the 'trapped' echoes from the buffer
}

因此,您应该在数组中使用新的___函数(3个下划线):

$salutation = array(
     'Mr'=>___('Mr'), //Note, there are 3 underscores
     'Mrs'=>___('Mrs'),
     'Ms'=>___('Ms');
);

我们所做的是创建一个___(3个下划线)函数,它返回转换而不是回显它(如__那样),因此您可以在数组中或任何地方使用它。 / p>

希望这有帮助。干杯

答案 1 :(得分:2)

我遇到了这个问题,我发现解决方案是在函数中包装数组,然后在关闭函数之前写:

return apply_filters(function, array);