gemini_prompter / translation.js
SenY's picture
Upload 6 files
5be709f verified
const translations = {
ja: {
inputQueryTitle: "入力クエリ",
generateButtonText: "プロンプト生成",
splitStrings: "分割送信",
outputPromptTitle: "生成されたプロンプト",
settingsTitle: "設定",
apiKeyLabel: "APIキー",
characterCountLabel: "文字数",
languageSelectLabel: "言語",
promptEnPlaceholder: "英語のプロンプトがここに表示されます",
promptMyLanguagePlaceholder: "日本訳がここに表示されます",
apiKeyPlaceholder: "APIキーを入力してください",
characterCountPlaceholder: "生成するプロンプトの文字数を入力してください",
endpointSelectLabel: "エンドポイント",
historyTitle: "履歴",
noHistoryMessage: "履歴がありません。",
replacementTitle: "置換設定",
addReplacementButtonText: "置換セット追加",
replacementSearchPlaceholder: "検索語",
replacementReplacePlaceholder: "置換語"
},
en: {
inputQueryTitle: "Input Query",
generateButtonText: "Generate Prompt",
splitStrings: "Split Strings",
outputPromptTitle: "Generated Prompt",
settingsTitle: "Settings",
apiKeyLabel: "API Key",
characterCountLabel: "Character Count",
languageSelectLabel: "Language",
promptEnPlaceholder: "English prompt will be displayed here",
promptMyLanguagePlaceholder: "Translation will be displayed here",
apiKeyPlaceholder: "Enter your API key",
characterCountPlaceholder: "Enter the number of characters for the generated prompt",
endpointSelectLabel: "Endpoint",
historyTitle: "History",
noHistoryMessage: "No history available.",
replacementTitle: "Replacement Settings",
addReplacementButtonText: "Add Replacement Set",
replacementSearchPlaceholder: "Search term",
replacementReplacePlaceholder: "Replace term"
},
zh: {
inputQueryTitle: "输入查询",
generateButtonText: "生成提示",
splitStrings: "分割字符串",
outputPromptTitle: "生成的提示",
settingsTitle: "设置",
apiKeyLabel: "API密钥",
characterCountLabel: "字符数",
languageSelectLabel: "语言",
promptEnPlaceholder: "英文提示将显示在这里",
promptMyLanguagePlaceholder: "翻译将显示在这里",
apiKeyPlaceholder: "请输入您的API密钥",
characterCountPlaceholder: "请输入生成提示的字符数",
endpointSelectLabel: "端点",
historyTitle: "历史记录",
noHistoryMessage: "没有可用的历史记录。",
replacementTitle: "替换设置",
addReplacementButtonText: "添加替换集",
replacementSearchPlaceholder: "搜索词",
replacementReplacePlaceholder: "替换词"
},
ko: {
inputQueryTitle: "입력 쿼리",
generateButtonText: "프롬프트 생성",
splitStrings: "문자열 분할",
outputPromptTitle: "생성된 프롬프트",
settingsTitle: "설정",
apiKeyLabel: "API 키",
characterCountLabel: "문자 수",
languageSelectLabel: "언어",
promptEnPlaceholder: "영어 프롬프트가 여기에 표시됩니다",
promptMyLanguagePlaceholder: "번역이 여기에 표시됩니다",
apiKeyPlaceholder: "API 키를 입력하세요",
characterCountPlaceholder: "생성할 프롬프트의 문자 수를 입력하세요",
endpointSelectLabel: "엔드포인트",
historyTitle: "기록",
noHistoryMessage: "사용 가능한 기록이 없습니다.",
replacementTitle: "대체 설정",
addReplacementButtonText: "대체 세트 추가",
replacementSearchPlaceholder: "검색어",
replacementReplacePlaceholder: "대체어"
},
fr: {
inputQueryTitle: "Requête d'entrée",
generateButtonText: "Générer le prompt",
splitStrings: "Diviser les chaînes",
outputPromptTitle: "Prompt généré",
settingsTitle: "Paramètres",
apiKeyLabel: "Clé API",
characterCountLabel: "Nombre de caractères",
languageSelectLabel: "Langue",
promptEnPlaceholder: "Le prompt en anglais s'affichera ici",
promptMyLanguagePlaceholder: "La traduction s'affichera ici",
apiKeyPlaceholder: "Entrez votre clé API",
characterCountPlaceholder: "Entrez le nombre de caractères pour le prompt généré",
endpointSelectLabel: "Point de terminaison",
historyTitle: "Historique",
noHistoryMessage: "Aucun historique disponible.",
replacementTitle: "Paramètres de remplacement",
addReplacementButtonText: "Ajouter un ensemble de remplacement",
replacementSearchPlaceholder: "Terme de recherche",
replacementReplacePlaceholder: "Terme de remplacement"
},
es: {
inputQueryTitle: "Consulta de entrada",
generateButtonText: "Generar prompt",
splitStrings: "Dividir cadenas",
outputPromptTitle: "Prompt generado",
settingsTitle: "Configuración",
apiKeyLabel: "Clave API",
characterCountLabel: "Recuento de caracteres",
languageSelectLabel: "Idioma",
promptEnPlaceholder: "El prompt en inglés se mostrará aquí",
promptMyLanguagePlaceholder: "La traducción se mostrará aquí",
apiKeyPlaceholder: "Ingrese su clave API",
characterCountPlaceholder: "Ingrese el número de caracteres para el prompt generado",
endpointSelectLabel: "Punto final",
historyTitle: "Historial",
noHistoryMessage: "No hay historial disponible.",
replacementTitle: "Configuración de reemplazo",
addReplacementButtonText: "Agregar conjunto de reemplazo",
replacementSearchPlaceholder: "Término de búsqueda",
replacementReplacePlaceholder: "Término de reemplazo"
},
de: {
inputQueryTitle: "Eingabeabfrage",
generateButtonText: "Prompt generieren",
splitStrings: "Zeichenketten aufteilen",
outputPromptTitle: "Generierter Prompt",
settingsTitle: "Einstellungen",
apiKeyLabel: "API-Schlüssel",
characterCountLabel: "Zeichenanzahl",
languageSelectLabel: "Sprache",
promptEnPlaceholder: "Der englische Prompt wird hier angezeigt",
promptMyLanguagePlaceholder: "Die Übersetzung wird hier angezeigt",
apiKeyPlaceholder: "Geben Sie Ihren API-Schlüssel ein",
characterCountPlaceholder: "Geben Sie die Anzahl der Zeichen für den generierten Prompt ein",
endpointSelectLabel: "Endpunkt",
historyTitle: "Verlauf",
noHistoryMessage: "Kein Verlauf verfügbar.",
replacementTitle: "Ersetzungseinstellungen",
addReplacementButtonText: "Ersetzungsset hinzufügen",
replacementSearchPlaceholder: "Suchbegriff",
replacementReplacePlaceholder: "Ersetzungsbegriff"
},
it: {
inputQueryTitle: "Query di input",
generateButtonText: "Genera prompt",
splitStrings: "Dividi stringhe",
outputPromptTitle: "Prompt generato",
settingsTitle: "Impostazioni",
apiKeyLabel: "Chiave API",
characterCountLabel: "Conteggio caratteri",
languageSelectLabel: "Lingua",
promptEnPlaceholder: "Il prompt in inglese verrà visualizzato qui",
promptMyLanguagePlaceholder: "La traduzione verrà visualizzata qui",
apiKeyPlaceholder: "Inserisci la tua chiave API",
characterCountPlaceholder: "Inserisci il numero di caratteri per il prompt generato",
endpointSelectLabel: "Endpoint",
historyTitle: "Cronologia",
noHistoryMessage: "Nessuna cronologia disponibile.",
replacementTitle: "Impostazioni di sostituzione",
addReplacementButtonText: "Aggiungi set di sostituzione",
replacementSearchPlaceholder: "Termine di ricerca",
replacementReplacePlaceholder: "Termine di sostituzione"
}
}
const resources = {
ja: {
translation: translations.ja
},
en: {
translation: translations.en
},
zh: {
translation: translations.zh
},
ko: {
translation: translations.ko
},
fr: {
translation: translations.fr
},
es: {
translation: translations.es
},
de: {
translation: translations.de
},
it: {
translation: translations.it
}
}
// 既存のスクリプトの前に追加
document.addEventListener('DOMContentLoaded', function () {
i18next
.use(i18nextBrowserLanguageDetector)
.init({
fallbackLng: 'ja', // デフォルト言語
resources: resources
})
.then(function (t) {
document.getElementById('languageSelect').value = i18next.language;
document.getElementById('languageSelect').dispatchEvent(new Event('change'));
});
});
function updateContent() {
// 各要素のテキストを更新
document.getElementById('inputQueryTitle').textContent = i18next.t('inputQueryTitle');
document.getElementById('generateButtonText').textContent = i18next.t('generateButtonText');
document.getElementById('splitStrings').textContent = i18next.t('splitStrings');
document.getElementById('outputPromptTitle').textContent = i18next.t('outputPromptTitle');
document.getElementById('settingsTitle').textContent = i18next.t('settingsTitle');
document.querySelector('#apiKeyLabel > a').textContent = i18next.t('apiKeyLabel');
document.getElementById('characterCountLabel').textContent = i18next.t('characterCountLabel');
document.getElementById('languageSelectLabel').textContent = i18next.t('languageSelectLabel');
// プレースホルダーを更新
document.getElementById('promptEn').placeholder = i18next.t('promptEnPlaceholder');
document.getElementById('promptMyLanguage').placeholder = i18next.t('promptMyLanguagePlaceholder');
document.getElementById('apiKey').placeholder = i18next.t('apiKeyPlaceholder');
document.getElementById('characterCount').placeholder = i18next.t('characterCountPlaceholder');
// エンドポイントと履歴のテキストを更新
document.getElementById('endpointSelectLabel').textContent = i18next.t('endpointSelectLabel');
document.getElementById('historyTitle').textContent = i18next.t('historyTitle');
document.getElementById('noHistoryMessage').textContent = i18next.t('noHistoryMessage');
// 置換設定の翻訳を更新
document.getElementById('replacementTitle').textContent = i18next.t('replacementTitle');
document.getElementById('addReplacementButtonText').textContent = i18next.t('addReplacementButtonText');
// 既存の置換セットのプレースホルダーを更新
document.querySelectorAll('.replacement-search').forEach(el => {
el.placeholder = i18next.t('replacementSearchPlaceholder');
});
document.querySelectorAll('.replacement-replace').forEach(el => {
el.placeholder = i18next.t('replacementReplacePlaceholder');
});
}
// 言語切り替え関数
function changeLang(language) {
i18next.changeLanguage(language, (err, t) => {
if (err) return console.error('言語切り替えエラー', err);
updateContent();
});
}
document.getElementById('languageSelect').addEventListener('change', function () {
changeLang(this.value);
});