LangMap is an open-source, community-driven language map platform that collects phrases and expressions from languages around the world, showcases differences between languages, and provides a valuable resource for language enthusiasts.
LangMap 是一個開源、社區驅動的語言地圖平臺,致力於收集世界各地的語言短語和表達方式,展示不同語言之間的差異,爲語言愛好者提供有價值的學習資源。
中文 | English | 日本語 | Español | français | Deutsch | 한국어 | Português | Русский
- 語言地圖 — 首頁熱力圖可視化展示各語言在全球的分布與語料豐富度(Leaflet + OpenStreetMap)
- 詞條搜索 — 支持按關鍵詞、語言、地域等多維度搜索和篩選詞句,查看詞句組內不同語言的翻譯對比
- 貢獻詞句 — 用戶可提交新詞句或批量跨語言提交同一語義的多語表達,系統自動歸入詞句組(Expression Group)
- 學習手冊(Handbook) — 基於 Markdown 的結構化學習筆記,嵌入詞句組後可動態切換目標語言,即時渲染翻譯
- 收藏集合 — 創建公開或私有的詞句收藏集,方便整理和分享
- 語言列表 — 按語言瀏覽所有詞條,查看各語言的語料統計
- 多語言界面 — 支持動態切換 UI 語言,社區可在線貢獻翻譯
| 層級 | 技術 |
|---|---|
| 前端 | Vue 3 + Vite + Tailwind CSS + vue-i18n + Leaflet |
| 後端 | Hono + TypeScript + Cloudflare Workers |
| 數據庫 | PostgreSQL + R2(對象存儲) |
| 部署 | Cloudflare Workers + Assets |
- Node.js >= 22
- npm
cd web
npm install
npm run devcd backend
npm install
npm run dev後端使用本地 Wrangler 執行,透過 DATABASE_URL 連接本地或測試 PostgreSQL;R2 使用本地模擬。翻譯透過 Worker
服務端的官方 openai SDK 呼叫 Cloudflare Workers AI OpenAI-compatible API。
./dev.sh./dev.sh 啟動前端與 Worker,並檢查 backend/.dev.vars 或環境變數中的 DATABASE_URL。資料庫 schema/migration 由 scripts/postgres/manage.py 管理,不在 dev script 中重建或清除資料。
./dev.sh:啟動本地全棧服務。./dev.sh --port=8790:將本地 API 綁到指定埠,前端仍代理到該埠。- macOS 可用 Homebrew 安裝 PostgreSQL;程式與 importer 不依賴 Homebrew 或
psql。
翻譯需要在 backend/.dev.vars 中配置 Cloudflare 憑證(此檔案不提交):
CLOUDFLARE_ACCOUNT_ID="your-account-id"
CLOUDFLARE_API_TOKEN="your-workers-ai-token"本地 Wrangler 會自動將 .dev.vars 載入 Worker;未加 VITE_ 前綴的 token
不會透過 Vite 的 import.meta.env 暴露給瀏覽器。部署到 Cloudflare 時,帳號 ID 已配置在 backend/wrangler.jsonc,
API token 請設定為 Worker secret:
cd backend
npx wrangler secret put CLOUDFLARE_API_TOKEN./build.sh該腳本會安裝前端依賴、構建前端應用,並將產物複製到 backend/public 目錄。
建立空 PostgreSQL database 後,以 DATABASE_URL 初始化 baseline:
python3 scripts/postgres/manage.py init
python3 scripts/postgres/manage.py migratemacOS 可用 Homebrew 安裝並啟動本機 PostgreSQL:
brew install postgresql@17
brew services start postgresql@17
createdb langmap本地 .dev.vars 最少需要:
DATABASE_URL="postgresql:///langmap"
SECRET_KEY="local-development-secret"詞典 canonical CSV 先以 --check 驗證,再以同一 DATABASE_URL 執行 --apply;入口與欄位契約記錄於
scripts inventory。
- Fork 本倉庫
- 創建功能分支(
git checkout -b feat/your-feature) - 提交更改(
git commit -m 'feat: add your feature') - 推送分支(
git push origin feat/your-feature) - 發起 Pull Request
代碼推送到 main 分支後,Cloudflare 會自動構建並部署,無需手動操作。
如需手動部署:
./deploy.sh此命令會先構建前端,再使用 Wrangler 將前端靜態資源(通過 Cloudflare Assets)和後端 API(通過 Cloudflare Workers)一併部署到 Cloudflare 邊緣網絡。
只驗證部署內容、不實際上線:
./deploy.sh --dry-run後端未變更時可略過前端構建:
./deploy.sh --skip-build