You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在类中存储可通过Localizable String翻译的字符串

解决分类名称翻译问题的方案

直接初始化时使用本地化字符串

你完全可以在类的数组初始化中用String(localized:),和你其他部分的写法逻辑一致。先在Localizable.strings文件中添加对应分类名称的键值对,比如:

// Localizable.strings(中文示例)
"Lodging" = "住宿";
"Food" = "餐饮";
"Airfare" = "机票";

然后修改CategoryModel的初始化代码,把硬编码的分类名替换为本地化字符串:

@MainActor
@Observable final class CategoryModel {
   
    var catItem = [ 
        Category(catNum: 0, catName: String(localized: "Lodging"), catBudget: 0, catPix: "bed.double.fill", catInUse: false, catCustom: false),
        Category(catNum: 1, catName: String(localized: "Food"), catBudget: 0, catPix: "cart", catInUse: false, catCustom: false),
        Category(catNum: 2, catName: String(localized: "Airfare"), catBudget: 0, catPix: "airplane", catInUse: false, catCustom: false),
        // ... 其他分类项
    ]
}

这种方式适配你的场景——用户可选择启用/禁用分类,但基础分类列表固定的情况。初始化时就会根据当前系统语言加载对应的翻译文本。

支持动态切换语言的进阶写法

如果你的APP需要支持不重启就能切换语言,上面的写法就不够了(初始化时的翻译不会自动更新)。这时可以把分类名的本地化key单独存储,用计算属性动态获取翻译:

  1. 修改Category结构体,存储本地化key而非翻译后的文本:
struct Category {
    let catNum: Int
    let catNameKey: String // 存储Localizable中的键
    var catBudget: Double
    let catPix: String
    var catInUse: Bool
    let catCustom: Bool
    
    // 动态获取当前语言的翻译
    var catName: String {
        String(localized: catNameKey)
    }
}
  1. 更新CategoryModel的初始化代码:
@MainActor
@Observable final class CategoryModel {
   
    var catItem = [ 
        Category(catNum: 0, catNameKey: "Lodging", catBudget: 0, catPix: "bed.double.fill", catInUse: false, catCustom: false),
        Category(catNum: 1, catNameKey: "Food", catBudget: 0, catPix: "cart", catInUse: false, catCustom: false),
        Category(catNum: 2, catNameKey: "Airfare", catBudget: 0, catPix: "airplane", catInUse: false, catCustom: false),
        // ... 其他分类项
    ]
}

这样每次访问catName时,都会根据当前语言环境返回最新的翻译,语言切换后无需重新初始化数组就能看到更新后的分类名。

自定义分类的处理说明

如果后续要支持用户自定义分类,这类名称通常不需要翻译(直接保留用户输入的原始文本即可)。你可以通过catCustom字段区分系统默认分类和用户自定义分类,只对系统分类应用上述本地化逻辑。

内容的提问来源于stack exchange,提问作者Galen Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 15:22:46