Локализация Swiftui показывает необработанные ключи и «не может преобразовать значение типа« строки »в« локализованный сIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Локализация Swiftui показывает необработанные ключи и «не может преобразовать значение типа« строки »в« локализованный с

Сообщение Anonymous »

Я локазую приложение Swiftui (английский/испанский). Большая часть приложения работает, но в один конкретный вид (

Код: Выделить всё

TrackingSecondView
) Я либо вижу клавиши необработанных локализации (например, rack_title ) во время выполнения, либо я получаю ошибки времени компиляции, такие как:

Код: Выделить всё

Cannot convert value of type 'String' to expected argument type 'LocalizedStringKey'
Cannot convert value of type 'String' to expected argument type 'String.LocalizationValue'

использует помощник, который возвращает строку :

Код: Выделить всё

private func localizedText(_ key: String) -> String {
NSLocalizedString(key, comment: "")
}
< /code>
, а затем я передаю этот результат в элементы Swiftui, например ,::
Text(localizedText("track_title"))
TextField(localizedText("tf_tracking_placeholder"), text: $trackingNumber)

Label(localizedText("share_app"), systemImage: "square.and.arrow.up")
.accessibilityLabel(localizedText("open_menu"))
< /code>
У меня также есть несколько строк /карт, которые отображают текст API (динамические строки) и несколько локализации запасных отступлений.Localizable.strings
существует в en.lproj и es.lproj , с допустимым синтаксисом (

Код: Выделить всё

"key" = "value";< /code>) и [b] целевое членство < /strong> включено. < /p>
< /li>
[*]  Файл корректируется (я ранее видел это, теперь исправлено):

NSCocoaErrorDomain Code=264 "…text encoding of its contents can’t be determined"
после повторного залегания как UTF-16 [/b] (или UTF-8 с BOM) и очистка папки сборки, другие части приложения локализуют штраф. /> воспроизводит на ios 18.1 Simulator и на Real Device .


, что все еще происходит в этом одном представлении
  • , если я передаю строку

    , если я прохожу. В определенные инициализаторы Swiftui (например, метка (_: SystemImage :) , некоторые текстовые залы Подсказки, доступность lockelbel (_ :) ) Я получаю ошибку с компиляцией времени, потому что эти инициализаторы ожидают локализованного строки (или string.localizationValue ) , не string>. /> < /li>
    Если я изменяю их на простые строковые литералы, он компилируется, но все еще показывает необработанные ключи во время выполнения, если я не использую правильный инициализатор. /> несоответствие типа инициализатора : некоторые API swiftui (например, метка (_: systemimage :) , text (_ ключ: локализованный источник) , acvactibuithlabel (_ :) ) ожидайте

    Код: Выделить всё

    LocalizedStringKey
    [/b], а не строка . Передача строки из nslocalizedstring достигает этих ошибок «не может…»

    Код: Выделить всё

    Label(LocalizedStringKey("share_app"), systemImage: "square.and.arrow.up")
    Text(LocalizedStringKey("track_title"))
    TextField("", text: $trackingNumber, prompt: Text(LocalizedStringKey("tf_tracking_placeholder")))
    .accessibilityLabel(Text(LocalizedStringKey("open_menu")))
    
    < /code>
    < /li>
      или определить крошечного помощника: < /p>
    private func L(_ key: String) -> LocalizedStringKey { LocalizedStringKey(key) }
    // then:
    Label(L("share_app"), systemImage: "square.and.arrow.up")
    
    
  • для dynamic (не ключ) Strings, используйте текст (vorbatim :) или создайте текст из строки среды и избегайте локализованного стрки .

/> кодирование файлов строк (теперь исправлено): ранее файлы .strings не были читаемыми (code = 264). Это вызывает nslocalizedString /

Код: Выделить всё

LocalizedStringKey
, чтобы показать необработанные ключи во время выполнения. После переработки с помощью достоверного кодирования и очистки большинство представлений разрешалось, но в этом представлении все еще была описанная выше задача типового несоответствия./

Код: Выделить всё

TextField
, которые ожидают LocalizedStringKey ? Рекомендуемый подход к Always Pass LocalizedStringKey к этим инициализаторам (и используйте текст (Vorbatim :) для динамических строк), или есть лучший шаблон, чтобы сохранить вещи в приложении?>

Подробнее здесь: https://stackoverflow.com/questions/797 ... e-string-t
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»