@@ -196,22 +196,26 @@ final class TranslationsMiddleware: FeatureFlaggable {
196196 return true
197197 }
198198
199+ /// Returns the list of target languages to check for translation eligibility.
200+ /// When the language picker flag is ON, returns the user's full preferred list.
201+ /// When OFF, returns only the primary device language (preserving legacy behavior).
202+ private func targetLanguagesForEligibilityCheck( ) async -> [ String ] {
203+ if featureFlags. isFeatureEnabled ( . translationLanguagePicker, checking: . buildOnly) {
204+ let manager = PreferredTranslationLanguagesManager ( prefs: profile. prefs)
205+ let supported = await translationsService. fetchSupportedTargetLanguages ( )
206+ return manager. preferredLanguages ( supportedTargetLanguages: supported)
207+ }
208+ return [ Locale . current . languageCode ] . compactMap { $0 }
209+ }
210+
199211 /// Checks whether the current page in the active tab is eligible for translation,
200212 /// and if so, dispatches a toolbar action to update the translation state.
201213 private func checkTranslationsAreEligible( for action: ToolbarAction ) {
202214 Task { @MainActor in
203215 guard action. translationConfiguration? . isTranslationFeatureEnabled == true else { return }
204216
205217 do {
206- let preferredLanguages : [ String ]
207- if featureFlags. isFeatureEnabled ( . translationLanguagePicker, checking: . buildOnly) {
208- let manager = PreferredTranslationLanguagesManager ( prefs: profile. prefs)
209- let supported = await translationsService. fetchSupportedTargetLanguages ( )
210- preferredLanguages = manager. preferredLanguages ( supportedTargetLanguages: supported)
211- } else {
212- preferredLanguages = [ Locale . current . languageCode ] . compactMap { $0 }
213- }
214-
218+ let preferredLanguages = await targetLanguagesForEligibilityCheck ( )
215219 let isEligible = try await translationsService. shouldOfferTranslation (
216220 for: action. windowUUID,
217221 using: preferredLanguages
0 commit comments