Habituellement, la meilleure façon d’ajouter une nouvelle langue à Discourse est de créer une pull request comme décrit dans “How to add a new language”.
Le guide suivant est pour vous, si vous souhaitez utiliser une langue qui ne peut pas être ajoutée au cœur pour le moment.
Ajouter une locale qui étend une locale existante
Disons que vous souhaitez ajouter une locale espagnole pour le Mexique (es_MX). Discourse fournit déjà une locale espagnole (es), donc c’est assez facile.
La structure de répertoire de votre plugin doit ressembler à ceci :
custom-locales
├── assets
│ └── locales
│ └── es_MX.js.erb
├── config
│ └── locales
│ ├── client.es_MX.yml
│ └── server.es_MX.yml
└── plugin.rb
plugin.rb
Vous ajoutez la nouvelle locale en appelant register_locale.
-
Le premier paramètre est requis et doit être le code de la langue.
-
name(le nom anglais de la locale) etnativeName(le nom affiché dans l’interface utilisateur) peuvent être omis si le code de la langue existe dansnames.yml. -
fallbackLocaleest le code de la langue qui doit être utilisé comme secours pour les traductions manquantes et les règles de pluralisation.
# name: custom-locales
# about: Un plugin d'exemple pour l'ajout de nouvelles locales.
# version: 1.0
register_locale("es_MX", name: "Spanish (Mexico)", nativeName: "Español (México)", fallbackLocale: "es")
\u003clocale\u003e.js.erb
Le contenu de assets/locales/es_MX.js.erb est assez simple – assurez-vous de remplacer le code de la locale dans ce fichier par celui dont vous avez besoin.
//= require locales/i18n
\u003c%= JsLocaleHelper.output_locale(:es_MX) %\u003e
Fichiers de traduction dans config/locales
Les fichiers config/locales/client.es_MX.yml et config/locales/server.es_MX.yml contiennent les traductions que vous souhaitez utiliser. Vous n’avez pas besoin de fournir toutes les traductions nécessaires à Discourse. La locale de secours (fallbackLocale) et l’anglais seront utilisés en cas de traductions manquantes.
Ajouter une nouvelle locale
Ajouter une locale complètement nouvelle, qui ne devrait pas se rabattre sur une locale existante, demande un peu plus de travail.
La structure de répertoire de votre plugin doit ressembler à ceci :
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
Vous ajoutez la nouvelle locale en appelant register_locale.
-
Le premier paramètre est requis et doit être le code de la langue.
-
name(le nom anglais de la locale) etnativeName(le nom affiché dans l’interface utilisateur) peuvent être omis si le code de la langue existe dansnames.yml, sinon vous devriez les définir également. -
pluraldécrit les règles de pluralisation de la langue. Jetez un œil àplurals.rbpour vous inspirer. Vous pouvez également omettre ce paramètre siplurals.rbcontient déjà votre code de langue.
# name: custom-locales
# about: Un plugin d'exemple pour l'ajout de nouvelles locales.
# version: 1.0
register_locale(
"foo",
name: "Foo",
nativeName: "Foo Bar",
plural: {
keys: [:one, :other],
rule: lambda { |n| n == 1 ? :one : :other }
}
)
\u003clocale\u003e.js.erb
Le contenu de assets/locales/foo.js.erb est assez simple – assurez-vous de remplacer le code de la locale dans ce fichier par celui dont vous avez besoin.
//= require locales/i18n
\u003c%= JsLocaleHelper.output_locale(:foo) %\u003e
Fichiers de traduction dans config/locales
Les fichiers config/locales/client.foo.yml et config/locales/server.foo.yml contiennent les traductions que vous souhaitez utiliser. Vous n’avez pas besoin de fournir toutes les traductions nécessaires à Discourse. Les traductions anglaises seront utilisées en cas de traductions manquantes.
FAQ
Discourse ne charge pas ma locale. Quel est le problème ?
Assurez-vous que le plugin est activé, que vous avez correctement enregistré la locale et que tous les fichiers requis existent et portent le code de langue correct dans le nom du fichier. Discourse ne charge pas les locales lorsqu’il détecte des fichiers manquants.
\u003csmall\u003eCe document est contrôlé par version - suggérez des modifications sur github.\u003c/small\u003e