Совет о наилучшем способе присвоения значения из .json переменной $ scope.variable

0

Мой текущий код очень неэффективен.

  • Создайте функцию, которая вручную присваивает значение переменной для каждого "элемента", который мне нужно перевести
  • Повторите для каждого каждого языка

Я хотел бы сделать следующее:

  • Создайте функцию только для разработки, которая:
    • Создает список элементов
    • Направьте этот список в файл.json для каждого языка, о котором функция будет знать, что я поддерживаю (и созданный таким образом, я просто ее заполню)
  • Вручную отредактируйте каждый.json файл
  • Извлеките искомый файл.json, вызываемый функцией, и используйте его для заполнения моей $scope.variable

Прежде чем я попытаюсь достичь этого, есть ли лучший способ справиться с тем, что мне нужно? Если нет, можете ли вы предоставить стартовый бал? Чтобы быть конкретным, я не знаю, как создать.json таким образом, мне нужно просто заполнить его значениями.

Мой текущий код, который я хочу улучшить, заключается в следующем:

app.controller('languagesCtrl', function($scope) {
    $scope.lang = window.navigator.language || window.navigator.userLanguage;
    $scope.setItalian = function() {
        $scope.english = 'Inglese';
        $scope.italian = 'Italiano';
        $scope.cart = 'Carrello';
        $scope.menu = 'Menu';
        $scope.cta = 'Nuova collezione strumenti';
    };
    $scope.setEnglish = function() {
        $scope.english = 'English';
        $scope.italian = 'Italian';
        $scope.cart = 'Cart';
        $scope.menu = 'Menu';
        $scope.cta = 'Check out new products!';
    };
    if ($scope.lang === 'it' || $scope.lang === 'it-it' || $scope.lang === 'it-IT') {
        $scope.setItalian();
    } else {
        $scope.setEnglish();
    }
    $scope.setLanguage = function(changeLang) {
        if (changeLang === 'en') {
            $scope.setEnglish();
        } else if (changeLang === 'it') {
            $scope.setItalian();
        }
    };
});
  • 1
    Совет: не изобретай велосипед. Используйте i18n с AngularJS. Локализация - серьезная проблема, и для этого есть хорошие решения.
  • 0
    +1 к @KirillSlatin, также проверьте github.com/angular-translate/angular-translate лучший в своем роде плагин i18n
Показать ещё 5 комментариев

1 ответ

0
Лучший ответ

если вы не хотите использовать угловой перевод, вы можете использовать что-то вроде этого:

app.controller('languagesCtrl', function($scope, $http) {
    $scope.lang = window.navigator.language || window.navigator.userLanguage;
    $scope.message = {}

    if ($scope.lang === 'it' || $scope.lang === 'it-it' || $scope.lang === 'it-IT') {
        $scope.setLanguage('it');
    } else {
        $scope.setLanguage('us');
    }
    $scope.setLanguage = function(lang) {
        $http.get('language/' + lang + '.json').then(function(result) {
            $scope.message  = result.data;
        });
    };
});
  • 0
    Сейчас я не могу поиграть с твоим кодом, но, похоже, то, о чем я просил, спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню