Sabaki icon indicating copy to clipboard operation
Sabaki copied to clipboard

Now looking for translators!

Open yishn opened this issue 4 years ago • 45 comments

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!

yishn avatar Mar 14 '20 10:03 yishn

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?

geovens avatar Mar 15 '20 05:03 geovens

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

yishn avatar Mar 15 '20 10:03 yishn

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?

isty2e avatar Mar 15 '20 14:03 isty2e

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?

yishn avatar Mar 15 '20 16:03 yishn

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.

isty2e avatar Mar 15 '20 17:03 isty2e

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 avatar Mar 15 '20 23:03 yishn

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?

geovens avatar Mar 16 '20 07:03 geovens

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

af990m avatar Mar 16 '20 08:03 af990m

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

af990m avatar Mar 16 '20 11:03 af990m

@ParmuzinAlexander Please open a new issue and describe your problem in more detail.

yishn avatar Mar 16 '20 12:03 yishn

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

yauwing avatar Mar 16 '20 17:03 yauwing

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.

geovens avatar Mar 17 '20 02:03 geovens

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

af990m avatar Mar 17 '20 04:03 af990m

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?

yauwing avatar Mar 17 '20 05:03 yauwing

Hi, @yishn san.

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

y-ich avatar Mar 17 '20 06:03 y-ich

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

af990m avatar Mar 17 '20 07:03 af990m

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

y-ich avatar Mar 17 '20 09:03 y-ich

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

af990m avatar Mar 17 '20 09:03 af990m

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

y-ich avatar Mar 17 '20 10:03 y-ich

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

isty2e avatar Mar 17 '20 11:03 isty2e

@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 avatar Mar 17 '20 13:03 yishn

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

yishn avatar Mar 17 '20 13:03 yishn

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.

ebifrier avatar Mar 18 '20 03:03 ebifrier

I created a pull request for Japanese.

How can I check it on Sabaki?

y-ich avatar Mar 18 '20 10:03 y-ich

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

yishn avatar Mar 18 '20 12:03 yishn

@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?

y-ich avatar Mar 19 '20 00:03 y-ich

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

yishn avatar Mar 19 '20 08:03 yishn

I've started working on the Dutch translation.

benjaminvdb avatar Mar 19 '20 09:03 benjaminvdb

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?

benjaminvdb avatar Mar 19 '20 11:03 benjaminvdb

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.

isty2e avatar Mar 19 '20 12:03 isty2e