Как я могу заказать в алфавитном порядке мои значения LocalizedStringKey? - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть список стран, которые возвращают isoCodes, dialCodes и имена. При выводе isoCodes и dialCodes это работает хорошо, потому что они являются строковыми значениями. Но когда я пытаюсь сопоставить LocalizeStringKey имен и располагать их в алфавитном порядке, ключи устанавливаются только по порядку, но не по переводу, что является проблемой.

Как я могу получить свое перечисление названия стран, заданные как LocalizedStringKey, в алфавитном порядке с использованием SwiftUI?

Это то, что я пытаюсь сделать ...

Способ, которым я пытаюсь отобразить в правильном порядке названия стран в моих файлах: (Только получая локализованный ключ по порядку)

let countries = Country.allCases.map { $0 }

Enum моей страны enum:

import SwiftUI

// MARK: Country ISO3166 definition
enum Country: String, CaseIterable {

  case ad
  case ae
  case af
  case ag
  case ai
  case al
}

Имя моей страны установлено в качестве переменной:

// MARK: Country named from localized CountryString
extension Country {

  var name: CountryString {

    switch self {
    case .ad: return .andorra
    case .ae: return .unitedArabEmirates
    case .af: return .afghanistan
    case .ag: return .antiguaBarbuda
    case .ai: return .anguilla
    case .al: return .albania
   }
}

Мой перечисление CountryString, в котором задан localizedStringKey:

// MARK: Country string name
enum CountryString: LocalizedStringKey {

  case andorra
  case unitedArabEmirates
  case afghanistan
  case antiguaBarbuda
  case anguilla
  case albania
}

Мои переводы:

// MARK: - CountryString
"andorra" = "Andorra";
"unitedArabEmirates" = "United Arab Emirates";
"afghanistan" = "Afghanistan";
"antiguaBarbuda" = "Antiga & Barbuda";
"anguilla" = "Anguilla";
"albania" = "Albania";

1 Ответ

0 голосов
/ 14 апреля 2020

Вы можете использовать интерполяцию строк, например:

let countries = Country.allCases.map { $0 }

let cname = countries[x].name

let tname = NSLocalizedString("\(cname)", comment: "xxxx")

, а затем отсортировать их в алфавитном порядке по переведенному имени.

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