如何检查字符串是否具有翻译值?我正在使用AngularJS和AngularTranslate.
我只想显示一个已翻译过的值.如果没有可用的翻译,Angular Translate将显示未翻译的字符串.
我开始这样做了:
<div ng-if="question.text | translate != question.text">{{ question.text | translate }}</div>
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为比较发生在翻译过滤器完成它的工作之前.(至少我认为这是发生的事情).
我最终做的是:
.filter('isTranslated', function(){
return function(translatedVal, originalVal){
return (translatedVal === originalVal) ? false : true;
}
Run Code Online (Sandbox Code Playgroud)
})
<div ng-if="question.text | translate | isTranslated:question.text">{{ question.text | translate }}</div>
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我想知道是否有更好的方法这样做?
我正在使用angular-translate来翻译我的Angular应用程序.到目前为止这种方法运作良好.
现在我要求用另一种语言翻译页面的某些部分而不是页面的其他部分.
特别:
页面的shell(导航,标题等)应该
根据我用`$ translate.use(lang)设置的语言进行翻译.
某些内容仅以特定语言提供.因此
,显示该内容的页面部分应
转换为与内容匹配的语言.
例:
<!--v this should be English -->
<div class="alert alert-info alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
<strong translate>ALERT</strong>
</div>
<!--^ this should be English -->
<div class="panel panel-default">
<!--v this should be English -->
<div class="panel-heading">
<h3 class="panel-title" translate>TITLE</h3>
</div>
<!--^ this should be English -->
<!--v this should be German-->
<div class="panel-body">
<label class="control-label" translate="DESCRIPTION" translate-values="{ p0: someParameter }"></label>
[...]
</div>
<!--^ this should be German-->
</div>
Run Code Online (Sandbox Code Playgroud)
此外,我需要在转换机制中进行 …
我试图在角度站点上实现Recaptcha V2.
我正在使用角度翻译,我不知道如何使用正确的语言重新生成reCaptcha对象 $scope
有什么办法吗?或使用正确的lang重新加载对象的过程?
谢谢
使用AngularJS和angular-translate我试图在翻译文本中插入日期作为参数.
翻译包记录了基本任务:
<p>{{ 'MyText' | translate:{myDate:someControllerDate} }}</p>
Run Code Online (Sandbox Code Playgroud)
在本地化的json文件中使用它:
(english)'MyText': 'This is the date: {{myDate}}.'
(danish) 'MyText': 'Dette {{myDate}} er datoen.'
Run Code Online (Sandbox Code Playgroud)
这给了我:
(英文)这是日期:2015-04-29T00:00:00.
(丹麦语)Dette 2015-04-29T00:00:00 er datoen.
问题: 我想格式化日期以匹配语言(或文化,但现在语言将足够好).
期望的结果是:
(英文)这是日期:2015年4月29日.
(丹麦语)Dette 29-04-2015 er datoen.
我希望在这些方面有一个语法:
(english)'MyText': 'This is the date: {{myDate:MM-dd-yyyy}}.'
(danish) 'MyText': Dette {{myDate:dd-MM-yyyy}} er datoen.'
Run Code Online (Sandbox Code Playgroud)
也许:
<p>{{ 'MyText' | translate:{{myDate:someControllerDate | translate:'MyDateFormat'}} }}</p>
Run Code Online (Sandbox Code Playgroud)
同
(english)'MyDateFormat': 'MM-dd-yyyy'
(danish) 'MyDateFormat': 'dd-MM-yyyy'
Run Code Online (Sandbox Code Playgroud)
有没有办法实现所需的结果,最好不必格式化控制器内的日期(保持逻辑和视图分离)?
使用Angular Translate和$ translate.instant()方法,我构建了AngularJS的select组件,并在语言之间自动切换:
<translated-select
elements="$ctrl.values"
current-value="$ctrl.value"
on-change="$ctrl.setValue(value)"
></translated-select>
{{ $ctrl.value }}
<hr>
<button ng-click="$ctrl.switchToPolish()">
Switch to polish
</button>
<button ng-click="$ctrl.switchToEnglish()">
Switch to english
</button>
Run Code Online (Sandbox Code Playgroud)
正如您在Plunker上看到的那样:Angular JS选择自动翻译.问题是它select在我选择第二个选项之前将s选项显示为undefined.然后一切正常,我可以在英语和波兰语的翻译选项之间切换.我甚至尝试用$onChanges挂钩等待第一次更改,如果发生$digest了更改,请运行$timeout:
this.$onChanges = function (changes) {
if (changes.elements) {
$timeout(function () {
this.values = changes.elements.currentValue;
}.bind(this));
}
if (changes.currentValue) {
$timeout(function () {
this.value = changes.currentValue.currentValue;
}.bind(this));
}
}
Run Code Online (Sandbox Code Playgroud)
但是一次又一次,我必须在select中选择第二个选项才能使其正常工作.我错过了什么吗?如果有人会帮助我,我将不胜感激,谢谢你.
javascript internationalization angularjs angular-translate angularjs-components
对于Java Property Files,我们在Intellij中拥有很好的Resource-Bundle Editor支持.
我的问题:是否有插件或设置对angular-translate使用的JSON属性文件进行相同的并排编辑?
它们基本上是键值文件,文件的命名非常接近("locale-en.json","locale-fr.json").
In angular translation service, interpolating params in normal translation json works well. But in nested json, interpolating params is not working.
My JSON:
"SampleField": {
"SampleValidation": {
"MIN": "Value should not be less than {{min}}",
"MAX": "Value should not be more than {{max}}",
}
}
Run Code Online (Sandbox Code Playgroud)
My Angular Code:
ngOnInit(): void {
this.translateService.get('SampleField.Validation', {
// using hard coded value just as a sample
min: 0, max: 2000
}).subscribe(translation => {
console.log(translation);
});
}
Run Code Online (Sandbox Code Playgroud)
Expected Output:
{
MIN: "Value should not be …Run Code Online (Sandbox Code Playgroud) 来自Angular翻译文档:
$translate(translationId[, interpolateParams], interpolationId);
interpolationId参数的目的是什么,你能举个例子吗?
在我的应用程序中,我正在使用 angular-translate
https://github.com/angular-translate/angular-translate
翻译我的内容.
而且在我看来,我有这样的日期格式化程序:
{{article.CreatedAt | date:'dd MMM yyyy':'UTC'}}
Run Code Online (Sandbox Code Playgroud)
但是当我设置波兰语,俄语(或任何其他语言,非英语) - 我的月名仍然是英语.
我怎样才能翻译它们(如果没有动力和其他插件可以实现,那将会很棒)?
我正在使用 Angular 1.x,它是 Angular Translate 模块。最近,我将所有翻译绑定从双向切换为一次性。一切都工作正常,直到有一天,然而,我注意到有时如果我开始刷新页面,翻译实际上并没有被翻译。
例子:
{{ ::'MyTranslationKey' | translate }}
Run Code Online (Sandbox Code Playgroud)
90% 的情况下结果是正确的。然而,在另外 10% 中,渲染结果是:
MyTranslationKey
Run Code Online (Sandbox Code Playgroud)
这是什么原因?我该如何解决?
编辑:
对于 ng-if、ng-repeat 或指令内部的元素,例如当它们位于子作用域内时,不会发生这种情况。