Git Product home page Git Product logo

Comments (13)

jamuhl avatar jamuhl commented on July 17, 2024 1

so as change already made we keep current change in hope we did not open a box ;)

from i18next-icu.

adrai avatar adrai commented on July 17, 2024

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

from i18next-icu.

SpikyC avatar SpikyC commented on July 17, 2024

Hello @adrai,
While I know that providing the string in the resources will mitigate the issue, Iโ€™m saying that the normal behaviour of i18next is to format the string with the target locale as a base.

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.)

from i18next-icu.

adrai avatar adrai commented on July 17, 2024

Can you try with i18next v23.4.6 ?

from i18next-icu.

jamuhl avatar jamuhl commented on July 17, 2024

wrong...format inside gets done with the language i18next is able to resolve a resource -> if it resolves the en string it will format dates in english format and not in french -> to keep a string consistent

from i18next-icu.

SpikyC avatar SpikyC commented on July 17, 2024

Can you try with i18next v23.4.6 ?

It solved the issue, thanks!

from i18next-icu.

jamuhl avatar jamuhl commented on July 17, 2024

23.4.6 is breaking change and wrong -> rollback is needed

from i18next-icu.

SpikyC avatar SpikyC commented on July 17, 2024

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

from i18next-icu.

jamuhl avatar jamuhl commented on July 17, 2024

then the default behaviour might be wrong - formatting and language should be consistent...or do you like german strings with american dates?

from i18next-icu.

SpikyC avatar SpikyC commented on July 17, 2024

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.
https://www.i18next.com/principles/fallback#variant-resolving-fallback-from-dialects-or-scripts

from i18next-icu.

jamuhl avatar jamuhl commented on July 17, 2024

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

from i18next-icu.

SpikyC avatar SpikyC commented on July 17, 2024

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.
But in both cases (i18next current behavior and i18next-icu v23.4.5 behavior) it will be a breaking change.

from i18next-icu.

adrai avatar adrai commented on July 17, 2024

ok, let's close this issue now ;-)

from i18next-icu.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.