Skip to content

Translation

Arjan Speiard | Asgard Sings! edited this page Aug 7, 2023 · 19 revisions

This page is in a draft state (some of these sections should perhaps be moved to their own pages?)

Note: The Overview section below is automatically generated with the translation_wiki_helper.sh script in performous git tree, tools/scripts-directory. So instead of directly modifying the table, you should update it by running the script and copy-pasting the output here. Notes and other data are put to lang/TRANSLATORS-file. (This only applies to the overview section, rest of the page can be modified freely.)

Table of Contents

Overview

Language Progress Current version Comment
% Translated Fuzzy Untranslated Total
Asturian (ast) 24Β % 97 38 265 400 ast.po
Danish (da) 9Β % 36 68 296 400 da.po
German (de) 100Β % 400 0 0 400 de.po
Spanish (es) 91Β % 367 10 23 400 es.po
Persian (fa) 55Β % 222 34 144 400 fa.po work in progress...
Finnish (fi) 57Β % 230 34 136 400 fi.po
French (fr) 91Β % 366 11 23 400 fr.po
Hungarian (hu) 53Β % 213 33 154 400 hu.po
Italian (it) 87Β % 348 11 41 400 it.po
Japanese (ja) 36Β % 146 34 220 400 ja.po Translations not ready for release.
Dutch (nl) 100Β % 400 0 0 400 nl.po
Polish (pl) 58Β % 232 34 134 400 pl.po
Portuguese (pt_BR) 37Β % 151 49 200 400 pt_BR.po
Slovak (sk) 100Β % 400 0 0 400 sk.po
Swedish (sv) 35Β % 140 48 212 400 sv.po
Chinese (zh) 35Β % 140 50 210 400 zh.po

Table last updated: 2023-08-07 14:43:18+02:00 (based on git commit [https://github.com/performous/performous/commit/e10f1272c99db258c380a98531ee7f4a0eff6ebe e10f1272] @ 2023-08-07 14:42:30 +0200)

Translating

There is a README in the repository folder lang which contains additional information.

We recommend using POEdit (http://www.poedit.net/). For Windows, download it from the website. Most Linux distros have it in their repositories.

Updating existing translations

  1. Open the .po file in POEdit.
  2. Hit the Synchronize to source button in the toolbar.
  3. Start translating.
  4. Remember to save.

Configuring the Performous XML parser

Sometimes there are new strings in the file config/data/schema.xml. They must be extracted with the help of the python script lang/xml_gettext.py. The following steps show how to setup POEdit to use the script:

  1. Click Edit -> Preferences
  2. Click the Parsers tab
  3. Click the New button and fill out the form like this:
    1. Language: Performous XML
    2. List of extensions: *.xml
    3. Parser command: $SOURCE_ROOT/lang/xml_gettext.py %o %F
    4. An item in keywords list:
    5. An item in input files list: %f
    6. Source code charset:
  4. Click Okay
Where $SOURCE_ROOT is the path to the performous sources root.

Here is an example for the configuration on windows:

General consistency stuff

  • Ctrl + K vs Ctrl+K, Enter vs enter vs ENTER, etc
  • [START] vs Start/Enter, etc
scientica: I think we should go with [START], etc and document it as beeing "Enter" on the keyboard, etc. Afaik it's not that uncommon in other games.
  • Spaces, newlines and such in the strings - are they intentional?

Notes

  • If possible (while maintaining a natural and good quality translation), try to aim to about the same string length as the English equivalent.
    Although in many places the text size or the UI layout can adapt to different text lengths, there are places where this is not true (and heavily zoomed-out text looks bad anyway). For that reason, you should check that the translation actually fits in and does not e.g. go out of screen.
    Also, problematic places should be reported so that developers can look into making the text rendering more robust in such places.
  • Partial strings that cause problems with correct word order should be reported to the developpers.
    An example is the string "Highscore for %1%\n" which used to be just "Highscore for ".
  • Pay attention to spelling & grammar!
  • It's always a good idea to verify that the translation fits the context in which it appears, this by looking at how it looks in the game and/or looking at the source context.

Semantics and ambiguities

  • the string "Visit performous.org\nfor free songs" refers to free as in ... (pending below)

General questions

(this section needs some formatting love, just dumping my list here for now... possibly a simple template could be used to provide consistency? maybe how to in start of each question!)

How to run performous with another translation?

The easies way is to override all your localization by setting LC_ALL. for example for Farsi language you can run the game by following command in terminal:

LC_ALL=fa_IR.utf8 performous

or for Finnish you can run:

LC_ALL=fi_FI.UTF-8 performous

you can find out about localization with locale command. locale -a help you find out all locales available in your system. For more information about locale refer to https://help.ubuntu.com/community/Locale

How to start a new translation?

You should first get the source code, create new file inside translation directory (translation file are located at ) then add your new file to your git master branch, commit and push your changes to remote server. for more information on pull, commit and push got to [link].

How to edit an existing translation?

You should first get the source code, edit the corresponding translation file (translation file are located at ) then commit and push your changes. for more information on pull, commit and push got to [link].

Does performous support RTL languages?

Technically performous has no RTL mode, but you can use performous with RTL translation (look at fa).

General

  • game/instrumentgraph.cc[39]:
 void InstrumentGraph::setupPauseMenu() {
 	m_menu.clear();
 	m_menu.add(MenuOption(_("Resume"), _("Back to performing!")));
 	m_menu.add(MenuOption(_("Rejoin"), _("Change selections"), &m_rejoin));
 	m_menu.add(MenuOption(_("Restart"), _("Start the song\nfrom the beginning"), "Sing"));
 	m_menu.add(MenuOption(_("Quit"), _("Exit to song browser"), "Songs"));
 }

Perhaps Rejoin should be changed to Change to make it a bit more clear, without the explanation the difference between Resume and Rejoin is very difficult to understand I think.

Specific Strings

String: "Start the song\nfrom the beginning"
file[line]: game/screen_sing.cc[120]
function: void ScreenSing::enter()
Comment: Is the "\n" intentional?
Discussion:
String: " ENTER to skip instrumental break"
" Remember to wait for grading!"
file[line]: game/screen_sing.cc[457]
game/screen_sing.cc[458]
function: void ScreenSing::draw()
Comment: Are the leading spaces intentional?
Discussion:
String: "No playback devices could be used.\n"<br/>"\nPlease configure some before playing."
file[line]: game/screen_intro.cc[22]
game/screen_intro.cc[23]
function: void ScreenIntro::enter()
Comment: Are the "\n" fully intentional?
Discussion:
String: "Visit performous.org\nfor free songs"
file[line]: game/screen_songs.cc[197]
function: void ScreenSongs::draw()
Comment: Free as in "free beer" or "free speech"?
Discussion:

Clone this wiki locally