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

Add support for other languages, starting with portuguese. #59

Open
wants to merge 11 commits into
base: main
Choose a base branch
from

Conversation

daviirodrig
Copy link

This PR adds initial support for other languages with a dropdown option in the menu to select the language.

I used akien's French foundation and created Portuguese .po files for the string translations. Also set up asset remaps to change the lobby category articles for each language and changed a little bit how the wikipedia urls are made to receive the lang as the subdomain.

This is not perfect yet because of all the texts more "hardcoded" like the images for categories, but just the articles being in the language selected is enough to be a good experience.

Let me know what you think! :)

Copy link
Owner

@m4ym4y m4ym4y left a comment

Choose a reason for hiding this comment

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

Looks like a good approach towards this, just one structural issue in the code I'd like the change!

As for the images in the lobby, we could either have different versions of the assets per-language or I could modify the textures so that they only include the graphical elements and the text itself could be rendered using label3d. I'm not sure which will be a better approach-- I do like the current way that the signage looks.

@m4ym4y
Copy link
Owner

m4ym4y commented Mar 1, 2025

Also thank you so much for your translation work!! I'm so appreciative that people in the community are interested in helping this reach more languages because I don't have the ability to do that myself :)

@daviirodrig
Copy link
Author

As for the images in the lobby, we could either have different versions of the assets per-language or I could modify the textures so that they only include the graphical elements and the text itself could be rendered using label3d. I'm not sure which will be a better approach-- I do like the current way that the signage looks.

It's definitely easier for translations the label3d, if you can keep the same aesthetics using it, that would be really good.

@m4ym4y
Copy link
Owner

m4ym4y commented Mar 2, 2025

OK I'm going to try generating the lobby signage using label3d. if I get it working I'll merge to main and u can rebase :)

@UnicodeApocalypse
Copy link

Hi !
Here is a more complete french translation for a first release.
Hope it helps

fr.po complete file
#, fuzzy
msgid ""
msgstr ""
"Language: fr\n"

msgid "Enter the Museum"
msgstr "Entrer dans le Musée"

msgid "Settings"
msgstr "Paramètres"

msgid "Quit"
msgstr "Quitter"

msgid "The museum is currently unstaffed. Please refer to signage for information."
msgstr "Le musée n'a pas d'employé. Veuillez vous référer aux panneaux d'information."

msgid "English"
msgstr "Anglais"

msgid "Portuguese"
msgstr "Portugais"

msgid "French"
msgstr "Français"

msgid "Are you sure you want to Quit?"
msgstr "Êtes vous sûr•e de vouloir quitter ?"

msgid "Yes"
msgstr "Oui"

msgid "No"
msgstr "Non"

msgid "Paused"
msgstr "En pause"

msgid "Resume"
msgstr "Reprendre"

msgid "Return to Lobby"
msgstr "Retourner à l'accueil"

msgid "Enter Exhibit Name"
msgstr "Entrez le nom de l'exposition"

msgid "Go to Random Exhibit"
msgstr "Se rendre à une exposition aléatoire"

msgid "Enter exhibit title"
msgstr "Entrez le titre de l'exposition"

msgid "Confirm"
msgstr "Confirmer"

msgid "Back"
msgstr "Retour"

msgid "Exhibit Found: \"\""
msgstr "Exposition trouvée : \"\""

msgid "OK / Exit"
msgstr "OK / Quitter"

msgid "VR Controls"
msgstr "Contrôles VR"

msgid "Restore Default Settings"
msgstr "Restaurer les paramètres par défaut"

msgid "Movement Style"
msgstr "Style de mouvement"

msgid "Teleportation (Left Trigger)"
msgstr "Téléportation (Gachette Gauche)"

msgid "Direct Movement (Left Analog Stick)"
msgstr "Mouvement direct (Joystick Gauche)"

msgid "Direct Movement Speed"
msgstr "Vitesse de mouvement direct"

msgid "Camera Rotation Increment (Right Stick)"
msgstr "Sensibilité de la caméra (Joystick Droit)"

msgid "Smooth Camera Rotation"
msgstr "Rotation en douceur"

msgid "Preparing Exhibit..."
msgstr "Préparation de l'exposition..."

msgid "Error Loading Exhibit."
msgstr "Erreur de chargement de l'exposition."

msgid "Data Settings"
msgstr "Paramètres de cache"

msgid "Cache"
msgstr "Cache"

msgid "Clear Cache"
msgstr "Vider le cache"

