Skip to content
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

Pull request i18n #2804

Merged
merged 10 commits into from Oct 2, 2017

Conversation

Projects
None yet
4 participants
@jianzi123
Copy link
Contributor

jianzi123 commented Aug 25, 2017

add translated files in Chinese.

@takluyver takluyver added this to the 5.2 milestone Aug 25, 2017

@takluyver

This comment has been minimized.

Copy link
Member

takluyver commented Aug 25, 2017

Awesome, thanks! @JCEmmons can you take a look to see if this is arranged as you'd expect? Should the .mo files be checked in, or should we be generating those at build time?

We're just about to release notebook 5.1, so it will be a few days before we can merge this, but hopefully it can go in soon after the release.

@jianzi123

This comment has been minimized.

Copy link
Contributor Author

jianzi123 commented Aug 25, 2017

Except adding the translated files, if something else is needed, please let me know, haha.

@JCEmmons

This comment has been minimized.

Copy link
Contributor

JCEmmons commented Sep 5, 2017

@takluyver

This comment has been minimized.

Copy link
Member

takluyver commented Sep 15, 2017

Thanks for your patience - 5.1 is out now, so we can come back to this.

I think this PR should only need to add three files:

notebook/i18n/zh-CN/LC_MESSAGES/nbjs.po
notebook/i18n/zh-CN/LC_MESSAGES/notebook.po
notebook/i18n/zh-CN/LC_MESSAGES/nbui.po

The .mo and .json files should be generated at build time, so they shouldn't be stored in git. And we shouldn't need the zh_CN.UTF-8 folder: everything should be UTF-8 anyway, and the code should take care of loading it correctly.

Even if this doesn't actually work at the moment, having a set of translations to work with will be really useful for us to figure out the infrastructure to make it work.

@JCEmmons

This comment has been minimized.

Copy link
Contributor

JCEmmons commented Sep 15, 2017

@gnestor

This comment has been minimized.

Copy link
Contributor

gnestor commented Sep 16, 2017

I'm trying to test this with no luck. I tried the following:

  • Based on @JCEmmons suggestion, I renamed the language from "zh_CN" to "zh"
  • According to the i18n docs in this repo, I added "zh" to supported_languages in nbjs.json
  • I added "Chinese [zh]" to the languages in Firefox and moved it to the top of the list
  • I ran the notebook server with LANG=zh jupyter notebook --no-browser

@jianzi123 Have you had any luck in testing this? @JCEmmons?

@takluyver

This comment has been minimized.

Copy link
Member

takluyver commented Sep 16, 2017

I don't think the code to load translations is actually in place. We were having some trouble working out how to load the translations early enough, but without requesting all languages.

@jianzi123

This comment has been minimized.

Copy link
Contributor Author

jianzi123 commented Sep 18, 2017

@gnestor
I took a few days off to go home, and sorry for replying this so late...

  • ​First, check the local env using locale, make sure there are some languages supported

LANG=zh_CN.UTF-8

  • put zh-CN to nbjs.json... this is not the same as language above while it is related to path i18n/zh-CN

  • Then, make sure there are not 404 in your log, some logs show that there are not files like nbjs.json,

  • make sure in code

    1. add_ /i18n/LANG/... to url path;

    2. add lang para into gettext.translation() function in notebook/notebookapp.py;

@takluyver Asynchronous loading of language files does have some latency, in my project I replace some words in code...

@JCEmmons

This comment has been minimized.

Copy link
Contributor

JCEmmons commented Sep 18, 2017

@JCEmmons

This comment has been minimized.

Copy link
Contributor

JCEmmons commented Sep 19, 2017

I was able to have some level of success with these translations. But there are some things that weren't quite right..... Here's what I did:

1). The translated files are really .po, not .pot ( although the format is the same ), so I renamed them.
2). Put the translated notebook.po and nbui.po into notebook/i18n/zh-CN/LC_MESSAGES.
3). Run pybabel compile to create Chinese notebook.mo and nbui.mo in notebook/i18n/zh-CN/LC_MESSAGES per the instructions.
4). Run po2json to create Chinese nbjs.json in notebook/i18n/zh-CN/LC_MESSAGES
5). Update notebook/i18n/nbjs.json to add "zh-CN" to the list of supported languages.
6). Update notebook/static/base/js/i18nload.js per the instructions in the comment:

     // These are only here so that the optimizer knows which ones we MIGHT load.
 // We will actually only load the ones we need. There should be one entry
 // here for each language you want to support.
 // For example, for German....
 "json!base/../../i18n/zh-CN/LC_MESSAGES/nbjs.json"

7). Regenerate the javascript with "setup.py css js"
8). Set your language to zh-CN and your browser default to zh-cn.
Run jupyter notebook.....

In case you're wondering, the reason we're using zh-CN instead of just zh is that moment doesn't have a "zh" locale, only "zh-cn" and "zh-tw", so the date stuff won't come out right if you try to use just "zh".
image

Some things to be noted:

1). There are a number of places where the English has changed since my original drop, so in order to completely do this right, you would need to update the English using pybabel extract in the instructions, and then translate the updated files.

2). There are some places where the translations were incomplete or missing items.

But overall, these files seem to work OK and produce reasonable amounts of Chinese.

@jianzi123

This comment has been minimized.

Copy link
Contributor Author

jianzi123 commented Sep 20, 2017

Thank you for testing the files
and some words should add i18n codes include the plug-in and others...

I will try to update some files...

@takluyver

This comment has been minimized.

Copy link
Member

takluyver commented Sep 28, 2017

I've cleaned up the files in this PR a bit. Does the structure now look about right? If so, I suggest that we merge this and use it as a base to work out how to load the necessary translations for the UI.

If someone other than me hits the button, I'd suggest using the 'squash and merge' option for this PR so that the binary .mo files are not in our repo history.

@jianzi123

This comment has been minimized.

Copy link
Contributor Author

jianzi123 commented Sep 29, 2017

I think that we could merge this and fix the details in some version...

@gnestor gnestor merged commit de09c12 into jupyter:master Oct 2, 2017

4 checks passed

codecov/patch Coverage not affected when comparing d42c65a...0e02a54
Details
codecov/project 79.24% (-0.11%) compared to d42c65a
Details
continuous-integration/appveyor/pr AppVeyor build succeeded
Details
continuous-integration/travis-ci/pr The Travis CI build passed
Details
@gnestor

This comment has been minimized.

Copy link
Contributor

gnestor commented Oct 2, 2017

Thanks @takluyver and @jianzi123!!

@gnestor gnestor referenced this pull request Oct 2, 2017

Closed

Add Chinese translation #2789

@gnestor gnestor modified the milestone: 5.2 Oct 13, 2017

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.