Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Message to our translators: new release process from the Bluesky team #7317

Open
pfrazee opened this issue Dec 31, 2024 · 31 comments
Open

Message to our translators: new release process from the Bluesky team #7317

pfrazee opened this issue Dec 31, 2024 · 31 comments

Comments

@pfrazee
Copy link
Collaborator

pfrazee commented Dec 31, 2024

Hello to our many wonderful translators!

Many of you have requested more coordination around releases so that you can complete translations in time. I know it's frustrating to have translations lag behind releases!

We are often running close to the deadline with merges for a release, so sometimes it will be difficult to ensure a consistent timing. However, we're going to institute the following process to help improve outcomes:

Release coordination process

  • Release announcement post
    • When we believe we have a forthcoming release, @gaearon or I will create a new issue with the title: "Release: {version}"
    • This will apply only to major & minor semver releases. Patch releases will not receive a new issue.
    • We will include some information about the release if needed, and give a best estimate on when we think it will happen.
    • Note: our timelines move around all the time, so it's a best guess.
    • Feel free to reply to the issue with any necessary discussion.
  • QA phase
    • Prior to release, we run a QA process. We will post in the thread when that has started.
    • QA typically takes 24 hours. This gives some time to sneak in translations.
    • Once QA finishes, we will do another check for PRs and merge them.
  • Post-release patches
    • In the time following the release, new translation PRs can be posted to the release issue.
    • If there are enough PRs ready (3+) we will merge them and issue a patch release with your translations.

I hope this will be useful to everyone and reduce the lag time on translations! Thank you everyone, and have a wonderful new year!

@pfrazee pfrazee pinned this issue Dec 31, 2024
@pfrazee
Copy link
Collaborator Author

pfrazee commented Dec 31, 2024

Pinging contributors to the latest release: @xenomachina, @tkusano, @Signez, @claudiu-cristea, @BradEstey, @GrizliK1988, @rcombs, @mlocati, @Juanpabl, @snowp, @ovniroto, @thunderweasel, @valtlai, @benharri, @monty241, @skipness, @luan-u, @softastur, @tunetheweb, @quiple, @ivanbea, @DavidBuchanan314, @smileyhead, @renanmav, @auroursa, @mertssmnoglu, @karolstawowski, @kakkokari-gtyih, @roth-dev, @vinhphm, @hogaza, @voi-tech, @whoisanku, and @surfdude29

@surfdude29
Copy link
Contributor

Sounds like a great process to me! 👌

@smileyhead
Copy link
Contributor

That sounds lovely, thank you very much.

Will translators also be pinged in these release announcements?

@pfrazee
Copy link
Collaborator Author

pfrazee commented Dec 31, 2024

Hmm! Interesting. I'll do that and start maintaining a list. If somebody gets pinged that doesnt want it -- or doesn't get pinged and they do want it -- they can request to be added. Might look into creating a github org or team or something

@auroursa
Copy link
Contributor

auroursa commented Jan 1, 2025

Thank you for everything you’ve done, I have a thought about regarding new translation PRs submitted during the QA phase.

Is there a list of main contributors for each language who could help coordinate language-related issues? For instance, they could help decide which translation updates are worth merging during QA, or perhaps PRs proposed by these contributors could be accepted if there are no objections? Alternatively, could the ping list serve as an equivalent list of main contributors?

For languages without a clear primary contributor, there may be cases where the person submitting the original translation PR is different from the one proposing an improvement PR. This could potentially lead to confusion, especially when deciding which PR should take priority. Would it be helpful to establish some basic guidelines for such situations?

There may be some conventions here, but I think formalizing them is a good idea—it would be more friendly for new contributors looking to get involved in translations.

@Figim
Copy link

Figim commented Jan 1, 2025

Hello

https://crowdin.com/

Crowdin is great and easy for translations. I would like to help with Azerbaijani translations.

@monty241
Copy link
Contributor

monty241 commented Jan 2, 2025

From my experience with our own SQL engine and for instance Odoo this process will not really work using either community translators or commercial translators.

I would recommend decoupling the progress development and translation completely (async). Some languages might be up to date (English), but others might be lagging behind for months or longer.

Use a CAT tool like crowdin, localazy or weblate, daily load the new resources using manual exchange (for resources there is typically fine support) or use an API or custom driver such as https://forums.invantive.com/t/exchanging-translations-between-localazy-and-invantive-producer-oracle/4765, depending on the tool and process chosen there is a review phase for accepting translations and daily include the new translations in the daily build.

