Skip to content

Dev Archipelago: Translate Basics islands to Spanish - #2845

Merged
manuq merged 11 commits into
mainfrom
archipelago-spanish
Sep 8, 2026
Merged

Dev Archipelago: Translate Basics islands to Spanish#2845
manuq merged 11 commits into
mainfrom
archipelago-spanish

Conversation

@manuq

@manuq manuq commented Sep 4, 2026

Copy link
Copy Markdown
Collaborator

This translates:

  • The dialogue of the Basics Elder to engage with the quests.
  • The content in the StoryBook that this elder presents.
  • The signposts of the "Basics" Dev islands / quests.

ThreadbareEditor addon: Add translation parser for quests

So the .tres file is recognized by the translation system, and title and
description of Quests can be extracted to the catalog.

Update the list of translatable files:

Add the following new files:

  • All three .tscn files from Dev Basics.
  • Basics Elder dialogue
  • Dev Basics quests (two quest.tres files)

Regenerate the template POT file and update Spanish translation.

Resolves #2844

@manuq

This comment was marked as resolved.

@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown

Play this branch at https://play.threadbare.game/branches/endlessm/archipelago-spanish/.

(This launches the game from the start, not directly at the change(s) in this pull request.)

@manuq manuq changed the title Dev Archipelago: Translate signposts to Spanish Dev Archipelago: Translate Basics islands to Spanish Sep 4, 2026
@manuq
manuq marked this pull request as ready for review September 4, 2026 19:08
@manuq
manuq requested review from a team as code owners September 4, 2026 19:08
@manuq

manuq commented Sep 4, 2026

Copy link
Copy Markdown
Collaborator Author

Playtest instructions:

  1. Play the game from this link, which should start in Dev Archipelago: https://play.threadbare.game/branches/endlessm/main/#dev/dev_archipelago

  2. Press ESC and from the Options tab set the game in Spanish:

image
  1. Talk to this Elder (ignore the fact that it says "Template Elder" in the input HUD):
image
  1. Engage with demo "Teletransportadores" and play it.

  2. Exit that first demo. The way to exit is by going to the Pause menu and select "Abandonar misión".

image
  1. Talk to the same Elder again and engage with the other demo "Visuales".

That's it! Here are some screenshots:

image image

There are 2 new strings to translate since the last time.
Add all `.tscn` files from Basics.

Regenerate the template POT file.
This translates the signposts of the "Basics" Dev Island.
Add this single `.dialogue` file to the list of translatable files.

Regenerate the template POT file.
This translates the dialogue of the Basics Elder at Dev Archipelago.
So the .tres file is recognized by the translation system, and title and
description of Quests can be extracted to the catalog.
By adding their quest.tres files to the list of translatable files. And
regenerating the POT file.
With localized title and description of Dev Basics quests.
@manuq
manuq force-pushed the archipelago-spanish branch from 2a55ea0 to a35dbdc Compare September 7, 2026 15:59
@wjt

wjt commented Sep 7, 2026

Copy link
Copy Markdown
Member

You mentioned somewhere that "Basics" doesn't translate cleanly into Spanish. I wonder if we should actually change the English word too. "Rudiments", "Fundamentals"? (I don't know if these work in US English.)

@manuq

manuq commented Sep 7, 2026

Copy link
Copy Markdown
Collaborator Author

You mentioned somewhere that "Basics" doesn't translate cleanly into Spanish. I wonder if we should actually change the English word too. "Rudiments", "Fundamentals"? (I don't know if these work in US English.)

The title or surname I used for this elder is "Anciano ConceptosBásicos" which would translate back literally to "BasicConcepts Elder".

@manuq

manuq commented Sep 7, 2026

Copy link
Copy Markdown
Collaborator Author

@wjt I have rebased this now with Dialogue Manager 4.1 and tested generating the POT file: there are no changes. Then I tried deactivating "Use Static IDs as Translation Keys":

image

The only thing it does to existing dialogues is removing the msgctxt from dialogue lines:

 #. TRANSLATORS: Character: Basics Elder
 #: scenes/dev/components/dev_archipelago_basics_elder.dialogue:3
-msgctxt "dialogue"
 msgid "[[Hi|Hello|Greetings]], StoryWeaver. Welcome to Dev Archipelago!"
 msgstr ""
 
 #. TRANSLATORS: Character: Basics Elder
 #: scenes/dev/components/dev_archipelago_basics_elder.dialogue:4
-msgctxt "dialogue"
 msgid "This is a place of creativity, play, and experimentation!"
 msgstr ""
 
 #. TRANSLATORS: Character: Basics Elder
 #: scenes/dev/components/dev_archipelago_basics_elder.dialogue:5
-msgctxt "dialogue"
 msgid "While I can't explain all of what happens here, I invite you to learn about the basics of our unraveling world!"
 msgstr ""

Then I tested generating those IDs from within the Dialogue Manager tab:

image

And regenerating the POT. Now I see why the recommendation is to deactivate the setting for gettext:

Now:

 #. TRANSLATORS: Character: Basics Elder
+#. Line: [[Hi|Hello|Greetings]], StoryWeaver. Welcome to Dev Archipelago!
 #: scenes/dev/components/dev_archipelago_basics_elder.dialogue:3
 msgctxt "dialogue"
-msgid "[[Hi|Hello|Greetings]], StoryWeaver. Welcome to Dev Archipelago!"
+msgid "cjo0b4vsho0yh_722844"
 msgstr ""
 
 #. TRANSLATORS: Character: Basics Elder
+#. Line: This is a place of creativity, play, and experimentation!
 #: scenes/dev/components/dev_archipelago_basics_elder.dialogue:4
 msgctxt "dialogue"
-msgid "This is a place of creativity, play, and experimentation!"
+msgid "cjo0b4vsho0yh_248a95"
 msgstr ""
 
 #. TRANSLATORS: Character: Basics Elder
+#. Line: While I can't explain all of what happens here, I invite you to learn about the basics of our unraveling world!
 #: scenes/dev/components/dev_archipelago_basics_elder.dialogue:5
 msgctxt "dialogue"
-msgid "While I can't explain all of what happens here, I invite you to learn about the basics of our unraveling world!"
+msgid "cjo0b4vsho0yh_285cb3"
 msgstr ""

And after reactivating "Use Static IDs as Translation Keys" I see the static IDs used as "msgctxt", while the string keeps being translatable:

 #. TRANSLATORS: Character: Basics Elder
 #: scenes/dev/components/dev_archipelago_basics_elder.dialogue:3
-msgctxt "dialogue"
+msgctxt "cjo0b4vsho0yh_722844"
 msgid "[[Hi|Hello|Greetings]], StoryWeaver. Welcome to Dev Archipelago!"
 msgstr ""
 
 #. TRANSLATORS: Character: Basics Elder
 #: scenes/dev/components/dev_archipelago_basics_elder.dialogue:4
-msgctxt "dialogue"
+msgctxt "cjo0b4vsho0yh_248a95"
 msgid "This is a place of creativity, play, and experimentation!"
 msgstr ""
 
 #. TRANSLATORS: Character: Basics Elder
 #: scenes/dev/components/dev_archipelago_basics_elder.dialogue:5
-msgctxt "dialogue"
+msgctxt "cjo0b4vsho0yh_285cb3"
 msgid "While I can't explain all of what happens here, I invite you to learn about the basics of our unraveling world!"
 msgstr ""

So we have 2 options:

  • Leave "Use Static IDs as Translation Keys" enabled and document to not add Static IDs to dialogues
  • Or disable "Use Static IDs as Translation Keys".

@wjt wjt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

So we have 2 options:

  1. Leave "Use Static IDs as Translation Keys" enabled and document to not add Static IDs to dialogues
  2. Or disable "Use Static IDs as Translation Keys"

I suggest 2 - this does something sensible regardless of whether we eventually use static IDs.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wow. I expected that there would be some vfunc on nodes/resources that gets translations for their properties; or maybe some property export flag that means "translate me". But no! In fact the built-in translations of properties of scenes is an implementation of EditorTranslationParserPlugin with loads of hardcoded special cases, e.g. "If a node is a direct child of a TabContainer, then its name should be translated".

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good to know! Great source to use as reference too. For example, the use of get_recognized_extensions_for_type().

Comment thread addons/threadbare_editor/quest_translation_parser.gd Outdated
@wjt

wjt commented Sep 8, 2026

Copy link
Copy Markdown
Member

This branch seems to break the Enemy Interaction Elder but I can't figure out why.

False alarm. I think there's some upgrade bug in Dialogue Manager which can be worked around by deleting .godot. I'll file a separate bug.

manuq and others added 2 commits September 8, 2026 08:51
Co-authored-by: Will Thompson <wjt@endlessaccess.org>
We use gettext and according to the addon, this should be disabled.

Regenerate the POT file, which removes the msgctxt "dialogue" from dialogue
lines.
@manuq
manuq merged commit f682c33 into main Sep 8, 2026
7 checks passed
@manuq
manuq deleted the archipelago-spanish branch September 8, 2026 12:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Dev Archipelago: Translate single island to Spanish

2 participants