Bnei-Baruch/mdb

View on GitHub
common/i18n.go

Summary

Maintainability
C
7 hrs
Test Coverage
package common

import (
    "github.com/Bnei-Baruch/mdb/models"
)

type CollectionWName struct {
    *models.Collection
    name string
}

func (c *CollectionWName) Name() string {
    if c.name != "" {
        return c.name
    }

    ci18ns := make(map[string]string)
    for i := range c.R.CollectionI18ns {
        i18n := c.R.CollectionI18ns[i]
        if i18n.Name.Valid {
            ci18ns[i18n.Language] = i18n.Name.String
        }
    }
    if v, ok := ci18ns[LANG_HEBREW]; ok {
        c.name = v
    } else if v, ok := ci18ns[LANG_ENGLISH]; ok {
        c.name = v
    } else if v, ok := ci18ns[LANG_RUSSIAN]; ok {
        c.name = v
    }
    return c.name
}

type UnitWName struct {
    *models.ContentUnit
    name        string
    description string
}

func (cu *UnitWName) Name() string {
    if cu.name != "" {
        return cu.name
    }

    cui18ns := make(map[string]string)
    for i := range cu.R.ContentUnitI18ns {
        i18n := cu.R.ContentUnitI18ns[i]
        if i18n.Name.Valid {
            cui18ns[i18n.Language] = i18n.Name.String
        }
    }
    if v, ok := cui18ns[LANG_HEBREW]; ok {
        cu.name = v
    } else if v, ok := cui18ns[LANG_ENGLISH]; ok {
        cu.name = v
    } else if v, ok := cui18ns[LANG_RUSSIAN]; ok {
        cu.name = v
    }
    return cu.name
}

func (cu *UnitWName) Description() string {
    if cu.description != "" {
        return cu.description
    }

    cui18ns := make(map[string]string)
    for i := range cu.R.ContentUnitI18ns {
        i18n := cu.R.ContentUnitI18ns[i]
        if i18n.Description.Valid {
            cui18ns[i18n.Language] = i18n.Description.String
        }
    }
    if v, ok := cui18ns[LANG_HEBREW]; ok {
        cu.description = v
    } else if v, ok := cui18ns[LANG_ENGLISH]; ok {
        cu.description = v
    } else if v, ok := cui18ns[LANG_RUSSIAN]; ok {
        cu.description = v
    }
    return cu.description
}