Skip to content

Vérifie l'existance d'une traduction d'une entité avec une sélection de langue

Permet de voir les traductions remplis ou non pour une entité sur une sélection de langue.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
SELECT
    exam_question.id AS question_id,
    exam_part.exam_part_template_code AS part_code,
    translation.content AS translation_content,
    translation.translatable_id AS translation_id,
    language.code AS translation_language
FROM
    `exam_question`
        CROSS JOIN `language`
        LEFT JOIN `translation` ON `translation`.`translatable_id` = `exam_question`.`id`
        AND `translation`.`translatable_type` = 'ExamQuestion'
        AND `translation`.`language_code` = `language`.`code`
        JOIN `exam_part` ON `exam_part`.`id` = `exam_question`.`exam_part_id`
WHERE
    `exam_part`.`product_code` = 'GENERAL'
  AND `exam_part`.`exam_part_template_code` in('SORTING', 'SORTING_WORD', 'SORTING_LETTER')
  AND `exam_part`.`deleted_at` IS NULL
  AND `exam_question`.`deleted_at` IS NULL
  AND language.code IN('en', 'fr', 'es');

Exemple de résultat

question_id part_code translation_content translation_id translation_language
1 'SORTING' NULL 1 'en'
1 'SORTING' '{"title":"Selectionnez la bonne reponse : We __ shoes online."}' NULL 'fr'
1 'SORTING' NULL NULL 'es'
2 'SORTING' NULL NULL 'en'
2 'SORTING' NULL NULL 'fr'
...

Avec ce résultat on peut en conclure que la question 1 possède seulement une traduction française, on peut par la suite utiliser directement ce résultat pour mettre à jour les traductions existante ou créer celles manquantes.

Keywords

translation cross join language