Миграция на angular v9. i18n критические изменения - PullRequest
3 голосов
/ 06 февраля 2020

Я мигрирую проект Angular с 8.2.14 на 9.0.0-r c .14 . Используя i18n для локализации.

Я следовал руководству здесь https://update.angular.io/#8 .2: 9.0 и чувствовал, что все прошло хорошо. После обновления я пытаюсь запустить проект, но

ng serve приводит к следующей ошибке:

An unhandled exception occurred: An i18n locale ('en-US') cannot both be a source locale and provide a translation.
See "...my local logs path...\angular-errors.log" for further details.

В angular-errors.log ошибка более детальна:

[error] Error: An i18n locale ('en-US') cannot both be a source locale and provide a translation.
    at createI18nOptions (...my project path...\node_modules\@angular-devkit\build-angular\src\utils\i18n-options.js:69:23)
    at Object.configureI18nBuild (...my project path...\node_modules\@angular-devkit\build-angular\src\utils\i18n-options.js:100:18)
    at process._tickCallback (internal/process/next_tick.js:68:7)

Я получил более подробную информацию об ошибке: открыв @angular-devkit\build-angular\src\utils\i18n-options.js:69:23, я вижу следующие логи c:

if (locale === i18n.sourceLocale) {
    throw new Error(`An i18n locale ('${locale}') cannot both be a source locale and provide a translation.`);
}

У меня есть en-US локаль, и я хочу продолжать использовать его как перевод и источник. Итак, как исправить эту ошибку?

Ответы [ 2 ]

2 голосов
/ 05 марта 2020

Я предполагаю, что ваш язык по умолчанию отличается от английского sh. Таким образом, вы должны изменить исходный код по умолчанию 'sourceLocale', как показано в официальных документах .

Так что это будет выглядеть так:

"projects": {
    "AngularApp": {
        "i18n": {
            "sourceLocale": "he-IL",
            "locales": {
                "en-US": "src/locale/messages.en.xlf"
            }
        },
...
0 голосов
/ 28 февраля 2020

просто откройте файл angular. json и удалите запись в локалях, которые вы установили в "sourceLocale". После обновления локали сохраняют только перевод, а не язык, который вы используете в исходном коде.

...