支持语言
支持语言接口
获取语言列表(推荐)
获取在线 / 离线翻译当前支持的语言列表,用于驱动语言选择 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-US或zh。
- locale 代码,例如
-
nativeAccent/nativeLang- 原生展示名称。
-
uiAccent/uiLang- 当前 UI 语言下的展示名称。