如何从 Zend Framework 2 中的 URI 获取转换器base_dir


How to get translator base_dir from a URI in Zend Framework 2?

Helle ZF2 Guru!通常我们从 Appliction module.config 中的一个目录中获取 zf2 翻译文件.php如下所示: 'base_dir' => DIR . '/../language' .是否可以从 URI 获取它?

Application module.config.php:
    'translator' => array(
             'locale' => 'en_US',
             'translation_file_patterns' => array(
                 array(
                     'type'     => 'gettext',
                      'base_dir' => __DIR__ . '/../language',//http://example.com/
                     'pattern'  => '%s.mo',
                 ),
             ),
         ),

为什么这很重要?
如果我错了,请纠正我!在多语言应用程序中,语言文件是静态文件,对于实际应用程序,任何静态文件最好像AWS CloudFront or CDON一样放在云上,以获得更好的应用程序性能和更长的缓存时间。

我认为这种

方式是不可能的,我认为将这个文件放在 App 目录之外并不令人不安,因为它是 PHP 软件的一部分,将在每次 HTTP 请求时由您的 Web 服务器解释和"编译"。

例如,对于

导航器使用 AJAX 请求下载的 JSON 文件,它是交错的,因为导航器会将文件存储在缓存中。

我们的解决方案是确定application.config.php中的当前语言是什么:

define ('SITE_LANG', ...);

在我们的例子中,它只是路径的前两个字母:www.site.com/en/...

然后在module.config.php

'translator' => [
        'locale' => SITE_LANG,
        'translation_file_patterns' => [
            [
                'type' => 'phparray',
                'base_dir' => 'vendor/zendframework/zendframework/resources/languages/',
                'pattern' =>  '%s/Zend_Validate.php',
            ],

它做到了。