-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
i18n: Namespacing prüfen und implementieren #5572
Comments
@laske185 das Ticket ist für die BFIT sehr interessant! |
@deleonio wir verwenden auch i18next und bekommen seit dem Update auf 1.7.4 den Fehler: 'TypeError: Cannot redefine property: I18n'. Hast du einen schnellen Workaround für uns, womit wir diesen Fehler umgehen können, damit wir nicht auf eine alte Version zurückrollen oder auf den Fix warten müssen? |
Hallo @Chrisdo82, Ich habe das Ticket hochpriorisiert. @laske185 kannst du bitte zeitnah danach schauen? Danke |
Hallo @Chrisdo82, da KoliBri auch i18next nutzt, kann es nun vorkommen, dass i18next bereits durch uns initialisiert ist. In dem Fall dürft ihr nicht auch das Vermutlich müsstet ihr es analog machen, wie wir es in KoliBri umgesetzt haben: import i18next from 'i18next';
const init = () => {
if (!i18next.isInitialized) {
await i18next.init({
ns: [I18nextService.namespace],
lng: "de",
});
} else {
await i18next.loadNamespaces(I18nextService.namespace);
}
i18next.addResourceBundle(lng, I18nextService.namespace, translationMap, true);
} Mit dem PullRequests nutzt KoliBri dann nicht mehr den Standard-namespace „translations“, sondern seinen eigenen mit dem Namen „KoliBri“. Die Änderung wird in Version 1.7.x und 2.0 sein. |
Danke, wann kann ich denn mit dem nächsten Release in dem das drin sein wird rechnen? |
Hallo @laske185 , Ein Debugging hat gezeigt, dass der Konflikt an folgender Stelle in der if (STORE.I18n === undefined) {
const i18n = await I18nextService.createInstance(options?.translation?.name ?? 'de', options?.translations);
// Throws "TypeError: Cannot redefine property: I18n"
Object.defineProperty(STORE, 'I18n', {
value: i18n,
writable: false,
});
} Nach der Ausführung der Methode Wir führen intern weitere Untersuchungen durch, ob das Problem vielleicht auch anderweitig umgangen werden kann. |
Noch als kleine Randnotiz: bei uns tritt der Fehler den ich oben beschrieben habe nur auf, wenn ich den Cache nicht deaktiviere. Sobald der Cache aber deaktiviert wurde, kann man den Fehler nicht mehr nachstellen. |
@nefarius4schmu habt ihr denn rausgefunden ob das Problem umgangen werden kann? |
Release 1.7.6 ist draußen. |
Hallo zusammen , Ich konnte das Problem testweise umgehen, indem ich lokal die Sourcen der KoliBri-Library angepasst und die globale Variable "I18n" in "I18nextService" umbenannt habe, sodass sie folglich unter Object.defineProperty(STORE, 'I18nextService', {
value: i18n,
writable: false,
}); (und entsprechend dazugehörige Änderungen im Code) Danach trat der Fehler nicht mehr auf. Weder im Build oder mit Cache enabled/disabled. @deleonio |
Vielen Dank für den Input @nefarius4schmu, wir nehmen das mit. Zudem überlegen wir i18next zu einer peerDep zu machen. |
Weiterführende Aktivitäten besprechen. |
In neuem Ticket weiterführen. Namespaces sind nicht das Problem. |
Zur Zeit wird kein Namespacing verwendet, was zu Problemen führen könnte, wenn es mehrere aktive Anwendungen auf einer Seite gibt, die i18next verwenden.
Prüfen, ob es hier Sinn Ergeben würde, das i18next Namspacing-Feature zu verwenden, und ggf. implementieren.
The text was updated successfully, but these errors were encountered: