Como migrar conteúdo multilíngue do CSV para o Drupal 8?

8

Venho de ler Usando o novo API / Módulo de Migração Drupal 8 e Migração de Conteúdo: CSV para Drupal 8, o processo para criar uma migração é muito claro e funciona, mas não consigo encontrar como migrar conteúdo para um site multilíngue. Na visão geral da Migrate API, não consigo encontrar nenhuma informação sobre isso.

Então, como posso migrar conteúdo multilíngue?

ATUALIZAÇÃO: Encontrei um exemplo: https://github.com/drupal/drupal/tree/8.3.x/core/modules/migrate/tests/modules/migrate_external_translated_test

No momento, pude migrar o conteúdo em inglês, mas não as traduções.

Adrian Cid Almaguer
fonte
11
Isenção de responsabilidade: nunca criei um site multilíngue antes. I was able for the moment to migrate the english contentAqui está minha sugestão / sugestão para novatos em vários idiomas: você não pode apenas fingir que acabou de criar o site D8 em inglês e agora deseja torná-lo multilíngue?
precisa saber é o seguinte
@NoSssweat Eu tenho um site multilíngue. Eu tenho no arquivo CSV as informações em duas línguas e eu preciso para criar a partir deste ficheiro os nós em duas línguas (o nó em Inglês e sua tradução em francês)
Adrian Cid Almaguer
@NoSssweat, você pode postar uma resposta com as etapas para fazer isso?
Adrian Cid Almaguer
Texto @NoSssweat com formato e campos de texto #
Adrian Cid Almaguer
Acontece que eu estou muito fora, espero que esses 2 vídeos ajudem você
Não Sssweat

Respostas:

3

Migrar do básico do CSV

Como declarado em outro lugar, o código de migração apenas recentemente (a partir das 8.2.x ou 8.3.x) pareceu se estabilizar e há muitas instruções antigas, desatualizadas e incorretas nas postagens de blog na web. Dito isto, tive cerca de 75% de sucesso seguindo as instruções desses dois conjuntos de posts de Lucas Hedding e Ada Hernández na Mtech.

Há um exemplo de configuração de Lucas da base de código de exemplo no Github que aborda os conceitos básicos do primeiro exemplo de postagem de blog em CSV, mas não inclui nenhum auxiliar na migração de imagens ou arquivos.

Há outro repositório de exemplo do Wunderkraut que inclui uma migração de exemplo CSV com migração de usuário, taxonomia, artigos e imagens aqui:

Migração multilíngue do CSV

Eu recomendo começar com os conceitos básicos de CSV acima e depois passar para esta seção. Você realmente precisa ter scripts de migração separados para cada idioma.

Eu recebi mais 20% do caminho com esta postagem no blog, que descreve os detalhes de como modificar um arquivo yaml de migração para oferecer suporte a conteúdo multilíngüe, incluindo, para ativar translations: truena destinationseção, adicionar o langcode:campo na processseção para obter entidades lingüísticas (como nós e termos) e para adicionar o language:parâmetro para processamento de campo multilíngue específico.

Eu achei a parte mais difícil de descobrir como importar campos de arquivo ou imagem (os 5% restantes para mim). Nenhum dos exemplos acima demonstra como importar os campos alt da imagem corretamente. No meu caso, tenho um campo de imagem que compartilha a imagem, mas o atributo alt é traduzível. Eu descobri como importar o campo alt básico para o nó de idioma padrão sozinho, mas estou tendo problemas para fazer com que a importação use o mesmo texto alternativo fid, mas diferente, para outros idiomas. A solução foi descoberta pelo usuário @Vasi adicionando um campo adicional chamado content_translation_sourcena etapa do processo da migração de idioma estrangeiro YAML. Mais detalhes com exemplo completo aqui:

Discussão Adicional

Finalmente, há algumas discussões em andamento aqui também:

JamesWilson
fonte
11
Eu criei uma pergunta de acompanhamento para o meu problema restante aqui: drupal.stackexchange.com/questions/229750/...
JamesWilson
Obrigado, vou testar o código com a informação em sua resposta
Adrian Cid Almaguer
11
Acontece que a chave que falta aqui é adicionar um content_translation_sourcecampo na processseção de tradução para o idioma estrangeiro, o valor deve ser definido como o código do idioma importado. Veja a resposta de Vasi no link acima. Também atualizarei minha postagem para refletir essa correção.
precisa saber é o seguinte
3

você precisa das duas tarefas de migração, os arquivos yml na pasta de migração:

migrate.migration.external_translated_test_node.yml
migrate.migration.external_translated_test_node_translation.yml

Em seguida, no plug-in (MigrateExternalTranslatedTestSource.php), é necessário ler o arquivo .csv (in initializeIterator()) na estrutura da matriz de importação:

  /**
   * The data to import.
   *
   * @var array
   */
   protected $import = [
    ['name' => 'cat', 'title' => 'Cat', 'lang' => 'English'],
    ['name' => 'cat', 'title' => 'Chat', 'lang' => 'French'],
    ['name' => 'cat', 'title' => 'Gato', 'lang' => 'Spanish'],
    ['name' => 'dog', 'title' => 'Dog', 'lang' => 'English'],
    ['name' => 'dog', 'title' => 'Chien', 'lang' => 'French'],
    ['name' => 'monkey', 'title' => 'Monkey', 'lang' => 'English'],
   ];
rémy
fonte