Skip to content

Localizzazione

Marco Zampetti edited this page Feb 18, 2021 · 2 revisions

La gestione multilingua è abilitata su questi modelli:

  • Articoli
  • Schede generiche
  • Schede Ministro
  • Schede Dipartimento
  • Schede Progetti
  • Schede News
  • Interviste
  • Interventi
  • Comunicati stampa

Contenuti sul CMS

I campi traducibili di ciascun modello sono identificati l'icona del mappamondo di fianco alla label.

Nel CMS, per creare la versione in lingua inglese di una risorsa fare click sull'ingranaggio a destra di fianco alla tab "Italiano" e aggiungere il locale "English".

Per poter salvare l'oggetto è necessario compilare tutti i campi traducibili obbligatori.

I campi di tipo contenuto modulare possono essere copiati da quelli presenti nella lingua già esistente per velocizzare la compilazione. E' possibile copiare solo la struttura dei moduli, o anche il loro contenuto.

Quando una risorsa è stata tradotta in entrambe le lingue, nel frontend viene mostrato un link che permette agli utenti di accedere alla versione tradotta nell'altra lingua.

In lingua inglese sono omessi i seguenti contenuti della pagina: Argomenti, Potrebbero Interessarti, Elenco degli Argomenti prima del footer.

Sono generati automaticamente i metatag nell'head per istruire i motori di ricerca riguardo alla presenza della stessa risorsa in una lingua diversa.

Header e footer con lingua italiana

I partials di layout site-nav.html.slim e site-footer.html.slim sono forzati in lingua italiana tramite I18n.with_locale(:it). Questo permette di mostrare sia label che link solamente a pagine italiane.

- I18n.with_locale(:it)
  header.it-header-wrapper data-datocms-noindex=true lang="it"
    .it-header-slim-wrapper.px-0
      .container
        .row
          .col-12
            .it-header-slim-wrapper-content.px-2
              = link_to t("owner_name"),
                "//www.governo.it/",
                target: "_blank",
                rel: "noopener",
                class: "navbar-brand font-weight-semibold"

    .it-nav-wrapper
      .it-header-center-wrapper
        .container
   [...]

Rendere un modello traducibile

Nell'area Settings, sezione Modelli, selezionare il modello da tradurre e abilitare l'opzione "traducibile" sui singoli campi che devono poter accettare valori diversi in base alla lingua.

La traduzione del modelli è al momento hardcoded nel frontend, dunque è necessario configurare manualmente la creazione delle risorse in lingua inglese nel repository, anche se queste vengono già tradotte nel CMS.

Questo un esempio di come vengono generate le pagine degli Articoli in lingua inglese

dato.tap do |dato|
  I18n.with_locale(:en) do
    locale = :en
    I18n.fallbacks[:en] = [:en]

    visible_articles = PresentationHelper.published_articles(dato.articles)

    visible_articles.each do |article|
      proxy "/#{dato.news_page.slug}/#{dato.articles_index.slug}/#{locale}/#{article.slug}/index.html",
            "/templates/article.html",
            locals: {page: article},
            locale: locale
    end

Per mostrare il link di cambio lingua nella pagina, includere nel template il partial relativo, come da esempio:

= partial "partials/headers/header-basic",
  locals: {page: page, subs: children} do

  = content_for :col_one
    = partial "partials/switch-locale-button",
      locals: {page: page}
Clone this wiki locally