51 lines
1.2 KiB
TypeScript
51 lines
1.2 KiB
TypeScript
import { clsx, type ClassValue } from "clsx"
|
|
import { twMerge } from "tailwind-merge"
|
|
|
|
export function cn(...inputs: ClassValue[]) {
|
|
return twMerge(clsx(inputs))
|
|
}
|
|
|
|
export function formatDate(dateString: string, locale: string): string {
|
|
const date = new Date(dateString);
|
|
const options: Intl.DateTimeFormatOptions = {
|
|
year: 'numeric',
|
|
month: 'long',
|
|
day: 'numeric',
|
|
};
|
|
|
|
return date.toLocaleDateString(locale === 'zh' ? 'zh-CN' : locale === 'zh-TW' ? 'zh-TW' : 'en-US', options);
|
|
}
|
|
|
|
export function getLocalizedPath(path: string, locale: string): string {
|
|
if (locale === 'zh') {
|
|
return path;
|
|
}
|
|
return `/${locale}${path}`;
|
|
}
|
|
|
|
export function getLanguageFromLocale(locale: string): string {
|
|
switch (locale) {
|
|
case 'zh':
|
|
return 'zh-CN';
|
|
case 'zh-TW':
|
|
return 'zh-TW';
|
|
case 'en':
|
|
return 'en';
|
|
default:
|
|
return 'zh-CN';
|
|
}
|
|
}
|
|
|
|
export function getLocaleFromLanguage(language: string): string {
|
|
switch (language) {
|
|
case 'zh-CN':
|
|
return 'zh';
|
|
case 'zh-TW':
|
|
return 'zh-TW';
|
|
case 'en':
|
|
return 'en';
|
|
default:
|
|
return 'zh';
|
|
}
|
|
}
|