Что такое формат файла STRINGS?
Файл .strings - это текстовый файл, в котором хранятся локализованные строки отображения - оповещения, сообщения об ошибках, надписи на кнопках и другой текст пользовательского интерфейса - для приложений macOS и iOS. Множество файлов .strings, содержащих различные сообщения об оповещениях, уведомлениях и ошибках, хранятся внутри пакета приложения (app bundle), организованные в каталоги .lproj для конкретных языков (например, en.lproj/ для английского или fr.lproj/ для французского). Операционная система выбирает правильную папку .lproj во время выполнения для отображения текста, соответствующего локали.
Самое распространенное имя файла - Localizable.strings - это файл по умолчанию, который Xcode ищет автоматически. Каждая запись следует простому синтаксису «ключ-значение»: "key" = "value"; - ключи и значения представляют собой строки в кавычках, разделенные знаком = и завершающиеся точкой с запятой. Комментарии используют синтаксис в стиле C: /* */ или //. Исходные файлы .strings кодируются в UTF-8 (предпочтительно, начиная с Xcode 10) или исторически в UTF-16 с меткой порядка байтов (BOM).
Файл .strings может быть открыт и отредактирован в Apple Xcode, MacroMates TextMate, BBEdit, VS Code или любом редакторе обычного текста. Во время сборки в Xcode исходные файлы .strings компилируются в формат бинарного списка свойств (binary property list) внутри пакета приложения, поэтому развернутые файлы отличаются от исходного текста.
Apple представила .xcstrings (String Catalogs) в Xcode 15 (2023) как современную альтернативу на основе JSON со встроенной поддержкой множественного числа и грамматических вариантов. Формат .strings остается полностью поддерживаемым и широко используется в macOS, iOS, iPadOS, tvOS и watchOS.
Безопасность и защита
РИСК: LOWФайлы .strings являются обычным текстом и не содержат исполняемого кода. Открытие их не представляет угрозы безопасности. При изменении строк внутри пакета стороннего приложения (джейлбрейк/моддинг) вы можете нарушить лицензию или условия использования приложения.
Детали формата
в двух словахПрограммы, открывающие файлы STRINGS
Технические подробности
глубокая спецификация| Кодировка | UTF-8 (предпочтительно, Xcode 10+); UTF-16 LE или BE с BOM (устаревшее соглашение) |
| Устаревший BOM | UTF-16 LE: `FF FE`; UTF-16 BE: `FE FF`; скомпилированная бинарная форма plist начинается с `bplist` (hex 62 70 6C 69 73 74) |
| Синтаксис записи | `"key" = "value";` - и ключ, и значение в двойных кавычках; обязательна точка с запятой в конце |
| Синтаксис комментариев | В стиле C: `/* блочный комментарий */` или `//` строчные комментарии |
| Соглашение о каталогах | Файлы размещаются в каталогах `.lproj`, названных по коду локали (например, `en.lproj/`, `ja.lproj/`, `fr.lproj/`) |
| Имя файла по умолчанию | `Localizable.strings` - файл, в котором Xcode по умолчанию ищет видимые пользователю строки |
| Скомпилированная форма | Xcode преобразует исходный `.strings` в бинарный plist во время сборки приложения; развернутые пакеты приложений содержат бинарный, а не исходный текст |
| Правила множественного числа/рода | Парный файл `.stringsdict` (XML plist) в том же каталоге `.lproj` обрабатывает формы множественного числа и грамматические варианты |
| Формат-преемник | `.xcstrings` (String Catalogs на базе JSON, Xcode 15 / 2023) является современной заменой для новых проектов |
| MIME-тип | `text/plain` для исходной формы; скомпилированная бинарная форма - `application/octet-stream` |
| Область платформ | macOS, iOS, iPadOS, tvOS, watchOS и visionOS |
| Инструменты сборки | `genstrings` извлекает строковые литералы из исходного кода в файлы `.strings`; `ibtool` компилирует их в бинарный plist в пакете приложения |
| Выпущен | Mac OS X 10.0 (March 2001); later adopted for iOS (2007) |
| Последняя версия | Strings files remain current; Apple introduced .xcstrings (String Catalogs) in Xcode 15 / 2023 as a modern alternative |
| Спецификация | developer.apple.com |
Конвертации STRINGS
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах STRINGS.