在 ai 時代以前,用機器翻譯網站介面,成果不堪使用

因為翻譯是一件需要脈絡的任務,你需要給翻譯師 app 畫面、或至少要有註解,才能正確翻譯

不過,在 ai 時代,這件事有顯著改善,以下分享我使用的 prompt 與翻譯原始檔

function chatgpt_translate_json_locale($text, $locale)
{
    $prompt = <<<EOD
我正要翻譯網站 UI 的語系檔案,請按照以下要求,幫我翻譯成目標語言。我會在最後附上原始的 json 資料給你:

- 這個網站是一個梗圖產生器,用戶使用這個網站來建立各種梗圖
- 原始語言是 zh-Hant
- 目標語言是 $locale
- key 保持原樣,請在 value 放入翻譯後的內容
- 如果目標語言是 zh-Hant 那請在 value 放進 key 同樣的內容
- 如果目標語言是 zh-Hans 那請將 key 保持繁體字,在 value 放進簡體字
- 每個字串後面,有用註解說明這個字串的用途
- 直接給我正文就好,不需要標題那些額外的東西跟格式
- 直接給我 json 字串就好
- 翻譯的結果,請直接移除註解
- 最後一個 value 後面,不要有逗號

原始的 json 資料如下:

$text
EOD;

    $result = OpenAI\Laravel\Facades\OpenAI::chat()->create([
        'model' => 'gpt-4o-mini',
        'messages' => [
            ['role' => 'user', 'content' => $prompt],
        ],
    ]);

    $content = $result->choices[0]->message->content;

    return $content;
}

如您所在,在機器翻譯之外,還可以指導翻譯的原則,這在以前是不敢想像的


我使用 laravel 內建的 json 檔案風格的翻譯方式

範例檔案如下 uncategorized.js

{
    "歡迎光臨!": "", // 首頁最上方,會出現打招呼的文字
    "全部模板": "", // 這是 navbar 會用到的文字
    "發佈模板": "", // 這是 navbar 會用到的文字
    "聯絡作者": "", // 這是 navbar 會用到的文字
    "建立": "", // 按鈕上的文字,點擊之後進入建立圖片的頁面
    "提供者": "", // 說明圖片上傳者、作者、提供者是誰
    "模板讀取中,請稍候...": "", // 讀取圖片時,顯示的提示文字
    "增加文字區塊": "", // 按鈕上的文字,點擊之後會新增一個文字輸入元件
    "產生梗圖": "", // 按鈕上的文字,點擊之後產生梗圖
    "不要公開發佈在網友創作區": "",
    "您的梗圖": "",
    "下載": "", // 點擊之後下載梗圖
    "這張圖片不會出現在網友創作區。伺服器會暫時保存這張圖片,讓您可以點擊按鈕下載。伺服器過一段時間會自動刪除此圖。": "",
    "關閉": "", // 點擊之後關閉視窗
    "更多功能,將在近期推出!": "",
    "此功能,將在近期推出。": "",
    "處理中,請稍候...": "", // 送出表單時,顯示的提示文字
    "登入": "", // 這是 navbar 的其中一個連結文字
    "註冊": "", // 這是 navbar 的其中一個連結文字
    "登出": "", // 這是 navbar 的其中一個連結文字
    "今日熱門搞笑圖片,爆紅梗圖產生器,每天供應!": "", // 這是 seo 顯示的文字,請用吸引人的方式翻譯
    "業界最強大的梗圖專門網站。提供每日有趣梗圖,還有超多梗圖產生器讓你輕鬆玩!": "", // 這是 seo 顯示的文字,請用吸引人的方式翻譯
    "梗圖產生器": "",
    "超好用「": "", // 這是 seo 顯示的文字,請用吸引人的方式翻譯。最後的引號會跟下一個翻譯組合使用。如果無法翻譯引號,可以用一個空格代替。
    "」梗圖產生器!只要輸入文字,就能快速做出好笑梗圖!還有塗鴉畫筆、墨鏡、香菸,超多素材可以使用!": "", // 這是 seo 顯示的文字,請用吸引人的方式翻譯。最後的引號會跟上一個翻譯組合使用。如果無法翻譯引號,可以用一個空格代替。
    "模板名稱": "", // 新增模板的頁面,表單的欄位名稱
    "請輸入模板名稱": "", // 新增模板的頁面,欄位的提示文字
    "圖片檔案": "", // 新增模板的頁面,表單的欄位名稱
    "小提示:請選擇適合當作梗圖素材的圖片。": "", // 新增模板的頁面,欄位的提示文字
    "新增並公開發佈這份模板": "", // 新增模板的頁面,submit 按鈕的文字
    "上傳失敗!": "", // 錯誤訊息提示文字
    "檔案出現以下問題:": "", // 錯誤訊息提示文字
    "修改照片": "",
    "修改名稱": "",
    "修改簡介": "",
    "請輸入您的簡介": "",
    "失敗!": "", // 錯誤訊息提示文字
    "出現以下問題:": "", // 錯誤訊息提示文字
    "修改完成。": "", // 成功訊息提示文字
    "貢獻排行": "", // 用戶的上傳數量排行榜
    "Memekoo 的內容由眾多無私的網友們一起貢獻。熱心貢獻者名單如下。": "", // Memekoo 是品牌名稱,可以保持英文
    "上傳數量": "", // 用戶上傳的圖片數量
    "使用次數": "", // 用戶上傳的圖片,被別人使用的總次數
    "我上傳的": "", // navbar 連結文字,我上傳的資源的縮寫
    "我的最愛": "", // navbar 連結文字,已加入我的最愛的資源的縮寫
    "加進我的最愛": "", // 按鈕文字
    "取消我的最愛": "", // 按鈕文字
    "E-Mail 信箱": "",
    "密碼": "",
    "忘記您的密碼了嗎?": "",
    "顯示名稱": "",
    "確認密碼": "",
    "根據您選擇的語言,系統會推薦不同的迷因圖片": "",
    "前往": "",
    "顯示全部": "",
    "搜尋": "",
    "搜尋關鍵字": "",
    "找不到符合搜尋相關的內容。",
    "排序方式": "", // 讓用戶選擇排序方式的地方,可以從英文的 Sort By 去簡潔翻譯成目標語言
    "熱門程度": "", // 用熱門程度來排序,可以從英文的 Hot 去簡潔翻譯成目標語言
    "由新到舊": "", // 用建立時間來排序,可以從英文的 New 去簡潔翻譯成目標語言
    "沒有相關的內容。", // 頁面上沒有資料時,顯示的提示文字
    "個人頁面", "",
    "這個用戶還沒有寫下自我介紹。": "",
    "登入次數", "",
    "註冊日期", "",
}

以上,簡單分享,使用 ai 翻譯網站介面的技術細節

最後出來的成果,雖然無法與專業的翻譯師相提並論,但我認為已經相當不錯了!


共有 0 則留言