BookTranslator
BookTranslator

တဂ်များ၊ အက်ထရီဗျူးများ သို့မဟုတ် လင့်ခ်များ မပျက်စီးစေဘဲ HTML ဖိုင်ကို ဘယ်လိုဘာသာပြန်မလဲ

HTML ဖိုင်တစ်ခုတွင် ဘာကို ဘာသာပြန်ရမလဲ၊ ဘာကို မထိဘဲထားရမလဲ၊ ဘယ်လိုစစ်ဆေးရမလဲ။ နမူနာစာမျက်နှာတစ်ခု၊ အခမဲ့စစ်ဆေးကိရိယာတစ်ခုနှင့် ဒေသတွင်း LLM စမ်းသပ်မှု ၉ ကြိမ်ဖြင့်။

HTML ဖိုင်တစ်ခုကို ဘာသာပြန်ရန်၊ လူများဖတ်သော စာသားနှင့် alt၊ title၊ placeholder၊ aria-label နှင့် စာမျက်နှာ၏ မက်တာဖော်ပြချက်ကဲ့သို့သော ဖတ်ရှုသူများထံ ရောက်သော စကားလုံးများပါသည့် အက်ထရီဗျူးများကို ဘာသာပြန်ပါ။ မာ့ခ်အပ်ကို မထိဘဲထားပါ- တဂ်အမည်များ၊ href၊ src၊ id၊ class၊ စကရစ်များ၊ စတိုင်များနှင့် translate="no" ဟု အမှတ်အသားပြုထားသည့် မည်သည့်အရာမဆို။ ထို့နောက် မေ့လွယ်သော တန်ဖိုးတစ်ခုဖြစ်သည့် <html> ဒြပ်စင်ပေါ်ရှိ lang အက်ထရီဗျူးကို ပြောင်းပါ၊ ဘရောက်ဇာများ၊ မျက်နှာပြင်ဖတ်ကိရိယာများနှင့် ရှာဖွေရေးအင်ဂျင်များက စာမျက်နှာသည် ယခု မည်သည့်ဘာသာစကားဖြစ်သည်ကို သိရှိစေရန်။

တဂ်များကို မပျက်စီးစေဘဲ ထိန်းသိမ်းထားခြင်းသည် လွယ်ကူသောအပိုင်းဖြစ်ကြောင်း တွေ့ရှိရသည်။ ကျွန်ုပ်တို့သည် လိုင်း ၅၉ လိုင်းပါ HTML အကူအညီစာမျက်နှာကို ဒေသတွင်းမော်ဒယ်တစ်ခုဖြင့် ရိုးရှင်းသောတရုတ်ဘာသာသို့ ကိုးကြိမ် ဘာသာပြန်ခဲ့ပြီး နည်းလမ်းသုံးမျိုးကို အသုံးပြုကာ ထွက်ရှိမှုတိုင်းကို စကရစ်တစ်ခုဖြင့် စစ်ဆေးခဲ့သည်။ ပြေးဆွဲမှုတိုင်းသည် တဂ်၊ လင့်ခ်နှင့် ID တိုင်းကို ထိန်းသိမ်းထားခဲ့သည်။ ပိုမိုတိတ်ဆိတ်စွာ မှားယွင်းသွားသည်မှာ- မော်ဒယ်သည် ဖိုင်တစ်ခုလုံးကို ပို့သည့် ပြေးဆွဲမှုခြောက်ခုစလုံးတွင် <pre> ကုဒ်ဘလောက်အတွင်းရှိ လိုင်းတစ်လိုင်းကို ဘာသာပြန်ခဲ့သည်၊ ပြေးဆွဲမှုခြောက်ခုစလုံးတွင် လမ်းညွှန်၏ aria-label ကို အင်္ဂလိပ်လို ထားခဲ့သည်၊ ဒီဇိုင်းအရ မာ့ခ်အပ်ကို အလုံခြုံဆုံးထိန်းသိမ်းသည့် နည်းလမ်းဖြစ်သော စာသားအပိုင်းအစများကို တစ်ခုချင်းဘာသာပြန်ခြင်းသည် ၎င်း၏ ပြေးဆွဲမှုသုံးခုစလုံးတွင် ဖတ်ရှုသူကို မှားယွင်းသောအရာလုပ်ရန် ပြောသည့် စာကြောင်းတစ်ကြောင်းကို ထုတ်ပေးခဲ့သည်။

အမြန်အဖြေ- ဘာကို ဘာသာပြန်ရမလဲ၊ ဘာကို မထိဘဲထားရမလဲ

ဖိုင်၏အပိုင်းကျွန်ုပ်တို့၏နမူနာမှ ဥပမာဘာသာပြန်မလား။
မြင်နိုင်သောစာသားခေါင်းစဉ်များ၊ စာပိုဒ်များ၊ ဇယားကွက်များ၊ လင့်ခ်စာသား၊ <label>ဟုတ်ကဲ့
<title> နှင့် မက်တာဖော်ပြချက်<title>Export Your Library | Shelfmark Help</title>ဟုတ်ကဲ့။ နှစ်ခုစလုံးသည် ရှာဖွေရေးရလဒ်များနှင့် ဘရောက်ဇာတဘ်များတွင် ပေါ်လာသည်။
og:title နှင့် အခြားလူမှုရေးမက်တာတဂ်များ<meta property="og:title" content="Export Your Library">ဟုတ်ကဲ့၊ content တန်ဖိုးသာ
alt, title, placeholder, aria-labelalt="The Export dialog with EPUB selected", aria-label="Breadcrumb"ဟုတ်ကဲ့
<html> ပေါ်ရှိ lang<html lang="en">ပစ်မှတ်ဘာသာစကားသို့ ပြောင်းပါ၊ ဥပမာ zh-Hans
တဂ်နှင့် အက်ထရီဗျူးအမည်များ<a>၊ <img>၊ width၊ aria-label ကိုယ်တိုင်မဟုတ်ဘူး
href, src, id, class, for, name, type, data-*href="#choose-format", id="q"မဟုတ်ဘူး
<code>, <pre>, <script>, <style>shelfmark export --format epubမဟုတ်ဘူး။ ကုဒ်မှတ်ချက်များနှင့် နမူနာထွက်ရှိမှုအကြောင်း သီးခြားဆုံးဖြတ်ပါ။
CSS ဖြင့် သတ်မှတ်ထားသော စာသား.note::before { content: "Note: "; }ဟုတ်ကဲ့၊ ဒါပေမယ့် အဲဒါက stylesheet ထဲမှာ ရှိတာမို့ အဲဒါအတွက် ကြိုတင်စီစဉ်ထားပါ
JSON-LD ဖွဲ့စည်းထားသော ဒေတာ"name": "Export your Shelfmark library"name နဲ့ description တန်ဖိုးတွေကို ဘာသာပြန်ပါ။ key တွေနဲ့ JSON ကို တရားဝင်အတိုင်း ထားရှိပါ
translate="no" ပါတဲ့ element တွေ<span translate="no">Shelfmark</span>မလုပ်ပါ
HTML မှတ်ချက်များ<!-- Generated by the help-center build... -->ရွေးချယ်နိုင်သည်။ စာဖတ်သူများ ဘယ်တော့မှ မမြင်ရပါ။
စာလုံးရည်ညွှန်းများ&lt;library&gt;, &nbsp;, &copy;escape လုပ်ထားတာတွေကို escape အတိုင်း ထားပါ။ &lt; ဟာ တကယ့် < မဖြစ်ရပါ။

