add info for item
This commit is contained in:
106
src/renderer/utils/itemTranslator.ts
Normal file
106
src/renderer/utils/itemTranslator.ts
Normal file
@ -0,0 +1,106 @@
|
||||
// utils/itemTranslator.ts
|
||||
|
||||
/* ----------------------------- */
|
||||
/* ENCHANT TRANSLATIONS */
|
||||
/* ----------------------------- */
|
||||
|
||||
export const ENCHANT_TRANSLATIONS: Record<string, string> = {
|
||||
sharpness: 'Острота',
|
||||
smite: 'Небесная кара',
|
||||
bane_of_arthropods: 'Бич членистоногих',
|
||||
efficiency: 'Эффективность',
|
||||
unbreaking: 'Прочность',
|
||||
fortune: 'Удача',
|
||||
silk_touch: 'Шёлковое касание',
|
||||
power: 'Сила',
|
||||
punch: 'Отдача',
|
||||
flame: 'Огонь',
|
||||
infinity: 'Бесконечность',
|
||||
protection: 'Защита',
|
||||
fire_protection: 'Огнестойкость',
|
||||
blast_protection: 'Взрывоустойчивость',
|
||||
projectile_protection: 'Защита от снарядов',
|
||||
feather_falling: 'Невесомость',
|
||||
respiration: 'Подводное дыхание',
|
||||
aqua_affinity: 'Подводник',
|
||||
thorns: 'Шипы',
|
||||
depth_strider: 'Подводная ходьба',
|
||||
frost_walker: 'Ледоход',
|
||||
mending: 'Починка',
|
||||
binding_curse: 'Проклятие несъёмности',
|
||||
vanishing_curse: 'Проклятие утраты',
|
||||
looting: 'Добыча',
|
||||
sweeping: 'Разящий клинок',
|
||||
fire_aspect: 'Заговор огня',
|
||||
knockback: 'Отдача',
|
||||
luck_of_the_sea: 'Морская удача',
|
||||
lure: 'Приманка',
|
||||
};
|
||||
|
||||
/* ----------------------------- */
|
||||
/* GENERIC META TRANSLATIONS */
|
||||
/* ----------------------------- */
|
||||
|
||||
export const META_TRANSLATIONS: Record<string, string> = {
|
||||
durability: 'Прочность',
|
||||
max_durability: 'Максимальная прочность',
|
||||
custom_model_data: 'Кастомная модель',
|
||||
unbreakable: 'Неразрушимый',
|
||||
repair_cost: 'Стоимость починки',
|
||||
hide_flags: 'Скрытые флаги',
|
||||
rarity: 'Редкость',
|
||||
damage: 'Урон',
|
||||
attack_speed: 'Скорость атаки',
|
||||
armor: 'Броня',
|
||||
armor_toughness: 'Твёрдость брони',
|
||||
knockback_resistance: 'Сопротивление отталкиванию',
|
||||
glowing: 'Подсветка',
|
||||
};
|
||||
|
||||
/* ----------------------------- */
|
||||
/* FORMATTERS */
|
||||
/* ----------------------------- */
|
||||
|
||||
export function translateEnchant(key: string): string {
|
||||
return ENCHANT_TRANSLATIONS[key.toLowerCase()] ?? beautifyKey(key);
|
||||
}
|
||||
|
||||
export function translateMetaKey(key: string): string {
|
||||
return META_TRANSLATIONS[key.toLowerCase()] ?? beautifyKey(key);
|
||||
}
|
||||
|
||||
export function beautifyKey(key: string): string {
|
||||
return key
|
||||
.replace(/_/g, ' ')
|
||||
.replace(/\b\w/g, (l) => l.toUpperCase());
|
||||
}
|
||||
|
||||
/* ----------------------------- */
|
||||
/* VALUE FORMATTERS */
|
||||
/* ----------------------------- */
|
||||
|
||||
export function formatMetaValue(value: any): string {
|
||||
if (typeof value === 'boolean') return value ? 'Да' : 'Нет';
|
||||
if (typeof value === 'number') return String(value);
|
||||
if (typeof value === 'string') return value;
|
||||
|
||||
if (Array.isArray(value)) return value.join(', ');
|
||||
if (typeof value === 'object') return 'Сложное значение';
|
||||
|
||||
return String(value);
|
||||
}
|
||||
|
||||
/* ----------------------------- */
|
||||
/* ENCHANT LIST HELPER */
|
||||
/* ----------------------------- */
|
||||
|
||||
export function formatEnchants(
|
||||
enchants?: Record<string, number>,
|
||||
): { label: string; level: number }[] {
|
||||
if (!enchants || typeof enchants !== 'object') return [];
|
||||
|
||||
return Object.entries(enchants).map(([key, level]) => ({
|
||||
label: translateEnchant(key),
|
||||
level,
|
||||
}));
|
||||
}
|
||||
Reference in New Issue
Block a user