Browse Source

购物车翻译

main
Mac 2 weeks ago
parent
commit
af1d75b79a
  1. 57
      app/screens/CartScreen.tsx
  2. 26
      app/utils/languageUtils.ts

57
app/screens/CartScreen.tsx

@ -33,6 +33,7 @@ import useUserStore from "../store/user";
import { t } from "../i18n"; import { t } from "../i18n";
import { payApi } from "../services/api/payApi"; import { payApi } from "../services/api/payApi";
import IconComponent from "../components/IconComponent"; import IconComponent from "../components/IconComponent";
import {getSubjectTransLanguage,getAttributeTransLanguage} from "../utils/languageUtils";
export const CartScreen = () => { export const CartScreen = () => {
const [cartList, setCartList] = useState<GetCartList[]>([]); const [cartList, setCartList] = useState<GetCartList[]>([]);
@ -705,8 +706,12 @@ export const CartScreen = () => {
style={styles.imageThumbnail} style={styles.imageThumbnail}
/> />
<View style={styles.productInfoContainer2}> <View style={styles.productInfoContainer2}>
<Text style={styles.casualTextSnippet}> <Text
{item.subject} style={styles.casualTextSnippet}
numberOfLines={2}
ellipsizeMode="tail"
>
{getSubjectTransLanguage(item)}
</Text> </Text>
<Text style={styles.productDetailsTextStyle1}> <Text style={styles.productDetailsTextStyle1}>
{t("cart.min_order")}: {item.min_order_quantity} {t("cart.min_order")}: {item.min_order_quantity}
@ -714,7 +719,8 @@ export const CartScreen = () => {
</Text> </Text>
</View> </View>
</View> </View>
{item.skus.map((sku, index) => ( {item.skus.map((sku, index) => {
return (
<Swipeable <Swipeable
key={sku.cart_item_id} key={sku.cart_item_id}
enabled={!!user_id} enabled={!!user_id}
@ -726,13 +732,11 @@ export const CartScreen = () => {
alignItems: "center", alignItems: "center",
width: 80, width: 80,
}} }}
onPress={() => onPress={() => handleDeleteSku(
handleDeleteSku(
item.cart_id, item.cart_id,
sku.cart_item_id, sku.cart_item_id,
item.cart_id item.cart_id
) )}
}
disabled={!user_id} disabled={!user_id}
> >
<Text <Text
@ -752,7 +756,7 @@ export const CartScreen = () => {
price: sku.price, price: sku.price,
}); });
} }
}} } }
style={[ style={[
styles.productCardContainer5, styles.productCardContainer5,
styles.productCardContainer4, styles.productCardContainer4,
@ -760,13 +764,11 @@ export const CartScreen = () => {
> >
<View style={styles.svgContainer1}> <View style={styles.svgContainer1}>
<TouchableOpacity <TouchableOpacity
onPress={() => onPress={() => user_id && toggleSelection(
user_id && toggleSelection(
String(sku.cart_item_id), String(sku.cart_item_id),
index1, index1,
index index
) )}
}
disabled={!user_id} disabled={!user_id}
> >
<View style={[styles.iconContainer]}> <View style={[styles.iconContainer]}>
@ -785,8 +787,7 @@ export const CartScreen = () => {
? sku.attributes[0]?.sku_image_url ? sku.attributes[0]?.sku_image_url
: item.product_image, : item.product_image,
}} }}
style={styles.productImageDisplayStyle} style={styles.productImageDisplayStyle} />
/>
<View style={styles.productCardWidget1}> <View style={styles.productCardWidget1}>
{/* 1. SKU attributes at the top */} {/* 1. SKU attributes at the top */}
{sku.attributes[0]?.value && ( {sku.attributes[0]?.value && (
@ -796,9 +797,9 @@ export const CartScreen = () => {
numberOfLines={2} numberOfLines={2}
ellipsizeMode="tail" ellipsizeMode="tail"
> >
{sku.attributes[0]?.value}{" "} {getAttributeTransLanguage(sku.attributes[0])}{" "}
{sku.attributes[1] ? "/" : ""}{" "} {sku.attributes[1] ? "/" : ""}{" "}
{sku.attributes[1]?.value} {sku.attributes[1] ? getAttributeTransLanguage(sku.attributes[1]) : ""}
</Text> </Text>
</View> </View>
)} )}
@ -816,8 +817,7 @@ export const CartScreen = () => {
<View style={styles.vipContainer}> <View style={styles.vipContainer}>
<Image <Image
source={require("../../assets/img/折扣VIP1 (1).png")} source={require("../../assets/img/折扣VIP1 (1).png")}
style={styles.VipImg} style={styles.VipImg} />
/>
<Text style={styles.discountPercentageTextStyle}> <Text style={styles.discountPercentageTextStyle}>
-{((1 - vip_discount) * 100).toFixed(0)}% -{((1 - vip_discount) * 100).toFixed(0)}%
</Text> </Text>
@ -842,14 +842,12 @@ export const CartScreen = () => {
styles.svgContainer4, styles.svgContainer4,
{ borderRightWidth: 0 }, { borderRightWidth: 0 },
]} ]}
onPress={() => onPress={() => user_id && handleDecreaseQuantity(
user_id && handleDecreaseQuantity(
item.cart_id, item.cart_id,
sku.cart_item_id, sku.cart_item_id,
sku.quantity, sku.quantity,
item.min_order_quantity item.min_order_quantity
) )}
}
disabled={!user_id} disabled={!user_id}
> >
<Text <Text
@ -864,13 +862,11 @@ export const CartScreen = () => {
</TouchableOpacity> </TouchableOpacity>
<TouchableOpacity <TouchableOpacity
style={styles.quantityLabelContainer} style={styles.quantityLabelContainer}
onPress={() => onPress={() => user_id && handleQuantityPress(
user_id && handleQuantityPress(
item.cart_id, item.cart_id,
sku.cart_item_id, sku.cart_item_id,
sku.quantity sku.quantity
) )}
}
disabled={!user_id} disabled={!user_id}
> >
<Text style={styles.quantityText}> <Text style={styles.quantityText}>
@ -882,13 +878,11 @@ export const CartScreen = () => {
styles.svgContainer4, styles.svgContainer4,
{ borderLeftWidth: 0, marginLeft: 0 }, { borderLeftWidth: 0, marginLeft: 0 },
]} ]}
onPress={() => onPress={() => user_id && handleIncreaseQuantity(
user_id && handleIncreaseQuantity(
item.cart_id, item.cart_id,
sku.cart_item_id, sku.cart_item_id,
sku.quantity sku.quantity
) )}
}
disabled={!user_id} disabled={!user_id}
> >
<Text <Text
@ -906,7 +900,8 @@ export const CartScreen = () => {
</View> </View>
</TouchableOpacity> </TouchableOpacity>
</Swipeable> </Swipeable>
))} );
})}
</View> </View>
))} ))}

26
app/utils/languageUtils.ts

@ -30,6 +30,32 @@ export const getSubjectTransLanguage = <T extends Record<string, any>>(data: T):
export const getAttributeTransLanguage = <T extends Record<string, any>>(data: T): string => {
// 获取当前i18n语言
const currentLang = getCurrentLanguage();
// 特殊处理中文
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 matchedField = translationFields.find(field => {
// 从字段名中提取语言代码
const langCode = field.replace('value_trans_', '');
// 如果没有后缀,则为法语
return langCode === '' ? currentLang === 'fr' : langCode === currentLang;
});
// 返回匹配的翻译值,如果没有匹配则返回法语
return (data[matchedField || 'value_trans'] as string) || '';
};
export const getSkuTransLanguage = <T extends Record<string, any>>(data: T): string => { export const getSkuTransLanguage = <T extends Record<string, any>>(data: T): string => {
// 获取当前i18n语言 // 获取当前i18n语言
const currentLang = getCurrentLanguage(); const currentLang = getCurrentLanguage();

Loading…
Cancel
Save