fix: upgrade @lobehub/i18n-cli to fix 3D API nodes i18n (#8977)

## Summary

Upgrade `@lobehub/i18n-cli` to v1.26.1 and fix corrupted locale files
that caused 3D API nodes to break in non-English locales.

## Changes

- **What**: Upgrade `@lobehub/i18n-cli` from `^1.25.1` to `^1.26.1` —
v1.26.1 fixes numeric string keys (e.g. `"0"`, `"1"` in node outputs)
being incorrectly serialized as JSON arrays instead of objects. Fix all
11 non-English locale `nodeDefs.json` files where this corruption
already existed (23-35 entries per locale).
- **Dependencies**: `@lobehub/i18n-cli` `^1.25.1` → `^1.26.1`

## Review Focus

The locale file diffs are mechanical array→object conversions. The key
change is in `pnpm-workspace.yaml` (version bump). After this fix,
running `pnpm locale` will no longer re-corrupt numeric-keyed outputs.

Affected nodes include: `Load3D`, `Preview3D`, `MeshyImageToModelNode`,
`Hunyuan3Dv2Conditioning`, `SV3D_Conditioning`,
`ConditioningStableAudio`, `GetImageSize`, and ~30 others across all
non-English locales.

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-8977-fix-upgrade-lobehub-i18n-cli-to-fix-3D-API-nodes-i18n-30c6d73d365081b79f98e17e13652996)
by [Unito](https://www.unito.io)
This commit is contained in:
Christian Byrne
2026-02-19 21:26:38 -08:00
committed by GitHub
parent 44733f010d
commit 397af47035
13 changed files with 1297 additions and 1700 deletions

View File

@@ -1672,14 +1672,14 @@
"name": "전체(초)"
}
},
"outputs": [
{
"outputs": {
"0": {
"tooltip": null
},
{
"1": {
"tooltip": null
}
]
}
},
"ConditioningTimestepsRange": {
"display_name": "조건 (타임스텝 범위)",
@@ -2170,13 +2170,12 @@
"index": {},
"option1": {}
},
"outputs": [
null,
{
"outputs": {
"1": {
"name": "INDEX",
"tooltip": null
}
]
}
},
"DiffControlNetLoader": {
"display_name": "컨트롤넷 모델 로드 (차이)",
@@ -3476,17 +3475,17 @@
"name": "이미지"
}
},
"outputs": [
{
"outputs": {
"0": {
"tooltip": null
},
{
"1": {
"tooltip": null
},
{
"2": {
"tooltip": null
}
]
}
},
"GetVideoComponents": {
"description": "비디오에서 모든 컴포넌트(프레임, 오디오, 프레임레이트)를 추출합니다.",
@@ -3718,14 +3717,14 @@
"name": "clip_vision_output"
}
},
"outputs": [
{
"outputs": {
"0": {
"tooltip": null
},
{
"1": {
"tooltip": null
}
]
}
},
"Hunyuan3Dv2ConditioningMultiView": {
"display_name": "Hunyuan3Dv2ConditioningMultiView",
@@ -3743,14 +3742,14 @@
"name": "오른쪽"
}
},
"outputs": [
{
"outputs": {
"0": {
"tooltip": null
},
{
"1": {
"tooltip": null
}
]
}
},
"HunyuanImageToVideo": {
"display_name": "HunyuanImageToVideo",
@@ -6714,26 +6713,26 @@
"name": "너비"
}
},
"outputs": [
{
"outputs": {
"0": {
"tooltip": null
},
{
"1": {
"tooltip": null
},
{
"2": {
"tooltip": null
},
{
"3": {
"tooltip": null
},
{
"4": {
"tooltip": null
},
{
"5": {
"tooltip": null
}
]
}
},
"LoadAudio": {
"display_name": "오디오 로드",
@@ -6998,11 +6997,11 @@
"tooltip": "디퓨전 모델을 수정하는 강도입니다. 이 값은 음수일 수 있습니다."
}
},
"outputs": [
{
"outputs": {
"0": {
"name": "model"
}
]
}
},
"LoraSave": {
"display_name": "LoRA 추출 및 저장",
@@ -7679,17 +7678,16 @@
"name": "rig_task_id"
}
},
"outputs": [
null,
{
"outputs": {
"1": {
"name": "GLB",
"tooltip": null
},
{
"2": {
"name": "FBX",
"tooltip": null
}
]
}
},
"MeshyImageToModelNode": {
"display_name": "Meshy: 이미지 → 모델",
@@ -7735,18 +7733,16 @@
"name": "symmetry_mode"
}
},
"outputs": [
null,
null,
{
"outputs": {
"2": {
"name": "GLB",
"tooltip": null
},
{
"3": {
"name": "FBX",
"tooltip": null
}
]
}
},
"MeshyMultiImageToModelNode": {
"display_name": "Meshy: 다중 이미지 → 모델",
@@ -7792,18 +7788,16 @@
"name": "symmetry_mode"
}
},
"outputs": [
null,
null,
{
"outputs": {
"2": {
"name": "GLB",
"tooltip": null
},
{
"3": {
"name": "FBX",
"tooltip": null
}
]
}
},
"MeshyRefineNode": {
"description": "이전에 생성된 초안 모델을 다듬습니다.",
@@ -7828,18 +7822,16 @@
"tooltip": "텍스처링 과정을 안내할 텍스트 프롬프트를 입력하세요. 최대 600자. 'texture_image'와 동시에 사용할 수 없습니다."
}
},
"outputs": [
null,
null,
{
"outputs": {
"2": {
"name": "GLB",
"tooltip": null
},
{
"3": {
"name": "FBX",
"tooltip": null
}
]
}
},
"MeshyRigModelNode": {
"description": "표준 포맷으로 리깅된 캐릭터를 제공합니다. 자동 리깅은 텍스처가 없는 메시, 비휴머노이드 자산, 또는 팔다리와 신체 구조가 불분명한 휴머노이드 자산에는 적합하지 않습니다.",
@@ -7857,18 +7849,16 @@
"tooltip": "모델의 UV 언랩된 기본 색상 텍스처 이미지입니다."
}
},
"outputs": [
null,
null,
{
"outputs": {
"2": {
"name": "GLB",
"tooltip": null
},
{
"3": {
"name": "FBX",
"tooltip": null
}
]
}
},
"MeshyTextToModelNode": {
"display_name": "Meshy: 텍스트 → 모델",
@@ -7907,18 +7897,16 @@
"name": "symmetry_mode"
}
},
"outputs": [
null,
null,
{
"outputs": {
"2": {
"name": "GLB",
"tooltip": null
},
{
"3": {
"name": "FBX",
"tooltip": null
}
]
}
},
"MeshyTextureNode": {
"display_name": "Meshy: 텍스처 모델",
@@ -7945,18 +7933,16 @@
"tooltip": "오브젝트의 원하는 텍스처 스타일을 텍스트로 설명하세요. 최대 600자까지 입력할 수 있습니다. 'image_style'과 동시에 사용할 수 없습니다."
}
},
"outputs": [
null,
null,
{
"outputs": {
"2": {
"name": "GLB",
"tooltip": null
},
{
"3": {
"name": "FBX",
"tooltip": null
}
]
}
},
"MinimaxHailuoVideoNode": {
"description": "새로운 MiniMax Hailuo-02 모델을 사용하여 프롬프트로 비디오를 생성하며, 선택적으로 시작 프레임을 사용할 수 있습니다.",
@@ -12279,13 +12265,12 @@
"name": "시드"
}
},
"outputs": [
null,
{
"outputs": {
"1": {
"name": "GLB",
"tooltip": null
}
]
}
},
"Rodin3D_Gen2": {
"description": "Rodin API를 사용하여 3D 에셋 생성",
@@ -12307,13 +12292,12 @@
"name": "TAPose"
}
},
"outputs": [
null,
{
"outputs": {
"1": {
"name": "GLB",
"tooltip": null
}
]
}
},
"Rodin3D_Regular": {
"description": "Rodin API를 사용하여 3D 에셋 생성",
@@ -12332,13 +12316,12 @@
"name": "시드"
}
},
"outputs": [
null,
{
"outputs": {
"1": {
"name": "GLB",
"tooltip": null
}
]
}
},
"Rodin3D_Sketch": {
"description": "Rodin API를 사용하여 3D 에셋 생성",
@@ -12351,13 +12334,12 @@
"name": "시드"
}
},
"outputs": [
null,
{
"outputs": {
"1": {
"name": "GLB",
"tooltip": null
}
]
}
},
"Rodin3D_Smooth": {
"description": "Rodin API를 사용하여 3D 에셋 생성",
@@ -12376,13 +12358,12 @@
"name": "시드"
}
},
"outputs": [
null,
{
"outputs": {
"1": {
"name": "GLB",
"tooltip": null
}
]
}
},
"RunwayFirstLastFrameNode": {
"description": "첫 번째와 마지막 키프레임을 업로드하고 프롬프트를 작성하여 비디오를 생성합니다. 마지막 프레임이 첫 번째 프레임과 완전히 다른 경우와 같은 복잡한 전환은 10초의 긴 지속 시간을 사용하는 것이 좋습니다. 이렇게 하면 두 입력 사이를 부드럽게 전환할 수 있는 시간이 더 주어집니다. 시작하기 전에 입력 선택이 생성 성공을 보장할 수 있도록 다음 모범 사례를 검토하세요: https://help.runwayml.com/hc/en-us/articles/34170748696595-Creating-with-Keyframes-on-Gen-3.",
@@ -12676,14 +12657,14 @@
"name": "시그마 배열"
}
},
"outputs": [
{
"outputs": {
"0": {
"tooltip": null
},
{
"1": {
"tooltip": null
}
]
}
},
"SamplerCustomAdvanced": {
"display_name": "고급 사용자 정의 샘플러",
@@ -12704,14 +12685,14 @@
"name": "시그마 배열"
}
},
"outputs": [
{
"outputs": {
"0": {
"tooltip": null
},
{
"1": {
"tooltip": null
}
]
}
},
"SamplerDPMAdaptative": {
"display_name": "DPMAdaptive 샘플러",
@@ -13009,11 +12990,11 @@
"name": "샘플링 백분율"
}
},
"outputs": [
{
"outputs": {
"0": {
"tooltip": null
}
]
}
},
"SaveAnimatedPNG": {
"display_name": "애니메이션 PNG 저장",
@@ -13568,14 +13549,14 @@
"name": "오디오"
}
},
"outputs": [
{
"outputs": {
"0": {
"tooltip": null
},
{
"1": {
"tooltip": null
}
]
}
},
"SplitImageWithAlpha": {
"display_name": "이미지와 알파채널 분리",
@@ -13603,14 +13584,14 @@
"name": "분할 스텝"
}
},
"outputs": [
{
"outputs": {
"0": {
"tooltip": null
},
{
"1": {
"tooltip": null
}
]
}
},
"SplitSigmasDenoise": {
"display_name": "시그마 배열 분할 (노이즈 제거양)",
@@ -13622,14 +13603,14 @@
"name": "시그마 배열"
}
},
"outputs": [
{
"outputs": {
"0": {
"tooltip": null
},
{
"1": {
"tooltip": null
}
]
}
},
"StabilityAudioInpaint": {
"description": "텍스트 지침을 사용하여 기존 오디오 샘플의 일부를 변환합니다.",
@@ -14390,17 +14371,16 @@
"tooltip": "시드는 노드가 다시 실행될지 여부를 제어합니다. 시드와 관계없이 결과는 비결정적입니다."
}
},
"outputs": [
null,
{
"outputs": {
"1": {
"name": "GLB",
"tooltip": null
},
{
"2": {
"name": "OBJ",
"tooltip": null
}
]
}
},
"TencentTextToModelNode": {
"display_name": "Hunyuan3D: 텍스트 → 모델 (Pro)",
@@ -14430,17 +14410,16 @@
"tooltip": "시드는 노드가 다시 실행될지 여부를 제어합니다. 시드와 관계없이 결과는 비결정적입니다."
}
},
"outputs": [
null,
{
"outputs": {
"1": {
"name": "GLB",
"tooltip": null
},
{
"2": {
"name": "OBJ",
"tooltip": null
}
]
}
},
"TextEncodeAceStepAudio": {
"display_name": "TextEncodeAceStepAudio",
@@ -14907,20 +14886,20 @@
"tooltip": "훈련에 사용할 데이터 타입입니다."
}
},
"outputs": [
{
"outputs": {
"0": {
"tooltip": "LoRA가 적용된 모델"
},
{
"1": {
"tooltip": "LoRA 가중치"
},
{
"2": {
"tooltip": "손실 기록"
},
{
"3": {
"tooltip": "총 학습 스텝"
}
]
}
},
"TrimAudioDuration": {
"description": "오디오 텐서를 선택한 시간 범위로 자릅니다.",
@@ -15086,14 +15065,12 @@
"name": "텍스처 시드"
}
},
"outputs": [
null,
null,
{
"outputs": {
"2": {
"name": "GLB",
"tooltip": null
}
]
}
},
"TripoMultiviewToModelNode": {
"display_name": "Tripo: 다중 뷰에서 모델 생성",
@@ -15145,14 +15122,12 @@
"name": "텍스처 시드"
}
},
"outputs": [
null,
null,
{
"outputs": {
"2": {
"name": "GLB",
"tooltip": null
}
]
}
},
"TripoRefineNode": {
"description": "v1.4 Tripo 모델로 생성된 드래프트 모델만 정제합니다.",
@@ -15163,14 +15138,12 @@
"tooltip": "v1.4 Tripo 모델이어야 합니다"
}
},
"outputs": [
null,
null,
{
"outputs": {
"2": {
"name": "GLB",
"tooltip": null
}
]
}
},
"TripoRetargetNode": {
"display_name": "Tripo: 리깅된 모델 리타겟",
@@ -15182,14 +15155,12 @@
"name": "원본 모델 작업 ID"
}
},
"outputs": [
null,
null,
{
"outputs": {
"2": {
"name": "GLB",
"tooltip": null
}
]
}
},
"TripoRigNode": {
"display_name": "Tripo: 모델 리깅",
@@ -15198,14 +15169,12 @@
"name": "원본 모델 작업 ID"
}
},
"outputs": [
null,
null,
{
"outputs": {
"2": {
"name": "GLB",
"tooltip": null
}
]
}
},
"TripoTextToModelNode": {
"display_name": "Tripo: 텍스트에서 모델 생성",
@@ -15250,14 +15219,12 @@
"name": "텍스처 시드"
}
},
"outputs": [
null,
null,
{
"outputs": {
"2": {
"name": "GLB",
"tooltip": null
}
]
}
},
"TripoTextureNode": {
"display_name": "Tripo: 텍스처 모델",
@@ -15281,14 +15248,12 @@
"name": "텍스처 시드"
}
},
"outputs": [
null,
null,
{
"outputs": {
"2": {
"name": "GLB",
"tooltip": null
}
]
}
},
"TruncateText": {
"display_name": "텍스트 자르기",