ဒီစာရင်းက ကျွန်တော်တို့ ဖန်တီးထားတာ မဟုတ်ပါ။ HTML Standard ရဲ့ translate attribute အပိုင်း က "ဘာသာပြန်နိုင်သော attribute များ" ကို သတ်မှတ်ထားပါတယ်။ အဲဒါတွေက element တိုင်းရဲ့ title၊ ပုံတွေရဲ့ alt၊ input တွေရဲ့ placeholder၊ ဘာသာပြန်နိုင်တယ်လို့ သိထားတဲ့ meta element တွေရဲ့ content နဲ့ ဘာသာစကားအသစ်နဲ့ ကိုက်ညီအောင် ပြောင်းရမယ်လို့ ဆိုထားတဲ့ lang တို့ ဖြစ်ပါတယ်။ ဒါ့အပြင် ARIA ရဲ့ aria-label ကို အခြား specification တွေ ထည့်နိုင်တဲ့ attribute ရဲ့ ဥပမာအဖြစ် ဖော်ပြထားပြီး translate="no" element ထဲမှာ စာသားနဲ့ attribute တန်ဖိုးတွေဟာ "စာမျက်နှာကို ဒေသစံချိန်ချိန်တဲ့အခါ မူရင်းအတိုင်း ထားရမယ်" လို့ ဆိုထားပါတယ်။

ကျွန်တော်တို့ စမ်းသပ်ခဲ့တာတွေ

ကျွန်တော်တို့ဟာ sample-source.html ကို ရေးသားခဲ့ပါတယ်။ အဲဒါက ကျွန်တော်တို့ရဲ့ Markdown ဘာသာပြန်စမ်းသပ်မှု မှာ သုံးခဲ့တဲ့ စိတ်ကူးယဉ် စာဖတ်အက်ပ် Shelfmark အတွက် အကူအညီစင်တာ စာမျက်နှာတစ်ခု ဖြစ်ပါတယ်။ အဲဒါမှာ အထက်ပါဇယားရဲ့ အတန်းတစ်ခုစီအတွက် ဥပမာတစ်ခုစီ အပြင် ထောင်ချောက်အနည်းငယ် ပါဝင်ပါတယ်။

  • inline tag တွေနဲ့ ကွဲနေတဲ့ စာကြောင်းတစ်ကြောင်း: "မတင်ပို့ခင် သင့်မှတ်စုများကို အရန်ကူးယူပါ။ တင်ပို့မှုက သင့်စာအုပ်တွေကို ကူးယူပေမယ့် Shelfmark ကနေ ဘာမှ မဖျက်ပါဘူး။" ထုတ်ကုန်နာမည်က translate="no" ထဲမှာ ရှိပါတယ်။
  • အစီအစဉ်အရေးကြီးတဲ့ inline <code> element နှစ်ခု ပါတဲ့ စာကြောင်းတစ်ကြောင်း: "--out နောက်မှာ <library> ဖိုလ်ဒါကို ညွှန်တဲ့ လမ်းကြောင်းကို ရိုက်ထည့်ပါ။"
  • command တစ်ခုနဲ့ နမူနာ output တစ်ကြောင်း ပါတဲ့ <pre><code> block တစ်ခု: # Export finished: 128 books
  • စာပိုဒ်တစ်ခုရဲ့ ရှေ့မှာ "Note:" ဆိုတဲ့ စကားလုံးကို ထည့်ပေးတဲ့ CSS rule တစ်ခု။
  • #choose-format ကို ညွှန်တဲ့ စာမျက်နှာအတွင်း link တစ်ခု၊ mailto: link တစ်ခု၊ ရှာဖွေရေး form တစ်ခုနဲ့ JSON-LD block တစ်ခု။

