AngularJS рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХрд╛ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг

рдЫрд╡рд┐

AngularJS рдкрд░ рдПрдХ рдмрд╣реБрднрд╛рд╖реА рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп , рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рддрд░рд╣ рдЕрдиреБрд╡рд╛рдж рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЖрдЬ рдореИрдВ рдЙрди рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЬрд┐рд╕реЗ рдпрд╣ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реЗрд╡рд╛ рд╣реИ рдЬреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд░рд▓ рд╢рдмреНрджрдХреЛрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред

/** * @param {Settings} Settings * @constructor */ function Language(Settings) { this.Settings = Settings; } Language.$inject = ['Settings']; app.service('Language', Language); /** * @param {String} string * @returns {String} */ Language.prototype.translate = function(string) { var translation = __lang[this.Settings.getValue('lang')]; if (typeof translation[string] !== 'undefined') { string = translation[string]; } return string; }; 


AngularJS рдХреЛ рдЬрд╛рдирдиреЗ рдХреЗ рдмрд╛рдж, рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ рдЬреЛ рдорди рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд╡рд╣ рд╣реИ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд╕рд╛рде "рдлрд╝рд╛рд░реНрдо рдХреЗ" рдкрд░ "рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП":

 <span>{{ 'some_english_string' | translate }}</span> 

рд▓реЗрдХрд┐рди рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ:
- рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреНрд░рддреНрдпреЗрдХ $ рдкрдЪ рдЪрдХреНрд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдЕрднреА рднреА рдмрдврд╝ рдЬрд╛рддреА рд╣реИ рдФрд░ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЬрдЯрд┐рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИ, рддреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдкреГрд╖реНрда рдкрд░ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд▓рд╛рдЗрдиреЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ рдФрд░ / рдпрд╛ рдЖрдкрдХрд╛ рдЕрдиреБрд╡рд╛рдж рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗрд╡рд▓ рд╢рдмреНрджрдХреЛрд╖ рд╕реЗ рдПрдХ рдкрдВрдХреНрддрд┐ рд▓рдЧрд╛рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред - рддрдм рдЙрддреНрдкрд╛рджрдХрддрд╛ рдШрдЯ рдЬрд╛рдПрдЧреАред
- рджреВрд╕рд░реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрдгреАрдп рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдм рдЗрддрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдХрд╣рддреЗ рд╣реИрдВ, рдХреБрдЫ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рдЕрдВрджрд░, рдЬреЛ рд╕реНрд╡рдпрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреНрдп рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдЕрдВрджрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЗрд╕ рддрд░рд╣ рдХреЗ рддрд╛рд░реЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд┐рд▓реНрдЯрд░ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдпреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдард┐рдирд╛рдЗрдпрд╛рдВ рд╣реИрдВред

рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдЬреЛ рд╡реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ, рд╡рд╣ рд╣реИ рд╕рд░реНрд╡рд░ рдкрд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдУрд░ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдлреЙрд░реНрдо рдХреА рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдкреНрд░рддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ some_partial_en.html , some_partial_ru.html ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдкрдХреЛ рднрд╛рд╖рд╛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрд░реА рдЕрдВрддрд┐рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдиреЗ рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реЗрд╡рд╛ рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛, рдФрд░ рдмреИрдХрдПрдВрдб рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред

рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ - рдЕрд░реНрдерд╛рддреН, рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди AngularJS рдХреЗ рд╕рд╛рде рдирд╣реАрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рд▓реЛ-рдбреИрд╢ / рдЕрдВрдбрд░рд╕реНрдХреЛрд░рдЬ рд╕реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлреЙрд░реНрдо рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 <span><%= t('some_english_string') %></span> 

рдкреНрд▓рд╕ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдлрд╝реАрдб рдХреЗ рдЕрдВрджрд░ рдХреЛрдгреАрдп рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛

 __lang.ru = { "some_english_string": "    {{string.number}}" }; 

рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрд╕ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдЕрдиреНрдп рдХреЛрдгреАрдп рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ:

 <div class="input-text-right"> <input type="text" my-num-format="00000.00" my-validate="[ { type: 'notGreaterThen', compareTo: 'somecondition()', message: '<%= t('some_validation_error_message') %>' } ]" ng-model="model.value"> </div> 


рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреА рднрд╛рд╖рд╛ рд╕реЗрд╡рд╛ рдореЗрдВ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВрдЧреЗ:

 ..... /** * @param {String} template * @returns {String} */ Language.prototype.translateTemplate = function(template) { //     this.translate()      Lo-Dash  t() return _.template(template, { t: angular.bind(this, this.translate) }); }; 


рдЕрдм рд╣рдореЗрдВ рдХреЛрдгреАрдп рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреИрдЯрд░реНрди рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред AngularJS рдореЗрдВ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрд▓рдЧ рд╕реЗрд╡рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд╣рд╛рдВ рднреА рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ (рдорд╛рд░реНрдЧ, ngInclude рдирд┐рд░реНрджреЗрд╢ рдЖрджрд┐) - рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП $ templateCache рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рд╣рдо рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

 //  angular-    ,       app.factory('$templateCache', [ '$cacheFactory', 'Language', function($cacheFactory, Language) { /** * @constructor */ function MyTemplateCache() { /** * @param {String} key * @param {*} value */ this.put = function(key, value) { //   -  promise-,    $http if (typeof value.then !== 'undefined') { //    promise-,       value = value.then(function(response) { response.data = Language.translateTemplate(response.data); return response; }); } //   -  -,  angular      promise- $http else if (value instanceof Array) { value[1] = Language.translateTemplate(value[1]); } //   -    // ( ,        <script type="text/ng-template"></script> //   ) else if (typeof value === 'string') { value = Language.translateTemplate(value); } //    put() MyTemplateCache.prototype.put(key, value); }; } //     $templateCache MyTemplateCache.prototype = $cacheFactory('templates'); return new MyTemplateCache(); } ]); 


рдмрд╕ рдЗрддрдирд╛ рд╣реАред рдЕрдм, рдкреГрд╖реНрда рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд┐рдП рдмрд┐рдирд╛ рднрд╛рд╖рд╛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреИрд╢ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдФрд░ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЧ рдХрд╛ рдХрд╛рд░рдг рдмрдирдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛:

 $templateCache.removeAll(); $route.reload(); 

рдПрдХрдорд╛рддреНрд░ рдЯрд┐рдкреНрдкрдгреА: рдЬрдм рдЖрдк рдорд╛рд░реНрдЧ рдХреЛ рд░рд┐рдмреВрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд░рд╛рдЬреНрдп рдореЗрдВ рд╕рд╣реЗрдЬреЗ рдирд╣реАрдВ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдЖрдк рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╕рднреА рд╕реНрдХреЛрдк рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗред

Source: https://habr.com/ru/post/In191074/


All Articles