5

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

开发基于 MVC phalcon 的站点的最佳实践是什么?我应该如何实现视图层?

4

3 回答 3

4

此示例应用程序 ( https://github.com/phalcon/php-site ) 使用 Phalcon 实现翻译。

于 2012-10-20T18:24:08.293 回答
2

Phalcon 不提供 I18n 功能。有一个提供这种功能的 PECL 扩展,称为intl(参见手册)。

但是,如果您最感兴趣的是用不同的语言展示网站,您可以使用

\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'
    );
}

以上只是展示了如何使用占位符变量获取翻译的消息。要简单地获取不同语言的字符串,您只需_()使用相关键调用翻译器上的 ,并且不传递任何变量。

编辑在视图中,您可以随心所欲地工作。您可以设置在视图层中显示的变量或传递翻译对象并在那里执行翻译。由你决定。

高温高压

于 2012-10-20T15:44:32.000 回答
2

我认为最好的解决方案是使用Phalcon Gettext Adapter。Gettext 最重要的优点是处理复数。

于 2014-04-07T17:48:07.110 回答