feat: V2-7 Admin 콘솔 리디자인 + 3단계 권한 + SaaS 전환 + 코드 정리

- Admin CRM: D3RO Console 스타일 전체 적용 (panelSx/tableSx/filterBtnSx)
- 3단계 권한: manager/admin/super_admin (DB + Edge Functions + Frontend)
- 랜딩 페이지: 1회 결제 → 월간/연간 구독 SaaS 모델 (10개 언어)
- SSE 스트리밍: VoiceConversation Premium LLM 라우팅 + fallback
- Supabase 클라이언트: packages/api-client 공통 추출 (browser+server)
- RPC 함수 타입: 9개 정의 (admin_usage_by_feature 등)
- callAdminApi 401 버그 수정 (getUser() 선행 토큰 갱신)
This commit is contained in:
윤찬 2026-04-13 01:28:10 +09:00
parent d0e854c255
commit 8af75a0a1e
50 changed files with 2185 additions and 950 deletions

View file

@ -106,12 +106,17 @@ export interface Translations {
pro: string
proPlus: string
forever: string
oneTime: string
monthly: string
annual: string
perMonth: string
popular: string
savePercent: string
downloadFree: string
getPro: string
getProPlus: string
taxNote: string
billingToggleMonthly: string
billingToggleAnnual: string
rows: [PricingFeatureRow, PricingFeatureRow, PricingFeatureRow, PricingFeatureRow, PricingFeatureRow, PricingFeatureRow, PricingFeatureRow, PricingFeatureRow, PricingFeatureRow, PricingFeatureRow, PricingFeatureRow, PricingFeatureRow, PricingFeatureRow, PricingFeatureRow, PricingFeatureRow]
}
faq: {

View file

@ -85,18 +85,23 @@ export const de: Translations = {
},
pricing: {
index: '04 / PREISE',
title: 'Kein Abo. Niemals.',
subtitle: 'Keine Cloud bedeutet keine monatlichen Kosten. Einmalkauf, lebenslange Nutzung.',
title: 'Alle Funktionen freischalten.',
subtitle: 'Kostenlos starten, upgraden wenn notig. Jederzeit kundbar.',
featureLabel: 'Funktion',
free: 'Free',
pro: 'Pro',
proPlus: 'Pro+',
forever: 'fur immer gratis',
oneTime: 'einmalig',
monthly: '/Monat',
annual: '/Jahr',
perMonth: '/Monat',
savePercent: '17% sparen',
billingToggleMonthly: 'Monatlich',
billingToggleAnnual: 'Jahrlich',
popular: 'Beliebt',
downloadFree: 'Gratis herunterladen',
getPro: 'Pro holen',
getProPlus: 'Pro+ holen',
getPro: 'Pro abonnieren',
getProPlus: 'Pro+ abonnieren',
taxNote: 'Alle Preise zzgl. MwSt. Sichere Zahlung uber Payple.',
rows: [
{ feature: 'Sprachdiktat', free: '15/Tag', pro: true, proPlus: true },
@ -124,14 +129,14 @@ export const de: Translations = {
{ q: 'Welche GPU brauche ich?', a: 'Keine GPU erforderlich - funktioniert nur mit CPU. Eine NVIDIA GPU (CUDA) beschleunigt die Transkription 5-10x. Mit dem base-Modell ist Echtzeit-Transkription auf CPU moglich.' },
{ q: 'Funktioniert es komplett offline?', a: 'Ja. Sobald Sie die Whisper- und Ollama-Modelle heruntergeladen haben, funktioniert alles ohne Internet. Die Lizenzverifizierung ist nur bei der Erstaktivierung online, danach 30 Tage Offline-Karenzzeit.' },
{ q: 'Wie genau ist die Spracherkennung?', a: 'Whisper large-v3 bietet hervorragende Genauigkeit fur uber 99 Sprachen. Die benutzerdefinierte Worterbuchfunktion verbessert die Genauigkeit fur Fachterminologie zusatzlich.' },
{ q: 'Ist das ein Abonnement?', a: 'Nein. Pro und Pro+ sind Einmalkaufe. Einmal zahlen, fur immer nutzen. Wichtige Updates inklusive. Ohne Cloud-Serverkosten brauchen wir kein Abomodell.' },
{ q: 'Ist das ein Abonnement?', a: 'Pro und Pro+ sind monatliche oder jahrliche Abonnements. Sparen Sie etwa 17% bei jahrlicher Abrechnung. Jederzeit kundbar. Lokale Verarbeitung bedeutet keine Cloud-Kosten, aber Abonnements finanzieren kontinuierliche Updates und Premium-Funktionen.' },
{ q: 'Was ist mit macOS und Linux?', a: 'Derzeit nur Windows. Auf Electron aufgebaut, ist macOS/Linux-Unterstutzung technisch machbar und je nach Nachfrage geplant.' },
],
},
cta: {
title1: 'Sprechen.',
title2: 'KI schreibt.',
subtitle1: 'Keine Cloud. Kein Abo. Keine Datenschutzbedenken.',
subtitle1: 'Keine Cloud. Premium-Funktionen, Ihre Bedingungen. Keine Datenschutzbedenken.',
subtitle2: 'Jetzt starten.',
downloadBtn: 'Fur Windows herunterladen',
systemReq: 'Windows 10/11 \u00b7 64-Bit \u00b7 ~200MB \u00b7 In Sekunden bereit',

View file

@ -85,18 +85,23 @@ export const en: Translations = {
},
pricing: {
index: '04 / PRICING',
title: 'No Subscription. Ever.',
subtitle: 'No cloud means no monthly bills. One-time purchase, lifetime use.',
title: 'Unlock the Full Power.',
subtitle: 'Start free, upgrade when you need more. Cancel anytime.',
featureLabel: 'Feature',
free: 'Free',
pro: 'Pro',
proPlus: 'Pro+',
forever: 'forever',
oneTime: 'one-time',
monthly: '/mo',
annual: '/yr',
perMonth: '/mo',
savePercent: 'Save 17%',
billingToggleMonthly: 'Monthly',
billingToggleAnnual: 'Annual',
popular: 'Popular',
downloadFree: 'Download Free',
getPro: 'Get Pro',
getProPlus: 'Get Pro+',
getPro: 'Subscribe to Pro',
getProPlus: 'Subscribe to Pro+',
taxNote: 'All prices exclude tax. Secure payment via Payple.',
rows: [
{ feature: 'Voice Dictation', free: '15/day', pro: true, proPlus: true },
@ -124,14 +129,14 @@ export const en: Translations = {
{ q: 'What GPU do I need?', a: 'No GPU required - it works on CPU alone. An NVIDIA GPU (CUDA) accelerates transcription 5-10x. With the base model, CPU real-time transcription is possible.' },
{ q: 'Does it work completely offline?', a: 'Yes. Once you download the Whisper and Ollama models, everything works without internet. License verification is online only for initial activation, then 30-day offline grace period.' },
{ q: 'How accurate is the speech recognition?', a: 'Whisper large-v3 provides excellent accuracy for 99+ languages. The custom dictionary feature further improves accuracy for domain-specific terminology.' },
{ q: 'Is this a subscription?', a: 'No. Pro and Pro+ are one-time purchases. Pay once, use forever. Major updates included. Since there are no cloud server costs, we do not need a subscription model.' },
{ q: 'Is this a subscription?', a: 'Pro and Pro+ are monthly or annual subscriptions. Save about 17% with annual billing. Cancel anytime. Local processing means no cloud costs, but subscriptions fund continuous updates and premium features.' },
{ q: 'What about macOS and Linux?', a: 'Currently Windows only. Built on Electron so macOS/Linux support is technically feasible and planned based on demand.' },
],
},
cta: {
title1: 'Speak.',
title2: 'AI Writes.',
subtitle1: 'No cloud. No subscription. No privacy concerns.',
subtitle1: 'No cloud. Premium features, your terms. No privacy concerns.',
subtitle2: 'Start now.',
downloadBtn: 'Download for Windows',
systemReq: 'Windows 10/11 \u00b7 64-bit \u00b7 ~200MB \u00b7 Ready in seconds',

View file

@ -85,18 +85,23 @@ export const es: Translations = {
},
pricing: {
index: '04 / PRECIOS',
title: 'Sin suscripcion. Nunca.',
subtitle: 'Sin nube significa sin facturas mensuales. Compra unica, uso de por vida.',
title: 'Desbloquea todo el poder.',
subtitle: 'Empieza gratis, mejora cuando lo necesites. Cancela cuando quieras.',
featureLabel: 'Funcion',
free: 'Free',
pro: 'Pro',
proPlus: 'Pro+',
forever: 'gratis siempre',
oneTime: 'pago unico',
monthly: '/mes',
annual: '/ano',
perMonth: '/mes',
savePercent: 'Ahorra 17%',
billingToggleMonthly: 'Mensual',
billingToggleAnnual: 'Anual',
popular: 'Popular',
downloadFree: 'Descargar gratis',
getPro: 'Obtener Pro',
getProPlus: 'Obtener Pro+',
getPro: 'Suscribirse a Pro',
getProPlus: 'Suscribirse a Pro+',
taxNote: 'Todos los precios sin impuestos. Pago seguro via Payple.',
rows: [
{ feature: 'Dictado por voz', free: '15/dia', pro: true, proPlus: true },
@ -124,14 +129,14 @@ export const es: Translations = {
{ q: 'Que GPU necesito?', a: 'No se requiere GPU, funciona solo con CPU. Una GPU NVIDIA (CUDA) acelera la transcripcion 5-10x. Con el modelo base, la transcripcion en tiempo real por CPU es posible.' },
{ q: 'Funciona completamente offline?', a: 'Si. Una vez descargados los modelos de Whisper y Ollama, todo funciona sin internet. La verificacion de licencia es online solo para la activacion inicial, luego 30 dias de gracia offline.' },
{ q: 'Que tan preciso es el reconocimiento de voz?', a: 'Whisper large-v3 ofrece excelente precision para mas de 99 idiomas. La funcion de diccionario personalizado mejora aun mas la precision para terminologia especializada.' },
{ q: 'Es una suscripcion?', a: 'No. Pro y Pro+ son compras unicas. Paga una vez, usa para siempre. Actualizaciones principales incluidas. Sin costos de servidor en la nube, no necesitamos modelo de suscripcion.' },
{ q: 'Es una suscripcion?', a: 'Pro y Pro+ son suscripciones mensuales o anuales. Ahorra aproximadamente un 17% con la facturacion anual. Cancela en cualquier momento. El procesamiento local significa sin costos de nube, pero las suscripciones financian actualizaciones continuas y funciones premium.' },
{ q: 'Y macOS y Linux?', a: 'Actualmente solo Windows. Construido con Electron, el soporte para macOS/Linux es tecnicamente factible y esta planeado segun la demanda.' },
],
},
cta: {
title1: 'Habla.',
title2: 'La IA escribe.',
subtitle1: 'Sin nube. Sin suscripcion. Sin preocupaciones de privacidad.',
subtitle1: 'Sin nube. Funciones premium, a tu manera. Sin preocupaciones de privacidad.',
subtitle2: 'Empieza ahora.',
downloadBtn: 'Descargar para Windows',
systemReq: 'Windows 10/11 \u00b7 64-bit \u00b7 ~200MB \u00b7 Listo en segundos',

View file

@ -85,18 +85,23 @@ export const fr: Translations = {
},
pricing: {
index: '04 / TARIFS',
title: 'Pas d\'abonnement. Jamais.',
subtitle: 'Pas de cloud signifie pas de factures mensuelles. Achat unique, utilisation a vie.',
title: 'Debloquez toute la puissance.',
subtitle: 'Commencez gratuitement, passez a la version superieure quand vous voulez. Annulez a tout moment.',
featureLabel: 'Fonction',
free: 'Free',
pro: 'Pro',
proPlus: 'Pro+',
forever: 'gratuit a vie',
oneTime: 'paiement unique',
monthly: '/mois',
annual: '/an',
perMonth: '/mois',
savePercent: 'Economisez 17%',
billingToggleMonthly: 'Mensuel',
billingToggleAnnual: 'Annuel',
popular: 'Populaire',
downloadFree: 'Telecharger gratuit',
getPro: 'Obtenir Pro',
getProPlus: 'Obtenir Pro+',
getPro: 'S\'abonner a Pro',
getProPlus: 'S\'abonner a Pro+',
taxNote: 'Tous les prix hors taxes. Paiement securise via Payple.',
rows: [
{ feature: 'Dictee vocale', free: '15/jour', pro: true, proPlus: true },
@ -124,14 +129,14 @@ export const fr: Translations = {
{ q: 'Quel GPU me faut-il ?', a: 'Aucun GPU requis - ca fonctionne uniquement sur CPU. Un GPU NVIDIA (CUDA) accelere la transcription 5-10x. Avec le modele base, la transcription en temps reel sur CPU est possible.' },
{ q: 'Ca fonctionne completement hors ligne ?', a: 'Oui. Une fois les modeles Whisper et Ollama telecharges, tout fonctionne sans internet. La verification de licence est en ligne uniquement pour l\'activation initiale, puis 30 jours de grace hors ligne.' },
{ q: 'Quelle est la precision de la reconnaissance vocale ?', a: 'Whisper large-v3 offre une excellente precision pour plus de 99 langues. La fonction de dictionnaire personnalise ameliore encore la precision pour la terminologie specialisee.' },
{ q: 'C\'est un abonnement ?', a: 'Non. Pro et Pro+ sont des achats uniques. Payez une fois, utilisez pour toujours. Mises a jour majeures incluses. Sans couts de serveur cloud, nous n\'avons pas besoin de modele d\'abonnement.' },
{ q: 'C\'est un abonnement ?', a: 'Pro et Pro+ sont des abonnements mensuels ou annuels. Economisez environ 17% avec la facturation annuelle. Annulez a tout moment. Le traitement local signifie aucun cout cloud, mais les abonnements financent les mises a jour continues et les fonctionnalites premium.' },
{ q: 'Et macOS et Linux ?', a: 'Actuellement Windows uniquement. Construit avec Electron, le support macOS/Linux est techniquement faisable et prevu selon la demande.' },
],
},
cta: {
title1: 'Parlez.',
title2: 'L\'IA ecrit.',
subtitle1: 'Pas de cloud. Pas d\'abonnement. Aucun souci de vie privee.',
subtitle1: 'Pas de cloud. Fonctionnalites premium, a vos conditions. Aucun souci de vie privee.',
subtitle2: 'Commencez maintenant.',
downloadBtn: 'Telecharger pour Windows',
systemReq: 'Windows 10/11 \u00b7 64-bit \u00b7 ~200 Mo \u00b7 Pret en secondes',

View file

@ -85,18 +85,23 @@ export const ja: Translations = {
},
pricing: {
index: '04 / 料金',
title: 'サブスクリプションなし、永久に。',
subtitle: 'クラウドなしだから月額料金もなし。一度の購入で永久使用。',
title: 'すべての機能をアンロック。',
subtitle: '無料で始めて、必要な時にアップグレード。いつでもキャンセル可能。',
featureLabel: '機能',
free: 'Free',
pro: 'Pro',
proPlus: 'Pro+',
forever: '永久無料',
oneTime: '買い切り',
monthly: '/月',
annual: '/年',
perMonth: '/月',
savePercent: '17%お得',
billingToggleMonthly: '月額',
billingToggleAnnual: '年額',
popular: '人気',
downloadFree: '無料ダウンロード',
getPro: 'Proを購入',
getProPlus: 'Pro+を購入',
getPro: 'Proを購',
getProPlus: 'Pro+を購',
taxNote: '表示価格は税抜きです。Paypleによる安全な決済。',
rows: [
{ feature: '音声ディクテーション', free: '15回/日', pro: true, proPlus: true },
@ -124,14 +129,14 @@ export const ja: Translations = {
{ q: 'どんなGPUが必要ですか', a: 'GPUは不要 - CPUだけで動作します。NVIDIA GPUCUDAがあれば文字起こしが5-10倍高速化。baseモデルならCPUでリアルタイム文字起こしが可能です。' },
{ q: '完全にオフラインで動作しますか?', a: 'はい。WhisperとOllamaのモデルをダウンロードすれば、すべてがインターネットなしで動作します。ライセンス認証は初回アクティベーション時のみオンラインが必要で、その後30日間のオフライン猶予期間があります。' },
{ q: '音声認識の精度はどうですか?', a: 'Whisper large-v3は99以上の言語で優れた精度を提供します。カスタム辞書機能により、専門用語の認識精度をさらに向上できます。' },
{ q: 'サブスクリプションですか?', a: 'いいえ。ProとPro+は買い切りです。一度購入すれば永久使用。メジャーアップデート込み。クラウドサーバーのコストがないため、サブスクリプションモデルは不要です。' },
{ q: 'サブスクリプションですか?', a: 'ProとPro+は月額または年額のサブスクリプションです。年額払いで約17%お得。いつでもキャンセル可能。ローカル処理ベースなのでクラウドコストはありませんが、継続的なアップデートとプレミアム機能のためのサブスクリプションです。' },
{ q: 'macOSとLinuxには対応していますか', a: '現在はWindows専用です。ElectronベースなのでmacOS/Linuxサポートは技術的に可能で、需要に応じて対応予定です。' },
],
},
cta: {
title1: '話す。',
title2: 'AIが書く。',
subtitle1: 'クラウドなし。サブスクなし。プライバシーの心配なし。',
subtitle1: 'クラウドなし。プレミアム機能はあなたの条件で。プライバシーの心配なし。',
subtitle2: '今すぐ始めましょう。',
downloadBtn: 'Windows版をダウンロード',
systemReq: 'Windows 10/11 \u00b7 64ビット \u00b7 約200MB \u00b7 数秒で準備完了',

View file

@ -85,18 +85,23 @@ export const ko: Translations = {
},
pricing: {
index: '04 / 가격',
title: '구독 없음. 영원히.',
subtitle: '클라우드가 없으니 월 요금도 없습니다. 한 번 구매, 평생 사용.',
title: '전체 기능을 잠금 해제하세요.',
subtitle: '무료로 시작하고, 필요할 때 업그레이드. 언제든 취소 가능.',
featureLabel: '기능',
free: 'Free',
pro: 'Pro',
proPlus: 'Pro+',
forever: '영구 무료',
oneTime: '1회 결제',
monthly: '/월',
annual: '/연',
perMonth: '/월',
savePercent: '17% 할인',
billingToggleMonthly: '월간',
billingToggleAnnual: '연간',
popular: '인기',
downloadFree: '무료 다운로드',
getPro: 'Pro 구매',
getProPlus: 'Pro+ 구매',
getPro: 'Pro 구',
getProPlus: 'Pro+ 구',
taxNote: '모든 가격은 세금 별도입니다. Payple를 통한 안전한 결제.',
rows: [
{ feature: '음성 받아쓰기', free: '15회/일', pro: true, proPlus: true },
@ -124,14 +129,14 @@ export const ko: Translations = {
{ q: '어떤 GPU가 필요한가요?', a: 'GPU가 없어도 CPU만으로 작동합니다. NVIDIA GPU(CUDA)가 있으면 전사 속도가 5-10배 빨라집니다. base 모델 기준 CPU 실시간 전사가 가능합니다.' },
{ q: '완전히 오프라인으로 작동하나요?', a: '네. Whisper와 Ollama 모델을 다운로드하면 인터넷 없이 모든 것이 작동합니다. 라이선스 검증은 최초 활성화 시에만 온라인이 필요하며, 이후 30일 오프라인 유예 기간이 제공됩니다.' },
{ q: '음성 인식 정확도는 어떤가요?', a: 'Whisper large-v3는 99개 이상의 언어에서 뛰어난 정확도를 제공합니다. 커스텀 사전 기능으로 전문 용어의 인식률을 더욱 높일 수 있습니다.' },
{ q: '구독 모델인가요?', a: '아닙니다. Pro와 Pro+는 1회 결제입니다. 한 번 구매하면 영구 사용. 주요 업데이트 포함. 클라우드 서버 비용이 없기 때문에 구독 모델이 필요 없습니다.' },
{ q: '구독 모델인가요?', a: 'Pro와 Pro+는 월간/연간 구독입니다. 연간 결제 시 약 17% 할인. 언제든 취소 가능. 로컬 처리 기반이라 클라우드 비용은 없지만, 지속적인 업데이트와 프리미엄 기능을 위한 구독입니다.' },
{ q: 'macOS와 Linux는 지원하나요?', a: '현재는 Windows 전용입니다. Electron 기반이므로 macOS/Linux 지원이 기술적으로 가능하며, 수요에 따라 지원할 예정입니다.' },
],
},
cta: {
title1: '말하세요.',
title2: 'AI가 씁니다.',
subtitle1: '클라우드 없음. 구독 없음. 프라이버시 걱정 없음.',
subtitle1: '클라우드 없음. 프리미엄 기능, 당신의 조건. 프라이버시 걱정 없음.',
subtitle2: '지금 시작하세요.',
downloadBtn: 'Windows용 다운로드',
systemReq: 'Windows 10/11 \u00b7 64비트 \u00b7 ~200MB \u00b7 몇 초면 준비 완료',

View file

@ -85,18 +85,23 @@ export const pt: Translations = {
},
pricing: {
index: '04 / PRECOS',
title: 'Sem assinatura. Nunca.',
subtitle: 'Sem nuvem significa sem contas mensais. Compra unica, uso vitalicio.',
title: 'Desbloqueie todo o poder.',
subtitle: 'Comece gratis, faca upgrade quando precisar. Cancele a qualquer momento.',
featureLabel: 'Recurso',
free: 'Free',
pro: 'Pro',
proPlus: 'Pro+',
forever: 'gratis para sempre',
oneTime: 'pagamento unico',
monthly: '/mes',
annual: '/ano',
perMonth: '/mes',
savePercent: 'Economize 17%',
billingToggleMonthly: 'Mensal',
billingToggleAnnual: 'Anual',
popular: 'Popular',
downloadFree: 'Baixar gratis',
getPro: 'Obter Pro',
getProPlus: 'Obter Pro+',
getPro: 'Assinar Pro',
getProPlus: 'Assinar Pro+',
taxNote: 'Todos os precos excluem impostos. Pagamento seguro via Payple.',
rows: [
{ feature: 'Ditado por voz', free: '15/dia', pro: true, proPlus: true },
@ -124,14 +129,14 @@ export const pt: Translations = {
{ q: 'Qual GPU preciso?', a: 'Nenhuma GPU necessaria - funciona apenas com CPU. Uma GPU NVIDIA (CUDA) acelera a transcricao 5-10x. Com o modelo base, transcricao em tempo real por CPU e possivel.' },
{ q: 'Funciona completamente offline?', a: 'Sim. Apos baixar os modelos Whisper e Ollama, tudo funciona sem internet. A verificacao de licenca e online apenas na ativacao inicial, depois 30 dias de carencia offline.' },
{ q: 'Qual a precisao do reconhecimento de voz?', a: 'Whisper large-v3 oferece excelente precisao para mais de 99 idiomas. O recurso de dicionario personalizado melhora ainda mais a precisao para terminologia especializada.' },
{ q: 'E uma assinatura?', a: 'Nao. Pro e Pro+ sao compras unicas. Pague uma vez, use para sempre. Atualizacoes principais incluidas. Sem custos de servidor na nuvem, nao precisamos de modelo de assinatura.' },
{ q: 'E uma assinatura?', a: 'Pro e Pro+ sao assinaturas mensais ou anuais. Economize cerca de 17% com a cobranca anual. Cancele a qualquer momento. O processamento local significa sem custos de nuvem, mas as assinaturas financiam atualizacoes continuas e recursos premium.' },
{ q: 'E o macOS e Linux?', a: 'Atualmente apenas Windows. Construido com Electron, o suporte macOS/Linux e tecnicamente viavel e planejado conforme a demanda.' },
],
},
cta: {
title1: 'Fale.',
title2: 'A IA escreve.',
subtitle1: 'Sem nuvem. Sem assinatura. Sem preocupacoes com privacidade.',
subtitle1: 'Sem nuvem. Recursos premium, nos seus termos. Sem preocupacoes com privacidade.',
subtitle2: 'Comece agora.',
downloadBtn: 'Baixar para Windows',
systemReq: 'Windows 10/11 \u00b7 64-bit \u00b7 ~200MB \u00b7 Pronto em segundos',

View file

@ -85,18 +85,23 @@ export const ru: Translations = {
},
pricing: {
index: '04 / ЦЕНЫ',
title: 'Без подписки. Навсегда.',
subtitle: 'Нет облака \u2014 нет ежемесячных платежей. Одноразовая покупка, пожизненное использование.',
title: 'Разблокируйте все возможности.',
subtitle: 'Начните бесплатно, обновитесь когда нужно. Отмена в любое время.',
featureLabel: 'Функция',
free: 'Free',
pro: 'Pro',
proPlus: 'Pro+',
forever: 'навсегда бесплатно',
oneTime: 'разовый платеж',
monthly: '/мес',
annual: '/год',
perMonth: '/мес',
savePercent: 'Скидка 17%',
billingToggleMonthly: 'Ежемесячно',
billingToggleAnnual: 'Ежегодно',
popular: 'Популярно',
downloadFree: 'Скачать бесплатно',
getPro: 'Получить Pro',
getProPlus: 'Получить Pro+',
getPro: 'Подписаться на Pro',
getProPlus: 'Подписаться на Pro+',
taxNote: 'Все цены без учета налогов. Безопасная оплата через Payple.',
rows: [
{ feature: 'Голосовая диктовка', free: '15/день', pro: true, proPlus: true },
@ -124,14 +129,14 @@ export const ru: Translations = {
{ q: 'Какая GPU нужна?', a: 'GPU не требуется \u2014 работает только на CPU. NVIDIA GPU (CUDA) ускоряет транскрипцию в 5-10 раз. С моделью base транскрипция в реальном времени на CPU возможна.' },
{ q: 'Работает ли полностью офлайн?', a: 'Да. После загрузки моделей Whisper и Ollama все работает без интернета. Проверка лицензии онлайн только при первой активации, затем 30 дней офлайн-льготного периода.' },
{ q: 'Насколько точно распознавание речи?', a: 'Whisper large-v3 обеспечивает отличную точность для более чем 99 языков. Функция пользовательского словаря дополнительно повышает точность для специализированной терминологии.' },
{ q: 'Это подписка?', a: 'Нет. Pro и Pro+ \u2014 разовые покупки. Заплатите один раз, пользуйтесь навсегда. Крупные обновления включены. Без расходов на облачные серверы нам не нужна модель подписки.' },
{ q: 'Это подписка?', a: 'Pro и Pro+ \u2014 это ежемесячные или ежегодные подписки. Экономьте около 17% при ежегодной оплате. Отмена в любое время. Локальная обработка означает отсутствие облачных расходов, но подписки финансируют постоянные обновления и премиум-функции.' },
{ q: 'А macOS и Linux?', a: 'Пока только Windows. Построено на Electron, поддержка macOS/Linux технически возможна и планируется в зависимости от спроса.' },
],
},
cta: {
title1: 'Говорите.',
title2: 'ИИ пишет.',
subtitle1: 'Без облака. Без подписки. Без проблем с приватностью.',
subtitle1: 'Без облака. Премиум-функции на ваших условиях. Без проблем с приватностью.',
subtitle2: 'Начните сейчас.',
downloadBtn: 'Скачать для Windows',
systemReq: 'Windows 10/11 \u00b7 64-бит \u00b7 ~200МБ \u00b7 Готово за секунды',

View file

@ -85,18 +85,23 @@ export const vi: Translations = {
},
pricing: {
index: '04 / GIA CA',
title: 'Khong dang ky. Mai mai.',
subtitle: 'Khong dam may nghia la khong hoa don hang thang. Mua mot lan, dung ca doi.',
title: 'Mo khoa toan bo suc manh.',
subtitle: 'Bat dau mien phi, nang cap khi can. Huy bat cu luc nao.',
featureLabel: 'Tinh nang',
free: 'Free',
pro: 'Pro',
proPlus: 'Pro+',
forever: 'mien phi mai mai',
oneTime: 'mot lan',
monthly: '/thang',
annual: '/nam',
perMonth: '/thang',
savePercent: 'Tiet kiem 17%',
billingToggleMonthly: 'Hang thang',
billingToggleAnnual: 'Hang nam',
popular: 'Pho bien',
downloadFree: 'Tai mien phi',
getPro: 'Mua Pro',
getProPlus: 'Mua Pro+',
getPro: 'Dang ky Pro',
getProPlus: 'Dang ky Pro+',
taxNote: 'Tat ca gia chua bao gom thue. Thanh toan an toan qua Payple.',
rows: [
{ feature: 'Chinh ta giong noi', free: '15/ngay', pro: true, proPlus: true },
@ -124,14 +129,14 @@ export const vi: Translations = {
{ q: 'Toi can GPU nao?', a: 'Khong can GPU - hoat dong chi voi CPU. GPU NVIDIA (CUDA) tang toc phien am 5-10 lan. Voi mo hinh base, phien am thoi gian thuc tren CPU la kha thi.' },
{ q: 'Co hoat dong hoan toan ngoai tuyen khong?', a: 'Co. Sau khi tai cac mo hinh Whisper va Ollama, moi thu hoat dong khong can internet. Xac minh giay phep chi truc tuyen khi kich hoat lan dau, sau do 30 ngay an han ngoai tuyen.' },
{ q: 'Do chinh xac nhan dien giong noi the nao?', a: 'Whisper large-v3 cung cap do chinh xac tuyet voi cho hon 99 ngon ngu. Tinh nang tu dien tuy chinh cai thien them do chinh xac cho thuat ngu chuyen nganh.' },
{ q: 'Day co phai dang ky khong?', a: 'Khong. Pro va Pro+ la mua mot lan. Tra mot lan, dung mai mai. Bao gom cac ban cap nhat lon. Khong co chi phi may chu dam may, chung toi khong can mo hinh dang ky.' },
{ q: 'Day co phai dang ky khong?', a: 'Pro va Pro+ la dang ky hang thang hoac hang nam. Tiet kiem khoang 17% voi thanh toan hang nam. Huy bat cu luc nao. Xu ly cuc bo nghia la khong co chi phi dam may, nhung dang ky tai tro cho cac ban cap nhat lien tuc va tinh nang cao cap.' },
{ q: 'Con macOS va Linux thi sao?', a: 'Hien tai chi ho tro Windows. Duoc xay dung tren Electron nen ho tro macOS/Linux la kha thi ve mat ky thuat va duoc len ke hoach theo nhu cau.' },
],
},
cta: {
title1: 'Noi.',
title2: 'AI viet.',
subtitle1: 'Khong dam may. Khong dang ky. Khong lo ngai ve quyen rieng tu.',
subtitle1: 'Khong dam may. Tinh nang cao cap, theo dieu kien cua ban. Khong lo ngai ve quyen rieng tu.',
subtitle2: 'Bat dau ngay.',
downloadBtn: 'Tai xuong cho Windows',
systemReq: 'Windows 10/11 \u00b7 64-bit \u00b7 ~200MB \u00b7 San sang trong vai giay',

View file

@ -85,18 +85,23 @@ export const zh: Translations = {
},
pricing: {
index: '04 / 价格',
title: '永不订阅.',
subtitle: '没有云端意味着没有月费。一次购买,终身使用。',
title: '解锁全部功能.',
subtitle: '免费开始,按需升级。随时取消。',
featureLabel: '功能',
free: 'Free',
pro: 'Pro',
proPlus: 'Pro+',
forever: '永久免费',
oneTime: '一次性',
monthly: '/月',
annual: '/年',
perMonth: '/月',
savePercent: '省17%',
billingToggleMonthly: '月付',
billingToggleAnnual: '年付',
popular: '热门',
downloadFree: '免费下载',
getPro: '获取 Pro',
getProPlus: '获取 Pro+',
getPro: '订阅 Pro',
getProPlus: '订阅 Pro+',
taxNote: '所有价格不含税。通过 Payple 安全支付。',
rows: [
{ feature: '语音听写', free: '15次/天', pro: true, proPlus: true },
@ -124,14 +129,14 @@ export const zh: Translations = {
{ q: '需要什么 GPU', a: '无需 GPU - 仅用 CPU 即可运行。NVIDIA GPUCUDA可将转录速度提升 5-10 倍。使用 base 模型时CPU 实时转录完全可行。' },
{ q: '能完全离线工作吗?', a: '是的。下载 Whisper 和 Ollama 模型后,一切都可以在没有互联网的情况下运行。许可证验证仅在首次激活时需要在线,之后有 30 天的离线宽限期。' },
{ q: '语音识别准确率如何?', a: 'Whisper large-v3 支持 99 种以上语言,准确率极高。自定义词典功能可进一步提升专业术语的识别精度。' },
{ q: '这是订阅制吗?', a: '不是。Pro 和 Pro+ 为一次性购买。买一次,终身使用。包含重大更新。由于没有云服务器成本,我们不需要订阅模式。' },
{ q: '这是订阅制吗?', a: 'Pro 和 Pro+ 是月度或年度订阅。年付可节省约17%。随时可取消。基于本地处理,没有云端成本,但订阅用于持续更新和高级功能。' },
{ q: '支持 macOS 和 Linux 吗?', a: '目前仅支持 Windows。基于 Electron 构建macOS/Linux 支持在技术上可行,将根据需求推出。' },
],
},
cta: {
title1: '开口说。',
title2: 'AI来写。',
subtitle1: '无云端。无订阅。无隐私顾虑。',
subtitle1: '无云端。高级功能,由你做主。无隐私顾虑。',
subtitle2: '立即开始。',
downloadBtn: '下载 Windows 版',
systemReq: 'Windows 10/11 \u00b7 64位 \u00b7 约200MB \u00b7 几秒即可就绪',

View file

@ -27,7 +27,7 @@ export function CTA() {
{t.cta.subtitle2}
</p>
<GlowButton href="https://github.com/user/D3ROVoice/releases" variant="primary" size="lg">
<GlowButton href="#" variant="primary" size="lg">
{t.cta.downloadBtn}
</GlowButton>

View file

@ -48,7 +48,7 @@ export function Hero() {
<div className="flex flex-col sm:flex-row items-start gap-4 mb-16">
<a
href="https://github.com/user/D3ROVoice/releases"
href="#"
className="glow-btn inline-flex items-center gap-2 px-8 py-4 font-mono text-sm font-medium uppercase tracking-wider text-white bg-brand-amber rounded-panel"
>
<span className="relative z-10 flex items-center gap-2">

View file

@ -1,3 +1,4 @@
import { useState } from 'react'
import { SectionHeader } from '../components/SectionHeader'
import { Container } from '../components/Container'
import { GlowButton } from '../components/GlowButton'
@ -21,8 +22,18 @@ function CellValue({ value }: { value: string | boolean }) {
return <span className="font-mono text-xs text-neutral-300">{value}</span>
}
const PRICES = {
pro: { monthly: 9.9, annual: 99 },
proPlus: { monthly: 19.9, annual: 199 },
}
export function Pricing() {
const { t } = useI18n()
const [isAnnual, setIsAnnual] = useState(true)
const proPrice = isAnnual ? PRICES.pro.annual : PRICES.pro.monthly
const proPlusPrice = isAnnual ? PRICES.proPlus.annual : PRICES.proPlus.monthly
const periodLabel = isAnnual ? t.pricing.annual : t.pricing.monthly
return (
<section id="pricing" className="relative py-24 md:py-32">
@ -33,6 +44,35 @@ export function Pricing() {
subtitle={t.pricing.subtitle}
/>
{/* Billing toggle */}
<div className="flex items-center justify-center gap-3 mb-10">
<button
onClick={() => setIsAnnual(false)}
className={`font-mono text-xs uppercase tracking-widest px-4 py-2 rounded-panel transition-all ${
!isAnnual
? 'bg-surface-500 text-neutral-100 border border-white/[0.12]'
: 'text-neutral-500 hover:text-neutral-300'
}`}
>
{t.pricing.billingToggleMonthly}
</button>
<button
onClick={() => setIsAnnual(true)}
className={`font-mono text-xs uppercase tracking-widest px-4 py-2 rounded-panel transition-all relative ${
isAnnual
? 'bg-surface-500 text-neutral-100 border border-brand-amber/30'
: 'text-neutral-500 hover:text-neutral-300'
}`}
>
{t.pricing.billingToggleAnnual}
{isAnnual && (
<span className="absolute -top-2.5 -right-2 px-1.5 py-0.5 rounded-full bg-brand-amber text-white text-[9px] font-mono font-semibold uppercase tracking-wider">
{t.pricing.savePercent}
</span>
)}
</button>
</div>
{/* Pricing table */}
<div className="overflow-x-auto -mx-5 md:mx-0">
<table className="w-full min-w-[640px] border-collapse">
@ -54,13 +94,27 @@ export function Pricing() {
</span>
</div>
<div className="font-mono text-nano uppercase tracking-widest text-brand-amber mt-4 mb-1">{t.pricing.pro}</div>
<div className="font-display text-xl font-bold text-neutral-100">$29</div>
<div className="font-mono text-nano text-neutral-600">{t.pricing.oneTime}</div>
<div className="font-display text-xl font-bold text-neutral-100">
${proPrice}
<span className="text-sm font-normal text-neutral-500">{periodLabel}</span>
</div>
{isAnnual && (
<div className="font-mono text-nano text-neutral-600">
${(PRICES.pro.annual / 12).toFixed(1)}{t.pricing.perMonth}
</div>
)}
</th>
<th className="text-center py-4 px-4 w-[20%]">
<div className="font-mono text-nano uppercase tracking-widest text-neutral-500 mb-1">{t.pricing.proPlus}</div>
<div className="font-display text-xl font-bold text-neutral-300">$49</div>
<div className="font-mono text-nano text-neutral-600">{t.pricing.oneTime}</div>
<div className="font-display text-xl font-bold text-neutral-300">
${proPlusPrice}
<span className="text-sm font-normal text-neutral-500">{periodLabel}</span>
</div>
{isAnnual && (
<div className="font-mono text-nano text-neutral-600">
${(PRICES.proPlus.annual / 12).toFixed(1)}{t.pricing.perMonth}
</div>
)}
</th>
</tr>
</thead>
@ -95,7 +149,7 @@ export function Pricing() {
{/* CTA row */}
<div className="grid grid-cols-1 md:grid-cols-3 gap-4 mt-8">
<div className="flex justify-center">
<GlowButton href="https://github.com/user/D3ROVoice/releases" variant="secondary" size="md">
<GlowButton href="#" variant="secondary" size="md">
{t.pricing.downloadFree}
</GlowButton>
</div>