feat: add cloudOnboarding translations for all supported languages (#5578)

* feat: add missing translations for cloud onboarding components

Replaces hardcoded text with i18n translations across cloud onboarding flow:

- CloudWaitlistView: Add translations for title lines, questions text, and contact link
- CloudClaimInviteView: Add translations for processing title and claim button
- CloudSorryContactSupportView: Add translation for error title
- CloudVerifyEmailView: Add translation for verification title
- CloudTemplateFooter: Add translation for "Need Help?" link
- CloudLoginView: Replace hardcoded "Questions? Contact us" and "here" with translations
- CloudSignupView: Replace hardcoded "Questions? Contact us" and "here" with translations
- CloudForgotPasswordView: Replace hardcoded "here" with translation
- Remove all eslint-disable @intlify/vue-i18n/no-raw-text comments
- Add proper useI18n imports to all affected components

Ensures consistent internationalization support across the entire cloud onboarding experience.

* feat: add cloudOnboarding translations for all supported languages

Adds comprehensive translations for cloud onboarding components across all supported locales:

English (en): Base translations for waitlist, claim invite, verify email, and support
Chinese Simplified (zh): 等候名单, 邀请码处理, 邮箱验证, 联系支持
Chinese Traditional (zh-TW): 等候名單, 邀請碼處理, 郵箱驗證, 聯繫支援
Japanese (ja): ウェイトリスト, 招待コード処理, メール認証, サポート連絡
Korean (ko): 대기명단, 초대코드 처리, 이메일 인증, 지원 문의
Russian (ru): Список ожидания, обработка кода приглашения, подтверждение почты
French (fr): Liste d'attente, traitement code invitation, vérification email
Spanish (es): Lista de espera, procesamiento código invitación, verificación email
Arabic (ar): قائمة الانتظار, معالجة رمز الدعوة, التحقق من البريد

Ensures consistent internationalization across the entire cloud onboarding experience for global users.

* feat: add missing privateBeta and start section translations

Adds translations for previously missing cloud onboarding text that was already using translation keys:

- privateBeta.title: "Cloud is currently in private beta" message
- privateBeta.desc: Beta signup description text
- start.title: "Start creating in seconds" header
- start.desc: "Zero setup required" subtext
- start.explain: Multiple output generation description
- start.learnAboutButton: "Learn about Cloud" button text
- start.wantToRun: Local ComfyUI option text
- start.download: "Download ComfyUI" button text

All 9 languages updated:
- Traditional Chinese: 私人測試階段, 幾秒內開始創作, 了解 Cloud
- Simplified Chinese: 私人测试阶段, 几秒内开始创作, 了解 Cloud
- Japanese: プライベートベータ版, 数秒で創作を開始, Cloudについて学ぶ
- Korean: 비공개 베타 버전, 몇 초 만에 창작 시작, Cloud에 대해 알아보기
- Russian: закрытая бета-версия, начните создавать за секунды, Узнать о Cloud
- French: bêta privée, commencez à créer en quelques secondes, En savoir plus sur Cloud
- Spanish: beta privada, comienza a crear en segundos, Aprende sobre Cloud
- Arabic: البيتا الخاصة, ابدأ الإبداع في ثوان, تعلم عن Cloud

Fixes missing translations reported during Traditional Chinese testing.

* feat: restore French translation file and add cloudOnboarding translations

- Restored src/locales/fr/main.json from clean backup to remove duplicate sections
- Added complete French translations for cloudOnboarding section
- Includes survey, waitlist, forgotPassword, privateBeta, start, and other subsections
- Structure matches English version exactly

* [feat] Refactor cloud translations to top-level keys

- Replace nested cloudOnboarding.section.key structure with flattened cloudSection_key pattern
- Add comprehensive cloud translations for all 9 supported languages (ar, en, es, fr, ja, ko, ru, zh, zh-TW)
- Update all Vue components to use new translation key structure
- Fix "Need Help?" and other missing translations across all languages
- Simplify translation maintenance and avoid JSON structure conflicts

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
Christian Byrne
2025-09-15 00:16:55 -07:00
committed by GitHub
parent 18b3b11b9a
commit 7c9b8bb7a6
19 changed files with 360 additions and 65 deletions

View File

@@ -1707,5 +1707,37 @@
"label": "عناصر التحكم في التكبير",
"showMinimap": "إظهار الخريطة المصغرة",
"zoomToFit": "تكبير لتناسب الشاشة"
}
}
},
"cloudFooter_needHelp": "تحتاج مساعدة؟",
"cloudStart_title": "ابدأ الإبداع في ثوان",
"cloudStart_desc": "لا حاجة للإعداد. يعمل على أي جهاز.",
"cloudStart_explain": "أنتج عدة مخرجات في وقت واحد. شارك سير العمل بسهولة.",
"cloudStart_learnAboutButton": "تعلم عن Cloud",
"cloudStart_wantToRun": "تريد تشغيل ComfyUI محلياً بدلاً من ذلك؟",
"cloudStart_download": "تحميل ComfyUI",
"cloudWaitlist_titleLine1": "أنت في",
"cloudWaitlist_titleLine2": "قائمة الانتظار 🎉",
"cloudWaitlist_message": "تم إضافتك إلى قائمة الانتظار. سنخطرك عندما يصبح الوصول متاحاً.",
"cloudWaitlist_questionsText": "أسئلة؟ اتصل بنا",
"cloudWaitlist_contactLink": "هنا",
"cloudClaimInvite_processingTitle": "معالجة رمز الدعوة...",
"cloudClaimInvite_claimButton": "استلام الدعوة",
"cloudSorryContactSupport_title": "عذراً، اتصل بالدعم",
"cloudVerifyEmail_title": "التحقق من البريد الإلكتروني",
"cloudPrivateBeta_title": "Cloud حالياً في مرحلة البيتا الخاصة",
"cloudPrivateBeta_desc": "سجل الدخول للانضمام إلى قائمة الانتظار. سنخطرك عندما يحين دورك. تم إخطارك بالفعل؟ سجل الدخول لبدء استخدام Cloud.",
"cloudForgotPassword_title": "نسيت كلمة المرور",
"cloudForgotPassword_instructions": "أدخل عنوان بريدك الإلكتروني وسنرسل لك رابطاً لإعادة تعيين كلمة المرور.",
"cloudForgotPassword_emailLabel": "البريد الإلكتروني",
"cloudForgotPassword_emailPlaceholder": "أدخل بريدك الإلكتروني",
"cloudForgotPassword_sendResetLink": "إرسال رابط إعادة التعيين",
"cloudForgotPassword_backToLogin": "العودة لتسجيل الدخول",
"cloudForgotPassword_didntReceiveEmail": "لم تستلم بريداً إلكترونياً؟",
"cloudForgotPassword_emailRequired": "البريد الإلكتروني مطلوب",
"cloudForgotPassword_passwordResetSent": "تم إرسال إعادة تعيين كلمة المرور",
"cloudForgotPassword_passwordResetError": "فشل في إرسال بريد إعادة تعيين كلمة المرور",
"cloudSurvey_steps_familiarity": "ما مدى معرفتك بـ ComfyUI؟",
"cloudSurvey_steps_purpose": "ما الغرض الأساسي من استخدامك لـ ComfyUI؟",
"cloudSurvey_steps_industry": "ما هي صناعتك الأساسية؟",
"cloudSurvey_steps_making": "ما الذي تخطط لصنعه؟"
}