ပြီးနောက် ကျွန်တော်တို့ဟာ local model တစ်ခုကို ရိုးရှင်းတဲ့ တရုတ်ဘာသာစကားသို့ နည်းလမ်းသုံးမျိုးနဲ့ ဘာသာပြန်ခိုင်းခဲ့ပါတယ်။

  1. ဖိုင်တစ်ခုလုံး။ ဖိုင်တစ်ခုလုံးကို paste လုပ်ပြီး ဘာသာပြန်ထားတဲ့ ဖိုင်ကို ပြန်တောင်းပါ။
  2. ညွှန်ကြားချက်ပေးထားသည်။ အလားတူပဲ၊ ဒါပေမယ့် စည်းမျဉ်းရှစ်ခု ထပ်ထည့်ပါ။ tag နဲ့ attribute နာမည်တိုင်းကို ထိန်းသိမ်းပါ၊ href၊ src၊ id၊ class နဲ့ အလားတူတန်ဖိုးတွေကို မပြောင်းပါနဲ့၊ ဖော်ပြထားတဲ့ စာသား attribute တွေနဲ့ meta tag တွေကို ဘာသာပြန်ပါ၊ <code>၊ <pre>၊ <script> နဲ့ <style> တို့ကို JSON-LD ရဲ့ name နဲ့ description မှလွဲပြီး မထိပါနဲ့၊ translate="no" ကို လေးစားပါ၊ စာလုံးရည်ညွှန်းတွေနဲ့ မှတ်ချက်တွေကို ထိန်းသိမ်းပါ၊ ပြီးတော့ lang ကို zh-Hans သတ်မှတ်ပါ။
  3. အပိုင်းအစများ။ HTML ကနေ စာသားကို ထုတ်ယူတဲ့ ကိရိယာတွေရဲ့ နည်းလမ်း။ script တစ်ခုက ဖိုင်ကို tag တွေနဲ့ စာသားတွေအဖြစ် ခွဲပြီး <code>၊ <pre>၊ <script>၊ <style> နဲ့ translate="no" element တွေကို ကျော်သွားပါတယ်။ ကျန်တဲ့ စာသားအပိုင်းအစတွေနဲ့ စာသား attribute တွေကို နံပါတ်တပ်ထားတဲ့ JSON စာရင်းအဖြစ် model ဆီ ပို့ပြီး ဘာသာပြန်ချက်တွေကို မထိမခိုက်ထားတဲ့ markup ထဲကို ပြန်ရေးပါတယ်။ ဒါ့အပြင် lang="zh-Hans" ကိုလည်း သူကိုယ်တိုင် သတ်မှတ်ပါတယ်။

အဲဒီ model က Apple M4 Max 64 GB memory ပေါ်မှာ LM Studio ထဲက Qwen 3.6 27B (Q4_K_M) ဖြစ်ပြီး thinking ကို ပိတ်ထားကာ temperature 0.3 သတ်မှတ်ထားပါတယ်။ ကျွန်တော်တို့ဟာ နည်းလမ်းတစ်ခုစီကို သုံးကြိမ်၊ စုစုပေါင်း ကိုးကြိမ် စမ်းသပ်ခဲ့ပါတယ်။ ၂၀၂၆ ခုနှစ် အောက်တိုဘာလ ၂၇ ရက်နေ့မှာ ပြုလုပ်ခဲ့ပါတယ်။ script က run_llm_html_test.py ဖြစ်ပြီး output ကိုးခုလုံးကို တည်းဖြတ်မထားဘဲ ထုတ်ဝေထားပါတယ်။ README မှာ ဖိုင်တိုင်းကို စာရင်းပြုစုထားပါတယ်။ အကယ်၍ local model ကို အရင်က မတပ်ဆင်ဖူးရင် ကျွန်တော်တို့ရဲ့ local LLM ဘာသာပြန်လမ်းညွှန် မှာ ဆက်တင်တွေကို ဖော်ပြထားပါတယ်။

ဒါက model တစ်ခု၊ ဘာသာစကားအတွဲတစ်တွဲနဲ့ စာမျက်နှာတစ်ခုအတွက် သေးငယ်တဲ့ စမ်းသပ်မှုတစ်ခုပါ။ ဘယ်ပြဿနာတွေ ဖြစ်တတ်တယ်ဆိုတာနဲ့ ဘယ်လို ဖမ်းဆီးရမယ်ဆိုတာကို ပြသပါတယ်။ model တွေ ဒါမှမဟုတ် ကိရိယာတွေကို အဆင့်သတ်မှတ်တာ မဟုတ်ပါဘူး။

ရလဒ်: Markup က ကျန်ရစ်ခဲ့ပေမယ့် ဆုံးဖြတ်ချက်သုံးခုက မကျန်ရစ်ခဲ့ပါ

ကျွန်ုပ်တို့သည် ထွက်ရှိလာသော ရလဒ်တိုင်းကို Python ၏ စံစာကြည့်တိုက်သာ အသုံးပြုထားသည့် စစ်ဆေးကိရိယာဖြစ်သော check_html_translation.py ဖြင့် စစ်ဆေးခဲ့ပါသည်။ အပြည့်အစုံ ထွက်ရှိလာသော ရလဒ်များကို check-results.txt တွင် တွေ့နိုင်ပြီး results.csv တွင် တစ်ကြိမ်လည်ပတ်မှုတစ်ခုလျှင် တစ်တန်းကျစီ ပါဝင်ပါသည်။

စစ်ဆေးမှုဖိုင်တစ်ခုလုံး (၃ ကြိမ် လည်ပတ်)ညွှန်ကြားချက်ဖြင့် (၃ ကြိမ် လည်ပတ်)အပိုင်းအစများ (၃ ကြိမ် လည်ပတ်)
တူညီသော tag ၅၈ ခု အစဉ်လိုက်၊ href၊ src၊ id၊ class တိုင်း မပြောင်းလဲ၃ ကြိမ်အနက် ၃ ကြိမ်၃ ကြိမ်အနက် ၃ ကြိမ်၃ ကြိမ်အနက် ၃ ကြိမ်
translate="no" စာသား ထိန်းသိမ်းထားပြီး၊ စာမျက်နှာအတွင်း လင့်ခ် အလုပ်လုပ်နေဆဲ၊ &lt;library&gt; ကို escape လုပ်ထားဆဲ၃ ကြိမ်အနက် ၃ ကြိမ်၃ ကြိမ်အနက် ၃ ကြိမ်၃ ကြိမ်အနက် ၃ ကြိမ်
<pre> အတွင်းရှိ နမူနာ ထွက်ရှိမှု လိုင်းကို ဘာသာပြန်ပြီး၃ ကြိမ်အနက် ၃ ကြိမ်၃ ကြိမ်အနက် ၃ ကြိမ်၃ ကြိမ်အနက် ၀ ကြိမ် (ဒီဇိုင်းအရ ကျော်သွားသည်)
CSS content: "Note: " ကို ဘာသာပြန်ပြီး၃ ကြိမ်အနက် ၃ ကြိမ်၃ ကြိမ်အနက် ၀ ကြိမ်၃ ကြိမ်အနက် ၀ ကြိမ် (ဒီဇိုင်းအရ ကျော်သွားသည်)
JSON-LD name နှင့် description ကို ဘာသာပြန်ပြီး၃ ကြိမ်အနက် ၃ ကြိမ်၃ ကြိမ်အနက် ၃ ကြိမ်0 of 3 (ဒီဇိုင်းအရ ကျော်သွားသည်)
aria-label="Breadcrumb" ကို ဘာသာပြန်ပြီးပါပြီ0 of 30 of 33 of 3
<code> ဒြပ်စင်နှစ်ခု ပါဝင်သော ဝါကျသည် မှန်ကန်စွာ ဖော်ပြသည်3 of 33 of 30 of 3
အင်လိုင်းတဂ်ကို ဖြတ်ကျော်သော တရုတ်စာသားကြား ကွက်လပ်များတစ်ခုမှမရှိ0, 5, နှင့် 4အကြိမ်တိုင်း 6
<html> ပေါ်ရှိ langzh-CN (မတောင်းဆိုခဲ့ပါ)zh-Hanszh-Hans (script ဖြင့် သတ်မှတ်ထားသည်)

