Разбор NSStrings из файла .m в XCode - PullRequest
0 голосов
/ 05 января 2011

Я хочу скопировать все строки NSS из заданного файла .m в моем проекте XCode, чтобы легче было их локализовать.

Кто-нибудь, кто-нибудь может помочь в этом? Я думаю, может быть, Perl или Ruby подойдут для начала?

строки NSS выглядят так в коде:

NSString * myStringWhichShouldHaveBeenLocalizedToBeginWith = @"foo";

но часть, которую я действительно хочу, это просто @ "foo" .

Ответы [ 3 ]

2 голосов
/ 05 января 2011

Для этого уже есть встроенный механизм. См. Документацию по строке какао .

genstrings - это инструмент, который извлекает строки и записывает их в файлы .strings для перевода. Макрос NSLocalizedString (и другие связанные с ним) позволяет легко получить локализованную строку из файла .strings для конкретной локали. genstrings не извлекает все строки @ "", только те, которые используются с NSLocalizedString, поскольку именно они должны быть локализованы

0 голосов
/ 05 января 2011

Попробуйте это:

 perl -nle 'while (/(@".*?")/g) { print "$1\n";}' <source file>

Это неправильно обрабатывает строку, которая содержит экранированный символ кавычки или многострочную строку NSString, но, вероятно, она достаточно близка для вас.

0 голосов
/ 05 января 2011
perl -wln -e 'next if /^NSString/; print' whatever.m > nonsstring.m

Это просто пропустит строки, начинающиеся с "NSString". Если вы хотите что-то более изощренное, например, замену частей строк с NSStrings, вам придется дать нам больше информации.

РЕДАКТИРОВАТЬ: Хорошо, в соответствии с разъяснением ..

use strict;
use warnings;
use 5.010;
use autodie;

my $file = 'whatever.m';

open my $fh, '<', $file;

while (<$fh>) {
    say $+{capture} for /NSString
                          \s* \* \s*
                          [^=]+ \s* = \s*
                        (?<capture>@[^;]+?);
                      /gx;
}

Или как удобный однострочный:

perl -wln -E 'print $+{capture} for /NSString\s*\*\s*[^=]+\s*=\s*(?<capture>@[^;]+?);/g' whatever.m

РЕДАКТИРОВАТЬ: Так как я не знаю форму данных, изменил это для обработки нескольких строк NSS в одной записи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...