「Tolgee」自行架設(self-hosted),使用docker

上一篇文章「Tolgee」協助您開發多語系APP我建議公司內部使用tolgee;本篇簡易tolgee教學「tolgee該如何使用docker自行架設」

  1. 前置作業要把docker或podman,可以看這篇RockyLinux 安裝 docker準備好。
  2. 準備好外部的資料庫容器(postgres、mariadb),postgress可參考這篇postgres 指令(連線、安裝)
  3. 安裝容器
    這裡我採用連結外部postgres,請先行建立資料庫tolgee,
    其他環境變數(標示紅字),需自行調整。

docker-compose.yaml檔案

version: '3'

services:
app:
image: tolgee/tolgee:latest
volumes:
- ./data:/data
- ./config.yaml:/config.yaml
ports:
- '8090:8080'
deploy:
restart_policy:
condition: on-failure
env_file:
- .env
#若不使用外部postgres,可自架內部專用postgres
# db:
# image: postgres:13
# environment:
# POSTGRES_DB: tolgee
# POSTGRES_USER: admin
# POSTGRES_PASSWORD: admin
# volumes:
# - ./data/postgres:/var/lib/postgresql/data
# ports:
# - '5432ˊ:5432' # 讓外面也可存取

.config.yaml檔案

tolgee:
postgres-autostart:
enabled: false
spring:
datasource:
url: jdbc:postgresql://外部postgreIP:5432/tolgee
username: 帳號
password: 密碼

.env檔案

spring.config.additional-location: file:///config.yaml
TOLGEE_AUTHENTICATION_ENABLED=true
TOLGEE_AUTHENTICATION_INITIAL_PASSWORD=admin
TOLGEE_AUTHENTICATION_INITIAL_USERNAME=admin
TOLGEE_AUTHENTICATION_JWT_SECRET=my_jwt_secret #長度必須大於64
#TOLGEE_MACHINE_TRANSLATION_GOOGLE_API_KEY=my_google_api_key
TOLGEE_SMTP_AUTH=true
TOLGEE_SMTP_FROM=Tolgee <no-reply@mydomain.com>
TOLGEE_SMTP_HOST=email-smtp.regional-region.amazonaws.com
TOLGEE_SMTP_PASSWORD=omg/my/password
TOLGEE_SMTP_PORT=465
TOLGEE_SMTP_SSL_ENABLED=true
TOLGEE_SMTP_USERNAME=user@company.com

# 停用自行註冊功能,只能管理者邀請
TOLGEE_AUTHENTICATION_REGISTRATIONS_ALLOWED=false

# 搞定反向代理之後,請設定網站名稱(不然邀請函只會出現ip)
TOLGEE_FRONT_END_URL=https://tolgee.test.com

安裝完畢,管理者就可以寄發邀請email,或是連結給使用者,讓使用者加入專案

心得結論

Tolgee自架版本雖說有些限制,但已經很好用了,一般小公司有開發app的人已經不得了,不需要用企業版複雜功能。

「Tolgee」協助您開發多語系APP

「Tolgee」是一款新興的翻譯輔助系統,可以協助您開發多語系APP。

目前最有名的雲端翻譯網站為 crowdin,功能強大的付費系統,很推薦使用;若公司需要自行架設(self-hosted),可以參考weblatetolgee,這兩樣都是較有名的免費開源翻譯系統。

以下是 WeblateTolgee 的比較表,以幫助你選擇適合的翻譯與本地化平台:

特性WeblateTolgee
類型自託管 + 雲端自託管 + 雲端
開源✅(完全開源)✅(開源,但部分功能需付費)
托管方式自託管 / Weblate 服務自託管 / Tolgee Cloud
即時協作
支援的格式40+ 種格式(JSON、YAML、PO、XLIFF、TS、ResX 等)JSON、XLIFF、PO、YAML、TS、Java Properties 等
機器翻譯支援 Google、DeepL、Azure、Apertium支援 Google、DeepL、Azure
翻譯記憶庫(TM)
自動提議翻譯
語言品質檢查✅(內建 QA 機制)✅(內建錯誤檢查)
上下文支援🟡(需手動提供)✅(可透過 Tolgee SDK 自動擷取)
API & SDKREST API,可與 Git、CI/CD 整合REST API,專有 SDK(適用於 React、Vue、Angular 等)
Git 整合✅(自動同步)✅(自動同步)
視覺化翻譯(In-context)🟡(有限支援)✅(內建即時預覽)
權限管理✅(細緻的角色與權限控制)✅(細緻的角色與權限控制)
價格免費(自託管)/ 付費雲端免費(基本功能)/ 進階功能需付費
適合對象開發團隊、開源專案、企業需要即時翻譯預覽的開發團隊

實作總結(推薦使用tolgee)

  • Weblate 需先選定APP翻譯格式,然後再進行翻譯,這樣可以直接與APP版控整合,但跨平台APP需要重複翻譯多次(多個格式),另外weblate本身語言翻譯很差(乾脆不要提供各國語系版),寧願使用英文版。
  • Tolgee 則採先翻譯方式,然後再整合不同APP開發格式輸出,這樣只要翻譯一次即可,再匯出讓工程師使用,但無法整合git較不方便。

ps. 到本日(2025/3/22) weblate尚未支援apple string catalog翻譯檔案(.xcstrings),很不方便;而tolgee 3/5之後支援了。

好用的輕量級文件管理系統 Teedy

Teedy是一款很棒的輕量級文件管理軟體,以文件為本體,文件包含檔案,而文件具有唯一性。文件跟檔案不同,文件可綁定多標籤,能同時出現在不同標籤結構。

