How do you check if a string has a translated value? I'm using AngularJS and AngularTranslate.
I only want to display a value if it has a been translated. Angular Translate will show the untranslated string if no translation is available.
I started off doing this:
<div ng-if="question.text | translate != question.text">{{ question.text | translate }}</div>
But this doesn't work as the comparison happens before the translate filter has done it's work. (At least I think that is what happens).
What I ended up doing is:
.filter('isTranslated', function(){
return function(translatedVal, originalVal){
return (translatedVal === originalVal) ? false : true;
}
})
<div ng-if="question.text | translate | isTranslated:question.text">{{ question.text | translate }}</div>
This works fine but I am wondering if there is a better way of doing this?
angular-translate is an AngularJS module that provides filters and directives, along with the ability to load i18n data asynchronously. It supports pluralization through MessageFormat , and is designed to be highly extensible and configurable.
AngularJS supports i18n/l10n for date, number and currency filters. Localizable pluralization is supported via the ngPluralize directive. Additionally, you can use MessageFormat extensions to $interpolate for localizable pluralization and gender support in all interpolations via the ngMessageFormat module.
AngularJS supports inbuilt internationalization for three types of filters currency, date and numbers. We only need to incorporate corresponding js according to locale of the country. By default it handles the locale of the browser.
Angular-translate also provides a service, so you could build your own filter around it:
.filter('myTranslate', function($translate){
return function(key){
var translation = $translate(key);
if(translation==key) {
return "";
} else {
return translation;
}
}
This will make your HTML much cleaner:
<div>{{ question.text | myTranslate }}</div>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With