Line data Source code
1 : // Package service は i18n に関連するドメインサービスを提供します。
2 : package service
3 :
4 : import vo "resume/internal/domain/valueobject/i18n"
5 :
6 : // MergeBundles は、複数の辞書バンドルをマージして新しいバンドルを生成するドメインサービスです。
7 : // 同一LocaleのBundleが複数ある場合、後の要素の値で上書きされます。
8 0 : func MergeBundles(bundles ...*vo.Bundle) *vo.Bundle {
9 0 : if len(bundles) == 0 {
10 0 : return vo.NewBundle(vo.NewLocale(""), nil)
11 0 : }
12 :
13 0 : loc := bundles[0].Locale()
14 0 : out := map[string]string{}
15 0 :
16 0 : for _, b := range bundles {
17 0 : for k, v := range b.Messages() {
18 0 : out[k] = v // 後勝ち
19 0 : }
20 : }
21 :
22 0 : return vo.NewBundle(loc, out)
23 : }
|