Skip to content
Snippets Groups Projects
Select Git revision
  • 8b9bbb90246a1577ce231d7344157e2ec42b7fff
  • master default protected
  • fix/PRXS-3401-AddMinItemsOption
  • fix/3368-SchemaIsEqual
  • feature/3109-SerializeFeature
  • release/0.33
  • feature/3109-RecoverySchema
  • feature/3109-feature
  • fix/PRXS-3369-ValidateFields
  • fix/3355-DecodeNumberFields
  • refactor/PRXS-3306-MovePkgGroup1
  • refactor/6-pkg-refactor-expr
  • fix/PRXS-3357-FixRefEncode
  • fix/PRXS-3360-TemplateBuilderPatch
  • feature/3293-MongoV2
  • feature/3272-GoVersionUp
  • feature/PRXS-3218-HideTemplateActions
  • feature/PRXS-3234-PruneIdents
  • feature/3146-UpdateItemStorageInterface
  • feature/3274-ObjectIndexesFixes
  • feature/PRXS-3143-3235-ReferenceOptions
  • v0.33.1
  • v0.32.0
  • v0.31.1
  • v0.31.0
  • v0.30.0
  • v0.29.0
  • v0.28.0
  • v0.27.0-alpha.1+16
  • v0.27.0-alpha.1+15
  • v0.27.0-alpha.1+14
  • v0.27.0-alpha.1+13
  • v0.27.0-alpha.1+12
  • v0.27.0-alpha.1+11
  • v0.27.0-alpha.1+10
  • v0.27.0-alpha.1+9
  • v0.27.0-alpha.1+8
  • v0.27.0-alpha.1+7
  • v0.27.0-alpha.1+6
  • v0.27.0-alpha.1+5
  • v0.27.0-alpha.1+4
41 results

locale.go

Blame
  • locale.go 3.63 KiB
    package locales
    
    import (
    	pb "git.perx.ru/perxis/perxis-go/proto/locales"
    	"golang.org/x/text/language"
    )
    
    const (
    	DefaultID        = "default" // DefaultID идентификатор локали по умолчанию
    	DefaultDirection = "ltr"     // DefaultDirection направление письма по умолчанию
    )
    
    type Locale struct {
    	ID         string `json:"id" bson:"_id"`                  // Идентификатор локали, генерируется автоматически. Для локали по умолчанию устанавливается как "default".
    	SpaceID    string `json:"spaceId" bson:"-"`               // Идентификатор пространства.
    	Name       string `json:"name" bson:"name"`               // Название локали. Опционально, заполняется автоматически (Пример: russian, english)
    	NativeName string `json:"native_name" bson:"native_name"` // Название локали на языке локали. Опционально, заполняется автоматически (Пример: Русский, English)
    	Code       string `json:"code" bson:"code"`               // Код локали https://en.wikipedia.org/wiki/IETF_language_tag
    	Fallback   string `json:"fallback" bson:"fallback"`       // Идентификатор локали, который будет использоваться при отсутствии перевода
    	Direction  string `json:"direction" bson:"direction"`     // Направление письма - слева направо (ltr) или справа налево (rtl). По умолчанию устанавливается ltr.
    	Weight     int    `json:"weight" bson:"weight"`           // Вес локали.
    	NoPublish  bool   `json:"no_publish" bson:"no_publish"`   // Не публиковать контент данной локали. Не будет доступен контент через Delivery API. (кроме default)
    	Disabled   bool   `json:"disabled" bson:"disabled"`       // Запретить использование локали. Нельзя создавать и редактировать контент для данной локали (кроме default)
    }
    
    func (locale *Locale) IsDefault() bool {
    	return locale.ID == DefaultID
    }
    
    // Возвращает язык локали, например "en", "ru"
    func (locale *Locale) GetLanguage() string {
    	lang, err := language.Parse(locale.Code)
    	if err != nil {
    		return ""
    	}
    
    	base, _ := lang.Base()
    	return base.String()
    }
    
    func GetIDs(locales []*Locale) []string {
    	result := make([]string, 0, len(locales))
    	for _, locale := range locales {
    		result = append(result, locale.ID)
    	}
    	return result
    }
    
    func LocaleToProto(locale *Locale) *pb.Locale {
    	if locale == nil {
    		return nil
    	}
    	protoLocale := &pb.Locale{
    		Id:         locale.ID,
    		SpaceId:    locale.SpaceID,
    		Name:       locale.Name,
    		NativeName: locale.NativeName,
    		Code:       locale.Code,
    		Fallback:   locale.Fallback,
    		Direction:  locale.Direction,
    		Weight:     int64(locale.Weight),
    		NoPublish:  locale.NoPublish,
    		Disabled:   locale.Disabled,
    	}
    	return protoLocale
    }
    
    func LocaleFromProto(protoLocale *pb.Locale) *Locale {
    	if protoLocale == nil {
    		return nil