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

Now looking for translators! #647

Open
yishn opened this issue Mar 14, 2020 · 45 comments
Open

Now looking for translators! #647

yishn opened this issue Mar 14, 2020 · 45 comments

Comments

@yishn
Copy link
Member

yishn commented Mar 14, 2020

A lot of people have asked for translations and stated their willingness to help translating, so I'm happy to announce that we finally have an infrastructure in place to make translations as seamless as possible. Head over to Sabaki I18n to see how you can contribute.

To avoid duplicate work in the beginning, I suggest everyone who wants to start translating to comment with their language on this thread, so I can put them in this table:

Language Translator PR status
Dutch @benjaminvdb In Progress
German @Gargantuar314 In Progress
Brazilian Portuguese @joaomarcuslf2 Merged

A big thanks to all the translators in advance!

@geovens
Copy link
Contributor

geovens commented Mar 15, 2020

I almost finished Simplified Chinese
https://github.com/geovens/sabaki-i18n/blob/master/src/zh-Hans.i18n.js
but I have some questions:

  1. Many translated strings in preferences are not shown?
  2. Things like ${appName}, ${author} are not replaced?
  3. Are hotspots just bookmarks?
  4. What does 'fork' mean in navigation menu?
  5. What does 'move colorization' mean in view menu?
  6. Does 'zoom' in tools menu only affect game tree?
  7. Where does 'unclear position' or 'even position' show? Do they mean 'who will win is unclear' and 'black and white seems to have even chance to win'?
  8. What does 'instantly play out analysis variations on board' do?
  9. What does 'show automatic move titles' do?
  10. There are multiple strings of 'All Files'. Where are they shown?
  11. Where is AdvancedPropertiesDrawer?
  12. What does 'update result' in score drawer do?

@yishn
Copy link
Member Author

yishn commented Mar 15, 2020

@geovens Thanks for your work! I put you on the list for Simplified Chinese.

  1. Thanks for the report, I'll try to fix it. In the meantime, you can toggle the Preferences checkboxes to update the strings manually.
  2. Please look at the model translation file en.i18n.js as how to handle interpolation. You can't just specify a string, but a function like this:
'${appName} v${version}': p => `${p.appName} v${p.version}`
  1. Yes, but the specification calls thems hotspots, because the hotspot move should show "something interesting (e.g. node contains a game-deciding move)."
  2. A fork is a node where the game splits into multiple variations.
  3. If you annotate a move as 'good', 'interesting', 'doubtful', or 'bad', it will appear on the board with the colors green, blue, purple, or red if the setting is activated.
  4. No 'Zoom' affects the whole interface.
  5. If you annotate a move, it will be shown in the comments section as an icon. The text 'Unclear Position', etc. will be shown as tooltip.
  6. In engine analysis mode, if you hover on a stone, it will show the whole variation at once instead of playing the variation stone by stone if the setting is activated.
  7. For each move we generate a move title based on the move, e.g. 'Hane', 'One-Point Jump', 'Chinese Fuseki', etc. if the setting is activated.#
  8. Usually 'All Files' is shown in the open file dialog as an option for the extension filter.
  9. In the main menu, choose 'Tools' > 'Open SGF Properties...' to open the AdvancedPropertiesDrawer.
  10. 'Update Result' will write the end score into the SGF file.

@isty2e
Copy link

isty2e commented Mar 15, 2020

I've completed most of the Korean translation:

https://github.com/isty2e/sabaki-i18n/blob/korean/src/ko.i18n.js

However, some go terms like "Dog's head" are not well defined in Korean and I think there is no proper jargon to describe such shapes. What is your recommendation?

@yishn
Copy link
Member Author

yishn commented Mar 15, 2020

Thanks for your work! Not sure, either don't translate and fall back to English, or specify a string with a space character in it, so it doesn't fall back to English?

@isty2e
Copy link

isty2e commented Mar 15, 2020

Then I'll let it fall back to English. Somebody might find an adequate translation, and I feel like leaving them as blank is not a good idea.

yishn added a commit that referenced this issue Mar 15, 2020
@yishn
Copy link
Member Author

