session-ios/Signal/translations/TRANSLATIONS.md
Michael Kirk 496f8117f9 Update translations (#1172)
* Update translations (4 new translations!)

*New Translations*

- Persian (fa) (100%)
- Indonesian (id) (82%)
- Macedonian (Macedonia) (mk_MK) 100%
- Shona (sn) 98%

Inluded a script to pull translations that are >=80% complete

80% is completely arbitrary, but nicely bisects the current translation
efforts which fall into buckets of "over 80%" and "under 50%."

// FREEBIE

* final tx pull before push source

//FREEBIE

* tx pull, after updating source (plus some eager beavers already pushed new translations)

iStringVerify passes

* Make "add person" label more i18n flexible

This accommodates (e.g.) Italian, which was being truncated.

// FREEBIE

* Galician localization

Moitas grazas xesusmosquera!

// FREEBIE

* i18n for Unarchive action

started leaving hints for our translators. These are currently manually
redundantly duplicated in the source/strings file, in hopes of a more
automated future with genstrings.

// FREEBIE

* include iStringsVerify check in update-translations script

and pull latest translations after including UNARCHIVE action
// FREEBIE

* i18n GROUP_MEMBERS_HEADER

//FREEBIE

* pull translations
2016-05-08 17:17:37 -07:00

2.1 KiB

Translations

Translations are solicited on Transifex[https://www.transifex.com/]. We upload our source language (US English) to Transifex, where our translators can submit their translations. Before the app is released, we pull their latest work into the code base.

Fetch

You should always fetch the latest translations before pushing new source translations, as any newly updated source strings will blow away the existing translated strings. Generally when a source string is updated, it's preferred to have the previous translation vs an english string.

To fetch the latest translations:

bin/pull-translations

This imposes some limits on what localizations we include. For example, we don't want to include languages until a substantial portion of the app has been translated.

Managing Source Strings

There is currently no automated way to extract our localized strings. Instead developers keep our source strings file up to date manually as we change strings in the code base.

Be sure to add a comment to provide context to the translators. For example:

/* Tab button label which takes you to view all your archived conversations */
ARCHIVE_HEADER="Archive"
/* Button label to archive the current conversation */
ARCHIVE_ACTION="Archive"

Why comment? For example, in English these are the same, but in (e.g.) Finnish the noun/verb are distinct.

/* Tab button label which takes you to view all your archived conversations */
ARCHIVE_HEADER="Arkisto"
/* Button label to archive the current conversation */
ARCHIVE_ACTION="Arkistoi"

Context should also provide a hint as to how much text should be provided. For example, is it an alert title, which can be a few words, a button, which must be very short, or an alert message, which can be a little longer?

Upload

Make new source strings available to our translators by uploading them to transifex. Make sure you've fetched the latest translations first, otherwise you could overwrite some useful translations on Transifex.

tx push --source