Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for community localization #239

Closed
10 tasks done
eloquence opened this issue Feb 2, 2019 · 13 comments
Closed
10 tasks done

Add support for community localization #239

eloquence opened this issue Feb 2, 2019 · 13 comments

Comments

@eloquence
Copy link
Member

eloquence commented Feb 2, 2019

Given that the current SecureDrop web UI can be fully localized, having the UI of the client in English only represents a regression, which may slow down medium term adoption of the client.

We should ensure that all messages in the client can be localized via Weblate, and document the specifics of the translation process.

This is not strictly required for the beta (which will likely be only with English language newsrooms), though it would be good to lay the foundation for community translations early.


  1. configure Weblate component #1264
  2. review codebase for UI strings to be translated #1265
  3. script continuous-localization workflow between GitHub repository and Weblate component #1266
  4. SecureDrop Client localization workflow follow-up #1302
  5. rework localization Make targets for PR-level use #1317
  6. packaging should include compiled gettext MOs #1283
  7. draft plans for coordination, documentation, and communications #1304
  8. add test suite for running in a translated locale #1398
  9. Add list of supported languages; disable unsupported languages #1438

On hold:

@eloquence eloquence added the i18n label Feb 2, 2019
@eloquence eloquence added this to the Post-Beta milestone Dec 13, 2019
@eloquence eloquence added this to Next sprint candidates in SecureDrop Team Board Jun 3, 2021
@eloquence eloquence moved this from Next sprint candidates to SecureDrop Sprint #71 (5/20-6/2) in SecureDrop Team Board Jun 3, 2021
@eloquence eloquence moved this from SecureDrop Sprint #72 (6/3-6/17) to In Development in SecureDrop Team Board Jun 9, 2021
@cfm
Copy link
Member

cfm commented Jun 10, 2021

Initial findings after familiarizing myself with the status of i18n/l10n in both securedrop and securedrop-client:

  1. UI strings here are already (on spot-checking, not exhaustive inventory) wrapped in gettext() calls.

  2. I have separately drafted a diagram of securedrop's i18n workflow, which I'll review with @rmol with an eye to:

    1. comprehension on my part :-);
    2. any desired changes to this workflow for securedrop-client, such as experimenting with PR-based and continuous translation; and
    3. whether/how to adapt securedrop's i18n_tool.py for securedrop-client.

@cfm
Copy link
Member

cfm commented Jun 24, 2021

In discussion with @rmol: Let's use securedrop-client to test out PR-based and continuous translation (as a prototype for switching securedrop to this workflow as well). This approach will largely obviate the need for a i18n_tool.py or equivalent in securedrop-client except for the functions of:

  1. extracting source strings into .pot;
  2. listing supported (100% translated) locales; and
    • This designation, and the process for granting/revoking it, might be worth formally reconsidering—though the stakes are lower on the Journalist Interface (and client) than on the Source Interface.
  3. giving credit to contributing translators.

These operations might still have to be scripted (either separately or as Makefile targets) for manual invocation, but we should look into automating them fully in CI jobs.

@cfm
Copy link
Member

cfm commented Jul 1, 2021

Confirmed this approach with @creviera.

@cfm cfm added the epic label Jul 1, 2021
@eloquence eloquence moved this from In Development to Near Term - SD Workstation in SecureDrop Team Board Jul 7, 2021
@eloquence eloquence moved this from Near Term - SD Workstation to Q3/Q4 priorities in SecureDrop Team Board Jul 14, 2021
@cfm
Copy link
Member

cfm commented Dec 7, 2021

With #1317 done, I've updated the description with the current status of this epic. #1304 is my focus this sprint. We can return to #1283 (which should just require retesting and a securedrop-debian-packaging update) next sprint.

Cc: @eloquence, @creviera

@sssoleileraaa
Copy link
Contributor

@cfm QA for the next release happens on the 31st of May, so I think we'll want to notify folks that we're ready for translation as soon as possible.

@eloquence eloquence moved this from Q2 roadmap to Next sprint candidates in SecureDrop Team Board Apr 27, 2022
@eloquence eloquence moved this from Next sprint candidates to Sprint #87 (4/13-4/27) in SecureDrop Team Board Apr 27, 2022
@cfm
Copy link
Member