yishn commented Mar 15, 2020

The 'Load Language File' feature is just a convenience. Not all strings can be replaced on runtime. For the actual language switching, the user will be required to restart Sabaki.

yishn added a commit that referenced this issue Mar 15, 2020
@geovens
Copy link
Contributor

geovens commented Mar 16, 2020

While I made some changes in my translation, I also noticed that @af990m forked the repo again from my fork, and had made changes too. I believe that many of their changes are better than mine. So I guess af990m could consider check my last two commits as revision suggestions, merge them into theirs, and the main repo could merge from af990m's repo?

@af990m
Copy link

af990m commented Mar 16, 2020

@geovens The result you submitted is very good!Although I used the same shortcut as the English version, but it detracts from the aesthetics of the interface. :(
It's hard to compare which is better, so please ignore my PR. :)

yishn added a commit that referenced this issue Mar 16, 2020
@af990m
Copy link

af990m commented Mar 16, 2020

I made a conversion from simplified to traditional
https://github.com/af990m/sabaki-i18n/blob/master/src/zh-Hant.i18n.js

@yishn

This comment has been minimized.

@yauwing
Copy link

yauwing commented Mar 16, 2020

I made a conversion from simplified to traditional
https://github.com/af990m/sabaki-i18n/blob/master/src/zh-Hant.i18n.js

Hello,

Thanks for the great works!

There are some typos in both @geovens and your translation,
line 49 Undo should be 撤消 not 撤銷
line 50 'Redo': '取消撤銷', should be 取消撤消
line 267 'sec per move': '每秒步數' should be 每步秒數
line 338, 448 and 496 'White': '白旗', should be 白棋
line 450 'Area': '數子', should be '子數'
line 451 'Territory': '數目',should be '目數'

Other comments:

line 45 and 293 'Score' , this one a bit tricky, Your translation 數子 is appropriate for Chinese rule, while @geovens translation 计算目数 is appropriate for Japanese rule. How about use a more generic translation such as 計算勝負 ? Ideally, it would be great if the text or translation could change according to the rule selected but this is obviously not possible at this moment.

line 60, 211, 277 and 328 'Label Tool': '字母' Since Label can have more than one alphabet, I would be suggest to translate as 標記工具 or 標記

line 95 'Enter a move number to go to': '到指定手數', I would translate as '請輸入手數'or'請輸入前往的手數'
I would prefer to use 往 or 前往 instead of 到 for the translation of the words "Go to" because it may not be possible to arrive there if the destination does not exist

line 107 and 260 Generate move is not exactly 讓引擎走一手, because the engine will continue to generate moves afterward.
How about 讓引擎走棋?

line 132 'Show Move Colorization': '顯示移動著色' Move translate as 移動 is not appropriate, how about 棋步 or simply 棋?

line 146 'Transform Board': '旋轉棋盤' is not just rotation, 棋盤轉變 is what I found from Google translate

line 309 'Toggle group status.': '點選' looks incomplete to me, how about '點擊切換死活'?

line 502 'Game Records': 'Game Records', can be translated as 棋局記錄 or 對局記錄

This one is just my opinion, there are some inconsistencies in some of the translations in: Tools, Go to
Example
line 52 Select Tool is translated as 選擇工具
while
line 53 Stone Tool is translated as 棋子,
I would prefer to translate as 棋子工具 to keep the translation more consistent

@geovens
Copy link
Contributor

geovens commented Mar 17, 2020

Thank you all, I have merged revisions by @af990m and @yauwing into my fork, and will create a pull request.

line 60, 211, 277 and 328 'Label Tool': '字母' Since Label can have more than one alphabet, I would be suggest to translate as 標記工具 or 標記

I feel that 标记 refers to all of those: cross, triangle, square, label, etc. At first I translated 'label' to '字母/文字', indicating that it could be more than one letter, but now I feel that it looks redundant because I guess few people uses more than one letter, so I adopted af990m's change into just '字母', while still uses '字母/文字' when user is entering text, to indicate the possibility of more than one letter.

line 107 and 260 Generate move is not exactly 讓引擎走一手, because the engine will continue to generate moves afterward. How about 讓引擎走棋?

I don't know engine could continue to generate moves afterward. It has always been just one move for me. When does it generate multiple moves?

line 52 Select Tool is translated as 選擇工具 while line 53 Stone Tool is translated as 棋子, I would prefer to translate as 棋子工具 to keep the translation more consistent

In the Tools menu, there are Stone Tool, Cross Tool, Label Tool, etc.. If we change Stone Tool from 棋子 to 棋子工具, then we should add 工具 to all the rest tools too, which may appear a bit redundant. Just my 2 cents.

@af990m
Copy link

af990m commented Mar 17, 2020

I just use the little to get the big.(我只是抛砖引玉而已) @geovens @yauwing :)

