Message not localized (unremovable branch, time control)


if you try to remove a branch of the original game in the analysis mode, you get an error message. This message string seems not to be localized. This is a screenshot using German:

Note that there is not a missing translation or a wrong translation that uses the english text.

It don’t know if this is a hardcoded text or if an existing translation is incorrectly changed to lower case, but »tage« should be »Tage« and »stunden« should be »Stunden«. (That is not the complete truth, the dative would be correct here: Tagen. But that is probably another issue.)

There are no other translations with a wrong spelling of Tage or Stunden. The localized string contains only one string placeholder for value and unit:
»Fischer: Uhr startet mit %s, und erhöht sich pro Zug um %s – bis zu einem Maximum von %s.«

You can generally see if a phrase is hard-coded or translatable by using the “Debug” language. translatable strings are in [brackets]. In this case, it looks translatable. Have you checked out yet?

The debug hint is useful, thanks. Yes, I checked the translation tool and searched for “The current position” but got no result (searched in source and target texts, other checkboxes were not checked).

1 Like

Curiously, the code does call for this string to be translated:

       if (this.goban.engine.cur_move.trunk) {
        swal({text: _(`The current position is not an explored branch, so there is nothing to delete`)});
    } else {
        swal({text: _("Are you sure you wish to remove this move branch?"), showCancelButton: true})
        .then(() => {
        .catch(() => 0);

The only twist I can see is that for some reason it is using the javascript interpolating quote instead of double quote. I would not have expected that to make a difference, but maybe this is the reason…

… I’ll play around with it further when I get a chance, if someone doesn’t get there ahead of me.

Good catch, I don’t think those ES6 template literals are supported by the translate libraries (otherwise, why would we have translate.interpolate()?)

Ah right! I forgot that this was wierd stuff going on under there… so that’s it then.


Nice to see it’s fixed. Thanks.

Do you have any thoughts about the second issue. (The second post. I didn’t want to open a new thread.)

Is there the same problem for:

  1. “Analysis started” (full AI review)
  2. “Player can’t be challenged” (challenge twice in ladder)

For “Analysis started”, it looks like the the alert was not wrapped in a translation marker:

For the second one, it looks like you already figured it out?

I updated the PR to include that second one you pointed out.

Your screenshot shows a different text, not “Player can’t be challenged”, or I am missing something. I checked the translation page before but couldn’t find the string.

The text was shown when I clicked the challenge button a second time without reloading the page in between.

Hello, is there any news on the other untranslatable string or the wrong capitalisation (although there is no such occurrence in the translation).

Happy new year to you all. :fireworks: :sparkler: :fireworks:

I was not able to find “Player can’t be challenged” in the codebase, which is why I assumed you meant “Already playing a game against this person”. Could you post a screenshot of the text you are seeing?

As for the Uhr startet… you’re absolutely onto something- for some reason we are converting to lower case:

        case "fischer":
            ret = interpolate(_("Fischer: Clock starts with %s and increments by %s per move up to a maximum of %s."), [

There may be good reason for this (in case these time settings are stored as “2 DAYS” or something), so I don’t think I can promise a fix right now, but I’m looking into it. Good find and thanks for the hard work on translations!

Thank you for the analysis.

Here are the screenshots. First, I challenged a player in the 9x9 ladder by clicking on his name and then on the “Challenge” button. I answered “Yes!” to the question of whether I was ready to play.

After that I challenged the same player a second time in the same way, the No/Yes question was shown again and I answered “Yes!” again. Then the error message appeared:

Apart from the error message, the challenge box (next screenshot) should probably be closed or refreshed after the first challenge was started with “Yes!”. (If you click next to the box and then open it again, the challenge button is removed and you also only get the message that you already have a challenge with the player.)


This PR should allow translators to choose the capitalization of “Woche”/“Tage”/“Uhr” etc. It hasn’t been added yet, but keep an eye out!

Unfortunately, I the text “Player can’t be challenged” is coming from the server (which has no knowledge of your chosen language. Ideally, you wouldn’t be able to challenge a player twice. There is probably something that should be done to prevent this from happening, but I do not think translation will be part of the solution.

1 Like

I already suspected that the text is an error message that comes directly from the backend without any translation. Since the challenge box is able to show challenges that have already been made, I guess you just have to update it. No idea what effort that is in the current code.

This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.