Bladeren bron

add i18n/index.js

wudebin 6 maanden geleden
bovenliggende
commit
ba24fa6be6

+ 167 - 0
Strides-SPAPP/app/i18n/index.js

@@ -0,0 +1,167 @@
+import app from '../../app.json';
+import I18n from 'react-native-i18n';
+import en from './locales/en';
+import es from './locales/es';
+import de from './locales/de';
+import fr from './locales/fr';
+import ja from './locales/ja';
+import km from './locales/km';
+import ko from './locales/ko';
+import my from './locales/my';
+import th from './locales/th';
+import vi from './locales/vi';
+import zh from './locales/zh';
+import tw from './locales/zh-TW';
+import { getStorage } from '../utils/storage';
+
+I18n.fallbacks = true;
+//I18n.l("currency", 630, {})
+//I18n.t("", {})
+const SETTING_KEY = "locale-settings";
+const DEBUG = app.debug && !app.product;
+const LOCALES = [{
+  name: en.name,
+  value: "en",//英语
+  enable: true
+}, {
+  name: de.name,
+  value: "de",//德语
+  enable: DEBUG
+}, {
+  name: es.name,
+  value: "es",//西语
+  enable: DEBUG
+}, {
+  name: fr.name,
+  value: "fr",//法语
+  enable: DEBUG
+}, {
+  name: ja.name,
+  value: "ja",//日语
+  enable: DEBUG
+}, {
+  name: ko.name,
+  value: "ko",//韩语
+  enable: DEBUG
+}, {
+  name: km.name,
+  value: "km",//柬埔寨-高棉语
+  enable: DEBUG
+}, {
+  name: my.name,
+  value: "my",//缅甸语
+  enable: DEBUG
+}, {
+  name: th.name,
+  value: "th",//泰语
+  enable: DEBUG
+}, {
+  name: vi.name,
+  value: "vi",//越南语
+  enable: DEBUG
+}, {
+  name: zh.name,
+  value: "zh-CN",//简体中文
+  enable: true
+}, {
+  name: tw.name,
+  value: "zh-HK",//繁體中文
+  enable: true
+}]
+if (app.modules.i18n && !app.isLumiWhitelabel) {
+  I18n.translations = {
+    default: en,
+    en, es, de, fr,
+    ja, km, ko, my,
+    th, vi, zh, 
+    "zh-CN": zh,
+    "zh-HK": tw
+  }
+
+  global.defaultLocale = I18n.currentLocale();
+  if (app.debug)
+    console.log("[I18n] defaultLocal", global.defaultLocale);
+} else {
+  I18n.translations = {
+    default: en,
+    en
+  }
+  global.defaultLocale = "en";
+}
+const getLocaleName = () => {
+  var locale = ""
+  for (let l of LOCALES) {
+    if (l.value == defaultLocale) {
+      locale = l.value;
+      break;
+    }
+  }
+  if (!locale) {
+    if (defaultLocale.indexOf("zh") >= 0) {
+      if (defaultLocale.indexOf("CN") >= 0) {
+        locale = "zh-CN"
+      } else {
+        locale = "zh-HK"
+      }
+    } else {
+      for (let l of LOCALES) {
+        if (defaultLocale.indexOf(l.value) >= 0) {
+          locale = l.value;
+          break;
+        }
+      }
+    }
+    if (app.debug)
+      console.log("[I18n] getLocaleName(2)", locale);
+  } else {
+    if (app.debug)
+      console.log("[I18n] getLocaleName(1)", locale);
+  }
+  return locale;
+}
+
+global.$t = (scope) => {
+  return I18n.t(scope);
+}
+
+const init = (back) =>  {
+  if (app.modules.i18n && !app.isLumiWhitelabel) {
+    getStorage(SETTING_KEY).then(res => {
+      if (res) {
+        global.currentLocale = I18n.locale = res;
+      } else {
+        global.currentLocale = getLocaleName();//"zh-CN"
+        I18n.locale = global.currentLocale;//设置local
+      }
+      if (app.debug) console.log("[I18n] currentLocale", global.currentLocale, I18n.locale);
+      back();
+    })
+  } else {
+    global.currentLocale = "en";
+    back();
+  }
+}
+
+
+export const i18nUtil = {
+  init: init,
+  locales: LOCALES,
+  SETTING_KEY: SETTING_KEY,
+  getLocaleName: getLocaleName,
+  isChinese: () => global.currentLocale.indexOf("zh") >= 0,
+  getLocale: () => global.currentLocale,
+  setlocale: (localeName) => {
+    global.currentLocale = I18n.locale = localeName;
+    global.ComCountryList = undefined;
+  },
+  getDefaultLocale: () => global.defaultLocale,
+  analyzeLocaleData: (data, def) => {
+    for (let l in data) {
+      //console.log(l);
+      if (currentLocale.indexOf(l) >= 0) {
+        return data[l]
+      }
+    }
+    return def ?? data;
+  }
+}

