Phalcon是否为多语种网站提供任何设施?
开发基于MVC phalcon的网站的最佳做法是什么?我该如何实现视图层?
答案 0 :(得分:4)
此示例应用程序(https://github.com/phalcon/php-site)使用Phalcon实现翻译。
答案 1 :(得分:2)
Phalcon不提供I18n功能。 PECL扩展提供了这种功能,称为intl(参见manual)。
但是,如果您最感兴趣的是以不同语言呈现网站,则可以使用
\Phalcon\Translate\Adapter\NativeArray
组件。此组件使用包含语言识别字符串的键/值数组。例如,您可以在配置中使用它:
$trans_config = array(
'en' => array(
'bye' => 'Good Bye',
'song-key' => 'This song is %song% (%artist%)',
),
'es' => array(
'bye' => 'Adiós',
'song-key' => 'La canción es %song% (%artist%)',
),
);
证明上述用法的测试是:
public function testVariableSubstitutionTwoEnglish()
{
$language = $trans_config['en'];
$params = array('content' => $language);
$translator = new \Phalcon\Translate\Adapter\NativeArray($params);
$vars = array(
'song' => 'Dust in the wind',
'artist' => 'Kansas',
);
$expected = 'This song is Dust in the wind (Kansas)';
$actual = $translator->_('song-key', $vars);
$this->assertEquals(
$expected,
$actual,
'Translator does not translate English correctly - many parameters'
);
}
以上只是展示了如何使用占位符变量获取已翻译的消息。要简单地使用其他语言获取字符串,只需使用相关键调用转换程序上的_()
,并且不传递任何变量。
编辑在视图中,您可以随意工作。您可以设置视图图层中显示的变量,也可以传递翻译对象并在那里执行翻译。由你决定。
HTH
答案 2 :(得分:2)
我认为最好的解决方案是使用Phalcon Gettext Adapter。 Gettext最重要的优点是处理复数。