Skip to content

META: Internationalization / add translations

We want to start translating GitLab so everyone in the world can collaborate.

This is primarily driven by requirements from a partner, hence some of the questions below.

High level goals

  • minimize performance impact
  • minimize engineering overhead
  • easy to contribute translations for everyone in the community
  • ability to do this iteratively, both the translation as the implementation

Out of scope

  • Right-to-left languages
  • Translating the documentation

Plan

  1. Start small, one page at the time. First page should be cycle analytics, as it's not crucial to workflows.
  2. Only support left-to-right languages
  3. Start sooner (9.1 at earliest) rather than later to learn from experience

Add languages

Externalize strings

Helpers and process

Platform Pages ~Platform

Discussion Pages ~Discussion

CI/CD Pages ~"CI/CD"

  • CI/CD > Pipelines (list)
  • CI/CD > Pipelines (new)
  • CI/CD > Pipelines (details)
  • CI/CD > Jobs (list)
  • CI/CD > Jobs (details)
  • CI/CD > Schedules (list): #34932 (closed) (%9.4)
  • CI/CD > Schedules (new/edit): #34937 (closed) (%9.4)
  • CI/CD > Environments (list)
  • CI/CD > Environments (new/edit)
  • CI/CD > Environments (details)
  • CI/CD > Clusters (list)
  • CI/CD > Clusters (new)
  • CI/CD > Clusters (details)
  • CI/CD > Charts
  • Settings > CI/CD
  • Settings > Pages (list)
  • Settings > Pages (new domain)
  • CI Lint Page

Prometheus Pages ~Prometheus

Questions

How do I externalize strings?

See documentation: https://docs.gitlab.com/ce/development/i18n_guide.html

Which languages will we support initially?

  • Required: French, German, Spanish, Italian, Brazilian Portuguese, Korean, Japanese, Traditional Chinese, Simplified Chinese.

We should start with either Spanish or Brazilian Portuguese, as we have many people at GitLab that are fluent in these languages.

Who does the translating?

Members of the community have been very active contributing translations, and our partner will also help with the initial translation (they have a team available for this).

Where do we store the translations?

?

How do we retrieve the translations?

?

Original issue

Translation Section Tasks

  • 1: Setup en locale to have a special dates and times section
  • 3: Determine all rails validation error message keys that need to be created
  • 3: Setup special sections to support built in rails validation error messages
  • 2: Determine all rails model keys that need to be created
  • 2: Setup special sections to support rails model and model attributes display translations
  • 3: Update all text and dates and times in app/views
  • 3: Update all text and dates and times in app/controllers
  • 2: Update all text and dates and times in app/finders
  • 3: Update all text and dates and times in app/helpers
  • 3: Update all text and dates and times in app/mailers
  • 3: Update all text and dates and times in app/models
  • 2: Update all text and dates and times in app/services
  • 1: Update all text and dates and times in app/uploaders
  • 1: Update all text and dates and times in app/workers
  • 2: Examine extent of use of text in lib
  • 3: Update all text and dates and times in lib
  • 3: Need to check javascript for text output
  • 2: Need plan for static files in public such as 404

Additional Tasks/Concerns

  • 3: Need to check what is stored in databases that is not user supplied but generated, this text should be translated before being saved
  • 3: Manual QA to ensure all strings are encoded, this task occurs mostly after the main effort is completed and is generally a manual process of using the site under a second language and making sure you don't see any English

Questions:

  1. Do we foresee us translating any upstream gems that are referenced within the application? If yes, then which ones, and are we aware of a strategy on how we might go about internationalizing those gems.
  2. We have not included translation of currencies in our estimation. Are there any points in the application where currency translation might be needed?
  3. Do we intend running automated tests in non-English languages. In that case, a large number of strings in the Rspec & Spinach tests would need to be changed, so that they may get referenced by the i18n translation system. Any take on that?

It would be great to have someone do a detailed review of our task list as we intend to use it in moving ahead with the internationalization effort. And, if we have missed any potential action items within our task list, or over/under estimated any, please do bring it up.

This page may contain information related to upcoming products, features and functionality. It is important to note that the information presented is for informational purposes only, so please do not rely on the information for purchasing or planning purposes. Just like with all projects, the items mentioned on the page are subject to change or delay, and the development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab Inc.

Edited by 🤖 GitLab Bot 🤖