about summary refs log tree commit diff
path: root/docs
diff options
context:
space:
mode:
authorPaul Frazee <pfrazee@gmail.com>2025-02-06 12:46:10 -0800
committerGitHub <noreply@github.com>2025-02-06 12:46:10 -0800
commitb12d39b4cff0fe1b91fb16496c3fea1ed22de5cf (patch)
tree7486412af2ce67f2c37373de66d035875a0b24b6 /docs
parentbe1285ea36124c5db3e2b270fd28b97900fa1bd9 (diff)
downloadvoidsky-b12d39b4cff0fe1b91fb16496c3fea1ed22de5cf.tar.zst
Updated i18n process (#7684)
* Update documentation

* Update crowdin.yml for cli usage

* Add more info about crowdin cli setup

* Add intl:pull and intl:push commands
Diffstat (limited to 'docs')
-rw-r--r--docs/localization.md62
1 files changed, 55 insertions, 7 deletions
diff --git a/docs/localization.md b/docs/localization.md
index 0de244795..1c43fe439 100644
--- a/docs/localization.md
+++ b/docs/localization.md
@@ -3,9 +3,62 @@
 We want the official Bluesky app to be supported in as many languages as possible. If you want to help us translate the app, please open a PR or issue on the [Bluesky app repo on GitHub](https://github.com/bluesky-social/social-app)
 
 ## Tools
-We are using Lingui to manage translations. You can find the documentation [here](https://lingui.dev/).
+
+- We use Lingui to implement translations. You can find the documentation [here](https://lingui.dev/).
+- We use Crowdin to manage translations.
+  - Bluesky Crowdin: https://crowdin.com/project/bluesky-social
+  - Introduction to Crowdin: https://support.crowdin.com/for-translators/
+
+## Translators
+
+Much of the app is translated by community contributions. (We <3 our translators!) If you want to participate in the translation of the app, read this section.
+
+### Using Crowdin
+
+[Crowdin](https://crowdin.com/project/bluesky-social) is our primary tool for managing translations. There are two roles:
+
+- **Proof-readers**. Can create new translations and approve submitted translations.
+- **Translators**. Can create new translations.
+
+All translations must be approved by proof-readers before they are accepted into the app.
+
+### Using other platforms
+
+You may contribute PRs separately from Crowdin, however we strongly recommend using Crowdin to avoid conflicts.
+
+### Code of conduct on Crowdin
+
+Please treat everyone with respect. Proof-readers are given final say on translations. Translators who frequently come into conflict with other translators, or who contribute noticably incorrect translations, will have their membership to the Crowdin project revoked.
+
+### Adding a new language
+
+Create a new [Crowdin discussion](https://crowdin.com/project/bluesky-social/discussions) or [GitHub issue](https://github.com/bluesky-social/social-app/issues) requesting the new language be added to the project.
+
+Please only request a new language when you are certain you will be able to contribute a substantive portion of translations for the language.
+
+## Maintainers
+
+Install the [Crowdin CLI](https://crowdin.github.io/crowdin-cli/). You will need to [configure your API token](https://crowdin.github.io/crowdin-cli/configuration) to access the project.
+
+### Release process
+
+1. Pull main and create a branch.
+1. Run `yarn intl:pull` to fetch all translation updates from Crowdin.
+1. Create a PR, ensure the translations all look correct, and merge.
+1. Merge all approved translation PRs (contributions from outside crowdin).
+1. Pull main.
+1. Run `yarn intl:extract` to sync the english `.po` file with the state of the app.
+1. Run `yarn intl:push` to sync Crowdin with the state of the repo.
+1. Commit the updated english `.po` and push to GitHub.
+
+### Testing the translations in Crowdin
+
+You can run `yarn intl:pull` to pull the currently-approved translations from Crowdin.
+
+## Developers
 
 ### Adding new strings
+
 When adding a new string, do it as follows:
 ```jsx
 // Before
@@ -61,6 +114,7 @@ So the workflow is as follows:
 6. Enjoy translated app!
 
 ### Common pitfalls
+
 These pitfalls are memoization pitfalls that will cause the components to not re-render when the locale is changed -- causing stale translations to be shown.
 
 ```jsx
@@ -111,9 +165,3 @@ export function Welcome() {
   return <div>{welcome}</div>;
 }
 ```
-
-
-### Credits
-Please check each individual `messages.po` file for the credits of the translators. We are very grateful for their help! 
-
-If you would like to translate the Bluesky app into your language, please open a PR or issue on this repo.