Skip to content

Export translations in parallel. - #748

Merged
fnando merged 7 commits into
mainfrom
parallel-export
Jun 3, 2026
Merged

Export translations in parallel.#748
fnando merged 7 commits into
mainfrom
parallel-export

Conversation

@fnando

@fnando fnando commented Jun 3, 2026

Copy link
Copy Markdown
Owner
PR Checklist

PR Structure

  • This PR has reasonably narrow scope (if not, break it down into smaller
    PRs).
  • This PR avoids mixing refactoring changes with feature changes (split into
    two PRs otherwise).
  • This PR's title starts is concise and descriptive.

Thoroughness

  • This PR adds tests for the most critical parts of the new functionality or
    fixes.
  • I've updated any docs, .md files, etc… affected by this change.

What

Export translations in parallel.

Why

Supersedes #733.

Known limitations

N/A

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

This PR updates the Ruby exporter to write per-locale translation files concurrently when the output path uses the :locale placeholder, improving export performance and superseding the approach proposed in #733.

Changes:

  • Parallelize per-locale export in I18nJS.export_group using concurrent-ruby promises.
  • Add concurrent-ruby as a runtime dependency and document the behavior change in the changelog.
  • Update Node/TypeScript tooling metadata (TypeScript version bump, add @types/node, add package-lock.json) and add a benchmark fixture ignore rule.

Reviewed changes

Copilot reviewed 5 out of 6 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
lib/i18n-js.rb Runs per-locale write_file calls concurrently via Concurrent::Promises when :locale is present.
i18n-js.gemspec Adds concurrent-ruby runtime dependency and adds a new dev dependency.
CHANGELOG.md Notes the behavioral change: parallel export when :locale placeholder is used.
package.json Bumps TypeScript and adds @types/node to dev dependencies.
package-lock.json Introduces npm lockfile pinning dependency tree for the TS tooling.
test/fixtures/bench/.gitignore Ignores generated benchmark YAML fixture files.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread i18n-js.gemspec
Comment thread CHANGELOG.md Outdated
@fnando
fnando merged commit 5c0dc88 into main Jun 3, 2026
12 checks passed
@fnando
fnando deleted the parallel-export branch June 3, 2026 01:27
@fnando fnando mentioned this pull request Jun 3, 2026
5 tasks
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.

3 participants