sergeil / extjslocalization-bundle
为 Symfony2 添加 ExtJs 类的本地化支持
v1.2.3
2019-12-12 11:10 UTC
Requires
- php: >=5.6
- symfony/framework-bundle: ^2.8|^3.4|^4.0
- symfony/translation: ^2.8|^3.4|^4.0
Requires (Dev)
- phpunit/phpunit: ~5.0
README
此扩展包使得从 ExtJs 类中提取翻译标记成为可能,让您翻译它们,然后对 ExtJs 类进行本地化。
以下是此扩展包能够解析的示例 ExtJs
Ext.define('Company.foo.bar.MyClass', { // l10n firstnameText: 'Firstname', lastnameText: 'Lastname', doSomething: function() { // ... } });
简而言之,为了检测您的 extjs 类,它必须符合以下规则
- 在第一个翻译标记之前必须放置此注释 - // l10n
- 翻译标记必须以 "Text" 结尾,例如 - firstnameText
- 翻译标记和其他类成员(其他属性、方法等)之后必须有一行空白
- 不要在翻译标记之间添加任何空白行(您可能会想这样做以在语义上分组您的标记)
使用方法
通常,您只需要执行以下命令即可开始翻译项目的 extjs 类
php app/console sli:update-extjs-translation fr AcmeDemoBundle --output-format=xlf
执行命令后,假设您已在项目中安装了 AcmeDemoBundle,并且该扩展包具有 "Resources/public/js/" 目录(以及其中的一些类),则该命令将解析此目录中的文件并生成 Resources/translations/extjs.fr.xlf 文件。
一旦您设置了一些翻译目录,在您的模板中,您可以使用以下方法
<script type="text/javascript" src="{{ path('sli_extjs_route', { locale: 'fr' }) }}"></script>
或以下方法
<script type="text/javascript"> {{ render(url('sli_extjs_route', { locale: 'fr' })) }}} </script>
来加载它们。这两个示例之间的唯一区别是,在第二个示例中,由扩展包生成的 JavaScript 代码将被嵌入到模板中。
如果您需要更改用于生成 extjs-localization 代码的 URL,则可以覆盖服务容器配置参数 sli_ext_js_localization.route
的值。
安装
将此依赖项添加到您的 composer.json 中
"sergeil/extjslocalization-bundle": "dev-develop"
更新您的 AppKernel 类并添加以下内容
new \Sli\ExtJsLocalizationBundle\SliExtJsLocalizationBundle(),
许可
此扩展包受 MIT 许可证的保护。请参阅扩展包中的完整许可证:Resources/meta/LICENSE