在 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 翻譯網站介面的技術細節
最後出來的成果,雖然無法與專業的翻譯師相提並論,但我認為已經相當不錯了!