Skip to content

Commit 60ea28e

Browse files
committed
CLDR 47 beta 2 data
1 parent 2a9de80 commit 60ea28e

File tree

8 files changed

+2993
-110
lines changed

8 files changed

+2993
-110
lines changed

lib/cldr/backend.ex

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,9 @@ defmodule Cldr.LocaleDisplay.Backend do
4242
4343
## Options
4444
45-
* `:compound_locale` is a boolean indicating
46-
if the combination of language, script and territory
47-
should be used to resolve a language name.
48-
The default is `true`.
45+
* `:language_display` determines if a language
46+
is displayed in `:standard` format (the default)
47+
or `:dialect` format.
4948
5049
* `:prefer` signals the preferred name for
5150
a subtag when there are alternatives.
@@ -70,23 +69,23 @@ defmodule Cldr.LocaleDisplay.Backend do
7069
{:ok, "English"}
7170
7271
iex> #{inspect(__MODULE__)}.display_name "en-US"
73-
{:ok, "American English"}
74-
75-
iex> #{inspect(__MODULE__)}.display_name "en-US", compound_locale: false
7672
{:ok, "English (United States)"}
7773
78-
iex> #{inspect(__MODULE__)}.display_name "en-US-u-ca-gregory-cu-aud"
74+
iex> #{inspect(__MODULE__)}.display_name "en-US", language_display: :dialect
75+
{:ok, "American English"}
76+
77+
iex> #{inspect(__MODULE__)}.display_name "en-US-u-ca-gregory-cu-aud", language_display: :dialect
7978
{:ok, "American English (Gregorian Calendar, Currency: A$)"}
8079
81-
iex> #{inspect(__MODULE__)}.display_name "en-US-u-ca-gregory-cu-aud", locale: "fr"
80+
iex> #{inspect(__MODULE__)}.display_name "en-US-u-ca-gregory-cu-aud", locale: "fr", language_display: :dialect
8281
{:ok, "anglais américain (calendrier grégorien, devise : A$)"}
8382
8483
iex> #{inspect(__MODULE__)}.display_name "nl-BE"
85-
{:ok, "Flemish"}
86-
87-
iex> #{inspect(__MODULE__)}.display_name "nl-BE", compound_locale: false
8884
{:ok, "Dutch (Belgium)"}
8985
86+
iex> #{inspect(__MODULE__)}.display_name "nl-BE", language_display: :dialect
87+
{:ok, "Flemish"}
88+
9089
"""
9190
@doc since: "1.1.0"
9291

@@ -121,10 +120,9 @@ defmodule Cldr.LocaleDisplay.Backend do
121120
122121
## Options
123122
124-
* `:compound_locale` is a boolean indicating
125-
if the combination of language, script and territory
126-
should be used to resolve a language name.
127-
The default is `true`.
123+
* `:language_display` determines if a language
124+
is displayed in `:standard` format (the default)
125+
or `:dialect` format.
128126
129127
* `:prefer` signals the preferred name for
130128
a subtag when there are alternatives.
@@ -152,15 +150,15 @@ defmodule Cldr.LocaleDisplay.Backend do
152150
"English"
153151
154152
iex> #{inspect(__MODULE__)}.display_name! "en-US"
155-
"American English"
156-
157-
iex> #{inspect(__MODULE__)}.display_name! "en-US", compound_locale: false
158153
"English (United States)"
159154
160-
iex> #{inspect(__MODULE__)}.display_name! "en-US-u-ca-gregory-cu-aud"
155+
iex> #{inspect(__MODULE__)}.display_name! "en-US", language_display: :dialect
156+
"American English"
157+
158+
iex> #{inspect(__MODULE__)}.display_name! "en-US-u-ca-gregory-cu-aud", language_display: :dialect
161159
"American English (Gregorian Calendar, Currency: A$)"
162160
163-
iex> #{inspect(__MODULE__)}.display_name! "en-US-u-ca-gregory-cu-aud", locale: "fr"
161+
iex> #{inspect(__MODULE__)}.display_name! "en-US-u-ca-gregory-cu-aud", locale: "fr", language_display: :dialect
164162
"anglais américain (calendrier grégorien, devise : A$)"
165163
166164
"""

lib/cldr/locale_display.ex

Lines changed: 38 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ defmodule Cldr.LocaleDisplay do
1919
@omit_script_if_only_one false
2020

