OK.Вот что я сделал, чтобы решить эту проблему.
Я удалил различные файлы Localizable.strings из репозитория Git, но оставил их на своих местах (по одному в каждом из каталогов вариантов приложения).
Я взял только несколько строк, которые варьировались между каждым вариантом, и разбил их на отдельный текстовый файл, названный «MyLocalizable.strings».Я добавил каждый из них в Git и добавил их в проект, БЕЗ ОБЪЕДИНЯЯ ИХ ЦЕЛЕЙ.Я оставил файл Localizable.strings, связанный с каждой целью.
Итак, что у нас есть, так это то, что у каждой цели есть файл Localizable.strings, который связан с целью и будет скопирован в пакет.В каждом целевом каталоге есть файл с именем «MyLocalizable.strings», который содержит только несколько строк, которые варьируются от цели к цели.
Затем я взял подавляющее большинство строк - те, которые не меняются -и поместите их в другой файл с именем «MyLocalizable.strings», и поместите его в центральный (общий) каталог.Я снова добавил это в Git и в проект, БЕЗ ОБЪЕДИНЕНИЯ ЭТОГО ЦЕЛЕМ.
Затем я написал очень маленький, жалкий скрипт Perl для создания файла Localizable.strings в заданной цели из общегофайл, с приложенным к нему целевым файлом.Это перезаписывает существующий файл Localizable.strings.Это означает, что файл Localizable.strings является новым для каждого запуска скрипта.Этот скрипт был размещен в общей зоне и добавлен в проект БЕЗ ОБЪЕДИНЕНИЯ С ЦЕЛЕЙ.Сценарий имеет один аргумент, который является именем цели (и ее директории).Синтаксис этого сценария:
#!/usr/bin/perl
use strict; # I'm anal. What can I say?
use Cwd; # We'll be operating on the working directory.
use File::Path;
my $input1File = cwd()."/BMLT/Supporting\ Files/en.lproj/MyLocalizable.strings";
my $input2File = cwd()."/".$ARGV[0]."/en.lproj/MyLocalizable.strings";
my $outputFile = cwd()."/".$ARGV[0]."/en.lproj/Localizable.strings";
open ( MAIN_FILE, $input1File ) || die ( "Could not open main file!" );
my @file_data = <MAIN_FILE>;
close ( MAIN_FILE );
open ( PRODUCT_FILE, $input2File ) || die ( "Could not open product file!" );
push ( @file_data, <PRODUCT_FILE> );
close ( PRODUCT_FILE );
open ( FINAL_FILE, ">$outputFile" ) || die ( "Could not open destination file!" );
foreach ( @file_data ) print FINAL_FILE $_;
close ( FINAL_FILE );
Затем я добавляю шаг сборки Run Script ДО шага Copy Bundle Resources.Этот скрипт вызывает Perl-скрипт со следующим синтаксисом:
${PROJECT_DIR}/BMLT/Supporting\ Files/buildLocalizationFile.pl ${PRODUCT_NAME}
Когда сборка выполнена, файлы объединяются, и объединенный файл помещается в пакет.