Skip to content

Conversation

@abhinavkrin
Copy link
Member

@abhinavkrin abhinavkrin commented Oct 16, 2025

Proposed changes (including videos or screenshots)

  • Replace hard coded languages in DeepL with api fetch to get supported languages.

Issue(s)

Steps to test or reproduce

Further comments

CORE-1319

Summary by CodeRabbit

  • New Features
    • AutoTranslate now dynamically retrieves supported languages from the DeepL API, ensuring language availability stays current with API updates.

@abhinavkrin abhinavkrin requested a review from a team as a code owner October 16, 2025 19:18
@dionisio-bot
Copy link
Contributor

dionisio-bot bot commented Oct 16, 2025

Looks like this PR is not ready to merge, because of the following issues:

  • This PR is targeting the wrong base branch. It should target 7.13.0, but it targets 7.12.0

Please fix the issues and try again

If you have any trouble, please check the PR guidelines

@changeset-bot
Copy link

changeset-bot bot commented Oct 16, 2025

🦋 Changeset detected

Latest commit: cd8d707

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 41 packages
Name Type
@rocket.chat/meteor Minor
@rocket.chat/core-typings Minor
@rocket.chat/rest-typings Minor
@rocket.chat/uikit-playground Patch
@rocket.chat/api-client Patch
@rocket.chat/apps Patch
@rocket.chat/core-services Patch
@rocket.chat/cron Patch
@rocket.chat/ddp-client Patch
@rocket.chat/freeswitch Patch
@rocket.chat/fuselage-ui-kit Major
@rocket.chat/gazzodown Major
@rocket.chat/http-router Patch
@rocket.chat/livechat Patch
@rocket.chat/model-typings Patch
@rocket.chat/ui-avatar Major
@rocket.chat/ui-client Major
@rocket.chat/ui-contexts Major
@rocket.chat/web-ui-registration Major
@rocket.chat/account-service Patch
@rocket.chat/authorization-service Patch
@rocket.chat/ddp-streamer Patch
@rocket.chat/omnichannel-transcript Patch
@rocket.chat/presence-service Patch
@rocket.chat/queue-worker Patch
@rocket.chat/stream-hub-service Patch
@rocket.chat/federation-matrix Patch
@rocket.chat/license Patch
@rocket.chat/media-calls Patch
@rocket.chat/omnichannel-services Patch
@rocket.chat/pdf-worker Patch
@rocket.chat/presence Patch
rocketchat-services Patch
@rocket.chat/models Patch
@rocket.chat/network-broker Patch
@rocket.chat/omni-core-ee Patch
@rocket.chat/mock-providers Patch
@rocket.chat/ui-video-conf Major
@rocket.chat/ui-voip Major
@rocket.chat/instance-status Patch
@rocket.chat/omni-core Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 16, 2025

Walkthrough

The PR updates the DeepL AutoTranslate integration to fetch supported languages dynamically from the DeepL API at runtime instead of using hardcoded values, with automatic conversion to BCP-47 format and per-target caching.

Changes

Cohort / File(s) Summary
Changeset entry
\.changeset/wild-impalas-sip\.md
Adds changeset documentation for minor version bump to @rocket.chat/meteor.
DeepL AutoTranslate implementation
apps/meteor/app/autotranslate/server/deeplTranslate\.ts
Adds private supportedLanguageEndpointUrl field; implements dynamic language fetching from DeepL API endpoint (free or paid based on key type); replaces static language list with runtime-fetched languages transformed to BCP-47 format using Intl.Locale(language).toString(); includes fetch error handling and maintains per-target caching.

Sequence Diagram

sequenceDiagram
    participant Translation as Translation Request
    participant AutoTrans as DeeplAutoTranslate
    participant Cache as Language Cache
    participant API as DeepL API
    
    Translation->>AutoTrans: requestTranslation(target)
    AutoTrans->>Cache: check cached languages?
    alt Cache miss
        AutoTrans->>API: fetch languages (Authorization header)
        API-->>AutoTrans: language list (JSON)
        AutoTrans->>AutoTrans: transform to BCP-47 format<br/>(Intl.Locale)
        AutoTrans->>Cache: store formatted languages
    else Cache hit
        Cache-->>AutoTrans: return cached languages
    end
    AutoTrans->>AutoTrans: normalize target language
    AutoTrans-->>Translation: proceed with translation
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

The change introduces dynamic API fetching with error handling and language transformation logic that replaces static values. While focused to a single file, it involves new runtime dependencies, API integration, and BCP-47 format conversion that warrant careful review of correctness and edge cases.