View File

@@ -1815,5 +1815,37 @@
"message": "We're having trouble connecting to ComfyUI Cloud. This could be due to a slow connection or temporary service issue.",
"restart": "Sign Out & Try Again"
}
}
},
"cloudFooter_needHelp": "Need Help?",
"cloudStart_title": "start creating in seconds",
"cloudStart_desc": "Zero setup required. Works on any device.",
"cloudStart_explain": "Generate multiple outputs at once. Share workflows with ease.",
"cloudStart_learnAboutButton": "Learn about Cloud",
"cloudStart_wantToRun": "Want to run comfyUI locally instead?",
"cloudStart_download": "Download ComfyUI",
"cloudWaitlist_titleLine1": "YOU'RE ON THE",
"cloudWaitlist_titleLine2": "WAITLIST 🎉",
"cloudWaitlist_message": "You have been added to the waitlist. We will notify you when access is available.",
"cloudWaitlist_questionsText": "Questions? Contact us",
"cloudWaitlist_contactLink": "here",
"cloudClaimInvite_processingTitle": "Processing Invite Code...",
"cloudClaimInvite_claimButton": "Claim Invite",
"cloudSorryContactSupport_title": "Sorry, contact support",
"cloudVerifyEmail_title": "Email Verification",
"cloudPrivateBeta_title": "Cloud is currently in private beta",
"cloudPrivateBeta_desc": "Sign in to join the waitlist. We'll notify you when it's your turn. Already been notified? Sign in start using Cloud.",
"cloudForgotPassword_title": "Forgot Password",
"cloudForgotPassword_instructions": "Enter your email address and we'll send you a link to reset your password.",
"cloudForgotPassword_emailLabel": "Email",
"cloudForgotPassword_emailPlaceholder": "Enter your email",
"cloudForgotPassword_sendResetLink": "Send reset link",
"cloudForgotPassword_backToLogin": "Back to login",
"cloudForgotPassword_didntReceiveEmail": "Didn't receive an email?",
"cloudForgotPassword_emailRequired": "Email is required",
"cloudForgotPassword_passwordResetSent": "Password reset sent",
"cloudForgotPassword_passwordResetError": "Failed to send password reset email",
"cloudSurvey_steps_familiarity": "How familiar are you with ComfyUI?",
"cloudSurvey_steps_purpose": "What will you primarily use ComfyUI for?",
"cloudSurvey_steps_industry": "What's your primary industry?",
"cloudSurvey_steps_making": "What do you plan on making?"
}

View File

