mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-26 12:27:06 +00:00 
			
		
		
		
	Localize all timestamps (#21440)
Following * #21410 We are now able to localize all timestamps. Some examples: `short-date` format, French, user profile page:  `date-time` format, Portuguese, mirror repository settings page:  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>
This commit is contained in:
		| @@ -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'); | ||||
|   } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Yarden Shoham
					Yarden Shoham