From d18f175aefd6c205eeeac99e36b2c2c94a9440f9 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Tue, 6 Sep 2022 21:27:28 +0200 Subject: [PATCH 1/3] feat: add absolute dates/months to dictionary --- notes/browse/channel_premiere.json | 5206 +++++++++++++++++++++++++ notes/video_ids.txt | 2 +- src/codegen/collect_playlist_dates.rs | 112 +- src/codegen/gen_dictionary.rs | 79 +- src/codegen/mod.rs | 30 + src/dictionary.rs | 5003 ++++++++++++++++-------- src/timeago.rs | 4 +- src/util.rs | 41 +- testfiles/date/dictionary.json | 1133 +++++- testfiles/date/playlist_samples.json | 166 +- 10 files changed, 9942 insertions(+), 1834 deletions(-) create mode 100644 notes/browse/channel_premiere.json diff --git a/notes/browse/channel_premiere.json b/notes/browse/channel_premiere.json new file mode 100644 index 0000000..39f9af7 --- /dev/null +++ b/notes/browse/channel_premiere.json @@ -0,0 +1,5206 @@ +{ + "responseContext": { + "serviceTrackingParams": [ + { + "service": "GFEEDBACK", + "params": [ + { "key": "route", "value": "channel.videos" }, + { "key": "is_casual", "value": "false" }, + { "key": "is_owner", "value": "false" }, + { "key": "is_monetization_enabled", "value": "true" }, + { "key": "num_shelves", "value": "1" }, + { "key": "is_alc_surface", "value": "false" }, + { "key": "browse_id", "value": "UCVGvnqB-5znqPSbMGlhF4Pw" }, + { "key": "logged_in", "value": "0" }, + { + "key": "e", + "value": "23946420,23804281,24271672,9407156,24181174,24248091,24225483,24034168,24080738,24002022,24245173,24255543,24219713,45686551,23918597,24001373,24152442,1714257,24169501,23966208,24248231,39322224,24278466,24120820,24260441,24077241,24268142,23882503,24185614,24187043,24161116,24254502,24255545,24241709,24269957,24191629,24260844,24248385,24140247,24246429,23983296,24249175,24211178,23934970,24135310,24164186,24224266,24243988,23998056,24226335,9405964,24007246,24199724,24004644,24187377,23744176,24262346,24166867,24260783,24269952,24264860,24267564,39322278,24263796,24241378,24256987,24229161,23986026,24227844,24199774,24218921,24002025,24036948" + } + ] + }, + { + "service": "GOOGLE_HELP", + "params": [{ "key": "browse_id", "value": "UCVGvnqB-5znqPSbMGlhF4Pw" }] + }, + { + "service": "CSI", + "params": [ + { "key": "c", "value": "WEB" }, + { "key": "cver", "value": "2.20220902.01.00" }, + { "key": "yt_li", "value": "0" }, + { "key": "GetChannelPage_rid", "value": "0x738a461ca3bb7e7e" } + ] + }, + { "service": "GUIDED_HELP", "params": [{ "key": "logged_in", "value": "0" }] }, + { + "service": "ECATCHER", + "params": [ + { "key": "client.version", "value": "2.20220902" }, + { "key": "client.name", "value": "WEB" }, + { + "key": "client.fexp", + "value": "23946420,23804281,24271672,9407156,24181174,24248091,24225483,24034168,24080738,24002022,24245173,24255543,24219713,45686551,23918597,24001373,24152442,1714257,24169501,23966208,24248231,39322224,24278466,24120820,24260441,24077241,24268142,23882503,24185614,24187043,24161116,24254502,24255545,24241709,24269957,24191629,24260844,24248385,24140247,24246429,23983296,24249175,24211178,23934970,24135310,24164186,24224266,24243988,23998056,24226335,9405964,24007246,24199724,24004644,24187377,23744176,24262346,24166867,24260783,24269952,24264860,24267564,39322278,24263796,24241378,24256987,24229161,23986026,24227844,24199774,24218921,24002025,24036948" + } + ] + } + ], + "maxAgeSeconds": 300, + "mainAppWebResponseContext": { "loggedOut": true }, + "webResponseContextExtensionData": { "hasDecorated": true } + }, + "contents": { + "twoColumnBrowseResultsRenderer": { + "tabs": [ + { + "tabRenderer": { + "endpoint": { + "clickTrackingParams": "CEsQ8JMBGAUiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw/featured", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "params": "EghmZWF0dXJlZPIGBAoCMgA%3D", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + }, + "title": "Übersicht", + "trackingParams": "CEsQ8JMBGAUiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "tabRenderer": { + "endpoint": { + "clickTrackingParams": "CBcQ8JMBGAYiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw/videos", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "params": "EgZ2aWRlb3PyBgQKAjoA", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + }, + "title": "Videos", + "selected": true, + "content": { + "sectionListRenderer": { + "contents": [ + { + "itemSectionRenderer": { + "contents": [ + { + "gridRenderer": { + "items": [ + { + "gridVideoRenderer": { + "videoId": "dFdac41o3mQ", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/dFdac41o3mQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDvgBSMpNYzaSEvfRks3Vq51d6ing", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/dFdac41o3mQ/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDb12qoqm5usaW50118UEvvck1Jew", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/dFdac41o3mQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCxn_wqrPOQ6cT15d4MVvV92p-x0g", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/dFdac41o3mQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBFZl0QiVBFDxAWFweFtVOV40Nwzg", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { "text": "Senta - AUFHÖREN (Offizielles Video)" } + ], + "accessibility": { + "accessibilityData": { + "label": "Senta - AUFHÖREN (Offizielles Video) von Sentamusic 2 Minuten, 40 Sekunden 1 Aufruf" + } + } + }, + "navigationEndpoint": { + "clickTrackingParams": "CEcQlDUYACITCMqVnPWrgPoCFVCOfAod6PYMFzIKZy1oaWdoLWNydloYVUNWR3ZucUItNXpucVBTYk1HbGhGNFB3mgEFEPI4GGaqARhVVVZHdm5xQi01em5xUFNiTUdsaEY0UHc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=dFdac41o3mQ", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "dFdac41o3mQ", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---sn-h0jeenld.googlevideo.com/initplayback?source=youtube&orc=1&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&rbqsm=fr&msp=1&odeak=1&odepv=1&osfc=1&id=74575a738d68de64&ip=2003%3Ade%3Aaf14%3A5100%3A4e48%3Abc76%3A2e4f%3Aa149&initcwndbps=1612500&mt=1662472870&oweuc=" + } + } + } + } + }, + "upcomingEventData": { + "startTime": "1662742800", + "isReminderSet": false, + "upcomingEventText": { + "runs": [ + { "text": "Premiere am " }, + { "text": "DATE_PLACEHOLDER" } + ] + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "OFFICIAL_ARTIST_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Offizieller Künstlerkanal", + "trackingParams": "CEcQlDUYACITCMqVnPWrgPoCFVCOfAod6PYMFw==", + "accessibilityData": { + "label": "Offizieller Künstlerkanal" + } + } + } + ], + "trackingParams": "CEcQlDUYACITCMqVnPWrgPoCFVCOfAod6PYMF0DkvKPruM7Wq3SqARhVVVZHdm5xQi01em5xUFNiTUdsaEY0UHc=", + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Zu Wiedergabeliste hinzufügen" + } + ] + }, + "icon": { "iconType": "ADD_TO_QUEUE_TAIL" }, + "serviceEndpoint": { + "clickTrackingParams": "CEoQ_pgEGAYiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CEoQ_pgEGAYiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "dFdac41o3mQ", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CEoQ_pgEGAYiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["dFdac41o3mQ"], + "params": "CAQ%3D" + } + }, + "videoIds": ["dFdac41o3mQ"] + } + } + ] + } + }, + "trackingParams": "CEoQ_pgEGAYiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + } + ], + "trackingParams": "CEcQlDUYACITCMqVnPWrgPoCFVCOfAod6PYMFw==", + "accessibility": { + "accessibilityData": { "label": "Aktionsmenü" } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "Anstehend" + } + }, + "simpleText": "ANSTEHEND" + }, + "style": "UPCOMING" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { "iconType": "WATCH_LATER" }, + "toggledIcon": { "iconType": "CHECK" }, + "untoggledTooltip": "Später ansehen", + "toggledTooltip": "Hinzugefügt", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CEkQ-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "dFdac41o3mQ", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CEkQ-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "dFdac41o3mQ" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Später ansehen" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Hinzugefügt" + } + }, + "trackingParams": "CEkQ-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Zu Wiedergabeliste hinzufügen", + "toggledTooltip": "Hinzugefügt", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CEgQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CEgQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "dFdac41o3mQ", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CEgQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["dFdac41o3mQ"], + "params": "CAQ%3D" + } + }, + "videoIds": ["dFdac41o3mQ"] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Zu Wiedergabeliste hinzufügen" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Hinzugefügt" + } + }, + "trackingParams": "CEgQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { "runs": [{ "text": "Läuft gerade" }] } + } + } + ] + } + }, + { + "gridVideoRenderer": { + "videoId": "kq72iOcOCGE", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/kq72iOcOCGE/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDZdQAcokwVWfchzq1F6H7TQU9TKQ", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/kq72iOcOCGE/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBpV09vpmMbCTozcphuSqI_oD8XgA", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/kq72iOcOCGE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD5Go1hUXpPMC37ZJe0eF2bUvfzIg", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/kq72iOcOCGE/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDI2-2JPuwVlmL2j5VTi5nAJWg_xQ", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [{ "text": "SENTA LIVESTREAM" }], + "accessibility": { + "accessibilityData": { + "label": "SENTA LIVESTREAM von Sentamusic vor 2 Monaten gestreamt 14 Minuten, 37 Sekunden 1.267 Aufrufe" + } + } + }, + "publishedTimeText": { + "simpleText": "vor 2 Monaten gestreamt" + }, + "viewCountText": { "simpleText": "1.267 Aufrufe" }, + "navigationEndpoint": { + "clickTrackingParams": "CEMQlDUYASITCMqVnPWrgPoCFVCOfAod6PYMFzIKZy1oaWdoLWNydloYVUNWR3ZucUItNXpucVBTYk1HbGhGNFB3mgEFEPI4GGaqARhVVVZHdm5xQi01em5xUFNiTUdsaEY0UHc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=kq72iOcOCGE", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "kq72iOcOCGE", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jeenl6.googlevideo.com/initplayback?source=youtube&orc=1&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&rbqsm=fr&msp=1&odeak=1&odepv=1&osfc=1&id=92aef688e70e0861&ip=2003%3Ade%3Aaf14%3A5100%3A4e48%3Abc76%3A2e4f%3Aa149&initcwndbps=1607500&mt=1662472870&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "OFFICIAL_ARTIST_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Offizieller Künstlerkanal", + "trackingParams": "CEMQlDUYASITCMqVnPWrgPoCFVCOfAod6PYMFw==", + "accessibilityData": { + "label": "Offizieller Künstlerkanal" + } + } + } + ], + "trackingParams": "CEMQlDUYASITCMqVnPWrgPoCFVCOfAod6PYMF0DhkLi4jtG915IBqgEYVVVWR3ZucUItNXpucVBTYk1HbGhGNFB3", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { "label": "1.267 Aufrufe" } + }, + "simpleText": "1267 Aufrufe" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Zu Wiedergabeliste hinzufügen" + } + ] + }, + "icon": { "iconType": "ADD_TO_QUEUE_TAIL" }, + "serviceEndpoint": { + "clickTrackingParams": "CEYQ_pgEGAciEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CEYQ_pgEGAciEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "kq72iOcOCGE", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CEYQ_pgEGAciEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["kq72iOcOCGE"], + "params": "CAQ%3D" + } + }, + "videoIds": ["kq72iOcOCGE"] + } + } + ] + } + }, + "trackingParams": "CEYQ_pgEGAciEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + } + ], + "trackingParams": "CEMQlDUYASITCMqVnPWrgPoCFVCOfAod6PYMFw==", + "accessibility": { + "accessibilityData": { "label": "Aktionsmenü" } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "14 Minuten, 37 Sekunden" + } + }, + "simpleText": "14:37" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { "iconType": "WATCH_LATER" }, + "toggledIcon": { "iconType": "CHECK" }, + "untoggledTooltip": "Später ansehen", + "toggledTooltip": "Hinzugefügt", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CEUQ-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "kq72iOcOCGE", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CEUQ-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "kq72iOcOCGE" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Später ansehen" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Hinzugefügt" + } + }, + "trackingParams": "CEUQ-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Zu Wiedergabeliste hinzufügen", + "toggledTooltip": "Hinzugefügt", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CEQQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CEQQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "kq72iOcOCGE", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CEQQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["kq72iOcOCGE"], + "params": "CAQ%3D" + } + }, + "videoIds": ["kq72iOcOCGE"] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Zu Wiedergabeliste hinzufügen" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Hinzugefügt" + } + }, + "trackingParams": "CEQQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { "runs": [{ "text": "Läuft gerade" }] } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/kq72iOcOCGE/mqdefault_6s.webp?du=3000&sqp=CKyN3ZgG&rs=AOn4CLAT4l5DDDVkCodkFlIXdYulJJRrFw", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + { + "gridVideoRenderer": { + "videoId": "QnzAiQZZ1uw", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/QnzAiQZZ1uw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDcu-W9GNxD5Yc0EL7j0WxYFwhsMA", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/QnzAiQZZ1uw/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBbEnqfXNuUnN9vA9k9nObT30axDw", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/QnzAiQZZ1uw/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAVJgEJ4v26nGWz0OdlrnUC6Wj-eQ", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/QnzAiQZZ1uw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAI2mPBc-gCrQOtJoqfHyvL__4-4w", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "Senta - MUSIK MUSIK (Offizielles Video)" + } + ], + "accessibility": { + "accessibilityData": { + "label": "Senta - MUSIK MUSIK (Offizielles Video) von Sentamusic vor 2 Monaten 2 Minuten, 50 Sekunden 158.226 Aufrufe" + } + } + }, + "publishedTimeText": { + "simpleText": "vor 2 Monaten" + }, + "viewCountText": { "simpleText": "158.226 Aufrufe" }, + "navigationEndpoint": { + "clickTrackingParams": "CD8QlDUYAiITCMqVnPWrgPoCFVCOfAod6PYMFzIKZy1oaWdoLWNydloYVUNWR3ZucUItNXpucVBTYk1HbGhGNFB3mgEFEPI4GGaqARhVVVZHdm5xQi01em5xUFNiTUdsaEY0UHc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=QnzAiQZZ1uw", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "QnzAiQZZ1uw", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jelnez.googlevideo.com/initplayback?source=youtube&orc=1&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&rbqsm=fr&msp=1&odeak=1&odepv=1&osfc=1&id=427cc0890659d6ec&ip=2003%3Ade%3Aaf14%3A5100%3A4e48%3Abc76%3A2e4f%3Aa149&initcwndbps=1607500&mt=1662472870&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "OFFICIAL_ARTIST_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Offizieller Künstlerkanal", + "trackingParams": "CD8QlDUYAiITCMqVnPWrgPoCFVCOfAod6PYMFw==", + "accessibilityData": { + "label": "Offizieller Künstlerkanal" + } + } + } + ], + "trackingParams": "CD8QlDUYAiITCMqVnPWrgPoCFVCOfAod6PYMF0DsreeykJGwvkKqARhVVVZHdm5xQi01em5xUFNiTUdsaEY0UHc=", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "158.226 Aufrufe" + } + }, + "simpleText": "158.226 Aufrufe" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Zu Wiedergabeliste hinzufügen" + } + ] + }, + "icon": { "iconType": "ADD_TO_QUEUE_TAIL" }, + "serviceEndpoint": { + "clickTrackingParams": "CEIQ_pgEGAYiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CEIQ_pgEGAYiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "QnzAiQZZ1uw", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CEIQ_pgEGAYiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["QnzAiQZZ1uw"], + "params": "CAQ%3D" + } + }, + "videoIds": ["QnzAiQZZ1uw"] + } + } + ] + } + }, + "trackingParams": "CEIQ_pgEGAYiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + } + ], + "trackingParams": "CD8QlDUYAiITCMqVnPWrgPoCFVCOfAod6PYMFw==", + "accessibility": { + "accessibilityData": { "label": "Aktionsmenü" } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 Minuten, 50 Sekunden" + } + }, + "simpleText": "2:50" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { "iconType": "WATCH_LATER" }, + "toggledIcon": { "iconType": "CHECK" }, + "untoggledTooltip": "Später ansehen", + "toggledTooltip": "Hinzugefügt", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CEEQ-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "QnzAiQZZ1uw", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CEEQ-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "QnzAiQZZ1uw" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Später ansehen" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Hinzugefügt" + } + }, + "trackingParams": "CEEQ-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Zu Wiedergabeliste hinzufügen", + "toggledTooltip": "Hinzugefügt", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CEAQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CEAQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "QnzAiQZZ1uw", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CEAQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["QnzAiQZZ1uw"], + "params": "CAQ%3D" + } + }, + "videoIds": ["QnzAiQZZ1uw"] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Zu Wiedergabeliste hinzufügen" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Hinzugefügt" + } + }, + "trackingParams": "CEAQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { "runs": [{ "text": "Läuft gerade" }] } + } + } + ] + } + }, + { + "gridVideoRenderer": { + "videoId": "g884-rR9Rd0", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/g884-rR9Rd0/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAkU4HDiNtA0T4fqlUR2gJGfutSpQ", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/g884-rR9Rd0/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAqnXueSTDxXPQaX7lrwKJ3IbqQyw", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/g884-rR9Rd0/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCmtGEFbtm2iuL3YxVgaQ4Jl8M5XA", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/g884-rR9Rd0/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAk74Od5yIPvXTIfgl7Lct2g_FmyA", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [{ "text": "SENTA LIVESTREAM" }], + "accessibility": { + "accessibilityData": { + "label": "SENTA LIVESTREAM von Sentamusic vor 2 Monaten gestreamt 8 Minuten, 50 Sekunden 577 Aufrufe" + } + } + }, + "publishedTimeText": { + "simpleText": "vor 2 Monaten gestreamt" + }, + "viewCountText": { "simpleText": "577 Aufrufe" }, + "navigationEndpoint": { + "clickTrackingParams": "CDsQlDUYAyITCMqVnPWrgPoCFVCOfAod6PYMFzIKZy1oaWdoLWNydloYVUNWR3ZucUItNXpucVBTYk1HbGhGNFB3mgEFEPI4GGaqARhVVVZHdm5xQi01em5xUFNiTUdsaEY0UHc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=g884-rR9Rd0", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "g884-rR9Rd0", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jeenle.googlevideo.com/initplayback?source=youtube&orc=1&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&rbqsm=fr&msp=1&odeak=1&odepv=1&osfc=1&id=83cf38fab47d45dd&ip=2003%3Ade%3Aaf14%3A5100%3A4e48%3Abc76%3A2e4f%3Aa149&initcwndbps=1607500&mt=1662472870&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "OFFICIAL_ARTIST_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Offizieller Künstlerkanal", + "trackingParams": "CDsQlDUYAyITCMqVnPWrgPoCFVCOfAod6PYMFw==", + "accessibilityData": { + "label": "Offizieller Künstlerkanal" + } + } + } + ], + "trackingParams": "CDsQlDUYAyITCMqVnPWrgPoCFVCOfAod6PYMF0Ddi_Wjq5_O54MBqgEYVVVWR3ZucUItNXpucVBTYk1HbGhGNFB3", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { "label": "577 Aufrufe" } + }, + "simpleText": "577 Aufrufe" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Zu Wiedergabeliste hinzufügen" + } + ] + }, + "icon": { "iconType": "ADD_TO_QUEUE_TAIL" }, + "serviceEndpoint": { + "clickTrackingParams": "CD4Q_pgEGAciEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CD4Q_pgEGAciEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "g884-rR9Rd0", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CD4Q_pgEGAciEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["g884-rR9Rd0"], + "params": "CAQ%3D" + } + }, + "videoIds": ["g884-rR9Rd0"] + } + } + ] + } + }, + "trackingParams": "CD4Q_pgEGAciEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + } + ], + "trackingParams": "CDsQlDUYAyITCMqVnPWrgPoCFVCOfAod6PYMFw==", + "accessibility": { + "accessibilityData": { "label": "Aktionsmenü" } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "8 Minuten, 50 Sekunden" + } + }, + "simpleText": "8:50" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { "iconType": "WATCH_LATER" }, + "toggledIcon": { "iconType": "CHECK" }, + "untoggledTooltip": "Später ansehen", + "toggledTooltip": "Hinzugefügt", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CD0Q-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "g884-rR9Rd0", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CD0Q-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "g884-rR9Rd0" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Später ansehen" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Hinzugefügt" + } + }, + "trackingParams": "CD0Q-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Zu Wiedergabeliste hinzufügen", + "toggledTooltip": "Hinzugefügt", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CDwQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CDwQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "g884-rR9Rd0", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CDwQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["g884-rR9Rd0"], + "params": "CAQ%3D" + } + }, + "videoIds": ["g884-rR9Rd0"] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Zu Wiedergabeliste hinzufügen" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Hinzugefügt" + } + }, + "trackingParams": "CDwQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { "runs": [{ "text": "Läuft gerade" }] } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/g884-rR9Rd0/mqdefault_6s.webp?du=3000&sqp=COeB3ZgG&rs=AOn4CLCIw237PZigmlTm9ZV2d4saCHA5fg", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + { + "gridVideoRenderer": { + "videoId": "cnF-BVrVs1M", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/cnF-BVrVs1M/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCaL8JCru4LM6cxE5c7Gy0LDcmDUw", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/cnF-BVrVs1M/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDVwekwp63JGz36Nh29U50-OJ8ZGg", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/cnF-BVrVs1M/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAR19mPFLcDBgNtU397jAlJDXmfIg", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/cnF-BVrVs1M/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAM01He5TG1vqxsa3RoFhF54ub3ZA", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "Senta - Was immer es ist (Offizielles Video)" + } + ], + "accessibility": { + "accessibilityData": { + "label": "Senta - Was immer es ist (Offizielles Video) von Sentamusic vor 4 Monaten 3 Minuten, 27 Sekunden 147.169 Aufrufe" + } + } + }, + "publishedTimeText": { + "simpleText": "vor 4 Monaten" + }, + "viewCountText": { "simpleText": "147.169 Aufrufe" }, + "navigationEndpoint": { + "clickTrackingParams": "CDcQlDUYBCITCMqVnPWrgPoCFVCOfAod6PYMFzIKZy1oaWdoLWNydloYVUNWR3ZucUItNXpucVBTYk1HbGhGNFB3mgEFEPI4GGaqARhVVVZHdm5xQi01em5xUFNiTUdsaEY0UHc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=cnF-BVrVs1M", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "cnF-BVrVs1M", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jeenle.googlevideo.com/initplayback?source=youtube&orc=1&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&rbqsm=fr&msp=1&odeak=1&odepv=1&osfc=1&id=72717e055ad5b353&ip=2003%3Ade%3Aaf14%3A5100%3A4e48%3Abc76%3A2e4f%3Aa149&initcwndbps=1607500&mt=1662472870&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "OFFICIAL_ARTIST_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Offizieller Künstlerkanal", + "trackingParams": "CDcQlDUYBCITCMqVnPWrgPoCFVCOfAod6PYMFw==", + "accessibilityData": { + "label": "Offizieller Künstlerkanal" + } + } + } + ], + "trackingParams": "CDcQlDUYBCITCMqVnPWrgPoCFVCOfAod6PYMF0DT5tbW1cDfuHKqARhVVVZHdm5xQi01em5xUFNiTUdsaEY0UHc=", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "147.169 Aufrufe" + } + }, + "simpleText": "147.169 Aufrufe" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Zu Wiedergabeliste hinzufügen" + } + ] + }, + "icon": { "iconType": "ADD_TO_QUEUE_TAIL" }, + "serviceEndpoint": { + "clickTrackingParams": "CDoQ_pgEGAYiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CDoQ_pgEGAYiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "cnF-BVrVs1M", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CDoQ_pgEGAYiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["cnF-BVrVs1M"], + "params": "CAQ%3D" + } + }, + "videoIds": ["cnF-BVrVs1M"] + } + } + ] + } + }, + "trackingParams": "CDoQ_pgEGAYiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + } + ], + "trackingParams": "CDcQlDUYBCITCMqVnPWrgPoCFVCOfAod6PYMFw==", + "accessibility": { + "accessibilityData": { "label": "Aktionsmenü" } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 Minuten, 27 Sekunden" + } + }, + "simpleText": "3:27" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { "iconType": "WATCH_LATER" }, + "toggledIcon": { "iconType": "CHECK" }, + "untoggledTooltip": "Später ansehen", + "toggledTooltip": "Hinzugefügt", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CDkQ-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "cnF-BVrVs1M", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CDkQ-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "cnF-BVrVs1M" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Später ansehen" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Hinzugefügt" + } + }, + "trackingParams": "CDkQ-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Zu Wiedergabeliste hinzufügen", + "toggledTooltip": "Hinzugefügt", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CDgQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CDgQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "cnF-BVrVs1M", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CDgQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["cnF-BVrVs1M"], + "params": "CAQ%3D" + } + }, + "videoIds": ["cnF-BVrVs1M"] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Zu Wiedergabeliste hinzufügen" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Hinzugefügt" + } + }, + "trackingParams": "CDgQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { "runs": [{ "text": "Läuft gerade" }] } + } + } + ] + } + }, + { + "gridVideoRenderer": { + "videoId": "UNd2MLw_qmQ", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/UNd2MLw_qmQ/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDYXtAWAumKDb7sz6ToyYTl85VHmw", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/UNd2MLw_qmQ/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCaEmixAhGsMvTR7Nk1SqaY01xFgQ", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/UNd2MLw_qmQ/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBsrdi0EO6EpqaS90ZZb6pI8W_Wag", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/UNd2MLw_qmQ/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAYlZWAJBbzseFi776UE31XH6EVcA", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [{ "text": "Senta live" }], + "accessibility": { + "accessibilityData": { + "label": "Senta live von Sentamusic vor 4 Monaten gestreamt 25 Minuten 1.238 Aufrufe" + } + } + }, + "publishedTimeText": { + "simpleText": "vor 4 Monaten gestreamt" + }, + "viewCountText": { "simpleText": "1.238 Aufrufe" }, + "navigationEndpoint": { + "clickTrackingParams": "CDMQlDUYBSITCMqVnPWrgPoCFVCOfAod6PYMFzIKZy1oaWdoLWNydloYVUNWR3ZucUItNXpucVBTYk1HbGhGNFB3mgEFEPI4GGaqARhVVVZHdm5xQi01em5xUFNiTUdsaEY0UHc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=UNd2MLw_qmQ", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "UNd2MLw_qmQ", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---sn-h0jeenl6.googlevideo.com/initplayback?source=youtube&orc=1&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&rbqsm=fr&msp=1&odeak=1&odepv=1&osfc=1&id=50d77630bc3faa64&ip=2003%3Ade%3Aaf14%3A5100%3A4e48%3Abc76%3A2e4f%3Aa149&initcwndbps=1612500&mt=1662472870&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "OFFICIAL_ARTIST_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Offizieller Künstlerkanal", + "trackingParams": "CDMQlDUYBSITCMqVnPWrgPoCFVCOfAod6PYMFw==", + "accessibilityData": { + "label": "Offizieller Künstlerkanal" + } + } + } + ], + "trackingParams": "CDMQlDUYBSITCMqVnPWrgPoCFVCOfAod6PYMF0Dk1P7hi8bd61CqARhVVVZHdm5xQi01em5xUFNiTUdsaEY0UHc=", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { "label": "1.238 Aufrufe" } + }, + "simpleText": "1238 Aufrufe" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Zu Wiedergabeliste hinzufügen" + } + ] + }, + "icon": { "iconType": "ADD_TO_QUEUE_TAIL" }, + "serviceEndpoint": { + "clickTrackingParams": "CDYQ_pgEGAciEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CDYQ_pgEGAciEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "UNd2MLw_qmQ", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CDYQ_pgEGAciEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["UNd2MLw_qmQ"], + "params": "CAQ%3D" + } + }, + "videoIds": ["UNd2MLw_qmQ"] + } + } + ] + } + }, + "trackingParams": "CDYQ_pgEGAciEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + } + ], + "trackingParams": "CDMQlDUYBSITCMqVnPWrgPoCFVCOfAod6PYMFw==", + "accessibility": { + "accessibilityData": { "label": "Aktionsmenü" } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "25 Minuten, 56 Sekunden" + } + }, + "simpleText": "25:56" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { "iconType": "WATCH_LATER" }, + "toggledIcon": { "iconType": "CHECK" }, + "untoggledTooltip": "Später ansehen", + "toggledTooltip": "Hinzugefügt", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CDUQ-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "UNd2MLw_qmQ", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CDUQ-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "UNd2MLw_qmQ" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Später ansehen" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Hinzugefügt" + } + }, + "trackingParams": "CDUQ-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Zu Wiedergabeliste hinzufügen", + "toggledTooltip": "Hinzugefügt", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CDQQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CDQQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "UNd2MLw_qmQ", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CDQQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["UNd2MLw_qmQ"], + "params": "CAQ%3D" + } + }, + "videoIds": ["UNd2MLw_qmQ"] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Zu Wiedergabeliste hinzufügen" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Hinzugefügt" + } + }, + "trackingParams": "CDQQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { "runs": [{ "text": "Läuft gerade" }] } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/UNd2MLw_qmQ/mqdefault_6s.webp?du=3000&sqp=CMSl3ZgG&rs=AOn4CLCtsZ6TAzAQytUxKEIeyONu7zneTg", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + { + "gridVideoRenderer": { + "videoId": "6RqSL-K07fo", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/6RqSL-K07fo/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLANRixRaiLAnWADuVaKVwLoo5QcPg", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/6RqSL-K07fo/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDvS6D_LAMiF8dehUFBfodafXAwAg", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/6RqSL-K07fo/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLBgrOghm-ae6vUt7OqF7Gegagw1oA", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/6RqSL-K07fo/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAHvlfOnzbwsY52tvkY2tu9oB4mlA", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [{ "text": "Senta live" }], + "accessibility": { + "accessibilityData": { + "label": "Senta live von Sentamusic vor 4 Monaten gestreamt 34 Minuten 1.101 Aufrufe" + } + } + }, + "publishedTimeText": { + "simpleText": "vor 4 Monaten gestreamt" + }, + "viewCountText": { "simpleText": "1.101 Aufrufe" }, + "navigationEndpoint": { + "clickTrackingParams": "CC8QlDUYBiITCMqVnPWrgPoCFVCOfAod6PYMFzIKZy1oaWdoLWNydloYVUNWR3ZucUItNXpucVBTYk1HbGhGNFB3mgEFEPI4GGaqARhVVVZHdm5xQi01em5xUFNiTUdsaEY0UHc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=6RqSL-K07fo", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "6RqSL-K07fo", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr4---sn-h0jeener.googlevideo.com/initplayback?source=youtube&orc=1&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&rbqsm=fr&msp=1&odeak=1&odepv=1&osfc=1&id=e91a922fe2b4edfa&ip=2003%3Ade%3Aaf14%3A5100%3A4e48%3Abc76%3A2e4f%3Aa149&initcwndbps=1612500&mt=1662472870&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "OFFICIAL_ARTIST_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Offizieller Künstlerkanal", + "trackingParams": "CC8QlDUYBiITCMqVnPWrgPoCFVCOfAod6PYMFw==", + "accessibilityData": { + "label": "Offizieller Künstlerkanal" + } + } + } + ], + "trackingParams": "CC8QlDUYBiITCMqVnPWrgPoCFVCOfAod6PYMF0D629OV_sWkjekBqgEYVVVWR3ZucUItNXpucVBTYk1HbGhGNFB3", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { "label": "1.101 Aufrufe" } + }, + "simpleText": "1101 Aufrufe" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Zu Wiedergabeliste hinzufügen" + } + ] + }, + "icon": { "iconType": "ADD_TO_QUEUE_TAIL" }, + "serviceEndpoint": { + "clickTrackingParams": "CDIQ_pgEGAciEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CDIQ_pgEGAciEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "6RqSL-K07fo", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CDIQ_pgEGAciEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["6RqSL-K07fo"], + "params": "CAQ%3D" + } + }, + "videoIds": ["6RqSL-K07fo"] + } + } + ] + } + }, + "trackingParams": "CDIQ_pgEGAciEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + } + ], + "trackingParams": "CC8QlDUYBiITCMqVnPWrgPoCFVCOfAod6PYMFw==", + "accessibility": { + "accessibilityData": { "label": "Aktionsmenü" } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "34 Minuten, 50 Sekunden" + } + }, + "simpleText": "34:50" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { "iconType": "WATCH_LATER" }, + "toggledIcon": { "iconType": "CHECK" }, + "untoggledTooltip": "Später ansehen", + "toggledTooltip": "Hinzugefügt", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CDEQ-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "6RqSL-K07fo", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CDEQ-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "6RqSL-K07fo" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Später ansehen" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Hinzugefügt" + } + }, + "trackingParams": "CDEQ-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Zu Wiedergabeliste hinzufügen", + "toggledTooltip": "Hinzugefügt", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CDAQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CDAQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "6RqSL-K07fo", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CDAQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["6RqSL-K07fo"], + "params": "CAQ%3D" + } + }, + "videoIds": ["6RqSL-K07fo"] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Zu Wiedergabeliste hinzufügen" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Hinzugefügt" + } + }, + "trackingParams": "CDAQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { "runs": [{ "text": "Läuft gerade" }] } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/6RqSL-K07fo/mqdefault_6s.webp?du=3000&sqp=CPiN3ZgG&rs=AOn4CLCjvKvu5MDJcwLpMdf8M-bxU8j3_Q", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + { + "gridVideoRenderer": { + "videoId": "kUWwGAUC8I4", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/kUWwGAUC8I4/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDLTuhQgHAi3JYOeviOgMSq89oxyg", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/kUWwGAUC8I4/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCvkOO1xClQ-cPtj1ZKvhaYYGwO3Q", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/kUWwGAUC8I4/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC8qcBUpXsj8aQfvJLbRN2YjrvG5A", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/kUWwGAUC8I4/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDXg21CJM7RuiK0TeE4Jmi49wAxRw", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [{ "text": "Senta live" }], + "accessibility": { + "accessibilityData": { + "label": "Senta live von Sentamusic vor 4 Monaten gestreamt 53 Minuten 1.362 Aufrufe" + } + } + }, + "publishedTimeText": { + "simpleText": "vor 4 Monaten gestreamt" + }, + "viewCountText": { "simpleText": "1.362 Aufrufe" }, + "navigationEndpoint": { + "clickTrackingParams": "CCsQlDUYByITCMqVnPWrgPoCFVCOfAod6PYMFzIKZy1oaWdoLWNydloYVUNWR3ZucUItNXpucVBTYk1HbGhGNFB3mgEFEPI4GGaqARhVVVZHdm5xQi01em5xUFNiTUdsaEY0UHc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=kUWwGAUC8I4", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "kUWwGAUC8I4", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr5---sn-h0jeened.googlevideo.com/initplayback?source=youtube&orc=1&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&rbqsm=fr&msp=1&odeak=1&odepv=1&osfc=1&id=9145b0180502f08e&ip=2003%3Ade%3Aaf14%3A5100%3A4e48%3Abc76%3A2e4f%3Aa149&initcwndbps=1607500&mt=1662472870&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "OFFICIAL_ARTIST_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Offizieller Künstlerkanal", + "trackingParams": "CCsQlDUYByITCMqVnPWrgPoCFVCOfAod6PYMFw==", + "accessibilityData": { + "label": "Offizieller Künstlerkanal" + } + } + } + ], + "trackingParams": "CCsQlDUYByITCMqVnPWrgPoCFVCOfAod6PYMF0CO4YuogIPsopEBqgEYVVVWR3ZucUItNXpucVBTYk1HbGhGNFB3", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { "label": "1.362 Aufrufe" } + }, + "simpleText": "1362 Aufrufe" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Zu Wiedergabeliste hinzufügen" + } + ] + }, + "icon": { "iconType": "ADD_TO_QUEUE_TAIL" }, + "serviceEndpoint": { + "clickTrackingParams": "CC4Q_pgEGAciEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CC4Q_pgEGAciEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "kUWwGAUC8I4", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CC4Q_pgEGAciEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["kUWwGAUC8I4"], + "params": "CAQ%3D" + } + }, + "videoIds": ["kUWwGAUC8I4"] + } + } + ] + } + }, + "trackingParams": "CC4Q_pgEGAciEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + } + ], + "trackingParams": "CCsQlDUYByITCMqVnPWrgPoCFVCOfAod6PYMFw==", + "accessibility": { + "accessibilityData": { "label": "Aktionsmenü" } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "53 Minuten, 55 Sekunden" + } + }, + "simpleText": "53:55" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { "iconType": "WATCH_LATER" }, + "toggledIcon": { "iconType": "CHECK" }, + "untoggledTooltip": "Später ansehen", + "toggledTooltip": "Hinzugefügt", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CC0Q-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "kUWwGAUC8I4", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CC0Q-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "kUWwGAUC8I4" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Später ansehen" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Hinzugefügt" + } + }, + "trackingParams": "CC0Q-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Zu Wiedergabeliste hinzufügen", + "toggledTooltip": "Hinzugefügt", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CCwQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CCwQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "kUWwGAUC8I4", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CCwQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["kUWwGAUC8I4"], + "params": "CAQ%3D" + } + }, + "videoIds": ["kUWwGAUC8I4"] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Zu Wiedergabeliste hinzufügen" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Hinzugefügt" + } + }, + "trackingParams": "CCwQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { "runs": [{ "text": "Läuft gerade" }] } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/kUWwGAUC8I4/mqdefault_6s.webp?du=3000&sqp=CP7z3JgG&rs=AOn4CLBMGU_gG-KATldpRq07QFRt0bnIXQ", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + { + "gridVideoRenderer": { + "videoId": "-Kgkvu8suGs", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/-Kgkvu8suGs/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCFbu78bI4NnWPoDtxUK2az8Ft7Ww", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/-Kgkvu8suGs/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCeB_bKjC8bU6SOK1SA9LX4DPZZ7w", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/-Kgkvu8suGs/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAUBpWz-JboRCgYBVoCRVRSzq3BnA", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/-Kgkvu8suGs/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCXTm5pTJvjtSulFyD076__jnqNhQ", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [{ "text": "Aus Oonagh wird Senta ❤️" }], + "accessibility": { + "accessibilityData": { + "label": "Aus Oonagh wird Senta ❤️ von Sentamusic vor 4 Monaten 41 Minuten 4.902 Aufrufe" + } + } + }, + "publishedTimeText": { + "simpleText": "vor 4 Monaten" + }, + "viewCountText": { "simpleText": "4.902 Aufrufe" }, + "navigationEndpoint": { + "clickTrackingParams": "CCcQlDUYCCITCMqVnPWrgPoCFVCOfAod6PYMFzIKZy1oaWdoLWNydloYVUNWR3ZucUItNXpucVBTYk1HbGhGNFB3mgEFEPI4GGaqARhVVVZHdm5xQi01em5xUFNiTUdsaEY0UHc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=-Kgkvu8suGs", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "-Kgkvu8suGs", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/initplayback?source=youtube&orc=1&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&rbqsm=fr&msp=1&odeak=1&odepv=1&osfc=1&id=f8a824beef2cb86b&ip=2003%3Ade%3Aaf14%3A5100%3A4e48%3Abc76%3A2e4f%3Aa149&initcwndbps=1612500&mt=1662472870&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "OFFICIAL_ARTIST_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Offizieller Künstlerkanal", + "trackingParams": "CCcQlDUYCCITCMqVnPWrgPoCFVCOfAod6PYMFw==", + "accessibilityData": { + "label": "Offizieller Künstlerkanal" + } + } + } + ], + "trackingParams": "CCcQlDUYCCITCMqVnPWrgPoCFVCOfAod6PYMF0Dr8LL57peJ1PgBqgEYVVVWR3ZucUItNXpucVBTYk1HbGhGNFB3", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { "label": "4.902 Aufrufe" } + }, + "simpleText": "4902 Aufrufe" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Zu Wiedergabeliste hinzufügen" + } + ] + }, + "icon": { "iconType": "ADD_TO_QUEUE_TAIL" }, + "serviceEndpoint": { + "clickTrackingParams": "CCoQ_pgEGAciEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CCoQ_pgEGAciEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "-Kgkvu8suGs", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CCoQ_pgEGAciEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["-Kgkvu8suGs"], + "params": "CAQ%3D" + } + }, + "videoIds": ["-Kgkvu8suGs"] + } + } + ] + } + }, + "trackingParams": "CCoQ_pgEGAciEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + } + ], + "trackingParams": "CCcQlDUYCCITCMqVnPWrgPoCFVCOfAod6PYMFw==", + "accessibility": { + "accessibilityData": { "label": "Aktionsmenü" } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "41 Minuten, 12 Sekunden" + } + }, + "simpleText": "41:12" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { "iconType": "WATCH_LATER" }, + "toggledIcon": { "iconType": "CHECK" }, + "untoggledTooltip": "Später ansehen", + "toggledTooltip": "Hinzugefügt", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CCkQ-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "-Kgkvu8suGs", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CCkQ-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "-Kgkvu8suGs" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Später ansehen" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Hinzugefügt" + } + }, + "trackingParams": "CCkQ-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Zu Wiedergabeliste hinzufügen", + "toggledTooltip": "Hinzugefügt", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CCgQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CCgQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "-Kgkvu8suGs", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CCgQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["-Kgkvu8suGs"], + "params": "CAQ%3D" + } + }, + "videoIds": ["-Kgkvu8suGs"] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Zu Wiedergabeliste hinzufügen" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Hinzugefügt" + } + }, + "trackingParams": "CCgQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { "runs": [{ "text": "Läuft gerade" }] } + } + } + ], + "richThumbnail": { + "movingThumbnailRenderer": { + "movingThumbnailDetails": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/an_webp/-Kgkvu8suGs/mqdefault_6s.webp?du=3000&sqp=CKWi3ZgG&rs=AOn4CLBlgE60DhISLfcmyOoPhfAWyHcgkA", + "width": 320, + "height": 180 + } + ], + "logAsMovingThumbnail": true + }, + "enableHoveredLogging": true, + "enableOverlay": true + } + } + } + }, + { + "gridVideoRenderer": { + "videoId": "yHv2oXYVbZg", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/yHv2oXYVbZg/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAa1OXTycpbAbBIaoTBw-zx02m78A", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/yHv2oXYVbZg/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLBNwnFokav12wJFs9SZdhq2fBt05A", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/yHv2oXYVbZg/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCaIc50NjVgRcTvwFiRUjdGuqCMJA", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/yHv2oXYVbZg/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLACEpsISIuWKiFPdPDPkOd85_xPpA", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [ + { + "text": "Oonagh, Safri Duo - Zeit der Sommernächte" + } + ], + "accessibility": { + "accessibilityData": { + "label": "Oonagh, Safri Duo - Zeit der Sommernächte von OonaghVEVO vor 5 Jahren 2 Minuten, 58 Sekunden 1.948.579 Aufrufe" + } + } + }, + "publishedTimeText": { "simpleText": "vor 5 Jahren" }, + "viewCountText": { + "simpleText": "1.948.579 Aufrufe" + }, + "navigationEndpoint": { + "clickTrackingParams": "CCMQlDUYCSITCMqVnPWrgPoCFVCOfAod6PYMFzIKZy1oaWdoLWNydloYVUNWR3ZucUItNXpucVBTYk1HbGhGNFB3mgEFEPI4GGaqARhVVVZHdm5xQi01em5xUFNiTUdsaEY0UHc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=yHv2oXYVbZg", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "yHv2oXYVbZg", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr2---sn-h0jeenek.googlevideo.com/initplayback?source=youtube&orc=1&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&rbqsm=fr&msp=1&odeak=1&odepv=1&osfc=1&id=c87bf6a176156d98&ip=2003%3Ade%3Aaf14%3A5100%3A4e48%3Abc76%3A2e4f%3Aa149&initcwndbps=1612500&mt=1662472870&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "OFFICIAL_ARTIST_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Offizieller Künstlerkanal", + "trackingParams": "CCMQlDUYCSITCMqVnPWrgPoCFVCOfAod6PYMFw==", + "accessibilityData": { + "label": "Offizieller Künstlerkanal" + } + } + } + ], + "trackingParams": "CCMQlDUYCSITCMqVnPWrgPoCFVCOfAod6PYMF0CY29Wwl9T9vcgBqgEYVVVWR3ZucUItNXpucVBTYk1HbGhGNFB3", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "1,9 Millionen Aufrufe" + } + }, + "simpleText": "1,9 Mio. Aufrufe" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Zu Wiedergabeliste hinzufügen" + } + ] + }, + "icon": { "iconType": "ADD_TO_QUEUE_TAIL" }, + "serviceEndpoint": { + "clickTrackingParams": "CCYQ_pgEGAYiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CCYQ_pgEGAYiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "yHv2oXYVbZg", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CCYQ_pgEGAYiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["yHv2oXYVbZg"], + "params": "CAQ%3D" + } + }, + "videoIds": ["yHv2oXYVbZg"] + } + } + ] + } + }, + "trackingParams": "CCYQ_pgEGAYiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + } + ], + "trackingParams": "CCMQlDUYCSITCMqVnPWrgPoCFVCOfAod6PYMFw==", + "accessibility": { + "accessibilityData": { "label": "Aktionsmenü" } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "2 Minuten, 58 Sekunden" + } + }, + "simpleText": "2:58" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { "iconType": "WATCH_LATER" }, + "toggledIcon": { "iconType": "CHECK" }, + "untoggledTooltip": "Später ansehen", + "toggledTooltip": "Hinzugefügt", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CCUQ-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "yHv2oXYVbZg", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CCUQ-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "yHv2oXYVbZg" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Später ansehen" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Hinzugefügt" + } + }, + "trackingParams": "CCUQ-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Zu Wiedergabeliste hinzufügen", + "toggledTooltip": "Hinzugefügt", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CCQQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CCQQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "yHv2oXYVbZg", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CCQQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["yHv2oXYVbZg"], + "params": "CAQ%3D" + } + }, + "videoIds": ["yHv2oXYVbZg"] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Zu Wiedergabeliste hinzufügen" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Hinzugefügt" + } + }, + "trackingParams": "CCQQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { "runs": [{ "text": "Läuft gerade" }] } + } + } + ] + } + }, + { + "gridVideoRenderer": { + "videoId": "E9hkLz3CtTk", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/E9hkLz3CtTk/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLDfgG-urit1x0l8o1e7myU79l6oPQ", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/E9hkLz3CtTk/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA0F37BF1CNB_GzKDlmG-Hilwq7QQ", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/E9hkLz3CtTk/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLCCrnECcDGrnBiyoU66toeG0fddlg", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/E9hkLz3CtTk/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLAulWOHEdTFsAF7HrRsY8Gv0vlFxw", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [{ "text": "Oonagh - Gäa" }], + "accessibility": { + "accessibilityData": { + "label": "Oonagh - Gäa von OonaghVEVO vor 7 Jahren 4 Minuten, 5 Sekunden 288.007 Aufrufe" + } + } + }, + "publishedTimeText": { "simpleText": "vor 7 Jahren" }, + "viewCountText": { "simpleText": "288.007 Aufrufe" }, + "navigationEndpoint": { + "clickTrackingParams": "CB8QlDUYCiITCMqVnPWrgPoCFVCOfAod6PYMFzIKZy1oaWdoLWNydloYVUNWR3ZucUItNXpucVBTYk1HbGhGNFB3mgEFEPI4GGaqARhVVVZHdm5xQi01em5xUFNiTUdsaEY0UHc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=E9hkLz3CtTk", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "E9hkLz3CtTk", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr1---sn-h0jelnes.googlevideo.com/initplayback?source=youtube&orc=1&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&rbqsm=fr&msp=1&odeak=1&odepv=1&osfc=1&id=13d8642f3dc2b539&ip=2003%3Ade%3Aaf14%3A5100%3A4e48%3Abc76%3A2e4f%3Aa149&initcwndbps=1612500&mt=1662472870&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "OFFICIAL_ARTIST_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Offizieller Künstlerkanal", + "trackingParams": "CB8QlDUYCiITCMqVnPWrgPoCFVCOfAod6PYMFw==", + "accessibilityData": { + "label": "Offizieller Künstlerkanal" + } + } + } + ], + "trackingParams": "CB8QlDUYCiITCMqVnPWrgPoCFVCOfAod6PYMF0C56oru84WZ7BOqARhVVVZHdm5xQi01em5xUFNiTUdsaEY0UHc=", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "288.007 Aufrufe" + } + }, + "simpleText": "288.007 Aufrufe" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Zu Wiedergabeliste hinzufügen" + } + ] + }, + "icon": { "iconType": "ADD_TO_QUEUE_TAIL" }, + "serviceEndpoint": { + "clickTrackingParams": "CCIQ_pgEGAYiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CCIQ_pgEGAYiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "E9hkLz3CtTk", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CCIQ_pgEGAYiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["E9hkLz3CtTk"], + "params": "CAQ%3D" + } + }, + "videoIds": ["E9hkLz3CtTk"] + } + } + ] + } + }, + "trackingParams": "CCIQ_pgEGAYiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + } + ], + "trackingParams": "CB8QlDUYCiITCMqVnPWrgPoCFVCOfAod6PYMFw==", + "accessibility": { + "accessibilityData": { "label": "Aktionsmenü" } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "4 Minuten, 5 Sekunden" + } + }, + "simpleText": "4:05" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { "iconType": "WATCH_LATER" }, + "toggledIcon": { "iconType": "CHECK" }, + "untoggledTooltip": "Später ansehen", + "toggledTooltip": "Hinzugefügt", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CCEQ-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "E9hkLz3CtTk", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CCEQ-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "E9hkLz3CtTk" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Später ansehen" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Hinzugefügt" + } + }, + "trackingParams": "CCEQ-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Zu Wiedergabeliste hinzufügen", + "toggledTooltip": "Hinzugefügt", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CCAQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CCAQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "E9hkLz3CtTk", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CCAQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["E9hkLz3CtTk"], + "params": "CAQ%3D" + } + }, + "videoIds": ["E9hkLz3CtTk"] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Zu Wiedergabeliste hinzufügen" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Hinzugefügt" + } + }, + "trackingParams": "CCAQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { "runs": [{ "text": "Läuft gerade" }] } + } + } + ] + } + }, + { + "gridVideoRenderer": { + "videoId": "iHIB7D7-wWw", + "thumbnail": { + "thumbnails": [ + { + "url": "https://i.ytimg.com/vi/iHIB7D7-wWw/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAzynYFV3BKM1FEp_jMJPsP1AfYgg", + "width": 168, + "height": 94 + }, + { + "url": "https://i.ytimg.com/vi/iHIB7D7-wWw/hqdefault.jpg?sqp=-oaymwEbCMQBEG5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLAvL4nKqmpprteiIt8EEiA3za6IpQ", + "width": 196, + "height": 110 + }, + { + "url": "https://i.ytimg.com/vi/iHIB7D7-wWw/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLC-qUWq3wFYTPu4iEKuT6684C6ZxQ", + "width": 246, + "height": 138 + }, + { + "url": "https://i.ytimg.com/vi/iHIB7D7-wWw/hqdefault.jpg?sqp=-oaymwEcCNACELwBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLDd7jt3Jth1joexUByW8s88MECjsw", + "width": 336, + "height": 188 + } + ] + }, + "title": { + "runs": [{ "text": "Oonagh - Eldamar" }], + "accessibility": { + "accessibilityData": { + "label": "Oonagh - Eldamar von OonaghVEVO vor 7 Jahren 3 Minuten, 43 Sekunden 501.530 Aufrufe" + } + } + }, + "publishedTimeText": { "simpleText": "vor 7 Jahren" }, + "viewCountText": { "simpleText": "501.530 Aufrufe" }, + "navigationEndpoint": { + "clickTrackingParams": "CBsQlDUYCyITCMqVnPWrgPoCFVCOfAod6PYMFzIKZy1oaWdoLWNydloYVUNWR3ZucUItNXpucVBTYk1HbGhGNFB3mgEFEPI4GGaqARhVVVZHdm5xQi01em5xUFNiTUdsaEY0UHc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/watch?v=iHIB7D7-wWw", + "webPageType": "WEB_PAGE_TYPE_WATCH", + "rootVe": 3832 + } + }, + "watchEndpoint": { + "videoId": "iHIB7D7-wWw", + "watchEndpointSupportedOnesieConfig": { + "html5PlaybackOnesieConfig": { + "commonConfig": { + "url": "https://rr3---sn-h0jeenl6.googlevideo.com/initplayback?source=youtube&orc=1&oeis=1&c=WEB&oad=3200&ovd=3200&oaad=11000&oavd=11000&ocs=700&oewis=1&oputc=1&ofpcc=1&rbqsm=fr&msp=1&odeak=1&odepv=1&osfc=1&id=887201ec3efec16c&ip=2003%3Ade%3Aaf14%3A5100%3A4e48%3Abc76%3A2e4f%3Aa149&initcwndbps=1612500&mt=1662472870&oweuc=" + } + } + } + } + }, + "ownerBadges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "OFFICIAL_ARTIST_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Offizieller Künstlerkanal", + "trackingParams": "CBsQlDUYCyITCMqVnPWrgPoCFVCOfAod6PYMFw==", + "accessibilityData": { + "label": "Offizieller Künstlerkanal" + } + } + } + ], + "trackingParams": "CBsQlDUYCyITCMqVnPWrgPoCFVCOfAod6PYMF0Dsgvv3w72AuYgBqgEYVVVWR3ZucUItNXpucVBTYk1HbGhGNFB3", + "shortViewCountText": { + "accessibility": { + "accessibilityData": { + "label": "501.530 Aufrufe" + } + }, + "simpleText": "501.530 Aufrufe" + }, + "menu": { + "menuRenderer": { + "items": [ + { + "menuServiceItemRenderer": { + "text": { + "runs": [ + { + "text": "Zu Wiedergabeliste hinzufügen" + } + ] + }, + "icon": { "iconType": "ADD_TO_QUEUE_TAIL" }, + "serviceEndpoint": { + "clickTrackingParams": "CB4Q_pgEGAYiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true + } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CB4Q_pgEGAYiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "iHIB7D7-wWw", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CB4Q_pgEGAYiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["iHIB7D7-wWw"], + "params": "CAQ%3D" + } + }, + "videoIds": ["iHIB7D7-wWw"] + } + } + ] + } + }, + "trackingParams": "CB4Q_pgEGAYiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + } + ], + "trackingParams": "CBsQlDUYCyITCMqVnPWrgPoCFVCOfAod6PYMFw==", + "accessibility": { + "accessibilityData": { "label": "Aktionsmenü" } + } + } + }, + "thumbnailOverlays": [ + { + "thumbnailOverlayTimeStatusRenderer": { + "text": { + "accessibility": { + "accessibilityData": { + "label": "3 Minuten, 43 Sekunden" + } + }, + "simpleText": "3:43" + }, + "style": "DEFAULT" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "isToggled": false, + "untoggledIcon": { "iconType": "WATCH_LATER" }, + "toggledIcon": { "iconType": "CHECK" }, + "untoggledTooltip": "Später ansehen", + "toggledTooltip": "Hinzugefügt", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CB0Q-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "addedVideoId": "iHIB7D7-wWw", + "action": "ACTION_ADD_VIDEO" + } + ] + } + }, + "toggledServiceEndpoint": { + "clickTrackingParams": "CB0Q-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/browse/edit_playlist" + } + }, + "playlistEditEndpoint": { + "playlistId": "WL", + "actions": [ + { + "action": "ACTION_REMOVE_VIDEO_BY_VIDEO_ID", + "removedVideoId": "iHIB7D7-wWw" + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Später ansehen" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Hinzugefügt" + } + }, + "trackingParams": "CB0Q-ecDGAIiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "thumbnailOverlayToggleButtonRenderer": { + "untoggledIcon": { + "iconType": "ADD_TO_QUEUE_TAIL" + }, + "toggledIcon": { + "iconType": "PLAYLIST_ADD_CHECK" + }, + "untoggledTooltip": "Zu Wiedergabeliste hinzufügen", + "toggledTooltip": "Hinzugefügt", + "untoggledServiceEndpoint": { + "clickTrackingParams": "CBwQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { "sendPost": true } + }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CBwQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "addToPlaylistCommand": { + "openMiniplayer": true, + "videoId": "iHIB7D7-wWw", + "listType": "PLAYLIST_EDIT_LIST_TYPE_QUEUE", + "onCreateListCommand": { + "clickTrackingParams": "CBwQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/playlist/create" + } + }, + "createPlaylistServiceEndpoint": { + "videoIds": ["iHIB7D7-wWw"], + "params": "CAQ%3D" + } + }, + "videoIds": ["iHIB7D7-wWw"] + } + } + ] + } + }, + "untoggledAccessibility": { + "accessibilityData": { + "label": "Zu Wiedergabeliste hinzufügen" + } + }, + "toggledAccessibility": { + "accessibilityData": { + "label": "Hinzugefügt" + } + }, + "trackingParams": "CBwQx-wEGAMiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "thumbnailOverlayNowPlayingRenderer": { + "text": { "runs": [{ "text": "Läuft gerade" }] } + } + } + ] + } + } + ], + "trackingParams": "CBoQ6IsCGAAiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "targetId": "browse-feedUCVGvnqB-5znqPSbMGlhF4Pwvideos102" + } + } + ], + "trackingParams": "CBkQuy8YACITCMqVnPWrgPoCFVCOfAod6PYMFw==" + } + } + ], + "trackingParams": "CBgQui8iEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "subMenu": { + "channelSubMenuRenderer": { + "contentTypeSubMenuItems": [ + { + "endpoint": { + "clickTrackingParams": "CBgQui8iEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw/videos?view=57", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "params": "EgZ2aWRlb3MgOQ%3D%3D", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + }, + "title": "Alle Videos", + "selected": false + }, + { + "endpoint": { + "clickTrackingParams": "CBgQui8iEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw/videos?view=0", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "params": "EgZ2aWRlb3MgAA%3D%3D", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + }, + "title": "Uploads", + "selected": true + }, + { + "endpoint": { + "clickTrackingParams": "CBgQui8iEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw/videos?view=2&live_view=503", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "params": "EgZ2aWRlb3MgAjgE", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + }, + "title": "Bereits übertragene Livestreams", + "selected": false + } + ] + } + }, + "targetId": "browse-feedUCVGvnqB-5znqPSbMGlhF4Pwvideos", + "disablePullToRefresh": true + } + }, + "trackingParams": "CBcQ8JMBGAYiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "tabRenderer": { + "endpoint": { + "clickTrackingParams": "CBYQ8JMBGAciEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw/playlists", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "params": "EglwbGF5bGlzdHPyBgQKAkIA", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + }, + "title": "Playlists", + "trackingParams": "CBYQ8JMBGAciEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "tabRenderer": { + "endpoint": { + "clickTrackingParams": "CBUQ8JMBGAgiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw/community", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "params": "Egljb21tdW5pdHnyBgQKAkoA", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + }, + "title": "Community", + "trackingParams": "CBUQ8JMBGAgiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "tabRenderer": { + "endpoint": { + "clickTrackingParams": "CBQQ8JMBGAkiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw/channels", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "params": "EghjaGFubmVsc_IGBAoCUgA%3D", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + }, + "title": "Kanäle", + "trackingParams": "CBQQ8JMBGAkiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "tabRenderer": { + "endpoint": { + "clickTrackingParams": "CBMQ8JMBGAoiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw/about", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "params": "EgVhYm91dPIGBAoCEgA%3D", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + }, + "title": "Kanalinfo", + "trackingParams": "CBMQ8JMBGAoiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + { + "expandableTabRenderer": { + "endpoint": { + "clickTrackingParams": "CAAQhGciEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw/search", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "params": "EgZzZWFyY2jyBgQKAloA", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + }, + "title": "Suchen", + "selected": false + } + } + ] + } + }, + "header": { + "c4TabbedHeaderRenderer": { + "channelId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "title": "Sentamusic", + "navigationEndpoint": { + "clickTrackingParams": "CBAQ8DsiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + }, + "avatar": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/kMEmMboMmlCJpIv5TkMfRe6CDGoNuDbsaR_dhwALRK25iwS0PxsWFC5eEgh-ff91aeYUqbgXcQ=s48-c-k-c0x00ffffff-no-rj", + "width": 48, + "height": 48 + }, + { + "url": "https://yt3.ggpht.com/kMEmMboMmlCJpIv5TkMfRe6CDGoNuDbsaR_dhwALRK25iwS0PxsWFC5eEgh-ff91aeYUqbgXcQ=s88-c-k-c0x00ffffff-no-rj", + "width": 88, + "height": 88 + }, + { + "url": "https://yt3.ggpht.com/kMEmMboMmlCJpIv5TkMfRe6CDGoNuDbsaR_dhwALRK25iwS0PxsWFC5eEgh-ff91aeYUqbgXcQ=s176-c-k-c0x00ffffff-no-rj", + "width": 176, + "height": 176 + } + ] + }, + "banner": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/aSaN3VHZDknidgCzNwgjb_Fp5THXk0Vsr5LCWAIeQdTdKAqWchSyI9FdODtIQ4vsBXtdHnxGCA=w1060-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + "width": 1060, + "height": 175 + }, + { + "url": "https://yt3.ggpht.com/aSaN3VHZDknidgCzNwgjb_Fp5THXk0Vsr5LCWAIeQdTdKAqWchSyI9FdODtIQ4vsBXtdHnxGCA=w1138-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + "width": 1138, + "height": 188 + }, + { + "url": "https://yt3.ggpht.com/aSaN3VHZDknidgCzNwgjb_Fp5THXk0Vsr5LCWAIeQdTdKAqWchSyI9FdODtIQ4vsBXtdHnxGCA=w1707-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + "width": 1707, + "height": 283 + }, + { + "url": "https://yt3.ggpht.com/aSaN3VHZDknidgCzNwgjb_Fp5THXk0Vsr5LCWAIeQdTdKAqWchSyI9FdODtIQ4vsBXtdHnxGCA=w2120-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + "width": 2120, + "height": 351 + }, + { + "url": "https://yt3.ggpht.com/aSaN3VHZDknidgCzNwgjb_Fp5THXk0Vsr5LCWAIeQdTdKAqWchSyI9FdODtIQ4vsBXtdHnxGCA=w2276-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + "width": 2276, + "height": 377 + }, + { + "url": "https://yt3.ggpht.com/aSaN3VHZDknidgCzNwgjb_Fp5THXk0Vsr5LCWAIeQdTdKAqWchSyI9FdODtIQ4vsBXtdHnxGCA=w2560-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj", + "width": 2560, + "height": 424 + } + ] + }, + "badges": [ + { + "metadataBadgeRenderer": { + "icon": { "iconType": "OFFICIAL_ARTIST_BADGE" }, + "style": "BADGE_STYLE_TYPE_VERIFIED_ARTIST", + "tooltip": "Offizieller Künstlerkanal", + "trackingParams": "CBAQ8DsiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "accessibilityData": { "label": "Offizieller Künstlerkanal" } + } + } + ], + "headerLinks": { + "channelHeaderLinksRenderer": { + "primaryLinks": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CBAQ8DsiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://www.youtube.com/redirect?event=channel_banner&redir_token=QUFFLUhqbV9jSHcwbDZZYm1NU296aEM0ZGp4UWY4STN0UXxBQ3Jtc0tuTHNacTg0cnRkNWhBRWE4cEc5aWJKcU0xeU1UQ3poZXZiRXVCMXdJWnoyc01vRmRwa09idUd2WlhOYVIzZm5kQV9IbWVDcEpjWTkxMUxHX3Y1Si1qSnhrYnZyTkR5NHVHSjlhLTBBR2hKMkFRejhpYw&q=http%3A%2F%2Fsentamusic.de%2F", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://www.youtube.com/redirect?event=channel_banner&redir_token=QUFFLUhqbV9jSHcwbDZZYm1NU296aEM0ZGp4UWY4STN0UXxBQ3Jtc0tuTHNacTg0cnRkNWhBRWE4cEc5aWJKcU0xeU1UQ3poZXZiRXVCMXdJWnoyc01vRmRwa09idUd2WlhOYVIzZm5kQV9IbWVDcEpjWTkxMUxHX3Y1Si1qSnhrYnZyTkR5NHVHSjlhLTBBR2hKMkFRejhpYw&q=http%3A%2F%2Fsentamusic.de%2F", + "target": "TARGET_NEW_WINDOW", + "nofollow": true + } + }, + "icon": { + "thumbnails": [ + { + "url": "https://encrypted-tbn3.gstatic.com/favicon-tbn?q=tbn:ANd9GcSeK71kr5xYL1ryCEEzKmQNDFntRT_Oy-fubiOdRT1bNVTNsFW8X1k7uiqrIAfccYHJBQdx_7ALjlaS9sx--Jdt7QE0kVWiRI_SoHjIEznhQGE" + } + ] + }, + "title": { "simpleText": "Homepage" } + } + ], + "secondaryLinks": [ + { + "navigationEndpoint": { + "clickTrackingParams": "CBAQ8DsiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://www.youtube.com/redirect?event=channel_banner&redir_token=QUFFLUhqbk5WSHl1Q3JGcnlIMFZhNm8wNXZqMld4R3RaZ3xBQ3Jtc0tsejQwblJPTDdSR0Z2SUFUZXAzakdLbkFiNHU4WFA2aldKY3NoUExSdlM0NFJHMHdyTEJUYl9NSmlVdWZQa0dhVnpyLUgtOEFIZ0NoUWZpNFZwN2JKOGxkUnk3cERTbHp4bUlmcUZVMVlqSVRoWHlqNA&q=https%3A%2F%2Fwww.facebook.com%2FSentamusic", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://www.youtube.com/redirect?event=channel_banner&redir_token=QUFFLUhqbk5WSHl1Q3JGcnlIMFZhNm8wNXZqMld4R3RaZ3xBQ3Jtc0tsejQwblJPTDdSR0Z2SUFUZXAzakdLbkFiNHU4WFA2aldKY3NoUExSdlM0NFJHMHdyTEJUYl9NSmlVdWZQa0dhVnpyLUgtOEFIZ0NoUWZpNFZwN2JKOGxkUnk3cERTbHp4bUlmcUZVMVlqSVRoWHlqNA&q=https%3A%2F%2Fwww.facebook.com%2FSentamusic", + "target": "TARGET_NEW_WINDOW", + "nofollow": true + } + }, + "icon": { + "thumbnails": [ + { + "url": "https://encrypted-tbn3.gstatic.com/favicon-tbn?q=tbn:ANd9GcTquUCsC-Ag5LbyHi7WuIThch_oejiziSxIHHSR9jJz63OVNHk3QKZKSSJnPhediuc0N3CPppuFMJD5PB4GbG5EBk5ttmA8SlLONEMMGAQ0Jbw0PUju" + } + ] + }, + "title": { "simpleText": "Facebook" } + }, + { + "navigationEndpoint": { + "clickTrackingParams": "CBAQ8DsiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://www.youtube.com/redirect?event=channel_banner&redir_token=QUFFLUhqa1BWUUFKRzkxYVFXOEF4U2dQU01pRWJJSEZ1UXxBQ3Jtc0tueTFmMlBhb3ltUENkRm9DVHVQSUxHVjIyU0Z3RDAxaUdtbDBDWlo5RXRWWlhNMlVjMnozZC1oMUxLaVdLajl6N0UzdnRKbWE5cEs5TGN6cnY0RkdxbV82Mzdzc1N2Tkg1bkJ0WFZkd3F4MWxObWwwOA&q=https%3A%2F%2Fwww.instagram.com%2Fsentamusic%2F%3Fhl%3Dde", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://www.youtube.com/redirect?event=channel_banner&redir_token=QUFFLUhqa1BWUUFKRzkxYVFXOEF4U2dQU01pRWJJSEZ1UXxBQ3Jtc0tueTFmMlBhb3ltUENkRm9DVHVQSUxHVjIyU0Z3RDAxaUdtbDBDWlo5RXRWWlhNMlVjMnozZC1oMUxLaVdLajl6N0UzdnRKbWE5cEs5TGN6cnY0RkdxbV82Mzdzc1N2Tkg1bkJ0WFZkd3F4MWxObWwwOA&q=https%3A%2F%2Fwww.instagram.com%2Fsentamusic%2F%3Fhl%3Dde", + "target": "TARGET_NEW_WINDOW", + "nofollow": true + } + }, + "icon": { + "thumbnails": [ + { + "url": "https://encrypted-tbn3.gstatic.com/favicon-tbn?q=tbn:ANd9GcRfYQ4UPLA7AtItHycwuYVII6FrTKnGAJQDzjpPy0P1oY2HKJF_cYMJ_wjxTX_6xAJW6b18QHN2JGUSyDUyOkwHbE_qkNpRbxdNTJteROXvtHE7UC8_mg" + } + ] + }, + "title": { "simpleText": "Instagram" } + }, + { + "navigationEndpoint": { + "clickTrackingParams": "CBAQ8DsiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://www.youtube.com/channel/UCVGvnqB-5znqPSbMGlhF4Pw?annotation_id=annotation_3399185387&feature=iv&src_vid=ZDhApx1CMxg&sub_confirmation=1", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://www.youtube.com/channel/UCVGvnqB-5znqPSbMGlhF4Pw?annotation_id=annotation_3399185387&feature=iv&src_vid=ZDhApx1CMxg&sub_confirmation=1", + "nofollow": true + } + }, + "icon": { + "thumbnails": [ + { + "url": "https://encrypted-tbn0.gstatic.com/favicon-tbn?q=tbn:ANd9GcTsP15JsvvI-ZaOcn6rlCDZIyVss3csR8unU59UQboMQkONHppt5SKejbLCk3_CBVuIch-uXwU0thuiYN6yx9xRhFKEhta16u9Ha6x0p6ROdTUVkgE" + } + ] + }, + "title": { "simpleText": "Jetzt kostenlos abonnieren" } + }, + { + "navigationEndpoint": { + "clickTrackingParams": "CBAQ8DsiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://www.youtube.com/redirect?event=channel_banner&redir_token=QUFFLUhqbWlnbmxpQ0MzQWp6d2FkVGk1Q1BXWnhMM1BMd3xBQ3Jtc0tuc1NoSk1ua0JhdVRYbDdLWFlfdWZXWWlsTGIwQ213Z2NRVVR3TVJjd1JqZjY2ZTJRdkRnLS1EYS1EQU5DaXNnTFpKeDFpYVBYN2hYU05UR1h4UkMxbzVkdVRxOWNfQk5MMGdUUmwxRFR5RWZ6eWVtVQ&q=https%3A%2F%2Fopen.spotify.com%2Fartist%2F7uVDfCKp96l3xCHFYf39vU%3Fsi%3D5UfehtFcSAOMGi8Q5VC0Zg", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "urlEndpoint": { + "url": "https://www.youtube.com/redirect?event=channel_banner&redir_token=QUFFLUhqbWlnbmxpQ0MzQWp6d2FkVGk1Q1BXWnhMM1BMd3xBQ3Jtc0tuc1NoSk1ua0JhdVRYbDdLWFlfdWZXWWlsTGIwQ213Z2NRVVR3TVJjd1JqZjY2ZTJRdkRnLS1EYS1EQU5DaXNnTFpKeDFpYVBYN2hYU05UR1h4UkMxbzVkdVRxOWNfQk5MMGdUUmwxRFR5RWZ6eWVtVQ&q=https%3A%2F%2Fopen.spotify.com%2Fartist%2F7uVDfCKp96l3xCHFYf39vU%3Fsi%3D5UfehtFcSAOMGi8Q5VC0Zg", + "target": "TARGET_NEW_WINDOW", + "nofollow": true + } + }, + "icon": { + "thumbnails": [ + { + "url": "https://encrypted-tbn2.gstatic.com/favicon-tbn?q=tbn:ANd9GcR4flN2eXBswnIifU_i9Zk-xDxmAqtvz77F8MXwImOLR5mEfCcnBbc5D969c7KIQZuf2o2JVC6ewXHVBiudB3wgoUQTJamnDPh6arWa8Kj_2-GcH8wG" + } + ] + }, + "title": { "simpleText": "Spotify" } + } + ] + } + }, + "subscribeButton": { + "buttonRenderer": { + "style": "STYLE_DESTRUCTIVE", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Abonnieren" }] }, + "navigationEndpoint": { + "clickTrackingParams": "CBEQ8FsiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { "webCommandMetadata": { "ignoreNavigation": true } }, + "modalEndpoint": { + "modal": { + "modalWithTitleAndButtonRenderer": { + "title": { "simpleText": "Möchtest du diesen Kanal abonnieren?" }, + "content": { + "simpleText": "Melde dich an, um diesen Kanal zu abonnieren." + }, + "button": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "simpleText": "Anmelden" }, + "navigationEndpoint": { + "clickTrackingParams": "CBIQ_YYEIhMIypWc9auA-gIVUI58Ch3o9gwXMglzdWJzY3JpYmU=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://accounts.google.com/ServiceLogin?service=youtube&uilel=3&passive=true&continue=https%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26app%3Ddesktop%26hl%3Dde%26next%3D%252Fchannel%252FUCVGvnqB-5znqPSbMGlhF4Pw%252Fvideos%26continue_action%3DQUFFLUhqa2E0LW9PNlQ3d2N3LUY1R2c2QzlXU3JXa0diUXxBQ3Jtc0trQ1lwdmd2eTJIT2tmU2dVazF4cTFxSDNFdDZGSm1ua0RUcnh5ZGM1d2FYS2Q2MDMya3R0U3RzVnJZTTY2MGpfbGVNU1dXTHVGRnA0SWRkTEtFbEZtdWhzVzNjUXlYUGdEelU3YnJlX1pObDN5RnZGTlAwOHZlZ2FqLVN2dHpablN1OFRNWUV6eUM3dnJKTlI1UnFPUkVPWFROR0VVZFRWV3FhM1MxQzN3OFRkUFlGQlQwSkxVZzZsLVBkZlNVZlNlZUhULWFUNkNaUWxBSXk2V21XaTZ2c1BJOWpR&hl=de&ec=66429", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { + "nextEndpoint": { + "clickTrackingParams": "CBIQ_YYEIhMIypWc9auA-gIVUI58Ch3o9gwX", + "commandMetadata": { + "webCommandMetadata": { + "url": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw/videos", + "webPageType": "WEB_PAGE_TYPE_CHANNEL", + "rootVe": 3611, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { + "browseId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "params": "EgZ2aWRlb3M%3D", + "canonicalBaseUrl": "/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + }, + "continueAction": "QUFFLUhqa2E0LW9PNlQ3d2N3LUY1R2c2QzlXU3JXa0diUXxBQ3Jtc0trQ1lwdmd2eTJIT2tmU2dVazF4cTFxSDNFdDZGSm1ua0RUcnh5ZGM1d2FYS2Q2MDMya3R0U3RzVnJZTTY2MGpfbGVNU1dXTHVGRnA0SWRkTEtFbEZtdWhzVzNjUXlYUGdEelU3YnJlX1pObDN5RnZGTlAwOHZlZ2FqLVN2dHpablN1OFRNWUV6eUM3dnJKTlI1UnFPUkVPWFROR0VVZFRWV3FhM1MxQzN3OFRkUFlGQlQwSkxVZzZsLVBkZlNVZlNlZUhULWFUNkNaUWxBSXk2V21XaTZ2c1BJOWpR", + "idamTag": "66429" + } + }, + "trackingParams": "CBIQ_YYEIhMIypWc9auA-gIVUI58Ch3o9gwX" + } + } + } + } + } + }, + "trackingParams": "CBEQ8FsiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + "visitTracking": { + "remarketingPing": "https://www.youtube.com/pagead/viewthroughconversion/962985656/?backend=innertube&cname=1&cver=2_20220902_01_00&data=backend%3Dinnertube%3Bcname%3D1%3Bcver%3D2_20220902_01_00%3Bptype%3Dcview%3Btype%3Dcview%3Butuid%3DVGvnqB-5znqPSbMGlhF4Pw&foc_id=VGvnqB-5znqPSbMGlhF4Pw&label=followon_cvisit&ptype=cview&utuid=VGvnqB-5znqPSbMGlhF4Pw" + }, + "subscriberCountText": { + "accessibility": { "accessibilityData": { "label": "33.700 Abonnenten" } }, + "simpleText": "33.700 Abonnenten" + }, + "tvBanner": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/aSaN3VHZDknidgCzNwgjb_Fp5THXk0Vsr5LCWAIeQdTdKAqWchSyI9FdODtIQ4vsBXtdHnxGCA=w320-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", + "width": 320, + "height": 180 + }, + { + "url": "https://yt3.ggpht.com/aSaN3VHZDknidgCzNwgjb_Fp5THXk0Vsr5LCWAIeQdTdKAqWchSyI9FdODtIQ4vsBXtdHnxGCA=w854-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", + "width": 854, + "height": 480 + }, + { + "url": "https://yt3.ggpht.com/aSaN3VHZDknidgCzNwgjb_Fp5THXk0Vsr5LCWAIeQdTdKAqWchSyI9FdODtIQ4vsBXtdHnxGCA=w1280-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", + "width": 1280, + "height": 720 + }, + { + "url": "https://yt3.ggpht.com/aSaN3VHZDknidgCzNwgjb_Fp5THXk0Vsr5LCWAIeQdTdKAqWchSyI9FdODtIQ4vsBXtdHnxGCA=w1920-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", + "width": 1920, + "height": 1080 + }, + { + "url": "https://yt3.ggpht.com/aSaN3VHZDknidgCzNwgjb_Fp5THXk0Vsr5LCWAIeQdTdKAqWchSyI9FdODtIQ4vsBXtdHnxGCA=w2120-fcrop64=1,00000000ffffffff-k-c0xffffffff-no-nd-rj", + "width": 2120, + "height": 1192 + } + ] + }, + "mobileBanner": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/aSaN3VHZDknidgCzNwgjb_Fp5THXk0Vsr5LCWAIeQdTdKAqWchSyI9FdODtIQ4vsBXtdHnxGCA=w320-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", + "width": 320, + "height": 88 + }, + { + "url": "https://yt3.ggpht.com/aSaN3VHZDknidgCzNwgjb_Fp5THXk0Vsr5LCWAIeQdTdKAqWchSyI9FdODtIQ4vsBXtdHnxGCA=w640-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", + "width": 640, + "height": 175 + }, + { + "url": "https://yt3.ggpht.com/aSaN3VHZDknidgCzNwgjb_Fp5THXk0Vsr5LCWAIeQdTdKAqWchSyI9FdODtIQ4vsBXtdHnxGCA=w960-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", + "width": 960, + "height": 263 + }, + { + "url": "https://yt3.ggpht.com/aSaN3VHZDknidgCzNwgjb_Fp5THXk0Vsr5LCWAIeQdTdKAqWchSyI9FdODtIQ4vsBXtdHnxGCA=w1280-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", + "width": 1280, + "height": 351 + }, + { + "url": "https://yt3.ggpht.com/aSaN3VHZDknidgCzNwgjb_Fp5THXk0Vsr5LCWAIeQdTdKAqWchSyI9FdODtIQ4vsBXtdHnxGCA=w1440-fcrop64=1,32b75a57cd48a5a8-k-c0xffffffff-no-nd-rj", + "width": 1440, + "height": 395 + } + ] + }, + "trackingParams": "CBAQ8DsiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + "metadata": { + "channelMetadataRenderer": { + "title": "Sentamusic", + "description": "Jetzt das neue Album \"Egal wie weit\" vorbestellen: https://energie.lnk.to/Senta_Egal_wie_weit_AlbumWe\n\nAlle Infos gibts auf meiner Website: https://sentamusic.de/\n\nSocial Media:\n➤ Instagram: https://www.instagram.com/sentamusic\n➤ Facebook: https://www.facebook.com/Sentamusic\n➤ TikTok: https://www.tiktok.com/@senta_official", + "rssUrl": "https://www.youtube.com/feeds/videos.xml?channel_id=UCVGvnqB-5znqPSbMGlhF4Pw", + "channelConversionUrl": "https://www.youtube.com/pagead/viewthroughconversion/962985656/?backend=innertube&cname=1&cver=2_20220902_01_00&data=backend%3Dinnertube%3Bcname%3D1%3Bcver%3D2_20220902_01_00%3Bptype%3Dcview%3Btype%3Dcview%3Butuid%3DVGvnqB-5znqPSbMGlhF4Pw&foc_id=VGvnqB-5znqPSbMGlhF4Pw&label=followon_cvisit&ptype=cview&utuid=VGvnqB-5znqPSbMGlhF4Pw", + "externalId": "UCVGvnqB-5znqPSbMGlhF4Pw", + "keywords": "senta oonagh music dance \"musik musik\" \"was immer es ist\" \"egal wie weit\" deutsch german \"music video\" popmusik \"deutsch pop\" pop Oonagh Senta \"Senta Music\" \"Senta was immer es ist\" pop \"senta pop\" \"senta new\" \"senta music\" \"music senta\" popmusik \"pop musik\" \"neues senta video\" \"senta video\" \"oonagh video\" \"vanessa mai\" sdp \"mike singer\" lotte \"vincent weiss\" \"yvonne catterfeld\" berge joris revolverheld \"sarah connor\" \"musik musik\"", + "ownerUrls": ["http://www.youtube.com/channel/UCVGvnqB-5znqPSbMGlhF4Pw"], + "avatar": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/kMEmMboMmlCJpIv5TkMfRe6CDGoNuDbsaR_dhwALRK25iwS0PxsWFC5eEgh-ff91aeYUqbgXcQ=s900-c-k-c0x00ffffff-no-rj", + "width": 900, + "height": 900 + } + ] + }, + "channelUrl": "https://www.youtube.com/channel/UCVGvnqB-5znqPSbMGlhF4Pw", + "isFamilySafe": true, + "facebookProfileId": "Sentamusic", + "availableCountryCodes": [ + "SR", + "TT", + "JE", + "SD", + "BQ", + "ET", + "GQ", + "SC", + "PR", + "VC", + "IO", + "BZ", + "MD", + "EE", + "SE", + "GS", + "HN", + "BR", + "BY", + "PA", + "TG", + "ME", + "CW", + "AX", + "ZM", + "ZA", + "UY", + "PE", + "GR", + "CG", + "TZ", + "GD", + "MS", + "MT", + "GT", + "DM", + "ES", + "KW", + "JP", + "RS", + "NR", + "AS", + "RU", + "KE", + "FJ", + "GH", + "BH", + "IL", + "IN", + "LB", + "FM", + "BG", + "WF", + "NI", + "VI", + "MX", + "BV", + "CF", + "AZ", + "HT", + "TO", + "RE", + "SK", + "CV", + "SO", + "MM", + "BA", + "MZ", + "SM", + "TR", + "MF", + "HU", + "US", + "QA", + "NP", + "GF", + "DO", + "MC", + "NF", + "WS", + "PH", + "VU", + "MN", + "CN", + "SH", + "SA", + "UA", + "MY", + "YT", + "AQ", + "TM", + "BS", + "GY", + "ML", + "DE", + "GW", + "LS", + "BB", + "TW", + "TF", + "BW", + "FO", + "ST", + "GG", + "AI", + "SY", + "BJ", + "AD", + "CC", + "LR", + "PS", + "LK", + "MO", + "SN", + "LU", + "PG", + "SV", + "BD", + "CA", + "GL", + "HK", + "TJ", + "CD", + "GU", + "BO", + "RW", + "SX", + "CK", + "KZ", + "NA", + "HR", + "TH", + "TC", + "MU", + "AT", + "PN", + "MR", + "LA", + "UZ", + "PY", + "VG", + "PL", + "DK", + "KR", + "BL", + "NO", + "BF", + "CR", + "MA", + "OM", + "TK", + "CY", + "IQ", + "TL", + "IE", + "UG", + "KG", + "MW", + "PK", + "SJ", + "UM", + "VN", + "LV", + "NG", + "NU", + "VA", + "GN", + "KY", + "AW", + "BI", + "MK", + "PW", + "PF", + "SZ", + "TV", + "EC", + "TD", + "LY", + "IT", + "BE", + "SS", + "VE", + "FR", + "ER", + "IS", + "MV", + "AO", + "ID", + "LT", + "YE", + "GE", + "KM", + "LI", + "MG", + "PM", + "FK", + "SB", + "AE", + "CI", + "NE", + "KN", + "CH", + "CO", + "MH", + "FI", + "BM", + "KH", + "GB", + "AF", + "BT", + "LC", + "NL", + "DZ", + "JO", + "AU", + "SL", + "SG", + "EG", + "TN", + "EH", + "KP", + "HM", + "ZW", + "AG", + "GI", + "GA", + "CX", + "SI", + "GM", + "AR", + "CM", + "GP", + "AL", + "CZ", + "IM", + "MP", + "PT", + "MQ", + "IR", + "CL", + "NZ", + "RO", + "BN", + "JM", + "KI", + "AM", + "CU", + "DJ", + "NC" + ], + "androidDeepLink": "android-app://com.google.android.youtube/http/www.youtube.com/channel/UCVGvnqB-5znqPSbMGlhF4Pw", + "androidAppindexingLink": "android-app://com.google.android.youtube/http/www.youtube.com/channel/UCVGvnqB-5znqPSbMGlhF4Pw", + "iosAppindexingLink": "ios-app://544007664/vnd.youtube/www.youtube.com/channel/UCVGvnqB-5znqPSbMGlhF4Pw", + "vanityChannelUrl": "http://www.youtube.com/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + }, + "trackingParams": "CAAQhGciEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "topbar": { + "desktopTopbarRenderer": { + "logo": { + "topbarLogoRenderer": { + "iconImage": { "iconType": "YOUTUBE_LOGO" }, + "tooltipText": { "runs": [{ "text": "YouTube-Startseite" }] }, + "endpoint": { + "clickTrackingParams": "CA8QsV4iEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/", + "webPageType": "WEB_PAGE_TYPE_BROWSE", + "rootVe": 3854, + "apiUrl": "/youtubei/v1/browse" + } + }, + "browseEndpoint": { "browseId": "FEwhat_to_watch" } + }, + "trackingParams": "CA8QsV4iEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "overrideEntityKey": "EgZ0b3BiYXIg9QEoAQ%3D%3D" + } + }, + "searchbox": { + "fusionSearchboxRenderer": { + "icon": { "iconType": "SEARCH" }, + "placeholderText": { "runs": [{ "text": "Suchen" }] }, + "config": { + "webSearchboxConfig": { + "requestLanguage": "de", + "requestDomain": "de", + "hasOnscreenKeyboard": false, + "focusSearchbox": true + } + }, + "trackingParams": "CA0Q7VAiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "searchEndpoint": { + "clickTrackingParams": "CA0Q7VAiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "/results?search_query=", + "webPageType": "WEB_PAGE_TYPE_SEARCH", + "rootVe": 4724 + } + }, + "searchEndpoint": { "query": "" } + }, + "clearButton": { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { "iconType": "CLOSE" }, + "trackingParams": "CA4Q8FsiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "accessibilityData": { + "accessibilityData": { "label": "Suchanfrage löschen" } + } + } + } + } + }, + "trackingParams": "CAEQq6wBIhMIypWc9auA-gIVUI58Ch3o9gwX", + "countryCode": "DE", + "topbarButtons": [ + { + "topbarMenuButtonRenderer": { + "icon": { "iconType": "MORE_VERT" }, + "menuRequest": { + "clickTrackingParams": "CAsQ_qsBGAAiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "sendPost": true, + "apiUrl": "/youtubei/v1/account/account_menu" + } + }, + "signalServiceEndpoint": { + "signal": "GET_ACCOUNT_MENU", + "actions": [ + { + "clickTrackingParams": "CAsQ_qsBGAAiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "openPopupAction": { + "popup": { + "multiPageMenuRenderer": { + "trackingParams": "CAwQ_6sBIhMIypWc9auA-gIVUI58Ch3o9gwX", + "style": "MULTI_PAGE_MENU_STYLE_TYPE_SYSTEM", + "showLoadingSpinner": true + } + }, + "popupType": "DROPDOWN", + "beReused": true + } + } + ] + } + }, + "trackingParams": "CAsQ_qsBGAAiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "accessibility": { "accessibilityData": { "label": "Einstellungen" } }, + "tooltip": "Einstellungen", + "style": "STYLE_DEFAULT" + } + }, + { + "buttonRenderer": { + "style": "STYLE_SUGGESTIVE", + "size": "SIZE_SMALL", + "text": { "runs": [{ "text": "Anmelden" }] }, + "icon": { "iconType": "AVATAR_LOGGED_OUT" }, + "navigationEndpoint": { + "clickTrackingParams": "CAoQ1IAEGAEiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { + "webCommandMetadata": { + "url": "https://accounts.google.com/ServiceLogin?service=youtube&uilel=3&passive=true&continue=https%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26app%3Ddesktop%26hl%3Dde%26next%3D%252Fchannel%252FUCVGvnqB-5znqPSbMGlhF4Pw%252Fvideos&hl=de&ec=65620", + "webPageType": "WEB_PAGE_TYPE_UNKNOWN", + "rootVe": 83769 + } + }, + "signInEndpoint": { "idamTag": "65620" } + }, + "trackingParams": "CAoQ1IAEGAEiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "targetId": "topbar-signin" + } + } + ], + "hotkeyDialog": { + "hotkeyDialogRenderer": { + "title": { "runs": [{ "text": "Tastenkombinationen" }] }, + "sections": [ + { + "hotkeyDialogSectionRenderer": { + "title": { "runs": [{ "text": "Wiedergabe" }] }, + "options": [ + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [{ "text": "Zwischen Wiedergabe und Pause wechseln" }] + }, + "hotkey": "k" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { "runs": [{ "text": "Zehn Sekunden zurückspulen" }] }, + "hotkey": "j" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { "runs": [{ "text": "Zehn Sekunden vorspulen" }] }, + "hotkey": "l" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { "runs": [{ "text": "Vorheriges Video" }] }, + "hotkey": "P (UMSCHALTTASTE+p)" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { "runs": [{ "text": "Nächstes Video" }] }, + "hotkey": "N (UMSCHALTTASTE+n)" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { "text": "Vorheriger Frame (bei pausierter Wiedergabe)" } + ] + }, + "hotkey": ",", + "hotkeyAccessibilityLabel": { + "accessibilityData": { "label": "Komma" } + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { "text": "Nächster Frame (bei pausierter Wiedergabe)" } + ] + }, + "hotkey": ".", + "hotkeyAccessibilityLabel": { + "accessibilityData": { "label": "Punkt" } + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [{ "text": "Wiedergabegeschwindigkeit verringern" }] + }, + "hotkey": "\u003c (SHIFT+,)", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "\"Kleiner als\"-Zeichen oder UMSCHALTTASTE + Komma" + } + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [{ "text": "Wiedergabegeschwindigkeit erhöhen" }] + }, + "hotkey": "\u003e (SHIFT+.)", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "\"Größer als\"-Zeichen oder UMSCHALTTASTE + Punkt" + } + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Zu einer bestimmten Stelle im Video springen (sieben Sprünge bis zu 70 % der Gesamtdauer)" + } + ] + }, + "hotkey": "0..9" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { "runs": [{ "text": "Zum vorherigen Kapitel" }] }, + "hotkey": "STEUERUNG + ←" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { "runs": [{ "text": "Zum nächsten Kapitel" }] }, + "hotkey": "STEUERUNG + →" + } + } + ] + } + }, + { + "hotkeyDialogSectionRenderer": { + "title": { "runs": [{ "text": "Allgemein" }] }, + "options": [ + { + "hotkeyDialogSectionOptionRenderer": { + "label": { "runs": [{ "text": "Vollbildmodus ein/aus" }] }, + "hotkey": "f" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { "runs": [{ "text": "Wechsel zum Kinomodus" }] }, + "hotkey": "t" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [{ "text": "Miniplayer aktivieren/deaktivieren" }] + }, + "hotkey": "i" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { "text": "Miniplayer oder aktuelles Dialogfeld schließen" } + ] + }, + "hotkey": "ESC" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { "runs": [{ "text": "Stummschaltung ein/aus" }] }, + "hotkey": "m" + } + } + ] + } + }, + { + "hotkeyDialogSectionRenderer": { + "title": { "runs": [{ "text": "Untertitel" }] }, + "options": [ + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Untertitel ein-/ausschalten, wenn das Video Untertitel unterstützt" + } + ] + }, + "hotkey": "c" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { "text": "Verschiedene Text-Transparenzstufen durchgehen" } + ] + }, + "hotkey": "o" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [ + { + "text": "Verschiedene Fenster-Transparenzstufen durchgehen" + } + ] + }, + "hotkey": "w" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [{ "text": "Schriftgrößen durchgehen (zunehmend)" }] + }, + "hotkey": "+" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { + "runs": [{ "text": "Schriftgrößen durchgehen (abnehmend)" }] + }, + "hotkey": "-", + "hotkeyAccessibilityLabel": { + "accessibilityData": { "label": "Minuszeichen" } + } + } + } + ] + } + }, + { + "hotkeyDialogSectionRenderer": { + "title": { "runs": [{ "text": "Sphärische Videos" }] }, + "options": [ + { + "hotkeyDialogSectionOptionRenderer": { + "label": { "runs": [{ "text": "Nach oben schwenken" }] }, + "hotkey": "w" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { "runs": [{ "text": "Nach links schwenken" }] }, + "hotkey": "a" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { "runs": [{ "text": "Nach unten schwenken" }] }, + "hotkey": "s" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { "runs": [{ "text": "Nach rechts schwenken" }] }, + "hotkey": "d" + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { "runs": [{ "text": "Heranzoomen" }] }, + "hotkey": "+ auf Ziffernblock oder ]", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Pluszeichen auf dem Ziffernblock oder rechte eckige Klammer" + } + } + } + }, + { + "hotkeyDialogSectionOptionRenderer": { + "label": { "runs": [{ "text": "Herauszoomen" }] }, + "hotkey": "- auf Ziffernblock oder [", + "hotkeyAccessibilityLabel": { + "accessibilityData": { + "label": "Minuszeichen auf dem Ziffernblock oder linke eckige Klammer" + } + } + } + } + ] + } + } + ], + "dismissButton": { + "buttonRenderer": { + "style": "STYLE_BLUE_TEXT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Schließen" }] }, + "trackingParams": "CAkQ8FsiEwjKlZz1q4D6AhVQjnwKHej2DBc=" + } + }, + "trackingParams": "CAgQteYDIhMIypWc9auA-gIVUI58Ch3o9gwX" + } + }, + "backButton": { + "buttonRenderer": { + "trackingParams": "CAcQvIYDIhMIypWc9auA-gIVUI58Ch3o9gwX", + "command": { + "clickTrackingParams": "CAcQvIYDIhMIypWc9auA-gIVUI58Ch3o9gwX", + "commandMetadata": { "webCommandMetadata": { "sendPost": true } }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CAcQvIYDIhMIypWc9auA-gIVUI58Ch3o9gwX", + "signalAction": { "signal": "HISTORY_BACK" } + } + ] + } + } + } + }, + "forwardButton": { + "buttonRenderer": { + "trackingParams": "CAYQvYYDIhMIypWc9auA-gIVUI58Ch3o9gwX", + "command": { + "clickTrackingParams": "CAYQvYYDIhMIypWc9auA-gIVUI58Ch3o9gwX", + "commandMetadata": { "webCommandMetadata": { "sendPost": true } }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CAYQvYYDIhMIypWc9auA-gIVUI58Ch3o9gwX", + "signalAction": { "signal": "HISTORY_FORWARD" } + } + ] + } + } + } + }, + "a11ySkipNavigationButton": { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "text": { "runs": [{ "text": "Navigation überspringen" }] }, + "trackingParams": "CAUQ8FsiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "command": { + "clickTrackingParams": "CAUQ8FsiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { "webCommandMetadata": { "sendPost": true } }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CAUQ8FsiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "signalAction": { "signal": "SKIP_NAVIGATION" } + } + ] + } + } + } + }, + "voiceSearchButton": { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "serviceEndpoint": { + "clickTrackingParams": "CAIQ8FsiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "commandMetadata": { "webCommandMetadata": { "sendPost": true } }, + "signalServiceEndpoint": { + "signal": "CLIENT_SIGNAL", + "actions": [ + { + "clickTrackingParams": "CAIQ8FsiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "openPopupAction": { + "popup": { + "voiceSearchDialogRenderer": { + "placeholderHeader": { + "runs": [{ "text": "Jetzt sprechen…" }] + }, + "promptHeader": { + "runs": [ + { + "text": "Sprachbefehl nicht verstanden. Versuche es noch einmal." + } + ] + }, + "exampleQuery1": { + "runs": [{ "text": "\"Dua Lipa abspielen\"" }] + }, + "exampleQuery2": { + "runs": [{ "text": "\"Zeig mir meine Abos\"" }] + }, + "promptMicrophoneLabel": { + "runs": [ + { + "text": "Auf Mikrofon tippen, um Spracheingabe zu wiederholen" + } + ] + }, + "loadingHeader": { + "runs": [{ "text": "Wird verarbeitet..." }] + }, + "connectionErrorHeader": { + "runs": [{ "text": "Keine Verbindung" }] + }, + "connectionErrorMicrophoneLabel": { + "runs": [ + { + "text": "Prüfe deine Verbindung und versuch es noch einmal" + } + ] + }, + "permissionsHeader": { + "runs": [{ "text": "Berechtigung steht aus" }] + }, + "permissionsSubtext": { + "runs": [ + { + "text": "Zugriff auf Mikrofon zulassen, um die Sprachsuche zu aktivieren" + } + ] + }, + "disabledHeader": { + "runs": [{ "text": "Sprachsuche verwenden" }] + }, + "disabledSubtext": { + "runs": [ + { + "text": "Rufe die Browsereinstellungen auf und erlaube den Zugriff auf das Mikrofon, um die Sprachsuche nutzen zu können" + } + ] + }, + "microphoneButtonAriaLabel": { + "runs": [{ "text": "Abbrechen" }] + }, + "exitButton": { + "buttonRenderer": { + "style": "STYLE_DEFAULT", + "size": "SIZE_DEFAULT", + "isDisabled": false, + "icon": { "iconType": "CLOSE" }, + "trackingParams": "CAQQ8FsiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "accessibilityData": { + "accessibilityData": { "label": "Abbrechen" } + } + } + }, + "trackingParams": "CAMQ7q8FIhMIypWc9auA-gIVUI58Ch3o9gwX", + "microphoneOffPromptHeader": { + "runs": [ + { "text": "Mikrofon deaktiviert. Versuche es noch einmal." } + ] + } + } + }, + "popupType": "TOP_ALIGNED_DIALOG" + } + } + ] + } + }, + "icon": { "iconType": "MICROPHONE_ON" }, + "tooltip": "Sprachsuche verwenden", + "trackingParams": "CAIQ8FsiEwjKlZz1q4D6AhVQjnwKHej2DBc=", + "accessibilityData": { + "accessibilityData": { "label": "Sprachsuche verwenden" } + } + } + } + } + }, + "microformat": { + "microformatDataRenderer": { + "urlCanonical": "https://www.youtube.com/channel/UCVGvnqB-5znqPSbMGlhF4Pw", + "title": "Sentamusic", + "description": "Jetzt das neue Album \"Egal wie weit\" vorbestellen: https://energie.lnk.to/Senta_Egal_wie_weit_AlbumWe Alle Infos gibts auf meiner Website: https://sentamusic...", + "thumbnail": { + "thumbnails": [ + { + "url": "https://yt3.ggpht.com/kMEmMboMmlCJpIv5TkMfRe6CDGoNuDbsaR_dhwALRK25iwS0PxsWFC5eEgh-ff91aeYUqbgXcQ=s200-c-k-c0x00ffffff-no-rj?days_since_epoch=19241", + "width": 200, + "height": 200 + } + ] + }, + "siteName": "YouTube", + "appName": "YouTube", + "androidPackage": "com.google.android.youtube", + "iosAppStoreId": "544007664", + "iosAppArguments": "https://www.youtube.com/channel/UCVGvnqB-5znqPSbMGlhF4Pw", + "ogType": "yt-fb-app:channel", + "urlApplinksWeb": "https://www.youtube.com/channel/UCVGvnqB-5znqPSbMGlhF4Pw?feature=applinks", + "urlApplinksIos": "vnd.youtube://www.youtube.com/channel/UCVGvnqB-5znqPSbMGlhF4Pw?feature=applinks", + "urlApplinksAndroid": "vnd.youtube://www.youtube.com/channel/UCVGvnqB-5znqPSbMGlhF4Pw?feature=applinks", + "urlTwitterIos": "vnd.youtube://www.youtube.com/channel/UCVGvnqB-5znqPSbMGlhF4Pw?feature=twitter-deep-link", + "urlTwitterAndroid": "vnd.youtube://www.youtube.com/channel/UCVGvnqB-5znqPSbMGlhF4Pw?feature=twitter-deep-link", + "twitterCardType": "summary", + "twitterSiteHandle": "@YouTube", + "schemaDotOrgType": "http://schema.org/http://schema.org/YoutubeChannelV2", + "noindex": false, + "unlisted": false, + "familySafe": true, + "tags": [ + "senta", + "oonagh", + "music", + "dance", + "musik musik", + "was immer es ist", + "egal wie weit", + "deutsch", + "german", + "music video", + "popmusik", + "deutsch pop", + "pop", + "Oonagh", + "Senta", + "Senta Music", + "Senta was immer es ist", + "pop", + "senta pop", + "senta new", + "senta music", + "music senta", + "popmusik", + "pop musik", + "neues senta video", + "senta video", + "oonagh video", + "vanessa mai", + "sdp", + "mike singer", + "lotte", + "vincent weiss", + "yvonne catterfeld", + "berge", + "joris", + "revolverheld", + "sarah connor", + "musik musik" + ], + "availableCountries": [ + "SR", + "TT", + "JE", + "SD", + "BQ", + "ET", + "GQ", + "SC", + "PR", + "VC", + "IO", + "BZ", + "MD", + "EE", + "SE", + "GS", + "HN", + "BR", + "BY", + "PA", + "TG", + "ME", + "CW", + "AX", + "ZM", + "ZA", + "UY", + "PE", + "GR", + "CG", + "TZ", + "GD", + "MS", + "MT", + "GT", + "DM", + "ES", + "KW", + "JP", + "RS", + "NR", + "AS", + "RU", + "KE", + "FJ", + "GH", + "BH", + "IL", + "IN", + "LB", + "FM", + "BG", + "WF", + "NI", + "VI", + "MX", + "BV", + "CF", + "AZ", + "HT", + "TO", + "RE", + "SK", + "CV", + "SO", + "MM", + "BA", + "MZ", + "SM", + "TR", + "MF", + "HU", + "US", + "QA", + "NP", + "GF", + "DO", + "MC", + "NF", + "WS", + "PH", + "VU", + "MN", + "CN", + "SH", + "SA", + "UA", + "MY", + "YT", + "AQ", + "TM", + "BS", + "GY", + "ML", + "DE", + "GW", + "LS", + "BB", + "TW", + "TF", + "BW", + "FO", + "ST", + "GG", + "AI", + "SY", + "BJ", + "AD", + "CC", + "LR", + "PS", + "LK", + "MO", + "SN", + "LU", + "PG", + "SV", + "BD", + "CA", + "GL", + "HK", + "TJ", + "CD", + "GU", + "BO", + "RW", + "SX", + "CK", + "KZ", + "NA", + "HR", + "TH", + "TC", + "MU", + "AT", + "PN", + "MR", + "LA", + "UZ", + "PY", + "VG", + "PL", + "DK", + "KR", + "BL", + "NO", + "BF", + "CR", + "MA", + "OM", + "TK", + "CY", + "IQ", + "TL", + "IE", + "UG", + "KG", + "MW", + "PK", + "SJ", + "UM", + "VN", + "LV", + "NG", + "NU", + "VA", + "GN", + "KY", + "AW", + "BI", + "MK", + "PW", + "PF", + "SZ", + "TV", + "EC", + "TD", + "LY", + "IT", + "BE", + "SS", + "VE", + "FR", + "ER", + "IS", + "MV", + "AO", + "ID", + "LT", + "YE", + "GE", + "KM", + "LI", + "MG", + "PM", + "FK", + "SB", + "AE", + "CI", + "NE", + "KN", + "CH", + "CO", + "MH", + "FI", + "BM", + "KH", + "GB", + "AF", + "BT", + "LC", + "NL", + "DZ", + "JO", + "AU", + "SL", + "SG", + "EG", + "TN", + "EH", + "KP", + "HM", + "ZW", + "AG", + "GI", + "GA", + "CX", + "SI", + "GM", + "AR", + "CM", + "GP", + "AL", + "CZ", + "IM", + "MP", + "PT", + "MQ", + "IR", + "CL", + "NZ", + "RO", + "BN", + "JM", + "KI", + "AM", + "CU", + "DJ", + "NC" + ], + "linkAlternates": [ + { "hrefUrl": "https://m.youtube.com/channel/UCVGvnqB-5znqPSbMGlhF4Pw" }, + { + "hrefUrl": "android-app://com.google.android.youtube/http/youtube.com/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + }, + { + "hrefUrl": "ios-app://544007664/http/youtube.com/channel/UCVGvnqB-5znqPSbMGlhF4Pw" + } + ] + } + } +} diff --git a/notes/video_ids.txt b/notes/video_ids.txt index 98ad51d..36bd655 100644 --- a/notes/video_ids.txt +++ b/notes/video_ids.txt @@ -37,7 +37,7 @@ yesterday: PLmB6td997u3kUOrfFwkULZ910ho44oQSy 5 days ago: PL3-sRm8xAzY9sDilvaWjCwCI0TkUzYdOG 7 days ago: PLHr0jWPfopte182N54r1ra7tkRJC1fmPu -Jan PL1J-6JOckZtHxTA3hN5SK7gBQaFfKzeXr 01.01.2016 +Jan PL1J-6JOckZtFjcni6Xj1pLYglJp6JCpKD 03.01.2020 Feb PL1J-6JOckZtETrbzwZE7mRIIK6BzWNLAs 07.02.2016 Mar PL1J-6JOckZtG3AVdvBXhMO64mB2k3BtKi 09.03.2015 Apr PL1J-6JOckZtE_rUpK24S6X5hOE4eQoprN 02.04.2017 diff --git a/src/codegen/collect_playlist_dates.rs b/src/codegen/collect_playlist_dates.rs index 2c63e8d..a2bd47b 100644 --- a/src/codegen/collect_playlist_dates.rs +++ b/src/codegen/collect_playlist_dates.rs @@ -1,12 +1,19 @@ #![cfg(test)] -use std::{collections::BTreeMap, fs::File, path::Path}; +use std::{ + collections::{BTreeMap, HashMap}, + fs::File, + hash::Hash, + io::BufReader, + path::Path, +}; use serde::{Deserialize, Serialize}; use crate::{ client::RustyTube, model::{locale::LANGUAGES, Country, Language}, + util, }; type CollectedDates = BTreeMap>; @@ -30,7 +37,7 @@ enum DateCase { Dec, } -#[test_log::test(tokio::test)] +// #[test_log::test(tokio::test)] async fn collect_dates() { let json_path = Path::new("testfiles/date/playlist_samples.json").to_path_buf(); if json_path.exists() { @@ -44,7 +51,7 @@ async fn collect_dates() { ), (DateCase::Yesterday, "PLmB6td997u3kUOrfFwkULZ910ho44oQSy"), (DateCase::Ago, "PL7zsB-C3aNu2yRY2869T0zj1FhtRIu5am"), - (DateCase::Jan, "PL1J-6JOckZtHxTA3hN5SK7gBQaFfKzeXr"), + (DateCase::Jan, "PL1J-6JOckZtFjcni6Xj1pLYglJp6JCpKD"), (DateCase::Feb, "PL1J-6JOckZtETrbzwZE7mRIIK6BzWNLAs"), (DateCase::Mar, "PL1J-6JOckZtG3AVdvBXhMO64mB2k3BtKi"), (DateCase::Apr, "PL1J-6JOckZtE_rUpK24S6X5hOE4eQoprN"), @@ -75,3 +82,102 @@ async fn collect_dates() { let file = File::create(json_path).unwrap(); serde_json::to_writer_pretty(file, &collected_dates).unwrap(); } + +// #[test] +fn parse_months() { + let json_path = Path::new("testfiles/date/playlist_samples.json").to_path_buf(); + let json_file = File::open(json_path).unwrap(); + let collected_dates: CollectedDates = + serde_json::from_reader(BufReader::new(json_file)).unwrap(); + let mut dict = super::read_dict(); + let langs = dict.keys().map(|k| k.to_owned()).collect::>(); + + let months = [ + DateCase::Jan, + DateCase::Feb, + DateCase::Mar, + DateCase::Apr, + DateCase::May, + DateCase::Jun, + DateCase::Jul, + DateCase::Aug, + DateCase::Sep, + DateCase::Oct, + DateCase::Nov, + DateCase::Dec, + ]; + + let dates: [(u32, u32, u32); 12] = [ + (2020, 1, 3), + (2016, 2, 7), + (2015, 3, 9), + (2017, 4, 2), + (2014, 5, 22), + (2014, 6, 28), + (2014, 7, 2), + (2015, 8, 23), + (2018, 9, 16), + (2014, 10, 31), + (2016, 11, 3), + (2021, 12, 24), + ]; + + for lang in langs { + let mut month_words: HashMap = HashMap::new(); + let mut num_order = "".to_owned(); + + months.iter().enumerate().for_each(|(n, m)| { + let datestr = collected_dates.get(&lang).unwrap().get(m).unwrap(); + + // Get order of numbers + let nums = util::parse_numeric_vec::(&datestr); + let date = dates[n]; + + let this_num_order = nums + .iter() + .map(|n| { + if n == &date.0 { + "Y" + } else if n == &date.1 { + "M" + } else if n == &date.2 { + "D" + } else { + panic!("invalid number {} in {}", n, datestr); + } + }) + .collect::(); + + if num_order == "" { + num_order = this_num_order; + } else { + assert_eq!(this_num_order, num_order); + } + + // Insert words into the map + let filtered_str = datestr + .chars() + .filter(|c| !c.is_ascii_digit()) + .collect::(); + + filtered_str.split_whitespace().for_each(|word| { + month_words + .entry(word.to_owned()) + .and_modify(|e| *e = 0) + .or_insert(n + 1); + }); + }); + + let dict_entry = dict.entry(lang).or_default(); + dict_entry.date_order = num_order; + dict_entry.months = month_words.iter().filter_map(|(word, m)| { + if *m == 0 { + None + } else { + Some((word.to_owned(), *m as u8)) + } + }).collect(); + } + + super::write_dict(&dict); +} diff --git a/src/codegen/gen_dictionary.rs b/src/codegen/gen_dictionary.rs index 5a0154d..35fa12a 100644 --- a/src/codegen/gen_dictionary.rs +++ b/src/codegen/gen_dictionary.rs @@ -1,31 +1,11 @@ #![cfg(test)] -use std::{ - collections::BTreeMap, - fmt::Debug, - fs::File, - io::{BufReader}, -}; - -use crate::{model::Language, timeago::TimeUnit}; +use crate::{timeago::TimeUnit}; use fancy_regex::Regex; use once_cell::sync::Lazy; -use serde::Deserialize; -const DICT_PATH: &str = "testfiles/date/dictionary.json"; const TARGET_FILE: &str = "src/dictionary.rs"; -type Dictionary = BTreeMap; - -#[derive(Debug, Deserialize)] -struct DictEntry { - #[serde(default)] - equivalent: Vec, - #[serde(default)] - by_char: bool, - timeago_tokens: BTreeMap, -} - fn parse_tu(tu: &str) -> (u8, Option) { static TU_PATTERN: Lazy = Lazy::new(|| Regex::new(r"^(\d*)(\w?)$").unwrap()); match TU_PATTERN.captures(tu).unwrap() { @@ -47,51 +27,62 @@ fn parse_tu(tu: &str) -> (u8, Option) { } } -fn read_dict() -> Dictionary { - let json_file = File::open(DICT_PATH).unwrap(); - serde_json::from_reader(BufReader::new(json_file)).unwrap() -} - // #[test] fn generate_dictionary() { - let dict = read_dict(); + let dict = super::read_dict(); let code_head = r#"// This file is automatically generated. DO NOT EDIT. use crate::{ model::Language, timeago::{TaToken, TimeUnit}, }; + +pub struct Entry { + pub timeago_tokens: phf::Map<&'static str, TaToken>, + pub date_order: &'static str, + pub months: phf::Map<&'static str, u8>, +} "#; let mut code_timeago_tokens = r#"#[rustfmt::skip] -pub(crate) fn get_timeago_tokens(lang: Language) -> phf::Map<&'static str, TaToken> { +pub fn entry(lang: Language) -> Entry { match lang { "# .to_owned(); dict.iter().for_each(|(lang, entry)| { - // Create a map for the language - let mut map = phf_codegen::Map::<&str>::new(); - - entry.timeago_tokens.iter().for_each(|(txt, tu_str)| { - let (n, unit) = parse_tu(&tu_str); - match unit { - Some(unit) => map.entry( - &txt, - &format!("TaToken {{ n: {}, unit: Some(TimeUnit::{:?}) }}", n, unit), - ), - None => map.entry(&txt, &format!("TaToken {{ n: {}, unit: None }}", n)), - }; - }); - + // Match selector let mut selector = format!("Language::{:?}", lang); entry.equivalent.iter().for_each(|eq| { selector += &format!(" | Language::{:?}", eq); }); - let code_map = &map.build().to_string().replace('\n', "\n "); + // Timeago tokens + let mut ta_tokens = phf_codegen::Map::<&str>::new(); + entry.timeago_tokens.iter().for_each(|(txt, tu_str)| { + let (n, unit) = parse_tu(&tu_str); + match unit { + Some(unit) => ta_tokens.entry( + &txt, + &format!("TaToken {{ n: {}, unit: Some(TimeUnit::{:?}) }}", n, unit), + ), + None => ta_tokens.entry(&txt, &format!("TaToken {{ n: {}, unit: None }}", n)), + }; + }); - code_timeago_tokens += &format!("{} => {},\n ", selector, code_map); + // Months + let mut months = phf_codegen::Map::<&str>::new(); + entry.months.iter().for_each(|(txt, n_mon)| { + months.entry(&txt, &n_mon.to_string()); + }); + + let code_ta_tokens = &ta_tokens.build().to_string().replace('\n', "\n "); + let code_months = &months.build().to_string().replace('\n', "\n "); + + code_timeago_tokens += &format!( + "{} => Entry {{\n timeago_tokens: {},\n date_order: \"{}\",\n months: {},\n }},\n ", + selector, code_ta_tokens, entry.date_order, code_months + ); }); code_timeago_tokens = code_timeago_tokens.trim_end().to_owned() + "\n }\n}\n"; diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs index d9d7ff7..4bbd694 100644 --- a/src/codegen/mod.rs +++ b/src/codegen/mod.rs @@ -1,4 +1,34 @@ #![cfg(test)] + +use std::{collections::BTreeMap, fs::File, io::BufReader}; + +use serde::{Serialize, Deserialize}; + +use crate::model::Language; mod collect_playlist_dates; mod gen_dictionary; mod gen_locales; + +const DICT_PATH: &str = "testfiles/date/dictionary.json"; + +type Dictionary = BTreeMap; + +#[derive(Debug, Default, Serialize, Deserialize)] +#[serde(default)] +struct DictEntry { + equivalent: Vec, + by_char: bool, + timeago_tokens: BTreeMap, + date_order: String, + months: BTreeMap, +} + +fn read_dict() -> Dictionary { + let json_file = File::open(DICT_PATH).unwrap(); + serde_json::from_reader(BufReader::new(json_file)).unwrap() +} + +fn write_dict(dict: &Dictionary) { + let json_file = File::create(DICT_PATH).unwrap(); + serde_json::to_writer_pretty(json_file, dict).unwrap(); +} diff --git a/src/dictionary.rs b/src/dictionary.rs index 4b4b231..3950782 100644 --- a/src/dictionary.rs +++ b/src/dictionary.rs @@ -4,1679 +4,3340 @@ use crate::{ timeago::{TaToken, TimeUnit}, }; +pub struct Entry { + pub timeago_tokens: phf::Map<&'static str, TaToken>, + pub date_order: &'static str, + pub months: phf::Map<&'static str, u8>, +} + #[rustfmt::skip] -pub(crate) fn get_timeago_tokens(lang: Language) -> phf::Map<&'static str, TaToken> { +pub fn entry(lang: Language) -> Entry { match lang { - Language::Af => ::phf::Map { - key: 12913932095322966823, - disps: &[ - (4, 0), - (6, 5), - (7, 2), - ], - entries: &[ - ("maande", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("uur", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("dag", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("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) }), - ], - }, - Language::Am => ::phf::Map { - key: 15467950696543387533, - disps: &[ - (0, 9), - (7, 0), - (5, 3), - ], - entries: &[ - ("ደቂቃ", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("ሳምንታት", 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::Month) }), - ("ሰዓቶች", 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::Second) }), - ("ቀናት", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("ደቂቃዎች", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("ዓመታት", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("ሳምንት", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ], - }, - Language::Ar => ::phf::Map { - key: 15467950696543387533, - disps: &[ - (1, 9), - (5, 0), - (10, 4), - (0, 1), - (7, 19), - ], - entries: &[ - ("سنتين", TaToken { n: 2, unit: Some(TimeUnit::Year) }), - ("سنة", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("دقائق", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("ساعة", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("ثوان\u{64d}", 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::Week) }), - ("يومين", TaToken { n: 2, unit: Some(TimeUnit::Day) }), - ("شهر\u{64b}ا", 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::Day) }), - ("سنوات", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("يوم\u{64b}ا", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("شهرين", TaToken { n: 2, unit: Some(TimeUnit::Month) }), - ("دقيقة", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("ثوان\u{650}", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("دقيقتين", TaToken { n: 2, unit: Some(TimeUnit::Minute) }), - ("أسابيع", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("ساعات", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("أشهر", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("ساعتين", TaToken { n: 2, unit: Some(TimeUnit::Hour) }), - ], - }, - Language::As => ::phf::Map { - key: 12913932095322966823, - disps: &[ - (5, 5), - (3, 0), - ], - entries: &[ - ("দিন", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("ছেকেণ\u{9cd}ড", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("বছৰৰ", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("ঘণ\u{9cd}ট\u{9be}", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("সপ\u{9cd}ত\u{9be}হ", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("ম\u{9be}হ", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("মিনিট", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ], - }, - Language::Az => ::phf::Map { - key: 10121458955350035957, - disps: &[ - (5, 0), - (1, 0), - ], - entries: &[ - ("dəqiqə", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("saniyə", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("il", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("həftə", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("ay", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("gün", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("saat", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ], - }, - Language::Be => ::phf::Map { - key: 10121458955350035957, - disps: &[ - (2, 0), - (3, 15), - (9, 23), - (1, 18), - (1, 7), - ], - entries: &[ - ("месяца", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("хвіліну", 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::Year) }), - ("секунд", 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::Hour) }), - ("год", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("гады", 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::Day) }), - ("хвілін", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("дзень", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("хвіліны", 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::Hour) }), - ("месяцаў", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("месяц", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("тыдзень", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("дзён", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ], - }, - Language::Bg => ::phf::Map { - key: 7485420634051515786, - disps: &[ - (2, 0), - (7, 12), - (5, 10), - ], - 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::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::Year) }), - ("секунди", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ], - }, - Language::Bn => ::phf::Map { - key: 12913932095322966823, - disps: &[ - (0, 1), - (2, 0), - ], - entries: &[ - ("মিনিট", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("সপ\u{9cd}ত\u{9be}হ", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("দিন", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("ঘন\u{9cd}ট\u{9be}", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("ম\u{9be}স", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("বছর", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("সেকেন\u{9cd}ড", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ], - }, - Language::Bs => ::phf::Map { - key: 12913932095322966823, - disps: &[ - (5, 0), - (3, 12), - (8, 3), - (1, 7), - ], - entries: &[ - ("sedmice", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("dan", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("sekunde", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("minute", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("mjeseca", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("godinu", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("mjesec", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("dana", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("minuta", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("godina", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("minutu", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("sati", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("godine", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("sekundu", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("sekundi", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("sedmicu", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("sata", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("sat", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("mjeseci", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ], - }, - Language::Ca => ::phf::Map { - key: 10121458955350035957, - disps: &[ - (6, 7), - (2, 9), - (0, 0), - ], - 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) }), - ("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) }), - ("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) }), - ("dia", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ], - }, - Language::Cs => ::phf::Map { - key: 8694567506910003252, - disps: &[ - (2, 10), - (5, 0), - (8, 0), - ], - entries: &[ - ("rokem", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("hodinami", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("dnem", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("minutami", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("dny", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("lety", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("týdny", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("týdnem", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("sekundou", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("hodinou", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("měsícem", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("sekundami", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("roky", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("minutou", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("měsíci", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ], - }, - Language::Da => ::phf::Map { - key: 12913932095322966823, - disps: &[ - (6, 0), - (0, 7), - (12, 11), - ], - 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) }), - ("år", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("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) }), - ], - }, - Language::De => ::phf::Map { - key: 345707026197253659, - disps: &[ - (9, 13), - (3, 0), - (3, 6), - ], - 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) }), - ("tagen", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ], - }, - Language::El => ::phf::Map { - key: 12213676231523076107, - disps: &[ - (0, 0), - (7, 11), - (2, 7), - ], - 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::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::Month) }), - ("ώρα", 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) }), - ], - }, - Language::En | Language::EnGb | Language::EnIn => ::phf::Map { - key: 7485420634051515786, - disps: &[ - (0, 7), - (8, 12), - (5, 0), - ], - 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) }), - ("seconds", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("weeks", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("hour", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("minutes", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("year", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ], - }, - Language::Es | Language::EsUs | Language::Es419 => ::phf::Map { - key: 10121458955350035957, - disps: &[ - (8, 9), - (2, 0), - (7, 5), - ], - 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) }), - ("minuto", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ], - }, - Language::Et => ::phf::Map { - key: 15467950696543387533, - disps: &[ - (0, 1), - (0, 0), - (0, 3), - (5, 10), - ], - 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) }), - ("päeva", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ], - }, - Language::Eu => ::phf::Map { - key: 12913932095322966823, - disps: &[ - (1, 9), - (0, 0), - ], - 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) }), - ("ordu", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("ordubete", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ], - }, - Language::Fa => ::phf::Map { - key: 12913932095322966823, - disps: &[ - (1, 0), - (0, 1), - ], - entries: &[ - ("ماه", 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::Hour) }), - ("ثانیه", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("سال", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("دقیقه", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ], - }, - Language::Fi => ::phf::Map { - key: 12213676231523076107, - disps: &[ - (2, 13), - (0, 0), - (0, 11), - ], - 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) }), - ("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) }), - ("tuntia", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("viikkoa", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("päivää", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("sekunti", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ], - }, - Language::Fil => ::phf::Map { - key: 15467950696543387533, - disps: &[ - (0, 0), - (0, 2), - ], - entries: &[ - ("araw", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("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) }), - ("minuto", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("linggo", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ], - }, - Language::Fr | Language::FrCa => ::phf::Map { - key: 10121458955350035957, - disps: &[ - (12, 3), - (2, 11), - (2, 0), - ], - 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) }), - ("ans", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("heure", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ], - }, - Language::Gl => ::phf::Map { - key: 12913932095322966823, - disps: &[ - (12, 6), - (3, 9), - (1, 0), - ], - 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) }), - ("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) }), - ("hora", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ], - }, - Language::Gu => ::phf::Map { - key: 12913932095322966823, - disps: &[ - (1, 0), - (3, 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::Minute) }), - ("કલાક", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ], - }, - Language::Hi => ::phf::Map { - key: 12913932095322966823, - disps: &[ - (0, 5), - (2, 0), - ], - 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) }), - ], - }, - Language::Hr => ::phf::Map { - key: 15467950696543387533, - disps: &[ - (3, 4), - (3, 0), - (0, 3), - (7, 6), - ], - entries: &[ - ("minuta", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("minute", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("dan", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("tjedan", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("tjedna", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("godine", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("godinu", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("mjeseca", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("godina", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("mjesec", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("sekundu", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("mjeseci", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("minutu", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("sata", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("dana", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("sekunde", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("sat", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("sati", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("sekundi", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ], - }, - Language::Hu => ::phf::Map { - key: 7485420634051515786, - disps: &[ - (0, 0), - (3, 9), - (3, 11), - ], - entries: &[ - ("perccel", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("perce", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("nappal", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("másodperce", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("órával", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("héttel", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("hete", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("hónappal", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("másodperccel", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("évvel", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("órája", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("éve", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("napja", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("hónapja", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ], - }, - Language::Hy => ::phf::Map { - key: 12913932095322966823, - disps: &[ - (2, 3), - (1, 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) }), - ], - }, - Language::Id => ::phf::Map { - key: 10121458955350035957, - disps: &[ - (0, 0), - (4, 1), - ], - entries: &[ - ("detik", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("menit", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("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) }), - ("tahun", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ], - }, - Language::Is => ::phf::Map { - key: 15467950696543387533, - disps: &[ - (1, 2), - (1, 0), - (9, 7), - ], - entries: &[ - ("mánuðum", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("klukkustundum", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("sekúndu", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("mínútum", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("dögum", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("viku", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("ári", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("sekúndum", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("mínútu", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("mánuði", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("vikum", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("degi", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("árum", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("klukkustund", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ], - }, - Language::It => ::phf::Map { - key: 15467950696543387533, - disps: &[ - (2, 3), - (0, 0), - (6, 12), - ], - 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) }), - ("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) }), - ("mesi", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("secondi", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("anno", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("minuto", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("settimana", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ], - }, - Language::Iw => ::phf::Map { - key: 1937371814602216758, - disps: &[ - (0, 0), - (3, 0), - (0, 15), - (2, 15), - ], - entries: &[ - ("יומיים", TaToken { n: 2, unit: Some(TimeUnit::Day) }), - ("שעה", 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::Month) }), - ("שעות", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("שנה", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("שנתיים", TaToken { n: 2, unit: Some(TimeUnit::Year) }), - ("שבוע", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("שניות", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("שעתיים", TaToken { n: 2, unit: Some(TimeUnit::Hour) }), - ("דקה", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("שנייה", 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::Day) }), - ("שתי", TaToken { n: 2, unit: None }), - ("שבועות", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("דקות", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("שבועיים", TaToken { n: 2, unit: Some(TimeUnit::Week) }), - ], - }, - Language::Ja => ::phf::Map { - key: 15467950696543387533, - disps: &[ - (0, 0), - (5, 0), - ], - entries: &[ - ("時", 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::Day) }), - ("秒", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("年", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("分", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ], - }, - Language::Ka => ::phf::Map { - key: 12913932095322966823, - disps: &[ - (1, 4), - (6, 0), - ], - entries: &[ - ("საათის", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("კვირის", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("წლის", 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::Minute) }), - ("წამის", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ], - }, - Language::Kk => ::phf::Map { - key: 7485420634051515786, - disps: &[ - (0, 3), - (2, 0), - ], - 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::Day) }), - ("жыл", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ], - }, - Language::Km => ::phf::Map { - key: 12913932095322966823, - disps: &[ - (0, 3), - (1, 0), - ], - entries: &[ - ("សប\u{17d2}ដាហ\u{17cd}ម\u{17bb}ន", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("វ\u{17b7}នាទ\u{17b8}ម\u{17bb}ន", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("ខែម\u{17bb}ន", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("ម\u{17c9}ោងម\u{17bb}ន", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("ឆ\u{17d2}នា\u{17c6}ម\u{17bb}ន", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("ថ\u{17d2}ងៃម\u{17bb}ន", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("នាទ\u{17b8}ម\u{17bb}ន", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ], - }, - Language::Kn => ::phf::Map { - key: 2980949210194914378, - disps: &[ - (1, 0), - (1, 0), - (0, 2), - ], - entries: &[ - ("ಗಂಟ\u{cc6}", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("ವರ\u{ccd}ಷದ", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("ದ\u{cbf}ನದ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("ತ\u{cbf}ಂಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("ನ\u{cbf}ಮ\u{cbf}ಷಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("ವಾರದ", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("ಸ\u{cc6}ಕ\u{cc6}ಂಡುಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("ಗಂಟ\u{cc6}ಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("ಸ\u{cc6}ಕ\u{cc6}ಂಡ\u{ccd}", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("ನ\u{cbf}ಮ\u{cbf}ಷದ", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("ವಾರಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("ದ\u{cbf}ನಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("ತ\u{cbf}ಂಗಳುಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("ವರ\u{ccd}ಷಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ], - }, - Language::Ko => ::phf::Map { - key: 10121458955350035957, - disps: &[ - (4, 1), - (5, 0), - ], - entries: &[ - ("분", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("일", 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::Year) }), - ("초", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("주", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ], - }, - Language::Ky => ::phf::Map { - key: 10121458955350035957, - disps: &[ - (3, 3), - (0, 0), - ], - entries: &[ - ("ай", 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::Minute) }), - ("күн", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("секунд", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("апта", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ], - }, - Language::Lo => ::phf::Map { - key: 12913932095322966823, - disps: &[ - (0, 5), - (0, 0), - ], - entries: &[ - ("ນາທ\u{eb5}ກ\u{ec8}ອນ", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("ເດ\u{eb7}ອນກ\u{ec8}ອນ", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("ຊ\u{ebb}\u{ec8}ວໂມງກ\u{ec8}ອນ", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("ອາທ\u{eb4}ດກ\u{ec8}ອນ", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("ມ\u{eb7}\u{ec9}ກ\u{ec8}ອນ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("ປ\u{eb5}ກ\u{ec8}ອນ", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("ວ\u{eb4}ນາທ\u{eb5}ກ\u{ec8}ອນ", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ], - }, - Language::Lt => ::phf::Map { - key: 15467950696543387533, - disps: &[ - (11, 17), - (10, 19), - (2, 0), - (1, 2), - ], - entries: &[ - ("dieną", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("valandų", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("metus", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("minutes", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("dienų", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("valandą", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("sekundžių", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("sekundę", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("mėnesių", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("savaites", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("savaitę", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("minučių", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("mėnesį", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("dienas", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("valandas", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("savaičių", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("mėnesius", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("minutę", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("sekundes", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("metų", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ], - }, - Language::Lv => ::phf::Map { - key: 15467950696543387533, - disps: &[ - (2, 0), - (1, 12), - (0, 4), - ], - entries: &[ - ("dienām", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("sekundes", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("stundām", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("stundas", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("nedēļas", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("minūtēm", 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) }), - ("gadiem", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("gada", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("mēneša", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("sekundēm", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("mēnešiem", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("dienas", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ], - }, - Language::Mk => ::phf::Map { - key: 15467950696543387533, - disps: &[ - (1, 11), - (11, 0), - (2, 7), - ], - 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::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::Week) }), - ("ден", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("година", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ], - }, - Language::Ml => ::phf::Map { - key: 12913932095322966823, - disps: &[ - (1, 0), - (0, 0), - ], - entries: &[ - ("ആഴ\u{d4d}ച", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("സെക\u{d4d}കൻഡ\u{d4d}", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("മണിക\u{d4d}ക\u{d42}ർ", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("ദിവസം", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("വർഷം", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("മ\u{d3e}സം", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("മിനിറ\u{d4d}റ\u{d4d}", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ], - }, - Language::Mn => ::phf::Map { - key: 12913932095322966823, - disps: &[ - (0, 3), - (5, 0), - ], - entries: &[ - ("сарын", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("минутын", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("өдрийн", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("хоногийн", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("жилийн", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("цагийн", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("секундын", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ], - }, - Language::Mr => ::phf::Map { - key: 15467950696543387533, - disps: &[ - (2, 6), - (1, 3), - (6, 0), - ], - entries: &[ - ("दिवसा\u{902}प\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::Year) }), - ("तासाप\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("वर\u{94d}षाप\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("महिन\u{94d}याप\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("स\u{947}क\u{902}दा\u{902}प\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("दिवसाप\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{94d}या\u{902}प\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}दाप\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("तासा\u{902}प\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("मिनिटा\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::Week) }), - ], - }, - Language::Ms => ::phf::Map { - key: 10121458955350035957, - disps: &[ - (3, 0), - (0, 1), - ], - entries: &[ - ("hari", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("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) }), - ("jam", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ], - }, - Language::My => ::phf::Map { - key: 12913932095322966823, - disps: &[ - (3, 0), - (3, 5), - ], - entries: &[ - ("နာရ\u{102e}", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("န\u{103e}စ\u{103a}", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("မ\u{102d}နစ\u{103a}", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("ပတ\u{103a}", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("စက\u{1039}ကန\u{1037}\u{103a}", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("ရက\u{103a}", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("လ", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ], - }, - Language::Ne => ::phf::Map { - key: 12913932095322966823, - disps: &[ - (1, 0), - (1, 3), - ], - entries: &[ - ("घण\u{94d}टा", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("महिना", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("दिन", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("हप\u{94d}ता", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("वर\u{94d}ष", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("मिन\u{947}ट", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("स\u{947}क\u{947}न\u{94d}ड", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ], - }, - Language::Nl => ::phf::Map { - key: 14108922650502679131, - disps: &[ - (8, 0), - (2, 10), - (2, 6), - ], - 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) }), - ], - }, - Language::No => ::phf::Map { - key: 7485420634051515786, - disps: &[ - (0, 0), - (0, 0), - (5, 6), - ], - entries: &[ - ("minutter", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("dag", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("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) }), - ("uke", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ], - }, - Language::Or => ::phf::Map { - key: 12913932095322966823, - disps: &[ - (4, 4), - (5, 0), - ], - entries: &[ - ("ସେକେଣ\u{b4d}ଡ", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("ବର\u{b4d}ଷ", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("ସପ\u{b4d}ତ\u{b3e}ହ", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("ମ\u{b3e}ସ", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("ମ\u{b3f}ନ\u{b3f}ଟ\u{b4d}", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("ଘଣ\u{b4d}ଟ\u{b3e}", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("ଦ\u{b3f}ନ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ], - }, - Language::Pa => ::phf::Map { - key: 399332969041170284, - disps: &[ - (0, 0), - (8, 1), - ], - entries: &[ - ("ਹਫ\u{a3c}ਤ\u{a47}", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("ਮਿ\u{a70}ਟ", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("ਹਫ\u{a3c}ਤਾ", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("ਮਹੀਨਾ", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("ਘ\u{a70}ਟ\u{a47}", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("ਸਕਿ\u{a70}ਟ", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("ਸਾਲ", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("ਮਹੀਨ\u{a47}", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("ਦਿਨ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("ਘ\u{a70}ਟਾ", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ], - }, - Language::Pl => ::phf::Map { - key: 15467950696543387533, - disps: &[ - (13, 4), - (0, 11), - (5, 11), - (8, 0), - ], - entries: &[ - ("minuty", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("rok", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("dzień", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("tygodnie", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("godzin", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("godziny", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("tydzień", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("miesięcy", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("lat", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("dni", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("minut", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("sekundę", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("sekund", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("godzinę", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("miesiąc", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("lata", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("miesiące", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("minutę", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("sekundy", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ], - }, - Language::Pt | Language::PtPt => ::phf::Map { - key: 10121458955350035957, - disps: &[ - (6, 9), - (0, 0), - (2, 6), - ], - 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) }), - ("mês", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("dias", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ], - }, - Language::Ro => ::phf::Map { - key: 14108922650502679131, - disps: &[ - (0, 0), - (4, 2), - (0, 6), - ], - entries: &[ - ("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) }), - ("secunde", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("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) }), - ], - }, - Language::Ru => ::phf::Map { - key: 15467950696543387533, - disps: &[ - (17, 15), - (7, 8), - (4, 0), - (0, 0), - ], - entries: &[ - ("часа", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("год", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("недели", 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::Second) }), - ("часов", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("секунд", 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::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::Minute) }), - ("года", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("день", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("месяца", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ], - }, - Language::Si => ::phf::Map { - key: 10121458955350035957, - disps: &[ - (5, 3), - (5, 0), - ], - entries: &[ - ("ම\u{dd2}න\u{dd2}ත\u{dca}ත\u{dd4}", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("තත\u{dca}පර", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("පැය", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("ම\u{dcf}ස", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("සත\u{dd2}", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("වසර", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("ද\u{dd2}න", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ], - }, - Language::Sk => ::phf::Map { - key: 8694567506910003252, - disps: &[ - (7, 2), - (0, 0), - (5, 3), - ], - entries: &[ - ("hodinou", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("minútou", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("dňom", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("sekundou", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("mesiacom", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("minútami", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("rokom", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("mesiacmi", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("týždňom", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("dňami", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("rokmi", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("sekundami", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("hodinami", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("týždňami", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ], - }, - Language::Sl => ::phf::Map { - key: 15467950696543387533, - disps: &[ - (0, 2), - (2, 0), - (19, 11), - (3, 10), - (0, 21), - ], - entries: &[ - ("tednoma", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("uro", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("letom", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("mesecema", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("dnevi", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("tedni", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("tednom", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("leti", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("sekundama", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("dnevom", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("mesecem", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("letoma", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("dnevoma", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("minutama", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("minutami", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("dnem", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("urami", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("meseci", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("minuto", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("sekundami", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("sekundo", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("urama", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ], - }, - Language::Sq => ::phf::Map { - key: 471159234146692604, - disps: &[ - (8, 0), - (1, 3), - ], - 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) }), - ("javë", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("sekondë", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("minutë", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("vjet", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ], - }, - Language::Sr => ::phf::Map { - key: 10121458955350035957, - disps: &[ - (0, 15), - (15, 0), - (0, 6), - (7, 2), - ], - entries: &[ - ("секунди", 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::Hour) }), - ("недељу", 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::Hour) }), - ("секунде", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("месец", 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::Week) }), - ("годину", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("минута", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ], - }, - Language::SrLatn => ::phf::Map { - key: 15467950696543387533, - disps: &[ - (11, 7), - (0, 0), - (8, 3), - (13, 0), - ], - entries: &[ - ("dan", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("godine", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("godina", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("godinu", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("meseca", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("dana", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("sekunde", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("nedelju", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("sekundi", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("sata", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("minuta", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("sati", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("meseci", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("mesec", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("nedelja", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("nedelje", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("sat", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ], - }, - Language::Sv => ::phf::Map { - key: 15467950696543387533, - disps: &[ - (2, 11), - (2, 0), - (9, 1), - ], - 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) }), - ("sekunder", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ], - }, - Language::Sw => ::phf::Map { - key: 15467950696543387533, - disps: &[ - (3, 8), - (2, 0), - ], - entries: &[ - ("mwaka", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("siku", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("wiki", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("saa", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("mwezi", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("sekunde", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("miezi", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("dakika", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("miaka", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ], - }, - Language::Ta => ::phf::Map { - key: 7485420634051515786, - disps: &[ - (2, 3), - (12, 0), - (2, 11), - ], - entries: &[ - ("ஆண\u{bcd}டுகளுக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("வ\u{bbe}ரங\u{bcd}களுக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("நிமிடங\u{bcd}களுக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("ந\u{bbe}ளுக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("நிமிடத\u{bcd}திற\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("மணிநேரம\u{bcd}", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("விந\u{bbe}டிக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("விந\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{bbe}தத\u{bcd}துக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("ஆண\u{bcd}டிற\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("ந\u{bbe}ட\u{bcd}களுக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("வ\u{bbe}ரம\u{bcd}", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ], - }, - Language::Te => ::phf::Map { - key: 14108922650502679131, - disps: &[ - (10, 0), - (0, 11), - (1, 11), - ], - entries: &[ - ("న\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{c4b}జుల", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("న\u{c46}లల", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("గంటల", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("గంట", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("వ\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{c3e}రం", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("స\u{c46}కన\u{c4d}ల", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("సంవత\u{c4d}సరం", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("స\u{c46}కను", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("సంవత\u{c4d}సర\u{c3e}ల", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ], - }, - Language::Th => ::phf::Map { - key: 15467950696543387533, - disps: &[ - (3, 5), - (0, 0), - ], - entries: &[ - ("ว\u{e34}นาท\u{e35}ท\u{e35}\u{e48}ผ\u{e48}านมา", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("ว\u{e31}นท\u{e35}\u{e48}ผ\u{e48}านมา", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("นาท\u{e35}ท\u{e35}\u{e48}ผ\u{e48}านมา", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("ช\u{e31}\u{e48}วโมงท\u{e35}\u{e48}ผ\u{e48}านมา", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("ส\u{e31}ปดาห\u{e4c}ท\u{e35}\u{e48}ผ\u{e48}านมา", 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{e48}านมา", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ], - }, - Language::Tr => ::phf::Map { - key: 12913932095322966823, - disps: &[ - (6, 0), - (0, 6), - ], - 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) }), - ("ay", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("dakika", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("saniye", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ], - }, - Language::Uk => ::phf::Map { - key: 8694567506910003252, - disps: &[ - (0, 5), - (6, 4), - (4, 0), - (2, 16), - ], - entries: &[ - ("місяців", 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::Second) }), - ("рік", 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::Month) }), - ("хвилину", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("день", 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::Week) }), - ("годин", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("хвилин", 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::Second) }), - ("дні", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ], - }, - Language::Ur => ::phf::Map { - key: 7485420634051515786, - disps: &[ - (9, 10), - (0, 11), - (2, 0), - ], - entries: &[ - ("سیکنڈ", 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::Week) }), - ("دنوں", 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::Month) }), - ("دن", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("منٹ", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("گھنٹے", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ], - }, - Language::Uz => ::phf::Map { - key: 12913932095322966823, - disps: &[ - (2, 6), - (3, 0), - ], - entries: &[ - ("daqiqa", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("yil", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("kun", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("soat", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("hafta", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("soniya", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("oy", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ], - }, - Language::Vi => ::phf::Map { - key: 10121458955350035957, - disps: &[ - (7, 3), - (7, 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) }), - ("tháng", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("phút", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ], - }, - Language::ZhCn => ::phf::Map { - key: 2980949210194914378, - disps: &[ - (0, 0), - (2, 1), - ], - entries: &[ - ("分", 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::Week) }), - ("月", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("天", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("小", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ], - }, - Language::ZhHk => ::phf::Map { - key: 15467950696543387533, - disps: &[ - (0, 3), - (2, 0), - ], - entries: &[ - ("秒", 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::Month) }), - ("日", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("期", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ], - }, - Language::ZhTw => ::phf::Map { - key: 10121458955350035957, - disps: &[ - (5, 0), - (6, 5), - ], - entries: &[ - ("天", 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::Week) }), - ("小", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("月", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("分", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ], - }, - Language::Zu => ::phf::Map { - key: 8694567506910003252, - disps: &[ - (1, 8), - (0, 0), - (11, 4), - ], - 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) }), - ("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) }), - ], + Language::Af => Entry { + timeago_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (4, 0), + (6, 5), + (7, 2), + ], + entries: &[ + ("maande", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("uur", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("dag", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("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: "DY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 5), + (10, 0), + (0, 11), + ], + entries: &[ + ("Des.", 12), + ("Jan.", 1), + ("Mei", 5), + ("Jun.", 6), + ("Aug.", 8), + ("Sep.", 9), + ("Apr.", 4), + ("Jul.", 7), + ("Nov.", 11), + ("Okt.", 10), + ("Mrt.", 3), + ("Feb.", 2), + ], + }, + }, + Language::Am => Entry { + timeago_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (0, 9), + (7, 0), + (5, 3), + ], + entries: &[ + ("ደቂቃ", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ሳምንታት", 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::Month) }), + ("ሰዓቶች", 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::Second) }), + ("ቀናት", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ደቂቃዎች", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ዓመታት", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("ሳምንት", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (0, 0), + (1, 1), + (6, 8), + ], + entries: &[ + ("ፌብሩ", 2), + ("ጁን", 6), + ("ኦገስ", 8), + ("ኤፕሪ", 4), + ("ዲሴም", 12), + ("ጁላይ", 7), + ("ማርች", 3), + ("ሴፕቴ", 9), + ("ኖቬም", 11), + ("ጃንዩ", 1), + ("ኦክቶ", 10), + ("ሜይ", 5), + ], + }, + }, + Language::Ar => Entry { + timeago_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (1, 9), + (5, 0), + (10, 4), + (0, 1), + (7, 19), + ], + entries: &[ + ("سنتين", TaToken { n: 2, unit: Some(TimeUnit::Year) }), + ("سنة", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("دقائق", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ساعة", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ثوان\u{64d}", 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::Week) }), + ("يومين", TaToken { n: 2, unit: Some(TimeUnit::Day) }), + ("شهر\u{64b}ا", 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::Day) }), + ("سنوات", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("يوم\u{64b}ا", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("شهرين", TaToken { n: 2, unit: Some(TimeUnit::Month) }), + ("دقيقة", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ثوان\u{650}", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("دقيقتين", TaToken { n: 2, unit: Some(TimeUnit::Minute) }), + ("أسابيع", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("ساعات", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("أشهر", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("ساعتين", TaToken { n: 2, unit: Some(TimeUnit::Hour) }), + ], + }, + date_order: "DMY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + ], + entries: &[ + ], + }, + }, + Language::As => Entry { + timeago_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (5, 5), + (3, 0), + ], + entries: &[ + ("দিন", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ছেকেণ\u{9cd}ড", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("বছৰৰ", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("ঘণ\u{9cd}ট\u{9be}", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("সপ\u{9cd}ত\u{9be}হ", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("ম\u{9be}হ", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("মিনিট", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ], + }, + date_order: "DMY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + ], + entries: &[ + ], + }, + }, + Language::Az => Entry { + timeago_tokens: ::phf::Map { + key: 10121458955350035957, + disps: &[ + (5, 0), + (1, 0), + ], + entries: &[ + ("dəqiqə", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("saniyə", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("il", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("həftə", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("ay", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("gün", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("saat", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 8694567506910003252, + disps: &[ + (1, 5), + (4, 0), + (0, 10), + ], + entries: &[ + ("okt", 10), + ("sen", 9), + ("yan", 1), + ("mar", 3), + ("iyl", 7), + ("noy", 11), + ("dek", 12), + ("fev", 2), + ("iyn", 6), + ("avq", 8), + ("may", 5), + ("apr", 4), + ], + }, + }, + Language::Be => Entry { + timeago_tokens: ::phf::Map { + key: 10121458955350035957, + disps: &[ + (2, 0), + (3, 15), + (9, 23), + (1, 18), + (1, 7), + ], + entries: &[ + ("месяца", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("хвіліну", 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::Year) }), + ("секунд", 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::Hour) }), + ("год", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("гады", 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::Day) }), + ("хвілін", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("дзень", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("хвіліны", 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::Hour) }), + ("месяцаў", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("месяц", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("тыдзень", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("дзён", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (11, 11), + (2, 2), + (0, 0), + ], + entries: &[ + ("лют", 2), + ("ліп", 7), + ("чэр", 6), + ("кас", 10), + ("сак", 3), + ("сту", 1), + ("сне", 12), + ("ліс", 11), + ("вер", 9), + ("кра", 4), + ("мая", 5), + ("жні", 8), + ], + }, + }, + Language::Bg => Entry { + timeago_tokens: ::phf::Map { + key: 7485420634051515786, + disps: &[ + (2, 0), + (7, 12), + (5, 10), + ], + 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::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::Year) }), + ("секунди", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ], + }, + date_order: "DMY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + ], + entries: &[ + ], + }, + }, + Language::Bn => Entry { + timeago_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 1), + (2, 0), + ], + entries: &[ + ("মিনিট", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("সপ\u{9cd}ত\u{9be}হ", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("দিন", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ঘন\u{9cd}ট\u{9be}", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ম\u{9be}স", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("বছর", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("সেকেন\u{9cd}ড", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 10121458955350035957, + disps: &[ + (3, 0), + (0, 9), + (9, 8), + ], + entries: &[ + ("ডিসেম\u{9cd}বর,", 12), + ("জ\u{9c1}ল\u{9be}ই,", 7), + ("ফেব,", 2), + ("অক\u{9cd}টোবর,", 10), + ("মে,", 5), + ("আগস\u{9cd}ট,", 8), + ("এপ\u{9cd}রিল,", 4), + ("সেপ\u{9cd}টেম\u{9cd}বর,", 9), + ("জ\u{9be}ন\u{9c1},", 1), + ("নভেম\u{9cd}বর,", 11), + ("জ\u{9c1}ন,", 6), + ("ম\u{9be}র\u{9cd}চ,", 3), + ], + }, + }, + Language::Bs => Entry { + timeago_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (5, 0), + (3, 12), + (8, 3), + (1, 7), + ], + entries: &[ + ("sedmice", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("dan", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("sekunde", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("minute", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("mjeseca", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("godinu", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("mjesec", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("dana", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("minuta", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("godina", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("minutu", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("sati", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("godine", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("sekundu", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("sekundi", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("sedmicu", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("sata", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("sat", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("mjeseci", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 10121458955350035957, + disps: &[ + (0, 9), + (1, 6), + (5, 0), + ], + entries: &[ + ("jul", 7), + ("okt", 10), + ("sep", 9), + ("nov", 11), + ("maj", 5), + ("mar", 3), + ("apr", 4), + ("feb", 2), + ("jun", 6), + ("jan", 1), + ("aug", 8), + ("dec", 12), + ], + }, + }, + Language::Ca => Entry { + timeago_tokens: ::phf::Map { + key: 10121458955350035957, + disps: &[ + (6, 7), + (2, 9), + (0, 0), + ], + 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) }), + ("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) }), + ("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) }), + ("dia", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (0, 5), + (6, 9), + (0, 0), + ], + entries: &[ + ("juny", 6), + ("febr.", 2), + ("d’oct.", 10), + ("març", 3), + ("set.", 9), + ("maig", 5), + ("jul.", 7), + ("gen.", 1), + ("nov.", 11), + ("d’ag.", 8), + ("des.", 12), + ("d’abr.", 4), + ], + }, + }, + Language::Cs => Entry { + timeago_tokens: ::phf::Map { + key: 8694567506910003252, + disps: &[ + (2, 10), + (5, 0), + (8, 0), + ], + entries: &[ + ("rokem", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("hodinami", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("dnem", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("minutami", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("dny", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("lety", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("týdny", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("týdnem", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("sekundou", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("hodinou", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("měsícem", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("sekundami", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("roky", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("minutou", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("měsíci", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ], + }, + date_order: "DMY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + ], + entries: &[ + ], + }, + }, + Language::Da => Entry { + timeago_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (6, 0), + (0, 7), + (12, 11), + ], + 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) }), + ("år", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("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) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 7485420634051515786, + disps: &[ + (1, 0), + (1, 11), + (0, 5), + ], + entries: &[ + ("aug.", 8), + ("jan.", 1), + ("dec.", 12), + ("maj", 5), + ("nov.", 11), + ("sep.", 9), + ("mar.", 3), + ("okt.", 10), + ("jun.", 6), + ("feb.", 2), + ("apr.", 4), + ("jul.", 7), + ], + }, + }, + Language::De => Entry { + timeago_tokens: ::phf::Map { + key: 345707026197253659, + disps: &[ + (9, 13), + (3, 0), + (3, 6), + ], + 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) }), + ("tagen", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, + date_order: "DMY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + ], + entries: &[ + ], + }, + }, + Language::El => Entry { + timeago_tokens: ::phf::Map { + key: 12213676231523076107, + disps: &[ + (0, 0), + (7, 11), + (2, 7), + ], + 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::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::Month) }), + ("ώρα", 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: "DY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 0), + (0, 2), + (7, 3), + ], + entries: &[ + ("Οκτ", 10), + ("Απρ", 4), + ("Ιουν", 6), + ("Μαΐ", 5), + ("Νοε", 11), + ("Σεπ", 9), + ("Φεβ", 2), + ("Αυγ", 8), + ("Δεκ", 12), + ("Μαρ", 3), + ("Ιαν", 1), + ("Ιουλ", 7), + ], + }, + }, + Language::En | Language::EnGb | Language::EnIn => Entry { + timeago_tokens: ::phf::Map { + key: 7485420634051515786, + disps: &[ + (0, 7), + (8, 12), + (5, 0), + ], + 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) }), + ("seconds", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("weeks", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("hour", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("minutes", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("year", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (4, 0), + (1, 1), + (3, 1), + ], + entries: &[ + ("Sep", 9), + ("Nov", 11), + ("Oct", 10), + ("Jun", 6), + ("Jul", 7), + ("Apr", 4), + ("Feb", 2), + ("Mar", 3), + ("Dec", 12), + ("May", 5), + ("Jan", 1), + ("Aug", 8), + ], + }, + }, + Language::Es | Language::EsUs | Language::Es419 => Entry { + timeago_tokens: ::phf::Map { + key: 10121458955350035957, + disps: &[ + (8, 9), + (2, 0), + (7, 5), + ], + 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) }), + ("minuto", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (1, 0), + (1, 6), + (0, 4), + ], + entries: &[ + ("jul", 7), + ("oct", 10), + ("ene", 1), + ("may", 5), + ("sept", 9), + ("feb", 2), + ("nov", 11), + ("dic", 12), + ("abr", 4), + ("jun", 6), + ("ago", 8), + ("mar", 3), + ], + }, + }, + Language::Et => Entry { + timeago_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (0, 1), + (0, 0), + (0, 3), + (5, 10), + ], + 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) }), + ("päeva", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 14108922650502679131, + disps: &[ + (4, 0), + (2, 4), + (0, 3), + ], + entries: &[ + ("okt", 10), + ("aug", 8), + ("dets", 12), + ("mai", 5), + ("jaan", 1), + ("nov", 11), + ("juuni", 6), + ("märts", 3), + ("sept", 9), + ("apr", 4), + ("veebr", 2), + ("juuli", 7), + ], + }, + }, + Language::Eu => Entry { + timeago_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 9), + (0, 0), + ], + 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) }), + ("ordu", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ordubete", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ], + }, + date_order: "YD", + months: ::phf::Map { + key: 10121458955350035957, + disps: &[ + (3, 0), + (0, 0), + (8, 7), + ], + entries: &[ + ("mai.", 5), + ("mar.", 3), + ("urr.", 10), + ("aza.", 11), + ("ira.", 9), + ("ots.", 2), + ("urt.", 1), + ("eka.", 6), + ("abe.", 12), + ("uzt.", 7), + ("api.", 4), + ("abu.", 8), + ], + }, + }, + Language::Fa => Entry { + timeago_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 0), + (0, 1), + ], + entries: &[ + ("ماه", 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::Hour) }), + ("ثانیه", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("سال", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("دقیقه", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + (4, 3), + (7, 8), + ], + entries: &[ + ("دسامبر", 12), + ("ژانویه", 1), + ("مارس", 3), + ("ژوئیه", 7), + ("سپتامبر", 9), + ("آوریل", 4), + ("نوامبر", 11), + ("ژوئن", 6), + ("مه", 5), + ("اوت", 8), + ("اکتبر", 10), + ("فوریه", 2), + ], + }, + }, + Language::Fi => Entry { + timeago_tokens: ::phf::Map { + key: 12213676231523076107, + disps: &[ + (2, 13), + (0, 0), + (0, 11), + ], + 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) }), + ("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) }), + ("tuntia", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("viikkoa", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("päivää", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("sekunti", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ], + }, + date_order: "DMY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + ], + entries: &[ + ], + }, + }, + Language::Fil => Entry { + timeago_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (0, 0), + (0, 2), + ], + entries: &[ + ("araw", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("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) }), + ("minuto", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("linggo", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 9), + (4, 10), + (2, 0), + ], + entries: &[ + ("Ago", 8), + ("Set", 9), + ("Dis", 12), + ("May", 5), + ("Abr", 4), + ("Ene", 1), + ("Hul", 7), + ("Mar", 3), + ("Peb", 2), + ("Hun", 6), + ("Okt", 10), + ("Nob", 11), + ], + }, + }, + Language::Fr | Language::FrCa => Entry { + timeago_tokens: ::phf::Map { + key: 10121458955350035957, + disps: &[ + (12, 3), + (2, 11), + (2, 0), + ], + 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) }), + ("ans", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("heure", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (0, 0), + (5, 2), + (2, 1), + ], + entries: &[ + ("déc.", 12), + ("mai", 5), + ("sept.", 9), + ("nov.", 11), + ("mars", 3), + ("févr.", 2), + ("avr.", 4), + ("janv.", 1), + ("août", 8), + ("oct.", 10), + ("juil.", 7), + ("juin", 6), + ], + }, + }, + Language::Gl => Entry { + timeago_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (12, 6), + (3, 9), + (1, 0), + ], + 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) }), + ("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) }), + ("hora", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + (2, 0), + (0, 3), + ], + entries: &[ + ("out.", 10), + ("feb.", 2), + ("xan.", 1), + ("set.", 9), + ("mar.", 3), + ("nov.", 11), + ("xuño", 6), + ("xul.", 7), + ("maio", 5), + ("dec.", 12), + ("ago.", 8), + ("abr.", 4), + ], + }, + }, + Language::Gu => Entry { + timeago_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 0), + (3, 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::Minute) }), + ("કલાક", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (1, 0), + (3, 11), + (4, 6), + ], + entries: &[ + ("ઑગસ\u{acd}ટ,", 8), + ("ફ\u{ac7}બ\u{acd}ર\u{ac1},", 2), + ("મ\u{ac7},", 5), + ("માર\u{acd}ચ,", 3), + ("નવ\u{ac7},", 11), + ("જાન\u{acd}ય\u{ac1},", 1), + ("એપ\u{acd}રિલ,", 4), + ("જ\u{ac1}લાઈ,", 7), + ("સપ\u{acd}ટ\u{ac7},", 9), + ("જ\u{ac2}ન,", 6), + ("ડિસ\u{ac7},", 12), + ("ઑક\u{acd}ટો,", 10), + ], + }, + }, + Language::Hi => Entry { + timeago_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 5), + (2, 0), + ], + 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) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (7, 0), + (2, 8), + (0, 2), + ], + entries: &[ + ("मार\u{94d}च", 3), + ("सित॰", 9), + ("फ\u{93c}र॰", 2), + ("नव॰", 11), + ("ज\u{942}न", 6), + ("अग॰", 8), + ("ज\u{941}ल॰", 7), + ("जन॰", 1), + ("मई", 5), + ("अक\u{94d}त\u{942}॰", 10), + ("दिस॰", 12), + ("अप\u{94d}र\u{948}ल", 4), + ], + }, + }, + Language::Hr => Entry { + timeago_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (3, 4), + (3, 0), + (0, 3), + (7, 6), + ], + entries: &[ + ("minuta", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("minute", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("dan", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("tjedan", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("tjedna", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("godine", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("godinu", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("mjeseca", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("godina", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("mjesec", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("sekundu", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("mjeseci", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("minutu", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("sata", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("dana", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("sekunde", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("sat", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("sati", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("sekundi", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (0, 8), + (0, 4), + (2, 0), + ], + entries: &[ + ("lis", 10), + ("stu", 11), + ("velj", 2), + ("lip", 6), + ("svi", 5), + ("ruj", 9), + ("pro", 12), + ("sij", 1), + ("kol", 8), + ("ožu", 3), + ("tra", 4), + ("srp", 7), + ], + }, + }, + Language::Hu => Entry { + timeago_tokens: ::phf::Map { + key: 7485420634051515786, + disps: &[ + (0, 0), + (3, 9), + (3, 11), + ], + entries: &[ + ("perccel", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("perce", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("nappal", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("másodperce", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("órával", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("héttel", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("hete", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("hónappal", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("másodperccel", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("évvel", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("órája", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("éve", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("napja", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("hónapja", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ], + }, + date_order: "YD", + months: ::phf::Map { + key: 7485420634051515786, + disps: &[ + (0, 0), + (5, 5), + (5, 0), + ], + entries: &[ + ("febr.", 2), + ("júl.", 7), + ("márc.", 3), + ("máj.", 5), + ("szept.", 9), + ("jún.", 6), + ("aug.", 8), + ("jan.", 1), + ("okt.", 10), + ("nov.", 11), + ("dec.", 12), + ("ápr.", 4), + ], + }, + }, + Language::Hy => Entry { + timeago_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (2, 3), + (1, 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) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (3, 0), + (1, 0), + (3, 11), + ], + entries: &[ + ("հոկ,", 10), + ("սեպ,", 9), + ("հլս,", 7), + ("նոյ,", 11), + ("մրտ,", 3), + ("փտվ,", 2), + ("դեկ,", 12), + ("օգս,", 8), + ("հնս,", 6), + ("հնվ,", 1), + ("մյս,", 5), + ("ապր,", 4), + ], + }, + }, + Language::Id => Entry { + timeago_tokens: ::phf::Map { + key: 10121458955350035957, + disps: &[ + (0, 0), + (4, 1), + ], + entries: &[ + ("detik", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("menit", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("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) }), + ("tahun", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (4, 0), + (11, 8), + (3, 6), + ], + entries: &[ + ("Sep", 9), + ("Mei", 5), + ("Okt", 10), + ("Jan", 1), + ("Jun", 6), + ("Apr", 4), + ("Feb", 2), + ("Mar", 3), + ("Nov", 11), + ("Jul", 7), + ("Des", 12), + ("Agu", 8), + ], + }, + }, + Language::Is => Entry { + timeago_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (1, 2), + (1, 0), + (9, 7), + ], + entries: &[ + ("mánuðum", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("klukkustundum", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("sekúndu", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("mínútum", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("dögum", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("viku", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("ári", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("sekúndum", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("mínútu", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("mánuði", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("vikum", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("degi", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("árum", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("klukkustund", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 8694567506910003252, + disps: &[ + (0, 4), + (6, 5), + (9, 0), + ], + entries: &[ + ("okt.", 10), + ("jún.", 6), + ("ágú.", 8), + ("júl.", 7), + ("nóv.", 11), + ("mar.", 3), + ("des.", 12), + ("feb.", 2), + ("sep.", 9), + ("jan.", 1), + ("apr.", 4), + ("maí", 5), + ], + }, + }, + Language::It => Entry { + timeago_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (2, 3), + (0, 0), + (6, 12), + ], + 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) }), + ("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) }), + ("mesi", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("secondi", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("anno", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("minuto", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("settimana", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 7485420634051515786, + disps: &[ + (0, 0), + (0, 2), + (3, 1), + ], + entries: &[ + ("apr", 4), + ("set", 9), + ("mag", 5), + ("gen", 1), + ("lug", 7), + ("nov", 11), + ("feb", 2), + ("ott", 10), + ("mar", 3), + ("dic", 12), + ("ago", 8), + ("giu", 6), + ], + }, + }, + Language::Iw => Entry { + timeago_tokens: ::phf::Map { + key: 1937371814602216758, + disps: &[ + (0, 0), + (3, 0), + (0, 15), + (2, 15), + ], + entries: &[ + ("יומיים", TaToken { n: 2, unit: Some(TimeUnit::Day) }), + ("שעה", 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::Month) }), + ("שעות", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("שנה", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("שנתיים", TaToken { n: 2, unit: Some(TimeUnit::Year) }), + ("שבוע", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("שניות", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("שעתיים", TaToken { n: 2, unit: Some(TimeUnit::Hour) }), + ("דקה", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("שנייה", 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::Day) }), + ("שתי", TaToken { n: 2, unit: None }), + ("שבועות", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("דקות", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("שבועיים", TaToken { n: 2, unit: Some(TimeUnit::Week) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (0, 0), + (6, 1), + (0, 3), + ], + entries: &[ + ("ביולי", 7), + ("ביוני", 6), + ("במרץ", 3), + ("בספט׳", 9), + ("בינו׳", 1), + ("באוג׳", 8), + ("במאי", 5), + ("בדצמ׳", 12), + ("באוק׳", 10), + ("בנוב׳", 11), + ("באפר׳", 4), + ("בפבר׳", 2), + ], + }, + }, + Language::Ja => Entry { + timeago_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (0, 0), + (5, 0), + ], + entries: &[ + ("時", 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::Day) }), + ("秒", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("年", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("分", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ], + }, + date_order: "YMD", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + ], + entries: &[ + ], + }, + }, + Language::Ka => Entry { + timeago_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 4), + (6, 0), + ], + entries: &[ + ("საათის", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("კვირის", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("წლის", 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::Minute) }), + ("წამის", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (2, 11), + (1, 0), + (0, 3), + ], + entries: &[ + ("სექ.", 9), + ("ნოე.", 11), + ("დეკ.", 12), + ("ივლ.", 7), + ("აპრ.", 4), + ("იან.", 1), + ("აგვ.", 8), + ("მაი.", 5), + ("თებ.", 2), + ("ივნ.", 6), + ("მარ.", 3), + ("ოქტ.", 10), + ], + }, + }, + Language::Kk => Entry { + timeago_tokens: ::phf::Map { + key: 7485420634051515786, + disps: &[ + (0, 3), + (2, 0), + ], + 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::Day) }), + ("жыл", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ], + }, + date_order: "YD", + months: ::phf::Map { + key: 10121458955350035957, + disps: &[ + (0, 0), + (1, 0), + (2, 0), + ], + entries: &[ + ("мау.", 6), + ("там.", 8), + ("шіл.", 7), + ("сәу.", 4), + ("мам.", 5), + ("қаң.", 1), + ("қар.", 11), + ("жел.", 12), + ("нау.", 3), + ("қыр.", 9), + ("қаз.", 10), + ("ақп.", 2), + ], + }, + }, + Language::Km => Entry { + timeago_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 3), + (1, 0), + ], + entries: &[ + ("សប\u{17d2}ដាហ\u{17cd}ម\u{17bb}ន", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("វ\u{17b7}នាទ\u{17b8}ម\u{17bb}ន", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("ខែម\u{17bb}ន", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("ម\u{17c9}ោងម\u{17bb}ន", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ឆ\u{17d2}នា\u{17c6}ម\u{17bb}ន", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("ថ\u{17d2}ងៃម\u{17bb}ន", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("នាទ\u{17b8}ម\u{17bb}ន", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 7485420634051515786, + disps: &[ + (10, 0), + (3, 0), + (0, 10), + ], + entries: &[ + ("វ\u{17b7}ច\u{17d2}ឆ\u{17b7}កា", 11), + ("ម\u{17b7}ថ\u{17bb}នា", 6), + ("ម\u{17b8}នា", 3), + ("ឧសភា", 5), + ("មករា", 1), + ("ក\u{17bb}ម\u{17d2}ភៈ", 2), + ("មេសា", 4), + ("កញ\u{17d2}ញា", 9), + ("ត\u{17bb}លា", 10), + ("ស\u{17b8}ហា", 8), + ("កក\u{17d2}កដា", 7), + ("ធ\u{17d2}ន\u{17bc}", 12), + ], + }, + }, + Language::Kn => Entry { + timeago_tokens: ::phf::Map { + key: 2980949210194914378, + disps: &[ + (1, 0), + (1, 0), + (0, 2), + ], + entries: &[ + ("ಗಂಟ\u{cc6}", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ವರ\u{ccd}ಷದ", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("ದ\u{cbf}ನದ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ತ\u{cbf}ಂಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("ನ\u{cbf}ಮ\u{cbf}ಷಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ವಾರದ", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("ಸ\u{cc6}ಕ\u{cc6}ಂಡುಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("ಗಂಟ\u{cc6}ಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ಸ\u{cc6}ಕ\u{cc6}ಂಡ\u{ccd}", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("ನ\u{cbf}ಮ\u{cbf}ಷದ", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ವಾರಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("ದ\u{cbf}ನಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ತ\u{cbf}ಂಗಳುಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("ವರ\u{ccd}ಷಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (3, 0), + (1, 2), + (5, 5), + ], + entries: &[ + ("ಮಾರ\u{ccd}ಚ\u{ccd}", 3), + ("ಡ\u{cbf}ಸ\u{cc6}ಂ", 12), + ("ನವ\u{cc6}ಂ", 11), + ("ಸ\u{cc6}ಪ\u{ccd}ಟ\u{cc6}ಂ", 9), + ("ಜ\u{cc2}ನ\u{ccd}", 6), + ("ಮೇ", 5), + ("ಜನವರ\u{cbf}", 1), + ("ಆಗ", 8), + ("ಏಪ\u{ccd}ರ\u{cbf}", 4), + ("ಫ\u{cc6}ಬ\u{ccd}ರವರ\u{cbf}", 2), + ("ಜುಲೈ", 7), + ("ಅಕ\u{ccd}ಟೋ", 10), + ], + }, + }, + Language::Ko => Entry { + timeago_tokens: ::phf::Map { + key: 10121458955350035957, + disps: &[ + (4, 1), + (5, 0), + ], + entries: &[ + ("분", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("일", 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::Year) }), + ("초", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("주", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ], + }, + date_order: "YMD", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + ], + entries: &[ + ], + }, + }, + Language::Ky => Entry { + timeago_tokens: ::phf::Map { + key: 10121458955350035957, + disps: &[ + (3, 3), + (0, 0), + ], + entries: &[ + ("ай", 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::Minute) }), + ("күн", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("секунд", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("апта", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ], + }, + date_order: "YD", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + (4, 0), + (0, 10), + ], + entries: &[ + ("-янв.", 1), + ("-июн.", 6), + ("-апр.", 4), + ("-мар.", 3), + ("-дек.", 12), + ("-май", 5), + ("-июл.", 7), + ("-авг.", 8), + ("-ноя.", 11), + ("-фев.", 2), + ("-сен.", 9), + ("-окт.", 10), + ], + }, + }, + Language::Lo => Entry { + timeago_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 5), + (0, 0), + ], + entries: &[ + ("ນາທ\u{eb5}ກ\u{ec8}ອນ", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ເດ\u{eb7}ອນກ\u{ec8}ອນ", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("ຊ\u{ebb}\u{ec8}ວໂມງກ\u{ec8}ອນ", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ອາທ\u{eb4}ດກ\u{ec8}ອນ", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("ມ\u{eb7}\u{ec9}ກ\u{ec8}ອນ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ປ\u{eb5}ກ\u{ec8}ອນ", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("ວ\u{eb4}ນາທ\u{eb5}ກ\u{ec8}ອນ", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 471159234146692604, + disps: &[ + (2, 1), + (1, 0), + (4, 0), + ], + entries: &[ + ("ພ.ຈ.", 11), + ("ມ\u{eb4}.ຖ.", 6), + ("ມ.ນ.", 3), + ("ກ.ຍ.", 9), + ("ທ.ວ.", 12), + ("ກ.ລ.", 7), + ("ຕ.ລ.", 10), + ("ມ.ກ.", 1), + ("ມ.ສ.", 4), + ("ກ.ພ.", 2), + ("ສ.ຫ.", 8), + ("ພ.ພ.", 5), + ], + }, + }, + Language::Lt => Entry { + timeago_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (11, 17), + (10, 19), + (2, 0), + (1, 2), + ], + entries: &[ + ("dieną", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("valandų", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("metus", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("minutes", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("dienų", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("valandą", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("sekundžių", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("sekundę", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("mėnesių", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("savaites", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("savaitę", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("minučių", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("mėnesį", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("dienas", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("valandas", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("savaičių", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("mėnesius", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("minutę", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("sekundes", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("metų", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ], + }, + date_order: "YMD", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + ], + entries: &[ + ], + }, + }, + Language::Lv => Entry { + timeago_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (2, 0), + (1, 12), + (0, 4), + ], + entries: &[ + ("dienām", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("sekundes", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("stundām", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("stundas", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("nedēļas", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("minūtēm", 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) }), + ("gadiem", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("gada", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("mēneša", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("sekundēm", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("mēnešiem", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("dienas", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, + date_order: "YD", + months: ::phf::Map { + key: 10121458955350035957, + disps: &[ + (0, 0), + (2, 11), + (3, 1), + ], + entries: &[ + ("marts", 3), + ("nov.", 11), + ("sept.", 9), + ("maijs", 5), + ("apr.", 4), + ("jūn.", 6), + ("janv.", 1), + ("okt.", 10), + ("aug.", 8), + ("dec.", 12), + ("febr.", 2), + ("jūl.", 7), + ], + }, + }, + Language::Mk => Entry { + timeago_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (1, 11), + (11, 0), + (2, 7), + ], + 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::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::Week) }), + ("ден", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("година", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ], + }, + date_order: "DMY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + ], + entries: &[ + ], + }, + }, + Language::Ml => Entry { + timeago_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 0), + (0, 0), + ], + entries: &[ + ("ആഴ\u{d4d}ച", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("സെക\u{d4d}കൻഡ\u{d4d}", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("മണിക\u{d4d}ക\u{d42}ർ", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ദിവസം", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("വർഷം", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("മ\u{d3e}സം", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("മിനിറ\u{d4d}റ\u{d4d}", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ], + }, + date_order: "YD", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (10, 0), + (1, 11), + (1, 6), + ], + entries: &[ + ("ഫെബ\u{d4d}ര\u{d41}", 2), + ("മേയ\u{d4d}", 5), + ("ഓഗ", 8), + ("ഒക\u{d4d}ടോ", 10), + ("ജ\u{d42}ലൈ", 7), + ("മ\u{d3e}ർ", 3), + ("ഏപ\u{d4d}രി", 4), + ("ജന\u{d41}", 1), + ("ജ\u{d42}ൺ", 6), + ("നവം", 11), + ("സെപ\u{d4d}റ\u{d4d}റം", 9), + ("ഡിസം", 12), + ], + }, + }, + Language::Mn => Entry { + timeago_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 3), + (5, 0), + ], + entries: &[ + ("сарын", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("минутын", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("өдрийн", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("хоногийн", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("жилийн", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("цагийн", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("секундын", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ], + }, + date_order: "YMD", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + ], + entries: &[ + ], + }, + }, + Language::Mr => Entry { + timeago_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (2, 6), + (1, 3), + (6, 0), + ], + entries: &[ + ("दिवसा\u{902}प\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::Year) }), + ("तासाप\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("वर\u{94d}षाप\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("महिन\u{94d}याप\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("स\u{947}क\u{902}दा\u{902}प\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("दिवसाप\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{94d}या\u{902}प\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}दाप\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("तासा\u{902}प\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("मिनिटा\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::Week) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (2, 4), + (0, 0), + (10, 10), + ], + entries: &[ + ("जान\u{947},", 1), + ("ऑक\u{94d}टो,", 10), + ("मार\u{94d}च,", 3), + ("ज\u{941}ल\u{948},", 7), + ("एप\u{94d}रि,", 4), + ("नोव\u{94d}ह\u{947}\u{902},", 11), + ("ज\u{942}न,", 6), + ("ऑग,", 8), + ("म\u{947},", 5), + ("सप\u{94d}ट\u{947}\u{902},", 9), + ("फ\u{947}ब\u{94d}र\u{941},", 2), + ("डिस\u{947}\u{902},", 12), + ], + }, + }, + Language::Ms => Entry { + timeago_tokens: ::phf::Map { + key: 10121458955350035957, + disps: &[ + (3, 0), + (0, 1), + ], + entries: &[ + ("hari", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("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) }), + ("jam", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (8, 9), + (0, 0), + (3, 0), + ], + entries: &[ + ("Mei", 5), + ("Sep", 9), + ("Nov", 11), + ("Feb", 2), + ("Jul", 7), + ("Ogo", 8), + ("Mac", 3), + ("Jun", 6), + ("Okt", 10), + ("Jan", 1), + ("Apr", 4), + ("Dis", 12), + ], + }, + }, + Language::My => Entry { + timeago_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (3, 0), + (3, 5), + ], + entries: &[ + ("နာရ\u{102e}", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("န\u{103e}စ\u{103a}", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("မ\u{102d}နစ\u{103a}", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ပတ\u{103a}", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("စက\u{1039}ကန\u{1037}\u{103a}", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("ရက\u{103a}", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("လ", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ], + }, + date_order: "YD", + months: ::phf::Map { + key: 7485420634051515786, + disps: &[ + (1, 2), + (5, 4), + (0, 0), + ], + entries: &[ + ("မေ", 5), + ("ဩ", 8), + ("ဇ\u{103d}န\u{103a}", 6), + ("ဒ\u{102e}", 12), + ("စက\u{103a}", 9), + ("မတ\u{103a}", 3), + ("ဇန\u{103a}", 1), + ("ဇ\u{1030}", 7), + ("အောက\u{103a}", 10), + ("န\u{102d}\u{102f}", 11), + ("ဖေ", 2), + ("ဧ", 4), + ], + }, + }, + Language::Ne => Entry { + timeago_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 0), + (1, 3), + ], + entries: &[ + ("घण\u{94d}टा", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("महिना", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("दिन", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("हप\u{94d}ता", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("वर\u{94d}ष", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("मिन\u{947}ट", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("स\u{947}क\u{947}न\u{94d}ड", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ], + }, + date_order: "YD", + months: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (1, 0), + (7, 5), + (3, 0), + ], + entries: &[ + ("अगस\u{94d}ट", 8), + ("ज\u{941}लाई", 7), + ("स\u{947}प\u{94d}ट\u{947}म\u{94d}बर", 9), + ("म\u{947}", 5), + ("नोभ\u{947}म\u{94d}बर", 11), + ("डिस\u{947}म\u{94d}बर", 12), + ("जनवरी", 1), + ("मार\u{94d}च", 3), + ("अप\u{94d}रिल", 4), + ("फ\u{947}ब\u{94d}र\u{941}अरी", 2), + ("ज\u{941}न", 6), + ("अक\u{94d}टोबर", 10), + ], + }, + }, + Language::Nl => Entry { + timeago_tokens: ::phf::Map { + key: 14108922650502679131, + disps: &[ + (8, 0), + (2, 10), + (2, 6), + ], + 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) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 3), + (0, 0), + (0, 7), + ], + entries: &[ + ("jan.", 1), + ("dec.", 12), + ("jun.", 6), + ("jul.", 7), + ("sep.", 9), + ("nov.", 11), + ("apr.", 4), + ("feb.", 2), + ("okt.", 10), + ("mrt.", 3), + ("aug.", 8), + ("mei", 5), + ], + }, + }, + Language::No => Entry { + timeago_tokens: ::phf::Map { + key: 7485420634051515786, + disps: &[ + (0, 0), + (0, 0), + (5, 6), + ], + entries: &[ + ("minutter", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("dag", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("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) }), + ("uke", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (0, 6), + (9, 10), + (0, 0), + ], + entries: &[ + ("aug.", 8), + ("jan.", 1), + ("des.", 12), + ("mar.", 3), + ("jun.", 6), + ("jul.", 7), + ("feb.", 2), + ("apr.", 4), + ("mai", 5), + ("nov.", 11), + ("okt.", 10), + ("sep.", 9), + ], + }, + }, + Language::Or => Entry { + timeago_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (4, 4), + (5, 0), + ], + entries: &[ + ("ସେକେଣ\u{b4d}ଡ", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("ବର\u{b4d}ଷ", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("ସପ\u{b4d}ତ\u{b3e}ହ", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("ମ\u{b3e}ସ", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("ମ\u{b3f}ନ\u{b3f}ଟ\u{b4d}", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ଘଣ\u{b4d}ଟ\u{b3e}", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ଦ\u{b3f}ନ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 7485420634051515786, + disps: &[ + (3, 0), + (1, 0), + (10, 10), + ], + entries: &[ + ("ସେପ\u{b4d}ଟେମ\u{b4d}ବର", 9), + ("ନଭେମ\u{b4d}ବର", 11), + ("ଜ\u{b41}ନ", 6), + ("ଅପ\u{b4d}ରେଲ", 4), + ("ଜ\u{b41}ଲ\u{b3e}ଇ", 7), + ("ଅକ\u{b4d}ଟୋବର", 10), + ("ମ\u{b3e}ର\u{b4d}ଚ\u{b4d}ଚ", 3), + ("ମଇ", 5), + ("ଜ\u{b3e}ନ\u{b41}ଆରୀ", 1), + ("ଅଗଷ\u{b4d}ଟ", 8), + ("ଡ\u{b3f}ସେମ\u{b4d}ବର", 12), + ("ଫେବ\u{b43}ଆରୀ", 2), + ], + }, + }, + Language::Pa => Entry { + timeago_tokens: ::phf::Map { + key: 399332969041170284, + disps: &[ + (0, 0), + (8, 1), + ], + entries: &[ + ("ਹਫ\u{a3c}ਤ\u{a47}", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("ਮਿ\u{a70}ਟ", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ਹਫ\u{a3c}ਤਾ", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("ਮਹੀਨਾ", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("ਘ\u{a70}ਟ\u{a47}", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ਸਕਿ\u{a70}ਟ", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("ਸਾਲ", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("ਮਹੀਨ\u{a47}", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("ਦਿਨ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ਘ\u{a70}ਟਾ", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 8694567506910003252, + disps: &[ + (1, 0), + (0, 0), + (0, 6), + ], + entries: &[ + ("ਮਾਰਚ", 3), + ("ਜ\u{a42}ਨ", 6), + ("ਜਨ", 1), + ("ਨਵ\u{a70}", 11), + ("ਦਸ\u{a70}", 12), + ("ਅਪ\u{a4d}ਰ\u{a48}", 4), + ("ਮਈ", 5), + ("ਜ\u{a41}ਲਾ", 7), + ("ਫ\u{a3c}ਰ", 2), + ("ਅਗ", 8), + ("ਸਤ\u{a70}", 9), + ("ਅਕਤ\u{a42}", 10), + ], + }, + }, + Language::Pl => Entry { + timeago_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (13, 4), + (0, 11), + (5, 11), + (8, 0), + ], + entries: &[ + ("minuty", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("rok", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("dzień", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("tygodnie", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("godzin", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("godziny", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("tydzień", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("miesięcy", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("lat", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("dni", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("minut", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("sekundę", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("sekund", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("godzinę", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("miesiąc", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("lata", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("miesiące", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("minutę", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("sekundy", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (1, 4), + (10, 8), + (2, 0), + ], + entries: &[ + ("lis", 11), + ("sty", 1), + ("wrz", 9), + ("lip", 7), + ("lut", 2), + ("paź", 10), + ("cze", 6), + ("gru", 12), + ("sie", 8), + ("maj", 5), + ("kwi", 4), + ("mar", 3), + ], + }, + }, + Language::Pt | Language::PtPt => Entry { + timeago_tokens: ::phf::Map { + key: 10121458955350035957, + disps: &[ + (6, 9), + (0, 0), + (2, 6), + ], + 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) }), + ("mês", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("dias", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (4, 10), + (7, 0), + (0, 6), + ], + entries: &[ + ("out.", 10), + ("nov.", 11), + ("jun.", 6), + ("set.", 9), + ("ago.", 8), + ("fev.", 2), + ("jul.", 7), + ("mar.", 3), + ("mai.", 5), + ("abr.", 4), + ("dez.", 12), + ("jan.", 1), + ], + }, + }, + Language::Ro => Entry { + timeago_tokens: ::phf::Map { + key: 14108922650502679131, + disps: &[ + (0, 0), + (4, 2), + (0, 6), + ], + entries: &[ + ("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) }), + ("secunde", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("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: "DY", + months: ::phf::Map { + key: 7485420634051515786, + disps: &[ + (6, 6), + (0, 1), + (0, 0), + ], + entries: &[ + ("dec.", 12), + ("ian.", 1), + ("oct.", 10), + ("sept.", 9), + ("feb.", 2), + ("apr.", 4), + ("mar.", 3), + ("mai", 5), + ("aug.", 8), + ("iun.", 6), + ("iul.", 7), + ("nov.", 11), + ], + }, + }, + Language::Ru => Entry { + timeago_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (17, 15), + (7, 8), + (4, 0), + (0, 0), + ], + entries: &[ + ("часа", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("год", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("недели", 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::Second) }), + ("часов", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("секунд", 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::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::Minute) }), + ("года", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("день", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("месяца", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + (8, 7), + (0, 10), + ], + entries: &[ + ("мар.", 3), + ("сент.", 9), + ("авг.", 8), + ("окт.", 10), + ("апр.", 4), + ("янв.", 1), + ("февр.", 2), + ("нояб.", 11), + ("дек.", 12), + ("июл.", 7), + ("июн.", 6), + ("мая", 5), + ], + }, + }, + Language::Si => Entry { + timeago_tokens: ::phf::Map { + key: 10121458955350035957, + disps: &[ + (5, 3), + (5, 0), + ], + entries: &[ + ("ම\u{dd2}න\u{dd2}ත\u{dca}ත\u{dd4}", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("තත\u{dca}පර", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("පැය", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ම\u{dcf}ස", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("සත\u{dd2}", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("වසර", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("ද\u{dd2}න", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, + date_order: "YD", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 2), + (0, 0), + (0, 6), + ], + entries: &[ + ("නොවැ", 11), + ("මැය\u{dd2}", 5), + ("සැප\u{dca}", 9), + ("අගෝ", 8), + ("ම\u{dcf}ර\u{dca}ත\u{dd4}", 3), + ("ජ\u{dd6}ල\u{dd2}", 7), + ("ඔක\u{dca}", 10), + ("පෙබ", 2), + ("ජන", 1), + ("දෙසැ", 12), + ("ජ\u{dd6}න\u{dd2}", 6), + ("අප\u{dca}\u{200d}රේල\u{dca}", 4), + ], + }, + }, + Language::Sk => Entry { + timeago_tokens: ::phf::Map { + key: 8694567506910003252, + disps: &[ + (7, 2), + (0, 0), + (5, 3), + ], + entries: &[ + ("hodinou", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("minútou", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("dňom", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("sekundou", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("mesiacom", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("minútami", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("rokom", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("mesiacmi", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("týždňom", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("dňami", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("rokmi", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("sekundami", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("hodinami", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("týždňami", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ], + }, + date_order: "DMY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + ], + entries: &[ + ], + }, + }, + Language::Sl => Entry { + timeago_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (0, 2), + (2, 0), + (19, 11), + (3, 10), + (0, 21), + ], + entries: &[ + ("tednoma", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("uro", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("letom", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("mesecema", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("dnevi", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("tedni", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("tednom", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("leti", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("sekundama", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("dnevom", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("mesecem", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("letoma", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("dnevoma", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("minutama", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("minutami", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("dnem", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("urami", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("meseci", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("minuto", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("sekundami", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("sekundo", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("urama", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (0, 5), + (2, 8), + (0, 0), + ], + entries: &[ + ("jan.", 1), + ("jul.", 7), + ("avg.", 8), + ("mar.", 3), + ("jun.", 6), + ("maj", 5), + ("feb.", 2), + ("apr.", 4), + ("nov.", 11), + ("okt.", 10), + ("sep.", 9), + ("dec.", 12), + ], + }, + }, + Language::Sq => Entry { + timeago_tokens: ::phf::Map { + key: 471159234146692604, + disps: &[ + (8, 0), + (1, 3), + ], + 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) }), + ("javë", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("sekondë", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("minutë", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("vjet", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 7485420634051515786, + disps: &[ + (1, 0), + (1, 1), + (6, 6), + ], + entries: &[ + ("shk", 2), + ("dhj", 12), + ("mar", 3), + ("sht", 9), + ("gush", 8), + ("pri", 4), + ("qer", 6), + ("korr", 7), + ("maj", 5), + ("tet", 10), + ("nën", 11), + ("jan", 1), + ], + }, + }, + Language::Sr => Entry { + timeago_tokens: ::phf::Map { + key: 10121458955350035957, + disps: &[ + (0, 15), + (15, 0), + (0, 6), + (7, 2), + ], + entries: &[ + ("секунди", 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::Hour) }), + ("недељу", 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::Hour) }), + ("секунде", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("месец", 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::Week) }), + ("годину", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("минута", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ], + }, + date_order: "DMY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + ], + entries: &[ + ], + }, + }, + Language::SrLatn => Entry { + timeago_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (11, 7), + (0, 0), + (8, 3), + (13, 0), + ], + entries: &[ + ("dan", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("godine", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("godina", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("godinu", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("meseca", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("dana", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("sekunde", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("nedelju", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("sekundi", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("sata", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("minuta", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("sati", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("meseci", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("mesec", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("nedelja", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("nedelje", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("sat", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ], + }, + date_order: "DMY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + ], + entries: &[ + ], + }, + }, + Language::Sv => Entry { + timeago_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (2, 11), + (2, 0), + (9, 1), + ], + 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) }), + ("sekunder", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 5), + (2, 0), + (0, 3), + ], + entries: &[ + ("juni", 6), + ("feb.", 2), + ("apr.", 4), + ("juli", 7), + ("sep.", 9), + ("nov.", 11), + ("aug.", 8), + ("mars", 3), + ("jan.", 1), + ("dec.", 12), + ("okt.", 10), + ("maj", 5), + ], + }, + }, + Language::Sw => Entry { + timeago_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (3, 8), + (2, 0), + ], + entries: &[ + ("mwaka", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("siku", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("wiki", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("saa", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("mwezi", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("sekunde", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("miezi", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("dakika", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("miaka", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (0, 3), + (3, 0), + (11, 5), + ], + entries: &[ + ("Feb", 2), + ("Mac", 3), + ("Jun", 6), + ("Jan", 1), + ("Des", 12), + ("Jul", 7), + ("Mei", 5), + ("Okt", 10), + ("Nov", 11), + ("Apr", 4), + ("Sep", 9), + ("Ago", 8), + ], + }, + }, + Language::Ta => Entry { + timeago_tokens: ::phf::Map { + key: 7485420634051515786, + disps: &[ + (2, 3), + (12, 0), + (2, 11), + ], + entries: &[ + ("ஆண\u{bcd}டுகளுக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("வ\u{bbe}ரங\u{bcd}களுக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("நிமிடங\u{bcd}களுக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ந\u{bbe}ளுக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("நிமிடத\u{bcd}திற\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("மணிநேரம\u{bcd}", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("விந\u{bbe}டிக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("விந\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{bbe}தத\u{bcd}துக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("ஆண\u{bcd}டிற\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("ந\u{bbe}ட\u{bcd}களுக\u{bcd}கு", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("வ\u{bbe}ரம\u{bcd}", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (0, 6), + (7, 0), + (1, 0), + ], + entries: &[ + ("ஜன.,", 1), + ("செப\u{bcd}.,", 9), + ("ஆக.,", 8), + ("ஜூன\u{bcd},", 6), + ("டிச.,", 12), + ("அக\u{bcd}.,", 10), + ("பிப\u{bcd}.,", 2), + ("நவ.,", 11), + ("ஜூலை,", 7), + ("ஏப\u{bcd}.,", 4), + ("ம\u{bbe}ர\u{bcd}.,", 3), + ("மே,", 5), + ], + }, + }, + Language::Te => Entry { + timeago_tokens: ::phf::Map { + key: 14108922650502679131, + disps: &[ + (10, 0), + (0, 11), + (1, 11), + ], + entries: &[ + ("న\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{c4b}జుల", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("న\u{c46}లల", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("గంటల", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("గంట", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("వ\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{c3e}రం", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("స\u{c46}కన\u{c4d}ల", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("సంవత\u{c4d}సరం", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("స\u{c46}కను", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("సంవత\u{c4d}సర\u{c3e}ల", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (5, 6), + (0, 0), + (1, 0), + ], + entries: &[ + ("ఏప\u{c4d}ర\u{c3f},", 4), + ("జన,", 1), + ("డ\u{c3f}స\u{c46}ం,", 12), + ("ఫ\u{c3f}బ\u{c4d}ర,", 2), + ("అక\u{c4d}ట\u{c4b},", 10), + ("నవం,", 11), + ("మ\u{c47},", 5), + ("జూన\u{c4d},", 6), + ("స\u{c46}ప\u{c4d}ట\u{c46}ం,", 9), + ("ఆగ,", 8), + ("జుల\u{c48},", 7), + ("మ\u{c3e}ర\u{c4d}చ\u{c3f},", 3), + ], + }, + }, + Language::Th => Entry { + timeago_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (3, 5), + (0, 0), + ], + entries: &[ + ("ว\u{e34}นาท\u{e35}ท\u{e35}\u{e48}ผ\u{e48}านมา", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("ว\u{e31}นท\u{e35}\u{e48}ผ\u{e48}านมา", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("นาท\u{e35}ท\u{e35}\u{e48}ผ\u{e48}านมา", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("ช\u{e31}\u{e48}วโมงท\u{e35}\u{e48}ผ\u{e48}านมา", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ส\u{e31}ปดาห\u{e4c}ท\u{e35}\u{e48}ผ\u{e48}านมา", 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{e48}านมา", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 0), + (2, 0), + (8, 8), + ], + entries: &[ + ("ต.ค.", 10), + ("ก.ค.", 7), + ("ธ.ค.", 12), + ("ม\u{e34}.ย.", 6), + ("ม.ค.", 1), + ("เม.ย.", 4), + ("ก.พ.", 2), + ("พ.ย.", 11), + ("ส.ค.", 8), + ("ม\u{e35}.ค.", 3), + ("ก.ย.", 9), + ("พ.ค.", 5), + ], + }, + }, + Language::Tr => Entry { + timeago_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (6, 0), + (0, 6), + ], + 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) }), + ("ay", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("dakika", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("saniye", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 10), + (2, 0), + (0, 8), + ], + entries: &[ + ("Kas", 11), + ("Mar", 3), + ("Eyl", 9), + ("Nis", 4), + ("Ara", 12), + ("Eki", 10), + ("Oca", 1), + ("May", 5), + ("Ağu", 8), + ("Haz", 6), + ("Tem", 7), + ("Şub", 2), + ], + }, + }, + Language::Uk => Entry { + timeago_tokens: ::phf::Map { + key: 8694567506910003252, + disps: &[ + (0, 5), + (6, 4), + (4, 0), + (2, 16), + ], + entries: &[ + ("місяців", 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::Second) }), + ("рік", 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::Month) }), + ("хвилину", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("день", 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::Week) }), + ("годин", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("хвилин", 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::Second) }), + ("дні", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (2, 0), + (6, 7), + (0, 0), + ], + entries: &[ + ("січ.", 1), + ("вер.", 9), + ("серп.", 8), + ("жовт.", 10), + ("трав.", 5), + ("груд.", 12), + ("черв.", 6), + ("квіт.", 4), + ("лип.", 7), + ("лист.", 11), + ("бер.", 3), + ("лют.", 2), + ], + }, + }, + Language::Ur => Entry { + timeago_tokens: ::phf::Map { + key: 7485420634051515786, + disps: &[ + (9, 10), + (0, 11), + (2, 0), + ], + entries: &[ + ("سیکنڈ", 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::Week) }), + ("دنوں", 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::Month) }), + ("دن", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("منٹ", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("گھنٹے", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (1, 0), + (10, 7), + (8, 7), + ], + entries: &[ + ("فروری،", 2), + ("اکتوبر،", 10), + ("جنوری،", 1), + ("اپریل،", 4), + ("ستمبر،", 9), + ("دسمبر،", 12), + ("نومبر،", 11), + ("مارچ،", 3), + ("اگست،", 8), + ("جون،", 6), + ("جولائی،", 7), + ("مئی،", 5), + ], + }, + }, + Language::Uz => Entry { + timeago_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (2, 6), + (3, 0), + ], + entries: &[ + ("daqiqa", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("yil", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("kun", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("soat", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("hafta", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("soniya", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("oy", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 10121458955350035957, + disps: &[ + (0, 0), + (5, 9), + (0, 1), + ], + entries: &[ + ("-avg,", 8), + ("-iyn,", 6), + ("-sen,", 9), + ("-noy,", 11), + ("-fev,", 2), + ("-apr,", 4), + ("-yan,", 1), + ("-may,", 5), + ("-mar,", 3), + ("-dek,", 12), + ("-okt,", 10), + ("-iyl,", 7), + ], + }, + }, + Language::Vi => Entry { + timeago_tokens: ::phf::Map { + key: 10121458955350035957, + disps: &[ + (7, 3), + (7, 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) }), + ("tháng", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("phút", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ], + }, + date_order: "DMY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + ], + entries: &[ + ], + }, + }, + Language::ZhCn => Entry { + timeago_tokens: ::phf::Map { + key: 2980949210194914378, + disps: &[ + (0, 0), + (2, 1), + ], + entries: &[ + ("分", 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::Week) }), + ("月", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("天", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("小", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ], + }, + date_order: "YMD", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + ], + entries: &[ + ], + }, + }, + Language::ZhHk => Entry { + timeago_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (0, 3), + (2, 0), + ], + entries: &[ + ("秒", 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::Month) }), + ("日", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("期", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ], + }, + date_order: "YMD", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + ], + entries: &[ + ], + }, + }, + Language::ZhTw => Entry { + timeago_tokens: ::phf::Map { + key: 10121458955350035957, + disps: &[ + (5, 0), + (6, 5), + ], + entries: &[ + ("天", 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::Week) }), + ("小", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("月", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("分", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ], + }, + date_order: "YMD", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + ], + entries: &[ + ], + }, + }, + Language::Zu => Entry { + timeago_tokens: ::phf::Map { + key: 8694567506910003252, + disps: &[ + (1, 8), + (0, 0), + (11, 4), + ], + 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) }), + ("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) }), + ], + }, + date_order: "DY", + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 4), + (1, 10), + (1, 0), + ], + entries: &[ + ("ka-Aga", 8), + ("ka-Mas", 3), + ("ka-Jan", 1), + ("ka-Sep", 9), + ("ka-Jun", 6), + ("ka-Eph", 4), + ("ka-Mey", 5), + ("ka-Jul", 7), + ("ka-Feb", 2), + ("ka-Okt", 10), + ("ka-Dis", 12), + ("ka-Nov", 11), + ], + }, }, } } diff --git a/src/timeago.rs b/src/timeago.rs index 9fa820f..999ac5a 100644 --- a/src/timeago.rs +++ b/src/timeago.rs @@ -11,7 +11,7 @@ pub struct TimeAgo { } #[derive(Debug, Copy, Clone, PartialEq, Eq)] -pub(crate) struct TaToken { +pub struct TaToken { pub n: u8, pub unit: Option, } @@ -67,7 +67,7 @@ impl PartialOrd for TimeAgo { } pub fn parse(lang: Language, textual_date: &str) -> Option { - let mappings = dictionary::get_timeago_tokens(lang); + let mappings = dictionary::entry(lang).timeago_tokens; let filtered_str = textual_date .to_lowercase() diff --git a/src/util.rs b/src/util.rs index db8edcb..e8d9ac2 100644 --- a/src/util.rs +++ b/src/util.rs @@ -59,8 +59,36 @@ pub fn parse_numeric(string: &str) -> Result where F: FromStr, { - static NUM_PATTERN: Lazy = Lazy::new(|| Regex::new("\\D+").unwrap()); - NUM_PATTERN.replace_all(string, "").parse() + let mut buf = String::new(); + for c in string.chars() { + if c.is_ascii_digit() { + buf.push(c); + } + } + buf.parse() +} + +/// Parse all numbers occurring in a string and reurn them as a vec +pub fn parse_numeric_vec(string: &str) -> Vec +where + F: FromStr, +{ + let mut numbers = vec![]; + + let mut buf = String::new(); + for c in string.chars() { + if c.is_ascii_digit() { + buf.push(c); + } else if !buf.is_empty() { + buf.parse::().map_or((), |n| numbers.push(n)); + buf.clear(); + } + } + if !buf.is_empty() { + buf.parse::().map_or((), |n| numbers.push(n)); + } + + numbers } #[cfg(test)] @@ -76,4 +104,13 @@ mod tests { let n = parse_numeric::(string).unwrap(); assert_eq!(n, expect); } + + #[rstest] + #[case("15.03.2022", vec![15, 3, 2022])] + #[case("4 Hello World 2", vec![4, 2])] + #[case("最后更新时间:2020年1月3日", vec![2020, 1, 3])] + fn t_parse_numeric_vec(#[case] string: &str, #[case] expect: Vec) { + let n = parse_numeric_vec::(string); + assert_eq!(n, expect); + } } diff --git a/testfiles/date/dictionary.json b/testfiles/date/dictionary.json index cfbcfc0..e55ffd9 100644 --- a/testfiles/date/dictionary.json +++ b/testfiles/date/dictionary.json @@ -1,5 +1,7 @@ { "af": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "dae": "D", "dag": "D", @@ -14,9 +16,26 @@ "uur": "h", "week": "W", "weke": "W" + }, + "date_order": "DY", + "months": { + "Apr.": 4, + "Aug.": 8, + "Des.": 12, + "Feb.": 2, + "Jan.": 1, + "Jul.": 7, + "Jun.": 6, + "Mei": 5, + "Mrt.": 3, + "Nov.": 11, + "Okt.": 10, + "Sep.": 9 } }, "am": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "ሰከንድ": "s", "ሰከንዶች": "s", @@ -32,9 +51,26 @@ "ዓመት": "Y", "ደቂቃ": "m", "ደቂቃዎች": "m" + }, + "date_order": "DY", + "months": { + "ማርች": 3, + "ሜይ": 5, + "ሴፕቴ": 9, + "ኖቬም": 11, + "ኤፕሪ": 4, + "ኦክቶ": 10, + "ኦገስ": 8, + "ዲሴም": 12, + "ጁላይ": 7, + "ጁን": 6, + "ጃንዩ": 1, + "ፌብሩ": 2 } }, "ar": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "أسابيع": "W", "أسبوع": "W", @@ -60,9 +96,13 @@ "يوم": "D", "يومين": "2D", "يومًا": "D" - } + }, + "date_order": "DMY", + "months": {} }, "as": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "ঘণ্টা": "h", "ছেকেণ্ড": "s", @@ -71,9 +111,13 @@ "মাহ": "M", "মিনিট": "m", "সপ্তাহ": "W" - } + }, + "date_order": "DMY", + "months": {} }, "az": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "ay": "M", "dəqiqə": "m", @@ -82,9 +126,26 @@ "il": "Y", "saat": "h", "saniyə": "s" + }, + "date_order": "DY", + "months": { + "apr": 4, + "avq": 8, + "dek": 12, + "fev": 2, + "iyl": 7, + "iyn": 6, + "mar": 3, + "may": 5, + "noy": 11, + "okt": 10, + "sen": 9, + "yan": 1 } }, "be": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "гадзін": "h", "гадзіну": "h", @@ -110,9 +171,26 @@ "хвілін": "m", "хвіліну": "m", "хвіліны": "m" + }, + "date_order": "DY", + "months": { + "вер": 9, + "жні": 8, + "кас": 10, + "кра": 4, + "лют": 2, + "ліп": 7, + "ліс": 11, + "мая": 5, + "сак": 3, + "сне": 12, + "сту": 1, + "чэр": 6 } }, "bg": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "година": "Y", "години": "Y", @@ -128,9 +206,13 @@ "секунди": "s", "час": "h", "часа": "h" - } + }, + "date_order": "DMY", + "months": {} }, "bn": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "ঘন্টা": "h", "দিন": "D", @@ -139,9 +221,26 @@ "মিনিট": "m", "সপ্তাহ": "W", "সেকেন্ড": "s" + }, + "date_order": "DY", + "months": { + "অক্টোবর,": 10, + "আগস্ট,": 8, + "এপ্রিল,": 4, + "জানু,": 1, + "জুন,": 6, + "জুলাই,": 7, + "ডিসেম্বর,": 12, + "নভেম্বর,": 11, + "ফেব,": 2, + "মার্চ,": 3, + "মে,": 5, + "সেপ্টেম্বর,": 9 } }, "bs": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "dan": "D", "dana": "D", @@ -162,9 +261,26 @@ "sekunde": "s", "sekundi": "s", "sekundu": "s" + }, + "date_order": "DY", + "months": { + "apr": 4, + "aug": 8, + "dec": 12, + "feb": 2, + "jan": 1, + "jul": 7, + "jun": 6, + "maj": 5, + "mar": 3, + "nov": 11, + "okt": 10, + "sep": 9 } }, "ca": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "any": "Y", "anys": "Y", @@ -180,9 +296,26 @@ "segons": "s", "setmana": "W", "setmanes": "W" + }, + "date_order": "DY", + "months": { + "des.": 12, + "d’abr.": 4, + "d’ag.": 8, + "d’oct.": 10, + "febr.": 2, + "gen.": 1, + "jul.": 7, + "juny": 6, + "maig": 5, + "març": 3, + "nov.": 11, + "set.": 9 } }, "cs": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "dnem": "D", "dny": "D", @@ -199,9 +332,13 @@ "sekundou": "s", "týdnem": "W", "týdny": "W" - } + }, + "date_order": "DMY", + "months": {} }, "da": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "dag": "D", "dage": "D", @@ -216,9 +353,26 @@ "uge": "W", "uger": "W", "år": "Y" + }, + "date_order": "DY", + "months": { + "apr.": 4, + "aug.": 8, + "dec.": 12, + "feb.": 2, + "jan.": 1, + "jul.": 7, + "jun.": 6, + "maj": 5, + "mar.": 3, + "nov.": 11, + "okt.": 10, + "sep.": 9 } }, "de": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "jahr": "Y", "jahren": "Y", @@ -234,9 +388,13 @@ "tagen": "D", "woche": "W", "wochen": "W" - } + }, + "date_order": "DMY", + "months": {} }, "el": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "έτη": "Y", "έτος": "Y", @@ -252,10 +410,29 @@ "μήνες": "M", "ώρα": "h", "ώρες": "h" + }, + "date_order": "DY", + "months": { + "Απρ": 4, + "Αυγ": 8, + "Δεκ": 12, + "Ιαν": 1, + "Ιουλ": 7, + "Ιουν": 6, + "Μαΐ": 5, + "Μαρ": 3, + "Νοε": 11, + "Οκτ": 10, + "Σεπ": 9, + "Φεβ": 2 } }, "en": { - "equivalent": ["en-GB", "en-IN"], + "equivalent": [ + "en-GB", + "en-IN" + ], + "by_char": false, "timeago_tokens": { "day": "D", "days": "D", @@ -271,10 +448,29 @@ "weeks": "W", "year": "Y", "years": "Y" + }, + "date_order": "DY", + "months": { + "Apr": 4, + "Aug": 8, + "Dec": 12, + "Feb": 2, + "Jan": 1, + "Jul": 7, + "Jun": 6, + "Mar": 3, + "May": 5, + "Nov": 11, + "Oct": 10, + "Sep": 9 } }, "es": { - "equivalent": ["es-US", "es-419"], + "equivalent": [ + "es-US", + "es-419" + ], + "by_char": false, "timeago_tokens": { "año": "Y", "años": "Y", @@ -290,9 +486,26 @@ "segundos": "s", "semana": "W", "semanas": "W" + }, + "date_order": "DY", + "months": { + "abr": 4, + "ago": 8, + "dic": 12, + "ene": 1, + "feb": 2, + "jul": 7, + "jun": 6, + "mar": 3, + "may": 5, + "nov": 11, + "oct": 10, + "sept": 9 } }, "et": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "aasta": "Y", "aastat": "Y", @@ -310,9 +523,26 @@ "sekundi": "s", "sekundit": "s", "tunni": "h" + }, + "date_order": "DY", + "months": { + "apr": 4, + "aug": 8, + "dets": 12, + "jaan": 1, + "juuli": 7, + "juuni": 6, + "mai": 5, + "märts": 3, + "nov": 11, + "okt": 10, + "sept": 9, + "veebr": 2 } }, "eu": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "aste": "W", "astebete": "W", @@ -324,9 +554,26 @@ "segundo": "s", "urte": "Y", "urtebete": "Y" + }, + "date_order": "YD", + "months": { + "abe.": 12, + "abu.": 8, + "api.": 4, + "aza.": 11, + "eka.": 6, + "ira.": 9, + "mai.": 5, + "mar.": 3, + "ots.": 2, + "urr.": 10, + "urt.": 1, + "uzt.": 7 } }, "fa": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "ثانیه": "s", "دقیقه": "m", @@ -335,9 +582,26 @@ "سال": "Y", "ماه": "M", "هفته": "W" + }, + "date_order": "DY", + "months": { + "آوریل": 4, + "اوت": 8, + "اکتبر": 10, + "دسامبر": 12, + "سپتامبر": 9, + "فوریه": 2, + "مارس": 3, + "مه": 5, + "نوامبر": 11, + "ژانویه": 1, + "ژوئن": 6, + "ژوئیه": 7 } }, "fi": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "kuukausi": "M", "kuukautta": "M", @@ -353,9 +617,13 @@ "viikkoa": "W", "vuosi": "Y", "vuotta": "Y" - } + }, + "date_order": "DMY", + "months": {} }, "fil": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "araw": "D", "buwan": "M", @@ -364,10 +632,28 @@ "oras": "h", "segundo": "s", "taon": "Y" + }, + "date_order": "DY", + "months": { + "Abr": 4, + "Ago": 8, + "Dis": 12, + "Ene": 1, + "Hul": 7, + "Hun": 6, + "Mar": 3, + "May": 5, + "Nob": 11, + "Okt": 10, + "Peb": 2, + "Set": 9 } }, "fr": { - "equivalent": ["fr-CA"], + "equivalent": [ + "fr-CA" + ], + "by_char": false, "timeago_tokens": { "an": "Y", "ans": "Y", @@ -382,9 +668,26 @@ "secondes": "s", "semaine": "W", "semaines": "W" + }, + "date_order": "DY", + "months": { + "août": 8, + "avr.": 4, + "déc.": 12, + "févr.": 2, + "janv.": 1, + "juil.": 7, + "juin": 6, + "mai": 5, + "mars": 3, + "nov.": 11, + "oct.": 10, + "sept.": 9 } }, "gl": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "ano": "Y", "anos": "Y", @@ -400,9 +703,26 @@ "segundos": "s", "semana": "W", "semanas": "W" + }, + "date_order": "DY", + "months": { + "abr.": 4, + "ago.": 8, + "dec.": 12, + "feb.": 2, + "maio": 5, + "mar.": 3, + "nov.": 11, + "out.": 10, + "set.": 9, + "xan.": 1, + "xul.": 7, + "xuño": 6 } }, "gu": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "અઠવાડિયા": "W", "કલાક": "h", @@ -411,9 +731,26 @@ "મિનિટ": "m", "વર્ષ": "Y", "સેકંડ": "s" + }, + "date_order": "DY", + "months": { + "એપ્રિલ,": 4, + "ઑક્ટો,": 10, + "ઑગસ્ટ,": 8, + "જાન્યુ,": 1, + "જુલાઈ,": 7, + "જૂન,": 6, + "ડિસે,": 12, + "નવે,": 11, + "ફેબ્રુ,": 2, + "માર્ચ,": 3, + "મે,": 5, + "સપ્ટે,": 9 } }, "hi": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "घंटे": "h", "दिन": "D", @@ -422,9 +759,26 @@ "वर्ष": "Y", "सप्ताह": "W", "सेकंड": "s" + }, + "date_order": "DY", + "months": { + "अक्तू॰": 10, + "अग॰": 8, + "अप्रैल": 4, + "जन॰": 1, + "जुल॰": 7, + "जून": 6, + "दिस॰": 12, + "नव॰": 11, + "फ़र॰": 2, + "मई": 5, + "मार्च": 3, + "सित॰": 9 } }, "hr": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "dan": "D", "dana": "D", @@ -445,9 +799,26 @@ "sekundu": "s", "tjedan": "W", "tjedna": "W" + }, + "date_order": "DY", + "months": { + "kol": 8, + "lip": 6, + "lis": 10, + "ožu": 3, + "pro": 12, + "ruj": 9, + "sij": 1, + "srp": 7, + "stu": 11, + "svi": 5, + "tra": 4, + "velj": 2 } }, "hu": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "hete": "W", "héttel": "W", @@ -463,9 +834,26 @@ "évvel": "Y", "órája": "h", "órával": "h" + }, + "date_order": "YD", + "months": { + "aug.": 8, + "dec.": 12, + "febr.": 2, + "jan.": 1, + "júl.": 7, + "jún.": 6, + "máj.": 5, + "márc.": 3, + "nov.": 11, + "okt.": 10, + "szept.": 9, + "ápr.": 4 } }, "hy": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "ամիս": "M", "ժամ": "h", @@ -474,9 +862,26 @@ "տարի": "Y", "րոպե": "m", "օր": "D" + }, + "date_order": "DY", + "months": { + "ապր,": 4, + "դեկ,": 12, + "հլս,": 7, + "հնս,": 6, + "հնվ,": 1, + "հոկ,": 10, + "մյս,": 5, + "մրտ,": 3, + "նոյ,": 11, + "սեպ,": 9, + "փտվ,": 2, + "օգս,": 8 } }, "id": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "bulan": "M", "detik": "s", @@ -485,9 +890,26 @@ "menit": "m", "minggu": "W", "tahun": "Y" + }, + "date_order": "DY", + "months": { + "Agu": 8, + "Apr": 4, + "Des": 12, + "Feb": 2, + "Jan": 1, + "Jul": 7, + "Jun": 6, + "Mar": 3, + "Mei": 5, + "Nov": 11, + "Okt": 10, + "Sep": 9 } }, "is": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "degi": "D", "dögum": "D", @@ -503,9 +925,26 @@ "vikum": "W", "ári": "Y", "árum": "Y" + }, + "date_order": "DY", + "months": { + "apr.": 4, + "des.": 12, + "feb.": 2, + "jan.": 1, + "júl.": 7, + "jún.": 6, + "mar.": 3, + "maí": 5, + "nóv.": 11, + "okt.": 10, + "sep.": 9, + "ágú.": 8 } }, "it": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "anni": "Y", "anno": "Y", @@ -521,9 +960,26 @@ "secondo": "s", "settimana": "W", "settimane": "W" + }, + "date_order": "DY", + "months": { + "ago": 8, + "apr": 4, + "dic": 12, + "feb": 2, + "gen": 1, + "giu": 6, + "lug": 7, + "mag": 5, + "mar": 3, + "nov": 11, + "ott": 10, + "set": 9 } }, "iw": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "דקה": "m", "דקות": "m", @@ -545,21 +1001,41 @@ "שעות": "h", "שעתיים": "2h", "שתי": "2" + }, + "date_order": "DY", + "months": { + "באוג׳": 8, + "באוק׳": 10, + "באפר׳": 4, + "בדצמ׳": 12, + "ביולי": 7, + "ביוני": 6, + "בינו׳": 1, + "במאי": 5, + "במרץ": 3, + "בנוב׳": 11, + "בספט׳": 9, + "בפבר׳": 2 } }, "ja": { + "equivalent": [], "by_char": true, "timeago_tokens": { - "月": "M", "分": "m", "年": "Y", "日": "D", "時": "h", + "月": "M", "秒": "s", "週": "W" - } + }, + "date_order": "YMD", + "months": {} }, "ka": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "დღის": "D", "თვის": "M", @@ -568,9 +1044,26 @@ "წამის": "s", "წლის": "Y", "წუთის": "m" + }, + "date_order": "DY", + "months": { + "აგვ.": 8, + "აპრ.": 4, + "დეკ.": 12, + "თებ.": 2, + "იან.": 1, + "ივლ.": 7, + "ივნ.": 6, + "მაი.": 5, + "მარ.": 3, + "ნოე.": 11, + "ოქტ.": 10, + "სექ.": 9 } }, "kk": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "ай": "M", "апта": "W", @@ -579,9 +1072,26 @@ "минут": "m", "сағат": "h", "секунд": "s" + }, + "date_order": "YD", + "months": { + "ақп.": 2, + "жел.": 12, + "мам.": 5, + "мау.": 6, + "нау.": 3, + "сәу.": 4, + "там.": 8, + "шіл.": 7, + "қаз.": 10, + "қар.": 11, + "қаң.": 1, + "қыр.": 9 } }, "km": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "ខែមុន": "M", "ឆ្នាំមុន": "Y", @@ -590,9 +1100,26 @@ "ម៉ោងមុន": "h", "វិនាទីមុន": "s", "សប្ដាហ៍មុន": "W" + }, + "date_order": "DY", + "months": { + "កក្កដា": 7, + "កញ្ញា": 9, + "កុម្ភៈ": 2, + "តុលា": 10, + "ធ្នូ": 12, + "មករា": 1, + "មិថុនា": 6, + "មីនា": 3, + "មេសា": 4, + "វិច្ឆិកា": 11, + "សីហា": 8, + "ឧសភា": 5 } }, "kn": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "ಗಂಟೆ": "h", "ಗಂಟೆಗಳ": "h", @@ -608,9 +1135,26 @@ "ವಾರದ": "W", "ಸೆಕೆಂಡುಗಳ": "s", "ಸೆಕೆಂಡ್": "s" + }, + "date_order": "DY", + "months": { + "ಅಕ್ಟೋ": 10, + "ಆಗ": 8, + "ಏಪ್ರಿ": 4, + "ಜನವರಿ": 1, + "ಜುಲೈ": 7, + "ಜೂನ್": 6, + "ಡಿಸೆಂ": 12, + "ನವೆಂ": 11, + "ಫೆಬ್ರವರಿ": 2, + "ಮಾರ್ಚ್": 3, + "ಮೇ": 5, + "ಸೆಪ್ಟೆಂ": 9 } }, "ko": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "개월": "M", "년": "Y", @@ -619,9 +1163,13 @@ "일": "D", "주": "W", "초": "s" - } + }, + "date_order": "YMD", + "months": {} }, "ky": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "ай": "M", "апта": "W", @@ -630,9 +1178,26 @@ "мүнөт": "m", "саат": "h", "секунд": "s" + }, + "date_order": "YD", + "months": { + "-авг.": 8, + "-апр.": 4, + "-дек.": 12, + "-июл.": 7, + "-июн.": 6, + "-май": 5, + "-мар.": 3, + "-ноя.": 11, + "-окт.": 10, + "-сен.": 9, + "-фев.": 2, + "-янв.": 1 } }, "lo": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "ຊົ່ວໂມງກ່ອນ": "h", "ນາທີກ່ອນ": "m", @@ -641,9 +1206,26 @@ "ວິນາທີກ່ອນ": "s", "ອາທິດກ່ອນ": "W", "ເດືອນກ່ອນ": "M" + }, + "date_order": "DY", + "months": { + "ກ.ຍ.": 9, + "ກ.ພ.": 2, + "ກ.ລ.": 7, + "ຕ.ລ.": 10, + "ທ.ວ.": 12, + "ພ.ຈ.": 11, + "ພ.ພ.": 5, + "ມ.ກ.": 1, + "ມ.ນ.": 3, + "ມ.ສ.": 4, + "ມິ.ຖ.": 6, + "ສ.ຫ.": 8 } }, "lt": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "dienas": "D", "dieną": "D", @@ -665,9 +1247,13 @@ "valandas": "h", "valandą": "h", "valandų": "h" - } + }, + "date_order": "YMD", + "months": {} }, "lv": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "dienas": "D", "dienām": "D", @@ -683,9 +1269,26 @@ "sekundēm": "s", "stundas": "h", "stundām": "h" + }, + "date_order": "YD", + "months": { + "apr.": 4, + "aug.": 8, + "dec.": 12, + "febr.": 2, + "janv.": 1, + "jūl.": 7, + "jūn.": 6, + "maijs": 5, + "marts": 3, + "nov.": 11, + "okt.": 10, + "sept.": 9 } }, "mk": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "година": "Y", "години": "Y", @@ -701,9 +1304,13 @@ "секунди": "s", "час": "h", "часа": "h" - } + }, + "date_order": "DMY", + "months": {} }, "ml": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "ആഴ്ച": "W", "ദിവസം": "D", @@ -712,20 +1319,41 @@ "മിനിറ്റ്": "m", "വർഷം": "Y", "സെക്കൻഡ്": "s" + }, + "date_order": "YD", + "months": { + "ഏപ്രി": 4, + "ഒക്ടോ": 10, + "ഓഗ": 8, + "ജനു": 1, + "ജൂലൈ": 7, + "ജൂൺ": 6, + "ഡിസം": 12, + "നവം": 11, + "ഫെബ്രു": 2, + "മാർ": 3, + "മേയ്": 5, + "സെപ്റ്റം": 9 } }, "mn": { + "equivalent": [], + "by_char": false, "timeago_tokens": { - "хоногийн": "W", "жилийн": "Y", "минутын": "m", "сарын": "M", "секундын": "s", + "хоногийн": "W", "цагийн": "h", "өдрийн": "D" - } + }, + "date_order": "YMD", + "months": {} }, "mr": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "आठवड्यांपूर्वी": "W", "आठवड्यापूर्वी": "W", @@ -741,9 +1369,26 @@ "वर्षापूर्वी": "Y", "सेकंदांपूर्वी": "s", "सेकंदापूर्वी": "s" + }, + "date_order": "DY", + "months": { + "एप्रि,": 4, + "ऑक्टो,": 10, + "ऑग,": 8, + "जाने,": 1, + "जुलै,": 7, + "जून,": 6, + "डिसें,": 12, + "नोव्हें,": 11, + "फेब्रु,": 2, + "मार्च,": 3, + "मे,": 5, + "सप्टें,": 9 } }, "ms": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "bulan": "M", "hari": "D", @@ -752,9 +1397,26 @@ "minit": "m", "saat": "s", "tahun": "Y" + }, + "date_order": "DY", + "months": { + "Apr": 4, + "Dis": 12, + "Feb": 2, + "Jan": 1, + "Jul": 7, + "Jun": 6, + "Mac": 3, + "Mei": 5, + "Nov": 11, + "Ogo": 8, + "Okt": 10, + "Sep": 9 } }, "my": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "စက္ကန့်": "s", "နာရီ": "h", @@ -763,9 +1425,26 @@ "မိနစ်": "m", "ရက်": "D", "လ": "M" + }, + "date_order": "YD", + "months": { + "စက်": 9, + "ဇန်": 1, + "ဇူ": 7, + "ဇွန်": 6, + "ဒီ": 12, + "နို": 11, + "ဖေ": 2, + "မတ်": 3, + "မေ": 5, + "အောက်": 10, + "ဧ": 4, + "ဩ": 8 } }, "ne": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "घण्टा": "h", "दिन": "D", @@ -774,9 +1453,26 @@ "वर्ष": "Y", "सेकेन्ड": "s", "हप्ता": "W" + }, + "date_order": "YD", + "months": { + "अक्टोबर": 10, + "अगस्ट": 8, + "अप्रिल": 4, + "जनवरी": 1, + "जुन": 6, + "जुलाई": 7, + "डिसेम्बर": 12, + "नोभेम्बर": 11, + "फेब्रुअरी": 2, + "मार्च": 3, + "मे": 5, + "सेप्टेम्बर": 9 } }, "nl": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "dag": "D", "dagen": "D", @@ -790,9 +1486,26 @@ "uur": "h", "week": "W", "weken": "W" + }, + "date_order": "DY", + "months": { + "apr.": 4, + "aug.": 8, + "dec.": 12, + "feb.": 2, + "jan.": 1, + "jul.": 7, + "jun.": 6, + "mei": 5, + "mrt.": 3, + "nov.": 11, + "okt.": 10, + "sep.": 9 } }, "no": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "dag": "D", "dager": "D", @@ -808,9 +1521,26 @@ "uke": "W", "uker": "W", "år": "Y" + }, + "date_order": "DY", + "months": { + "apr.": 4, + "aug.": 8, + "des.": 12, + "feb.": 2, + "jan.": 1, + "jul.": 7, + "jun.": 6, + "mai": 5, + "mar.": 3, + "nov.": 11, + "okt.": 10, + "sep.": 9 } }, "or": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "ଘଣ୍ଟା": "h", "ଦିନ": "D", @@ -819,9 +1549,26 @@ "ମିନିଟ୍": "m", "ସପ୍ତାହ": "W", "ସେକେଣ୍ଡ": "s" + }, + "date_order": "DY", + "months": { + "ଅକ୍ଟୋବର": 10, + "ଅଗଷ୍ଟ": 8, + "ଅପ୍ରେଲ": 4, + "ଜାନୁଆରୀ": 1, + "ଜୁନ": 6, + "ଜୁଲାଇ": 7, + "ଡିସେମ୍ବର": 12, + "ନଭେମ୍ବର": 11, + "ଫେବୃଆରୀ": 2, + "ମଇ": 5, + "ମାର୍ଚ୍ଚ": 3, + "ସେପ୍ଟେମ୍ବର": 9 } }, "pa": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "ਘੰਟਾ": "h", "ਘੰਟੇ": "h", @@ -833,9 +1580,26 @@ "ਸਾਲ": "Y", "ਹਫ਼ਤਾ": "W", "ਹਫ਼ਤੇ": "W" + }, + "date_order": "DY", + "months": { + "ਅਕਤੂ": 10, + "ਅਗ": 8, + "ਅਪ੍ਰੈ": 4, + "ਜਨ": 1, + "ਜੁਲਾ": 7, + "ਜੂਨ": 6, + "ਦਸੰ": 12, + "ਨਵੰ": 11, + "ਫ਼ਰ": 2, + "ਮਈ": 5, + "ਮਾਰਚ": 3, + "ਸਤੰ": 9 } }, "pl": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "dni": "D", "dzień": "D", @@ -856,10 +1620,28 @@ "sekundę": "s", "tydzień": "W", "tygodnie": "W" + }, + "date_order": "DY", + "months": { + "cze": 6, + "gru": 12, + "kwi": 4, + "lip": 7, + "lis": 11, + "lut": 2, + "maj": 5, + "mar": 3, + "paź": 10, + "sie": 8, + "sty": 1, + "wrz": 9 } }, "pt": { - "equivalent": ["pt-PT"], + "equivalent": [ + "pt-PT" + ], + "by_char": false, "timeago_tokens": { "ano": "Y", "anos": "Y", @@ -875,9 +1657,26 @@ "segundos": "s", "semana": "W", "semanas": "W" + }, + "date_order": "DY", + "months": { + "abr.": 4, + "ago.": 8, + "dez.": 12, + "fev.": 2, + "jan.": 1, + "jul.": 7, + "jun.": 6, + "mai.": 5, + "mar.": 3, + "nov.": 11, + "out.": 10, + "set.": 9 } }, "ro": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "an": "Y", "ani": "Y", @@ -893,9 +1692,26 @@ "săptămână": "W", "zi": "D", "zile": "D" + }, + "date_order": "DY", + "months": { + "apr.": 4, + "aug.": 8, + "dec.": 12, + "feb.": 2, + "ian.": 1, + "iul.": 7, + "iun.": 6, + "mai": 5, + "mar.": 3, + "nov.": 11, + "oct.": 10, + "sept.": 9 } }, "ru": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "год": "Y", "года": "Y", @@ -917,9 +1733,26 @@ "час": "h", "часа": "h", "часов": "h" + }, + "date_order": "DY", + "months": { + "авг.": 8, + "апр.": 4, + "дек.": 12, + "июл.": 7, + "июн.": 6, + "мар.": 3, + "мая": 5, + "нояб.": 11, + "окт.": 10, + "сент.": 9, + "февр.": 2, + "янв.": 1 } }, "si": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "තත්පර": "s", "දින": "D", @@ -928,9 +1761,26 @@ "මිනිත්තු": "m", "වසර": "Y", "සති": "W" + }, + "date_order": "YD", + "months": { + "අගෝ": 8, + "අප්‍රේල්": 4, + "ඔක්": 10, + "ජන": 1, + "ජූනි": 6, + "ජූලි": 7, + "දෙසැ": 12, + "නොවැ": 11, + "පෙබ": 2, + "මාර්තු": 3, + "මැයි": 5, + "සැප්": 9 } }, "sk": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "dňami": "D", "dňom": "D", @@ -946,9 +1796,13 @@ "sekundou": "s", "týždňami": "W", "týždňom": "W" - } + }, + "date_order": "DMY", + "months": {} }, "sl": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "dnem": "D", "dnevi": "D", @@ -972,9 +1826,26 @@ "urama": "h", "urami": "h", "uro": "h" + }, + "date_order": "DY", + "months": { + "apr.": 4, + "avg.": 8, + "dec.": 12, + "feb.": 2, + "jan.": 1, + "jul.": 7, + "jun.": 6, + "maj": 5, + "mar.": 3, + "nov.": 11, + "okt.": 10, + "sep.": 9 } }, "sq": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "ditë": "D", "javë": "W", @@ -986,9 +1857,26 @@ "sekondë": "s", "vit": "Y", "vjet": "Y" + }, + "date_order": "DY", + "months": { + "dhj": 12, + "gush": 8, + "jan": 1, + "korr": 7, + "maj": 5, + "mar": 3, + "nën": 11, + "pri": 4, + "qer": 6, + "shk": 2, + "sht": 9, + "tet": 10 } }, "sr": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "година": "Y", "године": "Y", @@ -1006,9 +1894,13 @@ "сати": "h", "секунде": "s", "секунди": "s" - } + }, + "date_order": "DMY", + "months": {} }, "sr-Latn": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "dan": "D", "dana": "D", @@ -1027,9 +1919,13 @@ "sati": "h", "sekunde": "s", "sekundi": "s" - } + }, + "date_order": "DMY", + "months": {} }, "sv": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "dag": "D", "dagar": "D", @@ -1044,9 +1940,26 @@ "vecka": "W", "veckor": "W", "år": "Y" + }, + "date_order": "DY", + "months": { + "apr.": 4, + "aug.": 8, + "dec.": 12, + "feb.": 2, + "jan.": 1, + "juli": 7, + "juni": 6, + "maj": 5, + "mars": 3, + "nov.": 11, + "okt.": 10, + "sep.": 9 } }, "sw": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "dakika": "m", "miaka": "Y", @@ -1057,9 +1970,26 @@ "sekunde": "s", "siku": "D", "wiki": "W" + }, + "date_order": "DY", + "months": { + "Ago": 8, + "Apr": 4, + "Des": 12, + "Feb": 2, + "Jan": 1, + "Jul": 7, + "Jun": 6, + "Mac": 3, + "Mei": 5, + "Nov": 11, + "Okt": 10, + "Sep": 9 } }, "ta": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "ஆண்டிற்கு": "Y", "ஆண்டுகளுக்கு": "Y", @@ -1074,9 +2004,26 @@ "வாரம்": "W", "விநாடிகளுக்கு": "s", "விநாடிக்கு": "s" + }, + "date_order": "DY", + "months": { + "அக்.,": 10, + "ஆக.,": 8, + "ஏப்.,": 4, + "செப்.,": 9, + "ஜன.,": 1, + "ஜூன்,": 6, + "ஜூலை,": 7, + "டிச.,": 12, + "நவ.,": 11, + "பிப்.,": 2, + "மார்.,": 3, + "மே,": 5 } }, "te": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "గంట": "h", "గంటల": "h", @@ -1092,9 +2039,26 @@ "సంవత్సరాల": "Y", "సెకను": "s", "సెకన్ల": "s" + }, + "date_order": "DY", + "months": { + "అక్టో,": 10, + "ఆగ,": 8, + "ఏప్రి,": 4, + "జన,": 1, + "జులై,": 7, + "జూన్,": 6, + "డిసెం,": 12, + "నవం,": 11, + "ఫిబ్ర,": 2, + "మార్చి,": 3, + "మే,": 5, + "సెప్టెం,": 9 } }, "th": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "ชั่วโมงที่ผ่านมา": "h", "นาทีที่ผ่านมา": "m", @@ -1103,9 +2067,26 @@ "วินาทีที่ผ่านมา": "s", "สัปดาห์ที่ผ่านมา": "W", "เดือนที่ผ่านมา": "M" + }, + "date_order": "DY", + "months": { + "ก.ค.": 7, + "ก.พ.": 2, + "ก.ย.": 9, + "ต.ค.": 10, + "ธ.ค.": 12, + "พ.ค.": 5, + "พ.ย.": 11, + "ม.ค.": 1, + "มิ.ย.": 6, + "มี.ค.": 3, + "ส.ค.": 8, + "เม.ย.": 4 } }, "tr": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "ay": "M", "dakika": "m", @@ -1114,9 +2095,26 @@ "saat": "h", "saniye": "s", "yıl": "Y" + }, + "date_order": "DY", + "months": { + "Ara": 12, + "Ağu": 8, + "Eki": 10, + "Eyl": 9, + "Haz": 6, + "Kas": 11, + "Mar": 3, + "May": 5, + "Nis": 4, + "Oca": 1, + "Tem": 7, + "Şub": 2 } }, "uk": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "годин": "h", "години": "h", @@ -1138,9 +2136,26 @@ "хвилин": "m", "хвилини": "m", "хвилину": "m" + }, + "date_order": "DY", + "months": { + "бер.": 3, + "вер.": 9, + "груд.": 12, + "жовт.": 10, + "квіт.": 4, + "лип.": 7, + "лист.": 11, + "лют.": 2, + "серп.": 8, + "січ.": 1, + "трав.": 5, + "черв.": 6 } }, "ur": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "دن": "D", "دنوں": "D", @@ -1155,9 +2170,26 @@ "گھنٹے": "h", "ہفتہ": "W", "ہفتے": "W" + }, + "date_order": "DY", + "months": { + "اپریل،": 4, + "اکتوبر،": 10, + "اگست،": 8, + "جنوری،": 1, + "جولائی،": 7, + "جون،": 6, + "دسمبر،": 12, + "ستمبر،": 9, + "فروری،": 2, + "مئی،": 5, + "مارچ،": 3, + "نومبر،": 11 } }, "uz": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "daqiqa": "m", "hafta": "W", @@ -1166,9 +2198,26 @@ "soat": "h", "soniya": "s", "yil": "Y" + }, + "date_order": "DY", + "months": { + "-apr,": 4, + "-avg,": 8, + "-dek,": 12, + "-fev,": 2, + "-iyl,": 7, + "-iyn,": 6, + "-mar,": 3, + "-may,": 5, + "-noy,": 11, + "-okt,": 10, + "-sen,": 9, + "-yan,": 1 } }, "vi": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "giây": "s", "giờ": "h", @@ -1178,45 +2227,58 @@ "tháng": "M", "tiếng": "h", "tuần": "W" - } + }, + "date_order": "DMY", + "months": {} }, "zh-CN": { + "equivalent": [], "by_char": true, "timeago_tokens": { - "月": "M", "分": "m", "周": "W", "天": "D", "小": "h", "年": "Y", + "月": "M", "秒": "s" - } + }, + "date_order": "YMD", + "months": {} }, "zh-HK": { + "equivalent": [], "by_char": true, "timeago_tokens": { - "月": "M", "分": "m", "小": "h", "年": "Y", "日": "D", + "月": "M", "期": "W", "秒": "s" - } + }, + "date_order": "YMD", + "months": {} }, "zh-TW": { + "equivalent": [], "by_char": true, "timeago_tokens": { - "月": "M", "分": "m", "天": "D", "小": "h", "年": "Y", + "月": "M", "秒": "s", "週": "W" - } + }, + "date_order": "YMD", + "months": {} }, "zu": { + "equivalent": [], + "by_char": false, "timeago_tokens": { "amaminithi": "m", "amasekhondi": "s", @@ -1232,6 +2294,21 @@ "izinyanga": "M", "osukwini": "D", "unyaka": "Y" + }, + "date_order": "DY", + "months": { + "ka-Aga": 8, + "ka-Dis": 12, + "ka-Eph": 4, + "ka-Feb": 2, + "ka-Jan": 1, + "ka-Jul": 7, + "ka-Jun": 6, + "ka-Mas": 3, + "ka-Mey": 5, + "ka-Nov": 11, + "ka-Okt": 10, + "ka-Sep": 9 } } -} +} \ No newline at end of file diff --git a/testfiles/date/playlist_samples.json b/testfiles/date/playlist_samples.json index cb18194..5f25881 100644 --- a/testfiles/date/playlist_samples.json +++ b/testfiles/date/playlist_samples.json @@ -3,7 +3,7 @@ "Today": "Vandag opgedateer", "Yesterday": "Gister opgedateer", "Ago": "3 dae gelede opgedateer", - "Jan": "Laas opgedateer op 01 Jan. 2016", + "Jan": "Laas opgedateer op 03 Jan. 2020", "Feb": "Laas opgedateer op 07 Feb. 2016", "Mar": "Laas opgedateer op 09 Mrt. 2015", "Apr": "Laas opgedateer op 02 Apr. 2017", @@ -20,7 +20,7 @@ "Today": "ዛሬ ዘምኗል", "Yesterday": "ትላንት ዘምኗል", "Ago": "ከ3 ቀናት በፊት ዘምኗል", - "Jan": "ለመጨረሻ ጊዜ የዘመነው 1 ጃንዩ 2016", + "Jan": "ለመጨረሻ ጊዜ የዘመነው 3 ጃንዩ 2020", "Feb": "ለመጨረሻ ጊዜ የዘመነው 7 ፌብሩ 2016", "Mar": "ለመጨረሻ ጊዜ የዘመነው 9 ማርች 2015", "Apr": "ለመጨረሻ ጊዜ የዘመነው 2 ኤፕሪ 2017", @@ -37,7 +37,7 @@ "Today": "تم التحديث اليوم", "Yesterday": "تم التحديث بالأمس", "Ago": "تم التحديث منذ 3 أيام", - "Jan": "تم إجراء التعديل الأخير في 01‏/01‏/2016", + "Jan": "تم إجراء التعديل الأخير في 03‏/01‏/2020", "Feb": "تم إجراء التعديل الأخير في 07‏/02‏/2016", "Mar": "تم إجراء التعديل الأخير في 09‏/03‏/2015", "Apr": "تم إجراء التعديل الأخير في 02‏/04‏/2017", @@ -54,7 +54,7 @@ "Today": "আজি আপডে’ট কৰা হৈছে", "Yesterday": "কালি আপডে’ট কৰা হৈছে", "Ago": "3 দিন আগতে আপডে’ট কৰা হৈছে", - "Jan": "অন্তিমবাৰ 01-01-2016ত আপডে’ট কৰা হৈছিল", + "Jan": "অন্তিমবাৰ 03-01-2020ত আপডে’ট কৰা হৈছিল", "Feb": "অন্তিমবাৰ 07-02-2016ত আপডে’ট কৰা হৈছিল", "Mar": "অন্তিমবাৰ 09-03-2015ত আপডে’ট কৰা হৈছিল", "Apr": "অন্তিমবাৰ 02-04-2017ত আপডে’ট কৰা হৈছিল", @@ -71,7 +71,7 @@ "Today": "Bugün güncəlləşdirildi", "Yesterday": "Dünən güncəlləşdirildi", "Ago": "3 gün əvvəl güncəlləşdirildi", - "Jan": "Son güncəllənmə: 1 yan 2016", + "Jan": "Son güncəllənmə: 3 yan 2020", "Feb": "Son güncəllənmə: 7 fev 2016", "Mar": "Son güncəllənmə: 9 mar 2015", "Apr": "Son güncəllənmə: 2 apr 2017", @@ -88,7 +88,7 @@ "Today": "Абноўлена сёння", "Yesterday": "Абноўлена ўчора", "Ago": "Абноўлена 3 дні таму", - "Jan": "Дата апошняга абнаўлення: 1 сту 2016 г.", + "Jan": "Дата апошняга абнаўлення: 3 сту 2020 г.", "Feb": "Дата апошняга абнаўлення: 7 лют 2016 г.", "Mar": "Дата апошняга абнаўлення: 9 сак 2015 г.", "Apr": "Дата апошняга абнаўлення: 2 кра 2017 г.", @@ -105,7 +105,7 @@ "Today": "Актуализирани днес", "Yesterday": "Актуализиран вчера", "Ago": "Актуализирани преди 3 дни", - "Jan": "Последно актуализиран на 1.01.2016 г.", + "Jan": "Последно актуализиран на 3.01.2020 г.", "Feb": "Последно актуализиран на 7.02.2016 г.", "Mar": "Последно актуализиран на 9.03.2015 г.", "Apr": "Последно актуализиран на 2.04.2017 г.", @@ -122,7 +122,7 @@ "Today": "আজ আপডেট হয়েছে", "Yesterday": "গতকাল আপডেট হয়েছে", "Ago": "3 দিন আগে আপডেট হয়েছে", - "Jan": "1 জানু, 2016 এ সর্বশেষ আপডেট হয়েছে", + "Jan": "3 জানু, 2020 এ সর্বশেষ আপডেট হয়েছে", "Feb": "7 ফেব, 2016 এ সর্বশেষ আপডেট হয়েছে", "Mar": "9 মার্চ, 2015 এ সর্বশেষ আপডেট হয়েছে", "Apr": "2 এপ্রিল, 2017 এ সর্বশেষ আপডেট হয়েছে", @@ -139,7 +139,7 @@ "Today": "Ažurirano danas", "Yesterday": "Ažurirano jučer", "Ago": "Ažurirano prije 3 dana", - "Jan": "Zadnje ažuriranje 1. jan 2016.", + "Jan": "Zadnje ažuriranje 3. jan 2020.", "Feb": "Zadnje ažuriranje 7. feb 2016.", "Mar": "Zadnje ažuriranje 9. mar 2015.", "Apr": "Zadnje ažuriranje 2. apr 2017.", @@ -156,7 +156,7 @@ "Today": "Actualitzada avui", "Yesterday": "Actualitzada ahir", "Ago": "Actualitzada fa 3 dies", - "Jan": "Darrera actualització: 1 de gen. 2016", + "Jan": "Darrera actualització: 3 de gen. 2020", "Feb": "Darrera actualització: 7 de febr. 2016", "Mar": "Darrera actualització: 9 de març 2015", "Apr": "Darrera actualització: 2 d’abr. 2017", @@ -173,7 +173,7 @@ "Today": "Aktualizováno dnes", "Yesterday": "Aktualizováno včera", "Ago": "Aktualizováno před 3 dny", - "Jan": "Poslední aktualizace: 1. 1. 2016", + "Jan": "Poslední aktualizace: 3. 1. 2020", "Feb": "Poslední aktualizace: 7. 2. 2016", "Mar": "Poslední aktualizace: 9. 3. 2015", "Apr": "Poslední aktualizace: 2. 4. 2017", @@ -190,7 +190,7 @@ "Today": "Opdateret i dag", "Yesterday": "Opdateret i går", "Ago": "Opdateret for 3 dage siden", - "Jan": "Sidst opdateret d. 1. jan. 2016", + "Jan": "Sidst opdateret d. 3. jan. 2020", "Feb": "Sidst opdateret d. 7. feb. 2016", "Mar": "Sidst opdateret d. 9. mar. 2015", "Apr": "Sidst opdateret d. 2. apr. 2017", @@ -207,7 +207,7 @@ "Today": "Heute aktualisiert", "Yesterday": "Gestern aktualisiert", "Ago": "Vor 3 Tagen aktualisiert", - "Jan": "Zuletzt am 01.01.2016 aktualisiert", + "Jan": "Zuletzt am 03.01.2020 aktualisiert", "Feb": "Zuletzt am 07.02.2016 aktualisiert", "Mar": "Zuletzt am 09.03.2015 aktualisiert", "Apr": "Zuletzt am 02.04.2017 aktualisiert", @@ -224,7 +224,7 @@ "Today": "Ενημερώθηκε σήμερα", "Yesterday": "Ενημερώθηκε χτες", "Ago": "Ενημερώθηκε πριν 3 ημέρες", - "Jan": "Τελευταία ενημέρωση στις 1 Ιαν 2016", + "Jan": "Τελευταία ενημέρωση στις 3 Ιαν 2020", "Feb": "Τελευταία ενημέρωση στις 7 Φεβ 2016", "Mar": "Τελευταία ενημέρωση στις 9 Μαρ 2015", "Apr": "Τελευταία ενημέρωση στις 2 Απρ 2017", @@ -241,7 +241,7 @@ "Today": "Updated today", "Yesterday": "Updated yesterday", "Ago": "Updated 3 days ago", - "Jan": "Last updated on Jan 1, 2016", + "Jan": "Last updated on Jan 3, 2020", "Feb": "Last updated on Feb 7, 2016", "Mar": "Last updated on Mar 9, 2015", "Apr": "Last updated on Apr 2, 2017", @@ -258,7 +258,7 @@ "Today": "Updated today", "Yesterday": "Updated yesterday", "Ago": "Updated 3 days ago", - "Jan": "Last updated on 1 Jan 2016", + "Jan": "Last updated on 3 Jan 2020", "Feb": "Last updated on 7 Feb 2016", "Mar": "Last updated on 9 Mar 2015", "Apr": "Last updated on 2 Apr 2017", @@ -275,7 +275,7 @@ "Today": "Updated today", "Yesterday": "Updated yesterday", "Ago": "Updated 3 days ago", - "Jan": "Last updated on 01-Jan-2016", + "Jan": "Last updated on 03-Jan-2020", "Feb": "Last updated on 07-Feb-2016", "Mar": "Last updated on 09-Mar-2015", "Apr": "Last updated on 02-Apr-2017", @@ -292,7 +292,7 @@ "Today": "Actualizado hoy", "Yesterday": "Actualizado ayer", "Ago": "Actualizado hace 3 días", - "Jan": "Actualizado por última vez el 1 ene 2016", + "Jan": "Actualizado por última vez el 3 ene 2020", "Feb": "Actualizado por última vez el 7 feb 2016", "Mar": "Actualizado por última vez el 9 mar 2015", "Apr": "Actualizado por última vez el 2 abr 2017", @@ -309,7 +309,7 @@ "Today": "Actualizada hoy", "Yesterday": "Actualizada ayer", "Ago": "Actualizada hace 3 días", - "Jan": "Se actualizó por última vez el 1 ene 2016", + "Jan": "Se actualizó por última vez el 3 ene 2020", "Feb": "Se actualizó por última vez el 7 feb 2016", "Mar": "Se actualizó por última vez el 9 mar 2015", "Apr": "Se actualizó por última vez el 2 abr 2017", @@ -326,7 +326,7 @@ "Today": "Actualizada hoy", "Yesterday": "Actualizada ayer", "Ago": "Actualizada hace 3 días", - "Jan": "Se actualizó por última vez el 1 ene 2016", + "Jan": "Se actualizó por última vez el 3 ene 2020", "Feb": "Se actualizó por última vez el 7 feb 2016", "Mar": "Se actualizó por última vez el 9 mar 2015", "Apr": "Se actualizó por última vez el 2 abr 2017", @@ -343,7 +343,7 @@ "Today": "Täna värskendatud", "Yesterday": "Eile värskendatud", "Ago": "Värskendatud 3 päeva tagasi", - "Jan": "Viimati värskendatud 1. jaan 2016", + "Jan": "Viimati värskendatud 3. jaan 2020", "Feb": "Viimati värskendatud 7. veebr 2016", "Mar": "Viimati värskendatud 9. märts 2015", "Apr": "Viimati värskendatud 2. apr 2017", @@ -360,7 +360,7 @@ "Today": "Gaur eguneratua", "Yesterday": "Atzo eguneratua", "Ago": "Duela 3 egun eguneratua", - "Jan": "Azken eguneratze-data: 2016(e)ko urt. 1(a)", + "Jan": "Azken eguneratze-data: 2020(e)ko urt. 3(a)", "Feb": "Azken eguneratze-data: 2016(e)ko ots. 7(a)", "Mar": "Azken eguneratze-data: 2015(e)ko mar. 9(a)", "Apr": "Azken eguneratze-data: 2017(e)ko api. 2(a)", @@ -377,7 +377,7 @@ "Today": "امروز به‌روزرسانی شده", "Yesterday": "دیروز به‌روزرسانی شده", "Ago": "3 روز پیش به‌روزرسانی شده", - "Jan": "آخرین تاریخ به‌روزرسانی 1 ژانویه 2016", + "Jan": "آخرین تاریخ به‌روزرسانی 3 ژانویه 2020", "Feb": "آخرین تاریخ به‌روزرسانی 7 فوریه 2016", "Mar": "آخرین تاریخ به‌روزرسانی 9 مارس 2015", "Apr": "آخرین تاریخ به‌روزرسانی 2 آوریل 2017", @@ -394,7 +394,7 @@ "Today": "Päivitetty tänään", "Yesterday": "Päivitetty eilen", "Ago": "Päivitetty 3 päivää sitten", - "Jan": "Viimeksi päivitetty 1.1.2016", + "Jan": "Viimeksi päivitetty 3.1.2020", "Feb": "Viimeksi päivitetty 7.2.2016", "Mar": "Viimeksi päivitetty 9.3.2015", "Apr": "Viimeksi päivitetty 2.4.2017", @@ -411,7 +411,7 @@ "Today": "Na-update ngayong araw", "Yesterday": "Na-update kahapon", "Ago": "Na-update 3 araw ang nakalipas", - "Jan": "Huling na-update noong Ene 1, 2016", + "Jan": "Huling na-update noong Ene 3, 2020", "Feb": "Huling na-update noong Peb 7, 2016", "Mar": "Huling na-update noong Mar 9, 2015", "Apr": "Huling na-update noong Abr 2, 2017", @@ -428,7 +428,7 @@ "Today": "Mise à jour aujourd'hui", "Yesterday": "Mise à jour hier", "Ago": "Mise à jour il y a 3 jours", - "Jan": "Dernière modification le 1 janv. 2016", + "Jan": "Dernière modification le 3 janv. 2020", "Feb": "Dernière modification le 7 févr. 2016", "Mar": "Dernière modification le 9 mars 2015", "Apr": "Dernière modification le 2 avr. 2017", @@ -445,7 +445,7 @@ "Today": "Mise à jour aujourd'hui", "Yesterday": "Mise à jour hier", "Ago": "Mise à jour il y a 3 jours", - "Jan": "Dernière mise à jour le 1 janv. 2016", + "Jan": "Dernière mise à jour le 3 janv. 2020", "Feb": "Dernière mise à jour le 7 févr. 2016", "Mar": "Dernière mise à jour le 9 mars 2015", "Apr": "Dernière mise à jour le 2 avr. 2017", @@ -462,7 +462,7 @@ "Today": "Actualizáronse hoxe", "Yesterday": "Actualizáronse onte", "Ago": "Actualizáronse hai 3 días", - "Jan": "Última actualización: 1 de xan. de 2016", + "Jan": "Última actualización: 3 de xan. de 2020", "Feb": "Última actualización: 7 de feb. de 2016", "Mar": "Última actualización: 9 de mar. de 2015", "Apr": "Última actualización: 2 de abr. de 2017", @@ -479,7 +479,7 @@ "Today": "આજે અપડેટ થયેલ", "Yesterday": "ગઈ કાલે અપડેટ થયેલ", "Ago": "3 દિવસ પહેલાં અપડેટ થયેલ", - "Jan": "1 જાન્યુ, 2016 ના રોજ છેલ્લે અપડેટ કરાયેલ", + "Jan": "3 જાન્યુ, 2020 ના રોજ છેલ્લે અપડેટ કરાયેલ", "Feb": "7 ફેબ્રુ, 2016 ના રોજ છેલ્લે અપડેટ કરાયેલ", "Mar": "9 માર્ચ, 2015 ના રોજ છેલ્લે અપડેટ કરાયેલ", "Apr": "2 એપ્રિલ, 2017 ના રોજ છેલ્લે અપડેટ કરાયેલ", @@ -496,7 +496,7 @@ "Today": "आज अपडेट किया गया", "Yesterday": "कल अपडेट किया गया", "Ago": "3 दिन पहले अपडेट किया गया", - "Jan": "पिछली बार 1 जन॰ 2016 को अपडेट किया गया", + "Jan": "पिछली बार 3 जन॰ 2020 को अपडेट किया गया", "Feb": "पिछली बार 7 फ़र॰ 2016 को अपडेट किया गया", "Mar": "पिछली बार 9 मार्च 2015 को अपडेट किया गया", "Apr": "पिछली बार 2 अप्रैल 2017 को अपडेट किया गया", @@ -513,7 +513,7 @@ "Today": "Ažurirano danas", "Yesterday": "Ažurirano jučer", "Ago": "Ažurirano prije 3 dana", - "Jan": "Posljednje ažuriranje: 1. sij 2016.", + "Jan": "Posljednje ažuriranje: 3. sij 2020.", "Feb": "Posljednje ažuriranje: 7. velj 2016.", "Mar": "Posljednje ažuriranje: 9. ožu 2015.", "Apr": "Posljednje ažuriranje: 2. tra 2017.", @@ -530,7 +530,7 @@ "Today": "Ma frissítve", "Yesterday": "Tegnap frissítve", "Ago": "3 napja frissítve", - "Jan": "Utolsó frissítés: 2016. jan. 1.", + "Jan": "Utolsó frissítés: 2020. jan. 3.", "Feb": "Utolsó frissítés: 2016. febr. 7.", "Mar": "Utolsó frissítés: 2015. márc. 9.", "Apr": "Utolsó frissítés: 2017. ápr. 2.", @@ -547,7 +547,7 @@ "Today": "Թարմացվել է այսօր", "Yesterday": "Թարմացվել է երեկ", "Ago": "Թարմացվել է 3 օր առաջ", - "Jan": "Վերջին թարմացումը՝ 01 հնվ, 2016 թ.", + "Jan": "Վերջին թարմացումը՝ 03 հնվ, 2020 թ.", "Feb": "Վերջին թարմացումը՝ 07 փտվ, 2016 թ.", "Mar": "Վերջին թարմացումը՝ 09 մրտ, 2015 թ.", "Apr": "Վերջին թարմացումը՝ 02 ապր, 2017 թ.", @@ -564,7 +564,7 @@ "Today": "Diperbarui hari ini", "Yesterday": "Diperbarui kemarin", "Ago": "Diperbarui 3 hari lalu", - "Jan": "Terakhir diperbarui pada 1 Jan 2016", + "Jan": "Terakhir diperbarui pada 3 Jan 2020", "Feb": "Terakhir diperbarui pada 7 Feb 2016", "Mar": "Terakhir diperbarui pada 9 Mar 2015", "Apr": "Terakhir diperbarui pada 2 Apr 2017", @@ -581,7 +581,7 @@ "Today": "Uppfært í dag", "Yesterday": "Uppfært í gær", "Ago": "Uppfært fyrir 3 dögum", - "Jan": "Síðast uppfært þann 1. jan. 2016", + "Jan": "Síðast uppfært þann 3. jan. 2020", "Feb": "Síðast uppfært þann 7. feb. 2016", "Mar": "Síðast uppfært þann 9. mar. 2015", "Apr": "Síðast uppfært þann 2. apr. 2017", @@ -598,7 +598,7 @@ "Today": "Aggiornata oggi", "Yesterday": "Aggiornata ieri", "Ago": "Aggiornata 3 giorni fa", - "Jan": "Ultimo aggiornamento in data 1 gen 2016", + "Jan": "Ultimo aggiornamento in data 3 gen 2020", "Feb": "Ultimo aggiornamento in data 7 feb 2016", "Mar": "Ultimo aggiornamento in data 9 mar 2015", "Apr": "Ultimo aggiornamento in data 2 apr 2017", @@ -615,7 +615,7 @@ "Today": "עודכן היום", "Yesterday": "עודכן אתמול", "Ago": "עודכן לפני 3 ימים", - "Jan": "עודכן לאחרונה ב-1 בינו׳ 2016", + "Jan": "עודכן לאחרונה ב-3 בינו׳ 2020", "Feb": "עודכן לאחרונה ב-7 בפבר׳ 2016", "Mar": "עודכן לאחרונה ב-9 במרץ 2015", "Apr": "עודכן לאחרונה ב-2 באפר׳ 2017", @@ -632,7 +632,7 @@ "Today": "本日更新", "Yesterday": "昨日更新", "Ago": "3 日前に更新", - "Jan": "最終更新日: 2016/01/01", + "Jan": "最終更新日: 2020/01/03", "Feb": "最終更新日: 2016/02/07", "Mar": "最終更新日: 2015/03/09", "Apr": "最終更新日: 2017/04/02", @@ -649,7 +649,7 @@ "Today": "განახლდა დღეს", "Yesterday": "განახლდა გუშინ", "Ago": "განახლდა 3 დღის წინ", - "Jan": "ბოლოს განახლდა 1 იან. 2016-ში", + "Jan": "ბოლოს განახლდა 3 იან. 2020-ში", "Feb": "ბოლოს განახლდა 7 თებ. 2016-ში", "Mar": "ბოლოს განახლდა 9 მარ. 2015-ში", "Apr": "ბოლოს განახლდა 2 აპრ. 2017-ში", @@ -666,7 +666,7 @@ "Today": "Бүгін жаңартылған", "Yesterday": "Кеше жаңартылған", "Ago": "3 күн бұрын жаңартылған", - "Jan": "Соңғы рет 2016 ж. 01 қаң. күні жаңартылды", + "Jan": "Соңғы рет 2020 ж. 03 қаң. күні жаңартылды", "Feb": "Соңғы рет 2016 ж. 07 ақп. күні жаңартылды", "Mar": "Соңғы рет 2015 ж. 09 нау. күні жаңартылды", "Apr": "Соңғы рет 2017 ж. 02 сәу. күні жаңартылды", @@ -683,7 +683,7 @@ "Today": "បាន​ធ្វើ​បច្ចុប្បន្នភាព​ថ្ងៃ​នេះ", "Yesterday": "បាន​ធ្វើ​បច្ចុប្បន្នភាព​ម្សិលមិញ", "Ago": "បាន​ធ្វើ​បច្ចុប្បន្នភាព 3 ថ្ងៃ​មុន", - "Jan": "បាន​ធ្វើ​បច្ចុប្បន្នភាព​ចុង​ក្រោយ​នៅ 1 មករា 2016", + "Jan": "បាន​ធ្វើ​បច្ចុប្បន្នភាព​ចុង​ក្រោយ​នៅ 3 មករា 2020", "Feb": "បាន​ធ្វើ​បច្ចុប្បន្នភាព​ចុង​ក្រោយ​នៅ 7 កុម្ភៈ 2016", "Mar": "បាន​ធ្វើ​បច្ចុប្បន្នភាព​ចុង​ក្រោយ​នៅ 9 មីនា 2015", "Apr": "បាន​ធ្វើ​បច្ចុប្បន្នភាព​ចុង​ក្រោយ​នៅ 2 មេសា 2017", @@ -700,7 +700,7 @@ "Today": "ಇಂದು ಅಪ್‌ಡೇಟ್‌ ಮಾಡಲಾಗಿದೆ", "Yesterday": "ನಿನ್ನೆ ಅಪ್‌ಡೇಟ್‌ ಮಾಡಲಾಗಿದೆ", "Ago": "3 ದಿನಗಳ ಹಿಂದೆ ಅಪ್‌ಡೇಟ್‌ ಮಾಡಲಾಗಿದೆ", - "Jan": "ಕೊನೆಯದಾಗಿ ಅಪ್‌ಡೇಟ್ ಮಾಡಿದ್ದು ಜನವರಿ 1, 2016", + "Jan": "ಕೊನೆಯದಾಗಿ ಅಪ್‌ಡೇಟ್ ಮಾಡಿದ್ದು ಜನವರಿ 3, 2020", "Feb": "ಕೊನೆಯದಾಗಿ ಅಪ್‌ಡೇಟ್ ಮಾಡಿದ್ದು ಫೆಬ್ರವರಿ 7, 2016", "Mar": "ಕೊನೆಯದಾಗಿ ಅಪ್‌ಡೇಟ್ ಮಾಡಿದ್ದು ಮಾರ್ಚ್ 9, 2015", "Apr": "ಕೊನೆಯದಾಗಿ ಅಪ್‌ಡೇಟ್ ಮಾಡಿದ್ದು ಏಪ್ರಿ 2, 2017", @@ -717,7 +717,7 @@ "Today": "업데이트: 오늘", "Yesterday": "업데이트: 1일 전", "Ago": "업데이트: 3일 전", - "Jan": "최종 업데이트: 2016. 1. 1.", + "Jan": "최종 업데이트: 2020. 1. 3.", "Feb": "최종 업데이트: 2016. 2. 7.", "Mar": "최종 업데이트: 2015. 3. 9.", "Apr": "최종 업데이트: 2017. 4. 2.", @@ -734,7 +734,7 @@ "Today": "Бүгүн жаңырды", "Yesterday": "Кечээ жаңырды", "Ago": "3 күн мурун жаңырды", - "Jan": "Акыркы жолу 2016-ж., 1-янв. күнү жаңырган", + "Jan": "Акыркы жолу 2020-ж., 3-янв. күнү жаңырган", "Feb": "Акыркы жолу 2016-ж., 7-фев. күнү жаңырган", "Mar": "Акыркы жолу 2015-ж., 9-мар. күнү жаңырган", "Apr": "Акыркы жолу 2017-ж., 2-апр. күнү жаңырган", @@ -751,7 +751,7 @@ "Today": "ອັບເດດມື້ນີ້", "Yesterday": "ອັບເດດມື້ວານນີ້", "Ago": "ອັບເດດ 3 ມື້ກ່ອນ", - "Jan": "ອັບເດດຫຼ້າສຸດເມື່ອ 1 ມ.ກ. 2016", + "Jan": "ອັບເດດຫຼ້າສຸດເມື່ອ 3 ມ.ກ. 2020", "Feb": "ອັບເດດຫຼ້າສຸດເມື່ອ 7 ກ.ພ. 2016", "Mar": "ອັບເດດຫຼ້າສຸດເມື່ອ 9 ມ.ນ. 2015", "Apr": "ອັບເດດຫຼ້າສຸດເມື່ອ 2 ມ.ສ. 2017", @@ -768,7 +768,7 @@ "Today": "Atnaujinta šiandien", "Yesterday": "Atnaujinta vakar", "Ago": "Atnaujinta prieš 3 d.", - "Jan": "Paskutinį kartą atnaujinta 2016-01-01", + "Jan": "Paskutinį kartą atnaujinta 2020-01-03", "Feb": "Paskutinį kartą atnaujinta 2016-02-07", "Mar": "Paskutinį kartą atnaujinta 2015-03-09", "Apr": "Paskutinį kartą atnaujinta 2017-04-02", @@ -785,7 +785,7 @@ "Today": "Atjaunināts šodien", "Yesterday": "Atjaunināts vakar", "Ago": "Atjaunināts pirms 3 dienām", - "Jan": "Pēdējo reizi atjaunināts: 2016. gada 1. janv.", + "Jan": "Pēdējo reizi atjaunināts: 2020. gada 3. janv.", "Feb": "Pēdējo reizi atjaunināts: 2016. gada 7. febr.", "Mar": "Pēdējo reizi atjaunināts: 2015. gada 9. marts", "Apr": "Pēdējo reizi atjaunināts: 2017. gada 2. apr.", @@ -802,7 +802,7 @@ "Today": "Ажурирано денес", "Yesterday": "Ажурирано вчера", "Ago": "Ажурирано пред 3 дена", - "Jan": "Последно ажурирано на 1.1.2016", + "Jan": "Последно ажурирано на 3.1.2020", "Feb": "Последно ажурирано на 7.2.2016", "Mar": "Последно ажурирано на 9.3.2015", "Apr": "Последно ажурирано на 2.4.2017", @@ -819,7 +819,7 @@ "Today": "ഇന്ന് അപ്‌ഡേറ്റ് ചെയ്തത്", "Yesterday": "ഇന്നലെ അപ്‌ഡേറ്റ് ചെയ്തത്", "Ago": "3 ദിവസം മുമ്പ് അപ്‌ഡേറ്റ് ചെയ്തത്", - "Jan": "അവസാനം അപ്‌ഡേറ്റുചെയ്‌ത തീയതി 2016, ജനു 1", + "Jan": "അവസാനം അപ്‌ഡേറ്റുചെയ്‌ത തീയതി 2020, ജനു 3", "Feb": "അവസാനം അപ്‌ഡേറ്റുചെയ്‌ത തീയതി 2016, ഫെബ്രു 7", "Mar": "അവസാനം അപ്‌ഡേറ്റുചെയ്‌ത തീയതി 2015, മാർ 9", "Apr": "അവസാനം അപ്‌ഡേറ്റുചെയ്‌ത തീയതി 2017, ഏപ്രി 2", @@ -836,7 +836,7 @@ "Today": "өнөөдөр шинэчлэгдсэн", "Yesterday": "өчигдөр шинэчлэгдсэн", "Ago": "3 өдрийн өмнө шинэчлэгдсэн", - "Jan": "Сүүлд 2016 оны 1-р сарын 1-нд шинэчилсэн", + "Jan": "Сүүлд 2020 оны 1-р сарын 3-нд шинэчилсэн", "Feb": "Сүүлд 2016 оны 2-р сарын 7-нд шинэчилсэн", "Mar": "Сүүлд 2015 оны 3-р сарын 9-нд шинэчилсэн", "Apr": "Сүүлд 2017 оны 4-р сарын 2-нд шинэчилсэн", @@ -853,7 +853,7 @@ "Today": "आज अपडेट केले", "Yesterday": "काल अपडेट केले", "Ago": "3 दिवसांपूर्वी अपडेट केले", - "Jan": "1 जाने, 2016 रोजी अंतिम अपडेट", + "Jan": "3 जाने, 2020 रोजी अंतिम अपडेट", "Feb": "7 फेब्रु, 2016 रोजी अंतिम अपडेट", "Mar": "9 मार्च, 2015 रोजी अंतिम अपडेट", "Apr": "2 एप्रि, 2017 रोजी अंतिम अपडेट", @@ -870,7 +870,7 @@ "Today": "Dikemas kini hari ini", "Yesterday": "Dikemas kini semalam", "Ago": "Dikemas kini 3 hari yang lalu", - "Jan": "Terakhir dikemas kini pada 1 Jan 2016", + "Jan": "Terakhir dikemas kini pada 3 Jan 2020", "Feb": "Terakhir dikemas kini pada 7 Feb 2016", "Mar": "Terakhir dikemas kini pada 9 Mac 2015", "Apr": "Terakhir dikemas kini pada 2 Apr 2017", @@ -887,7 +887,7 @@ "Today": "ယနေ့ အပ်ဒိတ်လုပ်ခဲ့သည်", "Yesterday": "မနေ့က အပ်ဒိတ်လုပ်ခဲ့သည်", "Ago": "ပြီးခဲ့သော 3 ရက်က အပ်ဒိတ်လုပ်ခဲ့သည်", - "Jan": "2016- ဇန် 1 ရက်က နောက်ဆုံး အပ်ဒိတ်လုပ်ခဲ့ပါသည်", + "Jan": "2020- ဇန် 3 ရက်က နောက်ဆုံး အပ်ဒိတ်လုပ်ခဲ့ပါသည်", "Feb": "2016- ဖေ 7 ရက်က နောက်ဆုံး အပ်ဒိတ်လုပ်ခဲ့ပါသည်", "Mar": "2015- မတ် 9 ရက်က နောက်ဆုံး အပ်ဒိတ်လုပ်ခဲ့ပါသည်", "Apr": "2017- ဧ 2 ရက်က နောက်ဆုံး အပ်ဒိတ်လုပ်ခဲ့ပါသည်", @@ -904,7 +904,7 @@ "Today": "आज अद्यावधिक गरिएको", "Yesterday": "हिजो अद्यावधिक गरिएको", "Ago": "3 दिन अघि अद्यावधिक गरिएको", - "Jan": "2016 जनवरी 1 मा पछिल्लो पटक अद्यावधिक गरिएको", + "Jan": "2020 जनवरी 3 मा पछिल्लो पटक अद्यावधिक गरिएको", "Feb": "2016 फेब्रुअरी 7 मा पछिल्लो पटक अद्यावधिक गरिएको", "Mar": "2015 मार्च 9 मा पछिल्लो पटक अद्यावधिक गरिएको", "Apr": "2017 अप्रिल 2 मा पछिल्लो पटक अद्यावधिक गरिएको", @@ -921,7 +921,7 @@ "Today": "Vandaag geüpdatet", "Yesterday": "Gisteren geüpdatet", "Ago": "3 dagen geleden geüpdatet", - "Jan": "Laatst geüpdatet op 1 jan. 2016", + "Jan": "Laatst geüpdatet op 3 jan. 2020", "Feb": "Laatst geüpdatet op 7 feb. 2016", "Mar": "Laatst geüpdatet op 9 mrt. 2015", "Apr": "Laatst geüpdatet op 2 apr. 2017", @@ -938,7 +938,7 @@ "Today": "Oppdatert i dag", "Yesterday": "Oppdatert i går", "Ago": "Oppdatert for 3 dager siden", - "Jan": "Sist oppdatert 1. jan. 2016", + "Jan": "Sist oppdatert 3. jan. 2020", "Feb": "Sist oppdatert 7. feb. 2016", "Mar": "Sist oppdatert 9. mar. 2015", "Apr": "Sist oppdatert 2. apr. 2017", @@ -955,7 +955,7 @@ "Today": "ଆଜି ଅପ୍‍ଡେଟ୍‍ ହୋ‍ଇଛି", "Yesterday": "ଗତକାଲି ଅପ୍‍ଡେଟ୍‍ ହୋ‍ଇଥିଲା", "Ago": "3 ଦିନ ପୂର୍ବରୁ ଅପ୍‍ଡେଟ୍‍ ହୋ‍ଇଥିଲା", - "Jan": "ଜାନୁଆରୀ 1, 2016ରେ ଶେଷଥର ପାଇଁ ଅପଡେଟ୍ ହୋ‍ଇଛି", + "Jan": "ଜାନୁଆରୀ 3, 2020ରେ ଶେଷଥର ପାଇଁ ଅପଡେଟ୍ ହୋ‍ଇଛି", "Feb": "ଫେବୃଆରୀ 7, 2016ରେ ଶେଷଥର ପାଇଁ ଅପଡେଟ୍ ହୋ‍ଇଛି", "Mar": "ମାର୍ଚ୍ଚ 9, 2015ରେ ଶେଷଥର ପାଇଁ ଅପଡେଟ୍ ହୋ‍ଇଛି", "Apr": "ଅପ୍ରେଲ 2, 2017ରେ ଶେଷଥର ପାଇଁ ଅପଡେଟ୍ ହୋ‍ଇଛି", @@ -972,7 +972,7 @@ "Today": "ਅੱਜ ਅੱਪਡੇਟ ਕੀਤਾ", "Yesterday": "ਬੀੇਤੇ ਕੱਲ ਨੂੰ ਅੱਪਡੇਟ ਕੀਤਾ", "Ago": "3 ਦਿਨ ਪਹਿਲੇ ਅੱਪਡੇਟ ਕੀਤਾ", - "Jan": "ਆਖਰੀ ਵਾਰ 1 ਜਨ 2016 ਨੂੰ ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ", + "Jan": "ਆਖਰੀ ਵਾਰ 3 ਜਨ 2020 ਨੂੰ ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ", "Feb": "ਆਖਰੀ ਵਾਰ 7 ਫ਼ਰ 2016 ਨੂੰ ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ", "Mar": "ਆਖਰੀ ਵਾਰ 9 ਮਾਰਚ 2015 ਨੂੰ ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ", "Apr": "ਆਖਰੀ ਵਾਰ 2 ਅਪ੍ਰੈ 2017 ਨੂੰ ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ", @@ -989,7 +989,7 @@ "Today": "Zaktualizowano dzisiaj", "Yesterday": "Zaktualizowano wczoraj", "Ago": "Zaktualizowano 3 dni temu", - "Jan": "Ostatnia aktualizacja: 1 sty 2016", + "Jan": "Ostatnia aktualizacja: 3 sty 2020", "Feb": "Ostatnia aktualizacja: 7 lut 2016", "Mar": "Ostatnia aktualizacja: 9 mar 2015", "Apr": "Ostatnia aktualizacja: 2 kwi 2017", @@ -1006,7 +1006,7 @@ "Today": "Atualizada hoje", "Yesterday": "Atualizada ontem", "Ago": "Atualizada há 3 dias", - "Jan": "Última atualização em 1 de jan. de 2016", + "Jan": "Última atualização em 3 de jan. de 2020", "Feb": "Última atualização em 7 de fev. de 2016", "Mar": "Última atualização em 9 de mar. de 2015", "Apr": "Última atualização em 2 de abr. de 2017", @@ -1023,7 +1023,7 @@ "Today": "Atualizados hoje", "Yesterday": "Atualizado ontem", "Ago": "Atualizado(s) há 3 dias", - "Jan": "Última atualização a 01/01/2016", + "Jan": "Última atualização a 03/01/2020", "Feb": "Última atualização a 07/02/2016", "Mar": "Última atualização a 09/03/2015", "Apr": "Última atualização a 02/04/2017", @@ -1040,7 +1040,7 @@ "Today": "Actualizat astăzi", "Yesterday": "Actualizat ieri", "Ago": "Actualizat acum 3 zile", - "Jan": "Ultima actualizare pe 1 ian. 2016", + "Jan": "Ultima actualizare pe 3 ian. 2020", "Feb": "Ultima actualizare pe 7 feb. 2016", "Mar": "Ultima actualizare pe 9 mar. 2015", "Apr": "Ultima actualizare pe 2 apr. 2017", @@ -1057,7 +1057,7 @@ "Today": "Обновлено сегодня", "Yesterday": "Обновлено вчера", "Ago": "Обновлено 3 дня назад", - "Jan": "Обновлен 1 янв. 2016 г.", + "Jan": "Обновлен 3 янв. 2020 г.", "Feb": "Обновлен 7 февр. 2016 г.", "Mar": "Обновлен 9 мар. 2015 г.", "Apr": "Обновлен 2 апр. 2017 г.", @@ -1074,7 +1074,7 @@ "Today": "අද යාවත්කාලීන කෙරිණි", "Yesterday": "අද යාවත්කාලීන කෙරිණි", "Ago": "දින 3කට පෙර යාවත්කාලීන කෙරිණි", - "Jan": "අවසන් වරට යාවත්කාලීන කළේ 2016 ජන 1", + "Jan": "අවසන් වරට යාවත්කාලීන කළේ 2020 ජන 3", "Feb": "අවසන් වරට යාවත්කාලීන කළේ 2016 පෙබ 7", "Mar": "අවසන් වරට යාවත්කාලීන කළේ 2015 මාර්තු 9", "Apr": "අවසන් වරට යාවත්කාලීන කළේ 2017 අප්‍රේල් 2", @@ -1091,7 +1091,7 @@ "Today": "Aktualizované dnes", "Yesterday": "Aktualizované včera", "Ago": "Aktualizované pred 3 dňami", - "Jan": "Naposledy aktualizované 1. 1. 2016", + "Jan": "Naposledy aktualizované 3. 1. 2020", "Feb": "Naposledy aktualizované 7. 2. 2016", "Mar": "Naposledy aktualizované 9. 3. 2015", "Apr": "Naposledy aktualizované 2. 4. 2017", @@ -1108,7 +1108,7 @@ "Today": "Posodobljeno danes", "Yesterday": "Posodobljeno včeraj", "Ago": "Posodobljeno pred 3 dnevi", - "Jan": "Datum zadnje posodobitve 1. jan. 2016", + "Jan": "Datum zadnje posodobitve 3. jan. 2020", "Feb": "Datum zadnje posodobitve 7. feb. 2016", "Mar": "Datum zadnje posodobitve 9. mar. 2015", "Apr": "Datum zadnje posodobitve 2. apr. 2017", @@ -1125,7 +1125,7 @@ "Today": "Përditësuar sot", "Yesterday": "Përditësuar dje", "Ago": "Përditësuar 3 ditë më parë", - "Jan": "Përditësuar së fundi më 1 jan 2016", + "Jan": "Përditësuar së fundi më 3 jan 2020", "Feb": "Përditësuar së fundi më 7 shk 2016", "Mar": "Përditësuar së fundi më 9 mar 2015", "Apr": "Përditësuar së fundi më 2 pri 2017", @@ -1142,7 +1142,7 @@ "Today": "Ажурирано данас", "Yesterday": "Ажурирано јуче", "Ago": "Ажурирано пре 3 дана", - "Jan": "Последњи пут ажурирано 1. 1. 2016.", + "Jan": "Последњи пут ажурирано 3. 1. 2020.", "Feb": "Последњи пут ажурирано 7. 2. 2016.", "Mar": "Последњи пут ажурирано 9. 3. 2015.", "Apr": "Последњи пут ажурирано 2. 4. 2017.", @@ -1159,7 +1159,7 @@ "Today": "Ažurirano danas", "Yesterday": "Ažurirano juče", "Ago": "Ažurirano pre 3 dana", - "Jan": "Poslednji put ažurirano 1. 1. 2016.", + "Jan": "Poslednji put ažurirano 3. 1. 2020.", "Feb": "Poslednji put ažurirano 7. 2. 2016.", "Mar": "Poslednji put ažurirano 9. 3. 2015.", "Apr": "Poslednji put ažurirano 2. 4. 2017.", @@ -1176,7 +1176,7 @@ "Today": "Uppdaterades idag", "Yesterday": "Uppdaterades igår", "Ago": "Uppdaterades för 3 dagar sedan", - "Jan": "Uppdaterades senast 1 jan. 2016", + "Jan": "Uppdaterades senast 3 jan. 2020", "Feb": "Uppdaterades senast 7 feb. 2016", "Mar": "Uppdaterades senast 9 mars 2015", "Apr": "Uppdaterades senast 2 apr. 2017", @@ -1193,7 +1193,7 @@ "Today": "Zilizosasishwa leo", "Yesterday": "Zilizosasishwa jana", "Ago": "Zilizosasishwa siku 3 zilizopita", - "Jan": "Ilisasishwa mara ya mwisho tarehe 1 Jan 2016", + "Jan": "Ilisasishwa mara ya mwisho tarehe 3 Jan 2020", "Feb": "Ilisasishwa mara ya mwisho tarehe 7 Feb 2016", "Mar": "Ilisasishwa mara ya mwisho tarehe 9 Mac 2015", "Apr": "Ilisasishwa mara ya mwisho tarehe 2 Apr 2017", @@ -1210,7 +1210,7 @@ "Today": "இன்று புதுப்பிக்கப்பட்டது", "Yesterday": "நேற்று புதுப்பிக்கப்பட்டது", "Ago": "3 நாட்களுக்கு முன்பு புதுப்பிக்கப்பட்டது", - "Jan": "1 ஜன., 2016 அன்று கடைசியாக புதுப்பிக்கப்பட்டது", + "Jan": "3 ஜன., 2020 அன்று கடைசியாக புதுப்பிக்கப்பட்டது", "Feb": "7 பிப்., 2016 அன்று கடைசியாக புதுப்பிக்கப்பட்டது", "Mar": "9 மார்., 2015 அன்று கடைசியாக புதுப்பிக்கப்பட்டது", "Apr": "2 ஏப்., 2017 அன்று கடைசியாக புதுப்பிக்கப்பட்டது", @@ -1227,7 +1227,7 @@ "Today": "ఈ రోజు అప్‌డేట్ చేయబడింది", "Yesterday": "నిన్న అప్‌డేట్ చేయబడింది", "Ago": "3 రోజుల క్రితం అప్‌డేట్ చేయబడింది", - "Jan": "చివరిగా 1 జన, 2016న అప్‌డేట్ చేయబడింది", + "Jan": "చివరిగా 3 జన, 2020న అప్‌డేట్ చేయబడింది", "Feb": "చివరిగా 7 ఫిబ్ర, 2016న అప్‌డేట్ చేయబడింది", "Mar": "చివరిగా 9 మార్చి, 2015న అప్‌డేట్ చేయబడింది", "Apr": "చివరిగా 2 ఏప్రి, 2017న అప్‌డేట్ చేయబడింది", @@ -1244,7 +1244,7 @@ "Today": "อัปเดตแล้ววันนี้", "Yesterday": "อัปเดตแล้วเมื่อวาน", "Ago": "อัปเดตแล้วเมื่อ 3 วันที่ผ่านมา", - "Jan": "อัปเดตล่าสุดเมื่อ 1 ม.ค. 2016", + "Jan": "อัปเดตล่าสุดเมื่อ 3 ม.ค. 2020", "Feb": "อัปเดตล่าสุดเมื่อ 7 ก.พ. 2016", "Mar": "อัปเดตล่าสุดเมื่อ 9 มี.ค. 2015", "Apr": "อัปเดตล่าสุดเมื่อ 2 เม.ย. 2017", @@ -1261,7 +1261,7 @@ "Today": "Bugün güncellendi", "Yesterday": "Dün güncellendi", "Ago": "3 gün önce güncellendi", - "Jan": "En son 1 Oca 2016 tarihinde güncellendi", + "Jan": "En son 3 Oca 2020 tarihinde güncellendi", "Feb": "En son 7 Şub 2016 tarihinde güncellendi", "Mar": "En son 9 Mar 2015 tarihinde güncellendi", "Apr": "En son 2 Nis 2017 tarihinde güncellendi", @@ -1278,7 +1278,7 @@ "Today": "Оновлено сьогодні", "Yesterday": "Оновлено вчора", "Ago": "Оновлено 3 дні тому", - "Jan": "Останнє оновлення: 1 січ. 2016 р.", + "Jan": "Останнє оновлення: 3 січ. 2020 р.", "Feb": "Останнє оновлення: 7 лют. 2016 р.", "Mar": "Останнє оновлення: 9 бер. 2015 р.", "Apr": "Останнє оновлення: 2 квіт. 2017 р.", @@ -1295,7 +1295,7 @@ "Today": "آج اپ ڈیٹ کیا گیا", "Yesterday": "گزشتہ کل اپ ڈیٹ کیا گیا", "Ago": "3 دن پہلے اپ ڈیٹ کیا گیا", - "Jan": "آخری بار 1 جنوری، 2016 کو اپ ڈیٹ کیا گیا", + "Jan": "آخری بار 3 جنوری، 2020 کو اپ ڈیٹ کیا گیا", "Feb": "آخری بار 7 فروری، 2016 کو اپ ڈیٹ کیا گیا", "Mar": "آخری بار 9 مارچ، 2015 کو اپ ڈیٹ کیا گیا", "Apr": "آخری بار 2 اپریل، 2017 کو اپ ڈیٹ کیا گیا", @@ -1312,7 +1312,7 @@ "Today": "Bugun yangilandi", "Yesterday": "Kecha yangilangan", "Ago": "3 kun oldin yangilangan", - "Jan": "Oxirgi yangilanish: 1-yan, 2016", + "Jan": "Oxirgi yangilanish: 3-yan, 2020", "Feb": "Oxirgi yangilanish: 7-fev, 2016", "Mar": "Oxirgi yangilanish: 9-mar, 2015", "Apr": "Oxirgi yangilanish: 2-apr, 2017", @@ -1329,7 +1329,7 @@ "Today": "Cập nhật hôm nay", "Yesterday": "Cập nhật hôm qua", "Ago": "Cập nhật 3 ngày trước", - "Jan": "Cập nhật lần cuối vào 1 thg 1, 2016", + "Jan": "Cập nhật lần cuối vào 3 thg 1, 2020", "Feb": "Cập nhật lần cuối vào 7 thg 2, 2016", "Mar": "Cập nhật lần cuối vào 9 thg 3, 2015", "Apr": "Cập nhật lần cuối vào 2 thg 4, 2017", @@ -1346,7 +1346,7 @@ "Today": "今日更新", "Yesterday": "昨日更新", "Ago": "3 天前更新", - "Jan": "最后更新时间:2016年1月1日", + "Jan": "最后更新时间:2020年1月3日", "Feb": "最后更新时间:2016年2月7日", "Mar": "最后更新时间:2015年3月9日", "Apr": "最后更新时间:2017年4月2日", @@ -1363,7 +1363,7 @@ "Today": "今日更新", "Yesterday": "昨天更新", "Ago": "3 天前更新", - "Jan": "上次更新時間:2016年1月1日", + "Jan": "上次更新時間:2020年1月3日", "Feb": "上次更新時間:2016年2月7日", "Mar": "上次更新時間:2015年3月9日", "Apr": "上次更新時間:2017年4月2日", @@ -1380,7 +1380,7 @@ "Today": "今天更新", "Yesterday": "昨天更新", "Ago": "3 天前更新", - "Jan": "上次更新日期:2016年1月1日", + "Jan": "上次更新日期:2020年1月3日", "Feb": "上次更新日期:2016年2月7日", "Mar": "上次更新日期:2015年3月9日", "Apr": "上次更新日期:2017年4月2日", @@ -1397,7 +1397,7 @@ "Today": "Ibuyekezwe namuhla", "Yesterday": "Ibuyekezwe izolo", "Ago": "Ibuyekezwe ezinsukwini ezingu-3 ezidlule", - "Jan": "Yagcina ibuyekezwe ngomhla ka-Jan 1, 2016", + "Jan": "Yagcina ibuyekezwe ngomhla ka-Jan 3, 2020", "Feb": "Yagcina ibuyekezwe ngomhla ka-Feb 7, 2016", "Mar": "Yagcina ibuyekezwe ngomhla ka-Mas 9, 2015", "Apr": "Yagcina ibuyekezwe ngomhla ka-Eph 2, 2017", From a992495b2b18899a15ebcd0f8125a6330aabbc03 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 7 Sep 2022 15:32:08 +0200 Subject: [PATCH 2/3] feat: add playlist date parser --- .editorconfig | 3 + src/codegen/collect_playlist_dates.rs | 104 +- src/codegen/gen_dictionary.rs | 33 +- src/codegen/mod.rs | 1 + src/dictionary.rs | 1351 ++++++++++++++++++++----- src/timeago.rs | 275 ++++- src/util.rs | 1 - testfiles/date/dictionary.json | 563 ++++++++--- 8 files changed, 1909 insertions(+), 422 deletions(-) diff --git a/.editorconfig b/.editorconfig index f17ec78..f016535 100644 --- a/.editorconfig +++ b/.editorconfig @@ -12,3 +12,6 @@ indent_style = tab [*.{json,md,rst,ini,yml,yaml,xml,html,js,jsx,ts,tsx,vue,kt}] indent_size = 2 + +[*.json] +insert_final_newline = false diff --git a/src/codegen/collect_playlist_dates.rs b/src/codegen/collect_playlist_dates.rs index a2bd47b..6801a29 100644 --- a/src/codegen/collect_playlist_dates.rs +++ b/src/codegen/collect_playlist_dates.rs @@ -13,6 +13,7 @@ use serde::{Deserialize, Serialize}; use crate::{ client::RustyTube, model::{locale::LANGUAGES, Country, Language}, + timeago::{self, TimeAgo}, util, }; @@ -83,8 +84,16 @@ async fn collect_dates() { serde_json::to_writer_pretty(file, &collected_dates).unwrap(); } -// #[test] -fn parse_months() { +fn filter_str(string: &str) -> String { + string + .to_lowercase() + .chars() + .filter(|c| c != &'\u{200b}' && !c.is_ascii_digit()) + .collect() +} + +#[test] +fn write_samples_to_dict() { let json_path = Path::new("testfiles/date/playlist_samples.json").to_path_buf(); let json_file = File::open(json_path).unwrap(); let collected_dates: CollectedDates = @@ -123,11 +132,47 @@ fn parse_months() { ]; for lang in langs { + let datestr_table = collected_dates.get(&lang).unwrap(); let mut month_words: HashMap = HashMap::new(); let mut num_order = "".to_owned(); + // Today/Yesterday + let mut td_words: HashMap = HashMap::new(); + { + let mut parse = |string: &str, n: i8| { + filter_str(string).split_whitespace().for_each(|word| { + td_words + .entry(word.to_owned()) + .and_modify(|e| *e = 0) + .or_insert(n); + }); + }; + + parse(datestr_table.get(&DateCase::Today).unwrap(), 1); + parse(datestr_table.get(&DateCase::Yesterday).unwrap(), 2); + parse(datestr_table.get(&DateCase::Ago).unwrap(), 0); + parse(datestr_table.get(&DateCase::Jan).unwrap(), 0); + } + + // n days ago + { + let datestr = datestr_table.get(&DateCase::Ago).unwrap(); + let tago = timeago::parse(lang, &datestr); + assert_eq!( + tago, + Some(TimeAgo { + n: 3, + unit: timeago::TimeUnit::Day + }), + "lang: {}, txt: {}", + lang, + datestr + ); + } + + // Absolute dates (Jan 3, 2020) months.iter().enumerate().for_each(|(n, m)| { - let datestr = collected_dates.get(&lang).unwrap().get(m).unwrap(); + let datestr = datestr_table.get(m).unwrap(); // Get order of numbers let nums = util::parse_numeric_vec::(&datestr); @@ -155,12 +200,7 @@ fn parse_months() { } // Insert words into the map - let filtered_str = datestr - .chars() - .filter(|c| !c.is_ascii_digit()) - .collect::(); - - filtered_str.split_whitespace().for_each(|word| { + filter_str(&datestr).split_whitespace().for_each(|word| { month_words .entry(word.to_owned()) .and_modify(|e| *e = 0) @@ -170,13 +210,47 @@ fn parse_months() { let dict_entry = dict.entry(lang).or_default(); dict_entry.date_order = num_order; - dict_entry.months = month_words.iter().filter_map(|(word, m)| { - if *m == 0 { - None - } else { - Some((word.to_owned(), *m as u8)) + dict_entry.months = month_words + .iter() + .filter_map(|(word, m)| { + if *m == 0 { + None + } else { + Some((word.to_owned(), *m as u8)) + } + }) + .collect(); + + match lang { + Language::Ja + | Language::ZhCn + | Language::ZhHk + | Language::ZhTw + | Language::Ko + | Language::Gu + | Language::Pa + | Language::Ur + | Language::Uz + | Language::Te + // Singhalese YT translation is broken (today == tomorrow) + | Language::Si => {} + _ => { + dict_entry.timeago_nd_tokens = td_words + .iter() + .filter_map(|(word, n)| { + match n { + // Today + 1 => Some((word.to_owned(), "0D".to_owned())), + // Yesterday + 2 => Some((word.to_owned(), "1D".to_owned())), + _ => None, + } + }) + .collect(); + + assert_eq!(dict_entry.timeago_nd_tokens.len(), 2, "lang: {}, nd_tokens: {:?}", lang, &dict_entry.timeago_nd_tokens); } - }).collect(); + } } super::write_dict(&dict); diff --git a/src/codegen/gen_dictionary.rs b/src/codegen/gen_dictionary.rs index 35fa12a..143c950 100644 --- a/src/codegen/gen_dictionary.rs +++ b/src/codegen/gen_dictionary.rs @@ -27,20 +27,22 @@ fn parse_tu(tu: &str) -> (u8, Option) { } } -// #[test] +#[test] fn generate_dictionary() { let dict = super::read_dict(); let code_head = r#"// This file is automatically generated. DO NOT EDIT. use crate::{ model::Language, - timeago::{TaToken, TimeUnit}, + timeago::{TaToken, TimeUnit, DateCmp}, }; pub struct Entry { + pub by_char: bool, pub timeago_tokens: phf::Map<&'static str, TaToken>, - pub date_order: &'static str, + pub date_order: &'static [DateCmp], pub months: phf::Map<&'static str, u8>, + pub timeago_nd_tokens: phf::Map<&'static str, TaToken>, } "#; @@ -76,12 +78,33 @@ pub fn entry(lang: Language) -> Entry { months.entry(&txt, &n_mon.to_string()); }); + // Timeago(ND) tokens + let mut ta_nd_tokens = phf_codegen::Map::<&str>::new(); + entry.timeago_nd_tokens.iter().for_each(|(txt, tu_str)| { + let (n, unit) = parse_tu(&tu_str); + match unit { + Some(unit) => ta_nd_tokens.entry( + &txt, + &format!("TaToken {{ n: {}, unit: Some(TimeUnit::{:?}) }}", n, unit), + ), + None => ta_nd_tokens.entry(&txt, &format!("TaToken {{ n: {}, unit: None }}", n)), + }; + }); + + // Date order + let mut date_order = "&[".to_owned(); + entry.date_order.chars().for_each(|c| { + date_order += &format!("DateCmp::{}, ", c); + }); + date_order = date_order.trim_end_matches([' ', ',']).to_owned() + "]"; + let code_ta_tokens = &ta_tokens.build().to_string().replace('\n', "\n "); + let code_ta_nd_tokens = &ta_nd_tokens.build().to_string().replace('\n', "\n "); let code_months = &months.build().to_string().replace('\n', "\n "); code_timeago_tokens += &format!( - "{} => Entry {{\n timeago_tokens: {},\n date_order: \"{}\",\n months: {},\n }},\n ", - selector, code_ta_tokens, entry.date_order, code_months + "{} => Entry {{\n by_char: {:?},\n timeago_tokens: {},\n date_order: {},\n months: {},\n timeago_nd_tokens: {},\n }},\n ", + selector, entry.by_char, code_ta_tokens, date_order, code_months, code_ta_nd_tokens ); }); diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs index 4bbd694..02c04fc 100644 --- a/src/codegen/mod.rs +++ b/src/codegen/mod.rs @@ -21,6 +21,7 @@ struct DictEntry { timeago_tokens: BTreeMap, date_order: String, months: BTreeMap, + timeago_nd_tokens: BTreeMap, } fn read_dict() -> Dictionary { diff --git a/src/dictionary.rs b/src/dictionary.rs index 3950782..bf94de8 100644 --- a/src/dictionary.rs +++ b/src/dictionary.rs @@ -1,19 +1,22 @@ // This file is automatically generated. DO NOT EDIT. use crate::{ model::Language, - timeago::{TaToken, TimeUnit}, + timeago::{TaToken, TimeUnit, DateCmp}, }; pub struct Entry { + pub by_char: bool, pub timeago_tokens: phf::Map<&'static str, TaToken>, - pub date_order: &'static str, + pub date_order: &'static [DateCmp], pub months: phf::Map<&'static str, u8>, + pub timeago_nd_tokens: phf::Map<&'static str, TaToken>, } #[rustfmt::skip] pub fn entry(lang: Language) -> Entry { match lang { Language::Af => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -37,31 +40,42 @@ pub fn entry(lang: Language) -> Entry { ("sekonde", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 12913932095322966823, disps: &[ - (0, 5), - (10, 0), - (0, 11), + (1, 3), + (0, 0), + (0, 7), ], entries: &[ - ("Des.", 12), - ("Jan.", 1), - ("Mei", 5), - ("Jun.", 6), - ("Aug.", 8), - ("Sep.", 9), - ("Apr.", 4), - ("Jul.", 7), - ("Nov.", 11), - ("Okt.", 10), - ("Mrt.", 3), - ("Feb.", 2), + ("jan.", 1), + ("des.", 12), + ("jun.", 6), + ("jul.", 7), + ("sep.", 9), + ("nov.", 11), + ("apr.", 4), + ("feb.", 2), + ("okt.", 10), + ("mrt.", 3), + ("aug.", 8), + ("mei", 5), + ], + }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("gister", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("vandag", TaToken { n: 0, unit: Some(TimeUnit::Day) }), ], }, }, Language::Am => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -86,7 +100,7 @@ pub fn entry(lang: Language) -> Entry { ("ሳምንት", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -109,8 +123,19 @@ pub fn entry(lang: Language) -> Entry { ("ሜይ", 5), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("ትላንት", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ዛሬ", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Ar => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -147,7 +172,7 @@ pub fn entry(lang: Language) -> Entry { ("ساعتين", TaToken { n: 2, unit: Some(TimeUnit::Hour) }), ], }, - date_order: "DMY", + date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -155,8 +180,19 @@ pub fn entry(lang: Language) -> Entry { entries: &[ ], }, + timeago_nd_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (1, 0), + ], + entries: &[ + ("بالأمس", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("اليوم", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::As => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -173,7 +209,7 @@ pub fn entry(lang: Language) -> Entry { ("মিনিট", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, - date_order: "DMY", + date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -181,8 +217,19 @@ pub fn entry(lang: Language) -> Entry { entries: &[ ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("আজি", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("ক\u{9be}লি", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Az => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 10121458955350035957, disps: &[ @@ -199,7 +246,7 @@ pub fn entry(lang: Language) -> Entry { ("saat", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 8694567506910003252, disps: &[ @@ -222,8 +269,19 @@ pub fn entry(lang: Language) -> Entry { ("apr", 4), ], }, + timeago_nd_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (0, 0), + ], + entries: &[ + ("dünən", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("bugün", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Be => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 10121458955350035957, disps: &[ @@ -260,7 +318,7 @@ pub fn entry(lang: Language) -> Entry { ("дзён", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -283,8 +341,19 @@ pub fn entry(lang: Language) -> Entry { ("жні", 8), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 0), + ], + entries: &[ + ("сёння", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("ўчора", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Bg => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 7485420634051515786, disps: &[ @@ -309,7 +378,7 @@ pub fn entry(lang: Language) -> Entry { ("секунди", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: "DMY", + date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -317,8 +386,19 @@ pub fn entry(lang: Language) -> Entry { entries: &[ ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 0), + ], + entries: &[ + ("вчера", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("днес", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Bn => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -335,7 +415,7 @@ pub fn entry(lang: Language) -> Entry { ("সেকেন\u{9cd}ড", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 10121458955350035957, disps: &[ @@ -358,8 +438,19 @@ pub fn entry(lang: Language) -> Entry { ("ম\u{9be}র\u{9cd}চ,", 3), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("গতক\u{9be}ল", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("আজ", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Bs => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -390,7 +481,7 @@ pub fn entry(lang: Language) -> Entry { ("mjeseci", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 10121458955350035957, disps: &[ @@ -413,8 +504,19 @@ pub fn entry(lang: Language) -> Entry { ("dec", 12), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 0), + ], + entries: &[ + ("jučer", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("danas", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Ca => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 10121458955350035957, disps: &[ @@ -439,7 +541,7 @@ pub fn entry(lang: Language) -> Entry { ("dia", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -462,8 +564,19 @@ pub fn entry(lang: Language) -> Entry { ("d’abr.", 4), ], }, + timeago_nd_tokens: ::phf::Map { + key: 7485420634051515786, + disps: &[ + (0, 0), + ], + entries: &[ + ("avui", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("ahir", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Cs => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 8694567506910003252, disps: &[ @@ -489,7 +602,7 @@ pub fn entry(lang: Language) -> Entry { ("měsíci", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ], }, - date_order: "DMY", + date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -497,8 +610,19 @@ pub fn entry(lang: Language) -> Entry { entries: &[ ], }, + timeago_nd_tokens: ::phf::Map { + key: 10121458955350035957, + disps: &[ + (0, 0), + ], + entries: &[ + ("včera", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("dnes", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Da => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -522,7 +646,7 @@ pub fn entry(lang: Language) -> Entry { ("uge", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 7485420634051515786, disps: &[ @@ -545,8 +669,19 @@ pub fn entry(lang: Language) -> Entry { ("jul.", 7), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 0), + ], + entries: &[ + ("dag", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("går", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::De => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 345707026197253659, disps: &[ @@ -571,7 +706,7 @@ pub fn entry(lang: Language) -> Entry { ("tagen", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, - date_order: "DMY", + date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -579,8 +714,19 @@ pub fn entry(lang: Language) -> Entry { entries: &[ ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("gestern", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("heute", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::El => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 12213676231523076107, disps: &[ @@ -605,31 +751,42 @@ pub fn entry(lang: Language) -> Entry { ("δευτερόλεπτα", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 12913932095322966823, + key: 15467950696543387533, disps: &[ - (1, 0), - (0, 2), - (7, 3), + (0, 0), + (4, 0), + (0, 4), ], entries: &[ - ("Οκτ", 10), - ("Απρ", 4), - ("Ιουν", 6), - ("Μαΐ", 5), - ("Νοε", 11), - ("Σεπ", 9), - ("Φεβ", 2), - ("Αυγ", 8), - ("Δεκ", 12), - ("Μαρ", 3), - ("Ιαν", 1), - ("Ιουλ", 7), + ("ιουλ", 7), + ("δεκ", 12), + ("απρ", 4), + ("οκτ", 10), + ("σεπ", 9), + ("φεβ", 2), + ("νοε", 11), + ("μαΐ", 5), + ("ιουν", 6), + ("ιαν", 1), + ("μαρ", 3), + ("αυγ", 8), + ], + }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("χτες", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("σήμερα", TaToken { n: 0, unit: Some(TimeUnit::Day) }), ], }, }, Language::En | Language::EnGb | Language::EnIn => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 7485420634051515786, disps: &[ @@ -654,31 +811,42 @@ pub fn entry(lang: Language) -> Entry { ("year", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 12913932095322966823, disps: &[ - (4, 0), - (1, 1), - (3, 1), + (11, 10), + (0, 0), + (0, 0), ], entries: &[ - ("Sep", 9), - ("Nov", 11), - ("Oct", 10), - ("Jun", 6), - ("Jul", 7), - ("Apr", 4), - ("Feb", 2), - ("Mar", 3), - ("Dec", 12), - ("May", 5), - ("Jan", 1), - ("Aug", 8), + ("oct", 10), + ("sep", 9), + ("jul", 7), + ("jun", 6), + ("may", 5), + ("nov", 11), + ("apr", 4), + ("mar", 3), + ("jan", 1), + ("aug", 8), + ("feb", 2), + ("dec", 12), + ], + }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("yesterday", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("today", TaToken { n: 0, unit: Some(TimeUnit::Day) }), ], }, }, Language::Es | Language::EsUs | Language::Es419 => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 10121458955350035957, disps: &[ @@ -703,7 +871,7 @@ pub fn entry(lang: Language) -> Entry { ("minuto", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -726,8 +894,19 @@ pub fn entry(lang: Language) -> Entry { ("mar", 3), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("ayer", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("hoy", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Et => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -755,7 +934,7 @@ pub fn entry(lang: Language) -> Entry { ("päeva", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 14108922650502679131, disps: &[ @@ -778,8 +957,19 @@ pub fn entry(lang: Language) -> Entry { ("juuli", 7), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("eile", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("täna", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Eu => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -799,7 +989,7 @@ pub fn entry(lang: Language) -> Entry { ("ordubete", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, - date_order: "YD", + date_order: &[DateCmp::Y, DateCmp::D], months: ::phf::Map { key: 10121458955350035957, disps: &[ @@ -822,8 +1012,19 @@ pub fn entry(lang: Language) -> Entry { ("abu.", 8), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("atzo", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("gaur", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Fa => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -840,7 +1041,7 @@ pub fn entry(lang: Language) -> Entry { ("دقیقه", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -863,8 +1064,19 @@ pub fn entry(lang: Language) -> Entry { ("فوریه", 2), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 0), + ], + entries: &[ + ("امروز", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("دیروز", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Fi => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 12213676231523076107, disps: &[ @@ -889,7 +1101,7 @@ pub fn entry(lang: Language) -> Entry { ("sekunti", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: "DMY", + date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -897,8 +1109,19 @@ pub fn entry(lang: Language) -> Entry { entries: &[ ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("tänään", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("eilen", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Fil => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -915,31 +1138,42 @@ pub fn entry(lang: Language) -> Entry { ("linggo", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 12913932095322966823, disps: &[ - (1, 9), - (4, 10), (2, 0), + (7, 3), + (4, 3), ], entries: &[ - ("Ago", 8), - ("Set", 9), - ("Dis", 12), - ("May", 5), - ("Abr", 4), - ("Ene", 1), - ("Hul", 7), - ("Mar", 3), - ("Peb", 2), - ("Hun", 6), - ("Okt", 10), - ("Nob", 11), + ("abr", 4), + ("set", 9), + ("mar", 3), + ("may", 5), + ("hun", 6), + ("nob", 11), + ("okt", 10), + ("ene", 1), + ("hul", 7), + ("dis", 12), + ("ago", 8), + ("peb", 2), + ], + }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("ngayong", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("kahapon", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, }, Language::Fr | Language::FrCa => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 10121458955350035957, disps: &[ @@ -963,7 +1197,7 @@ pub fn entry(lang: Language) -> Entry { ("heure", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -986,8 +1220,19 @@ pub fn entry(lang: Language) -> Entry { ("juin", 6), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("hier", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("aujourd'hui", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Gl => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -1012,7 +1257,7 @@ pub fn entry(lang: Language) -> Entry { ("hora", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -1035,8 +1280,19 @@ pub fn entry(lang: Language) -> Entry { ("abr.", 4), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("hoxe", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("onte", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Gu => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -1053,7 +1309,7 @@ pub fn entry(lang: Language) -> Entry { ("કલાક", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -1076,8 +1332,19 @@ pub fn entry(lang: Language) -> Entry { ("ઑક\u{acd}ટો,", 10), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("આજ\u{ac7}", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("ગઈ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Hi => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -1094,7 +1361,7 @@ pub fn entry(lang: Language) -> Entry { ("मिनट", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -1117,8 +1384,19 @@ pub fn entry(lang: Language) -> Entry { ("अप\u{94d}र\u{948}ल", 4), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("कल", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("आज", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Hr => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -1149,7 +1427,7 @@ pub fn entry(lang: Language) -> Entry { ("sekundi", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -1172,8 +1450,19 @@ pub fn entry(lang: Language) -> Entry { ("srp", 7), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 0), + ], + entries: &[ + ("jučer", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("danas", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Hu => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 7485420634051515786, disps: &[ @@ -1198,7 +1487,7 @@ pub fn entry(lang: Language) -> Entry { ("hónapja", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ], }, - date_order: "YD", + date_order: &[DateCmp::Y, DateCmp::D], months: ::phf::Map { key: 7485420634051515786, disps: &[ @@ -1221,8 +1510,19 @@ pub fn entry(lang: Language) -> Entry { ("ápr.", 4), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 0), + ], + entries: &[ + ("tegnap", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ma", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Hy => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -1239,7 +1539,7 @@ pub fn entry(lang: Language) -> Entry { ("տարի", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -1262,8 +1562,19 @@ pub fn entry(lang: Language) -> Entry { ("ապր,", 4), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("երեկ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("այսօր", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Id => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 10121458955350035957, disps: &[ @@ -1280,31 +1591,42 @@ pub fn entry(lang: Language) -> Entry { ("tahun", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 12913932095322966823, + key: 106375038446233661, disps: &[ - (4, 0), - (11, 8), - (3, 6), + (0, 0), + (1, 7), + (0, 1), ], entries: &[ - ("Sep", 9), - ("Mei", 5), - ("Okt", 10), - ("Jan", 1), - ("Jun", 6), - ("Apr", 4), - ("Feb", 2), - ("Mar", 3), - ("Nov", 11), - ("Jul", 7), - ("Des", 12), - ("Agu", 8), + ("feb", 2), + ("mar", 3), + ("jul", 7), + ("jan", 1), + ("agu", 8), + ("nov", 11), + ("mei", 5), + ("jun", 6), + ("des", 12), + ("sep", 9), + ("okt", 10), + ("apr", 4), + ], + }, + timeago_nd_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (0, 0), + ], + entries: &[ + ("ini", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("kemarin", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, }, Language::Is => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -1329,7 +1651,7 @@ pub fn entry(lang: Language) -> Entry { ("klukkustund", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 8694567506910003252, disps: &[ @@ -1352,8 +1674,19 @@ pub fn entry(lang: Language) -> Entry { ("maí", 5), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 0), + ], + entries: &[ + ("dag", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("gær", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::It => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -1378,7 +1711,7 @@ pub fn entry(lang: Language) -> Entry { ("settimana", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 7485420634051515786, disps: &[ @@ -1401,8 +1734,19 @@ pub fn entry(lang: Language) -> Entry { ("giu", 6), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("ieri", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("oggi", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Iw => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 1937371814602216758, disps: &[ @@ -1434,7 +1778,7 @@ pub fn entry(lang: Language) -> Entry { ("שבועיים", TaToken { n: 2, unit: Some(TimeUnit::Week) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -1457,8 +1801,19 @@ pub fn entry(lang: Language) -> Entry { ("בפבר׳", 2), ], }, + timeago_nd_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (0, 0), + ], + entries: &[ + ("היום", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("אתמול", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Ja => Entry { + by_char: true, timeago_tokens: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -1475,7 +1830,7 @@ pub fn entry(lang: Language) -> Entry { ("分", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, - date_order: "YMD", + date_order: &[DateCmp::Y, DateCmp::M, DateCmp::D], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -1483,8 +1838,19 @@ pub fn entry(lang: Language) -> Entry { entries: &[ ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("日", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("本", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Ka => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -1501,7 +1867,7 @@ pub fn entry(lang: Language) -> Entry { ("წამის", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -1524,8 +1890,19 @@ pub fn entry(lang: Language) -> Entry { ("ოქტ.", 10), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("გუშინ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("დღეს", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Kk => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 7485420634051515786, disps: &[ @@ -1542,7 +1919,7 @@ pub fn entry(lang: Language) -> Entry { ("жыл", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ], }, - date_order: "YD", + date_order: &[DateCmp::Y, DateCmp::D], months: ::phf::Map { key: 10121458955350035957, disps: &[ @@ -1565,8 +1942,19 @@ pub fn entry(lang: Language) -> Entry { ("ақп.", 2), ], }, + timeago_nd_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (0, 0), + ], + entries: &[ + ("кеше", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("бүгін", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Km => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -1583,7 +1971,7 @@ pub fn entry(lang: Language) -> Entry { ("នាទ\u{17b8}ម\u{17bb}ន", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 7485420634051515786, disps: &[ @@ -1606,8 +1994,19 @@ pub fn entry(lang: Language) -> Entry { ("ធ\u{17d2}ន\u{17bc}", 12), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("បានធ\u{17d2}វើបច\u{17d2}ច\u{17bb}ប\u{17d2}បន\u{17d2}នភាពថ\u{17d2}ងៃនេះ", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("បានធ\u{17d2}វើបច\u{17d2}ច\u{17bb}ប\u{17d2}បន\u{17d2}នភាពម\u{17d2}ស\u{17b7}លម\u{17b7}ញ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Kn => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 2980949210194914378, disps: &[ @@ -1632,7 +2031,7 @@ pub fn entry(lang: Language) -> Entry { ("ವರ\u{ccd}ಷಗಳ", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -1655,8 +2054,19 @@ pub fn entry(lang: Language) -> Entry { ("ಅಕ\u{ccd}ಟೋ", 10), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 0), + ], + entries: &[ + ("ಇಂದು", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("ನ\u{cbf}ನ\u{ccd}ನ\u{cc6}", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Ko => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 10121458955350035957, disps: &[ @@ -1673,7 +2083,7 @@ pub fn entry(lang: Language) -> Entry { ("주", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, - date_order: "YMD", + date_order: &[DateCmp::Y, DateCmp::M, DateCmp::D], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -1681,8 +2091,18 @@ pub fn entry(lang: Language) -> Entry { entries: &[ ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("오늘", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Ky => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 10121458955350035957, disps: &[ @@ -1699,7 +2119,7 @@ pub fn entry(lang: Language) -> Entry { ("апта", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, - date_order: "YD", + date_order: &[DateCmp::Y, DateCmp::D], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -1722,8 +2142,19 @@ pub fn entry(lang: Language) -> Entry { ("-окт.", 10), ], }, + timeago_nd_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (0, 0), + ], + entries: &[ + ("кечээ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("бүгүн", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Lo => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -1740,7 +2171,7 @@ pub fn entry(lang: Language) -> Entry { ("ວ\u{eb4}ນາທ\u{eb5}ກ\u{ec8}ອນ", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 471159234146692604, disps: &[ @@ -1763,40 +2194,53 @@ pub fn entry(lang: Language) -> Entry { ("ພ.ພ.", 5), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("ອ\u{eb1}ບເດດມ\u{eb7}\u{ec9}ນ\u{eb5}\u{ec9}", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("ອ\u{eb1}ບເດດມ\u{eb7}\u{ec9}ວານນ\u{eb5}\u{ec9}", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Lt => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 15467950696543387533, disps: &[ - (11, 17), - (10, 19), + (0, 19), + (0, 2), + (1, 1), (2, 0), - (1, 2), + (0, 16), ], entries: &[ - ("dieną", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("valandų", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("metus", TaToken { n: 1, unit: Some(TimeUnit::Year) }), - ("minutes", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("dienų", TaToken { n: 1, unit: Some(TimeUnit::Day) }), - ("valandą", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("sekundžių", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("sekundę", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("mėnesių", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("savaites", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("savaitę", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("minučių", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ("mėnesį", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("dienas", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("savaitę", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("sekundę", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ("valandas", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), - ("savaičių", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("mėnesius", TaToken { n: 1, unit: Some(TimeUnit::Month) }), - ("minutę", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("sekundes", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("dienas", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("d.", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("mėnesių", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ("metų", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("mėnesius", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("metus", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("sekundes", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("sekundžių", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("savaičių", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("minučių", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("minutę", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("valandą", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("dienų", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("savaites", TaToken { n: 1, unit: Some(TimeUnit::Week) }), + ("dieną", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("minutes", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), + ("valandų", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, - date_order: "YMD", + date_order: &[DateCmp::Y, DateCmp::M, DateCmp::D], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -1804,8 +2248,19 @@ pub fn entry(lang: Language) -> Entry { entries: &[ ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("šiandien", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("vakar", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Lv => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -1830,7 +2285,7 @@ pub fn entry(lang: Language) -> Entry { ("dienas", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, - date_order: "YD", + date_order: &[DateCmp::Y, DateCmp::D], months: ::phf::Map { key: 10121458955350035957, disps: &[ @@ -1853,8 +2308,19 @@ pub fn entry(lang: Language) -> Entry { ("jūl.", 7), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("šodien", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("vakar", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Mk => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -1879,7 +2345,7 @@ pub fn entry(lang: Language) -> Entry { ("година", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ], }, - date_order: "DMY", + date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -1887,8 +2353,19 @@ pub fn entry(lang: Language) -> Entry { entries: &[ ], }, + timeago_nd_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (0, 0), + ], + entries: &[ + ("вчера", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("денес", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Ml => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -1905,7 +2382,7 @@ pub fn entry(lang: Language) -> Entry { ("മിനിറ\u{d4d}റ\u{d4d}", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, - date_order: "YD", + date_order: &[DateCmp::Y, DateCmp::D], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -1928,8 +2405,19 @@ pub fn entry(lang: Language) -> Entry { ("ഡിസം", 12), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("ഇന\u{d4d}ന\u{d4d}", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("ഇന\u{d4d}നലെ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Mn => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -1946,7 +2434,7 @@ pub fn entry(lang: Language) -> Entry { ("секундын", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: "YMD", + date_order: &[DateCmp::Y, DateCmp::M, DateCmp::D], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -1954,8 +2442,19 @@ pub fn entry(lang: Language) -> Entry { entries: &[ ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 0), + ], + entries: &[ + ("өнөөдөр", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("өчигдөр", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Mr => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -1980,7 +2479,7 @@ pub fn entry(lang: Language) -> Entry { ("आठवड\u{94d}याप\u{942}र\u{94d}वी", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -2003,8 +2502,19 @@ pub fn entry(lang: Language) -> Entry { ("डिस\u{947}\u{902},", 12), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("काल", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("आज", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Ms => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 10121458955350035957, disps: &[ @@ -2021,48 +2531,60 @@ pub fn entry(lang: Language) -> Entry { ("jam", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 12913932095322966823, disps: &[ - (8, 9), + (2, 1), + (3, 3), (0, 0), - (3, 0), ], entries: &[ - ("Mei", 5), - ("Sep", 9), - ("Nov", 11), - ("Feb", 2), - ("Jul", 7), - ("Ogo", 8), - ("Mac", 3), - ("Jun", 6), - ("Okt", 10), - ("Jan", 1), - ("Apr", 4), - ("Dis", 12), + ("jan", 1), + ("sep", 9), + ("mac", 3), + ("jun", 6), + ("mei", 5), + ("nov", 11), + ("apr", 4), + ("feb", 2), + ("ogo", 8), + ("jul", 7), + ("dis", 12), + ("okt", 10), + ], + }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("semalam", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ini", TaToken { n: 0, unit: Some(TimeUnit::Day) }), ], }, }, Language::My => Entry { + by_char: false, timeago_tokens: ::phf::Map { - key: 12913932095322966823, + key: 15467950696543387533, disps: &[ - (3, 0), + (4, 0), (3, 5), ], entries: &[ - ("နာရ\u{102e}", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ("န\u{103e}စ\u{103a}", TaToken { n: 1, unit: Some(TimeUnit::Year) }), + ("ရက\u{103a}က", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("မ\u{102d}နစ\u{103a}", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), - ("ပတ\u{103a}", TaToken { n: 1, unit: Some(TimeUnit::Week) }), - ("စက\u{1039}ကန\u{1037}\u{103a}", TaToken { n: 1, unit: Some(TimeUnit::Second) }), - ("ရက\u{103a}", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ("လ", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("နာရ\u{102e}", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), + ("ရက\u{103a}", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("စက\u{1039}ကန\u{1037}\u{103a}", TaToken { n: 1, unit: Some(TimeUnit::Second) }), + ("ပတ\u{103a}", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, - date_order: "YD", + date_order: &[DateCmp::Y, DateCmp::D], months: ::phf::Map { key: 7485420634051515786, disps: &[ @@ -2085,8 +2607,19 @@ pub fn entry(lang: Language) -> Entry { ("ဧ", 4), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("ယနေ\u{1037}", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("မနေ\u{1037}က", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Ne => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -2103,7 +2636,7 @@ pub fn entry(lang: Language) -> Entry { ("स\u{947}क\u{947}न\u{94d}ड", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: "YD", + date_order: &[DateCmp::Y, DateCmp::D], months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -2126,8 +2659,19 @@ pub fn entry(lang: Language) -> Entry { ("अक\u{94d}टोबर", 10), ], }, + timeago_nd_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (1, 0), + ], + entries: &[ + ("आज", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("हिजो", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Nl => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 14108922650502679131, disps: &[ @@ -2150,7 +2694,7 @@ pub fn entry(lang: Language) -> Entry { ("minuten", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -2173,8 +2717,19 @@ pub fn entry(lang: Language) -> Entry { ("mei", 5), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("gisteren", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("vandaag", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::No => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 7485420634051515786, disps: &[ @@ -2199,7 +2754,7 @@ pub fn entry(lang: Language) -> Entry { ("uke", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -2222,8 +2777,19 @@ pub fn entry(lang: Language) -> Entry { ("sep.", 9), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 0), + ], + entries: &[ + ("dag", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("går", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Or => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -2240,7 +2806,7 @@ pub fn entry(lang: Language) -> Entry { ("ଦ\u{b3f}ନ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 7485420634051515786, disps: &[ @@ -2263,8 +2829,19 @@ pub fn entry(lang: Language) -> Entry { ("ଫେବ\u{b43}ଆରୀ", 2), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 0), + ], + entries: &[ + ("ଆଜ\u{b3f}", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("ଗତକ\u{b3e}ଲ\u{b3f}", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Pa => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 399332969041170284, disps: &[ @@ -2284,7 +2861,7 @@ pub fn entry(lang: Language) -> Entry { ("ਘ\u{a70}ਟਾ", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 8694567506910003252, disps: &[ @@ -2307,8 +2884,19 @@ pub fn entry(lang: Language) -> Entry { ("ਅਕਤ\u{a42}", 10), ], }, + timeago_nd_tokens: ::phf::Map { + key: 10121458955350035957, + disps: &[ + (0, 0), + ], + entries: &[ + ("ਬੀ\u{a47}ਤ\u{a47}", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ਅ\u{a71}ਜ", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Pl => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -2339,7 +2927,7 @@ pub fn entry(lang: Language) -> Entry { ("sekundy", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -2362,8 +2950,19 @@ pub fn entry(lang: Language) -> Entry { ("mar", 3), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("dzisiaj", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("wczoraj", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Pt | Language::PtPt => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 10121458955350035957, disps: &[ @@ -2388,7 +2987,7 @@ pub fn entry(lang: Language) -> Entry { ("dias", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -2411,8 +3010,19 @@ pub fn entry(lang: Language) -> Entry { ("jan.", 1), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 0), + ], + entries: &[ + ("hoje", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("ontem", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Ro => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 14108922650502679131, disps: &[ @@ -2437,7 +3047,7 @@ pub fn entry(lang: Language) -> Entry { ("ore", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 7485420634051515786, disps: &[ @@ -2460,8 +3070,19 @@ pub fn entry(lang: Language) -> Entry { ("nov.", 11), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 0), + ], + entries: &[ + ("astăzi", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("ieri", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Ru => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -2493,7 +3114,7 @@ pub fn entry(lang: Language) -> Entry { ("месяца", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -2516,8 +3137,19 @@ pub fn entry(lang: Language) -> Entry { ("мая", 5), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("сегодня", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("вчера", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Si => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 10121458955350035957, disps: &[ @@ -2534,7 +3166,7 @@ pub fn entry(lang: Language) -> Entry { ("ද\u{dd2}න", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, - date_order: "YD", + date_order: &[DateCmp::Y, DateCmp::D], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -2557,8 +3189,20 @@ pub fn entry(lang: Language) -> Entry { ("අප\u{dca}\u{200d}රේල\u{dca}", 4), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 0), + ], + entries: &[ + ("ඊයෙ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("ඊයේ", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("අද", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Sk => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 8694567506910003252, disps: &[ @@ -2583,7 +3227,7 @@ pub fn entry(lang: Language) -> Entry { ("týždňami", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, - date_order: "DMY", + date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -2591,8 +3235,19 @@ pub fn entry(lang: Language) -> Entry { entries: &[ ], }, + timeago_nd_tokens: ::phf::Map { + key: 10121458955350035957, + disps: &[ + (0, 0), + ], + entries: &[ + ("včera", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("dnes", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Sl => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -2627,7 +3282,7 @@ pub fn entry(lang: Language) -> Entry { ("urama", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -2650,8 +3305,19 @@ pub fn entry(lang: Language) -> Entry { ("dec.", 12), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("danes", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("včeraj", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Sq => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 471159234146692604, disps: &[ @@ -2671,7 +3337,7 @@ pub fn entry(lang: Language) -> Entry { ("vjet", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 7485420634051515786, disps: &[ @@ -2694,8 +3360,19 @@ pub fn entry(lang: Language) -> Entry { ("jan", 1), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 0), + ], + entries: &[ + ("dje", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("sot", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Sr => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 10121458955350035957, disps: &[ @@ -2723,7 +3400,7 @@ pub fn entry(lang: Language) -> Entry { ("минута", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, - date_order: "DMY", + date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -2731,8 +3408,19 @@ pub fn entry(lang: Language) -> Entry { entries: &[ ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("јуче", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("данас", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::SrLatn => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -2761,7 +3449,7 @@ pub fn entry(lang: Language) -> Entry { ("sat", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, - date_order: "DMY", + date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -2769,8 +3457,19 @@ pub fn entry(lang: Language) -> Entry { entries: &[ ], }, + timeago_nd_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (1, 0), + ], + entries: &[ + ("juče", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("danas", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Sv => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -2794,7 +3493,7 @@ pub fn entry(lang: Language) -> Entry { ("sekunder", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -2817,8 +3516,19 @@ pub fn entry(lang: Language) -> Entry { ("maj", 5), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 0), + ], + entries: &[ + ("idag", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("igår", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Sw => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -2837,31 +3547,42 @@ pub fn entry(lang: Language) -> Entry { ("miaka", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 15467950696543387533, disps: &[ - (0, 3), - (3, 0), - (11, 5), + (4, 0), + (1, 4), + (6, 1), ], entries: &[ - ("Feb", 2), - ("Mac", 3), - ("Jun", 6), - ("Jan", 1), - ("Des", 12), - ("Jul", 7), - ("Mei", 5), - ("Okt", 10), - ("Nov", 11), - ("Apr", 4), - ("Sep", 9), - ("Ago", 8), + ("jan", 1), + ("jul", 7), + ("mac", 3), + ("feb", 2), + ("nov", 11), + ("okt", 10), + ("apr", 4), + ("jun", 6), + ("sep", 9), + ("ago", 8), + ("des", 12), + ("mei", 5), + ], + }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 0), + ], + entries: &[ + ("leo", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("jana", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, }, Language::Ta => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 7485420634051515786, disps: &[ @@ -2885,7 +3606,7 @@ pub fn entry(lang: Language) -> Entry { ("வ\u{bbe}ரம\u{bcd}", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -2908,8 +3629,19 @@ pub fn entry(lang: Language) -> Entry { ("மே,", 5), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("நேற\u{bcd}று", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("இன\u{bcd}று", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Te => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 14108922650502679131, disps: &[ @@ -2934,7 +3666,7 @@ pub fn entry(lang: Language) -> Entry { ("సంవత\u{c4d}సర\u{c3e}ల", TaToken { n: 1, unit: Some(TimeUnit::Year) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -2957,8 +3689,19 @@ pub fn entry(lang: Language) -> Entry { ("మ\u{c3e}ర\u{c4d}చ\u{c3f},", 3), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 0), + ], + entries: &[ + ("ఈ", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("న\u{c3f}న\u{c4d}న", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Th => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -2975,7 +3718,7 @@ pub fn entry(lang: Language) -> Entry { ("เด\u{e37}อนท\u{e35}\u{e48}ผ\u{e48}านมา", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -2998,8 +3741,19 @@ pub fn entry(lang: Language) -> Entry { ("พ.ค.", 5), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("อ\u{e31}ปเดตแล\u{e49}วว\u{e31}นน\u{e35}\u{e49}", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("อ\u{e31}ปเดตแล\u{e49}วเม\u{e37}\u{e48}อวาน", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Tr => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -3016,31 +3770,42 @@ pub fn entry(lang: Language) -> Entry { ("saniye", TaToken { n: 1, unit: Some(TimeUnit::Second) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 12913932095322966823, + key: 10121458955350035957, disps: &[ - (0, 10), - (2, 0), - (0, 8), + (0, 0), + (6, 9), + (0, 3), ], entries: &[ - ("Kas", 11), - ("Mar", 3), - ("Eyl", 9), - ("Nis", 4), - ("Ara", 12), - ("Eki", 10), - ("Oca", 1), - ("May", 5), - ("Ağu", 8), - ("Haz", 6), - ("Tem", 7), - ("Şub", 2), + ("haz", 6), + ("ağu", 8), + ("oca", 1), + ("nis", 4), + ("eyl", 9), + ("mar", 3), + ("ara", 12), + ("eki", 10), + ("kas", 11), + ("şub", 2), + ("tem", 7), + ("may", 5), + ], + }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("dün", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("bugün", TaToken { n: 0, unit: Some(TimeUnit::Day) }), ], }, }, Language::Uk => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 8694567506910003252, disps: &[ @@ -3072,7 +3837,7 @@ pub fn entry(lang: Language) -> Entry { ("дні", TaToken { n: 1, unit: Some(TimeUnit::Day) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -3095,8 +3860,19 @@ pub fn entry(lang: Language) -> Entry { ("лют.", 2), ], }, + timeago_nd_tokens: ::phf::Map { + key: 15467950696543387533, + disps: &[ + (1, 0), + ], + entries: &[ + ("вчора", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("сьогодні", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Ur => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 7485420634051515786, disps: &[ @@ -3120,7 +3896,7 @@ pub fn entry(lang: Language) -> Entry { ("گھنٹے", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 15467950696543387533, disps: &[ @@ -3143,8 +3919,19 @@ pub fn entry(lang: Language) -> Entry { ("مئی،", 5), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("آج", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("کل", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Uz => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -3161,7 +3948,7 @@ pub fn entry(lang: Language) -> Entry { ("oy", TaToken { n: 1, unit: Some(TimeUnit::Month) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { key: 10121458955350035957, disps: &[ @@ -3184,8 +3971,19 @@ pub fn entry(lang: Language) -> Entry { ("-iyl,", 7), ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("kecha", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("bugun", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Vi => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 10121458955350035957, disps: &[ @@ -3203,7 +4001,7 @@ pub fn entry(lang: Language) -> Entry { ("phút", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, - date_order: "DMY", + date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -3211,8 +4009,19 @@ pub fn entry(lang: Language) -> Entry { entries: &[ ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("qua", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("nay", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::ZhCn => Entry { + by_char: true, timeago_tokens: ::phf::Map { key: 2980949210194914378, disps: &[ @@ -3229,7 +4038,7 @@ pub fn entry(lang: Language) -> Entry { ("小", TaToken { n: 1, unit: Some(TimeUnit::Hour) }), ], }, - date_order: "YMD", + date_order: &[DateCmp::Y, DateCmp::M, DateCmp::D], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -3237,25 +4046,37 @@ pub fn entry(lang: Language) -> Entry { entries: &[ ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("日", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("今", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::ZhHk => Entry { + by_char: true, timeago_tokens: ::phf::Map { - key: 15467950696543387533, + key: 12213676231523076107, disps: &[ - (0, 3), + (3, 3), (2, 0), ], entries: &[ - ("秒", 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::Month) }), - ("日", 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::Week) }), + ("年", 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::Minute) }), ], }, - date_order: "YMD", + date_order: &[DateCmp::Y, DateCmp::M, DateCmp::D], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -3263,8 +4084,19 @@ pub fn entry(lang: Language) -> Entry { entries: &[ ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("天", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("今", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::ZhTw => Entry { + by_char: true, timeago_tokens: ::phf::Map { key: 10121458955350035957, disps: &[ @@ -3281,7 +4113,7 @@ pub fn entry(lang: Language) -> Entry { ("分", TaToken { n: 1, unit: Some(TimeUnit::Minute) }), ], }, - date_order: "YMD", + date_order: &[DateCmp::Y, DateCmp::M, DateCmp::D], months: ::phf::Map { key: 12913932095322966823, disps: &[ @@ -3289,8 +4121,19 @@ pub fn entry(lang: Language) -> Entry { entries: &[ ], }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("天", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("今", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ], + }, }, Language::Zu => Entry { + by_char: false, timeago_tokens: ::phf::Map { key: 8694567506910003252, disps: &[ @@ -3315,27 +4158,37 @@ pub fn entry(lang: Language) -> Entry { ("amaviki", TaToken { n: 1, unit: Some(TimeUnit::Week) }), ], }, - date_order: "DY", + date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 12913932095322966823, + key: 15467950696543387533, disps: &[ - (0, 4), - (1, 10), - (1, 0), + (6, 0), + (0, 0), + (2, 1), ], entries: &[ - ("ka-Aga", 8), - ("ka-Mas", 3), - ("ka-Jan", 1), - ("ka-Sep", 9), - ("ka-Jun", 6), - ("ka-Eph", 4), - ("ka-Mey", 5), - ("ka-Jul", 7), - ("ka-Feb", 2), - ("ka-Okt", 10), - ("ka-Dis", 12), - ("ka-Nov", 11), + ("ka-jun", 6), + ("ka-eph", 4), + ("ka-sep", 9), + ("ka-dis", 12), + ("ka-jan", 1), + ("ka-nov", 11), + ("ka-mey", 5), + ("ka-mas", 3), + ("ka-feb", 2), + ("ka-okt", 10), + ("ka-aga", 8), + ("ka-jul", 7), + ], + }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (0, 0), + ], + entries: &[ + ("izolo", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ("namuhla", TaToken { n: 0, unit: Some(TimeUnit::Day) }), ], }, }, diff --git a/src/timeago.rs b/src/timeago.rs index 999ac5a..df87dc0 100644 --- a/src/timeago.rs +++ b/src/timeago.rs @@ -1,5 +1,6 @@ -use std::cmp::Ordering; +use std::{cmp::Ordering, ops::Mul}; +use chrono::NaiveDate; use serde::{Deserialize, Serialize}; use crate::{dictionary, model::Language, util}; @@ -16,6 +17,12 @@ pub struct TaToken { pub unit: Option, } +#[derive(Copy, Clone, Debug, PartialEq, Eq)] +enum ParsedDate { + Absolute(NaiveDate), + Relative(TimeAgo), +} + #[derive(Copy, Clone, Debug, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)] #[serde(rename_all = "lowercase")] pub enum TimeUnit { @@ -28,6 +35,12 @@ pub enum TimeUnit { Year, } +pub enum DateCmp { + Y, + M, + D, +} + impl TimeUnit { fn seconds(&self) -> u64 { match self { @@ -66,34 +79,48 @@ impl PartialOrd for TimeAgo { } } -pub fn parse(lang: Language, textual_date: &str) -> Option { - let mappings = dictionary::entry(lang).timeago_tokens; +impl Mul for TimeAgo { + type Output = Self; - let filtered_str = textual_date + fn mul(self, rhs: u8) -> Self::Output { + TimeAgo { + n: self.n * rhs, + unit: self.unit, + } + } +} + +fn filter_str(string: &str) -> String { + string .to_lowercase() .chars() .filter(|c| c != &'\u{200b}' && !c.is_ascii_digit()) - .collect::(); + .collect() +} - let mut qu: u8 = util::parse_numeric(&textual_date).unwrap_or(1); +fn parse_ta_token(entry: &dictionary::Entry, nd: bool, filtered_str: &str) -> Option { + let tokens = match nd { + true => &entry.timeago_nd_tokens, + false => &entry.timeago_tokens, + }; + let mut qu = 1; - match lang { - Language::Ja | Language::ZhCn | Language::ZhHk | Language::ZhTw => { - filtered_str.chars().find_map(|word| { - mappings - .get(&word.to_string()) - .map(|t| match t.unit { - Some(unit) => Some(TimeAgo { n: t.n * qu, unit }), - None => { - qu = t.n; - None - } - }) - .flatten() - }) - } - _ => filtered_str.split_whitespace().find_map(|word| { - mappings + if entry.by_char { + filtered_str.chars().find_map(|word| { + tokens + .get(&word.to_string()) + .map(|t| match t.unit { + Some(unit) => Some(TimeAgo { n: t.n * qu, unit }), + None => { + qu = t.n; + None + } + }) + .flatten() + }) + } else { + filtered_str.split_whitespace().find_map(|word| { + tokens .get(word) .map(|t| match t.unit { Some(unit) => Some(TimeAgo { n: t.n * qu, unit }), @@ -103,7 +130,75 @@ pub fn parse(lang: Language, textual_date: &str) -> Option { } }) .flatten() - }), + }) + } +} + +fn parse_textual_month(entry: &dictionary::Entry, filtered_str: &str) -> Option { + if entry.by_char { + // Chinese/Japanese dont use textual months + None + } else { + filtered_str + .split_whitespace() + .find_map(|word| entry.months.get(word).map(|n| *n)) + } +} + +pub fn parse(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); + + parse_ta_token(&entry, false, &filtered_str).map(|ta| ta * qu) +} + +fn parse_date(lang: Language, textual_date: &str) -> Option { + let entry = dictionary::entry(lang); + let filtered_str = filter_str(textual_date); + + let nums = util::parse_numeric_vec::(textual_date); + + match nums.len() { + 0 => match parse_ta_token(&entry, true, &filtered_str) { + Some(timeago) => Some(ParsedDate::Relative(timeago)), + None => parse_ta_token(&entry, false, &filtered_str) + .map(|timeago| ParsedDate::Relative(timeago)), + }, + 1 => parse_ta_token(&entry, false, &filtered_str) + .map(|timeago| ParsedDate::Relative(timeago * nums[0] as u8)), + 2..=3 => { + if nums.len() == entry.date_order.len() { + let mut y: Option = None; + let mut m: Option = None; + let mut d: Option = None; + + nums.iter() + .enumerate() + .for_each(|(i, n)| match entry.date_order[i] { + DateCmp::Y => y = Some(*n), + DateCmp::M => m = Some(*n), + DateCmp::D => d = Some(*n), + }); + + if m.is_none() { + m = parse_textual_month(&entry, &filtered_str).map(|n| n as u16); + } + + match (y, m, d) { + (Some(y), Some(m), Some(d)) => Some(ParsedDate::Absolute(NaiveDate::from_ymd( + y.into(), + m.into(), + d.into(), + ))), + _ => None, + } + } else { + None + } + } + _ => None, } } @@ -125,8 +220,8 @@ mod tests { #[case] textual_date: &str, #[case] expect: Option, ) { - let secs_ago = parse(lang, textual_date); - assert_eq!(secs_ago, expect); + let time_ago = parse(lang, textual_date); + assert_eq!(time_ago, expect); } #[test] @@ -339,4 +434,132 @@ mod tests { assert_eq!(n_cases, 1065) } + + #[rstest] + #[case(Language::En, "Updated today", Some(ParsedDate::Relative(TimeAgo { n: 0, unit: TimeUnit::Day })))] + #[case(Language::En, "Updated yesterday", Some(ParsedDate::Relative(TimeAgo { n: 1, unit: TimeUnit::Day })))] + #[case(Language::En, "Updated 2 days ago", Some(ParsedDate::Relative(TimeAgo { n: 2, unit: TimeUnit::Day })))] + #[case( + Language::En, + "Last updated on Jun 04, 2003", + Some(ParsedDate::Absolute(NaiveDate::from_ymd(2003, 6, 4))) + )] + fn t_parse_date( + #[case] lang: Language, + #[case] textual_date: &str, + #[case] expect: Option, + ) { + let parsed_date = parse_date(lang, textual_date); + assert_eq!(parsed_date, expect); + } + + #[test] + fn t_parse_date_samples() { + let json_path = Path::new("testfiles/date/playlist_samples.json"); + let json_file = File::open(json_path).unwrap(); + let date_samples: BTreeMap> = + serde_json::from_reader(BufReader::new(json_file)).unwrap(); + + date_samples.iter().for_each(|(lang, samples)| { + assert_eq!( + parse_date(*lang, samples.get("Today").unwrap()), + Some(ParsedDate::Relative(TimeAgo { + n: 0, + unit: TimeUnit::Day + })), + "lang: {}", + lang + ); + assert_eq!( + parse_date(*lang, samples.get("Yesterday").unwrap()), + Some(ParsedDate::Relative(TimeAgo { + n: 1, + unit: TimeUnit::Day + })), + "lang: {}", + lang + ); + assert_eq!( + parse_date(*lang, samples.get("Ago").unwrap()), + Some(ParsedDate::Relative(TimeAgo { + n: 3, + unit: TimeUnit::Day + })), + "lang: {}", + lang + ); + assert_eq!( + parse_date(*lang, samples.get("Jan").unwrap()), + Some(ParsedDate::Absolute(NaiveDate::from_ymd(2020, 1, 3))), + "lang: {}", + lang + ); + assert_eq!( + parse_date(*lang, samples.get("Feb").unwrap()), + Some(ParsedDate::Absolute(NaiveDate::from_ymd(2016, 2, 7))), + "lang: {}", + lang + ); + assert_eq!( + parse_date(*lang, samples.get("Mar").unwrap()), + Some(ParsedDate::Absolute(NaiveDate::from_ymd(2015, 3, 9))), + "lang: {}", + lang + ); + assert_eq!( + parse_date(*lang, samples.get("Apr").unwrap()), + Some(ParsedDate::Absolute(NaiveDate::from_ymd(2017, 4, 2))), + "lang: {}", + lang + ); + assert_eq!( + parse_date(*lang, samples.get("May").unwrap()), + Some(ParsedDate::Absolute(NaiveDate::from_ymd(2014, 5, 22))), + "lang: {}", + lang + ); + assert_eq!( + parse_date(*lang, samples.get("Jun").unwrap()), + Some(ParsedDate::Absolute(NaiveDate::from_ymd(2014, 6, 28))), + "lang: {}", + lang + ); + assert_eq!( + parse_date(*lang, samples.get("Jul").unwrap()), + Some(ParsedDate::Absolute(NaiveDate::from_ymd(2014, 7, 2))), + "lang: {}", + lang + ); + assert_eq!( + parse_date(*lang, samples.get("Aug").unwrap()), + Some(ParsedDate::Absolute(NaiveDate::from_ymd(2015, 8, 23))), + "lang: {}", + lang + ); + assert_eq!( + parse_date(*lang, samples.get("Sep").unwrap()), + Some(ParsedDate::Absolute(NaiveDate::from_ymd(2018, 9, 16))), + "lang: {}", + lang + ); + assert_eq!( + parse_date(*lang, samples.get("Oct").unwrap()), + Some(ParsedDate::Absolute(NaiveDate::from_ymd(2014, 10, 31))), + "lang: {}", + lang + ); + assert_eq!( + parse_date(*lang, samples.get("Nov").unwrap()), + Some(ParsedDate::Absolute(NaiveDate::from_ymd(2016, 11, 3))), + "lang: {}", + lang + ); + assert_eq!( + parse_date(*lang, samples.get("Dec").unwrap()), + Some(ParsedDate::Absolute(NaiveDate::from_ymd(2021, 12, 24))), + "lang: {}", + lang + ); + }) + } } diff --git a/src/util.rs b/src/util.rs index e8d9ac2..27d9cae 100644 --- a/src/util.rs +++ b/src/util.rs @@ -2,7 +2,6 @@ use std::{collections::BTreeMap, str::FromStr}; use anyhow::Result; use fancy_regex::Regex; -use once_cell::sync::Lazy; use rand::Rng; use url::Url; diff --git a/testfiles/date/dictionary.json b/testfiles/date/dictionary.json index e55ffd9..7a04e9b 100644 --- a/testfiles/date/dictionary.json +++ b/testfiles/date/dictionary.json @@ -19,18 +19,22 @@ }, "date_order": "DY", "months": { - "Apr.": 4, - "Aug.": 8, - "Des.": 12, - "Feb.": 2, - "Jan.": 1, - "Jul.": 7, - "Jun.": 6, - "Mei": 5, - "Mrt.": 3, - "Nov.": 11, - "Okt.": 10, - "Sep.": 9 + "apr.": 4, + "aug.": 8, + "des.": 12, + "feb.": 2, + "jan.": 1, + "jul.": 7, + "jun.": 6, + "mei": 5, + "mrt.": 3, + "nov.": 11, + "okt.": 10, + "sep.": 9 + }, + "timeago_nd_tokens": { + "gister": "1D", + "vandag": "0D" } }, "am": { @@ -66,6 +70,10 @@ "ጁን": 6, "ጃንዩ": 1, "ፌብሩ": 2 + }, + "timeago_nd_tokens": { + "ትላንት": "1D", + "ዛሬ": "0D" } }, "ar": { @@ -98,7 +106,11 @@ "يومًا": "D" }, "date_order": "DMY", - "months": {} + "months": {}, + "timeago_nd_tokens": { + "اليوم": "0D", + "بالأمس": "1D" + } }, "as": { "equivalent": [], @@ -113,7 +125,11 @@ "সপ্তাহ": "W" }, "date_order": "DMY", - "months": {} + "months": {}, + "timeago_nd_tokens": { + "আজি": "0D", + "কালি": "1D" + } }, "az": { "equivalent": [], @@ -141,6 +157,10 @@ "okt": 10, "sen": 9, "yan": 1 + }, + "timeago_nd_tokens": { + "bugün": "0D", + "dünən": "1D" } }, "be": { @@ -186,6 +206,10 @@ "сне": 12, "сту": 1, "чэр": 6 + }, + "timeago_nd_tokens": { + "сёння": "0D", + "ўчора": "1D" } }, "bg": { @@ -208,7 +232,11 @@ "часа": "h" }, "date_order": "DMY", - "months": {} + "months": {}, + "timeago_nd_tokens": { + "вчера": "1D", + "днес": "0D" + } }, "bn": { "equivalent": [], @@ -236,6 +264,10 @@ "মার্চ,": 3, "মে,": 5, "সেপ্টেম্বর,": 9 + }, + "timeago_nd_tokens": { + "আজ": "0D", + "গতকাল": "1D" } }, "bs": { @@ -276,6 +308,10 @@ "nov": 11, "okt": 10, "sep": 9 + }, + "timeago_nd_tokens": { + "danas": "0D", + "jučer": "1D" } }, "ca": { @@ -311,6 +347,10 @@ "març": 3, "nov.": 11, "set.": 9 + }, + "timeago_nd_tokens": { + "ahir": "1D", + "avui": "0D" } }, "cs": { @@ -334,7 +374,11 @@ "týdny": "W" }, "date_order": "DMY", - "months": {} + "months": {}, + "timeago_nd_tokens": { + "dnes": "0D", + "včera": "1D" + } }, "da": { "equivalent": [], @@ -368,6 +412,10 @@ "nov.": 11, "okt.": 10, "sep.": 9 + }, + "timeago_nd_tokens": { + "dag": "0D", + "går": "1D" } }, "de": { @@ -390,7 +438,11 @@ "wochen": "W" }, "date_order": "DMY", - "months": {} + "months": {}, + "timeago_nd_tokens": { + "gestern": "1D", + "heute": "0D" + } }, "el": { "equivalent": [], @@ -413,18 +465,22 @@ }, "date_order": "DY", "months": { - "Απρ": 4, - "Αυγ": 8, - "Δεκ": 12, - "Ιαν": 1, - "Ιουλ": 7, - "Ιουν": 6, - "Μαΐ": 5, - "Μαρ": 3, - "Νοε": 11, - "Οκτ": 10, - "Σεπ": 9, - "Φεβ": 2 + "απρ": 4, + "αυγ": 8, + "δεκ": 12, + "ιαν": 1, + "ιουλ": 7, + "ιουν": 6, + "μαΐ": 5, + "μαρ": 3, + "νοε": 11, + "οκτ": 10, + "σεπ": 9, + "φεβ": 2 + }, + "timeago_nd_tokens": { + "σήμερα": "0D", + "χτες": "1D" } }, "en": { @@ -451,18 +507,22 @@ }, "date_order": "DY", "months": { - "Apr": 4, - "Aug": 8, - "Dec": 12, - "Feb": 2, - "Jan": 1, - "Jul": 7, - "Jun": 6, - "Mar": 3, - "May": 5, - "Nov": 11, - "Oct": 10, - "Sep": 9 + "apr": 4, + "aug": 8, + "dec": 12, + "feb": 2, + "jan": 1, + "jul": 7, + "jun": 6, + "mar": 3, + "may": 5, + "nov": 11, + "oct": 10, + "sep": 9 + }, + "timeago_nd_tokens": { + "today": "0D", + "yesterday": "1D" } }, "es": { @@ -501,6 +561,10 @@ "nov": 11, "oct": 10, "sept": 9 + }, + "timeago_nd_tokens": { + "ayer": "1D", + "hoy": "0D" } }, "et": { @@ -538,6 +602,10 @@ "okt": 10, "sept": 9, "veebr": 2 + }, + "timeago_nd_tokens": { + "eile": "1D", + "täna": "0D" } }, "eu": { @@ -569,6 +637,10 @@ "urr.": 10, "urt.": 1, "uzt.": 7 + }, + "timeago_nd_tokens": { + "atzo": "1D", + "gaur": "0D" } }, "fa": { @@ -597,6 +669,10 @@ "ژانویه": 1, "ژوئن": 6, "ژوئیه": 7 + }, + "timeago_nd_tokens": { + "امروز": "0D", + "دیروز": "1D" } }, "fi": { @@ -619,7 +695,11 @@ "vuotta": "Y" }, "date_order": "DMY", - "months": {} + "months": {}, + "timeago_nd_tokens": { + "eilen": "1D", + "tänään": "0D" + } }, "fil": { "equivalent": [], @@ -635,18 +715,22 @@ }, "date_order": "DY", "months": { - "Abr": 4, - "Ago": 8, - "Dis": 12, - "Ene": 1, - "Hul": 7, - "Hun": 6, - "Mar": 3, - "May": 5, - "Nob": 11, - "Okt": 10, - "Peb": 2, - "Set": 9 + "abr": 4, + "ago": 8, + "dis": 12, + "ene": 1, + "hul": 7, + "hun": 6, + "mar": 3, + "may": 5, + "nob": 11, + "okt": 10, + "peb": 2, + "set": 9 + }, + "timeago_nd_tokens": { + "kahapon": "1D", + "ngayong": "0D" } }, "fr": { @@ -683,6 +767,10 @@ "nov.": 11, "oct.": 10, "sept.": 9 + }, + "timeago_nd_tokens": { + "aujourd'hui": "0D", + "hier": "1D" } }, "gl": { @@ -718,6 +806,10 @@ "xan.": 1, "xul.": 7, "xuño": 6 + }, + "timeago_nd_tokens": { + "hoxe": "0D", + "onte": "1D" } }, "gu": { @@ -746,6 +838,10 @@ "માર્ચ,": 3, "મે,": 5, "સપ્ટે,": 9 + }, + "timeago_nd_tokens": { + "આજે": "0D", + "ગઈ": "1D" } }, "hi": { @@ -774,6 +870,10 @@ "मई": 5, "मार्च": 3, "सित॰": 9 + }, + "timeago_nd_tokens": { + "आज": "0D", + "कल": "1D" } }, "hr": { @@ -814,6 +914,10 @@ "svi": 5, "tra": 4, "velj": 2 + }, + "timeago_nd_tokens": { + "danas": "0D", + "jučer": "1D" } }, "hu": { @@ -849,6 +953,10 @@ "okt.": 10, "szept.": 9, "ápr.": 4 + }, + "timeago_nd_tokens": { + "ma": "0D", + "tegnap": "1D" } }, "hy": { @@ -877,6 +985,10 @@ "սեպ,": 9, "փտվ,": 2, "օգս,": 8 + }, + "timeago_nd_tokens": { + "այսօր": "0D", + "երեկ": "1D" } }, "id": { @@ -893,18 +1005,22 @@ }, "date_order": "DY", "months": { - "Agu": 8, - "Apr": 4, - "Des": 12, - "Feb": 2, - "Jan": 1, - "Jul": 7, - "Jun": 6, - "Mar": 3, - "Mei": 5, - "Nov": 11, - "Okt": 10, - "Sep": 9 + "agu": 8, + "apr": 4, + "des": 12, + "feb": 2, + "jan": 1, + "jul": 7, + "jun": 6, + "mar": 3, + "mei": 5, + "nov": 11, + "okt": 10, + "sep": 9 + }, + "timeago_nd_tokens": { + "ini": "0D", + "kemarin": "1D" } }, "is": { @@ -940,6 +1056,10 @@ "okt.": 10, "sep.": 9, "ágú.": 8 + }, + "timeago_nd_tokens": { + "dag": "0D", + "gær": "1D" } }, "it": { @@ -975,6 +1095,10 @@ "nov": 11, "ott": 10, "set": 9 + }, + "timeago_nd_tokens": { + "ieri": "1D", + "oggi": "0D" } }, "iw": { @@ -1016,6 +1140,10 @@ "בנוב׳": 11, "בספט׳": 9, "בפבר׳": 2 + }, + "timeago_nd_tokens": { + "אתמול": "1D", + "היום": "0D" } }, "ja": { @@ -1031,7 +1159,11 @@ "週": "W" }, "date_order": "YMD", - "months": {} + "months": {}, + "timeago_nd_tokens": { + "日": "1D", + "本": "0D" + } }, "ka": { "equivalent": [], @@ -1059,6 +1191,10 @@ "ნოე.": 11, "ოქტ.": 10, "სექ.": 9 + }, + "timeago_nd_tokens": { + "გუშინ": "1D", + "დღეს": "0D" } }, "kk": { @@ -1087,6 +1223,10 @@ "қар.": 11, "қаң.": 1, "қыр.": 9 + }, + "timeago_nd_tokens": { + "бүгін": "0D", + "кеше": "1D" } }, "km": { @@ -1115,6 +1255,10 @@ "វិច្ឆិកា": 11, "សីហា": 8, "ឧសភា": 5 + }, + "timeago_nd_tokens": { + "បានធ្វើបច្ចុប្បន្នភាពថ្ងៃនេះ": "0D", + "បានធ្វើបច្ចុប្បន្នភាពម្សិលមិញ": "1D" } }, "kn": { @@ -1150,6 +1294,10 @@ "ಮಾರ್ಚ್": 3, "ಮೇ": 5, "ಸೆಪ್ಟೆಂ": 9 + }, + "timeago_nd_tokens": { + "ಇಂದು": "0D", + "ನಿನ್ನೆ": "1D" } }, "ko": { @@ -1165,7 +1313,10 @@ "초": "s" }, "date_order": "YMD", - "months": {} + "months": {}, + "timeago_nd_tokens": { + "오늘": "0D" + } }, "ky": { "equivalent": [], @@ -1193,6 +1344,10 @@ "-сен.": 9, "-фев.": 2, "-янв.": 1 + }, + "timeago_nd_tokens": { + "бүгүн": "0D", + "кечээ": "1D" } }, "lo": { @@ -1221,12 +1376,17 @@ "ມ.ສ.": 4, "ມິ.ຖ.": 6, "ສ.ຫ.": 8 + }, + "timeago_nd_tokens": { + "ອັບເດດມື້ນີ້": "0D", + "ອັບເດດມື້ວານນີ້": "1D" } }, "lt": { "equivalent": [], "by_char": false, "timeago_tokens": { + "d.": "D", "dienas": "D", "dieną": "D", "dienų": "D", @@ -1249,7 +1409,11 @@ "valandų": "h" }, "date_order": "YMD", - "months": {} + "months": {}, + "timeago_nd_tokens": { + "vakar": "1D", + "šiandien": "0D" + } }, "lv": { "equivalent": [], @@ -1284,6 +1448,10 @@ "nov.": 11, "okt.": 10, "sept.": 9 + }, + "timeago_nd_tokens": { + "vakar": "1D", + "šodien": "0D" } }, "mk": { @@ -1306,7 +1474,11 @@ "часа": "h" }, "date_order": "DMY", - "months": {} + "months": {}, + "timeago_nd_tokens": { + "вчера": "1D", + "денес": "0D" + } }, "ml": { "equivalent": [], @@ -1334,6 +1506,10 @@ "മാർ": 3, "മേയ്": 5, "സെപ്റ്റം": 9 + }, + "timeago_nd_tokens": { + "ഇന്നലെ": "1D", + "ഇന്ന്": "0D" } }, "mn": { @@ -1349,7 +1525,11 @@ "өдрийн": "D" }, "date_order": "YMD", - "months": {} + "months": {}, + "timeago_nd_tokens": { + "өнөөдөр": "0D", + "өчигдөр": "1D" + } }, "mr": { "equivalent": [], @@ -1384,6 +1564,10 @@ "मार्च,": 3, "मे,": 5, "सप्टें,": 9 + }, + "timeago_nd_tokens": { + "आज": "0D", + "काल": "1D" } }, "ms": { @@ -1400,18 +1584,22 @@ }, "date_order": "DY", "months": { - "Apr": 4, - "Dis": 12, - "Feb": 2, - "Jan": 1, - "Jul": 7, - "Jun": 6, - "Mac": 3, - "Mei": 5, - "Nov": 11, - "Ogo": 8, - "Okt": 10, - "Sep": 9 + "apr": 4, + "dis": 12, + "feb": 2, + "jan": 1, + "jul": 7, + "jun": 6, + "mac": 3, + "mei": 5, + "nov": 11, + "ogo": 8, + "okt": 10, + "sep": 9 + }, + "timeago_nd_tokens": { + "ini": "0D", + "semalam": "1D" } }, "my": { @@ -1424,6 +1612,7 @@ "ပတ်": "W", "မိနစ်": "m", "ရက်": "D", + "ရက်က": "D", "လ": "M" }, "date_order": "YD", @@ -1440,6 +1629,10 @@ "အောက်": 10, "ဧ": 4, "ဩ": 8 + }, + "timeago_nd_tokens": { + "မနေ့က": "1D", + "ယနေ့": "0D" } }, "ne": { @@ -1468,6 +1661,10 @@ "मार्च": 3, "मे": 5, "सेप्टेम्बर": 9 + }, + "timeago_nd_tokens": { + "आज": "0D", + "हिजो": "1D" } }, "nl": { @@ -1501,6 +1698,10 @@ "nov.": 11, "okt.": 10, "sep.": 9 + }, + "timeago_nd_tokens": { + "gisteren": "1D", + "vandaag": "0D" } }, "no": { @@ -1536,6 +1737,10 @@ "nov.": 11, "okt.": 10, "sep.": 9 + }, + "timeago_nd_tokens": { + "dag": "0D", + "går": "1D" } }, "or": { @@ -1564,6 +1769,10 @@ "ମଇ": 5, "ମାର୍ଚ୍ଚ": 3, "ସେପ୍ଟେମ୍ବର": 9 + }, + "timeago_nd_tokens": { + "ଆଜି": "0D", + "ଗତକାଲି": "1D" } }, "pa": { @@ -1595,6 +1804,10 @@ "ਮਈ": 5, "ਮਾਰਚ": 3, "ਸਤੰ": 9 + }, + "timeago_nd_tokens": { + "ਅੱਜ": "0D", + "ਬੀੇਤੇ": "1D" } }, "pl": { @@ -1635,6 +1848,10 @@ "sie": 8, "sty": 1, "wrz": 9 + }, + "timeago_nd_tokens": { + "dzisiaj": "0D", + "wczoraj": "1D" } }, "pt": { @@ -1672,6 +1889,10 @@ "nov.": 11, "out.": 10, "set.": 9 + }, + "timeago_nd_tokens": { + "hoje": "0D", + "ontem": "1D" } }, "ro": { @@ -1707,6 +1928,10 @@ "nov.": 11, "oct.": 10, "sept.": 9 + }, + "timeago_nd_tokens": { + "astăzi": "0D", + "ieri": "1D" } }, "ru": { @@ -1748,6 +1973,10 @@ "сент.": 9, "февр.": 2, "янв.": 1 + }, + "timeago_nd_tokens": { + "вчера": "1D", + "сегодня": "0D" } }, "si": { @@ -1776,6 +2005,11 @@ "මාර්තු": 3, "මැයි": 5, "සැප්": 9 + }, + "timeago_nd_tokens": { + "අද": "0D", + "ඊයෙ": "1D", + "ඊයේ": "1D" } }, "sk": { @@ -1798,7 +2032,11 @@ "týždňom": "W" }, "date_order": "DMY", - "months": {} + "months": {}, + "timeago_nd_tokens": { + "dnes": "0D", + "včera": "1D" + } }, "sl": { "equivalent": [], @@ -1841,6 +2079,10 @@ "nov.": 11, "okt.": 10, "sep.": 9 + }, + "timeago_nd_tokens": { + "danes": "0D", + "včeraj": "1D" } }, "sq": { @@ -1872,6 +2114,10 @@ "shk": 2, "sht": 9, "tet": 10 + }, + "timeago_nd_tokens": { + "dje": "1D", + "sot": "0D" } }, "sr": { @@ -1896,7 +2142,11 @@ "секунди": "s" }, "date_order": "DMY", - "months": {} + "months": {}, + "timeago_nd_tokens": { + "данас": "0D", + "јуче": "1D" + } }, "sr-Latn": { "equivalent": [], @@ -1921,7 +2171,11 @@ "sekundi": "s" }, "date_order": "DMY", - "months": {} + "months": {}, + "timeago_nd_tokens": { + "danas": "0D", + "juče": "1D" + } }, "sv": { "equivalent": [], @@ -1955,6 +2209,10 @@ "nov.": 11, "okt.": 10, "sep.": 9 + }, + "timeago_nd_tokens": { + "idag": "0D", + "igår": "1D" } }, "sw": { @@ -1973,18 +2231,22 @@ }, "date_order": "DY", "months": { - "Ago": 8, - "Apr": 4, - "Des": 12, - "Feb": 2, - "Jan": 1, - "Jul": 7, - "Jun": 6, - "Mac": 3, - "Mei": 5, - "Nov": 11, - "Okt": 10, - "Sep": 9 + "ago": 8, + "apr": 4, + "des": 12, + "feb": 2, + "jan": 1, + "jul": 7, + "jun": 6, + "mac": 3, + "mei": 5, + "nov": 11, + "okt": 10, + "sep": 9 + }, + "timeago_nd_tokens": { + "jana": "1D", + "leo": "0D" } }, "ta": { @@ -2019,6 +2281,10 @@ "பிப்.,": 2, "மார்.,": 3, "மே,": 5 + }, + "timeago_nd_tokens": { + "இன்று": "0D", + "நேற்று": "1D" } }, "te": { @@ -2054,6 +2320,10 @@ "మార్చి,": 3, "మే,": 5, "సెప్టెం,": 9 + }, + "timeago_nd_tokens": { + "ఈ": "0D", + "నిన్న": "1D" } }, "th": { @@ -2082,6 +2352,10 @@ "มี.ค.": 3, "ส.ค.": 8, "เม.ย.": 4 + }, + "timeago_nd_tokens": { + "อัปเดตแล้ววันนี้": "0D", + "อัปเดตแล้วเมื่อวาน": "1D" } }, "tr": { @@ -2098,18 +2372,22 @@ }, "date_order": "DY", "months": { - "Ara": 12, - "Ağu": 8, - "Eki": 10, - "Eyl": 9, - "Haz": 6, - "Kas": 11, - "Mar": 3, - "May": 5, - "Nis": 4, - "Oca": 1, - "Tem": 7, - "Şub": 2 + "ara": 12, + "ağu": 8, + "eki": 10, + "eyl": 9, + "haz": 6, + "kas": 11, + "mar": 3, + "may": 5, + "nis": 4, + "oca": 1, + "tem": 7, + "şub": 2 + }, + "timeago_nd_tokens": { + "bugün": "0D", + "dün": "1D" } }, "uk": { @@ -2151,6 +2429,10 @@ "січ.": 1, "трав.": 5, "черв.": 6 + }, + "timeago_nd_tokens": { + "вчора": "1D", + "сьогодні": "0D" } }, "ur": { @@ -2185,6 +2467,10 @@ "مئی،": 5, "مارچ،": 3, "نومبر،": 11 + }, + "timeago_nd_tokens": { + "آج": "0D", + "کل": "1D" } }, "uz": { @@ -2213,6 +2499,10 @@ "-okt,": 10, "-sen,": 9, "-yan,": 1 + }, + "timeago_nd_tokens": { + "bugun": "0D", + "kecha": "1D" } }, "vi": { @@ -2229,7 +2519,11 @@ "tuần": "W" }, "date_order": "DMY", - "months": {} + "months": {}, + "timeago_nd_tokens": { + "nay": "0D", + "qua": "1D" + } }, "zh-CN": { "equivalent": [], @@ -2244,13 +2538,18 @@ "秒": "s" }, "date_order": "YMD", - "months": {} + "months": {}, + "timeago_nd_tokens": { + "今": "0D", + "日": "1D" + } }, "zh-HK": { "equivalent": [], "by_char": true, "timeago_tokens": { "分": "m", + "天": "D", "小": "h", "年": "Y", "日": "D", @@ -2259,7 +2558,11 @@ "秒": "s" }, "date_order": "YMD", - "months": {} + "months": {}, + "timeago_nd_tokens": { + "今": "0D", + "天": "1D" + } }, "zh-TW": { "equivalent": [], @@ -2274,7 +2577,11 @@ "週": "W" }, "date_order": "YMD", - "months": {} + "months": {}, + "timeago_nd_tokens": { + "今": "0D", + "天": "1D" + } }, "zu": { "equivalent": [], @@ -2297,18 +2604,22 @@ }, "date_order": "DY", "months": { - "ka-Aga": 8, - "ka-Dis": 12, - "ka-Eph": 4, - "ka-Feb": 2, - "ka-Jan": 1, - "ka-Jul": 7, - "ka-Jun": 6, - "ka-Mas": 3, - "ka-Mey": 5, - "ka-Nov": 11, - "ka-Okt": 10, - "ka-Sep": 9 + "ka-aga": 8, + "ka-dis": 12, + "ka-eph": 4, + "ka-feb": 2, + "ka-jan": 1, + "ka-jul": 7, + "ka-jun": 6, + "ka-mas": 3, + "ka-mey": 5, + "ka-nov": 11, + "ka-okt": 10, + "ka-sep": 9 + }, + "timeago_nd_tokens": { + "izolo": "1D", + "namuhla": "0D" } } } \ No newline at end of file From 9ddf9a3ac4a9cabc055c568f0d7c6a3d0c547c75 Mon Sep 17 00:00:00 2001 From: ThetaDev Date: Wed, 7 Sep 2022 18:09:43 +0200 Subject: [PATCH 3/3] fix date parsing --- src/codegen/collect_playlist_dates.rs | 238 ++++++++++++++------------ src/codegen/gen_dictionary.rs | 2 +- src/dictionary.rs | 191 +++++++++++++-------- src/timeago.rs | 19 +- testfiles/date/dictionary.json | 106 +++++++----- 5 files changed, 332 insertions(+), 224 deletions(-) diff --git a/src/codegen/collect_playlist_dates.rs b/src/codegen/collect_playlist_dates.rs index 6801a29..fcf1f4b 100644 --- a/src/codegen/collect_playlist_dates.rs +++ b/src/codegen/collect_playlist_dates.rs @@ -84,15 +84,7 @@ async fn collect_dates() { serde_json::to_writer_pretty(file, &collected_dates).unwrap(); } -fn filter_str(string: &str) -> String { - string - .to_lowercase() - .chars() - .filter(|c| c != &'\u{200b}' && !c.is_ascii_digit()) - .collect() -} - -#[test] +// #[test] fn write_samples_to_dict() { let json_path = Path::new("testfiles/date/playlist_samples.json").to_path_buf(); let json_file = File::open(json_path).unwrap(); @@ -132,96 +124,17 @@ fn write_samples_to_dict() { ]; for lang in langs { - let datestr_table = collected_dates.get(&lang).unwrap(); - let mut month_words: HashMap = HashMap::new(); - let mut num_order = "".to_owned(); - - // Today/Yesterday - let mut td_words: HashMap = HashMap::new(); - { - let mut parse = |string: &str, n: i8| { - filter_str(string).split_whitespace().for_each(|word| { - td_words - .entry(word.to_owned()) - .and_modify(|e| *e = 0) - .or_insert(n); - }); - }; - - parse(datestr_table.get(&DateCase::Today).unwrap(), 1); - parse(datestr_table.get(&DateCase::Yesterday).unwrap(), 2); - parse(datestr_table.get(&DateCase::Ago).unwrap(), 0); - parse(datestr_table.get(&DateCase::Jan).unwrap(), 0); - } - - // n days ago - { - let datestr = datestr_table.get(&DateCase::Ago).unwrap(); - let tago = timeago::parse(lang, &datestr); - assert_eq!( - tago, - Some(TimeAgo { - n: 3, - unit: timeago::TimeUnit::Day - }), - "lang: {}, txt: {}", - lang, - datestr - ); - } - - // Absolute dates (Jan 3, 2020) - months.iter().enumerate().for_each(|(n, m)| { - let datestr = datestr_table.get(m).unwrap(); - - // Get order of numbers - let nums = util::parse_numeric_vec::(&datestr); - let date = dates[n]; - - let this_num_order = nums - .iter() - .map(|n| { - if n == &date.0 { - "Y" - } else if n == &date.1 { - "M" - } else if n == &date.2 { - "D" - } else { - panic!("invalid number {} in {}", n, datestr); - } - }) - .collect::(); - - if num_order == "" { - num_order = this_num_order; - } else { - assert_eq!(this_num_order, num_order); - } - - // Insert words into the map - filter_str(&datestr).split_whitespace().for_each(|word| { - month_words - .entry(word.to_owned()) - .and_modify(|e| *e = 0) - .or_insert(n + 1); - }); - }); + let mut datestr_tables = vec![collected_dates.get(&lang).unwrap()]; + dict.get(&lang) + .unwrap() + .equivalent + .iter() + .for_each(|l| datestr_tables.push(collected_dates.get(l).unwrap())); let dict_entry = dict.entry(lang).or_default(); - dict_entry.date_order = num_order; - dict_entry.months = month_words - .iter() - .filter_map(|(word, m)| { - if *m == 0 { - None - } else { - Some((word.to_owned(), *m as u8)) - } - }) - .collect(); + let mut num_order = "".to_owned(); - match lang { + let collect_nd_tokens = match lang { Language::Ja | Language::ZhCn | Language::ZhHk @@ -232,25 +145,134 @@ fn write_samples_to_dict() { | Language::Ur | Language::Uz | Language::Te + | Language::PtPt // Singhalese YT translation is broken (today == tomorrow) - | Language::Si => {} - _ => { - dict_entry.timeago_nd_tokens = td_words + | Language::Si => false, + _ => true, + }; + + dict_entry.months = BTreeMap::new(); + + if collect_nd_tokens { + dict_entry.timeago_nd_tokens = BTreeMap::new(); + } + + for datestr_table in &datestr_tables { + let mut month_words: HashMap = HashMap::new(); + let mut td_words: HashMap = HashMap::new(); + + // Today/Yesterday + { + let mut parse = |string: &str, n: i8| { + timeago::filter_str(string) + .split_whitespace() + .for_each(|word| { + td_words + .entry(word.to_owned()) + .and_modify(|e| *e = 0) + .or_insert(n); + }); + }; + + parse(datestr_table.get(&DateCase::Today).unwrap(), 1); + parse(datestr_table.get(&DateCase::Yesterday).unwrap(), 2); + parse(datestr_table.get(&DateCase::Ago).unwrap(), 0); + parse(datestr_table.get(&DateCase::Jan).unwrap(), 0); + } + + // n days ago + { + let datestr = datestr_table.get(&DateCase::Ago).unwrap(); + let tago = timeago::parse(lang, &datestr); + assert_eq!( + tago, + Some(TimeAgo { + n: 3, + unit: timeago::TimeUnit::Day + }), + "lang: {}, txt: {}", + lang, + datestr + ); + } + + // Absolute dates (Jan 3, 2020) + months.iter().enumerate().for_each(|(n, m)| { + let datestr = datestr_table.get(m).unwrap(); + + // Get order of numbers + let nums = util::parse_numeric_vec::(&datestr); + let date = dates[n]; + + let this_num_order = nums .iter() - .filter_map(|(word, n)| { - match n { - // Today - 1 => Some((word.to_owned(), "0D".to_owned())), - // Yesterday - 2 => Some((word.to_owned(), "1D".to_owned())), - _ => None, + .map(|n| { + if n == &date.0 { + "Y" + } else if n == &date.1 { + "M" + } else if n == &date.2 { + "D" + } else { + panic!("invalid number {} in {}", n, datestr); } }) - .collect(); + .collect::(); - assert_eq!(dict_entry.timeago_nd_tokens.len(), 2, "lang: {}, nd_tokens: {:?}", lang, &dict_entry.timeago_nd_tokens); + if num_order == "" { + num_order = this_num_order; + } else { + assert_eq!(this_num_order, num_order, "lang: {}", lang); + } + + // Insert words into the map + timeago::filter_str(&datestr) + .split_whitespace() + .for_each(|word| { + month_words + .entry(word.to_owned()) + .and_modify(|e| *e = 0) + .or_insert(n + 1); + }); + }); + + month_words.iter().for_each(|(word, m)| { + if *m != 0 { + dict_entry.months.insert(word.to_owned(), *m as u8); + }; + }); + + if collect_nd_tokens { + td_words.iter().for_each(|(word, n)| { + match n { + // Today + 1 => { + dict_entry + .timeago_nd_tokens + .insert(word.to_owned(), "0D".to_owned()); + } + // Yesterday + 2 => { + dict_entry + .timeago_nd_tokens + .insert(word.to_owned(), "1D".to_owned()); + } + _ => {} + }; + }); + + if datestr_tables.len() == 1 { + assert_eq!( + dict_entry.timeago_nd_tokens.len(), + 2, + "lang: {}, nd_tokens: {:?}", + lang, + &dict_entry.timeago_nd_tokens + ); + } } } + dict_entry.date_order = num_order; } super::write_dict(&dict); diff --git a/src/codegen/gen_dictionary.rs b/src/codegen/gen_dictionary.rs index 143c950..be66a7c 100644 --- a/src/codegen/gen_dictionary.rs +++ b/src/codegen/gen_dictionary.rs @@ -27,7 +27,7 @@ fn parse_tu(tu: &str) -> (u8, Option) { } } -#[test] +// #[test] fn generate_dictionary() { let dict = super::read_dict(); diff --git a/src/dictionary.rs b/src/dictionary.rs index bf94de8..520ff7c 100644 --- a/src/dictionary.rs +++ b/src/dictionary.rs @@ -815,23 +815,24 @@ pub fn entry(lang: Language) -> Entry { months: ::phf::Map { key: 12913932095322966823, disps: &[ - (11, 10), - (0, 0), - (0, 0), + (8, 0), + (5, 8), + (4, 0), ], entries: &[ - ("oct", 10), - ("sep", 9), - ("jul", 7), - ("jun", 6), - ("may", 5), ("nov", 11), + ("sept", 9), ("apr", 4), - ("mar", 3), - ("jan", 1), - ("aug", 8), - ("feb", 2), ("dec", 12), + ("mar", 3), + ("jun", 6), + ("sep", 9), + ("may", 5), + ("jul", 7), + ("jan", 1), + ("oct", 10), + ("feb", 2), + ("aug", 8), ], }, timeago_nd_tokens: ::phf::Map { @@ -1199,25 +1200,26 @@ pub fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 15467950696543387533, + key: 12913932095322966823, disps: &[ - (0, 0), - (5, 2), - (2, 1), + (9, 0), + (7, 6), + (1, 5), ], entries: &[ - ("déc.", 12), - ("mai", 5), - ("sept.", 9), - ("nov.", 11), - ("mars", 3), - ("févr.", 2), - ("avr.", 4), - ("janv.", 1), ("août", 8), - ("oct.", 10), + ("avr.", 4), ("juil.", 7), + ("févr.", 2), + ("oct.", 10), + ("déc.", 12), + ("janv.", 1), + ("mars", 3), ("juin", 6), + ("juill.", 7), + ("nov.", 11), + ("sept.", 9), + ("mai", 5), ], }, timeago_nd_tokens: ::phf::Map { @@ -2121,25 +2123,25 @@ pub fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::Y, DateCmp::D], months: ::phf::Map { - key: 12913932095322966823, + key: 2980949210194914378, disps: &[ (0, 0), - (4, 0), - (0, 10), + (5, 0), + (0, 0), ], entries: &[ - ("-янв.", 1), - ("-июн.", 6), - ("-апр.", 4), - ("-мар.", 3), - ("-дек.", 12), - ("-май", 5), - ("-июл.", 7), - ("-авг.", 8), - ("-ноя.", 11), - ("-фев.", 2), - ("-сен.", 9), - ("-окт.", 10), + ("фев.", 2), + ("ноя.", 11), + ("авг.", 8), + ("май", 5), + ("янв.", 1), + ("окт.", 10), + ("июл.", 7), + ("сен.", 9), + ("июн.", 6), + ("мар.", 3), + ("дек.", 12), + ("апр.", 4), ], }, timeago_nd_tokens: ::phf::Map { @@ -2961,7 +2963,7 @@ pub fn entry(lang: Language) -> Entry { ], }, }, - Language::Pt | Language::PtPt => Entry { + Language::Pt => Entry { by_char: false, timeago_tokens: ::phf::Map { key: 10121458955350035957, @@ -3021,6 +3023,51 @@ pub fn entry(lang: Language) -> Entry { ], }, }, + Language::PtPt => Entry { + by_char: false, + timeago_tokens: ::phf::Map { + key: 10121458955350035957, + disps: &[ + (6, 9), + (0, 0), + (2, 6), + ], + 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) }), + ("mês", TaToken { n: 1, unit: Some(TimeUnit::Month) }), + ("dias", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, + date_order: &[DateCmp::D, DateCmp::M, DateCmp::Y], + months: ::phf::Map { + key: 12913932095322966823, + disps: &[ + ], + entries: &[ + ], + }, + timeago_nd_tokens: ::phf::Map { + key: 12913932095322966823, + disps: &[ + (1, 0), + ], + entries: &[ + ("hoje", TaToken { n: 0, unit: Some(TimeUnit::Day) }), + ("ontem", TaToken { n: 1, unit: Some(TimeUnit::Day) }), + ], + }, + }, Language::Ro => Entry { by_char: false, timeago_tokens: ::phf::Map { @@ -3950,25 +3997,25 @@ pub fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 10121458955350035957, + key: 12913932095322966823, disps: &[ + (2, 5), (0, 0), - (5, 9), - (0, 1), + (9, 6), ], entries: &[ - ("-avg,", 8), - ("-iyn,", 6), - ("-sen,", 9), - ("-noy,", 11), - ("-fev,", 2), - ("-apr,", 4), - ("-yan,", 1), - ("-may,", 5), - ("-mar,", 3), - ("-dek,", 12), - ("-okt,", 10), - ("-iyl,", 7), + ("mar,", 3), + ("may,", 5), + ("noy,", 11), + ("avg,", 8), + ("iyl,", 7), + ("iyn,", 6), + ("yan,", 1), + ("fev,", 2), + ("dek,", 12), + ("okt,", 10), + ("sen,", 9), + ("apr,", 4), ], }, timeago_nd_tokens: ::phf::Map { @@ -4160,25 +4207,25 @@ pub fn entry(lang: Language) -> Entry { }, date_order: &[DateCmp::D, DateCmp::Y], months: ::phf::Map { - key: 15467950696543387533, + key: 7485420634051515786, disps: &[ - (6, 0), - (0, 0), - (2, 1), + (2, 0), + (1, 9), + (1, 10), ], entries: &[ - ("ka-jun", 6), - ("ka-eph", 4), - ("ka-sep", 9), - ("ka-dis", 12), - ("ka-jan", 1), - ("ka-nov", 11), - ("ka-mey", 5), - ("ka-mas", 3), - ("ka-feb", 2), - ("ka-okt", 10), - ("ka-aga", 8), - ("ka-jul", 7), + ("dis", 12), + ("jul", 7), + ("aga", 8), + ("okt", 10), + ("feb", 2), + ("nov", 11), + ("sep", 9), + ("mas", 3), + ("eph", 4), + ("mey", 5), + ("jan", 1), + ("jun", 6), ], }, timeago_nd_tokens: ::phf::Map { diff --git a/src/timeago.rs b/src/timeago.rs index df87dc0..71ed3d7 100644 --- a/src/timeago.rs +++ b/src/timeago.rs @@ -90,11 +90,19 @@ impl Mul for TimeAgo { } } -fn filter_str(string: &str) -> String { +pub fn filter_str(string: &str) -> String { string .to_lowercase() .chars() - .filter(|c| c != &'\u{200b}' && !c.is_ascii_digit()) + .filter_map(|c| { + if c == '\u{200b}' || c.is_ascii_digit() { + None + } else if c == '-' { + Some(' ') + } else { + Some(c) + } + }) .collect() } @@ -439,6 +447,7 @@ mod tests { #[case(Language::En, "Updated today", Some(ParsedDate::Relative(TimeAgo { n: 0, unit: TimeUnit::Day })))] #[case(Language::En, "Updated yesterday", Some(ParsedDate::Relative(TimeAgo { n: 1, unit: TimeUnit::Day })))] #[case(Language::En, "Updated 2 days ago", Some(ParsedDate::Relative(TimeAgo { n: 2, unit: TimeUnit::Day })))] + #[case(Language::Si, "ඊයේ යාවත්කාලීන කරන ලදී", Some(ParsedDate::Relative(TimeAgo { n: 1, unit: TimeUnit::Day })))] #[case( Language::En, "Last updated on Jun 04, 2003", @@ -473,7 +482,11 @@ mod tests { assert_eq!( parse_date(*lang, samples.get("Yesterday").unwrap()), Some(ParsedDate::Relative(TimeAgo { - n: 1, + // YT's Singhalese translation has an error (yesterday == today) + n: match lang { + Language::Si => 0, + _ => 1, + }, unit: TimeUnit::Day })), "lang: {}", diff --git a/testfiles/date/dictionary.json b/testfiles/date/dictionary.json index 7a04e9b..9e7513a 100644 --- a/testfiles/date/dictionary.json +++ b/testfiles/date/dictionary.json @@ -518,7 +518,8 @@ "may": 5, "nov": 11, "oct": 10, - "sep": 9 + "sep": 9, + "sept": 9 }, "timeago_nd_tokens": { "today": "0D", @@ -761,6 +762,7 @@ "févr.": 2, "janv.": 1, "juil.": 7, + "juill.": 7, "juin": 6, "mai": 5, "mars": 3, @@ -1332,18 +1334,18 @@ }, "date_order": "YD", "months": { - "-авг.": 8, - "-апр.": 4, - "-дек.": 12, - "-июл.": 7, - "-июн.": 6, - "-май": 5, - "-мар.": 3, - "-ноя.": 11, - "-окт.": 10, - "-сен.": 9, - "-фев.": 2, - "-янв.": 1 + "авг.": 8, + "апр.": 4, + "дек.": 12, + "июл.": 7, + "июн.": 6, + "май": 5, + "мар.": 3, + "ноя.": 11, + "окт.": 10, + "сен.": 9, + "фев.": 2, + "янв.": 1 }, "timeago_nd_tokens": { "бүгүн": "0D", @@ -1855,9 +1857,7 @@ } }, "pt": { - "equivalent": [ - "pt-PT" - ], + "equivalent": [], "by_char": false, "timeago_tokens": { "ano": "Y", @@ -1895,6 +1895,32 @@ "ontem": "1D" } }, + "pt-PT": { + "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", + "semana": "W", + "semanas": "W" + }, + "date_order": "DMY", + "months": {}, + "timeago_nd_tokens": { + "hoje": "0D", + "ontem": "1D" + } + }, "ro": { "equivalent": [], "by_char": false, @@ -2487,18 +2513,18 @@ }, "date_order": "DY", "months": { - "-apr,": 4, - "-avg,": 8, - "-dek,": 12, - "-fev,": 2, - "-iyl,": 7, - "-iyn,": 6, - "-mar,": 3, - "-may,": 5, - "-noy,": 11, - "-okt,": 10, - "-sen,": 9, - "-yan,": 1 + "apr,": 4, + "avg,": 8, + "dek,": 12, + "fev,": 2, + "iyl,": 7, + "iyn,": 6, + "mar,": 3, + "may,": 5, + "noy,": 11, + "okt,": 10, + "sen,": 9, + "yan,": 1 }, "timeago_nd_tokens": { "bugun": "0D", @@ -2604,18 +2630,18 @@ }, "date_order": "DY", "months": { - "ka-aga": 8, - "ka-dis": 12, - "ka-eph": 4, - "ka-feb": 2, - "ka-jan": 1, - "ka-jul": 7, - "ka-jun": 6, - "ka-mas": 3, - "ka-mey": 5, - "ka-nov": 11, - "ka-okt": 10, - "ka-sep": 9 + "aga": 8, + "dis": 12, + "eph": 4, + "feb": 2, + "jan": 1, + "jul": 7, + "jun": 6, + "mas": 3, + "mey": 5, + "nov": 11, + "okt": 10, + "sep": 9 }, "timeago_nd_tokens": { "izolo": "1D",