Skip to content

Translating to new languages

Connor McLaughlin edited this page Sep 27, 2023 · 10 revisions

This page describes the process for creating and keeping a new translation up to date.

Windows

Qt Dependencies Setup

  1. Download deps-x64.7z from https://github.com/stenzek/duckstation-ext-qt-minimal/releases/tag/latest.
  2. Extract to the dep\msvc directory.
  3. Verify you have lupdate.exe in the following path (replace D:\Projects\duckstation with your clone path): D:\Projects\duckstation\dep\msvc\deps-x64\bin.

Create New Translation

  1. Clone the repository in the same way as described in the main README (submodules/recursive clone).
  2. Run create-update-and-edit-language.bat in src\duckstation-qt\translations.
  3. Follow the on-screen instructions.
    • This should create a new .ts file for your language in the translations directory, update it, and open the translation file in Qt Linguist.
  4. Leave the source language as POSIX. Some languages seem to add a country code where it isn't necessary, too, so check that under Edit > Translation File Settings...

Update Existing Translation

  1. Update your Git repository by running git pull. If it gives you an error about local changes, run git reset --hard and git clean -d -f -x to clear them out, and run git pull again. But make sure you have nothing you want to save in the repo first, I won't take responsibility if you delete your work this way.
  2. Drag and drop the .ts file you wish to edit onto create-update-and-edit-language.bat file in src\duckstation-qt\translations.
    • This will add the new strings to the .ts file, report how many new strings there are for translation, and open it in Qt Linguist for editing.

Linux

Create New Translation

  1. Clone the repository in the same way as described in the main README (submodules/recursive clone).
  2. Run cd src/duckstation-qt and lupdate ./ ../core/ ../util/ -tr-function-alias QT_TRANSLATE_NOOP+=TRANSLATE,QT_TRANSLATE_NOOP+=TRANSLATE_SV,QT_TRANSLATE_NOOP+=TRANSLATE_STR,QT_TRANSLATE_NOOP+=TRANSLATE_FS,QT_TRANSLATE_N_NOOP3+=TRANSLATE_FMT,QT_TRANSLATE_NOOP+=TRANSLATE_NOOP -ts translations/duckstation-qt_LANGUAGE_CODE_HERE.ts manually. The file name should follow the appname_language[_country].ts convention specified here.
  3. Open this new translation file in Qt Linguist. On Linux, your package manager will provide it.
  4. If prompted, select your language and country. Leave the source language as POSIX. Some languages seem to add a country code where it isn't necessary, too, so check that under Edit > Translation File Settings...

Update Existing Translation

  1. Update your Git repository by running git pull. If it gives you an error about local changes, run git reset --hard and git clean -d -f -x to clear them out, and run git pull again. But make sure you have nothing you want to save in the repo first, I won't take responsibility if you delete your work this way.
  2. Run cd src/duckstation-qt and lupdate ./ ../core/ ../util/ -tr-function-alias QT_TRANSLATE_NOOP+=TRANSLATE,QT_TRANSLATE_NOOP+=TRANSLATE_SV,QT_TRANSLATE_NOOP+=TRANSLATE_STR,QT_TRANSLATE_NOOP+=TRANSLATE_FS,QT_TRANSLATE_N_NOOP3+=TRANSLATE_FMT,QT_TRANSLATE_NOOP+=TRANSLATE_NOOP -ts translations/duckstation-qt_LANGUAGE_CODE_HERE.ts manually.
    • This will add the new strings to the .ts file and report how many new strings there are for translation.
  3. Open the translation file in Qt Linguist.

Translating Strings

  1. For each form/context on the left, a list of strings will appear in the middle for translation. A mock version of the UI will also be displayed.
  2. Go through each string, entering a translation in your target language in the text box below. Mark the string as Completed (check mark) after doing so, this way when new strings are added you can jump directly to them.
  3. To submit your translation or updates, follow the normal Git process for forking/creating a branch/creating a pull request.
    • You only want to submit the changes to your language's .ts file, no other files.
    • If you are unsure about how to do this, send your translation (.ts file) directly to Stenzek or to a member of the Translators team on Discord, and it will be committed/pushed for you.

Additional Info