@yauwing
Copy link

yauwing commented Mar 17, 2020

You are right! Generate Move only generates one move.
I probably has mixed up Start engine vs engine game with Generate Move
Sorry for the confusion caused.

I don't know engine could continue to generate moves afterward. It has always been just one move for me. When does it generate multiple moves?

@y-ich
Copy link

y-ich commented Mar 17, 2020

Hi, @yishn san.

Thank you for your efforts!
I start Japanese translation.
Could you tell me the meaning of "&" in English translation?

@af990m
Copy link

af990m commented Mar 17, 2020

In my opinion, the symbol "&" and the letters that follow it represent shortcuts @y-ich
If a letter is underlined in a menu, press the Alt key and the underlined key together instead of choosing that menu item

@y-ich
Copy link

y-ich commented Mar 17, 2020

@af990m san,

Thank you for your comment!
I thought so, too.

If so I think that a template of displaying a shortcut for non-alphabetical language will be helpful for translation.
There are no letters "F" in "ファイル", which means File in Japanese.
And you cannot input any letters in "ファイル" from keyboard because this is a result of Input Method Editor(IME).

@af990m
Copy link

af990m commented Mar 17, 2020

@y-ich
The method of change can be like this
module.exports = { 'menu.file': { 'New Window': null, 'File': '(&F)ファイル', ...
shortcuts "alt + F" still work

meybe it detracts from the aesthetics of the interface.

@y-ich
Copy link

y-ich commented Mar 17, 2020

@af990m san,

Yes, so I want to hear from @yshin san such that '(&<shortcut key>)<translation>' is a template for non-alphabetic language.
It may be worse for each translator to create their own template for this kind of work.

@isty2e
Copy link

isty2e commented Mar 17, 2020

For the time being, I didn't include them in Korean translation. Is it supposed to be language-specific?

@yishn
Copy link
Member Author

yishn commented Mar 17, 2020

@y-ich Unfortunately, I don't know how other native applications handle menu keyboard hints on Japanese/Chinese/Korean. Also, on macOS, AFAIK there are no menu keyboard hints in the first place... Only Linux and Windows support it, I think.

@yishn
Copy link
Member Author

yishn commented Mar 17, 2020

For now, I think we should just go with no keyboard hints, otherwise it would look silly on macOS.

@ebifrier
Copy link
Contributor

In Japanese, the most popular menu display in Windows looks like this.
sample-menu

But there are no keyboard shortcuts in Chinese or Korean currently, so I agree with yishn to go without keyboard shortcuts at first.

@y-ich
Copy link

y-ich commented Mar 18, 2020

I created a pull request for Japanese.

How can I check it on Sabaki?

@yishn
Copy link
Member Author

yishn commented Mar 18, 2020

@y-ich Please check out the section 'Try out your translation'.

@y-ich
Copy link

y-ich commented Mar 19, 2020

@yishn san,

Thank you for your information!
(I should have read it first.)

Parts of translations are not valid in preferences. Maybe those are related with items.
How can I debug it?

@yishn
Copy link
Member Author

yishn commented Mar 19, 2020

For now, you can toggle the Preferences checkboxes to update the strings manually.

@benjaminvdb
Copy link

I've started working on the Dutch translation.

@benjaminvdb
Copy link

I'm currently at line 150 of 534 of my first pass through the items.

One problem I'm having is with capitalization of the menu items. My feeling is that it's uncommon to capitalize all nouns in Dutch. For example: Show Next Moves looks good in English, but Volgende Zet weergeven looks rather awkward in Dutch. I think Volgende zet weegeven is better, but I don't want to deviate from Sabaki's thoughts about this.

Note that there is no language rule that prefers Sabaki's capitalization for Dutch like, for example, German would. It's not uncommon to see non-standard capitalization for headlines/headers in Dutch, but this is more a matter of style than syntax.

What are your thoughts about this?

@isty2e
Copy link

isty2e commented Mar 19, 2020

I think localization should prioritize how people using that language feel above all. My Korean translation is not a literal one (which could've been awkward) and some strings even have somewhat different meanings from original ones.

@yishn
Copy link
Member Author

yishn commented Mar 19, 2020

Exactly, in English it is common to have menu items capitalized, but in German, they are not. On any doubts, please look at any native applications on how they do the capitalization.

@ParmuzinAlexander
Copy link
Contributor

Can you remove the Russian translation for keyboard shortcuts 'Home', 'End', 'Page Up', 'Page Down'?

@yishn
Copy link
Member Author

yishn commented Mar 21, 2020

@ParmuzinAlexander I'm not sure what you mean?

@ParmuzinAlexander
Copy link
Contributor

@yishn Hotkeys here https://imgur.com/N4Y0PFp

@yishn
Copy link
Member Author

yishn commented Mar 22, 2020

Those are Electron/Chromium strings over which I have no control of. Currently, there is also an Electron bug where I can’t set the Electron language programmatically. But why do you not want Russian strings for keyboard shortcuts if you’re using Russian anyway?

@ParmuzinAlexander
Copy link
Contributor

@yishn The Russian keyboard does not have a translation of these buttons, to find this button you need to translate from Russian to English.
'Home' literally translated 'Main Page'
'End' literally translated 'To complete'
'Page Up' literally translated 'Up'
'Page Down' literally translated 'Scroll Down'
Ok it's not important, just 4 hotkeys...

@yishn
Copy link
Member Author

yishn commented Mar 22, 2020

I think these should be the system strings of keyboard shortcuts. If they're not correct, you should probably open a bug on Electron, or even Chromium.

@yauwing
Copy link

yauwing commented Mar 24, 2020

I just noticed that (I probably had done it before and then forgot) you can generate more than one move using the Generate Move command as following:

Start a new handicapped game with at least 2 stones, and assign white player to a bot. The game would not start until Generate Move was invoked, after black responded, white will continue to generate the next move.

line 107 and 260 Generate move is not exactly 讓引擎走一手, because the engine will continue to generate moves afterward. How about 讓引擎走棋?

I don't know engine could continue to generate moves afterward. It has always been just one move for me. When does it generate multiple moves?

@yishn
Copy link
Member Author

yishn commented Mar 24, 2020

This is the consequence of assigning an engine to a player. Sabaki will automatically generate a move for an engine if it is assigned to a player. But clicking on 'Generate Move' will only generate one move; it will not initiate an engine vs. engine or engine vs. player game.

Attaching an engine and not assigning it to a player, clicking on 'Generate Move' will not let the engine continue generating moves after you respond.

@romton843
Copy link

I'm working on the French translation... Thank you all for your great work.

@Gargantuar314
Copy link

I would like to contribute for the German translation, although I don't know a lot of the German terms.

@yishn
Copy link
Member Author

yishn commented Apr 17, 2020

@Gargantuar314 There's no need to provide a complete translation. Just do what you can and hopefully someone else can contribute to it. It's a community effort, after all!

@mlopezviedma
Copy link

Hi all! I'll gladly start working on the complete Spanish translation. Cheers!

@joaomarcuslf
Copy link

Hi! I can contribute with Brazilian portuguese, can I create the branch?

@yishn
Copy link
Member Author

yishn commented Jun 22, 2020

Sure, thanks a lot, I'll add you to the list.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests