Localizable.strings работает для String, но не для Double и Integer 32

Как новичок в Swift, я пытаюсь локализовать простой проект SwiftUI и Core Data на Github:

Я добавил в свой проект следующий файл en.lproj / Localizable.strings :

      "elo-rating %@" = "Elo rating: %@";
"avg-time %@" = "Average time: %@";
"avg-score %@" = "Average score: %@";

И в моем пользовательском SwiftUI View TopRow.swift я пытаюсь использовать указанные выше 3 ключа:

      struct TopRow: View {
    let topEntity:TopEntity
    
    var body: some View {
        HStack {
            DownloadImage(url: topEntity.photo ?? "TODO")
                .frame(width: 60, height: 60)
            Spacer()
            Text(topEntity.given ?? "Unknown Person")
                .frame(minWidth: 60, maxWidth: .infinity, alignment: .leading)
            Spacer()
            VStack {
                Text("elo-rating \(topEntity.elo)")
                Text("avg-time \(topEntity.avg_time ?? "")")
                Text("avg-score \(topEntity.avg_score)")
            }.fixedSize(horizontal: true, vertical: false)
        }.font(.footnote)
    }
}

Однако правильно локализован только средний текст со средним временем:

Я также безуспешно пробовал следующие строки:

      "elo-rating %@" = "Elo rating: %ld";
"elo-rating %ld" = "Elo rating: %ld";
"elo-rating %lld" = "Elo rating: %lld";

Просто не работает :-) Помогите, пожалуйста, найти мою ошибку.

1 ответ

Решение

Использовать только . %d для целочисленного типа

      "elo-rating %d" = "Elo rating: %d";

Для среднего балла используйте %lf.

      "avg-score %lf" = "Average score: %lf";
Другие вопросы по тегам