msgid "Cache Size Limit"
msgstr "Taille maximum du cache"

msgid "Automatically limit cache size (on quit)"
msgstr "Limiter automatiquement la taille du cache (à la fermeture)"

msgid "Graphics Settings"
msgstr "Paramètres graphiques"

msgid "Render Scale"
msgstr "Échelle de rendu"

msgid "Fullscreen"
msgstr "Plein écran"

msgid "Reflection Quality"
msgstr "Qualité des reflets"

msgid "Enable Reflections"
msgstr "Activer les reflets"

msgid "Ambient Light Level"
msgstr "Luminosité ambiante"

msgid "Enable Indirect Lighting (SSIL)"
msgstr "Activer la lumière indirecte (SSIL)"

msgid "Enable Fog"
msgstr "Activer le brouillard"

msgid "Enable V-Sync"
msgstr "Activer la synchronisation verticale"

msgid "Limit FPS"
msgstr "Limiter les FPS"

msgid "None"
msgstr "Aucun"

msgid "CRT Filter"
msgstr "Filtre CRT"

msgid "Audio Settings"
msgstr "Paramètres audio"

msgid "Global Volume"
msgstr "Volume global"

msgid "Sound Effects Volume"
msgstr "Volume des effets"

msgid "Ambience Volume"
msgstr "Volume de l'environnement"

msgid "Enter VR"
msgstr "Entrer en VR"

msgid "Snap turning:"
msgstr "Rotation instantanée :"

msgid "Y axis dead zone"
msgstr "Zone morte de l'axe Y"

msgid "X axis dead zone"
msgstr "Zone morte de l'axe X"

msgid "Haptics Scale"
msgstr "Intensité des vibrations"

msgid "Apply"
msgstr "Appliquer"

msgid "Reset"
msgstr "Réinitialiser"

msgid "Height adjust:"
msgstr "Ajustement de la hauteur :"

msgid "WebXR primary:"
msgstr "WebXR primaire :"

msgid "Auto"
msgstr "Auto"

msgid "Thumbstick"
msgstr "Joystick"

msgid "Trackpad"
msgstr "Trackpad"

msgid "Open Page in Browser"
msgstr "Ouvrir la page dans le navigateur"

msgid " - Paused"
msgstr " - En pause"

msgid "Maximum FPS"
msgstr "Nombre maximum de FPS"

msgid "Post-Processing Effect"
msgstr "Effet de post-processing"

msgid "Graphics"
msgstr "Graphiques"

msgid "Audio"
msgstr "Audio"

msgid "Data"
msgstr "Cache"

msgid "Controls"
msgstr "Contrôles"

msgid "Control Settings"
msgstr "Paramètres de contrôle"

msgid "Mouse Sensitivity"
msgstr "Sensibilité de la souris"

msgid "Invert Y-axis"
msgstr "Inverser l'axe Y"

msgid "Remap Inputs"
msgstr "Réassigner les entrées"

msgid "Joypad Camera Deadzone"
msgstr "Zone morte de la caméra de contrôle"

@zHonys
Copy link

zHonys commented Mar 6, 2025

Hi ! Here is a more complete french translation for a first release. Hope it helps
fr.po complete file

You also need to create a lobby_data.tres resource for french as well, name it lobby_data_fr.tres and link it as a remap for the base lobby_data.tres
This is needed because the lobby fetch a set collection of english pages, so you need to make sure not only to translate the name of the pages to french, but also assure they exist, if don't, change to something else

@UnicodeApocalypse
Copy link

UnicodeApocalypse commented Mar 6, 2025

Hi ! Here is a more complete french translation for a first release. Hope it helps
fr.po complete file

You also need to create a lobby_data.tres resource for french as well, name it lobby_data_fr.tres and link it as a remap for the base lobby_data.tres This is needed because the lobby fetch a set collection of english pages, so you need to make sure not only to translate the name of the pages to french, but also assure they exist, if don't, change to something else

Here it is :

lobby_data_fr.tres
[gd_resource type="Resource" script_class="LobbyData" load_steps=11 format=3 uid="uid://34yga2226k3j"]

[ext_resource type="Script" path="res://resource_definitions/LobbyData.gd" id="1_3ssej"]
[ext_resource type="Script" path="res://resource_definitions/LobbyWing.gd" id="2_y4oc8"]

