Почему локализация / интернационализация строк не работает в SwiftUI? - PullRequest
1 голос
/ 26 мая 2020

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

  Text(self.model.stringValue)

где .stringValue = "dist", и я создал Localized.strings и добавил ссылку

  "dist" = "the distance";

В документации сказано, что текстовые представления автоматически интерпретируют строки как ключи локализации и ищут их для вас:

 Text("pencil") // Searches the default table in the main bundle.

Я щелкнул «Локализовать» в файле строк и добавил языки в файл проекта и такие ответы говорят, что он должен просто работать: Как реализовать локализацию в Swift UI

Но вместо этого он просто отображает «dist» вместо правильной локализованной строки. Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Вы можете сделать его встроенным, как

Text(LocalizedStringKey(self.model.stringValue))
0 голосов
/ 26 мая 2020

Оказывается, строка в Text («карандаш») интерпретируется как ключ локализации, только если вы передаете ее как литерал . Если вы передадите переменную типа String, этого не произойдет. Вместо этого нужно объявить переменную типа LocalizedStringKey.

  Text("dist") //-> implicitly treats string literal as a key; looks up and displays "the distance"
  let cap1:String = "dist"
  Text(cap1)   //-> no lookup for explicit String variable; just displays "dist"
  let cap2:LocalizedStringKey = "dist"
  Text(cap2)   //-> looks up explicit LocalizedStringKey value; displays "the distance"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...