Skip to content

Commit

Permalink
remove und location name guessing
Browse files Browse the repository at this point in the history
  • Loading branch information
robertbastian committed Jan 28, 2025
1 parent d2f4195 commit 8d762c4
Show file tree
Hide file tree
Showing 10 changed files with 352 additions and 249 deletions.

Large diffs are not rendered by default.

42 changes: 21 additions & 21 deletions provider/data/datetime/data/exemplar_cities_v1_marker.rs.data

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions provider/data/datetime/data/locations_root_v1_marker.rs.data

Large diffs are not rendered by default.

98 changes: 54 additions & 44 deletions provider/data/datetime/data/locations_v1_marker.rs.data

Large diffs are not rendered by default.

153 changes: 77 additions & 76 deletions provider/data/datetime/fingerprints.csv

Large diffs are not rendered by default.

6 changes: 1 addition & 5 deletions provider/source/data/debug/time_zone/exemplars@1/und.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

207 changes: 178 additions & 29 deletions provider/source/data/debug/time_zone/locations@1/und.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

68 changes: 8 additions & 60 deletions provider/source/src/time_zones/convert.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ use core::cmp::Ordering;
use icu::calendar::Date;
use icu::calendar::Iso;
use icu::datetime::provider::time_zones::*;
use icu::locale::{langid, LanguageIdentifier};
use icu::locale::LanguageIdentifier;
use icu::timezone::provider::*;
use icu::timezone::Time;
use icu::timezone::UtcOffset;
Expand Down Expand Up @@ -184,71 +184,19 @@ impl SourceDataProvider {
.collect()
};

let find_endonym_or_en = |region: icu::locale::subtags::Region| -> Option<&str> {
let expander = self.cldr().unwrap().extended_locale_expander().unwrap();
let mut langid = LanguageIdentifier {
region: Some(region),
// `und` is `Latn`
script: Some(icu::locale::subtags::script!("Latn")),
..Default::default()
};
expander.maximize(&mut langid);
langid.region = None;
expander.minimize(&mut langid);
let locale = langid.into();

// Avoid logging file-not-found errors
let regions = &if self
.cldr()
.unwrap()
.displaynames()
.file_exists(&locale, "territories.json")
!= Ok(true)
{
self.cldr()
.unwrap()
.displaynames()
.read_and_parse::<cldr_serde::displaynames::region::Resource>(
&langid!("en").into(),
"territories.json",
)
.ok()?
} else {
self.cldr()
.unwrap()
.displaynames()
.read_and_parse::<cldr_serde::displaynames::region::Resource>(
&locale,
"territories.json",
)
.ok()?
}
.main
.value
.localedisplaynames
.regions;

regions
.get(&format!("{region}-alt-short"))
.or_else(|| regions.get(region.as_str()))
.map(|x| x.as_str())
};

let mut locations = BTreeMap::new();

exemplar_cities.retain(|&k, v| {
if k.0 == "unk" {
true
} else if let Some(region) = primary_zones.get(&k) {
let region_name = region_display_names
.get(region)
.copied()
.or_else(|| find_endonym_or_en(*region))
.unwrap_or(region.as_str())
.to_string();
let retain = &region_name != v;
locations.insert(k, region_name);
retain
if let Some(region_name) = region_display_names.get(region) {
locations.insert(k, region_name.to_string());
region_name != v
} else {
locations.insert(k, v.clone());
false
}
} else {
locations.insert(k, v.clone());
false
Expand Down

0 comments on commit 8d762c4

Please sign in to comment.