Локализация блога Ghost

Локализация состоит из 3х частей

  1. Внешняя часть
  2. Админка
  3. Системная часть

Внешняя часть

Внешняя его часть легко локализуется при помощи правки шаблона - сперва скачиваем в админке шаблон, потом переименовываем полученный zip, обратно загружаем, получаем новую папку в content/templates, правим шаблоны, перезагружаем блог, радуемся. Но некоторые части мне не удалось найти в шаблоне, видимо они подгружаются из системы.

Админка

Мне лично не мешает то что все надписи на английском, всё интуитивно понятно, но вот не все ведут блоги единолично, кто-то является компанией, где куча редакторов, некоторые из которых не могут быстро адаптироваться в этом интерфейсе...

Сколько не грепал готовый сайт - не смог найти нигде в локализациях строчки из админки, они жестко забиты в js приложение админки, можно просто открыть js приложение

nano /core/built/assets/ghost.min-*.js

Искать нужные строчки из админки и заменять на свои.

Делать это руками не по-админски, поэтому, напишем такой скриптик для начала

#!/bin/bash
F=$1

re ()
{
sed -i -re "s|${1}|${2}|g" "${F}"
}

re "Title & description" "Заголовок и описание"

Сохраним его с именем rus_admin.sh сделаем на него флаг исполнения

chmod +x rus_admin.sh

Ну и попробуем выполнить (внимание, путь до вашего ghost уникальный, может не совпадать с моим, завивит от сборки, поэтому смотрите что там).

Еще перед выполнением сделайте бекап файлика, вдруг чего поломается...

bash ./rus_admin.sh ghost.min-a8ab0ab912a793319197ba23bc890afd.js

Потом я перезапустил ghost и увидел вот такое

Т.е. работает...

Идем дальше, добавим замену строк на всю админку, только будьте аккуратны, если будем делать замену по словам delete или другим односложным строкам из одного слова, есть великая вероятность наткнуться на замену самого кода или переименовать саму функцию,  я руководствуюсь тем, что в названиях функций нет пробелов и заменяемые строки достаточно длинные (2-3 слова через пробел)

У меня получился вот такой скрипт

#!/bin/bash
F=$1

re ()
{
str='s|"'${1}'"|"'${2}'"|g'
echo $str
sed -i -re "${str}" "${F}"
}
resub ()
{
sed -i -re "s|${1}|${2}|g" "${F}"
}
re "View site" "Просмотр сайта"
re "Manage" "Управление"
re "Posts" "Публикации"
re "Pages" "Страницы"
re "Your posts" "Публикации"
re "Your pages" "Страницы"
re "Staff" "Пользователи"
re "All posts" "Все публикации"
re "All pages" "Все страницы"
re "Draft posts" "Черновики"
re "Published posts" "Опубликованные"
re "Published pages" "Опубликованные"
re "Scheduled posts" "Запланированные"
re "Scheduled pages" "Запланированные"
re "Featured posts" "Особые публикации"
re "Featured pages" "Особые страницы"
re "Search authors" "Поиск по авторам"
re "Search tags" "Поиск по тегам"
resub 'Sort by:' 'Сортировка:'
re "Newest" "Новее"
re "Oldest" "Старее"
re "Recently updated" "Недавние изменения"
re "All authors" "Все авторы"
re "All tags" "Все теги"
re "You haven[\]'t created any pages yet!" "У вас нет страниц."
re "Create a new page" "Создать страницу"
re "New page" "Новая страница"
re "New post" "Новая публикация"
re "Staff users" "Пользователи"
re "Invite people" "Пригласить"
re "Active users" "Активные"
re "Suspended users" "Отключенные"
#re "Owner" "Владелец"
#re "Author" "Автор"
re "Invite a New User" "Пригласить"
re "Save" "Сохранить"
re "Saved" "Сохранено"



re "Settings" "Настройки"
re "General" "Основные"
re "Design" "Дизайн"
re "Tags" "Теги"
re "Code injection" "Внедрение кода"
re "Save settings" "Сохранить настройки"
re "Title & description" "Заголовок и описание"
re "The details used to identify your publication around the web" "Подробности, идентифицирующие ваши публикации в интернете"
re "The name of your site" "Название сайта"
re "Used in your theme, meta data and search results" "Описание, используется в вашей теме, мета-данных и результатах поиска"
re "Site timezone" "Часовой пояс сайта"
re "Set the time and date of your publication, used for all published posts" "Задает время и дату ваших публикаций"
re "Publication Language" "Язык публикаций"
re "Upload Image" "Загрузить картинку"
re "Publication icon" "Иконка публикаций"
re "Publication logo" "Логотип публикаций"
re "Publication cover" "Фон публикаций"
re "Expand" "Раскрыть"
re "Close" "Закрыть"
re "The local time here is currently " "Текущее локальное время "
re "Integrations" "Интеграции"
resub "Ghost allows you to inject code into the top and bottom of your theme files without editing them. This allows for quick modifications to insert useful things like tracking codes and meta tags." "Ghost поддерживает внедрение кода в раздел head и в нижнюю часть страницы. Это позволяет вставлять всякие счетчики, аналитики, скрипты и собственные мета-теги"

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

Если кому-то нужна локализованная админка - напишите комментарий, я попробую пересобрать из исходников всё это дело...

Эта локализация действует и на приложение Ghost для компа

Сборка Ghost из исходников для локализации админки и системной части.

sudo apt-get update && sudo apt-get install yarn
yarn global add knex-migrator grunt-cli ember-cli bower
git clone --recurse-submodules https://github.com/TryGhost/Ghost.git
cd Ghost

Заходим в /core/client/app/templates, правим шаблончики

Потом компилим систему

yarn setup

Потом собираем prod версию

grunt prod

Теперь можно хватать js админки и закидывать в свой сайт...

Более подробно об этом написано на Github, если есть какие-либо вопросы - обращайтесь, разберемся вместе.

Показать комментарии