Suggested labels

stat: ready to merge

Suggested reviewers

  • dougfabris

Poem

🐰 Dynamic tongues now flow like streams,
No hardcoded language dreams,
BCP-47 tags take flight,
DeepL's API shines so bright!
Cached and swift, translations delight. 🌍✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The pull request title "feat: Updates DeepL auto translate provider to get supported languages from API" is clear, concise, and directly corresponds to the main change in the changeset. The title accurately captures the primary modification: replacing hardcoded language lists with dynamic fetching from the DeepL API. It is specific enough for a teammate to understand the key change without needing to review the full diff, and it avoids vague or generic terminology.
Linked Issues Check ✅ Passed The pull request addresses the core requirement of CORE-1319, which calls for returning supported languages in BCP-47 format. The implementation in deeplTranslate.ts fetches languages dynamically from the DeepL API and transforms them using Intl.Locale(language).toString(), which converts language codes to BCP-47 format as required. The changes include proper endpoint configuration based on API key type, error handling, and caching of language results. This approach directly satisfies the objective to provide BCP-47-formatted language identifiers for mobile accessibility needs.
Out of Scope Changes Check ✅ Passed All changes in the pull request are directly aligned with the stated objectives of fetching supported languages from the DeepL API and formatting them in BCP-47 format. The modifications include adding the supportedLanguageEndpointUrl field to support API fetching, configuring the endpoint based on API key type, replacing the hardcoded language list with dynamic API-based retrieval, and implementing language transformation using Intl.Locale. The changeset entry and caching mechanism are also necessary components of the feature. No extraneous or unrelated changes are present.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/auto-translate-supported-languages-bcp47

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Jira integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 05ae870 and be00e6b.

