Fix i18n project vs theme order
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Mon, 29 Jul 2019 15:23:10 +0000 (17:23 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Mon, 29 Jul 2019 17:10:15 +0000 (19:10 +0200)
Fixes #6134

hugolib/hugo_modules_test.go
langs/i18n/translationProvider.go

index 171bbb347e545130a5ed5f22614af3f00eb95e98..73a3d2db0d45d184ec02205fab5066f27abaeb56 100644 (file)
@@ -204,7 +204,7 @@ Data C: {{ $data.c.value }}
 Data D: {{ $data.d.value }}
 All Data: {{ $data }}
 
-i18n hello: {{ i18n "hello" . }}
+i18n hello1: {{ i18n "hello1" . }}
 i18n theme: {{ i18n "theme" . }}
 i18n theme2: {{ i18n "theme2" . }}
 `)
@@ -238,9 +238,13 @@ other = %q
        b.WithSourceFile("themes/d/data/d.toml", `value="Hugo Rodks!"`)
 
        // i18n files
-       b.WithSourceFile("i18n/en.toml", i18nContent("hello", "Project"))
-       b.WithSourceFile("themes/c/en.toml", i18nContent("hello", "Theme C"))
-       b.WithSourceFile("themes/c/i18n/en.toml", i18nContent("theme", "Theme C"))
+       b.WithSourceFile("i18n/en.toml", i18nContent("hello1", "Project"))
+       b.WithSourceFile("themes/c/i18n/en.toml", `
+[hello1]
+other="Theme C Hello"
+[theme]
+other="Theme C"
+`)
        b.WithSourceFile("themes/d/i18n/en.toml", i18nContent("theme", "Theme D"))
        b.WithSourceFile("themes/d/i18n/en.toml", i18nContent("theme2", "Theme2 D"))
 
@@ -261,7 +265,7 @@ other = %q
 
        // i18n
        b.AssertFileContent("public/index.html",
-               "i18n hello: Project",
+               "i18n hello1: Project",
                "i18n theme: Theme C",
                "i18n theme2: Theme2 D",
        )
index c7b4839eef11c0f9e97d91ee8c1ac404b5541dc4..4ce9b59fe3454ac945ec09094b65ede62e9458ac 100644 (file)
@@ -50,7 +50,11 @@ func (tp *TranslationProvider) Update(d *deps.Deps) error {
        }
        var newLangs []string
 
-       for _, dir := range d.BaseFs.I18n.Dirs {
+       // The source dirs are ordered so the most important comes first. Since this is a
+       // last key win situation, we have to reverse the iteration order.
+       dirs := d.BaseFs.I18n.Dirs
+       for i := len(dirs) - 1; i >= 0; i-- {
+               dir := dirs[i]
                src := spec.NewFilesystemFromFileMetaInfo(dir)
 
                files, err := src.Files()
@@ -71,10 +75,8 @@ func (tp *TranslationProvider) Update(d *deps.Deps) error {
                        language.RegisterPluralSpec(newLangs, en)
                }
 
-               // The source files are ordered so the most important comes first. Since this is a
-               // last key win situation, we have to reverse the iteration order.
-               for i := len(files) - 1; i >= 0; i-- {
-                       if err := addTranslationFile(i18nBundle, files[i]); err != nil {
+               for _, file := range files {
+                       if err := addTranslationFile(i18nBundle, file); err != nil {
                                return err
                        }
                }