langs/i18n: Add workaround for known language, but missing plural rule error - hugo - [fork] hugo port for 9front
 (HTM) git clone git@git.drkhsh.at/hugo.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 33e9d79b78b32d0cc19693ab3c29ba9941d80f8f
 (DIR) parent fc6abc39c75c152780151c35bc95b12bee01b09c
 (HTM) Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
       Date:   Thu,  8 Oct 2020 10:21:23 +0200
       
       langs/i18n: Add workaround for known language, but missing plural rule error
       
       Closes #7798
       
       Diffstat:
         M langs/i18n/i18n_test.go             |      15 ++++++++++++++-
         M langs/i18n/translationProvider.go   |       9 +++++++++
       
       2 files changed, 23 insertions(+), 1 deletion(-)
       ---
 (DIR) diff --git a/langs/i18n/i18n_test.go b/langs/i18n/i18n_test.go
       @@ -199,6 +199,19 @@ other = "{{ .Count }} minuttar lesing"`),
                        expected:     "3 minuttar lesing",
                        expectedFlag: "3 minuttar lesing",
                },
       +        // https://github.com/gohugoio/hugo/issues/7798
       +        {
       +                name: "known-language-missing-plural",
       +                data: map[string][]byte{
       +                        "oc.toml": []byte(`[oc]
       +one =  "abc"`),
       +                },
       +                args:         1,
       +                lang:         "oc",
       +                id:           "oc",
       +                expected:     "abc",
       +                expectedFlag: "abc",
       +        },
                // https://github.com/gohugoio/hugo/issues/7794
                {
                        name: "dotted-bare-key",
       @@ -292,7 +305,7 @@ func TestI18nTranslate(t *testing.T) {
                                        } else {
                                                expected = test.expected
                                        }
       -                                actual = doTestI18nTranslate(t, test, v)
       +                                actual = doTestI18nTranslate(c, test, v)
                                        c.Assert(actual, qt.Equals, expected)
                                })
                        }
 (DIR) diff --git a/langs/i18n/translationProvider.go b/langs/i18n/translationProvider.go
       @@ -15,6 +15,7 @@ package i18n
        
        import (
                "encoding/json"
       +        "strings"
        
                "github.com/gohugoio/hugo/common/herrors"
                "golang.org/x/text/language"
       @@ -95,6 +96,14 @@ func addTranslationFile(bundle *i18n.Bundle, r source.File) error {
        
                _, err = bundle.ParseMessageFileBytes(b, name)
                if err != nil {
       +                if strings.Contains(err.Error(), "no plural rule") {
       +                        // https://github.com/gohugoio/hugo/issues/7798
       +                        name = artificialLangTagPrefix + name
       +                        _, err = bundle.ParseMessageFileBytes(b, name)
       +                        if err == nil {
       +                                return nil
       +                        }
       +                }
                        return errWithFileContext(_errors.Wrapf(err, "failed to load translations"), r)
                }