summaryrefslogtreecommitdiffstats
path: root/i18n
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2018-10-22 17:42:06 +0200
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2018-10-22 20:46:14 +0200
commit2bf686ee217808186385bfcf6156f15bbdb33651 (patch)
tree6184e03782e693209828af09fef213d9a8309dcb /i18n
parent9f74dc2a52b6f568b5a060b7a4be47196804b01f (diff)
hugolib: Improve errors in /i18n handlling
See #5324
Diffstat (limited to 'i18n')
-rw-r--r--i18n/translationProvider.go32
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
+
+}