我的网站用php编码。它使用像
这样的结构key
现在我想让我的网站成为多语言,但我想在代码中使用最少的更改,以便能够编写类似
的内容print "$x $y at {$SERVER['HTTP_HOST']}";
将翻译我的网站。
这是更多的PSEUDO代码,说明了我的想法:
//my translation array - I select all such lines in one place
//IMPORTANT: $x, $y and $SERVER['HTTP_HOST'] are not defined yet.
//This templates should be defined before the code.
$lang = array(
'message'=>'$x $y at {$SERVER['HTTP_HOST']}';
);
translate('message');
但它不起作用:))
如何实施这种方法?
答案 0 :(得分:0)
不是很好,但是只需要很少的初始努力就能做到你想要的东西:
$lang = array(
'en'=>"$x $y at {$_SERVER['HTTP_HOST']}",
'it'=>"$x $y italiano {$_SERVER['HTTP_HOST']}",
// whatever other language
);
function translate($v, array $lang){
if (array_key_exists($v, $lang)) {
return $lang[$v];
} else {
throw new Exception('Invalid language');
}
}
echo translate('it', $lang);
答案 1 :(得分:0)
我说如你所说的那样使用内联php数组进行翻译会导致一大堆混乱,以防你想扩展你的翻译功能。
我使用的基本方法如下:
1)坚持翻译'表,看起来像是:
Keyword | English | German | ...
hello | hello | hallo | ...
2)然后在页面加载时,从DB中获取它们并创建一个翻译数组,如下所示:
$translate = array(
'hello'=> array ("English"=>"hello", "German"=>"hallo"),
'next_translation'=> array ("English"=>"...", "German"=>"..."),
....
);
3)使用当前语言维护一个$ lang变量,即"英语"。
4)所以每当你需要翻译时,你只需要密钥和语言var:
$translate[$keyword][$lang];