Merge branch 'LucasDower:main' into main

This commit is contained in:
Hannes 2025-04-01 15:08:10 +02:00 committed by GitHub
commit 841d8ea477
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 358 additions and 0 deletions

View File

@ -1,9 +1,11 @@
import { DeepPartial } from '../src/util/type_util';
import { en_GB } from './en_GB';
import { en_US } from './en_US';
import { es_ES } from './es_ES';
import { fr_FR } from './fr_FR';
import { ru_RU } from './ru_RU';
import { zh_CN } from './zh_CN';
import { zh_TW } from './zh_TW';
import { ja_JP } from './ja_JP';
export type TTranslationMap = typeof en_GB.translations;
@ -17,8 +19,10 @@ export type TLocaleDefinition = {
export const locales = [
en_GB,
en_US,
es_ES,
ru_RU,
zh_CN,
zh_TW,
fr_FR,
ja_JP,
];

188
loc/es_ES.ts Normal file
View File

@ -0,0 +1,188 @@
// Credits:
// kassiopy studios team :)
export const es_ES = {
display_name: 'Español',
language_code: 'es-ES',
translations: {
something_went_wrong: 'Algo salió mal de forma inesperada',
description: 'Una herramienta para convertir modelos 3D a formatos de Minecraft como a .schematic, .litematic, .schem y .nbt.',
init: {
initialising: 'Inicializando...',
ready: 'Listo',
},
settings: {
heading: 'AJUSTES',
components: {
language: 'Idioma',
overrideHeight: 'Límite de altura máxima',
},
changing_language: 'Cambiando idioma...',
changed_language: 'Idioma cambiado',
},
import: {
heading: '1. IMPORTAR',
button: 'Cargando malla',
importing_mesh: 'Importando Malla...',
imported_mesh: 'Importada malla',
rendering_mesh: 'Renderizando malla...',
rendered_mesh: 'Malla renderizada',
no_vertices_loaded: 'Ningún vértice fue cargado',
no_triangles_loaded: 'Ningún triángulo fue cargado',
could_not_scale_mesh: 'No se pudo escalar la malla correctamente - La malla es probablemente 2D, rótala de tal forma que tenga una altura distinta de cero',
invalid_encoding: 'Se detectó caracteres desconocidos, por favor codifica usando UTF-8',
invalid_face_data: 'Los datos de cara tienen un número inesperado de datos de vértices: {{count, number}}',
too_many_triangles: 'La malla importada tiene {{count, number}} triángulos, considere simplificarlo en un DDC como Blender',
vertex_triangle_count: '{{vertex_count, number}} vértices, {{triangle_count, number}} triángulos',
missing_normals: 'Algunos vértices no tienen definidas sus normales, esto puede causar que los voxels se alineen de forma incorrecta',
failed_to_parse_line: 'Failed attempt to parse "{{line}}", because "{{error}}"',
gltf_experimental: 'El importador GLTF es experimental y puede producir resultados inesperados',
unsupported_image_type: 'No se pudo leer \'{{file_name}}\', tipo de archivo no compatible\'{{file_type}}\'',
components: {
input: 'Modelo 3D (.obj, .glb)',
no_file_chosen: 'No se ha elegido ningún archivo',
rotation: 'Rotación',
},
},
materials: {
heading: '2. MATERIALES',
button: 'Actualizar materiales',
updating_materials: 'Actualizando materiales...',
updated_materials: 'Materiales actualizados',
components: {
'no_materials_loaded': 'Ningún material ha sido cargado',
'material_type': 'Tipo',
'solid': 'Solido',
'textured': 'Texturizado',
'no_image_loaded': 'Ninguna imagen cargada',
'choose': 'Elegir',
'texture_filtering': 'Filtrado',
'texture_wrap': 'Unificar',
'transparency': 'Transparencia',
'diffuse_map': 'Diffuse map',
'alpha': 'Alpha',
'alpha_map': 'Mapa alfa',
'alpha_channel': 'Canal alpha',
'linear': 'Lineal',
'nearest': 'Más cercano',
'clamp': 'Clamp',
'repeat': 'Repetir',
'none': 'Ninguno',
'alpha_constant': 'Alfa constante',
'diffuse_map_alpha_channel': 'Canal alfa de mapa difuso',
},
},
voxelise: {
heading: '3. VOXELIZAR',
button: 'Voxelizar materiales',
loading_voxel_mesh: 'Cargando malla voxel...',
loaded_voxel_mesh: 'Malla voxel cargada',
rendering_voxel_mesh: 'Renderizando la malla voxel...',
rendered_voxel_mesh: 'Malla voxel renderizada',
voxel_count: '{{count, number}} voxels',
voxel_mesh_dimensions: 'Las dimensiones son {{x, number}} x {{y, number}} x {{z, number}}',
components: {
constraint_axis: 'Eje de restricción',
size: 'Tamaño',
algorithm: 'Algoritmo',
ambient_occlusion: 'Oclusión ambiental',
multisampling: 'Muestreo múltiple',
voxel_overlap: 'Solapamiento de voxels',
colour: 'Color',
x_axis: 'X (ancho) (rojo)',
y_axis: 'Y (alto) (verde)',
z_axis: 'Z (profundo) (azul)',
ray_based: 'Basado en rayos',
bvh_ray: 'BVH Basado en rayos',
ncrb: 'NCRB',
average_recommended: 'Medio (recomendado)',
first: 'First',
on_recommended: 'on (recomendado)',
off_faster: 'off (rápido)',
},
},
assign: {
heading: '3. ASIGNAR',
button: 'Asignar bloques',
loading_block_mesh: 'Cargando la malla de bloques...',
loaded_block_mesh: 'Malla de bloques cargada',
rendering_block_mesh: 'Renderizando la malla de bloques...',
rendered_block_mesh: 'Malla de bloques renderizada',
deselected_blocks: 'Bloques sin seleccionar {{count, number}}',
selected_blocks: 'Bloques seleccionados {{count, number}}',
found_blocks: 'Bloques encontrados {{count, number}}',
block_not_namespaced: '"{{block_name}}" no tiene el namespace correctamente, quizás se refiere a "minecraft:{{block_name}}"?',
could_not_use_block: 'No se puede utilizar el bloque "{{block_name}}" ya que no es compatible',
reading_palette: 'Leyendo {{file_name}}...',
block_palette_missing_light_blocks: 'La paleta de bloques no contiene bloques de luz para colocar',
blocks_missing_textures: '{{count, number}} Los bloques de paleta que carecen de un atlas de texturas, no se utilizarán',
falling_blocks: '{{count, number}} Los bloques caerán por gravedad cuando se coloque esta estructura',
components: {
texture_atlas: 'Atlas de texturas',
block_palette: 'Paleta de bloques',
dithering: 'Difuminado',
dithering_magnitude: 'Magnitud de difuminado',
fallable_blocks: 'Bloques caíbles',
colour_accuracy: 'Precisión del color',
smart_averaging: 'Promedio inteligente',
smoothness: 'Suavizado',
calculate_lighting: 'Calcular iluminación',
light_threshold: 'Umbral de luz',
vanilla: 'Vanilla',
ordered: 'Ordered',
random: 'Aleatorio',
off: 'Off',
replace_falling: 'Reemplazar bloques caíbles con solidos',
replace_fallable: 'Reemplazar bloques caíbles con solidos',
do_nothing: 'No hacer nada',
search: 'Buscar...',
},
},
export: {
heading: '5. EXPORTAR',
button: 'Exportar estructura',
exporting_structure: 'Exportando estructura...',
exported_structure: 'Estructura exportada',
schematic_unsupported_blocks: '{{count, number}} bloques ({{unique, number}} unique) no son compatibles con el formato .schematic, en su lugar se utilizarán bloques de piedra. Pruebe a utilizar la paleta compatible con schematics, o exporte utilizando .litematica',
nbt_exporter_too_big: 'Los bloques de estructura sólo admiten estructuras de tamaño 48x48x48, los bloques fuera de este rango serán eliminados',
components: {
exporter: 'Exporter',
litematic: 'Litematic (.litematic)',
schematic: 'Schematic (.schematic)',
sponge_schematic: 'Sponge Schematic (.schem)',
structure_blocks: 'Structure blocks (.nbt)',
indexed_json: 'Indexed JSON (.json)',
uncompressed_json: 'Uncompressed JSON (.json)',
},
},
misc: {
red: 'Rojo',
green: 'Verde',
blue: 'Azul',
alpha: 'Alfa',
on: 'On',
off: 'Off',
advanced_settings: 'Ajustes avanzados'
},
toolbar: {
view_mesh: 'Ver malla',
view_voxel_mesh: 'Ver malla de voxels',
view_block_mesh: 'Ver malla de bloques',
toggle_grid: 'Alternar rejilla',
toggle_axes: 'Alternar ejes',
toggle_night_vision: 'Alternar visión nocturna',
toggle_slice_viewer: 'Alternar vista de porción',
decrement_slice: 'Disminuir porción',
increment_slice: 'Incrementar porción',
zoom_in: 'Acercar',
zoom_out: 'Alejar',
reset_camera: 'Resetear cámara',
perspective_camera: 'Cámara perspectiva',
orthographic_camera: 'Cámara ortográfica',
open_github_repo: 'Abrir repo de GitHub',
open_github_issues: 'Abrir GitHub issues',
join_discord: 'Unirse al servidor de Discord',
kofi_donate: 'Donar via Ko-fi',
}
},
};

166
loc/zh_TW.ts Normal file
View File

@ -0,0 +1,166 @@
// Credits:
// dirtTW
import { TLocaleDefinition } from './base';
export const zh_TW: TLocaleDefinition = {
display_name: '繁體中文(臺灣)',
language_code: 'zh-TW',
translations: {
something_went_wrong: '發生了意料之外的錯誤',
description: '一款將 3D 模型轉換為 .schematic、.litematic、.schem 和 .nbt 等 Minecraft 方塊格式的工具',
init: {
initialising: '正在初始化...',
ready: '完成',
},
settings: {
heading: '設定',
components: {
language: '語言',
},
changing_language: '正在更換語言...',
changed_language: '已更換語言',
},
import: {
heading: '1. 導入',
button: '載入網格模型',
importing_mesh: '正在導入網格模型...',
imported_mesh: '已導入網格模型',
rendering_mesh: '正在繪製網格模型...',
rendered_mesh: '已繪製網格模型',
no_vertices_loaded: '未載入任何頂點',
no_triangles_loaded: '未載入任何三角面',
could_not_scale_mesh: '無法正確縮放網格模型 - 此模型似乎為 2D 平面,請旋轉此模型,使其垂直高度不為零',
invalid_encoding: '發現無法識別的字元,請使用 UTF-8 編碼',
invalid_face_data: '網格面資料與頂點數量不匹配: {{count, number}}',
too_many_triangles: '導入的網格模型擁有 {{count, number}} 個三角面,請考慮使用 Blender 等建模軟體進行簡化',
vertex_triangle_count: '{{vertex_count, number}} 個頂點,{{triangle_count, number}} 個三角面',
missing_normals: '部分頂點未定義法線,可能導致體素錯誤對齊',
failed_to_parse_line: '嘗試解析「{{line}}」失敗,原因:「{{error}}」',
gltf_experimental: '導入 GLTF 目前為實驗性功能,可能產生預料外的結果',
components: {
input: '3D 模型(.obj, /.glb)',
rotation: '旋轉',
},
},
materials: {
heading: '2. 紋理',
button: '更新紋理',
updating_materials: '正在更新紋理...',
updated_materials: '已更新紋理',
components: {
'no_materials_loaded': '未載入任何紋理',
'material_type': '類型',
'solid': '純色',
'textured': '紋理',
'no_image_loaded': '未載入影像',
'choose': '選擇',
'texture_filtering': '紋理過濾',
'texture_wrap': '紋理環繞',
'transparency': '透明度',
'diffuse_map': '漫反射貼圖',
'alpha': '不透明度',
'alpha_map': '使用不透明度映射圖',
'alpha_channel': '不透明度通道',
'linear': '線性',
'nearest': '最近',
'clamp': '拉伸',
'repeat': '重複',
'none': '無',
'alpha_constant': '使用不透明度常數',
'diffuse_map_alpha_channel': '使用漫反射貼圖的不透明度通道',
},
},
voxelise: {
heading: '3. 體素化',
button: '體素化網格模型',
loading_voxel_mesh: '正在載入體素模型...',
loaded_voxel_mesh: '已載入體素模型',
rendering_voxel_mesh: '正在繪製體素模型...',
rendered_voxel_mesh: '已繪製體素模型',
voxel_count: '{{count, number}} 個體素',
voxel_mesh_dimensions: '大小為 {{x, number}} x {{y, number}} x {{z, number}} 體素',
components: {
constraint_axis: '約束軸向',
size: '尺寸',
algorithm: '演算法',
ambient_occlusion: '環境光遮蔽',
multisampling: '多重採樣',
voxel_overlap: '體素重疊',
colour: '顏色',
x_axis: 'X (寬度)(紅色軸)',
y_axis: 'Y (高度)(綠色軸)',
z_axis: 'Z (深度)(藍色軸)',
ray_based: '基於射線',
bvh_ray: '基於 BVH 射線',
ncrb: 'NCRB',
average_recommended: '均值(推薦)',
first: '首個',
on_recommended: '啟用(推薦)',
off_faster: '停用(速度更快)',
},
},
assign: {
heading: '3. 綁定',
button: '綁定方塊',
loading_block_mesh: '正在載入方塊模型...',
loaded_block_mesh: '已載入方塊模型',
rendering_block_mesh: '正在繪製方塊模型...',
rendered_block_mesh: '已繪製方塊模型',
deselected_blocks: '未選擇 {{count, number}} 種方塊',
selected_blocks: '已選擇 {{count, number}} 種方塊',
found_blocks: '已找到 {{count, number}} 種方塊',
block_not_namespaced: '「{{block_name}}」未正確使用命名空間是不是指「minecraft:{{block_name}}」?',
could_not_use_block: '無法使用「{{block_name}}」,因為其不受支援',
reading_palette: '正在讀取 {{file_name}}...',
block_palette_missing_light_blocks: '方塊色板中不包含可供放置的發光方塊',
blocks_missing_textures: '{{count, number}} 種色板中的方塊遺失紋理,將不會被使用',
falling_blocks: '{{count, number}} 個方塊將在結構放置時因重力而下落',
components: {
texture_atlas: '資源包',
block_palette: '方塊色板',
dithering: '混色抖動',
dithering_magnitude: '抖動程度',
fallable_blocks: '可掉落方塊',
colour_accuracy: '顏色精準度',
smart_averaging: '智慧平均',
smoothness: '平滑度',
calculate_lighting: '計算光照',
light_threshold: '光照閾值',
vanilla: '原版',
ordered: '有序',
random: '隨機',
off: '停用',
replace_falling: '使用固態方塊替換將要掉落的方塊',
replace_fallable: '使用固態方塊替換可以掉落的方塊',
do_nothing: '不替換',
search: '搜尋...',
},
},
export: {
heading: '5. 導出',
button: '導出建築結構',
exporting_structure: '正在導出結構...',
exported_structure: '已導出結構',
schematic_unsupported_blocks: '{{count, number}} 個方塊({{unique, number}} 種)不受 .schematic 檔案格式支援,將使用石頭方塊代替。嘗試使用支援 .schematic 格式的色板,或使用 .litematica 格式導出',
nbt_exporter_too_big: '結構方塊僅支援 48x48x48 大小的區域,此範圍外的方塊將會被移除',
components: {
exporter: '導出為',
litematic: 'Litematic (.litematic)',
schematic: 'Schematic (.schematic)',
sponge_schematic: 'Sponge Schematic (.schem)',
structure_blocks: '結構方塊 (.nbt)',
indexed_json: '有索引的 JSON (.json)',
uncompressed_json: '未壓縮的 JSON (.json)',
},
},
misc: {
red: '紅',
green: '綠',
blue: '藍',
alpha: '不透明度',
on: '啟用',
off: '停用',
},
},
};