[sub_resource type="Resource" id="Resource_pgwi2"]
script = ExtResource("2_y4oc8")
name = "Technologie"
corner_1 = Vector2(-68, -44)
corner_2 = Vector2(-32, -8)
exhibits = PackedStringArray("Voiture-pilote", "Minox", "Transistor", "Poterie", "Godot (moteur de jeu)", "Pasteurisation", "Essai nucléaire", "Adhésif", "Aqueduc", "Trois dimensions", "Avion", "Machine simple", "Presse typographique", "Contraception", "Microscopie", "Console de jeux vidéo", "Trébuchet", "Élevage", "Oldowayen")

[sub_resource type="Resource" id="Resource_ooopd"]
script = ExtResource("2_y4oc8")
name = "Culture"
corner_1 = Vector2(32, -44)
corner_2 = Vector2(68, -8)
exhibits = PackedStringArray("Clown", "Dragon", "Épicerie", "High five", "Goncharov (mème)", "Café", "Soupe", "The Backrooms", "Tarot", "K-pop", "Go (jeu)", "Hindouisme", "Dandy", "Golem", "Chant de marins", "Publicité", "Déluge", "Moine")

[sub_resource type="Resource" id="Resource_m2ope"]
script = ExtResource("2_y4oc8")
name = "Science"
corner_1 = Vector2(-44, -92)
corner_2 = Vector2(-8, -36)
exhibits = PackedStringArray("Fungi", "Dinosaures", "Biodiversité marine", "Terre", "Quadrangle d'Arabia", "Rat", "Crevette", "Arbre à pain", "Visualisation de données", "Or", "Baobab", "Homo sapiens", "Pendule (physique)", "Dimorphisme sexuel", "Lumière", "Fromage", "Chou commun", "Zone humide", "Nycticèbes", "Papillon", "Jupiter (planète)", "Sol (pédologie)", "Fractale", "Œil")

[sub_resource type="Resource" id="Resource_opuc1"]
script = ExtResource("2_y4oc8")
name = "Geography"
corner_1 = Vector2(8, -92)
corner_2 = Vector2(44, -36)
exhibits = PackedStringArray("États-Unis", "Antarctique", "Patagonie", "Tibet", "Persépolis", "Pétra", "Taipei 101", "Colline", "Architecture à Bristol", "Chongqing", "Îles Pitcairn", "Fosse des Mariannes", "Transsibérien", "Lancaster (Ohio)", "Lac Tchad", "Sénégal", "Bora-Bora", "Landes de Gascogne", "Kilimandjaro", "Canberra", "Forêt amazonienne", "Wharfe", "Uruk", "Pierre noire (islam)")

[sub_resource type="Resource" id="Resource_qiy1c"]
script = ExtResource("2_y4oc8")
name = "Art"
corner_1 = Vector2(-72, 12)
corner_2 = Vector2(-36, 48)
exhibits = PackedStringArray("Peinture baroque", "José Rizal", "Architecture arménienne", "Pablo Picasso", "Musée du Louvre", "Joan Miró", "Ai Weiwei", "Frida Kahlo", "Käthe Kollwitz", "Frank Lloyd Wright", "Edgar Degas", "Art pariétal", "Michel-Ange", "Francisco de Goya", "Fauvisme", "Graffiti", "Sculpture grecque antique", "Maurits Cornelis Escher", "Georges Seurat")

[sub_resource type="Resource" id="Resource_l5mfx"]
script = ExtResource("2_y4oc8")
name = "Personnalités"
corner_1 = Vector2(36, 12)
corner_2 = Vector2(72, 48)
exhibits = PackedStringArray("Liste des souverains de Pologne", "Albert Einstein", "Freddie Mercury", "Kobe Bryant", "Gengis Khan", "Raspoutine", "Public Universal Friend", "Tupac Shakur", "Luigi Mangione", "William Shakespeare", "Linus Pauling", "Danny DeVito", "J. R. R. Tolkien", "Mary Shelley", "Alexandria Ocasio-Cortez", "Ibn Battûta", "Martin Luther", "Martin Luther King")

[sub_resource type="Resource" id="Resource_bycfx"]
script = ExtResource("2_y4oc8")
name = "Histoire"
corner_1 = Vector2(-48, 60)
corner_2 = Vector2(-12, 96)
exhibits = PackedStringArray("Histoire de l'Allemagne", "Catastrophe nucléaire de Tchernobyl", "Titanic", "Contre-culture des années 1960", "Code de Nuremberg", "Pandémie de Covid-19", "Central Intelligence Agency", "Âge d'or de l'Islam", "Alunissage", "Séisme de 1906 à San Francisco", "Passage des Alpes par Hannibal", "Drake–Kendrick Lamar feud", "Histoire de la photographie", "Dave Matthews Band (incident à Chicago)", "Accusation de meurtre rituel", "Royaume d'Oyo", "Piraterie", "Manifestations de 2019-2020 à Hong Kong")

