Normalerweise ist der beste Weg, eine neue Sprache zu Discourse hinzuzufügen, die Erstellung eines Pull Requests, wie unter „https://meta.discourse.org/t/how-to-add-a-new-language/14970“ beschrieben.
Die folgende Anleitung ist für Sie gedacht, falls Sie eine Sprache verwenden möchten, die derzeit nicht in den Kern integriert werden kann.
Hinzufügen eines Gebietsschemas, das ein bestehendes Gebietsschema erweitert
Angenommen, Sie möchten ein Spanisch-Gebietsschema für Mexiko (es_MX) hinzufügen. Discourse wird bereits mit einem Spanisch-Gebietsschema (es) ausgeliefert, daher ist dies recht einfach.
Die Verzeichnisstruktur Ihres Plugins sollte wie folgt aussehen:
custom-locales
├── assets
│ └── locales
│ └── es_MX.js.erb
├── config
│ └── locales
│ ├── client.es_MX.yml
│ └── server.es_MX.yml
└── plugin.rb
plugin.rb
Sie fügen das neue Gebietsschema hinzu, indem Sie register_locale aufrufen.
-
Der erste Parameter ist erforderlich und muss der Sprachcode sein.
-
name(der englische Name des Gebietsschemas) undnativeName(der in der Benutzeroberfläche angezeigte Name) können weggelassen werden, wenn der Sprachcode innames.ymlexistiert. -
fallbackLocaleist der Sprachcode, der als Fallback für fehlende Übersetzungen und Pluralisierungsregeln verwendet werden soll.
# name: custom-locales
# about: Ein Beispiel-Plugin zum Hinzufügen neuer Gebietsschemata.
# version: 1.0
register_locale("es_MX", name: "Spanish (Mexico)", nativeName: "Español (México)", fallbackLocale: "es")
<locale>.js.erb
Der Inhalt von assets/locales/es_MX.js.erb ist recht einfach – stellen Sie sicher, dass Sie den Gebietsschema-Code innerhalb dieser Datei durch den benötigten ersetzen.
//= require locales/i18n
<%= JsLocaleHelper.output_locale(:es_MX) %>
Übersetzungsdateien in config/locales
Die Dateien config/locales/client.es_MX.yml und config/locales/server.es_MX.yml enthalten die Übersetzungen, die Sie verwenden möchten. Sie müssen nicht alle von Discourse benötigten Übersetzungen bereitstellen. Die englischen Übersetzungen werden im Falle fehlender Übersetzungen verwendet.
Hinzufügen eines neuen Gebietsschemas
Das Hinzufügen eines komplett neuen Gebietsschemas, das nicht auf ein bestehendes Gebietsschema zurückfallen soll, ist etwas mehr Arbeit.
Die Verzeichnisstruktur Ihres Plugins sollte wie folgt aussehen:
custom-locales
├── assets
│ └── locales
│ └── foo.js.erb
├── config
│ └── locales
│ ├── client.foo.yml
│ └── server.foo.yml
├── lib
│ └── javascripts
│ └── locale
│ ├── message_format
│ │ └── foo.js
│ └── moment_js
│ └── foo.js
│ └── moment_js_timezones
│ └── foo.js
└── plugin.rb
plugin.rb
Sie fügen das neue Gebietsschema hinzu, indem Sie register_locale aufrufen.
-
Der erste Parameter ist erforderlich und muss der Sprachcode sein.
-
name(der englische Name des Gebietsschemas) undnativeName(der in der Benutzeroberfläche angezeigte Name) können weggelassen werden, wenn der Sprachcode innames.ymlexistiert, andernfalls sollten Sie diese ebenfalls festlegen. -
pluralbeschreibt die Pluralisierungsregeln der Sprache. Schauen Sie zur Inspiration inplurals.rbnach. Sie können diesen Parameter auch weglassen, wennplurals.rbIhren Sprachcode bereits enthält.
# name: custom-locales
# about: Ein Beispiel-Plugin zum Hinzufügen neuer Gebietsschemata.
# version: 1.0
register_locale(
"foo",
name: "Foo",
nativeName: "Foo Bar",
plural: {
keys: [:one, :other],
rule: lambda { |n| n == 1 ? :one : :other }
}
)
<locale>.js.erb
Der Inhalt von assets/locales/foo.js.erb ist recht einfach – stellen Sie sicher, dass Sie den Gebietsschema-Code innerhalb dieser Datei durch den benötigten ersetzen.
//= require locales/i18n
<%= JsLocaleHelper.output_locale(:foo) %>
Übersetzungsdateien in config/locales
Die Dateien config/locales/client.foo.yml und config/locales/server.foo.yml enthalten die Übersetzungen, die Sie verwenden möchten. Sie müssen nicht alle von Discourse benötigten Übersetzungen bereitstellen. Die englischen Übersetzungen werden im Falle fehlender Übersetzungen verwendet.
FAQ
Discourse lädt mein Gebietsschema nicht. Was ist falsch?
Stellen Sie sicher, dass das Plugin aktiviert ist, Sie das Gebietsschema korrekt registriert haben und alle erforderlichen Dateien existieren und den korrekten Sprachcode im Dateinamen haben. Discourse lädt Gebietsschemata nicht, wenn es fehlende Dateien erkennt.
Dieses Dokument wird versioniert – schlagen Sie Änderungen auf github vor.