diff --git a/admin-ui/dist.zip b/admin-ui/dist.zip new file mode 100644 index 0000000..f20d132 Binary files /dev/null and b/admin-ui/dist.zip differ diff --git a/portal-ui/dist.zip b/portal-ui/dist.zip new file mode 100644 index 0000000..b3ac661 Binary files /dev/null and b/portal-ui/dist.zip differ diff --git a/portal-ui/src/lang/ar_SA/common.js b/portal-ui/src/lang/ar_SA/common.js new file mode 100644 index 0000000..b10cb8f --- /dev/null +++ b/portal-ui/src/lang/ar_SA/common.js @@ -0,0 +1,179 @@ +export default { + image1: 'خلع بضغطة واحدة', + image2: 'صورة إلى صورة 2', + uploadImage: 'رفع صورة', + uploadImageTip: 'PNG/JPG، بحد أقصى 10 ميجا', + uploadPlaceholder: 'انقر لرفع صورة', + selectImageSource: 'اختر مصدر الصورة', + selectTemplate: 'اختر القالب', + reselectTemplate: 'إعادة اختيار القالب', + noTemplates: 'لا توجد قوالب', + tag1: 'نوع الوسم 1', + tag2: 'نوع الوسم 2', + tag3: 'نوع الوسم 3', + generateImage: 'إنشاء الآن (يخصم {score} من الرصيد)', + generateImageNow: 'إنشاء الآن', + generateTip: 'بعد الإرسال يمكنك المشاهدة في "أعمالي"', + generateVideo: 'إنشاء فيديو', + imageFace: 'تبديل الوجه في صورة', + videoFace: 'تبديل الوجه في فيديو', + uploadImageFace: 'انقر لرفع صورة الوجه', + uploadTemplate: 'انقر لرفع قالب مخصص', + textPlaceholder: 'صف الصورة التي تريد إنشاءها', + uploadImageError: 'يرجى رفع صورة', + replaceImage: 'استبدال الصورة', + uploadFaceImageError: 'يرجى رفع صورة الوجه', + uploadTemplateError: 'يرجى رفع قالب مخصص', + textError: 'يرجى إدخال النص التوجيهي', + textVideoPlaceholder: 'صف الفيديو الذي تريد إنشاءه', + uploadFirstPlaceholder: 'انقر لرفع الإطار الأول', + uploadLastPlaceholder: 'انقر لرفع الإطار الأخير', + uploadFirstImageError: 'يرجى رفع صورة الإطار الأول', + uploadWaitImageError: 'يرجى انتظار انتهاء الرفع', + saveVideo: 'تحميل الفيديو', + videoLoadingText: 'جاري إنشاء الفيديو...', + viewVideo: 'عرض الفيديو', + changeFacePrompt: 'أخذ الوجه من الصورة الثانية واستبداله بالوجه في الأولى', + rechartTip1: 'عند الشحن via المحفظة تأكد من شبكة المحفظة.', + rechartTip2: 'قد يتأخر الشحن؛ انتظر 3–5 دقائق ثم حدّث.', + walletAddr: 'عنوان المحفظة:', + fbTitle: 'تحذير! هذا الموقع للبالغين فقط!', + fbContent: 'بالدخول أؤكد أن عمري 18 سنة أو أكثر', + fbCancel: 'أقل من 18', + fbOK: 'عمري 18+', + sorry: 'عذراً!', + useLess: 'لا يمكنك استخدام هذا الموقع...', + loginAccount: 'تسجيل الدخول', + logout: 'تسجيل الخروج', + userEmailPlaceholder: 'أدخل البريد أو اسم المستخدم', + passwordPlaceholder: 'أدخل كلمة المرور', + forgetPassword: 'نسيت كلمة المرور؟', + register: 'التسجيل', + login: 'دخول', + forgotPassword: 'نسيت كلمة المرور', + registerAccount: 'إنشاء حساب', + usernamePlaceholder: 'أدخل اسم المستخدم', + codePlaceholder: 'أدخل رمز التحقق', + confirmPasswordPlaceholder: 'تأكيد كلمة المرور', + backToLogin: 'العودة لتسجيل الدخول', + send: 'إرسال', + emailValidPlaceholder: 'أدخل بريداً إلكترونياً صحيحاً', + confirmPwdValidMsg: 'كلمات المرور غير متطابقة', + editPassword: 'تغيير كلمة المرور', + recharge: 'شحن', + myAccount: 'حسابي', + moneyInvite: 'دعوة مكافآت', + rechargeRecord: 'سجل الشحن', + resumeRecord: 'سجل الاستهلاك', + inviteRecord: 'سجل الدعوات', + username: 'اسم المستخدم', + userId: 'معرف المستخدم', + accountAmount: 'الرصيد', + editUserInfo: 'تعديل البيانات', + contact: 'تواصل معنا', + backToUser: 'رجوع', + moneyTips: 'عند دعوة صديق للتسجيل تحصل على {rate} من مبلغ شحنه في كل مرة.', + inviteCode: 'رمز الدعوة', + inviteLink: 'رابط الدعوة', + saveImage: 'حفظ الصورة', + totalAmount: 'إجمالي الشحن', + amount: 'المبلغ', + sendAmount: 'مبلغ الهدية', + rechargeType: 'طريقة الشحن', + rechargeTime: 'وقت الشحن', + emptyText: 'لا توجد بيانات', + product: 'عمل', + resumeAmount: 'المبلغ المستهلك', + productType: 'نوع العمل', + productTime: 'وقت الإنشاء', + totalReward: 'رصيد المكافآت', + rewardAmount: 'مبلغ المكافأة', + rewardTime: 'وقت المكافأة', + reSend: 'إعادة الإرسال', + registerSuccessfully: 'تم التسجيل بنجاح', + loginSuccessfully: 'تم تسجيل الدخول', + passwordResetSuccessfully: 'تم إعادة تعيين كلمة المرور', + rechargeSuccessfully: 'تم الشحن بنجاح', + avatar: 'الصورة الرمزية', + input: 'أدخل', + save: 'حفظ', + editEmail: 'تغيير البريد', + editEmailSuccessfully: 'تم تحديث البريد', + updateAvatarSuccessfully: 'تم تحديث الصورة الرمزية', + balenceLow: 'رصيدك غير كافٍ، يرجى الشحن', + confirm: 'تأكيد', + createFailed: 'فشل الإنشاء، تمت إعادة الرصيد', + notice: 'تنبيه', + oldPasswordPlaceholder: 'أدخل كلمة المرور القديمة', + newpasswordPlaceholder: 'أدخل كلمة المرور الجديدة', + switchPageTip: 'الفيديو قيد الإنشاء؛ اخرج وتحقق من سجل الاستهلاك.', + loginless: 'انتهت الجلسة! يرجى تسجيل الدخول مجدداً.', + createVideo: 'إنشاء فيديو (يخصم {price} من الرصيد)', + ok: 'تأكيد', + rechartNotice: 'تعليمات الشحن', + rechargeNotice1: '1. يُضاف الشحن فوراً. إن لم يتغير الرصيد حدّث الصفحة.', + rechargeNotice2: '2. الباقات المحدودة عروض؛ يمكنك الشحن أكثر من مرة.', + rechargeNotice3: '3. الرصيد المشحون لا ينتهي صلاحيته.', + rechargeNotice4: 'راجع الباقة قبل الشراء؛ لا استرداد.', + rechargeLeft: 'الرصيد', + dollor: 'USD', + isDevelop: 'قيد التطوير.', + copySuccessfully: 'تم النسخ', + copyLink: 'نسخ الرابط', + goPay: 'الذهاب للدفع', + filePreview: 'معاينة', + doSame: 'عمل نسخة مشابهة', + saveQRCode: 'حفظ رمز QR', + invitationCodePlaceholder: 'أدخل رمز الدعوة', + testRecharge: 'شحن تجريبي', + orderNo: 'رقم الطلب', + orderNoP: 'رقم الطلب مطلوب', + emailNotExists: 'هذا البريد غير مسجّل', + gearNotExists: 'خطة الشحن المختارة غير موجودة؛ اختر غيرها.', + myProduct: 'أعمالي', + permissionError: 'إجمالي شحنك {total}، لا يكفي للمعاينة.', + createTagFailed: 'فشل الإنشاء؛ حدّث وجرب مرة أخرى.', + loadingText: 'جاري التحميل...', + hasMore: 'اسحب لأعلى للمزيد', + noMore: 'لا مزيد', + giftAmount: 'المبلغ المُستَوفى', + cardNo: 'رقم البطاقة', + cardName: 'اسم صاحب البطاقة', + cardNoRequired: 'أدخل رقم البطاقة', + cardNameRequired: 'أدخل اسم صاحب البطاقة', + rechargeFailed: 'فشل الشحن', + vmCardInfo: 'بيانات البطاقة', + cardNumber: 'رقم البطاقة', + cardNumberPlaceholder: 'أدخل رقم البطاقة', + cardNumberRequired: 'أدخل رقم البطاقة', + cardNumberInvalid: 'رقم البطاقة يجب أن يكون 13–19 رقماً', + cvc: 'CVC', + cvcPlaceholder: 'أدخل CVC', + cvcRequired: 'أدخل CVC', + cvcInvalid: 'CVC يجب أن يكون 3 أرقام', + expYear: 'سنة انتهاء الصلاحية', + expYearPlaceholder: 'أدخل السنة (مثل 2027)', + expYearRequired: 'أدخل سنة انتهاء الصلاحية', + expYearInvalid: 'السنة يجب أن تكون 4 أرقام', + expMonth: 'شهر انتهاء الصلاحية', + expMonthPlaceholder: 'اختر الشهر', + expMonthRequired: 'اختر الشهر', + email: 'البريد', + emailPlaceholder: 'أدخل البريد', + emailRequired: 'أدخل البريد', + emailInvalid: 'صيغة البريد غير صحيحة', + emailMaxLength: 'البريد لا يتجاوز 30 حرفاً', + firstName: 'الاسم الأول', + firstNamePlaceholder: 'أدخل الاسم الأول', + firstNameRequired: 'أدخل الاسم الأول', + firstNameMaxLength: 'الاسم لا يتجاوز 30 حرفاً', + lastName: 'اسم العائلة', + lastNamePlaceholder: 'أدخل اسم العائلة', + lastNameRequired: 'أدخل اسم العائلة', + lastNameMaxLength: 'اسم العائلة لا يتجاوز 30 حرفاً', + country: 'الدولة', + countryPlaceholder: 'اختر الدولة', + countryRequired: 'اختر الدولة', + submit: 'إرسال', + cancel: 'إلغاء' +} diff --git a/portal-ui/src/lang/ar_SA/index.js b/portal-ui/src/lang/ar_SA/index.js new file mode 100644 index 0000000..1136137 --- /dev/null +++ b/portal-ui/src/lang/ar_SA/index.js @@ -0,0 +1,7 @@ +import route from './route' +import common from './common.js' + +export default { + route, + common +} diff --git a/portal-ui/src/lang/ar_SA/route.js b/portal-ui/src/lang/ar_SA/route.js new file mode 100644 index 0000000..ae17dde --- /dev/null +++ b/portal-ui/src/lang/ar_SA/route.js @@ -0,0 +1,12 @@ +export default { + index: 'الرئيسية', + imageToImage: 'خلع بضغطة واحدة', + imageToImage2: 'صورة إلى صورة 2', + changeFace: 'تبديل الوجه', + changeFaceVideo: 'تبديل الوجه في الفيديو', + fastImage: 'إنشاء صورة', + fastVideo: 'إنشاء فيديو', + recharge: 'شحن سريع', + help: 'مركز المساعدة', + moneyInvite: 'دعوة مكافآت' +} diff --git a/portal-ui/src/lang/es_ES/common.js b/portal-ui/src/lang/es_ES/common.js new file mode 100644 index 0000000..1d0206b --- /dev/null +++ b/portal-ui/src/lang/es_ES/common.js @@ -0,0 +1,179 @@ +export default { + image1: 'Desvestir en un clic', + image2: 'Imagen a Imagen 2', + uploadImage: 'Subir imagen', + uploadImageTip: 'Soporta PNG/JPG, máx. 10MB', + uploadPlaceholder: 'Clic para subir imagen', + selectImageSource: 'Seleccionar fuente de imagen', + selectTemplate: 'Seleccionar plantilla', + reselectTemplate: 'Reseleccionar plantilla', + noTemplates: 'Sin plantillas', + tag1: 'Tipo de etiqueta 1', + tag2: 'Tipo de etiqueta 2', + tag3: 'Tipo de etiqueta 3', + generateImage: 'Generar ahora (consume {score} de saldo)', + generateImageNow: 'Generar ahora', + generateTip: 'Después de enviar, puede ver en "Mis obras"', + generateVideo: 'Generar video', + imageFace: 'Cambiar rostro en imagen', + videoFace: 'Cambiar rostro en video', + uploadImageFace: 'Clic para subir imagen de rostro', + uploadTemplate: 'Clic para subir plantilla personalizada', + textPlaceholder: 'Describa la imagen que desea generar', + uploadImageError: 'Por favor suba una imagen', + replaceImage: 'Reemplazar imagen', + uploadFaceImageError: 'Por favor suba una imagen de rostro', + uploadTemplateError: 'Por favor suba una plantilla personalizada', + textError: 'Por favor escriba el texto de indicación', + textVideoPlaceholder: 'Describa el video que desea generar', + uploadFirstPlaceholder: 'Clic para subir imagen del primer frame', + uploadLastPlaceholder: 'Clic para subir imagen del último frame', + uploadFirstImageError: 'Por favor suba la imagen del primer frame', + uploadWaitImageError: 'Espere a que termine la subida', + saveVideo: 'Descargar video', + videoLoadingText: 'Generando video...', + viewVideo: 'Ver video', + changeFacePrompt: 'Extraer el rostro de la segunda imagen y reemplazar en la primera', + rechartTip1: 'Al recargar con transferencia de billetera, confirme la red del monedero.', + rechartTip2: 'La recarga puede tardar; espere 3-5 minutos antes de actualizar.', + walletAddr: 'Dirección del monedero:', + fbTitle: 'Advertencia: este sitio es solo para adultos.', + fbContent: 'Al entrar confirmo que tengo 18 años o más', + fbCancel: 'Menor de 18', + fbOK: 'Tengo 18 o más', + sorry: '¡Lo sentimos!', + useLess: 'No puede usar este sitio...', + loginAccount: 'Iniciar sesión', + logout: 'Cerrar sesión', + userEmailPlaceholder: 'Introduzca correo o usuario', + passwordPlaceholder: 'Introduzca contraseña', + forgetPassword: '¿Olvidó la contraseña?', + register: 'Registrarse', + login: 'Iniciar sesión', + forgotPassword: 'Olvidé la contraseña', + registerAccount: 'Crear cuenta', + usernamePlaceholder: 'Introduzca usuario', + codePlaceholder: 'Introduzca código de verificación', + confirmPasswordPlaceholder: 'Confirme la contraseña', + backToLogin: 'Volver al inicio de sesión', + send: 'Enviar', + emailValidPlaceholder: 'Introduzca un correo válido', + confirmPwdValidMsg: 'Las contraseñas no coinciden', + editPassword: 'Cambiar contraseña', + recharge: 'Recargar', + myAccount: 'Mi cuenta', + moneyInvite: 'Invitación con recompensa', + rechargeRecord: 'Historial de recargas', + resumeRecord: 'Historial de consumo', + inviteRecord: 'Historial de invitaciones', + username: 'Usuario', + userId: 'ID de usuario', + accountAmount: 'Saldo', + editUserInfo: 'Editar datos', + contact: 'Contacto', + backToUser: 'Volver', + moneyTips: 'Al invitar a un amigo a registrarse, obtiene {rate} de su recarga cada vez.', + inviteCode: 'Código de invitación', + inviteLink: 'Enlace de invitación', + saveImage: 'Guardar imagen', + totalAmount: 'Total recargado', + amount: 'Monto', + sendAmount: 'Monto de regalo', + rechargeType: 'Método de recarga', + rechargeTime: 'Fecha de recarga', + emptyText: 'Sin datos', + product: 'Obra', + resumeAmount: 'Monto consumido', + productType: 'Tipo de obra', + productTime: 'Fecha de creación', + totalReward: 'Saldo de recompensas', + rewardAmount: 'Monto de recompensa', + rewardTime: 'Fecha de recompensa', + reSend: 'Reenviar', + registerSuccessfully: 'Registro exitoso', + loginSuccessfully: 'Sesión iniciada', + passwordResetSuccessfully: 'Contraseña restablecida', + rechargeSuccessfully: 'Recarga exitosa', + avatar: 'Avatar', + input: 'Introduzca', + save: 'Guardar', + editEmail: 'Cambiar correo', + editEmailSuccessfully: 'Correo actualizado', + updateAvatarSuccessfully: 'Avatar actualizado', + balenceLow: 'Saldo insuficiente, recargue', + confirm: 'Aceptar', + createFailed: 'Error al generar, saldo devuelto', + notice: 'Aviso', + oldPasswordPlaceholder: 'Introduzca la contraseña anterior', + newpasswordPlaceholder: 'Introduzca la nueva contraseña', + switchPageTip: 'El video se está generando; salga y revise el historial de consumo.', + loginless: 'Sesión expirada; inicie sesión de nuevo.', + createVideo: 'Generar video (consume {price} de saldo)', + ok: 'Aceptar', + rechartNotice: 'Instrucciones de recarga', + rechargeNotice1: '1. La recarga se acredita al instante. Si no cambia, actualice la página.', + rechargeNotice2: '2. Los paquetes por tiempo limitado son promociones; puede recargar varias veces.', + rechargeNotice3: '3. El saldo recargado no tiene límite de tiempo.', + rechargeNotice4: 'Revise el paquete antes de comprar; no hay devoluciones.', + rechargeLeft: 'Saldo', + dollor: 'USD', + isDevelop: 'En desarrollo.', + copySuccessfully: 'Copiado', + copyLink: 'Copiar enlace', + goPay: 'Ir a pagar', + filePreview: 'Vista previa', + doSame: 'Hacer similar', + saveQRCode: 'Guardar código QR', + invitationCodePlaceholder: 'Introduzca código de invitación', + testRecharge: 'Recarga de prueba', + orderNo: 'Número de pedido', + orderNoP: 'El número de pedido es obligatorio', + emailNotExists: 'El correo no está registrado', + gearNotExists: 'El plan de recarga no existe; elija otro.', + myProduct: 'Mis obras', + permissionError: 'Su recarga acumulada es {total}, no cumple para previsualizar.', + createTagFailed: 'Error al generar; actualice e intente de nuevo.', + loadingText: 'Cargando...', + hasMore: 'Deslizar para más', + noMore: 'No hay más', + giftAmount: 'Monto acreditado', + cardNo: 'Número de tarjeta', + cardName: 'Nombre en tarjeta', + cardNoRequired: 'Introduzca número de tarjeta', + cardNameRequired: 'Introduzca nombre en tarjeta', + rechargeFailed: 'Recarga fallida', + vmCardInfo: 'Datos de tarjeta', + cardNumber: 'Número de tarjeta', + cardNumberPlaceholder: 'Introduzca número de tarjeta', + cardNumberRequired: 'Introduzca número de tarjeta', + cardNumberInvalid: 'El número debe tener 13-19 dígitos', + cvc: 'CVC', + cvcPlaceholder: 'Introduzca CVC', + cvcRequired: 'Introduzca CVC', + cvcInvalid: 'CVC debe ser 3 dígitos', + expYear: 'Año de vencimiento', + expYearPlaceholder: 'Introduzca año (ej.: 2027)', + expYearRequired: 'Introduzca año de vencimiento', + expYearInvalid: 'El año debe ser 4 dígitos', + expMonth: 'Mes de vencimiento', + expMonthPlaceholder: 'Seleccione mes', + expMonthRequired: 'Seleccione mes', + email: 'Correo', + emailPlaceholder: 'Introduzca correo', + emailRequired: 'Introduzca correo', + emailInvalid: 'Formato de correo no válido', + emailMaxLength: 'Máx. 30 caracteres', + firstName: 'Nombre', + firstNamePlaceholder: 'Introduzca nombre', + firstNameRequired: 'Introduzca nombre', + firstNameMaxLength: 'Máx. 30 caracteres', + lastName: 'Apellido', + lastNamePlaceholder: 'Introduzca apellido', + lastNameRequired: 'Introduzca apellido', + lastNameMaxLength: 'Máx. 30 caracteres', + country: 'País', + countryPlaceholder: 'Seleccione país', + countryRequired: 'Seleccione país', + submit: 'Enviar', + cancel: 'Cancelar' +} diff --git a/portal-ui/src/lang/es_ES/index.js b/portal-ui/src/lang/es_ES/index.js new file mode 100644 index 0000000..1136137 --- /dev/null +++ b/portal-ui/src/lang/es_ES/index.js @@ -0,0 +1,7 @@ +import route from './route' +import common from './common.js' + +export default { + route, + common +} diff --git a/portal-ui/src/lang/es_ES/route.js b/portal-ui/src/lang/es_ES/route.js new file mode 100644 index 0000000..8e13c35 --- /dev/null +++ b/portal-ui/src/lang/es_ES/route.js @@ -0,0 +1,12 @@ +export default { + index: 'Inicio', + imageToImage: 'Desvestir en un clic', + imageToImage2: 'Imagen a Imagen 2', + changeFace: 'Cambiar rostro', + changeFaceVideo: 'Cambiar rostro en video', + fastImage: 'Generar imagen', + fastVideo: 'Generar video', + recharge: 'Recarga rápida', + help: 'Centro de ayuda', + moneyInvite: 'Invitación con recompensa' +} diff --git a/portal-ui/src/lang/fr_FR/common.js b/portal-ui/src/lang/fr_FR/common.js new file mode 100644 index 0000000..2294be1 --- /dev/null +++ b/portal-ui/src/lang/fr_FR/common.js @@ -0,0 +1,179 @@ +export default { + image1: 'Déshabiller en un clic', + image2: 'Image vers Image 2', + uploadImage: 'Télécharger une image', + uploadImageTip: 'PNG/JPG, max. 10 Mo', + uploadPlaceholder: 'Cliquez pour télécharger', + selectImageSource: 'Choisir la source de l\'image', + selectTemplate: 'Choisir un modèle', + reselectTemplate: 'Resélectionner un modèle', + noTemplates: 'Aucun modèle', + tag1: 'Type d\'étiquette 1', + tag2: 'Type d\'étiquette 2', + tag3: 'Type d\'étiquette 3', + generateImage: 'Générer maintenant (coûte {score} de solde)', + generateImageNow: 'Générer maintenant', + generateTip: 'Après envoi, voir dans « Mes œuvres »', + generateVideo: 'Générer une vidéo', + imageFace: 'Changer le visage sur image', + videoFace: 'Changer le visage en vidéo', + uploadImageFace: 'Cliquez pour télécharger une photo de visage', + uploadTemplate: 'Cliquez pour télécharger un modèle personnalisé', + textPlaceholder: 'Décrivez l\'image que vous voulez générer', + uploadImageError: 'Veuillez télécharger une image', + replaceImage: 'Remplacer l\'image', + uploadFaceImageError: 'Veuillez télécharger une photo de visage', + uploadTemplateError: 'Veuillez télécharger un modèle personnalisé', + textError: 'Veuillez saisir le texte d\'invite', + textVideoPlaceholder: 'Décrivez la vidéo que vous voulez générer', + uploadFirstPlaceholder: 'Cliquez pour télécharger la première image', + uploadLastPlaceholder: 'Cliquez pour télécharger la dernière image', + uploadFirstImageError: 'Veuillez télécharger l\'image du premier plan', + uploadWaitImageError: 'Veuillez attendre la fin du téléchargement', + saveVideo: 'Télécharger la vidéo', + videoLoadingText: 'Génération de la vidéo...', + viewVideo: 'Voir la vidéo', + changeFacePrompt: 'Extraire le visage de la 2e image et remplacer celui de la 1re', + rechartTip1: 'Lors d\'une recharge par portefeuille, vérifiez le réseau du portefeuille.', + rechartTip2: 'La recharge peut être retardée ; attendez 3–5 min avant d’actualiser.', + walletAddr: 'Adresse du portefeuille : ', + fbTitle: 'Attention ! Ce site est réservé aux adultes.', + fbContent: 'En entrant je confirme avoir 18 ans ou plus', + fbCancel: 'Moins de 18 ans', + fbOK: 'J\'ai 18 ans ou plus', + sorry: 'Désolé !', + useLess: 'Vous ne pouvez pas utiliser ce site...', + loginAccount: 'Connexion', + logout: 'Déconnexion', + userEmailPlaceholder: 'Saisissez l\'email ou l’identifiant', + passwordPlaceholder: 'Saisissez le mot de passe', + forgetPassword: 'Mot de passe oublié ?', + register: 'S\'inscrire', + login: 'Connexion', + forgotPassword: 'Mot de passe oublié', + registerAccount: 'Créer un compte', + usernamePlaceholder: 'Saisissez l’identifiant', + codePlaceholder: 'Saisissez le code de vérification', + confirmPasswordPlaceholder: 'Confirmez le mot de passe', + backToLogin: 'Retour à la connexion', + send: 'Envoyer', + emailValidPlaceholder: 'Saisissez un email valide', + confirmPwdValidMsg: 'Les mots de passe ne correspondent pas', + editPassword: 'Modifier le mot de passe', + recharge: 'Recharger', + myAccount: 'Mon compte', + moneyInvite: 'Invitation avec récompense', + rechargeRecord: 'Historique des recharges', + resumeRecord: 'Historique des consommations', + inviteRecord: 'Historique des invitations', + username: 'Identifiant', + userId: 'ID utilisateur', + accountAmount: 'Solde', + editUserInfo: 'Modifier les informations', + contact: 'Nous contacter', + backToUser: 'Retour', + moneyTips: 'Quand vous parrainez un ami, vous gagnez {rate} de chaque recharge qu’il fait.', + inviteCode: 'Code de parrainage', + inviteLink: 'Lien d\'invitation', + saveImage: 'Enregistrer l\'image', + totalAmount: 'Total rechargé', + amount: 'Montant', + sendAmount: 'Montant offert', + rechargeType: 'Méthode de recharge', + rechargeTime: 'Date de recharge', + emptyText: 'Aucune donnée', + product: 'Œuvre', + resumeAmount: 'Montant consommé', + productType: 'Type d\'œuvre', + productTime: 'Date de création', + totalReward: 'Solde de récompenses', + rewardAmount: 'Montant de la récompense', + rewardTime: 'Date de la récompense', + reSend: 'Renvoyer', + registerSuccessfully: 'Inscription réussie', + loginSuccessfully: 'Connexion réussie', + passwordResetSuccessfully: 'Mot de passe réinitialisé', + rechargeSuccessfully: 'Recharge réussie', + avatar: 'Avatar', + input: 'Saisir', + save: 'Enregistrer', + editEmail: 'Modifier l\'email', + editEmailSuccessfully: 'Email mis à jour', + updateAvatarSuccessfully: 'Avatar mis à jour', + balenceLow: 'Solde insuffisant, veuillez recharger', + confirm: 'Confirmer', + createFailed: 'Échec de génération, solde remboursé', + notice: 'Avis', + oldPasswordPlaceholder: 'Saisissez l’ancien mot de passe', + newpasswordPlaceholder: 'Saisissez le nouveau mot de passe', + switchPageTip: 'Une vidéo est en cours de génération ; consultez l’historique des consommations.', + loginless: 'Session expirée ! Veuillez vous reconnecter.', + createVideo: 'Générer une vidéo (coûte {price} de solde)', + ok: 'Confirmer', + rechartNotice: 'Instructions de recharge', + rechargeNotice1: '1. La recharge est créditée tout de suite. Si rien ne change, actualisez la page.', + rechargeNotice2: '2. Les offres limitées sont des promos ; vous pouvez recharger plusieurs fois.', + rechargeNotice3: '3. Le solde rechargé n’a pas de limite de durée.', + rechargeNotice4: 'Vérifiez l’offre avant d’acheter ; pas de remboursement.', + rechargeLeft: 'Solde', + dollor: 'USD', + isDevelop: 'En cours de développement.', + copySuccessfully: 'Copié', + copyLink: 'Copier le lien', + goPay: 'Aller au paiement', + filePreview: 'Aperçu', + doSame: 'Créer un équivalent', + saveQRCode: 'Enregistrer le QR code', + invitationCodePlaceholder: 'Saisissez le code d\'invitation', + testRecharge: 'Recharge test', + orderNo: 'Numéro de commande', + orderNoP: 'Le numéro de commande est obligatoire', + emailNotExists: 'Cet email n’est pas inscrit', + gearNotExists: 'L’offre choisie n’existe pas ; choisissez une autre.', + myProduct: 'Mes œuvres', + permissionError: 'Votre total de recharges est {total}, insuffisant pour la prévisualisation.', + createTagFailed: 'Échec de génération ; actualisez et réessayez.', + loadingText: 'Chargement...', + hasMore: 'Tirez pour charger plus', + noMore: 'Plus rien', + giftAmount: 'Montant crédité', + cardNo: 'Numéro de carte', + cardName: 'Nom sur la carte', + cardNoRequired: 'Saisissez le numéro de carte', + cardNameRequired: 'Saisissez le nom sur la carte', + rechargeFailed: 'Recharge échouée', + vmCardInfo: 'Informations de carte', + cardNumber: 'Numéro de carte', + cardNumberPlaceholder: 'Saisissez le numéro de carte', + cardNumberRequired: 'Saisissez le numéro de carte', + cardNumberInvalid: 'Le numéro doit contenir 13 à 19 chiffres', + cvc: 'CVC', + cvcPlaceholder: 'Saisissez le CVC', + cvcRequired: 'Saisissez le CVC', + cvcInvalid: 'Le CVC doit faire 3 chiffres', + expYear: 'Année d\'expiration', + expYearPlaceholder: 'Saisissez l’année (ex. 2027)', + expYearRequired: 'Saisissez l’année d\'expiration', + expYearInvalid: 'L’année doit faire 4 chiffres', + expMonth: 'Mois d\'expiration', + expMonthPlaceholder: 'Choisissez le mois', + expMonthRequired: 'Choisissez le mois', + email: 'Email', + emailPlaceholder: 'Saisissez l’email', + emailRequired: 'Saisissez l’email', + emailInvalid: 'Format d’email invalide', + emailMaxLength: 'L’email ne doit pas dépasser 30 caractères', + firstName: 'Prénom', + firstNamePlaceholder: 'Saisissez le prénom', + firstNameRequired: 'Saisissez le prénom', + firstNameMaxLength: 'Le prénom ne doit pas dépasser 30 caractères', + lastName: 'Nom de famille', + lastNamePlaceholder: 'Saisissez le nom de famille', + lastNameRequired: 'Saisissez le nom de famille', + lastNameMaxLength: 'Le nom ne doit pas dépasser 30 caractères', + country: 'Pays', + countryPlaceholder: 'Choisissez le pays', + countryRequired: 'Choisissez le pays', + submit: 'Envoyer', + cancel: 'Annuler' +} diff --git a/portal-ui/src/lang/fr_FR/index.js b/portal-ui/src/lang/fr_FR/index.js new file mode 100644 index 0000000..1136137 --- /dev/null +++ b/portal-ui/src/lang/fr_FR/index.js @@ -0,0 +1,7 @@ +import route from './route' +import common from './common.js' + +export default { + route, + common +} diff --git a/portal-ui/src/lang/fr_FR/route.js b/portal-ui/src/lang/fr_FR/route.js new file mode 100644 index 0000000..e7915ac --- /dev/null +++ b/portal-ui/src/lang/fr_FR/route.js @@ -0,0 +1,12 @@ +export default { + index: 'Accueil', + imageToImage: 'Déshabiller en un clic', + imageToImage2: 'Image vers Image 2', + changeFace: 'Changer le visage', + changeFaceVideo: 'Changer le visage en vidéo', + fastImage: 'Générer une image', + fastVideo: 'Générer une vidéo', + recharge: 'Recharge rapide', + help: 'Centre d\'aide', + moneyInvite: 'Invitation avec récompense' +} diff --git a/portal-ui/src/lang/hi_IN/common.js b/portal-ui/src/lang/hi_IN/common.js new file mode 100644 index 0000000..809f8c2 --- /dev/null +++ b/portal-ui/src/lang/hi_IN/common.js @@ -0,0 +1,179 @@ +export default { + image1: 'एक क्लिक में कपड़े उतारें', + image2: 'इमेज टू इमेज 2', + uploadImage: 'छवि अपलोड करें', + uploadImageTip: 'PNG/JPG, अधिकतम 10MB', + uploadPlaceholder: 'अपलोड करने के लिए क्लिक करें', + selectImageSource: 'छवि स्रोत चुनें', + selectTemplate: 'टेम्पलेट चुनें', + reselectTemplate: 'टेम्पलेट दोबारा चुनें', + noTemplates: 'कोई टेम्पलेट नहीं', + tag1: 'टैग प्रकार 1', + tag2: 'टैग प्रकार 2', + tag3: 'टैग प्रकार 3', + generateImage: 'अभी जनरेट करें ({score} बैलेंस खर्च)', + generateImageNow: 'अभी जनरेट करें', + generateTip: 'सबमिट के बाद "मेरी रचनाएं" में देखें', + generateVideo: 'वीडियो जनरेट करें', + imageFace: 'छवि में चेहरा बदलें', + videoFace: 'वीडियो में चेहरा बदलें', + uploadImageFace: 'चेहरे की छवि अपलोड करने के लिए क्लिक करें', + uploadTemplate: 'कस्टम टेम्पलेट अपलोड करने के लिए क्लिक करें', + textPlaceholder: 'वह छवि बताएं जो आप बनाना चाहते हैं', + uploadImageError: 'कृपया एक छवि अपलोड करें', + replaceImage: 'छवि बदलें', + uploadFaceImageError: 'कृपया चेहरे की छवि अपलोड करें', + uploadTemplateError: 'कृपया कस्टम टेम्पलेट अपलोड करें', + textError: 'कृपया प्रॉम्प्ट दर्ज करें', + textVideoPlaceholder: 'वह वीडियो बताएं जो आप बनाना चाहते हैं', + uploadFirstPlaceholder: 'पहला फ्रेम अपलोड करने के लिए क्लिक करें', + uploadLastPlaceholder: 'आखिरी फ्रेम अपलोड करने के लिए क्लिक करें', + uploadFirstImageError: 'कृपया पहले फ्रेम की छवि अपलोड करें', + uploadWaitImageError: 'अपलोड पूरा होने तक प्रतीक्षा करें', + saveVideo: 'वीडियो डाउनलोड करें', + videoLoadingText: 'वीडियो बन रहा है...', + viewVideo: 'वीडियो देखें', + changeFacePrompt: 'दूसरी छवि का चेहरा लेकर पहली छवि के चेहरे से बदलें', + rechartTip1: 'वॉलेट ट्रांसफर से रिचार्ज करते समय वॉलेट का नेटवर्क जांचें।', + rechartTip2: 'रिचार्ज में देरी हो सकती है; 3-5 मिनट बाद रिफ्रेश करें।', + walletAddr: 'वॉलेट पता:', + fbTitle: 'चेतावनी! यह साइट केवल वयस्कों के लिए है।', + fbContent: 'प्रवेश करके मैं पुष्टि करता/करती हूं कि मैं 18 वर्ष या उससे अधिक का हूं', + fbCancel: '18 से कम', + fbOK: 'मैं 18+ हूं', + sorry: 'क्षमा करें!', + useLess: 'आप इस साइट का उपयोग नहीं कर सकते...', + loginAccount: 'लॉगिन', + logout: 'लॉगआउट', + userEmailPlaceholder: 'ईमेल या यूजरनेम दर्ज करें', + passwordPlaceholder: 'पासवर्ड दर्ज करें', + forgetPassword: 'पासवर्ड भूल गए?', + register: 'रजिस्टर', + login: 'लॉगिन', + forgotPassword: 'पासवर्ड भूल गए', + registerAccount: 'अकाउंट बनाएं', + usernamePlaceholder: 'यूजरनेम दर्ज करें', + codePlaceholder: 'वेरिफिकेशन कोड दर्ज करें', + confirmPasswordPlaceholder: 'पासवर्ड की पुष्टि करें', + backToLogin: 'लॉगिन पर वापस', + send: 'भेजें', + emailValidPlaceholder: 'वैध ईमेल दर्ज करें', + confirmPwdValidMsg: 'पासवर्ड मेल नहीं खाते', + editPassword: 'पासवर्ड बदलें', + recharge: 'रिचार्ज', + myAccount: 'मेरा अकाउंट', + moneyInvite: 'इनाम निमंत्रण', + rechargeRecord: 'रिचार्ज रिकॉर्ड', + resumeRecord: 'खर्च रिकॉर्ड', + inviteRecord: 'निमंत्रण रिकॉर्ड', + username: 'यूजरनेम', + userId: 'यूजर आईडी', + accountAmount: 'बैलेंस', + editUserInfo: 'जानकारी संपादित करें', + contact: 'संपर्क करें', + backToUser: 'वापस', + moneyTips: 'जब आप दोस्त को रजिस्टर करवाते हैं, उसके रिचार्ज का {rate} हर बार मिलता है।', + inviteCode: 'इनवाइट कोड', + inviteLink: 'इनवाइट लिंक', + saveImage: 'छवि सहेजें', + totalAmount: 'कुल रिचार्ज', + amount: 'राशि', + sendAmount: 'उपहार राशि', + rechargeType: 'रिचार्ज तरीका', + rechargeTime: 'रिचार्ज समय', + emptyText: 'कोई डेटा नहीं', + product: 'रचना', + resumeAmount: 'खर्च राशि', + productType: 'रचना प्रकार', + productTime: 'बनाने का समय', + totalReward: 'कुल इनाम बैलेंस', + rewardAmount: 'इनाम राशि', + rewardTime: 'इनाम समय', + reSend: 'दोबारा भेजें', + registerSuccessfully: 'रजिस्ट्रेशन सफल', + loginSuccessfully: 'लॉगिन सफल', + passwordResetSuccessfully: 'पासवर्ड रीसेट सफल', + rechargeSuccessfully: 'रिचार्ज सफल', + avatar: 'अवतार', + input: 'दर्ज करें', + save: 'सहेजें', + editEmail: 'ईमेल बदलें', + editEmailSuccessfully: 'ईमेल अपडेट हो गया', + updateAvatarSuccessfully: 'अवतार अपडेट हो गया', + balenceLow: 'बैलेंस कम है, रिचार्ज करें', + confirm: 'पुष्टि करें', + createFailed: 'जनरेशन विफल, बैलेंस वापस', + notice: 'सूचना', + oldPasswordPlaceholder: 'पुराना पासवर्ड दर्ज करें', + newpasswordPlaceholder: 'नया पासवर्ड दर्ज करें', + switchPageTip: 'वीडियो बन रहा है; निकलकर खर्च रिकॉर्ड देखें।', + loginless: 'लॉगिन समाप्त! दोबारा लॉगिन करें।', + createVideo: 'वीडियो जनरेट करें ({price} बैलेंस खर्च)', + ok: 'पुष्टि करें', + rechartNotice: 'रिचार्ज निर्देश', + rechargeNotice1: '1. रिचार्ज तुरंत जमा होता है। बदलाव न दिखे तो रिफ्रेश करें।', + rechargeNotice2: '2. लिमिटेड पैक प्रचार हैं; आप कई बार रिचार्ज कर सकते हैं।', + rechargeNotice3: '3. रिचार्ज की गई राशि की कोई समय सीमा नहीं।', + rechargeNotice4: 'खरीदने से पहले पैक देखें; वापसी नहीं होती।', + rechargeLeft: 'बैलेंस', + dollor: 'USD', + isDevelop: 'विकास में है।', + copySuccessfully: 'कॉपी हुआ', + copyLink: 'लिंक कॉपी करें', + goPay: 'भुगतान पर जाएं', + filePreview: 'पूर्वावलोकन', + doSame: 'इसी तरह बनाएं', + saveQRCode: 'QR कोड सहेजें', + invitationCodePlaceholder: 'इनवाइट कोड दर्ज करें', + testRecharge: 'टेस्ट रिचार्ज', + orderNo: 'ऑर्डर नंबर', + orderNoP: 'ऑर्डर नंबर खाली नहीं हो सकता', + emailNotExists: 'यह ईमेल रजिस्टर नहीं है', + gearNotExists: 'चुना गया रिचार्ज प्लान मौजूद नहीं; दूसरा चुनें।', + myProduct: 'मेरी रचनाएं', + permissionError: 'आपका कुल रिचार्ज {total} है, प्रीव्यू के लिए पर्याप्त नहीं।', + createTagFailed: 'जनरेशन विफल; रिफ्रेश करके दोबारा कोशिश करें।', + loadingText: 'लोड हो रहा है...', + hasMore: 'ऊपर खींचें और अधिक लोड करें', + noMore: 'और नहीं', + giftAmount: 'जमा राशि', + cardNo: 'कार्ड नंबर', + cardName: 'कार्डधारक का नाम', + cardNoRequired: 'कार्ड नंबर दर्ज करें', + cardNameRequired: 'कार्डधारक का नाम दर्ज करें', + rechargeFailed: 'रिचार्ज विफल', + vmCardInfo: 'कार्ड जानकारी', + cardNumber: 'कार्ड नंबर', + cardNumberPlaceholder: 'कार्ड नंबर दर्ज करें', + cardNumberRequired: 'कार्ड नंबर दर्ज करें', + cardNumberInvalid: 'कार्ड नंबर 13-19 अंकों का होना चाहिए', + cvc: 'CVC', + cvcPlaceholder: 'CVC दर्ज करें', + cvcRequired: 'CVC दर्ज करें', + cvcInvalid: 'CVC 3 अंकों का होना चाहिए', + expYear: 'समाप्ति वर्ष', + expYearPlaceholder: 'वर्ष दर्ज करें (जैसे 2027)', + expYearRequired: 'समाप्ति वर्ष दर्ज करें', + expYearInvalid: 'वर्ष 4 अंकों का होना चाहिए', + expMonth: 'समाप्ति माह', + expMonthPlaceholder: 'माह चुनें', + expMonthRequired: 'माह चुनें', + email: 'ईमेल', + emailPlaceholder: 'ईमेल दर्ज करें', + emailRequired: 'ईमेल दर्ज करें', + emailInvalid: 'ईमेल फॉर्मेट गलत', + emailMaxLength: 'ईमेल 30 अक्षर से अधिक नहीं', + firstName: 'पहला नाम', + firstNamePlaceholder: 'पहला नाम दर्ज करें', + firstNameRequired: 'पहला नाम दर्ज करें', + firstNameMaxLength: 'पहला नाम 30 अक्षर से अधिक नहीं', + lastName: 'उपनाम', + lastNamePlaceholder: 'उपनाम दर्ज करें', + lastNameRequired: 'उपनाम दर्ज करें', + lastNameMaxLength: 'उपनाम 30 अक्षर से अधिक नहीं', + country: 'देश', + countryPlaceholder: 'देश चुनें', + countryRequired: 'देश चुनें', + submit: 'भेजें', + cancel: 'रद्द करें' +} diff --git a/portal-ui/src/lang/hi_IN/index.js b/portal-ui/src/lang/hi_IN/index.js new file mode 100644 index 0000000..1136137 --- /dev/null +++ b/portal-ui/src/lang/hi_IN/index.js @@ -0,0 +1,7 @@ +import route from './route' +import common from './common.js' + +export default { + route, + common +} diff --git a/portal-ui/src/lang/hi_IN/route.js b/portal-ui/src/lang/hi_IN/route.js new file mode 100644 index 0000000..565414d --- /dev/null +++ b/portal-ui/src/lang/hi_IN/route.js @@ -0,0 +1,12 @@ +export default { + index: 'होम', + imageToImage: 'एक क्लिक में कपड़े उतारें', + imageToImage2: 'इमेज टू इमेज 2', + changeFace: 'चेहरा बदलें', + changeFaceVideo: 'वीडियो में चेहरा बदलें', + fastImage: 'छवि जनरेट करें', + fastVideo: 'वीडियो जनरेट करें', + recharge: 'त्वरित रिचार्ज', + help: 'सहायता केंद्र', + moneyInvite: 'इनाम निमंत्रण' +} diff --git a/portal-ui/src/lang/pt_BR/common.js b/portal-ui/src/lang/pt_BR/common.js new file mode 100644 index 0000000..52b8997 --- /dev/null +++ b/portal-ui/src/lang/pt_BR/common.js @@ -0,0 +1,179 @@ +export default { + image1: 'Despir em um clique', + image2: 'Imagem para Imagem 2', + uploadImage: 'Enviar imagem', + uploadImageTip: 'PNG/JPG, máx. 10MB', + uploadPlaceholder: 'Clique para enviar imagem', + selectImageSource: 'Selecionar origem da imagem', + selectTemplate: 'Selecionar modelo', + reselectTemplate: 'Selecionar outro modelo', + noTemplates: 'Sem modelos', + tag1: 'Tipo de tag 1', + tag2: 'Tipo de tag 2', + tag3: 'Tipo de tag 3', + generateImage: 'Gerar agora (usa {score} de saldo)', + generateImageNow: 'Gerar agora', + generateTip: 'Após enviar, veja em "Minhas obras"', + generateVideo: 'Gerar vídeo', + imageFace: 'Trocar rosto em imagem', + videoFace: 'Trocar rosto em vídeo', + uploadImageFace: 'Clique para enviar imagem do rosto', + uploadTemplate: 'Clique para enviar modelo personalizado', + textPlaceholder: 'Descreva a imagem que deseja gerar', + uploadImageError: 'Envie uma imagem', + replaceImage: 'Substituir imagem', + uploadFaceImageError: 'Envie uma imagem do rosto', + uploadTemplateError: 'Envie um modelo personalizado', + textError: 'Digite o texto de indicação', + textVideoPlaceholder: 'Descreva o vídeo que deseja gerar', + uploadFirstPlaceholder: 'Clique para enviar primeiro frame', + uploadLastPlaceholder: 'Clique para enviar último frame', + uploadFirstImageError: 'Envie a imagem do primeiro frame', + uploadWaitImageError: 'Aguarde o envio terminar', + saveVideo: 'Baixar vídeo', + videoLoadingText: 'Gerando vídeo...', + viewVideo: 'Ver vídeo', + changeFacePrompt: 'Extrair o rosto da segunda imagem e substituir na primeira', + rechartTip1: 'Ao recarregar por carteira, confirme a rede do carteira.', + rechartTip2: 'A recarga pode atrasar; aguarde 3-5 minutos antes de atualizar.', + walletAddr: 'Endereço da carteira:', + fbTitle: 'Aviso: este site é apenas para maiores de 18 anos.', + fbContent: 'Ao entrar confirmo que tenho 18 anos ou mais', + fbCancel: 'Menor de 18', + fbOK: 'Tenho 18 ou mais', + sorry: 'Desculpe!', + useLess: 'Você não pode usar este site...', + loginAccount: 'Entrar', + logout: 'Sair', + userEmailPlaceholder: 'Digite e-mail ou usuário', + passwordPlaceholder: 'Digite a senha', + forgetPassword: 'Esqueceu a senha?', + register: 'Cadastrar', + login: 'Entrar', + forgotPassword: 'Esqueci a senha', + registerAccount: 'Criar conta', + usernamePlaceholder: 'Digite o usuário', + codePlaceholder: 'Digite o código de verificação', + confirmPasswordPlaceholder: 'Confirme a senha', + backToLogin: 'Voltar ao login', + send: 'Enviar', + emailValidPlaceholder: 'Digite um e-mail válido', + confirmPwdValidMsg: 'As senhas não coincidem', + editPassword: 'Alterar senha', + recharge: 'Recarregar', + myAccount: 'Minha conta', + moneyInvite: 'Convite com recompensa', + rechargeRecord: 'Histórico de recargas', + resumeRecord: 'Histórico de consumo', + inviteRecord: 'Histórico de convites', + username: 'Usuário', + userId: 'ID do usuário', + accountAmount: 'Saldo', + editUserInfo: 'Editar dados', + contact: 'Contato', + backToUser: 'Voltar', + moneyTips: 'Ao convidar um amigo, você ganha {rate} do valor que ele recarregar.', + inviteCode: 'Código de convite', + inviteLink: 'Link de convite', + saveImage: 'Salvar imagem', + totalAmount: 'Total recarregado', + amount: 'Valor', + sendAmount: 'Valor de brinde', + rechargeType: 'Forma de recarga', + rechargeTime: 'Data da recarga', + emptyText: 'Sem dados', + product: 'Obra', + resumeAmount: 'Valor consumido', + productType: 'Tipo de obra', + productTime: 'Data de criação', + totalReward: 'Saldo de recompensas', + rewardAmount: 'Valor da recompensa', + rewardTime: 'Data da recompensa', + reSend: 'Reenviar', + registerSuccessfully: 'Cadastro concluído', + loginSuccessfully: 'Login realizado', + passwordResetSuccessfully: 'Senha redefinida', + rechargeSuccessfully: 'Recarga concluída', + avatar: 'Avatar', + input: 'Digite', + save: 'Salvar', + editEmail: 'Alterar e-mail', + editEmailSuccessfully: 'E-mail atualizado', + updateAvatarSuccessfully: 'Avatar atualizado', + balenceLow: 'Saldo insuficiente, recarregue', + confirm: 'Confirmar', + createFailed: 'Falha na geração, saldo devolvido', + notice: 'Aviso', + oldPasswordPlaceholder: 'Digite a senha antiga', + newpasswordPlaceholder: 'Digite a nova senha', + switchPageTip: 'O vídeo está sendo gerado; saia e veja o histórico de consumo.', + loginless: 'Sessão expirada; faça login novamente.', + createVideo: 'Gerar vídeo (usa {price} de saldo)', + ok: 'Confirmar', + rechartNotice: 'Instruções de recarga', + rechargeNotice1: '1. A recarga é creditada na hora. Se não mudar, atualize a página.', + rechargeNotice2: '2. Pacotes por tempo limitado são promoções; você pode recarregar várias vezes.', + rechargeNotice3: '3. O saldo recarregado não tem prazo.', + rechargeNotice4: 'Confira o pacote antes de comprar; não há reembolso.', + rechargeLeft: 'Saldo', + dollor: 'USD', + isDevelop: 'Em desenvolvimento.', + copySuccessfully: 'Copiado', + copyLink: 'Copiar link', + goPay: 'Ir para pagamento', + filePreview: 'Visualizar', + doSame: 'Fazer igual', + saveQRCode: 'Salvar código QR', + invitationCodePlaceholder: 'Digite o código de convite', + testRecharge: 'Recarga de teste', + orderNo: 'Número do pedido', + orderNoP: 'O número do pedido é obrigatório', + emailNotExists: 'O e-mail não está cadastrado', + gearNotExists: 'O plano de recarga não existe; escolha outro.', + myProduct: 'Minhas obras', + permissionError: 'Sua recarga acumulada é {total}, não atende para visualizar.', + createTagFailed: 'Falha na geração; atualize e tente de novo.', + loadingText: 'Carregando...', + hasMore: 'Deslize para mais', + noMore: 'Não há mais', + giftAmount: 'Valor creditado', + cardNo: 'Número do cartão', + cardName: 'Nome no cartão', + cardNoRequired: 'Digite o número do cartão', + cardNameRequired: 'Digite o nome no cartão', + rechargeFailed: 'Recarga falhou', + vmCardInfo: 'Dados do cartão', + cardNumber: 'Número do cartão', + cardNumberPlaceholder: 'Digite o número do cartão', + cardNumberRequired: 'Digite o número do cartão', + cardNumberInvalid: 'O número deve ter 13-19 dígitos', + cvc: 'CVC', + cvcPlaceholder: 'Digite o CVC', + cvcRequired: 'Digite o CVC', + cvcInvalid: 'CVC deve ter 3 dígitos', + expYear: 'Ano de validade', + expYearPlaceholder: 'Digite o ano (ex.: 2027)', + expYearRequired: 'Digite o ano de validade', + expYearInvalid: 'O ano deve ter 4 dígitos', + expMonth: 'Mês de validade', + expMonthPlaceholder: 'Selecione o mês', + expMonthRequired: 'Selecione o mês', + email: 'E-mail', + emailPlaceholder: 'Digite o e-mail', + emailRequired: 'Digite o e-mail', + emailInvalid: 'Formato de e-mail inválido', + emailMaxLength: 'Máx. 30 caracteres', + firstName: 'Nome', + firstNamePlaceholder: 'Digite o nome', + firstNameRequired: 'Digite o nome', + firstNameMaxLength: 'Máx. 30 caracteres', + lastName: 'Sobrenome', + lastNamePlaceholder: 'Digite o sobrenome', + lastNameRequired: 'Digite o sobrenome', + lastNameMaxLength: 'Máx. 30 caracteres', + country: 'País', + countryPlaceholder: 'Selecione o país', + countryRequired: 'Selecione o país', + submit: 'Enviar', + cancel: 'Cancelar' +} diff --git a/portal-ui/src/lang/pt_BR/index.js b/portal-ui/src/lang/pt_BR/index.js new file mode 100644 index 0000000..1136137 --- /dev/null +++ b/portal-ui/src/lang/pt_BR/index.js @@ -0,0 +1,7 @@ +import route from './route' +import common from './common.js' + +export default { + route, + common +} diff --git a/portal-ui/src/lang/pt_BR/route.js b/portal-ui/src/lang/pt_BR/route.js new file mode 100644 index 0000000..0b66d8e --- /dev/null +++ b/portal-ui/src/lang/pt_BR/route.js @@ -0,0 +1,12 @@ +export default { + index: 'Início', + imageToImage: 'Despir em um clique', + imageToImage2: 'Imagem para Imagem 2', + changeFace: 'Trocar rosto', + changeFaceVideo: 'Trocar rosto em vídeo', + fastImage: 'Gerar imagem', + fastVideo: 'Gerar vídeo', + recharge: 'Recarga rápida', + help: 'Central de ajuda', + moneyInvite: 'Convite com recompensa' +} diff --git a/portal-ui/src/lang/ru_RU/common.js b/portal-ui/src/lang/ru_RU/common.js new file mode 100644 index 0000000..71443a6 --- /dev/null +++ b/portal-ui/src/lang/ru_RU/common.js @@ -0,0 +1,179 @@ +export default { + image1: 'Раздеть в один клик', + image2: 'Изображение в изображение 2', + uploadImage: 'Загрузить изображение', + uploadImageTip: 'PNG/JPG, макс. 10 МБ', + uploadPlaceholder: 'Нажмите, чтобы загрузить', + selectImageSource: 'Выберите источник изображения', + selectTemplate: 'Выберите шаблон', + reselectTemplate: 'Выбрать шаблон заново', + noTemplates: 'Нет шаблонов', + tag1: 'Тип метки 1', + tag2: 'Тип метки 2', + tag3: 'Тип метки 3', + generateImage: 'Создать сейчас (списание {score} с баланса)', + generateImageNow: 'Создать сейчас', + generateTip: 'После отправки смотрите в «Мои работы»', + generateVideo: 'Создать видео', + imageFace: 'Заменить лицо на изображении', + videoFace: 'Заменить лицо в видео', + uploadImageFace: 'Нажмите, чтобы загрузить фото лица', + uploadTemplate: 'Нажмите, чтобы загрузить свой шаблон', + textPlaceholder: 'Опишите изображение, которое хотите получить', + uploadImageError: 'Загрузите изображение', + replaceImage: 'Заменить изображение', + uploadFaceImageError: 'Загрузите фото лица', + uploadTemplateError: 'Загрузите свой шаблон', + textError: 'Введите текст подсказки', + textVideoPlaceholder: 'Опишите видео, которое хотите получить', + uploadFirstPlaceholder: 'Нажмите, чтобы загрузить первый кадр', + uploadLastPlaceholder: 'Нажмите, чтобы загрузить последний кадр', + uploadFirstImageError: 'Загрузите изображение первого кадра', + uploadWaitImageError: 'Дождитесь окончания загрузки', + saveVideo: 'Скачать видео', + videoLoadingText: 'Создание видео...', + viewVideo: 'Смотреть видео', + changeFacePrompt: 'Взять лицо со второй картинки и заменить им лицо на первой', + rechartTip1: 'При пополнении через кошелёк проверьте сеть кошелька.', + rechartTip2: 'Зачисление может задерживаться; подождите 3–5 минут и обновите.', + walletAddr: 'Адрес кошелька:', + fbTitle: 'Внимание! Сайт только для взрослых!', + fbContent: 'Входя, я подтверждаю, что мне 18 лет или больше', + fbCancel: 'Мне нет 18', + fbOK: 'Мне есть 18', + sorry: 'Извините!', + useLess: 'Вам запрещено пользоваться этим сайтом...', + loginAccount: 'Вход', + logout: 'Выйти', + userEmailPlaceholder: 'Введите email или логин', + passwordPlaceholder: 'Введите пароль', + forgetPassword: 'Забыли пароль?', + register: 'Регистрация', + login: 'Войти', + forgotPassword: 'Забыл пароль', + registerAccount: 'Создать аккаунт', + usernamePlaceholder: 'Введите имя пользователя', + codePlaceholder: 'Введите код подтверждения', + confirmPasswordPlaceholder: 'Подтвердите пароль', + backToLogin: 'Вернуться к входу', + send: 'Отправить', + emailValidPlaceholder: 'Введите корректный email', + confirmPwdValidMsg: 'Пароли не совпадают', + editPassword: 'Изменить пароль', + recharge: 'Пополнить', + myAccount: 'Мой аккаунт', + moneyInvite: 'Приглашение с наградой', + rechargeRecord: 'История пополнений', + resumeRecord: 'История списаний', + inviteRecord: 'История приглашений', + username: 'Имя пользователя', + userId: 'ID пользователя', + accountAmount: 'Баланс', + editUserInfo: 'Редактировать данные', + contact: 'Связаться с нами', + backToUser: 'Назад', + moneyTips: 'При регистрации по вашей ссылке вы получаете {rate} от каждой его пополнения.', + inviteCode: 'Код приглашения', + inviteLink: 'Ссылка приглашения', + saveImage: 'Сохранить изображение', + totalAmount: 'Всего пополнено', + amount: 'Сумма', + sendAmount: 'Сумма бонуса', + rechargeType: 'Способ пополнения', + rechargeTime: 'Время пополнения', + emptyText: 'Нет данных', + product: 'Работа', + resumeAmount: 'Списано', + productType: 'Тип работы', + productTime: 'Дата создания', + totalReward: 'Баланс наград', + rewardAmount: 'Сумма награды', + rewardTime: 'Время награды', + reSend: 'Отправить снова', + registerSuccessfully: 'Регистрация выполнена', + loginSuccessfully: 'Вход выполнен', + passwordResetSuccessfully: 'Пароль сброшен', + rechargeSuccessfully: 'Пополнение выполнено', + avatar: 'Аватар', + input: 'Введите', + save: 'Сохранить', + editEmail: 'Изменить email', + editEmailSuccessfully: 'Email обновлён', + updateAvatarSuccessfully: 'Аватар обновлён', + balenceLow: 'Недостаточно средств, пополните баланс', + confirm: 'Подтвердить', + createFailed: 'Ошибка создания, средства возвращены', + notice: 'Уведомление', + oldPasswordPlaceholder: 'Введите старый пароль', + newpasswordPlaceholder: 'Введите новый пароль', + switchPageTip: 'Видео создаётся; выйдите и проверьте историю списаний.', + loginless: 'Сессия истекла. Войдите снова.', + createVideo: 'Создать видео (списание {price} с баланса)', + ok: 'Подтвердить', + rechartNotice: 'Правила пополнения', + rechargeNotice1: '1. Средства зачисляются сразу. Если не изменилось — обновите страницу.', + rechargeNotice2: '2. Акционные пакеты проводятся периодически; можно пополнять несколько раз.', + rechargeNotice3: '3. Пополненный баланс не имеет срока действия.', + rechargeNotice4: 'Перед покупкой ознакомьтесь с пакетом; возврат не предусмотрен.', + rechargeLeft: 'Баланс', + dollor: 'USD', + isDevelop: 'В разработке.', + copySuccessfully: 'Скопировано', + copyLink: 'Копировать ссылку', + goPay: 'Перейти к оплате', + filePreview: 'Предпросмотр', + doSame: 'Сделать похожее', + saveQRCode: 'Сохранить QR-код', + invitationCodePlaceholder: 'Введите код приглашения', + testRecharge: 'Тестовое пополнение', + orderNo: 'Номер заказа', + orderNoP: 'Номер заказа обязателен', + emailNotExists: 'Этот email не зарегистрирован', + gearNotExists: 'Выбранный тариф отсутствует; выберите другой.', + myProduct: 'Мои работы', + permissionError: 'Ваше суммарное пополнение {total}, недостаточно для просмотра.', + createTagFailed: 'Ошибка создания; обновите страницу и повторите.', + loadingText: 'Загрузка...', + hasMore: 'Потяните вверх для подгрузки', + noMore: 'Больше нет', + giftAmount: 'Зачисленная сумма', + cardNo: 'Номер карты', + cardName: 'Имя владельца', + cardNoRequired: 'Введите номер карты', + cardNameRequired: 'Введите имя владельца', + rechargeFailed: 'Ошибка пополнения', + vmCardInfo: 'Данные карты', + cardNumber: 'Номер карты', + cardNumberPlaceholder: 'Введите номер карты', + cardNumberRequired: 'Введите номер карты', + cardNumberInvalid: 'Номер карты должен быть из 13–19 цифр', + cvc: 'CVC', + cvcPlaceholder: 'Введите CVC', + cvcRequired: 'Введите CVC', + cvcInvalid: 'CVC должен быть из 3 цифр', + expYear: 'Год срока действия', + expYearPlaceholder: 'Введите год (например 2027)', + expYearRequired: 'Введите год', + expYearInvalid: 'Год должен быть из 4 цифр', + expMonth: 'Месяц срока действия', + expMonthPlaceholder: 'Выберите месяц', + expMonthRequired: 'Выберите месяц', + email: 'Email', + emailPlaceholder: 'Введите email', + emailRequired: 'Введите email', + emailInvalid: 'Некорректный email', + emailMaxLength: 'Email не более 30 символов', + firstName: 'Имя', + firstNamePlaceholder: 'Введите имя', + firstNameRequired: 'Введите имя', + firstNameMaxLength: 'Имя не более 30 символов', + lastName: 'Фамилия', + lastNamePlaceholder: 'Введите фамилию', + lastNameRequired: 'Введите фамилию', + lastNameMaxLength: 'Фамилия не более 30 символов', + country: 'Страна', + countryPlaceholder: 'Выберите страну', + countryRequired: 'Выберите страну', + submit: 'Отправить', + cancel: 'Отмена' +} diff --git a/portal-ui/src/lang/ru_RU/index.js b/portal-ui/src/lang/ru_RU/index.js new file mode 100644 index 0000000..1136137 --- /dev/null +++ b/portal-ui/src/lang/ru_RU/index.js @@ -0,0 +1,7 @@ +import route from './route' +import common from './common.js' + +export default { + route, + common +} diff --git a/portal-ui/src/lang/ru_RU/route.js b/portal-ui/src/lang/ru_RU/route.js new file mode 100644 index 0000000..4bd996f --- /dev/null +++ b/portal-ui/src/lang/ru_RU/route.js @@ -0,0 +1,12 @@ +export default { + index: 'Главная', + imageToImage: 'Раздеть в один клик', + imageToImage2: 'Изображение в изображение 2', + changeFace: 'Заменить лицо', + changeFaceVideo: 'Заменить лицо в видео', + fastImage: 'Создать изображение', + fastVideo: 'Создать видео', + recharge: 'Быстрая пополнение', + help: 'Центр помощи', + moneyInvite: 'Приглашение с наградой' +}