Rails Insights

Rails I18n: Посібник з Інтернаціоналізації в Ruby on Rails

У сучасному світі веб-розробки важливо, щоб ваші додатки могли обслуговувати користувачів з різних країн та культур. Інтернаціоналізація (I18n) є ключовим аспектом цього процесу, і Ruby on Rails надає потужні інструменти для реалізації цієї функціональності. У цьому посібнику ми розглянемо, як налаштувати та використовувати I18n у вашому Rails-додатку.

Що таке I18n?

I18n, або інтернаціоналізація, - це процес адаптації програмного забезпечення для підтримки різних мов і культур. Це дозволяє вашому додатку бути доступним для більшої кількості користувачів, що, в свою чергу, може призвести до збільшення вашої аудиторії та покращення користувацького досвіду.

Основи I18n у Ruby on Rails

Ruby on Rails має вбудовану підтримку для I18n, що робить його простим у використанні. Основні компоненти I18n у Rails включають:

  • Файли локалізації: Це YAML-файли, які містять переклади для різних мов.
  • Методи перекладу: Rails надає методи для отримання перекладів з файлів локалізації.
  • Налаштування локалі: Ви можете налаштувати мову, яка буде використовуватися у вашому додатку.

Створення файлів локалізації

Файли локалізації зазвичай розміщуються в каталозі config/locales. Кожен файл має розширення .yml і містить ключі та їх відповідні переклади. Ось приклад файлу локалізації для української мови:

# config/locales/uk.yml
uk:
  hello: "Привіт"
  goodbye: "До побачення"
  welcome: "Ласкаво просимо до нашого додатку!"

Ви також можете створити файли для інших мов, наприклад, для англійської:

# config/locales/en.yml
en:
  hello: "Hello"
  goodbye: "Goodbye"
  welcome: "Welcome to our application!"

Використання методів перекладу

Щоб використовувати переклади у вашому додатку, ви можете скористатися методом t (переклад). Ось приклад використання:

<%= t('hello') %>

Цей код виведе "Привіт", якщо локаль встановлена на українську. Якщо ви хочете вивести текст для іншої локалі, ви можете змінити локаль перед викликом методу:

I18n.locale = :en
<%= t('hello') %>

Цей код виведе "Hello".

Налаштування локалі

За замовчуванням Rails використовує англійську мову. Щоб змінити локаль на українську, ви можете додати наступний рядок у файл application.rb:

# config/application.rb
config.i18n.default_locale = :uk

Це налаштування забезпечить, що ваш додаток використовуватиме українську мову за замовчуванням.

Динамічні переклади

Іноді вам потрібно передати параметри у ваші переклади. Для цього ви можете використовувати динамічні переклади. Ось приклад:

# config/locales/uk.yml
uk:
  greeting: "Привіт, %{name}!"

Використання динамічного перекладу виглядає так:

<%= t('greeting', name: 'Олександр') %>

Цей код виведе "Привіт, Олександр!".

Переклади для моделей та валідацій

Ви також можете використовувати I18n для перекладу повідомлень про помилки у ваших моделях. Наприклад, якщо у вас є модель User, ви можете додати валідації:

class User < ApplicationRecord
  validates :name, presence: true
end

Тепер ви можете додати переклад для повідомлення про помилку:

# config/locales/uk.yml
uk:
  activerecord:
    errors:
      models:
        user:
          attributes:
            name:
              blank: "не може бути порожнім"

Тепер, якщо користувач не введе ім'я, ви отримаєте перекладене повідомлення про помилку.

Використання I18n у вигляді форм

Коли ви створюєте форми, ви можете використовувати I18n для перекладу заголовків та підписів. Ось приклад:

<%= form_with model: @user do |form| %>
  
<%= form.label :name, t('user.name') %> <%= form.text_field :name %>
<%= form.submit t('submit') %>
<% end %>

У цьому прикладі заголовок для поля введення і кнопка відправки будуть перекладені.

Тестування локалізації

Тестування локалізації є важливим етапом у розробці вашого додатку. Ви можете використовувати RSpec для перевірки, чи правильно працюють ваші переклади. Ось приклад тесту:

require 'rails_helper'

RSpec.describe "Translations", type: :request do
  it "returns the correct translation for hello" do
    I18n.locale = :uk
    expect(I18n.t('hello')).to eq("Привіт")
  end
end

Цей тест перевіряє, чи повертає метод t правильний переклад для ключа hello.

Висновок

Інтернаціоналізація є важливим аспектом сучасних веб-додатків, і Ruby on Rails надає зручні інструменти для її реалізації. Використовуючи I18n, ви можете легко адаптувати свій додаток для різних мов і культур, що дозволить вам досягти більшої аудиторії та покращити користувацький досвід.

Сподіваємося, що цей посібник допоможе вам зрозуміти основи I18n у Ruby on Rails і надихне вас на створення багатомовних додатків!

Published: August 12, 2024

© 2024 RailsInsights. All rights reserved.