gpt4 book ai didi

javascript - angularjs-gettext : translate text in placeholder

转载 作者:行者123 更新时间:2023-11-29 10:12:28 26 4
gpt4 key购买 nike

我正在使用插件 angular-gettext但我不知道如何翻译占位符。这有效:

<legend translate>Lower secondary studies</legend>

当我运行 grunt 时,字符串被添加到 .POT 文件中,我可以将它导出到 en.po ,...。

但我还有以下输入字段:

<input ng-model="application.lwsdegreeTitle" type="text" placeholder="Degree title" name="lwsappdegreetitle" id="lwsappdegreetitle" />

如您所见,我有一个带有文本的占位符:Degree title。我已尝试将已翻译的属性添加到输入字段,但字符串未插入到 .pot 文件中。我还尝试了以下方法:

placeholder="{{ Degree title}}" 但没有成功。我该如何解决这个问题?

最佳答案

从优秀的文档中复制粘贴(不要太感谢我 ;-)

使用自定义注释

如果您发现自己必须一直翻译相同的属性,您可以告诉 gettext 将其作为翻译。之后由您决定如何翻译。例如,如果您要翻译每个输入的占位符属性,您可能会做类似的事情:

<input placeholder="{{ 'Input something here' | translate }}">

如果你想跳过必须向每个输入添加数据绑定(bind)和翻译过滤器,你可以在你的 Grunt 配置中指定占位符作为一个属性:

grunt.initConfig({   nggettext_extract: {
pot: {
options: {
attributes: ['placeholder']
},
files: {
'po/template.pot': ['src/views/*.html']
}
}, }, })

之后您需要实现一个指令来转换占位符属性。这是一个简单的例子:

angular.module('myModule').directive('placeholder', ['gettextCatalog',
function(gettextCatalog){ return {
restrict: 'A',
link: function(scope, element, attrs){
var translatedPlaceholder = gettextCatalog.getString(attrs.placeholder);
element.attr('placeholder', translatedPlaceholder);
} }; }]);

最后您可以像往常一样继续使用占位符属性:

<input placeholder="Input something here">

关于javascript - angularjs-gettext : translate text in placeholder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30670536/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com