Сеня рядом и Белла пришел. Былое
Семантический I18n Второй пост про то как работать с текстами интерфейсов эффективно. Для этого мы по прежнему будем говорить про инструменты i18n, но держать в голове, что их используют не только для интернационализации, но и для управления текстами в принципе. В прошлый раз, мы пришли к тому, что i18n надо использовать в любом случае, так как эти библиотеки закрывают множество вопросов, например, плюрализацию. Так же с их помощью мы сокращаем дублирование, за счет переиспользования ключей. Но в какой-то момент, даже эта система тяжелеет. Когда в проекте тысячи ключей, то снова появляется дублирование и неиспользуемые ключи (легче всего их убрать если у вас gettext). А еще появляется ощущение постоянной грязи, места, в котором все навалено. Можно ли от этого избавиться? Независимо от того, какие решения мы рассмотрим, нужно понимать, что переводы это грязь в любом случае. Максимум что мы можем сделать, это замедлить скорость энтропии, но убрать ее невозможно. Так какие же есть варианты? Первый вариант это неймспейсы (https://www.i18next.com/principles/namespaces). Мы можем разделить все ключи на разные большие блоки, которые обычно хранятся в разных файлах. Делать это можно по фичам или по слоям. Например переводы для писем в одном месте, а переводы для фронтенда в другом. Сюда же добавляем вложенность. Например если у нас есть меню, то мы можем расположить переводы внутри ключа “top-menu”. Ниже пример с хлебными крошками: { "breadcrumbs": { "home.index": "Главная", "admin": { "home.index": "Админка", "colleges": { "index": "Колледжи", "create": "Новый", "edit": "{{name}}" }, "users.index": "Пользователи", "users.create": "Новый", "users.edit": "{{name}}", "colleges_team_members.index": "Сотрудники колледжей", "colleges_team_members.create": "Новый сотрудник", "colleges_team_members.edit": "{{name}}" } } } Дальше всех в этом отношении продвинулись Rails. I18n там встроен во все слои сразу причем с учетом семантики. Все что я сейчас напишу ниже, можно подсмотреть тут: https://github.com/hexlet-basics/hexlet-basics/tree/main/config/locales Возьмем модели. Для каждой модели и её атрибутов создаются ключи, отражающие иерархию переводов. ru: activerecord: models: user: "Пользователь" attributes: base: name: “Название” user: name: "Имя" email: "Электронная почта" Когда мы вызываем атрибуты модели в формах или представлениях, Rails автоматически подставляет переводы, если они заданы в config/locales. Например, в форме для модели User, если мы вызовем <%= f.label :name %>, Rails отобразит перевод для user.name как "Имя", если он указан. Если он не указан, Rails попробует взять общее название по ключу base, затем попробует отработать fallback (https://www.i18next.com/principles/fallback) и в самом конце, попробует подставить имя ключа преобразованное в текст (первая буква заглавная). Сообщения об ошибках также поддерживают i18n. Если у нас есть валидации, например, для обязательного заполнения атрибута name, мы можем указать сообщение об ошибке. Модель: class User < ApplicationRecord validates :name, presence: true validates :email, presence: true, uniqueness: true end Переводы: ru: activerecord: errors: models: user: attributes: name: blank: "Имя не может быть пустым" Тоже самое касается любого другого слоя. Единственное место где ключи создаются как попало это шаблоны, в которых нет никаких правил заранее, кроме одного. Rails позволяет использовать формат ключа с точкой в начале .keyname, который означает относительный путь. В таком случае слева автоматически подставляется путь до шаблона. Пример: https://github.com/hexlet-basics/hexlet-basics/blob/main/app/views/web/account/profiles/edit.html.slim#L24 Ссылки: Телеграм | Youtube | VK
Смые дорогие комплектующие для ПК
Процессор Intel Xeon Platinum 8180 Цена:650000 тыс. рублей 187Модель Xeon Platinum 8180m является улучшенной моделью Xeon Platinum 8180. Этот потрясающий процессор от фирмы Intel был представлен в 2018 год. Устройство обладает невероятными мощностями, однако при этом стоит баснословных денег. Но за что же свои кровные отдают держатели серверов? Xeon Platinum 8180m располагает 28 ядрами и 56 потоками, что делает процессор невероятно быстрым и способным справиться с многозадачностью. К тому же тактовая частота в 2,5 ГГц разгоняется до 3,8 ГГц, позволяя выжать из ресурсов устройства максимум...