BlogsGitLabDocumentation Localization Infrastructure

Documentation Localization Infrastructure

Documentation Localization Infrastructure

5
posts
2018–2025

GitLab has built and automated a new Japanese GitLab Docs site, marking its first move toward making extensive documentation accessible worldwide. This involved creating localization infrastructure from the ground up, integrating with docs-as-code principles. The system uses AI-assisted translation with human post-editing, custom code to protect markdown syntax, an English fallback mechanism, dynamic anchor ID generation for consistent linking, and extended CI/CD pipelines to test localized cont

2025

How we built and automated our new Japanese GitLab Docs site

12/11/2025

This post details the technical implementation of the Japanese GitLab Docs site. Key contributions include: 1. Integrating new `doc-locale/ja-jp` folders within existing English content structure for co-location of translations. 2. Developing custom code and regex in the Translation Management System (TMS) to protect code blocks, URLs, and other functional markdown elements from translation. 3. Establishing an English fallback mechanism using Hugo's rendering system to display English content with translated navigation when Japanese translations are incomplete. 4. Extending CI/CD pipelines to test localized content in Translation MRs, catching invalid Hugo shortcodes, spaces in links, bare URLs, orphaned files, and redirects. 5. Implementing dynamic anchor ID generation by pre-processing English files to ensure consistent linking across languages. 6. Orchestrating a centralized translation request system to monitor English files, route for translation, create translation MRs, and track file status.

2022

Five fast facts about docs as code at GitLab

10/12/2022

This post details how GitLab uses its own platform for a 'docs-as-code' workflow. It covers planning using epics and issues, feedback and review via merge requests with suggestions, previewing changes with review apps, testing content changes with CI pipelines (including link checking and grammar/style rules), and generating/hosting HTML output on GitLab Pages. It highlights the benefits of using a single platform for the entire documentation lifecycle.

2021

How to automate localization for Flutter apps

12/10/2021

This post details how to automate the localization process for Flutter applications by integrating GitLab with the Localizely platform. It outlines a workflow where developers push ARB files to GitLab, which triggers Localizely via webhooks. Translators work on Localizely, and updated ARB files are pushed back to GitLab via Merge Requests. This streamlines the translation synchronization process, reducing manual effort and improving efficiency.

How Weet integrates localization into the GitLab pipeline with Lokalise

9/13/2021

This post details how Weet integrated Lokalise with GitLab CI/CD to automate their application localization process. Previously, manual CSV file handling or direct IDE translation led to delays and bugs. The integration allows for automatic string extraction to Lokalise, assignment to translators, and merging back via merge requests, streamlining the localization workflow within the CI/CD pipeline. Weet also implemented internal processes for managing localization data, including splitting into multiple projects, using a naming pattern for keys, and defining rules for updating vs. adding/removing keys to manage conflicts.

2018

Automate your localization with GitLab + Crowdin

2/6/2018

This post details the integration of GitLab with Crowdin to automate the localization process. It explains how Crowdin synchronizes translatable and translated files between GitLab repositories and Crowdin projects, enabling simultaneous work for translators and developers. The integration automates the upload of translatable texts and the creation of merge requests in GitLab for translated files, allowing for review before merging. Key points for localization include treating it as a continuous process, ensuring UI flexibility for different language lengths, and maintaining consistency through style guides and translation memories.