docs: record dropdown bilingual display convention

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Chris Chen
2026-05-29 22:27:06 -07:00
parent aef5454202
commit e817801e14
+17
View File
@@ -1510,3 +1510,20 @@ AzureFileOperationService ← 未來實作(🔜 取得 Azure 額度
| 18 | CCLI License 號碼 | 教會是否已有 CCLI License?需填入系統設定 | 🟡 中 | ⏳ 待確認 |
| 19 | ~~Phase 2/3 模組分配~~ | **已決定**Phase 2 = 服事表排班 + 主日出席統計 + 小組管理;Phase 3 = 事工預算 | 🔴 高 | ✅ 決定 |
| 20 | ~~檔案儲存後端~~ | **已決定**:Microsoft 拒絕申請,暫無法用 Azure Blob。改以 `IFileOperationService` 抽象,現階段用 `LocalFileOperationService`base folder 由 config 設定),未來取得 Azure 額度後切換 `AzureFileOperationService`(見 §6 檔案儲存抽象層) | 🔴 高 | ✅ 決定 |
---
## 下拉雙語顯示約定 (Dropdown Bilingual Display)
所有業務下拉選單的選項同時顯示英文與中文,格式 `英文/中文`(無空格、英文在前;無中文則只顯示英文)。
- **DB 查表下拉**giving categories / ministries / expense category groups & subs):
在對應的 API service 載入時計算 `label = bilingual(name_en, name_zh)`,模板綁 `textField="label"`
不改 DB、不改 schema、不改儲存值。
- **寫死 enum 下拉**payment method / expense status / member status / gender / language / roles):
選項一律定義在 `APP/src/app/shared/i18n/option-lists.ts`,型別 `{ value, label }`
模板綁 `textField="label" valueField="value" [valuePrimitive]="true"`。送出/儲存的 `value` 不變。
- 共用工具:`APP/src/app/shared/i18n/bilingual.ts``bilingual(en, zh)`
- 新增下拉時沿用以上兩種模式,不要在 component 內各自寫死中文字串。
*文件由 ROLAC 開發團隊維護。*