Skip to content

Localization Howto

Oleksis Fraga Menéndez edited this page Feb 19, 2023 · 1 revision

Localization Guide - Transifex

🔴 DISCLAIMER

By sending a translation you agree to publish your work under the UNLICENSE license!

Contents

Translators

Requirements

  • A modern browser
  • A Transifex account, sign-up

Notes

  • If your language is currently not supported you can make a request for new language support.
  • When you request support for a new language, the language code should be in the format en_US and NOT just en.
  • Variables such as {0}, {1}, {dir}, {0:.1f}, etc should be copied exactly as they appear in the translation box.
  • Variables represent a word that will be replaced by real data (name, number, etc).
  • Variables can be moved around the string in order to make the most logical translation.
  • When new strings for translation are available you will get inbox notifications.
  • For help you can leave a comment with @username or send a direct message to one of the maintainers.
  • Maintainer usernames are: oleksis

Gettings Started

  1. Sign-in to Transifex
  2. Join a translation team
  3. Start translating using the web editor

Help

Testers

Requirements

Notes

  • The instructions below assume basic knowledge of the command line (OS independent).
  • The language code being used should be in the format <ISO 639-1>_<ISO 3166-1 alpha-2> (e.g. en_US).
  • You can locally edit the translation file (PO) by opening it using a simple editor and editing the msgstr fields.
  • You can find the translation file (PO) after downloading it under the youtube_dl_gui/locale/<LANG_CODE>/LC_MESSAGES/ directory.
  • In order to get the translations from Transifex your account needs permissions to access the project.

Getting Started

  1. Open a terminal
  2. Test that Git works: git --version
  3. Test that Transifex CLI client works: tx --version
  4. Clone upstream using Git:
git clone https://github.com/yt-dlg/yt-dlg
  1. Change to project directory: cd yt-dlg
  2. Pull the translation you want to test from Transifex (Auth needed):
tx pull --force -l <LANGUAGE_CODE_HERE>
  1. Make the language appear under Options>General tab (only for new languages):
    1. Open the optionsframe.py under the youtube_dl_gui directory
    2. Search for the LOCALE_NAMES attribute
    3. Add the new language to it (in our example "el_GR", _("Greek"),)
    4. Don't forget to save your changes
self.LOCALE_NAMES = {
    "el_GR", _("Greek"),  # language_code, language_name
    "ar_SA", _("Arabic"),
    "cs_CZ", _("Czech"),
    ...
}
  1. Build the binary translation files (MO):
python -m pip install polib
python setup.py build_trans
  1. Test the translations by running youtube-dl-gui and selecting your language:
python -m youtube_dl_gui
  1. Make changes locally in your translation file (PO) and go back to step 8 to test them

Help

Devs

Requirements

Notes

  • Read Testers notes first.
  • Binary translation files (MO) are ignored and you should not push them upstream.
  • Don't forget to update the ChangeLog after adding a new language.
  • You can gather all extra requirements below using pip.

Getting Started

Add a new language under Options > General tab

  1. Open the optionsframe.py file
  2. Search for the LOCALE_NAMES attribute
  3. Add the new language to it and make sure to sort alphabetically based on the language name
self.LOCALE_NAMES = {
  "en_US", "_(English"),
  "fr_FR", "_(French"),
  "el_GR", "_(Greek"),
  "it_IT", "_(Italian"),
  ...
}

Build the binary translation files (MO)

  1. Just run the setup script:
python -m pip install polib
python setup.py build_trans

Automatically check translations using Google translate (Requires: polib & doodle_translate)

  1. Change directory to devscripts
  2. Run the check script:
python check-translation.py <LANGUAGE_CODE_HERE>

Get translations from Transifex (Requires: Permissions to access project)

  • Pull everything: tx pull -a
  • Pull reviewed: tx pull --mode reviewed -a
  • Pull everything (force): tx pull -a -f
  • Pull specific language: tx pull -l <LANGUAGE_CODE_HERE>
  • Pull only completed translations (100%): tx pull -a --minimum-perc=100

Update source strings (Only Maintainers, Requires: python-gettext)

  1. Change directory to devscripts
  2. Run the update-locales.sh script (also builds MO files)
  3. Push changes to Transifex: tx push --source --translation

Add support for new language locally (ONLY TESTING)

  1. Change directory to devscripts
  2. Run the new locale script: python new-locale.py <LANGUAGE_CODE_HERE>

Help

FAQs

  • Translations unnecessarily having country codes?: Some languages have dialects in different countries. For example, de_AT is used for Austria, and pt_BR for Brazil. The country code serves to distinguish the dialects. Also, using a single format (ll_CC) instead of multiple for the locale name simplifies some implementation specific things.