Rails I18n och elegant meddelande som går till JavaScript
Processen med "internationalisering" innebär vanligtvis att abstrahera alla strängar och andra lokalspecifika bitar (som datum- eller valutaformat) från din applikation. Processen med "lokalisering" innebär att tillhandahålla översättningar och lokaliserade format för dessa bitar.
Hur I18n i Ruby on Rails fungerar
❝Mitt språks gränser är gränserna för min värld.❞ -Ludwig Wittgenstein. Med över 6 909 distinkta språk i världen och de flesta av dem skiljer sig åt på så många olika sätt (t.ex. i pluraliseringsregler), är det svårt att tillhandahålla specifika verktyg för internalisering. Men för obegränsade språkbarriärer fokuserar Rails I18n API på:
- ger support för engelska och liknande språk direkt
- gör det enkelt att anpassa och utöka allt för andra språk
Som en del av denna lösning kan varje statisk sträng i Räls ramverk – t.ex. Active Record-valideringsmeddelanden, tid- och datumformat – har internationaliserats, så lokalisering av en Rails-applikation betyder att "åsidosätta" dessa standardinställningar.
1.1 Bibliotekets övergripande arkitektur
Således är Ruby I18n pärla uppdelad i två delar:
- I18n-ramverkets publika API – en Ruby-modul med offentliga metoder som definierar hur biblioteket fungerar
- En standardbackend (som avsiktligt heter Enkel backend) som implementerar dessa metoder
Som användare bör du alltid bara komma åt de offentliga metoderna på I18n-modulen, men det är användbart att veta om funktionerna i backend.
Här är det enklaste sättet att implementera internationalisering i JavaScript;
a) Använd skriptet
<script type=”text/javascript”>
window.I18n = <%= I18n.backend.send(:translations).to_json.html_safe %>
.
b) Du kan lägga till koden nedan JS fil;
I18n[“en-US”][“alpha”][“välkommen”];
c) Få hjälp av applikationshjälpare genom att lägga till metoden nedan;
def current_translations
@translations ||= I18n.backend.send(:translations)
@translations[I18n.locale].med_indifferent_access
slutet
d) Backend måste initieras om det inte redan har gjort det.
I18n.backend.send(:init_translations) om inte I18n.backend.initialized?
# nu kan du säkert dumpa översättningarna till json
e) Åberopa nedanstående i din application.html.erb ;
<script type=”text/javascript”>
window.I18n = <%= current_translations.to_json.html_safe %>
.
f) För att undvika att behöva känna till den aktuella lokaliteten i JavaScript.
I18n["alfa"]["välkommen"]; Eller I18n.alfa.välkommen;
g) Olika bibliotek och plugins för internationalisering och lokalisering:
i18next – https://github.com/i18next/i18next
I18n pärla – https://github.com/svenfuchs/i18n
requirejs-i18n – https://requirejs.org/docs/api.html#i18n
På RailsCarma vi använder de senaste verktygen och teknikerna för att bygga en unik applikation. Kolla upp vår portfölj för att förstå hur vi hjälper till att förändra formen på mjukvaruindustrin. För att veta mer om Ruby on Rails Development, kontakta oss nu!