Neuen Locale aus Plugin hinzufügen

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) und nativeName (der in der Benutzeroberfläche angezeigte Name) können weggelassen werden, wenn der Sprachcode in names.yml existiert.

  • fallbackLocale ist 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) und nativeName (der in der Benutzeroberfläche angezeigte Name) können weggelassen werden, wenn der Sprachcode in names.yml existiert, andernfalls sollten Sie diese ebenfalls festlegen.

  • plural beschreibt die Pluralisierungsregeln der Sprache. Schauen Sie zur Inspiration in plurals.rb nach. Sie können diesen Parameter auch weglassen, wenn plurals.rb Ihren 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.

17 „Gefällt mir“

How can I customize the language in the translation plugin? I see that some of the plugins in the language cannot be translated,

for example: discourse-details, discourse-local-dates, discourse-narrative-bot, discourse-nginx-performance-report

3 „Gefällt mir“