]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
common/htime: Fix localization of abbreviated month names
authorJoe Mooring <joe.mooring@veriphor.com>
Wed, 19 Jul 2023 15:31:59 +0000 (08:31 -0700)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 19 Jul 2023 17:00:18 +0000 (19:00 +0200)
Fixes #11267

common/htime/integration_test.go [new file with mode: 0644]
common/htime/time.go

diff --git a/common/htime/integration_test.go b/common/htime/integration_test.go
new file mode 100644 (file)
index 0000000..e72c216
--- /dev/null
@@ -0,0 +1,83 @@
+// Copyright 2022 The Hugo Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package htime_test
+
+import (
+       "testing"
+
+       "github.com/gohugoio/hugo/hugolib"
+)
+
+// Issue #11267
+func TestApplyWithContext(t *testing.T) {
+       t.Parallel()
+
+       files := `
+-- config.toml --
+defaultContentLanguage = 'it'
+-- layouts/index.html --
+{{ $dates := slice
+  "2022-01-03"
+  "2022-02-01"
+  "2022-03-02"
+  "2022-04-07"
+  "2022-05-06"
+  "2022-06-04"
+  "2022-07-03"
+  "2022-08-01"
+  "2022-09-06"
+  "2022-10-05"
+  "2022-11-03"
+  "2022-12-02"
+}}
+{{ range $dates }}
+       {{ . | time.Format "month: _January_ weekday: _Monday_" }}
+       {{ . | time.Format "month: _Jan_ weekday: _Mon_" }}
+{{ end }}
+  `
+
+       b := hugolib.NewIntegrationTestBuilder(
+               hugolib.IntegrationTestConfig{
+                       T:           t,
+                       TxtarString: files,
+               },
+       ).Build()
+
+       b.AssertFileContent("public/index.html", `
+month: _gennaio_ weekday: _lunedì_
+month: _gen_ weekday: _lun_
+month: _febbraio_ weekday: _martedì_
+month: _feb_ weekday: _mar_
+month: _marzo_ weekday: _mercoledì_
+month: _mar_ weekday: _mer_
+month: _aprile_ weekday: _giovedì_
+month: _apr_ weekday: _gio_
+month: _maggio_ weekday: _venerdì_
+month: _mag_ weekday: _ven_
+month: _giugno_ weekday: _sabato_
+month: _giu_ weekday: _sab_
+month: _luglio_ weekday: _domenica_
+month: _lug_ weekday: _dom_
+month: _agosto_ weekday: _lunedì_
+month: _ago_ weekday: _lun_
+month: _settembre_ weekday: _martedì_
+month: _set_ weekday: _mar_
+month: _ottobre_ weekday: _mercoledì_
+month: _ott_ weekday: _mer_
+month: _novembre_ weekday: _giovedì_
+month: _nov_ weekday: _gio_
+month: _dicembre_ weekday: _venerdì_
+month: _dic_ weekday: _ven_
+`)
+}
index f2fff897c44b721d42bc9f4f0b48c574970bac87..c71e39ee42db6b5bdf8c7411e9b6461d356d9d55 100644 (file)
@@ -124,12 +124,15 @@ func (f TimeFormatter) Format(t time.Time, layout string) string {
        monthIdx := t.Month() - 1 // Month() starts at 1.
        dayIdx := t.Weekday()
 
-       s = strings.ReplaceAll(s, longMonthNames[monthIdx], f.ltr.MonthWide(t.Month()))
-       if !strings.Contains(s, f.ltr.MonthWide(t.Month())) {
+       if strings.Contains(layout, "January") {
+               s = strings.ReplaceAll(s, longMonthNames[monthIdx], f.ltr.MonthWide(t.Month()))
+       } else if strings.Contains(layout, "Jan") {
                s = strings.ReplaceAll(s, shortMonthNames[monthIdx], f.ltr.MonthAbbreviated(t.Month()))
        }
-       s = strings.ReplaceAll(s, longDayNames[dayIdx], f.ltr.WeekdayWide(t.Weekday()))
-       if !strings.Contains(s, f.ltr.WeekdayWide(t.Weekday())) {
+
+       if strings.Contains(layout, "Monday") {
+               s = strings.ReplaceAll(s, longDayNames[dayIdx], f.ltr.WeekdayWide(t.Weekday()))
+       } else if strings.Contains(layout, "Mon") {
                s = strings.ReplaceAll(s, shortDayNames[dayIdx], f.ltr.WeekdayAbbreviated(t.Weekday()))
        }