diff --git a/pkg/cloudcommon/db/i18n.go b/pkg/cloudcommon/db/i18n.go index 3cf9803990..285b0415ca 100644 --- a/pkg/cloudcommon/db/i18n.go +++ b/pkg/cloudcommon/db/i18n.go @@ -4,7 +4,6 @@ import ( "context" "github.com/pkg/errors" - "golang.org/x/text/language" "yunion.io/x/log" "yunion.io/x/pkg/util/compare" @@ -127,17 +126,6 @@ func init() { I18nManager.SetVirtualObject(I18nManager) } -var tableLangSupported = []language.Tag{ - language.English, - language.Chinese, -} -var tableLangMatcher = language.NewMatcher(tableLangSupported) - -func tableLangMatch(tag language.Tag) language.Tag { - _, i, _ := tableLangMatcher.Match(tag) - return tableLangSupported[i] -} - func (manager *SModelBaseManager) GetModelI18N(ctx context.Context, model IModel) ([]SI18n, error) { ret := []SI18n{} q := manager.Query().Equals("obj_type", model.Keyword()).Equals("obj_id", model.GetId()) @@ -149,6 +137,17 @@ func (manager *SModelBaseManager) GetModelI18N(ctx context.Context, model IModel return ret, err } +func (manager *SModelBaseManager) GetModelKeyI18N(ctx context.Context, model IModel, keyName string) ([]SI18n, error) { + ret := []SI18n{} + q := manager.Query().Equals("obj_type", model.Keyword()).Equals("obj_id", model.GetId()).Equals("key_name", keyName) + err := FetchModelObjects(manager, q, &ret) + if err != nil { + return nil, errors.Wrap(err, "FetchModelObjects") + } + + return ret, err +} + func (manager *SI18nManager) getExternalI18nItems(ctx context.Context, table IModelI18nTable) []IModelI18nEntry { ret := make([]IModelI18nEntry, 0) items := table.GetI18nEntries() @@ -161,7 +160,8 @@ func (manager *SI18nManager) getExternalI18nItems(ctx context.Context, table IMo func (manager *SI18nManager) RemoveI18ns(ctx context.Context, userCred mcclient.TokenCredential, model IModel) error { dbItems := []SI18n{} - err := manager.Query().Equals("obj_type", model.Keyword()).Equals("obj_id", model.GetId()).All(&dbItems) + q := manager.Query().Equals("obj_type", model.Keyword()).Equals("obj_id", model.GetId()) + err := FetchModelObjects(manager, q, &dbItems) if err != nil { return err } diff --git a/pkg/compute/models/cloudregions.go b/pkg/compute/models/cloudregions.go index 01533ac520..ac8a6ecabd 100644 --- a/pkg/compute/models/cloudregions.go +++ b/pkg/compute/models/cloudregions.go @@ -895,10 +895,14 @@ func (self *SCloudregion) GetI18N(ctx context.Context) *jsonutils.JSONDict { } func (self *SCloudregion) GetRegionInfo(ctx context.Context) api.CloudregionResourceInfo { - // name := self.nameI18nLookup(ctx) + name := self.Name + if v, ok := self.GetModelKeyI18N(ctx, self, "name"); ok { + name = v + } + return api.CloudregionResourceInfo{ - Region: self.Name, - Cloudregion: self.Name, + Region: name, + Cloudregion: name, RegionId: self.Id, RegionExtId: fetchExternalId(self.ExternalId), RegionExternalId: self.ExternalId, diff --git a/pkg/compute/models/i18nresource.go b/pkg/compute/models/i18nresource.go index 40d52edd6a..c7a91fbbf7 100644 --- a/pkg/compute/models/i18nresource.go +++ b/pkg/compute/models/i18nresource.go @@ -62,3 +62,17 @@ func (self *SI18nResourceBase) GetModelI18N(ctx context.Context, model db.IModel return _i18n } + +func (self *SI18nResourceBase) GetModelKeyI18N(ctx context.Context, model db.IModel, keyName string) (string, bool) { + entries, err := db.I18nManager.GetModelKeyI18N(ctx, model, keyName) + if err != nil { + log.Infof("GetModelKeyI18N %s", err) + return "", false + } + + if len(entries) > 0 { + return entries[0].Lookup(ctx), true + } + + return "", false +} diff --git a/pkg/compute/models/zoneresource.go b/pkg/compute/models/zoneresource.go index 2f4a322b53..5b564c7619 100644 --- a/pkg/compute/models/zoneresource.go +++ b/pkg/compute/models/zoneresource.go @@ -91,7 +91,12 @@ func (manager *SZoneResourceBaseManager) FetchCustomizeColumns( for i := range rows { rows[i] = api.ZoneResourceInfo{} if _, ok := zones[zoneIds[i]]; ok { - rows[i].Zone = zones[zoneIds[i]].Name + z := zones[zoneIds[i]] + name := z.Name + if v, ok := z.GetModelKeyI18N(ctx, &z, "name"); ok { + name = v + } + rows[i].Zone = name rows[i].ZoneExtId = fetchExternalId(zones[zoneIds[i]].ExternalId) rows[i].CloudregionId = zones[zoneIds[i]].CloudregionId }