Xcode Localizable.stringsdict не включается в .xliff при экспорте для локализации

Как говорится в названии. Я использую Xcode 8.3, и когда я иду экспортировать .xliff, он не включает материал в localizable.stringsdict. Я выбрал localizable.stringsdict, открыл инспектор файлов и также нажал большую кнопку Localize. Казалось, это не решило никаких проблем. У кого-нибудь есть опыт в этом?


person Chase Roberts    schedule 05.09.2017    source источник


Ответы (2)


Я не уверен, способен ли XLIFF вообще представлять содержимое stringsdict, но даже если это так, как вы обнаружили, Xcode не включает ваш stringsdict в вывод XLIFF. Каждая служба перевода, которую я искал, поддерживает файлы stringsdict напрямую, поэтому ваше решение состоит в том, чтобы просто загрузить файлы stringsdict вместе с XLIFF в вашу службу перевода.

Тем не менее, похоже на недосмотр, что когда вы экспортируете локализации, Xcode, по крайней мере, не копирует файлы stringsdict в папку экспортированных локализаций вместе с файлами xliff. Я рекомендую вам отправить отчет об ошибке в Apple с просьбой об этом.

person Lily Ballard    schedule 05.09.2017
comment
Начиная с Xcode 9 содержимое stringsdict присутствует в файле Xliff. За прошедшие годы были некоторые ошибки, но в Xcode 11 это работает практически идеально. Ни XLIFF 1.2, который до сих пор используется в большинстве программ, ни более новый стандарт XLIFF 2.0 не имеют встроенной поддержки представления во множественном числе. Чтобы сохранить группы stringsdict в цикле экспорта-импорта, Xcode присваивает этим переводам специально созданный идентификатор единицы перевода xliff. - person guru_meditator; 21.01.2020

Он работает в Xcode 9.2, но у меня возникли некоторые проблемы.

В настоящее время мой проект имеет Base и sv локализацию. Когда я добавил localizable.stringsdict, содержимое не было включено в XLIFF.

Затем я нажал кнопку Локализация, выбрал единственный доступный язык en (здесь я ожидал Base). Затем я добавил sv в качестве локализации и сделал Экспорт для локализации для sv. Вуаля, все заработало.

Но странно то, что в локализации sv оригиналом является en.

<file original="Resources/en.lproj/Localizable.stringsdict" source-language="en" datatype="plaintext" target-language="sv">

(Пытался добавить Base в качестве локализации и удалить en-версию, но тогда в экспорте пропало содержимое Localizable.stringsdicts)

person JKvr    schedule 05.01.2018
comment
Но странно то, что в локализации sv в качестве оригинала используется en. Это нормально, так как en, скорее всего, является языком разработки вашего проекта Xcode. Когда вы импортируете xliff обратно в Xcode, файлы строк en будут обновлены, как и ожидалось. Концепция Base предназначена для базовой локализации раскадровки/xib, а не для строковых файлов. Исходный язык и целевой язык в xliff всегда будут стандартными языковыми тегами BCP47. Программы-переводчики, используемые для открытия xliff-файла, не смогут распознать исходный язык, если он будет указан как базовый. - person guru_meditator; 21.01.2020