diff --git a/codegen/src/abtest.rs b/codegen/src/abtest.rs index ac13a8c..9acf827 100644 --- a/codegen/src/abtest.rs +++ b/codegen/src/abtest.rs @@ -4,6 +4,8 @@ use anyhow::{bail, Result}; use futures::{stream, StreamExt}; use indicatif::{ProgressBar, ProgressStyle}; use num_enum::TryFromPrimitive; +use once_cell::sync::Lazy; +use regex::Regex; use rustypipe::client::{ClientType, RustyPipe, RustyPipeQuery, YTContext}; use rustypipe::model::YouTubeItem; use rustypipe::param::search_filter::{ItemType, SearchFilter}; @@ -21,6 +23,7 @@ pub enum ABTest { TrendsVideoTab = 4, TrendsPageHeaderRenderer = 5, DiscographyPage = 6, + ShortDateFormat = 7, } const TESTS_TO_RUN: [ABTest; 3] = [ @@ -90,6 +93,7 @@ pub async fn run_test( ABTest::TrendsVideoTab => trends_video_tab(&query).await, ABTest::TrendsPageHeaderRenderer => trends_page_header_renderer(&query).await, ABTest::DiscographyPage => discography_page(&query).await, + ABTest::ShortDateFormat => short_date_format(&query).await, } .unwrap(); pb.inc(1); @@ -223,10 +227,19 @@ pub async fn trends_page_header_renderer(rp: &RustyPipeQuery) -> Result { } pub async fn discography_page(rp: &RustyPipeQuery) -> Result { - let artist = rp - .music_artist("UC7cl4MmM6ZZ2TcFyMk_b4pg", false) - .await - .unwrap(); + let artist = rp.music_artist("UC7cl4MmM6ZZ2TcFyMk_b4pg", false).await?; Ok(artist.albums.len() <= 10) } + +pub async fn short_date_format(rp: &RustyPipeQuery) -> Result { + static SHORT_DATE: Lazy = Lazy::new(|| Regex::new("\\d(?:y|mo|w|d|h|min) ").unwrap()); + let channel = rp.channel_videos("UC2DjFE7Xf11URZqWBigcVOQ").await?; + + Ok(channel.content.items.iter().any(|itm| { + itm.publish_date_txt + .as_deref() + .map(|d| SHORT_DATE.is_match(d)) + .unwrap_or_default() + })) +} diff --git a/codegen/src/collect_video_dates.rs b/codegen/src/collect_video_dates.rs new file mode 100644 index 0000000..cff90e5 --- /dev/null +++ b/codegen/src/collect_video_dates.rs @@ -0,0 +1,83 @@ +use std::{ + collections::{BTreeMap, HashSet}, + fs::File, +}; + +use futures::{stream, StreamExt}; +use path_macro::path; +use rustypipe::{ + client::{RustyPipe, RustyPipeQuery}, + param::{Language, LANGUAGES}, +}; + +use crate::util::DICT_DIR; + +pub async fn collect_video_dates(concurrency: usize) { + let json_path = path!(*DICT_DIR / "timeago_samples_short.json"); + let rp = RustyPipe::builder() + .visitor_data("Cgtwel9tMkh2eHh0USiyzc6jBg%3D%3D") + .build(); + + let channels = [ + "UCeY0bbntWzzVIaj2z3QigXg", + "UCcmpeVbSSQlZRvHfdC-CRwg", + "UC65afEgL62PGFWXY7n6CUbA", + "UCEOXxzW2vU0P-0THehuIIeg", + ]; + + let mut lang_strings: BTreeMap> = BTreeMap::new(); + for lang in LANGUAGES { + println!("{lang}"); + let query = rp.query().lang(lang); + let strings = stream::iter(channels) + .map(|id| get_channel_datestrings(&query, id)) + .buffered(concurrency) + .collect::>() + .await + .into_iter() + .flatten() + .collect::>(); + lang_strings.insert(lang, strings); + } + + let mut en_strings_uniq: HashSet<&str> = HashSet::new(); + let mut uniq_ids: HashSet = HashSet::new(); + + lang_strings[&Language::En] + .iter() + .enumerate() + .for_each(|(n, s)| { + if en_strings_uniq.insert(s) { + uniq_ids.insert(n); + } + }); + + let strings_map = lang_strings + .iter() + .map(|(lang, strings)| { + ( + lang, + strings + .iter() + .enumerate() + .filter(|(n, _)| uniq_ids.contains(n)) + .map(|(_, s)| s) + .collect::>(), + ) + }) + .collect::>(); + + let file = File::create(json_path).unwrap(); + serde_json::to_writer_pretty(file, &strings_map).unwrap(); +} + +async fn get_channel_datestrings(rp: &RustyPipeQuery, id: &str) -> Vec { + let channel = rp.channel_videos(id).await.unwrap(); + + channel + .content + .items + .into_iter() + .filter_map(|itm| itm.publish_date_txt) + .collect() +} diff --git a/codegen/src/main.rs b/codegen/src/main.rs index e61a78f..bbc8fa8 100644 --- a/codegen/src/main.rs +++ b/codegen/src/main.rs @@ -4,6 +4,7 @@ mod abtest; mod collect_album_types; mod collect_large_numbers; mod collect_playlist_dates; +mod collect_video_dates; mod collect_video_durations; mod download_testfiles; mod gen_dictionary; @@ -27,6 +28,7 @@ enum Commands { CollectLargeNumbers, CollectAlbumTypes, CollectVideoDurations, + CollectVideoDates, ParsePlaylistDates, ParseLargeNumbers, ParseAlbumTypes, @@ -60,6 +62,9 @@ async fn main() { Commands::CollectVideoDurations => { collect_video_durations::collect_video_durations(cli.concurrency).await; } + Commands::CollectVideoDates => { + collect_video_dates::collect_video_dates(cli.concurrency).await; + } Commands::ParsePlaylistDates => collect_playlist_dates::write_samples_to_dict(), Commands::ParseLargeNumbers => collect_large_numbers::write_samples_to_dict(), Commands::ParseAlbumTypes => collect_album_types::write_samples_to_dict(), diff --git a/notes/AB_Tests.md b/notes/AB_Tests.md index 9a2fcf8..b9ffbf0 100644 --- a/notes/AB_Tests.md +++ b/notes/AB_Tests.md @@ -376,3 +376,11 @@ visitor data cookie to be set, as it was the case with the old system. **NEW** ![A/B test 4 old screenshot](./_img/ab_6_new.png) + +## [7] Short timeago format + +- **Encountered on:** 28.05.2023 +- **Impact:** 🟡 Medium + +YouTube changed their date format from the long format (*21 hours ago*, *3 days ago*) to +a short format (*21h ago*, *3d ago*). diff --git a/src/client/channel.rs b/src/client/channel.rs index 867cc55..7ec1be5 100644 --- a/src/client/channel.rs +++ b/src/client/channel.rs @@ -200,15 +200,20 @@ impl MapResponse>> for response::Channel { id: &str, lang: Language, _deobf: Option<&crate::deobfuscate::DeobfData>, + vdata: Option<&str>, ) -> Result>>, ExtractionError> { let content = map_channel_content(id, self.contents, self.alerts)?; + let visitor_data = self + .response_context + .visitor_data + .or_else(|| vdata.map(str::to_owned)); let channel_data = map_channel( MapChannelData { header: self.header, metadata: self.metadata, microformat: self.microformat, - visitor_data: self.response_context.visitor_data.clone(), + visitor_data: visitor_data.clone(), has_shorts: content.has_shorts, has_live: content.has_live, }, @@ -226,7 +231,7 @@ impl MapResponse>> for response::Channel { None, mapper.items, mapper.ctoken, - self.response_context.visitor_data, + visitor_data, crate::model::paginator::ContinuationEndpoint::Browse, ); @@ -243,15 +248,20 @@ impl MapResponse>> for response::Channel { id: &str, lang: Language, _deobf: Option<&crate::deobfuscate::DeobfData>, + vdata: Option<&str>, ) -> Result>>, ExtractionError> { let content = map_channel_content(id, self.contents, self.alerts)?; + let visitor_data = self + .response_context + .visitor_data + .or_else(|| vdata.map(str::to_owned)); let channel_data = map_channel( MapChannelData { header: self.header, metadata: self.metadata, microformat: self.microformat, - visitor_data: self.response_context.visitor_data, + visitor_data, has_shorts: content.has_shorts, has_live: content.has_live, }, @@ -280,6 +290,7 @@ impl MapResponse> for response::Channel { id: &str, lang: Language, _deobf: Option<&crate::deobfuscate::DeobfData>, + vdata: Option<&str>, ) -> Result>, ExtractionError> { let content = map_channel_content(id, self.contents, self.alerts)?; let channel_data = map_channel( @@ -287,7 +298,10 @@ impl MapResponse> for response::Channel { header: self.header, metadata: self.metadata, microformat: self.microformat, - visitor_data: self.response_context.visitor_data, + visitor_data: self + .response_context + .visitor_data + .or_else(|| vdata.map(str::to_owned)), has_shorts: content.has_shorts, has_live: content.has_live, }, @@ -605,7 +619,7 @@ mod tests { let channel: response::Channel = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult>> = - channel.map_response(id, Language::En, None).unwrap(); + channel.map_response(id, Language::En, None, None).unwrap(); assert!( map_res.warnings.is_empty(), @@ -632,7 +646,7 @@ mod tests { let channel: response::Channel = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult>> = channel - .map_response("UC2DjFE7Xf11URZqWBigcVOQ", Language::En, None) + .map_response("UC2DjFE7Xf11URZqWBigcVOQ", Language::En, None, None) .unwrap(); assert!( @@ -651,7 +665,7 @@ mod tests { let channel: response::Channel = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult> = channel - .map_response("UC2DjFE7Xf11URZqWBigcVOQ", Language::En, None) + .map_response("UC2DjFE7Xf11URZqWBigcVOQ", Language::En, None, None) .unwrap(); assert!( diff --git a/src/client/mod.rs b/src/client/mod.rs index 5b9398c..22fc832 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -1247,7 +1247,12 @@ impl RustyPipeQuery { }) } else { match serde_json::from_str::(&body) { - Ok(deserialized) => match deserialized.map_response(id, self.opts.lang, deobf) { + Ok(deserialized) => match deserialized.map_response( + id, + self.opts.lang, + deobf, + self.opts.visitor_data.as_deref(), + ) { Ok(mapres) => Ok(mapres), Err(e) => Err(e.into()), }, @@ -1453,11 +1458,13 @@ trait MapResponse { /// that the returned entity matches this ID and return an error instead. /// - `lang`: Language of the request. Used for mapping localized information like dates. /// - `deobf`: Deobfuscator (if passed to the `execute_request_deobf` method) + /// - `vdata`: Visitor data option of the client fn map_response( self, id: &str, lang: Language, deobf: Option<&DeobfData>, + vdata: Option<&str>, ) -> Result, ExtractionError>; } diff --git a/src/client/music_artist.rs b/src/client/music_artist.rs index d5f2c64..66d7261 100644 --- a/src/client/music_artist.rs +++ b/src/client/music_artist.rs @@ -4,7 +4,7 @@ use once_cell::sync::Lazy; use regex::Regex; use crate::{ - client::response::url_endpoint::{MusicPageType, NavigationEndpoint}, + client::response::url_endpoint::NavigationEndpoint, error::{Error, ExtractionError}, model::{AlbumItem, ArtistId, MusicArtist}, serializer::MapResult, @@ -96,6 +96,7 @@ impl MapResponse for response::MusicArtist { id: &str, lang: crate::param::Language, _deobf: Option<&crate::deobfuscate::DeobfData>, + _vdata: Option<&str>, ) -> Result, ExtractionError> { let mapped = map_artist_page(self, id, lang, false)?; Ok(MapResult { @@ -111,6 +112,7 @@ impl MapResponse<(MusicArtist, bool)> for response::MusicArtist { id: &str, lang: crate::param::Language, _deobf: Option<&crate::deobfuscate::DeobfData>, + _vdata: Option<&str>, ) -> Result, ExtractionError> { map_artist_page(self, id, lang, true) } @@ -189,20 +191,29 @@ fn map_artist_page( .music_carousel_shelf_basic_header_renderer .more_content_button { - match button.button_renderer.navigation_endpoint.music_page() { + if let NavigationEndpoint::Browse { + browse_endpoint, .. + } = button.button_renderer.navigation_endpoint + { // Music videos - Some((MusicPageType::Playlist, id)) => { + if browse_endpoint + .browse_endpoint_context_supported_configs + .map(|cfg| { + cfg.browse_endpoint_context_music_config.page_type + == PageType::Playlist + }) + .unwrap_or_default() + { if videos_playlist_id.is_none() { - videos_playlist_id = Some(id); + videos_playlist_id = Some(browse_endpoint.browse_id); } - } - // Albums - Some((MusicPageType::ArtistDiscography, _)) => { + } else if browse_endpoint + .browse_id + .starts_with(util::ARTIST_DISCOGRAPHY_PREFIX) + { can_fetch_more = true; extendable_albums = true; - } - // Albums or playlists - Some((MusicPageType::Artist, _)) => { + } else { // Peek at the first item to determine type if let Some(response::music_item::MusicResponseItem::MusicTwoRowItemRenderer(item)) = shelf.contents.c.first() { if let Some(PageType::Album) = item.navigation_endpoint.page_type() { @@ -211,7 +222,6 @@ fn map_artist_page( } } } - _ => {} } } } @@ -286,6 +296,7 @@ impl MapResponse> for response::MusicArtistAlbums { id: &str, lang: crate::param::Language, _deobf: Option<&crate::deobfuscate::DeobfData>, + _vdata: Option<&str>, ) -> Result>, ExtractionError> { // dbg!(&self); @@ -356,7 +367,7 @@ mod tests { let resp: response::MusicArtist = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult<(MusicArtist, bool)> = - resp.map_response(id, Language::En, None).unwrap(); + resp.map_response(id, Language::En, None, None).unwrap(); let (mut artist, can_fetch_more) = map_res.c; assert!( @@ -371,7 +382,7 @@ mod tests { let resp: response::MusicArtistAlbums = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let mut map_res: MapResult> = - resp.map_response(id, Language::En, None).unwrap(); + resp.map_response(id, Language::En, None, None).unwrap(); assert!( map_res.warnings.is_empty(), @@ -392,7 +403,7 @@ mod tests { let artist: response::MusicArtist = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult = artist - .map_response("UClmXPfaYhXOYsNn_QUyheWQ", Language::En, None) + .map_response("UClmXPfaYhXOYsNn_QUyheWQ", Language::En, None, None) .unwrap(); assert!( @@ -411,7 +422,7 @@ mod tests { let artist: response::MusicArtist = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let res: Result, ExtractionError> = - artist.map_response("UCLkAepWjdylmXSltofFvsYQ", Language::En, None); + artist.map_response("UCLkAepWjdylmXSltofFvsYQ", Language::En, None, None); let e = res.unwrap_err(); match e { diff --git a/src/client/music_charts.rs b/src/client/music_charts.rs index 1176dfc..87bc5a2 100644 --- a/src/client/music_charts.rs +++ b/src/client/music_charts.rs @@ -60,6 +60,7 @@ impl MapResponse for response::MusicCharts { _id: &str, lang: crate::param::Language, _deobf: Option<&crate::deobfuscate::DeobfData>, + _vdata: Option<&str>, ) -> Result, crate::error::ExtractionError> { let countries = self .framework_updates @@ -164,7 +165,8 @@ mod tests { let charts: response::MusicCharts = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res: MapResult = charts.map_response("", Language::En, None).unwrap(); + let map_res: MapResult = + charts.map_response("", Language::En, None, None).unwrap(); assert!( map_res.warnings.is_empty(), diff --git a/src/client/music_details.rs b/src/client/music_details.rs index 06578f9..9a6d620 100644 --- a/src/client/music_details.rs +++ b/src/client/music_details.rs @@ -157,6 +157,7 @@ impl MapResponse for response::MusicDetails { id: &str, lang: Language, _deobf: Option<&crate::deobfuscate::DeobfData>, + _vdata: Option<&str>, ) -> Result, ExtractionError> { let tabs = self .contents @@ -237,6 +238,7 @@ impl MapResponse> for response::MusicDetails { id: &str, lang: Language, _deobf: Option<&crate::deobfuscate::DeobfData>, + _vdata: Option<&str>, ) -> Result>, ExtractionError> { let tabs = self .contents @@ -297,6 +299,7 @@ impl MapResponse for response::MusicLyrics { id: &str, _lang: Language, _deobf: Option<&crate::deobfuscate::DeobfData>, + _vdata: Option<&str>, ) -> Result, ExtractionError> { let lyrics = self .contents @@ -330,6 +333,7 @@ impl MapResponse for response::MusicRelated { _id: &str, lang: Language, _deobf: Option<&crate::deobfuscate::DeobfData>, + _vdata: Option<&str>, ) -> Result, ExtractionError> { // Find artist let artist_id = self @@ -422,7 +426,7 @@ mod tests { let details: response::MusicDetails = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult = - details.map_response(id, Language::En, None).unwrap(); + details.map_response(id, Language::En, None, None).unwrap(); assert!( map_res.warnings.is_empty(), @@ -442,7 +446,7 @@ mod tests { let radio: response::MusicDetails = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult> = - radio.map_response(id, Language::En, None).unwrap(); + radio.map_response(id, Language::En, None, None).unwrap(); assert!( map_res.warnings.is_empty(), @@ -459,7 +463,7 @@ mod tests { let lyrics: response::MusicLyrics = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res: MapResult = lyrics.map_response("", Language::En, None).unwrap(); + let map_res: MapResult = lyrics.map_response("", Language::En, None, None).unwrap(); assert!( map_res.warnings.is_empty(), @@ -476,7 +480,8 @@ mod tests { let lyrics: response::MusicRelated = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res: MapResult = lyrics.map_response("", Language::En, None).unwrap(); + let map_res: MapResult = + lyrics.map_response("", Language::En, None, None).unwrap(); assert!( map_res.warnings.is_empty(), diff --git a/src/client/music_genres.rs b/src/client/music_genres.rs index 3a696ca..f62273d 100644 --- a/src/client/music_genres.rs +++ b/src/client/music_genres.rs @@ -57,6 +57,7 @@ impl MapResponse> for response::MusicGenres { _id: &str, _lang: crate::param::Language, _deobf: Option<&crate::deobfuscate::DeobfData>, + _vdata: Option<&str>, ) -> Result>, ExtractionError> { let content = self .contents @@ -110,6 +111,7 @@ impl MapResponse for response::MusicGenre { id: &str, lang: crate::param::Language, _deobf: Option<&crate::deobfuscate::DeobfData>, + _vdata: Option<&str>, ) -> Result, ExtractionError> { // dbg!(&self); @@ -214,7 +216,7 @@ mod tests { let playlist: response::MusicGenres = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult> = - playlist.map_response("", Language::En, None).unwrap(); + playlist.map_response("", Language::En, None, None).unwrap(); assert!( map_res.warnings.is_empty(), @@ -234,7 +236,7 @@ mod tests { let playlist: response::MusicGenre = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult = - playlist.map_response(id, Language::En, None).unwrap(); + playlist.map_response(id, Language::En, None, None).unwrap(); assert!( map_res.warnings.is_empty(), diff --git a/src/client/music_new.rs b/src/client/music_new.rs index e80bff1..7abb1fa 100644 --- a/src/client/music_new.rs +++ b/src/client/music_new.rs @@ -52,6 +52,7 @@ impl MapResponse> for response::MusicNew { _id: &str, lang: crate::param::Language, _deobf: Option<&crate::deobfuscate::DeobfData>, + _vdata: Option<&str>, ) -> Result>, ExtractionError> { let items = self .contents @@ -96,8 +97,9 @@ mod tests { let new_albums: response::MusicNew = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res: MapResult> = - new_albums.map_response("", Language::En, None).unwrap(); + let map_res: MapResult> = new_albums + .map_response("", Language::En, None, None) + .unwrap(); assert!( map_res.warnings.is_empty(), @@ -115,8 +117,9 @@ mod tests { let new_albums: response::MusicNew = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res: MapResult> = - new_albums.map_response("", Language::En, None).unwrap(); + let map_res: MapResult> = new_albums + .map_response("", Language::En, None, None) + .unwrap(); assert!( map_res.warnings.is_empty(), diff --git a/src/client/music_playlist.rs b/src/client/music_playlist.rs index 0bea1b3..41f8974 100644 --- a/src/client/music_playlist.rs +++ b/src/client/music_playlist.rs @@ -122,6 +122,7 @@ impl MapResponse for response::MusicPlaylist { id: &str, lang: crate::param::Language, _deobf: Option<&crate::deobfuscate::DeobfData>, + _vdata: Option<&str>, ) -> Result, ExtractionError> { // dbg!(&self); @@ -267,6 +268,7 @@ impl MapResponse for response::MusicPlaylist { id: &str, lang: crate::param::Language, _deobf: Option<&crate::deobfuscate::DeobfData>, + _vdata: Option<&str>, ) -> Result, ExtractionError> { // dbg!(&self); @@ -418,7 +420,7 @@ mod tests { let playlist: response::MusicPlaylist = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult = - playlist.map_response(id, Language::En, None).unwrap(); + playlist.map_response(id, Language::En, None, None).unwrap(); assert!( map_res.warnings.is_empty(), @@ -443,7 +445,7 @@ mod tests { let playlist: response::MusicPlaylist = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult = - playlist.map_response(id, Language::En, None).unwrap(); + playlist.map_response(id, Language::En, None, None).unwrap(); assert!( map_res.warnings.is_empty(), diff --git a/src/client/music_search.rs b/src/client/music_search.rs index eafb524..3e2389d 100644 --- a/src/client/music_search.rs +++ b/src/client/music_search.rs @@ -231,6 +231,7 @@ impl MapResponse for response::MusicSearch { _id: &str, lang: crate::param::Language, _deobf: Option<&crate::deobfuscate::DeobfData>, + _vdata: Option<&str>, ) -> Result, crate::error::ExtractionError> { // dbg!(&self); @@ -296,6 +297,7 @@ impl MapResponse> for response::MusicSearc _id: &str, lang: crate::param::Language, _deobf: Option<&crate::deobfuscate::DeobfData>, + _vdata: Option<&str>, ) -> Result>, ExtractionError> { // dbg!(&self); @@ -356,6 +358,7 @@ impl MapResponse for response::MusicSearchSuggestion { _id: &str, lang: crate::param::Language, _deobf: Option<&crate::deobfuscate::DeobfData>, + _vdata: Option<&str>, ) -> Result, ExtractionError> { let mut mapper = MusicListMapper::new(lang); let mut terms = Vec::new(); @@ -419,7 +422,7 @@ mod tests { let search: response::MusicSearch = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult = - search.map_response("", Language::En, None).unwrap(); + search.map_response("", Language::En, None, None).unwrap(); assert!( map_res.warnings.is_empty(), @@ -442,7 +445,7 @@ mod tests { let search: response::MusicSearch = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult> = - search.map_response("", Language::En, None).unwrap(); + search.map_response("", Language::En, None, None).unwrap(); assert!( map_res.warnings.is_empty(), @@ -461,7 +464,7 @@ mod tests { let search: response::MusicSearch = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult> = - search.map_response("", Language::En, None).unwrap(); + search.map_response("", Language::En, None, None).unwrap(); assert!( map_res.warnings.is_empty(), @@ -480,7 +483,7 @@ mod tests { let search: response::MusicSearch = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult> = - search.map_response("", Language::En, None).unwrap(); + search.map_response("", Language::En, None, None).unwrap(); assert!( map_res.warnings.is_empty(), @@ -501,7 +504,7 @@ mod tests { let search: response::MusicSearch = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult> = - search.map_response("", Language::En, None).unwrap(); + search.map_response("", Language::En, None, None).unwrap(); assert!( map_res.warnings.is_empty(), @@ -521,8 +524,9 @@ mod tests { let suggestion: response::MusicSearchSuggestion = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res: MapResult = - suggestion.map_response("", Language::En, None).unwrap(); + let map_res: MapResult = suggestion + .map_response("", Language::En, None, None) + .unwrap(); assert!( map_res.warnings.is_empty(), diff --git a/src/client/pagination.rs b/src/client/pagination.rs index 62cf220..57387b6 100644 --- a/src/client/pagination.rs +++ b/src/client/pagination.rs @@ -96,6 +96,7 @@ impl MapResponse> for response::Continuation { _id: &str, lang: crate::param::Language, _deobf: Option<&crate::deobfuscate::DeobfData>, + _vdata: Option<&str>, ) -> Result>, ExtractionError> { let items = self .on_response_received_actions @@ -131,6 +132,7 @@ impl MapResponse> for response::MusicContinuation { _id: &str, lang: crate::param::Language, _deobf: Option<&crate::deobfuscate::DeobfData>, + _vdata: Option<&str>, ) -> Result>, ExtractionError> { let mut mapper = MusicListMapper::new(lang); let mut continuations = Vec::new(); @@ -353,7 +355,7 @@ mod tests { let items: response::Continuation = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult> = - items.map_response("", Language::En, None).unwrap(); + items.map_response("", Language::En, None, None).unwrap(); assert!( map_res.warnings.is_empty(), @@ -375,7 +377,7 @@ mod tests { let items: response::Continuation = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult> = - items.map_response("", Language::En, None).unwrap(); + items.map_response("", Language::En, None, None).unwrap(); let paginator: Paginator = map_yt_paginator(map_res.c, None, ContinuationEndpoint::Browse); @@ -398,7 +400,7 @@ mod tests { let items: response::Continuation = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult> = - items.map_response("", Language::En, None).unwrap(); + items.map_response("", Language::En, None, None).unwrap(); let paginator: Paginator = map_yt_paginator(map_res.c, None, ContinuationEndpoint::Browse); @@ -421,7 +423,7 @@ mod tests { let items: response::MusicContinuation = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult> = - items.map_response("", Language::En, None).unwrap(); + items.map_response("", Language::En, None, None).unwrap(); let paginator: Paginator = map_ytm_paginator(map_res.c, None, ContinuationEndpoint::MusicBrowse); @@ -442,7 +444,7 @@ mod tests { let items: response::MusicContinuation = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res: MapResult> = - items.map_response("", Language::En, None).unwrap(); + items.map_response("", Language::En, None, None).unwrap(); let paginator: Paginator = map_ytm_paginator(map_res.c, None, ContinuationEndpoint::MusicBrowse); diff --git a/src/client/player.rs b/src/client/player.rs index cda8f70..4061aac 100644 --- a/src/client/player.rs +++ b/src/client/player.rs @@ -143,6 +143,7 @@ impl MapResponse for response::Player { id: &str, _lang: Language, deobf: Option<&crate::deobfuscate::DeobfData>, + vdata: Option<&str>, ) -> Result, ExtractionError> { let deobf = Deobfuscator::new(deobf.unwrap())?; let mut warnings = vec![]; @@ -372,7 +373,10 @@ impl MapResponse for response::Player { hls_manifest_url: streaming_data.hls_manifest_url, dash_manifest_url: streaming_data.dash_manifest_url, preview_frames, - visitor_data: self.response_context.visitor_data, + visitor_data: self + .response_context + .visitor_data + .or_else(|| vdata.map(str::to_owned)), }, warnings, }) @@ -717,7 +721,7 @@ mod tests { let resp: response::Player = serde_json::from_reader(BufReader::new(json_file)).unwrap(); let map_res = resp - .map_response("pPvd8UxmSbQ", Language::En, Some(&DEOBF_DATA)) + .map_response("pPvd8UxmSbQ", Language::En, Some(&DEOBF_DATA), None) .unwrap(); assert!( diff --git a/src/client/playlist.rs b/src/client/playlist.rs index 18340df..bfdc03e 100644 --- a/src/client/playlist.rs +++ b/src/client/playlist.rs @@ -37,6 +37,7 @@ impl MapResponse for response::Playlist { id: &str, lang: crate::param::Language, _deobf: Option<&crate::deobfuscate::DeobfData>, + vdata: Option<&str>, ) -> Result, ExtractionError> { let (Some(contents), Some(header)) = (self.contents, self.header) else { return Err(response::alerts_to_err(id, self.alerts)); @@ -152,7 +153,10 @@ impl MapResponse for response::Playlist { channel, last_update, last_update_txt, - visitor_data: self.response_context.visitor_data, + visitor_data: self + .response_context + .visitor_data + .or_else(|| vdata.map(str::to_owned)), }, warnings: mapper.warnings, }) @@ -181,7 +185,7 @@ mod tests { let playlist: response::Playlist = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res = playlist.map_response(id, Language::En, None).unwrap(); + let map_res = playlist.map_response(id, Language::En, None, None).unwrap(); assert!( map_res.warnings.is_empty(), diff --git a/src/client/response/music_item.rs b/src/client/response/music_item.rs index bee91c9..6bbfdff 100644 --- a/src/client/response/music_item.rs +++ b/src/client/response/music_item.rs @@ -759,7 +759,7 @@ impl MusicListMapper { })); Ok(Some(MusicItemType::Playlist)) } - MusicPageType::None | MusicPageType::ArtistDiscography => { + MusicPageType::None => { // There may be broken YT channels from the artist search. They can be skipped. Ok(None) } @@ -901,7 +901,7 @@ impl MusicListMapper { })); Ok(Some(MusicItemType::Playlist)) } - MusicPageType::None | MusicPageType::ArtistDiscography => Ok(None), + MusicPageType::None => Ok(None), MusicPageType::Unknown => { self.has_unknown = true; Ok(None) @@ -1039,7 +1039,7 @@ impl MusicListMapper { })); Some(MusicItemType::Playlist) } - MusicPageType::None | MusicPageType::ArtistDiscography => None, + MusicPageType::None => None, MusicPageType::Unknown => { self.has_unknown = true; None diff --git a/src/client/response/url_endpoint.rs b/src/client/response/url_endpoint.rs index 1b9b225..01a9374 100644 --- a/src/client/response/url_endpoint.rs +++ b/src/client/response/url_endpoint.rs @@ -102,9 +102,12 @@ pub(crate) struct BrowseEndpointConfig { pub browse_endpoint_context_music_config: BrowseEndpointMusicConfig, } +#[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct BrowseEndpointMusicConfig { + #[serde(default)] + #[serde_as(as = "DefaultOnError")] pub page_type: PageType, } @@ -114,9 +117,12 @@ pub(crate) struct CommandMetadata { pub web_command_metadata: WebCommandMetadata, } +#[serde_as] #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub(crate) struct WebCommandMetadata { + #[serde(default)] + #[serde_as(as = "DefaultOnError")] pub web_page_type: PageType, } @@ -144,15 +150,13 @@ pub(crate) enum MusicVideoType { Track, } -#[derive(Debug, Clone, Copy, Deserialize, PartialEq, Eq)] +#[derive(Default, Debug, Clone, Copy, Deserialize, PartialEq, Eq)] pub(crate) enum PageType { #[serde( rename = "MUSIC_PAGE_TYPE_ARTIST", alias = "MUSIC_PAGE_TYPE_AUDIOBOOK_ARTIST" )] Artist, - #[serde(rename = "MUSIC_PAGE_TYPE_ARTIST_DISCOGRAPHY")] - ArtistDiscography, #[serde(rename = "MUSIC_PAGE_TYPE_ALBUM", alias = "MUSIC_PAGE_TYPE_AUDIOBOOK")] Album, #[serde( @@ -162,7 +166,7 @@ pub(crate) enum PageType { Channel, #[serde(rename = "MUSIC_PAGE_TYPE_PLAYLIST", alias = "WEB_PAGE_TYPE_PLAYLIST")] Playlist, - #[serde(rename = "MUSIC_PAGE_TYPE_UNKNOWN")] + #[default] Unknown, } @@ -170,9 +174,6 @@ impl PageType { pub(crate) fn to_url_target(self, id: String) -> Option { match self { PageType::Artist | PageType::Channel => Some(UrlTarget::Channel { id }), - PageType::ArtistDiscography => id - .strip_prefix(util::ARTIST_DISCOGRAPHY_PREFIX) - .map(|id| UrlTarget::Channel { id: id.to_owned() }), PageType::Album => Some(UrlTarget::Album { id }), PageType::Playlist => Some(UrlTarget::Playlist { id }), PageType::Unknown => None, @@ -183,7 +184,6 @@ impl PageType { #[derive(Debug, Copy, Clone, PartialEq, Eq)] pub(crate) enum MusicPageType { Artist, - ArtistDiscography, Album, Playlist, Track { is_video: bool }, @@ -195,7 +195,6 @@ impl From for MusicPageType { fn from(t: PageType) -> Self { match t { PageType::Artist => MusicPageType::Artist, - PageType::ArtistDiscography => MusicPageType::ArtistDiscography, PageType::Album => MusicPageType::Album, PageType::Playlist => MusicPageType::Playlist, PageType::Channel => MusicPageType::None, diff --git a/src/client/search.rs b/src/client/search.rs index 1701de9..1d9d186 100644 --- a/src/client/search.rs +++ b/src/client/search.rs @@ -92,6 +92,7 @@ impl MapResponse for response::Search { _id: &str, lang: crate::param::Language, _deobf: Option<&crate::deobfuscate::DeobfData>, + vdata: Option<&str>, ) -> Result, ExtractionError> { let items = self .contents @@ -113,7 +114,10 @@ impl MapResponse for response::Search { crate::model::paginator::ContinuationEndpoint::Search, ), corrected_query: mapper.corrected_query, - visitor_data: self.response_context.visitor_data, + visitor_data: self + .response_context + .visitor_data + .or_else(|| vdata.map(str::to_owned)), }, warnings: mapper.warnings, }) @@ -145,7 +149,8 @@ mod tests { let json_file = File::open(json_path).unwrap(); let search: response::Search = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res: MapResult = search.map_response("", Language::En, None).unwrap(); + let map_res: MapResult = + search.map_response("", Language::En, None, None).unwrap(); assert!( map_res.warnings.is_empty(), diff --git a/src/client/trends.rs b/src/client/trends.rs index cc7408f..6e3505a 100644 --- a/src/client/trends.rs +++ b/src/client/trends.rs @@ -54,6 +54,7 @@ impl MapResponse> for response::Startpage { _id: &str, lang: crate::param::Language, _deobf: Option<&crate::deobfuscate::DeobfData>, + vdata: Option<&str>, ) -> Result>, ExtractionError> { let grid = self .contents @@ -70,7 +71,9 @@ impl MapResponse> for response::Startpage { Ok(map_startpage_videos( grid, lang, - self.response_context.visitor_data, + self.response_context + .visitor_data + .or_else(|| vdata.map(str::to_owned)), )) } } @@ -81,6 +84,7 @@ impl MapResponse> for response::Trending { _id: &str, lang: crate::param::Language, _deobf: Option<&crate::deobfuscate::DeobfData>, + _vdata: Option<&str>, ) -> Result>, ExtractionError> { let items = self .contents @@ -146,8 +150,9 @@ mod tests { let startpage: response::Startpage = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res: MapResult> = - startpage.map_response("", Language::En, None).unwrap(); + let map_res: MapResult> = startpage + .map_response("", Language::En, None, None) + .unwrap(); assert!( map_res.warnings.is_empty(), @@ -169,8 +174,9 @@ mod tests { let startpage: response::Trending = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res: MapResult> = - startpage.map_response("", Language::En, None).unwrap(); + let map_res: MapResult> = startpage + .map_response("", Language::En, None, None) + .unwrap(); assert!( map_res.warnings.is_empty(), diff --git a/src/client/url_resolver.rs b/src/client/url_resolver.rs index 6b9e83b..6ca8cb6 100644 --- a/src/client/url_resolver.rs +++ b/src/client/url_resolver.rs @@ -328,6 +328,7 @@ impl MapResponse for response::ResolvedUrl { _id: &str, _lang: Language, _deobf: Option<&crate::deobfuscate::DeobfData>, + _vdata: Option<&str>, ) -> Result, ExtractionError> { let pt = self.endpoint.page_type(); if let NavigationEndpoint::Browse { diff --git a/src/client/video_details.rs b/src/client/video_details.rs index b04e806..92570cc 100644 --- a/src/client/video_details.rs +++ b/src/client/video_details.rs @@ -82,6 +82,7 @@ impl MapResponse for response::VideoDetails { id: &str, lang: Language, _deobf: Option<&crate::deobfuscate::DeobfData>, + vdata: Option<&str>, ) -> Result, ExtractionError> { let mut warnings = Vec::new(); @@ -256,7 +257,10 @@ impl MapResponse for response::VideoDetails { _ => return Err(ExtractionError::InvalidData("invalid channel link".into())), }; - let visitor_data = self.response_context.visitor_data; + let visitor_data = self + .response_context + .visitor_data + .or_else(|| vdata.map(str::to_owned)); let recommended = contents .two_column_watch_next_results .secondary_results @@ -369,6 +373,7 @@ impl MapResponse> for response::VideoComments { _id: &str, lang: Language, _deobf: Option<&crate::deobfuscate::DeobfData>, + _vdata: Option<&str>, ) -> Result>, ExtractionError> { let received_endpoints = self.on_response_received_endpoints; let mut warnings = received_endpoints.warnings; @@ -561,7 +566,7 @@ mod tests { let details: response::VideoDetails = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res = details.map_response(id, Language::En, None).unwrap(); + let map_res = details.map_response(id, Language::En, None, None).unwrap(); assert!( map_res.warnings.is_empty(), @@ -581,7 +586,9 @@ mod tests { let details: response::VideoDetails = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let err = details.map_response("", Language::En, None).unwrap_err(); + let err = details + .map_response("", Language::En, None, None) + .unwrap_err(); assert!(matches!( err, crate::error::ExtractionError::NotFound { .. } @@ -597,7 +604,7 @@ mod tests { let comments: response::VideoComments = serde_json::from_reader(BufReader::new(json_file)).unwrap(); - let map_res = comments.map_response("", Language::En, None).unwrap(); + let map_res = comments.map_response("", Language::En, None, None).unwrap(); assert!( map_res.warnings.is_empty(), diff --git a/src/serializer/snapshots/rustypipe__serializer__text__tests__t_attributed_description.snap b/src/serializer/snapshots/rustypipe__serializer__text__tests__t_attributed_description.snap index e937bcc..4966a2f 100644 --- a/src/serializer/snapshots/rustypipe__serializer__text__tests__t_attributed_description.snap +++ b/src/serializer/snapshots/rustypipe__serializer__text__tests__t_attributed_description.snap @@ -80,32 +80,42 @@ SAttributed { Text { text: "\n\n", }, - Text { + Browse { text: "#aespa", + page_type: Unknown, + browse_id: "FEhashtag", }, Text { text: " ", }, - Text { + Browse { text: "#æspa", + page_type: Unknown, + browse_id: "FEhashtag", }, Text { text: " ", }, - Text { + Browse { text: "#BlackMamba", + page_type: Unknown, + browse_id: "FEhashtag", }, Text { text: " ", }, - Text { + Browse { text: "#블랙맘바", + page_type: Unknown, + browse_id: "FEhashtag", }, Text { text: " ", }, - Text { + Browse { text: "#에스파", + page_type: Unknown, + browse_id: "FEhashtag", }, Text { text: "\naespa 에스파 'Black Mamba' MV ℗ SM Entertainment", diff --git a/src/util/dictionary.rs b/src/util/dictionary.rs index 83d6c51..9d29edc 100644 --- a/src/util/dictionary.rs +++ b/src/util/dictionary.rs @@ -57,26 +57,32 @@ pub(crate) fn entry(lang: Language) -> Entry { match lang { Language::Af => Entry { timeago_tokens: ::phf::Map { - key: 12913932095322966823, + key: 8694567506910003252, disps: &[ - (4, 0), - (6, 5), - (7, 2), + (17, 14), + (4, 2), + (0, 0), + (6, 6), ], entries: &[ - ("maande", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("uur", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("j.", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("w.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("maand", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("dag", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("sekonde", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("md.", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("maande", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("dae", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("week", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("uur", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("sekondes", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("minuut", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("u.", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("min.", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("s.", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("weke", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("jaar", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("maand", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("sekondes", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("minute", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("week", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("minuut", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("ure", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("dae", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("sekonde", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -148,30 +154,31 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Am => Entry { timeago_tokens: ::phf::Map { - key: 10121458955350035957, + key: 15467950696543387533, disps: &[ - (2, 0), + (2, 11), + (2, 2), + (8, 4), (0, 0), - (6, 2), - (0, 11), ], entries: &[ + ("ደቂቃ፣", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("ሳምንታት", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("ዓመታት", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("ዓመት", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("ወር", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("ሰዓቶች", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("ደቂቃዎች፣", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ወራት", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("ሰከንድ", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("ሳምንት", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("ሰዓቶች", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ቀን", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ደቂቃዎች", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ሰዓት", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ዓመት", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("ዓመታት", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ("ሰከንዶች", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("ቀናት", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ወር", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("ቀኖች", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("ደቂቃ", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("ደቂቃዎች", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("ደቂቃ፣", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("ሰዓት", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("ቀን", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("ሰከንድ", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("ወራት", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("ደቂቃዎች፣", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -244,44 +251,46 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Ar => Entry { timeago_tokens: ::phf::Map { - key: 10121458955350035957, + key: 2980949210194914378, disps: &[ - (1, 6), - (0, 21), - (1, 15), - (1, 23), - (2, 10), - (2, 0), + (1, 0), + (0, 3), + (2, 26), + (1, 11), + (25, 3), + (9, 5), ], entries: &[ - ("دقيقة", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("أسابيع", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("دقيقتين", TaToken { n: 2, unit: Some(TimeUnit::Minute) }), - ("شهر\u{64b}ا", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("ثانية", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("دقائق", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("دقيقتان", TaToken { n: 2, unit: Some(TimeUnit::Minute) }), - ("سنتين", TaToken { n: 2, unit: Some(TimeUnit::Year) }), - ("ساعات", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("وثانية", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("ثوان", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("وثانيتان", TaToken { n: 2, unit: Some(TimeUnit::Second) }), - ("أسبوعين", TaToken { n: 2, unit: Some(TimeUnit::Week) }), - ("ساعة", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("ثانيتين", TaToken { n: 2, unit: Some(TimeUnit::Second) }), - ("شهرين", TaToken { n: 2, unit: Some(TimeUnit::Month) }), ("يوم\u{64b}ا", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("سنة", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ("ثوان\u{650}", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("سنوات", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("أيام", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("ساعتين", TaToken { n: 2, unit: Some(TimeUnit::Hour) }), + ("ساعات", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("دقائق", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("شهرين", TaToken { n: 2, unit: Some(TimeUnit::Month) }), ("أشهر", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("ثانية", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("ساعة", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("يوم", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ثوان", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("دقيقة", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("يومين", TaToken { n: 2, unit: Some(TimeUnit::Day) }), + ("ثانيتين", TaToken { n: 2, unit: Some(TimeUnit::Second) }), + ("أسبوعين", TaToken { n: 2, unit: Some(TimeUnit::Week) }), + ("دقيقتين", TaToken { n: 2, unit: Some(TimeUnit::Minute) }), + ("سنوات", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("دقيقتان", TaToken { n: 2, unit: Some(TimeUnit::Minute) }), + ("سنة", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("أسابيع", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("خلال", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("شهر\u{64b}ا", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("شهر", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("وثانية", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("سنتين", TaToken { n: 2, unit: Some(TimeUnit::Year) }), + ("ساعتين", TaToken { n: 2, unit: Some(TimeUnit::Hour) }), + ("أسبوع\u{64b}ا", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("أيام", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("أسبوع", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("ثوان\u{64d}", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("يومين", TaToken { n: 2, unit: Some(TimeUnit::Day) }), - ("شهر", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("وثانيتان", TaToken { n: 2, unit: Some(TimeUnit::Second) }), ], }, date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], @@ -467,10 +476,8 @@ pub(crate) fn entry(lang: Language) -> Entry { (0, 0), ], entries: &[ - ("güncəlləndi", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("bugün", TaToken { n: 0, unit: Some(TimeUnit::Day) }), ("dünən", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("güncəllənib", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("bugün", TaToken { n: 0, unit: Some(TimeUnit::Day) }), ], }, comma_decimal: true, @@ -509,42 +516,50 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Be => Entry { timeago_tokens: ::phf::Map { - key: 14108922650502679131, + key: 12913932095322966823, disps: &[ - (1, 19), - (15, 14), - (1, 2), - (12, 0), - (2, 10), + (0, 28), (0, 0), + (0, 0), + (4, 25), + (28, 5), + (11, 16), + (1, 16), ], entries: &[ - ("тыдзень", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("секунды", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("дзень", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("секунда", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("года", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("месяцаў", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("тыдня", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("месяца", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("тыдні", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("хвілін", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("секунду", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("гадзіну", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("дня", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("гадз", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("год", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("дзён", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("тыдняў", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("секунду", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("гадзіны", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("месяцы", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("месяца", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("дзён", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("с", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("тыдні", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("хвіліну", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("месяц", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("хвілін", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("мес.", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("хв", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("г.", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("дня", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("дзень", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("гадзін", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("месяцаў", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("секунды", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("гады", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("гадзіну", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("месяц", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("года", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ("гадоў", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ("хвіліны", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("хвіліна", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("гады", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("дні", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("секунда", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("секунд", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("тыдня", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("месяцы", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("тыдзень", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("тыд", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("дні", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("хвіліна", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -617,27 +632,34 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Bg => Entry { timeago_tokens: ::phf::Map { - key: 7485420634051515786, + key: 12213676231523076107, disps: &[ - (2, 0), - (7, 12), - (5, 10), + (0, 0), + (17, 15), + (0, 5), + (6, 18), ], entries: &[ - ("час", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("секунда", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("дни", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("месец", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("седмици", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("минута", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("години", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("седмица", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("година", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("г.", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("ч", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("дни", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("мин", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("час", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("седм.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("ден", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("минути", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("месеца", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("месец", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("часа", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("година", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("години", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("сек", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("секунди", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("месеца", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("седмица", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("минута", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("секунда", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("м.", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ], }, date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], @@ -786,33 +808,42 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Bs => Entry { timeago_tokens: ::phf::Map { - key: 15467950696543387533, + key: 12913932095322966823, disps: &[ - (7, 18), - (4, 0), - (4, 3), - (7, 9), + (0, 17), + (4, 17), + (0, 17), + (1, 13), + (9, 0), + (1, 26), ], entries: &[ - ("sekunde", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("godinu", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("godine", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("mjeseca", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("sata", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("sedmice", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("minute", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("minutu", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("sat", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("sekundi", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("godina", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("dana", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("sati", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("mjesec", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("sekundu", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("minuta", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("mjeseci", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("sedmicu", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("mjesec", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("mj.", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("mjeseca", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("dana", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("sekunde", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("sek.", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("godinu", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("godina", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("mjeseci", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("min.", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("sekundi", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("minutu", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("sekundu", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("sedmica", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("minute", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("sata", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("sati", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("god.", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("d.", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("sat", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("godine", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("sed.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("sedmice", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("sekunda", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("minuta", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("dan", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, @@ -886,27 +917,32 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Ca => Entry { timeago_tokens: ::phf::Map { - key: 10121458955350035957, + key: 12913932095322966823, disps: &[ - (6, 7), - (2, 9), (0, 0), + (7, 4), + (2, 0), + (10, 3), ], entries: &[ - ("setmanes", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("any", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("hora", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("dies", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("setmana", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("h", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("segon", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("mesos", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("hores", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("mes", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("s", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("hora", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("min", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("minuts", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("segons", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("minut", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("anys", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("any", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("dies", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("dia", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("mesos", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("mes", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("setm.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("anys", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("hores", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("minut", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("setmanes", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("setmana", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -978,36 +1014,50 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Cs => Entry { timeago_tokens: ::phf::Map { - key: 12913932095322966823, + key: 10121458955350035957, disps: &[ - (1, 0), - (1, 7), - (14, 20), - (1, 11), - (1, 20), + (0, 6), + (0, 0), + (0, 3), + (2, 1), + (6, 13), + (31, 18), + (3, 19), ], entries: &[ - ("minutami", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("měsícem", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("dnem", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("měsíci", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("týdnem", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("minutou", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("sekund", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("lety", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("minuta", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("sekundou", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("minuty", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("sekundy", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("rokem", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ("týdny", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("hodinou", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("sekundami", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("sekund", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("dne", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("hodinami", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("roky", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("dny", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("sekunda", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("hodinou", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("sekundou", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("měsíci", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("týd.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("minut", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("r.", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("roky", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("minuty", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("rokem", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("měs.", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("měsícem", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("minutami", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("týdne", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("dnem", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("l.", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("s", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("minuta", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("h", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("lety", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("min", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("měsíce", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("sekundy", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("roku", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("sekunda", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("týdnem", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("hodiny", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("minutou", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("sekundami", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("dny", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], @@ -1063,26 +1113,31 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Da => Entry { timeago_tokens: ::phf::Map { - key: 12913932095322966823, + key: 10121458955350035957, disps: &[ - (6, 0), - (0, 7), - (12, 11), + (5, 0), + (5, 13), + (0, 12), + (1, 10), ], entries: &[ ("sekunder", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("dage", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("måned", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("sekund", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("minutter", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("time", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("mdr.", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("år", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("sekund", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("time", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("måned", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("sek.", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("md.", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("timer", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("minut", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("dag", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("måneder", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("uger", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("uge", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("dag", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("minut", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("min.", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("minutter", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("måneder", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -1154,27 +1209,31 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::De => Entry { timeago_tokens: ::phf::Map { - key: 345707026197253659, + key: 15467950696543387533, disps: &[ - (9, 13), - (3, 0), - (3, 6), + (3, 4), + (0, 0), + (4, 3), + (1, 12), ], entries: &[ - ("woche", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("jahr", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("monat", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("wochen", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("minuten", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("monaten", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("sekunden", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("stunden", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("jahren", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("sekunde", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("tag", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("stunde", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("minute", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("jahren", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ("tagen", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("std.", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("sek.", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("minute", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("monaten", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("sekunde", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("wochen", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("monat", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("min.", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("minuten", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("sekunden", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("tag", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("jahr", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("woche", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], @@ -1231,27 +1290,33 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::El => Entry { timeago_tokens: ::phf::Map { - key: 12213676231523076107, + key: 7485420634051515786, disps: &[ - (0, 0), - (7, 11), - (2, 7), + (1, 10), + (1, 5), + (1, 0), + (0, 5), ], entries: &[ - ("λεπτά", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("εβδομάδα", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("ημέρα", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("λεπ.", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("ημέρες", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("έτος", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("ώρες", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("έτη", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("δευτερόλεπτο", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("δευτερόλεπτα", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("εβδομάδα", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("λεπτό", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ώ.", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ημ.", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("δευτ.", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("εβδομάδες", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("μήνες", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("ημέρα", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("έτη", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("λεπτό", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("έτος", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("εβδ.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("μήνα", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("λεπτά", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("ώρα", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("δευτερόλεπτο", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("ώρες", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("δευτερόλεπτα", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -1326,25 +1391,40 @@ pub(crate) fn entry(lang: Language) -> Entry { timeago_tokens: ::phf::Map { key: 7485420634051515786, disps: &[ - (0, 7), - (8, 12), - (5, 0), + (5, 3), + (1, 24), + (1, 16), + (0, 2), + (0, 0), + (3, 22), ], entries: &[ - ("months", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("month", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("hours", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("days", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("years", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("week", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("second", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("day", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("minute", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("m", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("y", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ("seconds", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("s", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("sec", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("d", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("day", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("h", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("yr", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("minute", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("week", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("hours", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("mo", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("weeks", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("hour", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("second", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("minutes", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("wk", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("hr", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("year", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("w", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("hour", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("min", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("month", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("months", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("days", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -1421,25 +1501,32 @@ pub(crate) fn entry(lang: Language) -> Entry { timeago_tokens: ::phf::Map { key: 10121458955350035957, disps: &[ - (8, 9), - (2, 0), - (7, 5), + (5, 2), + (19, 19), + (1, 0), + (0, 0), ], entries: &[ - ("segundos", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("meses", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("minutos", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("semanas", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("segundo", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("días", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("mes", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("hora", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("años", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ("día", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("semana", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("horas", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("año", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("sem.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("semana", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("minutos", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("d", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("semanas", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("s", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("m", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("segundo", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("hora", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("minuto", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("h", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("años", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("segundos", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("mes", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("meses", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("días", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("año", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("min", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -1511,25 +1598,31 @@ pub(crate) fn entry(lang: Language) -> Entry { timeago_tokens: ::phf::Map { key: 10121458955350035957, disps: &[ - (8, 9), - (2, 0), - (7, 5), + (4, 2), + (11, 2), + (6, 0), + (5, 0), ], entries: &[ - ("segundos", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("meses", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("minutos", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("semanas", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("segundo", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("días", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("mes", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("año", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("h", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("hora", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("minuto", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("m", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("años", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("mes", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("min", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("segundo", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("sem.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("horas", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("días", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("día", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("semana", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("horas", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("año", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("minuto", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("meses", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("s", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("minutos", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("segundos", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("semanas", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -1601,29 +1694,33 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Et => Entry { timeago_tokens: ::phf::Map { - key: 15467950696543387533, + key: 12213676231523076107, disps: &[ - (0, 1), - (0, 0), - (0, 3), - (5, 10), + (3, 0), + (1, 0), + (3, 9), + (6, 17), ], entries: &[ - ("nädalat", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("nädala", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("minuti", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("aastat", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("tunni", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("sekundi", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("kuu", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("kuud", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("minutit", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("nädal", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("päev", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("sekundit", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("sekund", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("aasta", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ("minut", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("nädala", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("nädal", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("p", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("t", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("kuu", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("minutit", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("tunni", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("näd", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("aasta", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("sekundi", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("minuti", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("min", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("sek", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("kuud", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("sekund", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("päev", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("a", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("sekundit", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("päeva", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, @@ -1697,22 +1794,19 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Eu => Entry { timeago_tokens: ::phf::Map { - key: 12913932095322966823, + key: 10121458955350035957, disps: &[ - (1, 9), (0, 0), + (1, 5), ], entries: &[ - ("egun", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("astebete", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("hilabete", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("minutu", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("urtebete", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("segundo", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("aste", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("urte", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("minutu", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("segundo", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("ordu", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("ordubete", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("urte", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("egun", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("hilabete", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ], }, date_order: &[DateCmp::Y, DateCmp::D], @@ -1869,27 +1963,36 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Fi => Entry { timeago_tokens: ::phf::Map { - key: 12213676231523076107, + key: 10121458955350035957, disps: &[ - (2, 13), + (1, 6), + (2, 4), (0, 0), - (0, 11), + (4, 7), + (0, 1), ], entries: &[ - ("päivä", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("kuukausi", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("minuuttia", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("viikko", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("tunti", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("min", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("vuotta", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("kk", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("sekunti", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("vk", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("vuosi", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("t", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("sekuntia", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("kuukautta", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("tunti", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("vuosi", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("minuutti", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("vuotta", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("v", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ("tuntia", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("pv", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("viikkoa", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("päivä", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("kuukausi", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("minuutti", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("minuuttia", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("s", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("päivää", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("sekunti", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("viikko", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], @@ -1948,19 +2051,21 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Fil => Entry { timeago_tokens: ::phf::Map { - key: 15467950696543387533, + key: 12913932095322966823, disps: &[ - (0, 0), - (0, 2), + (2, 2), + (7, 0), ], entries: &[ - ("araw", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("min.", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("buwan", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("seg.", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("taon", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("linggo", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("oras", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("segundo", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("buwan", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("taon", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("araw", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("minuto", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("linggo", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -2032,26 +2137,33 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Fr | Language::FrCa => Entry { timeago_tokens: ::phf::Map { - key: 10121458955350035957, + key: 1937371814602216758, disps: &[ - (12, 3), - (2, 11), - (2, 0), + (6, 5), + (9, 7), + (4, 0), + (0, 3), ], entries: &[ - ("minute", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("semaine", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("jour", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("mois", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("semaines", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("jours", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("seconde", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("heures", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("secondes", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("minutes", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("an", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("j", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("ans", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("jours", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("secondes", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("mois", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("jour", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("minutes", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("seconde", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("an", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("semaine", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("heures", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("sem.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("minute", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("s", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("m.", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("heure", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("h", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("min", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -2129,27 +2241,32 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Gl => Entry { timeago_tokens: ::phf::Map { - key: 12913932095322966823, + key: 15467950696543387533, disps: &[ - (12, 6), - (3, 9), - (1, 0), + (0, 0), + (8, 9), + (11, 7), + (7, 3), ], entries: &[ - ("día", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("minutos", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("mes", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("días", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("segundos", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("anos", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("ano", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("sem.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("semana", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("horas", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("segundo", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("semana", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("minuto", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("meses", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("semanas", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("ano", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ("hora", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("s", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("anos", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("segundos", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("minuto", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("min", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("días", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("minutos", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("meses", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("mes", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("h", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("día", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -2220,18 +2337,19 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Gu => Entry { timeago_tokens: ::phf::Map { - key: 12913932095322966823, + key: 10121458955350035957, disps: &[ - (1, 0), - (3, 0), + (7, 1), + (4, 0), ], entries: &[ - ("સ\u{ac7}ક\u{a82}ડ", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("દિવસ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("મહિના", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("વર\u{acd}ષ", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("અઠ.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("અઠવાડિયા", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("મિનિટ", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("મહિના", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("દિવસ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("સ\u{ac7}ક\u{a82}ડ", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("વર\u{acd}ષ", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ("કલાક", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, @@ -2304,19 +2422,22 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Hi => Entry { timeago_tokens: ::phf::Map { - key: 12913932095322966823, + key: 12213676231523076107, disps: &[ - (0, 5), (2, 0), + (1, 8), ], entries: &[ - ("वर\u{94d}ष", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("माह", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("सप\u{94d}ताह", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("स\u{947}क\u{902}ड", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("दिन", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("घ\u{902}ट\u{947}", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("मिनट", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("सप\u{94d}ताह", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("वर\u{94d}ष", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("माह", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("घ\u{902}॰", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("दिन", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("मि॰", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("स\u{947}॰", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("स\u{947}क\u{902}ड", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -2390,34 +2511,43 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Hr => Entry { timeago_tokens: ::phf::Map { - key: 4066803471364472071, + key: 12913932095322966823, disps: &[ - (3, 3), - (3, 4), - (0, 0), - (1, 3), + (5, 26), + (0, 10), + (0, 10), + (0, 8), + (2, 0), + (0, 12), ], entries: &[ - ("tjedna", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("tj.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("godina", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("godine", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("sat", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("minutu", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("minuta", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("mjeseci", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("sekundi", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("tjedan", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("minutu", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("sati", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("sekunde", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("sekundu", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("sata", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("sekundi", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("s", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("h", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("dana", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("godine", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("min", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("tjedna", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("dan", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("tjedana", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("godinu", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ("sekunda", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("dana", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("sat", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("mjesec", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("sekundu", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("sati", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("dan", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("minuta", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("sekunde", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("minute", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("mjeseca", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("g.", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("mj.", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("minute", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -2588,17 +2718,23 @@ pub(crate) fn entry(lang: Language) -> Entry { timeago_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (2, 3), - (1, 0), + (4, 2), + (3, 6), + (2, 0), ], entries: &[ - ("վայրկյան", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("շաբաթ", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("օր", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("ամիս", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("րոպե", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("ժամ", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("տարի", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("ժ", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ժամ", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("տ", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("վրկ", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("շաբաթ", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("վայրկյան", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("շաբ", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("օր", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ր", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("րոպե", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ամիս", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -2674,17 +2810,24 @@ pub(crate) fn entry(lang: Language) -> Entry { timeago_tokens: ::phf::Map { key: 10121458955350035957, disps: &[ - (0, 0), - (4, 1), + (1, 0), + (5, 3), + (4, 5), ], entries: &[ + ("mgg", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("bln", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("detik", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("menit", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("h", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("minggu", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("mnt", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("bulan", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("hari", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("jam", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("minggu", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("bulan", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("thn", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("dtk", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("tahun", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("menit", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -2757,32 +2900,37 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Is => Entry { timeago_tokens: ::phf::Map { - key: 12913932095322966823, + key: 10121458955350035957, disps: &[ - (2, 0), - (1, 6), - (5, 16), - (4, 6), + (0, 0), + (4, 15), + (8, 13), + (0, 2), + (12, 7), ], entries: &[ - ("vikum", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("degi", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("mínútum", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("mínúta", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("mánuðum", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("mínútu", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("klukkustundum", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("sekúndum", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("sekúnda", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("árum", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("mínútur", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("klst.", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("ári", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("dögum", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("sekúndur", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("mánuði", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("viku", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("klukkustund", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("sekúnda", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("mínútu", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("mín.", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("mínúta", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("árum", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("mínútum", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("mán.", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("mánuðum", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("sekúndum", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("mínútur", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("viku", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("sekúndu", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("vikum", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("sekúndur", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("sek.", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("klukkustundum", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("dögum", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("mánuði", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("degi", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -2857,27 +3005,34 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::It => Entry { timeago_tokens: ::phf::Map { - key: 15467950696543387533, + key: 10121458955350035957, disps: &[ - (2, 3), - (0, 0), - (6, 12), + (0, 10), + (3, 19), + (6, 0), + (8, 16), ], entries: &[ - ("mese", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("giorni", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("settimane", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("ora", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("anni", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("sett.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("giorno", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("secondo", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("ore", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("minuti", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ora", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("mesi", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("secondi", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("gg", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ore", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("anni", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("min", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("minuti", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("secondo", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("h", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("sec.", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("anno", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("minuto", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("secondi", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("settimana", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("minuto", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("g", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("settimane", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("giorni", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("mese", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -2949,35 +3104,39 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Iw => Entry { timeago_tokens: ::phf::Map { - key: 15467950696543387533, + key: 2980949210194914378, disps: &[ + (1, 24), + (1, 11), (2, 0), - (0, 15), - (2, 10), - (3, 6), - (0, 2), + (23, 19), + (16, 16), ], entries: &[ - ("שנתיים", TaToken { n: 2, unit: Some(TimeUnit::Year) }), - ("דקות", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("שעה", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("שבועיים", TaToken { n: 2, unit: Some(TimeUnit::Week) }), - ("שניה", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("שנייה", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("שעות", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("שתי", TaToken { n: 2, unit: None }), - ("יום", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("שבוע", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("ימים", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("שנים", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("חודשים", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("שניות", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("חודשיים", TaToken { n: 2, unit: Some(TimeUnit::Month) }), + ("אתמול", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("חודש", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("שבועות", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("דקה", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("שנה", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ("יומיים", TaToken { n: 2, unit: Some(TimeUnit::Day) }), + ("חודשיים", TaToken { n: 2, unit: Some(TimeUnit::Month) }), + ("שבועיים", TaToken { n: 2, unit: Some(TimeUnit::Week) }), + ("שע׳", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("שב׳", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("שנייה", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("שנים", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("יום", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("שעות", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("שבוע", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("דקות", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("שניה", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("שנה", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("דקה", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ימים", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("שנתיים", TaToken { n: 2, unit: Some(TimeUnit::Year) }), + ("דק׳", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("שניות", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("חודשים", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("שעתיים", TaToken { n: 2, unit: Some(TimeUnit::Hour) }), ], }, @@ -3077,11 +3236,11 @@ pub(crate) fn entry(lang: Language) -> Entry { timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (0, 0), + (1, 0), ], entries: &[ - ("日", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("本", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("昨", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, comma_decimal: false, @@ -3120,18 +3279,23 @@ pub(crate) fn entry(lang: Language) -> Entry { timeago_tokens: ::phf::Map { key: 14108922650502679131, disps: &[ - (1, 0), + (3, 0), (0, 3), + (6, 0), ], entries: &[ + ("წამი", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("კვირის", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("საათის", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("წმ", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("წლის", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("კვ.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("წუთის", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("სთ", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("თვის", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("დღის", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("წუთი", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("საათის", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("წლის", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("წამი", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("თვის", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("წთ", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("წამის", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, @@ -3205,19 +3369,25 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Kk => Entry { timeago_tokens: ::phf::Map { - key: 7485420634051515786, + key: 12913932095322966823, disps: &[ - (0, 3), - (2, 0), + (0, 1), + (3, 0), + (2, 7), ], entries: &[ - ("апта", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("секунд", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("минут", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("сағат", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("ай", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("сек.", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("күн", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("жыл", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("апта", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("мин.", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ай", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("ж.", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("секунд", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("сағ.", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ап.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("минут", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("сағат", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, date_order: &[DateCmp::Y, DateCmp::D], @@ -3376,31 +3546,32 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Kn => Entry { timeago_tokens: ::phf::Map { - key: 15467950696543387533, + key: 12913932095322966823, disps: &[ - (0, 4), - (8, 2), - (8, 0), - (0, 2), + (2, 1), + (1, 10), + (1, 0), + (1, 11), ], entries: &[ - ("ನ\u{cbf}ಮ\u{cbf}ಷದ", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("ಸ\u{cc6}ಕ\u{cc6}ಂಡುಗಳು", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("ನ\u{cbf}ಮ\u{cbf}ಷಗಳು", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("ನ\u{cbf}ಮ\u{cbf}ಷಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("ಸ\u{cc6}ಕ\u{cc6}ಂಡುಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("ತ\u{cbf}ಂಗಳು", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("ನ\u{cbf}ಮ\u{cbf}ಷವು", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("ಸ\u{cc6}ಕ\u{cc6}ಂಡ\u{ccd}", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("ವರ\u{ccd}ಷದ", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("ತ\u{cbf}ಂಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("ಗಂಟ\u{cc6}", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("ದ\u{cbf}ನದ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("ದ\u{cbf}ನಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("ವಾರಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("ನ\u{cbf}ಮ\u{cbf}ಷವು", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("ತ\u{cbf}ಂಗಳುಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("ವಾರದ", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("ಗಂಟ\u{cc6}ಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ಸ\u{cc6}ಕ\u{cc6}ಂಡುಗಳು", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("ವರ\u{ccd}ಷಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("ಸ\u{cc6}ಕ\u{cc6}ಂಡುಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("ವಾರಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("ಗಂಟ\u{cc6}", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ತ\u{cbf}ಂಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("ದ\u{cbf}ನಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ನ\u{cbf}ಮ\u{cbf}ಷಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ದ\u{cbf}ನದ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ಗಂಟ\u{cc6}ಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ವಾರದ", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("ನ\u{cbf}ಮ\u{cbf}ಷದ", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ತ\u{cbf}ಂಗಳುಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -3542,19 +3713,24 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Ky => Entry { timeago_tokens: ::phf::Map { - key: 10121458955350035957, + key: 15467950696543387533, disps: &[ - (3, 3), + (3, 4), + (2, 2), (0, 0), ], entries: &[ - ("ай", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("мүнөт", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("сек.", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("саат", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("жыл", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("мүнөт", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("күн", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("секунд", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("саат.", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("мүн.", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ай", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("апта", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("апт.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("күн", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, date_order: &[DateCmp::Y, DateCmp::D], @@ -3627,21 +3803,27 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Lo => Entry { timeago_tokens: ::phf::Map { - key: 7485420634051515786, + key: 8694567506910003252, disps: &[ - (2, 0), - (2, 0), + (8, 0), + (7, 5), + (0, 2), ], entries: &[ ("ນາທ\u{eb5}", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("ຊ\u{ebb}\u{ec8}ວໂມງກ\u{ec8}ອນ", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("ວ\u{eb4}ນາທ\u{eb5}", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("ນາທ\u{eb5}ກ\u{ec8}ອນ", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("ມ\u{eb7}\u{ec9}ກ\u{ec8}ອນ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("ອາທ\u{eb4}ດກ\u{ec8}ອນ", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("ຊມ.", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("ວ\u{eb4}ນາທ\u{eb5}ກ\u{ec8}ອນ", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("ເດ\u{eb7}ອນກ\u{ec8}ອນ", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("ຊ\u{ebb}\u{ec8}ວໂມງກ\u{ec8}ອນ", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ດ.", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("ປ\u{eb5}ກ\u{ec8}ອນ", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("ອທ.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("ນາທ\u{eb5}ກ\u{ec8}ອນ", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ນທ.", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ອາທ\u{eb4}ດກ\u{ec8}ອນ", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("ວ\u{eb4}.", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("ວ\u{eb4}ນາທ\u{eb5}", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -3715,40 +3897,52 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Lt => Entry { timeago_tokens: ::phf::Map { - key: 12913932095322966823, + key: 7485420634051515786, disps: &[ - (0, 0), - (3, 23), - (18, 5), - (3, 9), - (2, 17), + (10, 3), + (8, 4), + (1, 15), + (1, 29), + (5, 0), + (0, 30), + (10, 17), ], entries: &[ - ("valandas", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("savaičių", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("minučių", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("dienų", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("sekundės", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("mėnesį", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("dienas", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("minutes", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("sekundė", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("valandų", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("minutę", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("sekundžių", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("minutės", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("d.", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("dieną", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("metų", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("mėnesių", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("savaitę", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("valandą", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("sekundes", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("metus", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("mėnesius", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("minutė", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("dieną", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("valandas", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("dienų", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("sekundė", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("savaitės", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("sekundžių", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("mėnesių", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("mėnesius", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("valandą", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("minutės", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("minučių", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("minutes", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("sekundę", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("savaitę", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("metus", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("minutę", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("val.", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("sek.", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("mėn.", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("mėnesio", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("mėnesį", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("valandų", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("valandos", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("dienos", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("sav.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("min.", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("m.", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("sekundės", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("sekundes", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("savaites", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("dienas", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("savaičių", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("d.", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("metų", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ], }, date_order: &[DateCmp::Y, DateCmp::M, DateCmp::D], @@ -3806,32 +4000,40 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Lv => Entry { timeago_tokens: ::phf::Map { - key: 10121458955350035957, + key: 7485420634051515786, disps: &[ - (2, 4), + (3, 3), + (17, 11), + (1, 1), (5, 0), - (0, 17), - (5, 6), + (10, 17), ], entries: &[ - ("gada", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("sekunžu", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("sekundēm", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("gadiem", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("mēneša", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("nedēļas", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("sekundes", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("stundām", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("minūšu", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("minūtes", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("nedēļām", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("sekunžu", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("sekunde", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("minūtēm", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("dienām", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("stundas", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("minūte", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("dienas", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ned.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("st.", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("nedēļām", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("g.", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("nedēļas", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("sek.", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("mēneša", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("gada", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("minūšu", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("mēnešiem", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("stundām", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("minūte", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("d.", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("stundas", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("sekundēm", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("dienas", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("dienām", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("mēn.", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("minūtes", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("gadiem", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("min.", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("minūtēm", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, date_order: &[DateCmp::Y, DateCmp::D], @@ -3906,24 +4108,28 @@ pub(crate) fn entry(lang: Language) -> Entry { timeago_tokens: ::phf::Map { key: 15467950696543387533, disps: &[ - (1, 11), - (11, 0), - (2, 7), + (0, 11), + (11, 7), + (2, 9), + (2, 0), ], entries: &[ - ("часа", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("дена", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("минути", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ден", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("год.", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("мин.", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("час", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("минута", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("месец", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("месеци", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("секунда", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("години", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("час", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("минута", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("секунди", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("седмица", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("месец", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("часа", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("седмици", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("ден", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("сек.", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("седмица", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("минути", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("секунди", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("година", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ], }, @@ -4067,21 +4273,26 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Mn => Entry { timeago_tokens: ::phf::Map { - key: 2126027241312876569, + key: 12913932095322966823, disps: &[ - (6, 6), - (0, 0), + (1, 2), + (2, 0), + (1, 1), ], entries: &[ - ("өдрийн", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("секундын", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("цагийн", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("жилийн", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("секунд", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("минут", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("хоногийн", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("минутын", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("мин", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("сарын", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("сек", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("өдрийн", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("хоногийн", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("жилийн", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("цагийн", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("минут", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("секунд", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("ц", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("долоо", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("минутын", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("секундын", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, date_order: &[DateCmp::Y, DateCmp::M, DateCmp::D], @@ -4139,31 +4350,33 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Mr => Entry { timeago_tokens: ::phf::Map { - key: 12913932095322966823, + key: 10121458955350035957, disps: &[ - (0, 0), - (0, 8), - (7, 4), - (1, 6), + (7, 3), + (15, 0), + (0, 13), + (1, 0), ], entries: &[ - ("दिवसाप\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("महिन\u{94d}या\u{902}प\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("दिवसा\u{902}प\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("आठवड\u{94d}याप\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("मिनिटाप\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("स\u{947}क\u{902}द", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("तासा\u{902}प\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("स\u{947}क\u{902}दा\u{902}प\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("मिनिटा\u{902}प\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("महिन\u{94d}याप\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("स\u{947}क\u{902}दाप\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("मिनिट", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("आठवड\u{94d}या\u{902}प\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("वर\u{94d}षाप\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("मिनिट\u{947}", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("तासाप\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("वर\u{94d}षा\u{902}प\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("मिनिट", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("महिन\u{94d}या\u{902}प\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("आठवड\u{94d}या\u{902}प\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("स\u{947}क\u{902}दाप\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("तासाप\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("महिन\u{94d}याप\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("स\u{947}.", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("दिवसाप\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("मिनिटाप\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("स\u{947}क\u{902}दा\u{902}प\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("मिनि.", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("दिवसा\u{902}प\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("मिनिटा\u{902}प\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("स\u{947}क\u{902}द", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("मिनिट\u{947}", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("वर\u{94d}षाप\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("तासा\u{902}प\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("आठवड\u{94d}याप\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -4238,19 +4451,24 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Ms => Entry { timeago_tokens: ::phf::Map { - key: 10121458955350035957, + key: 12913932095322966823, disps: &[ - (3, 0), - (0, 1), + (3, 10), + (0, 0), + (10, 9), ], entries: &[ - ("hari", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("tahun", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ("saat", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("minit", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("bulan", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("minggu", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("tahun", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("mgu", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("jam", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("bln", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("minggu", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("min", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("bulan", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("thn", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("hari", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -4501,25 +4719,28 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Nl => Entry { timeago_tokens: ::phf::Map { - key: 14108922650502679131, + key: 12213676231523076107, disps: &[ - (8, 0), - (2, 10), - (2, 6), + (3, 9), + (7, 7), + (1, 0), ], entries: &[ - ("weken", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("uur", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("dagen", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("minuut", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("seconde", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("seconden", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("jaar", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("maanden", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("maand", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("dag", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("week", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("minuten", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("maanden", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("dagen", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("weken", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("seconde", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("sec.", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("min.", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("week", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("minuut", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("dgn", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("uur", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("dag", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("jaar", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("seconden", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -4591,27 +4812,34 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::No => Entry { timeago_tokens: ::phf::Map { - key: 7485420634051515786, + key: 12213676231523076107, disps: &[ - (0, 0), - (0, 0), - (5, 6), + (0, 2), + (3, 14), + (8, 14), + (12, 0), ], entries: &[ - ("minutter", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("dag", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("timer", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("sek", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("t", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("måned", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("u.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("md.", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("sekunder", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("minutt", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("døgn", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("uker", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("sekund", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("år", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("sekunder", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("måneder", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("timer", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("måned", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("dager", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("time", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("min", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("dager", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("uker", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("år", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("sekund", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("uke", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("minutter", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("d.", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("måneder", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -4686,20 +4914,27 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Or => Entry { timeago_tokens: ::phf::Map { - key: 1937371814602216758, + key: 12913932095322966823, disps: &[ - (0, 7), - (5, 0), + (11, 1), + (7, 1), + (1, 0), ], entries: &[ - ("ସେକେଣ\u{b4d}ଡ", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("ମ\u{b3f}ନ\u{b3f}ଟ\u{b4d}\u{200c}", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("ଦ\u{b3f}ନ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("ବର\u{b4d}ଷ", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("ମ\u{b3e}ସ", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("ଘଣ\u{b4d}ଟ\u{b3e}", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("ମ\u{b3f}ନ\u{b3f}ଟ\u{b4d}", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ବ.", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("ଘ.", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("ସପ\u{b4d}ତ\u{b3e}ହ", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("ମ\u{b3f}.", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ବର\u{b4d}ଷ", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("ଦ\u{b3f}ନ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ସପ\u{b4d}ତ\u{b3e}.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("ସେକେଣ\u{b4d}ଡ", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("ମ\u{b3e}.", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("ସେ.", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("ମ\u{b3e}ସ", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("ମ\u{b3f}ନ\u{b3f}ଟ\u{b4d}\u{200c}", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ଘଣ\u{b4d}ଟ\u{b3e}", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -4868,36 +5103,49 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Pl => Entry { timeago_tokens: ::phf::Map { - key: 15467950696543387533, + key: 14108922650502679131, disps: &[ - (1, 0), - (1, 20), - (0, 16), - (6, 15), - (9, 5), + (0, 30), + (3, 11), + (1, 6), + (0, 0), + (7, 0), + (10, 5), + (26, 5), ], entries: &[ - ("sekundę", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("lat", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("rok", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("sekund", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("miesiące", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("miesięcy", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("minut", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("minuta", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("minuty", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("tydzień", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("minutę", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("sekundy", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("godzin", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("tygodnie", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("miesiące", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("godziny", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("miesięcy", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("miesiąc", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("tygodnia", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("dzień", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("tydz.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("tygodnie", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("minutę", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("sekundę", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("minuty", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("sekunda", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("lat", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("mies.", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("min", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("lata", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("roku", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("rok", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("minut", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("sekund", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("dni", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("godzinę", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("godziny", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("miesiąc", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("lata", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("sekundy", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("miesiąca", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("sek.", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("godz.", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("godzin", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("dnia", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("tydzień", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("tyg.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("tygodni", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -4970,27 +5218,32 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Pt => Entry { timeago_tokens: ::phf::Map { - key: 10121458955350035957, + key: 14108922650502679131, disps: &[ - (6, 9), + (1, 13), + (0, 14), (0, 0), - (2, 6), + (3, 17), ], entries: &[ - ("segundos", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("dia", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("ano", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("meses", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("anos", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("minuto", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("semana", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("mês", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("hora", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("semanas", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("segundo", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("seg.", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("minutos", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("horas", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("mês", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("ano", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("dia", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("sem.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("segundo", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("semana", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("anos", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("minuto", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("segundos", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("dias", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("h", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("meses", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("min.", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("semanas", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -5063,27 +5316,32 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::PtPt => Entry { timeago_tokens: ::phf::Map { - key: 10121458955350035957, + key: 7485420634051515786, disps: &[ - (6, 9), - (0, 0), - (2, 6), + (4, 15), + (0, 5), + (2, 0), + (2, 1), ], entries: &[ - ("segundos", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("dia", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("ano", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("meses", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("anos", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("minuto", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("semana", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("hora", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("semanas", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("segundo", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("minutos", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("horas", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("segundos", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("minuto", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("s", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("sem.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("semanas", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("mês", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("hora", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("h", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("meses", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("ano", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("segundo", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("dias", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("semana", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("min", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("anos", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("horas", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("dia", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], @@ -5139,27 +5397,32 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Ro => Entry { timeago_tokens: ::phf::Map { - key: 14108922650502679131, + key: 15467950696543387533, disps: &[ - (0, 0), - (4, 2), (0, 6), + (3, 2), + (12, 4), + (4, 0), ], entries: &[ + ("sec.", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("min.", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("lună", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("săptămână", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("luni", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("oră", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("an", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("lună", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("ani", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("minute", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("zi", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("săptămâni", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("secunde", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("săpt.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("h", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ore", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("minut", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ani", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("oră", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("minute", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("zile", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("secundă", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("minut", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("săptămâni", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("zi", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("ore", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -5234,35 +5497,46 @@ pub(crate) fn entry(lang: Language) -> Entry { timeago_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (2, 0), - (0, 18), - (0, 9), - (7, 3), - (16, 13), + (25, 1), + (0, 0), + (0, 12), + (3, 1), + (5, 14), + (0, 1), + (27, 10), ], entries: &[ + ("час", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("дн.", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("г.", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("минута", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("секунду", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("часа", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("года", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("дня", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("сек.", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("секунд", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("год", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("неделю", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("нед.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("дней", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("часов", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("секунда", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("ч", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("недель", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("месяц", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("минуту", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("мес.", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("л.", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("лет", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("минут", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("мин.", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("недели", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("месяца", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("месяц", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("месяцев", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("дня", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("лет", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("секунды", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("минуты", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("день", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("года", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("секунду", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("секунда", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("секунд", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("неделю", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("дней", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("час", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("часа", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("минут", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("минуту", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("секунды", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("год", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("минута", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("часов", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("месяцев", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -5420,32 +5694,46 @@ pub(crate) fn entry(lang: Language) -> Entry { timeago_tokens: ::phf::Map { key: 15467950696543387533, disps: &[ + (0, 14), (0, 0), - (1, 8), - (1, 1), - (0, 17), + (0, 3), + (0, 5), + (5, 21), + (16, 5), + (4, 10), ], entries: &[ - ("minútou", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("sekundami", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("minút", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("týždňami", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("sekunda", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("sekundy", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("týždňom", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("mes.", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("mesiacmi", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("sekúnd", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("hodinami", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("hodinou", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("mesiacom", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("týž.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("dňa", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("s", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("h", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("sekundy", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("min", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("rokom", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("minútami", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("minúty", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("mesiacmi", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("dňom", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("dňami", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("sekundou", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("minúta", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("rokmi", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("mesiacom", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("roka", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("sekunda", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("týždňami", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("sekundami", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("minútami", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("minútou", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("dňom", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("minúty", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("týždňa", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("r.", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("dňami", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("d.", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("minúta", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("sekundou", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("minút", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("týždňom", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("mesiaca", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ], }, date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], @@ -5503,46 +5791,51 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Sl => Entry { timeago_tokens: ::phf::Map { - key: 12913932095322966823, + key: 14108922650502679131, disps: &[ - (1, 2), - (5, 22), - (2, 4), - (0, 22), - (13, 22), - (2, 0), + (7, 9), + (0, 0), + (0, 3), + (0, 11), + (7, 26), + (0, 6), + (1, 17), ], entries: &[ - ("sekund", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("tednom", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("dnem", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("dnevom", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("mesecema", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("minutami", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("sekundo", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("sekundama", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("dnevi", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("min.", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("sekunda", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("letom", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("sekundi", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("letoma", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("minutama", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("tedni", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("minuto", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ted.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("urama", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("dnevoma", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("sekunde", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("tednoma", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("s", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("minuta", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("meseci", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("minuti", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("minute", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("minuto", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("urami", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("minutami", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("dnevoma", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("sekundi", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("uro", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("dnevi", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("sekunda", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("mesecem", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("mesecema", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("minutama", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("sekundo", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("letoma", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("letom", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("tednom", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("urama", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("dnevom", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("mes.", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("tednoma", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("sekund", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("minut", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("minute", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("sekundami", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("tedni", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("urami", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("minuti", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("leti", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("sekundama", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("mesecem", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -5615,22 +5908,25 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Sq => Entry { timeago_tokens: ::phf::Map { - key: 471159234146692604, + key: 15467950696543387533, disps: &[ - (8, 0), - (1, 3), + (1, 7), + (3, 10), + (2, 0), ], entries: &[ - ("sekonda", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("orë", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("minuta", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("vit", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("ditë", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("muaj", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("sekonda", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("min", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("minuta", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("javë", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("sekondë", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("vit", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ("minutë", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("sekondë", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("sek", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("vjet", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("ditë", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("orë", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -5703,32 +5999,36 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Sr => Entry { timeago_tokens: ::phf::Map { - key: 14108922650502679131, + key: 12913932095322966823, disps: &[ - (16, 6), - (3, 0), - (14, 6), - (5, 13), + (1, 20), + (7, 11), + (5, 0), + (2, 5), + (1, 13), ], entries: &[ - ("секунде", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("дана", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("мин.", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("минут", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("секунда", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("секунди", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("месеца", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("недеље", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("година", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("дана", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("недеља", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("сати", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("сат", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("месеци", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("недељу", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("дан", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("месец", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("године", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ("минута", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("годину", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("нед.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("година", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("недеље", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("сата", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("секунде", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("месеца", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("секунди", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("године", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("д.", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("месеци", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("мес.", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("год.", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("сек.", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("ч.", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], @@ -5786,31 +6086,34 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::SrLatn => Entry { timeago_tokens: ::phf::Map { - key: 12913932095322966823, + key: 15467950696543387533, disps: &[ - (3, 0), - (2, 9), - (1, 4), (0, 0), + (4, 16), + (1, 12), + (4, 19), + (2, 15), ], entries: &[ - ("dan", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("sekunda", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("nedelju", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("godina", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("godine", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("mesec", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("minut", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("nedelje", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("sekunde", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("meseci", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("minuta", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("sat", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("meseca", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("dana", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("godinu", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("sekundi", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("minut", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("god.", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("minuta", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("nedelje", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("meseci", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("sek.", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("d.", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("sata", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("min.", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("godine", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("mes.", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("ned.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("godina", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("sekunde", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("č.", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("sekundi", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("dana", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("sekunda", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("sati", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("nedelja", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], @@ -5870,26 +6173,33 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Sv => Entry { timeago_tokens: ::phf::Map { - key: 15467950696543387533, + key: 12213676231523076107, disps: &[ - (2, 11), - (2, 0), - (9, 1), + (9, 3), + (6, 13), + (8, 17), + (1, 0), ], entries: &[ - ("år", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("månader", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("timmar", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("dagar", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("vecka", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("sekund", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("månad", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("veckor", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("minut", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("dag", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("timme", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("minuter", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("min", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("månader", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("mån.", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("sekunder", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("tim", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("sekund", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("vecka", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("s", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("månad", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("dagar", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("v.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("minuter", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("år", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("veckor", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("timme", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("timmar", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("d", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -6048,31 +6358,37 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Ta => Entry { timeago_tokens: ::phf::Map { - key: 8694567506910003252, + key: 12913932095322966823, disps: &[ - (5, 3), - (2, 13), - (11, 0), - (1, 10), + (0, 6), + (3, 0), + (20, 14), + (4, 0), + (5, 17), ], entries: &[ - ("விந\u{bbe}டிகள\u{bcd}", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("ம\u{bbe}தத\u{bcd}துக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("நிமிடத\u{bcd}திற\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("விந\u{bbe}டிகளுக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("நிமிடங\u{bcd}களுக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("ஆண\u{bcd}டிற\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("நிமிடங\u{bcd}கள\u{bcd}", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("வ\u{bbe}ரங\u{bcd}களுக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("விந\u{bbe}டி", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("வ\u{bbe}ரத\u{bcd}திற\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("ஆண\u{bcd}டுகளுக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("ம\u{bbe}தங\u{bcd}களுக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("ந\u{bbe}ளுக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("வ\u{bbe}ரம\u{bcd}", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("மணிநேரம\u{bcd}", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("ந\u{bbe}ட\u{bcd}களுக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("வ\u{bbe}ரங\u{bcd}களுக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("நிமி.", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("நிமிடம\u{bcd}", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("நிமிடத\u{bcd}திற\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("நிமிடங\u{bcd}கள\u{bcd}", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ந\u{bbe}ளுக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("விந\u{bbe}டிகளுக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("விந\u{bbe}.", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("ஆண\u{bcd}டிற\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("மணிநேரம\u{bcd}", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("விந\u{bbe}டிகள\u{bcd}", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("ம\u{bbe}த.", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("விந\u{bbe}டிக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("ந\u{bbe}ட\u{bcd}களுக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("விந\u{bbe}டி", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("ம\u{bbe}தத\u{bcd}துக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("நிமிடங\u{bcd}களுக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("வ\u{bbe}ர.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("மணி.", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ம\u{bbe}தங\u{bcd}களுக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -6144,30 +6460,34 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Te => Entry { timeago_tokens: ::phf::Map { - key: 15467950696543387533, + key: 8694567506910003252, disps: &[ - (1, 4), - (1, 0), - (5, 0), - (9, 14), + (0, 0), + (2, 16), + (1, 2), + (3, 18), ], entries: &[ - ("వ\u{c3e}రం", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("ర\u{c4b}జుల", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("గంట", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("వ\u{c3e}ర\u{c3e}ల", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("సంవత\u{c4d}సర\u{c3e}ల", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("స\u{c46}కన\u{c4d}ల", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("న\u{c3f}మ\u{c3f}షం", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("ర\u{c4b}జు", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("న\u{c46}ల", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("స\u{c46}కన\u{c4d}లు", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("సంవత\u{c4d}సరం", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("న\u{c3f}మ\u{c3f}ష\u{c3e}లు", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("స\u{c46}కను", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("స\u{c46}క.", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("గంటల", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("న\u{c3f}మ\u{c3f}ష\u{c3e}ల", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("న\u{c3f}మ\u{c3f}ష\u{c3e}లు", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("న\u{c46}ల", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("గం.", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("సం.", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("స\u{c46}కన\u{c4d}ల", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("ర\u{c4b}జుల", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("స\u{c46}కను", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("సంవత\u{c4d}సరం", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ("న\u{c46}లల", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("న\u{c3f}మ\u{c3f}.", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("గంట", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("సంవత\u{c4d}సర\u{c3e}ల", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("ర\u{c4b}జు", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("వ\u{c3e}రం", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("వ\u{c3e}ర\u{c3e}ల", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("న\u{c3f}మ\u{c3f}ష\u{c3e}ల", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("స\u{c46}కన\u{c4d}లు", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("న\u{c3f}మ\u{c3f}షం", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -6240,22 +6560,30 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Th => Entry { timeago_tokens: ::phf::Map { - key: 12913932095322966823, + key: 8694567506910003252, disps: &[ + (0, 4), (0, 0), - (8, 2), + (5, 14), + (0, 15), ], entries: &[ - ("ส\u{e31}ปดาห\u{e4c}ท\u{e35}\u{e48}ผ\u{e48}านมา", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("ว\u{e34}นาท\u{e35}", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("ช\u{e31}\u{e48}วโมงท\u{e35}\u{e48}ผ\u{e48}านมา", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ท\u{e35}\u{e48}แล\u{e49}ว", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("นาท\u{e35}ท\u{e35}\u{e48}ผ\u{e48}านมา", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("นาท\u{e35}ท\u{e35}\u{e48}แล\u{e49}ว", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ชม.", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ว\u{e34}นาท\u{e35}", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("นาท\u{e35}", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("ว\u{e31}นท\u{e35}\u{e48}ผ\u{e48}านมา", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ว\u{e34}นาท\u{e35}ท\u{e35}\u{e48}ผ\u{e48}านมา", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("ว\u{e34}นาท\u{e35}ท\u{e35}\u{e48}แล\u{e49}ว", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("ส\u{e31}ปดาห\u{e4c}ท\u{e35}\u{e48}แล\u{e49}ว", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("ป\u{e35}ท\u{e35}\u{e48}แล\u{e49}ว", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("เด\u{e37}อนท\u{e35}\u{e48}แล\u{e49}ว", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("ส\u{e31}ปดาห\u{e4c}ท\u{e35}\u{e48}ผ\u{e48}านมา", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("ว\u{e31}นท\u{e35}\u{e48}แล\u{e49}ว", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("เด\u{e37}อนท\u{e35}\u{e48}ผ\u{e48}านมา", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("ว\u{e34}นาท\u{e35}ท\u{e35}\u{e48}ผ\u{e48}านมา", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("ช\u{e31}\u{e48}วโมงท\u{e35}\u{e48}ผ\u{e48}านมา", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -6332,19 +6660,24 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Tr => Entry { timeago_tokens: ::phf::Map { - key: 12913932095322966823, + key: 7485420634051515786, disps: &[ - (6, 0), - (0, 6), + (4, 4), + (1, 0), + (2, 3), ], entries: &[ - ("gün", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("hafta", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("saat", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("yıl", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("hf.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("ay", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("dakika", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("hafta", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("saniye", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("dk.", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("yıl", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("sn.", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("sa.", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("gün", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -6417,37 +6750,51 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Uk => Entry { timeago_tokens: ::phf::Map { - key: 12913932095322966823, + key: 8694567506910003252, disps: &[ - (1, 19), - (10, 3), - (15, 2), - (0, 9), + (0, 23), + (9, 17), (0, 0), + (25, 6), + (13, 19), + (1, 11), + (1, 24), ], entries: &[ ("тиждень", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("тижні", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("місяць", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("днів", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("рік", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ("секунду", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("секунди", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("секунда", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("хвилини", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("хвилина", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("тижня", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("місяць", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("р.", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ("місяці", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("години", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("секунд", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("роки", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("хвилину", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("годин", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("день", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("місяців", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("хвилина", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("годину", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("с", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("день", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("годин", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("рік", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("секунд", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("року", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("години", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("днів", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("хвилини", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("тижні", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("місяців", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("дн.", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("секунда", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("років", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("дні", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("секунди", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("хвилину", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("тижнів", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("хв", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("год", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("хвилин", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("дні", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("роки", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("місяця", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("дня", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("міс.", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("тиж.", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -6520,27 +6867,28 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Ur => Entry { timeago_tokens: ::phf::Map { - key: 12213676231523076107, + key: 4066803471364472071, disps: &[ - (11, 7), - (0, 10), - (1, 0), + (14, 4), + (2, 0), + (1, 6), ], entries: &[ - ("منٹ", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("ہفتے", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("ہفتہ", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("منٹ،", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("گھنٹے", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("مہینے", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("سال", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("سیکنڈز", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("گھنٹے", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("منٹ،", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("گھنٹہ", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ماہ", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("دن", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ہفتے", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("مہینہ", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("منٹس", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("منٹ", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("سیکنڈ", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("دنوں", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("منٹس", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("مہینہ", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("گھنٹہ", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("مہینے", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("سیکنڈز", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], @@ -6697,20 +7045,19 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Vi => Entry { timeago_tokens: ::phf::Map { - key: 10121458955350035957, + key: 15467950696543387533, disps: &[ - (7, 3), - (7, 0), + (2, 3), + (1, 0), ], entries: &[ ("giờ", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("ngày", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("tuần", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ("giây", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("năm", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("tiếng", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ngày", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("tháng", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("phút", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("năm", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("tuần", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], @@ -6792,11 +7139,11 @@ pub(crate) fn entry(lang: Language) -> Entry { timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (0, 0), + (1, 0), ], entries: &[ - ("日", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("今", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("昨", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, comma_decimal: false, @@ -6862,11 +7209,11 @@ pub(crate) fn entry(lang: Language) -> Entry { timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (0, 0), + (1, 0), ], entries: &[ - ("天", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("今", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("昨", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, comma_decimal: false, @@ -6929,11 +7276,11 @@ pub(crate) fn entry(lang: Language) -> Entry { timeago_nd_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ - (0, 0), + (1, 0), ], entries: &[ - ("天", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("今", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("昨", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, comma_decimal: false, @@ -6970,27 +7317,38 @@ pub(crate) fn entry(lang: Language) -> Entry { }, Language::Zu => Entry { timeago_tokens: ::phf::Map { - key: 8694567506910003252, + key: 106375038446233661, disps: &[ - (1, 8), - (0, 0), - (11, 4), + (0, 13), + (7, 20), + (6, 13), + (1, 0), + (21, 18), ], entries: &[ - ("emahoreni", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("iviki", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("amasekhondi", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("izinyanga", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("iminithi", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("ezinsukwini", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("osukwini", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("amaminithi", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("unyaka", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("iminyaka", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("ezedlule.", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("inyanga", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("isekhondi", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("ihora", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("amaviki", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("osukwini", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ezingu", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("elingu", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("usuku", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("izinsuku", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("odlule", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("olungu", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("unyaka", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("amasekhondi", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("ezinsukwini", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("isekhondi", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("izinyanga", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("iviki", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("evikini", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("olwedlule", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("iminithi", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("amaminithi", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("iminyaka", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("emahoreni", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ihora", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, date_order: &[DateCmp::D, DateCmp::Y], diff --git a/src/util/mod.rs b/src/util/mod.rs index a16b68c..5f05ae4 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -26,7 +26,7 @@ pub static VIDEO_ID_REGEX: Lazy = Lazy::new(|| Regex::new(r"^[A-Za-z0-9_- pub static CHANNEL_ID_REGEX: Lazy = Lazy::new(|| Regex::new(r"^UC[A-Za-z0-9_-]{22}$").unwrap()); pub static PLAYLIST_ID_REGEX: Lazy = - Lazy::new(|| Regex::new(r"^(?:PL|RDCLAK|OLAK|UU)[A-Za-z0-9_-]{16,50}$").unwrap()); + Lazy::new(|| Regex::new(r"^(?:PL|RD|OLAK|UU)[A-Za-z0-9_-]{16,50}$").unwrap()); pub static ALBUM_ID_REGEX: Lazy = Lazy::new(|| Regex::new(r"^MPREb_[A-Za-z0-9_-]{11}$").unwrap()); pub static VANITY_PATH_REGEX: Lazy = Lazy::new(|| { @@ -128,7 +128,35 @@ where buf.parse() } -/// Parse all numbers occurring in a string and reurn them as a vec +/// Parse a string after removing all non-numeric characters. +/// +/// If the string contains multiple numbers, it returns the product of them. +pub fn parse_numeric_prod(string: &str) -> Option +where + F: FromStr + Copy + std::ops::Mul, +{ + let mut n = None; + let mut buf = String::new(); + + for c in string.chars() { + if c.is_ascii_digit() { + buf.push(c); + } else if !buf.is_empty() { + if let Ok(x) = buf.parse::() { + n = n.map(|n| n * x).or(Some(x)); + } + buf.clear(); + } + } + if !buf.is_empty() { + if let Ok(x) = buf.parse::() { + n = n.map(|n| n * x).or(Some(x)); + } + } + n +} + +/// Parse all numbers occurring in a string and return them as a vec pub fn parse_numeric_vec(string: &str) -> Vec where F: FromStr, diff --git a/src/util/timeago.rs b/src/util/timeago.rs index 8f9cebd..5c90b16 100644 --- a/src/util/timeago.rs +++ b/src/util/timeago.rs @@ -199,7 +199,20 @@ pub fn parse_timeago(lang: Language, textual_date: &str) -> Option { let entry = dictionary::entry(lang); let filtered_str = filter_str(textual_date); - let qu: u8 = util::parse_numeric(textual_date).unwrap_or(1); + let qu: u8 = util::parse_numeric_prod(textual_date).unwrap_or(1); + + // French uses 'a' as a short form of years. + // Since 'a' is also a word in French, it cannot be parsed as a token. + if matches!( + lang, + Language::Fr | Language::FrCa | Language::Es | Language::Es419 | Language::EsUs + ) && textual_date.ends_with(" a") + { + return Some(TimeAgo { + n: qu, + unit: TimeUnit::Year, + }); + } TaTokenParser::new(&entry, util::lang_by_char(lang), false, &filtered_str) .next() @@ -403,10 +416,10 @@ mod tests { use crate::util::tests::TESTFILES; #[rstest] - #[case(Language::De, "vor 1 Sekunde", Some(TimeAgo { n: 1, unit: TimeUnit::Second }))] - #[case(Language::Ar, "قبل ساعة واحدة", Some(TimeAgo { n: 1, unit: TimeUnit::Hour }))] + #[case::de(Language::De, "vor 1 Sekunde", Some(TimeAgo { n: 1, unit: TimeUnit::Second }))] + #[case::ar(Language::Ar, "قبل ساعة واحدة", Some(TimeAgo { n: 1, unit: TimeUnit::Hour }))] // No-break space - #[case(Language::De, "Vor 3\u{a0}Tagen aktualisiert", Some(TimeAgo { n: 3, unit: TimeUnit::Day }))] + #[case::nbsp(Language::De, "Vor 3\u{a0}Tagen aktualisiert", Some(TimeAgo { n: 3, unit: TimeUnit::Day }))] fn t_parse( #[case] lang: Language, #[case] textual_date: &str, @@ -581,7 +594,196 @@ mod tests { assert_eq!( parse_timeago(*lang, s), Some(expect[n]), - "Language: {lang}, n: {n}" + "Language: {lang}, txt: `{s}`" + ); + }); + }) + } + + #[test] + fn t_testfile_short() { + let json_path = path!(*TESTFILES / "dict" / "timeago_samples_short.json"); + + let expect = [ + TimeAgo { + n: 35, + unit: TimeUnit::Minute, + }, + TimeAgo { + n: 50, + unit: TimeUnit::Minute, + }, + TimeAgo { + n: 1, + unit: TimeUnit::Hour, + }, + TimeAgo { + n: 2, + unit: TimeUnit::Hour, + }, + TimeAgo { + n: 3, + unit: TimeUnit::Hour, + }, + TimeAgo { + n: 4, + unit: TimeUnit::Hour, + }, + TimeAgo { + n: 5, + unit: TimeUnit::Hour, + }, + TimeAgo { + n: 6, + unit: TimeUnit::Hour, + }, + TimeAgo { + n: 7, + unit: TimeUnit::Hour, + }, + TimeAgo { + n: 8, + unit: TimeUnit::Hour, + }, + TimeAgo { + n: 9, + unit: TimeUnit::Hour, + }, + TimeAgo { + n: 12, + unit: TimeUnit::Hour, + }, + TimeAgo { + n: 17, + unit: TimeUnit::Hour, + }, + TimeAgo { + n: 18, + unit: TimeUnit::Hour, + }, + TimeAgo { + n: 19, + unit: TimeUnit::Hour, + }, + TimeAgo { + n: 20, + unit: TimeUnit::Hour, + }, + TimeAgo { + n: 10, + unit: TimeUnit::Hour, + }, + TimeAgo { + n: 11, + unit: TimeUnit::Hour, + }, + TimeAgo { + n: 13, + unit: TimeUnit::Hour, + }, + TimeAgo { + n: 1, + unit: TimeUnit::Day, + }, + TimeAgo { + n: 2, + unit: TimeUnit::Day, + }, + TimeAgo { + n: 3, + unit: TimeUnit::Day, + }, + TimeAgo { + n: 4, + unit: TimeUnit::Day, + }, + TimeAgo { + n: 6, + unit: TimeUnit::Day, + }, + TimeAgo { + n: 8, + unit: TimeUnit::Day, + }, + TimeAgo { + n: 10, + unit: TimeUnit::Day, + }, + TimeAgo { + n: 11, + unit: TimeUnit::Day, + }, + TimeAgo { + n: 12, + unit: TimeUnit::Day, + }, + TimeAgo { + n: 13, + unit: TimeUnit::Day, + }, + TimeAgo { + n: 2, + unit: TimeUnit::Week, + }, + TimeAgo { + n: 3, + unit: TimeUnit::Week, + }, + TimeAgo { + n: 1, + unit: TimeUnit::Month, + }, + TimeAgo { + n: 4, + unit: TimeUnit::Week, + }, + TimeAgo { + n: 7, + unit: TimeUnit::Month, + }, + TimeAgo { + n: 10, + unit: TimeUnit::Month, + }, + TimeAgo { + n: 1, + unit: TimeUnit::Year, + }, + TimeAgo { + n: 2, + unit: TimeUnit::Year, + }, + TimeAgo { + n: 3, + unit: TimeUnit::Year, + }, + TimeAgo { + n: 4, + unit: TimeUnit::Year, + }, + TimeAgo { + n: 5, + unit: TimeUnit::Year, + }, + ]; + + let json_file = File::open(json_path).unwrap(); + let strings_map: BTreeMap> = + serde_json::from_reader(BufReader::new(json_file)).unwrap(); + + strings_map.iter().for_each(|(lang, strings)| { + assert_eq!(strings.len(), expect.len(), "Language: {lang}"); + strings.iter().enumerate().for_each(|(n, s)| { + let mut exp = expect[n]; + if *lang == Language::Mn && exp.unit == TimeUnit::Week { + exp.unit = TimeUnit::Day; + exp.n *= 7; + } + + assert_eq!( + parse_timeago(*lang, s), + Some(exp), + "Language: {lang}, txt: `{s}`" ); }); }) diff --git a/testfiles/dict/cldr_data/.gitignore b/testfiles/dict/cldr_data/.gitignore new file mode 100644 index 0000000..d5f19d8 --- /dev/null +++ b/testfiles/dict/cldr_data/.gitignore @@ -0,0 +1,2 @@ +node_modules +package-lock.json diff --git a/testfiles/dict/cldr_data/collect_ta_tokens.js b/testfiles/dict/cldr_data/collect_ta_tokens.js new file mode 100644 index 0000000..57ee3c7 --- /dev/null +++ b/testfiles/dict/cldr_data/collect_ta_tokens.js @@ -0,0 +1,162 @@ +const fs = require("fs"); + +const DICT_PATH = "../dictionary.json"; + +function translateLang(lang) { + switch (lang) { + case "iw": // Hebrew + return "he"; + case "zh-CN": // Simplified Chinese + return "zh-Hans"; + case "zh-HK": + return "zh-Hant-HK"; + case "zh-TW": + return "zh-Hant"; + default: + return lang; + } +} + +function prepString(s, by_char) { + const replaced = s.toLowerCase().replace("{0}", "").replace("-", " "); + if (by_char) { + return replaced.replace(/\s/, "").split(""); + } else { + return replaced.split(/\s+/); + } +} + +function storeToken(tokens, word, unit) { + if (word) { + if (word in tokens && tokens[word] != unit) { + tokens[word] = null; + } else { + tokens[word] = unit; + } + } +} + +function validateTokens(tokens, lang) { + const units = { Y: 1, M: 1, W: 1, D: 1, h: 1, m: 1, s: 1 }; + + if (lang === "iw") { + tokens["שתי"] = "2"; + } + + for (const [key, val] of Object.entries(tokens)) { + if (val === null) { + delete tokens[key]; + } else { + delete units[val]; + } + } + if (Object.keys(units).length > 0) { + console.log( + `missing units ${JSON.stringify( + Object.keys(units) + )} for lang: ${lang}; tokens: ${JSON.stringify(tokens)}` + ); + } +} + +function validateNdTokens(tokens, lang) { + const units = { "0D": 1, "1D": 1 }; + + for (const [key, val] of Object.entries(tokens)) { + if (val === null) { + delete tokens[key]; + } else { + delete units[val]; + } + } + + if (Object.keys(units).length > 0) { + console.log( + `missing nd tokens ${JSON.stringify( + Object.keys(units) + )} for lang: ${lang}; tokens: ${JSON.stringify(tokens)}` + ); + } else if (Object.keys(tokens).length > 2) { + console.log( + `too many nd tokens for lang: ${lang}; tokens: ${JSON.stringify(tokens)}` + ); + } +} + +const sortObject = (obj) => + Object.keys(obj) + .sort() + .reduce((res, key) => ((res[key] = obj[key]), res), {}); + +function collectTimeago(lang, by_char, timeagoTokens, timeagoNdTokens) { + const cldrLang = translateLang(lang); + const dates = require(`cldr-dates-modern/main/${cldrLang}/dateFields.json`); + const dateFields = dates.main[cldrLang].dates.fields; + + for (const [unitStr, unit] of Object.entries(units)) { + for (const unitFields of [dateFields[unitStr], dateFields[`${unitStr}-short`]]) { + for (const [sKey, s] of Object.entries(unitFields["relativeTime-type-past"])) { + let u = unit; + if (s.indexOf("{0}") === -1) { + if (sKey.endsWith("-zero")) { + u = "0" + u; + } else if (sKey.endsWith("-one")) { + u = "1" + u; + } else if (sKey.endsWith("-two")) { + u = "2" + u; + } else { + throw new Error(`Invalid time pattern. lang: ${lang} key: ${sKey}`); + } + } + + const words = prepString(s, by_char); + for (const word of words) { + storeToken(timeagoTokens, word, u); + } + } + } + } + + if (dateFields.day["relative-type-0"]) { + const words = prepString(dateFields.day["relative-type-0"], by_char); + for (const word of words) { + storeToken(timeagoNdTokens, word, "0D"); + } + } + if (dateFields.day["relative-type--1"]) { + const words = prepString(dateFields.day["relative-type--1"], by_char); + for (const word of words) { + storeToken(timeagoNdTokens, word, "1D"); + } + } +} + +const dict = JSON.parse(fs.readFileSync(DICT_PATH)); + +const units = { + second: "s", + minute: "m", + hour: "h", + day: "D", + week: "W", + month: "M", + year: "Y", +}; + +for (const [mainLang, entry] of Object.entries(dict)) { + const langs = [mainLang, ...entry["equivalent"]]; + + const timeagoTokens = {}; + const timeagoNdTokens = {}; + + for (lang of langs) { + collectTimeago(lang, entry["by_char"], timeagoTokens, timeagoNdTokens); + } + validateTokens(timeagoTokens, mainLang); + // validateNdTokens(timeagoNdTokens, mainLang); + + dict[mainLang]["timeago_tokens"] = timeagoTokens; + // dict[mainLang]["timeago_nd_tokens"] = timeagoNdTokens; +} + +fs.writeFileSync(DICT_PATH, JSON.stringify(dict, null, 2)); diff --git a/testfiles/dict/cldr_data/package.json b/testfiles/dict/cldr_data/package.json new file mode 100644 index 0000000..18d5cae --- /dev/null +++ b/testfiles/dict/cldr_data/package.json @@ -0,0 +1,12 @@ +{ + "name": "cldr_data", + "version": "1.0.0", + "description": "Build the RustyPipe parsing dictionary using CLDR data", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "dependencies": { + "cldr-dates-modern": "^43.0.0", + "cldr-numbers-modern": "^43.0.0" + } +} diff --git a/testfiles/dict/dictionary.json b/testfiles/dict/dictionary.json index 6bca334..9f71cb2 100644 --- a/testfiles/dict/dictionary.json +++ b/testfiles/dict/dictionary.json @@ -3,19 +3,24 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "dae": "D", - "dag": "D", - "jaar": "Y", - "maand": "M", - "maande": "M", - "minute": "m", - "minuut": "m", "sekonde": "s", "sekondes": "s", - "ure": "h", + "s.": "s", + "minuut": "m", + "minute": "m", + "min.": "m", "uur": "h", + "u.": "h", + "dag": "D", + "dae": "D", "week": "W", - "weke": "W" + "weke": "W", + "w.": "W", + "maand": "M", + "maande": "M", + "md.": "M", + "jaar": "Y", + "j.": "Y" }, "date_order": "DY", "months": { @@ -33,8 +38,8 @@ "sep.": 9 }, "timeago_nd_tokens": { - "gister": "1D", - "vandag": "0D" + "vandag": "0D", + "gister": "1D" }, "comma_decimal": true, "number_tokens": { @@ -58,20 +63,21 @@ "timeago_tokens": { "ሰከንድ": "s", "ሰከንዶች": "s", - "ሰዓት": "h", - "ሰዓቶች": "h", - "ሳምንታት": "W", - "ሳምንት": "W", - "ቀናት": "D", - "ቀን": "D", - "ወራት": "M", - "ወር": "M", - "ዓመታት": "Y", - "ዓመት": "Y", "ደቂቃ": "m", + "ደቂቃ፣": "m", "ደቂቃዎች": "m", "ደቂቃዎች፣": "m", - "ደቂቃ፣": "m" + "ሰዓት": "h", + "ሰዓቶች": "h", + "ቀን": "D", + "ቀናት": "D", + "ቀኖች": "D", + "ሳምንት": "W", + "ሳምንታት": "W", + "ወር": "M", + "ወራት": "M", + "ዓመት": "Y", + "ዓመታት": "Y" }, "date_order": "DY", "months": { @@ -89,8 +95,8 @@ "ፌብሩ": 2 }, "timeago_nd_tokens": { - "ትላንት": "1D", - "ዛሬ": "0D" + "ዛሬ": "0D", + "ትላንት": "1D" }, "comma_decimal": false, "number_tokens": { @@ -113,40 +119,42 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "أسابيع": "W", - "أسبوع": "W", - "أسبوعين": "2W", - "أشهر": "M", - "أيام": "D", "ثانية": "s", - "ثانيتين": "2s", - "ثوان": "s", - "ثوانٍ": "s", "ثوانِ": "s", + "ثوانٍ": "s", + "ثوان": "s", + "ثانيتين": "2s", + "وثانيتان": "2s", "دقائق": "m", "دقيقة": "m", "دقيقتان": "2m", "دقيقتين": "2m", + "ساعتين": "2h", "ساعات": "h", "ساعة": "h", - "ساعتين": "2h", - "سنة": "Y", + "يومين": "2D", + "أيام": "D", + "يومًا": "D", + "يوم": "D", + "أسبوعين": "2W", + "أسابيع": "W", + "أسبوعًا": "W", + "أسبوع": "W", + "شهرين": "2M", + "أشهر": "M", + "شهرًا": "M", + "خلال": "M", + "شهر": "M", "سنتين": "2Y", "سنوات": "Y", - "شهر": "M", - "شهرين": "2M", - "شهرًا": "M", - "وثانية": "s", - "وثانيتان": "2s", - "يوم": "D", - "يومين": "2D", - "يومًا": "D" + "سنة": "Y", + "وثانية": "s" }, "date_order": "DMY", "months": {}, "timeago_nd_tokens": { - "البارحة": "1D", - "اليوم": "0D" + "اليوم": "0D", + "البارحة": "1D" }, "comma_decimal": false, "number_tokens": { @@ -171,13 +179,13 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "ঘণ্টা": "h", "ছেকেণ্ড": "s", - "দিন": "D", - "বছৰৰ": "Y", - "মাহ": "M", "মিনিট": "m", - "সপ্তাহ": "W" + "ঘণ্টা": "h", + "দিন": "D", + "সপ্তাহ": "W", + "মাহ": "M", + "বছৰৰ": "Y" }, "date_order": "DMY", "months": {}, @@ -216,13 +224,13 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "ay": "M", + "saniyə": "s", "dəqiqə": "m", + "saat": "h", "gün": "D", "həftə": "W", - "il": "Y", - "saat": "h", - "saniyə": "s" + "ay": "M", + "il": "Y" }, "date_order": "DY", "months": { @@ -241,9 +249,7 @@ }, "timeago_nd_tokens": { "bugün": "0D", - "dünən": "1D", - "güncəlləndi": "1D", - "güncəllənib": "0D" + "dünən": "1D" }, "comma_decimal": true, "number_tokens": { @@ -265,32 +271,39 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "гадзін": "h", - "гадзіну": "h", - "гадзіны": "h", - "гадоў": "Y", - "гады": "Y", - "год": "Y", - "года": "Y", - "дзень": "D", - "дзён": "D", - "дня": "D", - "дні": "D", - "месяц": "M", - "месяца": "M", - "месяцаў": "M", - "месяцы": "M", - "секунд": "s", - "секунда": "s", "секунду": "s", "секунды": "s", - "тыдзень": "W", - "тыдня": "W", - "тыдні": "W", + "секунд": "s", + "секунда": "s", + "с": "s", + "хвіліну": "m", + "хвіліны": "m", "хвілін": "m", "хвіліна": "m", - "хвіліну": "m", - "хвіліны": "m" + "хв": "m", + "гадзіну": "h", + "гадзіны": "h", + "гадзін": "h", + "гадз": "h", + "дзень": "D", + "дні": "D", + "дзён": "D", + "дня": "D", + "тыдзень": "W", + "тыдні": "W", + "тыдняў": "W", + "тыдня": "W", + "тыд": "W", + "месяц": "M", + "месяцы": "M", + "месяцаў": "M", + "месяца": "M", + "мес.": "M", + "год": "Y", + "гады": "Y", + "гадоў": "Y", + "года": "Y", + "г.": "Y" }, "date_order": "DY", "months": { @@ -332,26 +345,32 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "година": "Y", - "години": "Y", - "ден": "D", - "дни": "D", - "месец": "M", - "месеца": "M", - "минута": "m", - "минути": "m", - "седмица": "W", - "седмици": "W", "секунда": "s", "секунди": "s", + "сек": "s", + "минута": "m", + "минути": "m", + "мин": "m", "час": "h", - "часа": "h" + "часа": "h", + "ч": "h", + "ден": "D", + "дни": "D", + "седмица": "W", + "седмици": "W", + "седм.": "W", + "месец": "M", + "месеца": "M", + "м.": "M", + "година": "Y", + "години": "Y", + "г.": "Y" }, "date_order": "DMY", "months": {}, "timeago_nd_tokens": { - "вчера": "1D", - "днес": "0D" + "днес": "0D", + "вчера": "1D" }, "comma_decimal": true, "number_tokens": { @@ -374,13 +393,13 @@ "equivalent": [], "by_char": false, "timeago_tokens": { + "সেকেন্ড": "s", + "মিনিট": "m", "ঘন্টা": "h", "দিন": "D", - "বছর": "Y", - "মাস": "M", - "মিনিট": "m", "সপ্তাহ": "W", - "সেকেন্ড": "s" + "মাস": "M", + "বছর": "Y" }, "date_order": "DY", "months": { @@ -427,26 +446,33 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "dan": "D", - "dana": "D", - "godina": "Y", - "godine": "Y", - "godinu": "Y", - "minuta": "m", - "minute": "m", + "sekundu": "s", + "sekunde": "s", + "sekundi": "s", + "sekunda": "s", + "sek.": "s", "minutu": "m", - "mjesec": "M", - "mjeseca": "M", - "mjeseci": "M", + "minute": "m", + "minuta": "m", + "min.": "m", "sat": "h", "sata": "h", "sati": "h", - "sedmice": "W", + "dan": "D", + "dana": "D", + "d.": "D", "sedmicu": "W", - "sekunda": "s", - "sekunde": "s", - "sekundi": "s", - "sekundu": "s" + "sedmice": "W", + "sedmica": "W", + "sed.": "W", + "mjesec": "M", + "mjeseca": "M", + "mjeseci": "M", + "mj.": "M", + "godinu": "Y", + "godine": "Y", + "godina": "Y", + "god.": "Y" }, "date_order": "DY", "months": { @@ -488,20 +514,24 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "any": "Y", - "anys": "Y", - "dia": "D", - "dies": "D", - "hora": "h", - "hores": "h", - "mes": "M", - "mesos": "M", - "minut": "m", - "minuts": "m", "segon": "s", "segons": "s", + "s": "s", + "minut": "m", + "minuts": "m", + "min": "m", + "hora": "h", + "hores": "h", + "h": "h", + "dia": "D", + "dies": "D", "setmana": "W", - "setmanes": "W" + "setmanes": "W", + "setm.": "W", + "mes": "M", + "mesos": "M", + "any": "Y", + "anys": "Y" }, "date_order": "DY", "months": { @@ -519,8 +549,8 @@ "set.": 9 }, "timeago_nd_tokens": { - "ahir": "1D", - "avui": "0D" + "avui": "0D", + "ahir": "1D" }, "comma_decimal": true, "number_tokens": { @@ -542,27 +572,39 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "dnem": "D", - "dny": "D", - "hodinami": "h", - "hodinou": "h", - "lety": "Y", - "minut": "m", - "minuta": "m", - "minutami": "m", - "minutou": "m", - "minuty": "m", - "měsícem": "M", - "měsíci": "M", - "rokem": "Y", - "roky": "Y", + "sekundou": "s", + "sekundami": "s", + "sekundy": "s", "sekund": "s", "sekunda": "s", - "sekundami": "s", - "sekundou": "s", - "sekundy": "s", + "s": "s", + "minutou": "m", + "minutami": "m", + "minuty": "m", + "minut": "m", + "minuta": "m", + "min": "m", + "hodinou": "h", + "hodinami": "h", + "hodiny": "h", + "h": "h", + "dnem": "D", + "dny": "D", + "dne": "D", "týdnem": "W", - "týdny": "W" + "týdny": "W", + "týdne": "W", + "týd.": "W", + "měsícem": "M", + "měsíci": "M", + "měsíce": "M", + "měs.": "M", + "rokem": "Y", + "lety": "Y", + "roku": "Y", + "roky": "Y", + "r.": "Y", + "l.": "Y" }, "date_order": "DMY", "months": {}, @@ -589,18 +631,22 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "dag": "D", - "dage": "D", - "minut": "m", - "minutter": "m", - "måned": "M", - "måneder": "M", "sekund": "s", "sekunder": "s", + "sek.": "s", + "minut": "m", + "minutter": "m", + "min.": "m", "time": "h", "timer": "h", + "dag": "D", + "dage": "D", "uge": "W", "uger": "W", + "måned": "M", + "måneder": "M", + "md.": "M", + "mdr.": "M", "år": "Y" }, "date_order": "DY", @@ -642,26 +688,29 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "jahr": "Y", - "jahren": "Y", - "minute": "m", - "minuten": "m", - "monat": "M", - "monaten": "M", "sekunde": "s", "sekunden": "s", + "sek.": "s", + "minute": "m", + "minuten": "m", + "min.": "m", "stunde": "h", "stunden": "h", + "std.": "h", "tag": "D", "tagen": "D", "woche": "W", - "wochen": "W" + "wochen": "W", + "monat": "M", + "monaten": "M", + "jahr": "Y", + "jahren": "Y" }, "date_order": "DMY", "months": {}, "timeago_nd_tokens": { - "gestern": "1D", - "heute": "0D" + "heute": "0D", + "gestern": "1D" }, "comma_decimal": true, "number_tokens": { @@ -683,20 +732,25 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "έτη": "Y", - "έτος": "Y", - "δευτερόλεπτα": "s", "δευτερόλεπτο": "s", - "εβδομάδα": "W", - "εβδομάδες": "W", + "δευτερόλεπτα": "s", + "δευτ.": "s", + "λεπτό": "m", + "λεπτά": "m", + "λεπ.": "m", + "ώρα": "h", + "ώρες": "h", + "ώ.": "h", "ημέρα": "D", "ημέρες": "D", - "λεπτά": "m", - "λεπτό": "m", + "ημ.": "D", + "εβδομάδα": "W", + "εβδομάδες": "W", + "εβδ.": "W", "μήνα": "M", "μήνες": "M", - "ώρα": "h", - "ώρες": "h" + "έτος": "Y", + "έτη": "Y" }, "date_order": "DY", "months": { @@ -735,26 +789,35 @@ } }, "en": { - "equivalent": [ - "en-GB", - "en-IN" - ], + "equivalent": ["en-GB", "en-IN"], "by_char": false, "timeago_tokens": { - "day": "D", - "days": "D", - "hour": "h", - "hours": "h", - "minute": "m", - "minutes": "m", - "month": "M", - "months": "M", "second": "s", "seconds": "s", + "sec": "s", + "s": "s", + "minute": "m", + "minutes": "m", + "min": "m", + "m": "m", + "hour": "h", + "hours": "h", + "hr": "h", + "h": "h", + "day": "D", + "days": "D", + "d": "D", "week": "W", "weeks": "W", + "wk": "W", + "w": "W", + "month": "M", + "months": "M", + "mo": "M", "year": "Y", - "years": "Y" + "years": "Y", + "yr": "Y", + "y": "Y" }, "date_order": "DY", "months": { @@ -798,20 +861,26 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "año": "Y", - "años": "Y", - "día": "D", - "días": "D", - "hora": "h", - "horas": "h", - "mes": "M", - "meses": "M", - "minuto": "m", - "minutos": "m", "segundo": "s", "segundos": "s", + "s": "s", + "minuto": "m", + "minutos": "m", + "min": "m", + "hora": "h", + "horas": "h", + "h": "h", + "día": "D", + "días": "D", + "d": "D", "semana": "W", - "semanas": "W" + "semanas": "W", + "sem.": "W", + "mes": "M", + "meses": "M", + "m": "M", + "año": "Y", + "años": "Y" }, "date_order": "DY", "months": { @@ -829,8 +898,8 @@ "sept": 9 }, "timeago_nd_tokens": { - "ayer": "1D", - "hoy": "0D" + "hoy": "0D", + "ayer": "1D" }, "comma_decimal": true, "number_tokens": { @@ -847,25 +916,28 @@ } }, "es-US": { - "equivalent": [ - "es-419" - ], + "equivalent": ["es-419"], "by_char": false, "timeago_tokens": { - "año": "Y", - "años": "Y", - "día": "D", - "días": "D", - "hora": "h", - "horas": "h", - "mes": "M", - "meses": "M", - "minuto": "m", - "minutos": "m", "segundo": "s", "segundos": "s", + "s": "s", + "minuto": "m", + "minutos": "m", + "min": "m", + "hora": "h", + "horas": "h", + "h": "h", + "día": "D", + "días": "D", "semana": "W", - "semanas": "W" + "semanas": "W", + "sem.": "W", + "mes": "M", + "meses": "M", + "m": "M", + "año": "Y", + "años": "Y" }, "date_order": "DY", "months": { @@ -883,8 +955,8 @@ "sept": 9 }, "timeago_nd_tokens": { - "ayer": "1D", - "hoy": "0D" + "hoy": "0D", + "ayer": "1D" }, "comma_decimal": false, "number_tokens": { @@ -906,22 +978,26 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "aasta": "Y", - "aastat": "Y", - "kuu": "M", - "kuud": "M", - "minut": "m", + "sekundi": "s", + "sekund": "s", + "sekundit": "s", + "sek": "s", "minuti": "m", + "minut": "m", "minutit": "m", - "nädal": "W", - "nädala": "W", - "nädalat": "W", + "min": "m", + "tunni": "h", + "t": "h", "päev": "D", "päeva": "D", - "sekund": "s", - "sekundi": "s", - "sekundit": "s", - "tunni": "h" + "p": "D", + "nädala": "W", + "nädal": "W", + "näd": "W", + "kuu": "M", + "kuud": "M", + "aasta": "Y", + "a": "Y" }, "date_order": "DY", "months": { @@ -939,8 +1015,8 @@ "veebr": 2 }, "timeago_nd_tokens": { - "eile": "1D", - "täna": "0D" + "täna": "0D", + "eile": "1D" }, "comma_decimal": true, "number_tokens": { @@ -963,16 +1039,13 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "aste": "W", - "astebete": "W", - "egun": "D", - "hilabete": "M", + "segundo": "s", "minutu": "m", "ordu": "h", - "ordubete": "h", - "segundo": "s", - "urte": "Y", - "urtebete": "Y" + "egun": "D", + "aste": "W", + "hilabete": "M", + "urte": "Y" }, "date_order": "YD", "months": { @@ -990,8 +1063,8 @@ "uzt.": 7 }, "timeago_nd_tokens": { - "atzo": "1D", - "gaur": "0D" + "gaur": "0D", + "atzo": "1D" }, "comma_decimal": true, "number_tokens": { @@ -1014,11 +1087,11 @@ "timeago_tokens": { "ثانیه": "s", "دقیقه": "m", - "روز": "D", "ساعت": "h", - "سال": "Y", + "روز": "D", + "هفته": "W", "ماه": "M", - "هفته": "W" + "سال": "Y" }, "date_order": "DY", "months": { @@ -1061,26 +1134,33 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "kuukausi": "M", - "kuukautta": "M", - "minuutti": "m", - "minuuttia": "m", - "päivä": "D", - "päivää": "D", "sekunti": "s", "sekuntia": "s", + "s": "s", + "minuutti": "m", + "minuuttia": "m", + "min": "m", "tunti": "h", "tuntia": "h", + "t": "h", + "päivä": "D", + "päivää": "D", + "pv": "D", "viikko": "W", "viikkoa": "W", + "vk": "W", + "kuukausi": "M", + "kuukautta": "M", + "kk": "M", "vuosi": "Y", - "vuotta": "Y" + "vuotta": "Y", + "v": "Y" }, "date_order": "DMY", "months": {}, "timeago_nd_tokens": { - "eilen": "1D", - "tänään": "0D" + "tänään": "0D", + "eilen": "1D" }, "comma_decimal": true, "number_tokens": { @@ -1104,12 +1184,14 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "araw": "D", - "buwan": "M", - "linggo": "W", - "minuto": "m", - "oras": "h", "segundo": "s", + "seg.": "s", + "minuto": "m", + "min.": "m", + "oras": "h", + "araw": "D", + "linggo": "W", + "buwan": "M", "taon": "Y" }, "date_order": "DY", @@ -1128,8 +1210,8 @@ "set": 9 }, "timeago_nd_tokens": { - "kahapon": "1D", - "ngayong": "0D" + "ngayong": "0D", + "kahapon": "1D" }, "comma_decimal": false, "number_tokens": { @@ -1148,24 +1230,28 @@ } }, "fr": { - "equivalent": [ - "fr-CA" - ], + "equivalent": ["fr-CA"], "by_char": false, "timeago_tokens": { - "an": "Y", - "ans": "Y", - "heure": "h", - "heures": "h", - "jour": "D", - "jours": "D", - "minute": "m", - "minutes": "m", - "mois": "M", "seconde": "s", "secondes": "s", + "s": "s", + "minute": "m", + "minutes": "m", + "min": "m", + "heure": "h", + "heures": "h", + "h": "h", + "jour": "D", + "jours": "D", + "j": "D", "semaine": "W", - "semaines": "W" + "semaines": "W", + "sem.": "W", + "mois": "M", + "m.": "M", + "an": "Y", + "ans": "Y" }, "date_order": "DY", "months": { @@ -1211,20 +1297,24 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "ano": "Y", - "anos": "Y", - "día": "D", - "días": "D", - "hora": "h", - "horas": "h", - "mes": "M", - "meses": "M", - "minuto": "m", - "minutos": "m", "segundo": "s", "segundos": "s", + "s": "s", + "minuto": "m", + "minutos": "m", + "min": "m", + "hora": "h", + "horas": "h", + "h": "h", + "día": "D", + "días": "D", "semana": "W", - "semanas": "W" + "semanas": "W", + "sem.": "W", + "mes": "M", + "meses": "M", + "ano": "Y", + "anos": "Y" }, "date_order": "DY", "months": { @@ -1264,13 +1354,14 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "અઠવાડિયા": "W", + "સેકંડ": "s", + "મિનિટ": "m", "કલાક": "h", "દિવસ": "D", + "અઠવાડિયા": "W", + "અઠ.": "W", "મહિના": "M", - "મિનિટ": "m", - "વર્ષ": "Y", - "સેકંડ": "s" + "વર્ષ": "Y" }, "date_order": "DY", "months": { @@ -1311,13 +1402,16 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "घंटे": "h", - "दिन": "D", - "माह": "M", + "सेकंड": "s", + "से॰": "s", "मिनट": "m", - "वर्ष": "Y", + "मि॰": "m", + "घंटे": "h", + "घं॰": "h", + "दिन": "D", "सप्ताह": "W", - "सेकंड": "s" + "माह": "M", + "वर्ष": "Y" }, "date_order": "DY", "months": { @@ -1360,26 +1454,33 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "dan": "D", - "dana": "D", - "godina": "Y", - "godine": "Y", - "godinu": "Y", - "minuta": "m", - "minute": "m", + "sekundu": "s", + "sekunde": "s", + "sekundi": "s", + "sekunda": "s", + "s": "s", "minutu": "m", - "mjesec": "M", - "mjeseca": "M", - "mjeseci": "M", + "minute": "m", + "minuta": "m", + "min": "m", "sat": "h", "sata": "h", "sati": "h", - "sekunda": "s", - "sekunde": "s", - "sekundi": "s", - "sekundu": "s", + "h": "h", + "dan": "D", + "dana": "D", "tjedan": "W", - "tjedna": "W" + "tjedna": "W", + "tjedana": "W", + "tj.": "W", + "mjesec": "M", + "mjeseca": "M", + "mjeseci": "M", + "mj.": "M", + "godinu": "Y", + "godine": "Y", + "godina": "Y", + "g.": "Y" }, "date_order": "DY", "months": { @@ -1421,22 +1522,22 @@ "equivalent": [], "by_char": false, "timeago_tokens": { + "másodperc": "s", + "másodperccel": "s", + "másodperce": "s", + "perc": "m", + "perccel": "m", + "perce": "m", + "órája": "h", + "órával": "h", + "napja": "D", + "nappal": "D", "hete": "W", "héttel": "W", "hónapja": "M", "hónappal": "M", - "másodperc": "s", - "másodperccel": "s", - "másodperce": "s", - "napja": "D", - "nappal": "D", - "perc": "m", - "perccel": "m", - "perce": "m", "éve": "Y", - "évvel": "Y", - "órája": "h", - "órával": "h" + "évvel": "Y" }, "date_order": "YD", "months": { @@ -1478,13 +1579,18 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "ամիս": "M", - "ժամ": "h", - "շաբաթ": "W", "վայրկյան": "s", - "տարի": "Y", + "վրկ": "s", "րոպե": "m", - "օր": "D" + "ր": "m", + "ժամ": "h", + "ժ": "h", + "օր": "D", + "շաբաթ": "W", + "շաբ": "W", + "ամիս": "M", + "տարի": "Y", + "տ": "Y" }, "date_order": "DY", "months": { @@ -1527,13 +1633,19 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "bulan": "M", "detik": "s", - "hari": "D", - "jam": "h", + "dtk": "s", "menit": "m", + "mnt": "m", + "jam": "h", + "hari": "D", + "h": "D", "minggu": "W", - "tahun": "Y" + "mgg": "W", + "bulan": "M", + "bln": "M", + "tahun": "Y", + "thn": "Y" }, "date_order": "DY", "months": { @@ -1575,22 +1687,26 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "degi": "D", - "dögum": "D", - "klukkustund": "h", - "klukkustundum": "h", - "mánuði": "M", - "mánuðum": "M", - "mínúta": "m", - "mínútu": "m", - "mínútum": "m", - "mínútur": "m", - "sekúnda": "s", "sekúndu": "s", "sekúndum": "s", + "sekúnda": "s", "sekúndur": "s", + "sek.": "s", + "mínútu": "m", + "mínútum": "m", + "mínúta": "m", + "mínútur": "m", + "mín.": "m", + "klukkustund": "h", + "klukkustundum": "h", + "klst.": "h", + "degi": "D", + "dögum": "D", "viku": "W", "vikum": "W", + "mánuði": "M", + "mánuðum": "M", + "mán.": "M", "ári": "Y", "árum": "Y" }, @@ -1636,20 +1752,26 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "anni": "Y", - "anno": "Y", - "giorni": "D", - "giorno": "D", - "mese": "M", - "mesi": "M", - "minuti": "m", + "secondo": "s", + "secondi": "s", + "sec.": "s", "minuto": "m", + "minuti": "m", + "min": "m", "ora": "h", "ore": "h", - "secondi": "s", - "secondo": "s", + "h": "h", + "giorno": "D", + "giorni": "D", + "g": "D", + "gg": "D", "settimana": "W", - "settimane": "W" + "settimane": "W", + "sett.": "W", + "mese": "M", + "mesi": "M", + "anno": "Y", + "anni": "Y" }, "date_order": "DY", "months": { @@ -1667,8 +1789,8 @@ "set": 9 }, "timeago_nd_tokens": { - "ieri": "1D", - "oggi": "0D" + "oggi": "0D", + "ieri": "1D" }, "comma_decimal": true, "number_tokens": { @@ -1690,26 +1812,30 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "דקה": "m", + "שניה": "s", + "שניות": "s", + "שנייה": "1s", + "דקה": "1m", + "דק׳": "m", "דקות": "m", - "חודש": "M", - "חודשיים": "2M", - "חודשים": "M", + "שעה": "1h", + "שעתיים": "2h", + "שעות": "h", + "שע׳": "h", "יום": "D", "יומיים": "2D", "ימים": "D", - "שבוע": "W", - "שבועות": "W", + "אתמול": "1D", + "שבוע": "1W", "שבועיים": "2W", - "שנה": "Y", - "שניה": "s", - "שניות": "s", - "שנייה": "s", - "שנים": "Y", + "שבועות": "W", + "שב׳": "W", + "חודש": "1M", + "חודשיים": "2M", + "חודשים": "M", "שנתיים": "2Y", - "שעה": "h", - "שעות": "h", - "שעתיים": "2h", + "שנים": "Y", + "שנה": "Y", "שתי": "2" }, "date_order": "DY", @@ -1728,8 +1854,8 @@ "בפבר׳": 2 }, "timeago_nd_tokens": { - "אתמול": "1D", - "היום": "0D" + "היום": "0D", + "אתמול": "1D" }, "comma_decimal": false, "number_tokens": { @@ -1752,19 +1878,19 @@ "equivalent": [], "by_char": true, "timeago_tokens": { - "分": "m", - "年": "Y", - "日": "D", - "時": "h", - "月": "M", "秒": "s", - "週": "W" + "分": "m", + "時": "h", + "日": "D", + "週": "W", + "月": "M", + "年": "Y" }, "date_order": "YMD", "months": {}, "timeago_nd_tokens": { - "日": "1D", - "本": "0D" + "本": "0D", + "昨": "1D" }, "comma_decimal": false, "number_tokens": { @@ -1784,15 +1910,19 @@ "equivalent": [], "by_char": false, "timeago_tokens": { + "წამი": "s", + "წამის": "s", + "წმ": "s", + "წუთი": "m", + "წუთის": "m", + "წთ": "m", + "საათის": "h", + "სთ": "h", "დღის": "D", "თვის": "M", "კვირის": "W", - "საათის": "h", - "წამი": "s", - "წამის": "s", - "წლის": "Y", - "წუთი": "m", - "წუთის": "m" + "კვ.": "W", + "წლის": "Y" }, "date_order": "DY", "months": { @@ -1810,8 +1940,8 @@ "სექ.": 9 }, "timeago_nd_tokens": { - "გუშინ": "1D", - "დღეს": "0D" + "დღეს": "0D", + "გუშინ": "1D" }, "comma_decimal": true, "number_tokens": { @@ -1834,13 +1964,18 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "ай": "M", - "апта": "W", - "жыл": "Y", - "күн": "D", + "секунд": "s", + "сек.": "s", "минут": "m", + "мин.": "m", "сағат": "h", - "секунд": "s" + "сағ.": "h", + "күн": "D", + "апта": "W", + "ап.": "W", + "ай": "M", + "жыл": "Y", + "ж.": "Y" }, "date_order": "YD", "months": { @@ -1931,23 +2066,24 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "ಗಂಟೆ": "h", - "ಗಂಟೆಗಳ": "h", - "ತಿಂಗಳ": "M", - "ತಿಂಗಳುಗಳ": "M", - "ದಿನಗಳ": "D", - "ದಿನದ": "D", - "ನಿಮಿಷಗಳ": "m", - "ನಿಮಿಷಗಳು": "m", - "ನಿಮಿಷದ": "m", - "ನಿಮಿಷವು": "m", - "ವರ್ಷಗಳ": "Y", - "ವರ್ಷದ": "Y", - "ವಾರಗಳ": "W", - "ವಾರದ": "W", + "ಸೆಕೆಂಡ್": "s", "ಸೆಕೆಂಡುಗಳ": "s", "ಸೆಕೆಂಡುಗಳು": "s", - "ಸೆಕೆಂಡ್": "s" + "ನಿಮಿಷದ": "m", + "ನಿಮಿಷಗಳ": "m", + "ನಿಮಿಷಗಳು": "m", + "ನಿಮಿಷವು": "m", + "ಗಂಟೆ": "h", + "ಗಂಟೆಗಳ": "h", + "ದಿನದ": "D", + "ದಿನಗಳ": "D", + "ವಾರದ": "W", + "ವಾರಗಳ": "W", + "ತಿಂಗಳ": "M", + "ತಿಂಗಳುಗಳ": "M", + "ತಿಂಗಳು": "M", + "ವರ್ಷದ": "Y", + "ವರ್ಷಗಳ": "Y" }, "date_order": "DY", "months": { @@ -1988,19 +2124,19 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "개월": "M", - "년": "Y", + "초": "s", "분": "m", "시간": "h", "일": "D", "주": "W", - "초": "s" + "개월": "M", + "년": "Y" }, "date_order": "YMD", "months": {}, "timeago_nd_tokens": { - "어제": "1D", - "오늘": "0D" + "오늘": "0D", + "어제": "1D" }, "comma_decimal": false, "number_tokens": { @@ -2023,13 +2159,17 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "ай": "M", - "апта": "W", - "жыл": "Y", - "күн": "D", + "секунд": "s", + "сек.": "s", "мүнөт": "m", + "мүн.": "m", "саат": "h", - "секунд": "s" + "саат.": "h", + "күн": "D", + "апта": "W", + "апт.": "W", + "ай": "M", + "жыл": "Y" }, "date_order": "YD", "months": { @@ -2071,15 +2211,20 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "ຊົ່ວໂມງກ່ອນ": "h", - "ນາທີ": "m", - "ນາທີກ່ອນ": "m", - "ປີກ່ອນ": "Y", - "ມື້ກ່ອນ": "D", - "ວິນາທີ": "s", "ວິນາທີກ່ອນ": "s", + "ວິນາທີ": "s", + "ວິ.": "s", + "ນາທີກ່ອນ": "m", + "ນາທີ": "m", + "ນທ.": "m", + "ຊົ່ວໂມງກ່ອນ": "h", + "ຊມ.": "h", + "ມື້ກ່ອນ": "D", "ອາທິດກ່ອນ": "W", - "ເດືອນກ່ອນ": "M" + "ອທ.": "W", + "ເດືອນກ່ອນ": "M", + "ດ.": "M", + "ປີກ່ອນ": "Y" }, "date_order": "DY", "months": { @@ -2097,8 +2242,8 @@ "ສ.ຫ.": 8 }, "timeago_nd_tokens": { - "ອັດເດດມື້ວານນີ້": "1D", - "ອັບເດດມື້ນີ້": "0D" + "ອັບເດດມື້ນີ້": "0D", + "ອັດເດດມື້ວານນີ້": "1D" }, "comma_decimal": true, "number_tokens": { @@ -2122,37 +2267,47 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "d.": "D", - "dienas": "D", + "sekundę": "s", + "sekundes": "s", + "sekundės": "s", + "sekundė": "s", + "sekundžių": "s", + "sek.": "s", + "minutę": "m", + "minutes": "m", + "minutės": "m", + "minutė": "m", + "minučių": "m", + "min.": "m", + "valandą": "h", + "valandas": "h", + "valandos": "h", + "valandų": "h", + "val.": "h", "dieną": "D", + "dienas": "D", + "dienos": "D", "dienų": "D", + "d.": "D", + "savaitę": "W", + "savaites": "W", + "savaitės": "W", + "savaičių": "W", + "sav.": "W", + "mėnesį": "M", + "mėnesius": "M", + "mėnesio": "M", + "mėnesių": "M", + "mėn.": "M", "metus": "Y", "metų": "Y", - "minutes": "m", - "minutė": "m", - "minutės": "m", - "minutę": "m", - "minučių": "m", - "mėnesius": "M", - "mėnesių": "M", - "mėnesį": "M", - "savaites": "W", - "savaitę": "W", - "savaičių": "W", - "sekundes": "s", - "sekundė": "s", - "sekundės": "s", - "sekundę": "s", - "sekundžių": "s", - "valandas": "h", - "valandą": "h", - "valandų": "h" + "m.": "Y" }, "date_order": "YMD", "months": {}, "timeago_nd_tokens": { - "vakar": "1D", - "šiandien": "0D" + "šiandien": "0D", + "vakar": "1D" }, "comma_decimal": true, "number_tokens": { @@ -2175,24 +2330,31 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "dienas": "D", - "dienām": "D", - "gada": "Y", - "gadiem": "Y", - "minūte": "m", - "minūtes": "m", - "minūtēm": "m", - "minūšu": "m", - "mēneša": "M", - "mēnešiem": "M", - "nedēļas": "W", - "nedēļām": "W", - "sekunde": "s", - "sekundes": "s", "sekundēm": "s", + "sekundes": "s", + "sekunde": "s", "sekunžu": "s", + "sek.": "s", + "minūtēm": "m", + "minūtes": "m", + "minūte": "m", + "minūšu": "m", + "min.": "m", + "stundām": "h", "stundas": "h", - "stundām": "h" + "st.": "h", + "dienām": "D", + "dienas": "D", + "d.": "D", + "nedēļām": "W", + "nedēļas": "W", + "ned.": "W", + "mēnešiem": "M", + "mēneša": "M", + "mēn.": "M", + "gadiem": "Y", + "gada": "Y", + "g.": "Y" }, "date_order": "YD", "months": { @@ -2210,8 +2372,8 @@ "sept.": 9 }, "timeago_nd_tokens": { - "vakar": "1D", - "šodien": "0D" + "šodien": "0D", + "vakar": "1D" }, "comma_decimal": true, "number_tokens": { @@ -2234,26 +2396,29 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "година": "Y", - "години": "Y", - "ден": "D", - "дена": "D", - "месец": "M", - "месеци": "M", - "минута": "m", - "минути": "m", - "седмица": "W", - "седмици": "W", "секунда": "s", "секунди": "s", + "сек.": "s", + "минута": "m", + "минути": "m", + "мин.": "m", "час": "h", - "часа": "h" + "часа": "h", + "ден": "D", + "дена": "D", + "седмица": "W", + "седмици": "W", + "месец": "M", + "месеци": "M", + "година": "Y", + "години": "Y", + "год.": "Y" }, "date_order": "DMY", "months": {}, "timeago_nd_tokens": { - "вчера": "1D", - "денес": "0D" + "денес": "0D", + "вчера": "1D" }, "comma_decimal": true, "number_tokens": { @@ -2277,13 +2442,13 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "ആഴ്ച": "W", - "ദിവസം": "D", - "മണിക്കൂർ": "h", - "മാസം": "M", + "സെക്കൻഡ്": "s", "മിനിറ്റ്": "m", - "വർഷം": "Y", - "സെക്കൻഡ്": "s" + "മണിക്കൂർ": "h", + "ദിവസം": "D", + "ആഴ്ച": "W", + "മാസം": "M", + "വർഷം": "Y" }, "date_order": "YD", "months": { @@ -2301,8 +2466,8 @@ "സെപ്റ്റം": 9 }, "timeago_nd_tokens": { - "ഇന്നലെ": "1D", - "ഇന്ന്": "0D" + "ഇന്ന്": "0D", + "ഇന്നലെ": "1D" }, "comma_decimal": false, "number_tokens": { @@ -2324,15 +2489,19 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "жилийн": "Y", - "минут": "m", - "минутын": "m", - "сарын": "M", - "секунд": "s", "секундын": "s", - "хоногийн": "W", + "секунд": "s", + "сек": "s", + "минутын": "m", + "минут": "m", + "мин": "m", "цагийн": "h", - "өдрийн": "D" + "ц": "h", + "өдрийн": "D", + "хоногийн": "D", + "долоо": "W", + "сарын": "M", + "жилийн": "Y" }, "date_order": "YMD", "months": {}, @@ -2361,23 +2530,25 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "आठवड्यांपूर्वी": "W", - "आठवड्यापूर्वी": "W", - "तासांपूर्वी": "h", - "तासापूर्वी": "h", - "दिवसांपूर्वी": "D", - "दिवसापूर्वी": "D", - "महिन्यांपूर्वी": "M", - "महिन्यापूर्वी": "M", - "मिनिट": "m", - "मिनिटांपूर्वी": "m", - "मिनिटापूर्वी": "m", - "मिनिटे": "m", - "वर्षांपूर्वी": "Y", - "वर्षापूर्वी": "Y", - "सेकंद": "s", + "सेकंदापूर्वी": "s", "सेकंदांपूर्वी": "s", - "सेकंदापूर्वी": "s" + "सेकंद": "s", + "से.": "s", + "मिनिटापूर्वी": "m", + "मिनिटांपूर्वी": "m", + "मिनिट": "m", + "मिनिटे": "m", + "मिनि.": "m", + "तासापूर्वी": "h", + "तासांपूर्वी": "h", + "दिवसापूर्वी": "D", + "दिवसांपूर्वी": "D", + "आठवड्यापूर्वी": "W", + "आठवड्यांपूर्वी": "W", + "महिन्यापूर्वी": "M", + "महिन्यांपूर्वी": "M", + "वर्षापूर्वी": "Y", + "वर्षांपूर्वी": "Y" }, "date_order": "DY", "months": { @@ -2421,13 +2592,17 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "bulan": "M", - "hari": "D", - "jam": "h", - "minggu": "W", - "minit": "m", "saat": "s", - "tahun": "Y" + "minit": "m", + "min": "m", + "jam": "h", + "hari": "D", + "minggu": "W", + "mgu": "W", + "bulan": "M", + "bln": "M", + "tahun": "Y", + "thn": "Y" }, "date_order": "DY", "months": { @@ -2494,8 +2669,8 @@ "ဩ": 8 }, "timeago_nd_tokens": { - "မနေ့က": "1D", - "ယနေ့": "0D" + "ယနေ့": "0D", + "မနေ့က": "1D" }, "comma_decimal": false, "number_tokens": { @@ -2572,18 +2747,21 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "dag": "D", - "dagen": "D", - "jaar": "Y", - "maand": "M", - "maanden": "M", - "minuten": "m", - "minuut": "m", "seconde": "s", "seconden": "s", + "sec.": "s", + "minuut": "m", + "minuten": "m", + "min.": "m", "uur": "h", + "dag": "D", + "dagen": "D", + "dgn": "D", "week": "W", - "weken": "W" + "weken": "W", + "maand": "M", + "maanden": "M", + "jaar": "Y" }, "date_order": "DY", "months": { @@ -2601,8 +2779,8 @@ "sep": 9 }, "timeago_nd_tokens": { - "gisteren": "1D", - "vandaag": "0D" + "vandaag": "0D", + "gisteren": "1D" }, "comma_decimal": true, "number_tokens": { @@ -2624,19 +2802,25 @@ "equivalent": [], "by_char": false, "timeago_tokens": { + "sekund": "s", + "sekunder": "s", + "sek": "s", + "minutt": "m", + "minutter": "m", + "min": "m", + "time": "h", + "timer": "h", + "t": "h", "dag": "D", "dager": "D", "døgn": "D", - "minutt": "m", - "minutter": "m", - "måned": "M", - "måneder": "M", - "sekund": "s", - "sekunder": "s", - "time": "h", - "timer": "h", + "d.": "D", "uke": "W", "uker": "W", + "u.": "W", + "måned": "M", + "måneder": "M", + "md.": "M", "år": "Y" }, "date_order": "DY", @@ -2681,14 +2865,20 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "ଘଣ୍ଟା": "h", - "ଦିନ": "D", - "ବର୍ଷ": "Y", - "ମାସ": "M", + "ସେକେଣ୍ଡ": "s", + "ସେ.": "s", "ମିନିଟ୍": "m", "ମିନିଟ୍‌": "m", + "ମି.": "m", + "ଘଣ୍ଟା": "h", + "ଘ.": "h", + "ଦିନ": "D", "ସପ୍ତାହ": "W", - "ସେକେଣ୍ଡ": "s" + "ସପ୍ତା.": "W", + "ମାସ": "M", + "ମା.": "M", + "ବର୍ଷ": "Y", + "ବ.": "Y" }, "date_order": "DY", "months": { @@ -2736,16 +2926,16 @@ "equivalent": [], "by_char": false, "timeago_tokens": { + "ਸਕਿੰਟ": "s", + "ਮਿੰਟ": "m", "ਘੰਟਾ": "h", "ਘੰਟੇ": "h", "ਦਿਨ": "D", + "ਹਫ਼ਤਾ": "W", + "ਹਫ਼ਤੇ": "W", "ਮਹੀਨਾ": "M", "ਮਹੀਨੇ": "M", - "ਮਿੰਟ": "m", - "ਸਕਿੰਟ": "s", - "ਸਾਲ": "Y", - "ਹਫ਼ਤਾ": "W", - "ਹਫ਼ਤੇ": "W" + "ਸਾਲ": "Y" }, "date_order": "DY", "months": { @@ -2788,27 +2978,38 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "dni": "D", - "dzień": "D", - "godzin": "h", - "godziny": "h", + "sekundę": "s", + "sekundy": "s", + "sekunda": "s", + "sekund": "s", + "sek.": "s", + "minutę": "m", + "minuty": "m", + "minut": "m", + "minuta": "m", + "min": "m", "godzinę": "h", - "lat": "Y", - "lata": "Y", + "godziny": "h", + "godzin": "h", + "godz.": "h", + "dzień": "D", + "dni": "D", + "dnia": "D", + "tydzień": "W", + "tygodnie": "W", + "tygodni": "W", + "tygodnia": "W", + "tydz.": "W", + "tyg.": "W", "miesiąc": "M", "miesiące": "M", "miesięcy": "M", - "minut": "m", - "minuta": "m", - "minuty": "m", - "minutę": "m", + "miesiąca": "M", + "mies.": "M", "rok": "Y", - "sekund": "s", - "sekunda": "s", - "sekundy": "s", - "sekundę": "s", - "tydzień": "W", - "tygodnie": "W" + "lata": "Y", + "lat": "Y", + "roku": "Y" }, "date_order": "DY", "months": { @@ -2850,20 +3051,24 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "ano": "Y", - "anos": "Y", - "dia": "D", - "dias": "D", - "hora": "h", - "horas": "h", - "meses": "M", - "minuto": "m", - "minutos": "m", - "mês": "M", "segundo": "s", "segundos": "s", + "seg.": "s", + "minuto": "m", + "minutos": "m", + "min.": "m", + "hora": "h", + "horas": "h", + "h": "h", + "dia": "D", + "dias": "D", "semana": "W", - "semanas": "W" + "semanas": "W", + "sem.": "W", + "mês": "M", + "meses": "M", + "ano": "Y", + "anos": "Y" }, "date_order": "DY", "months": { @@ -2905,20 +3110,24 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "ano": "Y", - "anos": "Y", - "dia": "D", - "dias": "D", - "hora": "h", - "horas": "h", - "meses": "M", - "minuto": "m", - "minutos": "m", - "mês": "M", "segundo": "s", "segundos": "s", + "s": "s", + "minuto": "m", + "minutos": "m", + "min": "m", + "hora": "h", + "horas": "h", + "h": "h", + "dia": "D", + "dias": "D", "semana": "W", - "semanas": "W" + "semanas": "W", + "sem.": "W", + "mês": "M", + "meses": "M", + "ano": "Y", + "anos": "Y" }, "date_order": "DMY", "months": {}, @@ -2945,20 +3154,24 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "an": "Y", - "ani": "Y", - "luni": "M", - "lună": "M", + "secundă": "s", + "secunde": "s", + "sec.": "s", "minut": "m", "minute": "m", - "ore": "h", + "min.": "m", "oră": "h", - "secunde": "s", - "secundă": "s", - "săptămâni": "W", - "săptămână": "W", + "ore": "h", + "h": "h", "zi": "D", - "zile": "D" + "zile": "D", + "săptămână": "W", + "săptămâni": "W", + "săpt.": "W", + "lună": "M", + "luni": "M", + "an": "Y", + "ani": "Y" }, "date_order": "DY", "months": { @@ -3000,28 +3213,37 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "год": "Y", - "года": "Y", + "секунду": "s", + "секунды": "s", + "секунд": "s", + "секунда": "s", + "сек.": "s", + "минуту": "m", + "минуты": "m", + "минут": "m", + "минута": "m", + "мин.": "m", + "час": "h", + "часа": "h", + "часов": "h", + "ч": "h", "день": "D", - "дней": "D", "дня": "D", - "лет": "Y", + "дней": "D", + "дн.": "D", + "неделю": "W", + "недели": "W", + "недель": "W", + "нед.": "W", "месяц": "M", "месяца": "M", "месяцев": "M", - "минут": "m", - "минута": "m", - "минуту": "m", - "минуты": "m", - "недели": "W", - "неделю": "W", - "секунд": "s", - "секунда": "s", - "секунду": "s", - "секунды": "s", - "час": "h", - "часа": "h", - "часов": "h" + "мес.": "M", + "год": "Y", + "года": "Y", + "лет": "Y", + "г.": "Y", + "л.": "Y" }, "date_order": "DY", "months": { @@ -3039,8 +3261,8 @@ "янв.": 1 }, "timeago_nd_tokens": { - "вчера": "1D", - "сегодня": "0D" + "сегодня": "0D", + "вчера": "1D" }, "comma_decimal": true, "number_tokens": { @@ -3062,12 +3284,12 @@ "by_char": false, "timeago_tokens": { "තත්පර": "s", - "දින": "D", - "පැය": "h", - "මාස": "M", "මිනිත්තු": "m", - "වසර": "Y", - "සති": "W" + "පැය": "h", + "දින": "D", + "සති": "W", + "මාස": "M", + "වසර": "Y" }, "date_order": "YD", "months": { @@ -3109,26 +3331,37 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "dňami": "D", - "dňom": "D", - "hodinami": "h", - "hodinou": "h", - "mesiacmi": "M", - "mesiacom": "M", + "sekundou": "s", + "sekundami": "s", + "sekundy": "s", + "sekunda": "s", + "sekúnd": "s", + "s": "s", + "minútou": "m", + "minútami": "m", + "minúty": "m", "minút": "m", "minúta": "m", - "minútami": "m", - "minútou": "m", - "minúty": "m", - "rokmi": "Y", - "rokom": "Y", - "sekunda": "s", - "sekundami": "s", - "sekundou": "s", - "sekundy": "s", - "sekúnd": "s", + "min": "m", + "hodinou": "h", + "hodinami": "h", + "h": "h", + "dňom": "D", + "dňami": "D", + "dňa": "D", + "d.": "D", + "týždňom": "W", "týždňami": "W", - "týždňom": "W" + "týždňa": "W", + "týž.": "W", + "mesiacom": "M", + "mesiacmi": "M", + "mesiaca": "M", + "mes.": "M", + "rokom": "Y", + "rokmi": "Y", + "roka": "Y", + "r.": "Y" }, "date_order": "DMY", "months": {}, @@ -3157,36 +3390,40 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "dnem": "D", - "dnevi": "D", - "dnevom": "D", - "dnevoma": "D", - "leti": "Y", - "letom": "Y", - "letoma": "Y", - "mesecem": "M", - "mesecema": "M", - "meseci": "M", - "minut": "m", - "minuta": "m", - "minutama": "m", - "minutami": "m", - "minute": "m", - "minuti": "m", - "minuto": "m", "sekund": "s", "sekunda": "s", - "sekundama": "s", - "sekundami": "s", "sekunde": "s", "sekundi": "s", "sekundo": "s", - "tedni": "W", - "tednom": "W", - "tednoma": "W", + "sekundama": "s", + "sekundami": "s", + "s": "s", + "minut": "m", + "minuta": "m", + "minute": "m", + "minuti": "m", + "minuto": "m", + "minutama": "m", + "minutami": "m", + "min.": "m", + "uro": "h", "urama": "h", "urami": "h", - "uro": "h" + "dnevom": "D", + "dnevoma": "D", + "dnevi": "D", + "dnem": "D", + "tednom": "W", + "tednoma": "W", + "tedni": "W", + "ted.": "W", + "mesecem": "M", + "mesecema": "M", + "meseci": "M", + "mes.": "M", + "letom": "Y", + "letoma": "Y", + "leti": "Y" }, "date_order": "DY", "months": { @@ -3228,14 +3465,16 @@ "equivalent": [], "by_char": false, "timeago_tokens": { + "sekondë": "s", + "sekonda": "s", + "sek": "s", + "minutë": "m", + "minuta": "m", + "min": "m", + "orë": "h", "ditë": "D", "javë": "W", - "minuta": "m", - "minutë": "m", "muaj": "M", - "orë": "h", - "sekonda": "s", - "sekondë": "s", "vit": "Y", "vjet": "Y" }, @@ -3255,8 +3494,8 @@ "tet": 10 }, "timeago_nd_tokens": { - "dje": "1D", - "sot": "0D" + "sot": "0D", + "dje": "1D" }, "comma_decimal": true, "number_tokens": { @@ -3279,24 +3518,27 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "година": "Y", - "године": "Y", - "годину": "Y", - "дан": "D", - "дана": "D", - "месец": "M", - "месеца": "M", - "месеци": "M", - "минут": "m", + "секунде": "s", + "секунди": "s", + "секунда": "s", + "сек.": "s", "минута": "m", - "недеље": "W", - "недељу": "W", - "сат": "h", + "минут": "m", + "мин.": "m", "сата": "h", "сати": "h", - "секунда": "s", - "секунде": "s", - "секунди": "s" + "ч.": "h", + "дана": "D", + "д.": "D", + "недеље": "W", + "недеља": "W", + "нед.": "W", + "месеца": "M", + "месеци": "M", + "мес.": "M", + "године": "Y", + "година": "Y", + "год.": "Y" }, "date_order": "DMY", "months": {}, @@ -3325,25 +3567,27 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "dan": "D", - "dana": "D", - "godina": "Y", - "godine": "Y", - "godinu": "Y", - "mesec": "M", - "meseca": "M", - "meseci": "M", - "minut": "m", + "sekunde": "s", + "sekundi": "s", + "sekunda": "s", + "sek.": "s", "minuta": "m", - "nedelja": "W", - "nedelje": "W", - "nedelju": "W", - "sat": "h", + "minut": "m", + "min.": "m", "sata": "h", "sati": "h", - "sekunda": "s", - "sekunde": "s", - "sekundi": "s" + "č.": "h", + "dana": "D", + "d.": "D", + "nedelje": "W", + "nedelja": "W", + "ned.": "W", + "meseca": "M", + "meseci": "M", + "mes.": "M", + "godine": "Y", + "godina": "Y", + "god.": "Y" }, "date_order": "DMY", "months": {}, @@ -3372,18 +3616,24 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "dag": "D", - "dagar": "D", - "minut": "m", - "minuter": "m", - "månad": "M", - "månader": "M", "sekund": "s", "sekunder": "s", - "timmar": "h", + "s": "s", + "minut": "m", + "minuter": "m", + "min": "m", "timme": "h", + "timmar": "h", + "tim": "h", + "dag": "D", + "dagar": "D", + "d": "D", "vecka": "W", "veckor": "W", + "v.": "W", + "månad": "M", + "månader": "M", + "mån.": "M", "år": "Y" }, "date_order": "DY", @@ -3425,15 +3675,15 @@ "equivalent": [], "by_char": false, "timeago_tokens": { + "sekunde": "s", "dakika": "m", - "miaka": "Y", + "saa": "h", + "siku": "D", + "wiki": "W", + "mwezi": "M", "miezi": "M", "mwaka": "Y", - "mwezi": "M", - "saa": "h", - "sekunde": "s", - "siku": "D", - "wiki": "W" + "miaka": "Y" }, "date_order": "DY", "months": { @@ -3451,8 +3701,8 @@ "sep": 9 }, "timeago_nd_tokens": { - "jana": "1D", - "leo": "0D" + "leo": "0D", + "jana": "1D" }, "comma_decimal": false, "number_tokens": { @@ -3475,23 +3725,28 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "ஆண்டிற்கு": "Y", - "ஆண்டுகளுக்கு": "Y", - "நாட்களுக்கு": "D", - "நாளுக்கு": "D", - "நிமிடங்களுக்கு": "m", - "நிமிடங்கள்": "m", + "விநாடிக்கு": "s", + "விநாடிகளுக்கு": "s", + "விநா.": "s", + "விநாடி": "s", + "விநாடிகள்": "s", "நிமிடத்திற்கு": "m", + "நிமிடங்களுக்கு": "m", + "நிமி.": "m", + "நிமிடங்கள்": "m", "நிமிடம்": "m", "மணிநேரம்": "h", - "மாதங்களுக்கு": "M", - "மாதத்துக்கு": "M", + "மணி.": "h", + "நாளுக்கு": "D", + "நாட்களுக்கு": "D", + "வாரத்திற்கு": "W", "வாரங்களுக்கு": "W", - "வாரம்": "W", - "விநாடி": "s", - "விநாடிகளுக்கு": "s", - "விநாடிகள்": "s", - "விநாடிக்கு": "s" + "வார.": "W", + "மாதத்துக்கு": "M", + "மாதங்களுக்கு": "M", + "மாத.": "M", + "ஆண்டிற்கு": "Y", + "ஆண்டுகளுக்கு": "Y" }, "date_order": "DY", "months": { @@ -3532,22 +3787,26 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "గంట": "h", - "గంటల": "h", + "సెకను": "s", + "సెకన్ల": "s", + "సెకన్లు": "s", + "సెక.": "s", "నిమిషం": "m", "నిమిషాల": "m", "నిమిషాలు": "m", - "నెల": "M", - "నెలల": "M", + "నిమి.": "m", + "గంట": "h", + "గంటల": "h", + "గం.": "h", "రోజు": "D", "రోజుల": "D", "వారం": "W", "వారాల": "W", + "నెల": "M", + "నెలల": "M", "సంవత్సరం": "Y", "సంవత్సరాల": "Y", - "సెకను": "s", - "సెకన్ల": "s", - "సెకన్లు": "s" + "సం.": "Y" }, "date_order": "DY", "months": { @@ -3589,16 +3848,22 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "ชั่วโมงที่ผ่านมา": "h", - "นาที": "m", + "วินาทีที่ผ่านมา": "s", + "วินาทีที่แล้ว": "s", + "วินาที": "s", "นาทีที่ผ่านมา": "m", - "ปีที่แล้ว": "Y", + "นาทีที่แล้ว": "m", + "นาที": "m", + "ชั่วโมงที่ผ่านมา": "h", + "ชม.": "h", + "ที่แล้ว": "h", "วันที่ผ่านมา": "D", "วันที่แล้ว": "D", - "วินาที": "s", - "วินาทีที่ผ่านมา": "s", "สัปดาห์ที่ผ่านมา": "W", - "เดือนที่ผ่านมา": "M" + "สัปดาห์ที่แล้ว": "W", + "เดือนที่ผ่านมา": "M", + "เดือนที่แล้ว": "M", + "ปีที่แล้ว": "Y" }, "date_order": "DY", "months": { @@ -3616,8 +3881,8 @@ "เม.ย.": 4 }, "timeago_nd_tokens": { - "อัปเดตเมื่อวานนี้": "1D", - "อัปเดตแล้ววันนี้": "0D" + "อัปเดตแล้ววันนี้": "0D", + "อัปเดตเมื่อวานนี้": "1D" }, "comma_decimal": false, "number_tokens": { @@ -3643,12 +3908,16 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "ay": "M", + "saniye": "s", + "sn.": "s", "dakika": "m", + "dk.": "m", + "saat": "h", + "sa.": "h", "gün": "D", "hafta": "W", - "saat": "h", - "saniye": "s", + "hf.": "W", + "ay": "M", "yıl": "Y" }, "date_order": "DY", @@ -3691,28 +3960,40 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "годин": "h", - "години": "h", + "секунду": "s", + "секунди": "s", + "секунд": "s", + "секунда": "s", + "с": "s", + "хвилину": "m", + "хвилини": "m", + "хвилин": "m", + "хвилина": "m", + "хв": "m", "годину": "h", + "години": "h", + "годин": "h", + "год": "h", "день": "D", "дні": "D", "днів": "D", + "дня": "D", + "дн.": "D", + "тиждень": "W", + "тижні": "W", + "тижнів": "W", + "тижня": "W", + "тиж.": "W", "місяць": "M", "місяці": "M", "місяців": "M", + "місяця": "M", + "міс.": "M", + "рік": "Y", "роки": "Y", "років": "Y", - "рік": "Y", - "секунд": "s", - "секунда": "s", - "секунди": "s", - "секунду": "s", - "тиждень": "W", - "тижні": "W", - "хвилин": "m", - "хвилина": "m", - "хвилини": "m", - "хвилину": "m" + "року": "Y", + "р.": "Y" }, "date_order": "DY", "months": { @@ -3730,8 +4011,8 @@ "черв.": 6 }, "timeago_nd_tokens": { - "вчора": "1D", - "сьогодні": "0D" + "сьогодні": "0D", + "вчора": "1D" }, "comma_decimal": true, "number_tokens": { @@ -3754,20 +4035,21 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "دن": "D", - "دنوں": "D", - "سال": "Y", - "سیکنڈ": "s", "سیکنڈز": "s", + "سیکنڈ": "s", "منٹ": "m", "منٹ،": "m", "منٹس": "m", - "مہینہ": "M", - "مہینے": "M", "گھنٹہ": "h", "گھنٹے": "h", + "دن": "D", + "دنوں": "D", "ہفتہ": "W", - "ہفتے": "W" + "ہفتے": "W", + "مہینہ": "M", + "مہینے": "M", + "ماہ": "M", + "سال": "Y" }, "date_order": "DY", "months": { @@ -3810,12 +4092,12 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "daqiqa": "m", - "hafta": "W", - "kun": "D", - "oy": "M", - "soat": "h", "soniya": "s", + "daqiqa": "m", + "soat": "h", + "kun": "D", + "hafta": "W", + "oy": "M", "yil": "Y" }, "date_order": "DY", @@ -3857,13 +4139,12 @@ "by_char": false, "timeago_tokens": { "giây": "s", + "phút": "m", "giờ": "h", "ngày": "D", - "năm": "Y", - "phút": "m", + "tuần": "W", "tháng": "M", - "tiếng": "h", - "tuần": "W" + "năm": "Y" }, "date_order": "DMY", "months": {}, @@ -3890,19 +4171,19 @@ "equivalent": [], "by_char": true, "timeago_tokens": { + "秒": "s", "分": "m", - "周": "W", - "天": "D", "小": "h", - "年": "Y", + "天": "D", + "周": "W", "月": "M", - "秒": "s" + "年": "Y" }, "date_order": "YMD", "months": {}, "timeago_nd_tokens": { "今": "0D", - "日": "1D" + "昨": "1D" }, "comma_decimal": false, "number_tokens": { @@ -3924,20 +4205,20 @@ "equivalent": [], "by_char": true, "timeago_tokens": { + "秒": "s", "分": "m", - "天": "D", "小": "h", - "年": "Y", + "天": "D", "日": "D", - "月": "M", "期": "W", - "秒": "s" + "月": "M", + "年": "Y" }, "date_order": "YMD", "months": {}, "timeago_nd_tokens": { "今": "0D", - "天": "1D" + "昨": "1D" }, "comma_decimal": false, "number_tokens": { @@ -3969,7 +4250,7 @@ "months": {}, "timeago_nd_tokens": { "今": "0D", - "天": "1D" + "昨": "1D" }, "comma_decimal": false, "number_tokens": { @@ -3989,20 +4270,29 @@ "equivalent": [], "by_char": false, "timeago_tokens": { - "amaminithi": "m", - "amasekhondi": "s", - "amaviki": "W", - "emahoreni": "h", - "ezinsukwini": "D", - "ihora": "h", - "iminithi": "m", - "iminyaka": "Y", - "inyanga": "M", "isekhondi": "s", - "iviki": "W", - "izinyanga": "M", + "amasekhondi": "s", + "iminithi": "m", + "amaminithi": "m", + "ihora": "h", + "emahoreni": "h", "osukwini": "D", - "unyaka": "Y" + "olungu": "D", + "olwedlule": "D", + "ezinsukwini": "D", + "ezingu": "D", + "ezedlule.": "D", + "usuku": "D", + "izinsuku": "D", + "iviki": "W", + "evikini": "W", + "elingu": "W", + "amaviki": "W", + "inyanga": "M", + "izinyanga": "M", + "unyaka": "Y", + "odlule": "Y", + "iminyaka": "Y" }, "date_order": "DY", "months": { @@ -4020,8 +4310,8 @@ "sep": 9 }, "timeago_nd_tokens": { - "izolo": "1D", - "namuhla": "0D" + "namuhla": "0D", + "izolo": "1D" }, "comma_decimal": false, "number_tokens": { diff --git a/testfiles/dict/timeago_samples_short.json b/testfiles/dict/timeago_samples_short.json new file mode 100644 index 0000000..1b3aac6 --- /dev/null +++ b/testfiles/dict/timeago_samples_short.json @@ -0,0 +1,3488 @@ +{ + "af": [ + "35 min. gelede", + "50 min. gelede", + "1 u. gelede", + "2 u. gelede", + "3 u. gelede", + "4 u. gelede", + "5 u. gelede", + "6 u. gelede", + "7 u. gelede", + "8 u. gelede", + "9 u. gelede", + "12 u. gelede", + "17 u. gelede", + "18 u. gelede", + "19 u. gelede", + "20 u. gelede", + "10 u. gelede", + "11 u. gelede", + "13 u. gelede", + "1 dag gelede", + "2 dae gelede", + "3 dae gelede", + "4 dae gelede", + "6 dae gelede", + "8 dae gelede", + "10 dae gelede", + "11 dae gelede", + "12 dae gelede", + "13 dae gelede", + "2 w. gelede", + "3 w. gelede", + "1 md. gelede", + "4 w. gelede", + "7 md. gelede", + "10 md. gelede", + "1 j. gelede", + "2 j. gelede", + "3 j. gelede", + "4 j. gelede", + "5 j. gelede" + ], + "am": [ + "ከ35 ደቂቃዎች በፊት", + "ከ50 ደቂቃዎች በፊት", + "ከ1 ሰዓት በፊት", + "ከ2 ሰዓቶች በፊት", + "ከ3 ሰዓቶች በፊት", + "ከ4 ሰዓቶች በፊት", + "ከ5 ሰዓቶች በፊት", + "ከ6 ሰዓቶች በፊት", + "ከ7 ሰዓቶች በፊት", + "ከ8 ሰዓቶች በፊት", + "ከ9 ሰዓቶች በፊት", + "ከ12 ሰዓቶች በፊት", + "ከ17 ሰዓቶች በፊት", + "ከ18 ሰዓቶች በፊት", + "ከ19 ሰዓቶች በፊት", + "ከ20 ሰዓቶች በፊት", + "ከ10 ሰዓቶች በፊት", + "ከ11 ሰዓቶች በፊት", + "ከ13 ሰዓቶች በፊት", + "ከ 1 ቀን በፊት", + "ከ2 ቀኖች በፊት", + "ከ3 ቀኖች በፊት", + "ከ4 ቀኖች በፊት", + "ከ6 ቀኖች በፊት", + "ከ8 ቀኖች በፊት", + "ከ10 ቀኖች በፊት", + "ከ11 ቀኖች በፊት", + "ከ12 ቀኖች በፊት", + "ከ13 ቀኖች በፊት", + "ከ2 ሳምንታት በፊት", + "ከ3 ሳምንታት በፊት", + "ከ1 ወራት በፊት", + "ከ4 ሳምንታት በፊት", + "ከ7 ወራት በፊት", + "ከ10 ወራት በፊት", + "ከ1 ዓመታት በፊት", + "ከ2 ዓመታት በፊት", + "ከ3 ዓመታት በፊት", + "ከ4 ዓመታት በፊት", + "ከ5 ዓመታት በፊት" + ], + "ar": [ + "قبل 35 دقيقة", + "قبل 50 دقيقة", + "قبل ساعة واحدة", + "قبل ساعتين", + "قبل 3 ساعات", + "قبل 4 ساعات", + "قبل 5 ساعات", + "قبل 6 ساعات", + "قبل 7 ساعات", + "قبل 8 ساعات", + "قبل 9 ساعات", + "قبل 12 ساعة", + "قبل 17 ساعة", + "قبل 18 ساعة", + "قبل 19 ساعة", + "قبل 20 ساعة", + "قبل 10 ساعات", + "قبل 11 ساعة", + "قبل 13 ساعة", + "قبل يوم واحد", + "قبل يومين", + "قبل 3 أيام", + "قبل 4 أيام", + "قبل 6 أيام", + "قبل 8 أيام", + "قبل 10 أيام", + "قبل 11 يومًا", + "قبل 12 يومًا", + "قبل 13 يومًا", + "قبل أسبوعين", + "قبل 3 أسابيع", + "قبل شهر واحد", + "قبل 4 أسابيع", + "خلال 7 أشهر", + "خلال 10 أشهر", + "قبل سنة واحدة", + "قبل سنتين", + "قبل 3 سنوات", + "قبل 4 سنوات", + "قبل 5 سنوات" + ], + "as": [ + "35 মিনিট পূৰ্বে", + "50 মিনিট পূৰ্বে", + "1 ঘণ্টা পূৰ্বে", + "2 ঘণ্টা পূৰ্বে", + "3 ঘণ্টা পূৰ্বে", + "4 ঘণ্টা পূৰ্বে", + "5 ঘণ্টা পূৰ্বে", + "6 ঘণ্টা পূৰ্বে", + "7 ঘণ্টা পূৰ্বে", + "8 ঘণ্টা পূৰ্বে", + "9 ঘণ্টা পূৰ্বে", + "12 ঘণ্টা পূৰ্বে", + "17 ঘণ্টা পূৰ্বে", + "18 ঘণ্টা পূৰ্বে", + "19 ঘণ্টা পূৰ্বে", + "20 ঘণ্টা পূৰ্বে", + "10 ঘণ্টা পূৰ্বে", + "11 ঘণ্টা পূৰ্বে", + "13 ঘণ্টা পূৰ্বে", + "1 দিন পূৰ্বে", + "2 দিন পূৰ্বে", + "3 দিন পূৰ্বে", + "4 দিন পূৰ্বে", + "6 দিন পূৰ্বে", + "8 দিন পূৰ্বে", + "10 দিন পূৰ্বে", + "11 দিন পূৰ্বে", + "12 দিন পূৰ্বে", + "13 দিন পূৰ্বে", + "2 সপ্তাহ পূৰ্বে", + "3 সপ্তাহ পূৰ্বে", + "1 মাহ পূৰ্বে", + "4 সপ্তাহ পূৰ্বে", + "7 মাহ পূৰ্বে", + "10 মাহ পূৰ্বে", + "1 বছৰৰ পূৰ্বে", + "2 বছৰৰ পূৰ্বে", + "3 বছৰৰ পূৰ্বে", + "4 বছৰৰ পূৰ্বে", + "5 বছৰৰ পূৰ্বে" + ], + "az": [ + "35 dəqiqə öncə", + "50 dəqiqə öncə", + "1 saat öncə", + "2 saat öncə", + "3 saat öncə", + "4 saat öncə", + "5 saat öncə", + "6 saat öncə", + "7 saat öncə", + "8 saat öncə", + "9 saat öncə", + "12 saat öncə", + "17 saat öncə", + "18 saat öncə", + "19 saat öncə", + "20 saat öncə", + "10 saat öncə", + "11 saat öncə", + "13 saat öncə", + "1 gün öncə", + "2 gün öncə", + "3 gün öncə", + "4 gün öncə", + "6 gün öncə", + "8 gün öncə", + "10 gün öncə", + "11 gün öncə", + "12 gün öncə", + "13 gün öncə", + "2 həftə öncə", + "3 həftə öncə", + "1 ay öncə", + "4 həftə öncə", + "7 ay öncə", + "10 ay öncə", + "1 il öncə", + "2 il öncə", + "3 il öncə", + "4 il öncə", + "5 il öncə" + ], + "be": [ + "35 хв таму", + "50 хв таму", + "1 гадз таму", + "2 гадз таму", + "3 гадз таму", + "4 гадз таму", + "5 гадз таму", + "6 гадз таму", + "7 гадз таму", + "8 гадз таму", + "9 гадз таму", + "12 гадз таму", + "17 гадз таму", + "18 гадз таму", + "19 гадз таму", + "20 гадз таму", + "10 гадз таму", + "11 гадз таму", + "13 гадз таму", + "1 дзень таму", + "2 дні таму", + "3 дні таму", + "4 дні таму", + "6 дзён таму", + "8 дзён таму", + "10 дзён таму", + "11 дзён таму", + "12 дзён таму", + "13 дзён таму", + "2 тыд таму", + "3 тыд таму", + "1 мес. таму", + "4 тыд таму", + "7 мес. таму", + "10 мес. таму", + "1 г. таму", + "2 г. таму", + "3 г. таму", + "4 г. таму", + "5 г. таму" + ], + "bg": [ + "преди 35 мин", + "преди 50 мин", + "преди 1 ч", + "преди 2 ч", + "преди 3 ч", + "преди 4 ч", + "преди 5 ч", + "преди 6 ч", + "преди 7 ч", + "преди 8 ч", + "преди 9 ч", + "преди 12 ч", + "преди 17 ч", + "преди 18 ч", + "преди 19 ч", + "преди 20 ч", + "преди 10 ч", + "преди 11 ч", + "преди 13 ч", + "преди 1 ден", + "преди 2 дни", + "преди 3 дни", + "преди 4 дни", + "преди 6 дни", + "преди 8 дни", + "преди 10 дни", + "преди 11 дни", + "преди 12 дни", + "преди 13 дни", + "преди 2 седм.", + "преди 3 седм.", + "преди 1 м.", + "преди 4 седм.", + "преди 7 м.", + "преди 10 м.", + "преди 1 г.", + "преди 2 г.", + "преди 3 г.", + "преди 4 г.", + "преди 5 г." + ], + "bn": [ + "35 মিনিট আগে", + "50 মিনিট আগে", + "1 ঘন্টা আগে", + "2 ঘন্টা আগে", + "3 ঘন্টা আগে", + "4 ঘন্টা আগে", + "5 ঘন্টা আগে", + "6 ঘন্টা আগে", + "7 ঘন্টা আগে", + "8 ঘন্টা আগে", + "9 ঘন্টা আগে", + "12 ঘন্টা আগে", + "17 ঘন্টা আগে", + "18 ঘন্টা আগে", + "19 ঘন্টা আগে", + "20 ঘন্টা আগে", + "10 ঘন্টা আগে", + "11 ঘন্টা আগে", + "13 ঘন্টা আগে", + "1 দিন আগে", + "2 দিন আগে", + "3 দিন আগে", + "4 দিন আগে", + "6 দিন আগে", + "8 দিন আগে", + "10 দিন আগে", + "11 দিন আগে", + "12 দিন আগে", + "13 দিন আগে", + "2 সপ্তাহ আগে", + "3 সপ্তাহ আগে", + "1 মাস আগে", + "4 সপ্তাহ আগে", + "7 মাস আগে", + "10 মাস আগে", + "1 বছর পূর্বে", + "2 বছর পূর্বে", + "3 বছর পূর্বে", + "4 বছর পূর্বে", + "5 বছর পূর্বে" + ], + "bs": [ + "prije 35 min.", + "prije 50 min.", + "prije 1 sat", + "prije 2 sata", + "prije 3 sata", + "prije 4 sata", + "prije 5 sati", + "prije 6 sati", + "prije 7 sati", + "prije 8 sati", + "prije 9 sati", + "prije 12 sati", + "prije 17 sati", + "prije 18 sati", + "prije 19 sati", + "prije 20 sati", + "prije 10 sati", + "prije 11 sati", + "prije 13 sati", + "prije 1 d.", + "prije 2 d.", + "prije 3 d.", + "prije 4 d.", + "prije 6 d.", + "prije 8 d.", + "prije 10 d.", + "prije 11 d.", + "prije 12 d.", + "prije 13 d.", + "prije 2 sed.", + "prije 3 sed.", + "prije 1 mj.", + "prije 4 sed.", + "prije 7 mj.", + "prije 10 mj.", + "prije 1 god.", + "prije 2 god.", + "prije 3 god.", + "prije 4 god.", + "prije 5 god." + ], + "ca": [ + "fa 35 min", + "fa 50 min", + "fa 1 h", + "fa 2 h", + "fa 3 h", + "fa 4 h", + "fa 5 h", + "fa 6 h", + "fa 7 h", + "fa 8 h", + "fa 9 h", + "fa 12 h", + "fa 17 h", + "fa 18 h", + "fa 19 h", + "fa 20 h", + "fa 10 h", + "fa 11 h", + "fa 13 h", + "fa 1 dia", + "fa 2 dies", + "fa 3 dies", + "fa 4 dies", + "fa 6 dies", + "fa 8 dies", + "fa 10 dies", + "fa 11 dies", + "fa 12 dies", + "fa 13 dies", + "fa 2 setm.", + "fa 3 setm.", + "fa 1 mes", + "fa 4 setm.", + "fa 7 mesos", + "fa 10 mesos", + "fa 1 any", + "fa 2 anys", + "fa 3 anys", + "fa 4 anys", + "fa 5 anys" + ], + "cs": [ + "před 35 min", + "před 50 min", + "před 1 h", + "před 2 h", + "před 3 h", + "před 4 h", + "před 5 h", + "před 6 h", + "před 7 h", + "před 8 h", + "před 9 h", + "před 12 h", + "před 17 h", + "před 18 h", + "před 19 h", + "před 20 h", + "před 10 h", + "před 11 h", + "před 13 h", + "před 1 dnem", + "před 2 dny", + "před 3 dny", + "před 4 dny", + "před 6 dny", + "před 8 dny", + "před 10 dny", + "před 11 dny", + "před 12 dny", + "před 13 dny", + "před 2 týd.", + "před 3 týd.", + "před 1 měs.", + "před 4 týd.", + "před 7 měs.", + "před 10 měs.", + "před 1 r.", + "před 2 r.", + "před 3 r.", + "před 4 r.", + "před 5 l." + ], + "da": [ + "35 min. siden", + "50 min. siden", + "1 time siden", + "2 timer siden", + "3 timer siden", + "4 timer siden", + "5 timer siden", + "6 timer siden", + "7 timer siden", + "8 timer siden", + "9 timer siden", + "12 timer siden", + "17 timer siden", + "18 timer siden", + "19 timer siden", + "20 timer siden", + "10 timer siden", + "11 timer siden", + "13 timer siden", + "1 dag siden", + "2 dage siden", + "3 dage siden", + "4 dage siden", + "6 dage siden", + "8 dage siden", + "10 dage siden", + "11 dage siden", + "12 dage siden", + "13 dage siden", + "2 uger siden", + "3 uger siden", + "1 md. siden", + "4 uger siden", + "7 mdr. siden", + "10 mdr. siden", + "1 år siden", + "2 år siden", + "3 år siden", + "4 år siden", + "5 år siden" + ], + "de": [ + "vor 35 Min.", + "vor 50 Min.", + "vor 1 Std.", + "vor 2 Std.", + "vor 3 Std.", + "vor 4 Std.", + "vor 5 Std.", + "vor 6 Std.", + "vor 7 Std.", + "vor 8 Std.", + "vor 9 Std.", + "vor 12 Std.", + "vor 17 Std.", + "vor 18 Std.", + "vor 19 Std.", + "vor 20 Std.", + "vor 10 Std.", + "vor 11 Std.", + "vor 13 Std.", + "vor 1 Tag", + "vor 2 Tagen", + "vor 3 Tagen", + "vor 4 Tagen", + "vor 6 Tagen", + "vor 8 Tagen", + "vor 10 Tagen", + "vor 11 Tagen", + "vor 12 Tagen", + "vor 13 Tagen", + "vor 2 Wochen", + "vor 3 Wochen", + "vor 1 Monat", + "vor 4 Wochen", + "vor 7 Monaten", + "vor 10 Monaten", + "vor 1 Jahr", + "vor 2 Jahren", + "vor 3 Jahren", + "vor 4 Jahren", + "vor 5 Jahren" + ], + "el": [ + "πριν από 35 λεπ.", + "πριν από 50 λεπ.", + "πριν από 1 ώ.", + "πριν από 2 ώ.", + "πριν από 3 ώ.", + "πριν από 4 ώ.", + "πριν από 5 ώ.", + "πριν από 6 ώ.", + "πριν από 7 ώ.", + "πριν από 8 ώ.", + "πριν από 9 ώ.", + "πριν από 12 ώ.", + "πριν από 17 ώ.", + "πριν από 18 ώ.", + "πριν από 19 ώ.", + "πριν από 20 ώ.", + "πριν από 10 ώ.", + "πριν από 11 ώ.", + "πριν από 13 ώ.", + "πριν από 1 ημ.", + "πριν από 2 ημ.", + "πριν από 3 ημ.", + "πριν από 4 ημ.", + "πριν από 6 ημ.", + "πριν από 8 ημ.", + "πριν από 10 ημ.", + "πριν από 11 ημ.", + "πριν από 12 ημ.", + "πριν από 13 ημ.", + "πριν από 2 εβδ.", + "πριν από 3 εβδ.", + "πριν από 1 μήνα", + "πριν από 4 εβδ.", + "πριν από 7 μήνες", + "πριν από 10 μήνες", + "πριν από 1 έτος", + "πριν από 2 έτη", + "πριν από 3 έτη", + "πριν από 4 έτη", + "πριν από 5 έτη" + ], + "en": [ + "35 min ago", + "50 min ago", + "1h ago", + "2h ago", + "3h ago", + "4h ago", + "5h ago", + "6h ago", + "7h ago", + "8h ago", + "9h ago", + "12h ago", + "17h ago", + "18h ago", + "19h ago", + "20h ago", + "10h ago", + "11h ago", + "13h ago", + "1d ago", + "2d ago", + "3d ago", + "4d ago", + "6d ago", + "8d ago", + "10d ago", + "11d ago", + "12d ago", + "13d ago", + "2w ago", + "3w ago", + "1mo ago", + "4w ago", + "7mo ago", + "10mo ago", + "1y ago", + "2y ago", + "3y ago", + "4y ago", + "5y ago" + ], + "en-GB": [ + "35 min ago", + "50 min ago", + "1 hr ago", + "2 hr ago", + "3 hr ago", + "4 hr ago", + "5 hr ago", + "6 hr ago", + "7 hr ago", + "8 hr ago", + "9 hr ago", + "12 hr ago", + "17 hr ago", + "18 hr ago", + "19 hr ago", + "20 hr ago", + "10 hr ago", + "11 hr ago", + "13 hr ago", + "1 day ago", + "2 days ago", + "3 days ago", + "4 days ago", + "6 days ago", + "8 days ago", + "10 days ago", + "11 days ago", + "12 days ago", + "13 days ago", + "2 wk ago", + "3 wk ago", + "1 mo ago", + "4 wk ago", + "7 mo ago", + "10 mo ago", + "1 yr ago", + "2 yr ago", + "3 yr ago", + "4 yr ago", + "5 yr ago" + ], + "en-IN": [ + "35 min ago", + "50 min ago", + "1 hr ago", + "2 hr ago", + "3 hr ago", + "4 hr ago", + "5 hr ago", + "6 hr ago", + "7 hr ago", + "8 hr ago", + "9 hr ago", + "12 hr ago", + "17 hr ago", + "18 hr ago", + "19 hr ago", + "20 hr ago", + "10 hr ago", + "11 hr ago", + "13 hr ago", + "1 day ago", + "2 days ago", + "3 days ago", + "4 days ago", + "6 days ago", + "8 days ago", + "10 days ago", + "11 days ago", + "12 days ago", + "13 days ago", + "2 wk ago", + "3 wk ago", + "1 mo ago", + "4 wk ago", + "7 mo ago", + "10 mo ago", + "1 yr ago", + "2 yr ago", + "3 yr ago", + "4 yr ago", + "5 yr ago" + ], + "es": [ + "hace 35 min", + "hace 50 min", + "hace 1 h", + "hace 2 h", + "hace 3 h", + "hace 4 h", + "hace 5 h", + "hace 6 h", + "hace 7 h", + "hace 8 h", + "hace 9 h", + "hace 12 h", + "hace 17 h", + "hace 18 h", + "hace 19 h", + "hace 20 h", + "hace 10 h", + "hace 11 h", + "hace 13 h", + "hace 1 d", + "hace 2 d", + "hace 3 d", + "hace 4 d", + "hace 6 d", + "hace 8 d", + "hace 10 d", + "hace 11 d", + "hace 12 d", + "hace 13 d", + "hace 2 sem.", + "hace 3 sem.", + "hace 1 m", + "hace 4 sem.", + "hace 7 m", + "hace 10 m", + "hace 1 a", + "hace 2 a", + "hace 3 a", + "hace 4 a", + "hace 5 a" + ], + "es-419": [ + "hace 35 min", + "hace 50 min", + "hace 1 h", + "hace 2 h", + "hace 3 h", + "hace 4 h", + "hace 5 h", + "hace 6 h", + "hace 7 h", + "hace 8 h", + "hace 9 h", + "hace 12 h", + "hace 17 h", + "hace 18 h", + "hace 19 h", + "hace 20 h", + "hace 10 h", + "hace 11 h", + "hace 13 h", + "hace 1 día", + "hace 2 días", + "hace 3 días", + "hace 4 días", + "hace 6 días", + "hace 8 días", + "hace 10 días", + "hace 11 días", + "hace 12 días", + "hace 13 días", + "hace 2 sem.", + "hace 3 sem.", + "hace 1 m", + "hace 4 sem.", + "hace 7 m", + "hace 10 m", + "hace 1 a", + "hace 2 a", + "hace 3 a", + "hace 4 a", + "hace 5 a" + ], + "es-US": [ + "hace 35 min", + "hace 50 min", + "hace 1 h", + "hace 2 h", + "hace 3 h", + "hace 4 h", + "hace 5 h", + "hace 6 h", + "hace 7 h", + "hace 8 h", + "hace 9 h", + "hace 12 h", + "hace 17 h", + "hace 18 h", + "hace 19 h", + "hace 20 h", + "hace 10 h", + "hace 11 h", + "hace 13 h", + "hace 1 día", + "hace 2 días", + "hace 3 días", + "hace 4 días", + "hace 6 días", + "hace 8 días", + "hace 10 días", + "hace 11 días", + "hace 12 días", + "hace 13 días", + "hace 2 sem.", + "hace 3 sem.", + "hace 1 m", + "hace 4 sem.", + "hace 7 m", + "hace 10 m", + "hace 1 a", + "hace 2 a", + "hace 3 a", + "hace 4 a", + "hace 5 a" + ], + "et": [ + "35 min eest", + "50 min eest", + "1 t eest", + "2 t eest", + "3 t eest", + "4 t eest", + "5 t eest", + "6 t eest", + "7 t eest", + "8 t eest", + "9 t eest", + "12 t eest", + "17 t eest", + "18 t eest", + "19 t eest", + "20 t eest", + "10 t eest", + "11 t eest", + "13 t eest", + "1 p eest", + "2 p eest", + "3 p eest", + "4 p eest", + "6 p eest", + "8 p eest", + "10 p eest", + "11 p eest", + "12 p eest", + "13 p eest", + "2 näd eest", + "3 näd eest", + "1 kuu eest", + "4 näd eest", + "7 kuu eest", + "10 kuu eest", + "1 a eest", + "2 a eest", + "3 a eest", + "4 a eest", + "5 a eest" + ], + "eu": [ + "Duela 35 minutu", + "Duela 50 minutu", + "Duela 1 ordu", + "Duela 2 ordu", + "Duela 3 ordu", + "Duela 4 ordu", + "Duela 5 ordu", + "Duela 6 ordu", + "Duela 7 ordu", + "Duela 8 ordu", + "Duela 9 ordu", + "Duela 12 ordu", + "Duela 17 ordu", + "Duela 18 ordu", + "Duela 19 ordu", + "Duela 20 ordu", + "Duela 10 ordu", + "Duela 11 ordu", + "Duela 13 ordu", + "Duela 1 egun", + "Duela 2 egun", + "Duela 3 egun", + "Duela 4 egun", + "Duela 6 egun", + "Duela 8 egun", + "Duela 10 egun", + "Duela 11 egun", + "Duela 12 egun", + "Duela 13 egun", + "Duela 2 aste", + "Duela 3 aste", + "Duela 1 hilabete", + "Duela 4 aste", + "Duela 7 hilabete", + "Duela 10 hilabete", + "Duela 1 urte", + "Duela 2 urte", + "Duela 3 urte", + "Duela 4 urte", + "Duela 5 urte" + ], + "fa": [ + "35 دقیقه پیش", + "50 دقیقه پیش", + "1 ساعت پیش", + "2 ساعت پیش", + "3 ساعت پیش", + "4 ساعت پیش", + "5 ساعت پیش", + "6 ساعت پیش", + "7 ساعت پیش", + "8 ساعت پیش", + "9 ساعت پیش", + "12 ساعت پیش", + "17 ساعت پیش", + "18 ساعت پیش", + "19 ساعت پیش", + "20 ساعت پیش", + "10 ساعت پیش", + "11 ساعت پیش", + "13 ساعت پیش", + "1 روز پیش", + "2 روز پیش", + "3 روز پیش", + "4 روز پیش", + "6 روز پیش", + "8 روز پیش", + "10 روز پیش", + "11 روز پیش", + "12 روز پیش", + "13 روز پیش", + "2 هفته پیش", + "3 هفته پیش", + "1 ماه پیش", + "4 هفته پیش", + "7 ماه پیش", + "10 ماه پیش", + "1 سال پیش", + "2 سال پیش", + "3 سال پیش", + "4 سال پیش", + "5 سال پیش" + ], + "fi": [ + "35 min sitten", + "50 min sitten", + "1 t sitten", + "2 t sitten", + "3 t sitten", + "4 t sitten", + "5 t sitten", + "6 t sitten", + "7 t sitten", + "8 t sitten", + "9 t sitten", + "12 t sitten", + "17 t sitten", + "18 t sitten", + "19 t sitten", + "20 t sitten", + "10 t sitten", + "11 t sitten", + "13 t sitten", + "1 pv sitten", + "2 pv sitten", + "3 pv sitten", + "4 pv sitten", + "6 pv sitten", + "8 pv sitten", + "10 pv sitten", + "11 pv sitten", + "12 pv sitten", + "13 pv sitten", + "2 vk sitten", + "3 vk sitten", + "1 kk sitten", + "4 vk sitten", + "7 kk sitten", + "10 kk sitten", + "1 v sitten", + "2 v sitten", + "3 v sitten", + "4 v sitten", + "5 v sitten" + ], + "fil": [ + "35 min. ang nakalipas", + "50 min. ang nakalipas", + "1 oras ang nakalipas", + "2 oras ang nakalipas", + "3 oras ang nakalipas", + "4 oras ang nakalipas", + "5 oras ang nakalipas", + "6 oras ang nakalipas", + "7 oras ang nakalipas", + "8 oras ang nakalipas", + "9 oras ang nakalipas", + "12 oras ang nakalipas", + "17 oras ang nakalipas", + "18 oras ang nakalipas", + "19 oras ang nakalipas", + "20 oras ang nakalipas", + "10 oras ang nakalipas", + "11 oras ang nakalipas", + "13 oras ang nakalipas", + "1 araw ang nakalipas", + "2 araw ang nakalipas", + "3 araw ang nakalipas", + "4 (na) araw ang nakalipas", + "6 (na) araw ang nakalipas", + "8 araw ang nakalipas", + "10 araw ang nakalipas", + "11 araw ang nakalipas", + "12 araw ang nakalipas", + "13 araw ang nakalipas", + "2 linggo ang nakalipas", + "3 linggo ang nakalipas", + "1 buwan ang nakalipas", + "4 (na) linggo ang nakalipas", + "7 buwan ang nakalipas", + "10 buwan ang nakalipas", + "1 taon ang nakalipas", + "2 taon ang nakalipas", + "3 taon ang nakalipas", + "4 taon ang nakalipas", + "5 taon ang nakalipas" + ], + "fr": [ + "il y a 35 min", + "il y a 50 min", + "il y a 1 h", + "il y a 2 h", + "il y a 3 h", + "il y a 4 h", + "il y a 5 h", + "il y a 6 h", + "il y a 7 h", + "il y a 8 h", + "il y a 9 h", + "il y a 12 h", + "il y a 17 h", + "il y a 18 h", + "il y a 19 h", + "il y a 20 h", + "il y a 10 h", + "il y a 11 h", + "il y a 13 h", + "il y a 1 j", + "il y a 2 j", + "il y a 3 j", + "il y a 4 j", + "il y a 6 j", + "il y a 8 j", + "il y a 10 j", + "il y a 11 j", + "il y a 12 j", + "il y a 13 j", + "il y a 2 sem.", + "il y a 3 sem.", + "il y a 1 m.", + "il y a 4 sem.", + "il y a 7 m.", + "il y a 10 m.", + "il y a 1 a", + "il y a 2 a", + "il y a 3 a", + "il y a 4 a", + "il y a 5 a" + ], + "fr-CA": [ + "il y a 35 min", + "il y a 50 min", + "il y a 1 h", + "il y a 2 h", + "il y a 3 h", + "il y a 4 h", + "il y a 5 h", + "il y a 6 h", + "il y a 7 h", + "il y a 8 h", + "il y a 9 h", + "il y a 12 h", + "il y a 17 h", + "il y a 18 h", + "il y a 19 h", + "il y a 20 h", + "il y a 10 h", + "il y a 11 h", + "il y a 13 h", + "il y a 1 j", + "il y a 2 j", + "il y a 3 j", + "il y a 4 j", + "il y a 6 j", + "il y a 8 j", + "il y a 10 j", + "il y a 11 j", + "il y a 12 j", + "il y a 13 j", + "il y a 2 sem.", + "il y a 3 sem.", + "il y a 1 m.", + "il y a 4 sem.", + "il y a 7 m.", + "il y a 10 m.", + "il y a 1 a", + "il y a 2 a", + "il y a 3 a", + "il y a 4 a", + "il y a 5 a" + ], + "gl": [ + "hai 35 min", + "hai 50 min", + "hai 1 h", + "hai 2 h", + "hai 3 h", + "hai 4 h", + "hai 5 h", + "hai 6 h", + "hai 7 h", + "hai 8 h", + "hai 9 h", + "hai 12 h", + "hai 17 h", + "hai 18 h", + "hai 19 h", + "hai 20 h", + "hai 10 h", + "hai 11 h", + "hai 13 h", + "hai 1 día", + "hai 2 días", + "hai 3 días", + "hai 4 días", + "hai 6 días", + "hai 8 días", + "hai 10 días", + "hai 11 días", + "hai 12 días", + "hai 13 días", + "hai 2 sem.", + "hai 3 sem.", + "hai 1 mes", + "hai 4 sem.", + "hai 7 meses", + "hai 10 meses", + "hai 1 ano", + "hai 2 anos", + "hai 3 anos", + "hai 4 anos", + "hai 5 anos" + ], + "gu": [ + "35 મિનિટ પહેલાં", + "50 મિનિટ પહેલાં", + "1 કલાક પહેલાં", + "2 કલાક પહેલાં", + "3 કલાક પહેલાં", + "4 કલાક પહેલાં", + "5 કલાક પહેલાં", + "6 કલાક પહેલાં", + "7 કલાક પહેલાં", + "8 કલાક પહેલાં", + "9 કલાક પહેલાં", + "12 કલાક પહેલાં", + "17 કલાક પહેલાં", + "18 કલાક પહેલાં", + "19 કલાક પહેલાં", + "20 કલાક પહેલાં", + "10 કલાક પહેલાં", + "11 કલાક પહેલાં", + "13 કલાક પહેલાં", + "1 દિવસ પહેલાં", + "2 દિવસ પહેલાં", + "3 દિવસ પહેલાં", + "4 દિવસ પહેલાં", + "6 દિવસ પહેલાં", + "8 દિવસ પહેલાં", + "10 દિવસ પહેલાં", + "11 દિવસ પહેલાં", + "12 દિવસ પહેલાં", + "13 દિવસ પહેલાં", + "2 અઠ. પહેલાં", + "3 અઠ. પહેલાં", + "1 મહિના પહેલાં", + "4 અઠ. પહેલાં", + "7 મહિના પહેલાં", + "10 મહિના પહેલાં", + "1 વર્ષ પહેલાં", + "2 વર્ષ પહેલાં", + "3 વર્ષ પહેલાં", + "4 વર્ષ પહેલાં", + "5 વર્ષ પહેલાં" + ], + "hi": [ + "35 मि॰ पहले", + "50 मि॰ पहले", + "1 घं॰ पहले", + "2 घं॰ पहले", + "3 घं॰ पहले", + "4 घं॰ पहले", + "5 घं॰ पहले", + "6 घं॰ पहले", + "7 घं॰ पहले", + "8 घं॰ पहले", + "9 घं॰ पहले", + "12 घं॰ पहले", + "17 घं॰ पहले", + "18 घं॰ पहले", + "19 घं॰ पहले", + "20 घं॰ पहले", + "10 घं॰ पहले", + "11 घं॰ पहले", + "13 घं॰ पहले", + "1 दिन पहले", + "2 दिन पहले", + "3 दिन पहले", + "4 दिन पहले", + "6 दिन पहले", + "8 दिन पहले", + "10 दिन पहले", + "11 दिन पहले", + "12 दिन पहले", + "13 दिन पहले", + "2 सप्ताह पहले", + "3 सप्ताह पहले", + "1 माह पहले", + "4 सप्ताह पहले", + "7 माह पहले", + "10 माह पहले", + "1 वर्ष पहले", + "2 वर्ष पहले", + "3 वर्ष पहले", + "4 वर्ष पहले", + "5 वर्ष पहले" + ], + "hr": [ + "prije 35 min", + "prije 50 min", + "prije 1 h", + "prije 2 h", + "prije 3 h", + "prije 4 h", + "prije 5 h", + "prije 6 h", + "prije 7 h", + "prije 8 h", + "prije 9 h", + "prije 12 h", + "prije 17 h", + "prije 18 h", + "prije 19 h", + "prije 20 h", + "prije 10 h", + "prije 11 h", + "prije 13 h", + "prije 1 dan", + "prije 2 dana", + "prije 3 dana", + "prije 4 dana", + "prije 6 dana", + "prije 8 dana", + "prije 10 dana", + "prije 11 dana", + "prije 12 dana", + "prije 13 dana", + "prije 2 tj.", + "prije 3 tj.", + "prije 1 mj.", + "prije 4 tj.", + "prije 7 mj.", + "prije 10 mj.", + "prije 1 g.", + "prije 2 g.", + "prije 3 g.", + "prije 4 g.", + "prije 5 g." + ], + "hu": [ + "35 perccel ezelőtt", + "50 perccel ezelőtt", + "1 órával ezelőtt", + "2 órával ezelőtt", + "3 órával ezelőtt", + "4 órával ezelőtt", + "5 órával ezelőtt", + "6 órával ezelőtt", + "7 órával ezelőtt", + "8 órával ezelőtt", + "9 órával ezelőtt", + "12 órával ezelőtt", + "17 órával ezelőtt", + "18 órával ezelőtt", + "19 órával ezelőtt", + "20 órával ezelőtt", + "10 órával ezelőtt", + "11 órával ezelőtt", + "13 órával ezelőtt", + "1 napja", + "2 napja", + "3 napja", + "4 napja", + "6 napja", + "8 napja", + "10 napja", + "11 napja", + "12 napja", + "13 napja", + "2 héttel ezelőtt", + "3 héttel ezelőtt", + "1 hónappal ezelőtt", + "4 héttel ezelőtt", + "7 hónappal ezelőtt", + "10 hónappal ezelőtt", + "1 évvel ezelőtt", + "2 évvel ezelőtt", + "3 évvel ezelőtt", + "4 évvel ezelőtt", + "5 évvel ezelőtt" + ], + "hy": [ + "35 ր առաջ", + "50 ր առաջ", + "1 ժ առաջ", + "2 ժ առաջ", + "3 ժ առաջ", + "4 ժ առաջ", + "5 ժ առաջ", + "6 ժ առաջ", + "7 ժ առաջ", + "8 ժ առաջ", + "9 ժ առաջ", + "12 ժ առաջ", + "17 ժ առաջ", + "18 ժ առաջ", + "19 ժ առաջ", + "20 ժ առաջ", + "10 ժ առաջ", + "11 ժ առաջ", + "13 ժ առաջ", + "1 օր առաջ", + "2 օր առաջ", + "3 օր առաջ", + "4 օր առաջ", + "6 օր առաջ", + "8 օր առաջ", + "10 օր առաջ", + "11 օր առաջ", + "12 օր առաջ", + "13 օր առաջ", + "2 շաբ առաջ", + "3 շաբ առաջ", + "1 ամիս առաջ", + "4 շաբ առաջ", + "7 ամիս առաջ", + "10 ամիս առաջ", + "1 տ առաջ", + "2 տ առաջ", + "3 տ առաջ", + "4 տ առաջ", + "5 տ առաջ" + ], + "id": [ + "35 mnt lalu", + "50 mnt lalu", + "1 jam lalu", + "2 jam lalu", + "3 jam lalu", + "4 jam lalu", + "5 jam lalu", + "6 jam lalu", + "7 jam lalu", + "8 jam lalu", + "9 jam lalu", + "12 jam lalu", + "17 jam lalu", + "18 jam lalu", + "19 jam lalu", + "20 jam lalu", + "10 jam lalu", + "11 jam lalu", + "13 jam lalu", + "1 h lalu", + "2 h lalu", + "3 h lalu", + "4 h lalu", + "6 h lalu", + "8 h lalu", + "10 h lalu", + "11 h lalu", + "12 h lalu", + "13 h lalu", + "2 mgg lalu", + "3 mgg lalu", + "1 bln lalu", + "4 mgg lalu", + "7 bln lalu", + "10 bln lalu", + "1 thn lalu", + "2 thn lalu", + "3 thn lalu", + "4 thn lalu", + "5 thn lalu" + ], + "is": [ + "fyrir 35 mín.", + "fyrir 50 mín.", + "fyrir 1 klst.", + "fyrir 2 klst.", + "fyrir 3 klst.", + "fyrir 4 klst.", + "fyrir 5 klst.", + "fyrir 6 klst.", + "fyrir 7 klst.", + "fyrir 8 klst.", + "fyrir 9 klst.", + "fyrir 12 klst.", + "fyrir 17 klst.", + "fyrir 18 klst.", + "fyrir 19 klst.", + "fyrir 20 klst.", + "fyrir 10 klst.", + "fyrir 11 klst.", + "fyrir 13 klst.", + "fyrir 1 degi", + "fyrir 2 dögum", + "fyrir 3 dögum", + "fyrir 4 dögum", + "fyrir 6 dögum", + "fyrir 8 dögum", + "fyrir 10 dögum", + "fyrir 11 dögum", + "fyrir 12 dögum", + "fyrir 13 dögum", + "fyrir 2 vikum", + "fyrir 3 vikum", + "fyrir 1 mán.", + "fyrir 4 vikum", + "fyrir 7 mán.", + "fyrir 10 mán.", + "fyrir 1 ári", + "fyrir 2 árum", + "fyrir 3 árum", + "fyrir 4 árum", + "fyrir 5 árum" + ], + "it": [ + "35 min fa", + "50 min fa", + "1 h fa", + "2 h fa", + "3 h fa", + "4 h fa", + "5 h fa", + "6 h fa", + "7 h fa", + "8 h fa", + "9 h fa", + "12 h fa", + "17 h fa", + "18 h fa", + "19 h fa", + "20 h fa", + "10 h fa", + "11 h fa", + "13 h fa", + "1 g fa", + "2 gg fa", + "3 gg fa", + "4 gg fa", + "6 gg fa", + "8 gg fa", + "10 gg fa", + "11 gg fa", + "12 gg fa", + "13 gg fa", + "2 sett. fa", + "3 sett. fa", + "1 mese fa", + "4 sett. fa", + "7 mesi fa", + "10 mesi fa", + "1 anno fa", + "2 anni fa", + "3 anni fa", + "4 anni fa", + "5 anni fa" + ], + "iw": [ + "לפני 35 דק׳", + "לפני 50 דק׳", + "לפני שעה", + "לפני שעתיים", + "לפני 3 שע׳", + "לפני 4 שע׳", + "לפני 5 שע׳", + "לפני 6 שע׳", + "לפני 7 שע׳", + "לפני 8 שע׳", + "לפני 9 שע׳", + "לפני 12 שע׳", + "לפני 17 שע׳", + "לפני 18 שע׳", + "לפני 19 שע׳", + "לפני 20 שע׳", + "לפני 10 שע׳", + "לפני 11 שע׳", + "לפני 13 שע׳", + "אתמול", + "לפני יומיים", + "לפני 3 ימים", + "לפני 4 ימים", + "לפני 6 ימים", + "לפני 8 ימים", + "לפני 10 ימים", + "לפני 11 ימים", + "לפני 12 ימים", + "לפני 13 ימים", + "לפני שבועיים", + "לפני 3 שב׳", + "לפני חודש", + "לפני 4 שב׳", + "לפני 7 חודשים", + "לפני 10 חודשים", + "לפני שנה", + "לפני שנתיים", + "לפני 3 שנים", + "לפני 4 שנים", + "לפני 5 שנים" + ], + "ja": [ + "35 分前", + "50 分前", + "1 時間前", + "2 時間前", + "3 時間前", + "4 時間前", + "5 時間前", + "6 時間前", + "7 時間前", + "8 時間前", + "9 時間前", + "12 時間前", + "17 時間前", + "18 時間前", + "19 時間前", + "20 時間前", + "10 時間前", + "11 時間前", + "13 時間前", + "1 日前", + "2 日前", + "3 日前", + "4 日前", + "6 日前", + "8 日前", + "10 日前", + "11 日前", + "12 日前", + "13 日前", + "2 週間前", + "3 週間前", + "1 か月前", + "4 週間前", + "7 か月前", + "10 か月前", + "1 年前", + "2 年前", + "3 年前", + "4 年前", + "5 年前" + ], + "ka": [ + "35 წთ წინ", + "50 წთ წინ", + "1 სთ წინ", + "2 სთ წინ", + "3 სთ წინ", + "4 სთ წინ", + "5 სთ წინ", + "6 სთ წინ", + "7 სთ წინ", + "8 სთ წინ", + "9 სთ წინ", + "12 სთ წინ", + "17 სთ წინ", + "18 სთ წინ", + "19 სთ წინ", + "20 სთ წინ", + "10 სთ წინ", + "11 სთ წინ", + "13 სთ წინ", + "1 დღის წინ", + "2 დღის წინ", + "3 დღის წინ", + "4 დღის წინ", + "6 დღის წინ", + "8 დღის წინ", + "10 დღის წინ", + "11 დღის წინ", + "12 დღის წინ", + "13 დღის წინ", + "2 კვ. წინ", + "3 კვ. წინ", + "1 თვის წინ", + "4 კვ. წინ", + "7 თვის წინ", + "10 თვის წინ", + "1 წლის წინ", + "2 წლის წინ", + "3 წლის წინ", + "4 წლის წინ", + "5 წლის წინ" + ], + "kk": [ + "35 мин. бұрын", + "50 мин. бұрын", + "1 сағ. бұрын", + "2 сағ. бұрын", + "3 сағ. бұрын", + "4 сағ. бұрын", + "5 сағ. бұрын", + "6 сағ. бұрын", + "7 сағ. бұрын", + "8 сағ. бұрын", + "9 сағ. бұрын", + "12 сағ. бұрын", + "17 сағ. бұрын", + "18 сағ. бұрын", + "19 сағ. бұрын", + "20 сағ. бұрын", + "10 сағ. бұрын", + "11 сағ. бұрын", + "13 сағ. бұрын", + "1 күн бұрын", + "2 күн бұрын", + "3 күн бұрын", + "4 күн бұрын", + "6 күн бұрын", + "8 күн бұрын", + "10 күн бұрын", + "11 күн бұрын", + "12 күн бұрын", + "13 күн бұрын", + "2 ап. бұрын", + "3 ап. бұрын", + "1 ай бұрын", + "4 ап. бұрын", + "7 ай бұрын", + "10 ай бұрын", + "1 ж. бұрын", + "2 ж. бұрын", + "3 ж. бұрын", + "4 ж. бұрын", + "5 ж. бұрын" + ], + "km": [ + "35 នាទី​​មុន", + "50 នាទី​​មុន", + "1 ម៉ោង​មុន", + "2 ម៉ោង​មុន", + "3 ម៉ោង​មុន", + "4 ម៉ោង​មុន", + "5 ម៉ោង​មុន", + "6 ម៉ោង​មុន", + "7 ម៉ោង​មុន", + "8 ម៉ោង​មុន", + "9 ម៉ោង​មុន", + "12 ម៉ោង​មុន", + "17 ម៉ោង​មុន", + "18 ម៉ោង​មុន", + "19 ម៉ោង​មុន", + "20 ម៉ោង​មុន", + "10 ម៉ោង​មុន", + "11 ម៉ោង​មុន", + "13 ម៉ោង​មុន", + "1 ថ្ងៃ​​មុន", + "2 ថ្ងៃ​​មុន", + "3 ថ្ងៃ​​មុន", + "4 ថ្ងៃ​​មុន", + "6 ថ្ងៃ​​មុន", + "8 ថ្ងៃ​​មុន", + "10 ថ្ងៃ​​មុន", + "11 ថ្ងៃ​​មុន", + "12 ថ្ងៃ​​មុន", + "13 ថ្ងៃ​​មុន", + "2 សប្ដាហ៍​មុន", + "3 សប្ដាហ៍​មុន", + "1 ខែមុន", + "4 សប្ដាហ៍​មុន", + "7 ខែមុន", + "10 ខែមុន", + "1 ឆ្នាំ​មុន", + "2 ឆ្នាំ​មុន", + "3 ឆ្នាំ​មុន", + "4 ឆ្នាំ​មុន", + "5 ឆ្នាំ​មុន" + ], + "kn": [ + "35 ನಿಮಿಷಗಳ ಹಿಂದೆ", + "50 ನಿಮಿಷಗಳ ಹಿಂದೆ", + "1 ಗಂಟೆ ಹಿಂದೆ", + "2 ಗಂಟೆಗಳ ಹಿಂದೆ", + "3 ಗಂಟೆಗಳ ಹಿಂದೆ", + "4 ಗಂಟೆಗಳ ಹಿಂದೆ", + "5 ಗಂಟೆಗಳ ಹಿಂದೆ", + "6 ಗಂಟೆಗಳ ಹಿಂದೆ", + "7 ಗಂಟೆಗಳ ಹಿಂದೆ", + "8 ಗಂಟೆಗಳ ಹಿಂದೆ", + "9 ಗಂಟೆಗಳ ಹಿಂದೆ", + "12 ಗಂಟೆಗಳ ಹಿಂದೆ", + "17 ಗಂಟೆಗಳ ಹಿಂದೆ", + "18 ಗಂಟೆಗಳ ಹಿಂದೆ", + "19 ಗಂಟೆಗಳ ಹಿಂದೆ", + "20 ಗಂಟೆಗಳ ಹಿಂದೆ", + "10 ಗಂಟೆಗಳ ಹಿಂದೆ", + "11 ಗಂಟೆಗಳ ಹಿಂದೆ", + "13 ಗಂಟೆಗಳ ಹಿಂದೆ", + "1 ದಿನದ ಹಿಂದೆ", + "2 ದಿನಗಳ ಹಿಂದೆ", + "3 ದಿನಗಳ ಹಿಂದೆ", + "4 ದಿನಗಳ ಹಿಂದೆ", + "6 ದಿನಗಳ ಹಿಂದೆ", + "8 ದಿನಗಳ ಹಿಂದೆ", + "10 ದಿನಗಳ ಹಿಂದೆ", + "11 ದಿನಗಳ ಹಿಂದೆ", + "12 ದಿನಗಳ ಹಿಂದೆ", + "13 ದಿನಗಳ ಹಿಂದೆ", + "2 ವಾರಗಳ ಹಿಂದೆ", + "3 ವಾರಗಳ ಹಿಂದೆ", + "1 ತಿಂಗಳು ಹಿಂದೆ", + "4 ವಾರಗಳ ಹಿಂದೆ", + "7 ತಿಂಗಳುಗಳ ಹಿಂದೆ", + "10 ತಿಂಗಳುಗಳ ಹಿಂದೆ", + "1 ವರ್ಷದ ಹಿಂದೆ", + "2 ವರ್ಷಗಳ ಹಿಂದೆ", + "3 ವರ್ಷಗಳ ಹಿಂದೆ", + "4 ವರ್ಷಗಳ ಹಿಂದೆ", + "5 ವರ್ಷಗಳ ಹಿಂದೆ" + ], + "ko": [ + "35분 전", + "50분 전", + "1시간 전", + "2시간 전", + "3시간 전", + "4시간 전", + "5시간 전", + "6시간 전", + "7시간 전", + "8시간 전", + "9시간 전", + "12시간 전", + "17시간 전", + "18시간 전", + "19시간 전", + "20시간 전", + "10시간 전", + "11시간 전", + "13시간 전", + "1일 전", + "2일 전", + "3일 전", + "4일 전", + "6일 전", + "8일 전", + "10일 전", + "11일 전", + "12일 전", + "13일 전", + "2주 전", + "3주 전", + "1개월 전", + "4주 전", + "7개월 전", + "10개월 전", + "1년 전", + "2년 전", + "3년 전", + "4년 전", + "5년 전" + ], + "ky": [ + "35 мүн. мурун", + "50 мүн. мурун", + "1 саат. мурун", + "2 саат. мурун", + "3 саат. мурун", + "4 саат. мурун", + "5 саат. мурун", + "6 саат. мурун", + "7 саат. мурун", + "8 саат. мурун", + "9 саат. мурун", + "12 саат. мурун", + "17 саат. мурун", + "18 саат. мурун", + "19 саат. мурун", + "20 саат. мурун", + "10 саат. мурун", + "11 саат. мурун", + "13 саат. мурун", + "1 күн мурун", + "2 күн мурун", + "3 күн мурун", + "4 күн мурун", + "6 күн мурун", + "8 күн мурун", + "10 күн мурун", + "11 күн мурун", + "12 күн мурун", + "13 күн мурун", + "2 апт. мурун", + "3 апт. мурун", + "1 ай мурун", + "4 апт. мурун", + "7 ай мурун", + "10 ай мурун", + "1 жыл мурун", + "2 жыл мурун", + "3 жыл мурун", + "4 жыл мурун", + "5 жыл мурун" + ], + "lo": [ + "35 ນທ. ກ່ອນ", + "50 ນທ. ກ່ອນ", + "1 ຊມ. ກ່ອນ", + "2 ຊມ. ກ່ອນ", + "3 ຊມ. ກ່ອນ", + "4 ຊມ. ກ່ອນ", + "5 ຊມ. ກ່ອນ", + "6 ຊມ. ກ່ອນ", + "7 ຊມ. ກ່ອນ", + "8 ຊມ. ກ່ອນ", + "9 ຊມ. ກ່ອນ", + "12 ຊມ. ກ່ອນ", + "17 ຊມ. ກ່ອນ", + "18 ຊມ. ກ່ອນ", + "19 ຊມ. ກ່ອນ", + "20 ຊມ. ກ່ອນ", + "10 ຊມ. ກ່ອນ", + "11 ຊມ. ກ່ອນ", + "13 ຊມ. ກ່ອນ", + "1 ມື້ກ່ອນ", + "2 ມື້ກ່ອນ", + "3 ມື້ກ່ອນ", + "4 ມື້ກ່ອນ", + "6 ມື້ກ່ອນ", + "8 ມື້ກ່ອນ", + "10 ມື້ກ່ອນ", + "11 ມື້ກ່ອນ", + "12 ມື້ກ່ອນ", + "13 ມື້ກ່ອນ", + "2 ອທ. ກ່ອນ", + "3 ອທ. ກ່ອນ", + "1 ດ. ກ່ອນ", + "4 ອທ. ກ່ອນ", + "7 ດ. ກ່ອນ", + "10 ດ. ກ່ອນ", + "1 ປີກ່ອນ", + "2 ປີກ່ອນ", + "3 ປີກ່ອນ", + "4 ປີກ່ອນ", + "5 ປີກ່ອນ" + ], + "lt": [ + "prieš 35 min.", + "prieš 50 min.", + "prieš 1 val.", + "prieš 2 val.", + "prieš 3 val.", + "prieš 4 val.", + "prieš 5 val.", + "prieš 6 val.", + "prieš 7 val.", + "prieš 8 val.", + "prieš 9 val.", + "prieš 12 val.", + "prieš 17 val.", + "prieš 18 val.", + "prieš 19 val.", + "prieš 20 val.", + "prieš 10 val.", + "prieš 11 val.", + "prieš 13 val.", + "prieš 1 d.", + "prieš 2 d.", + "prieš 3 d.", + "prieš 4 d.", + "prieš 6 d.", + "prieš 8 d.", + "prieš 10 d.", + "prieš 11 d.", + "prieš 12 d.", + "prieš 13 d.", + "prieš 2 sav.", + "prieš 3 sav.", + "prieš 1 mėn.", + "prieš 4 sav.", + "prieš 7 mėn.", + "prieš 10 mėn.", + "prieš 1 m.", + "prieš 2 m.", + "prieš 3 m.", + "prieš 4 m.", + "prieš 5 m." + ], + "lv": [ + "pirms 35 min.", + "pirms 50 min.", + "pirms 1 st.", + "pirms 2 st.", + "pirms 3 st.", + "pirms 4 st.", + "pirms 5 st.", + "pirms 6 st.", + "pirms 7 st.", + "pirms 8 st.", + "pirms 9 st.", + "pirms 12 st.", + "pirms 17 st.", + "pirms 18 st.", + "pirms 19 st.", + "pirms 20 st.", + "pirms 10 st.", + "pirms 11 st.", + "pirms 13 st.", + "pirms 1 d.", + "pirms 2 d.", + "pirms 3 d.", + "pirms 4 d.", + "pirms 6 d.", + "pirms 8 d.", + "pirms 10 d.", + "pirms 11 d.", + "pirms 12 d.", + "pirms 13 d.", + "pirms 2 ned.", + "pirms 3 ned.", + "pirms 1 mēn.", + "pirms 4 ned.", + "pirms 7 mēn.", + "pirms 10 mēn.", + "pirms 1 g.", + "pirms 2 g.", + "pirms 3 g.", + "pirms 4 g.", + "pirms 5 g." + ], + "mk": [ + "пред 35 мин.", + "пред 50 мин.", + "пред 1 час", + "пред 2 часа", + "пред 3 часа", + "пред 4 часа", + "пред 5 часа", + "пред 6 часа", + "пред 7 часа", + "пред 8 часа", + "пред 9 часа", + "пред 12 часа", + "пред 17 часа", + "пред 18 часа", + "пред 19 часа", + "пред 20 часа", + "пред 10 часа", + "пред 11 часа", + "пред 13 часа", + "пред 1 ден", + "пред 2 дена", + "пред 3 дена", + "пред 4 дена", + "пред 6 дена", + "пред 8 дена", + "пред 10 дена", + "пред 11 дена", + "пред 12 дена", + "пред 13 дена", + "пред 2 седмици", + "пред 3 седмици", + "пред 1 месец", + "пред 4 седмици", + "пред 7 месеци", + "пред 10 месеци", + "пред 1 год.", + "пред 2 год.", + "пред 3 год.", + "пред 4 год.", + "пред 5 год." + ], + "ml": [ + "35 മിനിറ്റ് മുമ്പ്", + "50 മിനിറ്റ് മുമ്പ്", + "1 മണിക്കൂർ മുമ്പ്", + "2 മണിക്കൂർ മുമ്പ്", + "3 മണിക്കൂർ മുമ്പ്", + "4 മണിക്കൂർ മുമ്പ്", + "5 മണിക്കൂർ മുമ്പ്", + "6 മണിക്കൂർ മുമ്പ്", + "7 മണിക്കൂർ മുമ്പ്", + "8 മണിക്കൂർ മുമ്പ്", + "9 മണിക്കൂർ മുമ്പ്", + "12 മണിക്കൂർ മുമ്പ്", + "17 മണിക്കൂർ മുമ്പ്", + "18 മണിക്കൂർ മുമ്പ്", + "19 മണിക്കൂർ മുമ്പ്", + "20 മണിക്കൂർ മുമ്പ്", + "10 മണിക്കൂർ മുമ്പ്", + "11 മണിക്കൂർ മുമ്പ്", + "13 മണിക്കൂർ മുമ്പ്", + "1 ദിവസം മുമ്പ്", + "2 ദിവസം മുമ്പ്", + "3 ദിവസം മുമ്പ്", + "4 ദിവസം മുമ്പ്", + "6 ദിവസം മുമ്പ്", + "8 ദിവസം മുമ്പ്", + "10 ദിവസം മുമ്പ്", + "11 ദിവസം മുമ്പ്", + "12 ദിവസം മുമ്പ്", + "13 ദിവസം മുമ്പ്", + "2 ആഴ്ച മുമ്പ്", + "3 ആഴ്ച മുമ്പ്", + "1 മാസം മുമ്പ്", + "4 ആഴ്ച മുമ്പ്", + "7 മാസം മുമ്പ്", + "10 മാസം മുമ്പ്", + "1 വർഷം മുമ്പ്", + "2 വർഷം മുമ്പ്", + "3 വർഷം മുമ്പ്", + "4 വർഷം മുമ്പ്", + "5 വർഷം മുമ്പ്" + ], + "mn": [ + "35 мин өмнө", + "50 мин өмнө", + "1 ц өмнө", + "2 ц өмнө", + "3 ц өмнө", + "4 ц өмнө", + "5 ц өмнө", + "6 ц өмнө", + "7 ц өмнө", + "8 ц өмнө", + "9 ц өмнө", + "12 ц өмнө", + "17 ц өмнө", + "18 ц өмнө", + "19 ц өмнө", + "20 ц өмнө", + "10 ц өмнө", + "11 ц өмнө", + "13 ц өмнө", + "1 өдрийн өмнө", + "2 өдрийн өмнө", + "3 өдрийн өмнө", + "4 өдрийн өмнө", + "6 өдрийн өмнө", + "8 өдрийн өмнө", + "10 өдрийн өмнө", + "11 өдрийн өмнө", + "12 өдрийн өмнө", + "13 өдрийн өмнө", + "2 7 хоногийн өмнө", + "3 7 хоногийн өмнө", + "1 сарын өмнө", + "4 7 хоногийн өмнө", + "7 сарын өмнө", + "10 сарын өмнө", + "1 жилийн өмнө", + "2 жилийн өмнө", + "3 жилийн өмнө", + "4 жилийн өмнө", + "5 жилийн өмнө" + ], + "mr": [ + "35 मिनि. पूर्वी", + "50 मिनि. पूर्वी", + "1 तासापूर्वी", + "2 तासांपूर्वी", + "3 तासांपूर्वी", + "4 तासांपूर्वी", + "5 तासांपूर्वी", + "6 तासांपूर्वी", + "7 तासांपूर्वी", + "8 तासांपूर्वी", + "9 तासांपूर्वी", + "12 तासांपूर्वी", + "17 तासांपूर्वी", + "18 तासांपूर्वी", + "19 तासांपूर्वी", + "20 तासांपूर्वी", + "10 तासांपूर्वी", + "11 तासांपूर्वी", + "13 तासांपूर्वी", + "1 दिवसापूर्वी", + "2 दिवसांपूर्वी", + "3 दिवसांपूर्वी", + "4 दिवसांपूर्वी", + "6 दिवसांपूर्वी", + "8 दिवसांपूर्वी", + "10 दिवसांपूर्वी", + "11 दिवसांपूर्वी", + "12 दिवसांपूर्वी", + "13 दिवसांपूर्वी", + "2 आठवड्यांपूर्वी", + "3 आठवड्यांपूर्वी", + "1 महिन्यापूर्वी", + "4 आठवड्यांपूर्वी", + "7 महिन्यांपूर्वी", + "10 महिन्यांपूर्वी", + "1 वर्षापूर्वी", + "2 वर्षांपूर्वी", + "3 वर्षांपूर्वी", + "4 वर्षांपूर्वी", + "5 वर्षांपूर्वी" + ], + "ms": [ + "35 min lalu", + "50 min lalu", + "1 jam lalu", + "2 jam lalu", + "3 jam lalu", + "4 jam lalu", + "5 jam lalu", + "6 jam lalu", + "7 jam lalu", + "8 jam lalu", + "9 jam lalu", + "12 jam lalu", + "17 jam lalu", + "18 jam lalu", + "19 jam lalu", + "20 jam lalu", + "10 jam lalu", + "11 jam lalu", + "13 jam lalu", + "1 hari lalu", + "2 hari lalu", + "3 hari lalu", + "4 hari lalu", + "6 hari lalu", + "8 hari lalu", + "10 hari lalu", + "11 hari lalu", + "12 hari lalu", + "13 hari lalu", + "2 mgu lalu", + "3 mgu lalu", + "1 bln lalu", + "4 mgu lalu", + "7 bln lalu", + "10 bln lalu", + "1 thn lalu", + "2 thn lalu", + "3 thn lalu", + "4 thn lalu", + "5 thn lalu" + ], + "my": [ + "ပြီးခဲ့သည့် 35 မိနစ်", + "ပြီးခဲ့သည့် 50 မိနစ်", + "ပြီးခဲ့သည့် 1 နာရီ", + "ပြီးခဲ့သည့် 2 နာရီ", + "ပြီးခဲ့သည့် 3 နာရီ", + "ပြီးခဲ့သည့် 4 နာရီ", + "ပြီးခဲ့သည့် 5 နာရီ", + "ပြီးခဲ့သည့် 6 နာရီ", + "ပြီးခဲ့သည့် 7 နာရီ", + "ပြီးခဲ့သည့် 8 နာရီ", + "ပြီးခဲ့သည့် 9 နာရီ", + "ပြီးခဲ့သည့် 12 နာရီ", + "ပြီးခဲ့သည့် 17 နာရီ", + "ပြီးခဲ့သည့် 18 နာရီ", + "ပြီးခဲ့သည့် 19 နာရီ", + "ပြီးခဲ့သည့် 20 နာရီ", + "ပြီးခဲ့သည့် 10 နာရီ", + "ပြီးခဲ့သည့် 11 နာရီ", + "ပြီးခဲ့သည့် 13 နာရီ", + "ပြီးခဲ့သည့် 1 ရက်", + "ပြီးခဲ့သည့် 2 ရက်", + "ပြီးခဲ့သည့် 3 ရက်", + "ပြီးခဲ့သည့် 4 ရက်", + "ပြီးခဲ့သည့် 6 ရက်", + "ပြီးခဲ့သည့် 8 ရက်", + "ပြီးခဲ့သည့် 10 ရက်", + "ပြီးခဲ့သည့် 11 ရက်", + "ပြီးခဲ့သည့် 12 ရက်", + "ပြီးခဲ့သည့် 13 ရက်", + "ပြီးခဲ့သည့် 2 ပတ်", + "ပြီးခဲ့သည့် 3 ပတ်", + "ပြီးခဲ့သည့် 1 လ", + "ပြီးခဲ့သည့် 4 ပတ်", + "ပြီးခဲ့သည့် 7 လ", + "ပြီးခဲ့သည့် 10 လ", + "ပြီးခဲ့သည့် 1 နှစ်", + "ပြီးခဲ့သည့် 2 နှစ်", + "ပြီးခဲ့သည့် 3 နှစ်", + "ပြီးခဲ့သည့် 4 နှစ်", + "ပြီးခဲ့သည့် 5 နှစ်" + ], + "ne": [ + "35 मिनेट पहिले", + "50 मिनेट पहिले", + "1 घण्टा पहिले", + "2 घण्टा पहिले", + "3 घण्टा पहिले", + "4 घण्टा पहिले", + "5 घण्टा पहिले", + "6 घण्टा पहिले", + "7 घण्टा पहिले", + "8 घण्टा पहिले", + "9 घण्टा पहिले", + "12 घण्टा पहिले", + "17 घण्टा पहिले", + "18 घण्टा पहिले", + "19 घण्टा पहिले", + "20 घण्टा पहिले", + "10 घण्टा पहिले", + "11 घण्टा पहिले", + "13 घण्टा पहिले", + "1 दिन पहिले", + "2 दिन पहिले", + "3 दिन पहिले", + "4 दिन पहिले", + "6 दिन पहिले", + "8 दिन पहिले", + "10 दिन पहिले", + "11 दिन पहिले", + "12 दिन पहिले", + "13 दिन पहिले", + "2 हप्ता पहिले", + "3 हप्ता पहिले", + "1 महिना पहिले", + "4 हप्ता पहिले", + "7 महिना पहिले", + "10 महिना पहिले", + "1 वर्ष अघि", + "2 वर्ष अघि", + "3 वर्ष अघि", + "4 वर्ष अघि", + "5 वर्ष अघि" + ], + "nl": [ + "35 min. geleden", + "50 min. geleden", + "1 uur geleden", + "2 uur geleden", + "3 uur geleden", + "4 uur geleden", + "5 uur geleden", + "6 uur geleden", + "7 uur geleden", + "8 uur geleden", + "9 uur geleden", + "12 uur geleden", + "17 uur geleden", + "18 uur geleden", + "19 uur geleden", + "20 uur geleden", + "10 uur geleden", + "11 uur geleden", + "13 uur geleden", + "1 dag geleden", + "2 dgn geleden", + "3 dgn geleden", + "4 dgn geleden", + "6 dgn geleden", + "8 dgn geleden", + "10 dgn geleden", + "11 dgn geleden", + "12 dgn geleden", + "13 dgn geleden", + "2 weken geleden", + "3 weken geleden", + "1 maand geleden", + "4 weken geleden", + "7 maanden geleden", + "10 maanden geleden", + "1 jaar geleden", + "2 jaar geleden", + "3 jaar geleden", + "4 jaar geleden", + "5 jaar geleden" + ], + "no": [ + "for 35 min siden", + "for 50 min siden", + "for 1 t siden", + "for 2 t siden", + "for 3 t siden", + "for 4 t siden", + "for 5 t siden", + "for 6 t siden", + "for 7 t siden", + "for 8 t siden", + "for 9 t siden", + "for 12 t siden", + "for 17 t siden", + "for 18 t siden", + "for 19 t siden", + "for 20 t siden", + "for 10 t siden", + "for 11 t siden", + "for 13 t siden", + "for 1 d. siden", + "for 2 d. siden", + "for 3 d. siden", + "for 4 d. siden", + "for 6 d. siden", + "for 8 d. siden", + "for 10 d. siden", + "for 11 d. siden", + "for 12 d. siden", + "for 13 d. siden", + "for 2 u. siden", + "for 3 u. siden", + "for 1 md. siden", + "for 4 u. siden", + "for 7 md. siden", + "for 10 md. siden", + "for 1 år siden", + "for 2 år siden", + "for 3 år siden", + "for 4 år siden", + "for 5 år siden" + ], + "or": [ + "35 ମି. ପୂର୍ବେ", + "50 ମି. ପୂର୍ବେ", + "1 ଘ. ପୂର୍ବେ", + "2 ଘ. ପୂର୍ବେ", + "3 ଘ. ପୂର୍ବେ", + "4 ଘ. ପୂର୍ବେ", + "5 ଘ. ପୂର୍ବେ", + "6 ଘ. ପୂର୍ବେ", + "7 ଘ. ପୂର୍ବେ", + "8 ଘ. ପୂର୍ବେ", + "9 ଘ. ପୂର୍ବେ", + "12 ଘ. ପୂର୍ବେ", + "17 ଘ. ପୂର୍ବେ", + "18 ଘ. ପୂର୍ବେ", + "19 ଘ. ପୂର୍ବେ", + "20 ଘ. ପୂର୍ବେ", + "10 ଘ. ପୂର୍ବେ", + "11 ଘ. ପୂର୍ବେ", + "13 ଘ. ପୂର୍ବେ", + "1 ଦିନ ପୂର୍ବେ", + "2 ଦିନ ପୂର୍ବେ", + "3 ଦିନ ପୂର୍ବେ", + "4 ଦିନ ପୂର୍ବେ", + "6 ଦିନ ପୂର୍ବେ", + "8 ଦିନ ପୂର୍ବେ", + "10 ଦିନ ପୂର୍ବେ", + "11 ଦିନ ପୂର୍ବେ", + "12 ଦିନ ପୂର୍ବେ", + "13 ଦିନ ପୂର୍ବେ", + "2 ସପ୍ତା. ପୂର୍ବେ", + "3 ସପ୍ତା. ପୂର୍ବେ", + "1 ମା. ପୂର୍ବେ", + "4 ସପ୍ତା. ପୂର୍ବେ", + "7 ମା. ପୂର୍ବେ", + "10 ମା. ପୂର୍ବେ", + "1 ବ. ପୂର୍ବେ", + "2 ବ. ପୂର୍ବେ", + "3 ବ. ପୂର୍ବେ", + "4 ବ. ପୂର୍ବେ", + "5 ବ. ପୂର୍ବେ" + ], + "pa": [ + "35 ਮਿੰਟ ਪਹਿਲਾਂ", + "50 ਮਿੰਟ ਪਹਿਲਾਂ", + "1 ਘੰਟਾ ਪਹਿਲਾਂ", + "2 ਘੰਟੇ ਪਹਿਲਾਂ", + "3 ਘੰਟੇ ਪਹਿਲਾਂ", + "4 ਘੰਟੇ ਪਹਿਲਾਂ", + "5 ਘੰਟੇ ਪਹਿਲਾਂ", + "6 ਘੰਟੇ ਪਹਿਲਾਂ", + "7 ਘੰਟੇ ਪਹਿਲਾਂ", + "8 ਘੰਟੇ ਪਹਿਲਾਂ", + "9 ਘੰਟੇ ਪਹਿਲਾਂ", + "12 ਘੰਟੇ ਪਹਿਲਾਂ", + "17 ਘੰਟੇ ਪਹਿਲਾਂ", + "18 ਘੰਟੇ ਪਹਿਲਾਂ", + "19 ਘੰਟੇ ਪਹਿਲਾਂ", + "20 ਘੰਟੇ ਪਹਿਲਾਂ", + "10 ਘੰਟੇ ਪਹਿਲਾਂ", + "11 ਘੰਟੇ ਪਹਿਲਾਂ", + "13 ਘੰਟੇ ਪਹਿਲਾਂ", + "1 ਦਿਨ ਪਹਿਲਾਂ", + "2 ਦਿਨ ਪਹਿਲਾਂ", + "3 ਦਿਨ ਪਹਿਲਾਂ", + "4 ਦਿਨ ਪਹਿਲਾਂ", + "6 ਦਿਨ ਪਹਿਲਾਂ", + "8 ਦਿਨ ਪਹਿਲਾਂ", + "10 ਦਿਨ ਪਹਿਲਾਂ", + "11 ਦਿਨ ਪਹਿਲਾਂ", + "12 ਦਿਨ ਪਹਿਲਾਂ", + "13 ਦਿਨ ਪਹਿਲਾਂ", + "2 ਹਫ਼ਤੇ ਪਹਿਲਾਂ", + "3 ਹਫ਼ਤੇ ਪਹਿਲਾਂ", + "1 ਮਹੀਨਾ ਪਹਿਲਾਂ", + "4 ਹਫ਼ਤੇ ਪਹਿਲਾਂ", + "7 ਮਹੀਨੇ ਪਹਿਲਾਂ", + "10 ਮਹੀਨੇ ਪਹਿਲਾਂ", + "1 ਸਾਲ ਪਹਿਲਾਂ", + "2 ਸਾਲ ਪਹਿਲਾਂ", + "3 ਸਾਲ ਪਹਿਲਾਂ", + "4 ਸਾਲ ਪਹਿਲਾਂ", + "5 ਸਾਲ ਪਹਿਲਾਂ" + ], + "pl": [ + "35 min temu", + "50 min temu", + "1 godz. temu", + "2 godz. temu", + "3 godz. temu", + "4 godz. temu", + "5 godz. temu", + "6 godz. temu", + "7 godz. temu", + "8 godz. temu", + "9 godz. temu", + "12 godz. temu", + "17 godz. temu", + "18 godz. temu", + "19 godz. temu", + "20 godz. temu", + "10 godz. temu", + "11 godz. temu", + "13 godz. temu", + "1 dzień temu", + "2 dni temu", + "3 dni temu", + "4 dni temu", + "6 dni temu", + "8 dni temu", + "10 dni temu", + "11 dni temu", + "12 dni temu", + "13 dni temu", + "2 tyg. temu", + "3 tyg. temu", + "1 mies. temu", + "4 tyg. temu", + "7 mies. temu", + "10 mies. temu", + "1 rok temu", + "2 lata temu", + "3 lata temu", + "4 lata temu", + "5 lat temu" + ], + "pt": [ + "há 35 min.", + "há 50 min.", + "há 1 h", + "há 2 h", + "há 3 h", + "há 4 h", + "há 5 h", + "há 6 h", + "há 7 h", + "há 8 h", + "há 9 h", + "há 12 h", + "há 17 h", + "há 18 h", + "há 19 h", + "há 20 h", + "há 10 h", + "há 11 h", + "há 13 h", + "há 1 dia", + "há 2 dias", + "há 3 dias", + "há 4 dias", + "há 6 dias", + "há 8 dias", + "há 10 dias", + "há 11 dias", + "há 12 dias", + "há 13 dias", + "há 2 sem.", + "há 3 sem.", + "há 1 mês", + "há 4 sem.", + "há 7 meses", + "há 10 meses", + "há 1 ano", + "há 2 anos", + "há 3 anos", + "há 4 anos", + "há 5 anos" + ], + "pt-PT": [ + "há 35 min", + "há 50 min", + "há 1 h", + "há 2 h", + "há 3 h", + "há 4 h", + "há 5 h", + "há 6 h", + "há 7 h", + "há 8 h", + "há 9 h", + "há 12 h", + "há 17 h", + "há 18 h", + "há 19 h", + "há 20 h", + "há 10 h", + "há 11 h", + "há 13 h", + "há 1 dia", + "há 2 dias", + "há 3 dias", + "há 4 dias", + "há 6 dias", + "há 8 dias", + "há 10 dias", + "há 11 dias", + "há 12 dias", + "há 13 dias", + "há 2 sem.", + "há 3 sem.", + "há 1 mês", + "há 4 sem.", + "há 7 meses", + "há 10 meses", + "há 1 ano", + "há 2 anos", + "há 3 anos", + "há 4 anos", + "há 5 anos" + ], + "ro": [ + "acum 35 min.", + "acum 50 min.", + "acum 1 h", + "acum 2 h", + "acum 3 h", + "acum 4 h", + "acum 5 h", + "acum 6 h", + "acum 7 h", + "acum 8 h", + "acum 9 h", + "acum 12 h", + "acum 17 h", + "acum 18 h", + "acum 19 h", + "acum 20 h", + "acum 10 h", + "acum 11 h", + "acum 13 h", + "acum 1 zi", + "acum 2 zile", + "acum 3 zile", + "acum 4 zile", + "acum 6 zile", + "acum 8 zile", + "acum 10 zile", + "acum 11 zile", + "acum 12 zile", + "acum 13 zile", + "acum 2 săpt.", + "acum 3 săpt.", + "acum 1 lună", + "acum 4 săpt.", + "acum 7 luni", + "acum 10 luni", + "acum 1 an", + "acum 2 ani", + "acum 3 ani", + "acum 4 ani", + "acum 5 ani" + ], + "ru": [ + "35 мин. назад", + "50 мин. назад", + "1 ч назад", + "2 ч назад", + "3 ч назад", + "4 ч назад", + "5 ч назад", + "6 ч назад", + "7 ч назад", + "8 ч назад", + "9 ч назад", + "12 ч назад", + "17 ч назад", + "18 ч назад", + "19 ч назад", + "20 ч назад", + "10 ч назад", + "11 ч назад", + "13 ч назад", + "1 дн. назад", + "2 дн. назад", + "3 дн. назад", + "4 дн. назад", + "6 дн. назад", + "8 дн. назад", + "10 дн. назад", + "11 дн. назад", + "12 дн. назад", + "13 дн. назад", + "2 нед. назад", + "3 нед. назад", + "1 мес. назад", + "4 нед. назад", + "7 мес. назад", + "10 мес. назад", + "1 г. назад", + "2 г. назад", + "3 г. назад", + "4 г. назад", + "5 л. назад" + ], + "si": [ + "මිනිත්තු 35කට පෙර", + "මිනිත්තු 50කට පෙර", + "පැය 1කට පෙර", + "පැය 2කට පෙර", + "පැය 3කට පෙර", + "පැය 4කට පෙර", + "පැය 5කට පෙර", + "පැය 6කට පෙර", + "පැය 7කට පෙර", + "පැය 8කට පෙර", + "පැය 9කට පෙර", + "පැය 12කට පෙර", + "පැය 17කට පෙර", + "පැය 18කට පෙර", + "පැය 19කට පෙර", + "පැය 20කට පෙර", + "පැය 10කට පෙර", + "පැය 11කට පෙර", + "පැය 13කට පෙර", + "දින 1කට පෙර", + "දින 2කට පෙර", + "දින 3කට පෙර", + "දින 4කට පෙර", + "දින 6කට පෙර", + "දින 8කට පෙර", + "දින 10කට පෙර", + "දින 11කට පෙර", + "දින 12කට පෙර", + "දින 13කට පෙර", + "සති 2කට පෙර", + "සති 3කට පෙර", + "මාස 1කට පෙර", + "සති 4කට පෙර", + "මාස 7කට පෙර", + "මාස 10කට පෙර", + "වසර 1කට පෙර", + "වසර 2කට පෙර", + "වසර 3කට පෙර", + "වසර 4කට පෙර", + "වසර 5කට පෙර" + ], + "sk": [ + "pred 35 min", + "pred 50 min", + "pred 1 h", + "pred 2 h", + "pred 3 h", + "pred 4 h", + "pred 5 h", + "pred 6 h", + "pred 7 h", + "pred 8 h", + "pred 9 h", + "pred 12 h", + "pred 17 h", + "pred 18 h", + "pred 19 h", + "pred 20 h", + "pred 10 h", + "pred 11 h", + "pred 13 h", + "pred 1 d.", + "pred 2 d.", + "pred 3 d.", + "pred 4 d.", + "pred 6 d.", + "pred 8 d.", + "pred 10 d.", + "pred 11 d.", + "pred 12 d.", + "pred 13 d.", + "pred 2 týž.", + "pred 3 týž.", + "pred 1 mes.", + "pred 4 týž.", + "pred 7 mes.", + "pred 10 mes.", + "pred 1 r.", + "pred 2 r.", + "pred 3 r.", + "pred 4 r.", + "pred 5 r." + ], + "sl": [ + "pred 35 min.", + "pred 50 min.", + "pred 1 uro", + "pred 2 urama", + "pred 3 urami", + "pred 4 urami", + "pred 5 urami", + "pred 6 urami", + "pred 7 urami", + "pred 8 urami", + "pred 9 urami", + "pred 12 urami", + "pred 17 urami", + "pred 18 urami", + "pred 19 urami", + "pred 20 urami", + "pred 10 urami", + "pred 11 urami", + "pred 13 urami", + "pred 1 dnevom", + "pred 2 dnevoma", + "pred 3 dnevi", + "pred 4 dnevi", + "pred 6 dnevi", + "pred 8 dnevi", + "pred 10 dnevi", + "pred 11 dnevi", + "pred 12 dnevi", + "pred 13 dnevi", + "pred 2 ted.", + "pred 3 ted.", + "pred 1 mes.", + "pred 4 ted.", + "pred 7 mes.", + "pred 10 mes.", + "pred 1 letom", + "pred 2 letoma", + "pred 3 leti", + "pred 4 leti", + "pred 5 leti" + ], + "sq": [ + "35 min më parë", + "50 min më parë", + "1 orë më parë", + "2 orë më parë", + "3 orë më parë", + "4 orë më parë", + "5 orë më parë", + "6 orë më parë", + "7 orë më parë", + "8 orë më parë", + "9 orë më parë", + "12 orë më parë", + "17 orë më parë", + "18 orë më parë", + "19 orë më parë", + "20 orë më parë", + "10 orë më parë", + "11 orë më parë", + "13 orë më parë", + "1 ditë më parë", + "2 ditë më parë", + "3 ditë më parë", + "4 ditë më parë", + "6 ditë më parë", + "8 ditë më parë", + "10 ditë më parë", + "11 ditë më parë", + "12 ditë më parë", + "13 ditë më parë", + "2 javë më parë", + "3 javë më parë", + "1 muaj më parë", + "4 javë më parë", + "7 muaj më parë", + "10 muaj më parë", + "1 vit më parë", + "2 vjet më parë", + "3 vjet më parë", + "4 vjet më parë", + "5 vjet më parë" + ], + "sr": [ + "пре 35 мин.", + "пре 50 мин.", + "пре 1 ч.", + "пре 2 ч.", + "пре 3 ч.", + "пре 4 ч.", + "пре 5 ч.", + "пре 6 ч.", + "пре 7 ч.", + "пре 8 ч.", + "пре 9 ч.", + "пре 12 ч.", + "пре 17 ч.", + "пре 18 ч.", + "пре 19 ч.", + "пре 20 ч.", + "пре 10 ч.", + "пре 11 ч.", + "пре 13 ч.", + "пре 1 д.", + "пре 2 д.", + "пре 3 д.", + "пре 4 д.", + "пре 6 д.", + "пре 8 д.", + "пре 10 д.", + "пре 11 д.", + "пре 12 д.", + "пре 13 д.", + "пре 2 нед.", + "пре 3 нед.", + "пре 1 мес.", + "пре 4 нед.", + "пре 7 мес.", + "пре 10 мес.", + "пре 1 год.", + "пре 2 год.", + "пре 3 год.", + "пре 4 год.", + "пре 5 год." + ], + "sr-Latn": [ + "pre 35 min.", + "pre 50 min.", + "pre 1 č.", + "pre 2 č.", + "pre 3 č.", + "pre 4 č.", + "pre 5 č.", + "pre 6 č.", + "pre 7 č.", + "pre 8 č.", + "pre 9 č.", + "pre 12 č.", + "pre 17 č.", + "pre 18 č.", + "pre 19 č.", + "pre 20 č.", + "pre 10 č.", + "pre 11 č.", + "pre 13 č.", + "pre 1 d.", + "pre 2 d.", + "pre 3 d.", + "pre 4 d.", + "pre 6 d.", + "pre 8 d.", + "pre 10 d.", + "pre 11 d.", + "pre 12 d.", + "pre 13 d.", + "pre 2 ned.", + "pre 3 ned.", + "pre 1 mes.", + "pre 4 ned.", + "pre 7 mes.", + "pre 10 mes.", + "pre 1 god.", + "pre 2 god.", + "pre 3 god.", + "pre 4 god.", + "pre 5 god." + ], + "sv": [ + "för 35 min sen", + "för 50 min sen", + "för 1 tim sedan", + "för 2 tim sedan", + "för 3 tim sedan", + "för 4 tim sedan", + "för 5 tim sedan", + "för 6 tim sedan", + "för 7 tim sedan", + "för 8 tim sedan", + "för 9 tim sedan", + "för 12 tim sedan", + "för 17 tim sedan", + "för 18 tim sedan", + "för 19 tim sedan", + "för 20 tim sedan", + "för 10 tim sedan", + "för 11 tim sedan", + "för 13 tim sedan", + "för 1 d sedan", + "för 2 d sedan", + "för 3 d sedan", + "för 4 d sedan", + "för 6 d sedan", + "för 8 d sedan", + "för 10 d sedan", + "för 11 d sedan", + "för 12 d sedan", + "för 13 d sedan", + "för 2 v. sedan", + "för 3 v. sedan", + "för 1 mån. sen", + "för 4 v. sedan", + "för 7 mån. sen", + "för 10 mån. sen", + "för 1 år sen", + "för 2 år sen", + "för 3 år sen", + "för 4 år sen", + "för 5 år sen" + ], + "sw": [ + "dakika 35 zilizopita", + "dakika 50 zilizopita", + "saa 1 iliyopita", + "saa 2 zilizopita", + "saa 3 zilizopita", + "saa 4 zilizopita", + "saa 5 zilizopita", + "saa 6 zilizopita", + "saa 7 zilizopita", + "saa 8 zilizopita", + "saa 9 zilizopita", + "saa 12 zilizopita", + "saa 17 zilizopita", + "saa 18 zilizopita", + "saa 19 zilizopita", + "saa 20 zilizopita", + "saa 10 zilizopita", + "saa 11 zilizopita", + "saa 13 zilizopita", + "siku 1 iliyopita", + "siku 2 zilizopita", + "siku 3 zilizopita", + "siku 4 zilizopita", + "siku 6 zilizopita", + "siku 8 zilizopita", + "siku 10 zilizopita", + "siku 11 zilizopita", + "siku 12 zilizopita", + "siku 13 zilizopita", + "wiki 2 zilizopita", + "wiki 3 zilizopita", + "mwezi 1 uliopita", + "wiki 4 zilizopita", + "miezi 7 iliyopita", + "miezi 10 iliyopita", + "mwaka 1 uliopita", + "miaka 2 iliyopita", + "miaka 3 iliyopita", + "miaka 4 iliyopita", + "miaka 5 iliyopita" + ], + "ta": [ + "35 நிமி. முன்", + "50 நிமி. முன்", + "1 மணி. முன்", + "2 மணி. முன்", + "3 மணி. முன்", + "4 மணி. முன்", + "5 மணி. முன்", + "6 மணி. முன்", + "7 மணி. முன்", + "8 மணி. முன்", + "9 மணி. முன்", + "12 மணி. முன்", + "17 மணி. முன்", + "18 மணி. முன்", + "19 மணி. முன்", + "20 மணி. முன்", + "10 மணி. முன்", + "11 மணி. முன்", + "13 மணி. முன்", + "1 நாளுக்கு முன்", + "2 நாட்களுக்கு முன்", + "3 நாட்களுக்கு முன்", + "4 நாட்களுக்கு முன்", + "6 நாட்களுக்கு முன்", + "8 நாட்களுக்கு முன்", + "10 நாட்களுக்கு முன்", + "11 நாட்களுக்கு முன்", + "12 நாட்களுக்கு முன்", + "13 நாட்களுக்கு முன்", + "2 வார. முன்", + "3 வார. முன்", + "1 மாத. முன்", + "4 வார. முன்", + "7 மாத. முன்", + "10 மாத. முன்", + "1 ஆண்டிற்கு முன்", + "2 ஆண்டுகளுக்கு முன்", + "3 ஆண்டுகளுக்கு முன்", + "4 ஆண்டுகளுக்கு முன்", + "5 ஆண்டுகளுக்கு முன்" + ], + "te": [ + "35 నిమి. క్రితం", + "50 నిమి. క్రితం", + "1 గం. క్రితం", + "2 గం. క్రితం", + "3 గం. క్రితం", + "4 గం. క్రితం", + "5 గం. క్రితం", + "6 గం. క్రితం", + "7 గం. క్రితం", + "8 గం. క్రితం", + "9 గం. క్రితం", + "12 గం. క్రితం", + "17 గం. క్రితం", + "18 గం. క్రితం", + "19 గం. క్రితం", + "20 గం. క్రితం", + "10 గం. క్రితం", + "11 గం. క్రితం", + "13 గం. క్రితం", + "1 రోజు క్రితం", + "2 రోజుల క్రితం", + "3 రోజుల క్రితం", + "4 రోజుల క్రితం", + "6 రోజుల క్రితం", + "8 రోజుల క్రితం", + "10 రోజుల క్రితం", + "11 రోజుల క్రితం", + "12 రోజుల క్రితం", + "13 రోజుల క్రితం", + "2 వారాల క్రితం", + "3 వారాల క్రితం", + "1 నెల క్రితం", + "4 వారాల క్రితం", + "7 నెలల క్రితం", + "10 నెలల క్రితం", + "1 సం. క్రితం", + "2 సం. క్రితం", + "3 సం. క్రితం", + "4 సం. క్రితం", + "5 సం. క్రితం" + ], + "th": [ + "35 นาทีที่แล้ว", + "50 นาทีที่แล้ว", + "1 ชม. ที่แล้ว", + "2 ชม. ที่แล้ว", + "3 ชม. ที่แล้ว", + "4 ชม. ที่แล้ว", + "5 ชม. ที่แล้ว", + "6 ชม. ที่แล้ว", + "7 ชม. ที่แล้ว", + "8 ชม. ที่แล้ว", + "9 ชม. ที่แล้ว", + "12 ชม. ที่แล้ว", + "17 ชม. ที่แล้ว", + "18 ชม. ที่แล้ว", + "19 ชม. ที่แล้ว", + "20 ชม. ที่แล้ว", + "10 ชม. ที่แล้ว", + "11 ชม. ที่แล้ว", + "13 ชม. ที่แล้ว", + "1 วันที่แล้ว", + "2 วันที่แล้ว", + "3 วันที่แล้ว", + "4 วันที่แล้ว", + "6 วันที่แล้ว", + "8 วันที่แล้ว", + "10 วันที่แล้ว", + "11 วันที่แล้ว", + "12 วันที่แล้ว", + "13 วันที่แล้ว", + "2 สัปดาห์ที่แล้ว", + "3 สัปดาห์ที่แล้ว", + "1 เดือนที่แล้ว", + "4 สัปดาห์ที่แล้ว", + "7 เดือนที่แล้ว", + "10 เดือนที่แล้ว", + "1 ปีที่แล้ว", + "2 ปีที่แล้ว", + "3 ปีที่แล้ว", + "4 ปีที่แล้ว", + "5 ปีที่แล้ว" + ], + "tr": [ + "35 dk. önce", + "50 dk. önce", + "1 sa. önce", + "2 sa. önce", + "3 sa. önce", + "4 sa. önce", + "5 sa. önce", + "6 sa. önce", + "7 sa. önce", + "8 sa. önce", + "9 sa. önce", + "12 sa. önce", + "17 sa. önce", + "18 sa. önce", + "19 sa. önce", + "20 sa. önce", + "10 sa. önce", + "11 sa. önce", + "13 sa. önce", + "1 gün önce", + "2 gün önce", + "3 gün önce", + "4 gün önce", + "6 gün önce", + "8 gün önce", + "10 gün önce", + "11 gün önce", + "12 gün önce", + "13 gün önce", + "2 hf. önce", + "3 hf. önce", + "1 ay önce", + "4 hf. önce", + "7 ay önce", + "10 ay önce", + "1 yıl önce", + "2 yıl önce", + "3 yıl önce", + "4 yıl önce", + "5 yıl önce" + ], + "uk": [ + "35 хв тому", + "50 хв тому", + "1 год тому", + "2 год тому", + "3 год тому", + "4 год тому", + "5 год тому", + "6 год тому", + "7 год тому", + "8 год тому", + "9 год тому", + "12 год тому", + "17 год тому", + "18 год тому", + "19 год тому", + "20 год тому", + "10 год тому", + "11 год тому", + "13 год тому", + "1 дн. тому", + "2 дн. тому", + "3 дн. тому", + "4 дн. тому", + "6 дн. тому", + "8 дн. тому", + "10 дн. тому", + "11 дн. тому", + "12 дн. тому", + "13 дн. тому", + "2 тиж. тому", + "3 тиж. тому", + "1 міс. тому", + "4 тиж. тому", + "7 міс. тому", + "10 міс. тому", + "1 р. тому", + "2 р. тому", + "3 р. тому", + "4 р. тому", + "5 р. тому" + ], + "ur": [ + "35 منٹ پہلے", + "50 منٹ پہلے", + "1 گھنٹے پہلے", + "2 گھنٹے پہلے", + "3 گھنٹے پہلے", + "4 گھنٹے پہلے", + "5 گھنٹے پہلے", + "6 گھنٹے پہلے", + "7 گھنٹے پہلے", + "8 گھنٹے پہلے", + "9 گھنٹے پہلے", + "12 گھنٹے پہلے", + "17 گھنٹے پہلے", + "18 گھنٹے پہلے", + "19 گھنٹے پہلے", + "20 گھنٹے پہلے", + "10 گھنٹے پہلے", + "11 گھنٹے پہلے", + "13 گھنٹے پہلے", + "1 دن پہلے", + "2 دن پہلے", + "3 دن پہلے", + "4 دن پہلے", + "6 دن پہلے", + "8 دن پہلے", + "10 دن پہلے", + "11 دن پہلے", + "12 دن پہلے", + "13 دن پہلے", + "2 ہفتے پہلے", + "3 ہفتے پہلے", + "1 ماہ قبل", + "4 ہفتے پہلے", + "7 ماہ قبل", + "10 ماہ قبل", + "1 سال پہلے", + "2 سال پہلے", + "3 سال پہلے", + "4 سال پہلے", + "5 سال پہلے" + ], + "uz": [ + "35 daqiqa oldin", + "50 daqiqa oldin", + "1 soat oldin", + "2 soat oldin", + "3 soat oldin", + "4 soat oldin", + "5 soat oldin", + "6 soat oldin", + "7 soat oldin", + "8 soat oldin", + "9 soat oldin", + "12 soat oldin", + "17 soat oldin", + "18 soat oldin", + "19 soat oldin", + "20 soat oldin", + "10 soat oldin", + "11 soat oldin", + "13 soat oldin", + "1 kun oldin", + "2 kun oldin", + "3 kun oldin", + "4 kun oldin", + "6 kun oldin", + "8 kun oldin", + "10 kun oldin", + "11 kun oldin", + "12 kun oldin", + "13 kun oldin", + "2 hafta oldin", + "3 hafta oldin", + "1 oy oldin", + "4 hafta oldin", + "7 oy oldin", + "10 oy oldin", + "1 yil oldin", + "2 yil oldin", + "3 yil oldin", + "4 yil oldin", + "5 yil oldin" + ], + "vi": [ + "35 phút trước", + "50 phút trước", + "1 giờ trước", + "2 giờ trước", + "3 giờ trước", + "4 giờ trước", + "5 giờ trước", + "6 giờ trước", + "7 giờ trước", + "8 giờ trước", + "9 giờ trước", + "12 giờ trước", + "17 giờ trước", + "18 giờ trước", + "19 giờ trước", + "20 giờ trước", + "10 giờ trước", + "11 giờ trước", + "13 giờ trước", + "1 ngày trước", + "2 ngày trước", + "3 ngày trước", + "4 ngày trước", + "6 ngày trước", + "8 ngày trước", + "10 ngày trước", + "11 ngày trước", + "12 ngày trước", + "13 ngày trước", + "2 tuần trước", + "3 tuần trước", + "1 tháng trước", + "4 tuần trước", + "7 tháng trước", + "10 tháng trước", + "1 năm trước", + "2 năm trước", + "3 năm trước", + "4 năm trước", + "5 năm trước" + ], + "zh-CN": [ + "35分钟前", + "50分钟前", + "1小时前", + "2小时前", + "3小时前", + "4小时前", + "5小时前", + "6小时前", + "7小时前", + "8小时前", + "9小时前", + "12小时前", + "17小时前", + "18小时前", + "19小时前", + "20小时前", + "10小时前", + "11小时前", + "13小时前", + "1天前", + "2天前", + "3天前", + "4天前", + "6天前", + "8天前", + "10天前", + "11天前", + "12天前", + "13天前", + "2周前", + "3周前", + "1个月前", + "4周前", + "7个月前", + "10个月前", + "1年前", + "2年前", + "3年前", + "4年前", + "5年前" + ], + "zh-HK": [ + "35 分鐘前", + "50 分鐘前", + "1 小時前", + "2 小時前", + "3 小時前", + "4 小時前", + "5 小時前", + "6 小時前", + "7 小時前", + "8 小時前", + "9 小時前", + "12 小時前", + "17 小時前", + "18 小時前", + "19 小時前", + "20 小時前", + "10 小時前", + "11 小時前", + "13 小時前", + "1 日前", + "2 日前", + "3 日前", + "4 日前", + "6 日前", + "8 日前", + "10 日前", + "11 日前", + "12 日前", + "13 日前", + "2 星期前", + "3 星期前", + "1 個月前", + "4 星期前", + "7 個月前", + "10 個月前", + "1 年前", + "2 年前", + "3 年前", + "4 年前", + "5 年前" + ], + "zh-TW": [ + "35 分鐘前", + "50 分鐘前", + "1 小時前", + "2 小時前", + "3 小時前", + "4 小時前", + "5 小時前", + "6 小時前", + "7 小時前", + "8 小時前", + "9 小時前", + "12 小時前", + "17 小時前", + "18 小時前", + "19 小時前", + "20 小時前", + "10 小時前", + "11 小時前", + "13 小時前", + "1 天前", + "2 天前", + "3 天前", + "4 天前", + "6 天前", + "8 天前", + "10 天前", + "11 天前", + "12 天前", + "13 天前", + "2 週前", + "3 週前", + "1 個月前", + "4 週前", + "7 個月前", + "10 個月前", + "1 年前", + "2 年前", + "3 年前", + "4 年前", + "5 年前" + ], + "zu": [ + "35 amaminithi edlule", + "50 amaminithi edlule", + "1 ihora eledlule", + "emahoreni angu-2 edlule", + "emahoreni angu-3 edlule", + "emahoreni angu-4 edlule", + "emahoreni angu-5 edlule", + "emahoreni angu-6 edlule", + "emahoreni angu-7 edlule", + "emahoreni angu-8 edlule", + "emahoreni angu-9 edlule", + "emahoreni angu-12 edlule", + "emahoreni angu-17 edlule", + "emahoreni angu-18 edlule", + "emahoreni angu-19 edlule", + "emahoreni angu-20 edlule", + "emahoreni angu-10 edlule", + "emahoreni angu-11 edlule", + "emahoreni angu-13 edlule", + "1 usuku olwedlule", + "2 izinsuku ezedlule", + "3 izinsuku ezedlule", + "4 izinsuku ezedlule", + "6 izinsuku ezedlule", + "8 izinsuku ezedlule", + "10 izinsuku ezedlule", + "11 izinsuku ezedlule", + "12 izinsuku ezedlule", + "13 izinsuku ezedlule", + "amaviki angu-2 edlule", + "amaviki angu-3 edlule", + "1 izinyanga ezedlule", + "amaviki angu-4 edlule", + "7 izinyanga ezedlule", + "10 izinyanga ezedlule", + "1 unyaka odlule", + "2 unyaka odlule", + "3 unyaka odlule", + "4 unyaka odlule", + "5 unyaka odlule" + ] +} diff --git a/tests/youtube.rs b/tests/youtube.rs index bd5e1e3..3aacb2f 100644 --- a/tests/youtube.rs +++ b/tests/youtube.rs @@ -2336,7 +2336,12 @@ fn lang() -> Language { /// Get a new RustyPipe instance #[fixture] fn rp(lang: Language) -> RustyPipe { - RustyPipe::builder().strict().lang(lang).build() + let vdata = std::env::var("YT_VDATA").ok(); + RustyPipe::builder() + .strict() + .lang(lang) + .visitor_data_opt(vdata) + .build() } /// Get a flag signaling if the language is set to English