အကြိမ်ကိုးကြိမ်စလုံးတွင် တူညီသော တဂ် 58 ခုကို တူညီသော အစီအစဉ်အတိုင်း ထိန်းသိမ်းထားပြီး href, src, id, နှင့် class တိုင်း၊ စာမျက်နှာအတွင်း လင့်ခ်ပစ်မှတ်၊ မှတ်ချက်၊ escaped &lt;library&gt; နှင့် translate="no" အတွင်းရှိ ထုတ်ကုန်အမည်တို့ကိုပါ ထိန်းသိမ်းထားသည်။ ရိုးရှင်းသော စာမျက်နှာတစ်ခု၏ markup ကို မော်ဒယ်က ဖျက်ဆီးလိမ့်မည်ဟု သင်စိုးရိမ်ခဲ့လျှင် ၎င်းက မဖျက်ဆီးခဲ့ပါ။ ပြဿနာများမှာ ဘာကို ဘာသာပြန်ရမည်ဟူသော ကိစ္စတွင်သာ ရှိခဲ့သည်။

1. <pre> အတွင်းရှိ နမူနာထွက်ရှိမှုကို ဘာသာပြန်ခဲ့သည်

ကျွန်ုပ်တို့၏ နမူနာရှိ ကုဒ်ဘလောက်သည် ပရိုဂရမ်ထွက်ရှိမှု တစ်ကြောင်းဖြင့် အဆုံးသတ်သည်:

<pre><code>shelfmark export --format epub --covers --out ~/Books/export
# Export finished: 128 books</code></pre>

ဖိုင်တစ်ခုလုံး နှင့် ညွှန်ကြားချက်ပါ အကြိမ်ခြောက်ကြိမ်စလုံးတွင် မော်ဒယ်က ထိုစာကြောင်းတွင် # 导出完成:128 本书 ကို ပြန်ပေးခဲ့ပြီး <pre> အတွင်းရှိ မည်သည့်အရာကိုမျှ မပြောင်းလဲရန် prompt တွင် ပြောထားသော အကြိမ်သုံးကြိမ်လည်း ပါဝင်သည်။ command ကိုယ်တိုင်ကို ဘယ်တော့မှ မထိခဲ့ပါ။ မော်ဒယ်က ထိုစာကြောင်းကို မှတ်ချက်အဖြစ် သတ်မှတ်ခဲ့ပြီး သင်ခန်းစာတစ်ခုတွင် မှတ်ချက်များကို ဘာသာပြန်ခြင်းသည် ကျိုးကြောင်းဆီလျော်သော ရွေးချယ်မှုတစ်ခု ဖြစ်သည်။ သို့သော် ဤစာကြောင်းသည် ပရိုဂရမ်က ပရင့်ထုတ်သောအရာဖြစ်ပြီး ၎င်းကို ၎င်းတို့၏ terminal နှင့် နှိုင်းယှဉ်ကြည့်သော စာဖတ်သူသည် အင်္ဂလိပ်လို တွေ့ရမည်။ မဘာသာပြန်မီ နမူနာထွက်ရှိမှုနှင့် ကုဒ်မှတ်ချက်များကို ဘာသာပြန်မည်လား ဆုံးဖြတ်ပြီး ကိရိယာကို အသိပေးပါ၊ သို့မဟုတ် <pre> ဘလောက်များကို လုံးဝကာကွယ်ပါ။

ဖိုင်တစ်ခုလုံး အကြိမ်များတွင်လည်း <style> ဘလောက်အတွင်းရှိ CSS content: "Note: " ကို ဘာသာပြန်ခဲ့ပြီး <style> ကို မထိရန် ညွှန်ကြားထားသော အကြိမ်များတွင်မူ ၎င်းကို အင်္ဂလိပ်လိုပင် ထားရှိခဲ့သည်။ မည်သည့်အရာကမျှ သူ့အလိုလို မှားယွင်းခြင်းမရှိပါ။ CSS သည် အင်လိုင်းဖြစ်သော စာမျက်နှာတစ်ခုအတွက် stylesheet ကို ဘာသာပြန်ခြင်းသည် မှန်ကန်ပြီး ဘာသာစကားတိုင်းအတွက် shared stylesheet တစ်ခုတည်း အသုံးပြုသော ဆိုက်တစ်ခုအတွက်မူ မှားယွင်းသည်။ မည်သို့ပင်ဖြစ်စေ ၎င်းသည် တစ်စုံတစ်ဦး ဆုံးဖြတ်ရမည့်ကိစ္စဖြစ်ပြီး မော်ဒယ်က ခန့်မှန်းသင့်သော အသေးစိတ်အချက်အလက်မဟုတ်ပါ။

2. ဝင်ရောက်နိုင်မှု အညွှန်းများကို ကျော်သွားခဲ့သည်

