Ruby on Rails

AI-перевод для Ruby on Rails с помощью Lingo.dev CLI

Что такое Ruby on Rails?

Ruby on Rails — это серверный фреймворк для веб-приложений на языке Ruby. Он предоставляет стандартные структуры для баз данных, веб-сервисов и веб-страниц, следуя паттерну модель-представление-контроллер (MVC).

Что такое Lingo.dev CLI?

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

О данном руководстве

В этом гайде рассказывается, как настроить Lingo.dev CLI в приложении Ruby on Rails. Вы узнаете, как создать проект на Rails, настроить пайплайн перевода и посмотреть результат.

Шаг 1. Создайте проект на Rails

  1. Создайте приложение на Rails:

    rails new rails-demo
    
  2. Перейдите в директорию проекта:

    cd rails-demo
    
  3. Сгенерируйте контроллер с представлением:

    bin/rails generate controller Home index
    

Шаг 2. Создайте исходный контент

  1. Откройте файл локализации на английском языке по пути config/locales/en.yml.

  2. Добавьте немного текста для перевода:

    en:
      home:
        title: "Welcome"
        greeting: "Hello from Rails + Lingo.dev"
    

Шаг 3. Настройте CLI

В корне проекта создайте файл i18n.json:

{
  "$schema": "https://lingo.dev/schema/i18n.json",
  "version": "1.10",
  "locale": {
    "source": "en",
    "targets": ["es"]
  },
  "buckets": {
    "yaml-root-key": {
      "include": ["config/locales/[locale].yml"]
    }
  }
}

Этот файл определяет:

  • какие файлы должен переводить Lingo.dev CLI
  • между какими языками переводить

В этом примере конфигурация переводит YAML-файлы с английского на испанский.

[locale] — это плейсхолдер, который заменяется во время выполнения. Он гарантирует, что контент читается из одного места (например, config/locales/en.yml) и записывается в другое место (например, config/locales/es.yml).

Чтобы узнать больше, смотрите конфигурацию i18n.json.

Шаг 4. Переведите контент

  1. Зарегистрируйтесь в Lingo.dev.

  2. Войдите в Lingo.dev через CLI:

    npx lingo.dev@latest login
    
  3. Запустите pipeline перевода:

    npx lingo.dev@latest run
    

    CLI создаст файл config/locales/es.yml для хранения переведённого контента и файл i18n.lock для отслеживания переведённого (чтобы избежать лишних повторных переводов).

Шаг 5. Используйте переводы

  1. Настройте маршруты на основе локали в config/routes.rb:

    Rails.application.routes.draw do
      scope "(:locale)", locale: /en|es/ do
        root "home#index"
      end
    end
    
  2. Настройте обработку локалей в app/controllers/application_controller.rb:

    class ApplicationController < ActionController::Base
      before_action :set_locale
    
      private
    
      def set_locale
        I18n.locale =
          params[:locale].presence_in(I18n.available_locales.map(&:to_s)) ||
          I18n.default_locale
      end
    
      def default_url_options
        { locale: I18n.locale }
      end
    end
    
  3. Используйте вспомогательный метод t для загрузки локализованных строк во view:

    <h1><%= t("home.title") %></h1>
    <p><%= t("home.greeting") %></p>
    
  4. Запустите сервер Rails:

    bin/rails server
    
  5. Перейдите по следующим URL-адресам: