There are just a few functions that support I18n:
To use a locale, you need to require it and then pass as an option to a function:
```js import { formatDistance } from 'date-fns' // Require Esperanto locale import { eo } from 'date-fns/locale'
const result = formatDistance( new Date(2016, 7, 1), new Date(2015, 0, 1), {locale: eo} // Pass the locale as an option ) //=> 'pli ol 1 jaro' ```
It might seem complicated to require and pass locales as options, but unlike Moment.js which bloats your build with all the locales by default date-fns forces developer to manually require locales when needed. To make API simple, we encourage you to write tiny wrappers and use those instead of original functions:
```js // app/_lib/format.js
import { format } from 'date-fns' import { enGB, eo, ru } from 'date-fns/locale'
const locales = {enGB, eo, ru}
// by providing a default string of 'PP' or any of its variants for formatStr
// it will format dates in whichever way is appropriate to the locale
export default function (date, formatStr = 'PP') {
return format(date, formatStr, {
locale: locales[window.localeId] // or global.localeId
})
}
// Later:
import format from 'app/_lib/format'
window.localeId = 'enGB' format(friday13, 'EEEE d') //=> 'Friday 13'
window.localeId = 'eo' format(friday13, 'EEEE d') //=> 'vendredo 13'
// If the format string is omitted, it will take the default for the locale. window.localeId = 'enGB' format(friday13) //=> Jul 13, 2019
window.localeId = 'eo' format(friday13) //=> 2019-jul-13
```
At the moment there is no definitive guide, so if you feel brave enough, use this quick guide:
Thank you for your support!