iamkun / dayjs

⏰ Day.js 2kB immutable date-time library alternative to Moment.js with the same modern API
https://day.js.org
MIT License
46.96k stars 2.3k forks source link

Locale Contributions Wanted 🙋🙏 #171

Open iamkun opened 6 years ago

iamkun commented 6 years ago

Release 1.6.2 was just published to the NPM with I18n support. Thanks again, everyone, for helping with this effort.

Day.js users come from all around the world, so I will happily accept translations from other languages for this project. And your work will affect thousands of daily users of Day.js.

Feel free to open a pull request if you've finished one of the three translations.

Locale (I18n)

Locale is the first translation work we need to do, and it will be released with our main code. Locale template

Readme file

Readme file let user get a glance of our project. And tells them what we are doing. If there is no sub pages' translation, please keep the links in readme linked to English sub pages. Add a link to your translation in the default english readme file. Default English Readme

Sub pages of the document

Sub pages is the detailed documents of our project.

NOTE: It is welcome to put your language in the first place in locale example in files such as I18n.md. e.g. for Japanese docs

import 'dayjs/locale/ja'
// was import es in English ducoment
dayjs.locale('ja') // use Japanese locale globally 

Sub pages folder

Directory structure

Please place the translation files in a separate folder, and named with ISO 639-1 area code. Directory structure could be found below.

.
├── docs
│   └── es
│        ├── API-reference.md
│        ├── I18n.md
│        ├── Installation.md
│        ├── Plugin.md
│        └── README-es.md
├── src
│   └── locale
│        └── es.js
└── README.md  // default index english readme

Finally, thanks again for your contribution.

Append: We use ISO 639-2 country code. Check lists short codes for language here or here

iamkun commented 6 years ago

ping @ohbarye, and seems you've already done it. Bravo!

vilanz commented 6 years ago

I'm working on the ./docs/ Brazilian Portuguese translation!

@iamkun Is it OK to slightly modify some of the docs' wording to fit the translation? Depending on the language, some parts are pretty awkward to translate 100%.

iamkun commented 6 years ago

@ludvon

Is it OK to slightly modify some of the docs' wording

Of course. It's up to you.

But better keep the document's structure the same, so that I could update them easily if there is some small changes like API name or agreements change.

KorbinianKuhn commented 6 years ago

We could convert the momentjs locales to the dayjs format. I tried it automatically and it worked for most of them (there are some languages which require additional information for month name handling and the ordinal function), but we could use all others as a basis. @iamkun what do you think?

iamkun commented 6 years ago

@KorbinianKuhn Thanks, this should work, but little copycat I think.

aalises commented 6 years ago

@iamkun for the fromNow plugin to work, I think the relativeTime variable should also be added to the locale template? Right now it is implemented on the spanish locale and the default english one, e.g

relativeTime = {
    future: 'in %s',
    past: '%s ago',
    present: 'just now',
    s: 'a second',
    ss: '%d seconds',
    min: 'a minute',
    mins: '%d minutes',
    h: 'an hour',
    hh: '%d hours',
    d: 'a day',
    dd: '%d days',
    w: 'a week',
    ww: '%d weeks',
    m: 'a month',
    mm: '%d months',
    q: 'a quarter',
    qq: '%d quarters',
    y: 'a year',
    yy: '%d years'
  }

WDYT?

iamkun commented 6 years ago

I'll update this to the I18n docs after finishing the plugin.

SuretnoHQ commented 6 years ago

Hi @iamkun,

I try to add translation for Indonesian Language, but i don't know how to open pull request cz locales folder ignored by .gitignore file.

And then how to test if my translation is working? 😄

Thank you

iamkun commented 6 years ago

@muhibbudins Hi, just open a new PR, and what's the problem now?

If your translation could pass our auto CI test, then it should be fine.

SuretnoHQ commented 6 years ago

Hi @iamkun ,

I still can't open new PR. Because my local change is not detected 😃

On your .gitignore file you have code like this :

# build
locale/
plugin/
dayjs.min.js

So my new file on src/locale/id.js not detected on git change stage.

screen shot 2018-05-24 at 12 12 07 screen shot 2018-05-24 at 12 12 18

Note : I'm already fork your repo to my account 😄 —— Or maybe can you make a documentation for development?

Thank you

iamkun commented 6 years ago

@muhibbudins The .gitignore file is correct, and should working fine. However, I don't know why your git can't detect the code change.

Maybe you could try remove the line in .gitignore file, then git status to check if it is ok, and put the removed line back.

SuretnoHQ commented 6 years ago

@iamkun I am already open new PR with some change at .gitignore file. I add new condition at .gitignore file :

# build
locale/
!src/locale/
plugin/
dayjs.min.js

To ignore only locale/ folder not src/locale/.

Thank you

Reference #193

iamkun commented 6 years ago

Thanks, I've updated the .gitignore file, and it should be OK now.

MartinDawson commented 6 years ago

At the moment dayjs only accepts language language code such as 'en'. Would be nice to accept formats like 'en-US' instead of having dayjs fail later on.

The same as Moment.js Issue 422

iamkun commented 6 years ago

@MartinDawson Are you mean dayjs.locale('en-US') equals to dayjs.locale('en') ?

MartinDawson commented 6 years ago

@iamkun If I supply de-DE then it's obvious I want de locale. The library doesn't support de-DE so it makes sense to me to fall back to de.

iamkun commented 6 years ago

@MartinDawson Well, seems not hard. All we have to do is to supply a helper function isn't it?

dayjs.locale(helper('de-DE')) // helper will return 'de'
prantlf commented 6 years ago

It is impossible to contribute correct Slavic localisations for the RelativeTime plugin of Day.js. It is possible for Moment.js, but for the price of overriding the whole translate method. See #302 for more information.

gnurgeldiyev commented 4 years ago

Hi @iamkun

I just added Turkmen (tk) locale and opened new PR ✌

PR: #893