Локализуемый enum в swift с использованием библиотеки R.Swift - PullRequest
0 голосов
/ 03 мая 2019

У меня есть такие перечисления:

enum Gender {
    case male
    case female

    func toString() -> String {
        switch self {
        case .male:
            return R.string.localizable.male()
        case .female:
            return R.string.localizable.female()
        }
    }
}

enum Relationship {
    case mother
    case father
    case son
    case daughter
    case brother
    case sister
    case grandmother
    case grandfather
    case grandson
    case granddaugther
    case aunt
    case uncle
    case cousin
    case stepsister
    case stepbrother
    case grandgrandmother
    case grandgrandfather
    case other
}

Есть ли более простой способ локализовать значения строки перечисления?Для маленьких перечислений, таких как first, это не проблема, но для более длинных, как второй, это будет содержать гораздо больше строк кода.

Может быть, есть какой-то более простой способ создания локализуемого описания строки в таком случае?

Я пробовал также:

enum Gender: String {
    case male = R.string.localizable.male()
    case female
}

, но это приводит к ошибке компилятора (это требуетпростой буквальный здесь)

1 Ответ

0 голосов
/ 03 мая 2019

Приведение перечисления в соответствие RawRepresentable является подходящим способом, просто локализуйте необработанное значение

enum Gender : String {
    case male
    case female

    var localizedString : String {
       return NSLocalizedString(self.rawValue, comment: "")
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...