Phalcon的翻译设施

时间:2012-10-20 15:08:56

标签: php internationalization multilingual phalcon

Phalcon是否为多语种网站提供任何设施?

开发基于MVC phalcon的网站的最佳做法是什么?我该如何实现视图层?

3 个答案:

答案 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最重要的优点是处理复数。