Add i18n support and translations for finnish language
This commit is contained in:
parent
b88e19e311
commit
4b8c8be226
9 changed files with 239 additions and 84 deletions
|
@ -1,28 +1,44 @@
|
|||
import dayjs, { Dayjs } from 'dayjs';
|
||||
import { Duration } from 'dayjs/plugin/duration.js';
|
||||
import Language from './types/Language';
|
||||
import { MessageKey, message } from './i18n';
|
||||
|
||||
export const formatTimestamp = (timestamp: Dayjs): string => timestamp.format('YYYY-MM-DD HH:mm');
|
||||
|
||||
export const formatTime = (time: Dayjs): string => time.format('HH:mm');
|
||||
|
||||
export const formatDuration = (duration: Duration, short?: boolean): string => {
|
||||
if (duration.hours() === 0 && duration.minutes() === 0) {
|
||||
return 'none';
|
||||
}
|
||||
export const formatDuration =
|
||||
(language: Language) =>
|
||||
(duration: Duration, short?: boolean): string => {
|
||||
if (duration.hours() === 0 && duration.minutes() === 0) {
|
||||
return 'none';
|
||||
}
|
||||
|
||||
const formatString = short
|
||||
? 'HH:mm'
|
||||
: duration.hours() > 0 && duration.minutes() > 0
|
||||
? `H [hour${duration.hours() > 1 ? 's' : ''} and] m [minute${duration.minutes() > 1 ? 's' : ''}]`
|
||||
: duration.hours() > 0
|
||||
? `H [hour${duration.hours() > 1 ? 's' : ''}]`
|
||||
: `m [minute${duration.minutes() > 1 ? 's' : ''}]`;
|
||||
let formatString;
|
||||
|
||||
return duration.format(formatString);
|
||||
};
|
||||
if (short) {
|
||||
formatString = 'HH:mm';
|
||||
} else if (language === Language.fi) {
|
||||
formatString =
|
||||
duration.hours() > 0 && duration.minutes() > 0
|
||||
? `H [tunti${duration.hours() > 1 ? 'a' : ''} ja] m [minuutti${duration.minutes() > 1 ? 'a' : ''}]`
|
||||
: duration.hours() > 0
|
||||
? `H [tunti${duration.hours() > 1 ? 'a' : ''}]`
|
||||
: `m [minutti${duration.minutes() > 1 ? 'a' : ''}]`;
|
||||
} else {
|
||||
formatString =
|
||||
duration.hours() > 0 && duration.minutes() > 0
|
||||
? `H [hour${duration.hours() > 1 ? 's' : ''} and] m [minute${duration.minutes() > 1 ? 's' : ''}]`
|
||||
: duration.hours() > 0
|
||||
? `H [hour${duration.hours() > 1 ? 's' : ''}]`
|
||||
: `m [minute${duration.minutes() > 1 ? 's' : ''}]`;
|
||||
}
|
||||
|
||||
export const getHoursRoundedStr = (duration: Duration) =>
|
||||
`(${getHoursRounded(duration)} as hours rounded to next even 15 minutes)`;
|
||||
return duration.format(formatString);
|
||||
};
|
||||
|
||||
export const getHoursRoundedStr = (language: Language) => (duration: Duration) =>
|
||||
`(${getHoursRounded(duration)} ${message(language)(MessageKey.hoursRounded)})`;
|
||||
|
||||
const getHoursRounded = (duration: Duration) => {
|
||||
// Round up to the next multiple of 15
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue