跳到主要内容
版本:v1.2.5

支持语言

支持语言接口​

获取语言列表(推荐)​

获取在线 / 离线翻译当前支持的语言列表,用于驱动语言选择 UI。两个接口都依赖 sdkInit(_:)、不依赖鉴权,内部带磁盘快照缓存:网络失败或服务端无增量时回退本地缓存。

@discardableResult
public func getOnlineSupportedLanguages(
version: String? = nil,
_ callback: @escaping (Result<TmkLocaleListResponse, TmkTranslationError>) -> Void
) -> TmkSDKCancellable?

@discardableResult
public func getOfflineSupportedLanguages(
version: String? = nil,
_ callback: @escaping (Result<TmkLocaleListResponse, TmkTranslationError>) -> Void
) -> TmkSDKCancellable?

参数说明:

参数必填说明
version否本地缓存版本号;不传时优先复用 SDK 已保存的版本号发起增量请求。
callback是完成回调,主线程触发;成功返回 TmkLocaleListResponse,失败返回统一 TmkTranslationError。

返回值:TmkSDKCancellable?,可取消的请求句柄;创建失败时可能为 nil。

数据模型:

public struct TmkLocaleListResponse: Equatable, Codable {
public let version: String? // 服务端配置版本号
public let languages: [TmkLocaleLanguage]
public var localeOptions: [TmkLocaleItem] // 展平并按 code 去重,可直接用于语言选择 UI
}

public struct TmkLocaleLanguage: Equatable, Codable {
public let code: String // 语言编码,例如 en
public let displayName: String // 语言展示名称,例如 英语
public let locales: [TmkLocaleItem] // 该语言下的地区/口音;离线配置可为空
}

public struct TmkLocaleItem: Equatable, Codable {
public let code: String // 地区/口音编码,例如 en-US
public let displayName: String // 地区/口音展示名称,例如 美国
}

localeOptions 会按 code 去重并保留首次出现顺序:服务端可能把同一 code(如粤语 zh-HK)下发在多个语言分组下,去重后避免 UI 出现重复选项。

示例:

// 在线语言列表
_ = TmkTranslationSDK.shared.getOnlineSupportedLanguages { result in
switch result {
case .success(let response):
print(response.version ?? "-")
print(response.localeOptions.map { "\($0.displayName)(\($0.code))" })
case .failure(let error):
print(error.message)
}
}

// 离线语言列表
_ = TmkTranslationSDK.shared.getOfflineSupportedLanguages { result in
if case .success(let response) = result {
print(response.localeOptions.map(\.code))
}
}