@@ -1707,5 +1707,37 @@
"label": "Controles de zoom",
"showMinimap": "Mostrar minimapa",
"zoomToFit": "Ajustar al zoom"
}
}
},
"cloudFooter_needHelp": "¿Necesitas ayuda?",
"cloudStart_title": "comienza a crear en segundos",
"cloudStart_desc": "No requiere configuración. Funciona en cualquier dispositivo.",
"cloudStart_explain": "Genera múltiples salidas a la vez. Comparte flujos de trabajo con facilidad.",
"cloudStart_learnAboutButton": "Conocer sobre Cloud",
"cloudStart_wantToRun": "¿Prefieres ejecutar ComfyUI localmente?",
"cloudStart_download": "Descargar ComfyUI",
"cloudWaitlist_titleLine1": "ESTÁS EN LA",
"cloudWaitlist_titleLine2": "LISTA DE ESPERA 🎉",
"cloudWaitlist_message": "Has sido añadido a la lista de espera. Te notificaremos cuando el acceso esté disponible.",
"cloudWaitlist_questionsText": "¿Preguntas? Contáctanos",
"cloudWaitlist_contactLink": "aquí",
"cloudClaimInvite_processingTitle": "Procesando Código de Invitación...",
"cloudClaimInvite_claimButton": "Reclamar Invitación",
"cloudSorryContactSupport_title": "Lo sentimos, contacta soporte",
"cloudVerifyEmail_title": "Verificación de Correo",
"cloudPrivateBeta_title": "Cloud está actualmente en beta privada",
"cloudPrivateBeta_desc": "Inicia sesión para unirte a la lista de espera. Te notificaremos cuando sea tu turno. ¿Ya fuiste notificado? Inicia sesión para empezar a usar Cloud.",
"cloudForgotPassword_title": "Olvidé mi Contraseña",
"cloudForgotPassword_instructions": "Ingresa tu dirección de correo y te enviaremos un enlace para restablecer tu contraseña.",
"cloudForgotPassword_emailLabel": "Correo",
"cloudForgotPassword_emailPlaceholder": "Ingresa tu correo",
"cloudForgotPassword_sendResetLink": "Enviar enlace de restablecimiento",
"cloudForgotPassword_backToLogin": "Volver al inicio de sesión",
"cloudForgotPassword_didntReceiveEmail": "¿No recibiste un correo?",
"cloudForgotPassword_emailRequired": "El correo es requerido",
"cloudForgotPassword_passwordResetSent": "Restablecimiento de contraseña enviado",
"cloudForgotPassword_passwordResetError": "Error al enviar correo de restablecimiento",
"cloudSurvey_steps_familiarity": "¿Qué tan familiarizado estás con ComfyUI?",
"cloudSurvey_steps_purpose": "¿Para qué usarás principalmente ComfyUI?",
"cloudSurvey_steps_industry": "¿Cuál es tu industria principal?",
"cloudSurvey_steps_making": "¿Qué planeas crear?"
}

View File

@@ -1707,5 +1707,37 @@
"label": "Contrôles de zoom",
"showMinimap": "Afficher la mini-carte",
"zoomToFit": "Ajuster à lécran"
}
}
},
"cloudFooter_needHelp": "Besoin d'aide ?",
"cloudStart_title": "commencez à créer en quelques secondes",
"cloudStart_desc": "Aucune configuration requise. Fonctionne sur n'importe quel appareil.",
"cloudStart_explain": "Générez plusieurs sorties à la fois. Partagez des flux de travail facilement.",
"cloudStart_learnAboutButton": "En savoir plus sur Cloud",
"cloudStart_wantToRun": "Vous préférez exécuter ComfyUI localement ?",
"cloudStart_download": "Télécharger ComfyUI",
"cloudWaitlist_titleLine1": "VOUS ÊTES SUR LA",
"cloudWaitlist_titleLine2": "LISTE D'ATTENTE 🎉",
"cloudWaitlist_message": "Vous avez été ajouté à la liste d'attente. Nous vous préviendrons quand l'accès sera disponible.",
"cloudWaitlist_questionsText": "Des questions ? Contactez-nous",
"cloudWaitlist_contactLink": "ici",
"cloudClaimInvite_processingTitle": "Traitement du Code d'Invitation...",
"cloudClaimInvite_claimButton": "Réclamer l'Invitation",
"cloudSorryContactSupport_title": "Désolé, contactez le support",
"cloudVerifyEmail_title": "Vérification d'Email",
"cloudPrivateBeta_title": "Cloud est actuellement en bêta privée",
"cloudPrivateBeta_desc": "Connectez-vous pour rejoindre la liste d'attente. Nous vous préviendrons quand ce sera votre tour. Déjà notifié ? Connectez-vous pour commencer à utiliser Cloud.",
"cloudForgotPassword_title": "Mot de passe oublié",
"cloudForgotPassword_instructions": "Entrez votre adresse email et nous vous enverrons un lien pour réinitialiser votre mot de passe.",
"cloudForgotPassword_emailLabel": "Email",
"cloudForgotPassword_emailPlaceholder": "Entrez votre email",
"cloudForgotPassword_sendResetLink": "Envoyer le lien de réinitialisation",
"cloudForgotPassword_backToLogin": "Retour à la connexion",
"cloudForgotPassword_didntReceiveEmail": "Vous n'avez pas reçu d'email ?",
"cloudForgotPassword_emailRequired": "L'email est requis",
"cloudForgotPassword_passwordResetSent": "Réinitialisation de mot de passe envoyée",
"cloudForgotPassword_passwordResetError": "Échec de l'envoi de l'email de réinitialisation",
"cloudSurvey_steps_familiarity": "À quel point êtes-vous familier avec ComfyUI ?",
"cloudSurvey_steps_purpose": "Pour quoi utiliserez-vous principalement ComfyUI ?",
"cloudSurvey_steps_industry": "Quelle est votre industrie principale ?",
"cloudSurvey_steps_making": "Que prévoyez-vous de créer ?"
}

