Skip to content

proposal: time: Long/Short day and month names should start with Upper case to allow customization #34698

@borowszky

Description

@borowszky

What version of Go are you using (go version)?

$ go version
go version go1.12.2  windows/amd64

Does this issue reproduce with the latest release?

Yes

What operating system and processor architecture are you using (go env)?

go env Output
$ go env
set GOARCH=amd64
set GOBIN=
set GOCACHE=......\AppData\Local\go-build
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=.....\go
set GOPROXY=
set GORACE=
set GOROOT=C:\Go
set GOTMPDIR=
set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
set GCCGO=gccgo
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=.....\AppData\Local\Temp\go-build844154330=/tmp/go-build -gno-record-gcc-switches

What did you do?

I am developing a web app that should support multiple languages (days and months names should also change when user selects a languag). I am using "github.com/beego/i18n" to achieve i18n on my front-end. All days and months (long and short names) are configured for each language in the locale.ini specified for that language. Even when I read the days and months for each language, I am not able to pass it so the time module uses it instead of the hard-coded English long/short days and months names.

Suggesting

var longDayNames
var shortDayNames
var shortMonthNames
var longMonthNames

be changed to

var ShortDayNames
var LongDayNames
var ShortMonthNames
var LongMonthNames

func (c *ExtendedController) UpdateDaysAndMonthsToUserLocale() {

time.LongDayNames = []string{
	i18n.Tr(c.Lang, "LongDayNameSunday"),
	i18n.Tr(c.Lang, "LongDayNameMonday"),
	i18n.Tr(c.Lang, "LongDayNameTuesday"),
	i18n.Tr(c.Lang, "LongDayNameWednesday"),
	i18n.Tr(c.Lang, "LongDayNameThursday"),
	i18n.Tr(c.Lang, "LongDayNameFriday"),
	i18n.Tr(c.Lang, "LongDayNameSaturday"),
}
for index := 0; index < len(time.LongDayNames); index++ {
	time.Days[index] = time.LongDayNames[index]
}

time.ShortDayNames = []string{
	i18n.Tr(c.Lang, "ShortDayNameSunday"),
	i18n.Tr(c.Lang, "ShortDayNameMonday"),
	i18n.Tr(c.Lang, "ShortDayNameTuesday"),
	i18n.Tr(c.Lang, "ShortDayNameWednesday"),
	i18n.Tr(c.Lang, "ShortDayNameThursday"),
	i18n.Tr(c.Lang, "ShortDayNameFriday"),
	i18n.Tr(c.Lang, "ShortDayNameSaturday"),
}
time.LongMonthNames = []string{
	i18n.Tr(c.Lang, "LongMonthNameJanuary"),
	i18n.Tr(c.Lang, "LongMonthNameFebruary"),
	i18n.Tr(c.Lang, "LongMonthNameMarch"),
	i18n.Tr(c.Lang, "LongMonthNameApril"),
	i18n.Tr(c.Lang, "LongMonthNameMay"),
	i18n.Tr(c.Lang, "LongMonthNameJune"),
	i18n.Tr(c.Lang, "LongMonthNameJuly"),
	i18n.Tr(c.Lang, "LongMonthNameAugust"),
	i18n.Tr(c.Lang, "LongMonthNameSeptember"),
	i18n.Tr(c.Lang, "LongMonthNameOctober"),
	i18n.Tr(c.Lang, "LongMonthNameNovember"),
	i18n.Tr(c.Lang, "LongMonthNameDecember"),
}
for index := 0; index < len(time.LongMonthNames); index++ {
	time.Months[index] = time.LongMonthNames[index]
}
time.ShortMonthNames = []string{
	i18n.Tr(c.Lang, "ShortMonthNameJanuary"),
	i18n.Tr(c.Lang, "ShortMonthNameFebruary"),
	i18n.Tr(c.Lang, "ShortMonthNameMarch"),
	i18n.Tr(c.Lang, "ShortMonthNameApril"),
	i18n.Tr(c.Lang, "ShortMonthNameMay"),
	i18n.Tr(c.Lang, "ShortMonthNameJune"),
	i18n.Tr(c.Lang, "ShortMonthNameJuly"),
	i18n.Tr(c.Lang, "ShortMonthNameAugust"),
	i18n.Tr(c.Lang, "ShortMonthNameSeptember"),
	i18n.Tr(c.Lang, "ShortMonthNameOctober"),
	i18n.Tr(c.Lang, "ShortMonthNameNovember"),
	i18n.Tr(c.Lang, "ShortMonthNameDecember"),
}

}

What did you expect to see?

var LongDayNames = []string{ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", }

var ShortDayNames = []string{ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", }

var ShortMonthNames = []string{ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", }

var LongMonthNames = []string{ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", }

What did you see instead?

var longDayNames = []string{ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", }

var shortDayNames = []string{ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", }

var shortMonthNames = []string{ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", }

var longMonthNames = []string{ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", }

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions