diff options
Diffstat (limited to 'i18n/translationProvider.go')
-rw-r--r-- | i18n/translationProvider.go | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/i18n/translationProvider.go b/i18n/translationProvider.go index 4e937c5a1..74e144007 100644 --- a/i18n/translationProvider.go +++ b/i18n/translationProvider.go @@ -16,8 +16,11 @@ package i18n import ( "errors" + "github.com/gohugoio/hugo/common/herrors" + "github.com/gohugoio/hugo/deps" "github.com/gohugoio/hugo/helpers" + "github.com/gohugoio/hugo/hugofs" "github.com/gohugoio/hugo/source" "github.com/nicksnyder/go-i18n/i18n/bundle" "github.com/nicksnyder/go-i18n/i18n/language" @@ -81,12 +84,12 @@ func (tp *TranslationProvider) Update(d *deps.Deps) error { func addTranslationFile(bundle *bundle.Bundle, r source.ReadableFile) error { f, err := r.Open() if err != nil { - return _errors.Wrapf(err, "Failed to open translations file %q:", r.LogicalName()) + return _errors.Wrapf(err, "failed to open translations file %q:", r.LogicalName()) } - defer f.Close() err = bundle.ParseTranslationFileBytes(r.LogicalName(), helpers.ReaderToBytes(f)) + f.Close() if err != nil { - return _errors.Wrapf(err, "Failed to load translations in file %q:", r.LogicalName()) + return errWithFileContext(_errors.Wrapf(err, "failed to load translations"), r) } return nil } @@ -97,3 +100,26 @@ func (tp *TranslationProvider) Clone(d *deps.Deps) error { return nil } + +func errWithFileContext(inerr error, r source.ReadableFile) error { + rfi, ok := r.FileInfo().(hugofs.RealFilenameInfo) + if !ok { + return inerr + } + + realFilename := rfi.RealFilename() + f, err := r.Open() + if err != nil { + return inerr + } + defer f.Close() + + err, _ = herrors.WithFileContext( + inerr, + realFilename, + f, + herrors.SimpleLineMatcher) + + return err + +} |