diff --git a/grammar.go b/grammar.go index 6a981a2..2c5ff62 100644 --- a/grammar.go +++ b/grammar.go @@ -662,6 +662,8 @@ func ArticlePhrase(word string) string { if article == "" || word == "" { return "" } + lang := currentLangForGrammar() + word = renderWord(lang, word) if strings.HasSuffix(article, "'") { return article + word } diff --git a/grammar_test.go b/grammar_test.go index a512d20..8db4a2a 100644 --- a/grammar_test.go +++ b/grammar_test.go @@ -491,6 +491,36 @@ func TestArticlePhrase(t *testing.T) { } } +func TestArticlePhrase_RespectsWordMap(t *testing.T) { + prev := Default() + svc, err := New() + if err != nil { + t.Fatalf("New() failed: %v", err) + } + SetDefault(svc) + t.Cleanup(func() { + SetDefault(prev) + }) + + data := GetGrammarData("en") + if data == nil { + t.Fatal("GetGrammarData(\"en\") returned nil") + } + original, existed := data.Words["go_mod"] + data.Words["go_mod"] = "go.mod" + t.Cleanup(func() { + if existed { + data.Words["go_mod"] = original + return + } + delete(data.Words, "go_mod") + }) + + if got, want := ArticlePhrase("go_mod"), "a go.mod"; got != want { + t.Fatalf("ArticlePhrase(%q) = %q, want %q", "go_mod", got, want) + } +} + func TestArticlePhraseFrenchLocale(t *testing.T) { prev := Default() svc, err := New()