+ 7 - 0
Strides-SPAPP/app/i18n/locales/de.js

@@ -0,0 +1,7 @@
+/**
+ * 德国语言包
+ */
+export default {
+  name: "Deutsch",
+  default: "Default",
+}

+ 7 - 0
Strides-SPAPP/app/i18n/locales/es.js

@@ -0,0 +1,7 @@
+/**
+ * 法国语言包
+ */
+export default {
+  name: "Español",
+  default: "Predeterminado",
+}

+ 7 - 0
Strides-SPAPP/app/i18n/locales/fr.js

@@ -0,0 +1,7 @@
+/**
+ * 法国语言包
+ */
+export default {
+  name: "Français",
+  default: "Défaut",
+}

+ 7 - 0
Strides-SPAPP/app/i18n/locales/ja.js

@@ -0,0 +1,7 @@
+/**
+ * 日本语言包
+ */
+export default {
+  name: "日本語",
+  default: "デフォルト",
+}

+ 7 - 0
Strides-SPAPP/app/i18n/locales/km.js

@@ -0,0 +1,7 @@
+/**
+ * 柬埔寨-高棉语言包
+ */
+export default {
+  name: "ភាសាខ្មែរ",
+  default: "លំនាំដើម",
+}

+ 7 - 0
Strides-SPAPP/app/i18n/locales/ko.js

@@ -0,0 +1,7 @@
+/**
+ * 韩国语言包
+ */
+export default {
+  name: "한국어",
+  default: "기본",
+}

+ 7 - 0
Strides-SPAPP/app/i18n/locales/my.js

@@ -0,0 +1,7 @@
+/**
+ * 缅甸语言包
+ */
+export default {
+  name: "ဗာရမ်",
+  default: "စံထားချက်",
+}

+ 493 - 0
Strides-SPAPP/app/i18n/locales/th.js

@@ -0,0 +1,493 @@
+/**
+ * 泰文语言包
+ */
+export default {
+  name: "ไทย",
+  default: "ค่าปริยาย",
+  nav: {
+    ok: "OK",
+    no: "NO",
+    yes: "YES",
+    back: "BACK",
+    view: "VIEW",
+    confirm: "CONFIRM",
+    cancel: "CANCEL",
+    submit: "SUBMIT",
+    loading: "Loading...",
+    waiting: "Waiting..."
+  },
+  common: {
+    no: "No",
+    yes: "Yes",
+    back: "Back",
+    save: "Save",
+    error: "Error",
+    confirm: "Confirm",
+    cancel: "Cancel",
+    close: "Close",
+    select: "Select",
+    inputAddText: "Add text",
+    cropperTitle: "Cropper",
+    addFailed: "Add failed, please retry",
+    addSuccess: "Add successfully!",
+    updateFailed: "Update failed, please retry",
+    updateSuccess: "Update successfully!",
+    cancelFailed: "Cancel failed, please retry",
+    cancelSuccess: "Cancel successfully!",
+    uploadFailed: "Upload failed, please retry",
+    uploadSuccess: "Upload successfully!",
+    deleteFailed: "Delete failed, please retry",
+    deleteSuccess: "Delete successfully!",
+    submitSuccess: "Submit successfully!",
+    pulldown2Refresh: "Pulldown to Refresh"
+  },
+  route: {
+    about: "About",
+    addCards: "Add Cards",
+    addVehicle: "Add Vehicle",
+    bookmarks: "Bookmarks",
+    changePassword: "Account Security",
+    charging: "Charging",
+    chargingSite: "Charging Site",
+    driverRegister: "Fleet / PHV Registration",
+    editAddress: "Edit Address",
+    editProfile: "My Profile",
+    editVehicle: "Update Vehicle",
+    feedback: "Feedback",
+    forgotPassword: "Forgot Password",
+    makePayment: "Make Payment",
+    myVehicles: "My Vehicles",
+    notifications: "Notifications",
+    notificationTest: "Notification Test",
+    paymentMethod: "Payment Method",
+    paynow: "PAYNOW",
+    payPerUse: "Pay Per Use",
+    privacyPolicy: "Privacy Policy",
+    profileSettings: "Profile Settings",
+    publicRegister: "Public Registration",
+    qrScan: "QR Scan",
+    rating: "Your Rating",
+    referral: "Referral",
+    search: "Search",
+    settings: "Settings",
+    summary: "Summary",
+    termsOfUse: "Terms of Use",
+    topUp: "Purchase Credits",
+    topUpWithCard: "Top Up with Card",
+    wallet: "Transactions",
+    applyMember: "Apply Membership",
+    yourMembers: "Your Membership",
+    refundPolicy: "Refund Policy"
+  },
+  sign: {
+    aConfirmationEmailTo: "a confirmation email has been sent to",
+    agreePDVInfoAccurate: "I agree that the information that i’m submitting is the latest and accurate.",
+    back2Login: "Back to Login",
+    btnLogin: "LOGIN",
+    btnSendOTP: "EMAIL OTP",
+    btnSignUp: "SIGN UP",
+    errContactNoFormat: "Phone Number is incorrect format",
+    errEmailFormat: "Email format incorrect",
+    errPasswordConfirm: "The twice passwords are inconsistent",
+    errPasswordStrong: "Password is not strong",
+    forgotPassword: "Forgot Password",
+    hintPDVLicence: "PH Driver Vocational Licence",
+    iHaveReadAndAgree: "I have read and I agree with the ",
+    labelCompany: "Company",
+    labelConfirmPassword: "Confirm Password",
+    labelCountry: "Country",
+    labelCreatePassword: "Create Password",
+    labelDisplayName: "Display Name",
+    labelE_mail: "E-mail",
+    labelEmail: "Email Address",
+    labelMobileNumber: "Mobile Number",
+    labelNewPassword: "New Password",
+    labelOtp: "OTP",
+    labelPassword: "Password",
+    labelPDVLicence: "PDV Licence",
+    labelPDVPhotos: "  PDV Photos\n(Front & Back)",
+    labelPhoneNumber: "Phone Number",
+    labelValidateEmail: "Validate Email",
+    labelYourCompany: "Your Company",
+    linkAndLink: "and ",
+    linkAndLinkEnd: ".",
+    password8more: "8 or more characters",
+    passwordLeastNumber: "at least one number",
+    passwordLeastNumberAndSpecial: "at least one number and one special character",
+    passwordMustHave: "Your Password Must Have:",
+    passwordStrength: "Password Strength",
+    passwordUpperLower: "upper and lower case letters",
+    plsInputContactNo: "Please enter contact number",
+    plsInputDiaplayName: "Please enter display name",
+    plsInputEmail: "Please enter email address",
+    plsInputOTP: "Please enter verification code",
+    plsInputPassword: "Please enter password",
+    plsInputPassword2: "Please enter confirm password",
+    plsInputPDVLicence: "Please enter PDV Licence",
+    plsLoginTitle: "Please Login",
+    plsUploadLicencePhotos: "Please upload PDV Licence Photos",
+    registerDriverUser: "Register as Fleet / PHV Driver",
+    registerPublicUser: "Register as Public User",
+    rememberMe: "Remember me",
+    resetPasswordSuccess: "Reset password successfully",
+    sendOTPSuccess: "Send verification code successfully",
+    signIn: "Sign In",
+    signUpSuccess: "Sign up successfully!",
+    thanksRegisterWith: "Thank you for registering with",
+    tipNewUser: "New User?",
+    titleFleetRegistration: "Fleet / PHV Registration"
+  },
+  home: {
+    all: "All",
+    chargeable: "Chargeable",
+    chooseActivationType: "Choose Activation Type",
+    chooseConnecterType: "Choose Connecter Type",
+    chooseParkingFee: "Choose Parking Fee",
+    chooseProvider: "Choose Provider",
+    done: "Done",
+    filterResults: "Results",
+    filters: "Filters",
+    free: "Free",
+    later: "LATER",
+    locationPermissionTips: "Please grant location permission to obtain more service",
+    myLocation: "My Location",
+    newVersionName: "New Version: ",
+    noSearch: "No search result",
+    search: "Search",
+    searchHint: "Search using site name or service provider",
+    statusPrivate: "Private Site",
+    upcoming: "Upcoming",
+    updateNow: "UPDATE NOW",
+    versionUpdate: "Version Update",
+    backAgainTips: "Press the back button again to exit the program"
+  },
+  drawer: {
+    sign: "Sign In",
+    charging: "Charging",
+    wallet: "Transactions",
+    topup: "Credits",
+    feedback: "Feedback",
+    settings: "Settings",
+    about: "About Us",
+    logging: "Logging...",
+    privacyPolicy: "Privacy Policy",
+    termsOfUse: "Terms of Use",
+    mapsTest: "Maps Test",
+    debugOnly: "Debug Mode Options Only",
+    noChargingSession: "No charging session found",
+    members: "Members",
+    contactSupport: "Contact Support"
+  },
+  profile: {
+    address: "Address",
+    addVehicle: "Add Vehicle",
+    apply2Fleet: "Apply as PHV/Fleet",
+    avatar: "Avatar",
+    chooseConnecterType: "Choose Connecter Type",
+    confirmDeleteAccount: "Are you sure you want to delete your account? This operation cannot be revoke.",
+    deleteAccount: "Delete Account",
+    deleteAccountSuccess: "Successfully deleted!",
+    email: "Email",
+    errPhoneNumberFormat: "Phone Number is incorrect format",
+    hintPostal: "Postal Code",
+    hintStreet: "Street name and number",
+    hintUnitNo: "Unit number",
+    labelCity: "City",
+    licensePlate: "License Plate",
+    logout: "Logout",
+    msgInputBrand: "Please type brand",
+    msgInputModel: "Please type model",
+    msgInputPlate: "Please type license plate",
+    myVehicles: "My Vehicles: ",
+    nickname: "Nickname",
+    notificationSettings: "Notification Settings",
+    noVehicles: "No Vehicles",
+    phoneNumber: "Phone Number",
+    plsInputCity: "Please input city name",
+    plsInputPostal: "Please input postal code",
+    plsInputStreet: "Please input street",
+    plsInputUnitNo: "Please input unit number",
+    postalCode: "Postal Code",
+    registerDate: "Registration Date",
+    remove: "Remove",
+    removeVehicle: "Remove Vehicle",
+    signOut: "Sign out",
+    street: "Street",
+    tipRemoveVehicle: "Are you sure you want to remove this vehicle?",
+    tipSignOut: "Are you sure you want to sign out?",
+    unitNumber: "Unit Number",
+    update: "Update",
+    updateNickname: "Update Nickname",
+    updatePhoneNumber: "Update Phone Number",
+    updateSuccess: "Update profile successfully",
+    userType: "User Type",
+    vehicleBrand: "Brand",
+    vehicleModel: "Model"
+  },
+  charging: {
+    AC: "AC",
+    DC: "DC",
+    Chademo: "CHAdeMO",
+    acChargers: "AC Chargers",
+    additionalInfo: "Additional Info",
+    additionalInformation: "Additional Information",
+    btnAuthenticate: "AUTHENTICATE",
+    btnCancelReservation: "Cancel Reservation",
+    btnComplete: "COMPLETE",
+    btnIntoCharging: "VIEW CHARGING",
+    btnOkay: "Okay",
+    btnReserve: "Reserve",
+    btnStartCharging: "START CHARGING",
+    btnStopCharging: "STOP CHARGING",
+    cancelReservation: "Cancel Reservation",
+    chargingInProgress: "Charging In Progress...",
+    chooseConnector: "Choose Connector",
+    chooseRate: "Choose Rate",
+    confirmCancelReservation: "Are you sure you want to cancel reservation?",
+    confirmStopCharging: "Confirm stop charging?",
+    dcChargers: "DC Chargers",
+    enterStationId: "Enter Station ID",
+    errAuthenticationError: "There seems to be an authentication error! Please try again",
+    errDetected: "An error detected, please retry.",
+    errNotChargeE0: "Your vehicle doesn’t seem to be charging. Please check your vehicle. (E0)",
+    errNotConnected: "Your vehicle is not connected to the charging station. Please check the connector.",
+    errUnable2Charge: "The charging station is unable to charge your vehicle.Please reauthenticate.",
+    errUnable2Reserved: "The charging station is reserved and unable to charge your vehicle.",
+    free: "Free",
+    hintExampleStationId: "e.g: LEMOC0002-1",
+    labelAvailableTotal: "Available/Total",
+    labelPower: "Power",
+    labelRate: "Rate",
+    labelRates: "Rates",
+    labelStatus: "Status",
+    labelTimeElapsed: "Time Elapsed",
+    labelTotalCharges: "Total Charges",
+    labelTotalkWh: "Total kWh Delivered",
+    labelType: "Type",
+    lastUpdatedAt: "Last updated at ",
+    noRates: "No Rates",
+    numberAvailable: " available",
+    operatingHours: "Operating Hours",
+    parkingFees: "Parking Fees",
+    plsInputStationId: "Please input Station ID",
+    plsSelectConnnector: "Please select a connnector",
+    pressStartToBegin: "Press Start To Begin",
+    pullDownRefresh: "Pull down to refresh",
+    ratesPrivateNote: "NOTE: The charging stations are for private usage.",
+    reservedSuccess: "Reserved successfully!",
+    reserveTimeLeft: "Reservation time left",
+    scanQR: "Scan QR",
+    selectedCharger: "Selected Charger",
+    paymentMethod: "Payment Method",
+    selectPaymentMethod: "Select Payment Method",
+    siteAddress: "Address",
+    siteName: "Site Name",
+    statusAuthenticated: "Authenticated",
+    statusAvailable: "Available",
+    statusCharging: "Charging",
+    statusInitiating: "Initiating...",
+    statusNotConnected: "Not Connected",
+    statusPreparing: "Preparing",
+    statusPrivate: "Private",
+    statusUnavailable: "Unavailable",
+    statusInCharging: "In Charging",
+    stepAuthenticated: "Authenticated",
+    stepAuthenticatedDesc: "Press START CHARGING to begin.",
+    stepAuthenticating: "Authenticating",
+    stepAuthenticatingDesc: "Please wait while we authenticate your connection.",
+    stepChargingDesc: "Your vehicle is charging.\nPress STOP CHARGING to end charge",
+    stepInitializing: "Initializing",
+    stepInitializingDesc: "Please wait while we prepare to start charging...",
+    stepStoppingCharge: "Stopping Charge",
+    stepStoppingChargeDesc: "Please wait while we stop your charging...",
+    stepInsertConnector: "Insert Charging Cable",
+    stepInsertConnectorDesc: "Insert charging cable to EV and press AUTHENTICATE.",
+    tabCharge: "CHARGE",
+    tabExplore: "Explore",
+    tabInfo: "INFO",
+    tabReserve: "Reserve",
+    tipsDiscount: "You have an applicable membership.\nRate shown is the discounted price.",
+    tipsDisconnectConnector: "Please disconnect and return connector to charging station",
+    tipsRatesTax: "All rates Include 8% GST",
+    tipsRatesTax2: "All Rates Include Tax",
+    titleOops: "Oops!",
+    titleStopCharging: "Stop Charging",
+    toBeUpdated: "To be updated",
+    unallowReservation: "Reservation is not available for this site.",
+    unitHr: " hr ",
+    unitMin: " min"
+  },
+  wallet: {
+    atAglance: "At a glance",
+    averageCharge: "Average Charge",
+    averageSpend: "Average Spend",
+    averageTime: "Average Time",
+    balance: "Balance",
+    btnPurchase: "Purchase",
+    btnTop_Up: "Top-Up",
+    creditIsBelow5: "Your credit is below S$5.",
+    creditWallet: "Credits",
+    creditWalletLabel: "Credits: ",
+    forWeekOf: "Summary for the week",
+    labelBreakdown: "Breakdown",
+    labelChargeDelivered: "Charge Delivered:",
+    labelChargeRates: "Charge Rates (GST Inclusive):",
+    labelChargeTime: "Charge Time:",
+    labelDateTime: "Date Time:",
+    labelExchangeRate: "Exchange Rate:",
+    labelFinalPayment: "Final Payment:",
+    labelIdleFee: "Idle Fee:",
+    labelPayment: "Payment (GST Inclusive):",
+    labelPaymentMadeBy: "Payment Made By:",
+    labelPreviousBalance: "Previous Balance:",
+    labelReferenceId: "Reference ID:",
+    labelReservationFee: "Reservation Fee:",
+    labelResultingBalance: "Resulting Balance:",
+    labelStationId: "Station ID: ",
+    labelSubtotal: "Subtotal",
+    labelTransactionId: "Transaction ID: ",
+    labelYourConnector: "Your Connector",
+    labelYourStation: "Your Station",
+    linkSubmitFeedback: "Submit Your Feedback",
+    noHistoryData: "No data",
+    perHrWeek: "Hr/Week",
+    perWeek: "Week",
+    purchaseCredits: "Purchase",
+    statistics4HalfYear: "Statistics for the past 6 months",
+    statistics4week: "Statistics for this week",
+    tabHistory: "History",
+    tabOverview: "Overview",
+    tipsLowCredits: "This charging session will end if there is insufficient credits.\n",
+    tipsReceipt: "A Receipt Will Be Sent To Your Email",
+    titleChooseCreditValue: "Choose Credit Value",
+    titleChoosePaymentType: "Choose Payment Type",
+    titleLowCredits: "Low Credits",
+    topUp: "Top Up",
+    viewHistory: "View History"
+  },
+  payment: {
+    btnSave2gallery: "Save QR Code to Gallery",
+    btnSetting: "SETTING",
+    errInputCardNo: "Please type a correct card number",
+    errInputCvv: "Please type a correct CVV",
+    errInputTill: "Please type a correct valid till",
+    errSave2gallery: "Save to gallery failed",
+    errSave2galleryPermission: "Can not save images, Please grant storage or gallery permissions.",
+    hintCardName: "Your name on card",
+    hintValidTill: "MM/YY",
+    labelAmount: "Amount:",
+    labelCardName: "Name on Card",
+    labelCardNo: "Card Number",
+    labelChooseAmount: "Choose Amount:",
+    labelPayWith: "Pay with:",
+    labelTopUpAmount: "Top Up Amount:",
+    labelValidTill: "Valid Till",
+    openInBrowser: "Open in Browser",
+    paymentCompleted: "Payment Completed",
+    paymentOption: "Payment Option",
+    payPerUse: "Pay Per Use",
+    plsInputCardName: "Please type name on card",
+    plsInputCardNo: "Please type card number",
+    plsInputCvv: "Please type CVV",
+    plsInputTill: "Please type valid till",
+    successSave2gallery: "Save to gallery successfully",
+    tipsPayPerUse: "Un-utilized amount will be refunded.",
+    tipsPayPerUseCharge: "Once the payment is received, the charging will start automatically.",
+    tipsPayPerUseSave: "Please save the QR Code, and use your bank/eWallet app to scan the QR Code.",
+    tipsQrPayment: "Once the payment is completed, the top up amount will be credited into your credits automatically.",
+    tipsQrPaymentSave: "Please save the QR Code, and use your bank app to scan the QR Code."
+  },
+  settings: {
+    autoRefreshInterval: "Auto refresh interval",
+    language: "Language",
+    maps: "Maps",
+    notification: "Notification",
+    notifyChargingComplete: "Notify me when charging complete",
+    notifyLowBalance: "Notify me when credits is low balance",
+    notifyPromotionsOffers: "Notify me for promotions and offers",
+    refreshInterval: "Refresh site interval",
+    seconds: "s",
+    showMyLocations: "Always show my locations",
+    moveMyLocations: "Move to my locations when refresh",
+    useApplesMap: "Use Apple's Map"
+  },
+  feedback: {
+    errFeedbackType: "Please select type of feedback",
+    errFeednackContent: "Please type feedback content",
+    errFetchType: "Can not fetch feedback type!",
+    labelConnector: "Which connecter?",
+    labelContent: "Please fill in here (500 words left)",
+    labelStation: "Which charging station?",
+    labelUpload: "Please upload relevant images",
+    searchingChargeBox: "Searching for ChargeBoxId",
+    selectConnector: "Select a Connecter",
+    sendSuccess: "Send feedback successfully!",
+    submitFeedback: "Submit Feedback",
+    tipsLetKnow: "Please let us know below!",
+    tipsSomething: "Have something to tell us?",
+    typeOfFeedback: "Type of Feedback"
+  },
+  members: {
+    membership: "Membership",
+    membershipNo: "Membership No.",
+    status: "Status",
+    statusApproved: "Approved",
+    statusPending: "Pending",
+    statusRejected: "Rejected",
+    labelUpload: "Upload\nMembership\nCard (Front)",
+    noData: "You not have any membership",
+    errMembershipNo: "Please type Membership No",
+    errUploadCard: "Please upload Membership Card"
+  },
+  receipt: {
+    breakdownChargingFees: "Charging Fees Breakdown",
+    breakdownIdlesFees: "Idles Fees Breakdown",
+    breakdownPayment: "Payment",
+    breakdownReservationFees: "Reservation Fees Breakdown",
+    chargingSessionComplete: "Your charging session is completed.",
+    labelChargTransSubtotal: "Charging Transaction Subtotal (w 8% GST):",
+    labelChargTransSubtotal2: "Charging Transaction Subtotal ($s):",
+    labelDateTime: "Date Time:",
+    labelDurationReservation: "Duration of Reservation:",
+    labelFinalPaymentAmount: "Final Payment Amount:",
+    labelAfterDiscount: "Final Payment Amount (After Applicable Discount):",
+    labelIdleDuration: "Idle Duration:",
+    labelIdleFeeSubtotal: "Idle Fee Subtotal (w 8% GST):",
+    labelIdleFeeSubtotal2: "Idle Fee Subtotal ($s):",
+    labelIdleStartTime: "Idle Fee Start Time:",
+    labelReferenceID: "Reference ID:",
+    labelRegistrationNo: "Registration No:",
+    labelReservationFeeSubtotal: "Reservation Fee Subtotal (w 8% GST):",
+    labelReservationFeeSubtotal2: "Reservation Fee Subtotal ($s):",
+    labelSiteName: "Site Name:",
+    labelTimeReservation: "Time of Reservation:",
+    labelTransactionID: "Transaction ID:",
+    receipt: "Receipt",
+    successful: "Successful! "
+  },
+  support: {
+    supportHotline: "Support Hotline",
+    labelOpenTime: "Our Support Hours:",
+    labelCallCentreHotline: "Call Centre Hotline",
+    labelWhatsappChat: "WhatsApp Chat",
+    timeAllDay: "Monday to Sunday",
+    timeWeekDay: "Monday to Friday",
+    time24Hours: "24 Hours",
+    btnCallSupport: "Call Support Hotline",
+    btnWhatsapp: "WhatsApp Us"
+  },
+  notification: {
+    tabAlerts: "Alerts",
+    tabCampaign: "Campaign",
+    tabPromotions: "News",
+    viewMessage: "View Message",
+    deleteMessage: "Delete",
+    confirmDelete: "Are you sure you want to delete this message?",
+    empty: "Empty",
+    labelSummary: "SUMMARY:",
+    labelDetails: "DETAILS:",
+    labelLinks: "LINKS:",
+    startTime: "Start Time: ",
+    endTime: "End Time: "
+  }
+}

+ 7 - 0
Strides-SPAPP/app/i18n/locales/vi.js

@@ -0,0 +1,7 @@
+/**
+ * 越南语言包
+ */
+export default {
+  name: "Tiếng Việt",
+  default: "Mặc định",
+}