From 6a6aba9042cd3e0b808d16f9997a414269357f83 Mon Sep 17 00:00:00 2001 From: komlosizsolt Date: Sat, 2 May 2026 14:15:58 +0200 Subject: [PATCH] feat Hungarian (hu) locale (#288) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Komlósi Zsolt --- TRANSLATIONS.md | 1 + apps/web/src/i18n/index.tsx | 2 + apps/web/src/i18n/locales.test.ts | 2 +- apps/web/src/i18n/locales/hu.ts | 662 ++++++++++++++++++++++++++++++ apps/web/src/i18n/types.ts | 7 +- 5 files changed, 670 insertions(+), 4 deletions(-) create mode 100644 apps/web/src/i18n/locales/hu.ts diff --git a/TRANSLATIONS.md b/TRANSLATIONS.md index 8052ebd3a..be2d25680 100644 --- a/TRANSLATIONS.md +++ b/TRANSLATIONS.md @@ -28,6 +28,7 @@ READMEs covers any locale that has a translated README, dict or no dict. | `de` | Deutsch | `de.ts` | `README.de.md` | active | | `es-ES` | Español (España) | `es-ES.ts` | — | active | | `fa` | فارسی | `fa.ts` | — | active | +| `hu` | Magyar | `hu.ts` | — | active | | `ja` | 日本語 | — | `README.ja-JP.md` | active (README only) | | `ko` | 한국어 | — | `README.ko.md` | active (README only) | | `pt-BR` | Português (Brasil) | `pt-BR.ts` | — | active | diff --git a/apps/web/src/i18n/index.tsx b/apps/web/src/i18n/index.tsx index f73e838d8..d9bdecada 100644 --- a/apps/web/src/i18n/index.tsx +++ b/apps/web/src/i18n/index.tsx @@ -20,6 +20,7 @@ import { ru } from './locales/ru'; import { zhCN } from './locales/zh-CN'; import { zhTW } from './locales/zh-TW'; import { pl } from './locales/pl'; +import { hu } from './locales/hu'; import { LOCALES, type Dict, type Locale } from './types'; export { LOCALES, LOCALE_LABEL } from './types'; @@ -39,6 +40,7 @@ const DICTS: Record = { 'ja': ja, 'ko': ko, 'pl': pl, + 'hu': hu, }; const LS_KEY = 'open-design:locale'; diff --git a/apps/web/src/i18n/locales.test.ts b/apps/web/src/i18n/locales.test.ts index 6969f4aca..4202d7618 100644 --- a/apps/web/src/i18n/locales.test.ts +++ b/apps/web/src/i18n/locales.test.ts @@ -2,7 +2,7 @@ import { describe, expect, it } from 'vitest'; import { en } from './locales/en'; import { LOCALES, LOCALE_LABEL, type Dict, type Locale } from './types'; -const EXPECTED_LOCALES = ['en', 'de', 'zh-CN', 'zh-TW', 'pt-BR', 'es-ES', 'ru', 'fa', 'ja', 'ko', 'pl']; +const EXPECTED_LOCALES = ['en', 'de', 'zh-CN', 'zh-TW', 'pt-BR', 'es-ES', 'ru', 'fa', 'ja', 'ko', 'pl', 'hu']; function placeholders(value: string): string[] { const names: string[] = []; diff --git a/apps/web/src/i18n/locales/hu.ts b/apps/web/src/i18n/locales/hu.ts new file mode 100644 index 000000000..11916bb6e --- /dev/null +++ b/apps/web/src/i18n/locales/hu.ts @@ -0,0 +1,662 @@ +import type { Dict } from '../types'; + +export const hu: Dict = { + 'common.cancel': 'Mégse', + 'common.save': 'Mentés', + 'common.close': 'Bezárás', + 'common.delete': 'Törlés', + 'common.rename': 'Átnevezés', + 'common.preview': 'Előnézet', + 'common.share': 'Megosztás', + 'common.search': 'Keresés', + 'common.searchEllipsis': 'Keresés…', + 'common.loading': 'Betöltés…', + 'common.all': 'Összes', + 'common.none': 'Nincs', + 'common.default': 'Alapértelmezett', + 'common.installed': 'telepítve', + 'common.notInstalled': 'nincs telepítve', + 'common.active': 'aktív', + 'common.offline': 'offline', + 'common.selected': 'kiválasztva', + 'common.create': 'Létrehozás', + 'common.openPreview': 'Előnézet megnyitása', + 'common.exitFullscreen': 'Kilépés a teljes képernyőből', + 'common.fullscreen': 'Teljes képernyő', + 'common.openInNewTab': 'Megnyitás új lapon', + 'common.exportPdf': 'Exportálás PDF-ként', + 'common.exportZip': 'Letöltés .zip-ként', + 'common.exportHtml': 'Exportálás önálló HTML-ként', + 'common.justNow': 'az imént', + 'common.minutesAgo': '{n} perce', + 'common.hoursAgo': '{n} órája', + 'common.daysAgo': '{n} napja', + 'common.now': 'most', + 'common.minutesShort': '{n}p', + 'common.hoursShort': '{n}ó', + 'common.daysShort': '{n}n', + 'common.untitled': 'Cím nélkül', + + 'app.brand': 'Open Design', + 'app.brandPill': 'Kutatási előzetes', + 'app.brandSubtitle': 'a Nexu Labs-tól', + 'app.welcomeLoading': 'Munkaterület betöltése…', + + 'settings.welcomeKicker': 'Üdvözlünk', + 'settings.welcomeTitle': 'Open Design beállítása', + 'settings.welcomeSubtitle': + 'Válaszd ki, hogyan szeretnéd futtatni a generálásokat. Ezt bármikor módosíthatod a felső sáv Beállítások gombjával.', + 'settings.kicker': 'Beállítások', + 'settings.title': 'Végrehajtás és modell', + 'settings.subtitle': + 'Válassz a helyi code-agent CLI és az Anthropic API (BYOK) között. Az API-kulcs csak ebben a böngészőben tárolódik.', + 'settings.modeAria': 'Végrehajtási mód', + 'settings.modeDaemon': 'Helyi CLI', + 'settings.modeDaemonHelp': 'Futtatás a gépeden lévő code-agent CLI-n keresztül', + 'settings.modeDaemonOffline': 'A daemon nem fut', + 'settings.modeDaemonOfflineMeta': 'a daemon offline', + 'settings.modeDaemonInstalledMeta': '{count} telepítve', + 'settings.modeApi': 'Anthropic API', + 'settings.modeApiMeta': 'BYOK', + 'settings.codeAgent': 'Code agent', + 'settings.codeAgentHint': + 'A PATH átvizsgálásával észlelve. Válaszd ki a CLI-t, amelyen át a generálásokat szeretnéd futtatni.', + 'settings.rescan': '↻ Újraellenőrzés', + 'settings.rescanTitle': 'PATH újraellenőrzése', + 'settings.noAgentsDetected': + 'Még nincs észlelt ügynök. Telepítsd a Claude Code, Codex, Gemini CLI, OpenCode, Cursor Agent, Qwen vagy GitHub Copilot CLI valamelyikét, majd kattints az Újraellenőrzésre.', + 'settings.apiSection': 'Anthropic API', + 'settings.apiKey': 'API-kulcs', + 'settings.showKey': 'Kulcs megjelenítése', + 'settings.hideKey': 'Kulcs elrejtése', + 'settings.show': 'Megjelenítés', + 'settings.hide': 'Elrejtés', + 'settings.model': 'Modell', + 'settings.baseUrl': 'Base URL', + 'settings.maxTokens': 'Max tokenek (opcionális)', + 'settings.maxTokensHint': + 'A válasz hosszának felső határa. Minden modellnek van hangolt alapértelmezése (placeholderként látható); hagyd üresen az alkalmazásához, vagy adj meg számot a felülíráshoz.', + 'settings.apiHint': + 'A hívások közvetlenül ebből a böngészőből mennek a megadott bázis URL-re. Nincs proxy. A kulcs sosem hagyja el a localStorage-t.', + 'settings.skipForNow': 'Most kihagyom', + 'settings.getStarted': 'Kezdjük', + 'settings.envConfigure': 'Végrehajtási mód beállítása', + 'settings.localCli': 'Helyi CLI', + 'settings.anthropicApi': 'Anthropic API', + 'settings.noAgentSelected': 'nincs kiválasztott ügynök', + 'settings.language': 'Nyelv', + 'settings.languageHint': 'A felület nyelvének váltása. Ebben a böngészőben mentve.', + 'settings.appearance': 'Megjelenés', + 'settings.appearanceHint': 'Válassz világos, sötét, vagy kövesd a rendszer beállítását.', + 'settings.themeSystem': 'Rendszer', + 'settings.themeLight': 'Világos', + 'settings.themeDark': 'Sötét', + 'settings.modelPicker': 'Modell', + 'settings.reasoningPicker': 'Gondolkodási erőfeszítés', + 'settings.modelPickerHint': + 'A CLI-tól kérdezi le, ha az közzéteszi a `models` parancsot. Az „Alapértelmezett" a CLI saját konfigjára bízza a választást; az „Egyedi…" tetszőleges, a CLI által elfogadott modell-id-t enged megadni.', + 'settings.modelCustom': 'Egyedi (gépeld be alább)…', + 'settings.modelCustomLabel': 'Egyedi modell-id', + 'settings.modelCustomPlaceholder': 'pl. anthropic/claude-sonnet-4-6', + 'settings.mediaProviders': 'Média-szolgáltatók', + 'settings.mediaProvidersHint': + 'API-kulcsok kép-, videó- és hanggeneráláshoz. Helyben tárolva, és a helyi daemonnal szinkronizálva.', + 'settings.mediaProviderApiKey': 'API-kulcs', + 'settings.mediaProviderBaseUrl': 'Bázis URL', + 'settings.mediaProviderConfigured': 'Beállítva', + 'settings.mediaProviderUnset': 'Nincs beállítva', + 'settings.mediaProviderClear': 'Törlés', + 'settings.mediaProviderPlaceholder': 'API-kulcs beillesztése', + 'settings.mediaProviderBaseUrlPlaceholder': 'Alapértelmezett bázis URL felülírása', + 'settings.about': 'Névjegy', + 'settings.aboutHint': 'Verzió- és futtatókörnyezeti adatok', + 'settings.appVersion': 'Verzió', + 'settings.appChannel': 'Csatorna', + 'settings.appRuntime': 'Futtatókörnyezet', + 'settings.appPlatform': 'Platform', + 'settings.appArchitecture': 'Architektúra', + 'settings.runtimePackaged': 'Csomagolt alkalmazás', + 'settings.runtimeDevelopment': 'Fejlesztői', + 'settings.versionUnavailable': 'A verzió adatai nem érhetők el, amíg a daemon offline.', + + 'entry.tabDesigns': 'Tervek', + 'entry.tabExamples': 'Példák', + 'entry.tabDesignSystems': 'Designrendszerek', + 'entry.openSettingsTitle': 'Beállítások', + 'entry.openSettingsAria': 'Beállítások megnyitása', + 'entry.resizeAria': 'Oldalsáv átméretezése', + 'entry.loadingWorkspace': 'Munkaterület betöltése…', + 'entry.tabImageTemplates': 'Képsablonok', + 'entry.tabVideoTemplates': 'Videósablonok', + 'promptTemplates.searchPlaceholder': 'Sablonok keresése…', + 'promptTemplates.countLabel': '{n} találat', + 'promptTemplates.emptyImage': 'Még nincs telepített képsablon.', + 'promptTemplates.emptyVideo': 'Még nincs telepített videósablon.', + 'promptTemplates.emptyNoMatch': 'Egy sablon sem felel meg a keresésnek.', + 'promptTemplates.attributionFooter': 'Nyilvános prompt-tárakból átvéve. Minden kártya az eredeti szerzőre mutat.', + 'promptTemplates.openPreviewTitle': 'Prompt és előnézet megnyitása', + 'promptTemplates.sourcePrefix': 'Forrás:', + 'promptTemplates.fetchError': 'A sablon törzse nem tölthető be.', + 'promptTemplates.promptLabel': 'Prompt törzse', + 'promptTemplates.copyPrompt': 'Prompt másolása', + 'promptTemplates.copyDone': 'Másolva!', + 'promptTemplates.modelHint': 'Ajánlott modell: {model}', + 'promptTemplates.openSource': 'Eredeti megnyitása', + 'promptTemplates.openFullscreen': 'Teljes képernyős előnézet', + 'promptTemplates.closeFullscreen': 'Teljes képernyős előnézet bezárása', + 'promptTemplates.retry': 'Újra', + + 'newproj.tabPrototype': 'Prototípus', + 'newproj.tabDeck': 'Diavetítés', + 'newproj.tabTemplate': 'Sablonból', + 'newproj.tabOther': 'Egyéb', + 'newproj.titlePrototype': 'Új prototípus', + 'newproj.titleDeck': 'Új diavetítés', + 'newproj.titleTemplate': 'Indulás sablonból', + 'newproj.titleImage': 'Új kép', + 'newproj.titleVideo': 'Új videó', + 'newproj.titleAudio': 'Új hang', + 'newproj.titleOther': 'Új projekt', + 'newproj.namePlaceholder': 'Projekt neve', + 'newproj.fidelityLabel': 'Részletesség', + 'newproj.fidelityWireframe': 'Wireframe', + 'newproj.fidelityHigh': 'Részletes', + 'newproj.toggleSpeakerNotes': 'Előadói jegyzetek használata', + 'newproj.toggleSpeakerNotesHint': 'Kevesebb szöveg a diákon — a beszédpontok a jegyzetekbe kerülnek.', + 'newproj.toggleAnimations': 'Animációk hozzáadása', + 'newproj.toggleAnimationsHint': + 'Mozgás (belépés, hover, átmenetek) hozzáadása a sablonra.', + 'newproj.templateLabel': 'Sablon', + 'newproj.noTemplatesTitle': 'Még nincs sablon', + 'newproj.noTemplatesBody': + 'Nyiss meg egy projektet, majd a fájlnézőben a Megosztás menüvel alakítsd sablonná. A sablonok itt jelennek meg.', + 'newproj.savedTemplate': 'Mentett sablon', + 'newproj.fileSingular': 'fájl', + 'newproj.filePlural': 'fájl', + 'newproj.create': 'Létrehozás', + 'newproj.createFromTemplate': 'Létrehozás sablonból', + 'newproj.createDisabledTitle': + 'Először ments el egy projektet sablonként (bármely projekt Megosztás menüjéből).', + 'newproj.importClaudeZip': 'Claude Design ZIP importálása', + 'newproj.importClaudeZipTitle': 'Claude Design .zip export importálása', + 'newproj.importingClaudeZip': 'Importálás…', + 'newproj.privacyFooter': 'Alapértelmezetten csak te láthatod a projekted.', + 'newproj.designSystem': 'Designrendszer', + 'newproj.dsNoneFreeform': 'Nincs — szabad formátum', + 'newproj.dsNoneSubtitleEmpty': 'Nincsenek rendszertokenek, válassz saját palettát', + 'newproj.dsNoneSubtitleSelected': 'Hagyd ki a rendszertokeneket. Az ügynök maga választ palettát.', + 'newproj.dsCategoryFallback': 'Designrendszer', + 'newproj.dsSearch': 'Designrendszerek keresése…', + 'newproj.dsModeAria': 'Kijelölési mód', + 'newproj.dsModeSingle': 'Egy', + 'newproj.dsModeMulti': 'Több', + 'newproj.dsNoneTitle': 'Nincs — szabad formátum', + 'newproj.dsNoneSub': 'Hagyd ki a rendszertokeneket. Az ügynök maga választ palettát.', + 'newproj.dsEmpty': 'Egy designrendszer sem felel meg a „{query}" keresésnek.', + 'newproj.dsFootSingular': 'csak inspiráció.', + 'newproj.dsFootPlural': 'csak inspiráció.', + 'newproj.dsFootClear': 'Törlés', + 'newproj.dsBadgeDefault': 'ALAPÉRT.', + 'newproj.dsPrimaryFallback': 'Elsődleges', + 'newproj.surfaceImage': 'Kép', + 'newproj.surfaceVideo': 'Videó', + 'newproj.surfaceAudio': 'Hang', + 'newproj.modelLabel': 'Modell', + 'newproj.aspectLabel': 'Képarány', + 'newproj.imageStyleLabel': 'Stílusjegyzetek', + 'newproj.imageStylePlaceholder': 'Magazinszerű fotó, lágy nappali fény, tompa paletta', + 'newproj.videoLengthLabel': 'Hossz', + 'newproj.videoLengthSeconds': '{n} mp', + 'newproj.audioKindLabel': 'Hangtípus', + 'newproj.audioKindMusic': 'Zene', + 'newproj.audioKindSpeech': 'Beszéd / TTS', + 'newproj.audioKindSfx': 'Hangeffekt', + 'newproj.audioDurationLabel': 'Időtartam', + 'newproj.audioDurationSeconds': '{n} mp', + 'newproj.voiceLabel': 'Hang', + 'newproj.voicePlaceholder': 'Szolgáltatói hang-id, opcionális', + 'newproj.promptTemplateLabel': 'Hivatkozási sablon', + 'newproj.promptTemplateNoneTitle': 'Nincs — saját megfogalmazás', + 'newproj.promptTemplateNoneSub': 'Hagyd ki a galériát, írd le a saját brieffed', + 'newproj.promptTemplateRefSub': 'Hivatkozási sablon', + 'newproj.promptTemplateSearch': 'Sablonok keresése…', + 'newproj.promptTemplateEmpty': 'Még nincs telepített sablon ehhez a felülethez.', + 'newproj.promptTemplateBodyLabel': 'Prompt (módosítható)', + 'newproj.promptTemplateOptimizeHint': + 'Bármit módosíthatsz — a változtatásaid beépülnek az ügynök briefjébe.', + 'newproj.promptTemplateBodyEmpty': + 'Üres törzs — az ügynök nem kap sablonhivatkozást.', + + 'designs.subRecent': 'Legutóbbi', + 'designs.subYours': 'A te terveid', + 'designs.filterAria': 'Projektek szűrése', + 'designs.searchPlaceholder': 'Keresés…', + 'designs.emptyNoProjects': 'Még nincs projekt. Hozz létre egyet a bal oldalon.', + 'designs.emptyNoMatch': 'Egy projekt sem felel meg a keresésnek.', + 'designs.deleteTitle': 'Projekt törlése', + 'designs.deleteConfirm': 'Törlöd a(z) „{name}" projektet?', + 'designs.cardFreeform': 'szabad formátum', + 'designs.status.notStarted': 'Nem kezdődött el', + 'designs.status.queued': 'Sorban', + 'designs.status.running': 'Fut', + 'designs.status.awaitingInput': 'Bevitelre vár', + 'designs.status.succeeded': 'Befejezve', + 'designs.status.failed': 'Sikertelen', + 'designs.status.canceled': 'Megszakítva', + 'designs.viewToggleAria': 'Nézet módja', + 'designs.viewGrid': 'Rácsnézet', + 'designs.viewKanban': 'Tábla nézet', + 'designs.kanbanEmptyColumn': 'Nincs terv', + 'designs.deleteAria': '{name} projekt törlése', + + 'examples.typeLabel': 'Típus', + 'examples.surfaceLabel': 'Felület', + 'examples.surfaceWeb': 'Web', + 'examples.surfaceImage': 'Kép', + 'examples.surfaceVideo': 'Videó', + 'examples.surfaceAudio': 'Hang', + 'examples.scenarioLabel': 'Forgatókönyv', + 'examples.modeAll': 'Mind', + 'examples.modePrototypeDesktop': 'Prototípusok · Asztali', + 'examples.modePrototypeMobile': 'Prototípusok · Mobil', + 'examples.modeDeck': 'Diák', + 'examples.modeDocument': 'Dokumentumok és sablonok', + 'examples.scenarioGeneral': 'Általános', + 'examples.scenarioEngineering': 'Mérnöki', + 'examples.scenarioProduct': 'Termék', + 'examples.scenarioDesign': 'Design', + 'examples.scenarioMarketing': 'Marketing', + 'examples.scenarioSales': 'Értékesítés', + 'examples.scenarioFinance': 'Pénzügy', + 'examples.scenarioHr': 'HR', + 'examples.scenarioOperations': 'Operáció', + 'examples.scenarioSupport': 'Ügyfélszolgálat', + 'examples.scenarioLegal': 'Jogi', + 'examples.scenarioEducation': 'Oktatás', + 'examples.scenarioPersonal': 'Személyes', + 'examples.emptyNoSkills': 'Nincs elérhető skill. Fut a daemon?', + 'examples.emptyNoMatch': 'Egy példa sem felel meg ezeknek a szűrőknek.', + 'examples.openPreview': '⤢ Előnézet megnyitása', + 'examples.loadingPreview': 'Előnézet betöltése…', + 'examples.hoverPreview': 'Vidd fölé az egeret az előnézethez', + 'examples.usePrompt': 'Használd ezt a promptot', + 'examples.previewModalTitle': 'Teljes előnézet (modális)', + 'examples.shareTitle': 'Példa megosztása', + 'examples.shareLoadFirst': 'Vidd fölé az egeret az előnézet betöltéséhez', + 'examples.shareMenu': 'Megosztás ▾', + 'examples.exportPdfAllSlides': 'Exportálás PDF-ként (minden dia)', + 'examples.exportPptxLocked': 'Exportálás PPTX-ként… (előbb sablont nyiss)', + 'examples.tagSlideDeck': 'Diavetítés', + 'examples.tagTemplate': 'Sablon', + 'examples.tagDesignSystem': 'Designrendszer', + 'examples.tagMobilePrototype': 'Mobil prototípus', + 'examples.tagDesktopPrototype': 'Asztali prototípus', + 'examples.tagImage': 'Kép', + 'examples.tagVideo': 'Videó', + 'examples.tagAudio': 'Hang', + 'examples.previewLabel': 'Előnézet', + + 'ds.surfaceLabel': 'Felület', + 'ds.surfaceWeb': 'Web', + 'ds.surfaceImage': 'Kép', + 'ds.surfaceVideo': 'Videó', + 'ds.surfaceAudio': 'Hang', + 'ds.searchPlaceholder': 'Designrendszerek keresése…', + 'ds.emptyNoMatch': 'Egy designrendszer sem felel meg a keresésnek.', + 'ds.badgeDefault': 'ALAPÉRT.', + 'ds.preview': 'Előnézet', + 'ds.previewTitle': 'Designrendszer előnézete', + 'ds.categoryAll': 'Mind', + 'ds.categoryUncategorized': 'Kategorizálatlan', + 'ds.showcase': 'Bemutató', + 'ds.tokens': 'Tokenek', + + 'avatar.title': 'Fiók és beállítások', + 'avatar.localCli': 'Helyi CLI', + 'avatar.anthropicApi': 'Anthropic API', + 'avatar.useLocal': 'Helyi CLI használata', + 'avatar.useApi': 'Anthropic API használata', + 'avatar.codeAgent': 'Kód-ügynök', + 'avatar.rescan': 'PATH újraellenőrzése', + 'avatar.settings': 'Beállítások', + 'avatar.backToProjects': 'Vissza a projektekhez', + 'avatar.metaActive': 'aktív', + 'avatar.metaOffline': 'offline', + 'avatar.metaSelected': 'kiválasztva', + 'avatar.noAgentSelected': 'nincs kiválasztott ügynök', + 'avatar.modelSection': 'Modell', + 'avatar.modelLabel': 'Modell', + 'avatar.reasoningLabel': 'Gondolkodás', + 'avatar.customSuffix': '(egyedi)', + + 'project.backToProjects': 'Vissza a projektekhez', + 'project.metaFreeform': 'szabad formátum', + 'chat.tabChat': 'Csevegés', + 'chat.tabComments': 'Megjegyzések', + 'chat.commentsSoon': 'Megjegyzések — hamarosan', + 'chat.conversationsTitle': 'Beszélgetések', + 'chat.conversationsAria': 'Beszélgetések előzménye', + 'chat.newConversation': 'Új beszélgetés', + 'chat.newConversationsTitle': 'Új beszélgetés', + 'chat.conversationsHeading': 'Beszélgetések', + 'chat.new': 'Új', + 'chat.emptyConversations': 'Még nincs beszélgetés.', + 'chat.deleteConversation': 'Beszélgetés törlése', + 'chat.deleteConversationConfirm': + 'Törlöd a(z) „{title}" beszélgetést? Ez eltávolítja az üzeneteit.', + 'chat.untitledConversation': 'Cím nélküli beszélgetés', + 'chat.startTitle': 'Indíts beszélgetést', + 'chat.startHint': + 'Húzz vagy illessz be képeket vizuális hivatkozásként, vagy gépelj @-et a projekt egy fájljának csatolásához. Vagy próbáld ki ezeket a kezdéseket:', + 'chat.fillInputTitle': 'Kattints a beviteli mező kitöltéséhez', + 'chat.jumpToLatest': 'Ugrás a legutóbbira', + 'chat.scrollToLatest': 'Görgetés a legutóbbira', + 'chat.you': 'Te', + 'chat.openFile': '{name} megnyitása', + 'chat.composerPlaceholder': + 'Írd le a kívánt designt — illessz be vagy húzz képeket, vagy @-tel hivatkozz fájlra…', + 'chat.composerHint': + '⌘/Ctrl + Enter: küldés · képek beillesztése · @ fájlra hivatkozás', + 'chat.cliSettingsTitle': 'CLI- és modellbeállítások', + 'chat.cliSettingsAria': 'CLI- és modellbeállítások megnyitása', + 'chat.attachTitle': 'Fájlok csatolása (vagy beillesztés / húzás)', + 'chat.attachAria': 'Fájlok csatolása', + 'chat.importTitle': 'Források importálása (hamarosan)', + 'chat.importLabel': 'Importálás', + 'chat.importComingSoon': 'Hamarosan', + 'chat.importSoon': 'Hamarosan', + 'chat.importFig': '.fig fájl feltöltése', + 'chat.importGitHub': 'GitHub csatlakoztatása', + 'chat.importWeb': 'Webelem mentése', + 'chat.importFolder': 'Kódmappa hozzákapcsolása', + 'chat.importSkills': 'Skillek és designrendszerek', + 'chat.importProject': 'Hivatkozás másik projektre', + 'chat.send': 'Küldés', + 'chat.stop': 'Leállítás', + 'chat.removeAria': '{name} eltávolítása', + 'chat.example1Title': 'Magazinszerű pitch deck', + 'chat.example1Tag': 'Magazin', + 'chat.example1Prompt': + 'Egy 10 diás magazinszerű pitch deck egy designstúdió seed köréhez — svájci rácselrendezés, túlméretezett serif címsorok félkövér drop capekkel, monospace szakaszszámok, bőséges üres tér, és teljes kihasználású fotódiák szövegközpontú diákkal váltakozva. Borító, vízió, piac, termék, eredmények, csapat, kérés, kapcsolat.', + 'chat.example2Title': 'SaaS analitikai dashboard', + 'chat.example2Tag': 'Adat', + 'chat.example2Prompt': + 'Sűrű analitikai dashboard fejlesztői SaaS-hez — KPI-csík hét/hét deltákkal, két egymásra rakott vonaldiagram (MRR és aktív munkaterületek), világtérképes hőtérkép a használatról, kohorsz-megtartási rács, top-ügyfelek ranglista, és valós idejű eseménystream. Sötét téma, táblázatos monospace számok, sparkline akcentusok.', + 'chat.example3Title': 'Éves jelentés long-scroll', + 'chat.example3Tag': 'Magazinszerű', + 'chat.example3Prompt': + 'Interaktív éves jelentés egy klíma-non-profitnak — long-scroll magazinszerű elrendezés, nagy kiemelt-idézet blokkokkal, adatvizualizációkkal (egymásra rakott oszlopok, animált számlálók, projekthelyek choropleth térképe), fotó-megszakítókkal, donor fallal, és záró cselekvésre hívással. Modern serif törzs, sans-serif diagramcímkék, földes papírpaletta.', + + 'preview.shareMenu': 'Megosztás ▾', + 'preview.openInNewTab': 'Megnyitás új lapon', + 'preview.exit': '⤓ Kilépés', + 'preview.fullscreen': '⤢ Teljes képernyő', + 'preview.closeTitle': 'Bezárás (Esc)', + 'preview.loading': '{label} betöltése…', + + 'misc.savedTemplate': 'Mentett sablon', + 'misc.primary': 'Elsődleges', + 'misc.designSystem': 'Designrendszer', + + 'workspace.designFiles': 'Designfájlok', + 'workspace.closeTab': 'Lap bezárása', + 'workspace.deleteFileConfirm': 'Törlöd a(z) „{name}" fájlt a projektmappából?', + 'workspace.openFromDesignFiles': 'Nyiss meg egy fájlt innen:', + 'workspace.designFilesLink': 'Designfájlok', + 'workspace.loadingSketch': 'Vázlat betöltése…', + 'designFiles.title': 'Designfájlok', + 'designFiles.upload': 'Fájlok feltöltése', + 'designFiles.pasteText': 'Beillesztés szövegfájlként', + 'designFiles.newSketch': 'Új vázlat', + 'designFiles.empty': + 'Még nincs itt semmi. Húzz be fájlokat, vagy hozz létre vázlatot / illessz be szöveget.', + 'designFiles.refresh': 'Frissítés', + 'designFiles.delete': 'Törlés', + 'designFiles.searchPlaceholder': 'Fájlok keresése…', + 'designFiles.up': 'Fel', + 'designFiles.back': 'Vissza', + 'designFiles.crumbs': 'projekt', + 'designFiles.rowMenu': 'Sor menü', + 'designFiles.openInTab': 'Megnyitás lapon', + 'designFiles.download': 'Letöltés', + 'designFiles.dropTitle': '⤓ Húzd ide a fájlokat', + 'designFiles.dropDesc': + 'Képek, dokumentumok, hivatkozások vagy mappák — az ügynök kontextusként használja őket.', + 'designFiles.upload.title': 'Fájlok feltöltése', + 'designFiles.paste.title': 'Szöveg beillesztése fájlként', + 'designFiles.upload.label': 'Feltöltés', + 'designFiles.paste.label': 'Beillesztés', + 'designFiles.previewOpen': 'Megnyitás', + 'designFiles.previewClose': 'Előnézet bezárása', + 'designFiles.modified': 'Módosítva: {time} · {size}', + 'designFiles.weeksAgo': '{n} hete', + 'designFiles.sectionPages': 'Oldalak', + 'designFiles.sectionScripts': 'Szkriptek', + 'designFiles.sectionImages': 'Képek', + 'designFiles.sectionSketches': 'Vázlatok', + 'designFiles.sectionOther': 'Egyéb', + 'designFiles.kindHtml': 'HTML oldal', + 'designFiles.kindImage': 'Kép', + 'designFiles.kindSketch': 'Vázlat', + 'designFiles.kindText': 'Szöveg', + 'designFiles.kindCode': 'Szkript', + 'designFiles.kindPdf': 'PDF', + 'designFiles.kindDocument': 'Dokumentum', + 'designFiles.kindPresentation': 'Prezentáció', + 'designFiles.kindSpreadsheet': 'Táblázat', + 'designFiles.kindBinary': 'Bináris', + 'pasteDialog.title': 'Szöveg beillesztése', + 'pasteDialog.hint': 'A projektmappába mentve. Bármilyen név adható.', + 'pasteDialog.fileNameLabel': 'Fájlnév', + 'pasteDialog.namePlaceholder': 'jegyzetek.txt', + 'pasteDialog.contentLabel': 'Tartalom', + 'pasteDialog.contentPlaceholder': 'Illessz be bármit…', + 'pasteDialog.save': 'Mentés', + 'pasteDialog.cancel': 'Mégse', + 'sketch.save': 'Vázlat mentése', + 'sketch.cancel': 'Mégse', + 'sketch.saving': 'Mentés…', + 'sketch.tooltipDirty': 'Mentetlen változtatások', + 'sketch.tooltipClean': 'Mentve', + 'fileViewer.empty': 'Válassz fájlt a megtekintéshez.', + 'fileViewer.loading': 'Betöltés…', + 'fileViewer.exportPptx': 'Exportálás PPTX-ként', + 'fileViewer.openInNewTab': 'Megnyitás új lapon', + 'fileViewer.copyPath': 'Útvonal másolása', + 'fileViewer.copied': 'Másolva!', + 'fileViewer.share': 'Megosztás', + 'fileViewer.binaryMeta': 'Bináris · {size}', + 'fileViewer.binaryNote': + 'Bináris fájl ({size} bájt). A megtekintéshez töltsd le, vagy nyisd meg lemezről.', + 'fileViewer.pdfMeta': 'PDF · {size}', + 'fileViewer.documentMeta': 'Dokumentum', + 'fileViewer.presentationMeta': 'Prezentáció', + 'fileViewer.spreadsheetMeta': 'Táblázat', + 'fileViewer.previewUnavailable': 'Előnézet nem elérhető. Töltsd le vagy nyisd meg a fájlt a megtekintéshez.', + 'fileViewer.download': 'Letöltés', + 'fileViewer.open': 'Megnyitás', + 'fileViewer.imageMeta': 'Kép · {size}', + 'fileViewer.reactMeta': 'React komponens · {size}', + 'fileViewer.sketchMeta': 'Vázlat · {size}', + 'fileViewer.markdownStreamingMeta': 'Streamelő előnézet…', + 'fileViewer.markdownErrorMeta': 'Az előnézet hiányos lehet (generálási hiba).', + 'fileViewer.markdownStreamingStatus': 'Streamelés… részleges markdownt mutatva.', + 'fileViewer.markdownErrorStatus': 'Generálási hiba. Az utolsó elérhető tartalom látszik.', + 'fileViewer.videoMeta': 'Videó · {size}', + 'fileViewer.audioMeta': 'Hang · {size}', + 'fileViewer.reload': 'Újratöltés', + 'fileViewer.reloadDisk': 'Újratöltés lemezről', + 'fileViewer.copy': 'Másolás', + 'fileViewer.copyTitle': 'Fájltartalom másolása', + 'fileViewer.saveDisabled': 'Mentés (csak olvasható nézet)', + 'fileViewer.save': 'Mentés', + 'fileViewer.preview': 'Előnézet', + 'fileViewer.source': 'Forrás', + 'fileViewer.tweaks': 'Finomhangolás', + 'fileViewer.comment': 'Megjegyzés', + 'fileViewer.edit': 'Szerkesztés', + 'fileViewer.draw': 'Rajz', + 'fileViewer.zoomOut': 'Kicsinyítés', + 'fileViewer.zoomIn': 'Nagyítás', + 'fileViewer.resetZoom': 'Nagyítás visszaállítása', + 'fileViewer.reloadAria': 'Újratöltés', + 'fileViewer.previousSlide': 'Előző dia', + 'fileViewer.nextSlide': 'Következő dia', + 'fileViewer.slideNavAria': 'Dianavigáció', + 'fileViewer.present': 'Bemutatás', + 'fileViewer.presentInTab': 'Ezen a lapon', + 'fileViewer.presentFullscreen': 'Teljes képernyő', + 'fileViewer.presentNewTab': 'Új lap', + 'fileViewer.exitPresentation': 'Bemutató bezárása', + 'fileViewer.shareLabel': 'Megosztás', + 'fileViewer.exportPdf': 'Exportálás PDF-ként', + 'fileViewer.exportPdfAllSlides': 'Exportálás PDF-ként (minden dia)', + 'fileViewer.exportPptxBusy': 'Várj, amíg az aktuális kör befejeződik.', + 'fileViewer.exportPptxHint': + 'Küldj kérést az ügynöknek, hogy alakítsa át ezt a designt PPTX-szé.', + 'fileViewer.exportPptxNa': 'A PPTX export itt nem elérhető.', + 'fileViewer.exportZip': 'Letöltés .zip-ként', + 'fileViewer.exportHtml': 'Exportálás önálló HTML-ként', + 'fileViewer.exportJsx': 'Exportálás JSX-ként', + 'fileViewer.exportReactHtml': 'Előnézet exportálása HTML-ként', + 'fileViewer.saveAsTemplate': 'Mentés sablonként…', + 'fileViewer.savingTemplate': 'Sablon mentése…', + 'fileViewer.savedTemplate': 'Mentve „{name}" néven', + 'fileViewer.savedTemplateFail': 'A sablon mentése nem sikerült — próbáld újra.', + 'fileViewer.templateNamePrompt': 'Sablon neve', + 'fileViewer.templateNameDefault': 'Cím nélküli sablon', + 'fileViewer.templateDescPrompt': + 'Rövid leírás (opcionális — mitől hasznos ez a sablon?)', + 'fileViewer.deployToVercel': 'Telepítés Vercelre', + 'fileViewer.redeployToVercel': 'Újratelepítés', + 'fileViewer.deployingToVercel': 'Telepítés Vercelre…', + 'fileViewer.preparingPublicLink': 'Nyilvános link előkészítése…', + 'fileViewer.copyDeployLink': 'Link másolása', + 'fileViewer.deployModalTitle': 'Telepítés Vercelre', + 'fileViewer.deployModalSubtitle': + 'Telepítsd ezt a HTML-artefaktumot Vercel Preview-ként a saját fiókodból.', + 'fileViewer.vercelToken': 'Vercel token', + 'fileViewer.vercelTokenGetLink': 'Vercel token kérése', + 'fileViewer.vercelTokenPlaceholder': 'Illeszd be a Vercel tokenedet', + 'fileViewer.vercelTokenReuseHint': + 'A mentett tokent használjuk. Adj meg újat a cseréhez.', + 'fileViewer.vercelTokenRequired': 'Előbb adj meg és ments el egy Vercel tokent.', + 'fileViewer.vercelTeamId': 'Team ID', + 'fileViewer.vercelTeamSlug': 'Team slug', + 'fileViewer.optional': 'Opcionális', + 'fileViewer.vercelPreviewOnly': 'A telepítések egyelőre csak Preview-k.', + 'fileViewer.savingConfig': 'Mentés…', + 'fileViewer.deployConfigSaveFailed': 'A Vercel beállítások nem menthetők.', + 'fileViewer.deployFailed': 'A telepítés sikertelen. Ellenőrizd a Vercel beállításokat, és próbáld újra.', + 'fileViewer.deployResultLabel': 'Telepített URL', + 'fileViewer.deployLinkPreparingLabel': 'Nyilvános link várólistán', + 'fileViewer.deployLinkDelayed': + 'Az oldal telepítve. A Vercel még készíti a nyilvános linket.', + 'fileViewer.deployLinkProtectedLabel': 'Vercel-védelem aktív', + 'fileViewer.deployLinkProtected': + 'Az oldal telepítve, de a Vercel hitelesítést kér ehhez az előnézeti linkhez. Kapcsold ki a Deployment Protection-t, vagy használj egyedi domaint.', + 'fileViewer.retryLink': 'Újra most', + + 'questionForm.submit': 'Beküldés', + 'questionForm.skip': 'Kihagyás', + 'questionForm.locked': 'Megválaszolva', + + 'conv.switch': 'Beszélgetés váltása', + 'conv.label': 'Beszélgetés', + 'conv.heading': 'Beszélgetések', + 'conv.new': '+ Új', + 'conv.empty': 'Még nincs beszélgetés.', + 'conv.untitled': 'Cím nélküli beszélgetés', + 'conv.renameTooltip': 'Dupla kattintás az átnevezéshez', + 'conv.delete': 'Beszélgetés törlése', + 'conv.deleteConfirm': 'Törlöd a(z) „{title}" beszélgetést? Ez eltávolítja az üzeneteit.', + + 'agentPicker.label': 'Ügynök', + 'agentPicker.modeChoose': 'Válassz végrehajtási módot', + 'agentPicker.localCli': 'Helyi CLI', + 'agentPicker.daemonOff': 'a daemon kikapcsolva', + 'agentPicker.byok': 'Anthropic API · BYOK', + 'agentPicker.selectAgent': 'Válassz egy észlelt code-agent CLI-t', + 'agentPicker.noAgents': 'nincs ügynök a PATH-on', + 'agentPicker.notInstalled': 'nincs telepítve', + 'agentPicker.rescan': 'Helyi PATH újraellenőrzése ügynökökért', + + 'tool.openInTab': '{name} megnyitása lapon', + 'tool.open': 'megnyitás', + 'tool.todos': 'Feladatok', + 'tool.write': 'Írás', + 'tool.edit': 'Szerkesztés', + 'tool.read': 'Olvasás', + 'tool.bash': 'Bash', + 'tool.glob': 'Glob', + 'tool.grep': 'Grep', + 'tool.fetch': 'Lekérés', + 'tool.search': 'Keresés', + 'tool.lines': '{n} sor', + 'tool.changeSingular': 'változás', + 'tool.changePlural': 'változás', + 'tool.in': 'itt: {path}', + 'tool.hide': 'elrejtés', + 'tool.output': 'kimenet', + 'tool.running': 'fut…', + 'tool.error': 'hiba', + 'tool.done': 'kész', + + 'assistant.role': 'Asszisztens', + 'assistant.workingLabel': 'Dolgozik', + 'assistant.doneLabel': 'Kész', + 'assistant.unfinishedLabel': 'Befejezetlen munkával állt le', + 'assistant.unfinishedSummary': '{n} feladat hátravan', + 'assistant.unfinishedMore': '+{n} további', + 'assistant.continueRemaining': 'Hátralévő feladatok folytatása', + 'assistant.outTokens': '{n} ki', + 'assistant.producedFiles': 'A körben létrehozott fájlok', + 'assistant.openFile': 'Megnyitás', + 'assistant.downloadFile': 'Letöltés', + 'assistant.thinking': 'Gondolkodik', + 'assistant.systemReminder': 'Rendszer-emlékeztető', + 'assistant.waitingFirstOutput': 'Az első kimenetre vár', + 'assistant.statusBootingAgent': 'Ügynök indítása', + 'assistant.statusStarting': 'Indítás', + 'assistant.statusRequesting': 'Kérés küldése', + 'assistant.statusThinking': 'Gondolkodik', + 'assistant.statusStreaming': 'Streamelés', + 'assistant.slowHint': + 'Tovább tart a szokásosnál. Az űrlap általában 5–10 mp alatt megjelenik — leállíthatod és újrafogalmazhatod.', + 'assistant.verbEditing': 'Szerkesztés', + 'assistant.verbWriting': 'Írás', + 'assistant.verbReading': 'Olvasás', + 'assistant.verbSearching': 'Keresés', + 'assistant.verbRunning': 'Futtatás', + 'assistant.verbTodos': 'Feladatok', + 'assistant.verbFetching': 'Lekérés', + 'assistant.verbCalling': 'Hívás', + + 'qf.answered': 'megválaszolva', + 'qf.choose': 'Válassz…', + 'qf.required': 'kötelező', + 'qf.lockedSubmitted': + 'Válaszok elküldve — az ügynök ezeket használja a folyamat további részében.', + 'qf.lockedPrev': 'Ez az űrlap egy korábbi körből származik.', + 'qf.hint': + 'Válaszd, ami illik. Hagyd ki az opcionális mezőket, amik nem érdekesek — az ügynök ésszerű alapértékeket használ.', + 'qf.submitDefault': 'Válaszok küldése', + 'qf.submitDisabledTitle': 'Előbb töltsd ki a kötelező mezőket', + 'qf.submitTitle': 'Válaszok küldése', + 'qf.cardSelected': 'kiválasztva', + 'qf.cardRefs': 'Hivatkozások:', + 'qf.cardSampleText': 'Árvíztűrő tükörfúrógép · 0123', + + 'sketch.toolSelect': 'Kijelölés (nem aktív)', + 'sketch.toolPen': 'Toll', + 'sketch.toolText': 'Szöveg', + 'sketch.toolRect': 'Téglalap', + 'sketch.toolArrow': 'Nyíl', + 'sketch.toolEraser': 'Radír', + 'sketch.color': 'Szín', + 'sketch.strokeSize': 'Vonalvastagság', + 'sketch.undo': 'Visszavonás', + 'sketch.clear': 'Törlés', + 'sketch.close': 'Bezárás', + 'sketch.textPrompt': 'Szöveg:', +}; diff --git a/apps/web/src/i18n/types.ts b/apps/web/src/i18n/types.ts index 025d2bef6..f0ee65df0 100644 --- a/apps/web/src/i18n/types.ts +++ b/apps/web/src/i18n/types.ts @@ -1,8 +1,8 @@ // Supported UI locales. Adding a new locale requires creating a new // dictionary in `./locales/` and registering it in `./index.tsx`. -export type Locale = 'en' | 'de' | 'zh-CN' | 'zh-TW' | 'pt-BR' | 'es-ES' | 'ru' | 'fa' | 'ja' | 'ko' | 'pl'; +export type Locale = 'en' | 'de' | 'zh-CN' | 'zh-TW' | 'pt-BR' | 'es-ES' | 'ru' | 'fa' | 'ja' | 'ko' | 'pl' | 'hu'; -export const LOCALES: Locale[] = ['en', 'de', 'zh-CN', 'zh-TW', 'pt-BR', 'es-ES', 'ru', 'fa', 'ja', 'ko', 'pl']; +export const LOCALES: Locale[] = ['en', 'de', 'zh-CN', 'zh-TW', 'pt-BR', 'es-ES', 'ru', 'fa', 'ja', 'ko', 'pl', 'hu']; export const LOCALE_LABEL: Record = { 'en': 'English', @@ -15,7 +15,8 @@ export const LOCALE_LABEL: Record = { 'fa': 'فارسی', 'ja': '日本語', 'ko': '한국어', - 'pl': 'Polski' + 'pl': 'Polski', + 'hu': 'Magyar' }; // Translation dictionary shape — flat keys, dot-namespaced. We keep it