
簡介這份漢化包面向使用 MyEclipse 10.7 的中國 Java 開發(fā)者針對英文界面在菜單、提示與幫助文檔理解上的門檻提供較完整的中文語言替換方案。壓縮包共 484 個文件以 jar 語言資源、html 幫助頁面、xml 配置、properties 文本及少量 jpg 界面圖為主整體約 2.44MB體積輕便便于隨包留存和分發(fā)。漢化范圍覆蓋啟動畫面與主界面、工程創(chuàng)建導入、代碼提示與語法檢查、Maven/Ant 構(gòu)建配置、斷點調(diào)試、服務器運行配置以及數(shù)據(jù)庫管理、JSP/HTML 編輯、UML 建模等內(nèi)置插件和在線幫助并兼顧中文字符較寬帶來的控件寬度與排列適配。已有 216 人學習適合希望在不改變原有開發(fā)習慣的前提下降低語言障礙、快速熟悉 IDE 功能布局的初中級開發(fā)者也可作為團隊統(tǒng)一中文環(huán)境的參考。資源側(cè)重界面本地化與文檔同步而非功能增強使用前宜保留原文件以便回退。1. MyEclipse 10.7 漢化到底改的是哪一層先認清 Eclipse 3.7 的 NL 機制很多人拿到 MyEclipse 10.7 漢化包的第一反應是解壓、拖進安裝目錄、重啟然后發(fā)現(xiàn)菜單還是英文于是斷定“包是壞的”。真實的翻車點往往不在這。MyEclipse 10.7 的界面文字是分兩套來源的一套來自 Eclipse 3.7 底座另一套來自 MyEclipse 自己的商業(yè)插件。所謂漢化包本質(zhì)上是一批命名成xxx.nl_zh_CN_版本號.jar的 NL fragment只有被 OSGi 識別、且版本號和宿主插件對上啟動時才會被掛載。底座對上了文件 / 編輯 / 窗口 / 首選項這一層才是中文MyEclipse 特有的透視圖和服務器面板多數(shù)情況下仍是英文這不是安裝失敗。這篇按“認底座 → 選包 → 落地 → 調(diào)參 → 排錯”的順序走一遍適合還在維護老項目、必須用 10.7 這套環(huán)境的人。2. 版本對齊把 10.7 的底座和 zh_CN 語言包配成一對漢化能不能成八成取決于這一步。Eclipse 的 NL fragment 是“貼著宿主插件版本走”的宿主的org.eclipse.ui是 3.7.2你就不能塞一個 3.6.x 的翻譯包進去哪怕文件名看著差不多。所以動手之前先把底座版本釘死再去挑包順序不能反。2.1 確認底座版本三個比“關于”對話框更可靠的入口最省事的做法是啟動 IDE 看“幫助 → 關于”但這一步有個前提IDE 得能正常起來。一旦你已經(jīng)被半吊子漢化包搞到啟動卡死這招就廢了。我一般直接看文件三個位置任選位置關鍵內(nèi)容能讀出什么安裝根目錄.eclipseproductversion3.7.2底座主版本最直接Common\plugins\org.eclipse.core.runtime_*.jar文件名里的版本段運行時版本判斷 SR 級別configuration\org.eclipse.equinox.simpleconfigurator\bundles.info每行 CSV含 bundle 符號名與版本實際被加載的插件清單排錯時最有用MyEclipse 10.x 的插件目錄不在安裝根目錄下而是在Common\plugins和Common\features這一點和純 Eclipse 不一樣很多人第一次找插件版本會在這里迷路。寫個小腳本掃一遍比手工翻目錄快得多import re import pathlib # 改成你自己的安裝根目錄路徑里有空格記得用原始字符串 IDE_HOME pathlib.Path(rD:\MyEclipse\MyEclipse 10) PLUGINS IDE_HOME / Common / plugins # 只關心決定 UI 語言的那幾個宿主插件 TARGET re.compile(r^(org\.eclipse\.(?:ui|core\.runtime|platform|ui\.workbench))_(\d\.\d\.\d)) found {} for jar in PLUGINS.glob(*.jar): m TARGET.match(jar.name) if m: found.setdefault(m.group(1), set()).add(m.group(2)) for name in sorted(found): print(f{name:32s} - {, .join(sorted(found[name]))})這段腳本干的事很簡單遍歷Common\plugins下的 jar用正則把插件符號名 主次修訂版本號摳出來按插件名歸并。TARGET里我只留了ui、core.runtime、platform、ui.workbench四個因為它們才是菜單、對話框、首選項頁面的文字來源。跑出來的結(jié)果如果是3.7.2那你要的語言包就必須是 Indigo SR2 那一批如果冒出3.6.x的混雜版本說明這個安裝目錄被前人手功覆蓋過先別急著漢化把底座修干凈再說。提示bundles.info是帶啟動順序和 start-level 的用 Excel 或文本編輯器打開時按逗號分列能一眼看出某個 NL jar 到底有沒有被登記進去比翻configuration日志快。2.2 語言包選型整包、社區(qū)翻譯包、第三方整合包的差別市面上能拿到的 zh_CN 包大致三類名字都很像實際差別不小類型典型形態(tài)優(yōu)點風險點官方整包一個壓縮包內(nèi)含完整featuresplugins命名帶 SR 號版本嚴格對應覆蓋完整體積大只覆蓋底座不含 MyEclipse 自有插件社區(qū)翻譯項目分包按插件拆成多個*.nl_zh_CN_*.jar可按需取用版本粒度細需要自己挑挑錯版本號直接不加載第三方整合包打包成“一鍵安裝”腳本或自解壓程序省事?;烊肱f版本 jar覆蓋式安裝后極難回退選型原則就一條NL fragment 的版本號必須等于它要翻譯的那個宿主插件的版本號。舉例org.eclipse.ui.nl_zh_CN_3.7.2.xxxxxxxx.jar對應的是org.eclipse.ui_3.7.2.xxxxxxxx.jar最后那串構(gòu)建號最好也一致。差一個修訂號大多數(shù)時候還能湊合加載差一個次版本號輕則界面部分回退成英文重則啟動階段拋MissingResourceException連歡迎頁都進不去。我在實際項目里更傾向于用官方整包因為它和底座的版本是一起發(fā)布的省去逐條比對。如果只是想補幾個高頻界面的中文社區(qū)分包更靈活但也更考驗你對版本號的眼力。2.3 文件落地形態(tài)features 與 plugins 里到底該有什么解壓一個合格的 zh_CN 語言包目錄結(jié)構(gòu)應該長這樣langpack/ └── eclipse/ ├── features/ │ ├── org.eclipse.platform.nl_zh_CN_3.7.2.xxxx.jar │ └── org.eclipse.rcp.nl_zh_CN_3.7.2.xxxx.jar └── plugins/ ├── org.eclipse.ui.nl_zh_CN_3.7.2.xxxx.jar ├── org.eclipse.ui.workbench.nl_zh_CN_3.7.2.xxxx.jar └── org.eclipse.core.runtime.nl_zh_CN_3.7.2.xxxx.jarplugins下的 jar 是插件級翻譯負責具體視圖、編輯器、對話框的字符串features下的 jar 是特性級翻譯負責“安裝詳情”“關于”這類以 feature 為單位聚合的描述文本。兩者缺一表現(xiàn)不一樣只放plugins主菜單會變中文但“幫助 → 關于”里的特性描述還是英文只放features則是反過來的效果。這就是為什么有些人漢化完說“漢化了一半”其實不是包的問題是他只拷了半個目錄。對照檢查的方法很土但有效把語言包plugins里的 jar 名去掉.nl_zh_CN_版本號后綴得到宿主插件名再回頭看Common\plugins里有沒有同名宿主。有說明這條翻譯用得上沒有就是冗余文件留著也不會加載但會讓目錄越來越亂。3. 三種落地方式dropins、links、覆蓋安裝的取舍版本對齊之后才輪到“往哪兒放”。這三種方式我都在真機上跑過結(jié)論是日常用 links臨時試水用 dropins覆蓋安裝只在被逼到墻角時用。3.1 dropins 方式改動最小但要接受首次啟動不生效dropins 是 Eclipse 留給外部擴展的目錄MyEclipse 安裝根目錄下默認沒有需要自己建。放法有兩種我推薦帶子目錄的那種便于整塊刪除echo off set IDE_HOMED:\MyEclipse\MyEclipse 10 set LANG_SRCD:\download\langpack\eclipse REM 建立獨立的語言包目錄不要直接往 dropins 根下撒 jar if not exist %IDE_HOME%\dropins\zh_CN\plugins mkdir %IDE_HOME%\dropins\zh_CN\plugins if not exist %IDE_HOME%\dropins\zh_CN\features mkdir %IDE_HOME%\dropins\zh_CN\features xcopy %LANG_SRC%\plugins\*.jar %IDE_HOME%\dropins\zh_CN\plugins\ /Y /Q xcopy %LANG_SRC%\features\*.jar %IDE_HOME%\dropins\zh_CN\features\ /Y /Q echo done./Y是覆蓋時不詢問/Q是靜默兩個參數(shù)在批量刷機器時很省心。關鍵在于目錄層級dropins\zh_CN\下面必須是plugins和features兩個目錄p2 的 dropins 掃描器才認得出來如果你把 jar 直接丟在dropins\zh_CN\根下它會被當成普通 jar 忽略掉。這個層級的坑我踩過不止一次表現(xiàn)就是“明明拷進去了重啟毫無變化”。dropins 的第二個坑是首次啟動不生效。NL fragment 的掛載依賴-nl參數(shù)在啟動早期生效而 dropins 目錄的掃描發(fā)生在 p2 reconciler 階段比它晚。所以正確姿勢是拷完文件帶-clean啟動一次讓它把新 bundle 寫進bundles.info再正常啟動。后面第 4 章會細說。3.2 links 方式多語言切換和批量部署的正解links 方式是我現(xiàn)在只用的一種。原理是在links目錄下放一個.link文本文件內(nèi)容是path指向語言包的實際位置啟動器讀這個指針去加載。好處是語言包本體可以放在安裝目錄之外裝在 D 盤、共享盤、甚至 U 盤都行IDE 目錄本身不被污染。# 文件D:\MyEclipse\MyEclipse 10\links\zh_CN.link # 內(nèi)容只有一行路徑用正斜杠不要加引號不要以分號結(jié)尾 pathD:/MyEclipse/langpack/zh_CN而D:/MyEclipse/langpack/zh_CN這個目錄下同樣要有features和plugins兩個子目錄結(jié)構(gòu)和 2.3 節(jié)一致。.link文件有三個容易寫錯的地方一是路徑分隔符必須用正斜杠/寫成反斜杠在部分版本上會被吃掉二是路徑里帶空格時不要加引號加了反而解析失敗三是行尾不要留多余的分號Eclipse 3.x 的解析器不接受。寫完之后配合-clean啟動一次然后在“幫助 → 關于 → 安裝詳細信息 → 插件”里搜nl_zh_CN能搜到就說明加載成功。links 方式真正的價值在切換。你要臨時回到英文界面不用卸載把zh_CN.link改名成zh_CN.link.off再帶-clean啟動一次即可。第 6 章會把這個動作做成腳本。3.3 覆蓋安裝什么時候才值得用以及必須做的備份覆蓋安裝就是把語言包的features和plugins里的 jar直接拷進Common\features和Common\plugins。它唯一的好處是“一定能被加載”因為文件就躺在宿主插件旁邊不存在掃描不到的問題。在老版本啟動器不認 dropins、links 又配不對路徑的情況下這是最后的后悔藥。代價是你失去了回退能力。Common\plugins里原本就有幾百個 jar語言包往里一摻事后想分清哪些是后來加的只能靠文件名里的nl_zh_CN去篩。所以覆蓋之前必須先備份哪怕只是把整個Common目錄壓縮一份echo off set IDE_HOMED:\MyEclipse\MyEclipse 10 set BACKUPD:\backup\myeclipse10_common_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%.zip REM 用系統(tǒng)自帶的 tarWin10 1803 可用打包避免依賴第三方壓縮工具 tar -a -c -f %BACKUP% -C %IDE_HOME% Common echo backup - %BACKUP%tar -a會根據(jù)輸出文件擴展名自動選擇壓縮格式.zip走 zip.tar.gz走 gzipWindows 10 之后自帶不用裝 7-Zip。備份完再覆蓋出問題直接把Common整個還原回去。注意覆蓋安裝之后如果將來用 IDE 自帶的更新機制升級NL jar 會被當成“未知來源的插件”處理升級過程可能報校驗失敗。這也是我不推薦覆蓋的原因之一。三種方式的取舍可以這么記只做一次、機器就一臺links要批量刷十幾臺開發(fā)機links 加共享路徑最省事試水階段怕搞壞環(huán)境dropins 加-clean前兩種都被環(huán)境卡住才上覆蓋并且先備份。4. 啟動參數(shù)與緩存讓漢化真正生效的那幾個開關包放對了參數(shù)沒配對界面照樣是英文。這一步是純配置活但細節(jié)密度很高尤其是 ini 文件的參數(shù)順序。4.1 ini 文件認哪個myeclipse.ini 和 eclipse.ini 不是一回事MyEclipse 10 的安裝根目錄下啟動器是myeclipse.exe它讀的是同目錄的myeclipse.ini。有些人的目錄里同時存在eclipse.ini可能是從別的 Eclipse 拷貝過來的或者舊版本殘留改了半天沒反應就是改錯了文件。判斷方法很簡單myeclipse.ini的第一行通常是-startup緊跟著的--launcher.library指向Common\plugins下的 launcher 插件路徑里帶Common就對了。一個可用的myeclipse.ini關鍵片段長這樣-startup ../Common/plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar --launcher.library ../Common/plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20110502 -vm C:/Java/jdk1.6.0_45/bin/javaw.exe -nl zh_CN -vmargs -Xms256m -Xmx1024m -XX:MaxPermSize256m -Duser.languagezh -Duser.countryCN參數(shù)順序是硬約束-nl屬于啟動器參數(shù)必須寫在-vmargs之前-vmargs之后的所有內(nèi)容都會原樣傳給 JVM這時候再寫-nl就沒用了JVM 不認識它會直接忽略。這個順序錯位導致的“漢化不生效”占了我在群里見到的故障的一半以上。-Duser.languagezh和-Duser.countryCN是給 JVM 的默認 Locale 兜底主要影響日期、數(shù)字格式以及部分沒讀-nl的第三方插件。加上沒壞處但別指望它單獨就能把界面變中文。4.2 -clean 的時機什么時候必須加加幾次-clean的作用是清掉configuration目錄下的 OSGi 緩存強制重新掃描所有 bundle。它和漢化的關系是只要你動過plugins、features、dropins、links里的任何一處舊緩存里的 bundle 清單就和實際文件對不上了必須-clean一次重建。判斷要不要加我一般看兩件事場景要不要 -clean說明首次安裝語言包要重建 bundle 清單登記 NL fragment修改.link文件的 path要路徑變了舊清單失效只改 ini 里的-nl值要Locale 變化需要重新解析 fragment日常啟動不要每次加會拖慢啟動十幾秒起步換工作空間不要工作空間和 bundle 緩存是兩回事還有個細節(jié)-clean在 Eclipse 3.7 上只清一次就夠第二次啟動不要帶否則每次啟動都在重建緩存。有些教程讓你常駐-clean那是把啟動速度當兒戲血淚經(jīng)驗是別學。4.3 驗證漢化生效的四個檢查點別只看菜單。四個檢查點按可信度從低到高排主菜單文件 / 編輯 / 窗口 / 幫助變中文。最直觀但也最容易被“半漢化”騙過去。首選項頁窗口 → 首選項左側(cè)樹的中文覆蓋率。這里如果只有頂層是中文、展開后全是英文說明plugins級 NL 缺了一部分。安裝詳細信息幫助 → 關于 MyEclipse → 安裝詳細信息 → 插件搜nl_zh_CN。能列出條目說明 fragment 被 OSGi 認了這是最硬的證據(jù)。bundles.info打開configuration\org.eclipse.equinox.simpleconfigurator\bundles.info搜nl_zh_CN。有記錄 已登記沒記錄 加載鏈路斷了回去查 dropins 層級或.link路徑。這四個點如果只有 1 通過、3 和 4 都不通過說明你看到的中文其實是某個插件的內(nèi)置翻譯不是你裝的語言包在起作用別高興太早。5. 排查與避坑漢化后啟動失敗、半中半英的五個現(xiàn)場下面五條都是我在老機器上真實遇到過的按“現(xiàn)象 → 原因 → 解決”寫遇到同款可以直接對號入座。5.1 改了 ini 重啟毫無變化菜單依舊英文現(xiàn)象按教程在eclipse.ini里加了-nl zh_CN重啟多次界面紋絲不動。原因啟動器讀的是同目錄的myeclipse.inieclipse.ini根本沒被加載或者你把-nl寫到了-vmargs后面被當成 JVM 參數(shù)吞掉了。解決確認myeclipse.ini里-startup段的路徑含Common把-nl和zh_CN移到-vmargs之前然后帶-clean啟動一次。改完先別急著看菜單去bundles.info里搜一下有沒有 NL 記錄那才是準信號。5.2 啟動卡在 splash或者起來后直接閃退現(xiàn)象加完語言包雙擊myeclipse.exe進度條走到一半停住或者窗口一閃就沒了。原因語言包的版本和底座不匹配。典型是拿了 3.6 的包往 3.7.2 上懟NL fragment 聲明了對某個宿主版本的依賴OSGi 解析依賴失敗啟動鏈在早期就斷了。解決先看工作空間\.metadata\.log搜MissingResourceException或Could not resolve module日志里會明確寫出是哪個 bundle 解析失敗。確認是版本問題后把語言包整個撤掉dropins 直接刪目錄、links 就改.link后綴、覆蓋安裝就還原備份換成與底座完全一致的版本再試。不要試圖靠刪幾個 jar “修”版本問題那是在給自己挖坑。5.3 菜單中文了但 MyEclipse 特有的面板全是英文現(xiàn)象文件 / 編輯是中文切到 MyEclipse 透視圖服務器連接器、部署面板、數(shù)據(jù)庫瀏覽器全是英文。原因這不是故障。MyEclipse 自有插件是商業(yè)組件官方語言包里不包含它們的 NL fragment社區(qū)翻譯項目也極少覆蓋。漢化的邊界就在 Eclipse 底座這一層。解決接受這個邊界或者只對高頻菜單做局部漢化自己寫 NL fragment 不現(xiàn)實工作量大且隨版本失效。另外檢查一下是不是只拷了plugins沒拷features那種情況下“幫助 → 關于”里的特性描述會殘留英文容易和上面這種正?,F(xiàn)象混淆。5.4 首次啟動沒反應第二次啟動突然變中文了現(xiàn)象裝完語言包第一次啟動界面英文什么都沒改第二天再開變中文了。原因dropins 或 links 的 bundle 掃描發(fā)生在啟動流程靠后的階段第一次啟動只是把新 bundle 登記進bundles.info真正掛載要等下一次啟動。這就是“首次不生效”的機制。解決裝完立刻帶-clean啟動一次然后再正常啟動一次一次搞定省掉一天的困惑。反過來說如果你遇到“怎么都不生效”先確認是不是每次都只啟動了一次就放棄了。5.5 漢化之后項目里的中文注釋和字符串全變亂碼現(xiàn)象界面中文了打開原有項目Java 文件里的中文注釋變成一堆問號或方塊控制臺輸出也是亂碼。原因和漢化包沒關系。-nl zh_CN只影響界面 Locale工作空間的文本編碼是另一套設置。老項目多半是 GBK而新工作空間默認跟隨系統(tǒng)或 UTF-8一錯位就亂碼。解決窗口 → 首選項 → 常規(guī) → 工作空間把“文本文件編碼”顯式設成項目實際用的編碼GBK 或 UTF-8單個項目還可以在項目屬性里覆蓋。同時檢查 ini 里有沒有多余的-Dfile.encoding有的話統(tǒng)一成和項目一致的值。這一條最容易背鍋給漢化包其實改兩行設置就好了。6. 進階做一個中英文一鍵切換的啟動腳本維護老項目的時候我經(jīng)常需要在中英文之間來回切自己看中文舒服但截圖給外部對接方、或者排查某個只記得英文名的菜單項時又得切回英文。手工改.link后綴、帶-clean、再啟動一天折騰幾遍誰都煩。所以我把這套動作固化成了一個批處理放在桌面雙擊就切。思路是語言包目錄保持不動只改links\zh_CN.link的啟用狀態(tài)然后自動帶-clean啟動一次 IDE。腳本里用兩個標記文件判斷當前狀態(tài)避免重復切換。echo off setlocal enabledelayedexpansion REM 按實際安裝路徑修改 set IDE_HOMED:\MyEclipse\MyEclipse 10 set LINK_FILE%IDE_HOME%\links\zh_CN.link set FLAG%IDE_HOME%\links\.lang_state if not exist %LINK_FILE% ( echo [ERROR] link file not found: %LINK_FILE% exit /b 1 ) set STATEen if exist %FLAG% set /p STATE%FLAG% if /i %STATE%zh ( REM 當前中文切英文改名禁用 link清狀態(tài) ren %LINK_FILE% zh_CN.link.off del /q %FLAG% 2nul echo switched to EN ) else ( REM 當前英文切中文恢復 link寫狀態(tài) if exist %LINK_FILE%.off ren %LINK_FILE%.off zh_CN.link echo zh%FLAG% echo switched to ZH ) REM 帶 -clean 啟動一次重建 bundle 清單 start %IDE_HOME%\myeclipse.exe -clean endlocal腳本里有幾個點值得說明。setlocal enabledelayedexpansion是為循環(huán)和變量展開準備的這個場景其實用不上但養(yǎng)成習慣沒壞處。ren改后綴這一步是關鍵Eclipse 只認.link結(jié)尾的文件.link.off會被忽略等于軟禁用語言包本體一個字節(jié)都沒動隨時能切回來。-clean通過命令行傳比改 ini 更靈活用完就沒了不會讓每次啟動都背著這個包袱。狀態(tài)判斷用的是一個標記文件.lang_state里面寫zh表示當前是中文態(tài)。這個做法有點土但比去解析bundles.info穩(wěn)得多——后者在異常退出時可能寫不完整反而誤判。第一次運行時標記文件不存在腳本默認走英文態(tài)會把.link恢復回來這個行為是符合直覺的。如果你機器上裝了好幾套環(huán)境這個腳本稍微改改就能復用把IDE_HOME抽成參數(shù)外面套一層菜單一個腳本管三四個安裝目錄。我一般還會在腳本末尾加一行timeout /t 3避免窗口一閃而過看不到輸出。提示切換之后如果發(fā)現(xiàn) IDE 啟動報 bundle 沖突先別懷疑腳本去links目錄看看是不是殘留了.link.off和.link同時存在的情況。ren在目標文件已存在時會失敗腳本里沒做覆蓋保護這是唯一需要人工確認的點。從那以后我每次裝完語言包都會先把 ini 參數(shù)順序、bundles.info里的 NL 記錄、links目錄的實際狀態(tài)這三樣強制過一遍再談“漢化成功”。這三處任何一處沒對上界面上的中文都只是巧合。希望幫到你。本文還有配套的精品資源點擊獲取