Policy on Supported Languages

Version

Approved

5 (internal link)

8 March 2023

Definitions

Note

The key words MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL in this document are to be interpreted as described in RFC 2119.

translation freeze

The deadline for translations to be reviewed and merged in order to be included in a given release. For SecureDrop, this is release day.

Thresholds for Translation and Review Coverage

Translation Coverage

Review Coverage [1]

To grant support

100%

100%

To maintain support

80%

100%

In addition to these thresholds, the SecureDrop team will:

  1. always prioritize the translation of source-facing strings, given their importance for sources’ security; and

  2. inform Localization Lab when particular strings should be prioritized or even considered blocking for a given release.

Granting Support for a Language

Granting support for a new language consists of adding an entry in the supported_locales object in securedrop’s i18n.json and/or in the “Localization” section in securedrop-client’s MANIFEST.in. Other steps, such as communication, are at the discretion of the Localization Manager.

  1. A language L that reaches coverage in time for a release version V’s translation freeze SHOULD be nominated for support in version V.

  2. The Localization Manager SHOULD ask Localization Lab whether they believe L’s language team is likely to be able to maintain coverage for the foreseeable future.

    1. If so, the Localization Manager SHOULD grant support for L.

    2. If not, the Localization Manager MUST NOT grant support for L.

Revoking Support for a Language

Revoking support for a currently-supported language consists of removing the language’s entries in i18n.json and/or MANIFEST.in. Other steps, such as communication, are at the discretion of the Localization Manager.

Consider an expected release timeline as follows:

Version

Translation Freeze

V1

January 1

V2

March 1

V3

May 1

Then:

  1. A language L that misses coverage for a release version V1’s translation freeze MUST be considered on probation for up to the next two releases V2 and V3. While on probation, a language is still considered supported until it has missed coverage for a total of 3 consecutive translation freezes.

    1. In consultation with Localization Lab, the Localization Manager MAY consult the language census (internal link) and reach out to administrators who may be able to contribute to translation and review.

  2. If L misses coverage again for V2’s translation freeze and does not regain coverage for V3’s translation freeze, then the Localization Manager SHOULD revoke support for L for V3.

    1. In consultation with Localization Lab and the Release Manager, the Localization Manager MAY extend L’s probationary period, for example if the language census indicates that revoking support for L would jeopardize the default locale for many instances, for especially high-traffic or high-profile instances, etc.

Adding a New Language for Translation

Translators MUST ask Localization Lab to add a new language for translation in Weblate.

Technical Limitations

  • Although Weblate, our localization platform, supports arbitrary languages for translation and review, at runtime SecureDrop components are generally limited to locales with ISO 639-1 codes registered in the Common Locale Data Repository (CLDR). [2]

  • SecureDrop cannot be translated into the following constructed languages, because their ISO 639-1 codes are used in our automated tools and tests:

    • Esperanto (eo): used for pseudolocale generation

    • Interlingua (ia): used for testing

    • Ido (io): reserved for future use

Footnotes