У меня возникли проблемы с FOUC (вспышка непереведенного контента) при использовании angular-translate. Это моя установка:
.config(function ($translateProvider, defaultI18n) {
$translateProvider
.useSanitizeValueStrategy('sanitize')
.translations('en-GB', defaultI18n.en)
.useCookieStorage()
.useLoader('$translatePartialLoader', {
urlTemplate: '/{part}/{lang}.json'
})
.preferredLanguage('en-GB')
.fallbackLanguage('en-GB');
})
.run(function ($rootScope, $translate) {
$rootScope.$on('$translatePartialLoaderStructureChanged', function () {
$translate.refresh();
});
Поскольку я использую $translatePartialLoader
в каждом представлении контроллера, у меня есть:
.controller('SomeController', function ($translatePartialLoader) {
$translatePartialLoader.addPart('path-to-some-view-i18n');
})
Если я удалю $translate.refresh()
, FOUC исчезнет, но текст не обновится с учетом новой локали. Не уверен, что наличие текста в моих HTML-файлах может вызвать здесь конфликт.
Как полностью удалить FOUC, сохранив при этом корректный перевод приложения?
Должен ли я удалить весь текст из файлов HTML?
Заранее спасибо.
translate-cloak
может быть полезна в вашем случае. Для дальнейшего чтения: здесь и здесь. 08.11.2016