Подтвердить что ты не робот

Проблема с genstrings для файла Swift

genstrings хорошо работает, чтобы извлечь локализованный контент из файла .m, как,

find . -name \*.m | xargs genstrings -o en.lproj

Но, не работая для .swift файла как,

find . -name \*.swift | xargs genstrings -o en.lproj
4b9b3361

Ответ 1

Инструмент genstrings отлично работает со скоростью, насколько мне известно. Вот мой тест:

// MyClass.swift
let message = NSLocalizedString("This is the test message.", comment: "Test")

то в папке с классом

# generate strings for all swift files (even in nested directories)
$ find . -name \*.swift | xargs genstrings -o .

# See results
$ cat Localizable.strings
/* Test */
"This is the test message." = "This is the test message.";
$

Ответ 2

Мы написали инструмент командной строки, который работает для файлов Swift и объединяет результат использования инструментов apples genstrings. Он позволяет key и value в NSLocalizedString

https://github.com/KeepSafe/genstrings_swift

Ответ 3

Я полагаю, что genstrings работает так, как задумано, однако подход Apple xargs для генерации строк из всех файлов вашего проекта имеет недостатки и неправильно анализирует пути, содержащие пробелы.

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

Попробуйте использовать следующее:

find. -name \*.swift | tr '\n' '\0' | xargs -0 genstrings -o.

Ответ 4

Есть альтернативный инструмент под названием SwiftGenStrings

Hello.swift

NSLocalizedString("hello", value: "world", comment: "Hi!")

SwiftGenStrings:

$ SwiftGenStrings Hello.swift 

/* Hi! */
"hello" = "world";

Apple genstrings:

$ genstrings Hello.swift

Bad entry in file Hello.swift (line = 1): Argument is not a literal string.

Отказ от ответственности: я работал над SwiftGenStrings.