Перейти к основному содержимому

Выбор языка устройства

Задайте язык интерфейса подключённого устройства. В SDK доступные языки представлены перечислением DeviceLanguage.

Предварительные условия

Перед выбором языка устройства убедитесь, что:

  • Устройство подключено и находится в стабильном состоянии.
  • Устройство поддерживает протокол DeviceInfoAPI.
  • Выбранный язык присутствует в списке supportedLanguages устройства.

Справочник API

Фреймворк

AIBuds.xcframework

Импорт

В файлах, где используется SDK, импортируйте основной фреймворк:

Swift
import AIBuds

Протокол

Метод setDeviceLanguage объявлен в DeviceInfoAPI. Этот протокол наследуется от базового протокола API устройства.

Swift
protocol DeviceInfoAPI: DeviceAPI {
    /// Current language setting of the device.
    var languageSetting: DeviceLanguage { get }

    /// List of languages supported by the device, each element is an
    /// `NSNumber` wrapping the raw value of `DeviceLanguage`.
    var supportedLanguages: [NSNumber] { get }

    /// Sets the device language.
    /// - Parameters:
    ///   - language: The target language to set.
    ///   - completion: A closure that is called when the operation completes.
    ///     - success: `true` if the operation was successful; otherwise `false`.
    ///     - error: An `NSError` object that describes the error that occurred, or `nil` if the operation was successful.
    func setDeviceLanguage(
        _ language: DeviceLanguage,
        completion: AIBudsCompletionHandler?
    )
}

Метод экземпляра

Устанавливает поддерживаемое значение DeviceLanguage в качестве языка устройства.

Swift
/// Sets the device language.
/// - Parameters:
///   - language: The target language to set.
///   - completion: A closure that is called when the operation completes.
///     - success: `true` if the operation was successful; otherwise `false`.
///     - error: An `NSError` object that describes the error that occurred, or `nil` if the operation was successful.
func setDeviceLanguage(
    _ language: DeviceLanguage,
    completion: AIBudsCompletionHandler?
)

Параметры

ПараметрТипОписание
languageDeviceLanguage / AIBudsDeviceLanguageЯзык, который нужно установить.
completionAIBudsCompletionHandler?Необязательный обработчик, вызываемый после завершения операции.

Параметры обратного вызова:

ИмяТипОписание
successBool / BOOLtrue, если операция выполнена успешно; иначе false.
errorNSError?Сведения об ошибке при неудачной операции; иначе nil.

Возвращаемое значение

Метод не возвращает значение напрямую. Результат передаётся обработчику завершения.

Примеры использования

Swift
import AIBuds

final class DeviceManager {
    weak var device: DeviceConvertible?

    func setDeviceLanguage(_ language: DeviceLanguage) {
        guard let device = device as? DeviceInfoAPI else {
            print("Device does not support language settings")
            return
        }

        let isSupported = device.supportedLanguages.contains {
            $0.intValue == language.rawValue
        }
        guard isSupported else {
            print("The selected language is not supported by this device")
            return
        }

        device.setDeviceLanguage(language) { success, error in
            if !success {
                print("Failed to set language: \(error?.localizedDescription ?? "Unknown error")")
                return
            }

            print("Device language set successfully")
        }
    }
}

Обработка ошибок

  1. Считайте язык изменённым только после проверки success.
  2. Если операция не выполнена, сведения о причине доступны в error.
  3. Не отправляйте команду с неподдерживаемым значением.
  4. Не полагайтесь на конкретный код ошибки, если он не задокументирован для данного устройства.

Рекомендации

  1. Используйте перечисление SDK: передавайте значение DeviceLanguage, а не строку с кодом языка ISO.
  2. Проверяйте поддерживаемые языки: перед вызовом метода сопоставьте исходное значение перечисления со списком supportedLanguages.
  3. Проверяйте соответствие протоколу: убедитесь, что устройство поддерживает DeviceInfoAPI.
  4. Обновляйте UI в главной очереди: выполняйте вызванные завершением обновления UIKit в главной очереди.

Примечания

  • supportedLanguages содержит значения NSNumber, оборачивающие исходные значения DeviceLanguage.
  • languageSetting содержит текущую языковую настройку устройства.
  • Набор поддерживаемых языков зависит от модели устройства и версии прошивки.
  • В Demo SDK устанавливается AIBudsDeviceLanguageEnglish; в рабочем приложении выбирайте значение из списка, объявленного устройством.