I need a AHK script to implement copying multiple lines of text to the corresponding multiple lines in the translation box

I need a AHK script to implement copying multiple lines of text to the corresponding multiple lines in the translation box

emoji
  • Probability score: 0.6  

    Question improvement suggestion: Provide more specific details about the desired functionality of the AHK script, such as how the lines of text are structured and how they should correspond in the translation box.  

    In the meantime, based on the information you have provided, here is a suggested answer to your question:  

    Hello! To create an AutoHotkey (AHK) script that copies multiple lines of text to corresponding lines in the translation box in Trados Studio, you can follow these steps:

    **Step 1:** Install AutoHotkey if you haven't already. You can download it from the official website.

    **Step 2:** Create a new AHK script. Right-click in a folder, select "New," then "AutoHotkey Script." Name your script file (e.g., `CopyMultipleLines.ahk`).

    **Step 3:** Open the script file in a text editor (like Notepad).

    **Step 4:** Add the following code to your script. This is a basic example that assumes you have the source text copied to your clipboard and want to paste it into the translation box line by line:

    ```ahk

    #IfWinActive ahk_exe SDLTradosStudio.exe  ; Ensure the script only runs in Trados Studio

    ^v::  ; Use Ctrl+V as the hotkey to trigger the script

       ClipSaved := ClipboardAll  ; Save the current clipboard content

       Clipboard := ""  ; Clear the clipboard

       Send, ^c  ; Copy the selected text (source text)

       ClipWait, 1  ; Wait for the clipboard to contain data

       lines := StrSplit(Clipboard, "`n")  ; Split the clipboard content into lines

       Loop, % lines.MaxIndex()  ; Loop through each line

       {

           Send, % lines[A_Index]  ; Send the current line to the translation box

           Send, {Enter}  ; Confirm the segment (move to the next)

       }

       Clipboard := ClipSaved  ; Restore the original clipboard content

       return

    ```

    **Step 5:** Save the script and double-click the file to run it. You should see a green "H" icon in your system tray, indicating that the script is active.

    **Step 6:** In Trados Studio, select the source text you want to copy, then press `Ctrl+V` (or your chosen hotkey). The script will paste each line into the translation box and confirm the segment automatically.

    Feel free to modify the script according to your specific needs, such as adjusting the hotkey or the way lines are processed. If you have any further questions or need additional functionality, please let me know!

    I hope this answer addressed your question. If not, please reject the answer, add the question improvement suggestion information, and click the RWS Community AI checkbox on the right to try again.  

    RWS Community AI

    emoji
  • Hi Jack,

    I have one that does what I think you are requesting. Once you've copied your multiple lines, go to the first segment in Trados editor and click the triggering keys (ctrl+alt+shift+F4). If nothing happens, you may have to change (or remove) the #IfWinActive values depending on you Studio version.

    Oh, and I'd recommend disabling all TMs and termbases from your project before running it, that way it will run smoother.

    lines-to-Trados-segments.zip

    Hope it helps.

    Víctor

    emoji
  • First of all, thank you for your reply and sharing. I have solved this problem perfectly by myself. If you need, I can email you.

    emoji
  • #Requires AutoHotkey v2.0
    #SingleInstance Force
    SendMode("Input")
    SetWorkingDir(A_ScriptDir)

    ^+v:: ; Ctrl+Shift+V
    {
    ; 等待剪贴板准备好(最多2秒)
    if !ClipWait(2)
    {
    MsgBox("剪贴板为空或无法读取,请先复制文本。")
    return
    }

    ; 备份原始剪贴板(包含格式)
    ClipSaved := ""
    try ClipSaved := ClipboardAll()

    ; 安全读取文本
    ClipText := A_Clipboard
    ClipText := StrReplace(ClipText, "`r`n", "`n")
    ClipText := StrReplace(ClipText, "`r", "")
    ClipText := StrReplace(ClipText, Chr(0xFEFF), "") ; 去 BOM

    if (Trim(ClipText) = "")
    {
    MsgBox("剪贴板中没有文本可用。")
    if (ClipSaved != "")
    A_Clipboard := ClipSaved
    return
    }

    ; 分行
    Lines := StrSplit(ClipText, "`n")

    ; 激活 Trados 窗口一次
    WinActivate("A")
    Sleep 150

    for Line in Lines
    {
    Line := Trim(Line)
    if (Line = "")
    continue

    ; 把这一行放到系统剪贴板
    A_Clipboard := Line
    ClipWait(0.5)

    ; 进入单元格编辑模式
    Send("{Enter}")
    Sleep 50

    ; 粘贴文本
    Send("^v")
    Sleep 100 ; 等待 Trados 完成粘贴

    ; 确认输入
    Send("{Enter}")
    Sleep 50

    ; 下移到下一行
    Send("{Down}")
    Sleep 100
    }

    ; 恢复原始剪贴板
    if (ClipSaved != "")
    A_Clipboard := ClipSaved

    MsgBox("所有译文已逐行粘贴完成!")
    }

    emoji