मैंने कोणीय के लिए कुछ i18n प्लगइन्स देखे हैं लेकिन मैं पहिया को फिर से आविष्कार नहीं करना चाहता हूं। i18next एक अच्छी लाइब्रेरी है और इसलिए, मैं इसका उपयोग करना चाहता हूं।कोणीय और i18next
define(['app', 'jquery', 'i18n'], function(app, $, i18n) {'use strict';
app.directive('i18n', function() {
return function($scope, elm, attrs) {
attrs.$observe('i18n', function(value) {
if ($.fn.i18n) {// for some reason, it isn't loaded quickly enough and first directives process fails
$(elm).i18n();
}
});
};
});
});
मेरी पृष्ठ पर, मैं फ्लाई पर भाषा बदल सकते हैं:
मैं एक निर्देश i18n जो सिर्फ i18n पुस्तकालय कॉल बनाया है अब
<a ng-repeat="l in languages"> <img ng-src="images/{{l.id}}.png" title="{{l.label}}" ng-click="setLanguage(l.id)" /> </a>
, अपने मुख्य नियंत्रक एचटीएमएल पर परिभाषित टैग:
define(['app', 'i18n', 'jquery'], function(app, i18n, $) {'use strict';
return app.controller('BuilderController', ['$scope', '$location',
function BuilderController($scope, $location) {
/* Catch url changes */
$scope.$watch(function() {
return $location.path();
}, function() {
$scope.setLanguage(($location.search()).lang || 'en');
});
/* Language */
$scope.languages = [{
id : "en",
label : "English"
}, {
id : "fr",
label : "Français"
}];
$scope.$watch('language', function() {
$location.search('lang', $scope.language);
i18n.init({
resGetPath : 'i18n/__lng__/__ns__.json',
lng : $scope.language,
getAsync : false,
sendMissing : true,
fallbackLng : 'en',
debug : true
});
$(document).i18n();
});
$scope.setLanguage = function(id) {
$scope.language = id;
};
}]);
});
यह कैसे काम करता है: भाषा पर दर्शक नई लोकेल के साथ i18n ऑब्जेक्ट प्रारंभ करता है डी i18n jquery एक्सटेंशन का उपयोग कर सभी डोम अपडेट करें। इस विशेष घटना के बाहर, मेरा निर्देश सिर्फ अन्य सभी कार्यों के लिए काम करता है (i18n निर्देश का उपयोग करके टेम्पलेट्स और बाद में प्रस्तुत किया जाता है)।
हालांकि यह ठीक काम कर रहा है, मुझे पता है कि मुझे नियंत्रक के अंदर डीओएम में हेरफेर नहीं करना चाहिए, लेकिन अंत में कुछ भी नहीं होता है, मुझे एक बेहतर समाधान नहीं मिला है।
आदर्श रूप से, मैं चाहता हूं कि कोणीय सभी डोम को फिर से संकलित करें, सभी निर्देशों को पार्सल अपडेट करने के लिए पार्स करें लेकिन मुझे यह नहीं पता कि यह कैसे किया जाए। मैंने $ स्कोप की कोशिश की है। $ लागू(): काम नहीं कर रहा है क्योंकि इस बिंदु पर पहले से ही डाइजेस्ट में मैंने बेहतर परिणामों के बिना स्कोप.ऑनरेडी प्लगइन का उपयोग किया है।
जाहिर है, मैं कोणीय के लिए बहुत नया हूं और यह समझना मेरे लिए काफी मुश्किल है कि चीजें कैसे काम करती हैं।