From 14404622a9d5134053086fdeb56d7b9649d8781b Mon Sep 17 00:00:00 2001 From: Kashif Shehzad Baloch Date: Wed, 3 Jan 2024 17:03:39 +0500 Subject: [PATCH 1/6] localisation completed in rider app --- RiderApp/languages/de.js | 36 +++++++++++++++++- RiderApp/languages/en.js | 31 ++++++++++++++- RiderApp/languages/fr.js | 37 +++++++++++++++++- RiderApp/languages/km.js | 38 +++++++++++++++++-- RiderApp/languages/zh.js | 37 +++++++++++++++++- .../AssignedOrders/AssignedOrders.js | 5 ++- .../src/components/NewOrders/NewOrders.js | 5 ++- RiderApp/src/components/Order/Order.js | 8 ++-- RiderApp/src/screens/Help/Help.js | 8 ++-- RiderApp/src/screens/Language/Language.js | 4 +- RiderApp/src/screens/Login/Login.js | 32 ++++++++-------- RiderApp/src/screens/NewOrders/NewOrders.js | 5 ++- .../src/screens/OrderDetail/OrderDetail.js | 29 +++++++------- 13 files changed, 222 insertions(+), 53 deletions(-) diff --git a/RiderApp/languages/de.js b/RiderApp/languages/de.js index cfd0b92..8fce2b6 100644 --- a/RiderApp/languages/de.js +++ b/RiderApp/languages/de.js @@ -111,5 +111,39 @@ export const de = { languageText: 'Bitte wählen Sie Ihre gewünschte Sprache', countryCodePickerTranslation: 'deu', countryCodeSelect: 'Ländercode auswählen', - paymentNotSupported: 'Diese Zahlungsmethode unterstützt diese Währung nicht' + paymentNotSupported: 'Diese Zahlungsmethode unterstützt diese Währung nicht', + Orders: 'Bestellingen', + deliveryTime: 'Leveringstijd', + myOrders: 'Mijn bestellingen', + newOrders: 'Nieuwe bestellingen', + titleChat: 'Chat', + NoNewOrder: 'Geen nieuwe bestelling', + Somethingisworng: 'Er is iets mis', + PENDING: 'IN AFWACHTING', + ACCEPTED: 'GEACCEPTEERD', + PICKED: 'OPGEHAALD', + DELIVERED: 'GELEVERD', + COMPLETED: 'VOLTOOID', + YourOrderID: 'Uw bestelnummer', + ProductPage: 'Productpagina', + Docs: 'Documenten', + Blog: 'Blog', + AboutUs: 'Over ons', + Done: 'Klaar', + Cancel: 'Annuleren', + Usernameisrequired: 'Gebruikersnaam is verplicht', + Passwordisrequired: 'Wachtwoord is verplicht', + Loggedin: 'Ingelogd', + EnteryourEmailandPassword: 'Voer uw e-mail en wachtwoord in', + EmailorPhone: 'E-mail of telefoon', + Password: 'Wachtwoord', + NoOrdersAssignedyet: 'Nog geen bestellingen toegewezen', + Loadingorders: 'Bestellingen laden', + Orderassginedtootherrider: 'Bestelling toegewezen aan andere bezorger', + CustomerDetails: 'Klantgegevens', + Contact: 'Contact', + DelvieryLocation: 'Leveringslocatie', + OrderDetails: 'Bestelgegevens', + Subtotal: 'Subtotaal', + Assigntome: 'Toewijzen aan mij', } diff --git a/RiderApp/languages/en.js b/RiderApp/languages/en.js index 040c76a..da1ddc4 100644 --- a/RiderApp/languages/en.js +++ b/RiderApp/languages/en.js @@ -115,5 +115,34 @@ export const en = { deliveryTime: 'Delivery Time', myOrders: 'My Orders', newOrders: 'New Orders', - titleChat: 'Chat' + titleChat: 'Chat', + NoNewOrder: 'No New Order', + Somethingisworng: 'Something is worng', + PENDING: 'PENDING', + ACCEPTED: 'ACCEPTED', + PICKED: 'PICKED', + DELIVERED: 'DELIVERED', + COMPLETED: 'COMPLETED', + YourOrderID: 'Your Order ID', + ProductPage: 'Product Page', + Docs: 'Docs', + Blog: 'Blog', + AboutUs: 'About Us', + Done: 'Done', + Cancel: 'Cancel', + Usernameisrequired: 'Username is required', + Passwordisrequired: 'Password is required', + Loggedin: 'Logged in', + EnteryourEmailandPassword: 'Enter your Email and Password', + EmailorPhone: 'Email or Phone', + Password: 'Password', + NoOrdersAssignedyet: 'No Orders Assigned yet', + Loadingorders: 'Loading orders', + Orderassginedtootherrider: 'Order assgined to other rider', + CustomerDetails: 'Customer Details', + Contact: 'Contact', + DelvieryLocation: 'Delviery Location', + OrderDetails: 'Order Details', + Subtotal: 'Subtotal', + Assigntome: 'Assign to me', } diff --git a/RiderApp/languages/fr.js b/RiderApp/languages/fr.js index 2a8d2a1..a9d7ae8 100644 --- a/RiderApp/languages/fr.js +++ b/RiderApp/languages/fr.js @@ -111,5 +111,40 @@ export const fr = { languageText: "S'il vous plaît sélectionnez votre langue requise", countryCodePickerTranslation: 'fra', countryCodeSelect: 'Sélectionnez le code pays', - paymentNotSupported: 'Ce mode de paiement ne prend pas en charge cette devise' + paymentNotSupported: 'Ce mode de paiement ne prend pas en charge cette devise', + Orders: 'Commandes', + deliveryTime: 'Délai de livraison', + myOrders: 'Mes commandes', + newOrders: 'Nouvelles commandes', + titleChat: 'Chat', + NoNewOrder: 'Pas de nouvelle commande', + Somethingisworng: 'Quelque chose ne va pas', + PENDING: 'EN ATTENTE', + ACCEPTED: 'ACCEPTÉE', + PICKED: 'PRÉLEVÉE', + DELIVERED: 'LIVRÉE', + COMPLETED: 'COMPLÉTÉE', + YourOrderID: 'Votre numéro de commande', + ProductPage: 'Page produit', + Docs: 'Documents', + Blog: 'Blog', + AboutUs: 'À propos de nous', + Done: 'Terminé', + Cancel: 'Annuler', + Usernameisrequired: 'Nom d\'utilisateur requis', + Passwordisrequired: 'Mot de passe requis', + Loggedin: 'Connecté', + EnteryourEmailandPassword: 'Entrez votre e-mail et votre mot de passe', + EmailorPhone: 'E-mail ou téléphone', + Password: 'Mot de passe', + NoOrdersAssignedyet: 'Aucune commande attribuée pour le moment', + Loadingorders: 'Chargement des commandes', + Orderassginedtootherrider: 'Commande attribuée à un autre livreur', + CustomerDetails: 'Détails du client', + Contact: 'Contact', + DelvieryLocation: 'Emplacement de livraison', + OrderDetails: 'Détails de la commande', + Subtotal: 'Sous-total', + Assigntome: 'Attribuer à moi', + } diff --git a/RiderApp/languages/km.js b/RiderApp/languages/km.js index 18c87df..4e8b290 100644 --- a/RiderApp/languages/km.js +++ b/RiderApp/languages/km.js @@ -108,8 +108,40 @@ export const km = { languageText: 'សូមជ្រើសរើសភាសាដែលអ្នកត្រូវការ', countryCodePickerTranslation: 'eng', countryCodeSelect: 'ជ្រើសរើសលេខកូដប្រទេស', - paymentNotSupported: 'វិធីសាស្ត្រទូទាត់នេះមិនគាំទ្ររូបិយប័ណ្ណនេះទេ', - deliveryTime: 'ពេលវេលាដឹកជញ្ជូន', + paymentNotSupported: 'វិធានមិនគាំទ្រប្រចាំរូបិយប័ណ្ណនេះ', + Orders: 'ការបញ្ជាទិញ', + deliveryTime: 'ពេលដឹកជញ្ជាំង', myOrders: 'ការបញ្ជាទិញរបស់ខ្ញុំ', - newOrders: 'ការបញ្ជាទិញថ្មី' + newOrders: 'ការបញ្ជាទិញថ្មី', + titleChat: 'ជជែក', + NoNewOrder: 'គ្មានការបញ្ជាទិញថ្មី', + Somethingisworng: 'មានអ្វីមិនប្រក្រតី', + PENDING: 'រងចាំ', + ACCEPTED: 'បានទទួលយក', + PICKED: 'បានយក', + DELIVERED: 'បានដឹកជញ្ជាំង', + COMPLETED: 'បានបញ្ចប់', + YourOrderID: 'លេខសម្គាល់ការបញ្ជាទិញរបស់អ្នក', + ProductPage: 'ទំព័រផលិតផល', + Docs: 'ឯកសារ', + Blog: 'ប្លក់', + AboutUs: 'អំពី​ពួក​យើង', + Done: 'រួចរាល់', + Cancel: 'លើកអស់', + Usernameisrequired: 'ត្រូវការឈ្មោះអ្នកប្រើ', + Passwordisrequired: 'ត្រូវការពាក្យសម្ងាត់', + Loggedin: 'បានចូលប្រើ', + EnteryourEmailandPassword: 'បញ្ចូលអ៊ីមែល និងពាក្យសម្ងាត់', + EmailorPhone: 'អ៊ីមែល ឬទូរស័ព្ទ', + Password: 'ពាក្យសម្ងាត់', + NoOrdersAssignedyet: 'មិនទាន់មានការបញ្ជាទិញដែលបានផ្ទេរទេ', + Loadingorders: 'កំពុងផ្ទុកការបញ្ជាទិញ', + Orderassginedtootherrider: 'ការបញ្ជាទិញត្រូវបានផ្ទេរទៅហាងផ្សេងៗ', + CustomerDetails: 'ព័ត៌មានអតិថិជន', + Contact: 'ទំនាក់ទំនង', + DelvieryLocation: 'ទីតាំងដឹកជញ្ជាំង', + OrderDetails: 'ព័ត៌មានការបញ្ជាទិញ', + Subtotal: 'សរុបរង', + Assigntome: 'ផ្ដល់ទៅខ្លួនឯង', + } diff --git a/RiderApp/languages/zh.js b/RiderApp/languages/zh.js index 5846e37..c0ed340 100644 --- a/RiderApp/languages/zh.js +++ b/RiderApp/languages/zh.js @@ -104,5 +104,40 @@ export const zh = { languageText: '请选择您需要的语言', countryCodePickerTranslation: 'zho', countryCodeSelect: '选择国家代码', - paymentNotSupported: '此付款方式不支持此货币' + paymentNotSupported: '此付款方式不支持此货币', + Orders: '订单', + deliveryTime: '交货时间', + myOrders: '我的订单', + newOrders: '新订单', + titleChat: '聊天', + NoNewOrder: '没有新订单', + Somethingisworng: '出现问题', + PENDING: '待处理', + ACCEPTED: '已接受', + PICKED: '已拾取', + DELIVERED: '已交付', + COMPLETED: '已完成', + YourOrderID: '您的订单号', + ProductPage: '产品页面', + Docs: '文档', + Blog: '博客', + AboutUs: '关于我们', + Done: '完成', + Cancel: '取消', + Usernameisrequired: '需要用户名', + Passwordisrequired: '需要密码', + Loggedin: '已登录', + EnteryourEmailandPassword: '输入您的电子邮件和密码', + EmailorPhone: '电子邮件或电话', + Password: '密码', + NoOrdersAssignedyet: '尚未分配订单', + Loadingorders: '加载订单', + Orderassginedtootherrider: '订单已分配给其他骑手', + CustomerDetails: '客户详情', + Contact: '联系', + DelvieryLocation: '交货地点', + OrderDetails: '订单详情', + Subtotal: '小计', + Assigntome: '分配给我', + } diff --git a/RiderApp/src/components/AssignedOrders/AssignedOrders.js b/RiderApp/src/components/AssignedOrders/AssignedOrders.js index 4c72815..835d1b3 100644 --- a/RiderApp/src/components/AssignedOrders/AssignedOrders.js +++ b/RiderApp/src/components/AssignedOrders/AssignedOrders.js @@ -7,6 +7,7 @@ import UserContext from '../../context/user' import TextError from '../Text/TextError/TextError' import { useNavigation } from '@react-navigation/native' import { verticalScale } from '../../utilities/scaling' +import i18n from '../../../i18n' export default function Orders() { const navigation = useNavigation() @@ -20,10 +21,10 @@ export default function Orders() { } = useContext(UserContext) if (loadingAssigned) return - if (errorAssigned) return + if (errorAssigned) return function emptyView() { - return + return } return ( diff --git a/RiderApp/src/components/NewOrders/NewOrders.js b/RiderApp/src/components/NewOrders/NewOrders.js index e51f842..8431cc4 100644 --- a/RiderApp/src/components/NewOrders/NewOrders.js +++ b/RiderApp/src/components/NewOrders/NewOrders.js @@ -7,6 +7,7 @@ import UserContext from '../../context/user' import TextError from '../Text/TextError/TextError' import { useNavigation } from '@react-navigation/native' import { verticalScale } from '../../utilities/scaling' +import i18n from '../../../i18n' export default function Orders() { const navigation = useNavigation() @@ -20,11 +21,11 @@ export default function Orders() { } = useContext(UserContext) function emptyView() { - return + return } if (loadingUnAssigned) return - if (errorUnAssigned) return + if (errorUnAssigned) return return ( - Your {i18n.t('orderId')} + {i18n.t('YourOrderID')} {props.orderId} @@ -77,7 +77,7 @@ function Order(props) { bold uppercase style={{ ...alignment.PLxSmall, ...alignment.PRxSmall }}> - {props.orderStatus} + {i18n.t(props.orderStatus)} @@ -106,13 +106,13 @@ function Order(props) { textColor={colors.placeHolderColor} bold style={{ ...alignment.MTxSmall }}> - Payment method + {i18n.t('paymentMethod')} - Delivery Time + {i18n.t('deliveryTime')} diff --git a/RiderApp/src/screens/Help/Help.js b/RiderApp/src/screens/Help/Help.js index 6aa646a..98f132a 100644 --- a/RiderApp/src/screens/Help/Help.js +++ b/RiderApp/src/screens/Help/Help.js @@ -10,17 +10,17 @@ import styles from './styles' const links = [ { - title: 'Product Page', + title: i18n.t('ProductPage'), url: 'https://enatega.com/enatega-single-vendor/' }, - { title: 'Docs', url: 'https://enatega.com/docs/enatega-singlevendor-rider-app-introduction/' }, + { title: i18n.t('Docs'), url: 'https://enatega.com/docs/enatega-singlevendor-rider-app-introduction/' }, { - title: 'Blog', + title: i18n.t('Blog'), url: 'https://enatega.com/blog/' }, - { title: 'About Us', url: 'https://ninjascode.com/our-team/' } + { title: i18n.t('AboutUs'), url: 'https://ninjascode.com/our-team/' } ] function Help() { const navigation = useNavigation() diff --git a/RiderApp/src/screens/Language/Language.js b/RiderApp/src/screens/Language/Language.js index ea8d981..f35ce55 100644 --- a/RiderApp/src/screens/Language/Language.js +++ b/RiderApp/src/screens/Language/Language.js @@ -113,7 +113,7 @@ function Language() { justifyContent: 'center' }}> - Done + {i18n.t('Done')} - Cancel + {i18n.t('Cancel')} diff --git a/RiderApp/src/screens/Login/Login.js b/RiderApp/src/screens/Login/Login.js index 70dedaf..f981619 100644 --- a/RiderApp/src/screens/Login/Login.js +++ b/RiderApp/src/screens/Login/Login.js @@ -55,11 +55,11 @@ export default function Login() { setPasswordError('') if (!username) { - setUsernameError('Username is required') + setUsernameError(i18n.t('Usernameisrequired')) res = false } if (!password) { - setPasswordError('Password is required') + setPasswordError(i18n.t('Passwordisrequired')) res = false } return res @@ -67,23 +67,23 @@ export default function Login() { async function onCompleted(data) { FlashMessage({ - message: 'Logged in' + message: i18n.t('Loggedin') }) await AsyncStorage.setItem('rider-id', data.riderLogin.userId) setTokenAsync(data.riderLogin.token) } function onError({ networkError, graphQLErrors }) { console.log('errors', networkError, graphQLErrors) - // let message = '' - // if (!!graphQLErrors && graphQLErrors.length) { - // message = graphQLErrors[0].message - // } - // if (!!networkError) { - // message = networkError.result.errors[0].message - // } - // FlashMessage({ - // message: message - // }) + let message = '' + if (!!graphQLErrors && graphQLErrors.length) { + message = graphQLErrors[0].message + } + if (!!networkError) { + message = networkError.result.errors[0].message + } + FlashMessage({ + message: message + }) } return ( @@ -100,13 +100,13 @@ export default function Login() { - Enter your Email and Password + {i18n.t('EnteryourEmailandPassword')} + return } if (loadingUnAssigned) return - if (errorUnAssigned) return + if (errorUnAssigned) return return ( diff --git a/RiderApp/src/screens/OrderDetail/OrderDetail.js b/RiderApp/src/screens/OrderDetail/OrderDetail.js index 721598e..bdb64b4 100644 --- a/RiderApp/src/screens/OrderDetail/OrderDetail.js +++ b/RiderApp/src/screens/OrderDetail/OrderDetail.js @@ -20,6 +20,7 @@ import colors from "../../utilities/colors"; import { linkToMapsApp } from "../../utilities/links"; import { scale } from "../../utilities/scaling"; import styles from "./styles"; +import i18n from "../../../i18n"; const CONFIGURATION = gql` ${configuration} @@ -172,17 +173,17 @@ function OrderDetail() { } if (loadingAssigned || loadingUnAssigned) { - return ; + return ; } if (loadingConfig) { return ; } if (errorConfig) { - return ; + return ; } if (!selectedOrder) { return ( - + ); } @@ -202,7 +203,7 @@ function OrderDetail() { textColor={colors.tagColor} style={{ ...alignment.PTxSmall, ...alignment.PBxSmall }} > - Customer Details + {i18n.t('CustomerDetails')} @@ -214,7 +215,7 @@ function OrderDetail() { textColor={colors.placeHolderColor} style={{ ...alignment.PTxSmall, ...alignment.PBxSmall }} > - Name + {i18n.t('name')} {selectedOrder.user.name} @@ -228,7 +229,7 @@ function OrderDetail() { textColor={colors.placeHolderColor} style={{ ...alignment.PTxSmall, ...alignment.PBxSmall }} > - Contact + {i18n.t('Contact')} {selectedOrder.user.phone} @@ -242,7 +243,7 @@ function OrderDetail() { textColor={colors.placeHolderColor} style={{ ...alignment.PTxSmall, ...alignment.PBxSmall }} > - Delviery Location + {i18n.t('DelvieryLocation')} - Order Details + {i18n.t('OrderDetails')} @@ -284,7 +285,7 @@ function OrderDetail() { bolder style={{ ...alignment.PTmedium, ...alignment.PLmedium }} > - Subtotal + {i18n.t('Subtotal')} @@ -311,7 +312,7 @@ function OrderDetail() { bolder style={{ ...alignment.PLmedium }} > - Delivery Charges + {i18n.t('delvieryCharges')} @@ -331,7 +332,7 @@ function OrderDetail() { - Total + {i18n.t('total')} @@ -423,7 +424,7 @@ function OrderDetail() { bold style={{ ...alignment.PTxSmall, ...alignment.PBxSmall }} > - Assign to me + {i18n.t('Assigntome')} )} @@ -449,7 +450,7 @@ function OrderDetail() { bold style={{ ...alignment.PTxSmall, ...alignment.PBxSmall }} > - Picked + {i18n.t('Picked')} )} @@ -468,7 +469,7 @@ function OrderDetail() { bold style={{ ...alignment.PTxSmall, ...alignment.PBxSmall }} > - Delivered + {i18n.t('Delivered')} )} From 0ebadcc3055325a62c6ccc0d0dc33423b503f9d5 Mon Sep 17 00:00:00 2001 From: Romana-Aijaz Date: Thu, 4 Jan 2024 15:02:31 +0500 Subject: [PATCH 2/6] localisation complete --- CustomerApp/.expo/packager-info.json | 4 + CustomerApp/.expo/settings.json | 4 +- CustomerApp/src/apollo/server.js | 5 +- .../Drawer/Profile/DrawerProfile.js | 5 +- .../FdSocialBtn/FdEmailBtn/FdEmailBtn.js | 3 +- .../FdSocialBtn/FdGoogleBtn/FdGoogleBtn.js | 3 +- .../components/Menu/StatusCard/StatusCard.js | 29 +++---- .../Modals/FilterModal/FilterModal.js | 17 ++-- .../src/components/MyOrders/ActiveOrders.js | 9 +- CustomerApp/src/screens/Cart/Cart.js | 4 +- CustomerApp/src/screens/Coupon/Coupon.js | 6 +- .../screens/CreateAccount/CreateAccount.js | 7 +- .../src/screens/EditAddress/EditAddress.js | 14 ++-- CustomerApp/src/screens/Help/Help.js | 8 +- CustomerApp/src/screens/Login/Login.js | 12 +-- CustomerApp/src/screens/Menu/Menu.js | 7 +- CustomerApp/src/screens/MyOrders/MyOrders.js | 16 ++-- .../src/screens/NewAddress/NewAddress.js | 16 ++-- .../src/screens/OrderDetail/OrderDetail.js | 36 ++++---- .../src/screens/Profile/ChangePassword.js | 18 ++-- CustomerApp/src/screens/Profile/Profile.js | 18 ++-- CustomerApp/src/screens/Register/Register.js | 3 +- CustomerApp/src/screens/Settings/Settings.js | 25 ++++-- CustomerApp/translations/de.js | 84 ++++++++++++++++++- CustomerApp/translations/en.js | 81 +++++++++++++++++- CustomerApp/translations/fr.js | 84 ++++++++++++++++++- CustomerApp/translations/km.js | 84 ++++++++++++++++++- CustomerApp/translations/zh.js | 84 ++++++++++++++++++- 28 files changed, 556 insertions(+), 130 deletions(-) create mode 100644 CustomerApp/.expo/packager-info.json diff --git a/CustomerApp/.expo/packager-info.json b/CustomerApp/.expo/packager-info.json new file mode 100644 index 0000000..7a72904 --- /dev/null +++ b/CustomerApp/.expo/packager-info.json @@ -0,0 +1,4 @@ +{ + "expoServerPort": 19000, + "packagerPort": 19000 +} diff --git a/CustomerApp/.expo/settings.json b/CustomerApp/.expo/settings.json index 92bc513..470dc63 100644 --- a/CustomerApp/.expo/settings.json +++ b/CustomerApp/.expo/settings.json @@ -4,5 +4,7 @@ "dev": true, "minify": false, "urlRandomness": null, - "https": false + "https": false, + "scheme": null, + "devClient": false } diff --git a/CustomerApp/src/apollo/server.js b/CustomerApp/src/apollo/server.js index 6f0793e..4465de7 100644 --- a/CustomerApp/src/apollo/server.js +++ b/CustomerApp/src/apollo/server.js @@ -446,10 +446,7 @@ export const reviewOrder = `mutation ReviewOrder( } }`; -// -// use this to push token instead of login, signup mutation? -// needs research -// + export const pushToken = `mutation PushToken($token:String!){ pushToken(token:$token){ _id diff --git a/CustomerApp/src/components/Drawer/Profile/DrawerProfile.js b/CustomerApp/src/components/Drawer/Profile/DrawerProfile.js index 57f1532..6789568 100644 --- a/CustomerApp/src/components/Drawer/Profile/DrawerProfile.js +++ b/CustomerApp/src/components/Drawer/Profile/DrawerProfile.js @@ -6,6 +6,7 @@ import { alignment } from '../../../utils/alignment' import { NAVIGATION_SCREEN } from '../../../utils/constant' import { TextDefault } from '../../Text' import useStyle from './styles' +import i18n from '../../../../i18n' function DrawerProfile() { const styles = useStyle() @@ -22,7 +23,7 @@ function DrawerProfile() { navigation.navigate(NAVIGATION_SCREEN.CreateAccount) }}> - Login/Create Account + {i18n.t('loginOrCreateAcc')} @@ -40,7 +41,7 @@ function DrawerProfile() { medium H5 style={alignment.PLxSmall}> - Welcome + {i18n.t('welcome')} { const styles = useStyle() @@ -30,7 +31,7 @@ const FdEmailBtn = props => { size={scale(19)} /> - Signup using Email + {i18n.t('signupEmail')} )} diff --git a/CustomerApp/src/components/FdSocialBtn/FdGoogleBtn/FdGoogleBtn.js b/CustomerApp/src/components/FdSocialBtn/FdGoogleBtn/FdGoogleBtn.js index 6eb30f7..3a81fc6 100644 --- a/CustomerApp/src/components/FdSocialBtn/FdGoogleBtn/FdGoogleBtn.js +++ b/CustomerApp/src/components/FdSocialBtn/FdGoogleBtn/FdGoogleBtn.js @@ -7,6 +7,7 @@ import TextDefault from '../../../components/Text/TextDefault/TextDefault' import { alignment } from '../../../utils/alignment' import { moderateScale } from '../../../utils/scaling' import useStyle from './styles' +import i18n from '../../../../i18n' const FdGoogleBtn = props => { const styles = useStyle() @@ -34,7 +35,7 @@ const FdGoogleBtn = props => { ]} /> - Signup with Google + {i18n.t('signupGoogle')} )} diff --git a/CustomerApp/src/components/Menu/StatusCard/StatusCard.js b/CustomerApp/src/components/Menu/StatusCard/StatusCard.js index 2f476d4..e00cd6e 100644 --- a/CustomerApp/src/components/Menu/StatusCard/StatusCard.js +++ b/CustomerApp/src/components/Menu/StatusCard/StatusCard.js @@ -9,32 +9,33 @@ import Spinner from "../../Spinner/Spinner"; import TextDefault from "../../Text/TextDefault/TextDefault"; import TextError from "../../Text/TextError/TextError"; import useStyle from "./styles"; +import i18n from "../../../../i18n"; export const orderStatuses = [ { - key: "PENDING", + key: i18n.t('PENDING'), status: 1, - statusText: "Your order is still pending.", + statusText: i18n.t('orderPending'), }, { - key: "ACCEPTED", + key: i18n.t("ACCEPTED"), status: 2, - statusText: "Restaurant is preparing Food.", + statusText: i18n.t('prepFood'), }, { - key: "PICKED", + key: i18n.t("PICKED"), status: 3, - statusText: "Rider is on the way.", + statusText: i18n.t('riderOnWay'), }, { - key: "DELIVERED", + key: i18n.t("DELIVERED"), status: 4, - statusText: "Order is delivered.", + statusText: i18n.t('orderDelivered'), }, { - key: "COMPLETED", + key: i18n.t("COMPLETED"), status: 5, - statusText: "Order is completed.", + statusText: i18n.t('completeOrder'), }, ]; @@ -88,20 +89,20 @@ const StatusCard = () => { - Your order ID + {i18n.t('orderId')} {item.order_id} - Status + {i18n.t('status')} - {item.order_status}{" "} + {i18n.t(item.order_status)}{" "} {/* {checkStatus(item.order_status).status}.{' '} */}( - {checkStatus(item.order_status).statusText}) + {checkStatus(i18n.t(item.order_status)).statusText}) diff --git a/CustomerApp/src/components/Modals/FilterModal/FilterModal.js b/CustomerApp/src/components/Modals/FilterModal/FilterModal.js index 8c02171..5319bba 100644 --- a/CustomerApp/src/components/Modals/FilterModal/FilterModal.js +++ b/CustomerApp/src/components/Modals/FilterModal/FilterModal.js @@ -12,6 +12,7 @@ import { moderateScale } from '../../../utils/scaling' import RadioBtn from '../../FdRadioBtn/RadioBtn' import TextDefault from '../../Text/TextDefault/TextDefault' import useStyle from './styles' +import i18n from '../../../../i18n' const FilterModal = props => { const styles = useStyle() @@ -82,7 +83,7 @@ const FilterModal = props => { alignment.PTsmall ]}> - Filters + {i18n.t('filters')} { alignItems: 'center' }}> - Reset + {i18n.t('reset')} { justifyContent: 'space-between' }}> - Show sale items only + {i18n.t('showSaleItems')} { justifyContent: 'space-between' }}> - Show stock items only + {i18n.t('showStockItems')} { - Price Range + {i18n.t('priceRange')} @@ -187,7 +188,7 @@ const FilterModal = props => { - Sorting + {i18n.t('sorting')} {keys(SORT_DATA).map(item => { @@ -222,13 +223,13 @@ const FilterModal = props => { - Apply Filter + {i18n.t('applyFilter')} props.closeFilterModal()} style={[styles.width100, alignment.PBlarge, alignment.PTlarge]}> - Close + {i18n.t('close')} diff --git a/CustomerApp/src/components/MyOrders/ActiveOrders.js b/CustomerApp/src/components/MyOrders/ActiveOrders.js index 7b34e93..bcbd1de 100644 --- a/CustomerApp/src/components/MyOrders/ActiveOrders.js +++ b/CustomerApp/src/components/MyOrders/ActiveOrders.js @@ -13,6 +13,7 @@ import TextDefault from '../Text/TextDefault/TextDefault' import TextError from '../Text/TextError/TextError' import TextLine from '../Text/TextLine/TextLine' import useStyle from './styles' +import i18n from '../../../i18n' export const orderStatuses = [ { @@ -65,7 +66,7 @@ const ActiveOrders = ({ if (!pastOrders || (pastOrders && !pastOrders.length)) { return } - return + return } const checkStatus = status => { @@ -77,7 +78,7 @@ const ActiveOrders = ({ return ( - + {activeOrders.map((item, index) => ( - {'ID: '} + {i18n.t('idVar')} {item.order_id} @@ -117,7 +118,7 @@ const ActiveOrders = ({ style={alignment.MTxSmall} bold center> - {item.order_status} + {i18n.t(item.order_status)} diff --git a/CustomerApp/src/screens/Cart/Cart.js b/CustomerApp/src/screens/Cart/Cart.js index e2b79af..10de935 100755 --- a/CustomerApp/src/screens/Cart/Cart.js +++ b/CustomerApp/src/screens/Cart/Cart.js @@ -549,7 +549,7 @@ function Cart() { style={{ width: '30%' }} medium H5> - Total + {i18n.t('total')} - Change + {i18n.t('change')} {address ? ( diff --git a/CustomerApp/src/screens/Coupon/Coupon.js b/CustomerApp/src/screens/Coupon/Coupon.js index 8b421b3..3f35e13 100644 --- a/CustomerApp/src/screens/Coupon/Coupon.js +++ b/CustomerApp/src/screens/Coupon/Coupon.js @@ -21,7 +21,7 @@ function SelectVoucher() { useLayoutEffect(() => { navigation.setOptions({ headerRight: null, - title: 'My Vouchers' + title: i18n.t('myVouchers') }) }, [navigation]) @@ -33,14 +33,14 @@ function SelectVoucher() { { color={colors.iconColor} /> - Signup with Apple + {i18n.t('signupApple')} ); @@ -241,7 +242,7 @@ const CreateAccount = () => { return ( - + { onPress={() => navigation.navigate(NAVIGATION_SCREEN.Login)} > - Already a member? Log in + {i18n.t('alreadyMember')} diff --git a/CustomerApp/src/screens/EditAddress/EditAddress.js b/CustomerApp/src/screens/EditAddress/EditAddress.js index f54c713..d493a61 100644 --- a/CustomerApp/src/screens/EditAddress/EditAddress.js +++ b/CustomerApp/src/screens/EditAddress/EditAddress.js @@ -114,7 +114,7 @@ function EditAddress() { function onCompleted(data) { FlashMessage({ - message: 'Address updated' + message: i18n.t('addressUpdated') }) // show message here navigation.goBack() @@ -189,7 +189,7 @@ function EditAddress() { - Label as + {i18n.t('labelAs')} @@ -255,7 +255,7 @@ function EditAddress() { onBlur={() => { setDeliveryAddressError( !deliveryAddress.trim().length - ? 'Delivery address is required' + ? i18n.t('addressReq') : null ) }} @@ -287,7 +287,7 @@ function EditAddress() { onBlur={() => { setDeliveryDetailsError( !deliveryDetails.trim().length - ? 'Delivery details is required' + ? i18n.t('deliveryDetailsReq') : null ) }} @@ -299,10 +299,10 @@ function EditAddress() { disabled={loading} onPress={() => { const deliveryAddressError = !deliveryAddress.trim().length - ? 'Delivery address is required' + ? i18n.t('addressReq') : null const deliveryDetailsError = !deliveryDetails.trim().length - ? 'Delivery details is required' + ? i18n.t('addressReq') : null setDeliveryAddressError(deliveryAddressError) @@ -346,7 +346,7 @@ function EditAddress() { activeOpacity={0.7} onPress={() => navigation.goBack()}> - {'cancel'} + {i18n.t('cancel')} diff --git a/CustomerApp/src/screens/Help/Help.js b/CustomerApp/src/screens/Help/Help.js index d60a582..957543d 100644 --- a/CustomerApp/src/screens/Help/Help.js +++ b/CustomerApp/src/screens/Help/Help.js @@ -10,15 +10,15 @@ import { useTheme } from '@react-navigation/native' const links = [ { - title: 'Product Page', + title: i18n.t('productPage'), url: 'https://enatega.com/enatega-single-vendor/' }, - { title: 'Docs', url: 'https://enatega.com/docs/enatega-singlevendor-introduction/' }, + { title: i18n.t('docs'), url: 'https://enatega.com/docs/enatega-singlevendor-introduction/' }, { - title: 'Blog', + title: i18n.t('blog'), url: 'https://enatega.com/blog/' }, - { title: 'About Us', url: 'https://ninjascode.com/our-team' } + { title: i18n.t('aboutUs'), url: 'https://ninjascode.com/our-team' } ] function Help() { const styles = useStyle() diff --git a/CustomerApp/src/screens/Login/Login.js b/CustomerApp/src/screens/Login/Login.js index f69d2cc..a9455a0 100755 --- a/CustomerApp/src/screens/Login/Login.js +++ b/CustomerApp/src/screens/Login/Login.js @@ -82,7 +82,7 @@ function Login() { setPasswordError(null); if (!email) { - setEmailError("Email/Phone is required"); + setEmailError(i18n.t('emailphoneReq')); result = false; } else { const emailRegex = /^\w+([\\.-]?\w+)*@\w+([\\.-]?\w+)*(\.\w{2,3})+$/; @@ -93,7 +93,7 @@ function Login() { } } if (!password) { - setPasswordError("Password is required"); + setPasswordError(i18n.t('passReq')); result = false; } return result; @@ -101,7 +101,7 @@ function Login() { async function onCompleted(data) { if (!data.login.is_active) { FlashMessage({ - message: "Can't Login,This Account is Deleted!", + message: i18n.t('cantLogin'), }); setLoading(false); } else { @@ -213,7 +213,7 @@ function Login() { - Enter your Email and Password + {i18n.t('enterUsername')} - Forgot Password? + {i18n.t('forgotPassword')} {renderLoginAction()} @@ -280,7 +280,7 @@ function Login() { } > - Create New Account + {i18n.t('createNewAcc')} diff --git a/CustomerApp/src/screens/Menu/Menu.js b/CustomerApp/src/screens/Menu/Menu.js index 6c3735c..a56c8a6 100755 --- a/CustomerApp/src/screens/Menu/Menu.js +++ b/CustomerApp/src/screens/Menu/Menu.js @@ -18,6 +18,7 @@ import { alignment } from "../../utils/alignment"; import { NAVIGATION_SCREEN } from "../../utils/constant"; import { scale } from "../../utils/scaling"; import useStyle from "./styles"; +import i18n from "../../../i18n"; // constants const CATEGORIES = gql` @@ -32,7 +33,7 @@ function Menu() { useLayoutEffect(() => { navigation.setOptions({ - title: "Home", + title: i18n.t('home'), }); }, []); @@ -51,7 +52,7 @@ function Menu() { - No item found + {i18n.t('noItems')} ); @@ -77,7 +78,7 @@ function Menu() { {isLoggedIn && profile && } - Featured + {i18n.t('featured')} ); diff --git a/CustomerApp/src/screens/MyOrders/MyOrders.js b/CustomerApp/src/screens/MyOrders/MyOrders.js index 7897fc0..3b02d35 100755 --- a/CustomerApp/src/screens/MyOrders/MyOrders.js +++ b/CustomerApp/src/screens/MyOrders/MyOrders.js @@ -21,8 +21,8 @@ import { ICONS_NAME, NAVIGATION_SCREEN } from "../../utils/constant"; import { scale } from "../../utils/scaling"; import useStyle from "./style"; -const orderStatusActive = ["PENDING", "PICKED", "ACCEPTED"]; -const orderStatusInactive = ["DELIVERED", "COMPLETED"]; +const orderStatusActive = [i18n.t("PENDING"), i18n.t("PICKED"), i18n.t("ACCEPTED")]; +const orderStatusInactive = [i18n.t("DELIVERED"), i18n.t("COMPLETED")]; function MyOrders() { const styles = useStyle(); @@ -86,7 +86,7 @@ function MyOrders() { - No Orders Found + {i18n.t('noOrdersFound')} navigation.navigate(NAVIGATION_SCREEN.Menu)} > - Start Shopping + {i18n.t('startShopping')} @@ -109,7 +109,7 @@ function MyOrders() { data={ loadingOrders || errorOrders ? [] - : orders.filter((o) => orderStatusInactive.includes(o.order_status)) + : orders.filter((o) => orderStatusInactive.includes(i18n.t(o.order_status))) } style={styles.container} contentContainerStyle={styles.contentContainer} @@ -118,10 +118,10 @@ function MyOrders() { - orderStatusActive.includes(o.order_status) + orderStatusActive.includes(i18n.t(o.order_status)) )} pastOrders={orders.filter((o) => - orderStatusInactive.includes(o.order_status) + orderStatusInactive.includes(i18n.t(o.order_status)) )} loading={loadingOrders} error={errorOrders} @@ -151,7 +151,7 @@ function MyOrders() { - {"ID: "} + {i18n.t('idVar')} {item.order_id} diff --git a/CustomerApp/src/screens/NewAddress/NewAddress.js b/CustomerApp/src/screens/NewAddress/NewAddress.js index 8dab412..e006524 100644 --- a/CustomerApp/src/screens/NewAddress/NewAddress.js +++ b/CustomerApp/src/screens/NewAddress/NewAddress.js @@ -113,7 +113,7 @@ function NewAddress() { regionChange(loc) } else { FlashMessage({ - message: 'Location permission not granted' + message: i18n.t('locaPermission') }) } } @@ -139,7 +139,7 @@ function NewAddress() { function onCompleted(data) { FlashMessage({ - message: 'Address added' + message: i18n.t('addressAdded') }) const cartAddress = route.params ? route.params.backScreen : null if (cartAddress === NAVIGATION_SCREEN.Cart) { @@ -211,7 +211,7 @@ function NewAddress() { - Label As: + {i18n.t('labelAs')} @@ -277,7 +277,7 @@ function NewAddress() { onBlur={() => { setDeliveryAddressError( !deliveryAddress.trim().length - ? 'Delivery address is required' + ? i18n.t('addressReq') : null ) }} @@ -311,7 +311,7 @@ function NewAddress() { onBlur={() => { setDeliveryDetailsError( !deliveryDetails.trim().length - ? 'Delivery details is required' + ? i18n.t('deliveryDetailsReq') : null ) }} @@ -322,10 +322,10 @@ function NewAddress() { disabled={loading} onPress={() => { const deliveryAddressError = !deliveryAddress.trim().length - ? 'Delivery address is required' + ? i18n.t('addressReq') : null const deliveryDetailsError = !deliveryDetails.trim().length - ? 'Delivery details is required' + ? i18n.t('deliveryDetailsReq') : null setDeliveryAddressError(deliveryAddressError) @@ -368,7 +368,7 @@ function NewAddress() { activeOpacity={0.7} onPress={() => navigation.goBack()}> - {'Cancel'} + {i18n.t('cancel')} diff --git a/CustomerApp/src/screens/OrderDetail/OrderDetail.js b/CustomerApp/src/screens/OrderDetail/OrderDetail.js index da431d1..a4f6291 100644 --- a/CustomerApp/src/screens/OrderDetail/OrderDetail.js +++ b/CustomerApp/src/screens/OrderDetail/OrderDetail.js @@ -51,7 +51,7 @@ function OrderDetail() { useLayoutEffect(() => { navigation.setOptions({ - headerTitle: 'Order Detail', + headerTitle: i18n.t('orderDetail'), headerRight: null }) }, [navigation]) @@ -73,7 +73,7 @@ function OrderDetail() { - {order.order_status === 'PICKED' && order.rider && ( + {i18n.t(order.order_status) === i18n.t('PICKED') && order.rider && ( - Thank You! + {i18n.t('thankYou')} - Your order ID is + {i18n.t('orderId')} {order.order_id} @@ -103,20 +103,20 @@ function OrderDetail() { bold H5 style={[alignment.MTlarge]}> - Status + {i18n.t('status')} - {order.order_status}{' '} + {i18n.t(order.order_status)}{' '} - ( {checkStatus(order.order_status).statusText}) + ( {checkStatus(i18n.t(order.order_status)).statusText}) - Delivery address: + {i18n.t('deliveryAddress')}: {order.delivery_address.delivery_address} @@ -151,7 +151,7 @@ function OrderDetail() { textColor={colors.fontMainColor} medium style={{ width: '40%' }}> - Subtotal + {i18n.t('subTotal')} - Delivery fee + {i18n.t('deliveryFee')} - Total + {i18n.t('total')} - {order.order_status === 'PICKED' && ( + {i18n.t(order.order_status) === i18n.t('PICKED') && ( - Chat with Rider + {i18n.t('chatWithRider')} )} - {(order.order_status === 'DELIVERED' || - order.order_status === 'COMPLETED') && + {(i18n.t(order.order_status) === i18n.t('DELIVERED') || + i18n.t(order.order_status) === i18n.t('COMPLETED')) && order.review && order.review.rating === 0 && ( - Any suggestion? + {i18n.t('anySuggestion')} - Review regarding your order? + {i18n.t('reviewRegarding')} - Write a review + {i18n.t('writeReview')} diff --git a/CustomerApp/src/screens/Profile/ChangePassword.js b/CustomerApp/src/screens/Profile/ChangePassword.js index 8e94dce..b300ae2 100644 --- a/CustomerApp/src/screens/Profile/ChangePassword.js +++ b/CustomerApp/src/screens/Profile/ChangePassword.js @@ -53,11 +53,11 @@ function ChangePassword(props) { if (data.changePassword) { clearFields() FlashMessage({ - message: 'Password Updated' + message: i18n.t('passChange') }) props.hideModal() } else { - Alert.alert('Error', 'Invalid password') + Alert.alert('Error', i18n.t('invalidPass')) } } @@ -70,7 +70,7 @@ function ChangePassword(props) { - Change password + {i18n.t('changePass')} @@ -78,7 +78,7 @@ function ChangePassword(props) { { - setOldPasswordError(!oldPassword ? 'Password is required' : '') + setOldPasswordError(!oldPassword ? i18n.t('passReq') : '') }} /> @@ -97,7 +97,7 @@ function ChangePassword(props) { { - setNewPasswordError(!newPassword ? 'Password is required' : '') + setNewPasswordError(!newPassword ? i18n.t('passReq') : '') }} /> @@ -117,9 +117,9 @@ function ChangePassword(props) { disabled={loading} onPress={() => { const newPasswordError = - newPassword === '' ? 'Password is required' : '' + newPassword === '' ? i18n.t('passReq') : '' const oldPasswordError = - oldPassword === '' ? 'Password is required' : '' + oldPassword === '' ? i18n.t('passReq') : '' setNewPasswordError(newPasswordError) setOldPasswordError(oldPasswordError) diff --git a/CustomerApp/src/screens/Profile/Profile.js b/CustomerApp/src/screens/Profile/Profile.js index 7e5541b..346cb67 100644 --- a/CustomerApp/src/screens/Profile/Profile.js +++ b/CustomerApp/src/screens/Profile/Profile.js @@ -83,9 +83,9 @@ function Profile() { useEffect(() => { if (backScreen) { viewHideAndShow(); - setPhoneError("Phone number is required"); + setPhoneError(i18n.t('phoneNumberRequired')); FlashMessage({ - message: "Phone Number is missing", + message: i18n.t('phoneNumberMissing'), }); } }, [backScreen]); @@ -97,7 +97,7 @@ function Profile() { function onCompleted({ updateUser }) { if (updateUser) { FlashMessage({ - message: "User's Info Updated", + message: i18n.t('userInfoUpdated'), }); if (backScreen) { navigation.goBack(); @@ -119,12 +119,12 @@ function Profile() { let res = true; if (!name.trim()) { refName.current.focus(); - setNameError("Name is required"); + setNameError(i18n.t('nameReq')); res = false; } const num = phone.trim().replace(".", ""); if (num.length < 11 || num.length > 15 || isNaN(num)) { - setPhoneError("Minimum 11 and maximum 15 characters allowed"); + setPhoneError(i18n.t('minWords')); if (res) { refPhone.current.focus(); } @@ -154,7 +154,7 @@ function Profile() { label={i18n.t("name")} ref={refName} editable={false} - defaultValue={profile.name} + defaultValue={profile.name ? profile.name : null} labelFontSize={scale(12)} fontSize={scale(12)} style={{ @@ -224,7 +224,7 @@ function Profile() { onPress={() => setModalVisible(true)} style={styles.changePassword} > - Change Password + {i18n.t('changePass')} - {"Cancel"} + {i18n.t('cancel')} @@ -394,7 +394,7 @@ function Profile() { textColor={colors.fontSecondColor} style={alignment.MBsmall} > - All rights are reserved by Enatega + {i18n.t('rightsReserved')} diff --git a/CustomerApp/src/screens/Register/Register.js b/CustomerApp/src/screens/Register/Register.js index ca635a4..76c9cc5 100755 --- a/CustomerApp/src/screens/Register/Register.js +++ b/CustomerApp/src/screens/Register/Register.js @@ -31,6 +31,7 @@ import { ICONS_NAME, NAVIGATION_SCREEN } from '../../utils/constant' import country_codes from '../../utils/country_codes' import { scale, verticalScale } from '../../utils/scaling' import useStyle from './styles' +import i18n from '../../../i18n' const CREATEUSER = gql` ${createUser} @@ -309,7 +310,7 @@ function Register() { navigation.navigate(NAVIGATION_SCREEN.ForgotPassword) }> - Forgot password? + {i18n.t('forgotPassword')} diff --git a/CustomerApp/src/screens/Settings/Settings.js b/CustomerApp/src/screens/Settings/Settings.js index b4eb39a..9896176 100644 --- a/CustomerApp/src/screens/Settings/Settings.js +++ b/CustomerApp/src/screens/Settings/Settings.js @@ -159,7 +159,14 @@ function Settings() { "enatega-language", languageTypes[languageInd].code ); - Updates.reloadAsync(); + i18n.locale = languageTypes[languageInd].code + const lang = await AsyncStorage.getItem("enatega-language"); + console.log(lang) + const defLang = languageTypes.findIndex((el) => el.code === lang); + const langName = languageTypes[defLang].value; + activeRadioSetter(defLang); + languageNameSetter(langName); + // Updates.reloadAsync(); } }; @@ -169,7 +176,7 @@ function Settings() { function onCompleted() { FlashMessage({ - message: "Notification Status Updated", + message: i18n.t('notificationUpdate'), }); } @@ -242,7 +249,7 @@ function Settings() { medium H5 > - Language + {i18n.t('language')} ({languageName}) @@ -275,7 +282,7 @@ function Settings() { textColor={colors.statusSecondColor} > {" "} - Receive Special Offers{" "} + {i18n.t('receiveOffers')}{" "} {" "} - Get updates on your order status!{" "} + {i18n.t('getUpdatesText')}{" "} {" "} - Delete Account{" "} + {i18n.t('delAcc')}{" "} - Version: {Constants.manifest.version} + {/* Version: {Constants.manifest.version} */} @@ -373,7 +380,7 @@ function Settings() { > - Are you Sure you want to delete Account? + {i18n.t('delAccText')} onClose()} > - Cancel + {i18n.t('cancel')} diff --git a/CustomerApp/translations/de.js b/CustomerApp/translations/de.js index 7526468..041f871 100644 --- a/CustomerApp/translations/de.js +++ b/CustomerApp/translations/de.js @@ -136,5 +136,87 @@ export const de = { coupanFailed: 'Gutschein nicht verfügbar', invalidCoupan: 'Ungültiger Gutschein', validateItems: 'Artikel vor dem Auschecken in den Warenkorb legen', - validateDelivery: 'Stellen Sie die Lieferadresse vor dem Auschecken ein' + validateDelivery: 'Stellen Sie die Lieferadresse vor dem Auschecken ein', + language: 'Sprache', + getUpdatesText: 'Erhalten Sie Updates zum Bestellstatus!', + delAcc: 'Konto löschen', + delAccText: 'Sind Sie sicher, dass Sie das Konto löschen möchten?', + cancel: 'Abbrechen', + receiveOffers: 'Spezielle Angebote erhalten', + notificationUpdate: 'Benachrichtigungsstatus aktualisiert', + notificationsNotWorking: "Benachrichtigungen funktionieren nicht im Simulator", + loginOrCreateAcc: "Anmelden/Konto erstellen", + welcome: "Willkommen", + titleSettings: 'Einstellungen', + home: 'Startseite', + noItems: 'Kein Artikel gefunden', + featured: 'Vorgestellt', + filters: 'Filter', + reset: 'Zurücksetzen', + showSaleItems: 'Nur Verkaufsartikel anzeigen', + showStockItems: 'Nur Lagerartikel anzeigen', + priceRange: 'Preisspanne', + sorting: 'Sortierung', + applyFilter: 'Filter anwenden', + close: 'Schließen', + phoneNumberRequired: "Telefonnummer ist erforderlich", +phoneNumberMissing: "Telefonnummer fehlt", +userInfoUpdated: "Benutzerinformationen aktualisiert", +nameReq: "Name ist erforderlich", +minWords: "Mindestens 11 und maximal 15 Zeichen erlaubt", +rightsReserved: "Alle Rechte vorbehalten von Enatega", +changePass: "Passwort ändern", +currentPass: "Aktuelles Passwort", +passReq: "Passwort ist erforderlich", +newPass: "Neues Passwort", +apply: "Anwenden", +invalidPass: "Ungültiges Passwort", +passChange: "Passwort aktualisiert", +noOrdersFound: "Keine Bestellungen gefunden", +startShopping: "Mit dem Einkaufen beginnen", +reOrder: "Erneut bestellen", +smthWrong: "Etwas ist falsch", +noOrdersAssigned: "Noch keine Bestellungen zugewiesen!", +oldOrder: "Alte Bestellung", +activeOrder: "Aktive Bestellung", +idVar: 'ID: ', +addressUpdated: 'Adresse aktualisiert', +labelAs: 'Als bezeichnen', +addressReq: 'Lieferadresse erforderlich', +deliveryDetailsReq: 'Lieferdetails erforderlich', +locaPermission: 'Standortberechtigung nicht erteilt', +addressAdded: 'Adresse hinzugefügt', +productPage: 'Produktseite', +docs: 'Dokumente', +blog: 'Blog', +aboutUs: 'Über uns', +myVouchers: 'Meine Gutscheine', +typeVoucherCode: "Gutscheincode eingeben", +enterVoucherCode: "Geben Sie Ihren Gutscheincode ein", +status: 'Status', +anySuggestion: 'Irgendwelche Vorschläge?', +reviewRegarding: 'Bewertung zu Ihrer Bestellung?', +writeReview: 'Eine Bewertung schreiben', +chatWithRider: 'Mit dem Fahrer chatten', +signupGoogle: 'Mit Google anmelden', +signupEmail: 'Anmeldung mit E-Mail', +signup: 'Anmelden', +signupApple: 'Mit Apple anmelden', +alreadyMember: 'Bereits Mitglied? Einloggen', +enterUsername: 'Geben Sie Ihre E-Mail-Adresse und Ihr Passwort ein', +createNewAcc: 'Neues Konto erstellen', +emailphoneReq: "E-Mail/Telefonnummer ist erforderlich", +invalidMail: "Ungültige E-Mail/Telefonnummer", +passReq: "Passwort ist erforderlich", +cantLogin: "Anmeldung nicht möglich, dieses Konto wurde gelöscht!", +orderPending: "Ihre Bestellung wird noch bearbeitet.", +prepFood: "Das Restaurant bereitet das Essen vor.", +riderOnWay: "Der Fahrer ist unterwegs.", +orderDelivered: "Die Bestellung wurde geliefert.", +completeOrder: "Die Bestellung ist abgeschlossen.", +PENDING: "AUSSTEHEND", +ACCEPTED: 'AKZEPTIERT', +PICKED: "ABGEHOLT", +DELIVERED: "GELIEFERT", +COMPLETED: "ABGESCHLOSSEN" } diff --git a/CustomerApp/translations/en.js b/CustomerApp/translations/en.js index 91c00e8..7d0c9f4 100644 --- a/CustomerApp/translations/en.js +++ b/CustomerApp/translations/en.js @@ -139,5 +139,84 @@ export const en = { coupanFailed: 'Coupon Unavailable', invalidCoupan: 'Invalid Coupon', validateItems: 'Add items to cart before checkout', - validateDelivery: 'Set delivery address before checkout' + validateDelivery: 'Set delivery address before checkout', + language: 'Language', + getUpdatesText: 'Get updates on your order status!', + delAcc: 'Delete Account', + delAccText: 'Are you Sure you want to delete Account?', + cancel:'Cancel', + receiveOffers: 'Receive Special Offers', + notificationUpdate: "Notification Status Updated", + notificationsNotWorking: "Notification do not work on simulator", + loginOrCreateAcc: "Login/Create Account", + welcome: "Welcome", + noItems: 'No item found', + featured: 'Featured', + filters: 'Filters', + reset: 'Reset', + showSaleItems: 'Show sale items only', + showStockItems: 'Show stock items only', + priceRange: 'Price Range', + sorting: 'Sorting', + applyFilter: 'Apply Filter', + close: 'Close', + phoneNumberRequired: "Phone number is required", + phoneNumberMissing: "Phone Number is missing", + userInfoUpdated: "User's Info Updated", + nameReq: "Name is required", + minWords: "Minimum 11 and maximum 15 characters allowed", + rightsReserved: "All rights are reserved by Enatega", + changePass: "Change Password", + currentPass: "Current Password", + passReq: 'Password is required', + newPass: "New Password", + invalidPass: 'Invalid password', + passChange: 'Password Updated', + noOrdersFound: 'No Orders Found', + startShopping: 'Start Shopping', + reOrder: "Re-Order", + smthWrong: "Something is worng", + noOrdersAssigned: "No Orders Assigned yet!", + oldOrder: "Old Order", + activeOrder: "Active Order", + idVar: 'ID: ', + addressUpdated: 'Address updated', + labelAs: 'Label as', + addressReq: 'Delivery address is required', + deliveryDetailsReq: 'Delivery details is required', + locaPermission: 'Location permission not granted', + addressAdded: 'Address added', + productPage: 'Product Page', + docs: 'Docs', + blog: 'Blog', + aboutUs: 'About Us', + myVouchers: 'My Vouchers', + typeVoucherCode: "TYPe voucher code", + enterVoucherCode: "Enter your voucher code", + status: 'Status', + anySuggestion: 'Any suggestion?', + reviewRegarding: 'Review regarding your order?', + writeReview: 'Write a review', + chatWithRider: 'Chat with Rider', + signupGoogle: 'Signup with Google', + signupEmail: 'Signup using Email', + signup: 'Signup', + signupApple: 'Signup with Apple', + alreadyMember: 'Already a member? Log in', + enterUsername: 'Enter your Email and Password', + createNewAcc: 'Create New Account', + emailphoneReq: "Email/Phone is required", + invalidMail: "Invalid Email/Phone", + passReq: "Password is required", + cantLogin: "Can't Login,This Account is Deleted!", + orderPending: "Your order is still pending.", + prepFood: "Restaurant is preparing Food.", + riderOnWay: "Rider is on the way.", + orderDelivered: "Order is delivered.", + completeOrder: "Order is completed.", + PENDING: "PENDING", + ACCEPTED: 'ACCEPTED', + PICKED: "PICKED", + DELIVERED: "DELIVERED", + COMPLETED: "COMPLETED" } diff --git a/CustomerApp/translations/fr.js b/CustomerApp/translations/fr.js index 4d680f7..122b542 100644 --- a/CustomerApp/translations/fr.js +++ b/CustomerApp/translations/fr.js @@ -137,5 +137,87 @@ export const fr = { coupanFailed: 'Coupon non disponible', invalidCoupan: 'Coupon non valide', validateItems: 'Ajouter des articles au panier avant le paiement', - validateDelivery: "Définir l'adresse de livraison avant le paiement" + validateDelivery: "Définir l'adresse de livraison avant le paiement", + language: 'Langue', + getUpdatesText: 'Obtenez des mises à jour sur le statut de votre commande !', + delAcc: 'Supprimer le compte', + delAccText: 'Êtes-vous sûr de vouloir supprimer le compte ?', + cancel: 'Annuler', + receiveOffers: 'Recevoir des offres spéciales', + notificationUpdate: 'Statut de notification mis à jour', + notificationsNotWorking: "Les notifications ne fonctionnent pas sur le simulateur", + loginOrCreateAcc: "Connexion/Créer un compte", + welcome: "Bienvenue", + titleSettings: 'Paramètres', + home: 'Accueil', + noItems: 'Aucun élément trouvé', + featured: 'En vedette', + filters: 'Filtres', + reset: 'Réinitialiser', + showSaleItems: 'Afficher uniquement les articles en vente', + showStockItems: 'Afficher uniquement les articles en stock', + priceRange: 'Plage de prix', + sorting: 'Tri', + applyFilter: 'Appliquer le filtre', + close: 'Fermer', + phoneNumberRequired: "Numéro de téléphone requis", +phoneNumberMissing: "Numéro de téléphone manquant", +userInfoUpdated: "Informations de l'utilisateur mises à jour", +nameReq: "Nom requis", +minWords: "Minimum 11 et maximum 15 caractères autorisés", +rightsReserved: "Tous les droits sont réservés par Enatega", +changePass: "Changer le mot de passe", +currentPass: "Mot de passe actuel", +passReq: "Mot de passe requis", +newPass: "Nouveau mot de passe", +apply: "Appliquer", +invalidPass: "Mot de passe invalide", +passChange: "Mot de passe mis à jour", +noOrdersFound: "Aucune commande trouvée", +startShopping: "Commencer les achats", +reOrder: "Recommander", +smthWrong: "Quelque chose ne va pas", +noOrdersAssigned: "Aucune commande attribuée pour le moment !", +oldOrder: "Ancienne commande", +activeOrder: "Commande active", +idVar: 'ID : ', +addressUpdated: 'Adresse mise à jour', +labelAs: 'Étiqueter comme', +addressReq: 'Adresse de livraison requise', +deliveryDetailsReq: 'Détails de livraison requis', +locaPermission: 'Autorisation de localisation non accordée', +addressAdded: 'Adresse ajoutée', +productPage: 'Page produit', +docs: 'Docs', +blog: 'Blog', +aboutUs: 'À propos de nous', +myVouchers: 'Mes bons', +typeVoucherCode: "Saisir le code du bon", +enterVoucherCode: "Entrez votre code de bon", +status: 'Statut', +anySuggestion: 'Des suggestions ?', +reviewRegarding: 'Avis concernant votre commande ?', +writeReview: 'Écrire un avis', +chatWithRider: 'Discuter avec le livreur', +signupGoogle: 'Inscription avec Google', +signupEmail: 'Inscription par e-mail', +signup: 'Sinscrire', +signupApple: 'Inscription avec Apple', +alreadyMember: 'Déjà membre ? Se connecter', +enterUsername: 'Entrez votre adresse e-mail et votre mot de passe', +createNewAcc: 'Créer un nouveau compte', +emailphoneReq: "E-mail/Téléphone requis", +invalidMail: "E-mail/Téléphone invalide", +passReq: "Mot de passe requis", +cantLogin: "Impossible de se connecter, ce compte a été supprimé !", +orderPending: "Votre commande est en attente.", +prepFood: "Le restaurant prépare la nourriture.", +riderOnWay: "Le livreur est en route.", +orderDelivered: "La commande a été livrée.", +completeOrder: "La commande est terminée.", +PENDING: "EN ATTENTE", +ACCEPTED: 'ACCEPTÉE', +PICKED: "ENLEVÉE", +DELIVERED: "LIVRÉE", +COMPLETED: "TERMINÉE" } diff --git a/CustomerApp/translations/km.js b/CustomerApp/translations/km.js index 6cd9087..f1969d1 100644 --- a/CustomerApp/translations/km.js +++ b/CustomerApp/translations/km.js @@ -132,5 +132,87 @@ export const km = { coupanFailed: 'គូប៉ុងមិនមានទេ', invalidCoupan: 'គូប៉ុងមិនត្រឹមត្រូវ', validateItems: 'បន្ថែមរបស់របរទៅរទេះមុនពេលឆែក', - validateDelivery: 'កំណត់អាសយដ្ឋានដឹកជញ្ជូនមុនពេលពិនិត្យចេញ' + validateDelivery: 'កំណត់អាសយដ្ឋានដឹកជញ្ជូនមុនពេលពិនិត្យចេញ', + language: 'ភាសា', + getUpdatesText: 'ទទួល​បាន​ការ​ធ្វើ​បច្ចុប្បន្ន​ភាព​លើ​ស្ថាន​ភាព​ការ​បញ្ជាទិញ​របស់​អ្នក!', + delAcc: 'លុប​គណនី', + delAccText: 'តើ​អ្នក​ប្រាកដ​ថា​តើ​ចង់​លុប​គណនី​ឬ​ទេ?', + cancel: 'បោះបង់', + receiveOffers: 'ទទួល​បាន​ការ​ផ្តល់​ជូន​ពិសេស', + notificationUpdate: 'ការ​ប្រកាស​ការ​ជូន​ដំណឹង​ត្រូវបាន​ធ្វើ​បច្ចុប្បន្ន', + notificationsNotWorking: "ការ​ជូន​ដំណឹង​មិន​ដំណើរ​ការ​លើ​ម៉ាស៊ីន​សម្រាប់​ប្រើប្រាស់តំណល", + loginOrCreateAcc: "ចូល​ប្រើ/បង្កើត​គណនី", + welcome: "ស្វាគមន៍", + titleSettings: 'ការ​កំណត់', + home: 'ទំព័រ​ដើម', + noItems: 'រក​មិន​ឃើញ​ទេ', + featured: 'ផ្សេងៗ', + filters: 'តម្រង', + reset: 'កំណត់​ឡើងវិញ', + showSaleItems: 'បង្ហាញ​ទំនិញ​លក់​តែប៉ុណ្ណោះ', + showStockItems: 'បង្ហាញ​ទំនិញ​ស្តុក​តែប៉ុណ្ណោះ', + priceRange: 'ជម្រើស​តម្លៃ', + sorting: 'តម្រៀបតាម', + applyFilter: 'អនុវត្ត​តម្រង', + close: 'បិទ', + phoneNumberRequired: "ត្រូវការលេខទូរស័ព្ទ", +phoneNumberMissing: "ខុសលេខទូរស័ព្ទ", +userInfoUpdated: "ព័ត៌មានអ្នកប្រើប្រាស់ត្រូវបានធ្វើបច្ចុប្បន្នភាព", +nameReq: "ត្រូវការឈ្មោះ", +minWords: "អត្ថបទអប្បាយបន្ទាប់ពី 11 និងអតិបរិមាណអតិបរិមាណអតិបរិមាណអតិបរិមាណអតិបរិមាណអតិបរិមាណអតិបរិមាណអតិបរិមាណអតិបរិមាណអតិបរិមាណ", +rightsReserved: "រក្សាសិទ្ធិទាំងអស់គ្នាដោយ Enatega", +changePass: "ប្ដូរលេខសម្ងាត់", +currentPass: "លេខសម្ងាត់បច្ចុប្បន្ន", +passReq: "ត្រូវការលេខសម្ងាត់", +newPass: "លេខសម្ងាត់ថ្មី", +apply: "អនុវត្ត", +invalidPass: "លេខសម្ងាត់មិនត្រឹមត្រូវ", +passChange: "លេខសម្ងាត់ត្រូវបានធ្វើបច្ចុប្បន្នភាព", +noOrdersFound: "រកមិនឃើញការបញ្ជាទិញ", +startShopping: "ចាប់ផ្តើមទិញ", +reOrder: "កម្មង់ម្តងទៀត", +smthWrong: "មានអ្វីមួយខុស", +noOrdersAssigned: "មិនទាន់បានចាក់ការបញ្ជាទិញទេ!", +oldOrder: "ការបញ្ជាទិញចាស់", +activeOrder: "ការបញ្ជាទិញដែលមានសកម្ម", +idVar: 'លេខសម្គាល់: ', +addressUpdated: 'អាសយដ្ឋានត្រូវបានធ្វើបច្ចុប្បន្នភាព', +labelAs: 'ស្លាកជាដើម', +addressReq: 'អាសយដ្ឋានការដឹកជញ្ជូនត្រូវការ', +deliveryDetailsReq: 'សេចក្ដីលម្អិតនៃការដឹកជញ្ជូនត្រូវការ', +locaPermission: 'ការអនុញ្ញាតឱ្យតាមដានទីតាំងមិនបានទទួលយក', +addressAdded: 'បាន​បន្ថែម​អាសយដ្ឋាន', +productPage: 'ទំព័រផលិតផល', +docs: 'ឯកសារ', +blog: 'ប្លក់', +aboutUs: 'អំពី​យើង', +myVouchers: 'លេខកូដ​វេបសាយ​របស់​ខ្ញុំ', +typeVoucherCode: "បញ្ចូល​លេខកូដ​វេបសាយ", +enterVoucherCode: "បញ្ចូល​លេខកូដ​វេបសាយ​របស់​អ្នក", +status: 'ស្ថានភាព', +anySuggestion: 'មានអំណាចណាស់មែនទេ?', +reviewRegarding: 'ពិនិត្យឡើងវិញអំពីការបញ្ជាទិញរបស់អ្នក?', +writeReview: 'សរសេរពិន្ទុ', +chatWithRider: 'ជជែកជាមួយអ្នកបើកដំណើរ', +signupGoogle: 'ចុះឈ្មោះជាមួយ Google', +signupEmail: 'ចុះឈ្មោះតាមអ៊ីម៉ែល', +signup: 'ចុះឈ្មោះ', +signupApple: 'ចុះឈ្មោះជាមួយ Apple', +alreadyMember: 'រួចហើយរួចចូលក្នុង', +enterUsername: 'បញ្ចូលអ៊ីម៉ែលរបស់អ្នក និងពាក្យសម្ងាត់', +createNewAcc: 'បង្កើតគណនីថ្មី', +emailphoneReq: "ត្រូវការអ៊ីម៉ែល/លេខទូរស័ព្ទ", +invalidMail: "អ៊ីម៉ែល/លេខទូរស័ព្ទ​មិនត្រឹមត្រូវ", +passReq: "ត្រូវការពាក្យសម្ងាត់", +cantLogin: "មិនអាចចូលបានទេ, គណនីនេះត្រូវបានលុប!", +orderPending: "ការបញ្ជាទិញរបស់អ្នកមិនទាន់ទទួលយកទេ។", +prepFood: "ភោជនីដែលកំពុងរៀបចំអាហារ។", +riderOnWay: "អ្នកបើកដំណើរកំពង់កោះមាន់នៅលើផ្លូវ។", +orderDelivered: "ការបញ្ជាទិញបានដឹកជញ្ជូន។", +completeOrder: "ការបញ្ជាទិញបានបញ្ចប់។", +PENDING: "កំពុងរង់ចាំ", +ACCEPTED: 'បានទទួលយក', +PICKED: "បានជូនយក", +DELIVERED: "បានដឹកជញ្ជូន", +COMPLETED: "បានបញ្ចប់" } diff --git a/CustomerApp/translations/zh.js b/CustomerApp/translations/zh.js index bd3170a..0769de7 100644 --- a/CustomerApp/translations/zh.js +++ b/CustomerApp/translations/zh.js @@ -128,5 +128,87 @@ export const zh = { coupanFailed: '优惠券不可用', invalidCoupan: '优惠券无效', validateItems: '结帐前将商品添加到购物车', - validateDelivery: '结帐前设置送货地址' + validateDelivery: '结帐前设置送货地址', + language: '语言', + getUpdatesText: '获取订单状态更新!', + delAcc: '删除账户', + delAccText: '您确定要删除账户吗?', + cancel: '取消', + receiveOffers: '接收特别优惠', + notificationUpdate: '通知状态已更新', + notificationsNotWorking: "通知在模拟器上无法工作", + loginOrCreateAcc: "登录/创建帐户", + welcome: "欢迎", + titleSettings: '设置', + home: '主页', + noItems: '未找到物品', + featured: '特色', + filters: '筛选', + reset: '重置', + showSaleItems: '仅显示特价商品', + showStockItems: '仅显示有库存商品', + priceRange: '价格范围', + sorting: '排序', + applyFilter: '应用筛选', + close: '关闭', + phoneNumberRequired: "需要电话号码", +phoneNumberMissing: "缺少电话号码", +userInfoUpdated: "用户信息已更新", +nameReq: "需要姓名", +minWords: "最少11个字符,最多15个字符", +rightsReserved: "版权所有,Enatega保留所有权利", +changePass: "更改密码", +currentPass: "当前密码", +passReq: "需要密码", +newPass: "新密码", +apply: "应用", +invalidPass: "无效密码", +passChange: "密码已更新", +noOrdersFound: "未找到订单", +startShopping: "开始购物", +reOrder: "重新下单", +smthWrong: "出现问题", +noOrdersAssigned: "尚未分配订单!", +oldOrder: "旧订单", +activeOrder: "活跃订单", +idVar: 'ID:', +addressUpdated: '地址已更新', +labelAs: '标记为', +addressReq: '需要交付地址', +deliveryDetailsReq: '需要交付细节', +locaPermission: '未授予位置权限', +addressAdded: '已添加地址', +productPage: '产品页面', +docs: '文档', +blog: '博客', +aboutUs: '关于我们', +myVouchers: '我的优惠券', +typeVoucherCode: "输入优惠券代码", +enterVoucherCode: "输入您的优惠券代码", +status: '状态', +anySuggestion: '有什么建议吗?', +reviewRegarding: '关于您的订单的评论?', +writeReview: '撰写评论', +chatWithRider: '与骑手聊天', +signupGoogle: '使用 Google 注册', +signupEmail: '使用电子邮件注册', +signup: '注册', +signupApple: '使用 Apple 注册', +alreadyMember: '已经是会员?登录', +enterUsername: '输入您的电子邮件和密码', +createNewAcc: '创建新帐户', +emailphoneReq: "需要电子邮件/电话号码", +invalidMail: "无效的电子邮件/电话号码", +passReq: "需要密码", +cantLogin: "无法登录,此帐户已被删除!", +orderPending: "您的订单仍在等待中。", +prepFood: "餐厅正在准备食物。", +riderOnWay: "骑手正在途中。", +orderDelivered: "订单已送达。", +completeOrder: "订单已完成。", +PENDING: "待处理", +ACCEPTED: '已接受', +PICKED: "已取货", +DELIVERED: "已送达", +COMPLETED: "已完成" } From 8c829be3df26ab62b0d9175f8bef1f74e9fbcfeb Mon Sep 17 00:00:00 2001 From: Kashif Shehzad Baloch Date: Thu, 4 Jan 2024 16:45:52 +0500 Subject: [PATCH 3/6] some header localisation added --- RiderApp/languages/de.js | 2 ++ RiderApp/languages/en.js | 2 ++ RiderApp/languages/fr.js | 3 ++- RiderApp/languages/km.js | 3 ++- RiderApp/languages/zh.js | 3 ++- RiderApp/src/screens/Help/Help.js | 10 +++++----- RiderApp/src/screens/HelpBrowser/HelpBrowser.js | 3 ++- 7 files changed, 17 insertions(+), 9 deletions(-) diff --git a/RiderApp/languages/de.js b/RiderApp/languages/de.js index 8fce2b6..868eb52 100644 --- a/RiderApp/languages/de.js +++ b/RiderApp/languages/de.js @@ -146,4 +146,6 @@ export const de = { OrderDetails: 'Bestelgegevens', Subtotal: 'Subtotaal', Assigntome: 'Toewijzen aan mij', + 'About Us': 'Over Ons', +'Product Page': 'Product Pagina', } diff --git a/RiderApp/languages/en.js b/RiderApp/languages/en.js index da1ddc4..73cead9 100644 --- a/RiderApp/languages/en.js +++ b/RiderApp/languages/en.js @@ -145,4 +145,6 @@ export const en = { OrderDetails: 'Order Details', Subtotal: 'Subtotal', Assigntome: 'Assign to me', + 'About Us': 'About Us', + 'Product Page': 'Product Page' } diff --git a/RiderApp/languages/fr.js b/RiderApp/languages/fr.js index a9d7ae8..4c7852b 100644 --- a/RiderApp/languages/fr.js +++ b/RiderApp/languages/fr.js @@ -146,5 +146,6 @@ export const fr = { OrderDetails: 'Détails de la commande', Subtotal: 'Sous-total', Assigntome: 'Attribuer à moi', - + 'About Us': 'À Propos de Nous', +'Product Page': 'Page Produit', } diff --git a/RiderApp/languages/km.js b/RiderApp/languages/km.js index 4e8b290..bbd8099 100644 --- a/RiderApp/languages/km.js +++ b/RiderApp/languages/km.js @@ -143,5 +143,6 @@ export const km = { OrderDetails: 'ព័ត៌មានការបញ្ជាទិញ', Subtotal: 'សរុបរង', Assigntome: 'ផ្ដល់ទៅខ្លួនឯង', - + 'About Us': 'អំពីយើង', +'Product Page': 'ទំព័រផលិតផល', } diff --git a/RiderApp/languages/zh.js b/RiderApp/languages/zh.js index c0ed340..bc664ef 100644 --- a/RiderApp/languages/zh.js +++ b/RiderApp/languages/zh.js @@ -139,5 +139,6 @@ export const zh = { OrderDetails: '订单详情', Subtotal: '小计', Assigntome: '分配给我', - + 'About Us': '关于我们', +'Product Page': '产品页面', } diff --git a/RiderApp/src/screens/Help/Help.js b/RiderApp/src/screens/Help/Help.js index 98f132a..2a0c80d 100644 --- a/RiderApp/src/screens/Help/Help.js +++ b/RiderApp/src/screens/Help/Help.js @@ -10,17 +10,17 @@ import styles from './styles' const links = [ { - title: i18n.t('ProductPage'), + title: 'Product Page', url: 'https://enatega.com/enatega-single-vendor/' }, - { title: i18n.t('Docs'), url: 'https://enatega.com/docs/enatega-singlevendor-rider-app-introduction/' }, + { title: 'Docs', url: 'https://enatega.com/docs/enatega-singlevendor-rider-app-introduction/' }, { - title: i18n.t('Blog'), + title: 'Blog', url: 'https://enatega.com/blog/' }, - { title: i18n.t('AboutUs'), url: 'https://ninjascode.com/our-team/' } + { title: 'About Us', url: 'https://ninjascode.com/our-team/' } ] function Help() { const navigation = useNavigation() @@ -42,7 +42,7 @@ function Help() { style={styles.itemContainer} key={index}> - {title} + {i18n.t(title)} diff --git a/RiderApp/src/screens/HelpBrowser/HelpBrowser.js b/RiderApp/src/screens/HelpBrowser/HelpBrowser.js index a5b6bb6..c53bd0e 100644 --- a/RiderApp/src/screens/HelpBrowser/HelpBrowser.js +++ b/RiderApp/src/screens/HelpBrowser/HelpBrowser.js @@ -2,6 +2,7 @@ import { useNavigation, useRoute } from '@react-navigation/native' import React, { useLayoutEffect } from 'react' import { WebView } from 'react-native-webview' import { MainWrapper, Spinner } from '../../components' +import i18n from '../../../i18n' function HelpBrowser() { const navigation = useNavigation() @@ -11,7 +12,7 @@ function HelpBrowser() { useLayoutEffect(() => { navigation.setOptions({ headerRight: null, - headerTitle: title + headerTitle: i18n.t(title) }) }, [navigation]) From 4fe9049c1eb0c13d86997798f03ce8d01f7c2eda Mon Sep 17 00:00:00 2001 From: Kashif Shehzad Baloch Date: Tue, 9 Jan 2024 12:18:43 +0500 Subject: [PATCH 4/6] remaining headers added with localisation --- RiderApp/.gitignore | 3 ++- RiderApp/languages/de.js | 6 +++++- RiderApp/languages/en.js | 6 +++++- RiderApp/languages/fr.js | 6 +++++- RiderApp/languages/km.js | 5 ++++- RiderApp/languages/zh.js | 4 ++++ RiderApp/src/screens/Chat/Chat.js | 5 +++-- RiderApp/src/screens/Login/Login.js | 10 ++++++---- RiderApp/src/screens/OrderDetail/OrderDetail.js | 4 ++-- RiderApp/src/screens/Orders/Orders.js | 11 ++++++++++- 10 files changed, 46 insertions(+), 14 deletions(-) diff --git a/RiderApp/.gitignore b/RiderApp/.gitignore index 30bc162..b2d59d1 100644 --- a/RiderApp/.gitignore +++ b/RiderApp/.gitignore @@ -1 +1,2 @@ -/node_modules \ No newline at end of file +/node_modules +/dist \ No newline at end of file diff --git a/RiderApp/languages/de.js b/RiderApp/languages/de.js index 868eb52..563c1df 100644 --- a/RiderApp/languages/de.js +++ b/RiderApp/languages/de.js @@ -147,5 +147,9 @@ export const de = { Subtotal: 'Subtotaal', Assigntome: 'Toewijzen aan mij', 'About Us': 'Over Ons', -'Product Page': 'Product Pagina', + 'Product Page': 'Product Pagina', + Order: 'Bestelling', + OrderMarkedAs: 'Bestelling gemarkeerd als', + titleLogin: 'Inloggen', + Picked: 'Gekozen', } diff --git a/RiderApp/languages/en.js b/RiderApp/languages/en.js index 73cead9..d6af8f6 100644 --- a/RiderApp/languages/en.js +++ b/RiderApp/languages/en.js @@ -146,5 +146,9 @@ export const en = { Subtotal: 'Subtotal', Assigntome: 'Assign to me', 'About Us': 'About Us', - 'Product Page': 'Product Page' + 'Product Page': 'Product Page', + Order: 'Order', + OrderMarkedAs: 'Order marked as', + titleLogin: 'Login', + Picked: 'Picked' } diff --git a/RiderApp/languages/fr.js b/RiderApp/languages/fr.js index 4c7852b..405329d 100644 --- a/RiderApp/languages/fr.js +++ b/RiderApp/languages/fr.js @@ -147,5 +147,9 @@ export const fr = { Subtotal: 'Sous-total', Assigntome: 'Attribuer à moi', 'About Us': 'À Propos de Nous', -'Product Page': 'Page Produit', + 'Product Page': 'Page Produit', + Order: 'Commande', + OrderMarkedAs: 'Commande marquée comme', + titleLogin: 'Connexion', + Picked: 'Choisi', } diff --git a/RiderApp/languages/km.js b/RiderApp/languages/km.js index bbd8099..1ac2339 100644 --- a/RiderApp/languages/km.js +++ b/RiderApp/languages/km.js @@ -144,5 +144,8 @@ export const km = { Subtotal: 'សរុបរង', Assigntome: 'ផ្ដល់ទៅខ្លួនឯង', 'About Us': 'អំពីយើង', -'Product Page': 'ទំព័រផលិតផល', + 'Product Page': 'ទំព័រផលិតផល', + Order: 'បញ្ជាទិញ', + OrderMarkedAs: 'បញ្ជាតម្រៀបជានៅជិត', + Picked: 'បានជ្រើសរើស', } diff --git a/RiderApp/languages/zh.js b/RiderApp/languages/zh.js index bc664ef..3f755cb 100644 --- a/RiderApp/languages/zh.js +++ b/RiderApp/languages/zh.js @@ -141,4 +141,8 @@ export const zh = { Assigntome: '分配给我', 'About Us': '关于我们', 'Product Page': '产品页面', +Order: '订单', +OrderMarkedAs: '标记为订单', +titleLogin: '登录', +Picked: '已选取', } diff --git a/RiderApp/src/screens/Chat/Chat.js b/RiderApp/src/screens/Chat/Chat.js index c65b690..b4e0192 100644 --- a/RiderApp/src/screens/Chat/Chat.js +++ b/RiderApp/src/screens/Chat/Chat.js @@ -1,6 +1,6 @@ import { Feather, FontAwesome } from '@expo/vector-icons' import { useNavigation } from '@react-navigation/native' -import React, { useCallback, useEffect, useState } from 'react' +import React, { useCallback, useEffect, useState, useLayoutEffect } from 'react' import { Keyboard, View } from 'react-native' import { Bubble, @@ -13,6 +13,7 @@ import { alignment } from '../../utilities/alignment' import colors from '../../utilities/colors' import { scale } from '../../utilities/scaling' import useStyle from './styles' +import i18n from '../../../i18n' const UserInfo = { _id: 1, @@ -42,7 +43,7 @@ function Chat() { useEffect(() => { navigation.setOptions({ - title: 'Chat' + headerTitle: i18n.t('titleChat') }) setMessages([ { diff --git a/RiderApp/src/screens/Login/Login.js b/RiderApp/src/screens/Login/Login.js index f981619..c37874b 100644 --- a/RiderApp/src/screens/Login/Login.js +++ b/RiderApp/src/screens/Login/Login.js @@ -4,7 +4,7 @@ import { useNavigation } from '@react-navigation/native' import Constants from 'expo-constants' import * as Notifications from 'expo-notifications' import gql from 'graphql-tag' -import React, { useContext, useEffect, useState } from 'react' +import React, { useContext, useEffect, useState,useLayoutEffect } from 'react' import { KeyboardAvoidingView, Platform, @@ -38,11 +38,13 @@ export default function Login() { const { setTokenAsync } = useContext(AuthContext) - useEffect(() => { + + useLayoutEffect(() => { navigation.setOptions({ - headerLeft: null + headerRight: null, + headerTitle: i18n.t('titleHelp') }) - }, []) + }, [navigation]) const [mutate, { loading }] = useMutation(RIDER_LOGIN, { onCompleted, diff --git a/RiderApp/src/screens/OrderDetail/OrderDetail.js b/RiderApp/src/screens/OrderDetail/OrderDetail.js index bdb64b4..aa23d07 100644 --- a/RiderApp/src/screens/OrderDetail/OrderDetail.js +++ b/RiderApp/src/screens/OrderDetail/OrderDetail.js @@ -71,13 +71,13 @@ function OrderDetail() { useLayoutEffect(() => { if (!selectedOrder) return; navigation.setOptions({ - title: `Order ${selectedOrder.order_id}`, + title: `${i18n.t('Order')} ${selectedOrder.order_id}`, }); }, [selectedOrder]); async function onCompleted({ updateOrderStatusRider, assignOrder }) { if (updateOrderStatusRider) { FlashMessage({ - message: `Order marked as ${updateOrderStatusRider.order_status}`, + message: `${i18n.t('OrderMarkedAs')} ${updateOrderStatusRider.order_status}`, }); if (updateOrderStatusRider.order_status === "DELIVERED") { navigation.goBack(); diff --git a/RiderApp/src/screens/Orders/Orders.js b/RiderApp/src/screens/Orders/Orders.js index c879e05..442b058 100644 --- a/RiderApp/src/screens/Orders/Orders.js +++ b/RiderApp/src/screens/Orders/Orders.js @@ -1,4 +1,5 @@ -import React, { useEffect, useState } from 'react' +import React, { useEffect, useState, useLayoutEffect } from 'react' +import { useNavigation } from '@react-navigation/native' import { ImageBackground, StatusBar, @@ -15,11 +16,19 @@ const BACKGROUND_IMAGE = require('../../../assets/images/ui/BG.png') export default function Orders() { const styles = useStyle() const [isNewOrderSelected, setIsNewOrderSelected] = useState(false) + const navigation = useNavigation() useEffect(() => { StatusBar.setBarStyle('light-content') }, [isNewOrderSelected]) + useLayoutEffect(() => { + navigation.setOptions({ + headerRight: null, + headerTitle: i18n.t('Orders') + }) + }, [navigation]) + return ( From d2d6d642a0c619fc83d701bdce67ab4ed4278723 Mon Sep 17 00:00:00 2001 From: Kashif Shehzad Baloch Date: Wed, 10 Jan 2024 16:54:49 +0500 Subject: [PATCH 5/6] arabic language added in the localisation --- RiderApp/i18n.js | 3 +- RiderApp/languages/ar.js | 153 ++++++++++++++++++ RiderApp/languages/de.js | 2 +- RiderApp/languages/en.js | 2 +- RiderApp/languages/fr.js | 2 +- RiderApp/languages/km.js | 2 +- RiderApp/languages/zh.js | 2 +- RiderApp/src/screens/Language/Language.js | 3 +- .../src/screens/OrderDetail/OrderDetail.js | 2 +- 9 files changed, 163 insertions(+), 8 deletions(-) create mode 100644 RiderApp/languages/ar.js diff --git a/RiderApp/i18n.js b/RiderApp/i18n.js index 3c19d4d..e3ac38b 100644 --- a/RiderApp/i18n.js +++ b/RiderApp/i18n.js @@ -7,10 +7,11 @@ import { fr } from './languages/fr' import { km } from './languages/km' import { zh } from './languages/zh' import { de } from './languages/de' +import { ar } from './languages/ar' i18n.initAsync = async () => { i18n.fallbacks = true - i18n.translations = { fr, en, km, zh, de } + i18n.translations = { fr, en, km, zh, de, ar } // i18n.locale = 'km' if (Platform.OS === 'android') { const lang = await AsyncStorage.getItem('enatega-language') diff --git a/RiderApp/languages/ar.js b/RiderApp/languages/ar.js new file mode 100644 index 0000000..df66a49 --- /dev/null +++ b/RiderApp/languages/ar.js @@ -0,0 +1,153 @@ +export const ar = { + title0: 'اللغة المختارة', + subtitle0: 'الإنجليزية', + description0: 'حدد أي لغة تفضلها لتغيير محتوى التطبيق إلى اللغة التي تحتاجها.', + title1: 'لذيذ', + subtitle1: 'الإفطار', + description1: + 'الإفطار هو كل شيء. البداية، الشيء الأول. إنها الحضن الذي يعبر عن التزامك بيوم جديد، حياة مستمرة.', + title2: 'منعش', + subtitle2: 'المشروبات', + description2: + 'الصمت الحقيقي هو راحة العقل، وهو للروح ما يعنيه النوم للجسم، تغذية وتجديد.', + title3: 'لذيذ', + subtitle3: 'الآيس كريم', + description3: + 'العمر لا يقلل من خيبة الأمل الشديدة لسقوط مغرفة من الآيس كريم من السطل', + getStarted: 'ابدأ!', + welcome: 'مرحبًا', + loginBtn: 'تسجيل الدخول', + registerBtn: 'التسجيل', + name: 'الاسم', + phone: 'الهاتف', + email: 'البريد الإلكتروني', + emailphone: 'البريد الإلكتروني أو الهاتف', + username: 'اسم المستخدم', + password: 'كلمة المرور', + deliveryAddress: 'عنوان التسليم', + registerText: 'أو سجل مع', + forgotPassword: 'نسيت كلمة المرور؟', + loginText: 'أو قم بتسجيل الدخول باستخدام', + deliveryLocation: 'قم بتشغيل الموقع لنتمكن من إرسال لك طعمًا لا ينتهي من الطعام اللذيذ.', + locationBtn: 'تشغيل الموقع', + locationPermissionDenied: 'تم رفض إذن الوصول إلى الموقع', + cameraRollPermissionDenied: 'تم رفض إذن الوصول إلى الصور', + locationOff: 'قم بتشغيل الموقع وحاول مرة أخرى', + titleLanguage: 'تغيير اللغة', + titleMenu: 'القائمة', + titleOrders: 'طلباتي', + NewOrders: 'طلبات جديدة', + titleNotifications: 'الإشعارات', + titleReviews: 'التقييمات', + titleSettings: 'الإعدادات', + titleHelp: 'المساعدة', + titleLogout: 'تسجيل الخروج', + titleCart: 'عربة التسوق الخاصة بي', + titlePayment: 'الدفع', + orderId: 'رقم الطلب', + totalOrderAmount: 'مجموع مبلغ الطلب', + reOrder: 'إعادة الطلب', + unReadNotifications: 'لا توجد إشعارات غير مقروءة', + upload: 'تحميل', + saveBtn: 'حفظ', + emailUs: 'راسلنا عبر البريد الإلكتروني على', + question1: 'أين يمكننا العثور على الطعام؟', + question2: 'كيف يمكننا التواصل؟', + question3: 'كيف يمكنني دفع مبلغ التوصيل للشخص؟', + question4: 'هل الخدمة متاحة في مدينتي؟', + answer1: + 'يمكنك العثور على الطعام في أقرب متجر دون دفع أي شيء لخدمة العملاء. تكلفتنا منخفضة للغاية مقارنة بالآخرين.', + answer2: 'يمكنك التواصل معنا عبر البريد الإلكتروني، رقم الهاتف أو موقع الويب الخاص بنا.', + answer3: + 'يمكنك دفع مبلغ التوصيل شخصيًا أو الدفع عبر الإنترنت أيضًا عبر بطاقة الائتمان أو الخصم.', + answer4: + 'حاليًا هذه الخدمة متاحة في مدن إسلام أباد وكراتشي، يمكنك التواصل معنا للاستفادة من هذه الخدمة في مدينتك.', + add: 'إضافة', + quantity: 'الكمية', + size: 'الحجم', + addToCart: 'إضافة إلى العربة', + orderNow: 'طلب الآن', + addToCartMessage: 'تمت الإضافة إلى العربة', + emptyCart: 'لا توجد عناصر في العربة', + itemTotal: 'إجمالي العنصر', + delvieryCharges: 'رسوم التوصيل', + total: 'الإجمالي', + contactInfo: 'معلومات الاتصال', + deliveryAddressmessage: 'تعيين عنوان التسليم', + proceedCheckout: 'المتابعة إلى الدفع', + paymentText: 'كيف ترغب في الدفع؟', + checkout: 'الدفع', + header_title1: 'بطاقة الائتمان/بطاقة الخصم', + header_subscript1: 'الدفع باستخدام بطاقة الائتمان أو الخصم', + header_title2: 'PayPal', + header_subscript2: 'الدفع عبر الإنترنت باستخدام PayPal', + header_title3: 'الدفع عند الاستلام', + header_subscript3: 'الدفع عند استلام العنصر', + thankYou: 'شكرًا لك!', + orderConfirmed: 'تم تأكيد طلبك', + orderAmount: 'مبلغ طلبك', + orderDetail: 'تفاصيل الطلب', + paymentMethod: 'طريقة الدفع', + trackOrder: 'تتبع الطلب', + backToMenu: 'العودة إلى القائمة', + foodItem: 'عنصر طعام', + deliveredTo: 'تم التوصيل إلى', + writeAReview: 'كتابة تقييم', + orderReceived: 'تم استلام الطلب', + cancelled: 'تم الإلغاء', + foodPreparing: 'يتم إعداد الطعام', + Delivered: 'تم التوصيل', + rateAndReview: 'قيم وأكتب تقييمًا', + reviewPlaceholder: 'التقييمات المفصلة تحصل على رؤية أكبر...', + submit: 'إرسال', + noWorriesText: 'لا تقلق، دعنا نساعدك!', + yourEmail: 'بريدك الإلكتروني', + send: 'إرسال', + apply: 'تقديم الطلب', + checkEmail: 'تحقق من بريدك الإلكتروني للحصول على رابط إعادة تعيين كلمة المرور', + languageText: 'الرجاء اختيار اللغة المطلوبة', + countryCodePickerTranslation: 'eng', + countryCodeSelect: 'اختر رمز البلد', + paymentNotSupported: 'لا يدعم هذا الطريقة الدفع هذه العملة', + Orders: 'الطلبات', + deliveryTime: 'وقت التسليم', + myOrders: 'طلباتي', + newOrders: 'طلبات جديدة', + titleChat: 'دردشة', + NoNewOrder: 'لا يوجد طلب جديد', + Somethingisworng: 'هناك خطأ', + PENDING: 'قيد الانتظار', + ACCEPTED: 'تم القبول', + PICKED: 'تم الاختيار', + DELIVERED: 'تم التوصيل', + COMPLETED: 'تم الانتهاء', + YourOrderID: 'رقم طلبك', + ProductPage: 'صفحة المنتج', + Docs: 'وثائق', + Blog: 'مدونة', + AboutUs: 'معلومات عنا', + Done: 'تم', + Cancel: 'إلغاء', + Usernameisrequired: 'اسم المستخدم مطلوب', + Passwordisrequired: 'كلمة المرور مطلوبة', + Loggedin: 'تم تسجيل الدخول', + EnteryourEmailandPassword: 'أدخل بريدك الإلكتروني وكلمة المرور', + EmailorPhone: 'البريد الإلكتروني أو الهاتف', + Password: 'كلمة المرور', + NoOrdersAssignedyet: 'لا توجد طلبات تم تعيينها حتى الآن', + Loadingorders: 'جاري تحميل الطلبات', + Orderassginedtootherrider: 'الطلب تم تعيينه لسائق آخر', + CustomerDetails: 'تفاصيل العميل', + Contact: 'اتصل', + DelvieryLocation: 'موقع التسليم', + OrderDetails: 'تفاصيل الطلب', + Subtotal: 'المجموع الفرعي', + Assigntome: 'تعيين لي', + 'About Us': 'عنا', + 'Product Page': 'صفحة المنتج', + Order: 'طلب', + OrderMarkedAs: 'تم وضع علامة الطلب كـ', + titleLogin: 'تسجيل الدخول', + Picked: 'تم الاختيار' + } + \ No newline at end of file diff --git a/RiderApp/languages/de.js b/RiderApp/languages/de.js index 563c1df..d4106d3 100644 --- a/RiderApp/languages/de.js +++ b/RiderApp/languages/de.js @@ -98,7 +98,7 @@ export const de = { orderReceived: 'Bestellung erhalten', cancelled: 'Abgebrochen', foodPreparing: 'Essen wird zubereitet', - delivered: 'Geliefert', + Delivered: 'Geliefert', rateAndReview: 'Bewerten und bewerten', reviewPlaceholder: 'Detaillierte Bewertungen erhalten mehr Sichtbarkeit ...', submit: 'einreichen', diff --git a/RiderApp/languages/en.js b/RiderApp/languages/en.js index d6af8f6..816cf22 100644 --- a/RiderApp/languages/en.js +++ b/RiderApp/languages/en.js @@ -98,7 +98,7 @@ export const en = { orderReceived: 'Order Received', cancelled: 'Cancelled', foodPreparing: 'Food is being prepared', - delivered: 'Delivered', + Delivered: 'Delivered', rateAndReview: 'Rate and Review', reviewPlaceholder: 'More detailed reviews get more visibility...', submit: 'Submit', diff --git a/RiderApp/languages/fr.js b/RiderApp/languages/fr.js index 405329d..0a66d3e 100644 --- a/RiderApp/languages/fr.js +++ b/RiderApp/languages/fr.js @@ -98,7 +98,7 @@ export const fr = { orderReceived: 'Ordre reçu', cancelled: 'Annulé', foodPreparing: 'La nourriture est en cours de préparation', - delivered: 'Livré', + Delivered: 'Livré', rateAndReview: 'Notez et évaluez', reviewPlaceholder: 'Des revues plus détaillées ont plus de visibilité ...', submit: 'Soumettre', diff --git a/RiderApp/languages/km.js b/RiderApp/languages/km.js index 1ac2339..2a44be6 100644 --- a/RiderApp/languages/km.js +++ b/RiderApp/languages/km.js @@ -96,7 +96,7 @@ export const km = { orderReceived: 'បញ្ជាទិញដែលទទួលបាន', cancelled: 'បានបោះបង់', foodPreparing: 'ម្ហូបកំពុងត្រូវបានរៀបចំ', - delivered: 'បានបញ្ជូន', + Delivered: 'បានបញ្ជូន', rateAndReview: 'វាយតម្លៃនិងពិនិត្យ', reviewPlaceholder: 'ការពិនិត្យលម្អិតបន្ថែមទៀតទទួលបានភាពមើលឃើញកាន់តែច្រើន ...', submit: 'ដាក់ស្នើ', diff --git a/RiderApp/languages/zh.js b/RiderApp/languages/zh.js index 3f755cb..f05f9a3 100644 --- a/RiderApp/languages/zh.js +++ b/RiderApp/languages/zh.js @@ -92,7 +92,7 @@ export const zh = { orderReceived: '订单已经收到', cancelled: '取消', foodPreparing: '食物正在准备中', - delivered: '交付', + Delivered: '交付', rateAndReview: '打分和评论', reviewPlaceholder: '更详细的评论获得更多可见性......', submit: '提交', diff --git a/RiderApp/src/screens/Language/Language.js b/RiderApp/src/screens/Language/Language.js index f35ce55..24b15ff 100644 --- a/RiderApp/src/screens/Language/Language.js +++ b/RiderApp/src/screens/Language/Language.js @@ -18,7 +18,8 @@ const languageTypes = [ { value: 'français', code: 'fr', index: 1 }, { value: 'ភាសាខ្មែរ', code: 'km', index: 2 }, { value: '中文', code: 'zh', index: 3 }, - { value: 'Deutsche', code: 'de', index: 4 } + { value: 'Deutsche', code: 'de', index: 4 }, + { value: 'Arabic', code: 'ar', index: 5 } ] function Language() { diff --git a/RiderApp/src/screens/OrderDetail/OrderDetail.js b/RiderApp/src/screens/OrderDetail/OrderDetail.js index aa23d07..fab3735 100644 --- a/RiderApp/src/screens/OrderDetail/OrderDetail.js +++ b/RiderApp/src/screens/OrderDetail/OrderDetail.js @@ -77,7 +77,7 @@ function OrderDetail() { async function onCompleted({ updateOrderStatusRider, assignOrder }) { if (updateOrderStatusRider) { FlashMessage({ - message: `${i18n.t('OrderMarkedAs')} ${updateOrderStatusRider.order_status}`, + message: `${i18n.t('OrderMarkedAs')} ${i18n.t(updateOrderStatusRider.order_status)}`, }); if (updateOrderStatusRider.order_status === "DELIVERED") { navigation.goBack(); From 660a223739ffed5fe46c754facd7c76522fcb011 Mon Sep 17 00:00:00 2001 From: Kashif Shehzad Baloch Date: Fri, 12 Jan 2024 12:44:58 +0500 Subject: [PATCH 6/6] remaining customer app localisation added and some issues solved --- CustomerApp/i18n.js | 3 +- .../CartComponent/CartComponent.js | 3 +- .../Header/HeaderIcons/HeaderIcons.js | 3 +- .../Modals/FilterModal/FilterModal.js | 10 +- CustomerApp/src/screens/Cart/Cart.js | 4 +- .../screens/CreateAccount/CreateAccount.js | 2 +- .../src/screens/EditAddress/EditAddress.js | 4 +- .../screens/ForgotPassword/ForgotPassword.js | 2 +- CustomerApp/src/screens/FullMap/FullMap.js | 3 +- CustomerApp/src/screens/Menu/Menu.js | 2 +- .../src/screens/MenuItems/MenuItems.js | 9 +- .../src/screens/NewAddress/NewAddress.js | 4 +- CustomerApp/src/screens/Settings/Settings.js | 1 + .../Settings/components/SettingModal.js | 8 +- CustomerApp/translations/ar.js | 243 ++++++++++++++++++ CustomerApp/translations/de.js | 169 ++++++------ CustomerApp/translations/en.js | 22 +- CustomerApp/translations/fr.js | 183 +++++++------ CustomerApp/translations/km.js | 183 +++++++------ CustomerApp/translations/zh.js | 183 +++++++------ 20 files changed, 701 insertions(+), 340 deletions(-) create mode 100644 CustomerApp/translations/ar.js diff --git a/CustomerApp/i18n.js b/CustomerApp/i18n.js index c94d2a7..6dd9b99 100644 --- a/CustomerApp/i18n.js +++ b/CustomerApp/i18n.js @@ -7,10 +7,11 @@ import { en } from './translations/en' import { fr } from './translations/fr' import { km } from './translations/km' import { zh } from './translations/zh' +import { ar } from './translations/ar' i18n.initAsync = async() => { i18n.fallbacks = true - i18n.translations = { fr, en, km, zh, de } + i18n.translations = { fr, en, km, zh, de, ar } // i18n.locale = 'km' if (Platform.OS === 'android') { const lang = await AsyncStorage.getItem('enatega-language') diff --git a/CustomerApp/src/components/CustomizeComponents/CartComponent/CartComponent.js b/CustomerApp/src/components/CustomizeComponents/CartComponent/CartComponent.js index 29c4079..fe1423e 100644 --- a/CustomerApp/src/components/CustomizeComponents/CartComponent/CartComponent.js +++ b/CustomerApp/src/components/CustomizeComponents/CartComponent/CartComponent.js @@ -8,6 +8,7 @@ import { CustomIcon } from '../../CustomIcon' import { FlashMessage } from '../../FlashMessage/FlashMessage' import TextDefault from '../../Text/TextDefault/TextDefault' import useStyle from './styles' +import i18n from '../../../../i18n' function CartComponent(props) { const { colors } = useTheme() @@ -18,7 +19,7 @@ function CartComponent(props) { if (props.stock > quantity) setQuantity(quantity + 1) else { FlashMessage({ - message: 'No more items in stock' + message: i18n.t('noMoreItems') }) } } diff --git a/CustomerApp/src/components/Header/HeaderIcons/HeaderIcons.js b/CustomerApp/src/components/Header/HeaderIcons/HeaderIcons.js index aa53938..b5ab6f0 100644 --- a/CustomerApp/src/components/Header/HeaderIcons/HeaderIcons.js +++ b/CustomerApp/src/components/Header/HeaderIcons/HeaderIcons.js @@ -13,6 +13,7 @@ import { CustomIcon } from '../../CustomIcon' import { FlashMessage } from '../../FlashMessage/FlashMessage' import TextDefault from '../../Text/TextDefault/TextDefault' import useStyles from './styles' +import i18n from '../../../../i18n' function HeaderIcon({ icon, iconColor, iconSize = scale(20) }) { const { colors } = useTheme() @@ -127,7 +128,7 @@ function RightButton(props) { navigation.navigate(NAVIGATION_SCREEN.Cart) } else { FlashMessage({ - message: 'Cart is empty.' + message: i18n.t('CartIsEmpty') }) } }, [cartCount]) diff --git a/CustomerApp/src/components/Modals/FilterModal/FilterModal.js b/CustomerApp/src/components/Modals/FilterModal/FilterModal.js index 5319bba..d789ef1 100644 --- a/CustomerApp/src/components/Modals/FilterModal/FilterModal.js +++ b/CustomerApp/src/components/Modals/FilterModal/FilterModal.js @@ -20,6 +20,11 @@ const FilterModal = props => { const configuration = useContext(ConfigurationContext) const [filters, setFilters] = useState({}) + const localizedSortData = {}; + Object.keys(SORT_DATA).forEach(key => { + localizedSortData[key] = i18n.t(SORT_DATA[key]); + }); + useEffect(() => { setFilters({ onSale: false, @@ -92,7 +97,7 @@ const FilterModal = props => { alignItems: 'center' }}> - {i18n.t('reset')} + {i18n.t('reset')} { ? colors.fonfontMainColort : colors.placeHolderColor }> - {get(SORT_DATA, item)} + {/* {get(SORT_DATA, item)} */} + {localizedSortData[item]} { async function onCompleted(data) { if (!data.login.is_active) { FlashMessage({ - message: "Can't Login,This Account is Deleted!", + message: i18n.t('cantLogin'), }); setLoading(false); } else { diff --git a/CustomerApp/src/screens/EditAddress/EditAddress.js b/CustomerApp/src/screens/EditAddress/EditAddress.js index d493a61..03f60da 100644 --- a/CustomerApp/src/screens/EditAddress/EditAddress.js +++ b/CustomerApp/src/screens/EditAddress/EditAddress.js @@ -122,7 +122,7 @@ function EditAddress() { function onError(error) { FlashMessage({ - message: `An error occured. Please try again ${error}` + message: `${i18n.t('AnErrorOccured')} ${error}` }) } @@ -220,7 +220,7 @@ function EditAddress() { } bold center> - {label.title} + {i18n.t(label.title)} ) diff --git a/CustomerApp/src/screens/ForgotPassword/ForgotPassword.js b/CustomerApp/src/screens/ForgotPassword/ForgotPassword.js index 932e0d0..51f514f 100644 --- a/CustomerApp/src/screens/ForgotPassword/ForgotPassword.js +++ b/CustomerApp/src/screens/ForgotPassword/ForgotPassword.js @@ -57,7 +57,7 @@ function ForgotPassword() { } function onCompleted(data) { FlashMessage({ - message: 'Reset password link sent on your email' + message: i18n.t('ResetPasswordLinkSent') }) } function onError(error) { diff --git a/CustomerApp/src/screens/FullMap/FullMap.js b/CustomerApp/src/screens/FullMap/FullMap.js index 56fe558..2404498 100644 --- a/CustomerApp/src/screens/FullMap/FullMap.js +++ b/CustomerApp/src/screens/FullMap/FullMap.js @@ -7,6 +7,7 @@ import { FlashMessage, TextDefault, WrapperView } from '../../components' import { NAVIGATION_SCREEN } from '../../utils/constant' import { scale } from '../../utils/scaling' import useStyle from './styles' +import i18n from '../../../i18n' const LATITUDE = 33.7001019 const LONGITUDE = 72.9735978 @@ -220,7 +221,7 @@ export default function FullMap() { setRegion(loc) } else { FlashMessage({ - message: 'Location permission not granted' + message: i18n.t('LocationPermissionNotGranted') }) } } diff --git a/CustomerApp/src/screens/Menu/Menu.js b/CustomerApp/src/screens/Menu/Menu.js index a56c8a6..d85e7a6 100755 --- a/CustomerApp/src/screens/Menu/Menu.js +++ b/CustomerApp/src/screens/Menu/Menu.js @@ -43,7 +43,7 @@ function Menu() { } else if (error) { return ( ); diff --git a/CustomerApp/src/screens/MenuItems/MenuItems.js b/CustomerApp/src/screens/MenuItems/MenuItems.js index 2cbf3b3..8808122 100755 --- a/CustomerApp/src/screens/MenuItems/MenuItems.js +++ b/CustomerApp/src/screens/MenuItems/MenuItems.js @@ -31,6 +31,7 @@ import { alignment } from "../../utils/alignment"; import { ICONS_NAME, NAVIGATION_SCREEN, SORT_DATA } from "../../utils/constant"; import { moderateScale, scale } from "../../utils/scaling"; import useStyle from "./styles"; +import i18n from "../../../i18n"; // constants const FOODS = gql` @@ -73,7 +74,7 @@ function MenuItems() { async function onAddToCart(food) { if (food.stock < 1) { FlashMessage({ - message: "Item out of stock", + message: i18n.t('ItemOutOfStock'), }); return; } @@ -112,7 +113,7 @@ function MenuItems() { {item.stock < 1 && ( - No Stock + {i18n.t('NoStock')} )} @@ -189,7 +190,7 @@ function MenuItems() { } else if (error) { return ( ); @@ -198,7 +199,7 @@ function MenuItems() { - No food item found + {i18n.t('NoFooditemFound')} ); diff --git a/CustomerApp/src/screens/NewAddress/NewAddress.js b/CustomerApp/src/screens/NewAddress/NewAddress.js index e006524..6b5cd2d 100644 --- a/CustomerApp/src/screens/NewAddress/NewAddress.js +++ b/CustomerApp/src/screens/NewAddress/NewAddress.js @@ -151,7 +151,7 @@ function NewAddress() { function onError(error) { FlashMessage({ - message: `An error occured. Please try again. ${error}` + message: `${i18n.t('AnErrorOccured')} ${error}` }) } @@ -242,7 +242,7 @@ function NewAddress() { } bold center> - {label.title} + {i18n.t(label.title)} ) diff --git a/CustomerApp/src/screens/Settings/Settings.js b/CustomerApp/src/screens/Settings/Settings.js index 9896176..c601fe1 100644 --- a/CustomerApp/src/screens/Settings/Settings.js +++ b/CustomerApp/src/screens/Settings/Settings.js @@ -49,6 +49,7 @@ const languageTypes = [ { value: "ភាសាខ្មែរ", code: "km", index: 2 }, { value: "中文", code: "zh", index: 3 }, { value: "Deutsche", code: "de", index: 4 }, + { value: "Arabic", code: "ar", index: 5 }, ]; const PUSH_TOKEN = gql` diff --git a/CustomerApp/src/screens/Settings/components/SettingModal.js b/CustomerApp/src/screens/Settings/components/SettingModal.js index 8bed035..d993dff 100644 --- a/CustomerApp/src/screens/Settings/components/SettingModal.js +++ b/CustomerApp/src/screens/Settings/components/SettingModal.js @@ -6,6 +6,7 @@ import RadioButton from "../../../components/FdRadioBtn/RadioBtn"; import TextDefault from "../../../components/Text/TextDefault/TextDefault"; import { alignment } from "../../../utils/alignment"; import useStyle from "./styles"; +import i18n from '../../../../i18n' const languageTypes = [ { value: "English", code: "en", index: 0 }, @@ -13,6 +14,7 @@ const languageTypes = [ { value: "ភាសាខ្មែរ", code: "km", index: 2 }, { value: "中文", code: "zh", index: 3 }, { value: "Deutsche", code: "de", index: 4 }, + { value: "Arabic", code: "ar", index: 5 }, ]; function SettingModal(props) { @@ -23,7 +25,7 @@ function SettingModal(props) { return ( - Select Language + {i18n.t('SelectLanguage')} {languageTypes.map((item, index) => ( @@ -55,7 +57,7 @@ function SettingModal(props) { onPress={() => props.onSelectedLanguage(activeRadio)} > - Done + {i18n.t('Done')} props.onClose()} > - Cancel + {i18n.t('Cancel')} {/* */} diff --git a/CustomerApp/translations/ar.js b/CustomerApp/translations/ar.js new file mode 100644 index 0000000..626c353 --- /dev/null +++ b/CustomerApp/translations/ar.js @@ -0,0 +1,243 @@ +export const ar = { + home: 'الصفحة الرئيسية', + title0: 'اللغة المختارة', + subtitle0: 'العربية', + description0: + 'اختر أي لغة تريد لتغيير محتوى التطبيق إلى اللغة المطلوبة لديك.', + title1: 'لذيذ', + subtitle1: 'الفطور', + description1: + 'الفطور هو كل شيء. البداية، الشيء الأول. إنها اللقمة التي هي الالتزام بيوم جديد، حياة مستمرة.', + title2: 'منعش', + subtitle2: 'المشروبات', + description2: + 'الصمت الحقيقي هو راحة العقل، وهو للروح ما النوم للجسم، غذاء وانتعاش.', + title3: 'لذيذ', + subtitle3: 'آيس كريم', + description3: + 'العمر لا يقلل من خيبة الأمل الشديدة من سقوط ملعقة من الآيس كريم من المخروط', + getStarted: 'ابدأ!', + welcome: + "مرحبًا بك في Enatega، في بعض الأحيان كل ما تحتاجه هو الحب. لكن القليل من الطعام بين الحين والآخر لا يضر.", + loginBtn: 'تسجيل الدخول', + registerBtn: 'تسجيل', + name: 'الاسم', + phone: 'رقم الهاتف', + email: 'البريد الإلكتروني', + emailphone: 'البريد الإلكتروني أو الهاتف', + password: 'كلمه السر', + deliveryAddress: 'عنوان التسليم', + fullDeliveryAddress: 'عنوان التسليم الكامل', + deliveryDetails: 'التفاصيل المطلوبة - على سبيل المثال الطابق / المبنى', + myAddresses: 'عناويني', + addAddress: 'إضافة عنوان', + editAddress: 'تعديل العنوان', + registerText: 'أو سجل مع', + forgotPassword: 'نسيت كلمة السر؟', + loginText: 'أو تسجيل الدخول مع', + deliveryLocation: + 'قم بتشغيل الموقع حتى نتمكن من إرسال إليك طعم لا نهاية له من الطعام اللذيذ.', + locationBtn: 'تشغيل الموقع', + locationPermissionDenied: 'تم رفض إذن الوصول إلى الموقع', + cameraRollPermissionDenied: 'تم رفض إذن الوصول إلى Camera Roll', + locationOff: 'قم بتشغيل الموقع وحاول مرة أخرى', + titleLanguage: 'تغيير اللغة', + titleMenu: 'القائمة', + titleOrders: 'طلباتي', + titleNotifications: 'الإشعارات', + titleReviews: 'المشاركات', + titleProfile: 'الملف الشخصي', + titleSettings: 'الإعدادات', + titleHelp: 'مساعدة', + titleChat: 'الدردشة', + titleLogout: 'تسجيل خروج', + titleCart: 'عربتي', + titlePayment: 'دفع', + totalOrderAmount: 'إجمالي المبلغ المستحق', + reOrder: 'إعادة ترتيب', + unReadNotifications: 'لا توجد إشعارات غير مقروءة', + upload: 'حمل', + saveBtn: 'حفظ التغييرات', + saveContBtn: 'حفظ واستمر', + emailUs: 'أرسل لنا بريدًا إلكترونيًا على', + question1: 'أين نجد الطعام؟', + question2: 'كيف نتصل؟', + question3: 'كيف يمكنني دفع ثمن عامل التوصيل؟', + question4: 'هل الخدمة متوفرة في مدينتي؟', + answer1: + 'يمكنك العثور على الطعام في أقرب متجر إليك دون دفع أي شيء لخدمة العملاء. تهمتنا منخفضة للغاية مقارنة بالآخرين.', + answer2: 'يمكنك الاتصال بنا من خلال البريد الإلكتروني أو رقم الهاتف أو موقعنا الإلكتروني.', + answer3: + 'يمكنك دفع ثمن عامل التوصيل شخصيًا أو الدفع عبر الإنترنت أيضًا باستخدام بطاقة الائتمان أو الخصم.', + answer4: + 'تتوفر هذه الخدمة حاليًا في مدن إسلام آباد وكراتشي يمكنك الاتصال بنا للاستفادة من هذه الخدمة في مدينتك.', + add: 'إضافة', + quantity: 'الكمية', + size: 'الحجم', + addToCart: 'أضف إلى العربة', + orderNow: 'اطلب الآن', + addToCartMessage: 'أضيف إلى العربة', + emptyCart: 'لا يوجد عناصر في العربة', + itemTotal: 'إجمالي العنصر', + delvieryCharges: 'رسوم التوصيل', + total: 'مجموع', + contactInfo: 'معلومات الاتصال', + deliveryAddressmessage: 'تعيين عنوان التسليم', + proceedCheckout: 'المتابعة إلى الدفع', + paymentText: 'كيف ترغب في الدفع؟', + checkout: 'الدفع', + creditCart: 'بطاقة الائتمان / بطاقة الخصم', + paypal: 'باي بال', + cod: 'الدفع عند الاستلام', + thankYou: 'شكرا لك!', + orderConfirmed: 'تم تأكيد طلبك', + orderId: 'معرف الطلب الخاص بك', + orderAmount: 'المبلغ المستحق لطلبك', + orderDetail: 'تفاصيل الطلب', + paymentMethod: 'طريقة الدفع', + trackOrder: 'تتبع الطلب', + backToMenu: 'العودة إلى القائمة', + foodItem: 'صنف غذائي', + deliveredTo: 'تسليم إلى', + writeAReview: 'اكتب مراجعة', + orderReceived: 'استلام الطلب', + orderPicked: 'طلبك في طريقه', + orderDelivered: 'تم التوصيل', + completed: 'اكتمل', + cancelled: 'ألغي', + orderPreparing: 'يتم تحضير طلبك', + delivered: 'تم التوصيل', + rateAndReview: 'التقييم والمراجعة', + reviewPlaceholder: 'تحصل المراجعات الأكثر تفصيلاً على مزيد من الرؤية ...', + submit: 'ارسال', + noWorriesText: 'لا تقلق، دعنا نساعدك!', + yourEmail: 'بريدك الإلكتروني', + send: 'ارسال', + apply: 'تطبيق', + checkEmail: 'تحقق من بريدك الإلكتروني للحصول على رابط إعادة تعيين كلمة المرور', + languageText: 'الرجاء تحديد اللغة المطلوبة', + countryCodePickerTranslation: 'العربية', + countryCodeSelect: 'اختر رمز البلد', + paymentNotSupported: 'طريقة الدفع هذه لا تدعم هذه العملة', + loginOrCreateAccount: 'تسجيل الدخول / إنشاء حساب', + unReadReviews: 'لا توجد مراجعات حتى الآن!', + unReadOrders: 'لا توجد طلبات حتى الآن!', + error: 'خطأ', + noMoreItems: 'لا يوجد المزيد من العناصر في المخزون', + hungry: 'جائع', + emptyCartBtn: 'العودة إلى الطعام', + subTotal: 'المجموع الفرعي', + deliveryFee: 'رسوم التوصيل', + haveVoucher: 'هل لديك قسيمة؟', + remove: 'ازالة', + change: 'تغيير', + condition1: 'باستكمال هذا الطلب، أوافق على جميع الشروط والأحكام.', + condition2: + 'أوافق وأطالبك بتنفيذ الخدمة المطلوبة قبل نهاية فترة الإلغاء. أنا أدرك أنه بعد الإكمال الكامل للخدمة أفقد حق التراجع عن الشراء.', + orderBtn: 'تقديم الطلب', + coupanApply: 'تم تطبيق خصم القسيمة', + coupanFailed: 'القسيمة غير متوفرة', + invalidCoupan: 'قسيمة غير صالحة', + validateItems: 'أضف عناصر إلى العربة قبل الدفع', + validateDelivery: 'تعيين عنوان التسليم قبل الدفع', + language: 'اللغة', + getUpdatesText: 'احصل على تحديثات حول حالة طلبك!', + delAcc: 'حذف الحساب', + delAccText: 'هل أنت متأكد أنك تريد حذف الحساب؟', + cancel: 'إلغاء', + receiveOffers: 'تلقي عروض خاصة', + notificationUpdate: "تم تحديث حالة الإشعار", + notificationsNotWorking: "الإشعارات لا تعمل على المحاكاة", + loginOrCreateAcc: "تسجيل الدخول / إنشاء حساب", + welcome: "مرحبا", + noItems: 'لا توجد عناصر', + featured: 'متميز', + filters: 'التصفية', + reset: 'إعادة تعيين', + showSaleItems: 'إظهار العناصر المخفضة فقط', + showStockItems: 'إظهار العناصر المتوفرة فقط', + priceRange: 'نطاق السعر', + sorting: 'الفرز', + applyFilter: 'تطبيق التصفية', + close: 'إغلاق', + phoneNumberRequired: 'رقم الهاتف مطلوب', + phoneNumberMissing: 'رقم الهاتف مفقود', + userInfoUpdated: 'تم تحديث معلومات المستخدم', + nameReq: 'الاسم مطلوب', + minWords: 'يسمح بأقل 11 وأقصى 15 حرفًا', + rightsReserved: 'جميع الحقوق محفوظة لشركة Enatega', + changePass: 'تغيير كلمة المرور', + currentPass: 'كلمة المرور الحالية', + passReq: 'كلمة المرور مطلوبة', + newPass: 'كلمة المرور الجديدة', + invalidPass: 'كلمة مرور غير صالحة', + passChange: 'تم تحديث كلمة المرور', + noOrdersFound: 'لا توجد طلبات', + startShopping: 'ابدأ التسوق', + reOrder: 'إعادة الطلب', + smthWrong: 'هناك خطأ ما', + noOrdersAssigned: 'لا توجد طلبات معينة بعد!', + oldOrder: 'طلب قديم', + activeOrder: 'طلب نشط', + idVar: 'المعرف: ', + addressUpdated: 'تم تحديث العنوان', + labelAs: 'التسمية ك', + addressReq: 'عنوان التسليم مطلوب', + deliveryDetailsReq: 'تفاصيل التسليم مطلوبة', + locaPermission: 'لم يتم منح إذن الموقع', + addressAdded: 'تمت إضافة العنوان', + productPage: 'صفحة المنتج', + docs: 'المستندات', + blog: 'المدونة', + aboutUs: 'عنا', + myVouchers: 'قسائمي', + typeVoucherCode: 'اكتب رمز القسيمة', + enterVoucherCode: 'أدخل رمز القسيمة الخاص بك', + status: 'الحالة', + anySuggestion: 'هل لديك أي اقتراح؟', + reviewRegarding: 'مراجعة بخصوص طلبك؟', + writeReview: 'اكتب مراجعة', + chatWithRider: 'الدردشة مع المتسلم', + signupGoogle: 'التسجيل باستخدام Google', + signupEmail: 'التسجيل باستخدام البريد الإلكتروني', + signup: 'تسجيل', + signupApple: 'التسجيل باستخدام Apple', + alreadyMember: 'عضو بالفعل؟ سجل الدخول', + enterUsername: 'أدخل البريد الإلكتروني وكلمة المرور', + createNewAcc: 'إنشاء حساب جديد', + emailphoneReq: 'البريد الإلكتروني / الهاتف مطلوب', + invalidMail: 'بريد إلكتروني / هاتف غير صالح', + passReq: 'كلمة المرور مطلوبة', + cantLogin: 'لا يمكنك تسجيل الدخول، هذا الحساب محذوف!', + orderPending: 'طلبك لا يزال معلقًا.', + prepFood: 'المطعم يحضر الطعام.', + riderOnWay: 'المتسلم في طريقه.', + orderDelivered: 'تم تسليم الطلب.', + completeOrder: 'تم الانتهاء من الطلب.', + PENDING: 'معلق', + ACCEPTED: 'مقبول', + PICKED: 'مستلم', + DELIVERED: 'مسلم', + COMPLETED: 'اكتمل', + 'Default': 'الافتراضي', + 'Ascending (A-Z)': 'تصاعدي (أ-ي)', + 'Descending (Z-A)': 'تنازلي (ي-أ)', + 'Price (Low - High)': 'السعر (منخفض - مرتفع)', + 'Price (High - Low)': 'السعر (مرتفع - منخفض)', + Home: 'الرئيسية', + Work: 'العمل', + Other: 'آخر', + NoStock: 'نفاذ الكمية', + ItemOutOfStock: 'العنصر غير متوفر حالياً', + SelectLanguage: 'اختر اللغة', + Done: 'تم', + Cancel: 'إلغاء', + NoFoods: 'لا توجد أطعمة', + CartIsEmpty: 'السلة فارغة.', + SetPaymentMethod: 'يرجى تحديد وسيلة الدفع قبل الخروج', + AnErrorOccured: 'حدث خطأ. الرجاء المحاولة مرة أخرى', + ResetPasswordLinkSent: 'تم إرسال رابط إعادة تعيين كلمة المرور إلى بريدك الإلكتروني', + LocationPermissionNotGranted: 'لم يتم منح إذن الموقع', + NoFooditemFound: 'لم يتم العثور على عنصر طعام', + +} diff --git a/CustomerApp/translations/de.js b/CustomerApp/translations/de.js index 041f871..b543c47 100644 --- a/CustomerApp/translations/de.js +++ b/CustomerApp/translations/de.js @@ -145,78 +145,99 @@ export const de = { receiveOffers: 'Spezielle Angebote erhalten', notificationUpdate: 'Benachrichtigungsstatus aktualisiert', notificationsNotWorking: "Benachrichtigungen funktionieren nicht im Simulator", - loginOrCreateAcc: "Anmelden/Konto erstellen", - welcome: "Willkommen", - titleSettings: 'Einstellungen', - home: 'Startseite', - noItems: 'Kein Artikel gefunden', - featured: 'Vorgestellt', - filters: 'Filter', - reset: 'Zurücksetzen', - showSaleItems: 'Nur Verkaufsartikel anzeigen', - showStockItems: 'Nur Lagerartikel anzeigen', - priceRange: 'Preisspanne', - sorting: 'Sortierung', - applyFilter: 'Filter anwenden', - close: 'Schließen', - phoneNumberRequired: "Telefonnummer ist erforderlich", -phoneNumberMissing: "Telefonnummer fehlt", -userInfoUpdated: "Benutzerinformationen aktualisiert", -nameReq: "Name ist erforderlich", -minWords: "Mindestens 11 und maximal 15 Zeichen erlaubt", -rightsReserved: "Alle Rechte vorbehalten von Enatega", -changePass: "Passwort ändern", -currentPass: "Aktuelles Passwort", -passReq: "Passwort ist erforderlich", -newPass: "Neues Passwort", -apply: "Anwenden", -invalidPass: "Ungültiges Passwort", -passChange: "Passwort aktualisiert", -noOrdersFound: "Keine Bestellungen gefunden", -startShopping: "Mit dem Einkaufen beginnen", -reOrder: "Erneut bestellen", -smthWrong: "Etwas ist falsch", -noOrdersAssigned: "Noch keine Bestellungen zugewiesen!", -oldOrder: "Alte Bestellung", -activeOrder: "Aktive Bestellung", -idVar: 'ID: ', -addressUpdated: 'Adresse aktualisiert', -labelAs: 'Als bezeichnen', -addressReq: 'Lieferadresse erforderlich', -deliveryDetailsReq: 'Lieferdetails erforderlich', -locaPermission: 'Standortberechtigung nicht erteilt', -addressAdded: 'Adresse hinzugefügt', -productPage: 'Produktseite', -docs: 'Dokumente', -blog: 'Blog', -aboutUs: 'Über uns', -myVouchers: 'Meine Gutscheine', -typeVoucherCode: "Gutscheincode eingeben", -enterVoucherCode: "Geben Sie Ihren Gutscheincode ein", -status: 'Status', -anySuggestion: 'Irgendwelche Vorschläge?', -reviewRegarding: 'Bewertung zu Ihrer Bestellung?', -writeReview: 'Eine Bewertung schreiben', -chatWithRider: 'Mit dem Fahrer chatten', -signupGoogle: 'Mit Google anmelden', -signupEmail: 'Anmeldung mit E-Mail', -signup: 'Anmelden', -signupApple: 'Mit Apple anmelden', -alreadyMember: 'Bereits Mitglied? Einloggen', -enterUsername: 'Geben Sie Ihre E-Mail-Adresse und Ihr Passwort ein', -createNewAcc: 'Neues Konto erstellen', -emailphoneReq: "E-Mail/Telefonnummer ist erforderlich", -invalidMail: "Ungültige E-Mail/Telefonnummer", -passReq: "Passwort ist erforderlich", -cantLogin: "Anmeldung nicht möglich, dieses Konto wurde gelöscht!", -orderPending: "Ihre Bestellung wird noch bearbeitet.", -prepFood: "Das Restaurant bereitet das Essen vor.", -riderOnWay: "Der Fahrer ist unterwegs.", -orderDelivered: "Die Bestellung wurde geliefert.", -completeOrder: "Die Bestellung ist abgeschlossen.", -PENDING: "AUSSTEHEND", -ACCEPTED: 'AKZEPTIERT', -PICKED: "ABGEHOLT", -DELIVERED: "GELIEFERT", -COMPLETED: "ABGESCHLOSSEN" + loginOrCreateAcc: "Anmelden/Konto erstellen", + welcome: "Willkommen", + titleSettings: 'Einstellungen', + home: 'Startseite', + noItems: 'Kein Artikel gefunden', + featured: 'Vorgestellt', + filters: 'Filter', + reset: 'Zurücksetzen', + showSaleItems: 'Nur Verkaufsartikel anzeigen', + showStockItems: 'Nur Lagerartikel anzeigen', + priceRange: 'Preisspanne', + sorting: 'Sortierung', + applyFilter: 'Filter anwenden', + close: 'Schließen', + phoneNumberRequired: "Telefonnummer ist erforderlich", + phoneNumberMissing: "Telefonnummer fehlt", + userInfoUpdated: "Benutzerinformationen aktualisiert", + nameReq: "Name ist erforderlich", + minWords: "Mindestens 11 und maximal 15 Zeichen erlaubt", + rightsReserved: "Alle Rechte vorbehalten von Enatega", + changePass: "Passwort ändern", + currentPass: "Aktuelles Passwort", + passReq: "Passwort ist erforderlich", + newPass: "Neues Passwort", + apply: "Anwenden", + invalidPass: "Ungültiges Passwort", + passChange: "Passwort aktualisiert", + noOrdersFound: "Keine Bestellungen gefunden", + startShopping: "Mit dem Einkaufen beginnen", + reOrder: "Erneut bestellen", + smthWrong: "Etwas ist falsch", + noOrdersAssigned: "Noch keine Bestellungen zugewiesen!", + oldOrder: "Alte Bestellung", + activeOrder: "Aktive Bestellung", + idVar: 'ID: ', + addressUpdated: 'Adresse aktualisiert', + labelAs: 'Als bezeichnen', + addressReq: 'Lieferadresse erforderlich', + deliveryDetailsReq: 'Lieferdetails erforderlich', + locaPermission: 'Standortberechtigung nicht erteilt', + addressAdded: 'Adresse hinzugefügt', + productPage: 'Produktseite', + docs: 'Dokumente', + blog: 'Blog', + aboutUs: 'Über uns', + myVouchers: 'Meine Gutscheine', + typeVoucherCode: "Gutscheincode eingeben", + enterVoucherCode: "Geben Sie Ihren Gutscheincode ein", + status: 'Status', + anySuggestion: 'Irgendwelche Vorschläge?', + reviewRegarding: 'Bewertung zu Ihrer Bestellung?', + writeReview: 'Eine Bewertung schreiben', + chatWithRider: 'Mit dem Fahrer chatten', + signupGoogle: 'Mit Google anmelden', + signupEmail: 'Anmeldung mit E-Mail', + signup: 'Anmelden', + signupApple: 'Mit Apple anmelden', + alreadyMember: 'Bereits Mitglied? Einloggen', + enterUsername: 'Geben Sie Ihre E-Mail-Adresse und Ihr Passwort ein', + createNewAcc: 'Neues Konto erstellen', + emailphoneReq: "E-Mail/Telefonnummer ist erforderlich", + invalidMail: "Ungültige E-Mail/Telefonnummer", + passReq: "Passwort ist erforderlich", + cantLogin: "Anmeldung nicht möglich, dieses Konto wurde gelöscht!", + orderPending: "Ihre Bestellung wird noch bearbeitet.", + prepFood: "Das Restaurant bereitet das Essen vor.", + riderOnWay: "Der Fahrer ist unterwegs.", + orderDelivered: "Die Bestellung wurde geliefert.", + completeOrder: "Die Bestellung ist abgeschlossen.", + PENDING: "AUSSTEHEND", + ACCEPTED: 'AKZEPTIERT', + PICKED: "ABGEHOLT", + DELIVERED: "GELIEFERT", + COMPLETED: "ABGESCHLOSSEN", + 'Default': 'Standaard', + 'Ascending (A-Z)': 'Oplopend (A-Z)', + 'Descending (Z-A)': 'Aflopend (Z-A)', + 'Price (Low - High)': 'Prijs (Laag - Hoog)', + 'Price (High - Low)': 'Prijs (Hoog - Laag)', + Home: 'Thuis', + Work: 'Werk', + Other: 'Anders', + NoStock: 'Geen Voorraad', + ItemOutOfStock: 'Artikel uit voorraad', + SelectLanguage: 'Selecteer Taal', + Done: 'Voltooid', + Cancel: 'Annuleren', + NoFoods: 'Geen voedsel', + CartIsEmpty: 'Winkelwagen is leeg.', + SetPaymentMethod: 'Stel betalingsmethode in voordat u afrekent', + AnErrorOccured: 'Er is een fout opgetreden. Probeer het opnieuw', + ResetPasswordLinkSent: 'Reset wachtwoordlink verzonden naar uw e-mail', + LocationPermissionNotGranted: 'Locatietoestemming niet verleend', + NoFooditemFound: 'Geen voedingsmiddel gevonden', + } diff --git a/CustomerApp/translations/en.js b/CustomerApp/translations/en.js index 7d0c9f4..be35b52 100644 --- a/CustomerApp/translations/en.js +++ b/CustomerApp/translations/en.js @@ -218,5 +218,25 @@ export const en = { ACCEPTED: 'ACCEPTED', PICKED: "PICKED", DELIVERED: "DELIVERED", - COMPLETED: "COMPLETED" + COMPLETED: "COMPLETED", + 'Default': 'Default', + 'Ascending (A-Z)': 'Ascending (A-Z)', + 'Descending (Z-A)': 'Descending (Z-A)', + 'Price (Low - High)': 'Price (Low - High)', + 'Price (High - Low)': 'Price (High - Low)', + Home: 'Home', + Work: 'Work', + Other: 'Other', + NoStock: 'No Stock', + ItemOutOfStock: 'Item out of stock', + SelectLanguage: 'Select Language', + Done: 'Done', + Cancel: 'Cancel', + NoFoods: 'No Foods', + CartIsEmpty: 'Cart is empty.', + SetPaymentMethod: 'Set payment method before checkout', + AnErrorOccured: 'An error occured. Please try again', + ResetPasswordLinkSent: 'Reset password link sent on your email', + LocationPermissionNotGranted: 'Location permission not granted', + NoFooditemFound: 'No food item found' } diff --git a/CustomerApp/translations/fr.js b/CustomerApp/translations/fr.js index 122b542..ec38e7a 100644 --- a/CustomerApp/translations/fr.js +++ b/CustomerApp/translations/fr.js @@ -139,85 +139,106 @@ export const fr = { validateItems: 'Ajouter des articles au panier avant le paiement', validateDelivery: "Définir l'adresse de livraison avant le paiement", language: 'Langue', - getUpdatesText: 'Obtenez des mises à jour sur le statut de votre commande !', - delAcc: 'Supprimer le compte', - delAccText: 'Êtes-vous sûr de vouloir supprimer le compte ?', - cancel: 'Annuler', - receiveOffers: 'Recevoir des offres spéciales', - notificationUpdate: 'Statut de notification mis à jour', - notificationsNotWorking: "Les notifications ne fonctionnent pas sur le simulateur", - loginOrCreateAcc: "Connexion/Créer un compte", - welcome: "Bienvenue", - titleSettings: 'Paramètres', - home: 'Accueil', - noItems: 'Aucun élément trouvé', - featured: 'En vedette', - filters: 'Filtres', - reset: 'Réinitialiser', - showSaleItems: 'Afficher uniquement les articles en vente', - showStockItems: 'Afficher uniquement les articles en stock', - priceRange: 'Plage de prix', - sorting: 'Tri', - applyFilter: 'Appliquer le filtre', - close: 'Fermer', - phoneNumberRequired: "Numéro de téléphone requis", -phoneNumberMissing: "Numéro de téléphone manquant", -userInfoUpdated: "Informations de l'utilisateur mises à jour", -nameReq: "Nom requis", -minWords: "Minimum 11 et maximum 15 caractères autorisés", -rightsReserved: "Tous les droits sont réservés par Enatega", -changePass: "Changer le mot de passe", -currentPass: "Mot de passe actuel", -passReq: "Mot de passe requis", -newPass: "Nouveau mot de passe", -apply: "Appliquer", -invalidPass: "Mot de passe invalide", -passChange: "Mot de passe mis à jour", -noOrdersFound: "Aucune commande trouvée", -startShopping: "Commencer les achats", -reOrder: "Recommander", -smthWrong: "Quelque chose ne va pas", -noOrdersAssigned: "Aucune commande attribuée pour le moment !", -oldOrder: "Ancienne commande", -activeOrder: "Commande active", -idVar: 'ID : ', -addressUpdated: 'Adresse mise à jour', -labelAs: 'Étiqueter comme', -addressReq: 'Adresse de livraison requise', -deliveryDetailsReq: 'Détails de livraison requis', -locaPermission: 'Autorisation de localisation non accordée', -addressAdded: 'Adresse ajoutée', -productPage: 'Page produit', -docs: 'Docs', -blog: 'Blog', -aboutUs: 'À propos de nous', -myVouchers: 'Mes bons', -typeVoucherCode: "Saisir le code du bon", -enterVoucherCode: "Entrez votre code de bon", -status: 'Statut', -anySuggestion: 'Des suggestions ?', -reviewRegarding: 'Avis concernant votre commande ?', -writeReview: 'Écrire un avis', -chatWithRider: 'Discuter avec le livreur', -signupGoogle: 'Inscription avec Google', -signupEmail: 'Inscription par e-mail', -signup: 'Sinscrire', -signupApple: 'Inscription avec Apple', -alreadyMember: 'Déjà membre ? Se connecter', -enterUsername: 'Entrez votre adresse e-mail et votre mot de passe', -createNewAcc: 'Créer un nouveau compte', -emailphoneReq: "E-mail/Téléphone requis", -invalidMail: "E-mail/Téléphone invalide", -passReq: "Mot de passe requis", -cantLogin: "Impossible de se connecter, ce compte a été supprimé !", -orderPending: "Votre commande est en attente.", -prepFood: "Le restaurant prépare la nourriture.", -riderOnWay: "Le livreur est en route.", -orderDelivered: "La commande a été livrée.", -completeOrder: "La commande est terminée.", -PENDING: "EN ATTENTE", -ACCEPTED: 'ACCEPTÉE', -PICKED: "ENLEVÉE", -DELIVERED: "LIVRÉE", -COMPLETED: "TERMINÉE" + getUpdatesText: 'Obtenez des mises à jour sur le statut de votre commande !', + delAcc: 'Supprimer le compte', + delAccText: 'Êtes-vous sûr de vouloir supprimer le compte ?', + cancel: 'Annuler', + receiveOffers: 'Recevoir des offres spéciales', + notificationUpdate: 'Statut de notification mis à jour', + notificationsNotWorking: "Les notifications ne fonctionnent pas sur le simulateur", + loginOrCreateAcc: "Connexion/Créer un compte", + welcome: "Bienvenue", + titleSettings: 'Paramètres', + home: 'Accueil', + noItems: 'Aucun élément trouvé', + featured: 'En vedette', + filters: 'Filtres', + reset: 'Réinitialiser', + showSaleItems: 'Afficher uniquement les articles en vente', + showStockItems: 'Afficher uniquement les articles en stock', + priceRange: 'Plage de prix', + sorting: 'Tri', + applyFilter: 'Appliquer le filtre', + close: 'Fermer', + phoneNumberRequired: "Numéro de téléphone requis", + phoneNumberMissing: "Numéro de téléphone manquant", + userInfoUpdated: "Informations de l'utilisateur mises à jour", + nameReq: "Nom requis", + minWords: "Minimum 11 et maximum 15 caractères autorisés", + rightsReserved: "Tous les droits sont réservés par Enatega", + changePass: "Changer le mot de passe", + currentPass: "Mot de passe actuel", + passReq: "Mot de passe requis", + newPass: "Nouveau mot de passe", + apply: "Appliquer", + invalidPass: "Mot de passe invalide", + passChange: "Mot de passe mis à jour", + noOrdersFound: "Aucune commande trouvée", + startShopping: "Commencer les achats", + reOrder: "Recommander", + smthWrong: "Quelque chose ne va pas", + noOrdersAssigned: "Aucune commande attribuée pour le moment !", + oldOrder: "Ancienne commande", + activeOrder: "Commande active", + idVar: 'ID : ', + addressUpdated: 'Adresse mise à jour', + labelAs: 'Étiqueter comme', + addressReq: 'Adresse de livraison requise', + deliveryDetailsReq: 'Détails de livraison requis', + locaPermission: 'Autorisation de localisation non accordée', + addressAdded: 'Adresse ajoutée', + productPage: 'Page produit', + docs: 'Docs', + blog: 'Blog', + aboutUs: 'À propos de nous', + myVouchers: 'Mes bons', + typeVoucherCode: "Saisir le code du bon", + enterVoucherCode: "Entrez votre code de bon", + status: 'Statut', + anySuggestion: 'Des suggestions ?', + reviewRegarding: 'Avis concernant votre commande ?', + writeReview: 'Écrire un avis', + chatWithRider: 'Discuter avec le livreur', + signupGoogle: 'Inscription avec Google', + signupEmail: 'Inscription par e-mail', + signup: 'Sinscrire', + signupApple: 'Inscription avec Apple', + alreadyMember: 'Déjà membre ? Se connecter', + enterUsername: 'Entrez votre adresse e-mail et votre mot de passe', + createNewAcc: 'Créer un nouveau compte', + emailphoneReq: "E-mail/Téléphone requis", + invalidMail: "E-mail/Téléphone invalide", + passReq: "Mot de passe requis", + cantLogin: "Impossible de se connecter, ce compte a été supprimé !", + orderPending: "Votre commande est en attente.", + prepFood: "Le restaurant prépare la nourriture.", + riderOnWay: "Le livreur est en route.", + orderDelivered: "La commande a été livrée.", + completeOrder: "La commande est terminée.", + PENDING: "EN ATTENTE", + ACCEPTED: 'ACCEPTÉE', + PICKED: "ENLEVÉE", + DELIVERED: "LIVRÉE", + COMPLETED: "TERMINÉE", + 'Default': 'Par défaut', + 'Ascending (A-Z)': 'Croissant (A-Z)', + 'Descending (Z-A)': 'Décroissant (Z-A)', + 'Price (Low - High)': 'Prix (Bas - Élevé)', + 'Price (High - Low)': 'Prix (Élevé - Bas)', + Home: 'Accueil', + Work: 'Travail', + Other: 'Autre', + NoStock: 'Stock épuisé', + ItemOutOfStock: 'Article en rupture de stock', + SelectLanguage: 'Sélectionner la langue', + Done: 'Terminé', + Cancel: 'Annuler', + NoFoods: 'Pas de nourriture', + CartIsEmpty: 'Le panier est vide.', + SetPaymentMethod: 'Définissez le mode de paiement avant de passer à la caisse', + AnErrorOccured: 'Une erreur s\'est produite. Veuillez réessayer', + ResetPasswordLinkSent: 'Lien de réinitialisation du mot de passe envoyé sur votre email', + LocationPermissionNotGranted: 'Permission de localisation non accordée', + NoFooditemFound: 'Aucun article alimentaire trouvé', + } diff --git a/CustomerApp/translations/km.js b/CustomerApp/translations/km.js index f1969d1..ab9b073 100644 --- a/CustomerApp/translations/km.js +++ b/CustomerApp/translations/km.js @@ -134,85 +134,106 @@ export const km = { validateItems: 'បន្ថែមរបស់របរទៅរទេះមុនពេលឆែក', validateDelivery: 'កំណត់អាសយដ្ឋានដឹកជញ្ជូនមុនពេលពិនិត្យចេញ', language: 'ភាសា', - getUpdatesText: 'ទទួល​បាន​ការ​ធ្វើ​បច្ចុប្បន្ន​ភាព​លើ​ស្ថាន​ភាព​ការ​បញ្ជាទិញ​របស់​អ្នក!', - delAcc: 'លុប​គណនី', - delAccText: 'តើ​អ្នក​ប្រាកដ​ថា​តើ​ចង់​លុប​គណនី​ឬ​ទេ?', - cancel: 'បោះបង់', - receiveOffers: 'ទទួល​បាន​ការ​ផ្តល់​ជូន​ពិសេស', - notificationUpdate: 'ការ​ប្រកាស​ការ​ជូន​ដំណឹង​ត្រូវបាន​ធ្វើ​បច្ចុប្បន្ន', - notificationsNotWorking: "ការ​ជូន​ដំណឹង​មិន​ដំណើរ​ការ​លើ​ម៉ាស៊ីន​សម្រាប់​ប្រើប្រាស់តំណល", - loginOrCreateAcc: "ចូល​ប្រើ/បង្កើត​គណនី", - welcome: "ស្វាគមន៍", - titleSettings: 'ការ​កំណត់', - home: 'ទំព័រ​ដើម', - noItems: 'រក​មិន​ឃើញ​ទេ', - featured: 'ផ្សេងៗ', - filters: 'តម្រង', - reset: 'កំណត់​ឡើងវិញ', - showSaleItems: 'បង្ហាញ​ទំនិញ​លក់​តែប៉ុណ្ណោះ', - showStockItems: 'បង្ហាញ​ទំនិញ​ស្តុក​តែប៉ុណ្ណោះ', - priceRange: 'ជម្រើស​តម្លៃ', - sorting: 'តម្រៀបតាម', - applyFilter: 'អនុវត្ត​តម្រង', - close: 'បិទ', - phoneNumberRequired: "ត្រូវការលេខទូរស័ព្ទ", -phoneNumberMissing: "ខុសលេខទូរស័ព្ទ", -userInfoUpdated: "ព័ត៌មានអ្នកប្រើប្រាស់ត្រូវបានធ្វើបច្ចុប្បន្នភាព", -nameReq: "ត្រូវការឈ្មោះ", -minWords: "អត្ថបទអប្បាយបន្ទាប់ពី 11 និងអតិបរិមាណអតិបរិមាណអតិបរិមាណអតិបរិមាណអតិបរិមាណអតិបរិមាណអតិបរិមាណអតិបរិមាណអតិបរិមាណអតិបរិមាណ", -rightsReserved: "រក្សាសិទ្ធិទាំងអស់គ្នាដោយ Enatega", -changePass: "ប្ដូរលេខសម្ងាត់", -currentPass: "លេខសម្ងាត់បច្ចុប្បន្ន", -passReq: "ត្រូវការលេខសម្ងាត់", -newPass: "លេខសម្ងាត់ថ្មី", -apply: "អនុវត្ត", -invalidPass: "លេខសម្ងាត់មិនត្រឹមត្រូវ", -passChange: "លេខសម្ងាត់ត្រូវបានធ្វើបច្ចុប្បន្នភាព", -noOrdersFound: "រកមិនឃើញការបញ្ជាទិញ", -startShopping: "ចាប់ផ្តើមទិញ", -reOrder: "កម្មង់ម្តងទៀត", -smthWrong: "មានអ្វីមួយខុស", -noOrdersAssigned: "មិនទាន់បានចាក់ការបញ្ជាទិញទេ!", -oldOrder: "ការបញ្ជាទិញចាស់", -activeOrder: "ការបញ្ជាទិញដែលមានសកម្ម", -idVar: 'លេខសម្គាល់: ', -addressUpdated: 'អាសយដ្ឋានត្រូវបានធ្វើបច្ចុប្បន្នភាព', -labelAs: 'ស្លាកជាដើម', -addressReq: 'អាសយដ្ឋានការដឹកជញ្ជូនត្រូវការ', -deliveryDetailsReq: 'សេចក្ដីលម្អិតនៃការដឹកជញ្ជូនត្រូវការ', -locaPermission: 'ការអនុញ្ញាតឱ្យតាមដានទីតាំងមិនបានទទួលយក', -addressAdded: 'បាន​បន្ថែម​អាសយដ្ឋាន', -productPage: 'ទំព័រផលិតផល', -docs: 'ឯកសារ', -blog: 'ប្លក់', -aboutUs: 'អំពី​យើង', -myVouchers: 'លេខកូដ​វេបសាយ​របស់​ខ្ញុំ', -typeVoucherCode: "បញ្ចូល​លេខកូដ​វេបសាយ", -enterVoucherCode: "បញ្ចូល​លេខកូដ​វេបសាយ​របស់​អ្នក", -status: 'ស្ថានភាព', -anySuggestion: 'មានអំណាចណាស់មែនទេ?', -reviewRegarding: 'ពិនិត្យឡើងវិញអំពីការបញ្ជាទិញរបស់អ្នក?', -writeReview: 'សរសេរពិន្ទុ', -chatWithRider: 'ជជែកជាមួយអ្នកបើកដំណើរ', -signupGoogle: 'ចុះឈ្មោះជាមួយ Google', -signupEmail: 'ចុះឈ្មោះតាមអ៊ីម៉ែល', -signup: 'ចុះឈ្មោះ', -signupApple: 'ចុះឈ្មោះជាមួយ Apple', -alreadyMember: 'រួចហើយរួចចូលក្នុង', -enterUsername: 'បញ្ចូលអ៊ីម៉ែលរបស់អ្នក និងពាក្យសម្ងាត់', -createNewAcc: 'បង្កើតគណនីថ្មី', -emailphoneReq: "ត្រូវការអ៊ីម៉ែល/លេខទូរស័ព្ទ", -invalidMail: "អ៊ីម៉ែល/លេខទូរស័ព្ទ​មិនត្រឹមត្រូវ", -passReq: "ត្រូវការពាក្យសម្ងាត់", -cantLogin: "មិនអាចចូលបានទេ, គណនីនេះត្រូវបានលុប!", -orderPending: "ការបញ្ជាទិញរបស់អ្នកមិនទាន់ទទួលយកទេ។", -prepFood: "ភោជនីដែលកំពុងរៀបចំអាហារ។", -riderOnWay: "អ្នកបើកដំណើរកំពង់កោះមាន់នៅលើផ្លូវ។", -orderDelivered: "ការបញ្ជាទិញបានដឹកជញ្ជូន។", -completeOrder: "ការបញ្ជាទិញបានបញ្ចប់។", -PENDING: "កំពុងរង់ចាំ", -ACCEPTED: 'បានទទួលយក', -PICKED: "បានជូនយក", -DELIVERED: "បានដឹកជញ្ជូន", -COMPLETED: "បានបញ្ចប់" + getUpdatesText: 'ទទួល​បាន​ការ​ធ្វើ​បច្ចុប្បន្ន​ភាព​លើ​ស្ថាន​ភាព​ការ​បញ្ជាទិញ​របស់​អ្នក!', + delAcc: 'លុប​គណនី', + delAccText: 'តើ​អ្នក​ប្រាកដ​ថា​តើ​ចង់​លុប​គណនី​ឬ​ទេ?', + cancel: 'បោះបង់', + receiveOffers: 'ទទួល​បាន​ការ​ផ្តល់​ជូន​ពិសេស', + notificationUpdate: 'ការ​ប្រកាស​ការ​ជូន​ដំណឹង​ត្រូវបាន​ធ្វើ​បច្ចុប្បន្ន', + notificationsNotWorking: "ការ​ជូន​ដំណឹង​មិន​ដំណើរ​ការ​លើ​ម៉ាស៊ីន​សម្រាប់​ប្រើប្រាស់តំណល", + loginOrCreateAcc: "ចូល​ប្រើ/បង្កើត​គណនី", + welcome: "ស្វាគមន៍", + titleSettings: 'ការ​កំណត់', + home: 'ទំព័រ​ដើម', + noItems: 'រក​មិន​ឃើញ​ទេ', + featured: 'ផ្សេងៗ', + filters: 'តម្រង', + reset: 'កំណត់​ឡើងវិញ', + showSaleItems: 'បង្ហាញ​ទំនិញ​លក់​តែប៉ុណ្ណោះ', + showStockItems: 'បង្ហាញ​ទំនិញ​ស្តុក​តែប៉ុណ្ណោះ', + priceRange: 'ជម្រើស​តម្លៃ', + sorting: 'តម្រៀបតាម', + applyFilter: 'អនុវត្ត​តម្រង', + close: 'បិទ', + phoneNumberRequired: "ត្រូវការលេខទូរស័ព្ទ", + phoneNumberMissing: "ខុសលេខទូរស័ព្ទ", + userInfoUpdated: "ព័ត៌មានអ្នកប្រើប្រាស់ត្រូវបានធ្វើបច្ចុប្បន្នភាព", + nameReq: "ត្រូវការឈ្មោះ", + minWords: "អត្ថបទអប្បាយបន្ទាប់ពី 11 និងអតិបរិមាណអតិបរិមាណអតិបរិមាណអតិបរិមាណអតិបរិមាណអតិបរិមាណអតិបរិមាណអតិបរិមាណអតិបរិមាណអតិបរិមាណ", + rightsReserved: "រក្សាសិទ្ធិទាំងអស់គ្នាដោយ Enatega", + changePass: "ប្ដូរលេខសម្ងាត់", + currentPass: "លេខសម្ងាត់បច្ចុប្បន្ន", + passReq: "ត្រូវការលេខសម្ងាត់", + newPass: "លេខសម្ងាត់ថ្មី", + apply: "អនុវត្ត", + invalidPass: "លេខសម្ងាត់មិនត្រឹមត្រូវ", + passChange: "លេខសម្ងាត់ត្រូវបានធ្វើបច្ចុប្បន្នភាព", + noOrdersFound: "រកមិនឃើញការបញ្ជាទិញ", + startShopping: "ចាប់ផ្តើមទិញ", + reOrder: "កម្មង់ម្តងទៀត", + smthWrong: "មានអ្វីមួយខុស", + noOrdersAssigned: "មិនទាន់បានចាក់ការបញ្ជាទិញទេ!", + oldOrder: "ការបញ្ជាទិញចាស់", + activeOrder: "ការបញ្ជាទិញដែលមានសកម្ម", + idVar: 'លេខសម្គាល់: ', + addressUpdated: 'អាសយដ្ឋានត្រូវបានធ្វើបច្ចុប្បន្នភាព', + labelAs: 'ស្លាកជាដើម', + addressReq: 'អាសយដ្ឋានការដឹកជញ្ជូនត្រូវការ', + deliveryDetailsReq: 'សេចក្ដីលម្អិតនៃការដឹកជញ្ជូនត្រូវការ', + locaPermission: 'ការអនុញ្ញាតឱ្យតាមដានទីតាំងមិនបានទទួលយក', + addressAdded: 'បាន​បន្ថែម​អាសយដ្ឋាន', + productPage: 'ទំព័រផលិតផល', + docs: 'ឯកសារ', + blog: 'ប្លក់', + aboutUs: 'អំពី​យើង', + myVouchers: 'លេខកូដ​វេបសាយ​របស់​ខ្ញុំ', + typeVoucherCode: "បញ្ចូល​លេខកូដ​វេបសាយ", + enterVoucherCode: "បញ្ចូល​លេខកូដ​វេបសាយ​របស់​អ្នក", + status: 'ស្ថានភាព', + anySuggestion: 'មានអំណាចណាស់មែនទេ?', + reviewRegarding: 'ពិនិត្យឡើងវិញអំពីការបញ្ជាទិញរបស់អ្នក?', + writeReview: 'សរសេរពិន្ទុ', + chatWithRider: 'ជជែកជាមួយអ្នកបើកដំណើរ', + signupGoogle: 'ចុះឈ្មោះជាមួយ Google', + signupEmail: 'ចុះឈ្មោះតាមអ៊ីម៉ែល', + signup: 'ចុះឈ្មោះ', + signupApple: 'ចុះឈ្មោះជាមួយ Apple', + alreadyMember: 'រួចហើយរួចចូលក្នុង', + enterUsername: 'បញ្ចូលអ៊ីម៉ែលរបស់អ្នក និងពាក្យសម្ងាត់', + createNewAcc: 'បង្កើតគណនីថ្មី', + emailphoneReq: "ត្រូវការអ៊ីម៉ែល/លេខទូរស័ព្ទ", + invalidMail: "អ៊ីម៉ែល/លេខទូរស័ព្ទ​មិនត្រឹមត្រូវ", + passReq: "ត្រូវការពាក្យសម្ងាត់", + cantLogin: "មិនអាចចូលបានទេ, គណនីនេះត្រូវបានលុប!", + orderPending: "ការបញ្ជាទិញរបស់អ្នកមិនទាន់ទទួលយកទេ។", + prepFood: "ភោជនីដែលកំពុងរៀបចំអាហារ។", + riderOnWay: "អ្នកបើកដំណើរកំពង់កោះមាន់នៅលើផ្លូវ។", + orderDelivered: "ការបញ្ជាទិញបានដឹកជញ្ជូន។", + completeOrder: "ការបញ្ជាទិញបានបញ្ចប់។", + PENDING: "កំពុងរង់ចាំ", + ACCEPTED: 'បានទទួលយក', + PICKED: "បានជូនយក", + DELIVERED: "បានដឹកជញ្ជូន", + COMPLETED: "បានបញ្ចប់", + 'Default': 'លំនាំដើម', + 'Ascending (A-Z)': 'កើតឡើង (អ ទំ)', + 'Descending (Z-A)': 'ចុះឡើង (ទំ អ)', + 'Price (Low - High)': 'តម្លៃ (ទាប - ខ្ពស់)', + 'Price (High - Low)': 'តម្លៃ (ខ្ពស់ - ទាប)', + Home: 'ទំព័រដើម', + Work: 'ការងារ', + Other: 'ផ្សេងៗ', + NoStock: 'គ្មាន​ស្តុក', + ItemOutOfStock: 'មុខទំនិញ​អស់​ស្តុក', + SelectLanguage: 'ជ្រើសរើសភាសា', + Done: 'រួចរាល់', + Cancel: 'បោះបង់', + NoFoods: 'មិនមានអាហារ', + CartIsEmpty: 'រទេះទម្ងន់។', + SetPaymentMethod: 'កំណត់របស់មុនពេលចេញ', + AnErrorOccured: 'មានកំហុសមិនរួចហើយ។ សូមព្យាយាមម្តងទៀត', + ResetPasswordLinkSent: 'បានផ្ញើតំណរពេលបានប្ដូរពាក្យសម្ងាត់របស់អ្នកហើយ', + LocationPermissionNotGranted: 'មិនបានទទួលស្ថានភាពទីតាំង', + NoFooditemFound: 'មិនបានរកឃើញវាលម្ហូប', + } diff --git a/CustomerApp/translations/zh.js b/CustomerApp/translations/zh.js index 0769de7..3540daf 100644 --- a/CustomerApp/translations/zh.js +++ b/CustomerApp/translations/zh.js @@ -130,85 +130,106 @@ export const zh = { validateItems: '结帐前将商品添加到购物车', validateDelivery: '结帐前设置送货地址', language: '语言', - getUpdatesText: '获取订单状态更新!', - delAcc: '删除账户', - delAccText: '您确定要删除账户吗?', - cancel: '取消', - receiveOffers: '接收特别优惠', - notificationUpdate: '通知状态已更新', - notificationsNotWorking: "通知在模拟器上无法工作", - loginOrCreateAcc: "登录/创建帐户", - welcome: "欢迎", - titleSettings: '设置', - home: '主页', - noItems: '未找到物品', - featured: '特色', - filters: '筛选', - reset: '重置', - showSaleItems: '仅显示特价商品', - showStockItems: '仅显示有库存商品', - priceRange: '价格范围', - sorting: '排序', - applyFilter: '应用筛选', - close: '关闭', - phoneNumberRequired: "需要电话号码", -phoneNumberMissing: "缺少电话号码", -userInfoUpdated: "用户信息已更新", -nameReq: "需要姓名", -minWords: "最少11个字符,最多15个字符", -rightsReserved: "版权所有,Enatega保留所有权利", -changePass: "更改密码", -currentPass: "当前密码", -passReq: "需要密码", -newPass: "新密码", -apply: "应用", -invalidPass: "无效密码", -passChange: "密码已更新", -noOrdersFound: "未找到订单", -startShopping: "开始购物", -reOrder: "重新下单", -smthWrong: "出现问题", -noOrdersAssigned: "尚未分配订单!", -oldOrder: "旧订单", -activeOrder: "活跃订单", -idVar: 'ID:', -addressUpdated: '地址已更新', -labelAs: '标记为', -addressReq: '需要交付地址', -deliveryDetailsReq: '需要交付细节', -locaPermission: '未授予位置权限', -addressAdded: '已添加地址', -productPage: '产品页面', -docs: '文档', -blog: '博客', -aboutUs: '关于我们', -myVouchers: '我的优惠券', -typeVoucherCode: "输入优惠券代码", -enterVoucherCode: "输入您的优惠券代码", -status: '状态', -anySuggestion: '有什么建议吗?', -reviewRegarding: '关于您的订单的评论?', -writeReview: '撰写评论', -chatWithRider: '与骑手聊天', -signupGoogle: '使用 Google 注册', -signupEmail: '使用电子邮件注册', -signup: '注册', -signupApple: '使用 Apple 注册', -alreadyMember: '已经是会员?登录', -enterUsername: '输入您的电子邮件和密码', -createNewAcc: '创建新帐户', -emailphoneReq: "需要电子邮件/电话号码", -invalidMail: "无效的电子邮件/电话号码", -passReq: "需要密码", -cantLogin: "无法登录,此帐户已被删除!", -orderPending: "您的订单仍在等待中。", -prepFood: "餐厅正在准备食物。", -riderOnWay: "骑手正在途中。", -orderDelivered: "订单已送达。", -completeOrder: "订单已完成。", -PENDING: "待处理", -ACCEPTED: '已接受', -PICKED: "已取货", -DELIVERED: "已送达", -COMPLETED: "已完成" + getUpdatesText: '获取订单状态更新!', + delAcc: '删除账户', + delAccText: '您确定要删除账户吗?', + cancel: '取消', + receiveOffers: '接收特别优惠', + notificationUpdate: '通知状态已更新', + notificationsNotWorking: "通知在模拟器上无法工作", + loginOrCreateAcc: "登录/创建帐户", + welcome: "欢迎", + titleSettings: '设置', + home: '主页', + noItems: '未找到物品', + featured: '特色', + filters: '筛选', + reset: '重置', + showSaleItems: '仅显示特价商品', + showStockItems: '仅显示有库存商品', + priceRange: '价格范围', + sorting: '排序', + applyFilter: '应用筛选', + close: '关闭', + phoneNumberRequired: "需要电话号码", + phoneNumberMissing: "缺少电话号码", + userInfoUpdated: "用户信息已更新", + nameReq: "需要姓名", + minWords: "最少11个字符,最多15个字符", + rightsReserved: "版权所有,Enatega保留所有权利", + changePass: "更改密码", + currentPass: "当前密码", + passReq: "需要密码", + newPass: "新密码", + apply: "应用", + invalidPass: "无效密码", + passChange: "密码已更新", + noOrdersFound: "未找到订单", + startShopping: "开始购物", + reOrder: "重新下单", + smthWrong: "出现问题", + noOrdersAssigned: "尚未分配订单!", + oldOrder: "旧订单", + activeOrder: "活跃订单", + idVar: 'ID:', + addressUpdated: '地址已更新', + labelAs: '标记为', + addressReq: '需要交付地址', + deliveryDetailsReq: '需要交付细节', + locaPermission: '未授予位置权限', + addressAdded: '已添加地址', + productPage: '产品页面', + docs: '文档', + blog: '博客', + aboutUs: '关于我们', + myVouchers: '我的优惠券', + typeVoucherCode: "输入优惠券代码", + enterVoucherCode: "输入您的优惠券代码", + status: '状态', + anySuggestion: '有什么建议吗?', + reviewRegarding: '关于您的订单的评论?', + writeReview: '撰写评论', + chatWithRider: '与骑手聊天', + signupGoogle: '使用 Google 注册', + signupEmail: '使用电子邮件注册', + signup: '注册', + signupApple: '使用 Apple 注册', + alreadyMember: '已经是会员?登录', + enterUsername: '输入您的电子邮件和密码', + createNewAcc: '创建新帐户', + emailphoneReq: "需要电子邮件/电话号码", + invalidMail: "无效的电子邮件/电话号码", + passReq: "需要密码", + cantLogin: "无法登录,此帐户已被删除!", + orderPending: "您的订单仍在等待中。", + prepFood: "餐厅正在准备食物。", + riderOnWay: "骑手正在途中。", + orderDelivered: "订单已送达。", + completeOrder: "订单已完成。", + PENDING: "待处理", + ACCEPTED: '已接受', + PICKED: "已取货", + DELIVERED: "已送达", + COMPLETED: "已完成", + 'Default': '默认', + 'Ascending (A-Z)': '升序 (A-Z)', + 'Descending (Z-A)': '降序 (Z-A)', + 'Price (Low - High)': '价格 (低 - 高)', + 'Price (High - Low)': '价格 (高 - 低)', + Home: '首页', + Work: '工作', + Other: '其他', + NoStock: '无库存', + ItemOutOfStock: '商品缺货', + SelectLanguage: '选择语言', + Done: '完成', + Cancel: '取消', + NoFoods: '没有食物', + CartIsEmpty: '购物车是空的。', + SetPaymentMethod: '请在结账前设置付款方式', + AnErrorOccured: '发生错误。请重试', + ResetPasswordLinkSent: '重置密码链接已发送到您的电子邮件', + LocationPermissionNotGranted: '未授予位置权限', + NoFooditemFound: '找不到食品项目', + }