breadcrumb လမ်းညွှန်သည် <nav aria-label="Breadcrumb"> ဖြစ်သည်။ မျက်နှာပြင်ဖတ်စက်က ထိုအညွှန်းကို ကြေညာသည်။ မြင်တွေ့နိုင်သော စာဖတ်သူများက ၎င်းကို ဘယ်တော့မှ မမြင်ရပါ။ ဖိုင်တစ်ခုလုံး နှင့် ညွှန်ကြားချက်ပါ အကြိမ်ခြောက်ကြိမ်စလုံးတွင် ၎င်းသည် အင်္ဂလိပ်လိုပင် ရှိနေခဲ့ပြီး ညွှန်ကြားချက်ပါ prompt တွင် ဘာသာပြန်ရမည့် attribute များထဲမှ aria-label ကို စာရင်းပြုစုထားခဲ့သော်လည်း ဖြစ်သည်။ ညွှန်ကြားချက်ပါ အကြိမ်တစ်ကြိမ်တွင် ရှာဖွေရေးခလုတ်၏ aria-label="Search" သည်လည်း အင်္ဂလိပ်လိုပင် ရှိနေခဲ့သည်။

အပိုင်းအစ နည်းလမ်းက ၎င်းကို အကြိမ်တိုင်း ဘာသာပြန်ခဲ့သည်။ အကြောင်းမှာ ၎င်း၏ script က aria-label, alt, title, နှင့် placeholder တန်ဖိုးတိုင်းကို စုဆောင်းပြီး တစ်ခုချင်းစီကို အတိအကျ တောင်းဆိုခဲ့သောကြောင့် ဖြစ်သည်။ ၎င်းသည် မော်ဒယ်က ၎င်းတို့ကို သတိထားမိလိမ့်မည်ဟု မျှော်လင့်မည့်အစား စာသား attribute များကို ရည်ရွယ်ချက်ရှိရှိ ထုတ်ယူခြင်းအတွက် အခိုင်မာဆုံး အကြောင်းပြချက် ဖြစ်သည်။

3. အပိုင်းလိုက် ဘာသာပြန်ခြင်းက တဂ်များကို ထိန်းသိမ်းခဲ့သော်လည်း စာကြောင်းကို ပျက်စေခဲ့သည်

အပိုင်းလိုက်နည်းလမ်းသည် တည်ဆောက်ပုံအရ markup အတွက် ဘေးကင်းသည်- မော်ဒယ်သည် တဂ်တစ်ခုကိုမျှ မမြင်ရသောကြောင့် ၎င်းကို ပျက်စီးစေနိုင်မည်မဟုတ်ပါ။ စမ်းသပ်မှုသုံးခုစလုံးတွင် ဖွဲ့စည်းပုံစစ်ဆေးချက်တိုင်းကို အောင်မြင်ခဲ့သည်။ သို့သော် စမ်းသပ်မှုတွင် ဖတ်ရှုသူအား မှားယွင်းသော ညွှန်ကြားချက်များပေးခဲ့သည့် တစ်ခုတည်းသော ဘာသာပြန်ချက်ကိုလည်း ထုတ်ပေးခဲ့သည်။

အင်္ဂလိပ်စာကြောင်းမှာ "Type the path to the <library> folder after --out." ဖြစ်သည်။ အတွင်းပိုင်း <code> က ၎င်းကို အပိုင်းသုံးပိုင်းအဖြစ် ခွဲထုတ်သည်- "Type the path to the"၊ "folder after" နှင့် အမှတ်တစ်ခု။ တရုတ်ဘာသာစကားက ဤစကားလုံးများကို မတူညီသောအစီအစဉ်ဖြင့် ထားရှိသောကြောင့် ဘာသာပြန်သူသည် ကုဒ်ဒြပ်စင်နှစ်ခုကို ရွှေ့ရန် လိုအပ်သည်။ အပိုင်းလိုက်နည်းလမ်းက ၎င်းတို့ကို မရွှေ့နိုင်ပါ။ သုံးကြိမ်စလုံး ညွှန်ကြားချက်ကို ပြောင်းပြန်ဖြစ်စေခဲ့သည်။ ဒုတိယအကြိမ်တွင် ဤသို့ထုတ်ပေးခဲ့သည် (ပထမနှင့် တတိယအကြိမ်တို့သည် 之后 အစား 后 ဟု ဆိုသော်လည်း အဓိပ္ပာယ်တူညီသည်)-

在 <code>&lt;library&gt;</code> 之后输入 <code>--out</code>文件夹的路径。

၎င်းသည် "<library> ပြီးနောက် --out ဖိုလ်၏ လမ်းကြောင်းကို ရိုက်ထည့်ပါ" ဟု ဖတ်ရပြီး ညွှန်ကြားချက်၏ ပြောင်းပြန်ဖြစ်သည်။ ဖိုင်တစ်ခုလုံးနှင့် ညွှန်ကြားချက်ပေးထားသော အကြိမ်ခြောက်ကြိမ်စလုံးက ကုဒ်ဒြပ်စင်များကို ရွှေ့ပြီး မှန်ကန်စွာ ရရှိခဲ့သည်-

在 <code>--out</code> 后面输入 <code>&lt;library&gt;</code> 文件夹的路径。

ထိုကဲ့သို့ ခွဲထုတ်ခြင်းက တဂ်တစ်ခုနှင့် တရုတ်စာသားတို့ ဆုံတွေ့ရာတွင် ပိုလျှံနေသော ကွက်လပ်များကို ချန်ထားခဲ့သည်။ ဥပမာ 前往 <b>设置</b> နှင့် <b>书库</b> , ကဲ့သို့ဖြစ်ပြီး အပိုင်းလိုက် သုံးကြိမ်စလုံးတွင် တစ်ကြိမ်လျှင် နေရာခြောက်ခုရှိသည်။ ဘရောက်ဇာက ၎င်းတို့ကို တရုတ်သင်္ကေတများရှေ့တွင်ပါ မြင်သာသော ကွက်လပ်များအဖြစ် ပြသသည်။ ဖိုင်တစ်ခုလုံး အကြိမ်များတွင် လုံးဝမရှိခဲ့ပါ။ ညွှန်ကြားချက်ပေးထားသော သုံးကြိမ်အနက် နှစ်ကြိမ်တွင် လေးခု သို့မဟုတ် ငါးခု ရှိခဲ့သည်။

