Skip to main content
Version: Next

支持语言

支持语言接口

获取语言列表(推荐)

获取在线 / 离线翻译当前支持的语言列表,用于驱动语言选择 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))
}
}

TmkSupportedLanguagesSource(旧接口,已废弃)

public enum TmkSupportedLanguagesSource: Equatable {
case online
case offline
}

含义:

  • .online:获取在线翻译支持的语言列表。

  • .offline:获取离线翻译支持的语言列表。

getSupportedLanguages(source:version:uiLocales:_:)(已废弃)

该接口已标记 @available(*, deprecated),请改用 6.1 的 getOnlineSupportedLanguages / getOfflineSupportedLanguages。以下保留用于历史接入参考。

@available(*, deprecated)
public func getSupportedLanguages(
source: TmkSupportedLanguagesSource,
version: String? = nil,
uiLocales: [String] = [],
_ callback: @escaping (Result<TmkSupportedLanguagesResponse, TmkTranslationError>) -> Void
) -> TmkSDKCancellable?

参数说明:

  • source

    • 语言列表类型,必填。

    • .online 表示在线翻译支持语言。

    • .offline 表示离线翻译支持语言。

  • version

    • 可选,本地缓存版本号。

    • 在线模式下,若不传,SDK 会优先复用已缓存的版本号发起增量请求。

  • uiLocales

    • 可选 UI 语言列表。

    • 用于控制返回的语言展示名称,例如优先显示中文名称。

  • callback

    • 完成回调。

返回值:

  • TmkSDKCancellable?

    • 可取消的请求句柄。

    • 若创建失败可能返回 nil

行为说明:

在线语言列表

  • 不依赖鉴权;完成 sdkInit(_:) 后即可请求。

  • 依赖网络可用;若当前无网络,在线语言列表请求会失败。

  • SDK 会根据 version 尝试返回最新语言列表;当本次没有新的语言列表时,会优先返回本地已保存的列表。

  • 如果本次获取失败,但本地已有可用语言列表,SDK 会优先返回本地列表;没有可用列表时才回调错误。

离线语言列表

  • 不依赖鉴权。

  • uiLocales 为空,或包含 zh 前缀时,离线语言名优先显示中文;否则显示原生语言名。

  • 当前支持的离线语言如下:

语言code说明
中文zh简体中文离线语言码
英语en英语离线语言码
日语ja日语离线语言码
韩语ko韩语离线语言码
法语fr法语离线语言码
西班牙语es西班牙语离线语言码
俄语ru俄语离线语言码
德语de德语离线语言码
意大利语it意大利语离线语言码
阿拉伯语ar阿拉伯语离线语言码
泰语th泰语离线语言码

示例:

// 在线语言列表
_ = TmkTranslationSDK.shared.getSupportedLanguages(source: .online,
uiLocales: ["zh-CN"]) { result in
switch result {
case .success(let response):
print(response.version ?? "-")
print(response.localeOptions.map(\.code))
case .failure(let error):
print(error.message)
}
}

// 离线语言列表
_ = TmkTranslationSDK.shared.getSupportedLanguages(source: .offline,
uiLocales: ["zh-CN"]) { result in
switch result {
case .success(let response):
print(response.localeOptions.map { "\($0.uiLang)(\($0.code))" })
case .failure(let error):
print(error.message)
}
}

旧语言模型(配合 6.3 废弃接口)

TmkSupportedLanguagesResponse

public struct TmkSupportedLanguagesResponse {
public let version: String?
public let languages: [TmkSupportedLanguage]
public var localeOptions: [TmkSupportedLocale]
}

字段说明:

  • version

    • 语言配置版本号。
  • languages

    • 按语言分组后的列表。
  • localeOptions

    • 展平后的 locale 列表,适合直接用于语言选择 UI。

TmkSupportedLanguage

public struct TmkSupportedLanguage {
public let code: String
public let locales: [TmkSupportedLocale]
public let nativeAccent: String
public let nativeLang: String
public let uiAccent: String
public let uiLang: String
}

字段说明:

  • code

    • 语言代码,例如 en
  • locales

    • 该语言下可选 locale 列表。
  • nativeAccent / nativeLang

    • 原生展示名称。
  • uiAccent / uiLang

    • 当前 UI 语言下的展示名称。

TmkSupportedLocale

public struct TmkSupportedLocale {
public let code: String
public let nativeAccent: String
public let nativeLang: String
public let uiAccent: String
public let uiLang: String
}

字段说明:

  • code

    • locale 代码,例如 en-USzh
  • nativeAccent / nativeLang

    • 原生展示名称。
  • uiAccent / uiLang

    • 当前 UI 语言下的展示名称。