Line data Source code
1 : // Package i18n は、多言語辞書のロードおよび翻訳ロジックを管理します。
2 : package i18n
3 :
4 : import vo "resume/internal/domain/valueobject/i18n"
5 :
6 : // ListLocales はキャッシュまたはリポジトリから利用可能ロケール一覧を取得します。
7 0 : func (uc *Interactor) ListLocales() []vo.Locale {
8 0 : // まずキャッシュに存在する場合はそれを返す
9 0 : if locales := uc.cache.Locales(); len(locales) > 0 {
10 0 : return locales
11 0 : }
12 :
13 : // fallback: repoからロードしてキー一覧をLocaleに変換
14 0 : all, err := uc.repo.LoadAll()
15 0 : if err != nil {
16 0 : return []vo.Locale{}
17 0 : }
18 0 : out := make([]vo.Locale, 0, len(all))
19 0 : for loc := range all {
20 0 : out = append(out, loc)
21 0 : }
22 0 : return out
23 : }
|