Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion _locales/en/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -507,5 +507,9 @@
"message": "Number of times to retry failed requests"
},
"showAdvancedSettings": { "message": "Show Advanced Settings" },
"hideAdvancedSettings": { "message": "Hide Advanced Settings" }
"hideAdvancedSettings": { "message": "Hide Advanced Settings" },

"errTranslationApi": { "message": "[Translation API Error. Check settings or try another provider.]" },
"errTranslationRequest": { "message": "[Translation Request Error. Please try again.]" },
"errTranslationGeneric": { "message": "[Translation Failed. Please try again or check settings.]" }
}
6 changes: 5 additions & 1 deletion _locales/es/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -573,5 +573,9 @@
"message": "Número de veces para reintentar solicitudes fallidas"
},
"showAdvancedSettings": { "message": "Mostrar Configuración Avanzada" },
"hideAdvancedSettings": { "message": "Ocultar Configuración Avanzada" }
"hideAdvancedSettings": { "message": "Ocultar Configuración Avanzada" },

"errTranslationApi": { "message": "[Error de API de Traducción. Revisa la configuración o prueba otro proveedor.]" },
"errTranslationRequest": { "message": "[Error en la Solicitud de Traducción. Por favor, inténtalo de nuevo.]" },
"errTranslationGeneric": { "message": "[Traducción Fallida. Por favor, inténtalo de nuevo o revisa la configuración.]" }
}
462 changes: 462 additions & 0 deletions _locales/fr/messages.json

Large diffs are not rendered by default.

6 changes: 5 additions & 1 deletion _locales/ja/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -512,5 +512,9 @@
"message": "失敗したリクエストを再試行する回数"
},
"showAdvancedSettings": { "message": "詳細設定を表示" },
"hideAdvancedSettings": { "message": "詳細設定を非表示" }
"hideAdvancedSettings": { "message": "詳細設定を非表示" },

"errTranslationApi": { "message": "[翻訳API エラー。設定を確認するか、他のプロバイダーを試してください。]" },
"errTranslationRequest": { "message": "[翻訳リクエスト エラー。もう一度お試しください。]" },
"errTranslationGeneric": { "message": "[翻訳に失敗しました。もう一度試すか、設定を確認してください。]" }
}
6 changes: 5 additions & 1 deletion _locales/ko/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -501,5 +501,9 @@
"message": "실패한 요청을 재시도하는 횟수"
},
"showAdvancedSettings": { "message": "고급 설정 표시" },
"hideAdvancedSettings": { "message": "고급 설정 숨기기" }
"hideAdvancedSettings": { "message": "고급 설정 숨기기" },

"errTranslationApi": { "message": "[번역 API 오류. 설정을 확인하거나 다른 제공업체를 시도해보세요.]" },
"errTranslationRequest": { "message": "[번역 요청 오류. 다시 시도해주세요.]" },
"errTranslationGeneric": { "message": "[번역에 실패했습니다. 다시 시도하거나 설정을 확인해주세요.]" }
}
6 changes: 5 additions & 1 deletion _locales/zh_CN/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -429,5 +429,9 @@
"aiContextRetryAttemptsLabel": { "message": "重试次数:" },
"aiContextRetryAttemptsHelp": { "message": "重试失败请求的次数" },
"showAdvancedSettings": { "message": "显示高级设置" },
"hideAdvancedSettings": { "message": "隐藏高级设置" }
"hideAdvancedSettings": { "message": "隐藏高级设置" },

"errTranslationApi": { "message": "[翻译API错误。请检查设置或尝试其他翻译源。]" },
"errTranslationRequest": { "message": "[翻译请求错误。请重试。]" },
"errTranslationGeneric": { "message": "[翻译失败。请重试或检查设置。]" }
}
6 changes: 5 additions & 1 deletion _locales/zh_TW/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -449,5 +449,9 @@
"aiContextRetryAttemptsLabel": { "message": "重試次數:" },
"aiContextRetryAttemptsHelp": { "message": "重試失敗請求的次數" },
"showAdvancedSettings": { "message": "顯示進階設定" },
"hideAdvancedSettings": { "message": "隱藏進階設定" }
"hideAdvancedSettings": { "message": "隱藏進階設定" },

"errTranslationApi": { "message": "[翻譯API錯誤。請檢查設定或嘗試其他翻譯源。]" },
"errTranslationRequest": { "message": "[翻譯請求錯誤。請重試。]" },
"errTranslationGeneric": { "message": "[翻譯失敗。請重試或檢查設定。]" }
}
1 change: 1 addition & 0 deletions config/configSchema.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ function detectBrowserLanguage() {
if (lang.startsWith('zh-tw')) return 'zh-TW';
if (lang.startsWith('zh')) return 'zh-CN';
if (lang.startsWith('es')) return 'es';
if (lang.startsWith('fr')) return 'fr';
if (lang.startsWith('ja')) return 'ja';
if (lang.startsWith('ko')) return 'ko';
return 'en';
Expand Down
55 changes: 18 additions & 37 deletions content_scripts/shared/subtitleUtilities.js
Original file line number Diff line number Diff line change
Expand Up @@ -300,32 +300,6 @@ export function setInteractiveSubtitlesEnabled(enabled) {
}

logWithFallback('info', 'Subtitle utilities module loaded');
const localizedErrorMessages = {
TRANSLATION_API_ERROR: {
en: '[Translation API Error. Check settings or try another provider.]',
es: '[Error de API de Traducción. Revisa la configuración o prueba otro proveedor.]',
ja: '[翻訳API エラー。設定を確認するか、他のプロバイダーを試してください。]',
ko: '[번역 API 오류. 설정을 확인하거나 다른 제공업체를 시도해보세요.]',
'zh-CN': '[翻译API错误。请检查设置或尝试其他翻译源。]',
'zh-TW': '[翻譯API錯誤。請檢查設定或嘗試其他翻譯源。]',
},
TRANSLATION_REQUEST_ERROR: {
en: '[Translation Request Error. Please try again.]',
es: '[Error en la Solicitud de Traducción. Por favor, inténtalo de nuevo.]',
ja: '[翻訳リクエスト エラー。もう一度お試しください。]',
ko: '[번역 요청 오류. 다시 시도해주세요.]',
'zh-CN': '[翻译请求错误。请重试。]',
'zh-TW': '[翻譯請求錯誤。請重試。]',
},
TRANSLATION_GENERIC_ERROR: {
en: '[Translation Failed. Please try again or check settings.]',
es: '[Traducción Fallida. Por favor, inténtalo de nuevo o revisa la configuración.]',
ja: '[翻訳に失敗しました。もう一度試すか、設定を確認してください。]',
ko: '[번역에 실패했습니다. 다시 시도하거나 설정을 확인해주세요.]',
'zh-CN': '[翻译失败。请重试或检查设置。]',
'zh-TW': '[翻譯失敗。請重試或檢查設定。]',
},
};

export function getUILanguage() {
const lang = (
Expand All @@ -337,24 +311,31 @@ export function getUILanguage() {
if (lang.startsWith('zh-tw')) return 'zh-TW';
if (lang.startsWith('zh')) return 'zh-CN';
if (lang.startsWith('es')) return 'es';
if (lang.startsWith('fr')) return 'fr';
if (lang.startsWith('ja')) return 'ja';
if (lang.startsWith('ko')) return 'ko';
return 'en';
}

export function getLocalizedErrorMessage(errorTypeKey, details = '') {
const uiLang = getUILanguage();
const messagesForType = localizedErrorMessages[errorTypeKey];
if (messagesForType) {
return messagesForType[uiLang] || messagesForType['en'];
const keyMap = {
TRANSLATION_API_ERROR: 'errTranslationApi',
TRANSLATION_REQUEST_ERROR: 'errTranslationRequest',
TRANSLATION_GENERIC_ERROR: 'errTranslationGeneric',
};
const messageKey = keyMap[errorTypeKey] || 'errTranslationGeneric';
try {
if (
typeof chrome !== 'undefined' &&
chrome.i18n &&
typeof chrome.i18n.getMessage === 'function'
) {
return chrome.i18n.getMessage(messageKey);
}
} catch (e) {
// no-op; rely on default locale resolution elsewhere
}
const fallbackMessages =
localizedErrorMessages['TRANSLATION_GENERIC_ERROR'];
return (
fallbackMessages[uiLang] ||
fallbackMessages['en'] ||
'[Translation Error]'
);
return errorTypeKey;
}

// Core state variables (these are NOT user preferences)
Expand Down
1 change: 1 addition & 0 deletions options/components/sections/GeneralSection.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ export function GeneralSection({ t, settings, onSettingChange }) {
>
<option value="en">English</option>
<option value="es">Español</option>
<option value="fr">Français</option>
<option value="ja">日本語</option>
<option value="ko">한국어</option>
<option value="zh-CN">中文 (简体)</option>
Expand Down
1 change: 0 additions & 1 deletion translation_providers/geminiVertexTranslate.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ async function getConfig() {
'vertexLocation',
'vertexModel',
]);
// test gpg sign

const model = config.vertexModel || 'gemini-2.5-flash';

Expand Down
Loading