diff --git a/app/screens/CountrySelect.tsx b/app/screens/CountrySelect.tsx
index 2e864d2..44368ec 100644
--- a/app/screens/CountrySelect.tsx
+++ b/app/screens/CountrySelect.tsx
@@ -20,6 +20,7 @@ import type { NativeStackNavigationProp } from '@react-navigation/native-stack';
import { RootStackParamList } from '../types/navigation';
import { settingApi } from '../services/api/setting';
import flagMap from '../utils/flagMap';
+import { getCountryTransLanguage } from '../utils/languageUtils';
const SELECTED_COUNTRY_KEY = '@selected_country';
@@ -87,7 +88,7 @@ export const CountrySelect = () => {
{item.name_en}
+ ]}>{getCountryTransLanguage(item)}
{selectedCountry === item.country && (
✓
diff --git a/app/screens/SearchResultScreen.tsx b/app/screens/SearchResultScreen.tsx
index 99c46d5..2250cb4 100644
--- a/app/screens/SearchResultScreen.tsx
+++ b/app/screens/SearchResultScreen.tsx
@@ -451,7 +451,7 @@ export const SearchResultScreen = ({ route, navigation }: SearchResultScreenProp
// 处理点击产品
const handleProductPress = useCallback(
(product: Product) => {
- if (product.original_min_price === 0 || product.original_min_price === null) {
+ if (product.min_price === 0 || product.min_price === null) {
Toast.show({
type: "error",
text1: t("productDiscontinued"),
diff --git a/app/screens/loginList/ForgotPhonePassword.tsx b/app/screens/loginList/ForgotPhonePassword.tsx
index 12adbc9..d5e4c1b 100644
--- a/app/screens/loginList/ForgotPhonePassword.tsx
+++ b/app/screens/loginList/ForgotPhonePassword.tsx
@@ -20,6 +20,7 @@ import { CountryList } from "../../constants/countries";
import { settingApi } from "../../services/api/setting";
import { VerificationCodeInput } from "./VerificationCodeInput";
import fontSize from "../../utils/fontsizeUtils";
+import { getCountryTransLanguage } from "../../utils/languageUtils";
type ForgotPhonePasswordProps = {
visible?: boolean;
@@ -171,7 +172,7 @@ export const ForgotPhonePassword = ({
>
+{item.country}
- {item.name_en}
+ {getCountryTransLanguage(item)}
{/* Add checkmark for selected country */}
{currentCountry && currentCountry.country === item.country && (
diff --git a/app/screens/loginList/PhoneLoginModal.tsx b/app/screens/loginList/PhoneLoginModal.tsx
index 7803231..b2bc253 100644
--- a/app/screens/loginList/PhoneLoginModal.tsx
+++ b/app/screens/loginList/PhoneLoginModal.tsx
@@ -30,6 +30,7 @@ import useBurialPointStore from "../../store/burialPoint";
import {getBurialPointData} from "../../store/burialPoint";
import fontSize from "../../utils/fontsizeUtils";
import { changeLanguage } from "../../i18n";
+import { getCountryTransLanguage } from "../../utils/languageUtils";
type RootStackParamList = {
Login: undefined;
@@ -195,7 +196,7 @@ const PhoneLoginModal = ({ visible, onClose }: PhoneLoginModalProps) => {
+{item.country}
{/* */}
- {item.name_en}
+ {getCountryTransLanguage(item)}
{/* Add checkmark for selected country */}
{selectedCountry && selectedCountry.country === item.country && (
diff --git a/app/screens/previewOrder/perviewOrder.tsx b/app/screens/previewOrder/perviewOrder.tsx
index a5745e1..94c3267 100644
--- a/app/screens/previewOrder/perviewOrder.tsx
+++ b/app/screens/previewOrder/perviewOrder.tsx
@@ -37,11 +37,13 @@ import fontSize from "../../utils/fontsizeUtils";
import { getBurialPointData } from "../../store/burialPoint";
import useBurialPointStore from "../../store/burialPoint";
import AsyncStorage from "@react-native-async-storage/async-storage";
+import { getCountryTransLanguage } from "../../utils/languageUtils";
// 定义本地存储的国家数据类型
interface LocalCountryData {
code: string;
flag: string;
+ country: number;
name: string;
phoneCode: string;
userCount: number;
@@ -302,8 +304,8 @@ export const PreviewOrder = () => {
// 获取显示的国家代码
const getDisplayCountryCode = () => {
if (loadingCountries) return "...";
- if (localSelectedCountry?.phoneCode) {
- return localSelectedCountry.phoneCode;
+ if (localSelectedCountry?.country) {
+ return localSelectedCountry.country;
}
if (selectedCountry?.country) {
return `+${selectedCountry.country}`;
@@ -573,7 +575,7 @@ export const PreviewOrder = () => {
styles.selectedCountryItemText,
]}
>
- {item.name_en} (+{item.country})
+ {getCountryTransLanguage(item)} (+{item.country})
)}
diff --git a/app/screens/productStatus/OrderDatails.tsx b/app/screens/productStatus/OrderDatails.tsx
index 48ed77e..70ebe74 100644
--- a/app/screens/productStatus/OrderDatails.tsx
+++ b/app/screens/productStatus/OrderDatails.tsx
@@ -55,7 +55,7 @@ import IconComponent from "../../components/IconComponent";
import AsyncStorage from "@react-native-async-storage/async-storage";
import { CountryList } from "../../constants/countries";
import { getOrderTransLanguage,getAttributeTransLanguage,getAttributeNameTransLanguage } from "../../utils/languageUtils";
-
+import { getCountryTransLanguage } from "../../utils/languageUtils";
// 定义选项类型
interface PaymentOption {
@@ -76,6 +76,7 @@ interface LocalCountryData {
code: string;
flag: string;
name: string;
+ country: number | string;
phoneCode: string;
userCount: number;
}
@@ -366,8 +367,8 @@ export const OrderDetails = () => {
// 获取显示的国家代码
const getDisplayCountryCode = () => {
if (loadingCountries) return "...";
- if (localSelectedCountry?.phoneCode) {
- return localSelectedCountry.phoneCode;
+ if (localSelectedCountry?.country) {
+ return String(localSelectedCountry.country);
}
if (selectedCountry?.country) {
return `+${selectedCountry.country}`;
@@ -1719,7 +1720,7 @@ export const OrderDetails = () => {
styles.currencyButtonTextActive,
]}
>
- {item.name_en} (+{item.country})
+ {getCountryTransLanguage(item)} (+{item.country})
)}
diff --git a/app/utils/languageUtils.ts b/app/utils/languageUtils.ts
index 403199e..faff238 100644
--- a/app/utils/languageUtils.ts
+++ b/app/utils/languageUtils.ts
@@ -1,146 +1,157 @@
-import { getCurrentLanguage } from '../i18n';
+import { getCurrentLanguage } from "../i18n";
-export const getSubjectTransLanguage = >(data: T): string => {
+export const getSubjectTransLanguage = >(
+ data: T
+): string => {
// 获取当前i18n语言
const currentLang = getCurrentLanguage();
- console.log('currentLang', currentLang);
-
-
+ console.log("currentLang", currentLang);
+
// 特殊处理中文
- if (currentLang === 'zh' && 'subject' in data) {
+ if (currentLang === "zh" && "subject" in data) {
return data.subject as string;
}
// 获取所有subject_trans开头的字段
- const translationFields = Object.keys(data).filter(key =>
- key.startsWith('subject_trans')
+ const translationFields = Object.keys(data).filter((key) =>
+ key.startsWith("subject_trans")
);
// 查找匹配的字段
- const matchedField = translationFields.find(field => {
+ const matchedField = translationFields.find((field) => {
// 从字段名中提取语言代码
- const langCode = field.replace('subject_trans_', '');
+ const langCode = field.replace("subject_trans_", "");
// 如果没有后缀,则为法语
- return langCode === '' ? currentLang === 'fr' : langCode === currentLang;
+ return langCode === "" ? currentLang === "fr" : langCode === currentLang;
});
// 返回匹配的翻译值,如果没有匹配则返回法语
- return (data[matchedField || 'subject_trans'] as string) || '';
+ return (data[matchedField || "subject_trans"] as string) || "";
};
-
-
-export const getAttributeTransLanguage = >(data: T): string => {
+export const getAttributeTransLanguage = >(
+ data: T
+): string => {
// 获取当前i18n语言
const currentLang = getCurrentLanguage();
-
+
// 特殊处理中文
- if (currentLang === 'zh' && 'value' in data) {
+ if (currentLang === "zh" && "value" in data) {
return data.value as string;
}
// 获取所有value_trans开头的字段
- const translationFields = Object.keys(data).filter(key =>
- key.startsWith('value_trans')
+ const translationFields = Object.keys(data).filter((key) =>
+ key.startsWith("value_trans")
);
// 查找匹配的字段
- const matchedField = translationFields.find(field => {
+ const matchedField = translationFields.find((field) => {
// 从字段名中提取语言代码
- const langCode = field.replace('value_trans_', '');
+ const langCode = field.replace("value_trans_", "");
// 如果没有后缀,则为法语
- return langCode === '' ? currentLang === 'fr' : langCode === currentLang;
+ return langCode === "" ? currentLang === "fr" : langCode === currentLang;
});
// 返回匹配的翻译值,如果没有匹配则返回法语
- return (data[matchedField || 'value_trans'] as string) || '';
+ return (data[matchedField || "value_trans"] as string) || "";
};
-
-export const getAttributeNameTransLanguage = >(data: T): string => {
+export const getAttributeNameTransLanguage = >(
+ data: T
+): string => {
// 获取当前i18n语言
const currentLang = getCurrentLanguage();
-
+
// 特殊处理中文
- if (currentLang === 'zh' && 'attribute_name' in data) {
+ if (currentLang === "zh" && "attribute_name" in data) {
return data.attribute_name as string;
}
// 获取所有attribute_name_trans开头的字段
- const translationFields = Object.keys(data).filter(key =>
- key.startsWith('attribute_name_trans')
+ const translationFields = Object.keys(data).filter((key) =>
+ key.startsWith("attribute_name_trans")
);
// 查找匹配的字段
- const matchedField = translationFields.find(field => {
+ const matchedField = translationFields.find((field) => {
// 从字段名中提取语言代码
- const langCode = field.replace('attribute_name_trans_', '');
+ const langCode = field.replace("attribute_name_trans_", "");
// 如果没有后缀,则为法语
- return langCode === '' ? currentLang === 'fr' : langCode === currentLang;
+ return langCode === "" ? currentLang === "fr" : langCode === currentLang;
});
// 返回匹配的翻译值,如果没有匹配则返回法语
- return (data[matchedField || 'attribute_name_trans'] as string) || '';
-}
+ return (data[matchedField || "attribute_name_trans"] as string) || "";
+};
-export const getSkuTransLanguage = >(data: T): string => {
+export const getSkuTransLanguage = >(
+ data: T
+): string => {
// 获取当前i18n语言
const currentLang = getCurrentLanguage();
-
+
// 特殊处理中文
- if (currentLang === 'zh' && 'value' in data) {
+ if (currentLang === "zh" && "value" in data) {
return data.value as string;
}
// 获取所有subject_trans开头的字段
- const translationFields = Object.keys(data).filter(key =>
- key.startsWith('value_trans')
+ const translationFields = Object.keys(data).filter((key) =>
+ key.startsWith("value_trans")
);
// 查找匹配的字段
- const matchedField = translationFields.find(field => {
+ const matchedField = translationFields.find((field) => {
// 从字段名中提取语言代码
- const langCode = field.replace('value_trans_', '');
+ const langCode = field.replace("value_trans_", "");
// 如果没有后缀,则为法语
- return langCode === '' ? currentLang === 'fr' : langCode === currentLang;
+ return langCode === "" ? currentLang === "fr" : langCode === currentLang;
});
// 返回匹配的翻译值,如果没有匹配则返回法语
- return (data[matchedField || 'value_trans'] as string) || '';
+ return (data[matchedField || "value_trans"] as string) || "";
};
-
-
-export const getOrderTransLanguage = >(data: T): string => {
+export const getOrderTransLanguage = >(
+ data: T
+): string => {
console.log(data);
-
+
// 获取当前i18n语言
const currentLang = getCurrentLanguage();
-
-
+
// 特殊处理中文
- if (currentLang === 'zh' && 'value' in data) {
+ if (currentLang === "zh" && "value" in data) {
return data.value as string;
}
// 获取所有subject_trans开头的字段
- const translationFields = Object.keys(data).filter(key =>
- key.startsWith('product_name')
+ const translationFields = Object.keys(data).filter((key) =>
+ key.startsWith("product_name")
);
-
-
// 查找匹配的字段
- const matchedField = translationFields.find(field => {
+ const matchedField = translationFields.find((field) => {
// 从字段名中提取语言代码
- const langCode = field.replace('product_name_', '');
-
+ const langCode = field.replace("product_name_", "");
+
// 如果没有后缀,则为法语
- return langCode === '' ? currentLang === 'fr' : langCode === currentLang;
+ return langCode === "" ? currentLang === "fr" : langCode === currentLang;
});
-
-
// 返回匹配的翻译值,如果没有匹配则返回法语
- return (data[matchedField || 'product_name_fr'] as string) || '';
+ return (data[matchedField || "product_name_fr"] as string) || "";
+};
+
+// 国家的字段
+export const getCountryTransLanguage = >(
+ data: T
+): string => {
+ const currentLang = getCurrentLanguage();
+ if (currentLang === "fr") {
+ return data.name as string;
+ } else {
+ return data.name_en as string;
+ }
};