mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-06-05 16:21:15 -03:00
Update translation docs
This is done in accordance with the recent changes to our translation pipeline.
This commit is contained in:
@@ -286,14 +286,57 @@ Contributing Translations
|
|||||||
Fish uses the GNU gettext library to translate messages from English to
|
Fish uses the GNU gettext library to translate messages from English to
|
||||||
other languages.
|
other languages.
|
||||||
|
|
||||||
Creating and updating translations requires the Gettext tools, including
|
Translation sources are
|
||||||
``xgettext``, ``msgfmt`` and ``msgmerge``. Translation sources are
|
|
||||||
stored in the ``po`` directory, named ``LANG.po``, where ``LANG`` is the
|
stored in the ``po`` directory, named ``LANG.po``, where ``LANG`` is the
|
||||||
two letter ISO 639-1 language code of the target language (eg ``de`` for
|
two letter ISO 639-1 language code of the target language (e.g. ``de`` for
|
||||||
German).
|
German). A region specifier can also be used (e.g. ``pt_BR`` for Brazilian Portuguese).
|
||||||
|
|
||||||
To create a new translation, run ``build_tools/update_translations.fish po/LANG.po``.
|
Adding translations for a new language
|
||||||
If you add/remove/change a translatable strings, run ``build_tools/update_translations.fish`` to propagate this to all translation files (``po/*.po`).
|
--------------------------------------
|
||||||
|
|
||||||
|
Creating new translations requires the Gettext tools.
|
||||||
|
More specifically, you will need ``msguniq`` and ``msgmerge`` for creating translations for a new
|
||||||
|
language.
|
||||||
|
In addition, the ``cargo-expand`` tool is required.
|
||||||
|
If you have ``cargo`` installed, run::
|
||||||
|
|
||||||
|
cargo install --locked --version 1.0.106 cargo-expand
|
||||||
|
|
||||||
|
to install ``cargo-expand`` (Note that other versions might not work correctly with our scripts).
|
||||||
|
To create a new translation, run::
|
||||||
|
|
||||||
|
build_tools/update_translations.fish po/LANG.po
|
||||||
|
|
||||||
|
By default, this also creates ``mo`` files, which contain the information from the ``po`` files in a
|
||||||
|
binary format.
|
||||||
|
Fish needs these files to for actually translating at runtime.
|
||||||
|
They are not tracked in version control, but they can help translators check if their translations
|
||||||
|
show up correctly.
|
||||||
|
If you build fish locally (``cargo build``), and then run the resulting binary,
|
||||||
|
it will make use of the ``mo`` files generated by the script.
|
||||||
|
Use the ``LANG`` environment variable to tell fish which language to use, e.g.::
|
||||||
|
|
||||||
|
LANG=pt_BR.utf8 target/debug/fish
|
||||||
|
|
||||||
|
If you do not care about the ``mo`` files you can pass the ``--no-mo`` flag to the
|
||||||
|
``update_translations.fish`` script.
|
||||||
|
|
||||||
|
Modifying existing translations
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
If you want to work on translations for a language which already has a corresponding ``po`` file, it
|
||||||
|
is sufficient to edit this file. No other changes are necessary.
|
||||||
|
|
||||||
|
To see your translations in action you can run::
|
||||||
|
|
||||||
|
build_tools/update_translations.fish --only-mo po/LANG.po
|
||||||
|
|
||||||
|
to update the binary ``mo`` used by fish. Check the information for adding new languages for a
|
||||||
|
description on how you can get fish to use these files.
|
||||||
|
Running this script requires a fish executable and the gettext ``msgfmt`` tool.
|
||||||
|
|
||||||
|
Editing PO files
|
||||||
|
----------------
|
||||||
|
|
||||||
Many tools are available for editing translation files, including
|
Many tools are available for editing translation files, including
|
||||||
command-line and graphical user interface programs. For simple use, you can use your text editor.
|
command-line and graphical user interface programs. For simple use, you can use your text editor.
|
||||||
@@ -301,9 +344,10 @@ command-line and graphical user interface programs. For simple use, you can use
|
|||||||
Open up the po file, for example ``po/sv.po``, and you'll see something like::
|
Open up the po file, for example ``po/sv.po``, and you'll see something like::
|
||||||
|
|
||||||
msgid "%ls: No suitable job\n"
|
msgid "%ls: No suitable job\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
The ``msgid`` here is the "name" of the string to translate, typically the english string to translate. The second line (``msgstr``) is where your translation goes.
|
The ``msgid`` here is the "name" of the string to translate, typically the English string to translate.
|
||||||
|
The second line (``msgstr``) is where your translation goes.
|
||||||
|
|
||||||
For example::
|
For example::
|
||||||
|
|
||||||
@@ -316,11 +360,17 @@ Also any escaped characters, like that ``\n`` newline at the end, should be kept
|
|||||||
|
|
||||||
Our tests run ``msgfmt --check-format /path/to/file``, so they would catch mismatched placeholders - otherwise fish would crash at runtime when the string is about to be used.
|
Our tests run ``msgfmt --check-format /path/to/file``, so they would catch mismatched placeholders - otherwise fish would crash at runtime when the string is about to be used.
|
||||||
|
|
||||||
Be cautious about blindly updating an existing translation file. Trivial
|
Be cautious about blindly updating an existing translation file.
|
||||||
changes to an existing message (eg changing the punctuation) will cause
|
``msgid`` strings should never be updated manually, only by running the appropriate script.
|
||||||
existing translations to be removed, since the tools do literal string
|
|
||||||
matching. Therefore, in general, you need to carefully review any
|
Modifications to strings in source files
|
||||||
recommended deletions.
|
----------------------------------------
|
||||||
|
|
||||||
|
If a string changes in the sources, the old translations will no longer work.
|
||||||
|
They will be preserved in the ``po`` files, but commented-out (starting with ``#~``).
|
||||||
|
If you add/remove/change a translatable strings in a source file,
|
||||||
|
run ``build_tools/update_translations.fish`` to propagate this to all translation files (``po/*.po``).
|
||||||
|
This is only relevant for developers modifying the source files of fish or fish scripts.
|
||||||
|
|
||||||
Setting Code Up For Translations
|
Setting Code Up For Translations
|
||||||
--------------------------------
|
--------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user