Ver código fonte

feat: 第三版翻译

lilu 6 meses atrás
pai
commit
051a6c3c8b

+ 2 - 2
lib/app/controllers/core_controller.dart

@@ -264,7 +264,7 @@ class CoreController extends GetxService {
     state = ConnectionState.disconnected;
     timer = "00:00:00";
     HapticFeedbackManager.connectionDisconnected();
-    ErrorDialog.show(message: 'VPN连接错误');
+    ErrorDialog.show(message: Strings.vpnConnectionError.tr);
   }
 
   void _onVpnServiceDisconnected() {
@@ -274,7 +274,7 @@ class CoreController extends GetxService {
     timer = "00:00:00";
     HapticFeedbackManager.connectionDisconnected();
     // 可以显示错误提示
-    ErrorDialog.show(message: 'VPN服务异常断开连接');
+    ErrorDialog.show(message: Strings.vpnServiceDisconnected.tr);
   }
 
   void _onVpnPermissionDenied() {

+ 26 - 31
lib/app/dialog/all_dialog.dart

@@ -1,6 +1,7 @@
 import 'package:flutter/material.dart';
 import 'package:get/get.dart';
 import 'package:nomo/config/theme/theme_extensions/theme_extension.dart';
+import 'package:nomo/config/translations/strings_enum.dart';
 import '../constants/iconfont/iconfont.dart';
 import 'custom_dialog.dart';
 
@@ -9,10 +10,9 @@ class AllDialog {
   /// 显示Premium激活成功弹窗
   static void showPremiumActivated() {
     CustomDialog.showSuccess(
-      title: 'Premium Activated Successfully !',
-      message:
-          'You\'ve been upgraded to Premium. Enjoy all advanced features and an enhanced browsing experience.',
-      buttonText: 'Got it',
+      title: Strings.premiumActivated.tr,
+      message: Strings.premiumActivatedMessage.tr,
+      buttonText: Strings.gotIt.tr,
       icon: Icons.workspace_premium,
       iconColor: const Color(0xFFFF9500),
       onPressed: () {
@@ -26,10 +26,9 @@ class AllDialog {
   /// 显示邮件发送成功弹窗
   static void showEmailSent() {
     CustomDialog.showInfo(
-      title: 'Email Sent Successfully',
-      message:
-          'Your Pre Code has been sent to your email.\nPlease check your inbox (and spam folder).',
-      buttonText: 'OK',
+      title: Strings.emailSent.tr,
+      message: Strings.emailSentMessage.tr,
+      buttonText: Strings.ok.tr,
       icon: Icons.mark_email_read,
       iconColor: Colors.white,
       onPressed: () {
@@ -43,11 +42,10 @@ class AllDialog {
   /// 显示网络连接错误弹窗
   static void showNetworkError() {
     CustomDialog.showError(
-      title: 'No Internet Connection',
-      message:
-          'It looks like you\'re offline. Please check your internet connection and try again.',
-      buttonText: 'Retry',
-      cancelText: 'Cancel',
+      title: Strings.noInternetConnection.tr,
+      message: Strings.noInternetMessage.tr,
+      buttonText: Strings.retry.tr,
+      cancelText: Strings.cancel.tr,
       icon: Icons.wifi_off,
       iconColor: const Color.fromARGB(255, 231, 152, 5),
       confirmButtonColor: Get.reactiveTheme.primaryColor,
@@ -68,11 +66,10 @@ class AllDialog {
   /// 显示退出登录确认弹窗
   static void showLogoutConfirm() {
     CustomDialog.showError(
-      title: 'Log Out?',
-      message:
-          'Are you sure you want to log out? You\'ll need to sign in again to access your Premium features.',
-      buttonText: 'Log Out',
-      cancelText: 'Cancel',
+      title: Strings.logOut.tr,
+      message: Strings.logOutConfirmMessage.tr,
+      buttonText: Strings.logOut.tr,
+      cancelText: Strings.cancel.tr,
       icon: Icons.info_outline,
       iconColor: const Color(0xFFFF3B30),
       confirmButtonColor: const Color(0xFFFF3B30),
@@ -93,10 +90,9 @@ class AllDialog {
   /// 显示反馈弹窗
   static void showFeedback() {
     CustomDialog.showInfo(
-      title: 'Thank you for your feedback!',
-      message:
-          'We’re sorry you’re not enjoying your experience. We’ll do our best to improve it soon.',
-      buttonText: 'Done',
+      title: Strings.thankYouFeedback.tr,
+      message: Strings.feedbackMessage.tr,
+      buttonText: Strings.done.tr,
       icon: Icons.favorite_border,
       iconColor: Get.theme.textTheme.bodyLarge!.color,
       onPressed: () {
@@ -112,10 +108,9 @@ class AllDialog {
     CustomDialog.showInfo(
       icon: IconFont.icon14,
       iconColor: Get.theme.textTheme.bodyLarge!.color,
-      title: 'What is UID?',
-      message:
-          'Device ID (UID) This is your device\'s unique identifier. Providing this ID helps our support team verify your device and resolve your issues more quickly.',
-      buttonText: 'OK',
+      title: Strings.whatIsUid.tr,
+      message: Strings.uidMessage.tr,
+      buttonText: Strings.ok.tr,
       onPressed: () {
         // 处理邮件发送成功后的逻辑
         print('UID info dialog closed');
@@ -134,7 +129,7 @@ class AllDialog {
     CustomDialog.showSuccess(
       title: title,
       message: message,
-      buttonText: buttonText ?? 'Got it',
+      buttonText: buttonText ?? Strings.gotIt.tr,
       onPressed: onPressed,
     );
   }
@@ -149,7 +144,7 @@ class AllDialog {
     CustomDialog.showInfo(
       title: title,
       message: message,
-      buttonText: buttonText ?? 'OK',
+      buttonText: buttonText ?? Strings.ok.tr,
       onPressed: onPressed,
     );
   }
@@ -167,7 +162,7 @@ class AllDialog {
     CustomDialog.showError(
       title: title,
       message: message,
-      buttonText: buttonText ?? 'Retry',
+      buttonText: buttonText ?? Strings.retry.tr,
       cancelText: cancelText,
       onPressed: onPressed,
       onCancel: onCancel,
@@ -188,8 +183,8 @@ class AllDialog {
     CustomDialog.showConfirm(
       title: title,
       message: message,
-      confirmText: confirmText ?? 'Confirm',
-      cancelText: cancelText ?? 'Cancel',
+      confirmText: confirmText ?? Strings.confirm.tr,
+      cancelText: cancelText ?? Strings.cancel.tr,
       onConfirm: onConfirm,
       onCancel: onCancel,
       confirmButtonColor: confirmButtonColor,

+ 26 - 14
lib/app/modules/deviceauth/controllers/deviceauth_controller.dart

@@ -3,6 +3,8 @@ import 'package:flutter/material.dart';
 import 'package:get/get.dart';
 import 'package:nomo/app/components/ix_snackbar.dart';
 
+import '../../../../config/translations/strings_enum.dart';
+
 class DeviceauthController extends GetxController {
   // 用户类型:true为VIP用户,false为免费用户
   final isPremium = true.obs;
@@ -42,7 +44,7 @@ class DeviceauthController extends GetxController {
     currentDevices.add(
       DeviceInfo(
         id: '1',
-        name: 'Current Device',
+        name: Strings.currentDevice.tr,
         type: DeviceTypeEnum.ios,
         date: '2022/01/25 13:45',
         isCurrent: true,
@@ -82,8 +84,9 @@ class DeviceauthController extends GetxController {
       // 检查设备数量限制
       if (currentDevices.length >= maxDevices) {
         IXSnackBar.showIXErrorSnackBar(
-          title: 'Device Limit Reached',
-          message: 'You can only authorize up to $maxDevices devices',
+          title: Strings.deviceLimitReached.tr,
+          message:
+              '${Strings.deviceLimitMessage.tr} $maxDevices ${Strings.devices.tr}',
         );
         inputCode.value = '';
         isCodeComplete.value = false;
@@ -103,7 +106,7 @@ class DeviceauthController extends GetxController {
         currentDevices.add(
           DeviceInfo(
             id: newId,
-            name: 'Android devices',
+            name: Strings.androidDevices.tr,
             type: DeviceTypeEnum.android,
             uid: 'UID 123-456-789-10$newId',
             date: _getCurrentDateTime(),
@@ -113,8 +116,8 @@ class DeviceauthController extends GetxController {
 
         // 显示成功提示
         IXSnackBar.showIXSnackBar(
-          title: 'Device Authorized',
-          message: 'New device has been successfully authorized',
+          title: Strings.deviceAuthorized.tr,
+          message: Strings.deviceAuthorizedMessage.tr,
         );
 
         // 清空输入码
@@ -142,24 +145,30 @@ class DeviceauthController extends GetxController {
 
     Get.dialog(
       AlertDialog(
-        title: const Text('Relieve Device'),
+        title: Text(Strings.relieveDevice.tr),
         content: Text(
-          'Are you sure you want to relieve ${device.name}?\n\n'
-          'This device will lose Premium access.',
+          '${Strings.relieveDeviceMessage.tr} ${device.name}?\n\n'
+          '${Strings.relieveDeviceLoseAccess.tr}',
         ),
         actions: [
-          TextButton(onPressed: () => Get.back(), child: const Text('Cancel')),
+          TextButton(
+            onPressed: () => Get.back(),
+            child: Text(Strings.cancel.tr),
+          ),
           TextButton(
             onPressed: () {
               currentDevices.removeWhere((d) => d.id == deviceId);
               Get.back();
               Get.snackbar(
-                'Device Relieved',
-                '${device.name} has been removed from authorized devices',
+                Strings.deviceRelieved.tr,
+                '${device.name} ${Strings.deviceRelievedMessage.tr}',
                 snackPosition: SnackPosition.bottom,
               );
             },
-            child: const Text('Relieve', style: TextStyle(color: Colors.red)),
+            child: Text(
+              Strings.relieveDevice.tr,
+              style: const TextStyle(color: Colors.red),
+            ),
           ),
         ],
       ),
@@ -169,7 +178,10 @@ class DeviceauthController extends GetxController {
   /// 复制授权码
   void copyAuthCode() {
     // TODO: 实现复制到剪贴板
-    IXSnackBar.showIXSnackBar(title: '已复制', message: '授权码已复制到剪贴板');
+    IXSnackBar.showIXSnackBar(
+      title: Strings.copied.tr,
+      message: Strings.authCodeCopied.tr,
+    );
   }
 
   /// 获取倒计时显示文本

+ 14 - 20
lib/app/modules/deviceauth/views/deviceauth_view.dart

@@ -137,7 +137,7 @@ class DeviceauthView extends BaseView<DeviceauthController> {
                   mainAxisSize: MainAxisSize.min,
                   children: [
                     Text(
-                      'Copy',
+                      Strings.copy.tr,
                       style: TextStyle(
                         fontSize: 12.sp,
                         height: 1.7,
@@ -160,7 +160,7 @@ class DeviceauthView extends BaseView<DeviceauthController> {
 
           // 提示文字
           Text(
-            'Please keep this page open.',
+            Strings.pleaseKeepPageOpen.tr,
             style: TextStyle(
               fontSize: 13.sp,
               color: DarkThemeColors.validTermColor,
@@ -179,23 +179,20 @@ class DeviceauthView extends BaseView<DeviceauthController> {
       items: [
         InfoItem(
           icon: IconFont.icon11,
-          title: 'Authorization Code',
-          description:
-              'This 6-digit code allows a VIP user to link your device. It refreshes every 15 minutes.',
+          title: Strings.authorizationCode.tr,
+          description: Strings.authorizationCodeDesc.tr,
           iconColor: DarkThemeColors.shadowColor,
         ),
         InfoItem(
           icon: IconFont.icon23,
-          title: 'Share with Pre User',
-          description:
-              'Tell the VIP user this code so they can enter it on their device to authorize you.',
+          title: Strings.shareWithPreUser.tr,
+          description: Strings.shareWithPreUserDesc.tr,
           iconColor: DarkThemeColors.shadowColor,
         ),
         InfoItem(
           icon: IconFont.icon49,
-          title: 'Waiting for Authorization',
-          description:
-              'Please keep this page open.\nOnce approved, your account will automatically upgrade and reconnect.',
+          title: Strings.waitingForAuthorization.tr,
+          description: Strings.waitingForAuthorizationDesc.tr,
           iconColor: DarkThemeColors.shadowColor,
         ),
       ],
@@ -316,23 +313,20 @@ class DeviceauthView extends BaseView<DeviceauthController> {
       items: [
         InfoItem(
           icon: IconFont.icon46,
-          title: 'Enter Code',
-          description:
-              'Input the 6-digit code shown on the other device (free user).This code refreshes every 15 minutes.',
+          title: Strings.enterCode.tr,
+          description: Strings.enterCodeDesc.tr,
           iconColor: DarkThemeColors.shadowColor,
         ),
         InfoItem(
           icon: IconFont.icon16,
-          title: 'Verify Device',
-          description:
-              'We’ll check if the entered code matches an active device waiting for authorization.',
+          title: Strings.verifyDevice.tr,
+          description: Strings.verifyDeviceDesc.tr,
           iconColor: DarkThemeColors.shadowColor,
         ),
         InfoItem(
           icon: IconFont.icon43,
-          title: 'Authorization Successful',
-          description:
-              'Once confirmed, the device will automatically upgrade and link to your account.',
+          title: Strings.authorizationSuccessful.tr,
+          description: Strings.authorizationSuccessfulDesc.tr,
           iconColor: DarkThemeColors.shadowColor,
         ),
       ],

+ 1 - 1
lib/app/modules/home/views/home_view.dart

@@ -93,7 +93,7 @@ class HomeView extends BaseView<HomeController> {
               ),
             ),
             Text(
-              "Active time",
+              Strings.activeTime.tr,
               style: TextStyle(
                 fontSize: 18.sp,
                 height: 1.3,

+ 5 - 4
lib/app/modules/home/widgets/connection_button.dart

@@ -6,6 +6,7 @@ import 'package:nomo/app/widgets/ix_image.dart';
 
 import '../../../constants/assets.dart';
 import '../../../../config/theme/theme_extensions/theme_extension.dart';
+import '../../../../config/translations/strings_enum.dart';
 import '../../../constants/enums.dart';
 
 class ConnectionButton extends StatefulWidget {
@@ -113,7 +114,7 @@ class _ConnectionButtonState extends State<ConnectionButton>
         ];
         imgPath = Assets.switchStatusDisconnected;
         statusImgPath = Assets.disconnected;
-        text = "Disconnected";
+        text = Strings.disconnected.tr;
         textColor = Get.reactiveTheme.hintColor;
         if (_isAtTop) {
           setState(() {
@@ -128,7 +129,7 @@ class _ConnectionButtonState extends State<ConnectionButton>
         ];
         imgPath = Assets.switchStatusConnecting;
         statusImgPath = Assets.connecting;
-        text = "Connecting";
+        text = Strings.connecting.tr;
         textColor = Get.reactiveTheme.hintColor;
         // 切换位置
         setState(() {
@@ -143,7 +144,7 @@ class _ConnectionButtonState extends State<ConnectionButton>
         ];
         imgPath = Assets.switchStatusConnected;
         statusImgPath = Assets.connected;
-        text = "Connected";
+        text = Strings.connected.tr;
         textColor = Get.reactiveTheme.textTheme.bodyLarge!.color!;
         if (!_isAtTop) {
           setState(() {
@@ -158,7 +159,7 @@ class _ConnectionButtonState extends State<ConnectionButton>
         ];
         imgPath = Assets.switchStatusDisconnected;
         statusImgPath = Assets.error;
-        text = "Error";
+        text = Strings.error.tr;
         textColor = Get.reactiveTheme.hintColor;
         break;
     }

+ 7 - 7
lib/app/modules/precode/controllers/precode_controller.dart

@@ -74,8 +74,8 @@ class PrecodeController extends GetxController {
 
       if (imageBytes == null) {
         IXSnackBar.showIXSnackBar(
-          title: 'Error',
-          message: 'Failed to capture screenshot',
+          title: Strings.error.tr,
+          message: Strings.failedCaptureScreenshot.tr,
         );
         return;
       }
@@ -91,18 +91,18 @@ class PrecodeController extends GetxController {
         // 显示成功提示
         IXSnackBar.showIXSnackBar(
           title: "",
-          message: "The image has been saved to your local album",
+          message: Strings.imageSavedToAlbum.tr,
         );
       } else {
         IXSnackBar.showIXErrorSnackBar(
-          title: 'Error',
-          message: 'Failed to save image to gallery',
+          title: Strings.error.tr,
+          message: Strings.failedSaveImage.tr,
         );
       }
     } catch (e) {
       IXSnackBar.showIXErrorSnackBar(
-        title: 'Error',
-        message: 'Failed to save: $e',
+        title: Strings.error.tr,
+        message: '${Strings.failedToSave.tr}: $e',
       );
     }
   }

+ 4 - 2
lib/app/modules/precode/sendemail/controllers/precode_sendemail_controller.dart

@@ -2,6 +2,8 @@ import 'package:flutter/material.dart';
 import 'package:get/get.dart';
 import 'package:nomo/app/dialog/all_dialog.dart';
 
+import '../../../../../config/translations/strings_enum.dart';
+
 class PrecodeSendemailController extends GetxController {
   // 邮箱输入控制器
   final emailController = TextEditingController();
@@ -60,8 +62,8 @@ class PrecodeSendemailController extends GetxController {
       AllDialog.showEmailSent();
     } catch (e) {
       AllDialog.showCustomError(
-        title: 'Error',
-        message: 'Failed to send email',
+        title: Strings.error.tr,
+        message: Strings.failedSendEmail.tr,
         buttonText: 'Retry',
         cancelText: 'Cancel',
       );

+ 9 - 12
lib/app/modules/precode/sendemail/views/precode_sendemail_view.dart

@@ -42,7 +42,7 @@ class PrecodeSendemailView extends BaseView<PrecodeSendemailController> {
 
             // 说明文字
             Text(
-              'Your code will be backed up to this email.',
+              Strings.codeBackedUpMessage.tr,
               textAlign: TextAlign.center,
               style: TextStyle(
                 fontSize: 14.sp,
@@ -60,7 +60,7 @@ class PrecodeSendemailView extends BaseView<PrecodeSendemailController> {
   /// 邮箱输入框
   Widget _buildEmailInput() {
     return IXTextField(
-      hintText: 'Enter your email',
+      hintText: Strings.enterYourEmail.tr,
       controller: controller.emailController,
       focusNode: controller.emailFocusNode,
       keyboardType: TextInputType.emailAddress,
@@ -83,7 +83,7 @@ class PrecodeSendemailView extends BaseView<PrecodeSendemailController> {
         ),
         enabled: canSend,
         isLoading: isSending,
-        text: 'Send your Email',
+        text: Strings.sendYourEmail.tr,
         onPressed: controller.sendEmail,
       );
     });
@@ -96,23 +96,20 @@ class PrecodeSendemailView extends BaseView<PrecodeSendemailController> {
       items: [
         InfoItem(
           icon: IconFont.icon23,
-          title: 'Your Pre Credential',
-          description:
-              'This is your VIP credential. Please store it securely and do not share it with anyone.',
+          title: Strings.yourPreCredential.tr,
+          description: Strings.yourPreCredentialDesc.tr,
           iconColor: DarkThemeColors.primaryColor,
         ),
         InfoItem(
           imageSource: Assets.preCodeEmailTipBlue,
-          title: 'Secure Email Backup',
-          description:
-              'We will send an email containing this credential to your specified email address for safekeeping.',
+          title: Strings.secureEmailBackup.tr,
+          description: Strings.secureEmailBackupDesc.tr,
           iconColor: DarkThemeColors.primaryColor,
         ),
         InfoItem(
           icon: IconFont.icon43,
-          title: 'Send and Save',
-          description:
-              'After the email is sent, we recommend you also save this credential to a secure location on your device.',
+          title: Strings.sendAndSave.tr,
+          description: Strings.sendAndSaveDesc.tr,
           iconColor: DarkThemeColors.primaryColor,
         ),
       ],

+ 4 - 6
lib/app/modules/routingmode/views/routingmode_view.dart

@@ -32,9 +32,8 @@ class RoutingmodeView extends BaseView<RoutingmodeController> {
               _buildRoutingOption(
                 mode: RoutingMode.smart,
                 icon: IconFont.icon50,
-                title: 'Smart',
-                description:
-                    'The local and VPN networks coexist, and the optimal route is selected intelligently.',
+                title: Strings.smart.tr,
+                description: Strings.smartModeDesc.tr,
                 isSelected: controller.selectedMode.value == RoutingMode.smart,
                 onTap: () => controller.selectMode(RoutingMode.smart),
               ),
@@ -42,9 +41,8 @@ class RoutingmodeView extends BaseView<RoutingmodeController> {
               _buildRoutingOption(
                 mode: RoutingMode.global,
                 icon: IconFont.icon51,
-                title: 'Global',
-                description:
-                    'All traffic is routed through the VPN server to ensure maximum privacy and security.',
+                title: Strings.global.tr,
+                description: Strings.globalModeDesc.tr,
                 isSelected: controller.selectedMode.value == RoutingMode.global,
                 onTap: () => controller.selectMode(RoutingMode.global),
               ),

+ 28 - 14
lib/app/modules/subscription/controllers/subscription_controller.dart

@@ -3,6 +3,7 @@ import 'package:get/get.dart';
 import 'package:video_player/video_player.dart';
 
 import '../../../../config/theme/dark_theme_colors.dart';
+import '../../../../config/translations/strings_enum.dart';
 import '../../../components/ix_snackbar.dart';
 import '../../../constants/assets.dart';
 
@@ -15,23 +16,33 @@ class SubscriptionController extends GetxController {
   final selectedPlanIndex = 0.obs;
 
   // 订阅计划列表
-  final List<Map<String, dynamic>> plans = [
+  List<Map<String, dynamic>> get plans => [
     {
       'price': '\$40.00',
-      'period': 'Per year',
-      'title': 'Yearly Plan',
-      'badge': 'Mostly choose',
+      'period': Strings.perYear.tr,
+      'title': Strings.yearlyPlan.tr,
+      'badge': Strings.mostlyChoose.tr,
       'badgeBgColor': DarkThemeColors.bg1,
       'badgeTextColor': DarkThemeColors.subscriptionColor,
       'badgeBorderColor': DarkThemeColors.dividerColor, // null 表示没有边框
     },
-    {'price': '\$58.00', 'period': 'once', 'title': 'Life time', 'badge': null},
-    {'price': '\$58.00', 'period': 'Per', 'title': 'Month Plan', 'badge': null},
+    {
+      'price': '\$58.00',
+      'period': Strings.once.tr,
+      'title': Strings.lifeTime.tr,
+      'badge': null,
+    },
+    {
+      'price': '\$58.00',
+      'period': Strings.perYear.tr,
+      'title': Strings.monthPlan.tr,
+      'badge': null,
+    },
     {
       'price': '\$1.00',
-      'period': 'Per week',
-      'title': 'Week Plan',
-      'badge': 'Limited Time',
+      'period': Strings.perWeek.tr,
+      'title': Strings.weekPlan.tr,
+      'badge': Strings.limitedTime.tr,
       'badgeBgColor': DarkThemeColors.primaryColor,
       'badgeTextColor': Colors.white,
       'badgeBorderColor': null,
@@ -74,23 +85,26 @@ class SubscriptionController extends GetxController {
   void confirmChange() {
     // TODO: 实现确认订阅变更逻辑
     IXSnackBar.showIXSnackBar(
-      title: 'Success',
-      message: 'Subscription plan changed successfully',
+      title: Strings.success.tr,
+      message: Strings.subscriptionChanged.tr,
     );
   }
 
   // 恢复购买
   void restorePurchases() {
     // TODO: 实现恢复购买逻辑
-    IXSnackBar.showIXSnackBar(title: 'Info', message: 'Restoring purchases...');
+    IXSnackBar.showIXSnackBar(
+      title: Strings.info.tr,
+      message: Strings.restoringPurchases.tr,
+    );
   }
 
   // 支付问题
   void handlePaymentIssue() {
     // TODO: 实现支付问题处理逻辑
     IXSnackBar.showIXSnackBar(
-      title: 'Info',
-      message: 'Opening payment support...',
+      title: Strings.info.tr,
+      message: Strings.openingPaymentSupport.tr,
     );
   }
 }

+ 108 - 0
lib/config/translations/ar_AR/ar_ar_translation.dart

@@ -138,4 +138,112 @@ final Map<String, String> arAR = {
   // more pages
   Strings.sendPreCodeToEmail: 'إرسال الرمز المسبق إلى البريد الإلكتروني',
   Strings.selectServer: 'اختيار الخادم',
+
+  // Dialog messages
+  Strings.premiumActivated: 'تم تفعيل Premium بنجاح!',
+  Strings.premiumActivatedMessage:
+      'تمت ترقيتك إلى Premium. استمتع بجميع الميزات المتقدمة وتجربة تصفح محسّنة.',
+  Strings.gotIt: 'حسناً',
+  Strings.emailSent: 'تم إرسال البريد الإلكتروني بنجاح',
+  Strings.emailSentMessage:
+      'تم إرسال رمز Pre إلى بريدك الإلكتروني.\nيرجى التحقق من صندوق الوارد (ومجلد البريد العشوائي).',
+  Strings.noInternetConnection: 'لا يوجد اتصال بالإنترنت',
+  Strings.noInternetMessage:
+      'يبدو أنك غير متصل بالإنترنت. يرجى التحقق من اتصالك بالإنترنت والمحاولة مرة أخرى.',
+  Strings.logOut: 'تسجيل الخروج',
+  Strings.logOutConfirmMessage:
+      'هل أنت متأكد من رغبتك في تسجيل الخروج؟ ستحتاج إلى تسجيل الدخول مرة أخرى للوصول إلى ميزات Premium.',
+  Strings.thankYouFeedback: 'شكراً لك على تعليقك!',
+  Strings.feedbackMessage:
+      'نأسف لأنك لا تستمتع بتجربتك. سنبذل قصارى جهدنا لتحسينها قريباً.',
+  Strings.done: 'تم',
+  Strings.whatIsUid: 'ما هو UID؟',
+  Strings.uidMessage:
+      'معرف الجهاز (UID) هذا هو المعرف الفريد لجهازك. يساعد توفير هذا المعرف فريق الدعم لدينا على التحقق من جهازك وحل مشكلاتك بشكل أسرع.',
+  Strings.confirm: 'تأكيد',
+
+  // Device Authorization
+  Strings.copy: 'نسخ',
+  Strings.pleaseKeepPageOpen: 'يرجى إبقاء هذه الصفحة مفتوحة.',
+  Strings.authorizationCode: 'رمز التفويض',
+  Strings.authorizationCodeDesc:
+      'يسمح هذا الرمز المكون من 6 أرقام لمستخدم VIP بربط جهازك. يتم تحديثه كل 15 دقيقة.',
+  Strings.shareWithPreUser: 'مشاركة مع مستخدم Pre',
+  Strings.shareWithPreUserDesc:
+      'أخبر مستخدم VIP بهذا الرمز حتى يتمكن من إدخاله على جهازه للسماح لك.',
+  Strings.waitingForAuthorization: 'في انتظار التفويض',
+  Strings.waitingForAuthorizationDesc:
+      'يرجى إبقاء هذه الصفحة مفتوحة.\nبمجرد الموافقة، سيتم ترقية حسابك تلقائياً وإعادة الاتصال.',
+  Strings.enterCode: 'أدخل الرمز',
+  Strings.enterCodeDesc:
+      'أدخل الرمز المكون من 6 أرقام المعروض على الجهاز الآخر (مستخدم مجاني). يتم تحديث هذا الرمز كل 15 دقيقة.',
+  Strings.verifyDevice: 'التحقق من الجهاز',
+  Strings.verifyDeviceDesc:
+      'سنتحقق مما إذا كان الرمز المُدخل يطابق جهازاً نشطاً في انتظار التفويض.',
+  Strings.authorizationSuccessful: 'نجح التفويض',
+  Strings.authorizationSuccessfulDesc:
+      'بمجرد التأكيد، سيتم ترقية الجهاز تلقائياً وربطه بحسابك.',
+  Strings.deviceLimitReached: 'تم الوصول إلى حد الأجهزة',
+  Strings.deviceLimitMessage: 'يمكنك فقط السماح بما يصل إلى',
+  Strings.devices: 'أجهزة',
+  Strings.deviceAuthorized: 'تم تفويض الجهاز',
+  Strings.deviceAuthorizedMessage: 'تم تفويض الجهاز الجديد بنجاح',
+  Strings.relieveDevice: 'إلغاء تفويض الجهاز',
+  Strings.relieveDeviceMessage: 'هل أنت متأكد من رغبتك في إلغاء تفويض',
+  Strings.relieveDeviceLoseAccess: 'سيفقد هذا الجهاز الوصول إلى Premium.',
+  Strings.deviceRelieved: 'تم إلغاء تفويض الجهاز',
+  Strings.deviceRelievedMessage: 'تمت إزالته من الأجهزة المصرح بها',
+  Strings.currentDevice: 'الجهاز الحالي',
+  Strings.androidDevices: 'أجهزة Android',
+  Strings.authCodeCopied: 'تم نسخ رمز التفويض إلى الحافظة',
+
+  // Pre Code Email
+  Strings.codeBackedUpMessage:
+      'سيتم نسخ رمزك احتياطياً إلى هذا البريد الإلكتروني.',
+  Strings.enterYourEmail: 'أدخل بريدك الإلكتروني',
+  Strings.sendYourEmail: 'إرسال بريدك الإلكتروني',
+  Strings.yourPreCredential: 'بيانات اعتماد Pre الخاصة بك',
+  Strings.yourPreCredentialDesc:
+      'هذه هي بيانات اعتماد VIP الخاصة بك. يرجى تخزينها بشكل آمن وعدم مشاركتها مع أي شخص.',
+  Strings.secureEmailBackup: 'نسخ احتياطي آمن عبر البريد الإلكتروني',
+  Strings.secureEmailBackupDesc:
+      'سنرسل بريداً إلكترونياً يحتوي على بيانات الاعتماد هذه إلى عنوان بريدك الإلكتروني المحدد للحفظ.',
+  Strings.sendAndSave: 'إرسال وحفظ',
+  Strings.sendAndSaveDesc:
+      'بعد إرسال البريد الإلكتروني، نوصي أيضاً بحفظ بيانات الاعتماد هذه في مكان آمن على جهازك.',
+
+  // Routing Mode
+  Strings.smart: 'ذكي',
+  Strings.smartModeDesc:
+      'تتعايش الشبكات المحلية وشبكة VPN، ويتم اختيار المسار الأمثل بذكاء.',
+  Strings.global: 'عالمي',
+  Strings.globalModeDesc:
+      'يتم توجيه جميع البيانات عبر خادم VPN لضمان أقصى قدر من الخصوصية والأمان.',
+
+  // Subscription Plans
+  Strings.perYear: 'سنوياً',
+  Strings.yearlyPlan: 'الخطة السنوية',
+  Strings.mostlyChoose: 'الأكثر اختياراً',
+  Strings.once: 'مرة واحدة',
+  Strings.lifeTime: 'مدى الحياة',
+  Strings.monthPlan: 'الخطة الشهرية',
+  Strings.perWeek: 'أسبوعياً',
+  Strings.weekPlan: 'الخطة الأسبوعية',
+  Strings.limitedTime: 'وقت محدود',
+  Strings.subscriptionChanged: 'تم تغيير خطة الاشتراك بنجاح',
+  Strings.restoringPurchases: 'استعادة المشتريات...',
+  Strings.openingPaymentSupport: 'فتح دعم الدفع...',
+  Strings.info: 'معلومات',
+
+  // Other messages
+  Strings.vpnConnectionError: 'خطأ في اتصال VPN',
+  Strings.vpnServiceDisconnected: 'انقطع اتصال خدمة VPN بشكل غير متوقع',
+  Strings.failedCaptureScreenshot: 'فشل التقاط لقطة الشاشة',
+  Strings.imageSavedToAlbum: 'تم حفظ الصورة في ألبومك المحلي',
+  Strings.failedSaveImage: 'فشل حفظ الصورة في المعرض',
+  Strings.failedToSave: 'فشل الحفظ',
+  Strings.failedSendEmail: 'فشل إرسال البريد الإلكتروني',
+
+  // Connection status
+  Strings.activeTime: 'الوقت النشط',
 };

+ 109 - 0
lib/config/translations/de_DE/de_de_translation.dart

@@ -140,4 +140,113 @@ const Map<String, String> deDE = {
   // more pages
   Strings.sendPreCodeToEmail: 'Pre-Code an E-Mail senden',
   Strings.selectServer: 'Server auswählen',
+
+  // Dialog messages
+  Strings.premiumActivated: 'Premium erfolgreich aktiviert!',
+  Strings.premiumActivatedMessage:
+      'Sie wurden auf Premium aktualisiert. Genießen Sie alle erweiterten Funktionen und eine verbesserte Browsing-Erfahrung.',
+  Strings.gotIt: 'Verstanden',
+  Strings.emailSent: 'E-Mail erfolgreich gesendet',
+  Strings.emailSentMessage:
+      'Ihr Pre-Code wurde an Ihre E-Mail gesendet.\nBitte überprüfen Sie Ihren Posteingang (und Spam-Ordner).',
+  Strings.noInternetConnection: 'Keine Internetverbindung',
+  Strings.noInternetMessage:
+      'Es scheint, dass Sie offline sind. Bitte überprüfen Sie Ihre Internetverbindung und versuchen Sie es erneut.',
+  Strings.logOut: 'Abmelden',
+  Strings.logOutConfirmMessage:
+      'Sind Sie sicher, dass Sie sich abmelden möchten? Sie müssen sich erneut anmelden, um auf Ihre Premium-Funktionen zuzugreifen.',
+  Strings.thankYouFeedback: 'Vielen Dank für Ihr Feedback!',
+  Strings.feedbackMessage:
+      'Es tut uns leid, dass Sie keine gute Erfahrung machen. Wir werden unser Bestes tun, um es bald zu verbessern.',
+  Strings.done: 'Fertig',
+  Strings.whatIsUid: 'Was ist UID?',
+  Strings.uidMessage:
+      'Geräte-ID (UID) Dies ist die eindeutige Kennung Ihres Geräts. Die Angabe dieser ID hilft unserem Support-Team, Ihr Gerät zu verifizieren und Ihre Probleme schneller zu lösen.',
+  Strings.confirm: 'Bestätigen',
+
+  // Device Authorization
+  Strings.copy: 'Kopieren',
+  Strings.pleaseKeepPageOpen: 'Bitte lassen Sie diese Seite geöffnet.',
+  Strings.authorizationCode: 'Autorisierungscode',
+  Strings.authorizationCodeDesc:
+      'Dieser 6-stellige Code ermöglicht es einem VIP-Benutzer, Ihr Gerät zu verknüpfen. Er wird alle 15 Minuten aktualisiert.',
+  Strings.shareWithPreUser: 'Mit Pre-Benutzer teilen',
+  Strings.shareWithPreUserDesc:
+      'Teilen Sie dem VIP-Benutzer diesen Code mit, damit er ihn auf seinem Gerät eingeben kann, um Sie zu autorisieren.',
+  Strings.waitingForAuthorization: 'Warten auf Autorisierung',
+  Strings.waitingForAuthorizationDesc:
+      'Bitte lassen Sie diese Seite geöffnet.\nNach der Genehmigung wird Ihr Konto automatisch aktualisiert und erneut verbunden.',
+  Strings.enterCode: 'Code eingeben',
+  Strings.enterCodeDesc:
+      'Geben Sie den 6-stelligen Code ein, der auf dem anderen Gerät angezeigt wird (kostenloser Benutzer). Dieser Code wird alle 15 Minuten aktualisiert.',
+  Strings.verifyDevice: 'Gerät verifizieren',
+  Strings.verifyDeviceDesc:
+      'Wir prüfen, ob der eingegebene Code mit einem aktiven Gerät übereinstimmt, das auf die Autorisierung wartet.',
+  Strings.authorizationSuccessful: 'Autorisierung erfolgreich',
+  Strings.authorizationSuccessfulDesc:
+      'Nach der Bestätigung wird das Gerät automatisch aktualisiert und mit Ihrem Konto verknüpft.',
+  Strings.deviceLimitReached: 'Gerätelimit erreicht',
+  Strings.deviceLimitMessage: 'Sie können nur bis zu',
+  Strings.devices: 'Geräte',
+  Strings.deviceAuthorized: 'Gerät autorisiert',
+  Strings.deviceAuthorizedMessage: 'Neues Gerät wurde erfolgreich autorisiert',
+  Strings.relieveDevice: 'Gerät freigeben',
+  Strings.relieveDeviceMessage: 'Sind Sie sicher, dass Sie freigeben möchten',
+  Strings.relieveDeviceLoseAccess: 'Dieses Gerät verliert den Premium-Zugang.',
+  Strings.deviceRelieved: 'Gerät freigegeben',
+  Strings.deviceRelievedMessage: 'wurde von den autorisierten Geräten entfernt',
+  Strings.currentDevice: 'Aktuelles Gerät',
+  Strings.androidDevices: 'Android-Geräte',
+  Strings.authCodeCopied: 'Autorisierungscode in die Zwischenablage kopiert',
+
+  // Pre Code Email
+  Strings.codeBackedUpMessage: 'Ihr Code wird in dieser E-Mail gesichert.',
+  Strings.enterYourEmail: 'Geben Sie Ihre E-Mail ein',
+  Strings.sendYourEmail: 'Ihre E-Mail senden',
+  Strings.yourPreCredential: 'Ihre Pre-Zugangsdaten',
+  Strings.yourPreCredentialDesc:
+      'Dies sind Ihre VIP-Zugangsdaten. Bitte bewahren Sie sie sicher auf und teilen Sie sie mit niemandem.',
+  Strings.secureEmailBackup: 'Sichere E-Mail-Sicherung',
+  Strings.secureEmailBackupDesc:
+      'Wir senden Ihnen eine E-Mail mit diesen Zugangsdaten an Ihre angegebene E-Mail-Adresse zur Aufbewahrung.',
+  Strings.sendAndSave: 'Senden und speichern',
+  Strings.sendAndSaveDesc:
+      'Nach dem Senden der E-Mail empfehlen wir Ihnen auch, diese Zugangsdaten an einem sicheren Ort auf Ihrem Gerät zu speichern.',
+
+  // Routing Mode
+  Strings.smart: 'Intelligent',
+  Strings.smartModeDesc:
+      'Das lokale Netzwerk und das VPN koexistieren, und die optimale Route wird intelligent ausgewählt.',
+  Strings.global: 'Global',
+  Strings.globalModeDesc:
+      'Der gesamte Datenverkehr wird über den VPN-Server geleitet, um maximale Privatsphäre und Sicherheit zu gewährleisten.',
+
+  // Subscription Plans
+  Strings.perYear: 'Pro Jahr',
+  Strings.yearlyPlan: 'Jahresplan',
+  Strings.mostlyChoose: 'Am häufigsten gewählt',
+  Strings.once: 'einmalig',
+  Strings.lifeTime: 'Lebenslang',
+  Strings.monthPlan: 'Monatsplan',
+  Strings.perWeek: 'Pro Woche',
+  Strings.weekPlan: 'Wochenplan',
+  Strings.limitedTime: 'Begrenzte Zeit',
+  Strings.subscriptionChanged: 'Abonnementplan erfolgreich geändert',
+  Strings.restoringPurchases: 'Käufe werden wiederhergestellt...',
+  Strings.openingPaymentSupport: 'Zahlungssupport wird geöffnet...',
+  Strings.info: 'Info',
+
+  // Other messages
+  Strings.vpnConnectionError: 'VPN-Verbindungsfehler',
+  Strings.vpnServiceDisconnected: 'VPN-Dienst unerwartet getrennt',
+  Strings.failedCaptureScreenshot: 'Screenshot konnte nicht erstellt werden',
+  Strings.imageSavedToAlbum:
+      'Das Bild wurde in Ihrem lokalen Album gespeichert',
+  Strings.failedSaveImage:
+      'Bild konnte nicht in der Galerie gespeichert werden',
+  Strings.failedToSave: 'Speichern fehlgeschlagen',
+  Strings.failedSendEmail: 'E-Mail konnte nicht gesendet werden',
+
+  // Connection status
+  Strings.activeTime: 'Aktive Zeit',
 };

+ 108 - 0
lib/config/translations/en_US/en_us_translation.dart

@@ -143,4 +143,112 @@ Map<String, String> enUs = {
   // more pages
   Strings.sendPreCodeToEmail: 'Send Pre Code to Email',
   Strings.selectServer: 'Select Server',
+
+  // Dialog messages
+  Strings.premiumActivated: 'Premium Activated Successfully !',
+  Strings.premiumActivatedMessage:
+      'You\'ve been upgraded to Premium. Enjoy all advanced features and an enhanced browsing experience.',
+  Strings.gotIt: 'Got it',
+  Strings.emailSent: 'Email Sent Successfully',
+  Strings.emailSentMessage:
+      'Your Pre Code has been sent to your email.\nPlease check your inbox (and spam folder).',
+  Strings.noInternetConnection: 'No Internet Connection',
+  Strings.noInternetMessage:
+      'It looks like you\'re offline. Please check your internet connection and try again.',
+  Strings.logOut: 'Log Out',
+  Strings.logOutConfirmMessage:
+      'Are you sure you want to log out? You\'ll need to sign in again to access your Premium features.',
+  Strings.thankYouFeedback: 'Thank you for your feedback!',
+  Strings.feedbackMessage:
+      'We\'re sorry you\'re not enjoying your experience. We\'ll do our best to improve it soon.',
+  Strings.done: 'Done',
+  Strings.whatIsUid: 'What is UID?',
+  Strings.uidMessage:
+      'Device ID (UID) This is your device\'s unique identifier. Providing this ID helps our support team verify your device and resolve your issues more quickly.',
+  Strings.confirm: 'Confirm',
+
+  // Device Authorization
+  Strings.copy: 'Copy',
+  Strings.pleaseKeepPageOpen: 'Please keep this page open.',
+  Strings.authorizationCode: 'Authorization Code',
+  Strings.authorizationCodeDesc:
+      'This 6-digit code allows a VIP user to link your device. It refreshes every 15 minutes.',
+  Strings.shareWithPreUser: 'Share with Pre User',
+  Strings.shareWithPreUserDesc:
+      'Tell the VIP user this code so they can enter it on their device to authorize you.',
+  Strings.waitingForAuthorization: 'Waiting for Authorization',
+  Strings.waitingForAuthorizationDesc:
+      'Please keep this page open.\nOnce approved, your account will automatically upgrade and reconnect.',
+  Strings.enterCode: 'Enter Code',
+  Strings.enterCodeDesc:
+      'Input the 6-digit code shown on the other device (free user).This code refreshes every 15 minutes.',
+  Strings.verifyDevice: 'Verify Device',
+  Strings.verifyDeviceDesc:
+      'We\'ll check if the entered code matches an active device waiting for authorization.',
+  Strings.authorizationSuccessful: 'Authorization Successful',
+  Strings.authorizationSuccessfulDesc:
+      'Once confirmed, the device will automatically upgrade and link to your account.',
+  Strings.deviceLimitReached: 'Device Limit Reached',
+  Strings.deviceLimitMessage: 'You can only authorize up to',
+  Strings.devices: 'devices',
+  Strings.deviceAuthorized: 'Device Authorized',
+  Strings.deviceAuthorizedMessage:
+      'New device has been successfully authorized',
+  Strings.relieveDevice: 'Relieve Device',
+  Strings.relieveDeviceMessage: 'Are you sure you want to relieve',
+  Strings.relieveDeviceLoseAccess: 'This device will lose Premium access.',
+  Strings.deviceRelieved: 'Device Relieved',
+  Strings.deviceRelievedMessage: 'has been removed from authorized devices',
+  Strings.currentDevice: 'Current Device',
+  Strings.androidDevices: 'Android devices',
+  Strings.authCodeCopied: 'Authorization code copied to clipboard',
+
+  // Pre Code Email
+  Strings.codeBackedUpMessage: 'Your code will be backed up to this email.',
+  Strings.enterYourEmail: 'Enter your email',
+  Strings.sendYourEmail: 'Send your Email',
+  Strings.yourPreCredential: 'Your Pre Credential',
+  Strings.yourPreCredentialDesc:
+      'This is your VIP credential. Please store it securely and do not share it with anyone.',
+  Strings.secureEmailBackup: 'Secure Email Backup',
+  Strings.secureEmailBackupDesc:
+      'We will send an email containing this credential to your specified email address for safekeeping.',
+  Strings.sendAndSave: 'Send and Save',
+  Strings.sendAndSaveDesc:
+      'After the email is sent, we recommend you also save this credential to a secure location on your device.',
+
+  // Routing Mode
+  Strings.smart: 'Smart',
+  Strings.smartModeDesc:
+      'The local and VPN networks coexist, and the optimal route is selected intelligently.',
+  Strings.global: 'Global',
+  Strings.globalModeDesc:
+      'All traffic is routed through the VPN server to ensure maximum privacy and security.',
+
+  // Subscription Plans
+  Strings.perYear: 'Per year',
+  Strings.yearlyPlan: 'Yearly Plan',
+  Strings.mostlyChoose: 'Mostly choose',
+  Strings.once: 'once',
+  Strings.lifeTime: 'Life time',
+  Strings.monthPlan: 'Month Plan',
+  Strings.perWeek: 'Per week',
+  Strings.weekPlan: 'Week Plan',
+  Strings.limitedTime: 'Limited Time',
+  Strings.subscriptionChanged: 'Subscription plan changed successfully',
+  Strings.restoringPurchases: 'Restoring purchases...',
+  Strings.openingPaymentSupport: 'Opening payment support...',
+  Strings.info: 'Info',
+
+  // Other messages
+  Strings.vpnConnectionError: 'VPN connection error',
+  Strings.vpnServiceDisconnected: 'VPN service disconnected unexpectedly',
+  Strings.failedCaptureScreenshot: 'Failed to capture screenshot',
+  Strings.imageSavedToAlbum: 'The image has been saved to your local album',
+  Strings.failedSaveImage: 'Failed to save image to gallery',
+  Strings.failedToSave: 'Failed to save',
+  Strings.failedSendEmail: 'Failed to send email',
+
+  // Connection status
+  Strings.activeTime: 'Active time',
 };

+ 112 - 0
lib/config/translations/es_ES/es_es_translation.dart

@@ -142,4 +142,116 @@ const Map<String, String> esEs = {
   // more pages
   Strings.sendPreCodeToEmail: 'Enviar Pre Código al Correo',
   Strings.selectServer: 'Seleccionar Servidor',
+
+  // Dialog messages
+  Strings.premiumActivated: '¡Premium activado con éxito!',
+  Strings.premiumActivatedMessage:
+      'Has sido actualizado a Premium. Disfruta de todas las funciones avanzadas y una experiencia de navegación mejorada.',
+  Strings.gotIt: 'Entendido',
+  Strings.emailSent: 'Correo enviado con éxito',
+  Strings.emailSentMessage:
+      'Tu código Pre ha sido enviado a tu correo electrónico.\nPor favor, verifica tu bandeja de entrada (y carpeta de spam).',
+  Strings.noInternetConnection: 'Sin conexión a Internet',
+  Strings.noInternetMessage:
+      'Parece que estás desconectado. Por favor, verifica tu conexión a internet e inténtalo de nuevo.',
+  Strings.logOut: 'Cerrar sesión',
+  Strings.logOutConfirmMessage:
+      '¿Estás seguro de que quieres cerrar sesión? Necesitarás iniciar sesión nuevamente para acceder a tus funciones Premium.',
+  Strings.thankYouFeedback: '¡Gracias por tus comentarios!',
+  Strings.feedbackMessage:
+      'Lamentamos que no estés disfrutando tu experiencia. Haremos todo lo posible para mejorarla pronto.',
+  Strings.done: 'Hecho',
+  Strings.whatIsUid: '¿Qué es UID?',
+  Strings.uidMessage:
+      'ID del dispositivo (UID) Este es el identificador único de tu dispositivo. Proporcionar este ID ayuda a nuestro equipo de soporte a verificar tu dispositivo y resolver tus problemas más rápidamente.',
+  Strings.confirm: 'Confirmar',
+
+  // Device Authorization
+  Strings.copy: 'Copiar',
+  Strings.pleaseKeepPageOpen: 'Por favor, mantén esta página abierta.',
+  Strings.authorizationCode: 'Código de autorización',
+  Strings.authorizationCodeDesc:
+      'Este código de 6 dígitos permite a un usuario VIP vincular tu dispositivo. Se actualiza cada 15 minutos.',
+  Strings.shareWithPreUser: 'Compartir con usuario Pre',
+  Strings.shareWithPreUserDesc:
+      'Dile al usuario VIP este código para que pueda ingresarlo en su dispositivo y autorizarte.',
+  Strings.waitingForAuthorization: 'Esperando autorización',
+  Strings.waitingForAuthorizationDesc:
+      'Por favor, mantén esta página abierta.\nUna vez aprobado, tu cuenta se actualizará automáticamente y se reconectará.',
+  Strings.enterCode: 'Ingresar código',
+  Strings.enterCodeDesc:
+      'Ingresa el código de 6 dígitos que se muestra en el otro dispositivo (usuario gratuito). Este código se actualiza cada 15 minutos.',
+  Strings.verifyDevice: 'Verificar dispositivo',
+  Strings.verifyDeviceDesc:
+      'Verificaremos si el código ingresado coincide con un dispositivo activo esperando autorización.',
+  Strings.authorizationSuccessful: 'Autorización exitosa',
+  Strings.authorizationSuccessfulDesc:
+      'Una vez confirmado, el dispositivo se actualizará automáticamente y se vinculará a tu cuenta.',
+  Strings.deviceLimitReached: 'Límite de dispositivos alcanzado',
+  Strings.deviceLimitMessage: 'Solo puedes autorizar hasta',
+  Strings.devices: 'dispositivos',
+  Strings.deviceAuthorized: 'Dispositivo autorizado',
+  Strings.deviceAuthorizedMessage:
+      'El nuevo dispositivo ha sido autorizado con éxito',
+  Strings.relieveDevice: 'Liberar dispositivo',
+  Strings.relieveDeviceMessage: '¿Estás seguro de que quieres liberar',
+  Strings.relieveDeviceLoseAccess:
+      'Este dispositivo perderá el acceso Premium.',
+  Strings.deviceRelieved: 'Dispositivo liberado',
+  Strings.deviceRelievedMessage:
+      'ha sido eliminado de los dispositivos autorizados',
+  Strings.currentDevice: 'Dispositivo actual',
+  Strings.androidDevices: 'Dispositivos Android',
+  Strings.authCodeCopied: 'Código de autorización copiado al portapapeles',
+
+  // Pre Code Email
+  Strings.codeBackedUpMessage:
+      'Tu código se respaldará en este correo electrónico.',
+  Strings.enterYourEmail: 'Ingresa tu correo electrónico',
+  Strings.sendYourEmail: 'Enviar tu correo',
+  Strings.yourPreCredential: 'Tu credencial Pre',
+  Strings.yourPreCredentialDesc:
+      'Esta es tu credencial VIP. Por favor, guárdala de forma segura y no la compartas con nadie.',
+  Strings.secureEmailBackup: 'Respaldo de correo seguro',
+  Strings.secureEmailBackupDesc:
+      'Te enviaremos un correo electrónico con esta credencial a tu dirección de correo especificada para su custodia.',
+  Strings.sendAndSave: 'Enviar y guardar',
+  Strings.sendAndSaveDesc:
+      'Después de enviar el correo, te recomendamos que también guardes esta credencial en una ubicación segura en tu dispositivo.',
+
+  // Routing Mode
+  Strings.smart: 'Inteligente',
+  Strings.smartModeDesc:
+      'Las redes local y VPN coexisten, y la ruta óptima se selecciona inteligentemente.',
+  Strings.global: 'Global',
+  Strings.globalModeDesc:
+      'Todo el tráfico se enruta a través del servidor VPN para garantizar la máxima privacidad y seguridad.',
+
+  // Subscription Plans
+  Strings.perYear: 'Por año',
+  Strings.yearlyPlan: 'Plan anual',
+  Strings.mostlyChoose: 'Más elegido',
+  Strings.once: 'una vez',
+  Strings.lifeTime: 'De por vida',
+  Strings.monthPlan: 'Plan mensual',
+  Strings.perWeek: 'Por semana',
+  Strings.weekPlan: 'Plan semanal',
+  Strings.limitedTime: 'Tiempo limitado',
+  Strings.subscriptionChanged: 'Plan de suscripción cambiado con éxito',
+  Strings.restoringPurchases: 'Restaurando compras...',
+  Strings.openingPaymentSupport: 'Abriendo soporte de pago...',
+  Strings.info: 'Información',
+
+  // Other messages
+  Strings.vpnConnectionError: 'Error de conexión VPN',
+  Strings.vpnServiceDisconnected:
+      'El servicio VPN se desconectó inesperadamente',
+  Strings.failedCaptureScreenshot: 'Error al capturar la captura de pantalla',
+  Strings.imageSavedToAlbum: 'La imagen se ha guardado en tu álbum local',
+  Strings.failedSaveImage: 'Error al guardar la imagen en la galería',
+  Strings.failedToSave: 'Error al guardar',
+  Strings.failedSendEmail: 'Error al enviar el correo',
+
+  // Connection status
+  Strings.activeTime: 'Tiempo activo',
 };

+ 108 - 0
lib/config/translations/fa_IR/fa_ir_translation.dart

@@ -141,4 +141,112 @@ const Map<String, String> faIR = {
   // more pages
   Strings.sendPreCodeToEmail: 'ارسال پیش کد به ایمیل',
   Strings.selectServer: 'انتخاب سرور',
+
+  // Dialog messages
+  Strings.premiumActivated: 'پریمیوم با موفقیت فعال شد!',
+  Strings.premiumActivatedMessage:
+      'شما به پریمیوم ارتقا یافتید. از تمام ویژگی‌های پیشرفته و تجربه مرور بهبود یافته لذت ببرید.',
+  Strings.gotIt: 'متوجه شدم',
+  Strings.emailSent: 'ایمیل با موفقیت ارسال شد',
+  Strings.emailSentMessage:
+      'کد Pre شما به ایمیلتان ارسال شد.\nلطفاً صندوق ورودی (و پوشه اسپم) خود را بررسی کنید.',
+  Strings.noInternetConnection: 'اتصال اینترنتی وجود ندارد',
+  Strings.noInternetMessage:
+      'به نظر می‌رسد شما آفلاین هستید. لطفاً اتصال اینترنت خود را بررسی کرده و دوباره امتحان کنید.',
+  Strings.logOut: 'خروج',
+  Strings.logOutConfirmMessage:
+      'آیا مطمئن هستید که می‌خواهید خارج شوید؟ برای دسترسی به ویژگی‌های پریمیوم باید دوباره وارد شوید.',
+  Strings.thankYouFeedback: 'از بازخورد شما متشکریم!',
+  Strings.feedbackMessage:
+      'متأسفیم که از تجربه خود لذت نمی‌برید. تمام تلاش خود را برای بهبود آن به زودی انجام خواهیم داد.',
+  Strings.done: 'انجام شد',
+  Strings.whatIsUid: 'UID چیست؟',
+  Strings.uidMessage:
+      'شناسه دستگاه (UID) این شناسه منحصر به فرد دستگاه شماست. ارائه این شناسه به تیم پشتیبانی ما کمک می‌کند تا دستگاه شما را تأیید کرده و مشکلات شما را سریع‌تر حل کند.',
+  Strings.confirm: 'تأیید',
+
+  // Device Authorization
+  Strings.copy: 'کپی',
+  Strings.pleaseKeepPageOpen: 'لطفاً این صفحه را باز نگه دارید.',
+  Strings.authorizationCode: 'کد مجوز',
+  Strings.authorizationCodeDesc:
+      'این کد 6 رقمی به کاربر VIP اجازه می‌دهد تا دستگاه شما را پیوند دهد. هر 15 دقیقه یکبار تازه می‌شود.',
+  Strings.shareWithPreUser: 'اشتراک‌گذاری با کاربر Pre',
+  Strings.shareWithPreUserDesc:
+      'این کد را به کاربر VIP بگویید تا بتواند آن را در دستگاه خود وارد کرده و شما را مجاز کند.',
+  Strings.waitingForAuthorization: 'در انتظار مجوز',
+  Strings.waitingForAuthorizationDesc:
+      'لطفاً این صفحه را باز نگه دارید.\nپس از تأیید، حساب شما به طور خودکار ارتقا یافته و مجدداً متصل می‌شود.',
+  Strings.enterCode: 'کد را وارد کنید',
+  Strings.enterCodeDesc:
+      'کد 6 رقمی نمایش داده شده در دستگاه دیگر (کاربر رایگان) را وارد کنید. این کد هر 15 دقیقه تازه می‌شود.',
+  Strings.verifyDevice: 'تأیید دستگاه',
+  Strings.verifyDeviceDesc:
+      'ما بررسی خواهیم کرد که آیا کد وارد شده با دستگاه فعالی که منتظر مجوز است مطابقت دارد.',
+  Strings.authorizationSuccessful: 'مجوز موفق',
+  Strings.authorizationSuccessfulDesc:
+      'پس از تأیید، دستگاه به طور خودکار ارتقا یافته و به حساب شما پیوند می‌خورد.',
+  Strings.deviceLimitReached: 'به محدودیت دستگاه رسیدید',
+  Strings.deviceLimitMessage: 'شما فقط می‌توانید تا',
+  Strings.devices: 'دستگاه مجاز کنید',
+  Strings.deviceAuthorized: 'دستگاه مجاز شد',
+  Strings.deviceAuthorizedMessage: 'دستگاه جدید با موفقیت مجاز شد',
+  Strings.relieveDevice: 'لغو مجوز دستگاه',
+  Strings.relieveDeviceMessage: 'آیا مطمئن هستید که می‌خواهید لغو کنید',
+  Strings.relieveDeviceLoseAccess:
+      'این دستگاه دسترسی پریمیوم را از دست خواهد داد.',
+  Strings.deviceRelieved: 'مجوز دستگاه لغو شد',
+  Strings.deviceRelievedMessage: 'از دستگاه‌های مجاز حذف شد',
+  Strings.currentDevice: 'دستگاه فعلی',
+  Strings.androidDevices: 'دستگاه‌های اندروید',
+  Strings.authCodeCopied: 'کد مجوز در کلیپ‌بورد کپی شد',
+
+  // Pre Code Email
+  Strings.codeBackedUpMessage: 'کد شما در این ایمیل پشتیبان‌گیری خواهد شد.',
+  Strings.enterYourEmail: 'ایمیل خود را وارد کنید',
+  Strings.sendYourEmail: 'ایمیل خود را ارسال کنید',
+  Strings.yourPreCredential: 'اعتبارنامه Pre شما',
+  Strings.yourPreCredentialDesc:
+      'این اعتبارنامه VIP شماست. لطفاً آن را به طور ایمن ذخیره کرده و با کسی به اشتراک نگذارید.',
+  Strings.secureEmailBackup: 'پشتیبان‌گیری ایمن از ایمیل',
+  Strings.secureEmailBackupDesc:
+      'ما ایمیلی حاوی این اعتبارنامه را به آدرس ایمیل مشخص شده شما برای نگهداری ارسال خواهیم کرد.',
+  Strings.sendAndSave: 'ارسال و ذخیره',
+  Strings.sendAndSaveDesc:
+      'پس از ارسال ایمیل، توصیه می‌کنیم این اعتبارنامه را در مکانی امن در دستگاه خود نیز ذخیره کنید.',
+
+  // Routing Mode
+  Strings.smart: 'هوشمند',
+  Strings.smartModeDesc:
+      'شبکه‌های محلی و VPN همزیستی دارند و مسیر بهینه به طور هوشمند انتخاب می‌شود.',
+  Strings.global: 'جهانی',
+  Strings.globalModeDesc:
+      'تمام ترافیک از طریق سرور VPN هدایت می‌شود تا حداکثر حریم خصوصی و امنیت تضمین شود.',
+
+  // Subscription Plans
+  Strings.perYear: 'در سال',
+  Strings.yearlyPlan: 'طرح سالانه',
+  Strings.mostlyChoose: 'بیشترین انتخاب',
+  Strings.once: 'یکبار',
+  Strings.lifeTime: 'مادام‌العمر',
+  Strings.monthPlan: 'طرح ماهانه',
+  Strings.perWeek: 'در هفته',
+  Strings.weekPlan: 'طرح هفتگی',
+  Strings.limitedTime: 'زمان محدود',
+  Strings.subscriptionChanged: 'طرح اشتراک با موفقیت تغییر کرد',
+  Strings.restoringPurchases: 'بازیابی خریدها...',
+  Strings.openingPaymentSupport: 'باز کردن پشتیبانی پرداخت...',
+  Strings.info: 'اطلاعات',
+
+  // Other messages
+  Strings.vpnConnectionError: 'خطای اتصال VPN',
+  Strings.vpnServiceDisconnected: 'سرویس VPN به طور غیرمنتظره قطع شد',
+  Strings.failedCaptureScreenshot: 'عکس‌برداری از صفحه ناموفق بود',
+  Strings.imageSavedToAlbum: 'تصویر در آلبوم محلی شما ذخیره شد',
+  Strings.failedSaveImage: 'ذخیره تصویر در گالری ناموفق بود',
+  Strings.failedToSave: 'ذخیره ناموفق بود',
+  Strings.failedSendEmail: 'ارسال ایمیل ناموفق بود',
+
+  // Connection status
+  Strings.activeTime: 'زمان فعال',
 };

+ 111 - 0
lib/config/translations/fr_FR/fr_fr_translation.dart

@@ -144,4 +144,115 @@ const Map<String, String> frFR = {
   // more pages
   Strings.sendPreCodeToEmail: 'Envoyer le pré-code par e-mail',
   Strings.selectServer: 'Sélectionner le serveur',
+
+  // Dialog messages
+  Strings.premiumActivated: 'Premium activé avec succès !',
+  Strings.premiumActivatedMessage:
+      'Vous avez été mis à niveau vers Premium. Profitez de toutes les fonctionnalités avancées et d\'une expérience de navigation améliorée.',
+  Strings.gotIt: 'Compris',
+  Strings.emailSent: 'E-mail envoyé avec succès',
+  Strings.emailSentMessage:
+      'Votre code Pre a été envoyé à votre e-mail.\nVeuillez vérifier votre boîte de réception (et dossier spam).',
+  Strings.noInternetConnection: 'Pas de connexion Internet',
+  Strings.noInternetMessage:
+      'Il semble que vous soyez hors ligne. Veuillez vérifier votre connexion Internet et réessayer.',
+  Strings.logOut: 'Se déconnecter',
+  Strings.logOutConfirmMessage:
+      'Êtes-vous sûr de vouloir vous déconnecter ? Vous devrez vous reconnecter pour accéder à vos fonctionnalités Premium.',
+  Strings.thankYouFeedback: 'Merci pour vos commentaires !',
+  Strings.feedbackMessage:
+      'Nous sommes désolés que vous ne profitiez pas de votre expérience. Nous ferons de notre mieux pour l\'améliorer bientôt.',
+  Strings.done: 'Terminé',
+  Strings.whatIsUid: 'Qu\'est-ce que l\'UID ?',
+  Strings.uidMessage:
+      'ID de l\'appareil (UID) Il s\'agit de l\'identifiant unique de votre appareil. Fournir cet ID aide notre équipe d\'assistance à vérifier votre appareil et à résoudre vos problèmes plus rapidement.',
+  Strings.confirm: 'Confirmer',
+
+  // Device Authorization
+  Strings.copy: 'Copier',
+  Strings.pleaseKeepPageOpen: 'Veuillez garder cette page ouverte.',
+  Strings.authorizationCode: 'Code d\'autorisation',
+  Strings.authorizationCodeDesc:
+      'Ce code à 6 chiffres permet à un utilisateur VIP de lier votre appareil. Il se rafraîchit toutes les 15 minutes.',
+  Strings.shareWithPreUser: 'Partager avec l\'utilisateur Pre',
+  Strings.shareWithPreUserDesc:
+      'Dites à l\'utilisateur VIP ce code afin qu\'il puisse le saisir sur son appareil pour vous autoriser.',
+  Strings.waitingForAuthorization: 'En attente d\'autorisation',
+  Strings.waitingForAuthorizationDesc:
+      'Veuillez garder cette page ouverte.\nUne fois approuvé, votre compte sera automatiquement mis à niveau et reconnecté.',
+  Strings.enterCode: 'Entrer le code',
+  Strings.enterCodeDesc:
+      'Saisissez le code à 6 chiffres affiché sur l\'autre appareil (utilisateur gratuit). Ce code se rafraîchit toutes les 15 minutes.',
+  Strings.verifyDevice: 'Vérifier l\'appareil',
+  Strings.verifyDeviceDesc:
+      'Nous vérifierons si le code saisi correspond à un appareil actif en attente d\'autorisation.',
+  Strings.authorizationSuccessful: 'Autorisation réussie',
+  Strings.authorizationSuccessfulDesc:
+      'Une fois confirmé, l\'appareil sera automatiquement mis à niveau et lié à votre compte.',
+  Strings.deviceLimitReached: 'Limite d\'appareils atteinte',
+  Strings.deviceLimitMessage: 'Vous ne pouvez autoriser que',
+  Strings.devices: 'appareils',
+  Strings.deviceAuthorized: 'Appareil autorisé',
+  Strings.deviceAuthorizedMessage:
+      'Le nouvel appareil a été autorisé avec succès',
+  Strings.relieveDevice: 'Libérer l\'appareil',
+  Strings.relieveDeviceMessage: 'Êtes-vous sûr de vouloir libérer',
+  Strings.relieveDeviceLoseAccess: 'Cet appareil perdra l\'accès Premium.',
+  Strings.deviceRelieved: 'Appareil libéré',
+  Strings.deviceRelievedMessage: 'a été retiré des appareils autorisés',
+  Strings.currentDevice: 'Appareil actuel',
+  Strings.androidDevices: 'Appareils Android',
+  Strings.authCodeCopied: 'Code d\'autorisation copié dans le presse-papiers',
+
+  // Pre Code Email
+  Strings.codeBackedUpMessage: 'Votre code sera sauvegardé dans cet e-mail.',
+  Strings.enterYourEmail: 'Entrez votre e-mail',
+  Strings.sendYourEmail: 'Envoyer votre e-mail',
+  Strings.yourPreCredential: 'Votre identifiant Pre',
+  Strings.yourPreCredentialDesc:
+      'Il s\'agit de votre identifiant VIP. Veuillez le conserver en toute sécurité et ne le partagez avec personne.',
+  Strings.secureEmailBackup: 'Sauvegarde e-mail sécurisée',
+  Strings.secureEmailBackupDesc:
+      'Nous vous enverrons un e-mail contenant cet identifiant à votre adresse e-mail spécifiée pour sa conservation.',
+  Strings.sendAndSave: 'Envoyer et enregistrer',
+  Strings.sendAndSaveDesc:
+      'Après l\'envoi de l\'e-mail, nous vous recommandons également d\'enregistrer cet identifiant dans un emplacement sécurisé sur votre appareil.',
+
+  // Routing Mode
+  Strings.smart: 'Intelligent',
+  Strings.smartModeDesc:
+      'Les réseaux local et VPN coexistent et la route optimale est sélectionnée intelligemment.',
+  Strings.global: 'Global',
+  Strings.globalModeDesc:
+      'Tout le trafic est acheminé via le serveur VPN pour garantir une confidentialité et une sécurité maximales.',
+
+  // Subscription Plans
+  Strings.perYear: 'Par an',
+  Strings.yearlyPlan: 'Forfait annuel',
+  Strings.mostlyChoose: 'Le plus choisi',
+  Strings.once: 'une fois',
+  Strings.lifeTime: 'À vie',
+  Strings.monthPlan: 'Forfait mensuel',
+  Strings.perWeek: 'Par semaine',
+  Strings.weekPlan: 'Forfait hebdomadaire',
+  Strings.limitedTime: 'Durée limitée',
+  Strings.subscriptionChanged: 'Plan d\'abonnement modifié avec succès',
+  Strings.restoringPurchases: 'Restauration des achats...',
+  Strings.openingPaymentSupport: 'Ouverture du support de paiement...',
+  Strings.info: 'Information',
+
+  // Other messages
+  Strings.vpnConnectionError: 'Erreur de connexion VPN',
+  Strings.vpnServiceDisconnected:
+      'Le service VPN s\'est déconnecté de manière inattendue',
+  Strings.failedCaptureScreenshot: 'Échec de la capture d\'écran',
+  Strings.imageSavedToAlbum:
+      'L\'image a été enregistrée dans votre album local',
+  Strings.failedSaveImage:
+      'Échec de l\'enregistrement de l\'image dans la galerie',
+  Strings.failedToSave: 'Échec de l\'enregistrement',
+  Strings.failedSendEmail: 'Échec de l\'envoi de l\'e-mail',
+
+  // Connection status
+  Strings.activeTime: 'Temps actif',
 };

+ 98 - 0
lib/config/translations/ja_JP/ja_jp_translation.dart

@@ -136,4 +136,102 @@ const Map<String, String> jaJP = {
   // more pages
   Strings.sendPreCodeToEmail: 'プレコードをメールに送信',
   Strings.selectServer: 'サーバーを選択',
+
+  // Dialog messages
+  Strings.premiumActivated: 'Premiumが正常に有効化されました!',
+  Strings.premiumActivatedMessage:
+      'Premiumにアップグレードされました。すべての高度な機能と強化されたブラウジング体験をお楽しみください。',
+  Strings.gotIt: 'わかりました',
+  Strings.emailSent: 'メールの送信に成功しました',
+  Strings.emailSentMessage: 'プレコードがメールに送信されました。\n受信トレイ(および迷惑メールフォルダ)を確認してください。',
+  Strings.noInternetConnection: 'インターネット接続がありません',
+  Strings.noInternetMessage: 'オフラインのようです。インターネット接続を確認して、もう一度お試しください。',
+  Strings.logOut: 'ログアウト',
+  Strings.logOutConfirmMessage:
+      'ログアウトしてもよろしいですか?Premium機能にアクセスするには、再度サインインする必要があります。',
+  Strings.thankYouFeedback: 'フィードバックありがとうございます!',
+  Strings.feedbackMessage: 'ご満足いただけていないようで申し訳ございません。できるだけ早く改善できるよう最善を尽くします。',
+  Strings.done: '完了',
+  Strings.whatIsUid: 'UIDとは何ですか?',
+  Strings.uidMessage:
+      'デバイスID(UID)これはデバイスの一意の識別子です。このIDを提供することで、サポートチームがデバイスを確認し、問題をより迅速に解決することができます。',
+  Strings.confirm: '確認',
+
+  // Device Authorization
+  Strings.copy: 'コピー',
+  Strings.pleaseKeepPageOpen: 'このページを開いたままにしてください。',
+  Strings.authorizationCode: '認証コード',
+  Strings.authorizationCodeDesc:
+      'この6桁のコードにより、VIPユーザーがあなたのデバイスをリンクできます。15分ごとに更新されます。',
+  Strings.shareWithPreUser: 'Preユーザーと共有',
+  Strings.shareWithPreUserDesc: 'VIPユーザーにこのコードを伝えて、デバイスに入力してあなたを認証できるようにします。',
+  Strings.waitingForAuthorization: '認証待ち',
+  Strings.waitingForAuthorizationDesc:
+      'このページを開いたままにしてください。\n承認されると、アカウントが自動的にアップグレードされ、再接続されます。',
+  Strings.enterCode: 'コードを入力',
+  Strings.enterCodeDesc:
+      '他のデバイス(無料ユーザー)に表示されている6桁のコードを入力してください。このコードは15分ごとに更新されます。',
+  Strings.verifyDevice: 'デバイスを確認',
+  Strings.verifyDeviceDesc: '入力されたコードが認証を待っているアクティブなデバイスと一致するか確認します。',
+  Strings.authorizationSuccessful: '認証成功',
+  Strings.authorizationSuccessfulDesc:
+      '確認されると、デバイスが自動的にアップグレードされ、アカウントにリンクされます。',
+  Strings.deviceLimitReached: 'デバイス制限に達しました',
+  Strings.deviceLimitMessage: '認証できるのは最大',
+  Strings.devices: 'デバイス',
+  Strings.deviceAuthorized: 'デバイスが認証されました',
+  Strings.deviceAuthorizedMessage: '新しいデバイスが正常に認証されました',
+  Strings.relieveDevice: 'デバイスを解放',
+  Strings.relieveDeviceMessage: '本当に解放しますか',
+  Strings.relieveDeviceLoseAccess: 'このデバイスはPremiumアクセスを失います。',
+  Strings.deviceRelieved: 'デバイスが解放されました',
+  Strings.deviceRelievedMessage: '認証済みデバイスから削除されました',
+  Strings.currentDevice: '現在のデバイス',
+  Strings.androidDevices: 'Androidデバイス',
+  Strings.authCodeCopied: '認証コードがクリップボードにコピーされました',
+
+  // Pre Code Email
+  Strings.codeBackedUpMessage: 'コードはこのメールにバックアップされます。',
+  Strings.enterYourEmail: 'メールアドレスを入力',
+  Strings.sendYourEmail: 'メールを送信',
+  Strings.yourPreCredential: 'Preの認証情報',
+  Strings.yourPreCredentialDesc: 'これはあなたのVIP認証情報です。安全に保管し、誰とも共有しないでください。',
+  Strings.secureEmailBackup: '安全なメールバックアップ',
+  Strings.secureEmailBackupDesc: '指定されたメールアドレスに、この認証情報を含むメールを送信して保管します。',
+  Strings.sendAndSave: '送信して保存',
+  Strings.sendAndSaveDesc: 'メールを送信した後、この認証情報をデバイスの安全な場所にも保存することをお勧めします。',
+
+  // Routing Mode
+  Strings.smart: 'スマート',
+  Strings.smartModeDesc: 'ローカルネットワークとVPNネットワークが共存し、最適なルートがインテリジェントに選択されます。',
+  Strings.global: 'グローバル',
+  Strings.globalModeDesc:
+      'すべてのトラフィックがVPNサーバーを経由してルーティングされ、最大限のプライバシーとセキュリティが確保されます。',
+
+  // Subscription Plans
+  Strings.perYear: '年間',
+  Strings.yearlyPlan: '年間プラン',
+  Strings.mostlyChoose: '最も選ばれています',
+  Strings.once: '1回',
+  Strings.lifeTime: '生涯',
+  Strings.monthPlan: '月間プラン',
+  Strings.perWeek: '週間',
+  Strings.weekPlan: '週間プラン',
+  Strings.limitedTime: '期間限定',
+  Strings.subscriptionChanged: 'サブスクリプションプランが正常に変更されました',
+  Strings.restoringPurchases: '購入を復元中...',
+  Strings.openingPaymentSupport: '支払いサポートを開いています...',
+  Strings.info: '情報',
+
+  // Other messages
+  Strings.vpnConnectionError: 'VPN接続エラー',
+  Strings.vpnServiceDisconnected: 'VPNサービスが予期せず切断されました',
+  Strings.failedCaptureScreenshot: 'スクリーンショットのキャプチャに失敗しました',
+  Strings.imageSavedToAlbum: '画像がローカルアルバムに保存されました',
+  Strings.failedSaveImage: 'ギャラリーへの画像の保存に失敗しました',
+  Strings.failedToSave: '保存に失敗しました',
+  Strings.failedSendEmail: 'メールの送信に失敗しました',
+
+  // Connection status
+  Strings.activeTime: 'アクティブ時間',
 };

+ 95 - 0
lib/config/translations/ko_KR/ko_kr_translation.dart

@@ -133,4 +133,99 @@ const Map<String, String> koKR = {
   // more pages
   Strings.sendPreCodeToEmail: '이메일로 사전 코드 보내기',
   Strings.selectServer: '서버 선택',
+
+  // Dialog messages
+  Strings.premiumActivated: 'Premium이 성공적으로 활성화되었습니다!',
+  Strings.premiumActivatedMessage:
+      'Premium으로 업그레이드되었습니다. 모든 고급 기능과 향상된 브라우징 경험을 즐기세요.',
+  Strings.gotIt: '확인',
+  Strings.emailSent: '이메일이 성공적으로 전송되었습니다',
+  Strings.emailSentMessage: '사전 코드가 이메일로 전송되었습니다.\n받은편지함(및 스팸 폴더)을 확인하세요.',
+  Strings.noInternetConnection: '인터넷 연결 없음',
+  Strings.noInternetMessage: '오프라인 상태인 것 같습니다. 인터넷 연결을 확인하고 다시 시도하세요.',
+  Strings.logOut: '로그아웃',
+  Strings.logOutConfirmMessage: '로그아웃하시겠습니까? Premium 기능에 액세스하려면 다시 로그인해야 합니다.',
+  Strings.thankYouFeedback: '피드백 감사합니다!',
+  Strings.feedbackMessage: '경험이 만족스럽지 않으셔서 죄송합니다. 빠른 시일 내에 개선하도록 최선을 다하겠습니다.',
+  Strings.done: '완료',
+  Strings.whatIsUid: 'UID란 무엇인가요?',
+  Strings.uidMessage:
+      '장치 ID(UID) 이것은 장치의 고유 식별자입니다. 이 ID를 제공하면 지원 팀이 장치를 확인하고 문제를 더 빠르게 해결할 수 있습니다.',
+  Strings.confirm: '확인',
+
+  // Device Authorization
+  Strings.copy: '복사',
+  Strings.pleaseKeepPageOpen: '이 페이지를 계속 열어두세요.',
+  Strings.authorizationCode: '인증 코드',
+  Strings.authorizationCodeDesc:
+      '이 6자리 코드를 사용하면 VIP 사용자가 장치를 연결할 수 있습니다. 15분마다 새로고침됩니다.',
+  Strings.shareWithPreUser: 'Pre 사용자와 공유',
+  Strings.shareWithPreUserDesc: 'VIP 사용자에게 이 코드를 알려주면 장치에 입력하여 승인할 수 있습니다.',
+  Strings.waitingForAuthorization: '인증 대기 중',
+  Strings.waitingForAuthorizationDesc:
+      '이 페이지를 계속 열어두세요.\n승인되면 계정이 자동으로 업그레이드되고 다시 연결됩니다.',
+  Strings.enterCode: '코드 입력',
+  Strings.enterCodeDesc:
+      '다른 장치(무료 사용자)에 표시된 6자리 코드를 입력하세요. 이 코드는 15분마다 새로고침됩니다.',
+  Strings.verifyDevice: '장치 확인',
+  Strings.verifyDeviceDesc: '입력한 코드가 인증을 기다리는 활성 장치와 일치하는지 확인합니다.',
+  Strings.authorizationSuccessful: '인증 성공',
+  Strings.authorizationSuccessfulDesc: '확인되면 장치가 자동으로 업그레이드되고 계정에 연결됩니다.',
+  Strings.deviceLimitReached: '장치 한도 도달',
+  Strings.deviceLimitMessage: '최대',
+  Strings.devices: '장치만 승인할 수 있습니다',
+  Strings.deviceAuthorized: '장치 승인됨',
+  Strings.deviceAuthorizedMessage: '새 장치가 성공적으로 승인되었습니다',
+  Strings.relieveDevice: '장치 해제',
+  Strings.relieveDeviceMessage: '정말로 해제하시겠습니까',
+  Strings.relieveDeviceLoseAccess: '이 장치는 Premium 액세스를 잃게 됩니다.',
+  Strings.deviceRelieved: '장치 해제됨',
+  Strings.deviceRelievedMessage: '승인된 장치에서 제거되었습니다',
+  Strings.currentDevice: '현재 장치',
+  Strings.androidDevices: 'Android 장치',
+  Strings.authCodeCopied: '인증 코드가 클립보드에 복사되었습니다',
+
+  // Pre Code Email
+  Strings.codeBackedUpMessage: '코드가 이 이메일에 백업됩니다.',
+  Strings.enterYourEmail: '이메일을 입력하세요',
+  Strings.sendYourEmail: '이메일 보내기',
+  Strings.yourPreCredential: 'Pre 자격 증명',
+  Strings.yourPreCredentialDesc: '이것은 VIP 자격 증명입니다. 안전하게 보관하고 누구와도 공유하지 마세요.',
+  Strings.secureEmailBackup: '안전한 이메일 백업',
+  Strings.secureEmailBackupDesc: '지정된 이메일 주소로 이 자격 증명이 포함된 이메일을 보내드립니다.',
+  Strings.sendAndSave: '보내기 및 저장',
+  Strings.sendAndSaveDesc: '이메일을 보낸 후 이 자격 증명을 장치의 안전한 위치에도 저장하는 것이 좋습니다.',
+
+  // Routing Mode
+  Strings.smart: '스마트',
+  Strings.smartModeDesc: '로컬 및 VPN 네트워크가 공존하며 최적의 경로가 지능적으로 선택됩니다.',
+  Strings.global: '글로벌',
+  Strings.globalModeDesc: '모든 트래픽이 VPN 서버를 통해 라우팅되어 최대 개인 정보 보호 및 보안이 보장됩니다.',
+
+  // Subscription Plans
+  Strings.perYear: '연간',
+  Strings.yearlyPlan: '연간 플랜',
+  Strings.mostlyChoose: '가장 많이 선택',
+  Strings.once: '1회',
+  Strings.lifeTime: '평생',
+  Strings.monthPlan: '월간 플랜',
+  Strings.perWeek: '주간',
+  Strings.weekPlan: '주간 플랜',
+  Strings.limitedTime: '기간 한정',
+  Strings.subscriptionChanged: '구독 플랜이 성공적으로 변경되었습니다',
+  Strings.restoringPurchases: '구매 복원 중...',
+  Strings.openingPaymentSupport: '결제 지원 열기 중...',
+  Strings.info: '정보',
+
+  // Other messages
+  Strings.vpnConnectionError: 'VPN 연결 오류',
+  Strings.vpnServiceDisconnected: 'VPN 서비스가 예기치 않게 연결 해제되었습니다',
+  Strings.failedCaptureScreenshot: '스크린샷 캡처 실패',
+  Strings.imageSavedToAlbum: '이미지가 로컬 앨범에 저장되었습니다',
+  Strings.failedSaveImage: '갤러리에 이미지 저장 실패',
+  Strings.failedToSave: '저장 실패',
+  Strings.failedSendEmail: '이메일 전송 실패',
+
+  // Connection status
+  Strings.activeTime: '활성 시간',
 };

+ 112 - 0
lib/config/translations/my_MM/my_mm_translation.dart

@@ -144,4 +144,116 @@ const Map<String, String> myMM = {
   // more pages
   Strings.sendPreCodeToEmail: 'အီးမေးလ်သို့ ကြိုတင်ကုဒ် ပို့ပါ',
   Strings.selectServer: 'ဆာဗာရွေးချယ်ပါ',
+
+  // Dialog messages
+  Strings.premiumActivated: 'Premium ကို အောင်မြင်စွာ အသက်သွင်းပြီးပါပြီ!',
+  Strings.premiumActivatedMessage:
+      'သင့်ကို Premium သို့ အဆင့်မြှင့်တင်ပြီးပါပြီ။ အဆင့်မြင့်လုပ်ဆောင်ချက်များနှင့် ပိုမိုကောင်းမွန်သော ကြည့်ရှုမှုအတွေ့အကြုံကို ခံစားပါ။',
+  Strings.gotIt: 'နားလည်ပါပြီ',
+  Strings.emailSent: 'အီးမေးလ်ပို့ပြီးပါပြီ',
+  Strings.emailSentMessage:
+      'သင့်ရဲ့ Pre ကုဒ်ကို သင့်အီးမေးလ်သို့ ပေးပို့ပြီးပါပြီ။\nကျေးဇူးပြု၍ သင့်အဝင်စာတွဲ (နှင့် spam ဖိုင်တွဲ) ကိုစစ်ဆေးပါ။',
+  Strings.noInternetConnection: 'အင်တာနက်ချိတ်ဆက်မှုမရှိပါ',
+  Strings.noInternetMessage:
+      'သင်သည် အော့ဖ်လိုင်းဖြစ်နေပုံရပါသည်။ ကျေးဇူးပြု၍ သင့်အင်တာနက်ချိတ်ဆက်မှုကို စစ်ဆေးပြီး ထပ်မံကြိုးစားပါ။',
+  Strings.logOut: 'ထွက်မည်',
+  Strings.logOutConfirmMessage:
+      'သင် ထွက်လိုသည်မှာ သေချာပါသလား။ Premium လုပ်ဆောင်ချက်များကို အသုံးပြုရန် သင် ထပ်မံဝင်ရောက်ရမည်ဖြစ်ပါသည်။',
+  Strings.thankYouFeedback: 'သင့်အကြံပြုချက်အတွက် ကျေးဇူးတင်ပါသည်!',
+  Strings.feedbackMessage:
+      'သင့်အတွေ့အကြုံကို ကျေနပ်မှုမရှိသည်ကို ဝမ်းနည်းပါသည်။ မကြာမီတိုးတက်အောင် ကျွန်ုပ်တို့ အတတ်နိုင်ဆုံးကြိုးစားပါမည်။',
+  Strings.done: 'ပြီးပါပြီ',
+  Strings.whatIsUid: 'UID ဆိုသည်မှာ အဘယ်နည်း?',
+  Strings.uidMessage:
+      'စက်ပစ္စည်း ID (UID) ဤသည်မှာ သင့်စက်ပစ္စည်း၏ထူးခြားသော သတ်မှတ်မှုဖြစ်ပါသည်။ ဤ ID ကို ပံ့ပိုးပေးခြင်းဖြင့် ကျွန်ုပ်တို့၏ပံ့ပိုးမှုအဖွဲ့သည် သင့်စက်ပစ္စည်းကိုစစ်ဆေးပြီး သင့်ပြဿနာများကို ပိုမိုလျင်မြန်စွာ ဖြေရှင်းနိုင်ပါသည်။',
+  Strings.confirm: 'အတည်ပြုမည်',
+
+  // Device Authorization
+  Strings.copy: 'ကူးယူမည်',
+  Strings.pleaseKeepPageOpen: 'ဤစာမျက်နှာကို ဖွင့်ထားပေးပါ။',
+  Strings.authorizationCode: 'ခွင့်ပြုကုဒ်',
+  Strings.authorizationCodeDesc:
+      'ဤ ၆ လုံးကုဒ်သည် VIP အသုံးပြုသူအား သင့်စက်ပစ္စည်းကို ချိတ်ဆက်ခွင့်ပြုပါသည်။ ၁၅ မိနစ်တိုင်း အသစ်ပြောင်းလဲပါသည်။',
+  Strings.shareWithPreUser: 'Pre အသုံးပြုသူနှင့် မျှဝေမည်',
+  Strings.shareWithPreUserDesc:
+      'VIP အသုံးပြုသူအား ဤကုဒ်ကိုပြောပြပါ သူတို့သည် ၎င်းတို့၏စက်ပစ္စည်းတွင် ထည့်သွင်းပြီး သင့်ကို ခွင့်ပြုနိုင်ပါသည်။',
+  Strings.waitingForAuthorization: 'ခွင့်ပြုချက်အတွက် စောင့်နေသည်',
+  Strings.waitingForAuthorizationDesc:
+      'ဤစာမျက်နှာကို ဖွင့်ထားပေးပါ။\nခွင့်ပြုပြီးသည့်အခါ သင့်အကောင့်သည် အလိုအလျောက် အဆင့်မြှင့်တင်ပြီး ပြန်လည်ချိတ်ဆက်မည်ဖြစ်ပါသည်။',
+  Strings.enterCode: 'ကုဒ်ထည့်ပါ',
+  Strings.enterCodeDesc:
+      'အခြားစက်ပစ္စည်း (အခမဲ့အသုံးပြုသူ) တွင်ပြသထားသော ၆ လုံးကုဒ်ကို ထည့်သွင်းပါ။ ဤကုဒ်သည် ၁၅ မိနစ်တိုင်း အသစ်ပြောင်းလဲပါသည်။',
+  Strings.verifyDevice: 'စက်ပစ္စည်းစစ်ဆေးမည်',
+  Strings.verifyDeviceDesc:
+      'ထည့်သွင်းထားသော ကုဒ်သည် ခွင့်ပြုချက်ကိုစောင့်နေသော တက်ကြွသောစက်ပစ္စည်းနှင့် ကိုက်ညီမှုရှိမရှိ စစ်ဆေးပါမည်။',
+  Strings.authorizationSuccessful: 'ခွင့်ပြုချက်အောင်မြင်ပါသည်',
+  Strings.authorizationSuccessfulDesc:
+      'အတည်ပြုပြီးသည့်အခါ စက်ပစ္စည်းသည် အလိုအလျောက် အဆင့်မြှင့်တင်ပြီး သင့်အကောင့်နှင့် ချိတ်ဆက်မည်ဖြစ်ပါသည်။',
+  Strings.deviceLimitReached: 'စက်ပစ္စည်းကန့်သတ်ချက် ရောက်ပါပြီ',
+  Strings.deviceLimitMessage: 'သင်သည် အများဆုံး',
+  Strings.devices: 'စက်ပစ္စည်းများကိုသာ ခွင့်ပြုနိုင်သည်',
+  Strings.deviceAuthorized: 'စက်ပစ္စည်း ခွင့်ပြုပြီး',
+  Strings.deviceAuthorizedMessage:
+      'စက်ပစ္စည်းအသစ်ကို အောင်မြင်စွာ ခွင့်ပြုပြီးပါပြီ',
+  Strings.relieveDevice: 'စက်ပစ္စည်းကို ဖယ်ရှားမည်',
+  Strings.relieveDeviceMessage: 'သင် ဖယ်ရှားလိုသည်မှာ သေချာပါသလား',
+  Strings.relieveDeviceLoseAccess:
+      'ဤစက်ပစ္စည်းသည် Premium အသုံးပြုခွင့်ကို ဆုံးရှုံးမည်ဖြစ်ပါသည်။',
+  Strings.deviceRelieved: 'စက်ပစ္စည်းကို ဖယ်ရှားပြီး',
+  Strings.deviceRelievedMessage:
+      'ခွင့်ပြုထားသော စက်ပစ္စည်းများမှ ဖယ်ရှားပြီးပါပြီ',
+  Strings.currentDevice: 'လက်ရှိစက်ပစ္စည်း',
+  Strings.androidDevices: 'Android စက်ပစ္စည်းများ',
+  Strings.authCodeCopied: 'ခွင့်ပြုကုဒ်ကို clipboard သို့ ကူးယူပြီးပါပြီ',
+
+  // Pre Code Email
+  Strings.codeBackedUpMessage: 'သင့်ကုဒ်ကို ဤအီးမေးလ်တွင် အရန်သိမ်းဆည်းမည်။',
+  Strings.enterYourEmail: 'သင့်အီးမေးလ်ထည့်ပါ',
+  Strings.sendYourEmail: 'သင့်အီးမေးလ်ပို့ပါ',
+  Strings.yourPreCredential: 'သင့် Pre အထောက်အထား',
+  Strings.yourPreCredentialDesc:
+      'ဤသည်မှာ သင့် VIP အထောက်အထားဖြစ်ပါသည်။ ကျေးဇူးပြု၍ လုံခြုံစွာသိမ်းဆည်းပြီး မည်သူနှင့်မျှ မဝေမျှပါနှင့်။',
+  Strings.secureEmailBackup: 'လုံခြုံသော အီးမေးလ်အရန်သိမ်းဆည်းမှု',
+  Strings.secureEmailBackupDesc:
+      'ကျွန်ုပ်တို့သည် ဤအထောက်အထားပါဝင်သော အီးမေးလ်ကို သင့်သတ်မှတ်ထားသော အီးမေးလ်လိပ်စာသို့ သိမ်းဆည်းရန် ပေးပို့ပါမည်။',
+  Strings.sendAndSave: 'ပို့ပြီး သိမ်းဆည်းမည်',
+  Strings.sendAndSaveDesc:
+      'အီးမေးလ်ပို့ပြီးနောက် ဤအထောက်အထားကို သင့်စက်ပစ္စည်းတွင် လုံခြုံသောနေရာတွင် သိမ်းဆည်းရန် အကြံပြုအပ်ပါသည်။',
+
+  // Routing Mode
+  Strings.smart: 'လိမ္မာသော',
+  Strings.smartModeDesc:
+      'ဒေသခံနှင့် VPN ကွန်ရက်များ အတူတကွရှိနေပြီး အကောင်းဆုံးလမ်းကြောင်းကို လိမ္မာစွာရွေးချယ်ပါသည်။',
+  Strings.global: 'ကမ္ဘာလုံးဆိုင်ရာ',
+  Strings.globalModeDesc:
+      'လုံခြုံမှုနှင့်ကိုယ်ရေးကိုယ်တာလွတ်လပ်မှု အများဆုံးသေချာစေရန် အသွားအလာအားလုံးကို VPN ဆာဗာမှတဆင့် လမ်းကြောင်းချပါသည်။',
+
+  // Subscription Plans
+  Strings.perYear: 'နှစ်စဉ်',
+  Strings.yearlyPlan: 'နှစ်စဉ်အစီအစဉ်',
+  Strings.mostlyChoose: 'အများဆုံးရွေးချယ်သည်',
+  Strings.once: 'တစ်ကြိမ်',
+  Strings.lifeTime: 'တသက်လုံး',
+  Strings.monthPlan: 'လစဉ်အစီအစဉ်',
+  Strings.perWeek: 'အပတ်စဉ်',
+  Strings.weekPlan: 'အပတ်စဉ်အစီအစဉ်',
+  Strings.limitedTime: 'အချိန်အကန့်အသတ်ရှိ',
+  Strings.subscriptionChanged:
+      'စာရင်းသွင်းအစီအစဉ်ကို အောင်မြင်စွာပြောင်းလဲပြီးပါပြီ',
+  Strings.restoringPurchases: 'ဝယ်ယူမှုများကို ပြန်လည်ရယူနေသည်...',
+  Strings.openingPaymentSupport: 'ငွေပေးချေမှုပံ့ပိုးမှုကို ဖွင့်နေသည်...',
+  Strings.info: 'အချက်အလက်',
+
+  // Other messages
+  Strings.vpnConnectionError: 'VPN ချိတ်ဆက်မှုအမှား',
+  Strings.vpnServiceDisconnected:
+      'VPN ဝန်ဆောင်မှုသည် မမျှော်လင့်ဘဲ ချိတ်ဆက်မှုပြတ်တောက်သွားပါသည်',
+  Strings.failedCaptureScreenshot: 'စခရင်းဓာတ်ပုံရိုက်ရန် မအောင်မြင်ပါ',
+  Strings.imageSavedToAlbum: 'ပုံကို သင့်ဒေသခံအယ်လ်ဘမ်တွင် သိမ်းဆည်းပြီးပါပြီ',
+  Strings.failedSaveImage: 'ပုံကို ဂယ်လာရီတွင် သိမ်းဆည်းရန် မအောင်မြင်ပါ',
+  Strings.failedToSave: 'သိမ်းဆည်းရန် မအောင်မြင်ပါ',
+  Strings.failedSendEmail: 'အီးမေးလ်ပို့ရန် မအောင်မြင်ပါ',
+
+  // Connection status
+  Strings.activeTime: 'တက်ကြွသောအချိန်',
 };

+ 108 - 0
lib/config/translations/ru_RU/ru_ru_translation.dart

@@ -144,4 +144,112 @@ const Map<String, String> ruRU = {
   // more pages
   Strings.sendPreCodeToEmail: 'Отправить Пре-код на Email',
   Strings.selectServer: 'Выбрать Сервер',
+
+  // Dialog messages
+  Strings.premiumActivated: 'Premium успешно активирован!',
+  Strings.premiumActivatedMessage:
+      'Вы были переведены на Premium. Наслаждайтесь всеми расширенными функциями и улучшенным опытом просмотра.',
+  Strings.gotIt: 'Понятно',
+  Strings.emailSent: 'Email успешно отправлен',
+  Strings.emailSentMessage:
+      'Ваш Pre-код отправлен на ваш email.\nПожалуйста, проверьте папку входящих (и папку спама).',
+  Strings.noInternetConnection: 'Нет подключения к Интернету',
+  Strings.noInternetMessage:
+      'Похоже, вы не в сети. Пожалуйста, проверьте подключение к интернету и попробуйте снова.',
+  Strings.logOut: 'Выйти',
+  Strings.logOutConfirmMessage:
+      'Вы уверены, что хотите выйти? Вам нужно будет войти снова, чтобы получить доступ к функциям Premium.',
+  Strings.thankYouFeedback: 'Спасибо за ваш отзыв!',
+  Strings.feedbackMessage:
+      'Нам жаль, что вы не получаете удовольствие от использования. Мы сделаем все возможное, чтобы улучшить это в ближайшее время.',
+  Strings.done: 'Готово',
+  Strings.whatIsUid: 'Что такое UID?',
+  Strings.uidMessage:
+      'ID устройства (UID) Это уникальный идентификатор вашего устройства. Предоставление этого ID помогает нашей службе поддержки проверить ваше устройство и быстрее решить ваши проблемы.',
+  Strings.confirm: 'Подтвердить',
+
+  // Device Authorization
+  Strings.copy: 'Копировать',
+  Strings.pleaseKeepPageOpen: 'Пожалуйста, держите эту страницу открытой.',
+  Strings.authorizationCode: 'Код авторизации',
+  Strings.authorizationCodeDesc:
+      'Этот 6-значный код позволяет VIP-пользователю связать ваше устройство. Обновляется каждые 15 минут.',
+  Strings.shareWithPreUser: 'Поделиться с Pre-пользователем',
+  Strings.shareWithPreUserDesc:
+      'Сообщите этот код VIP-пользователю, чтобы он мог ввести его на своем устройстве для вашей авторизации.',
+  Strings.waitingForAuthorization: 'Ожидание авторизации',
+  Strings.waitingForAuthorizationDesc:
+      'Пожалуйста, держите эту страницу открытой.\nПосле одобрения ваш аккаунт будет автоматически обновлен и переподключен.',
+  Strings.enterCode: 'Введите код',
+  Strings.enterCodeDesc:
+      'Введите 6-значный код, отображаемый на другом устройстве (бесплатный пользователь). Этот код обновляется каждые 15 минут.',
+  Strings.verifyDevice: 'Проверить устройство',
+  Strings.verifyDeviceDesc:
+      'Мы проверим, соответствует ли введенный код активному устройству, ожидающему авторизации.',
+  Strings.authorizationSuccessful: 'Авторизация успешна',
+  Strings.authorizationSuccessfulDesc:
+      'После подтверждения устройство будет автоматически обновлено и привязано к вашему аккаунту.',
+  Strings.deviceLimitReached: 'Достигнут лимит устройств',
+  Strings.deviceLimitMessage: 'Вы можете авторизовать только до',
+  Strings.devices: 'устройств',
+  Strings.deviceAuthorized: 'Устройство авторизовано',
+  Strings.deviceAuthorizedMessage: 'Новое устройство успешно авторизовано',
+  Strings.relieveDevice: 'Отозвать устройство',
+  Strings.relieveDeviceMessage: 'Вы уверены, что хотите отозвать',
+  Strings.relieveDeviceLoseAccess: 'Это устройство потеряет доступ к Premium.',
+  Strings.deviceRelieved: 'Устройство отозвано',
+  Strings.deviceRelievedMessage: 'было удалено из авторизованных устройств',
+  Strings.currentDevice: 'Текущее устройство',
+  Strings.androidDevices: 'Android-устройства',
+  Strings.authCodeCopied: 'Код авторизации скопирован в буфер обмена',
+
+  // Pre Code Email
+  Strings.codeBackedUpMessage:
+      'Ваш код будет создан резервную копию в этом email.',
+  Strings.enterYourEmail: 'Введите ваш email',
+  Strings.sendYourEmail: 'Отправить ваш Email',
+  Strings.yourPreCredential: 'Ваши Pre-учетные данные',
+  Strings.yourPreCredentialDesc:
+      'Это ваши VIP-учетные данные. Пожалуйста, храните их в безопасности и не делитесь ни с кем.',
+  Strings.secureEmailBackup: 'Безопасное резервное копирование на email',
+  Strings.secureEmailBackupDesc:
+      'Мы отправим email с этими учетными данными на указанный вами адрес электронной почты для хранения.',
+  Strings.sendAndSave: 'Отправить и сохранить',
+  Strings.sendAndSaveDesc:
+      'После отправки email мы также рекомендуем сохранить эти учетные данные в безопасном месте на вашем устройстве.',
+
+  // Routing Mode
+  Strings.smart: 'Умный',
+  Strings.smartModeDesc:
+      'Локальные и VPN-сети сосуществуют, оптимальный маршрут выбирается интеллектуально.',
+  Strings.global: 'Глобальный',
+  Strings.globalModeDesc:
+      'Весь трафик направляется через VPN-сервер для обеспечения максимальной конфиденциальности и безопасности.',
+
+  // Subscription Plans
+  Strings.perYear: 'В год',
+  Strings.yearlyPlan: 'Годовой план',
+  Strings.mostlyChoose: 'Чаще всего выбирают',
+  Strings.once: 'однократно',
+  Strings.lifeTime: 'Пожизненно',
+  Strings.monthPlan: 'Месячный план',
+  Strings.perWeek: 'В неделю',
+  Strings.weekPlan: 'Недельный план',
+  Strings.limitedTime: 'Ограниченное время',
+  Strings.subscriptionChanged: 'План подписки успешно изменен',
+  Strings.restoringPurchases: 'Восстановление покупок...',
+  Strings.openingPaymentSupport: 'Открытие поддержки платежей...',
+  Strings.info: 'Информация',
+
+  // Other messages
+  Strings.vpnConnectionError: 'Ошибка подключения VPN',
+  Strings.vpnServiceDisconnected: 'Служба VPN неожиданно отключилась',
+  Strings.failedCaptureScreenshot: 'Не удалось сделать снимок экрана',
+  Strings.imageSavedToAlbum: 'Изображение сохранено в вашем локальном альбоме',
+  Strings.failedSaveImage: 'Не удалось сохранить изображение в галерее',
+  Strings.failedToSave: 'Не удалось сохранить',
+  Strings.failedSendEmail: 'Не удалось отправить email',
+
+  // Connection status
+  Strings.activeTime: 'Активное время',
 };

+ 114 - 0
lib/config/translations/strings_enum.dart

@@ -151,4 +151,118 @@ class Strings {
   static const String myLang = 'မြန်မာဘာသာ';
   static const String arLang = 'عربي';
   static const String ruLang = 'Русский';
+
+  // Dialog messages
+  static const String premiumActivated = 'Premium Activated Successfully !';
+  static const String premiumActivatedMessage =
+      'You\'ve been upgraded to Premium. Enjoy all advanced features and an enhanced browsing experience.';
+  static const String gotIt = 'Got it';
+  static const String emailSent = 'Email Sent Successfully';
+  static const String emailSentMessage =
+      'Your Pre Code has been sent to your email.\nPlease check your inbox (and spam folder).';
+  static const String noInternetConnection = 'No Internet Connection';
+  static const String noInternetMessage =
+      'It looks like you\'re offline. Please check your internet connection and try again.';
+  static const String logOut = 'Log Out';
+  static const String logOutConfirmMessage =
+      'Are you sure you want to log out? You\'ll need to sign in again to access your Premium features.';
+  static const String thankYouFeedback = 'Thank you for your feedback!';
+  static const String feedbackMessage =
+      'We\'re sorry you\'re not enjoying your experience. We\'ll do our best to improve it soon.';
+  static const String done = 'Done';
+  static const String whatIsUid = 'What is UID?';
+  static const String uidMessage =
+      'Device ID (UID) This is your device\'s unique identifier. Providing this ID helps our support team verify your device and resolve your issues more quickly.';
+  static const String confirm = 'Confirm';
+
+  // Device Authorization
+  static const String copy = 'Copy';
+  static const String pleaseKeepPageOpen = 'Please keep this page open.';
+  static const String authorizationCode = 'Authorization Code';
+  static const String authorizationCodeDesc =
+      'This 6-digit code allows a VIP user to link your device. It refreshes every 15 minutes.';
+  static const String shareWithPreUser = 'Share with Pre User';
+  static const String shareWithPreUserDesc =
+      'Tell the VIP user this code so they can enter it on their device to authorize you.';
+  static const String waitingForAuthorization = 'Waiting for Authorization';
+  static const String waitingForAuthorizationDesc =
+      'Please keep this page open.\nOnce approved, your account will automatically upgrade and reconnect.';
+  static const String enterCode = 'Enter Code';
+  static const String enterCodeDesc =
+      'Input the 6-digit code shown on the other device (free user).This code refreshes every 15 minutes.';
+  static const String verifyDevice = 'Verify Device';
+  static const String verifyDeviceDesc =
+      'We\'ll check if the entered code matches an active device waiting for authorization.';
+  static const String authorizationSuccessful = 'Authorization Successful';
+  static const String authorizationSuccessfulDesc =
+      'Once confirmed, the device will automatically upgrade and link to your account.';
+  static const String deviceLimitReached = 'Device Limit Reached';
+  static const String deviceLimitMessage = 'You can only authorize up to';
+  static const String devices = 'devices';
+  static const String deviceAuthorized = 'Device Authorized';
+  static const String deviceAuthorizedMessage =
+      'New device has been successfully authorized';
+  static const String relieveDevice = 'Relieve Device';
+  static const String relieveDeviceMessage = 'Are you sure you want to relieve';
+  static const String relieveDeviceLoseAccess =
+      'This device will lose Premium access.';
+  static const String deviceRelieved = 'Device Relieved';
+  static const String deviceRelievedMessage =
+      'has been removed from authorized devices';
+  static const String currentDevice = 'Current Device';
+  static const String androidDevices = 'Android devices';
+  static const String authCodeCopied = 'Authorization code copied to clipboard';
+
+  // Pre Code Email
+  static const String codeBackedUpMessage =
+      'Your code will be backed up to this email.';
+  static const String enterYourEmail = 'Enter your email';
+  static const String sendYourEmail = 'Send your Email';
+  static const String yourPreCredential = 'Your Pre Credential';
+  static const String yourPreCredentialDesc =
+      'This is your VIP credential. Please store it securely and do not share it with anyone.';
+  static const String secureEmailBackup = 'Secure Email Backup';
+  static const String secureEmailBackupDesc =
+      'We will send an email containing this credential to your specified email address for safekeeping.';
+  static const String sendAndSave = 'Send and Save';
+  static const String sendAndSaveDesc =
+      'After the email is sent, we recommend you also save this credential to a secure location on your device.';
+
+  // Routing Mode
+  static const String smart = 'Smart';
+  static const String smartModeDesc =
+      'The local and VPN networks coexist, and the optimal route is selected intelligently.';
+  static const String global = 'Global';
+  static const String globalModeDesc =
+      'All traffic is routed through the VPN server to ensure maximum privacy and security.';
+
+  // Subscription Plans
+  static const String perYear = 'Per year';
+  static const String yearlyPlan = 'Yearly Plan';
+  static const String mostlyChoose = 'Mostly choose';
+  static const String once = 'once';
+  static const String lifeTime = 'Life time';
+  static const String monthPlan = 'Month Plan';
+  static const String perWeek = 'Per week';
+  static const String weekPlan = 'Week Plan';
+  static const String limitedTime = 'Limited Time';
+  static const String subscriptionChanged =
+      'Subscription plan changed successfully';
+  static const String restoringPurchases = 'Restoring purchases...';
+  static const String openingPaymentSupport = 'Opening payment support...';
+  static const String info = 'Info';
+
+  // Other messages
+  static const String vpnConnectionError = 'VPN connection error';
+  static const String vpnServiceDisconnected =
+      'VPN service disconnected unexpectedly';
+  static const String failedCaptureScreenshot = 'Failed to capture screenshot';
+  static const String imageSavedToAlbum =
+      'The image has been saved to your local album';
+  static const String failedSaveImage = 'Failed to save image to gallery';
+  static const String failedToSave = 'Failed to save';
+  static const String failedSendEmail = 'Failed to send email';
+
+  // Connection status
+  static const String activeTime = 'Active time';
 }