language_test.go (3126B)
1 // Copyright 2020 The Hugo Authors. All rights reserved. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // http://www.apache.org/licenses/LICENSE-2.0 7 // 8 // Unless required by applicable law or agreed to in writing, software 9 // distributed under the License is distributed on an "AS IS" BASIS, 10 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 // See the License for the specific language governing permissions and 12 // limitations under the License. 13 14 package hugolib 15 16 import ( 17 "fmt" 18 "strings" 19 "testing" 20 21 "github.com/gohugoio/hugo/htesting" 22 23 qt "github.com/frankban/quicktest" 24 ) 25 26 func TestI18n(t *testing.T) { 27 c := qt.New(t) 28 29 //https://github.com/gohugoio/hugo/issues/7804 30 c.Run("pt-br should be case insensitive", func(c *qt.C) { 31 b := newTestSitesBuilder(c) 32 langCode := func() string { 33 c := "pt-br" 34 if htesting.RandBool() { 35 c = strings.ToUpper(c) 36 } 37 return c 38 } 39 40 b.WithConfigFile(`toml`, fmt.Sprintf(` 41 baseURL = "https://example.com" 42 defaultContentLanguage = "%s" 43 44 [languages] 45 [languages.%s] 46 weight = 1 47 `, langCode(), langCode())) 48 49 b.WithI18n(fmt.Sprintf("i18n/%s.toml", langCode()), `hello.one = "Hello"`) 50 b.WithTemplates("index.html", `Hello: {{ i18n "hello" 1 }}`) 51 b.WithContent("p1.md", "") 52 b.Build(BuildCfg{}) 53 54 b.AssertFileContent("public/index.html", "Hello: Hello") 55 }) 56 } 57 58 func TestLanguageBugs(t *testing.T) { 59 c := qt.New(t) 60 61 // Issue #8672 62 c.Run("Config with language, menu in root only", func(c *qt.C) { 63 b := newTestSitesBuilder(c) 64 b.WithConfigFile("toml", ` 65 theme = "test-theme" 66 [[menus.foo]] 67 name = "foo-a" 68 [languages.en] 69 70 `, 71 ) 72 73 b.WithThemeConfigFile("toml", `[languages.en]`) 74 75 b.Build(BuildCfg{}) 76 77 menus := b.H.Sites[0].Menus() 78 c.Assert(menus, qt.HasLen, 1) 79 80 }) 81 } 82 83 func TestLanguageNumberFormatting(t *testing.T) { 84 85 b := newTestSitesBuilder(t) 86 b.WithConfigFile("toml", ` 87 baseURL = "https://example.org" 88 89 defaultContentLanguage = "en" 90 defaultContentLanguageInSubDir = true 91 92 [languages] 93 [languages.en] 94 timeZone="UTC" 95 weight=10 96 [languages.nn] 97 weight=20 98 99 `) 100 101 b.WithTemplates("index.html", ` 102 103 FormatNumber: {{ 512.5032 | lang.FormatNumber 2 }} 104 FormatPercent: {{ 512.5032 | lang.FormatPercent 2 }} 105 FormatCurrency: {{ 512.5032 | lang.FormatCurrency 2 "USD" }} 106 FormatAccounting: {{ 512.5032 | lang.FormatAccounting 2 "NOK" }} 107 FormatNumberCustom: {{ lang.FormatNumberCustom 2 12345.6789 }} 108 109 # We renamed this to FormatNumberCustom in 0.87.0. 110 NumFmt: {{ -98765.4321 | lang.NumFmt 2 }} 111 112 113 `) 114 b.WithContent("p1.md", "") 115 116 b.Build(BuildCfg{}) 117 118 b.AssertFileContent("public/en/index.html", ` 119 FormatNumber: 512.50 120 FormatPercent: 512.50% 121 FormatCurrency: $512.50 122 FormatAccounting: NOK512.50 123 FormatNumberCustom: 12,345.68 124 125 NumFmt: -98,765.43 126 `, 127 ) 128 129 b.AssertFileContent("public/nn/index.html", ` 130 FormatNumber: 512,50 131 FormatPercent: 512,50 % 132 FormatCurrency: 512,50 USD 133 FormatAccounting: 512,50 kr 134 FormatNumberCustom: 12,345.68 135 136 # We renamed this to FormatNumberCustom in 0.87.0. 137 NumFmt: -98,765.43 138 `) 139 }