From 459876c8b7de5dba240da24088fc582a7d5c26f7 Mon Sep 17 00:00:00 2001 From: Virgil Date: Thu, 2 Apr 2026 05:27:30 +0000 Subject: [PATCH] feat(i18n): expose available languages helper Co-Authored-By: Virgil --- i18n.go | 12 ++++++++++++ i18n_test.go | 18 ++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/i18n.go b/i18n.go index acc8a1a..4bb14d2 100644 --- a/i18n.go +++ b/i18n.go @@ -55,6 +55,18 @@ func CurrentLanguage() string { return "en" } +// AvailableLanguages returns the loaded language tags on the default service. +func AvailableLanguages() []string { + if svc := Default(); svc != nil { + langs := svc.AvailableLanguages() + if len(langs) == 0 { + return nil + } + return append([]string(nil), langs...) + } + return nil +} + // SetMode sets the translation mode for the default service. func SetMode(m Mode) { if svc := Default(); svc != nil { diff --git a/i18n_test.go b/i18n_test.go index 1058b74..b86b4f5 100644 --- a/i18n_test.go +++ b/i18n_test.go @@ -119,6 +119,24 @@ func TestCurrentLanguage_Good(t *testing.T) { assert.NotEmpty(t, lang) } +func TestAvailableLanguages_Good(t *testing.T) { + prev := Default() + t.Cleanup(func() { + SetDefault(prev) + }) + + svc, err := New() + require.NoError(t, err) + SetDefault(svc) + + langs := AvailableLanguages() + require.NotEmpty(t, langs) + assert.Equal(t, svc.AvailableLanguages(), langs) + + langs[0] = "zz" + assert.NotEqual(t, "zz", svc.AvailableLanguages()[0]) +} + // --- SetMode / CurrentMode --- func TestSetMode_Good(t *testing.T) {