首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Swift:如何在枚举值上添加本地化?

Swift 是一种强大的编程语言,它提供了丰富的功能来支持本地化和国际化。在 Swift 中,我们可以使用 NSLocalizedString 函数来实现枚举值的本地化。

要在枚举值上添加本地化,需要按照以下步骤进行操作:

  1. 首先,在枚举定义中为每个枚举值添加一个关联值,用于表示对应的本地化字符串的键。例如:
代码语言:txt
复制
enum MyEnum {
    case value1
    case value2
    // ...
    
    var localizedKey: String {
        switch self {
        case .value1:
            return "value1"
        case .value2:
            return "value2"
        // ...
        }
    }
}
  1. 接下来,创建一个名为 LocalizedStrings 的结构体或类,用于管理所有的本地化字符串。在该结构体或类中,使用 NSLocalizedString 函数来获取本地化字符串。例如:
代码语言:txt
复制
struct LocalizedStrings {
    static func localizedString(for key: String) -> String {
        return NSLocalizedString(key, comment: "")
    }
}
  1. 现在,可以通过在枚举值上调用 localizedString 方法来获取本地化字符串。例如:
代码语言:txt
复制
let localizedValue1 = LocalizedStrings.localizedString(for: MyEnum.value1.localizedKey)

通过上述步骤,我们可以在枚举值上添加本地化,使得应用程序的界面能够根据用户的语言和地区来显示相应的字符串。

此外,腾讯云也提供了一系列的云服务和产品,可以帮助开发人员构建和部署云计算应用。具体推荐的腾讯云相关产品和产品介绍链接地址,可以参考腾讯云的官方网站:https://cloud.tencent.com/

