genstrings
хорошо работает, чтобы извлечь локализованный контент из файла .m, как,
find . -name \*.m | xargs genstrings -o en.lproj
Но, не работая для .swift файла как,
find . -name \*.swift | xargs genstrings -o en.lproj
genstrings
хорошо работает, чтобы извлечь локализованный контент из файла .m, как,
find . -name \*.m | xargs genstrings -o en.lproj
Но, не работая для .swift файла как,
find . -name \*.swift | xargs genstrings -o en.lproj
Инструмент 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."; $
Мы написали инструмент командной строки, который работает для файлов Swift и объединяет результат использования инструментов apples genstrings
.
Он позволяет key
и value
в NSLocalizedString
Я полагаю, что genstrings
работает так, как задумано, однако подход Apple xargs
для генерации строк из всех файлов вашего проекта имеет недостатки и неправильно анализирует пути, содержащие пробелы.
Это может быть причиной, почему это не работает для вас.
Попробуйте использовать следующее:
find. -name \*.swift | tr '\n' '\0' | xargs -0 genstrings -o.
Есть альтернативный инструмент под названием 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.
Здесь есть похожий вопрос: как использовать genstrings в нескольких каталогах?
find ./ -name "*.m" -print0 | xargs -0 genstrings -o en.lproj