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 del modello cdl00 di UNIPV. Eliminiamo tutti i file all'interno di questa cartella -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 e di copiare della cartella sorgente (es: myconf-insegnamenti) nella cartella /myconf i file YAML ed SQL.
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).