Applanga SwiftUI SDK for iOS 本地化
版本 2.0.177
变更日志: https://www.applanga.com/changelog/ios
目录
自动推送通知本地化和 InfoPlist.strings
安装
CocoaPods [?]
-
请参阅 CocoaPod 的 入门指南 以获取有关 CocoaPod 的详细说明。
-
在创建完您的 Podfile 后,添加以下代码行:
pod 'ApplangaSwiftUI'
,要在 UI 测试期间执行截图,请在您的 UI 测试目标中添加pod 'ApplangaUITest'
。 -
这样操作后,请从命令行重新运行 pod install。
Swift Package Manager [?]
注意:此功能仅在 Xcode 12+ 版本中受支持
1: 仅需将 https://github.com/applanga/sdk-swiftui 的 repo url 添加为 swift package 依赖项,并选择最新版本标签
配置
请参阅 https://www.applanga.com/docs/integration-documentation/ios#configuration
使用
基本
请参阅: https://www.applanga.com/docs/integration-documentation/ios#configuration
扩展
-
代码本地化
为了在您的应用中全局启用本地化,在创建 App 对象之前添加以下行
import ApplangaSwiftUI @main struct SomeApp: App { }
无需在每个 View 文件中添加导入
1.1 字符串
通过传递 Applanga 控制台键名作为参数,可以正常创建 SwiftUI 组件
Text("text_title1") TextField("text_field_title1", text: $text, axis: .horizontal) Button("button_title1") {}
该键将自动由 SDK 本地化
1.2 LocalizedStringKey
应将所有现有的 LocalizedStringKey 用法转换为 ApplangaLocalizedStringKey,以便使用 SDK 进行本地化。为了在单处轻松执行操作,请在创建 App 对象之前添加以下行
typealias LocalizedStringKey = ApplangaLocalizedStringKey @main struct SomeApp: App { }
现在不需要进行任何其他代码更改,以下示例也将被本地化
Text(LocalizedStringKey("text_title1")) Toggle(LocalizedStringKey("text_title2"), isOn: $toggle) Label(ApplangaLocalizedStringKey("text_title3"))
1.3 字符串插值
字符串插值与 SDK 兼容,与 SwifUI 生成本地化键的方式相同。以下示例显示了在创建组件时从仪表板获取了哪些键
1.3a 必需的键是:
text_interpolation%lld
,本地化值将与5
格式化let number = 5 Text("text_interpolation\(number)")
1.3b 必需的键是:
text_interpolation%.2f
,本地化值将与55.00
格式化let number = 55.0 TextField("text_interpolation\(number, specifier: "%.2f")", text: $text)
1.3c 必需的键是:
text_interpolation_%@_1
,本地化值将与SomeText
格式化let textValue = "SomeText" TextField("text_interpolation_\(textValue)_1", text: $text)
1.3d 必需的键是:
text_interpolation_%@_%@
,本地化值将依次格式化为PositionValue1
后跟PositionValue2
let positionValue1 = "PositionValue1" let positionValue2 = "PositionValue2" TextField("text_interpolation_\(positionValue1)_\(positionValue2)_1", text: $text)
位置格式可以在翻译本身中提供,例如,通过将本地化值设置为:
Text Interpolation Pos2 %2$@ Pos 1 %1$@
1.4 富文本字符串
1.4a 当创建 SwiftUI 组件时,使用具有
localized
作为第一个参数的 AttributedString 的 init 方法(支持所有变体)Text(AttributedString(localized: "text_attributed1", options: options, including: scope))
本地化值可以包含所有原生支持的属性
1.4b 当使用 String.LocalizationValue 创建文本属性字符串时,需要将其转换为 String.ApplangaLocalizationValue 以在创建 App 对象之前轻松完成,请添加以下行:
extension String { typealias LocalizationValue = ApplangaLocalizationValue } @main struct SomeApp: App { }
Text(AttributedString(localized: String.LocalizationValue("text_attributed4"), options: options, including: scope))
1.4c 文本属性字符串也支持插值和格式参数,就像先前描述的正常字符串一样。在下面的例子中,所需的关键字是:
text_attributed%lld
,本地化值将使用1
进行格式化let count: Int = 1 Text(AttributedString(localized: "text_attributed\(count)", options: options, including: scope))
-
更新内容
要触发更新调用
@main struct SomeApp: App { var body: some Scene { WindowGroup { ZStack { } .onAppear { Applanga.update { success in } } } } }
-
更改语言
请参见 https://www.applanga.com/docs/integration-documentation/ios#usage
-
截图捕获
使用 SwiftUI 对您的翻译进行截图的最佳方法是按照在 UITests 中自动执行中所述的方法进行截图。
要启用收集 SwiftUI 屏幕上的文本位置的收集,您需要启用 applanga ID 模式,这意味着每个字符串都将通过其 ID 显示,而不是通过其本地化。这是将正确 ID 与其位置精确链接的唯一方法。要启用 applanga 显示 ID 模式,请将参数传递给您的 ApplangaUITest 实例。
let app = XCUIApplication() let applangaUITest = ApplangaUITest(app: app, enableShowIdMode: true) app.launch()
一个良好的做法是在启用显示 ID 模式的情况下一次性捕获所有截图,然后再捕获所有不带显示 ID 模式的截图。然后,所有截图都已将正确的翻译链接到它们,并且您仍然可以看到包含实际翻译的截图。