There is no need to work with PRs; I would strongly recommend against it and use a more granular/continuous way of working.

Just my 5 cents; feel free to ignore.

@Figim
Copy link

Figim commented Jan 2, 2025

From my experience with our own SQL engine and for instance Odoo this process will not really work using either community translators or commercial translators.

I would recommend decoupling the progress development and translation completely (async). Some languages might be up to date (English), but others might be lagging behind for months or longer.

Use a CAT tool like crowdin, localazy or weblate, daily load the new resources using manual exchange (for resources there is typically fine support) or use an API or custom driver such as https://forums.invantive.com/t/exchanging-translations-between-localazy-and-invantive-producer-oracle/4765, depending on the tool and process chosen there is a review phase for accepting translations and daily include the new translations in the daily build.

There is no need to work with PRs; I would strongly recommend against it and use a more granular/continuous way of working.

Just my 5 cents; feel free to ignore.

In fact, it makes more sense to do translations with a convenient UI. I don't know about the community. But I want to contribute to the translations. But it's difficult at the moment. I know English and it's easy for me. Azerbaijani is my native language.

Your app is great and thank you😊

@auroursa
Copy link
Contributor

auroursa commented Jan 2, 2025

The Mastodon project seems to use a bot to automate localization management, periodically uploading the latest translation strings to a platform and pulling the latest changes from there. This approach eliminates the need to review localization-related PRs entirely, and it lowers the barrier for contributing translations.

But getting there will take a lot of work, and it’s not exactly the focus of this issue.

@monty241
Copy link
Contributor

monty241 commented Jan 2, 2025

For our own software we solve the issue on untranslated resources by combining the (partially) translated output with an automatically maintained translation of resources using DeepL and Google Translate. This ensures that everything is always translated, albeit that the machine translations are sometimes less well done. When translators pick up work so one week later, the translations become better and eventually all languages converge to 100% human translation and reviewed.

The script is quite simple in sql: extract resources in primary language, upload to Localazy, download what is done, upload source also to database, generate and store machinetranslations where missing, and combine to downloads for all languages needed. The last ten years or so that process runs fine with now and then a cat tool being replaced.

@Figim
Copy link

Figim commented Jan 2, 2025

For our own software we solve the issue on untranslated resources by combining the (partially) translated output with an automatically maintained translation of resources using DeepL and Google Translate. This ensures that everything is always translated, albeit that the machine translations are sometimes less well done. When translators pick up work so one week later, the translations become better and eventually all languages converge to 100% human translation and reviewed.

The script is quite simple in sql: extract resources in primary language, upload to Localazy, download what is done, upload source also to database, generate and store machinetranslations where missing, and combine to downloads for all languages needed. The last ten years or so that process runs fine with now and then a cat tool being replaced.

Where are the instructions?

@monty241
Copy link
Contributor

monty241 commented Jan 2, 2025

Where are the instructions?

In our current setup, the involved translators get an email within 24 hours after a new resource is made available, something like "New translation work is available". A glossary with definitions and regular (existing) translations is available directly with the CAT-tool. For the rest there a no instructions other than read the manual of the CAT-tool, be a user of the app yourself when possible and read your email when possible.

In the past we have had a document with a lot of explanation, but it was found that although technically correct, no one was actually using it. All checks have been included in the process, like correct spacing, writing style, etc.

Only problems we typically see are:

  • fit to available screen real estate: English is typically quite short, some languages require 35% additional space.
  • verb versus noun: "to view" versus "a view", "conduct" versus "conduct" :-) Typically solved by avoiding the use of words that are multi interpretable.

@monty241
Copy link
Contributor

monty241 commented Jan 2, 2025

A convenient UI is already referenced:

Use a CAT tool like crowdin, localazy or weblate

@Figim
Copy link

Figim commented Jan 2, 2025

Where are the instructions?

In our current setup, the involved translators get an email within 24 hours after a new resource is made available, something like "New translation work is available". A glossary with definitions and regular (existing) translations is available directly with the CAT-tool. For the rest there a no instructions other than read the manual of the CAT-tool, be a user of the app yourself when possible and read your email when possible.

In the past we have had a document with a lot of explanation, but it was found that although technically correct, no one was actually using it. All checks have been included in the process, like correct spacing, writing style, etc.

Only problems we typically see are:

  • fit to available screen real estate: English is typically quite short, some languages require 35% additional space.
  • verb versus noun: "to view" versus "a view", "conduct" versus "conduct" :-) Typically solved by avoiding the use of words that are multi interpretable.

Please invite me as a translator.

@Signez
Copy link
Contributor

Signez commented Jan 2, 2025

I don't want to chime that much in on the CAT-tool vs. PR-based solution debate for now; honestly the current suggested process is good enough for now imho, and it also allows us translators to do an actual cycle of review on the whole po file to ensure the cohesive nature of the translation, which is a big plus.

On this thing especially:

  • verb versus noun: "to view" versus "a view", "conduct" versus "conduct" :-) Typically solved by avoiding the use of words that are multi interpretable.

This is fixed through context tags. We already do that here, and it's the good way to do it — no language should "avoid" any use of any word, but i18n calls should be improved instead by adding context tags.

May I also humbly suggest that we stop talking about CAT-tools in this issue? Not that this debate is not useful, but we already have an issue about that, namely #2940, and every new comment is broadcasted to 20+ contributors pinged before.

@Figim
Copy link

Figim commented Jan 2, 2025

I will create PR for Azerbaijani translations

@mlocati
Copy link
Contributor

mlocati commented Jan 2, 2025

For Italian translations I already implemented an integration with Transifex (see https://github.com/mlocati/bluesky-social-app ): the only step I have to do manually is the creation/update of pull requests like #7184 (but it's a step that only requires hitting button on https://github.com/mlocati/bluesky-social-app/actions )

@softastur
Copy link
Contributor

softastur commented Jan 2, 2025

We, in Softastur, use CAT tools when possible because we could open contributions to our speakers while ensuring a good review process, and makes them easy to maintain too. Crowdin offers a free tier which exceeds Bluesky requirements and it can be configured to only upload proofread-ed contributions, has a good UI and its glossary management is almost perfect. Transifex, on the other hand, offers the same functionality but glossary management is worse and template auto-update can be configured on web (on Crowdin must be done through CLI and triggered manually).

Asturian translations for Bluesky come from a private project we set up on Crowdin

@pfrazee
Copy link
Collaborator Author

pfrazee commented Jan 3, 2025

Since we're all here --

Is there anybody that would be unhappy if we set up an official Crowdin?

@Figim
Copy link

Figim commented Jan 3, 2025

Since we're all here --

Is there anybody that would be unhappy if we set up an official Crowdin?

It would be great if it was Crowdin.🤠

@Signez
Copy link
Contributor

Signez commented Jan 4, 2025

Is there anybody that would be unhappy if we set up an official Crowdin?

As soon as you offer us roles of "mods" or "coordinators" of the locales we managed before (to make sure we can help new contributors to follow the few guidelines we set up before, and prevent some vote brigading) I have no problem switching to Crowdin!

@pfrazee
Copy link
Collaborator Author

pfrazee commented Jan 6, 2025

Okay sounds like an official Crowdin is the move. I'll keep everyone updated.

@surfdude29
Copy link
Contributor

@pfrazee You probably saw this already of course but the CEO of Crowdin offered their help on getting Bluesky set up 🤝

Hello Bluesky team and community. Just wanted to say that the Crowdin team would be super happy to see Bluesky on Crowdin. We will do our best to help you set up and manage the crowd localisation initiative.

@reindex-ot
Copy link

Hopefully the localization platform will be improved soon.

@Simboiss
Copy link

Can we have a more international French translation? For example, the app still uses words like "e-mail" in the French language version.

@smileyhead
Copy link
Contributor

Can we have a more international French translation? For example, the app still uses words like "e-mail" in the French language version.

This is a bit off-topic, but looking through merged PR's, I believe the person you should contact about that is @Signez.

@xJustxMegx
Copy link

Hi there are some translation issues in the Dutch version, how can I help to translate those correctly?

@smileyhead
Copy link
Contributor

Hi there are some translation issues in the Dutch version, how can I help to translate those correctly?

If you just want to provide feedback, then create an issue while tagging the previous Dutch translator(s). Or if you want to contribute directly, you can fork this repo, edit the Dutch language file, then create a pull request.

@xJustxMegx
Copy link

Hey @smileyhead I know how to fork, but where can I find the Dutch translation exactly in all the stuff?

@smileyhead
Copy link
Contributor

smileyhead commented Jan 22, 2025

Hey @smileyhead I know how to fork, but where can I find the Dutch translation exactly in all the stuff?

/src/locale/locales/nl/

I would highly recommend coordinating with the existing translator(s), though. At the very least, tag them in your pull request while explaining your changes.

@xJustxMegx
Copy link

If I know who it are, I can contact them for sure.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests