Skip to content

Commit 5c01a77

Browse files
authored
Add more locale display name attribute-based markers (#7692)
#3260 AI was used in authoring this PR ## Changelog icu_experimental/displaynames: Adds new data markers for display names using attributes for better slicing icu_provider_source: Adds code to generate the new markers in icu_experimental/displaynames
1 parent 0df7de4 commit 5c01a77

File tree

255 files changed

+94569
-209
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

255 files changed

+94569
-209
lines changed

components/experimental/src/displaynames/provider.rs

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,27 @@ pub struct VariantDisplayNames<'data> {
152152
pub names: ZeroMap<'data, UnvalidatedVariant, str>,
153153
}
154154

155+
/// Display name parts for use in menus.
156+
#[derive(Debug, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
157+
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
158+
#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
159+
#[cfg_attr(feature = "datagen", databake(path = icu_experimental::displaynames::provider))]
160+
#[zerovec::make_varule(MenuNamePartsULE)]
161+
#[zerovec::skip_derive(Ord)]
162+
#[cfg_attr(feature = "serde", zerovec::derive(Deserialize))]
163+
#[cfg_attr(feature = "datagen", zerovec::derive(Serialize))]
164+
pub struct MenuNameParts<'data> {
165+
/// The "core" part of a language menu display name.
166+
///
167+
/// For example, "Kurdish" in "Kurdish (Kurmanji)".
168+
pub core: VarZeroCow<'data, str>,
169+
/// The "extension" part of a language menu display name.
170+
///
171+
/// For example, "Kurmanji" in "Kurdish (Kurmanji)".
172+
#[cfg_attr(feature = "serde", serde(borrow))]
173+
pub extension: VarZeroCow<'data, str>,
174+
}
175+
155176
icu_provider::data_struct!(VariantDisplayNames<'_>, #[cfg(feature = "datagen")]);
156177

157178
icu_provider::data_marker!(
@@ -162,3 +183,75 @@ icu_provider::data_marker!(
162183
#[cfg(feature = "datagen")]
163184
attributes_domain = "locale_names_region",
164185
);
186+
187+
icu_provider::data_marker!(
188+
/// Data marker for short region display names.
189+
LocaleNamesRegionShortV1,
190+
"locale/names/region/short/v1",
191+
VarZeroCow<'static, str>,
192+
#[cfg(feature = "datagen")]
193+
attributes_domain = "locale_names_region",
194+
);
195+
196+
icu_provider::data_marker!(
197+
/// Data marker for language display names.
198+
LocaleNamesLanguageLongV1,
199+
"locale/names/language/long/v1",
200+
VarZeroCow<'static, str>,
201+
#[cfg(feature = "datagen")]
202+
attributes_domain = "locale_names_language",
203+
);
204+
205+
icu_provider::data_marker!(
206+
/// Data marker for short language display names.
207+
LocaleNamesLanguageShortV1,
208+
"locale/names/language/short/v1",
209+
VarZeroCow<'static, str>,
210+
#[cfg(feature = "datagen")]
211+
attributes_domain = "locale_names_language",
212+
);
213+
214+
icu_provider::data_marker!(
215+
/// Data marker for menu-long language display names.
216+
LocaleNamesLanguageMenuLongV1,
217+
"locale/names/language/menu/long/v1",
218+
VarZeroCow<'static, MenuNamePartsULE>,
219+
#[cfg(feature = "datagen")]
220+
attributes_domain = "locale_names_language",
221+
);
222+
223+
icu_provider::data_marker!(
224+
/// Data marker for script display names.
225+
LocaleNamesScriptLongV1,
226+
"locale/names/script/long/v1",
227+
VarZeroCow<'static, str>,
228+
#[cfg(feature = "datagen")]
229+
attributes_domain = "locale_names_script",
230+
);
231+
232+
icu_provider::data_marker!(
233+
/// Data marker for short script display names.
234+
LocaleNamesScriptShortV1,
235+
"locale/names/script/short/v1",
236+
VarZeroCow<'static, str>,
237+
#[cfg(feature = "datagen")]
238+
attributes_domain = "locale_names_script",
239+
);
240+
241+
icu_provider::data_marker!(
242+
/// Data marker for variant display names.
243+
LocaleNamesVariantLongV1,
244+
"locale/names/variant/long/v1",
245+
VarZeroCow<'static, str>,
246+
#[cfg(feature = "datagen")]
247+
attributes_domain = "locale_names_variant",
248+
);
249+
250+
icu_provider::data_marker!(
251+
/// Data marker for short variant display names.
252+
LocaleNamesVariantShortV1,
253+
"locale/names/variant/short/v1",
254+
VarZeroCow<'static, str>,
255+
#[cfg(feature = "datagen")]
256+
attributes_domain = "locale_names_variant",
257+
);

components/experimental/src/lib.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,14 @@ pub mod provider {
8989
impl_script_display_names_v1!(Baked);
9090
impl_variant_display_names_v1!(Baked);
9191
impl_locale_names_region_long_v1!(Baked);
92+
impl_locale_names_region_short_v1!(Baked);
93+
impl_locale_names_language_long_v1!(Baked);
94+
impl_locale_names_language_short_v1!(Baked);
95+
impl_locale_names_language_menu_long_v1!(Baked);
96+
impl_locale_names_script_long_v1!(Baked);
97+
impl_locale_names_script_short_v1!(Baked);
98+
impl_locale_names_variant_long_v1!(Baked);
99+
impl_locale_names_variant_short_v1!(Baked);
92100
impl_percent_essentials_v1!(Baked);
93101
impl_person_names_format_v1!(Baked);
94102
impl_long_day_relative_v1!(Baked);
@@ -157,6 +165,14 @@ pub mod provider {
157165
super::displaynames::provider::ScriptDisplayNamesV1::INFO,
158166
super::displaynames::provider::VariantDisplayNamesV1::INFO,
159167
super::displaynames::provider::LocaleNamesRegionLongV1::INFO,
168+
super::displaynames::provider::LocaleNamesRegionShortV1::INFO,
169+
super::displaynames::provider::LocaleNamesLanguageLongV1::INFO,
170+
super::displaynames::provider::LocaleNamesLanguageShortV1::INFO,
171+
super::displaynames::provider::LocaleNamesLanguageMenuLongV1::INFO,
172+
super::displaynames::provider::LocaleNamesScriptLongV1::INFO,
173+
super::displaynames::provider::LocaleNamesScriptShortV1::INFO,
174+
super::displaynames::provider::LocaleNamesVariantLongV1::INFO,
175+
super::displaynames::provider::LocaleNamesVariantShortV1::INFO,
160176
super::measure::provider::UnitIdsV1::INFO,
161177
super::personnames::provider::PersonNamesFormatV1::INFO,
162178
super::relativetime::provider::LongDayRelativeV1::INFO,

provider/data/experimental/data/locale_names_language_long_v1.rs.data

Lines changed: 72 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)