请注意,由于要求不能提及其他流行的云计算品牌商,本答案仅介绍了 Swift 在枚举值上添加本地化的方法,并没有提及任何与云计算相关的产品或服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 苹果暂停高端 Vision 头戴设备研发| Swift 周报 issue 56

    5) 讨论在 switch case 中绑定枚举 内容概括 这个问题讨论了在 Swift 中如何在 switch 语句中绑定枚举。...作者提出了两种方法: 使用 if let 进行可选绑定,然后在 switch 语句中匹配枚举。这种方法是有效的。...作者希望在 switch 语句中直接处理可选的枚举,并在每个 case 中绑定非空。这种语法在 Swift 中是无效的,但作者想知道是否有类似的方法可以实现。...作者强调他们主要出于学术原因对这个问题感兴趣,并且关注的是如何在 case 语句内引用枚举实例,而不是具体的处理逻辑。...文章解释了扩展的基本概念及其在所谓的逆向建模中的应用,让你能在无法访问源代码的情况下,仍能为类型添加自定义功能层。通过示例展示了如何在不同情境下使用扩展,包括为类型添加新属性、实现协议及提供默认行为。

    17530

    Swift入门:枚举

    枚举(Enumerations)通常称为“ enum”,发音为“ ee-num”,是一种在Swift中定义自己的的方法。在某些编程语言中,它们只是简单的小事,但是Swift给它们增加了巨大的功能。...如果我们将其设为枚举,则意味着Swift将仅接受这五个-其他任何情况都会触发错误。在幕后,枚举通常只是简单的数字,比计算机使用的字符串要快得多。...枚举在switch / case块内特别有用,特别是因为Swift知道您的枚举可以拥有的所有,因此可以确保覆盖所有这些。...您要么为此添加一个案例,要么添加一个default:。 带有附加值的枚举 (关联枚举Swift最强大的功能之一是枚举可以具有您定义的附加值。...提示:Swift的可选参数实际是使用关联枚举实现的。有两种情况:none和some,some具有可选内的

    78120

    对iOS应用中的文本进行本地化

    对于相当数量的app来说,如果能够将UI中显示的文本进行了本地化转换,基本就完成了app的本地化工作。本文中,我们将探讨iOS开发中,如何实现显示文本的本地化工作。...代码中,order.totalQuantity对应的是Int(Swift在64位系统Int对应的为Int64),因此我们需要在键值对中使用%lld来将其进行替换。...当你尝试添加或减少饮料数量时,文本中的数量都会跟随变化。 请为你的插选择正确对应的格式说明符,比如上面的例子如果设置为%d的话将被系统认为是另一个键而无法完成转换。...实战6:戳我还是点我 根据不同的设备,在添加饮料的按钮显示不同的内容。...比如,我们可以在iphone、ipad显示 tap、在appletv显示select、在mac显示click 在Chinese中添加 image-20210624154950158 在English

    2.2K20

    窥探Swift编程之错误处理与异常抛出

    在下方错误处理中类似于switch-case语句,catch后边可以枚举匹配错误类型,具体如下所示:     ? (4)在枚举实现错误类型中我们可以通过绑定的形式为错误添加错误代码和错误原因。...在声明枚举时,我们使用了枚举元素绑定的特性(关于枚举使用的更多细节请参考之前的博客《窥探Swift之别样的枚举类型》)。...此处catch的用法与switch-case中获取枚举绑定的用法是一样的,所以在此就不做过多的赘述。具体实现方式如下代码所示: ?...2.使用结构体为错误处理添加Reason 在上面的内容中,使用枚举遵循ErrorType协议的方式定义了特定的错误类型。接下来我们将使用结构体来遵循ErrorType协议,为错误类型添加错误原因。...三、在错误处理中使用内置关键字 1.初探这些内置关键字 在Swift中提供了一些内置关键字(__FILE__, __FUNCTION__, __LINE__等)来获取上下文信息,在本篇博客的第三部分,将会给出如何在我们的错误处理中使用这些内置关键字

    2.2K50

    苹果新的编程语言 Swift 语言进阶(七)--枚举、结构、类

    这与C 语言为枚举成员分配一个整数值类似,但Swift定义的原始的类型能够是字符串、字符、或随意的整数或浮点数类型等,: enum ASCIIControlCharacter:Character...与C语言为枚举成员指定类似,Swift要求为枚举的每一个枚举成员分配的原始必须在枚举声明内唯一。...用来提供功能; 3) 能够定义一个脚本方法,用来使用脚本语法来存取它们的; 4) 可以定义初始化方法来设置它们的初始状态; 5) 可以扩展来添加�原先没有实现的功能...在Swift中,全部的结构类型都会自己主动产生一个參数初始化方法,能够使用该方法来初始化和创建结构的新的实例及其成员属性,新创建实例的属性的初始使用该初始化方法的參数传进来的: let vga...、布尔类型、字符串、数组和词典,这些类型事实都是以结构类型实现的)一样属于类型。

    1.1K20

    Swift基础 扩展

    Swift基础 - 扩展 翻译自:https://docs.swift.org/swift-book/LanguageGuide/Extensions.html 扩展为现有类、结构、枚举或协议类型添加了新功能...扩展可用于扩展现有的泛型类型,扩展通用类型中所述。您还可以扩展泛型类型以有条件地添加功能,带有通用Where子句的扩展中所述。...注意 如果您定义了一个扩展来向现有类型添加新功能,则该新功能将在该类型的所有现有实例可用,即使它们是在定义扩展之前创建的。 计算属性 扩展可以将计算实例属性和计算类型属性添加到现有类型中。...如果您将初始化器写为类型原始实现的一部分,则情况并非如此,类型的初始化委托所述。...此示例为Swift的内置Int类型添加了整数下标。

    10800

    Swift 周报 第四十一期

    @Sendable ,提高了严格并发检查的可用性。...修订SE-0192:处理未来的枚举案例[4] 自核心团队宣布对 SE-0192(处理未来枚举案例,又称为非尽事枚举)实施修改以来已经过去了五年。...换句话说,专门用于非尽事枚举的要求,即添加 @unknown 默认情况,以处理未来的枚举案例,已从 “Swift 4 中的警告/Swift 5 中的错误” 降级为 “Swift 4 中的运行时陷阱/Swift...语言指导组在考虑到 Swift 6 语言模式的计划时讨论了 SE-0192 的当前状态,并且我们宣布我们将修改该提案以: 将 Swift 6 中的警告升级为错误 为 Swift 5.x 添加一个即将推出的功能标志...模板(然后仔细阅读,以确保我找到了所有的存储属性,因为它们的声明实际可以出现在文件的任何地方)。

    23240

    Swift 中的 asyncawait

    你可以把它们(async-await)看作是Swift中最好的朋友,因为一个永远不会离开另一个,你基本可以这样说: "Await 正在等待来自他的伙伴async 的回调" 尽管这听起来很幼稚,但这并不是骗人的...执行数据请求 } } 添加异步替代方案 (Add Async Alternative) 添加异步替代重构选项确保保留旧的实现,但会添加一个可用(available) 属性: struct ImageFetcher...要做到这一点,你需要调整可用标记,如下所示: @available(*, deprecated, renamed: "fetchImages()") 你可以在我的文章如何在Swift中使用#available...在我们的例子中,这归结为用我们从最初的fetchImages`回调返回的结果来调用继续。...可以通过使属性可变或将结构体更改为引用类型(类)来修复此错误。 async-await 将是Result枚举的终点吗? 我们已经看到,异步方法取代了利用闭包回调的异步方法。

    3.5K30

    何在 SwiftUI 中使用 AccessibilityCustomContentKey 修饰符

    UserView 内的每个文本片段都对辅助技术(VoiceOver和Switch Control)可访问。这听起来很好,但它可能会通过大量数据压倒VoiceOver用户。...让我们通过向 UserView 添加一些辅助功能修饰符来稍微改进辅助功能支持。...我们还向堆栈添加了辅助功能标签,但仍然错过了其他部分。我们希望使所有数据都可访问。通常,我们使用不同的字体和颜色在视觉为文本设置优先级,但是如何在辅助技术中实现相同的影响呢?...accessibilityCustomContent 视图修饰符有三个参数:用于你的自定义内容的本地化标签,VoiceOver 用于宣布。用于呈现自定义内容的本地化标签或字符串。...Com", email: "swift.com@example.com", address: "123 Main St", age: 25) UserView(user: exampleUser

    10610

    窥探Swift之别样的枚举类型

    Swift中的枚举不仅保留了大部分编程语言中枚举的特性,同时还添加了一些好用而且实用的新特性,在本篇博客中将领略一些Swift枚举类型的魅力。   有小伙伴会问,不就是枚举么,有什么好说的。...在Swift中的枚举怎不然,Swift中的枚举的功能要强大的多,不仅可以给枚举元素绑定,而且可以给枚举元素关联多个,同时还可以通过元素的给一个枚举变量赋一个枚举,并且枚举中可以定义枚举函数。...从字面意思看是给枚举成员关联一个,没错,就是在给枚举变量赋值时,给枚举变量关联一个。在Swift中如何做的呢?...  七、枚举函数     在Swift中的枚举是可以添加函数的,有没有眼前一亮呢。...下面的代码段是在上面的关联代码的基础添加了一个描述函数,返回的就是当前枚举变量的枚举信息,如下代码段所示: 1 //枚举函数 2 enum mobileLanguageFun{ 3 case

    99970

    你用 iPhone 打王者农药,有人却用它来训练神经网络...

    这篇文章主要着眼于如何在 iOS 设备直接为 MNIST 数据集构建和训练一个 LeNet CNN 模型。...接下来,研究者将把它与基于著名的 ML 框架( TensorFlow)的经典「Python」实现方法进行比较。...在 Swift 中为 Core ML 的训练准备数据 在讨论如何在 Core ML 中创建及训练 LeNet CNN 网络之前,我们可以先看一下如何准备 MNIST 训练数据,以将其正确地 batch...在下列 Swift 代码中,训练数据的 batch 是专门为 MNIST 数据集准备的,只需将每个图像的「像素」从 0 到 255 的初始范围归一化至 0 到 1 之间的「可理解」范围即可。 ?...为 Core ML 模型(CNN)训练做准备 处理好训练数据的 batch 并将其归一化之后,现在就可以使用 SwiftCoreMLTools 库在 Swift 的 CNN Core ML 模型中进行一系列本地化准备

    2.6K20

    在多包项目中统一管理资源

    这个结构不仅允许预测性地加载代码和资源,同时也支持类似于本地化这样的系统性特性。Bundle 在存储以目录的形式存在,在代码中则需要通过 Foundation 框架中的 Bundle 类来体现。...之所以强调任何状态,是因为,Swift 会视项目的编译需求而将 Bundle 放置在不同的目录层级( 例如单独编译 SPM Target 、在 SPM 中进行 Preview、在 Xcode 工程中引入...实践本节,我们将通过一个具体案例来演示如何在一个拥有多个包的 Xcode 项目中统一管理资源。可以在 此处[4]获得项目代码。...I18NResource在 Target 对应的目录下创建 Resources 目录修改 Package.swift添加 defaultLocalization: "en", 启用本地化支持在 I18NResource.swift...添加资源文件image-20221106182644181PackageA修改 Package.swift添加 defaultLocalization: "en", 在 Package 的 dependencies

    1.5K20

    一篇搞定swift详细语言教程 swift学习攻略总结

    如何学习: 掌握Swift中的基本数据类型,整数(Int、UInt)、浮点数(Float、Double)、布尔(Bool)和字符串(String)等。...六、枚举与结构体 重点详细内容知识点总结: 枚举和结构体是Swift中用于构建数据模型的基本构建单元。枚举用于定义一组相关的,而结构体则用于组合多个不同类型的。...类、结构体或枚举可以遵循一个或多个协议,表明它们可以响应协议中定义的方法。扩展允许你为现有的类、结构体或枚举添加新的功能,而无需修改它们的原始定义。 如何学习: 理解协议的基本概念和用法。...学习如何使用扩展为现有类型添加新功能。 通过编写代码练习协议与扩展的使用。...学习Swift中的并发编程模型,Grand Central Dispatch(GCD)和Operation Queue。 通过编写代码练习并发编程的使用。

    10210

    Encoding and Decoding Custom Types

    Swift标准库定义了数据编码和解码的标准化方法。 您可以通过在自定义类型实现Encodable和Decodable协议来使用此方法。...这些类型包括标准库类型,String,Int和Double; 和基础类型,日期,数据和URL。...如果序列化数据格式中使用的键与数据类型中的属性名称不匹配,请通过将String指定为CodingKeys枚举的原始类型来提供备用键。用作每个枚举情况的原始的字符串是在编码和解码期间使用的键名。...case名称与其原始之间的关联使您可以根据Swift API设计指南命名数据结构,而不必匹配您正在建模的序列化格式的名称,标点符号和大小写。...Coordinate实例的两个属性使用Swift标准库提供的键控容器API进行初始化。

    1.9K40

    使用 key paths 创建自定义查询函数

    前言 作为一个相当严格,静态编译的语言,Swift 可能不会在语法自定义方面提供许多渠道,但这实际确正好相反。...通过如何在 Swift 中自定义操作符,Swift 中 key paths 的能力,函数/结果构建器 等功能,我们有很多机会为特定用例进行调整 Swift 的语法。...$0.isRead } 这肯定不是一个大问题,但如果上述操作是我们在代码的许多不同地方上演的东西,那么我们可能会开始问自己:“如果我们也可以使用否定的布尔的 key paths 语法会不会更好?...该属性,类别的类型目前被定义为如下所示的枚举: extension Article { enum Category { case fullLength case...操作符一样,我们也可以用 == 运算符进行同样的事情,我们将返回一个返回 Bool 的闭包,然后可以直接传递给筛选器( filter 过滤器): func ==(lhs

    2K30

    iOS 多国语言本地化与App内语言切换(Swift)写在前面前言准备工作storyboardxib本地化纯代码本地化语言切换后记

    storyboard/xib本地化 纯代码本地化 语言切换 准备工作 项目中添加语言 ?...storyboard/xib本地化 storyboard/xib做本地化Xcode基本是一键搞定了。...纯代码本地化 创建string文件 ? ? 勾选语言,把几种全部勾上,包括Base (为下文使用脚本生成代码做准备) 参考此篇文章进行脚本添加 iOS中多语言本地化流程的优化 ?...,基本介绍本地化的教程都会有。...,是不是很简单呢~~ 后记 对于普通的小项目本地化的内容其实远没有那么复杂,需要替换的内容也很少,只要添加过一次语言,再添加新语言就非常简单了。

    2.4K31
    领券