IPFS Translation Project
🌐 ✍️ 🖖
Adapting IPFS apps and websites for a specific language by translating text and adding locale-specific components
How can I contribute translation for my language?
Go to https://www.transifex.com/ipfs/public/, select languages you want to help with and start translating!
Transifex is localization platform for crowdsourcing translations from IPFS Community:
- Everyone can contribute translations.
- Missing language? Request it via Transifex UI
- Night Owl? Try Dark Themes
That is all!
I am a developer, how can I enable translation of my project?
- Developer Tools and Best Practices
What does i18n mean?
Internationalization (I18N) is the process of designing a software application so that it can be adapted to various languages and regions without engineering changes.
Localization (L10N) is the process of adapting internationalized software for a specific region or language by translating text and adding locale-specific components.
Localization (which is potentially performed multiple times, for different locales) uses the infrastructure or flexibility provided by internationalization (which is ideally performed only once, or as an integral part of ongoing development).
Developer Tools and Best Practices
Adding i18n to Your Project
- Extract strings into separate files(s) in JSON-ICU or PO formats and wire them up to be loaded by your app.
- See sections below for platform-specific notes
- Create a PR with above changes in your repository
- Create an issue in this repo to: Add a new project to Transifex
Next steps, after your project is added to Transifex:
.tx/configto the PR (read Transifex section below)
- Smoke-test by pushing source locale with
tx push -s
- Merge the PR to
- Set up automated sync of source locale (read Transifex section below)
After this initial setup, the only manual step going forward is fetching new translations with
tx pull -a as a part of release dance of your project.
Locale File Formats
The most important is to use future-proof format for locale files, such as ICU, JSON-ICU or gettext (
Transifex is localization platform for crowdsourcing translations from IPFS Community.
- Installing the Transifex Client
- Using Transifex with GitHub in Your Development Workflow
- Understanding User Roles
- How Translation Memory works
Transifex use POSIX style
_ underscores when in it's locale tags to separate language tag and ISO region code, so
en or English as the language, and
GB or Great Britain as the region.
Browsers and the IETF standard use hyphens as the separator, like
en-GB. Some libraries such as i18next look up languages based on the hyphenated IETF language code, with hyphens rather than undercores so we tell the
tx client to map those underscored country specific locales to the hypenated version in the config file
.tx/config by adding:
lang_map = zh_CN: zh-CN, ko_KR: ko-KR
Automatically Updating Source Locale at Transifex
Manually updating source files isn't fun or scalable if you've got frequent updates. To avoid this, you can have Transifex automatically check for updates to your source file. You simply need to provide Transifex with the public URL of the file. The file can be hosted on any service, such as GitHub
Project Manager is able to set up source file sync automation. Every new text that lands in
master branch will be fetched by Transifex. Sync happens twice a day, so translation team gets notification within 24h.
Having this, the only manual step is to fetch fresh translations via
tx pull -a as a part of release dance
Example: Setting up IPFS Companion to sync source locale using raw URL:
Sharing Translation Memory
Each project in Transifex has its own Translation Memory. However, if you have projects which have similar or related content, e.g. [IPFS app and a website], you can share TMs across those projects by creating a TM group. – sharing-tm
Right now we have a single TM group named "ipfs".