Локализация не смогла прочитать файл строк (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
который использовал переменную, переданную с сервера, в качестве ключа вместо реальных строк. Система по-прежнему сканирует закомментированный код, поэтому ничего, кроме удаления строк кода, не будет работать.