View File

@@ -1707,5 +1707,37 @@
"label": "ズームコントロール",
"showMinimap": "ミニマップを表示",
"zoomToFit": "全体表示にズーム"
}
}
},
"cloudFooter_needHelp": "ヘルプが必要ですか?",
"cloudStart_title": "数秒で作成を開始",
"cloudStart_desc": "セットアップは不要。どのデバイスでも動作します。",
"cloudStart_explain": "複数の出力を一度に生成。ワークフローを簡単に共有。",
"cloudStart_learnAboutButton": "Cloudについて学ぶ",
"cloudStart_wantToRun": "代わりにComfyUIをローカルで実行しますか",
"cloudStart_download": "ComfyUIをダウンロード",
"cloudWaitlist_titleLine1": "あなたは",
"cloudWaitlist_titleLine2": "ウェイトリストに登録されました 🎉",
"cloudWaitlist_message": "ウェイトリストに追加されました。アクセスが利用可能になったらお知らせします。",
"cloudWaitlist_questionsText": "質問がありますか?お問い合わせ",
"cloudWaitlist_contactLink": "こちら",
"cloudClaimInvite_processingTitle": "招待コードを処理中...",
"cloudClaimInvite_claimButton": "招待を申請",
"cloudSorryContactSupport_title": "申し訳ございません、サポートにお問い合わせください",
"cloudVerifyEmail_title": "メール確認",
"cloudPrivateBeta_title": "Cloudは現在プライベートベータ版です",
"cloudPrivateBeta_desc": "サインインしてウェイトリストに参加してください。順番が来たらお知らせします。すでに通知を受けましたかサインインしてCloudの使用を開始してください。",
"cloudForgotPassword_title": "パスワードを忘れた",
"cloudForgotPassword_instructions": "メールアドレスを入力してください。パスワードリセット用のリンクをお送りします。",
"cloudForgotPassword_emailLabel": "メール",
"cloudForgotPassword_emailPlaceholder": "メールを入力",
"cloudForgotPassword_sendResetLink": "リセットリンクを送信",
"cloudForgotPassword_backToLogin": "ログインに戻る",
"cloudForgotPassword_didntReceiveEmail": "メールが届きませんでしたか?",
"cloudForgotPassword_emailRequired": "メールが必要です",
"cloudForgotPassword_passwordResetSent": "パスワードリセットを送信しました",
"cloudForgotPassword_passwordResetError": "パスワードリセットメールの送信に失敗しました",
"cloudSurvey_steps_familiarity": "ComfyUIにどの程度慣れていますか",
"cloudSurvey_steps_purpose": "主にComfyUIを何に使用しますか",
"cloudSurvey_steps_industry": "あなたの主要な業界は何ですか?",
"cloudSurvey_steps_making": "何を作成する予定ですか?"
}

View File

@@ -1707,5 +1707,37 @@
"label": "확대/축소 컨트롤",
"showMinimap": "미니맵 표시",
"zoomToFit": "화면에 맞게 확대"
}
}
},
"cloudFooter_needHelp": "도움이 필요하신가요?",
"cloudStart_title": "몇 초 만에 창작 시작",
"cloudStart_desc": "설정 불필요. 모든 기기에서 작동.",
"cloudStart_explain": "한 번에 여러 출력을 생성. 워크플로우를 쉽게 공유.",
"cloudStart_learnAboutButton": "Cloud에 대해 알아보기",
"cloudStart_wantToRun": "대신 ComfyUI를 로컬에서 실행하고 싶으신가요?",
"cloudStart_download": "ComfyUI 다운로드",
"cloudWaitlist_titleLine1": "당신은",
"cloudWaitlist_titleLine2": "대기 목록에 있습니다 🎉",
"cloudWaitlist_message": "대기 목록에 추가되었습니다. 액세스가 가능해지면 알려드리겠습니다.",
"cloudWaitlist_questionsText": "질문이 있으신가요? 문의하기",
"cloudWaitlist_contactLink": "여기",
"cloudClaimInvite_processingTitle": "초대 코드 처리 중...",
"cloudClaimInvite_claimButton": "초대 신청",
"cloudSorryContactSupport_title": "죄송합니다, 지원팀에 문의하세요",
"cloudVerifyEmail_title": "이메일 확인",
"cloudPrivateBeta_title": "Cloud는 현재 비공개 베타입니다",
"cloudPrivateBeta_desc": "로그인하여 대기 목록에 참여하세요. 차례가 되면 알려드리겠습니다. 이미 알림을 받으셨나요? 로그인하여 Cloud 사용을 시작하세요.",
"cloudForgotPassword_title": "비밀번호 찾기",
"cloudForgotPassword_instructions": "이메일 주소를 입력하시면 비밀번호 재설정 링크를 보내드리겠습니다.",
"cloudForgotPassword_emailLabel": "이메일",
"cloudForgotPassword_emailPlaceholder": "이메일을 입력하세요",
"cloudForgotPassword_sendResetLink": "재설정 링크 보내기",
"cloudForgotPassword_backToLogin": "로그인으로 돌아가기",
"cloudForgotPassword_didntReceiveEmail": "이메일을 받지 못하셨나요?",
"cloudForgotPassword_emailRequired": "이메일이 필요합니다",
"cloudForgotPassword_passwordResetSent": "비밀번호 재설정이 전송되었습니다",
"cloudForgotPassword_passwordResetError": "비밀번호 재설정 이메일 전송에 실패했습니다",
"cloudSurvey_steps_familiarity": "ComfyUI에 얼마나 익숙하신가요?",
"cloudSurvey_steps_purpose": "주로 ComfyUI를 무엇에 사용하실 건가요?",
"cloudSurvey_steps_industry": "주요 업계는 무엇인가요?",
"cloudSurvey_steps_making": "무엇을 만들 계획이신가요?"
}

