Quando si importa una vista tramite file YAML, la sua traduzione non viene inclusa in automatico.
Per avere anche la traduzione, serve importare il dato prendendolo dal database.
( Si prende come esempio la vista "Insegnamenti" di UNIPVd9 .)
Nel database, infatti, la traduzione è presente all'interno di due macro tabelle: config e config_snapshot. Per vedere il dato si può andare all'interno del database del sito con un client (ad esempio phpMyAdmin) e portarsi in "config" (e poi "config_snapshot"). Da qui si cerca la vista (ad esempio "views.view.insegnamenti") con il comando:
...
Usciranno due risultati: uno in italiano ed uno in inglese. Il contenuto del BLOB è il dato che ci interessa; il file in italiano è più grande rispetto a quello inglese, perchè quest'ultimo contiene solo le parti che sono state tradotte, mentre il primo l'intera vista.
Andiamo sul server all'interno della cartella che vogliamo usare come sorgente per importare i dati, ad esempio la cartella /myconf-insegnamenti nella root di UNIPVd9 (se non esiste, possiamo crearla), e creiamo due nuovi file:
...
Una volta che sono pronti i due file, si esegue lo script chiamato "script-views-traduzioni.sh" dalla root dell'Ateneo, che contiene il seguente codice (se non esiste, lo si crea):
Code Block |
---|
#!/bin/bash DRUSHSCRIPT=/drupal/dim_prod/dim/external/drush10/vendor/bin/drush DRUSHALIAS=/drupal/dim_prod/dim/var/build/drush_aliases/8 SITE=unipvd9 array=( cdl00 ) ENV=prod DENV=prod MYCONF=myconf-insegnamenti REPLACESQL=replace.en.insegnamenti.sql DENV=prod for i in "${array[@]}" do # per il calcolo grossolano dei tempi start=`date +%s` rm /shared/dim_prod/${ENV}/${SITE}/${i}/files/myconf/*.yml cp /shared/dim_prod/${ENV}/${SITE}/${MYCONF}/*.yml /shared/dim_prod/${ENV}/${SITE}/${i}/files/myconf/ cp /shared/dim_prod/${ENV}/${SITE}/${MYCONF}/*.sql /shared/dim_prod/${ENV}/${SITE}/${i}/files/myconf/ cd /shared/dim_prod/${ENV}/${SITE}/${i}/files/myconf/ echo "---------- ${i} ${DENV} ------------" echo "-- importazione viste --" $DRUSHSCRIPT --alias-path=$DRUSHALIAS @${SITE}-${i}.${DENV} config-import --partial --yes echo "-- importazione delle traduzioni delle viste --" $DRUSHSCRIPT --alias-path=$DRUSHALIAS @${SITE}-${i}.${DENV} sqlc < ${REPLACESQL} echo "-- pulizia cache --" $DRUSHSCRIPT --alias-path=$DRUSHALIAS @${SITE}-${i}.${DENV} cr end=`date +%s` runtime=$((end-start)) echo "-- ${i} done in ${runtime} sec" echo "---------------------" cd /shared/dim_prod/${ENV}/${SITE}/ done |
...
Questo codice fa in modo di rimuovere tutti i file contenuti nella cartella files/myconf del singolo sito , quindi e di copiare della cartella sorgente (es: myconf-insegnamenti) nella cartella /myconf i file YAML ed SQL. Quindi
Si sposta quindi all'interno della cartella /myconf ed importa il file YAML usando "drush config-import" ed il file SQL usando "drush sqlc < file_sorgente".
Infine ricostruisce le cache e si riporta alla root del sito (es: /shared/dim_prod/prod/unipvd9).