diff options
-rw-r--r-- | src/gleam_stdlib.mjs | 8 | ||||
-rw-r--r-- | test/gleam/string_test.gleam | 12 |
2 files changed, 19 insertions, 1 deletions
diff --git a/src/gleam_stdlib.mjs b/src/gleam_stdlib.mjs index cdbb91a..0a3aef2 100644 --- a/src/gleam_stdlib.mjs +++ b/src/gleam_stdlib.mjs @@ -94,8 +94,14 @@ export function string_length(string) { } function graphemes_iterator(string) { + let env_locale = () => { + if (typeof navigator.language !== "undefined") { + return navigator.language; + } + return Intl.DateTimeFormat().resolvedOptions().locale; + }; if (Intl && Intl.Segmenter) { - return new Intl.Segmenter("en-gb").segment(string)[Symbol.iterator](); + return new Intl.Segmenter(env_locale).segment(string)[Symbol.iterator](); } } diff --git a/test/gleam/string_test.gleam b/test/gleam/string_test.gleam index fafea89..ca986e8 100644 --- a/test/gleam/string_test.gleam +++ b/test/gleam/string_test.gleam @@ -379,6 +379,18 @@ pub fn to_graphemes_test() { |> string.to_graphemes |> should.equal(["λ", "μ"]) + "π¨βπ©βπ¦βπ¦" + |> string.to_graphemes() + |> should.equal(["π¨βπ©βπ¦βπ¦"]) + + "γγγγγ«γγ‘γγ―γ" + |> string.to_graphemes() + |> should.equal(["γγ", "γγ", "γ«γ", "γ‘γ", "γ―γ"]) + + "γγγγγγγγγγ" + |> string.to_graphemes() + |> should.equal(["γγ", "γγ", "γγ", "γγ", "γγ"]) + "ZΝΝ«ΜΝͺΜΝ«Μ½ΝΜ΄ΜΜ€ΜΝΝΜ―ΜΜ ΝAΜ΄Μ΅ΜΜ°ΝΝ«ΝΝ’LΜ Ν¨Ν§Ν©ΝGΜ΄Μ»ΝΝΝΜΉΜΝΜΜ
ΝΜΗͺΜ΅ΜΉΜ»ΜΜ³ΝΜΜΝ!ΝΜ¬Μ°ΜΜΜΏΜΝ₯Ν₯ΜΝ£ΜΜΜΝΝ" |> string.to_graphemes |> should.equal([ |