Как написать расширение для всех констант структуры? - PullRequest
0 голосов
/ 31 мая 2018

У меня есть структура Localization, которая помогает управлять локальными ключами.

struct Localization {

//Home
static let HomeHeader         =   "Home_Header"
static let HomeStatusActive   =   "Home_Status_Active"
static let HomeStatusDelayed  =   "Home_Status_Delayed"
}

Кроме того, у меня есть расширение строки, которое названо как local, чтобы дать мне ключ из файла Localizable.strings.

extension String {
    var local : String {
        return LocalizationManager.getLocalizedString(key: self)
    }
}

Поэтому, когда мне нужен ключ локализации, я использую его так:

titleLabel.text = Localization.HomeHeader.local

Мой вопрос;Есть ли способ выполнить расширение для использования на каждой константе структуры без вызова .local каждый раз?

В принципе, я хочу позвонить, как показано ниже;

titleLabel.text = Localization.HomeHeader

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Чтобы внести минимальные изменения в то, что вы реализовали до сих пор.Вы можете просто добавить local после строковых значений.

struct Localization {

    //Home
    static let HomeHeader         =   "Home_Header".local
    static let HomeStatusActive   =   "Home_Status_Active".local
    static let HomeStatusDelayed  =   "Home_Status_Delayed".local
}

extension String {
    var local : String {
        return LocalizationManager.getLocalizedString(key: self)
    }
}

Тогда вы сможете использовать его как:

titleLabel.text = Localization.HomeHeader
0 голосов
/ 31 мая 2018

Пожалуйста, отметьте ниже, может быть полезно для вас

Вы можете хранить всю локализованную строку в одном месте

struct ConstantsLocalized {
    static var key_loading: String {
        return "key_loading".localized()
    }
    static var key_placeholder_email: String {
        return "key_placeholder_email".localized()
    }
}

И вы можете получить к ней доступ с помощью ConstantsLocalized.key_loading

РЕДАКТИРОВАТЬ

Мне нужно добавить еще одно преимущество с этим методом: если у вас есть в локализации приложения означает, что пользователь может изменить язык из приложения самостоятельно, то это лучшее решение, потому что вы можете получитьлокализуйте строку каждый раз

Надеюсь, это полезно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...