[sub_resource type="Resource" id="Resource_yimja"]
script = ExtResource("2_y4oc8")
name = "Médias"
corner_1 = Vector2(12, 60)
corner_2 = Vector2(48, 96)
exhibits = PackedStringArray("Bible", "The Beatles", "Matrix (film)", "Odyssée", "Gilgamesh", "En attendant Godot", "Homestuck", "Star Trek", "Barbie (film)", "Neon Genesis Evangelion", "Hamlet", "Les Colons de Catane", "Twitter", "Vogue", "Steamboat Willie", "Le Comte de Monte-Cristo", "Wikipédia", "Minecraft")

[resource]
script = ExtResource("1_3ssej")
introduction_text = "[center][color=black]
[img=500]res://assets/logo/moat_logo_large.png[/img]

[font_size=14][fill]
Bienvenue au Museum of All Things ! Tous les visiteurs sont les bienvenus ici, que vous vous manifestiez dans cet espace à travers une fenêtre en deux dimensions ou via la Réalité Virtuelle. Ce musée est différent de tout autre que vous avez visité dans le monde physique, il vous faudra donc peut-être un moment pour vous orienter.

En ce moment, vous êtes dans le hall d'entrée du musée, conçu pour vous offrir un point de départ agréable à votre visite. Si vous souhaitez y revenir à tout moment, vous pouvez ouvrir le menu du musée (via \"Échap,\" \"Start,\" ou en appuyant sur \"Y\" sur votre contrôleur droit en Réalité Virtuelle) et sélectionner \"Retour au Hall d'entrée.\"

Le hall d'entrée est divisé en zones thématiques, signalées par des panneaux et indiquées sur les cartes du hall principal. Dans chacune de ces zones, vous trouverez de nombreux couloirs menant à une variété d'expositions fascinantes. Ces expositions sont rendues possibles grâce à l'intégration d'images et de données textuelles issues de Wikipedia et de Wikimedia Commons. Tout sujet disposant d'une page Wikipedia peut également être consulté en tant qu'exposition dans ce musée.

De plus, chaque exposition contient de nombreux couloirs la reliant à d'autres expositions. Ces connexions sont établies en fonction des liens présents dans l'article Wikipedia de l'exposition actuelle. Vous pouvez ainsi naviguer d'une exposition à l'autre à l'infini, en suivant votre curiosité.

Si vous préférez accéder directement à un sujet en particulier, vous pouvez utiliser le terminal de recherche, situé au bout du hall d'entrée, juste derrière vous. Il vous suffit d'entrer votre sujet d'intérêt dans l'interface du terminal, et un couloir sera créé pour vous y conduire directement.

[b]Bonne visite ![\\b]"
wings = Array[ExtResource("2_y4oc8")]([SubResource("Resource_pgwi2"), SubResource("Resource_ooopd"), SubResource("Resource_m2ope"), SubResource("Resource_opuc1"), SubResource("Resource_qiy1c"), SubResource("Resource_l5mfx"), SubResource("Resource_bycfx"), SubResource("Resource_yimja")])

Note that some had to be changed because no french equivalent exists, and others use redirects because real page name doesn't reflect everyday language.

Also for next translators here is an api call to easily find page translations : https://en.wikipedia.org/w/api.php?action=query&prop=langlinks&lllang=fr&redirects=0&format=json&titles=Technology

@zHonys
Copy link

zHonys commented Mar 6, 2025

Hi ! Here is a more complete french translation for a first release. Hope it helps
fr.po complete file

You also need to create a lobby_data.tres resource for french as well, name it lobby_data_fr.tres and link it as a remap for the base lobby_data.tres This is needed because the lobby fetch a set collection of english pages, so you need to make sure not only to translate the name of the pages to french, but also assure they exist, if don't, change to something else

Here it is :
lobby_data_fr.tres

[gd_resource type="Resource" script_class="LobbyData" load_steps=11 format=3 uid="uid://34yga2226k3j"]

[ext_resource type="Script" path="res://resource_definitions/LobbyData.gd" id="1_3ssej"]
[ext_resource type="Script" path="res://resource_definitions/LobbyWing.gd" id="2_y4oc8"]