View File

@@ -1707,5 +1707,37 @@
"label": "Элементы управления масштабом",
"showMinimap": "Показать миникарту",
"zoomToFit": "Масштабировать по размеру"
}
}
},
"cloudFooter_needHelp": "Нужна помощь?",
"cloudStart_title": "начните создавать за секунды",
"cloudStart_desc": "Настройка не требуется. Работает на любом устройстве.",
"cloudStart_explain": "Создавайте несколько выходов одновременно. Легко делитесь рабочими процессами.",
"cloudStart_learnAboutButton": "Узнать о Cloud",
"cloudStart_wantToRun": "Хотите запустить ComfyUI локально?",
"cloudStart_download": "Скачать ComfyUI",
"cloudWaitlist_titleLine1": "ВЫ В",
"cloudWaitlist_titleLine2": "СПИСКЕ ОЖИДАНИЯ 🎉",
"cloudWaitlist_message": "Вы добавлены в список ожидания. Мы уведомим вас, когда доступ будет доступен.",
"cloudWaitlist_questionsText": "Вопросы? Свяжитесь с нами",
"cloudWaitlist_contactLink": "здесь",
"cloudClaimInvite_processingTitle": "Обработка кода приглашения...",
"cloudClaimInvite_claimButton": "Получить приглашение",
"cloudSorryContactSupport_title": "Извините, свяжитесь с поддержкой",
"cloudVerifyEmail_title": "Подтверждение email",
"cloudPrivateBeta_title": "Cloud сейчас в приватной бете",
"cloudPrivateBeta_desc": "Войдите, чтобы присоединиться к списку ожидания. Мы уведомим вас, когда придет ваша очередь. Уже получили уведомление? Войдите, чтобы начать использовать Cloud.",
"cloudForgotPassword_title": "Забыли пароль",
"cloudForgotPassword_instructions": "Введите ваш email-адрес, и мы отправим вам ссылку для сброса пароля.",
"cloudForgotPassword_emailLabel": "Email",
"cloudForgotPassword_emailPlaceholder": "Введите ваш email",
"cloudForgotPassword_sendResetLink": "Отправить ссылку сброса",
"cloudForgotPassword_backToLogin": "Вернуться к входу",
"cloudForgotPassword_didntReceiveEmail": "Не получили email?",
"cloudForgotPassword_emailRequired": "Email обязателен",
"cloudForgotPassword_passwordResetSent": "Сброс пароля отправлен",
"cloudForgotPassword_passwordResetError": "Не удалось отправить email сброса пароля",
"cloudSurvey_steps_familiarity": "Насколько вы знакомы с ComfyUI?",
"cloudSurvey_steps_purpose": "Для чего вы в основном будете использовать ComfyUI?",
"cloudSurvey_steps_industry": "Какая ваша основная отрасль?",
"cloudSurvey_steps_making": "Что вы планируете создавать?"
}

View File

