diff options
author | Yarden Shoham <hrsi88@gmail.com> | 2022-10-17 07:08:21 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-17 12:08:21 +0800 |
commit | acdb92ad425b1f7035b677f430516ab4a9f645c2 (patch) | |
tree | 5b330de8147223502f49623fa71f8855edb7995a /web_src | |
parent | 683c9af89fea6eaa126e31f30270cc995fcb2e22 (diff) | |
download | gitea-acdb92ad425b1f7035b677f430516ab4a9f645c2.tar.gz gitea-acdb92ad425b1f7035b677f430516ab4a9f645c2.zip |
Localize all timestamps (#21440)
Following
* #21410
We are now able to localize all timestamps. Some examples:
`short-date` format, French, user profile page:
![image](https://user-images.githubusercontent.com/20454870/195622461-aa0d5b93-f8df-42ad-881c-9c16606bf387.png)
`date-time` format, Portuguese, mirror repository settings page:
![image](https://user-images.githubusercontent.com/20454870/195623191-7a37d77c-4a02-4140-846d-f290a65ea21d.png)
Signed-off-by: Yarden Shoham <hrsi88@gmail.com>
Signed-off-by: Yarden Shoham <hrsi88@gmail.com>
Co-authored-by: Gusted <williamzijl7@hotmail.com>
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Diffstat (limited to 'web_src')
-rw-r--r-- | web_src/js/features/formatting.js | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/web_src/js/features/formatting.js b/web_src/js/features/formatting.js index 5f4633bba2..c8f5db9e14 100644 --- a/web_src/js/features/formatting.js +++ b/web_src/js/features/formatting.js @@ -1,7 +1,10 @@ import {prettyNumber} from '../utils.js'; const {lang} = document.documentElement; + const dateFormatter = new Intl.DateTimeFormat(lang, {year: 'numeric', month: 'long', day: 'numeric'}); +const shortDateFormatter = new Intl.DateTimeFormat(lang, {year: 'numeric', month: 'short', day: 'numeric'}); +const dateTimeFormatter = new Intl.DateTimeFormat(lang, {year: 'numeric', month: 'short', day: 'numeric', hour: 'numeric', minute: 'numeric', second: 'numeric'}); export function initFormattingReplacements() { // replace english formatted numbers with locale-specific separators @@ -13,9 +16,28 @@ export function initFormattingReplacements() { } } - // for each <time></time> tag, if it has the data-format="date" attribute, format - // the text according to the user's chosen locale - for (const timeElement of document.querySelectorAll('time[data-format="date"]')) { - timeElement.textContent = dateFormatter.format(new Date(timeElement.dateTime)); + // for each <time></time> tag, if it has the data-format attribute, format + // the text according to the user's chosen locale and formatter. + formatAllTimeElements(); +} + +function formatAllTimeElements() { + const timeElements = document.querySelectorAll('time[data-format]'); + for (const timeElement of timeElements) { + const formatter = getFormatter(timeElement.dataset.format); + timeElement.textContent = formatter.format(new Date(timeElement.dateTime)); + } +} + +function getFormatter(format) { + switch (format) { + case 'date': + return dateFormatter; + case 'short-date': + return shortDateFormatter; + case 'date-time': + return dateTimeFormatter; + default: + throw new Error('Unknown format'); } } |