Skip to content
This repository was archived by the owner on Jul 8, 2025. It is now read-only.
Moda / L10n Project edited this page Nov 2, 2023 · 2 revisions

本次專案建立翻譯流程與測試網站,使用 Weblate 與 Github 搭建翻譯平台,協助譯者與校閱者在翻譯、校閱過程中的溝通與作業。

工作平台簡介

Weblate

Weblate 主要是整合版本控制(如:git)在網頁介面上編輯的翻譯工具且支援多格式的輸出,並可共用字彙庫,方便譯者達成翻譯一致信。

Weblate 使用 GNU GPLv3+ 方式授權釋出,本次專案使用「自行架設」方案建構翻譯平台。https://weblate.org/zh-hant/hosting/

目前主要開源軟體在地化使用 weblate 為翻譯平台:openSUSE, Mattermost, F-Droid, Tor Project … 與約 900 開源專案使用。https://hosted.weblate.org/projects/

Github

GitHub 是一個線上軟體原始碼代管服務平台,使用 Git 作為版本控制軟體並支援建立私有倉庫。

翻譯平台建構

本次專案使用 Weblate (docker-compose) 版本建立,並依軟體基本需求,在 AWS EC2 建立一個 t4g.medium instance、Ubuntu 22.04.1 LTS(20 GB),並全程連線使用 TLS1.3(憑證發行商 Let's Encrypt)確保資料傳遞安全與避免網絡連線被攔截和竄改。

Weblate 下載

本次專案使用 weblate (docker compose) 版本,可直接使用 git 將此版本下載。

git clone https://github.com/WeblateOrg/docker-compose.git
cd docker-compose

Weblate 設定檔

調整以下設定檔至合適的資訊:

version: '3'
services:
  weblate:
  image: weblate/weblate:latest
  ports:
    - 127.0.0.1:8787:8080
  environment:
    WEBLATE_DEBUG: 0
    WEBLATE_ADMIN_EMAIL: {admin mail}
    WEBLATE_ADMIN_PASSWORD: {admin password}
    WEBLATE_SERVER_EMAIL: {server admin mail}
    WEBLATE_DEFAULT_FROM_EMAIL: {sender mail}
    WEBLATE_EMAIL_HOST: email-smtp.us-east-1.amazonaws.com
    WEBLATE_EMAIL_HOST_USER: {AWS SES API Token}
    WEBLATE_EMAIL_HOST_PASSWORD: {AWS SES API Key}
    WEBLATE_TIME_ZONE: "Asia/Taipei"
    WEBLATE_SITE_DOMAIN: {website domain}
    WEBLATE_ENABLE_HTTPS: 1
    WEBLATE_REGISTRATION_OPEN: 0
    WEBLATE_WORKERS: 1
    CELERY_MAIN_OPTIONS: --concurrency=1
    CELERY_NOTIFY_OPTIONS: --concurrency=1
    CELERY_TRANSLATE_OPTIONS: --concurrency=1

Weblate 啟動

設定檔完成後可以在 weblate 資料夾建立與啟動。

docker compose up –build

第一次執行需要等待些許時間初始化。

建立翻譯設定檔

  • 檔案格式:JSON 巢狀結構
  • 語言篩選:^(en|zh_Hant)$
  • 檔案遮罩:src/i18n/strings/*.json
  • 新翻譯模版:src/i18n/strings/en_EN.json

建立 Element

這裡以 element-web 建立 Demo 測試網站,其專案的翻譯字串來自 matrix-react-sdk 專案。由於 Element 翻譯流程是直接到官方上游翻譯平台直接貢獻,雖然官方會規律釋出新功能與更新翻譯文檔,但是無明確的釋出時程可供參考,因此當我們在官方上游翻譯完成後,會將翻譯檔案匯出再匯入到團隊臨時的 matrix-react-sdk 專案並合併至測試網站。

更名設定檔

mv ./config.sample.json ./config.json

建立 Docker 映像檔設定檔

docker build -t element-web:demo \
	--build-arg USE_CUSTOM_SDKS=true \
	--build-arg REACT_SDK_REPO="https://github.com/moda-gov-tw/matrix-org.matrix-react-sdk.git" \
	--build-arg REACT_SDK_BRANCH="manually_i18n" \
	--build-arg JS_SDK_REPO="https://github.com/matrix-org/matrix-js-sdk.git" \
	--build-arg JS_SDK_BRANCH="develop" \
	.

其中 REACT_SDK_REPO 與 REACT_SDK_BRANCH 則是指定到團隊臨時的 matrix-react-sdk 專案抽換新的翻譯文檔案。

啟動 element-web:demo 容器

docker run -p 8887:80 \
	-v $(pwd)/config.json:/app/config.json \
	element-web:demo