Локализуем Finder

Property List Editor

В процессе ежедневного «траблшутинга» (устранения неполадок) Маков мы неоднократно сталкивались с ошибками, связанными с локализацией операционной системы. Что имеется в виду? Пользователь запускает программу, которая, к примеру, взламывает iOS, загружает из интернета последнюю прошивку для своего смартфона, кладёт её в папку с названием «Хаки iOS» и при попытке сделать джейлбрейк получает ошибку наподобие таковой: «Invalid IPSW. Unable to parse IPSW. Are you sure it’s really IPSW?» И обидно даже, ведь есть стопроцентная уверенность, что этот файл iOS на самом деле IPSW, правильный, соответсвующей версии, без ошибок. Но почему же тогда программа ругается?

Всё просто. Прошивка лежит в папке, имеющей русское название, а заграничная программа очень плохо понимает кириллицу. И примеров тому сотни. Одно из золотых правил инженера тех. поддержки Apple при устранении проблем в работе какого-либо приложения сменить язык интерфейса на английский, родной, и проверить работу проблемного ПО в новом, свежесозданном пользователе. И там, поверьте, работать забугорная программа будет без ошибок (если же вы, конечно, не попытаетесь создать папку с русским названием снова). Если же ту же самую прошивку никуда не перекладывать и оставить в папке «Загрузки», то окроется она в нашей программе для взлома iOS без ошибок. Почему?

Дело в том, что локализация интерфейса не совсем честная. Чтобы до конца понять механизм работы операционной системы, можно копнуть глубоко и познакомиться с отдельной темой по локализации ПО для разработчиков Apple. Но если вкратце, то работая в нашей российской системе, по факту в ней мы не работаем. Мы используем всё ту же английскую, оригинальную систему, к которой применяются правила локализации интерфейса. Когда мы открываем папку «Рабочий стол», в реальности открывается всё та же папка «Desktop», «Загрузки» — «Downloads», «Фильмы» — «Movies» и т.д. При открытии, например, Терминала вы найдёте подтверждение этому, все пути вашего пользвателя будет выглядеть примерно так: /Users/<имя пользователя>/Desktop/. Соответственно в ОС есть документ, в котором прописаны все эти правила — файл локализации папок. Хранится он по адресу: /System/Library/CoreServices/SystemFolderLocalizations/. При открытии этой директории в Finder вы найдёте множество папок, имеющих расширение .lproj. Нас с вами интересует русская локализация, ru.lproj и файл, хранящийся внутри этой папки «SystemFolderLocalizations.strings». Очевидно, что мы можем создать сколь угодно папок, имеющих название удобное для ОС (латиницей), которые автоматически будут преобразованы в удобные для нас (кириллицей) при загрузке локализованной русской оболочки. Например, папка «Distributives» в русской оболочке будет автоматически отображаться как «Дистрибутивы», а «dmitry» (имя домашней папки пользователя) как «Дмитрий Кирьянов». Осталось отредактировать этот файл, «SystemFolderLocalizations.strings».

  1. Загружаем программу редактирования файлов .strings и .plist
    Существует большое количество программ, которые помогут нам в реализации этой задачи: Plist Editor Pro, Pref Setter, StringsEditor, но они или платные, или требуют дополнительной настройки. Нами была найдена программа, входящая когда-то в среду разработки Xcode от Apple — Property List Editor. Энтузиаст, Richard H. сделал её доступной для загрузки по этой ссылке. Загружаем, извлекаем из архива и копируем в папку «Программы».
  2. Если при первом запуске программы система выдаёт вам ошибку о повреждённости программы и предлагает её удалить, временно отключите Gatekeeper в Системных настройках вашего Мака ( → Системные настройки → Защита и безопасность → Во вкладке «Общие» отметить «Разрешать загрузки программ из: любого источника»)

  3. Открываем файл «SystemFolderLocalizations.strings» в программе редакторе с правами супер-пользователя
    Для изменения файла локализации прав доступа обычного пользователя нам не хватит, потребуется работа с правами операционной системы. Для этого из Служебных программ/Утилит запускаем программу Терминал, вводим код и при запросе пароля администратора вводим и его:
    sudo /Applications/Property\ List\ Editor.app/Contents/MacOS/Property\ List\ Editor /System/Library/CoreServices/SystemFolderLocalizations/ru.lproj/SystemFolderLocalizations.strings

  4. Вносим необходимые правки
    Добавляем новое поле кнопкой «Add child», в поле «Key» указываем англоязычное название папки, которая будет автоматически переводиться системой, проверяем заранее выставленный тип «String» и в поле «Value» указываем необходимый нам перевод. Сохраняем файл.
    Property List Editor SystemFolderLocalizations

  5. Активируем изменения
    Для того, чтобы Finder смог перевести название папки внутри неё должен быть создан невидимый служебный файл .localized, отсылающий к той локализации, которую мы только что правили. Создаём его командой «touch» в Терминале:
    touch /путь к локализуемой папке/.localized
    Для удобства можно прописать название команды, а путь указать обычным перетягиванием локализуемой папки из окна Finder в Терминал.

    Terminal

    Изменения в Finder произойдут не моментально, поэтому или делаем выход из пользователя ( → Завершить сеанс), или вводим перезапускаем Finder принудительно:
    killall Finder

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

О Дмитрий Кирьянов

Старший инженер технической поддержки одного из известных в Мак-сообществе авторизованного Apple сервис-центра.
Метки , , , , . Закладка постоянная ссылка.