Add UI translations for Italian, Dutch, Polish, Vietnamese, Thai, Ukrainian, Swedish

This commit is contained in:
Russell Ballestrini 2026-01-03 13:42:40 -05:00
parent b70b3e0844
commit 0aaba4c7c0
8 changed files with 812 additions and 0 deletions

View file

@ -18,6 +18,13 @@ import { te } from "./te.js";
import { tr } from "./tr.js";
import { zhTw } from "./zh-tw.js";
import { ko } from "./ko.js";
import { it } from "./it.js";
import { nl } from "./nl.js";
import { pl } from "./pl.js";
import { vi } from "./vi.js";
import { th } from "./th.js";
import { uk } from "./uk.js";
import { sv } from "./sv.js";
// Complete UI Translations for all supported languages
export const UI_TRANSLATIONS = {
@ -40,4 +47,11 @@ export const UI_TRANSLATIONS = {
tr,
"zh-tw": zhTw,
ko,
it,
nl,
pl,
vi,
th,
uk,
sv,
};

114
public/src/languages/it.js Normal file
View file

@ -0,0 +1,114 @@
// Italian UI Translations
export const it = {
// Main buttons
readPage: "📖 Leggi Pagina",
ttsAnything: "🔊 Sintesi Vocale",
translate: "🌐 Traduci",
smartTranslate: "🤖 Traduzione Intelligente",
uploadFile: "📁 Carica File",
// Actions
refreshModels: "🔄 Aggiorna Modelli",
clearChat: "🗑️ Cancella Chat",
fullChatRaw: "📋 Chat Completa Raw",
fullChatHTML: "📄 Chat Completa HTML",
fullPageRaw: "📝 Pagina Completa Raw",
downloadChat: "💾 Scarica Chat",
// Chat UI
sendButton: "Invia",
typePlaceholder: "Scrivi il tuo messaggio...",
askPagePlaceholder: "Chiedi informazioni su questa pagina...",
askAnythingPlaceholder: "Chiedi qualsiasi cosa...",
enterTextToSpeakPlaceholder: "Inserisci il testo da pronunciare...",
clearChatConfirm: "Cancellare tutta la cronologia della conversazione?",
// Modal headers
aiAssistantTitle: "Assistente IA",
ttsModalTitle: "Sintesi Vocale",
translateModalTitle: "Traduci",
// System messages
pageContentPrefix: "Ecco il contenuto della pagina web:",
additionalContext:
"Sei incorporato in questa pagina. Quando rispondi alle domande, considera il contenuto e il contesto della pagina.",
// Notifications and alerts
languageChanged:
"Lingua impostata su {lang}. Aggiorna la pagina per vedere tutti gli elementi dell'interfaccia nella tua lingua preferita.",
translationFailed: "Traduzione fallita: {error}",
ttsFailed: "Sintesi vocale fallita: {error}",
fullChatCopied: "Chat completa copiata come markdown grezzo!",
fullChatHTMLCopied: "Chat completa copiata come HTML!",
fullPageCopied: "Pagina completa copiata come markdown!",
failedToCopy: "Copia fallita: {error}",
failedToCopyPage: "Copia pagina fallita: {error}",
failedToCopyCode: "Copia codice fallita: {error}",
errorOpeningModal: "Errore nell'apertura del modal IA: {error}",
failedToReadPage: "Lettura pagina fallita: {error}",
languageDetectionFailed: "Rilevamento lingua fallito: {error}",
// Dropdown labels
currentPage: "Pagina corrente: {lang}",
translatingTo: "Traduzione in corso...",
detectingLanguage: "🔍 Rilevamento...",
// Intro/header text
hermesIntro:
'presenta il modello linguistico <a href="https://nousresearch.com/hermes3/" target="_blank" style="color: rgba(255,255,255,0.9); text-decoration: underline;">hermes</a> di nous research',
discussingPage: "Stai discutendo",
// TTS placeholder
ttsPlaceholder:
"sintesi vocale: scrivi qualsiasi messaggio e fallo pronunciare dall'intelligenza artificiale!",
translatePlaceholder: "Inserisci qualsiasi testo da tradurre...",
// Read page status messages
processingContent: "Elaborazione contenuto...",
readingPageClickToPause: "Lettura pagina... Clicca per mettere in pausa",
pausedClickToResume: "In pausa. Clicca per riprendere",
downloadPageAudio: "Scarica il file .mp3 della sintesi vocale per questa pagina.",
downloadChatAudio: "Scarica questo messaggio come file .mp3.",
deleteMessage: "Elimina messaggio",
copyRawMarkdown: "Copia grezzo (Markdown)",
copyHTML: "Copia HTML",
// Translation modal tabs
translatePageTab: "📄 Traduci Pagina",
customTextTab: "✏️ Testo Personalizzato",
remoteUrlTab: "🌐 URL Remoto",
// TTS modal components
speedLabel: "Velocità:",
playText: "Riproduci Testo",
// Translation modal content
translatePageInfo: "Traduci il contenuto della pagina corrente nella lingua scelta:",
translateToLabel: "Traduci in:",
translateButton: "🌐 Traduci",
translatePageButton: "🌐 Traduci Pagina",
translateTextButton: "🌐 Traduci Testo",
remoteUrlInfo: "Inserisci un URL da recuperare e tradurre:",
remoteUrlPlaceholder: "https://esempio.com",
fetchAndTranslate: "🌐 Recupera e Traduci",
processingText: "Elaborazione...",
processingTokens: "🤖 Elaborazione {tokens} token...",
// Button labels for UI
translationModal: "🌐 Modal Traduzione",
translationModalHeading: "Modal Traduzione",
// System prompt components
systemPromptIntro: "Sei Hermes AI, alimentato da Nous Research, incorporato in una pagina web tramite uncloseai.com. Il tuo compito è generare un'introduzione intelligente di 3 paragrafi che dimostri una profonda comprensione del contenuto specifico della pagina, del suo scopo e del suo pubblico.",
systemPromptTask1: "1. Inizia naturalmente identificando di cosa tratta questa pagina - sii specifico: menziona il titolo della pagina, l'argomento principale, il nome dell'autore se presente, o lo scopo principale. Mostra una comprensione immediata del tipo di contenuto (articolo, documentazione, pagina prodotto, ecc.)",
systemPromptTask2: "2. Fai riferimento a 2-3 dettagli altamente specifici dalla pagina - cita frasi esatte, cita punti dati specifici, menziona sezioni o caratteristiche particolari che noti. Dimostra di aver analizzato il contenuto reale, non solo sfogliato.",
systemPromptTask3: "3. Offri assistenza contestualmente rilevante in base al tipo di pagina - per documentazione tecnica, offri di spiegare concetti; per articoli, offri di discutere idee; per prodotti, rispondi sulle caratteristiche. Sii specifico su COME puoi aiutare con QUESTO particolare contenuto.",
systemPromptInstructions: "Sii conversazionale ma competente. Basa la tua introduzione sul contenuto reale della pagina. Evita affermazioni generiche. Scrivi naturalmente in",
// More alerts and messages
pleaseEnterText: "Per favore inserisci prima del testo!",
pleaseSelectFile: "Per favore seleziona prima un file!",
pleaseEnterTranslateText: "Per favore inserisci del testo da tradurre!",
aiModalNotAvailable: "Modal IA non disponibile in questo contesto",
useCustomAPI: "Usa un endpoint personalizzato compatibile con openai.",
};

114
public/src/languages/nl.js Normal file
View file

@ -0,0 +1,114 @@
// Dutch UI Translations
export const nl = {
// Main buttons
readPage: "📖 Lees Pagina",
ttsAnything: "🔊 Tekst naar Spraak",
translate: "🌐 Vertalen",
smartTranslate: "🤖 Slim Vertalen",
uploadFile: "📁 Upload Bestand",
// Actions
refreshModels: "🔄 Modellen Vernieuwen",
clearChat: "🗑️ Chat Wissen",
fullChatRaw: "📋 Volledige Chat Raw",
fullChatHTML: "📄 Volledige Chat HTML",
fullPageRaw: "📝 Volledige Pagina Raw",
downloadChat: "💾 Chat Downloaden",
// Chat UI
sendButton: "Versturen",
typePlaceholder: "Typ je bericht...",
askPagePlaceholder: "Vraag over deze pagina...",
askAnythingPlaceholder: "Vraag wat je wilt...",
enterTextToSpeakPlaceholder: "Voer tekst in om uit te spreken...",
clearChatConfirm: "Alle gespreksgeschiedenis wissen?",
// Modal headers
aiAssistantTitle: "AI Assistent",
ttsModalTitle: "Tekst naar Spraak",
translateModalTitle: "Vertalen",
// System messages
pageContentPrefix: "Hier is de inhoud van de webpagina:",
additionalContext:
"Je bent ingebed op deze pagina. Houd bij het beantwoorden van vragen rekening met de pagina-inhoud en context.",
// Notifications and alerts
languageChanged:
"Taal ingesteld op {lang}. Vernieuw de pagina om alle interface-elementen in je voorkeurstaal te zien.",
translationFailed: "Vertaling mislukt: {error}",
ttsFailed: "Tekst naar spraak mislukt: {error}",
fullChatCopied: "Volledige chat gekopieerd als ruwe markdown!",
fullChatHTMLCopied: "Volledige chat gekopieerd als HTML!",
fullPageCopied: "Volledige pagina gekopieerd als markdown!",
failedToCopy: "Kopiëren mislukt: {error}",
failedToCopyPage: "Pagina kopiëren mislukt: {error}",
failedToCopyCode: "Code kopiëren mislukt: {error}",
errorOpeningModal: "Fout bij openen AI modal: {error}",
failedToReadPage: "Pagina lezen mislukt: {error}",
languageDetectionFailed: "Taaldetectie mislukt: {error}",
// Dropdown labels
currentPage: "Huidige pagina: {lang}",
translatingTo: "Vertalen...",
detectingLanguage: "🔍 Detecteren...",
// Intro/header text
hermesIntro:
'presenteert nous research\'s <a href="https://nousresearch.com/hermes3/" target="_blank" style="color: rgba(255,255,255,0.9); text-decoration: underline;">hermes</a> groot taalmodel',
discussingPage: "Je bespreekt",
// TTS placeholder
ttsPlaceholder:
"tekst naar spraak: schrijf een bericht en laat de kunstmatige intelligentie het uitspreken!",
translatePlaceholder: "Voer tekst in om te vertalen...",
// Read page status messages
processingContent: "Inhoud verwerken...",
readingPageClickToPause: "Pagina lezen... Klik om te pauzeren",
pausedClickToResume: "Gepauzeerd. Klik om te hervatten",
downloadPageAudio: "Download het tekst naar spraak .mp3 bestand voor deze pagina.",
downloadChatAudio: "Download dit bericht als .mp3 bestand.",
deleteMessage: "Bericht verwijderen",
copyRawMarkdown: "Kopieer ruw (Markdown)",
copyHTML: "Kopieer HTML",
// Translation modal tabs
translatePageTab: "📄 Vertaal Pagina",
customTextTab: "✏️ Aangepaste Tekst",
remoteUrlTab: "🌐 Externe URL",
// TTS modal components
speedLabel: "Snelheid:",
playText: "Tekst Afspelen",
// Translation modal content
translatePageInfo: "Vertaal de huidige pagina-inhoud naar je gekozen taal:",
translateToLabel: "Vertalen naar:",
translateButton: "🌐 Vertalen",
translatePageButton: "🌐 Vertaal Pagina",
translateTextButton: "🌐 Vertaal Tekst",
remoteUrlInfo: "Voer een URL in om op te halen en te vertalen:",
remoteUrlPlaceholder: "https://voorbeeld.nl",
fetchAndTranslate: "🌐 Ophalen en Vertalen",
processingText: "Verwerken...",
processingTokens: "🤖 Verwerken {tokens} tokens...",
// Button labels for UI
translationModal: "🌐 Vertaal Modal",
translationModalHeading: "Vertaal Modal",
// System prompt components
systemPromptIntro: "Je bent Hermes AI, aangedreven door Nous Research, ingebed op een webpagina via uncloseai.com. Je taak is om een contextueel intelligente introductie van 3 paragrafen te genereren die een diep begrip toont van de specifieke pagina-inhoud, het doel en het publiek.",
systemPromptTask1: "1. Begin natuurlijk door te identificeren waar deze pagina over gaat - wees specifiek: noem de paginatitel, het hoofdonderwerp, de auteursnaam indien aanwezig, of het belangrijkste doel. Toon direct begrip van het inhoudstype (artikel, documentatie, productpagina, enz.)",
systemPromptTask2: "2. Verwijs naar 2-3 zeer specifieke details van de pagina - citeer exacte zinnen, noem specifieke datapunten, vermeld bepaalde secties of functies die je opmerkt. Toon aan dat je de werkelijke inhoud hebt geanalyseerd, niet alleen doorgebladerd.",
systemPromptTask3: "3. Bied contextueel relevante hulp op basis van het paginatype - voor technische documentatie, bied aan om concepten uit te leggen; voor artikelen, bied aan om ideeën te bespreken; voor producten, beantwoord vragen over functies. Wees specifiek over HOE je kunt helpen met DEZE specifieke inhoud.",
systemPromptInstructions: "Wees conversationeel maar deskundig. Baseer je introductie op de werkelijke pagina-inhoud. Vermijd generieke uitspraken. Schrijf natuurlijk in",
// More alerts and messages
pleaseEnterText: "Voer eerst tekst in!",
pleaseSelectFile: "Selecteer eerst een bestand!",
pleaseEnterTranslateText: "Voer tekst in om te vertalen!",
aiModalNotAvailable: "AI modal niet beschikbaar in deze context",
useCustomAPI: "Gebruik een aangepast openai-compatibel endpoint.",
};

114
public/src/languages/pl.js Normal file
View file

@ -0,0 +1,114 @@
// Polish UI Translations
export const pl = {
// Main buttons
readPage: "📖 Czytaj Stronę",
ttsAnything: "🔊 Tekst na Mowę",
translate: "🌐 Tłumacz",
smartTranslate: "🤖 Inteligentne Tłumaczenie",
uploadFile: "📁 Prześlij Plik",
// Actions
refreshModels: "🔄 Odśwież Modele",
clearChat: "🗑️ Wyczyść Czat",
fullChatRaw: "📋 Pełny Czat Raw",
fullChatHTML: "📄 Pełny Czat HTML",
fullPageRaw: "📝 Pełna Strona Raw",
downloadChat: "💾 Pobierz Czat",
// Chat UI
sendButton: "Wyślij",
typePlaceholder: "Wpisz swoją wiadomość...",
askPagePlaceholder: "Zapytaj o tę stronę...",
askAnythingPlaceholder: "Zapytaj o cokolwiek...",
enterTextToSpeakPlaceholder: "Wprowadź tekst do odczytania...",
clearChatConfirm: "Wyczyścić całą historię rozmowy?",
// Modal headers
aiAssistantTitle: "Asystent AI",
ttsModalTitle: "Tekst na Mowę",
translateModalTitle: "Tłumacz",
// System messages
pageContentPrefix: "Oto zawartość strony internetowej:",
additionalContext:
"Jesteś osadzony na tej stronie. Odpowiadając na pytania, weź pod uwagę zawartość i kontekst strony.",
// Notifications and alerts
languageChanged:
"Język ustawiony na {lang}. Odśwież stronę, aby zobaczyć wszystkie elementy interfejsu w preferowanym języku.",
translationFailed: "Tłumaczenie nie powiodło się: {error}",
ttsFailed: "Synteza mowy nie powiodła się: {error}",
fullChatCopied: "Pełny czat skopiowany jako surowy markdown!",
fullChatHTMLCopied: "Pełny czat skopiowany jako HTML!",
fullPageCopied: "Pełna strona skopiowana jako markdown!",
failedToCopy: "Kopiowanie nie powiodło się: {error}",
failedToCopyPage: "Kopiowanie strony nie powiodło się: {error}",
failedToCopyCode: "Kopiowanie kodu nie powiodło się: {error}",
errorOpeningModal: "Błąd podczas otwierania modalu AI: {error}",
failedToReadPage: "Czytanie strony nie powiodło się: {error}",
languageDetectionFailed: "Wykrywanie języka nie powiodło się: {error}",
// Dropdown labels
currentPage: "Bieżąca strona: {lang}",
translatingTo: "Tłumaczenie...",
detectingLanguage: "🔍 Wykrywanie...",
// Intro/header text
hermesIntro:
'prezentuje duży model językowy <a href="https://nousresearch.com/hermes3/" target="_blank" style="color: rgba(255,255,255,0.9); text-decoration: underline;">hermes</a> od nous research',
discussingPage: "Omawiasz",
// TTS placeholder
ttsPlaceholder:
"tekst na mowę: napisz dowolną wiadomość i pozwól sztucznej inteligencji ją odczytać!",
translatePlaceholder: "Wprowadź dowolny tekst do przetłumaczenia...",
// Read page status messages
processingContent: "Przetwarzanie zawartości...",
readingPageClickToPause: "Czytanie strony... Kliknij, aby wstrzymać",
pausedClickToResume: "Wstrzymano. Kliknij, aby wznowić",
downloadPageAudio: "Pobierz plik .mp3 z syntezą mowy dla tej strony.",
downloadChatAudio: "Pobierz tę wiadomość jako plik .mp3.",
deleteMessage: "Usuń wiadomość",
copyRawMarkdown: "Kopiuj surowy (Markdown)",
copyHTML: "Kopiuj HTML",
// Translation modal tabs
translatePageTab: "📄 Tłumacz Stronę",
customTextTab: "✏️ Własny Tekst",
remoteUrlTab: "🌐 Zdalny URL",
// TTS modal components
speedLabel: "Prędkość:",
playText: "Odtwórz Tekst",
// Translation modal content
translatePageInfo: "Przetłumacz zawartość bieżącej strony na wybrany język:",
translateToLabel: "Tłumacz na:",
translateButton: "🌐 Tłumacz",
translatePageButton: "🌐 Tłumacz Stronę",
translateTextButton: "🌐 Tłumacz Tekst",
remoteUrlInfo: "Wprowadź URL do pobrania i przetłumaczenia:",
remoteUrlPlaceholder: "https://przyklad.pl",
fetchAndTranslate: "🌐 Pobierz i Tłumacz",
processingText: "Przetwarzanie...",
processingTokens: "🤖 Przetwarzanie {tokens} tokenów...",
// Button labels for UI
translationModal: "🌐 Modal Tłumaczenia",
translationModalHeading: "Modal Tłumaczenia",
// System prompt components
systemPromptIntro: "Jesteś Hermes AI, zasilany przez Nous Research, osadzony na stronie internetowej przez uncloseai.com. Twoim zadaniem jest wygenerowanie kontekstowo inteligentnego 3-paragrafowego wprowadzenia, które wykaże głębokie zrozumienie konkretnej zawartości strony, jej celu i odbiorców.",
systemPromptTask1: "1. Zacznij naturalnie, identyfikując, o czym jest ta strona - bądź konkretny: wymień tytuł strony, główny temat, nazwę autora jeśli jest obecna, lub główny cel. Pokaż natychmiastowe zrozumienie typu treści (artykuł, dokumentacja, strona produktu, itp.)",
systemPromptTask2: "2. Odnieś się do 2-3 bardzo konkretnych szczegółów ze strony - cytuj dokładne frazy, podawaj konkretne punkty danych, wymień poszczególne sekcje lub funkcje, które zauważasz. Pokaż, że przeanalizowałeś rzeczywistą zawartość, a nie tylko ją przejrzałeś.",
systemPromptTask3: "3. Zaoferuj kontekstowo odpowiednią pomoc w zależności od typu strony - dla dokumentacji technicznej, zaoferuj wyjaśnienie koncepcji; dla artykułów, zaoferuj dyskusję o pomysłach; dla produktów, odpowiadaj o funkcjach. Bądź konkretny JAK możesz pomóc z TĄ konkretną zawartością.",
systemPromptInstructions: "Bądź konwersacyjny, ale kompetentny. Oprzyj swoje wprowadzenie na rzeczywistej zawartości strony. Unikaj ogólnych stwierdzeń. Pisz naturalnie w",
// More alerts and messages
pleaseEnterText: "Najpierw wprowadź tekst!",
pleaseSelectFile: "Najpierw wybierz plik!",
pleaseEnterTranslateText: "Wprowadź tekst do przetłumaczenia!",
aiModalNotAvailable: "Modal AI niedostępny w tym kontekście",
useCustomAPI: "Użyj niestandardowego endpointu kompatybilnego z openai.",
};

114
public/src/languages/sv.js Normal file
View file

@ -0,0 +1,114 @@
// Swedish UI Translations
export const sv = {
// Main buttons
readPage: "📖 Läs Sida",
ttsAnything: "🔊 Text till Tal",
translate: "🌐 Översätt",
smartTranslate: "🤖 Smart Översättning",
uploadFile: "📁 Ladda Upp Fil",
// Actions
refreshModels: "🔄 Uppdatera Modeller",
clearChat: "🗑️ Rensa Chatt",
fullChatRaw: "📋 Hela Chatten Raw",
fullChatHTML: "📄 Hela Chatten HTML",
fullPageRaw: "📝 Hela Sidan Raw",
downloadChat: "💾 Ladda Ner Chatt",
// Chat UI
sendButton: "Skicka",
typePlaceholder: "Skriv ditt meddelande...",
askPagePlaceholder: "Fråga om denna sida...",
askAnythingPlaceholder: "Fråga vad som helst...",
enterTextToSpeakPlaceholder: "Ange text att läsa upp...",
clearChatConfirm: "Rensa all konversationshistorik?",
// Modal headers
aiAssistantTitle: "AI-Assistent",
ttsModalTitle: "Text till Tal",
translateModalTitle: "Översätt",
// System messages
pageContentPrefix: "Här är innehållet på webbsidan:",
additionalContext:
"Du är inbäddad på denna sida. När du svarar på frågor, ta hänsyn till sidans innehåll och kontext.",
// Notifications and alerts
languageChanged:
"Språk inställt på {lang}. Uppdatera sidan för att se alla gränssnittselement på ditt föredragna språk.",
translationFailed: "Översättning misslyckades: {error}",
ttsFailed: "Text till tal misslyckades: {error}",
fullChatCopied: "Hela chatten kopierad som rå markdown!",
fullChatHTMLCopied: "Hela chatten kopierad som HTML!",
fullPageCopied: "Hela sidan kopierad som markdown!",
failedToCopy: "Kopiering misslyckades: {error}",
failedToCopyPage: "Kunde inte kopiera sida: {error}",
failedToCopyCode: "Kunde inte kopiera kod: {error}",
errorOpeningModal: "Fel vid öppning av AI-modal: {error}",
failedToReadPage: "Kunde inte läsa sida: {error}",
languageDetectionFailed: "Språkdetektering misslyckades: {error}",
// Dropdown labels
currentPage: "Nuvarande sida: {lang}",
translatingTo: "Översätter...",
detectingLanguage: "🔍 Detekterar...",
// Intro/header text
hermesIntro:
'presenterar nous researchs <a href="https://nousresearch.com/hermes3/" target="_blank" style="color: rgba(255,255,255,0.9); text-decoration: underline;">hermes</a> stora språkmodell',
discussingPage: "Du diskuterar",
// TTS placeholder
ttsPlaceholder:
"text till tal: skriv valfritt meddelande och låt den artificiella intelligensen läsa upp det!",
translatePlaceholder: "Ange valfri text att översätta...",
// Read page status messages
processingContent: "Bearbetar innehåll...",
readingPageClickToPause: "Läser sida... Klicka för att pausa",
pausedClickToResume: "Pausad. Klicka för att fortsätta",
downloadPageAudio: "Ladda ner text till tal .mp3-fil för denna sida.",
downloadChatAudio: "Ladda ner detta meddelande som .mp3-fil.",
deleteMessage: "Radera meddelande",
copyRawMarkdown: "Kopiera rå (Markdown)",
copyHTML: "Kopiera HTML",
// Translation modal tabs
translatePageTab: "📄 Översätt Sida",
customTextTab: "✏️ Anpassad Text",
remoteUrlTab: "🌐 Fjärr-URL",
// TTS modal components
speedLabel: "Hastighet:",
playText: "Spela Text",
// Translation modal content
translatePageInfo: "Översätt den nuvarande sidans innehåll till ditt valda språk:",
translateToLabel: "Översätt till:",
translateButton: "🌐 Översätt",
translatePageButton: "🌐 Översätt Sida",
translateTextButton: "🌐 Översätt Text",
remoteUrlInfo: "Ange en URL att hämta och översätta:",
remoteUrlPlaceholder: "https://exempel.se",
fetchAndTranslate: "🌐 Hämta och Översätt",
processingText: "Bearbetar...",
processingTokens: "🤖 Bearbetar {tokens} tokens...",
// Button labels for UI
translationModal: "🌐 Översättningsmodal",
translationModalHeading: "Översättningsmodal",
// System prompt components
systemPromptIntro: "Du är Hermes AI, driven av Nous Research, inbäddad på en webbsida via uncloseai.com. Din uppgift är att generera en kontextuellt intelligent introduktion på 3 stycken som visar djup förståelse för sidans specifika innehåll, dess syfte och målgrupp.",
systemPromptTask1: "1. Öppna naturligt genom att identifiera vad denna sida handlar om - var specifik: nämn sidtiteln, huvudämnet, författarnamnet om det finns, eller huvudsyftet. Visa omedelbar förståelse för innehållstypen (artikel, dokumentation, produktsida, etc.)",
systemPromptTask2: "2. Referera till 2-3 mycket specifika detaljer från sidan - citera exakta fraser, citera specifika datapunkter, nämn särskilda avsnitt eller funktioner du märker. Visa att du har analyserat det faktiska innehållet, inte bara skummat igenom det.",
systemPromptTask3: "3. Erbjud kontextuellt relevant hjälp baserat på sidtypen - för teknisk dokumentation, erbjud att förklara koncept; för artiklar, erbjud att diskutera idéer; för produkter, svara på frågor om funktioner. Var specifik om HUR du kan hjälpa med DETTA specifika innehåll.",
systemPromptInstructions: "Var konversationell men kunnig. Basera din introduktion på sidans faktiska innehåll. Undvik generiska uttalanden. Skriv naturligt på",
// More alerts and messages
pleaseEnterText: "Vänligen ange text först!",
pleaseSelectFile: "Vänligen välj en fil först!",
pleaseEnterTranslateText: "Vänligen ange text att översätta!",
aiModalNotAvailable: "AI-modal inte tillgänglig i detta sammanhang",
useCustomAPI: "Använd en anpassad openai-kompatibel endpoint.",
};

114
public/src/languages/th.js Normal file
View file

@ -0,0 +1,114 @@
// Thai UI Translations
export const th = {
// Main buttons
readPage: "📖 อ่านหน้า",
ttsAnything: "🔊 แปลงข้อความเป็นเสียง",
translate: "🌐 แปล",
smartTranslate: "🤖 แปลอัจฉริยะ",
uploadFile: "📁 อัปโหลดไฟล์",
// Actions
refreshModels: "🔄 รีเฟรชโมเดล",
clearChat: "🗑️ ล้างแชท",
fullChatRaw: "📋 แชททั้งหมด Raw",
fullChatHTML: "📄 แชททั้งหมด HTML",
fullPageRaw: "📝 หน้าทั้งหมด Raw",
downloadChat: "💾 ดาวน์โหลดแชท",
// Chat UI
sendButton: "ส่ง",
typePlaceholder: "พิมพ์ข้อความของคุณ...",
askPagePlaceholder: "ถามเกี่ยวกับหน้านี้...",
askAnythingPlaceholder: "ถามอะไรก็ได้...",
enterTextToSpeakPlaceholder: "ป้อนข้อความที่จะพูด...",
clearChatConfirm: "ล้างประวัติการสนทนาทั้งหมด?",
// Modal headers
aiAssistantTitle: "ผู้ช่วย AI",
ttsModalTitle: "แปลงข้อความเป็นเสียง",
translateModalTitle: "แปล",
// System messages
pageContentPrefix: "นี่คือเนื้อหาของหน้าเว็บ:",
additionalContext:
"คุณถูกฝังอยู่ในหน้านี้ เมื่อตอบคำถาม โปรดพิจารณาเนื้อหาและบริบทของหน้า",
// Notifications and alerts
languageChanged:
"ตั้งค่าภาษาเป็น {lang} รีเฟรชหน้าเพื่อดูองค์ประกอบอินเทอร์เฟซทั้งหมดในภาษาที่คุณต้องการ",
translationFailed: "การแปลล้มเหลว: {error}",
ttsFailed: "การแปลงข้อความเป็นเสียงล้มเหลว: {error}",
fullChatCopied: "คัดลอกแชททั้งหมดเป็น markdown ดิบแล้ว!",
fullChatHTMLCopied: "คัดลอกแชททั้งหมดเป็น HTML แล้ว!",
fullPageCopied: "คัดลอกหน้าทั้งหมดเป็น markdown แล้ว!",
failedToCopy: "การคัดลอกล้มเหลว: {error}",
failedToCopyPage: "การคัดลอกหน้าล้มเหลว: {error}",
failedToCopyCode: "การคัดลอกโค้ดล้มเหลว: {error}",
errorOpeningModal: "เกิดข้อผิดพลาดในการเปิด modal AI: {error}",
failedToReadPage: "การอ่านหน้าล้มเหลว: {error}",
languageDetectionFailed: "การตรวจจับภาษาล้มเหลว: {error}",
// Dropdown labels
currentPage: "หน้าปัจจุบัน: {lang}",
translatingTo: "กำลังแปล...",
detectingLanguage: "🔍 กำลังตรวจจับ...",
// Intro/header text
hermesIntro:
'นำเสนอโมเดลภาษาขนาดใหญ่ <a href="https://nousresearch.com/hermes3/" target="_blank" style="color: rgba(255,255,255,0.9); text-decoration: underline;">hermes</a> จาก nous research',
discussingPage: "คุณกำลังพูดคุยเกี่ยวกับ",
// TTS placeholder
ttsPlaceholder:
"แปลงข้อความเป็นเสียง: เขียนข้อความใดก็ได้และให้ปัญญาประดิษฐ์พูดมัน!",
translatePlaceholder: "ป้อนข้อความใดก็ได้เพื่อแปล...",
// Read page status messages
processingContent: "กำลังประมวลผลเนื้อหา...",
readingPageClickToPause: "กำลังอ่านหน้า... คลิกเพื่อหยุดชั่วคราว",
pausedClickToResume: "หยุดชั่วคราว คลิกเพื่อดำเนินการต่อ",
downloadPageAudio: "ดาวน์โหลดไฟล์ .mp3 แปลงข้อความเป็นเสียงสำหรับหน้านี้",
downloadChatAudio: "ดาวน์โหลดข้อความนี้เป็นไฟล์ .mp3",
deleteMessage: "ลบข้อความ",
copyRawMarkdown: "คัดลอกดิบ (Markdown)",
copyHTML: "คัดลอก HTML",
// Translation modal tabs
translatePageTab: "📄 แปลหน้า",
customTextTab: "✏️ ข้อความที่กำหนดเอง",
remoteUrlTab: "🌐 URL ระยะไกล",
// TTS modal components
speedLabel: "ความเร็ว:",
playText: "เล่นข้อความ",
// Translation modal content
translatePageInfo: "แปลเนื้อหาของหน้าปัจจุบันเป็นภาษาที่คุณเลือก:",
translateToLabel: "แปลเป็น:",
translateButton: "🌐 แปล",
translatePageButton: "🌐 แปลหน้า",
translateTextButton: "🌐 แปลข้อความ",
remoteUrlInfo: "ป้อน URL เพื่อดึงและแปล:",
remoteUrlPlaceholder: "https://ตัวอย่าง.th",
fetchAndTranslate: "🌐 ดึงและแปล",
processingText: "กำลังประมวลผล...",
processingTokens: "🤖 กำลังประมวลผล {tokens} โทเค็น...",
// Button labels for UI
translationModal: "🌐 Modal การแปล",
translationModalHeading: "Modal การแปล",
// System prompt components
systemPromptIntro: "คุณคือ Hermes AI ขับเคลื่อนโดย Nous Research ฝังอยู่บนหน้าเว็บผ่าน uncloseai.com งานของคุณคือสร้างบทนำที่ชาญฉลาดตามบริบท 3 ย่อหน้าที่แสดงความเข้าใจอย่างลึกซึ้งเกี่ยวกับเนื้อหาเฉพาะของหน้า วัตถุประสงค์ และผู้ชม",
systemPromptTask1: "1. เปิดตัวอย่างเป็นธรรมชาติโดยระบุว่าหน้านี้เกี่ยวกับอะไร - เจาะจง: กล่าวถึงชื่อหน้า หัวข้อหลัก ชื่อผู้เขียนถ้ามี หรือวัตถุประสงค์หลัก แสดงความเข้าใจทันทีเกี่ยวกับประเภทเนื้อหา (บทความ เอกสาร หน้าผลิตภัณฑ์ ฯลฯ)",
systemPromptTask2: "2. อ้างอิง 2-3 รายละเอียดที่เฉพาะเจาะจงจากหน้า - อ้างวลีที่แน่นอน อ้างจุดข้อมูลเฉพาะ กล่าวถึงส่วนหรือคุณสมบัติเฉพาะที่คุณสังเกตเห็น แสดงให้เห็นว่าคุณได้วิเคราะห์เนื้อหาจริง ไม่ใช่แค่ผ่านตา",
systemPromptTask3: "3. เสนอความช่วยเหลือที่เกี่ยวข้องตามบริบทตามประเภทหน้า - สำหรับเอกสารเทคนิค เสนออธิบายแนวคิด; สำหรับบทความ เสนอพูดคุยเกี่ยวกับแนวคิด; สำหรับผลิตภัณฑ์ ตอบเกี่ยวกับคุณสมบัติ เจาะจงว่าคุณสามารถช่วยอย่างไรกับเนื้อหาเฉพาะนี้",
systemPromptInstructions: "เป็นกันเองแต่มีความรู้ ยึดบทนำของคุณกับเนื้อหาจริงของหน้า หลีกเลี่ยงข้อความทั่วไป เขียนอย่างเป็นธรรมชาติใน",
// More alerts and messages
pleaseEnterText: "กรุณาป้อนข้อความก่อน!",
pleaseSelectFile: "กรุณาเลือกไฟล์ก่อน!",
pleaseEnterTranslateText: "กรุณาป้อนข้อความเพื่อแปล!",
aiModalNotAvailable: "Modal AI ไม่พร้อมใช้งานในบริบทนี้",
useCustomAPI: "ใช้ endpoint ที่กำหนดเองที่เข้ากันได้กับ openai",
};

114
public/src/languages/uk.js Normal file
View file

@ -0,0 +1,114 @@
// Ukrainian UI Translations
export const uk = {
// Main buttons
readPage: "📖 Читати Сторінку",
ttsAnything: "🔊 Озвучити Текст",
translate: "🌐 Перекласти",
smartTranslate: "🤖 Розумний Переклад",
uploadFile: "📁 Завантажити Файл",
// Actions
refreshModels: "🔄 Оновити Моделі",
clearChat: "🗑️ Очистити Чат",
fullChatRaw: "📋 Весь Чат Raw",
fullChatHTML: "📄 Весь Чат HTML",
fullPageRaw: "📝 Вся Сторінка Raw",
downloadChat: "💾 Завантажити Чат",
// Chat UI
sendButton: "Надіслати",
typePlaceholder: "Введіть ваше повідомлення...",
askPagePlaceholder: "Запитайте про цю сторінку...",
askAnythingPlaceholder: "Запитайте що завгодно...",
enterTextToSpeakPlaceholder: "Введіть текст для озвучення...",
clearChatConfirm: "Очистити всю історію розмови?",
// Modal headers
aiAssistantTitle: "Асистент ШІ",
ttsModalTitle: "Озвучення Тексту",
translateModalTitle: "Перекласти",
// System messages
pageContentPrefix: "Ось вміст веб-сторінки:",
additionalContext:
"Ви вбудовані на цій сторінці. Відповідаючи на запитання, враховуйте вміст та контекст сторінки.",
// Notifications and alerts
languageChanged:
"Мову встановлено на {lang}. Оновіть сторінку, щоб побачити всі елементи інтерфейсу вашою обраною мовою.",
translationFailed: "Переклад не вдався: {error}",
ttsFailed: "Озвучення не вдалося: {error}",
fullChatCopied: "Весь чат скопійовано як сирий markdown!",
fullChatHTMLCopied: "Весь чат скопійовано як HTML!",
fullPageCopied: "Всю сторінку скопійовано як markdown!",
failedToCopy: "Не вдалося скопіювати: {error}",
failedToCopyPage: "Не вдалося скопіювати сторінку: {error}",
failedToCopyCode: "Не вдалося скопіювати код: {error}",
errorOpeningModal: "Помилка відкриття модального вікна ШІ: {error}",
failedToReadPage: "Не вдалося прочитати сторінку: {error}",
languageDetectionFailed: "Не вдалося визначити мову: {error}",
// Dropdown labels
currentPage: "Поточна сторінка: {lang}",
translatingTo: "Переклад...",
detectingLanguage: "🔍 Визначення...",
// Intro/header text
hermesIntro:
'представляє велику мовну модель <a href="https://nousresearch.com/hermes3/" target="_blank" style="color: rgba(255,255,255,0.9); text-decoration: underline;">hermes</a> від nous research',
discussingPage: "Ви обговорюєте",
// TTS placeholder
ttsPlaceholder:
"озвучення тексту: напишіть будь-яке повідомлення і нехай штучний інтелект озвучить його!",
translatePlaceholder: "Введіть будь-який текст для перекладу...",
// Read page status messages
processingContent: "Обробка вмісту...",
readingPageClickToPause: "Читання сторінки... Натисніть, щоб призупинити",
pausedClickToResume: "Призупинено. Натисніть, щоб продовжити",
downloadPageAudio: "Завантажити файл .mp3 озвучення для цієї сторінки.",
downloadChatAudio: "Завантажити це повідомлення як файл .mp3.",
deleteMessage: "Видалити повідомлення",
copyRawMarkdown: "Копіювати сирий (Markdown)",
copyHTML: "Копіювати HTML",
// Translation modal tabs
translatePageTab: "📄 Перекласти Сторінку",
customTextTab: "✏️ Власний Текст",
remoteUrlTab: "🌐 Віддалений URL",
// TTS modal components
speedLabel: "Швидкість:",
playText: "Відтворити Текст",
// Translation modal content
translatePageInfo: "Перекладіть вміст поточної сторінки на обрану мову:",
translateToLabel: "Перекласти на:",
translateButton: "🌐 Перекласти",
translatePageButton: "🌐 Перекласти Сторінку",
translateTextButton: "🌐 Перекласти Текст",
remoteUrlInfo: "Введіть URL для завантаження та перекладу:",
remoteUrlPlaceholder: "https://приклад.ua",
fetchAndTranslate: "🌐 Завантажити та Перекласти",
processingText: "Обробка...",
processingTokens: "🤖 Обробка {tokens} токенів...",
// Button labels for UI
translationModal: "🌐 Модальне Вікно Перекладу",
translationModalHeading: "Модальне Вікно Перекладу",
// System prompt components
systemPromptIntro: "Ви — Hermes AI, що працює на базі Nous Research, вбудований на веб-сторінку через uncloseai.com. Ваше завдання — створити контекстуально розумне вступне слово з 3 абзаців, що демонструє глибоке розуміння конкретного вмісту сторінки, її мети та аудиторії.",
systemPromptTask1: "1. Почніть природно, визначивши, про що ця сторінка — будьте конкретними: згадайте назву сторінки, основну тему, ім'я автора якщо є, або основну мету. Покажіть негайне розуміння типу контенту (стаття, документація, сторінка продукту тощо)",
systemPromptTask2: "2. Посилайтеся на 2-3 дуже конкретні деталі зі сторінки — цитуйте точні фрази, наводьте конкретні дані, згадуйте окремі розділи або функції, які ви помічаєте. Продемонструйте, що ви проаналізували фактичний вміст, а не просто переглянули його.",
systemPromptTask3: "3. Запропонуйте контекстуально релевантну допомогу залежно від типу сторінки — для технічної документації запропонуйте пояснити концепції; для статей запропонуйте обговорити ідеї; для продуктів відповідайте про функції. Будьте конкретними щодо того, ЯК ви можете допомогти з ЦИМ конкретним вмістом.",
systemPromptInstructions: "Будьте розмовними, але компетентними. Базуйте свій вступ на фактичному вмісті сторінки. Уникайте загальних тверджень. Пишіть природно",
// More alerts and messages
pleaseEnterText: "Будь ласка, спочатку введіть текст!",
pleaseSelectFile: "Будь ласка, спочатку виберіть файл!",
pleaseEnterTranslateText: "Будь ласка, введіть текст для перекладу!",
aiModalNotAvailable: "Модальне вікно ШІ недоступне в цьому контексті",
useCustomAPI: "Використовувати власний openai-сумісний endpoint.",
};

114
public/src/languages/vi.js Normal file
View file

@ -0,0 +1,114 @@
// Vietnamese UI Translations
export const vi = {
// Main buttons
readPage: "📖 Đọc Trang",
ttsAnything: "🔊 Chuyển Văn Bản Thành Giọng Nói",
translate: "🌐 Dịch",
smartTranslate: "🤖 Dịch Thông Minh",
uploadFile: "📁 Tải Lên Tệp",
// Actions
refreshModels: "🔄 Làm Mới Mô Hình",
clearChat: "🗑️ Xóa Trò Chuyện",
fullChatRaw: "📋 Toàn Bộ Chat Raw",
fullChatHTML: "📄 Toàn Bộ Chat HTML",
fullPageRaw: "📝 Toàn Bộ Trang Raw",
downloadChat: "💾 Tải Xuống Chat",
// Chat UI
sendButton: "Gửi",
typePlaceholder: "Nhập tin nhắn của bạn...",
askPagePlaceholder: "Hỏi về trang này...",
askAnythingPlaceholder: "Hỏi bất cứ điều gì...",
enterTextToSpeakPlaceholder: "Nhập văn bản để đọc...",
clearChatConfirm: "Xóa toàn bộ lịch sử trò chuyện?",
// Modal headers
aiAssistantTitle: "Trợ Lý AI",
ttsModalTitle: "Chuyển Văn Bản Thành Giọng Nói",
translateModalTitle: "Dịch",
// System messages
pageContentPrefix: "Đây là nội dung của trang web:",
additionalContext:
"Bạn được nhúng trên trang này. Khi trả lời câu hỏi, hãy xem xét nội dung và ngữ cảnh của trang.",
// Notifications and alerts
languageChanged:
"Ngôn ngữ được đặt thành {lang}. Làm mới trang để xem tất cả các phần tử giao diện bằng ngôn ngữ ưa thích của bạn.",
translationFailed: "Dịch thất bại: {error}",
ttsFailed: "Chuyển văn bản thành giọng nói thất bại: {error}",
fullChatCopied: "Đã sao chép toàn bộ chat dưới dạng markdown thô!",
fullChatHTMLCopied: "Đã sao chép toàn bộ chat dưới dạng HTML!",
fullPageCopied: "Đã sao chép toàn bộ trang dưới dạng markdown!",
failedToCopy: "Sao chép thất bại: {error}",
failedToCopyPage: "Sao chép trang thất bại: {error}",
failedToCopyCode: "Sao chép mã thất bại: {error}",
errorOpeningModal: "Lỗi khi mở modal AI: {error}",
failedToReadPage: "Đọc trang thất bại: {error}",
languageDetectionFailed: "Phát hiện ngôn ngữ thất bại: {error}",
// Dropdown labels
currentPage: "Trang hiện tại: {lang}",
translatingTo: "Đang dịch...",
detectingLanguage: "🔍 Đang phát hiện...",
// Intro/header text
hermesIntro:
'giới thiệu mô hình ngôn ngữ lớn <a href="https://nousresearch.com/hermes3/" target="_blank" style="color: rgba(255,255,255,0.9); text-decoration: underline;">hermes</a> của nous research',
discussingPage: "Bạn đang thảo luận về",
// TTS placeholder
ttsPlaceholder:
"chuyển văn bản thành giọng nói: viết bất kỳ tin nhắn nào và để trí tuệ nhân tạo đọc nó!",
translatePlaceholder: "Nhập văn bản bất kỳ để dịch...",
// Read page status messages
processingContent: "Đang xử lý nội dung...",
readingPageClickToPause: "Đang đọc trang... Nhấp để tạm dừng",
pausedClickToResume: "Đã tạm dừng. Nhấp để tiếp tục",
downloadPageAudio: "Tải xuống tệp .mp3 chuyển văn bản thành giọng nói cho trang này.",
downloadChatAudio: "Tải xuống tin nhắn này dưới dạng tệp .mp3.",
deleteMessage: "Xóa tin nhắn",
copyRawMarkdown: "Sao chép thô (Markdown)",
copyHTML: "Sao chép HTML",
// Translation modal tabs
translatePageTab: "📄 Dịch Trang",
customTextTab: "✏️ Văn Bản Tùy Chỉnh",
remoteUrlTab: "🌐 URL Từ Xa",
// TTS modal components
speedLabel: "Tốc độ:",
playText: "Phát Văn Bản",
// Translation modal content
translatePageInfo: "Dịch nội dung trang hiện tại sang ngôn ngữ bạn chọn:",
translateToLabel: "Dịch sang:",
translateButton: "🌐 Dịch",
translatePageButton: "🌐 Dịch Trang",
translateTextButton: "🌐 Dịch Văn Bản",
remoteUrlInfo: "Nhập URL để tải và dịch:",
remoteUrlPlaceholder: "https://vidu.vn",
fetchAndTranslate: "🌐 Tải và Dịch",
processingText: "Đang xử lý...",
processingTokens: "🤖 Đang xử lý {tokens} token...",
// Button labels for UI
translationModal: "🌐 Modal Dịch",
translationModalHeading: "Modal Dịch",
// System prompt components
systemPromptIntro: "Bạn là Hermes AI, được hỗ trợ bởi Nous Research, được nhúng trên một trang web thông qua uncloseai.com. Nhiệm vụ của bạn là tạo ra một giới thiệu thông minh theo ngữ cảnh gồm 3 đoạn văn thể hiện sự hiểu biết sâu sắc về nội dung cụ thể của trang, mục đích và đối tượng của nó.",
systemPromptTask1: "1. Bắt đầu tự nhiên bằng cách xác định trang này nói về điều gì - hãy cụ thể: đề cập đến tiêu đề trang, chủ đề chính, tên tác giả nếu có, hoặc mục đích chính. Thể hiện sự hiểu biết ngay lập tức về loại nội dung (bài viết, tài liệu, trang sản phẩm, v.v.)",
systemPromptTask2: "2. Tham chiếu 2-3 chi tiết rất cụ thể từ trang - trích dẫn các cụm từ chính xác, trích dẫn các điểm dữ liệu cụ thể, đề cập đến các phần hoặc tính năng cụ thể mà bạn nhận thấy. Chứng minh rằng bạn đã phân tích nội dung thực tế, không chỉ lướt qua.",
systemPromptTask3: "3. Cung cấp hỗ trợ phù hợp với ngữ cảnh dựa trên loại trang - đối với tài liệu kỹ thuật, đề nghị giải thích các khái niệm; đối với bài viết, đề nghị thảo luận ý tưởng; đối với sản phẩm, trả lời về tính năng. Hãy cụ thể về CÁCH bạn có thể giúp với nội dung CỤ THỂ này.",
systemPromptInstructions: "Hãy giao tiếp nhưng vẫn am hiểu. Dựa phần giới thiệu của bạn vào nội dung thực tế của trang. Tránh các phát biểu chung chung. Viết tự nhiên bằng",
// More alerts and messages
pleaseEnterText: "Vui lòng nhập văn bản trước!",
pleaseSelectFile: "Vui lòng chọn tệp trước!",
pleaseEnterTranslateText: "Vui lòng nhập văn bản để dịch!",
aiModalNotAvailable: "Modal AI không khả dụng trong ngữ cảnh này",
useCustomAPI: "Sử dụng endpoint tùy chỉnh tương thích với openai.",
};