-
-
Notifications
You must be signed in to change notification settings - Fork 16
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
Fallback strings are not formatted using the target locale. #67
Comments
The language code in the resources is important. So, this works: i18next.use(ICU).init({
debug: true,
lng: "fr",
fallbackLng: "fr-CA",
resources: {
"fr-CA": {
translation: {
short_date: "fr-CA: {date, date, short}"
}
},
"en-CA": {
translation: {
short_date: "en-CA: {date, date, short}"
}
}
}
});
i18next.t("short_date", { date: new Date(2000, 1, 29) }) // fr-CA: 00-02-29
i18next.t("short_date", { date: new Date(2000, 1, 29), lng: 'en-CA' }) // en-CA: 00-02-29 |
Hello @adrai, import i18next from 'i18next';
i18next.init({
lng: "fr-CA",
resources: {
en: {
translations: {
date: "{{date, datetime}}"
},
},
},
});
console.log(i18next.t("date", { date: new Date(2000, 1, 29) })); // 2000-02-29 (Which is the fr-CA value using Intl.DateTimeFormat.) import i18next from 'i18next';
i18next.init({
lng: "fr",
resources: {
en: {
translations: {
date: "{{date, datetime}}"
},
},
},
});
console.log(i18next.t("date", { date: new Date(2000, 1, 29) })); // 29/02/2000 (Which is the fr-FR value using Intl.DateTimeFormat.) |
Can you try with i18next v23.4.6 ? |
wrong...format inside gets done with the language i18next is able to resolve a resource -> if it resolves the |
It solved the issue, thanks! |
23.4.6 is breaking change and wrong -> rollback is needed |
While I agree that it is a breaking change, I don’t understand why it is wrong since it’s the default behavior of i18next? import i18next from 'i18next'; //v23.4.5
i18next.init({
lng: "de-DE",
resources: {
en: {
translations: {
date: "Latest tetracentennial leap day: {{date, datetime}}",
},
},
},
});
console.log(i18next.t("date", { date: new Date(2000, 1, 29) })); // Latest tetracentennial leap day: 29.2.2000 |
then the default behaviour might be wrong - formatting and language should be consistent...or do you like german strings with american dates? |
Then it’s no use to follow this principle since those format might not be valid. |
in that case we would have to decide on locale for formatting depending if it is a fallback to non regional variant...so you're right...both options are currently wrong depending on the fallback comes from same language or not |
As a compromise, I would be happy with that solution. |
so as change already made we keep current change in hope we did not open a box ;) |
ok, let's close this issue now ;-) |
🐛 Bug Report
Any translations that uses fallback strings will also use the fallback locale to format them instead of the target locale.
Using
{{date, datetime}}
without i18next-icu the fallback would still use the target locale to format the date.To Reproduce
Fallback to en
Fallback to fr
Expected behavior
Your Environment
The text was updated successfully, but these errors were encountered: