Файл strings что это
Расширение файла STRINGS
Text Strings Format
Что такое файл STRINGS?
Программы, которые поддерживают STRINGS расширение файла
Ниже приведена таблица со списком программ, которые поддерживают STRINGS файлы. Файлы с расширением STRINGS, как и любые другие форматы файлов, можно найти в любой операционной системе. Указанные файлы могут быть переданы на другие устройства, будь то мобильные или стационарные, но не все системы могут быть способны правильно обрабатывать такие файлы.
Программы, обслуживающие файл STRINGS
Как открыть файл STRINGS?
Причин, по которым у вас возникают проблемы с открытием файлов STRINGS в данной системе, может быть несколько. К счастью, наиболее распространенные проблемы с файлами STRINGS могут быть решены без глубоких знаний в области ИТ, а главное, за считанные минуты. Ниже приведен список рекомендаций, которые помогут вам выявить и решить проблемы, связанные с файлами.
Шаг 1. Установите Apple Xcode программное обеспечение
Основная и наиболее частая причина, препятствующая открытию пользователями файлов STRINGS, заключается в том, что в системе пользователя не установлена программа, которая может обрабатывать файлы STRINGS. Эта проблема может быть решена путем загрузки и установки # РЕКОМЕНДОВАННОЙ # или другой совместимой программы, такой как TextEdit, TextMate, Mac OS X. Выше вы найдете полный список программ, которые поддерживают STRINGS файлы, классифицированные в соответствии с системными платформами, для которых они доступны. Одним из наиболее безопасных способов загрузки программного обеспечения является использование ссылок официальных дистрибьюторов. Посетите сайт Apple Xcode и загрузите установщик.
Шаг 2. Обновите Apple Xcode до последней версии
Если проблемы с открытием файлов STRINGS по-прежнему возникают даже после установки Apple Xcode, возможно, у вас устаревшая версия программного обеспечения. Проверьте веб-сайт разработчика, доступна ли более новая версия Apple Xcode. Иногда разработчики программного обеспечения вводят новые форматы вместо уже поддерживаемых вместе с новыми версиями своих приложений. Причиной того, что Apple Xcode не может обрабатывать файлы с STRINGS, может быть то, что программное обеспечение устарело. Самая последняя версия Apple Xcode обратно совместима и может работать с форматами файлов, поддерживаемыми более старыми версиями программного обеспечения.
Шаг 3. Свяжите файлы Text Strings Format с Apple Xcode
После установки Apple Xcode (самой последней версии) убедитесь, что он установлен в качестве приложения по умолчанию для открытия STRINGS файлов. Процесс связывания форматов файлов с приложением по умолчанию может отличаться в деталях в зависимости от платформы, но основная процедура очень похожа.
Изменить приложение по умолчанию в Windows
Изменить приложение по умолчанию в Mac OS
Шаг 4. Убедитесь, что STRINGS не неисправен
Если проблема по-прежнему возникает после выполнения шагов 1-3, проверьте, является ли файл STRINGS действительным. Отсутствие доступа к файлу может быть связано с различными проблемами.
Если файл заражен, вредоносная программа, находящаяся в файле STRINGS, препятствует попыткам открыть его. Сканируйте файл STRINGS и ваш компьютер на наличие вредоносных программ или вирусов. Если файл STRINGS действительно заражен, следуйте инструкциям ниже.
2. Убедитесь, что файл с расширением STRINGS завершен и не содержит ошибок
Если файл STRINGS был отправлен вам кем-то другим, попросите этого человека отправить вам файл. Возможно, файл был ошибочно скопирован, а данные потеряли целостность, что исключает доступ к файлу. Если файл STRINGS был загружен из Интернета только частично, попробуйте загрузить его заново.
3. Проверьте, есть ли у вашей учетной записи административные права
Некоторые файлы требуют повышенных прав доступа для их открытия. Войдите в систему, используя учетную запись администратора, и посмотрите, решит ли это проблему.
4. Убедитесь, что в системе достаточно ресурсов для запуска Apple Xcode
Если в системе недостаточно ресурсов для открытия файлов STRINGS, попробуйте закрыть все запущенные в данный момент приложения и повторите попытку.
5. Убедитесь, что у вас установлены последние версии драйверов, системных обновлений и исправлений
Современная система и драйверы не только делают ваш компьютер более безопасным, но также могут решить проблемы с файлом Text Strings Format. Возможно, файлы STRINGS работают правильно с обновленным программным обеспечением, которое устраняет некоторые системные ошибки.
Вы хотите помочь?
Если у Вас есть дополнительная информация о расширение файла STRINGS мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся здесь и отправьте нам свою информацию о файле STRINGS.
ИТ База знаний
Полезно
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Как использовать команду Strings в Linux
Нужно просмотреть текст внутри двоичного файла или файла данных? Команда Linux strings извлечет и выведет на терминал биты текста, которые называются «строками».
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Linux полон команд, которые могут выглядеть как решения в поисках проблем. Команда strings одна из них. Так, зачем же она нужна? Есть ли похожая команда, которая перечисляет строки для печати из двоичного файла?
Использование команды strings
На самом деле нет ничего сложного в этой команде: просто передаем команде название файла.
На скриншоте ниже список строк, извлечённых из указанного файла:
Установка минимальной длины строки
Имейте ввиду, что чем короче минимальная длина, тем больше шансов получить на выводе бесполезного материала.
Некоторые двоичные значения имеют то же числовое значение, что и значение, представляющее печатаемый символ. Если два из этих числовых значений находятся рядом в файле, а минимальная длина, равна двум, эти байты будут отображаться как строки.
Чтобы установить длину строки равной двум, используйте следующую команду:
Теперь у нас на выводе есть строки, длина который равна двум и более символам. Учтите, что пробел тоже считается печатаемым символом.
Ограничение вывода команды strings командой less
Использование strings с файлами объектов
Но если прокрутить ниже, то можно заметить, что форматирование не относится ко всему файлу.
Думаю, интересно видеть разницу между текстовыми строками файла объектов и конечного исполняемого файла.
Поиск в конкретной области файла
Если нет особой причины, то вполне можно обойтись значением по умолчанию.
Вывод номера строки
Иногда бывает необходимо узнать точное смещение, расположение строки в файле. В этом нам поможет ключ –o (offset).
В данном случае номера строки показаны в восьмеричной системе.
Теперь номера строк показаны в десятичной системе:
А тут в шестнадцатеричной:
Вывод управляющих символов
Ниже мы видим пустую строку. Это результат работы управляющих символов: либо символа новой строки, либо символ возврата каретки.
Мы не ограничены только файлами
Мы можем использовать строки с любым, что есть или может создать поток байтов.
В списке не все содержимое оперативной памяти, а лишь то, что команда strings смогла извлечь.
Поиск нескольких файлов сразу
Маски можно использовать для выбора групп файлов для поиска. Символ * обозначает нуль и больше символов, а символ «?» означает любой отдельный символ. Можно также указать в командной строке множество имен файлов.
Затем передадим результаты через grep и выведем строки, содержащие слово «Copyright»:
Команда strings распутана
Команда strings – это не какая-то тайная команда. Это обычная команда Linux. Он делает выполняет конкретные задачи и делает это очень хорошо. Это еще один из преимуществ Linux, и действительно мощных в сочетании с другими командами. Когда вы видите, как он может оперировать двоичными файлами и другими инструментами, такими как grep, начинаете по-настоящему ценить функциональность этой слегка непонятной команды.
Расширение файла STRINGS
Что это за файл — STRINGS?
STRINGS file format is used by Mac OS X operating system. STRINGS file contains text data used for generating generating alerts, status messages, and error warnings on the running system. This type of file can also store various localization data, for example, translated text data used by the application.
STRINGS fies are stored by default in Resources folder of Mac OS X application package. Opening or editing these files manually is not adviced for security reasons.
Формат файла STRINGS используется операционной системой Mac OS X. Файл STRINGS содержит текстовые данные, используемые для генерации предупреждений, сообщений о состоянии и предупреждений об ошибках в работающей системе. Этот тип файла также может хранить различные данные локализации, например, переведенные текстовые данные, используемые приложением.
Файлы STRINGS по умолчанию хранятся в папке «Ресурсы» пакета приложения Mac OS X. Открытие или редактирование этих файлов вручную не рекомендуется по соображениям безопасности.
Программа(ы), умеющие открыть файл .STRINGS
Mac OS
Как открыть STRINGS файлы
В дальнейшей части этой страницы Вы найдете другие возможные причины, вызывающие проблемы с файлами STRINGS.
Возможные проблемы с файлами в формате STRINGS
Отсутствие возможности открытия и работы с файлом STRINGS, совсем не должен значить, что мы не имеем установленного на своем компьютере соответствующего программного обеспечения. Могут выступать другие проблемы, которые также блокируют нам возможность работы с файлом Text Strings Format. Ниже находится список возможных проблем.
Если Вы уверены, что все перечисленные поводы отсутствуют в Вашем случае (или были уже исключены), файл STRINGS должен сотрудничать с Вашими программами без каких либо проблем. Если проблема с файлом STRINGS все-таки не решена, это может значить, что в этом случае появилась другая, редкая проблема с файлом STRINGS. В таком случае остается только помощь специалиста.
Похожие расширения
.abw | AbiWord Document Format |
.ac | AC3D Geometry Format |
.aim | AIMMS ASCII Model Format |
.ans | ANSI Text File (ANSI Art) |
.apt | Almost Plain Text Format |
.asc | ASCII Text Characters Format |
.ascii | ASCII Text Characters Format |
.aty | Association Type Placeholder |
Как связать файл с установленной программой?
Есть ли универсальный метод открытия неизвестных файлов?
Многие файлы содержат данные в виде текста или чисел. Возможно, что во время открытия неизвестных файлов (напр. STRINGS) популярный в системе Windows простой редактор текста, которым является Notatnik позволит нам увидеть часть данных, закодированных в файле. Этот метод позволяет просмотреть содержимое многих файлов, однако не в такой форме, как программа, предназначенная для их обслуживания.
Strings v2.54
By Mark Russinovich
Published: June 22, 2021
Download StringsВ (534 KB)
Introduction
Working on NT and Win2K means that executables and object files will many times have embedded UNICODE strings that you cannot easily see with a standard ASCII strings or grep programs. So we decided to roll our own. Strings just scans the file you pass it for UNICODE (or ASCII) strings of a default length of 3 or more UNICODE (or ASCII) characters. Note that it works under Windows 95 as well.
Using Strings
Usage:
Strings takes wild-card expressions for file names, and additional command line parameters are defined as follows:
Parameter | Description |
---|---|
-a | Ascii-only search (Unicode and Ascii is default) |
-b | Bytes of file to scan |
-f | File offset at which to start scanning. |
-o | Print offset in file string was located |
-n | Minimum string length (default is 3) |
-s | Recurse subdirectories |
-u | Unicode-only search (Unicode and Ascii is default) |
-nobanner | Do not display the startup banner and copyright message. |
To search one or more files for the presence of a particular string using strings use a command like this:
Download StringsВ (534 KB)
Runs on:
Локализация приложений в iOS. Часть 1. Что мы имеем?
Часть 1. Что мы имеем?
Руководство по работе с локализированными строковыми ресурсами
Введение
Несколько лет назад я окунулся в волшебный мир iOS разработки, который всей своей сутью сулил мне счастливое будущее в сфере IT. Однако углубляясь в особенности платформы и среды разработки, я столкнулся со многими сложностями и неудобствами в решении, казалось бы, весьма тривиальных задач: «инновационный консерватизм» Apple порой заставляет разработчиков сильно изощряться, дабы удовлетворить необузданное «ХОЧУ» заказчика.
Одной из таких проблем является вопрос локализации строковых ресурсов приложения. Именно этой проблеме мне хотелось бы посвятить несколько своих первых публикаций на просторах Хабра.
Изначально я рассчитывал уместить свои мысли в одной статье, но объем той информации, которую хотелось бы изложить, оказался достаточно большим. В этой статье я попытаюсь раскрыть суть стандартных механизмов работы с локализованными ресурсами с акцентом на некоторые аспекты, которыми пренебрегают большинство гайдов и туториалов. Материал ориентирован прежде всего на начинающих разработчиков (или тех, кто с такими задачами не сталкивался). Для опытных девелоперов данная информация может не нести особо ценности. А вот о неудобствах и недостатках, с которыми можно столкнуться на практике, я расскажу в дальнейшем.
Из-под коробки. Как организовано хранение строковых ресурсов в iOS-приложениях
Для начала отметим, что наличие в платформе механизмов локализации уже является огромным плюсом, т.к. избавляет программиста от дополнительной разработки и задает единый формат работы с данными. Да и зачастую, базовых механизмов хватает для реализации относительно небольших проектов.
И так, какие же возможности предоставляет нам Xcode «из-под коробки»? Для начала давайте разберемся со стандартом хранения строковых ресурсов в проекте.
Ключ чувствителен к регистру символов, допускает использование пробелов, подчеркиваний, знаков пунктуации и специальных символов.
Важно заметить, что несмотря на незамысловатый синтаксис, Strings-файлы являются регулярным источников ошибок на этапе компиляции, сборки или эксплуатации приложения. Причин тому несколько.
Во-первых, ошибки в синтаксисе. Пропущенные точка с запятой, знак равенства, лишние или незаэкранированные кавычки неизбежно приведут к ошибке компилятора. Причем Xcode укажет на файл с ошибкой, но не подсветит строку, в которой что-то не так. Поиск такой опечатки может занять значительное время, особенно если файл содержит значительный объем данных.
Во-вторых, дублирование ключей. Приложение из-за него, конечно, не упадет, но пользователю могут быть отображены некорректные данные. Все дело в том, что при обращении к строке по ключу, подтягивается значение соответствующее последнему вхождению ключа в файле.
В итоге, простая конструкция требует от программиста значительной скрупулезности и внимательности при наполнении файлов данными.
Знающие разработчики могут сразу воскликнуть: «А как же JSON и PLIST? Чем они не угодили?» Ну во-первых, JSON и PLIST (фактически, обыкновенный XML ) являются универсальными стандартами, позволяющими хранить как строки, так и численные, логические ( BOOL ), бинарные данные, время и дату, а также коллекции — индексированные ( Array ) и ассоциативные ( Dictionary ) массивы. Соответственно, синтаксис этих стандартов более насыщен, а значит и накосячить в них проще. Во-вторых, скорость обработки таких файлов несколько ниже, чем Strings-файлов, опять же по причине более сложного синтаксиса. Это не говоря еще о том, что для работы с ними нужно провести целый ряд манипуляций в коде.
Локализовали, локализовали, да не вылокализовали. Локализация пользовательского интерфейса
И так, со стандартами разобрались, разберемся теперь как это все использовать.
Пойдем по порядку. Для начала создадим простой Single View Application и в Main.storyboard на ViewController добавим несколько текстовых компонентов.
Контент в данном случае хранится непосредственно в интерфейсе. Чтобы локализовать его необходимо сделать следующее:
1) Перейти в настройки проекта
2) Затем — из Target в Project
3) Открыть вкладку Info
В пункте Localizations сразу видим, что у нас есть уже запись «English — Development language». Это значит, что английский язык выставлен как язык разработки ( или по умолчанию).
Давайте теперь добавим еще один язык. Для этого нажимаем «+» и выбираем необходимый язык (я для примера выбрал русский). Заботливый Xcode сразу предлагает нам выбрать, какие файлы необходимо локализовать для добавленного языка.
Нажимаем Finish, смотрим, что получилось. В навигаторе по проекту возле выбранных файлов появились кнопки отображения вложенностей. Кликнув на них видим, что выбранные ранее файлы содержат в себе созданные файлы локализации.
К примеру, Main.storyboard (Base) — это созданный по умолчанию файл разметки интерфейса на базовом языке разработки, а при формировании локализации к нему в пару был создан ассоциированный Main.strings (Russian) — файл строк для русской локализации. Открыв его можно увидеть следующее:
Здесь, в целом, все просто, но все же для пущей ясности рассмотрим подробнее, обратив внимание на комментарии, сгенерированные заботливым Xcode-ом:
Параметру «text» объекта «tQe-tG-eeo» присвоить значение «Label».
В данной записи изменению подлежит только «значение«. Заменим «Label» на «Надпись«. Аналогично поступим и с другими объектами.
Запускаем наше приложение.
Но что же мы видим? Приложение использует базовую локализацию. Как же проверить правильно ли мы произвели перевод?
Тут стоит сделать небольшое отступление и копнуть немного в сторону особенностей iOS платформы и структуры приложения.
Для начала рассмотрим изменение структуры проекта в процессе добавления локализации. Вот так выглядит каталог проекта до добавления русской локализации:
Причем тут структура Xcode проекта к готовому iOS приложению? А при том, что это помогает лучше понять особенности платформы, а также принципы распределения и хранения ресурсов непосредственно в готовом приложении. Суть в том, что при сборке Xcode проекта, помимо формирования исполнительного файла, среда переносит ресурсы (файлы разметки интерфейса Storyboard/Xib, изображения, файлы строк и прочее) в готовое приложение сохраняя иерархию заданную на этапе разработки.
Для работы с этой иерархией Apple предоставляет класс Bundle(NSBundle) (вольный перевод):
Рассмотрим структуру Bundle.main используя класс FileManager :
Но прежде чем закрыть тему локализации пользовательского интерфейса через Interface Builder, стоит отметить еще один примечательный способ. При создании файлов локализации (путем добавления нового языка в проект или в инспекторе локализованного файла) нетрудно заметить, что Xcode предоставляет возможность выбрать тип создаваемого файла:
По этому, выбирая тот или иной метод локализации интерфейса, стоит учитывать, какой подход будет более целесообразен и практичен в конкретной ситуации.
Do It Yourself. Работа с локализованными строковыми ресурсами в коде
Надеюсь, со статическим контентом все более-менее понятно. Но как быть с текстом, который задается непосредственно в коде?
Разработчики операционной системы iOS и об этом позаботились.
Для работы с локализованными текстовыми ресурсами фреймворк Foundation предоставляет семейство методов NSLocalizedStrings в Swift
и макросов в Objective-C
Начнем с очевидного. Параметр key — ключ строки в Strings-файле; val (default value) — значение по умолчанию, которое используется в случае отсутствия указанного ключа в файле; comment — (менее очевидный) краткое описание локализируемой строки (по сути не несет в себе полезного функционала и предназначен для пояснения цели использования конкретной строки).
tableName ( tbl ) — это имя String-файла (честно говоря, не знаю почему Apple называют его таблицей), в котором находиться необходимая нам строка по указанному ключу; при его передаче расширение .string не указывается. Возможность навигации между таблицами позволяет не хранить строковые ресурсы в одном файле, а распределять их по собственному усмотрению. Это позволяет избавиться от перегруженности файлов, упрощает их редактирование, минимизирует шанс появления ошибок.
Параметр bundle расширяет возможности навигации по ресурсам еще больше. Как говорилось ранее, bundle — это механизм доступа к ресурсам приложения, то есть мы можем самостоятельно определять источник ресурсов.
Немного подробнее. Перейдем непосредственно в Foundation и рассмотрим объявление методов (макросов) для более ясной картины, т.к. преимущественное большинство туториалов попросту игнорирует этот момент. Фреймворк на Swift не особо информативен:
«Главный bundle возвращает локализированную строку» — все что мы имеем. В случае с Objective-C дело обстоит уже немного иначе
Здесь уже наглядно видно, что с файлами строковых ресурсов работает никто иной, как bundle (в первых двух случаях mainBundle ) — так же как и в случае с локализацией интерфейса. Конечно, я мог бы сразу об этом сказать, рассматривая класс Bundle ( NSBundle ) в предыдущем пункте, но на тот момент эта информация не несла особой практической ценности. А вот в контексте работы со строками в коде об этом нельзя не сказать. По сути, глобальные функции, предоставленные Foundation, всего навсего обертки над стандартными методами bundle, основная задача которых сделать код более лаконичным и безопасным. Никто не запрещает инициализировать bundle вручную и непосредственно от его имени обращаться к ресурсам, но таким образом появляется (пускай и очень-очень маленькая) вероятность образования циклических ссылок и утечек памяти.
Далее в примерах будет описана работа именно с глобальными функциями и макросами.
Рассмотрим как это все работает.
Для начала создадим String-файл, который будет содержать наши строковые ресурсы. Назовем его Localizable.strings* и добавим в него
( Локализация String-файлов осуществляется абсолютно точно так же, как и Storyboard/Xib, поэтому описывать этот процесс я не буду. Заменим в файле русской локализации «testValue» на «тестовое значение*».)
Важно! В iOS файл с этим именем является файлом строковых ресурсов по умолчанию, т.е. если не указывать имя таблицы tableName ( tbl ), приложение автоматически будет стучаться в Localizable.strings .
Добавим в наш проект следующий код
и запустим проект. После выполнения кода, в консоли появится строка
Все работает верно!
Аналогично с примером локализации интерфейса, сменим локализацию и запустим приложение. Результатом выполнения кода будет
Теперь попробуем получить значение по ключу, которого в файле Localizable.strings нет:
Результатом выполнения такого кода будет
Поскольку ключа в файле нет, метод возвращает в качестве результата сам ключ. Если такой результат является неприемлемым, то лучше воспользоваться методом
Для вывода такой строки необходимо добавить код вида
Но при использовании таких конструкций нужно быть очень внимательным! Дело в том, что iOS строго отслеживает количество, порядок аргументов, соответствие их типов указанным литералам. Так, например, если в качестве второго аргумента вместо целочисленного значения подставить строку
то приложение подставит в месте несоответствия целочисленный код строки «123»
Если пропустить его, то получим
А вот если пропустить в перечне аргументов объект соответствующий %@
то приложение просто напросто упадет в момент выполнения кода.
Push me, baby! Локализация уведомлений
С подобной задачей приходиться сталкиваться при разработке мультиязычных клиент-серверных приложений. Когда такая задача впервые встала передо мной, первое, что пришло пришло мне в голову, это скинуть проблему локализации сообщений на сторону сервера. Идея была предельно проста: приложение при запуске отправляет на backend текущую локализацию, а сервер при отправке push-а подбирает соответсвующее сообщение. Но сразу назрела проблема: если локализация устройства поменялась, а приложение не было перезапущено (не обновило данные в базе), то сервер отправлял текст соответствующий последней «зарегестрированной» локализации. А если приложение установлено сразу на нескольких устройствах с разными системными языками, то вся реализация работала бы как черт знает что. Поскольку такое решение мне сразу показалось дичайшим костылем, я тотчас же начал искать адекватные решения (забавно, но на многих форумах «разработчики» советовали локализировать пуши именно на backend-е).
Правильное решение оказалось до ужаса простым, хотя и не совсем очевидным. Вместо стандартного JSON отправляемого сервером на APNS
необходимо отправлять JSON вида
где по ключу loc-key передается ключ локализированной строки из файла Localizable.strings . Соответственно сообщение push-а отображается в соотвествии с текущей локализацией устройства.
Аналогичным образом работает и механизм интерполяции локализированных строк в Push-уведомлениях:
По ключу loc-args передается массив аргументов, которые необходимо внедрить в локализированный текст уведомления.
Подытожим.
И так, что же имеем в итоге:
В общем, Xcode предоставляет разработчикам достаточно простой и гибкий механизм локализации строковых ресурсов приложения, достаточный для реализации простых задач локализации в относительно небольших проектах.
О подводных камнях описанного механизма и методах их обхода я постараюсь рассказать в следующей статье.