Строки файла Localizable.strings (Base), не прочитанные другим языком, установленным в iPhone? - PullRequest
0 голосов
/ 11 сентября 2018

Я реализовал многоязычный в своем приложении и создал несколько Localizable.strings файлов.

enter image description here

У меня есть ключ и значение всех строк в файле Localizable.strings (Base), так как его файл по умолчанию считывается со всех других языков, если в файле строки конкретного языка отсутствует строка, например, Localizable.strings (Japanese) и некоторые строки отсутствуют в файле Japanese, поэтому я ожидаю получить перевод строки из Base.

Но этого не происходит, это моя проблема.

Ответы [ 3 ]

0 голосов
/ 11 сентября 2018

Нет, Базовый файл локализации используется, когда нет конкретной локализованной версии доступного файла. Например, если ваше приложение имеет базовую локализацию на английском языке, и вы добавляете французскую локализацию, языки, отличные от французского, будутполучить английские значения.

Документация для NSLocalizedString(key,comment) довольно ясна -

Начальное значение key в файле строк будет key.Используйте макрос NSLocalizedStringWithDefaultValue, чтобы указать другое значение для ключа.

Что еще вы ожидаете от него?Код просто ищет ключ в словаре.Он не знает, какое сообщение связано с ключом, не говоря уже о том, как перевести это сообщение на русский язык.

0 голосов
/ 11 сентября 2018

Я столкнулся с той же проблемой и применил это решение:

  1. Создать новый файл локализации по умолчанию для английского языка (DefaultEnglish.strings) Например: "hello_key" = "Hello"
  2. Добавить поддержку других языковв Localizable.strings файл Например: японская строка: "hello_key" = "こんにちは"

enter image description here

Создать строку extension

extension String {

func localizedStringKey(bundle _: Bundle = .main, tableName: String = "Localizable") -> String {
    return NSLocalizedString(self, tableName: tableName, value: "\(NSLocalizedString(self, tableName: "DefaultEnglish", bundle: .main, value: self, comment: ""))", comment: "")
}     }

и установить строку "hello_key".localizedStringKey()

0 голосов
/ 11 сентября 2018

При локализации приложения нет необходимости использовать файл Base Localizable.strings.

Локализуйте свои строки следующим образом ...

NSLocalizedString("DISMISS_BUTTON", value: "Press To Dismiss", comment: "Button used to dismiss the payment screen")

Затем key (первый параметр) используется для поиска в Localizable.strings данного языка. Если он не найден, он будет использовать параметр value в строке как запасной вариант.

Если вы используете Xcode Export For Localization ... , файл xliff будет содержать ключи от всех ваших NSLocalizedString s

Единственный раз, когда вам понадобится Base Localizable.strings, это ключи, которые не отображаются в виде строки в вашем источнике, например,

let localisableName = "LAYOUT_NAME_" + name.uppercased()
NSLocalizedString(localisableName)

В этом случае вы должны добавить

"LAYOUT_NAME_WHATEVER" = "Whatever";

в ваш base файл, и он также будет включен в сгенерированный xliff

...