ဖွဲ့စည်းပုံစစ်ဆေးသူသည် ပြောင်းပြန်ဖြစ်နေသော စာကြောင်းကို မဖမ်းမိနိုင်ပါ၊ အကြောင်းမှာ တဂ်တိုင်းသည် မူလနေရာအတိအကျတွင် ရှိနေသောကြောင့်ဖြစ်သည်။ ကျွန်ုပ်တို့၏ စစ်ဆေးသူက အတွင်းပိုင်းကုဒ် အစီအစဉ်ပြောင်းသွားသည့်အခါ အစီရင်ခံသည်။ ယင်းသည် ဘာသာစကားများစွာအတွက် ပုံမှန်ဖြစ်သော်လည်း ထိုသတိပေးချက်က မှန်သည်နှင့် မှားသည်ကို မခွဲခြားနိုင်ပါ။ ဤစမ်းသပ်မှုတွင် ၎င်းက မှန်ကန်သော ဘာသာပြန်ချက်ခြောက်ခုစလုံးအပေါ် သတိပေးခဲ့ပြီး မှားယွင်းသော သုံးခုအပေါ် နှုတ်ဆိတ်နေခဲ့သည်၊ အကြောင်းမှာ မှားယွင်းသောအရာများက အင်္ဂလိပ်အစီအစဉ်ကို ထိန်းသိမ်းထားသောကြောင့်ဖြစ်သည်။ စာကြောင်းကို ဖတ်ရှုသော လူတစ်ဦးသာ ခွဲခြားနိုင်သည်။ ဖြေရှင်းနည်းမှာ စာကြောင်းအပြည့်အစုံကို ၎င်းတို့၏ အတွင်းပိုင်းတဂ်များနှင့်အတူ ဘာသာပြန်သူထံ ပို့ခြင်းဖြစ်ပြီး ဖိုင်တစ်ခုလုံး အကြိမ်များက ထိုသို့ပြုလုပ်ခဲ့သည်၊ ထို့နောက် ဖွဲ့စည်းပုံကို စစ်ဆေးခြင်းဖြစ်သည်။

သေးငယ်သော ကွဲပြားမှုများ

  • lang: ဖိုင်တစ်ခုလုံး အကြိမ်များက ၎င်းကို ၎င်းတို့ဘာသာ zh-CN သို့ ပြောင်းခဲ့သည်။ ညွှန်ကြားချက်ပေးထားသော အကြိမ်များက တောင်းဆိုထားသည့်အတိုင်း zh-Hans ကို အသုံးပြုခဲ့သည်။ နှစ်ခုစလုံးသည် တရားဝင်သော ဘာသာစကားတဂ်များဖြစ်သည်။ zh-Hans က စာလုံးအမျိုးအစား (ရိုးရှင်းတရုတ်) ကို အမည်ပေးပြီး zh-CN က ဒေသတစ်ခုကို အမည်ပေးသည်။ W3C ၏ ဘာသာစကားကြေညာချက်များဆိုင်ရာ လမ်းညွှန် က ဘာသာစကားကို <html> ဒြပ်စင်ပေါ်တွင် ကြေညာရန် နှင့် Content-Language မက်တာတဂ်ဖြင့် မကြေညာရန် အကြံပြုထားသည်။
  • JSON-LD: ဖိုင်တစ်ခုလုံးနှင့် ညွှန်ကြားချက်ပေးထားသော အကြိမ်များက name နှင့် description တန်ဖိုးများကို ဘာသာပြန်ပြီး JSON ကို တရားဝင်အောင် ထိန်းသိမ်းခဲ့သည်။ ကျွန်ုပ်တို့၏ အပိုင်းလိုက်စကရစ်ပ်က <script> အကြောင်းအရာကို ကျော်သွားခဲ့သောကြောင့် ၎င်း၏ ဖွဲ့စည်းထားသော ဒေတာသည် အင်္ဂလိပ်ဘာသာဖြင့် ကျန်ရှိနေခဲ့သည်။ စကရစ်ပ်များကို လျစ်လျူရှုသော ကိရိယာတစ်ခုကလည်း ထိုသို့ပင် ပြုမူမည်ဖြစ်သည်။
  • စာလုံးရည်ညွှန်းများ: ဖိုင်တစ်ခုလုံးနှင့် ညွှန်ကြားချက်ပေးထားသော အကြိမ်များက &rsaquo;၊ &nbsp;၊ &copy; နှင့် အီမိုဂျီရည်ညွှန်းကို ရေးထားသည့်အတိုင်း ထိန်းသိမ်းခဲ့သည်။ ထိုခြောက်ကြိမ်အနက် ငါးကြိမ်က 2&ndash;5 အကွာအဝေးကို တရုတ်စကားလုံးများဖြင့် (2 到 5 သို့မဟုတ် 2 至 5) ပြန်ရေးခဲ့သည်။ ညွှန်ကြားချက်ပေးထားသော တစ်ကြိမ်က ရည်ညွှန်းအစား ရိုးရိုးဒက်ရှ်ကို ရေးခဲ့သည်၊ သူ၏ ပရော့ပ်တွင် ရည်ညွှန်းများကို ထိန်းသိမ်းရန် ပြောထားသော်လည်းဖြစ်သည်။ ကျွန်ုပ်တို့၏ အပိုင်းလိုက်စကရစ်ပ်က ၎င်းတို့အားလုံးကို ကုဒ်ဖြင့်ဖော်ပြပြီး စာလုံးများအဖြစ် ပြန်ရေးခဲ့သည်၊ မြင်ကွင်းတွင် အတူတူပင်ဖြစ်သည်။ အရေးကြီးသည့်အချက်မှာ <code> အတွင်းရှိ &lt;library&gt; ဖြစ်ပြီး ကိုးကြိမ်စလုံးတွင် escaped အဖြစ် ကျန်ရှိနေခဲ့သည်။

