В процессе ежедневного «траблшутинга» (устранения неполадок) Маков мы неоднократно сталкивались с ошибками, связанными с локализацией операционной системы. Что имеется в виду? Пользователь запускает программу, которая, к примеру, взламывает 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».
- Загружаем программу редактирования файлов .strings и .plist
Существует большое количество программ, которые помогут нам в реализации этой задачи: Plist Editor Pro, Pref Setter, StringsEditor, но они или платные, или требуют дополнительной настройки. Нами была найдена программа, входящая когда-то в среду разработки Xcode от Apple – Property List Editor. Энтузиаст, Richard H. сделал её доступной для загрузки по этой ссылке. Загружаем, извлекаем из архива и копируем в папку «Программы». -
Открываем файл «SystemFolderLocalizations.strings» в программе редакторе с правами супер-пользователя
Для изменения файла локализации прав доступа обычного пользователя нам не хватит, потребуется работа с правами операционной системы. Для этого из Служебных программ/Утилит запускаем программу Терминал, вводим код и при запросе пароля администратора вводим и его:
sudo /Applications/Property\ List\ Editor.app/Contents/MacOS/Property\ List\ Editor /System/Library/CoreServices/SystemFolderLocalizations/ru.lproj/SystemFolderLocalizations.strings
-
Вносим необходимые правки
Добавляем новое поле кнопкой «Add child», в поле «Key» указываем англоязычное название папки, которая будет автоматически переводиться системой, проверяем заранее выставленный тип «String» и в поле «Value» указываем необходимый нам перевод. Сохраняем файл.
-
Активируем изменения
Для того, чтобы Finder смог перевести название папки внутри неё должен быть создан невидимый служебный файл .localized, отсылающий к той локализации, которую мы только что правили. Создаём его командой «touch» в Терминале:
touch /путь к локализуемой папке/.localized
Для удобства можно прописать название команды, а путь указать обычным перетягиванием локализуемой папки из окна Finder в Терминал.Изменения в Finder произойдут не моментально, поэтому или делаем выход из пользователя ( → Завершить сеанс), или вводим перезапускаем Finder принудительно:
killall Finder
Если при первом запуске программы система выдаёт вам ошибку о повреждённости программы и предлагает её удалить, временно отключите Gatekeeper в Системных настройках вашего Мака ( → Системные настройки → Защита и безопасность → Во вкладке «Общие» отметить «Разрешать загрузки программ из: любого источника»)
На этом всё. Теперь можно ощутить себя в полноценном русском окружении, не режущим глаз, но при этом осознавать исключительную правильность работы операционной системы в родной языковой локализации уже для неё.