remaining customer app localisation added and some issues solved

This commit is contained in:
Kashif Shehzad Baloch 2024-01-12 12:44:58 +05:00
parent d2d6d642a0
commit 660a223739
20 changed files with 701 additions and 340 deletions

View File

@ -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')

View File

@ -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')
})
}
}

View File

@ -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])

View File

@ -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,
@ -206,7 +211,8 @@ const FilterModal = props => {
? colors.fonfontMainColort
: colors.placeHolderColor
}>
{get(SORT_DATA, item)}
{/* {get(SORT_DATA, item)} */}
{localizedSortData[item]}
</TextDefault>
<RadioBtn
size={10}

View File

@ -227,7 +227,7 @@ function Cart() {
await addQuantityContext(key)
} else {
FlashMessage({
message: 'No more items in stock'
message: i18n.t('noMoreItems')
})
}
}
@ -265,7 +265,7 @@ function Cart() {
}
if (!paymentMethod) {
FlashMessage({
message: 'Set payment method before checkout'
message: i18n.t('SetPaymentMethod')
})
return false
}

View File

@ -65,7 +65,7 @@ const CreateAccount = () => {
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 {

View File

@ -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)}
</TextDefault>
</TouchableOpacity>
)

View File

@ -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) {

View File

@ -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')
})
}
}

View File

@ -43,7 +43,7 @@ function Menu() {
} else if (error) {
return (
<TextError
text={error ? error.message : "No Foods"}
text={error ? error.message : i18n.t('NoFoods')}
backColor="transparent"
/>
);

View File

@ -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 && (
<View style={styles.emtpyStockLabel}>
<TextDefault textColor={styles.whiteFont.color} center>
No Stock
{i18n.t('NoStock')}
</TextDefault>
</View>
)}
@ -189,7 +190,7 @@ function MenuItems() {
} else if (error) {
return (
<TextError
text={error ? error.message : "No Foods"}
text={error ? error.message : i18n.t('NoFoods')}
backColor="transparent"
/>
);
@ -198,7 +199,7 @@ function MenuItems() {
<View style={styles.emptyContainer}>
<EmptyFood width={scale(250)} height={scale(250)} />
<TextDefault H4 bold style={alignment.MTlarge}>
No food item found
{i18n.t('NoFooditemFound')}
</TextDefault>
</View>
);

View File

@ -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)}
</TextDefault>
</TouchableOpacity>
)

View File

@ -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`

View File

@ -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 (
<View style={styles.flex}>
<TextDefault bolder H5 style={alignment.MTlarge}>
Select Language
{i18n.t('SelectLanguage')}
</TextDefault>
{languageTypes.map((item, index) => (
@ -55,7 +57,7 @@ function SettingModal(props) {
onPress={() => props.onSelectedLanguage(activeRadio)}
>
<TextDefault textColor={colors.lightBackground} bolder uppercase>
Done
{i18n.t('Done')}
</TextDefault>
</TouchableOpacity>
<TouchableOpacity
@ -63,7 +65,7 @@ function SettingModal(props) {
style={[styles.width100, alignment.PBlarge, alignment.PTlarge]}
onPress={() => props.onClose()}
>
<TextDefault center>Cancel</TextDefault>
<TextDefault center>{i18n.t('Cancel')}</TextDefault>
</TouchableOpacity>
{/* </View> */}
</View>

View File

@ -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: 'لم يتم العثور على عنصر طعام',
}

View File

@ -218,5 +218,26 @@ PENDING: "AUSSTEHEND",
ACCEPTED: 'AKZEPTIERT',
PICKED: "ABGEHOLT",
DELIVERED: "GELIEFERT",
COMPLETED: "ABGESCHLOSSEN"
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',
}

View File

@ -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'
}

View File

@ -219,5 +219,26 @@ PENDING: "EN ATTENTE",
ACCEPTED: 'ACCEPTÉE',
PICKED: "ENLEVÉE",
DELIVERED: "LIVRÉE",
COMPLETED: "TERMINÉ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é',
}

View File

@ -214,5 +214,26 @@ PENDING: "កំពុងរង់ចាំ",
ACCEPTED: 'បានទទួលយក',
PICKED: "បានជូនយក",
DELIVERED: "បានដឹកជញ្ជូន",
COMPLETED: "បានបញ្ចប់"
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: 'មិនបានរកឃើញវាលម្ហូប',
}

View File

@ -210,5 +210,26 @@ PENDING: "待处理",
ACCEPTED: '已接受',
PICKED: "已取货",
DELIVERED: "已送达",
COMPLETED: "已完成"
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: '找不到食品项目',
}