2121
@type display_options :: [
22-
{:compound_locale, boolean()},
22+
{:language_display, :standard | :dialect},
2323
{:prefer, atom()},
2424
{:locale, Cldr.Locale.locale_name() | Cldr.LanguageTag.t()},
2525
{:backend, Cldr.backend()}
@@ -45,10 +45,9 @@ defmodule Cldr.LocaleDisplay do
4545
4646
## Options
4747
48-
* `:compound_locale` is a boolean indicating
49-
if the combination of language, script and territory
50-
should be used to resolve a language name.
51-
The default is `true`.
48+
* `:language_display` determines if a language
49+
is displayed in `:standard` format (the default)
50+
or `:dialect` format.
5251
5352
* `:prefer` signals the preferred name for
5453
a subtag when there are alternatives.
@@ -75,24 +74,24 @@ defmodule Cldr.LocaleDisplay do
7574
iex> Cldr.LocaleDisplay.display_name "en"
7675
{:ok, "English"}
7776
78-
iex> Cldr.LocaleDisplay.display_name "en-US"
79-
{:ok, "American English"}
80-
81-
iex> Cldr.LocaleDisplay.display_name "en-US", compound_locale: false
77+
iex> Cldr.LocaleDisplay.display_name "en-US", language_display: :standard
8278
{:ok, "English (United States)"}
8379
84-
iex> Cldr.LocaleDisplay.display_name "en-US-u-ca-gregory-cu-aud"
80+
iex> Cldr.LocaleDisplay.display_name "en-US", language_display: :dialect
81+
{:ok, "American English"}
82+
83+
iex> Cldr.LocaleDisplay.display_name "en-US-u-ca-gregory-cu-aud", language_display: :dialect
8584
{:ok, "American English (Gregorian Calendar, Currency: A$)"}
8685
87-
iex> Cldr.LocaleDisplay.display_name "en-US-u-ca-gregory-cu-aud", locale: "fr"
86+
iex> Cldr.LocaleDisplay.display_name "en-US-u-ca-gregory-cu-aud", locale: "fr", language_display: :dialect
8887
{:ok, "anglais américain (calendrier grégorien, devise : A$)"}
8988
9089
iex> Cldr.LocaleDisplay.display_name "nl-BE"
91-
{:ok, "Flemish"}
92-
93-
iex> Cldr.LocaleDisplay.display_name "nl-BE", compound_locale: false
9490
{:ok, "Dutch (Belgium)"}
9591
92+
iex> Cldr.LocaleDisplay.display_name "nl-BE", language_display: :dialect
93+
{:ok, "Flemish"}
94+
9695
"""
9796
@spec display_name(Cldr.Locale.locale_reference(), display_options()) ::
9897
{:ok, String.t()} | {:error, {module(), String.t()}}
@@ -110,7 +109,7 @@ defmodule Cldr.LocaleDisplay do
110109

111110
def display_name(%LanguageTag{} = language_tag, options) do
112111
{in_locale, backend} = Cldr.locale_and_backend_from(options)
113-
compound_locale? = !!Keyword.get(options, :compound_locale, true)
112+
language_display = Keyword.get(options, :language_display, :standard)
114113
prefer = Keyword.get(options, :prefer, :default)
115114

116115
with {:ok, in_locale} <- Cldr.validate_locale(in_locale, backend) do
@@ -121,16 +120,18 @@ defmodule Cldr.LocaleDisplay do
121120

122121
match_fun = &language_match_fun(&1, &2, display_names.language)
123122

124-
case first_match(language_tag, match_fun, @omit_script_if_only_one, compound_locale?, prefer) do
123+
case first_match(language_tag, match_fun, @omit_script_if_only_one, language_display, prefer) do
125124
{language_name, matched_tags} ->
125+
language_name = replace_parens_with_brackets(language_name)
126+
language_tag = merge_extensions_and_private_use(language_tag)
127+
126128
subtag_names =
127129
language_tag
128130
|> subtag_names(@basic_tag_order -- matched_tags, display_names, prefer)
129131
|> List.flatten()
132+
|> Enum.map(&replace_parens_with_brackets/1)
130133
|> join_subtags(display_names)
131134

132-
language_tag = merge_extensions_and_private_use(language_tag)
133-
134135
extension_names =
135136
@extension_order
136137
|> Enum.map(&Cldr.DisplayName.display_name(Map.fetch!(language_tag, &1), options))
@@ -165,10 +166,9 @@ defmodule Cldr.LocaleDisplay do
165166
166167
## Options
167168
168-
* `:compound_locale` is a boolean indicating
169-
if the combination of language, script and territory
170-
should be used to resolve a language name.
171-
The default is `true`.
169+
* `:language_display` determines if a language
170+
is displayed in `:standard` format (the default)
171+
or `:dialect` format.
172172
173173
* `:prefer` signals the preferred name for
174174
a subtag when there are alternatives.
@@ -195,16 +195,16 @@ defmodule Cldr.LocaleDisplay do
195195
iex> Cldr.LocaleDisplay.display_name! "en"
196196
"English"
197197
198-
iex> Cldr.LocaleDisplay.display_name! "en-US"
198+
iex> Cldr.LocaleDisplay.display_name! "en-US", language_display: :dialect
199199
"American English"
200200
201-
iex> Cldr.LocaleDisplay.display_name! "en-US", compound_locale: false
201+
iex> Cldr.LocaleDisplay.display_name! "en-US"
202202
"English (United States)"
203203
204-
iex> Cldr.LocaleDisplay.display_name! "en-US-u-ca-gregory-cu-aud"
204+
iex> Cldr.LocaleDisplay.display_name! "en-US-u-ca-gregory-cu-aud", language_display: :dialect
205205
"American English (Gregorian Calendar, Currency: A$)"
206206
207-
iex> Cldr.LocaleDisplay.display_name! "en-US-u-ca-gregory-cu-aud", locale: "fr"
207+
iex> Cldr.LocaleDisplay.display_name! "en-US-u-ca-gregory-cu-aud", locale: "fr", language_display: :dialect
208208
"anglais américain (calendrier grégorien, devise : A$)"
209209
210210
"""
@@ -229,7 +229,7 @@ defmodule Cldr.LocaleDisplay do
229229

230230
# If matching on the compound locale then we
231231
# don't need to take any action
232-
defp first_match(language_tag, match_fun, omit_script_if_only_one?, true, prefer) do
232+
defp first_match(language_tag, match_fun, omit_script_if_only_one?, :dialect, prefer) do
233233
case Cldr.Locale.first_match(language_tag, match_fun, omit_script_if_only_one?) do
234234
{language_name, matched_tags} ->
235235
{get_display_preference(language_name, prefer), matched_tags}
@@ -244,7 +244,7 @@ defmodule Cldr.LocaleDisplay do
244244
# its generated as a subtag
245245
@reinstate_subtags [:territory, :script]
246246

247-
defp first_match(language_tag, match_fun, omit_script_if_only_one?, false, prefer) do
247+
defp first_match(language_tag, match_fun, omit_script_if_only_one?, :standard, prefer) do
248248
language_tag = Enum.reduce(@reinstate_subtags, language_tag, fn key, tag ->
249249
Map.put(tag, key, nil)
250250
end)
@@ -288,11 +288,17 @@ defmodule Cldr.LocaleDisplay do
288288
defp get_display_name(locale, display_names, subtag, prefer) do
289289
case Map.fetch!(locale, subtag) do
290290
[_ | _] = subtags ->
291-
Enum.map(subtags, fn value -> get_in(display_names, [subtag, value]) end)
291+
Enum.map(subtags, fn value ->
292+
display_name = get_in(display_names, [subtag, value]) || value
293+
294+
# The ICU test data does this. Its not great
295+
# but it matches the output from ICU.
296+
if display_name == "FONIPA", do: "fonipa", else: display_name
297+
end)
292298
|> Enum.sort()
293299

294300
subtag_value ->
295-
get_in(display_names, [subtag, subtag_value])
301+
get_in(display_names, [subtag, subtag_value]) || subtag_value
296302
end
297303
|> get_display_preference(prefer)
298304
end
@@ -344,6 +350,8 @@ defmodule Cldr.LocaleDisplay do
344350
value
345351
|> String.replace("(", "[")
346352
|> String.replace(")", "]")
353+
|> String.replace("(", "[")
354+
|> String.replace(")", "]")
347355
end
348356

349357
# Joins field values together using the

mix.exs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,9 @@ defmodule Cldr.LocaleDisplay.MixProject do
3939

4040
defp deps do
4141
[
42-
{:ex_cldr, "~> 2.37"},
42+
# {:ex_cldr, "~> 2.37"},
43+
{:ex_cldr, path: "../cldr", override: true},
44+
4345
{:ex_cldr_currencies, "~> 2.12"},
4446
{:ex_cldr_territories, "~> 2.4"},
4547

0 commit comments

Comments
 (0)