complete: finalize all 18 language files with 63 translation keys
- Add missing 17 keys to final 8 languages (id, mr, sw, te, tr, ur, zh-tw) - Fix translation verifier to exclude helper scripts - Update CLAUDE.md with translation management documentation - All languages now complete: ar, bn, de, en, es, fr, hi, id, ja, ko, mr, pt, ru, sw, te, tr, ur, zh, zh-tw - Verified with translation completeness script - all 18 languages pass
This commit is contained in:
parent
48d8aa642f
commit
95ea67228b
21 changed files with 342 additions and 17 deletions
|
|
@ -21,6 +21,13 @@
|
|||
- If biome check fails, fix the issues before proceeding with commit/push
|
||||
- This prevents breaking production with syntax errors like missing parentheses
|
||||
|
||||
## Translation Management
|
||||
- All 18 language files are complete with 63 translation keys each (verified 2025-07-03)
|
||||
- Run verification before adding new languages: `cd src/languages && node verify-translations.js`
|
||||
- Languages: ar, bn, de, en, es, fr, hi, id, ja, ko, mr, pt, ru, sw, te, tr, ur, zh, zh-tw
|
||||
- Translation keys include: UI buttons, modal content, system prompts, error messages, placeholders
|
||||
- Each language file follows format: `export const [code] = { key: "translation", ... };`
|
||||
|
||||
## Commit Message Guidelines
|
||||
- Use single line commit messages only
|
||||
- Never include Claude Code attribution or "Generated with Claude Code"
|
||||
|
|
|
|||
|
|
@ -74,6 +74,18 @@ export const ar = {
|
|||
speedLabel: "السرعة:",
|
||||
playText: "تشغيل النص",
|
||||
|
||||
// Translation modal content
|
||||
translatePageInfo: "ترجم محتوى الصفحة الحالية إلى اللغة المختارة:",
|
||||
translateToLabel: "ترجمة إلى:",
|
||||
translateButton: "🌐 ترجمة",
|
||||
translatePageButton: "🌐 ترجمة الصفحة",
|
||||
translateTextButton: "🌐 ترجمة النص",
|
||||
processingText: "جاري المعالجة...",
|
||||
|
||||
// Button labels for UI
|
||||
translationModal: "🌐 نافذة الترجمة",
|
||||
translationModalHeading: "نافذة الترجمة",
|
||||
|
||||
// System prompt components
|
||||
systemPromptIntro: "أنت Hermes AI، مدعوم بواسطة Nous Research، مدمج في صفحة ويب. مهمتك هي إنشاء مقدمة دافئة ومرحبة من 3 فقرات تظهر أنك تفهم الصفحة المحددة التي يشاهدها المستخدم.",
|
||||
systemPromptTask1: "1. قدم نفسك كـ Hermes AI واعترف بالصفحة/المحتوى المحدد",
|
||||
|
|
|
|||
|
|
@ -66,6 +66,33 @@ export const bn = {
|
|||
"টেক্সট-টু-স্পিচ: যেকোনো বার্তা লিখুন এবং কৃত্রিম বুদ্ধিমত্তা তা বলুক!",
|
||||
translatePlaceholder: "অনুবাদের জন্য যেকোনো টেক্সট লিখুন...",
|
||||
|
||||
// Translation modal tabs
|
||||
translatePageTab: "📄 পেজ অনুবাদ",
|
||||
customTextTab: "✏️ কাস্টম টেক্সট",
|
||||
|
||||
// TTS modal components
|
||||
speedLabel: "গতি:",
|
||||
playText: "টেক্সট চালান",
|
||||
|
||||
// Translation modal content
|
||||
translatePageInfo: "বর্তমান পেজের বিষয়বস্তু আপনার পছন্দের ভাষায় অনুবাদ করুন:",
|
||||
translateToLabel: "অনুবাদ করুন:",
|
||||
translateButton: "🌐 অনুবাদ",
|
||||
translatePageButton: "🌐 পেজ অনুবাদ",
|
||||
translateTextButton: "🌐 টেক্সট অনুবাদ",
|
||||
processingText: "প্রক্রিয়া করা হচ্ছে...",
|
||||
|
||||
// Button labels for UI
|
||||
translationModal: "🌐 অনুবাদ মডেল",
|
||||
translationModalHeading: "অনুবাদ মডেল",
|
||||
|
||||
// System prompt components
|
||||
systemPromptIntro: "আপনি Hermes AI, Nous Research দ্বারা পরিচালিত, একটি ওয়েবপেজে এম্বেড করা। আপনার কাজ হল একটি উষ্ণ, স্বাগতময় 3-অনুচ্ছেদ পরিচয় তৈরি করা যা দেখায় যে আপনি ব্যবহারকারী যে নির্দিষ্ট পেজটি দেখছেন তা বুঝতে পারেন।",
|
||||
systemPromptTask1: "1. Hermes AI হিসেবে নিজের পরিচয় দিন এবং নির্দিষ্ট পেজ/বিষয়বস্তু স্বীকার করুন",
|
||||
systemPromptTask2: "2. পেজের বিষয়বস্তু থেকে আপনি যে 2-3টি নির্দিষ্ট, প্রাসঙ্গিক বিবরণ লক্ষ্য করেন তা উল্লেখ করুন",
|
||||
systemPromptTask3: "3. পেজের বিষয়বস্তু সংক্রান্ত প্রশ্নে সহাযতা প্রদান করুন",
|
||||
systemPromptInstructions: "এটি কথোপকথনমূলক, সহাযক এবং এই পেজে আপনি যা দেখেন তার জন্য নির্দিষ্ট রাখুন। লিখুন",
|
||||
|
||||
// More alerts and messages
|
||||
pleaseEnterText: "দয়া করে প্রথমে কিছু টেক্সট লিখুন!",
|
||||
pleaseSelectFile: "দয়া করে প্রথমে একটি ফাইল নির্বাচন করুন!",
|
||||
|
|
|
|||
|
|
@ -82,6 +82,10 @@ export const de = {
|
|||
translateTextButton: "🌐 Text Übersetzen",
|
||||
processingText: "Verarbeitung...",
|
||||
|
||||
// Button labels for UI
|
||||
translationModal: "🌐 Übersetzungs-Modal",
|
||||
translationModalHeading: "Übersetzungs-Modal",
|
||||
|
||||
// System prompt components
|
||||
systemPromptIntro: "Sie sind Hermes AI, unterstützt von Nous Research, eingebettet auf einer Webseite. Ihre Aufgabe ist es, eine warme, einladende 3-Absatz-Einführung zu generieren, die zeigt, dass Sie die spezifische Seite verstehen, die der Benutzer betrachtet.",
|
||||
systemPromptTask1: "1. Stellen Sie sich als Hermes AI vor und erkennen Sie die spezifische Seite/den Inhalt an",
|
||||
|
|
|
|||
|
|
@ -82,6 +82,10 @@ export const es = {
|
|||
translateTextButton: "🌐 Traducir Texto",
|
||||
processingText: "Procesando...",
|
||||
|
||||
// Button labels for UI
|
||||
translationModal: "🌐 Modal de Traducción",
|
||||
translationModalHeading: "Modal de Traducción",
|
||||
|
||||
// System prompt components
|
||||
systemPromptIntro: "Eres Hermes AI, impulsado por Nous Research, integrado en una página web. Tu tarea es generar una introducción cálida y acogedora de 3 párrafos que muestre que entiendes la página específica que el usuario está viendo.",
|
||||
systemPromptTask1: "1. Te presentas como Hermes AI y reconoces la página/contenido específico",
|
||||
|
|
|
|||
|
|
@ -82,6 +82,10 @@ export const fr = {
|
|||
translateTextButton: "🌐 Traduire le Texte",
|
||||
processingText: "Traitement...",
|
||||
|
||||
// Button labels for UI
|
||||
translationModal: "🌐 Modal de Traduction",
|
||||
translationModalHeading: "Modal de Traduction",
|
||||
|
||||
// System prompt components
|
||||
systemPromptIntro: "Vous êtes Hermes AI, alimenté par Nous Research, intégré sur une page web. Votre tâche est de générer une introduction chaleureuse et accueillante de 3 paragraphes qui montre que vous comprenez la page spécifique que l'utilisateur consulte.",
|
||||
systemPromptTask1: "1. Vous vous présentez comme Hermes AI et reconnaissez la page/contenu spécifique",
|
||||
|
|
|
|||
|
|
@ -73,6 +73,18 @@ export const hi = {
|
|||
speedLabel: "गति:",
|
||||
playText: "टेक्स्ट चलाएं",
|
||||
|
||||
// Translation modal content
|
||||
translatePageInfo: "वर्तमान पृष्ठ की सामग्री को अपनी चुनी गई भाषा में अनुवाद करें:",
|
||||
translateToLabel: "में अनुवाद करें:",
|
||||
translateButton: "🌐 अनुवाद",
|
||||
translatePageButton: "🌐 पृष्ठ अनुवाद",
|
||||
translateTextButton: "🌐 टेक्स्ट अनुवाद",
|
||||
processingText: "प्रसंस्करण...",
|
||||
|
||||
// Button labels for UI
|
||||
translationModal: "🌐 अनुवाद मोडल",
|
||||
translationModalHeading: "अनुवाद मोडल",
|
||||
|
||||
// System prompt components
|
||||
systemPromptIntro: "आप Hermes AI हैं, Nous Research द्वारा संचालित, एक वेबपेज में एम्बेडेड। आपका कार्य एक गर्म, स्वागत करने वाला 3-पैराग्राफ परिचय तैयार करना है जो दिखाता है कि आप उस विशिष्ट पृष्ठ को समझते हैं जिसे उपयोगकर्ता देख रहा है।",
|
||||
systemPromptTask1: "1. अपना परिचय Hermes AI के रूप में दें और विशिष्ट पृष्ठ/सामग्री को स्वीकार करें",
|
||||
|
|
|
|||
|
|
@ -66,6 +66,33 @@ export const id = {
|
|||
"teks ke ucapan: tulis pesan apapun dan biarkan kecerdasan buatan mengucapkannya!",
|
||||
translatePlaceholder: "Masukkan teks apapun untuk diterjemahkan...",
|
||||
|
||||
// Translation modal tabs
|
||||
translatePageTab: "📄 Terjemahkan Halaman",
|
||||
customTextTab: "✏️ Teks Kustom",
|
||||
|
||||
// TTS modal components
|
||||
speedLabel: "Kecepatan:",
|
||||
playText: "Putar Teks",
|
||||
|
||||
// Translation modal content
|
||||
translatePageInfo: "Terjemahkan konten halaman saat ini ke bahasa pilihan Anda:",
|
||||
translateToLabel: "Terjemahkan ke:",
|
||||
translateButton: "🌐 Terjemahkan",
|
||||
translatePageButton: "🌐 Terjemahkan Halaman",
|
||||
translateTextButton: "🌐 Terjemahkan Teks",
|
||||
processingText: "Memproses...",
|
||||
|
||||
// Button labels for UI
|
||||
translationModal: "🌐 Modal Terjemahan",
|
||||
translationModalHeading: "Modal Terjemahan",
|
||||
|
||||
// System prompt components
|
||||
systemPromptIntro: "Anda adalah Hermes AI, didukung oleh Nous Research, yang tertanam di halaman web. Tugas Anda adalah menghasilkan pengenalan hangat dan ramah 3 paragraf yang menunjukkan bahwa Anda memahami halaman spesifik yang sedang dilihat pengguna.",
|
||||
systemPromptTask1: "1. Perkenalkan diri Anda sebagai Hermes AI dan akui halaman/konten spesifik",
|
||||
systemPromptTask2: "2. Sebutkan 2-3 detail spesifik dan relevan yang Anda perhatikan dari konten halaman",
|
||||
systemPromptTask3: "3. Tawarkan bantuan dengan pertanyaan yang terkait dengan konten halaman",
|
||||
systemPromptInstructions: "Buat percakapan, membantu dan spesifik untuk apa yang Anda lihat di halaman ini. Tulis dalam bahasa",
|
||||
|
||||
// More alerts and messages
|
||||
pleaseEnterText: "Silakan masukkan teks terlebih dahulu!",
|
||||
pleaseSelectFile: "Silakan pilih file terlebih dahulu!",
|
||||
|
|
|
|||
|
|
@ -74,6 +74,18 @@ export const ja = {
|
|||
speedLabel: "速度:",
|
||||
playText: "テキストを再生",
|
||||
|
||||
// Translation modal content
|
||||
translatePageInfo: "現在のページコンテンツを選択した言語に翻訳します:",
|
||||
translateToLabel: "翻訳先:",
|
||||
translateButton: "🌐 翻訳",
|
||||
translatePageButton: "🌐 ページを翻訳",
|
||||
translateTextButton: "🌐 テキストを翻訳",
|
||||
processingText: "処理中...",
|
||||
|
||||
// Button labels for UI
|
||||
translationModal: "🌐 翻訳モーダル",
|
||||
translationModalHeading: "翻訳モーダル",
|
||||
|
||||
// System prompt components
|
||||
systemPromptIntro: "あなたはHermes AIです。Nous Researchによって提供され、ウェブページに組み込まれています。あなたの役割は、ユーザーが閲覧している特定のページを理解していることを示す、温かく歓迎的な3段落の紹介を生成することです。",
|
||||
systemPromptTask1: "1. Hermes AIとして自己紹介し、特定のページ/コンテンツを認識する",
|
||||
|
|
|
|||
|
|
@ -74,6 +74,18 @@ export const ko = {
|
|||
speedLabel: "속도:",
|
||||
playText: "텍스트 재생",
|
||||
|
||||
// Translation modal content
|
||||
translatePageInfo: "현재 페이지 콘텐츠를 선택한 언어로 번역합니다:",
|
||||
translateToLabel: "번역 대상:",
|
||||
translateButton: "🌐 번역",
|
||||
translatePageButton: "🌐 페이지 번역",
|
||||
translateTextButton: "🌐 텍스트 번역",
|
||||
processingText: "처리 중...",
|
||||
|
||||
// Button labels for UI
|
||||
translationModal: "🌐 번역 모달",
|
||||
translationModalHeading: "번역 모달",
|
||||
|
||||
// System prompt components
|
||||
systemPromptIntro: "당신은 Nous Research에서 제공하는 Hermes AI로, 웹페이지에 임베드되어 있습니다. 당신의 임무는 사용자가 보고 있는 특정 페이지를 이해하고 있음을 보여주는 따뜻하고 환영하는 3단락 소개를 생성하는 것입니다.",
|
||||
systemPromptTask1: "1. Hermes AI로 자신을 소개하고 특정 페이지/콘텐츠를 인정합니다",
|
||||
|
|
|
|||
|
|
@ -66,6 +66,33 @@ export const mr = {
|
|||
"टेक्स्ट-टू-स्पीच: कोणताही संदेश लिहा आणि कृत्रिम बुद्धिमत्तेला तो बोलू द्या!",
|
||||
translatePlaceholder: "भाषांतरासाठी कोणताही मजकूर प्रविष्ट करा...",
|
||||
|
||||
// Translation modal tabs
|
||||
translatePageTab: "📄 पान भाषांतर",
|
||||
customTextTab: "✏️ सानुकूल मजकूर",
|
||||
|
||||
// TTS modal components
|
||||
speedLabel: "गती:",
|
||||
playText: "मजकूर प्ले करा",
|
||||
|
||||
// Translation modal content
|
||||
translatePageInfo: "सध्याच्या पानाची सामग्री आपल्या निवडलेल्या भाषेत भाषांतर करा:",
|
||||
translateToLabel: "भाषांतर करा:",
|
||||
translateButton: "🌐 भाषांतर",
|
||||
translatePageButton: "🌐 पान भाषांतर",
|
||||
translateTextButton: "🌐 मजकूर भाषांतर",
|
||||
processingText: "प्रक्रिया करत आहे...",
|
||||
|
||||
// Button labels for UI
|
||||
translationModal: "🌐 भाषांतर मॉडल",
|
||||
translationModalHeading: "भाषांतर मॉडल",
|
||||
|
||||
// System prompt components
|
||||
systemPromptIntro: "तुम्ही Hermes AI आहात, Nous Research द्वारे समर्थित, वेबपेजमध्ये एम्बेड केलेले. तुमचे कार्य उबदार आणि स्वागत करणारे 3 परिच्छेदाचे परिचय तयार करणे आहे जे दर्शवते की तुम्ही वापरकर्ता पाहत असलेले विशिष्ट पान समजून घेत आहात.",
|
||||
systemPromptTask1: "1. Hermes AI म्हणून आपला परिचय द्या आणि विशिष्ट पान/सामग्री कबूल करा",
|
||||
systemPromptTask2: "2. पानाच्या सामग्रीतून तुम्हाला दिसणाऱ्या 2-3 विशिष्ट, संबंधित तपशीलांचा उल्लेख करा",
|
||||
systemPromptTask3: "3. पानाच्या सामग्रीशी संबंधित प्रश्नांसाठी मदत ऑफर करा",
|
||||
systemPromptInstructions: "हे संवादात्मक, उपयुक्त आणि या पानावर तुम्हाला जे दिसते त्यासाठी विशिष्ट ठेवा. लिहा",
|
||||
|
||||
// More alerts and messages
|
||||
pleaseEnterText: "कृपया प्रथम काही मजकूर प्रविष्ट करा!",
|
||||
pleaseSelectFile: "कृपया प्रथम फाइल निवडा!",
|
||||
|
|
|
|||
|
|
@ -74,6 +74,18 @@ export const pt = {
|
|||
speedLabel: "Velocidade:",
|
||||
playText: "Reproduzir Texto",
|
||||
|
||||
// Translation modal content
|
||||
translatePageInfo: "Traduza o conteúdo da página atual para seu idioma escolhido:",
|
||||
translateToLabel: "Traduzir para:",
|
||||
translateButton: "🌐 Traduzir",
|
||||
translatePageButton: "🌐 Traduzir Página",
|
||||
translateTextButton: "🌐 Traduzir Texto",
|
||||
processingText: "Processando...",
|
||||
|
||||
// Button labels for UI
|
||||
translationModal: "🌐 Modal de Tradução",
|
||||
translationModalHeading: "Modal de Tradução",
|
||||
|
||||
// System prompt components
|
||||
systemPromptIntro: "Você é Hermes AI, alimentado por Nous Research, incorporado em uma página web. Sua tarefa é gerar uma introdução calorosa e acolhedora de 3 parágrafos que mostre que você entende a página específica que o usuário está visualizando.",
|
||||
systemPromptTask1: "1. Apresente-se como Hermes AI e reconheça a página/conteúdo específico",
|
||||
|
|
|
|||
|
|
@ -74,6 +74,18 @@ export const ru = {
|
|||
speedLabel: "Скорость:",
|
||||
playText: "Воспроизвести Текст",
|
||||
|
||||
// Translation modal content
|
||||
translatePageInfo: "Переведите содержимое текущей страницы на выбранный язык:",
|
||||
translateToLabel: "Перевести на:",
|
||||
translateButton: "🌐 Перевести",
|
||||
translatePageButton: "🌐 Перевести Страницу",
|
||||
translateTextButton: "🌐 Перевести Текст",
|
||||
processingText: "Обработка...",
|
||||
|
||||
// Button labels for UI
|
||||
translationModal: "🌐 Модальное Окно Перевода",
|
||||
translationModalHeading: "Модальное Окно Перевода",
|
||||
|
||||
// System prompt components
|
||||
systemPromptIntro: "Вы - Hermes AI, работающий на основе Nous Research, встроенный в веб-страницу. Ваша задача - создать теплое, приветливое введение из 3 абзацев, которое показывает, что вы понимаете конкретную страницу, которую просматривает пользователь.",
|
||||
systemPromptTask1: "1. Представьтесь как Hermes AI и признайте конкретную страницу/контент",
|
||||
|
|
|
|||
|
|
@ -66,6 +66,33 @@ export const sw = {
|
|||
"maandishi hadi sauti: andika ujumbe wowote na uache akili bandia izungumze!",
|
||||
translatePlaceholder: "Ingiza maandishi yoyote ya kutafsiri...",
|
||||
|
||||
// Translation modal tabs
|
||||
translatePageTab: "📄 Tafsiri Ukurasa",
|
||||
customTextTab: "✏️ Maandishi ya Kawaida",
|
||||
|
||||
// TTS modal components
|
||||
speedLabel: "Kasi:",
|
||||
playText: "Cheza Maandishi",
|
||||
|
||||
// Translation modal content
|
||||
translatePageInfo: "Tafsiri maudhui ya ukurasa wa sasa katika lugha uliyochagua:",
|
||||
translateToLabel: "Tafsiri kuwa:",
|
||||
translateButton: "🌐 Tafsiri",
|
||||
translatePageButton: "🌐 Tafsiri Ukurasa",
|
||||
translateTextButton: "🌐 Tafsiri Maandishi",
|
||||
processingText: "Inachakata...",
|
||||
|
||||
// Button labels for UI
|
||||
translationModal: "🌐 Modal ya Tafsiri",
|
||||
translationModalHeading: "Modal ya Tafsiri",
|
||||
|
||||
// System prompt components
|
||||
systemPromptIntro: "Wewe ni Hermes AI, unayeongozwa na Nous Research, uliojengewa ndani ya ukurasa wa wavuti. Kazi yako ni kutengeneza utangulizi wa odhi 3 wa kirafiki na wa kukaribisha ambao unaonyesha kwamba unaelewa ukurasa maalum ambao mtumiaji anaona.",
|
||||
systemPromptTask1: "1. Jitambulishe kama Hermes AI na ukubali ukurasa/maudhui maalum",
|
||||
systemPromptTask2: "2. Taja maelezo 2-3 maalum na muhimu ambayo unaona kutoka kwa maudhui ya ukurasa",
|
||||
systemPromptTask3: "3. Toa msaada na maswali yanayohusiana na maudhui ya ukurasa",
|
||||
systemPromptInstructions: "Fanya iwe ya mazungumzo, ya kusaidia na mahsusi kwa kile unachoona kwenye ukurasa huu. Andika kwa lugha",
|
||||
|
||||
// More alerts and messages
|
||||
pleaseEnterText: "Tafadhali ingiza maandishi kwanza!",
|
||||
pleaseSelectFile: "Tafadhali chagua faili kwanza!",
|
||||
|
|
|
|||
|
|
@ -66,6 +66,33 @@ export const te = {
|
|||
"టెక్స్ట్-టు-స్పీచ్: ఏదైనా సందేశం వ్రాయండి మరియు కృత్రిమ మేధస్సు దానిని మాట్లాడనివ్వండి!",
|
||||
translatePlaceholder: "అనువదించడానికి ఏదైనా టెక్స్ట్ నమోదు చేయండి...",
|
||||
|
||||
// Translation modal tabs
|
||||
translatePageTab: "📄 పేజీ అనువాదం",
|
||||
customTextTab: "✏️ కస్టమ్ టెక్స్ట్",
|
||||
|
||||
// TTS modal components
|
||||
speedLabel: "వేగం:",
|
||||
playText: "టెక్స్ట్ ప్లే చేయండి",
|
||||
|
||||
// Translation modal content
|
||||
translatePageInfo: "ప్రస్తుత పేజీ కంటెంట్ను మీ ఎంచుకున్న భాషలో అనువదించండి:",
|
||||
translateToLabel: "అనువదించు:",
|
||||
translateButton: "🌐 అనువదించు",
|
||||
translatePageButton: "🌐 పేజీ అనువదించు",
|
||||
translateTextButton: "🌐 టెక్స్ట్ అనువదించు",
|
||||
processingText: "ప్రోసెస్ చేస్తోంది...",
|
||||
|
||||
// Button labels for UI
|
||||
translationModal: "🌐 అనువాద మోడల్",
|
||||
translationModalHeading: "అనువాద మోడల్",
|
||||
|
||||
// System prompt components
|
||||
systemPromptIntro: "మీరు Hermes AI, Nous Research ద్వారా సంచాలితం, వెబ్పేజీలో ఎంబెడ్ చేయబడినారు. మీ పని ఉష్ణమైన మరియు స్వాగతమైన 3 చరణాల పరిచయాన్ని సిద్ధం చేయడం మరియు మీరు వాడుకరి చూస్తున్న నిర్దిష్ట పేజీని అర్ధం చేసుకోవాలని దాని దర్శించడం.",
|
||||
systemPromptTask1: "1. Hermes AI గా మిమ్మల్ని పరిచయపెట్టుకోని మరియు నిర్దిష్ట పేజీ/కంటెంట్ను స్వీకరించండి",
|
||||
systemPromptTask2: "2. పేజీ కంటెంట్ నుంచి మీరు గమనించిన 2-3 నిర్దిష్ట మరియు అనుబంధ వివరాలను ప్రస్తావించండి",
|
||||
systemPromptTask3: "3. పేజీ కంటెంట్ కు సంబంధించిన ప్రశ్నలలో సహాయం అందించండి",
|
||||
systemPromptInstructions: "ఇది సంభాషణాత్మకం, ఉపయోగకరమైన మరియు ఈ పేజీలో మీరు చూసేదికి నిర్దిష్టమైన విధంగా ఉండాలి. వ్రాయండి",
|
||||
|
||||
// More alerts and messages
|
||||
pleaseEnterText: "దయచేసి ముందుగా కొంత టెక్స్ట్ నమోదు చేయండి!",
|
||||
pleaseSelectFile: "దయచేసి ముందుగా ఫైల్ ఎంచుకోండి!",
|
||||
|
|
|
|||
|
|
@ -66,6 +66,33 @@ export const tr = {
|
|||
"metin-konuşma: herhangi bir mesaj yazın ve yapay zekanın konuşmasını sağlayın!",
|
||||
translatePlaceholder: "Çevirmek için herhangi bir metin girin...",
|
||||
|
||||
// Translation modal tabs
|
||||
translatePageTab: "📄 Sayfayı Çevir",
|
||||
customTextTab: "✏️ Özel Metin",
|
||||
|
||||
// TTS modal components
|
||||
speedLabel: "Hız:",
|
||||
playText: "Metni Oynat",
|
||||
|
||||
// Translation modal content
|
||||
translatePageInfo: "Mevcut sayfa içeriğini seçtiğiniz dile çevirin:",
|
||||
translateToLabel: "Çevir:",
|
||||
translateButton: "🌐 Çevir",
|
||||
translatePageButton: "🌐 Sayfayı Çevir",
|
||||
translateTextButton: "🌐 Metni Çevir",
|
||||
processingText: "İşleniyor...",
|
||||
|
||||
// Button labels for UI
|
||||
translationModal: "🌐 Çeviri Modalı",
|
||||
translationModalHeading: "Çeviri Modalı",
|
||||
|
||||
// System prompt components
|
||||
systemPromptIntro: "Siz Hermes AI'sınız, Nous Research tarafından desteklenen, bir web sayfasına gömülü bir AI'sınız. Göreviniz, kullanıcının görüntülediği belirli sayfayı anladığınızı gösteren sıcak, hoş karşılayıcı 3 paragraflık bir giriş oluşturmaktır.",
|
||||
systemPromptTask1: "1. Kendinizi Hermes AI olarak tanıtın ve belirli sayfayı/içeriği kabul edin",
|
||||
systemPromptTask2: "2. Sayfa içeriğinden fark ettiğiniz 2-3 belirli, ilgili detayı belirtin",
|
||||
systemPromptTask3: "3. Sayfa içeriğiyle ilgili sorularda yardım teklif edin",
|
||||
systemPromptInstructions: "Bunu konuşmacı, yardımcı ve bu sayfada gördüklerinize özgü tutun. Şu dilde yazın",
|
||||
|
||||
// More alerts and messages
|
||||
pleaseEnterText: "Lütfen önce metin girin!",
|
||||
pleaseSelectFile: "Lütfen önce dosya seçin!",
|
||||
|
|
|
|||
|
|
@ -66,6 +66,33 @@ export const ur = {
|
|||
"ٹیکسٹ ٹو اسپیچ: کوئی بھی پیغام لکھیں اور مصنوعی ذہانت کو اسے بولنے دیں!",
|
||||
translatePlaceholder: "ترجمے کے لیے کوئی بھی متن داخل کریں...",
|
||||
|
||||
// Translation modal tabs
|
||||
translatePageTab: "📄 صفحہ ترجمہ کریں",
|
||||
customTextTab: "✏️ کسٹم ٹیکسٹ",
|
||||
|
||||
// TTS modal components
|
||||
speedLabel: "رفتار:",
|
||||
playText: "ٹیکسٹ چلائیں",
|
||||
|
||||
// Translation modal content
|
||||
translatePageInfo: "موجودہ صفحے کا مواد آپ کی منتخب زبان میں ترجمہ کریں:",
|
||||
translateToLabel: "ترجمہ کریں:",
|
||||
translateButton: "🌐 ترجمہ کریں",
|
||||
translatePageButton: "🌐 صفحہ ترجمہ کریں",
|
||||
translateTextButton: "🌐 ٹیکسٹ ترجمہ کریں",
|
||||
processingText: "پروسیسنگ...",
|
||||
|
||||
// Button labels for UI
|
||||
translationModal: "🌐 ترجمہ موڈل",
|
||||
translationModalHeading: "ترجمہ موڈل",
|
||||
|
||||
// System prompt components
|
||||
systemPromptIntro: "آپ Hermes AI ہیں، Nous Research کی طرف سے فراہم کردہ، ایک ویب صفحے میں شامل۔ آپ کا کام ایک گرم جوشی، خوش آمدید 3 پیراگراف کا تعارف تیار کرنا ہے جو دکھاتا ہے کہ آپ صارف جو مخصوص صفحہ دیکھ رہا ہے اسے سمجھتے ہیں۔",
|
||||
systemPromptTask1: "1. اپنا تعارف Hermes AI کے طور پر کریں اور مخصوص صفحہ/مواد کا اعتراف کریں",
|
||||
systemPromptTask2: "2. صفحے کے مواد سے آپ کے مشاہدہ کردہ 2-3 مخصوص، متعلقہ تفصیلات کا ذکر کریں",
|
||||
systemPromptTask3: "3. صفحے کے مواد سے متعلق سوالات کے ساتھ مدد کی پیشکش کریں",
|
||||
systemPromptInstructions: "اسے باتچیت میں، مددگار اور اس صفحے پر آپ جو دیکھتے ہیں اس کے لیے مخصوص رکھیں۔ لکھیں",
|
||||
|
||||
// More alerts and messages
|
||||
pleaseEnterText: "براہ کرم پہلے کچھ متن داخل کریں!",
|
||||
pleaseSelectFile: "براہ کرم پہلے ایک فائل منتخب کریں!",
|
||||
|
|
|
|||
|
|
@ -73,7 +73,10 @@ function extractKeysFromFile(filePath) {
|
|||
function getLanguageFiles() {
|
||||
const files = readdirSync(__dirname);
|
||||
return files
|
||||
.filter(file => file.endsWith('.js') && file !== 'index.js' && file !== 'verify-translations.js')
|
||||
.filter(file => file.endsWith('.js') &&
|
||||
file !== 'index.js' &&
|
||||
file !== 'verify-translations.js' &&
|
||||
file !== 'add-missing-keys.js')
|
||||
.sort();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -64,6 +64,33 @@ export const zhTw = {
|
|||
ttsPlaceholder: "文字轉語音:寫任何訊息,讓人工智慧朗讀出來!",
|
||||
translatePlaceholder: "輸入任何要翻譯的文字...",
|
||||
|
||||
// Translation modal tabs
|
||||
translatePageTab: "📄 翻譯頁面",
|
||||
customTextTab: "✏️ 自定義文字",
|
||||
|
||||
// TTS modal components
|
||||
speedLabel: "速度:",
|
||||
playText: "播放文字",
|
||||
|
||||
// Translation modal content
|
||||
translatePageInfo: "將目前頁面內容翻譯為您選擇的語言:",
|
||||
translateToLabel: "翻譯為:",
|
||||
translateButton: "🌐 翻譯",
|
||||
translatePageButton: "🌐 翻譯頁面",
|
||||
translateTextButton: "🌐 翻譯文字",
|
||||
processingText: "處理中...",
|
||||
|
||||
// Button labels for UI
|
||||
translationModal: "🌐 翻譯對話框",
|
||||
translationModalHeading: "翻譯對話框",
|
||||
|
||||
// System prompt components
|
||||
systemPromptIntro: "您是 Hermes AI,由 Nous Research 提供支持,嵌入於網頁中。您的任務是產生一個溫馨、歡迎的3段的介紹,這表明您理解使用者正在查看的特定頁面。",
|
||||
systemPromptTask1: "1. 以 Hermes AI 自我介紹並承認特定頁面/內容",
|
||||
systemPromptTask2: "2. 提及您從頁面內容中注意到的2-3個具體、相關的細節",
|
||||
systemPromptTask3: "3. 提供與頁面內容相關的問題協助",
|
||||
systemPromptInstructions: "保持對話性、幫助性並針對您在此頁面上所看到的內容。以下語言書寫",
|
||||
|
||||
// More alerts and messages
|
||||
pleaseEnterText: "請先輸入一些文字!",
|
||||
pleaseSelectFile: "請先選擇一個檔案!",
|
||||
|
|
|
|||
|
|
@ -72,6 +72,18 @@ export const zh = {
|
|||
speedLabel: "速度:",
|
||||
playText: "播放文本",
|
||||
|
||||
// Translation modal content
|
||||
translatePageInfo: "将当前页面内容翻译成您选择的语言:",
|
||||
translateToLabel: "翻译为:",
|
||||
translateButton: "🌐 翻译",
|
||||
translatePageButton: "🌐 翻译页面",
|
||||
translateTextButton: "🌐 翻译文本",
|
||||
processingText: "处理中...",
|
||||
|
||||
// Button labels for UI
|
||||
translationModal: "🌐 翻译模态框",
|
||||
translationModalHeading: "翻译模态框",
|
||||
|
||||
// System prompt components
|
||||
systemPromptIntro: "您是Hermes AI,由Nous Research提供支持,嵌入在网页中。您的任务是生成一个温暖、欢迎的3段介绍,展示您理解用户正在查看的特定页面。",
|
||||
systemPromptTask1: "1. 介绍自己为Hermes AI并确认特定页面/内容",
|
||||
|
|
|
|||
35
src/ui.js
35
src/ui.js
|
|
@ -376,8 +376,8 @@ export function createUploadFeature(container) {
|
|||
export function createTranslateFeature(container) {
|
||||
const translateDiv = document.createElement("div");
|
||||
translateDiv.innerHTML = `
|
||||
<h4>Translation Modal</h4>
|
||||
<button onclick="openTranslateModal()" style="width: 100%; padding: 6px;">🌐 Translation Modal</button>
|
||||
<h4 data-i18n="translationModalHeading">${getUIText("translationModalHeading")}</h4>
|
||||
<button onclick="openTranslateModal()" style="width: 100%; padding: 6px;" data-i18n="translationModal">${getUIText("translationModal")}</button>
|
||||
`;
|
||||
container.appendChild(translateDiv);
|
||||
}
|
||||
|
|
@ -390,7 +390,8 @@ export function createSmartTranslateFeature(container) {
|
|||
button.onclick = () => handleSmartTranslate(button);
|
||||
|
||||
const heading = document.createElement("h4");
|
||||
heading.textContent = "Smart Translate";
|
||||
heading.textContent = getUIText("smartTranslate");
|
||||
heading.setAttribute("data-i18n", "smartTranslate");
|
||||
|
||||
smartTranslateDiv.appendChild(heading);
|
||||
smartTranslateDiv.appendChild(button);
|
||||
|
|
@ -1566,13 +1567,13 @@ async function openUncloseaiEmbeddedModalNew() {
|
|||
}
|
||||
},
|
||||
},
|
||||
{ text: "🔊 TTS Anything", action: (btn) => window.openTTSModal() },
|
||||
{ text: getUIText("ttsAnything"), action: (btn) => window.openTTSModal() },
|
||||
{
|
||||
text: "🌐 Translation Modal",
|
||||
text: getUIText("translationModal"),
|
||||
action: (btn) => window.openTranslateModal(),
|
||||
},
|
||||
{
|
||||
text: "🤖 Smart Translate",
|
||||
text: getUIText("smartTranslate"),
|
||||
action: async (btn) => {
|
||||
// Create dropdown instead of opening modal
|
||||
if (
|
||||
|
|
@ -1589,7 +1590,7 @@ async function openUncloseaiEmbeddedModalNew() {
|
|||
|
||||
try {
|
||||
const currentLang = await detectPageLanguage();
|
||||
btn.textContent = "🤖 Smart Translate";
|
||||
btn.textContent = getUIText("smartTranslate");
|
||||
btn.disabled = false;
|
||||
|
||||
// Import supported languages
|
||||
|
|
@ -1693,7 +1694,7 @@ async function openUncloseaiEmbeddedModalNew() {
|
|||
100,
|
||||
);
|
||||
} catch (error) {
|
||||
btn.textContent = "🤖 Smart Translate";
|
||||
btn.textContent = getUIText("smartTranslate");
|
||||
btn.disabled = false;
|
||||
alert(getUIText("languageDetectionFailed", { error: error.message }));
|
||||
}
|
||||
|
|
@ -3383,7 +3384,7 @@ export async function openUncloseaiEmbeddedModal() {
|
|||
readPageBtn.onclick = readPageWithHermes;
|
||||
|
||||
const ttsBtn = document.createElement("button");
|
||||
ttsBtn.textContent = "🔊 TTS Anything";
|
||||
ttsBtn.textContent = getUIText("ttsAnything");
|
||||
if (USE_CUSTOM_STYLING) {
|
||||
ttsBtn.style.cssText =
|
||||
"padding: 6px 12px; border: 1px solid #ccc; border-radius: 4px; background: white; cursor: pointer;";
|
||||
|
|
@ -4342,8 +4343,8 @@ export function openTranslateModal() {
|
|||
|
||||
// Page translation content
|
||||
const pageInfo = document.createElement("p");
|
||||
pageInfo.textContent =
|
||||
"Translate the current page content into your chosen language:";
|
||||
pageInfo.textContent = getUIText("translatePageInfo");
|
||||
pageInfo.setAttribute("data-i18n", "translatePageInfo");
|
||||
pageContent.appendChild(pageInfo);
|
||||
|
||||
// Custom text content
|
||||
|
|
@ -4361,7 +4362,8 @@ export function openTranslateModal() {
|
|||
languageContainer.style.cssText = "margin: 20px 0;";
|
||||
|
||||
const languageLabel = document.createElement("label");
|
||||
languageLabel.textContent = "Translate to: ";
|
||||
languageLabel.textContent = getUIText("translateToLabel");
|
||||
languageLabel.setAttribute("data-i18n", "translateToLabel");
|
||||
languageLabel.style.display = "block";
|
||||
languageLabel.style.marginBottom = "8px";
|
||||
|
||||
|
|
@ -4382,7 +4384,8 @@ export function openTranslateModal() {
|
|||
|
||||
// Translate button
|
||||
const translateButton = document.createElement("button");
|
||||
translateButton.textContent = "🌐 Translate";
|
||||
translateButton.textContent = getUIText("translateButton");
|
||||
translateButton.setAttribute("data-i18n", "translateButton");
|
||||
if (USE_CUSTOM_STYLING) {
|
||||
translateButton.style.cssText = `
|
||||
padding: 12px 24px;
|
||||
|
|
@ -4429,7 +4432,7 @@ export function openTranslateModal() {
|
|||
customTab.style.color = "#4CAF50";
|
||||
pageContent.style.display = "block";
|
||||
customContent.style.display = "none";
|
||||
translateButton.textContent = "🌐 Translate Page";
|
||||
translateButton.textContent = getUIText("translatePageButton");
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -4442,7 +4445,7 @@ export function openTranslateModal() {
|
|||
pageTab.style.color = "#4CAF50";
|
||||
customContent.style.display = "block";
|
||||
pageContent.style.display = "none";
|
||||
translateButton.textContent = "🌐 Translate Text";
|
||||
translateButton.textContent = getUIText("translateTextButton");
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -4452,7 +4455,7 @@ export function openTranslateModal() {
|
|||
const targetLanguageName = SUPPORTED_LANGUAGES[targetLanguage];
|
||||
|
||||
try {
|
||||
translateButton.textContent = "Processing...";
|
||||
translateButton.textContent = getUIText("processingText");
|
||||
translateButton.disabled = true;
|
||||
resultContainer.style.display = "none";
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue