2015-06-07 3 views
2

Я не могу экспортировать для локализации, я просто получил ошибку «Локализация не удалось прочитать файл строки».Локализация не смогла прочитать файл строк (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 **/ или что-то. Проблема в том, что мой проект даже не содержит файл, он генерируется как полностью пустой.

ответ

3

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

+1

Вы можете уточнить свой ответ? – skywinder

+0

Какая часть этого вы не понимаете? – Andreas

+0

@Andreas Что конкретно вы изменили, чтобы исправить это? Какие вызовы NSLocalizedString вы обнаружили, что это помешало экспорту? – SpacyRicochet

1

У меня была такая же проблема, когда вы пытались использовать 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() или что вы хотите.

0

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

1

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

1

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

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

/* No Localized Strings */ 
+0

Спасибо, Джим, это сработало для меня! –

3

Для меня это было как ключ = «ваша строка»; который работал в swift 3. Нет цитат для ключа. Точки с запятой в конце.

+0

Отредактируйте этот ответ, чтобы четко указать, что в конце должны быть точки с запятой. Я думал, что ответ предлагает удалить точку с запятой. –