Angular - Internationalisation
AngularJs Meetup South London Collection | this article
Internationalisation using angular-translate
Internationalisation cover many topics. In this protip I will provide a basic skeleton to get started with angular-translate. Features shown in this protip:
- provide different languages using json objects (language table)
- language files will be loaded asynchronously using angular-translate extension *StaticFilesLoader*
- there will be a fallback language if a key is not found using the current language
- we will use a dropdown to let the user change the language
A working code is included at the end.
Setup
angular.module("myapp", ['pascalprecht.translate'])
.config(function ($translateProvider) {
//default language
$translateProvider.preferredLanguage('en');
//fallback language if entry is not found in current language
$translateProvider.fallbackLanguage('es');
//load language entries from files
$translateProvider.useStaticFilesLoader({
prefix: '', //relative path Eg: /languages/
suffix: '.json' //file extension
});
})
Usages
Below you can see usage for the attribute directive and filter. Within a controller, you can use the $translate service.
<h1 translate="title"></h1>
<h1>{{title | translate}}</h1>
Language Selection
Below snippets for the language dropdown and controller.
<!-- html code -->
<select ng-model="selectedLanguage" ng-change="changeLanguage()">
<option value="en" translate="global_language_en"></option>
<option value="es" translate="global_language_es"></option>
</select>
//controller
.controller("Controller", function($scope, $translate) {
//variable to store selected language
$scope.selectedLanguage = $translate.proposedLanguage(); //default
$scope.changeLanguage = function () {
//use parameter needs to be part of a known locale Eg: en-UK, en, etc
$translate.use($scope.selectedLanguage);
};
});
Resources
Demo code: link
Written by gerardsans
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#I18n
Authors
Did you know?
Angular apps often share the page with analytics and payment scripts that are not Angular modules. Those scripts execute on the same origin as the framework.
Security insights from Cside
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#