မဘာသာပြန်မီ- ဖိုင်ကို ပြင်ဆင်ပါ

  1. မပြောင်းလဲရမည့်အရာများကို အမှတ်အသားပြုပါ။ ထုတ်ကုန်အမည်များ၊ မော်ဒယ်နံပါတ်များ၊ စာသားအတွင်းရှိ ကုဒ်နှင့်တူသော စာလုံးများနှင့် မည်သည့်အရာမဆို မူလအတိုင်း ကျန်ရှိနေရမည့်အရာများပေါ်တွင် translate="no" ကို ထည့်ပါ။ ၎င်းသည် HTML ၏ တစ်စိတ်တစ်ပိုင်းဖြစ်ပြီး ကုန်ကျစရိတ်မရှိပါ၊ ဖိုင်တစ်ခုလုံးကို ပို့ခဲ့သော အကြိမ်ခြောက်ကြိမ်စလုံးတွင် မော်ဒယ်က ၎င်းကို လေးစားခဲ့သည်။ ကျွန်ုပ်တို့၏ စကရစ်ပ်ကဲ့သို့ ၎င်းကို ဖတ်သော အပိုင်းလိုက်ကိရိယာများက ထိုဒြပ်စင်များကို လုံးဝကျော်သွားသည်။ ကျွန်ုပ်တို့၏ မဘာသာပြန်ရမည့်အရာများ လမ်းညွှန် တွင် ထိုစာရင်းထဲသို့ မည်သည့်အရာများ ထည့်ရမည်ကို ဆုံးဖြတ်ပုံကို ဖော်ပြထားသည်။
  2. ကုဒ်မူဝါဒကို ဆုံးဖြတ်ပါ။ ကုဒ်မှတ်ချက်များကို ဘာသာပြန်ပါသလား။ နမူနာထွက်ရှိမှုကော။ စတိုင်ရှီးတ်ကို ဘာသာစကားများအကြား မျှဝေပါသလား။ အဖြေကို မပြောင်းလဲရမည့် အမည်များနှင့်အတူ ဘာသာပြန်ဝေါဟာရစာရင်း တွင် ရေးမှတ်ပြီး ဘာသာပြန်သူ သို့မဟုတ် ဘာသာပြန်သည့်အရာမည်သည်ကိုမဆို ပေးပါ။
  3. ID များကို မူရင်းဘာသာစကားဖြင့် ထားရှိပါ။ စာမျက်နှာအတွင်း လင့်ခ်များက id တန်ဖိုးများကို ညွှန်ပြသည်။ တစ်စုံတစ်ဦးက id ကို ဘာသာပြန်ပါက ၎င်းသို့ လင့်ခ်တိုင်း ပျက်သွားမည်။ ကျွန်ုပ်တို့၏ အကြိမ်များတွင် မည်သည့်အရာမှ မလုပ်ခဲ့ပါ၊ သို့သော် "ကူညီရန်" အနေဖြင့် ကျောက်ဆူးများကို ဒေသစံချိန်ပြုသော ဘာသာပြန်သူက လုပ်လိမ့်မည်။
  4. ဝှက်ထားသော စာသားကို စုဆောင်းပါ။ စကားလုံးများပါဝင်သော အက်ထရီဗျူးများဖြစ်သည့် alt၊ title၊ placeholder၊ aria-label၊ ခလုတ်များပေါ်ရှိ value၊ မက်တာတဂ်များနှင့် JSON-LD တို့ကို စာရင်းပြုစုပါ၊ သို့မှသာ ၎င်းတို့ကို စစ်ဆေးပြီး မမေ့လျော့နိုင်မည်ဖြစ်သည်။
  5. JavaScript စာသားများကို တိုက်ရိုက် မဘာသာပြန်ပါနှင့်။ စကရစ်ပ်ဖြင့် သတ်မှတ်ထားသော မက်ဆေ့ချ်များ၊ ဥပမာ alert သို့မဟုတ် ကုဒ်ထဲတွင် ဖန်တီးထားသော ခလုတ်အညွှန်းများသည် ကုဒ်ထဲတွင် သီးခြား ဒေသစံချိန်ပြုခြင်း အဆင့်တစ်ခု လိုအပ်သည်။ ဖိုင်တစ်ခုလုံး သို့မဟုတ် ညွှန်ကြားချက်ပေးထားသော အကြိမ်ခြောက်ကြိမ်အနက် တစ်ခုမျှ ကျွန်ုပ်တို့၏ စကရစ်ပ်ဘလောက်ကို မပြောင်းခဲ့ပါ၊ ၎င်းမှာ မှန်ကန်သည်၊ သို့သော် ၎င်းသည် ထိုစာသားများ အင်္ဂလိပ်ဘာသာဖြင့် ကျန်ရှိနေမည်ဟု ဆိုလိုသည်။

