localize.dev

الوثائق / Ruby on Rails

ترجمة Rails لنماذج ERB، تلقائيًا

نقل النص الثابت في نماذج Rails ERB إلى استدعاءات t() مع ملف YAML في config/locales، الجمع مع count:، اللغات المتاحة ومفتاح تبديل اللغة، في أمر واحد أو طلب سحب.

كيف يعمل

يصبح النص في نماذج ERB <%= t('key', name: @user.name) %>، مع عناصر نائب %{name} في config/locales/<locale>.yml، تحت مفتاح اللغة. تفصل علامات المنطق الجمل؛ <script> و <code> تُترك كما هي.

ثلاثي على عدد يصبح جمعًا مع نماذج one: و other: (وما يلزم كل لغة)، يُستدعى باستخدام count:.

قبل وبعد

المخرجات الحقيقية للمحرك لهذا الملف. في تشغيل حقيقي، يقوم النموذج المستضاف بتسمية المفاتيح من السياق.

app/views/carts/show.html.erb · قبل
<h1>Welcome back, <%= @user.name %>!</h1>
<% if @items.any? %>
  <p><%= @items.count %> <%= @items.count == 1 ? 'item' : 'items' %> in your cart</p>
<% end %>
<input placeholder="Search products" type="text">
app/views/carts/show.html.erb · بعد
<h1><%= t('show.welcome_back', name: @user.name) %></h1>
<% if @items.any? %>
  <p><%= t('show.items_in_your_cart', count: @items.count) %></p>
<% end %>
<input placeholder="<%= t('show.search_products') %>" type="text">
config/locales/en.yml
en:
  show:
    welcome_back: Welcome back, %{name}!
    items_in_your_cart:
      one: "%{count} item in your cart"
      other: "%{count} items in your cart"
    search_products: Search products

ما يضيفه الإعداد

الإعداد الأول يقوم بإعداد ترجمة Rails إذا لم يكن المشروع يحتوي عليه بعد:

  • config.i18n.available_locales في config/application.rb
  • إجراء switch_locale حول الإجراء في ApplicationController: ?locale=، ثم ملف تعريف ارتباط lang، ثم Accept-Language

قم بتشغيله

يتطلب CLI إصدار Node.js 22 أو أحدث، لا شيء آخر: npx يقوم بتشغيله دون إضافة package.json إلى المشروع. لا يوجد Node على جهازك؟ إجراء GitHub أدناه يقوم بتشغيله لك.

npx localize-dev login

# Preview, then write the changes
npx localize-dev run --dry-run -l es,fr,de
npx localize-dev run -l es,fr,de

# Or open a pull request instead
npx localize-dev pr -l es,fr,de

أو أضف إجراء GitHub واحصل على طلب سحب عند كل دفعة. جربه على الكود الخاص بك أولاً في ملعب.