@@ -1707,5 +1707,37 @@
"label": "縮放控制",
"showMinimap": "顯示小地圖",
"zoomToFit": "縮放至適合大小"
}
}
},
"cloudFooter_needHelp": "需要幫助?",
"cloudStart_title": "幾秒鐘開始創作",
"cloudStart_desc": "無需設置。在任何設備上工作。",
"cloudStart_explain": "一次生成多個輸出。輕鬆分享工作流程。",
"cloudStart_learnAboutButton": "了解 Cloud",
"cloudStart_wantToRun": "想要在本地運行 ComfyUI",
"cloudStart_download": "下載 ComfyUI",
"cloudWaitlist_titleLine1": "您已加入",
"cloudWaitlist_titleLine2": "等候名單 🎉",
"cloudWaitlist_message": "您已被添加到等候名單。當訪問權限可用時我們會通知您。",
"cloudWaitlist_questionsText": "有問題?聯繫我們",
"cloudWaitlist_contactLink": "這裡",
"cloudClaimInvite_processingTitle": "處理邀請碼...",
"cloudClaimInvite_claimButton": "領取邀請",
"cloudSorryContactSupport_title": "抱歉,請聯繫支援",
"cloudVerifyEmail_title": "郵箱驗證",
"cloudPrivateBeta_title": "Cloud 目前處於內測階段",
"cloudPrivateBeta_desc": "登入加入等候名單。輪到您時我們會通知您。已經收到通知?登入開始使用 Cloud。",
"cloudForgotPassword_title": "忘記密碼",
"cloudForgotPassword_instructions": "輸入您的郵箱地址,我們將發送重置密碼的連結。",
"cloudForgotPassword_emailLabel": "郵箱",
"cloudForgotPassword_emailPlaceholder": "輸入您的郵箱",
"cloudForgotPassword_sendResetLink": "發送重置連結",
"cloudForgotPassword_backToLogin": "返回登入",
"cloudForgotPassword_didntReceiveEmail": "沒有收到郵件?",
"cloudForgotPassword_emailRequired": "郵箱是必需的",
"cloudForgotPassword_passwordResetSent": "密碼重置已發送",
"cloudForgotPassword_passwordResetError": "發送密碼重置郵件失敗",
"cloudSurvey_steps_familiarity": "您對 ComfyUI 有多熟悉?",
"cloudSurvey_steps_purpose": "您主要會用 ComfyUI 做什麼?",
"cloudSurvey_steps_industry": "您的主要行業是什麼?",
"cloudSurvey_steps_making": "您計劃製作什麼?"
}

View File

@@ -1707,5 +1707,37 @@
"label": "縮放控制",
"showMinimap": "顯示小地圖",
"zoomToFit": "適合畫面"
}
}
},
"cloudFooter_needHelp": "需要帮助?",
"cloudStart_title": "几秒钟开始创作",
"cloudStart_desc": "无需设置。在任何设备上工作。",
"cloudStart_explain": "一次生成多个输出。轻松分享工作流程。",
"cloudStart_learnAboutButton": "了解 Cloud",
"cloudStart_wantToRun": "想要在本地运行 ComfyUI",
"cloudStart_download": "下载 ComfyUI",
"cloudWaitlist_titleLine1": "您已在",
"cloudWaitlist_titleLine2": "等候名单中 🎉",
"cloudWaitlist_message": "您已被添加到等候名单。当访问权限可用时我们会通知您。",
"cloudWaitlist_questionsText": "有问题?联系我们",
"cloudWaitlist_contactLink": "这里",
"cloudClaimInvite_processingTitle": "处理邀请码...",
"cloudClaimInvite_claimButton": "领取邀请",
"cloudSorryContactSupport_title": "抱歉,请联系支持",
"cloudVerifyEmail_title": "邮箱验证",
"cloudPrivateBeta_title": "Cloud 目前处于内测阶段",
"cloudPrivateBeta_desc": "登录加入等候名单。轮到您时我们会通知您。已经收到通知?登录开始使用 Cloud。",
"cloudForgotPassword_title": "忘记密码",
"cloudForgotPassword_instructions": "输入您的邮箱地址,我们将发送重置密码的链接。",
"cloudForgotPassword_emailLabel": "邮箱",
"cloudForgotPassword_emailPlaceholder": "输入您的邮箱",
"cloudForgotPassword_sendResetLink": "发送重置链接",
"cloudForgotPassword_backToLogin": "返回登录",
"cloudForgotPassword_didntReceiveEmail": "没有收到邮件?",
"cloudForgotPassword_emailRequired": "邮箱是必需的",
"cloudForgotPassword_passwordResetSent": "密码重置已发送",
"cloudForgotPassword_passwordResetError": "发送密码重置邮件失败",
"cloudSurvey_steps_familiarity": "您对 ComfyUI 有多熟悉?",
"cloudSurvey_steps_purpose": "您主要会用 ComfyUI 做什么?",
"cloudSurvey_steps_industry": "您的主要行业是什么?",
"cloudSurvey_steps_making": "您计划制作什么?"
}

View File

@@ -1,21 +1,24 @@
<!-- eslint-disable @intlify/vue-i18n/no-raw-text -->
<template>
<div
class="flex flex-col justify-center items-center h-screen font-mono text-black gap-4"
>
<h1 class="text-2xl">Processing Invite Code...</h1>
<h1 class="text-2xl">
{{ t('cloudClaimInvite_processingTitle') }}
</h1>
<button
class="px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600 cursor-pointer"
@click="onClaim"
>
Claim Invite
{{ t('cloudClaimInvite_claimButton') }}
</button>
</div>
</template>
<script setup lang="ts">
import { useI18n } from 'vue-i18n'
import { useRouter } from 'vue-router'
const { t } = useI18n()
const router = useRouter()
const onClaim = () => {

View File

@@ -1,14 +1,13 @@
<!-- eslint-disable @intlify/vue-i18n/no-raw-text -->
<template>
<div class="h-full flex items-center justify-center p-8">
<div class="w-96 p-2">
<!-- Header -->
<div class="flex flex-col gap-4 mb-8">
<h1 class="text-xl font-medium leading-normal my-0">
{{ t('cloudOnboarding.forgotPassword.title') }}
{{ t('cloudForgotPassword_title') }}
</h1>
<p class="text-base my-0 text-muted">
{{ t('cloudOnboarding.forgotPassword.instructions') }}
{{ t('cloudForgotPassword_instructions') }}
</p>
</div>
@@ -19,13 +18,13 @@
class="opacity-80 text-base font-medium mb-2"
for="reset-email"
>
{{ t('cloudOnboarding.forgotPassword.emailLabel') }}
{{ t('cloudForgotPassword_emailLabel') }}
</label>
<InputText
id="reset-email"
v-model="email"
type="email"
:placeholder="t('cloudOnboarding.forgotPassword.emailPlaceholder')"
:placeholder="t('cloudForgotPassword_emailPlaceholder')"
class="h-10"
:invalid="!!errorMessage && !email"
autocomplete="email"
@@ -43,7 +42,7 @@
<div class="flex flex-col gap-4">
<Button
type="submit"
:label="t('cloudOnboarding.forgotPassword.sendResetLink')"
:label="t('cloudForgotPassword_sendResetLink')"
:loading="loading"
:disabled="!email || loading"
class="h-10 font-medium text-white"
@@ -51,7 +50,7 @@
<Button
type="button"
:label="t('cloudOnboarding.forgotPassword.backToLogin')"
:label="t('cloudForgotPassword_backToLogin')"
severity="secondary"
class="h-10 bg-[#2d2e32]"
@click="navigateToLogin"
@@ -61,14 +60,14 @@
<!-- Help text -->
<p class="mt-5 text-sm text-gray-600">
{{ t('cloudOnboarding.forgotPassword.didntReceiveEmail') }}
{{ t('cloudForgotPassword_didntReceiveEmail') }}
<a
href="https://support.comfy.org"
class="text-blue-400 no-underline cursor-pointer"
target="_blank"
rel="noopener noreferrer"
>
here</a
{{ t('cloudWaitlist_contactLink') }}</a
>.
</p>
</div>
@@ -100,7 +99,7 @@ const navigateToLogin = () => {
const handleSubmit = async () => {
if (!email.value) {
errorMessage.value = t('cloudOnboarding.forgotPassword.emailRequired')
errorMessage.value = t('cloudForgotPassword_emailRequired')
return
}
@@ -112,7 +111,7 @@ const handleSubmit = async () => {
// sendPasswordReset is already wrapped and returns a promise
await authActions.sendPasswordReset(email.value)
successMessage.value = t('cloudOnboarding.forgotPassword.passwordResetSent')
successMessage.value = t('cloudForgotPassword_passwordResetSent')
// Optionally redirect to login after a delay
setTimeout(() => {
@@ -120,7 +119,7 @@ const handleSubmit = async () => {
}, 3000)
} catch (error) {
console.error('Password reset error:', error)
errorMessage.value = t('cloudOnboarding.forgotPassword.passwordResetError')
errorMessage.value = t('cloudForgotPassword_passwordResetError')
} finally {
loading.value = false
}

View File

@@ -1,13 +1,12 @@
<!-- eslint-disable @intlify/vue-i18n/no-raw-text -->
<template>
<div class="h-full flex items-center justify-center p-8">
<div class="w-96 p-2">
<div class="bg-[#2d2e32] p-4 rounded-lg">
<h4 class="m-0 pb-2 text-lg">
{{ t('cloudOnboarding.privateBeta.title') }}
{{ t('cloudPrivateBeta_title') }}
</h4>
<p class="m-0 text-base leading-6">
{{ t('cloudOnboarding.privateBeta.desc') }}
{{ t('cloudPrivateBeta_desc') }}
</p>
</div>
@@ -63,14 +62,14 @@
<!-- Terms & Contact -->
<p class="mt-5 text-sm text-gray-600">
Questions? Contact us
{{ t('cloudWaitlist_questionsText') }}
<a
href="https://support.comfy.org"
class="text-blue-400 no-underline cursor-pointer"
target="_blank"
rel="noopener noreferrer"
>
here</a
{{ t('cloudWaitlist_contactLink') }}</a
>.
</p>
</div>

View File

@@ -1,4 +1,3 @@
<!-- eslint-disable @intlify/vue-i18n/no-raw-text -->
<template>
<div class="h-full flex items-center justify-center p-8">
<div class="w-96 p-2">
@@ -76,14 +75,14 @@
{{ t('auth.login.privacyLink') }} </a
>.
<p class="mt-2">
Questions? Contact us
{{ t('cloudWaitlist_questionsText') }}
<a
href="https://support.comfy.org"
class="text-blue-400 no-underline cursor-pointer"
target="_blank"
rel="noopener noreferrer"
>
here</a
{{ t('cloudWaitlist_contactLink') }}</a
>.
</p>
</div>

View File

@@ -1,10 +1,15 @@
<!-- eslint-disable @intlify/vue-i18n/no-raw-text -->
<template>
<div class="cloud-sorry-contact-support">
<h1>Sorry, contact support</h1>
<h1>{{ t('cloudSorryContactSupport_title') }}</h1>
</div>
</template>
<script setup lang="ts">
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
</script>
<style scoped>
.cloud-sorry-contact-support {
display: flex;

View File

@@ -15,7 +15,7 @@
>
<div>
<label class="text-lg font-medium block mb-8">{{
t('cloudOnboarding.survey.steps.familiarity')
t('cloudSurvey_steps_familiarity')
}}</label>
<div class="flex flex-col gap-6">
<div
@@ -56,7 +56,7 @@
>
<div>
<label class="text-lg font-medium block mb-8">{{
t('cloudOnboarding.survey.steps.purpose')
t('cloudSurvey_steps_purpose')
}}</label>
<div class="flex flex-col gap-6">
<div
@@ -102,7 +102,7 @@
>
<div>
<label class="text-lg font-medium block mb-8">{{
t('cloudOnboarding.survey.steps.industry')
t('cloudSurvey_steps_industry')
}}</label>
<div class="flex flex-col gap-6">
<div
@@ -155,7 +155,7 @@
>
<div>
<label class="text-lg font-medium block mb-8">{{
t('cloudOnboarding.survey.steps.making')
t('cloudSurvey_steps_making')
}}</label>
<div class="flex flex-col gap-6">
<div

View File

@@ -1,16 +1,18 @@
<!-- eslint-disable @intlify/vue-i18n/no-raw-text -->
<template>
<div>
<h1>Email Verification</h1>
<h1>{{ t('cloudVerifyEmail_title') }}</h1>
</div>
</template>
<script setup lang="ts">
import { onMounted } from 'vue'
import { useI18n } from 'vue-i18n'
// import { verifyEmail } from '@/api/auth'
import router from '@/router'
const { t } = useI18n()
onMounted(async () => {
// verifyEmail()
await router.push({ name: 'cloud-invite-check' })

View File

@@ -1,24 +1,23 @@
<!-- eslint-disable @intlify/vue-i18n/no-raw-text -->
<template>
<div class="flex flex-col items-center justify-center p-8">
<div class="w-full max-w-md text-center">
<h1 class="text-3xl italic font-bolder mb-8">
YOU'RE ON THE<br />
WAITLIST 🎉
{{ t('cloudWaitlist_titleLine1') }}<br />
{{ t('cloudWaitlist_titleLine2') }}
</h1>
<div class="max-w-[320px] text-lg font-light">
<p class="text-white">
{{ t('cloudOnboarding.waitlist.message') }}
{{ t('cloudWaitlist_message') }}
</p>
<p class="text-white">
Questions? Contact us
{{ t('cloudWaitlist_questionsText') }}
<a
href="https://support.comfy.org"
class="text-blue-400 no-underline cursor-pointer"
target="_blank"
rel="noopener noreferrer"
>
here</a
{{ t('cloudWaitlist_contactLink') }}</a
>.
</p>
</div>

View File

@@ -27,14 +27,16 @@
<!-- Optional Overlay for better visual -->
<div class="absolute inset-0 flex justify-center items-center">
<div>
<h1 class="text-5xl italic font-bolder mb-8 uppercase text-center">
{{ t('cloudOnboarding.start.title') }}
<h1
class="text-5xl italic font-bolder mb-8 uppercase text-center text-white"
>
{{ t('cloudStart_title') }}
</h1>
<p class="m-2 text-xl text-center">
{{ t('cloudOnboarding.start.desc') }}
<p class="m-2 text-xl text-center text-white">
{{ t('cloudStart_desc') }}
</p>
<p class="m-0 text-xl text-center">
{{ t('cloudOnboarding.start.explain') }}
<p class="m-0 text-xl text-center text-white">
{{ t('cloudStart_explain') }}
</p>
</div>
</div>
@@ -46,17 +48,17 @@
severity="secondary"
@click="handleLearnAboutClick"
>
{{ t('cloudOnboarding.start.learnAboutButton') }}
{{ t('cloudStart_learnAboutButton') }}
</Button>
<div class="flex items-center gap-3">
<p>{{ t('cloudOnboarding.start.wantToRun') }}</p>
<p class="text-white">{{ t('cloudStart_wantToRun') }}</p>
<Button
type="button"
class="h-10 bg-black text-white font-bold"
severity="secondary"
@click="handleDownloadClick"
>
{{ t('cloudOnboarding.start.download') }}
{{ t('cloudStart_download') }}
</Button>
</div>
</div>

View File

@@ -1,4 +1,3 @@
<!-- eslint-disable @intlify/vue-i18n/no-raw-text -->
<template>
<footer class="flex gap-2.5 pl-[60px] pb-[60px]">
<a
@@ -21,7 +20,7 @@
target="_blank"
rel="noopener noreferrer"
>
Need Help?
{{ t('cloudFooter_needHelp') }}
</a>
</footer>
</template>