How to Contribute Translations to 996.ICU: A Complete Guide
To contribute translations to 996.ICU, fork the repository, create a new Markdown file in the i18n/ folder following the naming convention (e.g., vi_VN.md), copy the structure from an existing translation like zh-Hans.md, and submit a pull request to the master branch.
The 996.ICU repository is an open-source project that tracks the "996" work schedule (9 AM to 9 PM, 6 days per week) and its legal implications. Since the project aims to reach developers worldwide, contributing translations to 996.ICU is one of the most valuable ways to participate. All internationalization (i18n) content lives in a dedicated folder with specific structural requirements.
Understanding the 996.ICU Translation Structure
The repository organizes all multilingual content under the i18n/ directory. This folder contains individual Markdown files for each supported language, plus a central registry that documents the naming conventions.
Key files you need to know:
i18n/README.md– The translation guide that lists every supported language code and explains the file naming scheme (e.g.,en_US.md,zh-Hant.md).i18n/zh-Hans.md– The Chinese Simplified translation that serves as the canonical template for new translations.README.md(root) – The main project file that explicitly invites contributions: "Please feel free to translate 996.ICU's contents (i18n/README.md) …" (lines 74-75).
Step-by-Step Guide to Contributing Translations
1. Review the Translation Guidelines
Before writing, read i18n/README.md to confirm your target language isn't already in progress and to understand the specific locale code format required for the filename.
2. Fork and Clone the Repository
Create your own copy of the repository on GitHub, then clone it locally to work on the translation.
git clone https://github.com/<your-username>/996.ICU.git
cd 996.ICU
3. Create the Translation File
Create a new Markdown file in the i18n/ directory using the correct locale naming convention. For example, for Vietnamese:
touch i18n/vi_VN.md
Open the file and structure it exactly like the existing translations. The file must start with a level-1 heading:
# 996.ICU
Include all sections from the main README: the definition of "996," legal explanations, statistics, and licensing information. Keep the original Markdown formatting intact—only translate the visible text, not the syntax.
4. Validate Your Formatting
Run a local preview using any Markdown viewer or CLI tool to ensure headings, tables, links, and images render correctly. Broken formatting will delay your pull request approval.
5. Commit Your Changes
Stage the new file and commit with a descriptive message:
git add i18n/vi_VN.md
git commit -m "Add Vietnamese translation (vi_VN)"
For updates to existing translations, use messages like Fix typos in French translation.
6. Submit a Pull Request
Push your branch to your fork and open a Pull Request against the master branch of the upstream 996icu/996.ICU repository.
In your PR description:
- Link to the new file (e.g.,
i18n/vi_VN.md) - State the language code and name
- Confirm that you created the translation yourself
Maintainers will review for consistency with the source material and may request minor edits before merging.
7. Post-Merge Availability
Once merged, your translation becomes available on the 996.ICU website through the language selector and is included in all future repository releases.
Translation File Requirements and Best Practices
Naming Convention: Use standard locale codes with underscores (e.g., en_US.md, zh-Hant.md, de_DE.md). Check i18n/README.md for the specific code format preferred by this project.
Content Structure: Mirror the main README.md exactly. Include:
-
The
# 996.ICUheader -
"What is 996?" explanation
-
Legal references and statutes
-
Statistics and data
-
License information
Formatting Rules:
- Preserve all Markdown syntax (headings, lists, links, bold text)
- Do not translate code blocks unless they contain comments
- Keep image paths and link URLs identical to the source
- Maintain table structures; only translate cell content
Complete Workflow Example
Here is the complete shell workflow for adding a Vietnamese translation:
# Fork the repository on GitHub first, then:
# Clone your fork
git clone https://github.com/<your-username>/996.ICU.git
cd 996.ICU
# Create the translation file with proper structure
cat > i18n/vi_VN.md <<'EOF'
# 996.ICU
“996” là chế độ làm việc: từ 9 h sáng tới 9 h tối, 6 ngày/tuần …
... (translate the rest of the README content) ...
EOF
# Validate formatting (using markdown-cli or similar)
markdown-cli i18n/vi_VN.md
# Stage and commit
git add i18n/vi_VN.md
git commit -m "Add Vietnamese translation (vi_VN)"
# Push to your fork
git push origin master
# Finally, open a Pull Request on GitHub targeting 996icu/996.ICU master branch
Summary
- All translations live in the
i18n/folder with locale-specific filenames likeen_US.mdorzh-Hant.md. - Use
i18n/zh-Hans.mdas your structural template and follow the naming conventions documented ini18n/README.md. - Submit changes via Pull Request to the
masterbranch with clear commit messages describing the language added or modified. - Preserve all Markdown formatting, links, and structure while translating only the visible text content.
Frequently Asked Questions
What file naming convention should I use for 996.ICU translations?
Use standard locale codes with underscores or hyphens, such as en_US.md, de_DE.md, or zh-Hant.md. The specific format for each supported language is documented in i18n/README.md, which serves as the registry for all translation files.
How do I know if my translation follows the correct structure?
Compare your file against i18n/zh-Hans.md (Chinese Simplified), which serves as the canonical template. Your translation must start with # 996.ICU and include all sections from the main README: the 996 definition, legal references, statistics, and licensing. Validate your Markdown locally to ensure headings, tables, and links render correctly before submitting.
Can I update an existing translation instead of adding a new language?
Yes. To fix typos or improve an existing translation, edit the relevant file in i18n/ (e.g., i18n/fr_FR.md for French). Commit your changes with a descriptive message like Fix typos in French translation and open a Pull Request against the master branch. The maintainers will review your improvements for accuracy and consistency.
Which branch should I target when opening a pull request?
Always target the master branch when submitting translation contributions. The repository uses master as the default branch for all incoming changes. In your Pull Request description, clearly state the language code, link to the new or modified file, and confirm that you performed the translation yourself.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →