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

Split es locale into several variations and migrate existing user translations to es-ES #22982

Open
wants to merge 12 commits into
base: master
Choose a base branch
from

Conversation

diox
Copy link
Member

@diox diox commented Jan 10, 2025

See mozilla/addons#15232

Context

As part of streamlining our locales we're splitting es into several variations. The Pontoon team have asked us to copy over the existing locale to the new ones and they'll sort them (either as actual translations or suggestions) in Pontoon. That makes the diff for this PR rather large and scary since I've copied the existing .po file into several new ones. You can diff them with the es one to make sure I haven't messed it up and then ignore them.

Testing

Locally, you need to either bypass addons-frontend in nginx.conf (by replacing the try_files $uri @frontendamo by try_files $uri @olympia) or build a custom addons-frontend image with mozilla/addons-frontend#13401 otherwise it won't let you use the new locales, as in local development we're proxying requests through addons-frontend instead of fully defining routes in nginx.

The es locale should no exist anymore, and be replaced by the new variants.

Migrations

This change contains 3 migrations that will affect hundreds of thousands of rows in dev/stage/prod. I've tested them locally with 700k+ rows and the biggest one took less than 10 seconds.

@diox diox force-pushed the create-es-locales-folders branch from b0db161 to 60ef7a2 Compare January 10, 2025 14:13
@diox diox marked this pull request as draft January 10, 2025 16:50
@diox diox changed the title Add new locales folders for the various es variants Split es locale into several variations and migrate existing user translations to es-ES Jan 20, 2025
@diox diox marked this pull request as ready for review January 21, 2025 12:13
@diox diox requested review from a team and KevinMind and removed request for a team January 21, 2025 12:41
@diox diox force-pushed the create-es-locales-folders branch from 35a6260 to cf0de0a Compare January 21, 2025 12:42
@@ -161,7 +161,7 @@ def test_multiple_objects_with_multiple_translations(self):
assert set(addon2.translations[addon2.name_id]) == (
{
('en-us', 'English 2 Name'),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh god how I wish we had enums for locales...

@diox diox requested a review from KevinMind January 23, 2025 13:40
@KevinMind
Copy link
Contributor

@diox how did you create 700k+ rows? Even better, you can zip your database and send it to me by running

make data_dump ARGS="--name pr-22982"

Then zip the directory and send it to me. I can then load that directly on my instance and boom!

@diox
Copy link
Member Author

diox commented Jan 24, 2025

I'll generate the dump, but for the record, I essentially did:

translations = []
for x in range(0, 700000):
    t = Translation.new('Lorem ipsum dolor sit amet, erat graece accusata eum te', 'es')
    translations.append(t)
Translation.objects.bulk_create(translations, batch_size=1000)

(Translation.new() is a custom hack in addons-server used behind the scenes when creating translations "the normal way", that is there to maintain the separate id sequence table. I've tried to reproduce that behavior here while still being efficient with a bulk_create() after, but I haven't checked if it completely works as expected in very aspect, I was only interested in creating garbage data)

@diox
Copy link
Member Author

diox commented Jan 24, 2025

Updated, and on top of providing the snippet I used to generate extra data locally I've shared my database dump privately on slack.

Copy link
Contributor

@KevinMind KevinMind left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verified 🚢

  • migration took around 10 seconds with 700k translations.. creating the translations took a lot longer 😆
  • confirmed generic ES is not available on devhub selector
image

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

Successfully merging this pull request may close these issues.

2 participants