Come posso distribuire la traduzione dell'interfaccia utente?


12

Le stringhe che traduco in "Traduzione dell'interfaccia utente" / admin / config / regional / translate non sono esportabili da "Gestione della configurazione" / admin / config / development / configuration per me. Mi sto perdendo qualcosa?

Vorrei automatizzare questo processo con hook_update_No drush cim -y.

Qual è il modo corretto di distribuire automaticamente "Traduzione dell'interfaccia utente" in Drupal 8?

  1. Dovrei farlo dentro hook_update_N()?
  2. Devo creare un mytranslations.pofile personalizzato nella cartella della lingua?

Vedo che c'è locale_translate_batch_import_files()quale potrebbe essere usato.


Cosa sei finito a fare?
Boy Baukema

@RelaXNow, non ho ancora implementato una soluzione. L'importazione / esportazione AFAICS della traduzione dell'interfaccia utente non è ancora automatizzata. Ho programmato di andare con a hook_update_N. Dai un'occhiata al suggerimento di @ Berdir.
milkovsky

Conosci la nuova console Drupal e il suo comando translation:sync? Purtroppo non riesco a trovare informazioni dettagliate su questo comando, ma forse fa quello che stai cercando.
Philipp Michael,

1
Ho creato un modulo per questo: drupal.org/project/customtranslations Buon divertimento.
geek-merlin,

Nel nostro caso abbiamo fatto un test con Potx ( github.com/kgaut/drupal-potx ) che funziona solo con Drush. Per ottenere questo "facilmente" abbiamo creato un file .sh che sta eseguendo il comando drush per mettere il file di traduzione in moduli / custom / traduzioni per ciascun modulo e ogni lingua. Quindi questi file vengono aggiunti al repository gitlab del progetto e possono essere facilmente importati in produzione durante una distribuzione ...
Promo

Risposte:


6

Devi farlo tu stesso. @rpayanm ha risposto dove puoi farlo manualmente, dovrai guardare lì il codice e, ad esempio, implementare i comandi drush che ti consentono di esportarlo e importarlo di nuovo. L'automazione è quindi relativamente semplice, l'esportazione, la sincronizzazione con l'altro server e l'importazione di nuovo.

Sembra un progetto che aiuti con ciò che esiste: Drush Language Commands .

Puoi inserire traduzioni predefinite in un modulo, ma queste vengono importate solo quando installi quel modulo. hook_update_N()è progettato per essere eseguito una sola volta, quindi è necessario scrivere una nuova funzione ogni volta che si desidera farlo (e comunque è necessario esportarlo prima).


3
drupal.org/project/drush_language ora ha una versione D8 (dev).
Hugo,

1
È possibile controllare la forma che importare traduzioni da /admin/config/regional/translate/importon core/modules/locale/src/Form/ImportForm.php.
rpayanm,


4

Funzione di supporto per aggiungere traduzioni personalizzate:

/**
 * Helper to manually add a single translation string.
 *
 * @param string $source_string
 *   Source string.
 * @param string $langcode
 *   The langcode.
 * @param string $translated_string
 *   Translated string.
 */
function MYMODULE_add_translation($source_string, $langcode, $translated_string) {
  // Find existing source string.
  $storage = \Drupal::service('locale.storage');
  $string = $storage->findString(['source' => $source_string]);
  if (is_null($string)) {
    $string = new SourceString();
    $string->setString($source_string);
    $string->setStorage($storage);
    $string->save();
  }
  // Create translation. If one already exists, it will be replaced.
  $translation = $storage->createTranslation([
    'lid' => $string->lid,
    'language' => $langcode,
    'translation' => $translated_string,
  ]);
  $translation->save();
}

Utilizzo in un hook di aggiornamento:

/**
 * Add translations.
 */
function MYMODULE_update_8002() {
  MYMODULE_add_translation('Adjust', 'de', 'Anpassen');
}

4

Puoi esportare le stringhe tradotte utilizzate dal tuo sito A (admin / config / regional / translate / export) e quindi importarle sull'altro sito (admin / config / regional / translate / import).


1
Grazie. Lo so. Ma non è una distribuzione automatica. Vorrei automatizzare questo processo con hook_update_No drush cim -y. Aggiungerò questo alla descrizione.
milkovsky

1

Sembra che dovrebbe anche essere possibile farlo scrivendo uno script per eseguire comandi dalla sincronizzazione locale di Drush , anche se non ho provato quel modulo da solo.


2
per favore usa i commenti per questo, non è proprio la risposta ...
mixerowsky

1
Non ero sicuro che fosse giusto o no, quindi ho pensato di pubblicarlo come risposta e lasciare che altre persone lo votassero su o giù. Si prega di votare verso il basso se si ritiene che sia sbagliato.
bdsl,

1

Come già indicato nei commenti sulla domanda, è possibile utilizzare il modulo Traduzioni personalizzate . Con ciò dovresti solo includere drush locale-updatenello script di distribuzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.