Ruby on Rails är en kraftfull ramverk för webbutveckling som gör det enkelt att bygga dynamiska webbapplikationer. En av de mest användbara funktionerna i Rails är dess stöd för internationalisering (I18n), vilket gör det möjligt för utvecklare att skapa applikationer som kan anpassas för olika språk och kulturer. I denna artikel kommer vi att utforska hur man implementerar I18n i Ruby on Rails, med exempel och bästa praxis.
Internationalisering, ofta förkortat som I18n, är processen att designa en applikation så att den kan anpassas till olika språk och regioner utan att behöva ändra koden. Detta innebär att man separerar text och andra kulturella element från applikationens logik, vilket gör det enklare att översätta och anpassa applikationen för olika användare.
Rails har inbyggt stöd för I18n, vilket gör det enkelt att implementera. Här är stegen för att komma igång:
Om du inte redan har en Rails-applikation, kan du skapa en ny med följande kommando:
rails new my_i18n_app
Översättningar lagras i YAML-filer i mappen config/locales
. Rails kommer automatiskt att ladda dessa filer. Skapa en fil för varje språk du vill stödja. Till exempel, för svenska och engelska, skapa följande filer:
config/locales/sv.yml config/locales/en.yml
Fyll i dessa filer med översättningar. Här är ett exempel på hur sv.yml
kan se ut:
sv: hello: "Hej" goodbye: "Adjö"
Och för en.yml
:
en: hello: "Hello" goodbye: "Goodbye"
För att använda översättningarna i dina vyer, kan du använda t
-metoden. Här är ett exempel på hur du kan använda översättningarna i en vy:
<%= t('hello') %>
Detta kommer att visa "Hej" om språket är inställt på svenska, eller "Hello" om det är inställt på engelska.
Du kan ställa in standard språk för din applikation i application.rb
filen. Lägg till följande rad:
config.i18n.default_locale = :sv
Detta kommer att ställa in svenska som standard språk för din applikation.
För att låta användare byta språk dynamiskt, kan du skapa en metod i din ApplicationController
. Här är ett exempel:
class ApplicationController < ActionController::Base before_action :set_locale def set_locale I18n.locale = params[:locale] || I18n.default_locale end end
Du kan sedan lägga till länkar i dina vyer för att byta språk:
<%= link_to 'Svenska', url_for(locale: 'sv') %> <%= link_to 'English', url_for(locale: 'en') %>
Du kan också använda översättningar i dina modeller och kontroller. Här är ett exempel på hur du kan använda översättningar i en modell:
class User < ApplicationRecord validates :name, presence: { message: I18n.t('errors.messages.blank') } end
Detta gör att du kan använda översättningar för valideringsmeddelanden, vilket gör dem mer flexibla och anpassningsbara.
Rails I18n har också stöd för pluralisering, vilket gör det möjligt att hantera olika former av substantiv beroende på antal. Här är ett exempel på hur du kan definiera pluralisering i din YAML-fil:
sv: apples: one: "1 äpple" other: "%{count} äpplen"
För att använda detta i din vy kan du göra följande:
<%= t('apples', count: @apple_count) %>
Detta kommer att visa "1 äpple" om @apple_count
är 1, eller "%{count} äpplen" för andra värden.
Förutom textöversättningar kan du också hantera format och datum. Rails I18n gör det enkelt att anpassa datumformat för olika språk. Här är ett exempel:
sv: date: formats: default: "%Y-%m-%d"
Du kan sedan använda l
-metoden för att formatera datum:
<%= l(Date.today) %>
Det är viktigt att testa dina översättningar för att säkerställa att de fungerar som förväntat. Du kan använda RSpec för att skriva tester för dina översättningar. Här är ett exempel:
RSpec.describe "I18n" do it "should translate hello" do expect(I18n.t('hello')).to eq("Hej") end end
Internationalisering i Ruby on Rails är en kraftfull funktion som gör det möjligt för utvecklare att skapa applikationer som kan anpassas för olika språk och kulturer. Genom att använda Rails inbyggda I18n-stöd kan du enkelt hantera översättningar, pluralisering och datumformat. Genom att följa de bästa praxis som beskrivs i denna artikel kan du skapa en mer tillgänglig och användarvänlig applikation för en global publik.
Oavsett om du bygger en liten webbplats eller en stor applikation, är det viktigt att tänka på internationalisering från början. Med Rails I18n kan du göra din applikation redo för världen!
© 2024 RailsInsights. All rights reserved.