feat: make byte size units translatable (#5969)

Make byte size units translatable
This commit is contained in:
Jerozgen
2026-05-09 12:26:59 +03:00
committed by GitHub
parent e8665f43ca
commit 3052a14d95
21 changed files with 214 additions and 222 deletions

View File

@@ -0,0 +1,39 @@
import { defineMessage, useVIntl } from '#ui/composables/i18n.ts'
const messages = [
defineMessage({
id: 'format.bytes.0',
defaultMessage: '{count, plural, one {# byte} other {# bytes}}',
}),
defineMessage({
id: 'format.bytes.1',
defaultMessage: '{count, number} KiB',
}),
defineMessage({
id: 'format.bytes.2',
defaultMessage: '{count, number} MiB',
}),
defineMessage({
id: 'format.bytes.3',
defaultMessage: '{count, number} GiB',
}),
defineMessage({
id: 'format.bytes.4',
defaultMessage: '{count, number} TiB',
}),
]
export function useFormatBytes() {
const { formatMessage } = useVIntl()
function format(bytes: number, decimals = 2): string {
if (bytes === 0) return formatMessage(messages[0], { count: 0 })
const exponent = Math.min(Math.floor(Math.log(bytes) / Math.log(1024)), messages.length - 1)
return formatMessage(messages[exponent], {
count: (bytes / Math.pow(1024, exponent)).toFixed(decimals),
})
}
return format
}

View File

@@ -1,5 +1,6 @@
export * from './debug-logger'
export * from './dynamic-font-size'
export * from './format-bytes'
export * from './format-date-time'
export * from './format-money'
export * from './format-number'