如何从 Zend Framework 2 中的 URI 获取翻译器 base_dir?
How to get translator base_dir from a URI in Zend Framework 2?
Helle ZF2 大师!通常我们从 Appliction module.config.php 的目录中获取 zf2 翻译文件,如下所示: 'base_dir' => <strong>DIR</strong> 。 '/../语言'
。
是否可以从 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 软件的一部分,将被解释和 "compiled"在每次 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',
],
它成功了。
Helle ZF2 大师!通常我们从 Appliction module.config.php 的目录中获取 zf2 翻译文件,如下所示: 'base_dir' => <strong>DIR</strong> 。 '/../语言'
。
是否可以从 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 软件的一部分,将被解释和 "compiled"在每次 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',
],
它成功了。