ဘာသာပြန်ပြီးနောက်- စစ်ဆေးပါ

  1. ဖွဲ့စည်းပုံစစ်ဆေးမှုကို လုပ်ဆောင်ပါ။

    python3 check_html_translation.py source.html translated.html --lang zh-Hans --keep Shelfmark
    

    ၎င်းက တဂ်များနှင့် ၎င်းတို့၏ အစီအစဉ်၊ ဖတ်ရှုသူနှင့် မသက်ဆိုင်သော စာသားမဟုတ်သည့် အက်ထရီဗျူးတိုင်း၊ <pre>၊ <script> နှင့် <style> တို့၏ အကြောင်းအရာများ၊ အတွင်းပိုင်းကုဒ်၊ JSON-LD သော့များ၊ translate="no" စာသား၊ မှတ်ချက်များနှင့် စာမျက်နှာအတွင်း လင့်ခ်များကို နှိုင်းယှဉ်သည်။ ၎င်းက အင်္ဂလိပ်ဘာသာဖြင့် ကျန်ရှိနေသော စာသားအက်ထရီဗျူးများ၊ သင်မျှော်လင့်ထားသည်နှင့် ကွဲပြားသော lang တန်ဖိုး၊ ဘာသာမပြန်ရသေးဟု ထင်ရသော မြင်သာစာသား၊ အစီအစဉ်ပြောင်းသွားသော အတွင်းပိုင်းကုဒ်၊ နှင့် အတွင်းပိုင်းတဂ်တစ်ခုကို ဖြတ်ကျော်သော တရုတ်၊ ဂျပန် သို့မဟုတ် ကိုရီးယားစာသားများအကြား ကွက်လပ်များအကြောင်း သတိပေးသည်။ ၎င်းသည် ဘာသာပြန်အရည်အသွေးကို အကဲဖြတ်ခြင်းမဟုတ်ပါ။

  2. အတွင်းပိုင်းတဂ်ပါဝင်သော စာကြောင်းတိုင်းကို ဖတ်ပါ။ ဤနေရာတွင် ကျွန်ုပ်တို့၏ စမ်းသပ်မှုတွင် အဓိပ္ပာယ်ပျက်သွားခဲ့သည်။ ဤစာကြောင်းများကို ရှာဖွေရန် စစ်ဆေးသူ၏ "အတွင်းပိုင်းကုဒ် အစီအစဉ်ပြောင်းသွားသည်" သတိပေးချက်ကို မမှီခိုပါနှင့်- ကျွန်ုပ်တို့၏ စမ်းသပ်မှုတွင် မှားယွင်းသော ဘာသာပြန်ချက်များသည် မူရင်းအစီအစဉ်ကို ထိန်းသိမ်းထားသောအရာများဖြစ်သည်။

  3. စာမျက်နှာကို ဘရောက်ဇာတွင် ဖွင့်ပါ။ စာမျက်နှာအတွင်း လင့်ခ်များကို နှိပ်ပါ၊ ဖန်သားဖတ်သူဖြင့် ဖောင်ကို tab ဖြင့် ကြည့်ပါ၊ ပြီးနောက် စာလုံးအထူနှင့် လင့်ခ်ပါသော စာသားများအနီးတွင် ကွက်လပ်များရှိမရှိ ရှာပါ။

  4. ညာမှဘယ်သို့ ဘာသာစကားများအတွက် <html> ဒြပ်စင်ပေါ်တွင် dir="rtl" ကိုလည်း သတ်မှတ်ပါ။ ကျွန်ုပ်တို့၏ RTL စာအုပ်ဘာသာပြန် လမ်းညွှန် တွင် အခြားမည်သည့်အရာများ ပြောင်းလဲသည်ကို ဖော်ပြထားသည်။

  5. XHTML အတွက် ဥပမာ EPUB အတွင်းရှိ အခန်းဖိုင်များကဲ့သို့သော၊ ဖိုင်သည် ကောင်းမွန်သော XML အဖြစ် ရှိနေသေးကြောင်း အတည်ပြုပါ၊ ဥပမာ xmllint --noout chapter.xhtml ဖြင့်။ ဘရောက်ဇာက မပိတ်ထားသော တဂ်ကို ခွင့်လွှတ်သည်၊ အီးဖတ်သူက ခွင့်မလွှတ်နိုင်ပါ။ ကျွန်ုပ်တို့၏ EPUB ဘာသာပြန် QA စစ်ဆေးရေးစာရင်း တွင် အီးဘွတ်တစ်ခု၏ ကျန်ရှိသည်များကို ဖော်ပြထားသည်။

BookTranslator သည် မည်သည့်နေရာတွင် ကိုက်ညီသနည်း

BookTranslator ၏ အပ်လုဒ်စာမျက်နှာ သည် စာအုပ်များနှင့် စာရွက်စာတမ်းများအပြင် .html၊ .htm နှင့် .xhtml ဖိုင်များကိုပါ လက်ခံသောကြောင့် သိမ်းဆည်းထားသော စာမျက်နှာတစ်ခု သို့မဟုတ် static အကူအညီဆောင်းပါးတစ်ခုကို ဖိုင်တစ်ခုလုံးအဖြစ် အပ်လုဒ်တင်နိုင်ပါသည်။ ဤဆောင်းပါးအတွက် ဤနမူနာကို BookTranslator ဖြင့် ကျွန်ုပ်တို့ မလုပ်ဆောင်ခဲ့ပါ၊ ထို့အပြင် inline code အစီအစဉ်၊ CSS အကြောင်းအရာ သို့မဟုတ် JSON-LD ကို ၎င်းက မည်သို့ကိုင်တွယ်သည်ကို ကျွန်ုပ်တို့ မစမ်းသပ်ရသေးပါ၊ ထို့ကြောင့် အခြားကိရိယာတစ်ခု၏ output ကို စစ်ဆေးသကဲ့သို့ပင် ၎င်း၏ output ကို စစ်ဆေးပါ။ ငွေမပေးမီ စျေးနှုန်းကို သင်တွေ့မြင်ရပါသည်။

မည်သည့်အရာကို အသုံးပြုသည်ဖြစ်စေ ဘာသာပြန်ခြင်းမပြုမီ ပြင်ဆင်မှုအဆင့်များကို လုပ်ဆောင်ပြီး ပြီးနောက် စစ်ဆေးမှုများ ပြုလုပ်ပါ။ tag တိုင်း မပျက်မစီးရှိနေသော စာမျက်နှာတစ်ခုသည် စာဖတ်သူကို မှားယွင်းသောအရာကို ရိုက်ထည့်ရန် ပြောနေနိုင်သေးသည်။ သင့် HTML သည် အမှန်တကယ် Markdown ဖြင့် ရေးထားသော စာရွက်စာတမ်းဖြစ်ပါက ကျွန်ုပ်တို့၏ Markdown ဘာသာပြန်လမ်းညွှန် သည် မူရင်းဖော်မတ်ကို အကျုံးဝင်ပါသည်။

စမ်းသပ်ဖိုင်များကို ရယူပါ

ဤစမ်းသပ်မှုမှ အရာအားလုံးကို အခမဲ့ ပြန်လည်အသုံးပြုနိုင်ပါသည်-

  • sample-source.html- ၅၉ လိုင်းရှိ အင်္ဂလိပ်နမူနာ၊
  • check_html_translation.py- ဖွဲ့စည်းပုံစစ်ဆေးကိရိယာ (Python စံစာကြည့်တိုက်သာ အသုံးပြုသည်)၊
  • run_llm_html_test.py- OpenAI နှင့် ကိုက်ညီသော ဒေသတွင်းဆာဗာများအတွက် နည်းလမ်းသုံးမျိုး၊
  • outputs ဖိုလ်ဒါ အတွင်းရှိ output ကိုးခု၊ check-results.txt နှင့် results.csv တို့နှင့်အတူ။

ဆက်စပ် ဆောင်းပါးများ