使用標籤概念,可避免傳統檔案總管,相同的檔案若存在不同目錄,會造成文件管理員維護困難(太多相同的檔案)。

Teedy 系統可綁定網域主控(Ldap)、能權限設定、可檢索,也有文件提交送審功能,功能全面。

除了上述功能,該系統具備審計軌跡Audit Log,符合ISO文管系統的基本要求,要過ISO13485、ISO62304沒難度。

Teedy系統採用微軟GitHub管轄下的開源軟體,GPL授權不用錢;軟體確效因屬於套裝軟體(off the shell),只需做3Q即可,且其風險超低,因其開源特性,全世界的工程師都可親自檢驗,更令人放心,例如1.7版就被掃瞄可能有風險

此開源系統缺點是翻譯超爛,我花了很多時間協助翻譯以。我增加新功能如下:
1. 檔案可決定加密或不加密
2. 檔案名稱可設定不能重複
3. 檔案軟刪除(Soft Delete)
4. 讀取(下載)檔案也會被系統紀錄
5. 檔案可移動到不同的文件
6. 好的中文翻譯
7. 一些小bug修正

本站增加新功能的docker版本請到這裡下載體驗,安裝方式請參考這裡,程式原始碼移駕這裡
** 主開發團隊4個月(2024.9)前有commit新的1.12版,這系統維護快10年了,步調較慢,我新增的功能離該系統初衷甚遠(如檔案可不加密),因此就不敢提交給開發團隊了,除非該團隊有注意到我這個版本(但應該不可能拉,團隊不會花時間研究我這版本) XD

最後

OpenProject用來規劃以及進度追蹤,產生的文件可以提交到Teedy進行管控,補足OpenProject文件管理的不足.

讓老電腦順順跑win10_win11

我有一台13年前的pentium老電腦4GB ram,安裝windows 10、windows 11都覺得好慢好慢,偶然間看到「雲爸的私處」寫的一篇文章「低端電腦救星 ReviOS Windows 11精簡版系統」,文章推薦的「Revision」是開源軟體。該軟體以前會提供整個windows iso檔,讓人下載後直接安裝;後來改成「腳本」方式,我們只要正常安裝windows,再執行AME Wizard優化程式,載入Revision的腳本,就可以讓舊電腦優化了。

  1. 安裝windows相關元件
    VisualCppRedist_AIO_x86_x64
  2. 執行windows優化軟體
    AME Wizard
  3. 透過AME Wizard執行Revi優化腳本
    AME Wizard執行後,需要載入Revi提供的優化腳本,副檔名為apbx
    Revi優化腳本
  4. 首先腳本會要求關閉windows預設的防禦防毒機制,接下來一直下一步,都用預設值,最後重新開機,就大功告成了

    系統預設會停用更新,可透過桌面上的RevisionTool工具改成可更新


安裝bookstack書架

我的軟體工程概念很差,最近遇到一個案子,我想要找人一起,但是那個同事主管說要寫提案,了解後才會分配資源。

於是我想到了「SRS(Software Request Spec)軟體需求規格」當作提案,但是又不想要用傳統的word檔案書寫(很難維護),於是上網找了一下軟體需求與功能規格書的範例,終於找到滿意的書寫格式-使用gitbook

https://mason1762.gitbook.io/samxinbakery/gong-neng-ge

可惜gitbook自架很麻煩,於是我又找到相似而且可以自架、開源的系統-bookstack
bookstack宣稱是wiki軟體,也可以當知識管理,以書架、書本為基本架構的系統
https://demo.bookstackapp.com/books

安裝方式很簡單,我這次寫在網誌裡,也沒放在svn系統(https://docs.kafeiou.pw/!/#iammis),而是直接現學現賣,把安裝方式寫在自架的bookstack上。

https://book.kafeiou.pw/

另外有個很棒bookstack網站建議大家參考一下 BUBU 知識庫 & 秉迅資訊.Studio

nextcloud雲端檔案,新增額外屬性

公司有追蹤「檔案過期」需求,最方便就是賦予檔案新的屬性—過期日,作為nextcloud粉絲,當然由nextcloud著手,萬幸有個app customproperties能達到要求,最後再寫個程式追查一下資料庫資料表oc_properties 過期日資料,就可以完成系統自動通知功能,定期通知檔案主人快到期,讓主人進行延展或是不再追蹤。

但是該app已經有一陣子沒更新了,不支援nextcloud 25以上版本,有人告知可以小改繼續在25、26版使用,真是幸運,我也依樣畫葫蘆,弄了一個能支援25~28的版本來,有興趣的可以按此下載,下載後先解開zip可得tar.gz檔案,再解開成一個目錄「customproperties」,將整個目錄放在nextcloud的custom_apps目錄裡,並且確認目錄權限正確後,回到nextcloud就會出現「 Custom Properties」外掛,即可啟用。

outlook另存msg格式檔案,對方看不懂

outlook作為麻瓜收發郵件軟體最高殿堂,另存檔案當然只能讓outlook打開,其餘閒雜軟體皆不可冒犯。

某日一麻瓜以附件方式,寄給朋友,豈料朋友並沒有outlook,無法開啟msg格式附件,真是大膽!麻瓜求助郎中,郎中開出一帖msgviewer軟體,該軟體佐以java服用,即可將outlook之msg檔案,轉成eml格式(國際標準rfc822格式),經熬煮60個時辰煉化成eml,檔案寄給朋友,朋友以異端thunderbird軟體開啟,正確無誤。

1 2 3 ... 7