[sub_resource type="Resource" id="Resource_pgwi2"]
script = ExtResource("2_y4oc8")
name = "Technologie"
corner_1 = Vector2(-68, -44)
corner_2 = Vector2(-32, -8)
exhibits = PackedStringArray("Voiture-pilote", "Minox", "Transistor", "Poterie", "Godot (moteur de jeu)", "Pasteurisation", "Essai nucléaire", "Adhésif", "Aqueduc", "Trois dimensions", "Avion", "Machine simple", "Presse typographique", "Contraception", "Microscopie", "Console de jeux vidéo", "Trébuchet", "Élevage", "Oldowayen")

[sub_resource type="Resource" id="Resource_ooopd"]
script = ExtResource("2_y4oc8")
name = "Culture"
corner_1 = Vector2(32, -44)
corner_2 = Vector2(68, -8)
exhibits = PackedStringArray("Clown", "Dragon", "Épicerie", "High five", "Goncharov (mème)", "Café", "Soupe", "The Backrooms", "Tarot", "K-pop", "Go (jeu)", "Hindouisme", "Dandy", "Golem", "Chant de marins", "Publicité", "Déluge", "Moine")

[sub_resource type="Resource" id="Resource_m2ope"]
script = ExtResource("2_y4oc8")
name = "Science"
corner_1 = Vector2(-44, -92)
corner_2 = Vector2(-8, -36)
exhibits = PackedStringArray("Fungi", "Dinosaures", "Biodiversité marine", "Terre", "Quadrangle d'Arabia", "Rat", "Crevette", "Arbre à pain", "Visualisation de données", "Or", "Baobab", "Homo sapiens", "Pendule (physique)", "Dimorphisme sexuel", "Lumière", "Fromage", "Chou commun", "Zone humide", "Nycticèbes", "Papillon", "Jupiter (planète)", "Sol (pédologie)", "Fractale", "Œil")

[sub_resource type="Resource" id="Resource_opuc1"]
script = ExtResource("2_y4oc8")
name = "Geography"
corner_1 = Vector2(8, -92)
corner_2 = Vector2(44, -36)
exhibits = PackedStringArray("États-Unis", "Antarctique", "Patagonie", "Tibet", "Persépolis", "Pétra", "Taipei 101", "Colline", "Architecture à Bristol", "Chongqing", "Îles Pitcairn", "Fosse des Mariannes", "Transsibérien", "Lancaster (Ohio)", "Lac Tchad", "Sénégal", "Bora-Bora", "Landes de Gascogne", "Kilimandjaro", "Canberra", "Forêt amazonienne", "Wharfe", "Uruk", "Pierre noire (islam)")

[sub_resource type="Resource" id="Resource_qiy1c"]
script = ExtResource("2_y4oc8")
name = "Art"
corner_1 = Vector2(-72, 12)
corner_2 = Vector2(-36, 48)
exhibits = PackedStringArray("Peinture baroque", "José Rizal", "Architecture arménienne", "Pablo Picasso", "Musée du Louvre", "Joan Miró", "Ai Weiwei", "Frida Kahlo", "Käthe Kollwitz", "Frank Lloyd Wright", "Edgar Degas", "Art pariétal", "Michel-Ange", "Francisco de Goya", "Fauvisme", "Graffiti", "Sculpture grecque antique", "Maurits Cornelis Escher", "Georges Seurat")

[sub_resource type="Resource" id="Resource_l5mfx"]
script = ExtResource("2_y4oc8")
name = "Personnalités"
corner_1 = Vector2(36, 12)
corner_2 = Vector2(72, 48)
exhibits = PackedStringArray("Liste des souverains de Pologne", "Albert Einstein", "Freddie Mercury", "Kobe Bryant", "Gengis Khan", "Raspoutine", "Public Universal Friend", "Tupac Shakur", "Luigi Mangione", "William Shakespeare", "Linus Pauling", "Danny DeVito", "J. R. R. Tolkien", "Mary Shelley", "Alexandria Ocasio-Cortez", "Ibn Battûta", "Martin Luther", "Martin Luther King")

[sub_resource type="Resource" id="Resource_bycfx"]
script = ExtResource("2_y4oc8")
name = "Histoire"
corner_1 = Vector2(-48, 60)
corner_2 = Vector2(-12, 96)
exhibits = PackedStringArray("Histoire de l'Allemagne", "Catastrophe nucléaire de Tchernobyl", "Titanic", "Contre-culture des années 1960", "Code de Nuremberg", "Pandémie de Covid-19", "Central Intelligence Agency", "Âge d'or de l'Islam", "Alunissage", "Séisme de 1906 à San Francisco", "Passage des Alpes par Hannibal", "Drake–Kendrick Lamar feud", "Histoire de la photographie", "Dave Matthews Band (incident à Chicago)", "Accusation de meurtre rituel", "Royaume d'Oyo", "Piraterie", "Manifestations de 2019-2020 à Hong Kong")

