Como implantar tradução da interface do usuário?

12

As seqüências que eu traduzo em "Tradução da interface do usuário" / admin / config / regional / translate não são exportáveis ​​por "Gerenciamento de configuração" / admin / config / development / configuration para mim. Estou esquecendo de algo?

Gostaria de automatizar esse processo com hook_update_Nou drush cim -y.

Qual é a maneira correta de implantar automaticamente a "Tradução da interface do usuário" no Drupal 8?

  1. Devo fazê-lo hook_update_N()?
  2. Devo criar algum mytranslations.poarquivo personalizado na pasta de idiomas?

Eu vejo que existe locale_translate_batch_import_files()qual pode ser usado.

milkovsky
fonte
O que você acabou fazendo?
amigos estão
@RelaXNow, ainda não implementei uma solução. A importação / exportação AFAICS da tradução da interface do usuário ainda não está automatizada. Eu planejei ir com um hook_update_N. Dê uma olhada na sugestão de @ Berdir.
milkovsky
Você conhece o novo Drupal Console e seu comando translation:sync? Infelizmente, não consigo encontrar informações detalhadas sobre esse comando, mas talvez ele faça o que você está procurando.
Philipp Michael
1
Criei um módulo para isso: drupal.org/project/customtranslations Divirta-se.
Geek-merlin #
No nosso caso, fizemos um teste com o Potx ( github.com/kgaut/drupal-potx ) que está sendo executado apenas com o Drush. Para conseguir isso "facilmente", criamos um arquivo .sh que está executando o comando drush para colocar o arquivo de tradução nos módulos / customizado / traduções para cada módulo e cada idioma. Em seguida, os arquivos são adicionados ao repositório gitlab do projeto e pode ser facilmente importar na produção durante uma implantação ...
Promo

Respostas:

6

Você tem que fazer isso sozinho. O @rpayanm respondeu onde você pode fazê-lo manualmente, você precisará examinar o código e, por exemplo, implementar comandos drush que permitem exportar e importar novamente. A automação é relativamente fácil, exporta, sincroniza com o outro servidor e importa novamente.

Parece um projeto que existe: Drush Language Commands .

Você pode colocar traduções padrão em um módulo, mas elas são importadas apenas quando você instala esse módulo. hook_update_N()foi projetado para ser executado apenas uma vez; portanto, você precisará escrever uma nova função sempre que quiser executá-la (e ainda precisará exportá-la primeiro).

Berdir
fonte
3
drupal.org/project/drush_language agora tem uma versão D8 (dev).
Hugo
1
Você pode verificar a forma que importar traduções do /admin/config/regional/translate/importon core/modules/locale/src/Form/ImportForm.php.
precisa saber é
drupal.org/project/drush_language resolve o problema!
milkovsky
4

Função auxiliar para adicionar traduções personalizadas:

/**
 * 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();
}

Uso em um gancho de atualização:

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

Você pode exportar as strings traduzidas usadas pelo seu site A (admin / config / regional / translate / export) e depois importá-las para outro site (admin / config / regional / translate / import).

rpayanm
fonte
1
Valeu. Eu sei isso. Mas não é uma implantação automática. Gostaria de automatizar esse processo com hook_update_Nou drush cim -y. Vou adicionar isso à descrição.
milkovsky
1

Parece que também deve ser possível fazer isso escrevendo um script para executar comandos a partir da sincronização de localidade Drush , embora eu não tenha tentado esse módulo.

bdsl
fonte
2
Por favor, use os comentários para este, não é realmente a resposta ...
mixerowsky
1
Eu não tinha certeza se estava certo ou não, então pensei em postá-lo como resposta e deixar que outras pessoas votassem para cima ou para baixo. Por favor, vote para baixo se você acha que está errado.
precisa saber é
1

Como aexl mencionado nos comentários sobre a questão, você pode usar o personalizado Traduções módulo. Com isso, você só precisa incluir drush locale-updateno seu script de implantação.

bdsl
fonte