ApplangaSwiftUI 2.0.195

ApplangaSwiftUI 2.0.195

Applanga 维护。



  • Mbaas Development GmbH

Applanga SwiftUI SDK for iOS 本地化


版本 2.0.177

网站: https://www.applanga.com

变更日志: https://www.applanga.com/changelog/ios


目录

  1. 安装
  2. 配置
  3. 使用

自动推送通知本地化和 InfoPlist.strings

安装

CocoaPods [?]

  1. 请参阅 CocoaPod 的 入门指南 以获取有关 CocoaPod 的详细说明。

  2. 在创建完您的 Podfile 后,添加以下代码行: pod 'ApplangaSwiftUI',要在 UI 测试期间执行截图,请在您的 UI 测试目标中添加 pod 'ApplangaUITest'

  3. 这样操作后,请从命令行重新运行 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

扩展

  1. 代码本地化

    为了在您的应用中全局启用本地化,在创建 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))
  2. 更新内容

    要触发更新调用

    @main
    struct SomeApp: App {
    	var body: some Scene {
        	WindowGroup {
            	ZStack {
    			}
    			.onAppear {
    				Applanga.update { success in
    				}
    			}
    		}
    	}
    }
  3. 更改语言

    请参见 https://www.applanga.com/docs/integration-documentation/ios#usage

  4. 截图捕获

    使用 SwiftUI 对您的翻译进行截图的最佳方法是按照在 UITests 中自动执行中所述的方法进行截图。

    要启用收集 SwiftUI 屏幕上的文本位置的收集,您需要启用 applanga ID 模式,这意味着每个字符串都将通过其 ID 显示,而不是通过其本地化。这是将正确 ID 与其位置精确链接的唯一方法。要启用 applanga 显示 ID 模式,请将参数传递给您的 ApplangaUITest 实例。

    	let app = XCUIApplication()
    	let applangaUITest = ApplangaUITest(app: app, enableShowIdMode: true)
    	app.launch()

    一个良好的做法是在启用显示 ID 模式的情况下一次性捕获所有截图,然后再捕获所有不带显示 ID 模式的截图。然后,所有截图都已将正确的翻译链接到它们,并且您仍然可以看到包含实际翻译的截图。