Di solito, il modo migliore per aggiungere una nuova lingua a Discourse è creare una pull request come descritto in “How to add a new language”.
La seguente guida è per te, se desideri utilizzare una lingua che non può essere aggiunta al core al momento.
Aggiunta di una locale che estende una locale esistente
Supponiamo che tu voglia aggiungere una locale spagnola per il Messico (es_MX). Discourse fornisce già una locale spagnola (es), quindi è piuttosto facile.
La struttura della directory del tuo plugin dovrebbe essere la seguente:
custom-locales
├── assets
│ └── locales
│ └── es_MX.js.erb
├── config
│ └── locales
│ ├── client.es_MX.yml
│ └── server.es_MX.yml
└── plugin.rb
plugin.rb
Aggiungi la nuova locale chiamando register_locale.
-
Il primo parametro è obbligatorio e deve essere il codice della lingua.
-
name(il nome inglese della locale) enativeName(il nome mostrato nell’interfaccia utente) possono essere omessi, se il codice della lingua esiste innames.yml. -
fallbackLocaleè il codice della lingua che dovrebbe essere utilizzato come fallback per le traduzioni mancanti e le regole di pluralizzazione.
# name: custom-locales
# about: An example plugin for adding new locales.
# version: 1.0
register_locale("es_MX", name: "Spanish (Mexico)", nativeName: "Español (México)", fallbackLocale: "es")
<locale>.js.erb
Il contenuto di assets/locales/es_MX.js.erb è piuttosto semplice: assicurati di sostituire il codice della locale all’interno di quel file con quello di cui hai bisogno.
//= require locales/i18n
<%= JsLocaleHelper.output_locale(:es_MX) %>
File di traduzione in config/locales
I file config/locales/client.es_MX.yml e config/locales/server.es_MX.yml contengono le traduzioni che desideri utilizzare. Non è necessario fornire tutte le traduzioni necessarie a Discourse. Verranno utilizzate le traduzioni inglesi in caso di traduzioni mancanti.
Aggiunta di una nuova locale
L’aggiunta di una locale completamente nuova, che non dovrebbe fare affidamento su una locale esistente, richiede un po’ più di lavoro.
La struttura della directory del tuo plugin dovrebbe essere la seguente:
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
Aggiungi la nuova locale chiamando register_locale.
-
Il primo parametro è obbligatorio e deve essere il codice della lingua.
-
name(il nome inglese della locale) enativeName(il nome mostrato nell’interfaccia utente) possono essere omessi, se il codice della lingua esiste innames.yml, altrimenti dovresti impostarli comunque. -
pluraldescrive le regole di pluralizzazione della lingua. Dai un’occhiata aplurals.rbper ispirazione. Inoltre, puoi omettere questo parametro seplurals.rbcontiene già il tuo codice lingua.
# name: custom-locales
# about: An example plugin for adding new locales.
# 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
Il contenuto di assets/locales/foo.js.erb è piuttosto semplice: assicurati di sostituire il codice della locale all’interno di quel file con quello di cui hai bisogno.
//= require locales/i18n
<%= JsLocaleHelper.output_locale(:foo) %>
File di traduzione in config/locales
I file config/locales/client.foo.yml e config/locales/server.foo.yml contengono le traduzioni che desideri utilizzare. Non è necessario fornire tutte le traduzioni necessarie a Discourse. Le traduzioni inglesi verranno utilizzate in caso di traduzioni mancanti.
FAQ
Discourse non carica la mia locale. Cosa c’è di sbagliato?
Assicurati che il plugin sia abilitato, che tu abbia registrato correttamente la locale e che tutti i file richiesti esistano e abbiano il codice lingua corretto nel nome del file. Discourse non carica le locali quando rileva file mancanti.
Questo documento è controllato tramite versione - suggerisci modifiche su github.