programing

번역 문자열을 각번역으로 가장 잘 구성하는 방법은?

subpage 2023. 10. 11. 20:42
반응형

번역 문자열을 각번역으로 가장 잘 구성하는 방법은?

저는 다소 큰 Angular 프로젝트에서 Angular-translate를 사용하고 있습니다.프로젝트를 관리하기 위해 여러 모듈로 분할하고 있지만 모듈당 번역 문자열을 분할할 수 없습니다.

예를 들어, 저는 모듈 A와 B를 가지고 있는데, 여기서 B는 A의 서브 모듈입니다.모듈 A에서 다루는 HTML과 관련된 문자열이 있는데 '/json/localization/A/en.json'에 있습니다.마찬가지로 내가 '/json/localization/B/en.json'에 넣는 B와 관련된 문자열이 있습니다.먼저 각번역의 $translationProvider를 사용하여 B 모듈에 B의 en.json을 로드합니다.그런 다음 $translationProvider를 사용하여 모듈 A의 en.json을 로드합니다.문제는 A의 문자열을 로드하는 것이 B의 문자열을 덮어쓰게 되어 손실된다는 것입니다.

각 변환을 사용하면 재정의하지 않고 모듈당 문자열을 로드할 수 있는 방법이 있습니까? 아니면 부모 모듈이 단일 en.json에서 모든 문자열을 로드해야 합니까?

다음은 번역 문자열을 로드하는 방법의 예(커피 스크립트)입니다.

my_module.config(['$translateProvider', ($translateProvider) ->
  $translateProvider.useStaticFilesLoader
    prefix: '/json/localization/A/'
    suffix: '.json'

  $translateProvider.preferredLanguage 'en'
])

angular-translate는 부분 언어 파일의 비동기 로드를 지원합니다.모든 부분은 언어당 하나의 사전으로 병합됩니다.공식 문서는 여기에서 확인할 수 있습니다: http://angular-translate.github.io/docs/ #/guide/12_ asynchronous-loading

모듈화된 언어 파일을 가리키는 URL 템플릿 적용을 지원합니다.

$translateProvider.useLoader('$translatePartialLoader', {  
  urlTemplate: '/i18n/{part}/{lang}.json'
});

컨트롤러 내에서 언어 모듈을 추가하고 다음과 같은 데이터 바인딩을 새로 고칠 수 있습니다.

angular.module('contact')
  .controller('ContactCtrl',
    function ($scope, $translatePartialLoader, $translate) {  
      $translatePartialLoader.addPart('contact');
      $translate.refresh();
    });

물론 부분을 로드하는 것은 경로의 해결 단계에서도 적용될 수 있습니다.

또는 사용자 지정 로더 기능을 직접 구축하는 방법도 검토할 수 있습니다.http://angular-translate.github.io/docs/ #/가이드/13_맞춤 로더

이를 통해 필요한 언어 모듈을 한 번에 결합하는 데 필요한 모든 유연성을 제공합니다.예를 들어 다음과 같은 작업을 수행할 수 있습니다.

app.factory('customLoader', function ($http, $q) {
  // return loaderFn
  return function (options) {
    var deferred = $q.defer(); 
    var data = {
      'TEXT': 'Fooooo'
    };
    $http.get('nls/moduleA/en.json').success(function(moduleA){
      angular.extend(data, moduleA);
      $http.get('nls/moduleB/en.json').success(function(moduleB){
        angular.extend(data, moduleB);
        deferred.resolve(data);
      });
    });
    return deferred.promise;  
  };
});

언급URL : https://stackoverflow.com/questions/24744774/how-to-best-organize-translation-strings-in-angular-translate

반응형