cfm commented May 11, 2022

Current status, including tasks remaining to hit a May 31 formal start of QA and translation review:

  1. Translatability: The securedrop_client/locale/ directory is being updated automatically as a prerequisite to merge into main.
  2. Translation: Our wonderful volunteer translators are already keeping up with translation of strings present in main! Draft PR Translations update from Weblate #1315 has the changes that have accumulated since this workflow was first enabled.
  3. Testing: Localization is tested both automatically and during manual preflight testing (since tests localization and documents preflight check #1401).
  4. Documentation: SecureDrop's "Translations" page covers the Client as well as the Server workflow. The "Internationalization" wiki page gives a technical overview.
  5. Limiting users to supported languages: I've suggested a trivial approach in Add list of supported languages; disable unsupported languages #1438 (comment), which I could implement in the next sprint.
  6. Announcements: Drafted, pending team approval.

Any questions or concerns about proceeding as I've outlined here? Anything missing?

@cfm cfm moved this from Sprint #88 (4/27-5/11) to In Development in SecureDrop Team Board May 11, 2022
@cfm cfm self-assigned this May 11, 2022
@sssoleileraaa
Copy link
Contributor

sssoleileraaa commented May 11, 2022

Thanks for the status update. Could you describe a little more about the process of setting which languages would have their catalogs packaged (based on manually looking at translation percentage)? Like, will there be a last call for translations before a QA period so that we can figure out if we need to update the list before releasing the first rc?

@cfm
Copy link
Member

cfm commented May 12, 2022

Per #1438 (comment), it would be a change in setup.py, basically one line +/‒ per language enabled/disabled. Since translation is already possible and happening continuously, the pre-release timeline is up to us and Localization Lab. Either:

  1. for more testing time: we review and merge translations (e.g.) at the feature freeze and test them during the two-week QA window; or
  2. for more translation time: as for the Server, we use the QA period as the official or priority translation window, merge the final translations before building the production packages, and test them during preflight testing.

Since this workflow is continuous, its tooling is stage-agnostic. So we can choose the timeline that will suit us better, both in general and for this first time through. What do you (and @eloquence?) think?

@cfm
Copy link
Member

cfm commented May 12, 2022

(As requested during yesterday's sprint-planning meeting, I've put finalizing this timeline on the agenda for Monday's Workstation hangout.)

@cfm
Copy link
Member

cfm commented May 17, 2022

#239 (comment):

  1. for more testing time: we review and merge translations (e.g.) at the feature freeze and test them during the two-week QA window; or

  2. for more translation time: as for the Server, we use the QA period as the official or priority translation window, merge the final translations before building the production packages, and test them during preflight testing.

Today we decided to go with option (1), so that the release manager can determine which languages to include as supported as part of preparing an RC according to the release checklist.

@cfm
Copy link
Member

cfm commented Jun 3, 2022

With today's announcement, translation is officially open in Weblate. All that remains here is #1497, which is ready for review apart from a test that's unexpectedly failing.

@cfm
Copy link
Member

cfm commented Jul 7, 2022

Since #1280 is on hold, the planned work in this epic is done. However, I'll leave this epic open until we successfully release one or more translations, which we prepared in #1531 but weren't able to include in v0.8.0.

@cfm cfm moved this from In Development to Near Term - SD Workstation in SecureDrop Team Board Jul 7, 2022
@cfm
Copy link
Member

cfm commented Jan 4, 2023

#239 (comment):

I'll leave this epic open until we successfully release one or more translations, which we prepared in #1531 but weren't able to include in v0.8.0.

However, since then, we have released v0.8.1, which was deliberately branched from v0.8.0, still without translations, rather than from main, where pt_PT (b0dc0d2) and zh_Hans (42aaf10) have been enabled since July 12. I'm going to go ahead and close this epic, since:

  1. no more work is planned here, which serves as the basis for adopt continuous localization securedrop#6232;
  2. we have preflight QA documented since tests localization and documents preflight check #1401; and
  3. we can always reopen this epic, or just file follow-up tickets, for any further work or regressions discovered for v0.9.0.

@cfm cfm closed this as completed Jan 4, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
No open projects
SecureDrop Team Board
Near Term - SD Workstation
Development

No branches or pull requests

3 participants