2

我正在寻找一种将翻译添加到我的 ZF2 应用程序的方法,在我的 URL 中使用全局变量。无论如何,是否可以一次为整个应用程序执行此操作?

典型的 URL 如下所示:http ://domain.com/en_GB/user/index

第一部分 (en_GB) 应该用于显示正确的翻译。

除此之外,如果可以将此路由器部分设置为可选,那就太好了。因此,如果我应该访问http://domain.com/user/index(没有语言环境部分)到我的应用程序,它应该自动采用浏览器语言环境。

我希望我足够清楚,如果这个问题需要任何补充,请随时提出。

提前感谢

4

2 回答 2

1

@DrBeza,

谢谢您的回答。我不知道这是否是正确的方法,但我创建了下一个解决方案:

在 /config/global.php 我添加了这部分

'translator' => array(
        'locale' => 'nl_NL',        
        'translation_file_patterns' => array(
            array(
                'type'     => 'phpArray',
                'base_dir' => __DIR__ . '/../../language',
                'pattern'  => '%s.php',
            ),
        ),
    ),

在 /module/[modulename]/config/module.config.php 我添加了这部分来设置包含语言环境的 URL 的第一部分

'router' => array(
        'routes' => array(
            'user' => array(
                'options' => array(
                    'route'    => '[/:lang]/user[/:action][/:id]',
                    'constraints' => array(
                        'lang'  => '([a-z]{2})+(_)+([A-Z]{2})',
                    ),
                ),
            ),
        ),
    ),

在 /config/local.php 中,我添加了以下代码以从 URL 中获取语言环境:

http://domain.com/[语言环境][模块][控制器]

$_SERVER['REQUEST_URI_PATH'] = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$segment = explode('/', $_SERVER['REQUEST_URI_PATH']);

我添加了这部分来动态加载语言环境:

return array(
   'translator' => array(
   'locale' => $segment[1],
);
于 2012-10-26T19:17:51.563 回答
0

如果缺少,我建议扩展 Segment 路由类并添加可选的语言环境约束和段部分。在应用程序范围内调用可选变量,例如“locale”。

然后在主模块引导程序中创建一个“路由”事件,一旦匹配到路由,该事件就会触发。触发的回调函数将可以通过传递的事件访问 RouteMatch 对象,让您可以访问“区域设置”值。然后您可以进行一些检查并设置应用程序区域设置。

于 2012-10-24T22:25:30.300 回答