📒 Files selected for processing (2)
  • .changeset/wild-impalas-sip.md (1 hunks)
  • apps/meteor/app/autotranslate/server/deeplTranslate.ts (3 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • .changeset/wild-impalas-sip.md
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-10-17T12:36:01.020Z
Learnt from: tassoevan
PR: RocketChat/Rocket.Chat#37250
File: apps/meteor/app/autotranslate/server/deeplTranslate.ts:122-126
Timestamp: 2025-10-17T12:36:01.020Z
Learning: In JavaScript, `new Intl.Locale(language).toString()` returns a BCP-47 compliant identifier but only canonicalizes the input—it does not add regional subtags. For example, `new Intl.Locale("en").toString()` returns `"en"`, not `"en-US"`. To map base language codes to full BCP-47 codes with regional subtags (e.g., "en" → "en-US"), use explicit mapping or a dedicated helper function.

Applied to files:

  • apps/meteor/app/autotranslate/server/deeplTranslate.ts
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: 📦 Build Packages
  • GitHub Check: CodeQL-Build
  • GitHub Check: CodeQL-Build
🔇 Additional comments (3)
apps/meteor/app/autotranslate/server/deeplTranslate.ts (3)

37-37: LGTM!

The private field declaration is appropriate for storing the supported languages endpoint URL.


55-55: LGTM!

The endpoint URLs are correctly set based on the API key type, following the same pattern as the translation endpoint.

Also applies to: 59-59


112-114: <!-- [scratchpad_update]
[observations_updated]

  • Web search results show general DeepL error handling practices and fetch patterns
  • Not specific enough to the rocket.chat deeplTranslate implementation
  • Need to check actual msTranslate and googleTranslate implementations in the repository
    [actions_revised]
  • Run direct inspection of msTranslate.ts and googleTranslate.ts fetch failure handling
    [scratchpad_end] --><!-- [scratchpad_update]
    [pending_items]
  • Web search not yielding specific msTranslate/googleTranslate implementation details
  • Need to run shell script to check actual implementations and compare error handling patterns
    [scratchpad_end] -->

Now let me run a shell script to inspect the actual implementations:<!-- [scratchpad_update]
[pending]

  • Exhausting web search - need to switch to shell script inspection
  • Check actual code of msTranslate and googleTranslate for comparison
    [scratchpad_end] --><!-- [scratchpad_update]
    [observation_final]
  • Web search is not providing the specific codebase information needed
  • Need to rely on the script output already provided to analyze the patterns
  • From the earlier script output, I can see all implementations: deeplTranslate.ts, msTranslate.ts, googleTranslate.ts
  • All have methods at similar lines that handle API key checks

[actions_final]

  • Use the script output data to analyze error handling patterns
  • Compare how each provider handles the getSupportedLanguages method
  • Specifically look at msTranslate.ts:83-86 and googleTranslate.ts:78-81 from the provided script output
  • Check what they do on fetch failure (visible in lines provided)
    [scratchpad_end] -->

Based on the script output you provided, let me analyze the error handling across the three translation providers:

From the output, I can see:

  1. msTranslate.ts (lines 83-86): Returns empty array [] when no API key
  2. googleTranslate.ts (lines 78-81): Returns empty array [] when no API key
  3. deeplTranslate.ts (lines 96-99): Returns empty array [] when no API key

All three providers have the same pattern for missing API keys. However, the review comment focuses on what happens when the API request itself fails (lines 112-114 in deeplTranslate.ts, the fetch error).

Looking at the script output, I don't see the fetch error handling shown for msTranslate.ts or googleTranslate.ts implementations (the output cuts off after the API key checks). The question is: do the other two providers throw errors on fetch failure, or do they gracefully handle it?

Without visibility into the complete fetch error handling in msTranslate and googleTranslate, I cannot definitively determine if the error throwing in deeplTranslate is an intentional change or an inconsistency across providers.

Key findings from the script output:

  • All three providers return empty arrays when API keys are missing
  • Internal calls within deeplTranslate (lines 139, 185) call getSupportedLanguages() and would now receive thrown errors instead of empty arrays
  • The API endpoint (autotranslate.ts:28) has a fallback languages || []
  • The client-side caller (AutoTranslateWithData.tsx:28) destructures the response and uses it in a React Query callback

The error propagation would affect the internal deeplTranslate translation methods if getSupportedLanguages() throws.


Verify error handling behavior change in other translation providers.

The deeplTranslate implementation now throws errors on failed API requests, but it's unclear if msTranslate and googleTranslate handle fetch failures consistently. Check their fetch error handling to determine if this represents an intentional provider-specific behavior change or an unintended inconsistency. Internal calls within deeplTranslate (lines 139, 185) will propagate thrown errors instead of receiving empty arrays, which may break language filtering logic.

Warning

Review ran into problems

🔥 Problems

Errors were encountered while retrieving linked issues.

Errors (1)
  • BCP-47: Request failed with status code 404

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@abhinavkrin abhinavkrin added this to the 7.12.0 milestone Oct 16, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Jira integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 74f2232 and 602ed73.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (6)
  • .changeset/wild-impalas-sip.md (1 hunks)
  • apps/meteor/app/autotranslate/server/autotranslate.ts (2 hunks)
  • apps/meteor/app/autotranslate/server/bcp47Mapping.ts (1 hunks)
  • apps/meteor/app/autotranslate/server/deeplTranslate.ts (1 hunks)
  • apps/meteor/package.json (1 hunks)
  • packages/core-typings/src/IAutoTranslate.ts (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (2)
apps/meteor/app/autotranslate/server/autotranslate.ts (1)
apps/meteor/app/autotranslate/server/bcp47Mapping.ts (1)
  • bcp47Mapping (1-201)
apps/meteor/app/autotranslate/server/deeplTranslate.ts (1)
packages/core-typings/src/IAutoTranslate.ts (1)
  • ISupportedLanguage (18-22)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: 📦 Build Packages
  • GitHub Check: CodeQL-Build
  • GitHub Check: CodeQL-Build

@codecov
Copy link

codecov bot commented Oct 16, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 67.57%. Comparing base (917005c) to head (cd8d707).
⚠️ Report is 1 commits behind head on develop.

Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##           develop   #37250      +/-   ##
===========================================
- Coverage    67.60%   67.57%   -0.04%     
===========================================
  Files         3338     3338              
  Lines       113721   113712       -9     
  Branches     20660    20736      +76     
===========================================
- Hits         76879    76837      -42     
- Misses       34158    34196      +38     
+ Partials      2684     2679       -5     
Flag Coverage Δ
e2e 57.41% <ø> (+0.01%) ⬆️
unit 71.51% <ø> (-0.06%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Member

@dougfabris dougfabris left a comment

Choose a reason for hiding this comment

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

I'm wondering if we really need this mapping, I'm thinking just the results from the provider is enough for our need
I would love your thoughts here @tassoevan

@abhinavkrin
Copy link
Member Author

I'm wondering if we really need this mapping, I'm thinking just the results from the provider is enough for our need I would love your thoughts here @tassoevan

In our discussion, someone mentioned that in few cases, the direct values from the api didn't work. So, as a safeguard I created a mapping with default subregions.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
apps/meteor/app/autotranslate/server/deeplTranslate.ts (1)

90-91: Update outdated comment.

The comment states "Deepl does not provide an endpoint yet to retrieve the supported languages," but this implementation now fetches languages dynamically from the DeepL API.

Apply this diff to update the comment:

 /**
  * Returns supported languages for translation by the active service provider.
- * Deepl does not provide an endpoint yet to retrieve the supported languages.
- * So each supported languages are explicitly maintained.
+ * Fetches supported target languages dynamically from the DeepL API.
  * @private implements super abstract method.
  * @param {string} target
  * @returns {object} code : value pair
  */
🧹 Nitpick comments (1)
apps/meteor/app/autotranslate/server/deeplTranslate.ts (1)

119-121: Remove redundant cache check.

The cache is already checked at lines 101-103 before the fetch. This second check after the fetch (lines 119-121) appears redundant unless there's a concern about concurrent requests, which is not evident in the current implementation.

Consider removing the redundant check:

 	result = (await request.json()) as typeof result;

-	if (this.supportedLanguages[target]) {
-		return this.supportedLanguages[target];
-	}
 	this.supportedLanguages[target || 'en'] = result.map(({ language, ...other }) => ({
 		...other,
 		language: new Intl.Locale(language).toString(),
 	}));
 	return this.supportedLanguages[target || 'en'];
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Jira integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 0d8e290 and 32ee47a.

📒 Files selected for processing (1)
  • apps/meteor/app/autotranslate/server/deeplTranslate.ts (3 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
apps/meteor/app/autotranslate/server/deeplTranslate.ts (1)
packages/core-typings/src/IAutoTranslate.ts (1)
  • ISupportedLanguage (18-22)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: 📦 Build Packages
  • GitHub Check: CodeQL-Build
  • GitHub Check: CodeQL-Build
🔇 Additional comments (2)
apps/meteor/app/autotranslate/server/deeplTranslate.ts (2)

37-37: LGTM!

The addition of a dedicated field for the supported languages endpoint URL is a clean approach to handle the free vs pro API endpoint distinction.


55-55: LGTM!

The endpoint URL initialization correctly follows the existing pattern of distinguishing between free and pro API keys.

Also applies to: 59-59

@abhinavkrin abhinavkrin requested a review from tassoevan October 17, 2025 12:35
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

♻️ Duplicate comments (1)
apps/meteor/app/autotranslate/server/deeplTranslate.ts (1)

121-125: Fix the language field mapping to preserve original codes and properly generate BCP-47.

This implementation has two critical issues:

  1. Overwrites the original language code: The mapping replaces the language field with the result of new Intl.Locale(language).toString(). According to the ISupportedLanguage interface, the language field should contain the original ISO 639-1 code (e.g., "en", "pt"), and bcp47 should be a separate optional field.

  2. Incorrect BCP-47 generation: new Intl.Locale(language).toString() only canonicalizes input—it does NOT add regional subtags. For example, new Intl.Locale("en").toString() returns "en", not "en-US". The PR objectives and comments indicate a mapping file with default subregions should be used for proper BCP-47 codes.

Based on learnings

You need to:

  1. Preserve the original language field from the API response
  2. Use the BCP-47 mapping helper (mentioned in AI summary but not visible in this file) to generate proper BCP-47 codes with regional subtags

Apply this structural fix (you'll need to import and use the actual BCP-47 mapping helper):

-this.supportedLanguages[target || 'en'] = result.map(({ language, ...other }) => ({
-	...other,
-	language: new Intl.Locale(language).toString(),
-}));
+this.supportedLanguages[target || 'en'] = result.map(({ language, ...other }) => ({
+	...other,
+	language,
+	bcp47: /* Use proper BCP-47 mapping helper here, e.g., getBcp47ForLanguage(language) */,
+}));
🧹 Nitpick comments (2)
apps/meteor/app/autotranslate/server/deeplTranslate.ts (2)

112-114: Consider logging the error before throwing.

The error is thrown without logging details. Per past feedback, DeepL API error responses are safe to log and can aid debugging.

Consider this enhancement:

 if (!request.ok) {
+	const errorText = await request.text();
+	SystemLogger.error({ msg: 'Failed to fetch supported languages from DeepL', status: request.status, error: errorText });
-	throw new Error('Failed to fetch supported languages');
+	throw new Error(`Failed to fetch supported languages: ${request.status}`);
 }

Based on learnings


118-120: Redundant cache check after fetch.

The cache is already checked at lines 101-103 before the fetch. This second check appears redundant unless it's intended to handle race conditions—but the current implementation isn't thread-safe anyway.

Consider removing the duplicate check:

 result = (await request.json()) as typeof result;

-if (this.supportedLanguages[target]) {
-	return this.supportedLanguages[target];
-}
 this.supportedLanguages[target || 'en'] = result.map(({ language, ...other }) => ({
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Jira integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 32ee47a and 05ae870.

📒 Files selected for processing (1)
  • apps/meteor/app/autotranslate/server/deeplTranslate.ts (3 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-10-17T12:36:00.993Z
Learnt from: tassoevan
PR: RocketChat/Rocket.Chat#37250
File: apps/meteor/app/autotranslate/server/deeplTranslate.ts:122-126
Timestamp: 2025-10-17T12:36:00.993Z
Learning: In JavaScript, `new Intl.Locale(language).toString()` returns a BCP-47 compliant identifier but only canonicalizes the input—it does not add regional subtags. For example, `new Intl.Locale("en").toString()` returns `"en"`, not `"en-US"`. To map base language codes to full BCP-47 codes with regional subtags (e.g., "en" → "en-US"), use explicit mapping or a dedicated helper function.

Applied to files:

  • apps/meteor/app/autotranslate/server/deeplTranslate.ts
🧬 Code graph analysis (1)
apps/meteor/app/autotranslate/server/deeplTranslate.ts (1)
packages/core-typings/src/IAutoTranslate.ts (1)
  • ISupportedLanguage (18-22)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: CodeQL-Build
🔇 Additional comments (2)
apps/meteor/app/autotranslate/server/deeplTranslate.ts (2)

37-37: LGTM!

The private field declaration follows good encapsulation practices and is properly typed.


55-60: LGTM!

The endpoint URL initialization correctly distinguishes between free and paid API keys and sets the appropriate DeepL API endpoint for language queries.

tassoevan
tassoevan previously approved these changes Oct 17, 2025
@scuciatto scuciatto added the stat: QA assured Means it has been tested and approved by a company insider label Oct 17, 2025
@dionisio-bot dionisio-bot bot added the stat: ready to merge PR tested and approved waiting for merge label Oct 17, 2025
@scuciatto scuciatto modified the milestones: 7.12.0, 7.13.0 Oct 20, 2025
…om DeepL API

Signed-off-by: Abhinav Kumar <abhinav@avitechlab.com>
@abhinavkrin abhinavkrin force-pushed the feat/auto-translate-supported-languages-bcp47 branch from 05ae870 to a5b7e7a Compare October 23, 2025 08:56
@dionisio-bot dionisio-bot bot removed the stat: ready to merge PR tested and approved waiting for merge label Oct 23, 2025
@abhinavkrin abhinavkrin changed the title feat: add BCP-47 field to autoTranslate.getSupportedLanguages response fix: update AutoTranslate to fetch supported languages dynamically from DeepL API Oct 23, 2025
@dougfabris dougfabris changed the title fix: update AutoTranslate to fetch supported languages dynamically from DeepL API feat: Updates DeepL auto translate provider to get supported languages from API Oct 23, 2025
Copy link
Member

@dougfabris dougfabris left a comment

Choose a reason for hiding this comment

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

LGTM!

@dougfabris dougfabris added stat: QA assured Means it has been tested and approved by a company insider and removed stat: QA assured Means it has been tested and approved by a company insider labels Oct 23, 2025
@dionisio-bot dionisio-bot bot added the stat: ready to merge PR tested and approved waiting for merge label Oct 23, 2025
@dionisio-bot dionisio-bot bot removed the stat: ready to merge PR tested and approved waiting for merge label Oct 23, 2025
@dougfabris dougfabris added stat: QA assured Means it has been tested and approved by a company insider and removed stat: QA assured Means it has been tested and approved by a company insider labels Oct 23, 2025
@dionisio-bot dionisio-bot bot added the stat: ready to merge PR tested and approved waiting for merge label Oct 23, 2025
@kodiakhq kodiakhq bot merged commit d075db2 into develop Oct 24, 2025
84 of 86 checks passed
@kodiakhq kodiakhq bot deleted the feat/auto-translate-supported-languages-bcp47 branch October 24, 2025 01:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

stat: QA assured Means it has been tested and approved by a company insider stat: ready to merge PR tested and approved waiting for merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants