Локализация не смогла прочитать файл строк (Xcode 6.3.2)

Я не могу экспортировать для локализации, я просто получаю сообщение об ошибке "Ошибка локализации при чтении файла строки".

Системный журнал говорит:

2015-06-07 01:41:48,305 Xcode[1914]: [MT] DVTAssertions: Warning in /SourceCache/IDEFrameworks/IDEFrameworks-7718/IDEFoundation/Localization/IDELocalizationWork.m:434
Details:  Failed to read strings file "/var/folders/vh/z7jrdtc16mv_ml4rdf3c_yf40000gn/T/Xcode3SourceStringsAdaptor-8B1BF14F-E8BF-4354-9FB6-BFF843BD6623/Localizable.strings", underlying error:
The data couldn’t be read because it isn’t in the correct format.
Object:   <IDELocalizationWork>
Method:   +readStringsWorkForContext:
Thread:   <NSThread: 0x7fa8a250a200>{number = 1, name = main}
Please file a bug at http://bugreport.apple.com with this warning message and any useful information you can provide.

Но я понятия не имею, что такое файл "Localizable.strings". Эти шаги не сработали:

  • Нашел "Localizable.strings" в Base.lproj и удалил его. Это было совершенно пусто.
  • Удалил всю папку, указанную в сообщении журнала.
  • Очистить и очистить папку сборки.
  • Бег genstrings сначала создать недостающие.strings-файлы. genstrings пожаловался и сказал, что мои строки не были буквальными в звонках NSLocalizedString, Э-э-э... они все выглядят так: private let ALERT_REMINDER_FIRED_TITLE = NSLocalizedString("ALERT_REMINDER_FIRED_TITLE", tableName:"ReminderHandler", comment:"my comment")

Я полагаю, что Localizable.strings должен содержать что-то вроде /** no localizable strings **/ или что-то. Проблема в том, что мой проект даже не содержит файл, он создается как полностью пустой.

6 ответов

Решение

Кажется, что незаконченные и закомментированные звонки NSLocalizedString мешать экспорту для локализации.

Для меня это было похоже на key = "your string"; это работало в быстрой 3. Нет кавычек для ключа. Точки с запятой в конце.

Проверьте, есть ли в вашем файле Localizable.strings избыточные двойные кавычки, затем удалите их.

Проблема для меня заключалась в том, что у меня были полностью пустые файлы xx.strings - я их вручную очищал.

Добавьте эту строку вверху любых пустых файлов xx.strings, и экспорт снова будет работать:

/* No Localized Strings */

У меня была такая же проблема, когда пытался использовать NSLocalizedString с собственным NSBundle указано. Кажется, XCode не будет работать, если вы используете макросы локализации с другой формой, чем NSLocalizedString("Some key", comment: "Some comment"), Я исправил это, просто переопределив NSLocalizedString функционировать так:

public func NSLocalizedString(key: String, tableName: String? = nil, bundle: NSBundle = NSBundle.mainBundle(), value: String = "", comment: String) -> String
{
    return yourBundleHere.localizedStringForKey(key, value: value, table: tableName)
}

замещать yourBundleHere с NSBundle.mainBundle() или что ты хочешь.

Была такая же проблема. В моем случае это было вызвано NSLocalizedString который использовал переменную, переданную с сервера, в качестве ключа вместо реальных строк. Система по-прежнему сканирует закомментированный код, поэтому ничего, кроме удаления строк кода, не будет работать.

Другие вопросы по тегам