Update drush ai:translate-entity command to accept multiple ids

Created on 21 July 2025, 1 day ago

Hi everyone! I saw the ai:translate command and I prepared a patch to even accept multiple comma-separated values.

Feature request
Status

Needs review

Version

2.0

Component

AI Translate

Created by

🇮🇹Italy ralkeon

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Merge Requests

Comments & Activities

  • Issue created by @ralkeon
  • 🇮🇹Italy ralkeon

    Here's the patch!

  • First commit to issue fork.
  • Pipeline finished with Failed
    1 day ago
    Total: 193s
    #552959
  • 🇮🇳India anjaliprasannan

    I created the MR and when I tried the command

     ddev drush ai:translate-entity node 21,22 en es
    

    it resulted in

     [warning] Undefined array key "_columns" AiTranslateCommands.php:105
     [warning] foreach() argument must be of type array|object, null given AiTranslateCommands.php:105
     [warning] foreach() argument must be of type array|object, null given AiTranslateCommands.php:121
     [error]  Drupal\Core\Database\IntegrityConstraintViolationException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'title' cannot be null: INSERT INTO "node_field_data" ("nid", "vid", "type", "langcode", "status", "uid", "title", "created", "changed", "promote", "sticky", "default_langcode", "revision_translation_affected", "content_translation_source", "content_translation_outdated") VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5, :db_insert_placeholder_6, :db_insert_placeholder_7, :db_insert_placeholder_8, :db_insert_placeholder_9, :db_insert_placeholder_10, :db_insert_placeholder_11, :db_insert_placeholder_12, :db_insert_placeholder_13, :db_insert_placeholder_14), (:db_insert_placeholder_15, :db_insert_placeholder_16, :db_insert_placeholder_17, :db_insert_placeholder_18, :db_insert_placeholder_19, :db_insert_placeholder_20, :db_insert_placeholder_21, :db_insert_placeholder_22, :db_insert_placeholder_23, :db_insert_placeholder_24, :db_insert_placeholder_25, :db_insert_placeholder_26, :db_insert_placeholder_27, :db_insert_placeholder_28, :db_insert_placeholder_29); Array
    (
        [:db_insert_placeholder_0] => 21
        [:db_insert_placeholder_1] => 94
        [:db_insert_placeholder_2] => page
        [:db_insert_placeholder_3] => en-gb
        [:db_insert_placeholder_4] => 0
        [:db_insert_placeholder_5] => 1
        [:db_insert_placeholder_6] => Test
        [:db_insert_placeholder_7] => 1753097174
        [:db_insert_placeholder_8] => 1753097179
        [:db_insert_placeholder_9] => 0
        [:db_insert_placeholder_10] => 0
        [:db_insert_placeholder_11] => 1
        [:db_insert_placeholder_12] => 
        [:db_insert_placeholder_13] => und
        [:db_insert_placeholder_14] => 0
        [:db_insert_placeholder_15] => 21
        [:db_insert_placeholder_16] => 94
        [:db_insert_placeholder_17] => page
        [:db_insert_placeholder_18] => es
        [:db_insert_placeholder_19] => 1
        [:db_insert_placeholder_20] => 0
        [:db_insert_placeholder_21] => 
        [:db_insert_placeholder_22] => 1753097334
        [:db_insert_placeholder_23] => 1753097334
        [:db_insert_placeholder_24] => 0
        [:db_insert_placeholder_25] => 0
        [:db_insert_placeholder_26] => 0
        [:db_insert_placeholder_27] => 1
        [:db_insert_placeholder_28] => und
        [:db_insert_placeholder_29] => 0
    )
     in Drupal\mysql\Driver\Database\mysql\ExceptionHandler->rethrowNormalizedException() (line 83 of /var/www/html/core/modules/mysql/src/Driver/Database/mysql/ExceptionHandler.php). 
     [warning] SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'title' cannot be null: INSERT INTO "node_field_data" ("nid", "vid", "type", "langcode", "status", "uid", "title", "created", "changed", "promote", "sticky", "default_langcode", "revision_translation_affected", "content_translation_source", "content_translation_outdated") VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5, :db_insert_placeholder_6, :db_insert_placeholder_7, :db_insert_placeholder_8, :db_insert_placeholder_9, :db_insert_placeholder_10, :db_insert_placeholder_11, :db_insert_placeholder_12, :db_insert_placeholder_13, :db_insert_placeholder_14), (:db_insert_placeholder_15, :db_insert_placeholder_16, :db_insert_placeholder_17, :db_insert_placeholder_18, :db_insert_placeholder_19, :db_insert_placeholder_20, :db_insert_placeholder_21, :db_insert_placeholder_22, :db_insert_placeholder_23, :db_insert_placeholder_24, :db_insert_placeholder_25, :db_insert_placeholder_26, :db_insert_placeholder_27, :db_insert_placeholder_28, :db_insert_placeholder_29); Array
    (
        [:db_insert_placeholder_0] => 21
        [:db_insert_placeholder_1] => 94
        [:db_insert_placeholder_2] => page
        [:db_insert_placeholder_3] => en-gb
        [:db_insert_placeholder_4] => 0
        [:db_insert_placeholder_5] => 1
        [:db_insert_placeholder_6] => Test
        [:db_insert_placeholder_7] => 1753097174
        [:db_insert_placeholder_8] => 1753097179
        [:db_insert_placeholder_9] => 0
        [:db_insert_placeholder_10] => 0
        [:db_insert_placeholder_11] => 1
        [:db_insert_placeholder_12] => 
        [:db_insert_placeholder_13] => und
        [:db_insert_placeholder_14] => 0
        [:db_insert_placeholder_15] => 21
        [:db_insert_placeholder_16] => 94
        [:db_insert_placeholder_17] => page
        [:db_insert_placeholder_18] => es
        [:db_insert_placeholder_19] => 1
        [:db_insert_placeholder_20] => 0
        [:db_insert_placeholder_21] => 
        [:db_insert_placeholder_22] => 1753097334
        [:db_insert_placeholder_23] => 1753097334
        [:db_insert_placeholder_24] => 0
        [:db_insert_placeholder_25] => 0
        [:db_insert_placeholder_26] => 0
        [:db_insert_placeholder_27] => 1
        [:db_insert_placeholder_28] => und
        [:db_insert_placeholder_29] => 0
    )
    
    

    Also attaching other results
    when I execute ddev drush ai:translate-entity node 16,18,20 fr en
    results in Message: Translation already exists.
    where I have not added french as language.

    for ddev drush ai:translate-entity node 16,18,20 en es
    again results in Message: Translation already exists.
    whereas there is translations for 16, 18 but for node 20 does not have translation,

    for ddev drush ai:translate-entity node 20 en es
    results in

    ddev drush ai:translate-entity node 20 en es
     [warning] Undefined array key "_columns" AiTranslateCommands.php:105
     [warning] foreach() argument must be of type array|object, null given AiTranslateCommands.php:105
     [warning] foreach() argument must be of type array|object, null given AiTranslateCommands.php:121
     [warning] Undefined array key "_columns" AiTranslateCommands.php:105
     [warning] foreach() argument must be of type array|object, null given AiTranslateCommands.php:105
     [warning] foreach() argument must be of type array|object, null given AiTranslateCommands.php:121
     [warning] Call to a member function checkIfEmpty() on null
     [error]  Message: There was some issue with content translation.
    
  • 🇧🇬Bulgaria valthebald Sofia

    I don't think we need to wait until 2.0 to have this feature, downgrading target version

Production build 0.71.5 2024