devture / silex-translation-bundle
Silex 扩展包,允许.json文件在多种语言之间进行翻译。
3.0
2017-03-17 18:14 UTC
Requires
README
在指定的基础目录(base_path)中查找所有{sourceLanguage}.json
文件(例如:en.json
),并允许这些文件翻译为所有指定的语言(locales)。
每当保存对该语言的翻译时,就会生成并保存一个{targetLanguage}.json
文件,并保存在与{sourceLanguage}.json
相同的目录中。
同一目录下还会保存一个{targetLanguage}.json.hash
文件。它包含“提示”信息,告诉翻译系统给定翻译是从哪个源翻译字符串派生出来的。这样,如果源翻译字符串发生变化,则可以认为翻译已过时。在此时刻,这样的过时翻译被视为新的且未翻译的。
安装
权限
由于翻译系统需要将翻译文件保存到项目中,我们需要授予Web服务器用户文件写入权限。
示例
$ find /srv/http/my-project/src -type d -name translations | xargs chown :http
$ find /srv/http/my-project/src -type d -name translations | xargs chmod g+w
配置
TranslationBundle 配置
"TranslationBundle": {
"source_language_locale_key": "en",
"base_path": "%app_base_path%",
"locales": "%locales%"
}
TranslationBundle 配置示例
"TranslationBundle": {
"source_language_locale_key": "en",
"base_path": "/srv/http/my-project/src",
"locales": {
"en": {"key": "en", "name": "English"},
"bg": {"key": "bg", "name": "Bulgarian"},
"ja": {"key": "ja", "name": "Japanese"}
}
}
初始化
仅在调试期间设置,以保护生产环境
if ($app['debug']) {
$app->register(new \Devture\Bundle\TranslationBundle\ServicesProvider('devture_translation', $app['config']['TranslationBundle']));
$app->mount('/admin/{locale}/translation/', $app['devture_translation.controllers_provider.management']);
$app['devture_user.access_control']->requireRoleForRoutePrefix('devture_translation.', 'devture_translation');
}
主路由将是 devture_translation.manage
(假设使用了与上面相同的 devture_translation
命名空间)。