Php 如何从Zend Framework 2中的URI获取translator base_dir?
你好,ZF2大师!通常,我们从Appliction module.config.php中的目录获取zf2翻译文件,如下所示:Php 如何从Zend Framework 2中的URI获取translator base_dir?,php,zend-framework2,Php,Zend Framework2,你好,ZF2大师!通常,我们从Appliction module.config.php中的目录获取zf2翻译文件,如下所示:'base_dir'=>dir'//语言“。 是否可以从Uri获取它 Application module.config.php: 'translator' => array( 'locale' => 'en_US', 'translation_file_patterns' => array(
'base_dir'=>dir'//语言“
。
是否可以从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或CDON,以提高应用程序的性能和更长的缓存时间。我认为这种方式不可能,我认为将此文件放在应用程序目录之外不会有任何问题,因为它是应用程序的一部分您的PHP软件将在每次HTTP请求时由web服务器进行解释和“编译”
例如,它正在使用AJAX请求对导航器下载的JSON文件进行交互测试,因为导航器会将文件存储在缓存中。我们的解决方案是确定
application.config.php中的当前语言是什么:
define ('SITE_LANG', ...);
'translator' => [
'locale' => SITE_LANG,
'translation_file_patterns' => [
[
'type' => 'phparray',
'base_dir' => 'vendor/zendframework/zendframework/resources/languages/',
'pattern' => '%s/Zend_Validate.php',
],
在我们的例子中,它只是路径的前两个字母:
www.site.com/en/
然后在module.config.php
中:
define ('SITE_LANG', ...);
'translator' => [
'locale' => SITE_LANG,
'translation_file_patterns' => [
[
'type' => 'phparray',
'base_dir' => 'vendor/zendframework/zendframework/resources/languages/',
'pattern' => '%s/Zend_Validate.php',
],
它成功了。有趣!但是语言文件仍然位于同一台服务器上。它们应该在其他地方吗?这就是问题所在!通常,语言文件位于应用程序目录下或vender/framework/resources/languages/下。语言文件可以在其他域上吗?Fx base_dir=>'',我不这么认为。它们是应用程序的重要组成部分。它们不像CSS文件或图像。