move more functionality to l10n pkg
Signed-off-by: jkoberg <jkoberg@owncloud.com>
This commit is contained in:
@@ -2,10 +2,16 @@
|
||||
package l10n
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"io/fs"
|
||||
"os"
|
||||
|
||||
"github.com/leonelquinteros/gotext"
|
||||
"github.com/owncloud/ocis/v2/ocis-pkg/middleware"
|
||||
settingssvc "github.com/owncloud/ocis/v2/protogen/gen/ocis/services/settings/v0"
|
||||
"github.com/owncloud/ocis/v2/services/settings/pkg/store/defaults"
|
||||
micrometadata "go-micro.dev/v4/metadata"
|
||||
)
|
||||
|
||||
// Template marks a string as translatable
|
||||
@@ -53,3 +59,32 @@ func (t Translator) Locale(locale string) *gotext.Locale {
|
||||
}
|
||||
return l
|
||||
}
|
||||
|
||||
// MustGetUserLocale returns the locale the user wants to use, omitting errors
|
||||
func MustGetUserLocale(ctx context.Context, userID string, preferedLang string, vc settingssvc.ValueService) string {
|
||||
if preferedLang != "" {
|
||||
return preferedLang
|
||||
}
|
||||
|
||||
locale, _ := GetUserLocale(ctx, userID, vc)
|
||||
return locale
|
||||
}
|
||||
|
||||
// GetUserLocale returns the locale of the user
|
||||
func GetUserLocale(ctx context.Context, userID string, vc settingssvc.ValueService) (string, error) {
|
||||
resp, err := vc.GetValueByUniqueIdentifiers(
|
||||
micrometadata.Set(ctx, middleware.AccountID, userID),
|
||||
&settingssvc.GetValueByUniqueIdentifiersRequest{
|
||||
AccountUuid: userID,
|
||||
SettingId: defaults.SettingUUIDProfileLanguage,
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
val := resp.GetValue().GetValue().GetListValue().GetValues()
|
||||
if len(val) == 0 {
|
||||
return "", errors.New("no language setting found")
|
||||
}
|
||||
return val[0].GetStringValue(), nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user