Как правильно обрабатывать отсутствующие файлы перевода при использовании статического загрузчика файлов AngularJS? - PullRequest
0 голосов
/ 22 января 2019

Если в вашем определении useStaticFilesLoader есть несколько правил, и одно из них является отсутствующей папкой, угловой перевод не будет выполнен, даже если переводы, содержащиеся в отсутствующих файлах, не используются.

Например, я заменил фактическое имя папки prompts на неправильное foo имя. Если вы восстановите правильное имя папки, все работает нормально.

$translateProvider.useStaticFilesLoader({
    files: [{
      prefix: 'lang_',
      suffix: '.json'
    }, {
      prefix: 'foo/lang_',
      suffix: '.json'
    }]
  });

Пример Plunk

Есть ли способ игнорировать отсутствующий файл и продолжать использовать другие файлы?

1 Ответ

0 голосов
/ 23 января 2019

Возможное решение - использовать пользовательский загрузчик вместо стандартного статического загрузчика.

app.factory('translationLoader', function ($q, $http) {
  return function (options) {
    var deferred = $q.defer(),
      translations;

    $http.get('lang_' options.key + '.json')
      .then(function (res) {
        translations = res.data;

        $http.get('subfolder/lang_' + options.key + '.json')
          .then(function (res) {
            translations = translations.concat(res.data);
          }, function () {
            deferred.resolve(translations);
          })
          .finally(function () {
            deferred.resolve(translations);
          });
      }, function () {
        deferred.reject(options.key);
      });

    return deferred.promise;
  };
})
.config([
  '$translateProvider',
  function ($translateProvider) {
    $translateProvider
      .useSanitizeValueStrategy(null)
      .useLoader('translationLoader');
  }
]);
...