Rails I18n und elegante Nachrichtenübergabe an JavaScript
The process of “internationalization” usually means to abstract all strings and other locale specific bits (such as date or currency formats) out of your application. The process of “localization” means to provide translations and localized formats for these bits.
So funktioniert I18n in Ruby on Rails
❝Die Grenzen meiner Sprache sind die Grenzen meiner Welt.❞ ‒Ludwig Wittgenstein. Da es auf der Welt über 6.909 verschiedene Sprachen gibt und sich die meisten davon auf so viele verschiedene Arten unterscheiden (z. B. in den Pluralisierungsregeln), ist es schwierig, spezifische Werkzeuge für die Internalisierung bereitzustellen. Für uneingeschränkte Sprachbarrieren konzentriert sich die Rails I18n-API jedoch auf Folgendes:
- Bereitstellung von sofort einsatzbereiter Unterstützung für Englisch und ähnliche Sprachen
- Dies macht es einfach, alles für andere Sprachen anzupassen und zu erweitern
Als Teil dieser Lösung wird jede statische Zeichenfolge in der Rails-Framework – e.g. Active Record validation messages, time and date formats – has been internationalized, so Lokalisierung of a Rails application means “over-riding” these defaults.
1.1 Die Gesamtarchitektur der Bibliothek
Somit ist der Edelstein Ruby I18n in zwei Teile geteilt:
- The public API of the i18n framework – a Ruby module with public methods that define how the library works
- Ein Standard-Backend (das absichtlich benannt ist Einfach Backend), das diese Methoden implementiert
Als Benutzer sollten Sie immer nur auf die öffentlichen Methoden des I18n-Moduls zugreifen, es ist jedoch hilfreich, die Fähigkeiten des Backends zu kennen.
Hier der einfachste Weg, die Internationalisierung in JavaScript zu implementieren;
a) Verwenden Sie das Skript
<script type=”text/javascript”>
window.I18n = <%= I18n.backend.send(:translations).to_json.html_safe %>
</script>
B) Sie können den folgenden Code hinzufügen JS Datei;
I18n[“en-US”][“alpha”][“welcome”];
C) Holen Sie sich Hilfe von der Anwendungshelfer durch Hinzufügen der folgenden Methode;
def current_translations
@translations ||= I18n.backend.send(:translations)
@translations[I18n.locale].with_indifferent_access
Ende
D) The backend needs to be initialized if it hasn’t been already.
I18n.backend.send(:init_translations), es sei denn, I18n.backend.initialized?
# Jetzt können Sie die Übersetzungen sicher in JSON speichern
e) Rufen Sie das Folgende in Ihrem auf application.html.erb ;
<script type=”text/javascript”>
window.I18n = <%= current_translations.to_json.html_safe %>
</script>
F) Um zu vermeiden, dass Sie das aktuelle Gebietsschema in JavaScript kennen müssen.
I18n[“alpha”][“welcome”]; Or I18n.alpha.welcome;
G) Verschiedene Bibliotheken und Plugins für Internationalisierung & Lokalisierung:
i18next – https://github.com/i18next/i18next
I18n gem – https://github.com/svenfuchs/i18n
requirejs-i18n – https://requirejs.org/docs/api.html#i18n
Bei SchienenCarma Wir verwenden die neuesten Tools und Techniken, um einzigartige Anwendungen zu erstellen. Kasse Unser Portfolio um zu verstehen, wie wir dazu beitragen, die Form der Softwareindustrie zu verändern. Um mehr über Ruby on Rails Development zu erfahren, Nehmen Sie jetzt Kontakt mit uns auf!