ngx translate не работает на устройстве iOS

У меня есть проект ionic 3, и я хочу использовать ngx translate. Он работает в браузере и симуляторе iOS, но не на реальном устройстве (проверено на iPhone SE, iOS 11.1).

app.module.ts

import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
import { HttpClient, HttpClientModule } from '@angular/common/http';

export function HttpLoaderFactory (http: HttpClient) {
    return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}

@NgModule({
    [...],
    imports: [
        [...]
        HttpClientModule,
        TranslateModule.forRoot({
            loader: {
                provide: TranslateLoader,
                useFactory: (HttpLoaderFactory),
                deps: [HttpClient]
            }
        })
    ],
    [...]
})
export class AppModule { }

Мои файлы здесь:

src / assets / i18n / DE.json

src / assets / i18n / EN.json

Я перевожу это так:

<ion-title translate>
    {{ 'LOGIN.HEADER' | translate }}
</ion-title>

Кто-нибудь знает, почему на девайсе не переводится?


person chocolate cake    schedule 08.02.2018    source источник
comment
Вы используете WKWebView?   -  person sebaferreras    schedule 08.02.2018
comment
@sebaferreras: я использую Ionic WebView. Думаю, это WKWebView.   -  person chocolate cake    schedule 12.02.2018
comment
Я попытался изменить его на UIWebView, добавив <preference name="CordovaWebViewEngine" value="CDVUIWebViewEngine" /> в мой config.xml, но это не решило проблему.   -  person chocolate cake    schedule 12.02.2018
comment
Прочтите этот комментарий и дайте мне знать, решит ли это проблему. Кстати, вы должны оставить WkWebView, так как UiWebView устареет   -  person sebaferreras    schedule 12.02.2018
comment
Спасибо за ответ. К сожалению, я получил сообщение об ошибке .map не существует для типа Observable<string>. Так что я не мог это проверить. Я безуспешно пытался его переписать. Затем я просто написал return this.http.get(./assets/i18n/EN.json); С этого момента он работал, а также с моей старой реализацией (+ я изменил имя языкового файла на нижний регистр (en.json, de.json), что я уже пробовал столько раз раньше). Итак, я действительно не знаю почему, но, похоже, теперь это работает. Спасибо за вашу помощь!   -  person chocolate cake    schedule 12.02.2018
comment
Хммм, странно ... но приятно слышать, что вы решили проблему :)   -  person sebaferreras    schedule 12.02.2018
comment
@chocolatecake, где ты это написал? Я имею в виду return this.http.get(./assets/i18n/EN.json);. Может быть, это тоже поможет мне   -  person Alexey Grinko    schedule 21.01.2020
comment
Я не уверен, но это может быть строка кода в части 3 комментария Себаферрераса. Я очистил этот код в своем проекте, потому что старый способ работал волшебным образом. Может быть, полная очистка и восстановление тоже подойдут? Если проблема возникает при смене языка, попробуйте написать <ion-title translate>LOGIN.HEADER</ion-title> без разрывов строки. (Только что я видел, что использовал дубликат перевода. Одного из них должно быть достаточно.) Надеюсь, это поможет!   -  person chocolate cake    schedule 22.01.2020
comment
попробуйте использовать github.com/TheMattRay/cordova-plugin-wkwebviewxhrfix   -  person kumar    schedule 28.09.2020


Ответы (1)


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

person p90n33r    schedule 02.07.2020