我试图让 angular-gettext 在离子中工作。有人可以解释如何做到这一点吗?目前还没有很好的解释。
1 回答
即使认为这个问题已经很老了,我最近仍然找不到太多关于如何将angular-gettext 入门指南改编为 Ionic 应用程序的信息。下面是我使用 IonicV1 和德语 (de_DE) 翻译的方法:
我<script>
在主 html 文件中添加了该部分,index.html
并将 angular 模块添加到app.run.js
.
官方指南中没有充分强调的一件事是,您可以使用 String 来注释 JS 文件中的gettextContent.getString('English text')
字符串 'English text' 将自动选择进行翻译,类似于标记有指令的标签所发生的情况translate
。
我使用了 angular-gettext-cli,因为我在 Ionic 项目中没有使用 grunt。从您的项目根目录创建一个文件夹i18n
,然后:
angular-gettext-cli --files './app/**/*.+(js|html)' --exclude '**/*.spec.js' --dest './i18n/extract.pot' --marker-name i18n
该指南完美地解释了如何使用Poedit从模板中构建.po
文件。.pot
angular-gettext-cli 帮助构建包含 Javascript 格式的所有翻译文本的 translation.js。
angular-gettext-cli --compile --files './i18n/de_DE_t.po' --dest './app/translations.js' --format javascript --module gettext
这将创建一个translations.js
包含所有翻译的文件。
6) 启用转换(不是 angular-gettext 指南的一部分)
然后我将translations.js
在上一步创建的添加到index.html
:
<script src="app/translations.js"></script>
最后通过指定要使用的语言来结束app.run.js
:
var appLanguage = window.navigator.language || window.navigator.userLanguage;
gettextCatalog.setCurrentLanguage(appLanguage);