[sub_resource type="Resource" id="Resource_yimja"]
script = ExtResource("2_y4oc8")
name = "Médias"
corner_1 = Vector2(12, 60)
corner_2 = Vector2(48, 96)
exhibits = PackedStringArray("Bible", "The Beatles", "Matrix (film)", "Odyssée", "Gilgamesh", "En attendant Godot", "Homestuck", "Star Trek", "Barbie (film)", "Neon Genesis Evangelion", "Hamlet", "Les Colons de Catane", "Twitter", "Vogue", "Steamboat Willie", "Le Comte de Monte-Cristo", "Wikipédia", "Minecraft")

[resource]
script = ExtResource("1_3ssej")
introduction_text = "[center][color=black]
[img=500]res://assets/logo/moat_logo_large.png[/img]

[font_size=14][fill]
Bienvenue au Museum of All Things ! Tous les visiteurs sont les bienvenus ici, que vous vous manifestiez dans cet espace à travers une fenêtre en deux dimensions ou via la Réalité Virtuelle. Ce musée est différent de tout autre que vous avez visité dans le monde physique, il vous faudra donc peut-être un moment pour vous orienter.

En ce moment, vous êtes dans le hall d'entrée du musée, conçu pour vous offrir un point de départ agréable à votre visite. Si vous souhaitez y revenir à tout moment, vous pouvez ouvrir le menu du musée (via \"Échap,\" \"Start,\" ou en appuyant sur \"Y\" sur votre contrôleur droit en Réalité Virtuelle) et sélectionner \"Retour au Hall d'entrée.\"

Le hall d'entrée est divisé en zones thématiques, signalées par des panneaux et indiquées sur les cartes du hall principal. Dans chacune de ces zones, vous trouverez de nombreux couloirs menant à une variété d'expositions fascinantes. Ces expositions sont rendues possibles grâce à l'intégration d'images et de données textuelles issues de Wikipedia et de Wikimedia Commons. Tout sujet disposant d'une page Wikipedia peut également être consulté en tant qu'exposition dans ce musée.

De plus, chaque exposition contient de nombreux couloirs la reliant à d'autres expositions. Ces connexions sont établies en fonction des liens présents dans l'article Wikipedia de l'exposition actuelle. Vous pouvez ainsi naviguer d'une exposition à l'autre à l'infini, en suivant votre curiosité.

Si vous préférez accéder directement à un sujet en particulier, vous pouvez utiliser le terminal de recherche, situé au bout du hall d'entrée, juste derrière vous. Il vous suffit d'entrer votre sujet d'intérêt dans l'interface du terminal, et un couloir sera créé pour vous y conduire directement.

[b]Bonne visite ![\\b]"
wings = Array[ExtResource("2_y4oc8")]([SubResource("Resource_pgwi2"), SubResource("Resource_ooopd"), SubResource("Resource_m2ope"), SubResource("Resource_opuc1"), SubResource("Resource_qiy1c"), SubResource("Resource_l5mfx"), SubResource("Resource_bycfx"), SubResource("Resource_yimja")])

Note that some had to be changed because no french equivalent exists, and others use redirects because real page name doesn't reflect everyday language.

Also for next translators here is an api call to easily find page translations : https://en.wikipedia.org/w/api.php?action=query&prop=langlinks&lllang=fr&redirects=0&format=json&titles=Technology

Great, you want me to commit these ?

@UnicodeApocalypse
Copy link

Great, you want me to commit these ?

Yes, thank you ! I'm not allowed to commit on this pr

@Fxfxfx0
Copy link

Fxfxfx0 commented Mar 8, 2025

Hi ! I'm not super familiar with coding so I'm not sure if it's already implemented or not (sorry for the comment if it is), but I think it would be nice if it was possible to be able to set the UI language and the Wikipedia content language each separately if it would not be too hard to code. I know this might not seems very useful but doing something like that could make the game a language learning tool for people who want to read Wikipedia in a foreign language but can't understand the UI yet, or it could simply gives the option to go trough a different Wikipedia database for people that want to while keeping the UI in their native language

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.

6 participants