@things-factory/figure-service 10.1.165 → 10.1.168

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist-server/service/figure/figure-context.d.ts +108 -0
  2. package/dist-server/service/figure/figure-context.js +368 -0
  3. package/dist-server/service/figure/figure-context.js.map +1 -0
  4. package/dist-server/service/figure/figure-format.js +10 -16
  5. package/dist-server/service/figure/figure-format.js.map +1 -1
  6. package/dist-server/service/figure/figure-mutation.js +2 -2
  7. package/dist-server/service/figure/figure-mutation.js.map +1 -1
  8. package/dist-server/service/figure/figure-proposal.js +4 -2
  9. package/dist-server/service/figure/figure-proposal.js.map +1 -1
  10. package/dist-server/service/figure/figure-propose-steps.d.ts +33 -5
  11. package/dist-server/service/figure/figure-propose-steps.js +87 -15
  12. package/dist-server/service/figure/figure-propose-steps.js.map +1 -1
  13. package/dist-server/service/figure/figure-tools.js +197 -49
  14. package/dist-server/service/figure/figure-tools.js.map +1 -1
  15. package/dist-server/tsconfig.tsbuildinfo +1 -1
  16. package/package.json +7 -7
  17. package/server/service/figure/figure-context.test.ts +288 -0
  18. package/server/service/figure/figure-context.ts +447 -0
  19. package/server/service/figure/figure-format.test.ts +18 -1
  20. package/server/service/figure/figure-format.ts +10 -16
  21. package/server/service/figure/figure-llm-smoke.test.ts +82 -13
  22. package/server/service/figure/figure-mutation.ts +3 -3
  23. package/server/service/figure/figure-proposal.ts +4 -2
  24. package/server/service/figure/figure-propose-steps.test.ts +95 -3
  25. package/server/service/figure/figure-propose-steps.ts +105 -23
  26. package/server/service/figure/figure-tools-door-db.test.ts +178 -0
  27. package/server/service/figure/figure-tools.test.ts +382 -22
  28. package/server/service/figure/figure-tools.ts +218 -50
  29. package/translations/en.json +11 -9
  30. package/translations/es.json +11 -9
  31. package/translations/ja.json +11 -9
  32. package/translations/ko.json +29 -27
  33. package/translations/ms.json +11 -9
  34. package/translations/zh.json +11 -9
@@ -1,4 +1,5 @@
1
1
  {
2
+ "error.figure-proposal-failed": "도형을 만들지 못했습니다.",
2
3
  "error.figure-release-does-not-compile": "{type} 의 발행판({version})이 지금 컴파일되지 않습니다. 저작 화면에서 열어 수정한 후 다시 발행해야 보드에 나옵니다.",
3
4
  "figure.gate.occupancy-empty-axis.message": "공간 선언의 {axis} 가 비어 있습니다.",
4
5
  "figure.gate.occupancy-undeclared.how": "「부품에 맞추기」를 누르면 지금 부품으로 공간을 선언합니다.",
@@ -16,7 +17,7 @@
16
17
  "figure.gate.parts-split-on-resize.why": "다른 크기로 놓으면 그 부품이 공중에 떠 보입니다. 보는 사람에게는 부서진 도형입니다.",
17
18
  "figure.gate.sizing-not-uniform.how": "{parts} 부품이 도형 크기에 비례하도록 「위치와 크기」의 「크기에 비례」를 설정해 주세요. 치수가 고정된 부품은 같은 비율로 확대되지 않습니다.",
18
19
  "figure.gate.sizing-not-uniform.message": "이 도형은 한 비율로 커지는데, 크기를 {axes} 로 {factor}배로 하면 {parts} 부품은 같이 커지지 않습니다.",
19
- "figure.gate.sizing-not-uniform.why": "한 비율로 커지는 도형은 어떤 크기에서도 비례를 지킵니다. 제 크기나 자리를 따로 가진 부품은 나머지와 어긋납니다.",
20
+ "figure.gate.sizing-not-uniform.why": "균일한 비율로 확대되는 도형은 부품 간 비율이 유지됩니다. 치수나 위치가 고정된 부품은 다른 부품과 정렬이 어긋날 수 있습니다.",
20
21
  "figure.gate.placement-face-tilted.how": "평면과 나란한 면을 장착면으로 다시 정하거나, '{part}' 부품을 바로 세우세요.",
21
22
  "figure.gate.placement-face-tilted.message": "장착면으로 정한 '{part}' 부품의 면이 놓이는 평면에서 {degrees}° 기울어 있습니다.",
22
23
  "figure.gate.placement-face-tilted.why": "기운 면은 평면에 닿을 수 없어서, 도형이 어떤 자세로 놓이는지 정해지지 않습니다.",
@@ -26,8 +27,8 @@
26
27
  "figure.gate.type-is-placeholder.how": "타입 항목에 도형 타입을 지정한 후 발행해 주세요.",
27
28
  "figure.gate.type-is-placeholder.message": "'{type}' 타입은 처음 저장할 때 붙은 임시 타입입니다.",
28
29
  "figure.gate.type-is-placeholder.why": "보드는 이 타입으로 도형을 부르고, 발행한 뒤에는 바꿀 수 없습니다.",
29
- "figure.gate.released-not-compared.message": "직전 발행판과 견주지 못했습니다. 도형은 발행 사이의 비교가 아직 없습니다.",
30
- "figure.gate.released-not-compared.why": "이 발행이 이미 놓인 인스턴스를 깨는지는 확인되지 않았습니다.",
30
+ "figure.gate.released-not-compared.message": "직전 발행본과 비교하지 못했습니다. 현재는 발행본 간 비교를 지원하지 않습니다.",
31
+ "figure.gate.released-not-compared.why": "이번 발행이 기존에 배치된 인스턴스와 호환되는지 확인되지 않았습니다.",
31
32
  "figure.gate.contract.gone.how": "기존 정의를 복원하거나 새 도형 타입으로 발행해 주세요. 새 타입으로 발행하면 기존에 배치된 도형은 이전 정의를 유지합니다.",
32
33
  "figure.gate.contract.placement-changed.message": "배치 기준이 {before} 에서 {after} 로 바뀌었습니다.",
33
34
  "figure.gate.contract.placement-changed.why": "놓인 인스턴스의 높이를 배치 기준이 정합니다. 놓인 것이 모두 함께 옮겨 갑니다.",
@@ -40,7 +41,7 @@
40
41
  "figure.gate.contract.authored-size-changed.message": "저작한 크기가 {before} 에서 {after} 로 바뀌었습니다.",
41
42
  "figure.gate.contract.authored-size-changed.why": "놓인 인스턴스는 제 크기를 그대로 둡니다. 깊이를 따로 정하지 않은 인스턴스는 이 크기에서 깊이를 받습니다.",
42
43
  "figure.gate.contract.state-input-gone.message": "'{id}' 조작값이 없어졌습니다.",
43
- "figure.gate.contract.state-input-gone.why": "놓인 인스턴스와 커넥터가 이 이름으로 값을 줍니다. 이 발행 뒤에는 그 값이 아무 일도 하지 않고, 화면에는 사유이 나오지 않습니다.",
44
+ "figure.gate.contract.state-input-gone.why": "배치된 인스턴스와 커넥터는 이 이름으로 값을 전달합니다. 발행 후에는 해당 값이 동작에 반영되지 않으며, 화면에 원인이 표시되지 않을 수 있습니다.",
44
45
  "figure.gate.contract.state-unit-changed.message": "'{id}' 조작값의 단위가 {before} 에서 {after} 로 바뀌었습니다.",
45
46
  "figure.gate.contract.state-unit-changed.why": "저장된 값은 수를 그대로 가집니다. 단위가 바뀌면 같은 수가 다른 뜻이 됩니다.",
46
47
  "figure.gate.contract.state-range-narrowed.message": "'{id}' 조작값의 범위가 {before} 에서 {after} 로 좁아졌습니다.",
@@ -51,20 +52,20 @@
51
52
  "figure.gate.contract.clip-gone.why": "놓인 인스턴스는 이름으로 클립을 재생합니다. 이 발행 뒤에는 그 클립이 아무것도 재생하지 않습니다.",
52
53
  "figure.gate.contract.clip-added.message": "'{clip}' 클립이 새로 생겼습니다.",
53
54
  "figure.gate.contract.clip-added.why": "인스턴스가 재생하기 전에는 멈춰 있습니다.",
54
- "figure.gate.contract.binding-gone.message": "'{binding}' 자리가 없어졌습니다.",
55
- "figure.gate.contract.binding-gone.why": "놓인 인스턴스에서 그 자리에 든 것이 갈 곳을 잃습니다.",
56
- "figure.gate.contract.binding-role-changed.message": "'{binding}' 자리의 역할이 {before} 에서 {after} 로 바뀌었습니다.",
57
- "figure.gate.contract.binding-role-changed.why": "그 자리에 든 것은 옛 역할에 맞춰 놓였습니다.",
58
- "figure.gate.contract.binding-capacity-reduced.message": "'{binding}' 자리가 {before} 개 대신 {after} 개를 받습니다.",
55
+ "figure.gate.contract.binding-gone.message": "'{binding}' 적재 위치가 제거되었습니다.",
56
+ "figure.gate.contract.binding-gone.why": "배치된 인스턴스에서 제거된 적재 위치를 사용하던 항목은 위치를 다시 지정해야 합니다.",
57
+ "figure.gate.contract.binding-role-changed.message": "'{binding}' 적재 위치의 역할이 {before}에서 {after}(으)로 변경되었습니다.",
58
+ "figure.gate.contract.binding-role-changed.why": "해당 적재 위치의 항목은 기존 역할에 맞게 배치되어 있습니다. 변경된 역할과의 호환성을 확인해 주세요.",
59
+ "figure.gate.contract.binding-capacity-reduced.message": "'{binding}' 적재 위치의 수용 가능 수량이 {before}개에서 {after}개로 줄었습니다.",
59
60
  "figure.gate.contract.binding-capacity-reduced.why": "제거된 수용 공간에 배치된 항목은 위치를 다시 지정해야 합니다.",
60
- "figure.gate.contract.binding-accepts-narrowed.message": "'{binding}' 자리가 더는 받지 않는 종류: {types}.",
61
- "figure.gate.contract.binding-accepts-narrowed.why": "이미 든 것은 그대로 있고, 그 타입의 다음 것부터 거절됩니다.",
62
- "figure.gate.contract.binding-added.message": "'{binding}' 자리가 새로 생겼습니다.",
63
- "figure.gate.contract.binding-added.why": "놓인 인스턴스는 아직 이 자리를 모르고 그대로 서 있습니다.",
61
+ "figure.gate.contract.binding-accepts-narrowed.message": "'{binding}' 적재 위치에서 더 이상 수용하지 않는 유형: {types}.",
62
+ "figure.gate.contract.binding-accepts-narrowed.why": "이미 배치된 항목은 유지되지만, 이후에는 제외된 유형의 항목을 배치할 수 없습니다.",
63
+ "figure.gate.contract.binding-added.message": "'{binding}' 적재 위치가 추가되었습니다.",
64
+ "figure.gate.contract.binding-added.why": "기존에 배치된 인스턴스는 새 적재 위치를 자동으로 사용하지 않습니다.",
64
65
  "figure.gate.contract.capability-gone.message": "'{name}' 능력이 없어졌습니다.",
65
66
  "figure.gate.contract.capability-gone.why": "씬이 이 이름으로 동작을 붙입니다. 놓인 인스턴스가 그 동작을 잃습니다.",
66
67
  "figure.gate.contract.capability-added.message": "'{name}' 능력이 새로 생겼습니다.",
67
- "figure.gate.contract.capability-added.why": "도형이 할 수 있는 일이 늘어납니다. 놓인 인스턴스는 그대로 서 있습니다.",
68
+ "figure.gate.contract.capability-added.why": "사용 가능한 기능이 추가됩니다. 기존 인스턴스의 상태는 유지됩니다.",
68
69
  "figure.gate.contract.occupancy-changed.message": "도형이 차지하는 공간이 바뀌었습니다: {before} → {after}.",
69
70
  "figure.gate.contract.occupancy-changed.why": "받는 쪽은 이 공간으로 도형을 놓습니다. 이 발행본으로 옮기면 새 공간으로 놓입니다.",
70
71
  "figure.gate.contract.contact-face-changed.message": "도형이 붙는 면이 바뀌었습니다.",
@@ -75,14 +76,12 @@
75
76
  "figure.gate.contract.public-input-range-narrowed.why": "새 범위 밖의 값을 준 인스턴스가 있을 수 있습니다. 어떤 값이 놓였는지는 기록하지 않습니다.",
76
77
  "figure.gate.contract.public-input-added.message": "'{input}' 값을 이제 보드에서 정할 수 있습니다.",
77
78
  "figure.gate.contract.public-input-added.why": "값이 지정되지 않은 인스턴스에는 기본값이 적용됩니다.",
78
- "figure.gate.contract.carrier-gone.message": "이 Figure는 이제 Carrier 타입 {type}이 아닙니다.",
79
- "figure.gate.contract.carrier-gone.why": "실시간 데이터는 이 코드로 Carrier를 부릅니다. 이 발행 뒤 이 타입의 Carrier는 Figure를 찾지 못합니다.",
80
- "figure.gate.contract.carrier-type-changed.message": "Carrier 타입이 {before}에서 {after}로 바뀌었습니다.",
81
- "figure.gate.contract.carrier-type-changed.why": "실시간 데이터는 이 코드로 Carrier를 부릅니다. 이 발행 뒤 예전 타입의 Carrier는 Figure를 찾지 못합니다.",
82
- "figure.gate.contract.carrier-dimensions-changed.message": "Carrier 치수가 {before}에서 {after} mm로 바뀌었습니다.",
83
- "figure.gate.contract.carrier-dimensions-changed.why": "홀더는 이 치수로 Carrier를 놓고 쌓습니다. 타입 맵이 이 발행본을 쓰면 자리와 적재 판정을 다시 합니다.",
84
- "figure.gate.contract.carrier-added.message": "이 Figure는 이제 Carrier 타입 {type}입니다.",
85
- "figure.gate.contract.carrier-added.why": "타입 맵이 이 발행본을 쓰면 이 코드의 실시간 데이터가 이 Figure를 찾습니다.",
79
+ "figure.gate.contract.extension-gone.message": "'{key}' 확장 속성이 없어졌습니다.",
80
+ "figure.gate.contract.extension-gone.why": "다른 제품이 이 키로 값을 읽습니다. 이 발행 뒤에는 값을 찾지 못합니다.",
81
+ "figure.gate.contract.extension-changed.message": "'{key}' 확장 속성의 값이 바뀌었습니다.",
82
+ "figure.gate.contract.extension-changed.why": "이 키를 정한 제품이 새 값을 읽고 바뀐 점을 판정합니다.",
83
+ "figure.gate.contract.extension-added.message": "'{key}' 확장 속성이 새로 생겼습니다.",
84
+ "figure.gate.contract.extension-added.why": "이 키를 정한 제품이 이 값을 읽습니다.",
86
85
  "figure.gate.contract.joints-none": "없음",
87
86
  "figure.gate.contract.state-input-joints-changed.message": "'{id}' 조작값이 움직이던 관절이 {before} 에서 {after} 로 바뀌었습니다.",
88
87
  "figure.gate.contract.state-input-joints-changed.why": "컨트롤러는 이 값을 써서 그 관절들을 움직입니다. 이 발행 뒤에는 같은 값이 다른 관절을 움직이거나 다른 양만큼 움직입니다.",
@@ -145,10 +144,13 @@
145
144
  "figure.gate.contract.motion-group-default-changed.why": "선택이 없는 인스턴스는 이 발행 뒤에 새 기본 클립을 재생합니다.",
146
145
  "figure.gate.contract.motion-group-transition-changed.message": "'{group}' 동작 그룹에서 클립을 바꿀 때의 전환 시간이 {before}초에서 {after}초로 바뀌었습니다.",
147
146
  "figure.gate.contract.motion-group-transition-changed.why": "클립이 바뀌는 모습만 달라지고, 어느 클립을 재생하는지는 그대로입니다.",
148
- "figure.gate.contract.slot-moved.message": "'{binding}' 자리가 기준면 위의 다른 위치로 옮겨졌습니다.",
149
- "figure.gate.contract.slot-moved.why": "그 자리에 놓인 것도 함께 옮겨집니다. 자리 주소로 이 자리를 가리키는 데이터는 이제 새 위치를 뜻합니다.",
150
- "figure.gate.contract.slot-anchor-gone.message": "자리가 서는 '{anchor}' 기준면이 없어졌습니다.",
151
- "figure.gate.contract.slot-anchor-gone.why": "이 기준면에 자기 자리를 둔 배치는 이 발행 뒤에 아무것도 담지 못합니다.",
147
+ "figure.gate.contract.slot-moved.message": "'{binding}' 적재 위치가 기준면 위의 다른 위치로 옮겨졌습니다.",
148
+ "figure.gate.contract.slot-moved.why": "해당 위치의 적재 항목도 함께 이동합니다. 이 적재 위치를 참조하는 데이터에는 변경된 위치가 적용됩니다.",
149
+ "figure.gate.contract.slot-anchor-gone.message": "적재 위치의 '{anchor}' 기준면이 없어졌습니다.",
150
+ "figure.gate.contract.slot-anchor-gone.why": "이 기준면을 사용하는 적재 위치는 발행 후 물품을 수용할 수 없습니다.",
152
151
  "figure.gate.contract.slot-anchor-moved.message": "'{anchor}' 기준면이 {before} 면에서 {after} 면으로 옮겨졌습니다.",
153
- "figure.gate.contract.slot-anchor-moved.why": "발행 후 해당 기준면의 모든 슬롯과 배치된 항목이 새 기준면으로 이동합니다."
152
+ "figure.gate.contract.slot-anchor-moved.why": "발행 후 해당 기준면의 모든 슬롯과 배치된 항목이 새 기준면으로 이동합니다.",
153
+ "figure.proposal.label-create": "{name} 만들기",
154
+ "figure.proposal.label-revise": "{name} 고치기",
155
+ "figure.proposal.reason": "명령 {steps}개 · 등급 {grade} · 삼각형 {triangles} · {attempts}번에 만들었다"
154
156
  }
@@ -1,4 +1,5 @@
1
1
  {
2
+ "error.figure-proposal-failed": "Figura tidak dapat dibuat.",
2
3
  "error.figure-release-does-not-compile": "sumber terbitan {type} (versi {version}) tidak dapat dikompil. buka dalam pemodel, betulkan dan terbitkan semula sebelum ia dilukis pada papan.",
3
4
  "figure.gate.occupancy-empty-axis.message": "Ruang yang diisytiharkan kosong pada {axis}.",
4
5
  "figure.gate.occupancy-undeclared.how": "Gunakan \"padankan dengan bahagian\" untuk mengisytiharkan ruang daripada bahagian seperti sekarang.",
@@ -75,14 +76,12 @@
75
76
  "figure.gate.contract.public-input-range-narrowed.why": "Sesuatu instans mungkin telah menetapkan nilai di luar julat baharu. Nilai yang diletakkan tidak direkodkan.",
76
77
  "figure.gate.contract.public-input-added.message": "'{input}' kini boleh ditetapkan pada papan.",
77
78
  "figure.gate.contract.public-input-added.why": "Instans yang diletakkan yang tidak memberi nilai berada pada nilai lalainya.",
78
- "figure.gate.contract.carrier-gone.message": "Figure ini tidak lagi berjenis carrier {type}.",
79
- "figure.gate.contract.carrier-gone.why": "Data langsung menamakan carrier melalui kod ini. Selepas terbitan ini carrier jenis ini tidak menemui figure.",
80
- "figure.gate.contract.carrier-type-changed.message": "Jenis carrier berubah daripada {before} kepada {after}.",
81
- "figure.gate.contract.carrier-type-changed.why": "Data langsung menamakan carrier melalui kod ini. Selepas terbitan ini carrier jenis lama tidak menemui figure.",
82
- "figure.gate.contract.carrier-dimensions-changed.message": "Saiz carrier berubah daripada {before} kepada {after} mm.",
83
- "figure.gate.contract.carrier-dimensions-changed.why": "Pemegang memuatkan dan menyusun carrier mengikut saiz ini. Kedudukan dan apa yang muat dinilai semula setelah peta mengambil terbitan ini.",
84
- "figure.gate.contract.carrier-added.message": "Figure ini kini berjenis carrier {type}.",
85
- "figure.gate.contract.carrier-added.why": "Data langsung dengan kod ini menemui figure ini setelah peta jenis mengambil terbitan ini.",
79
+ "figure.gate.contract.extension-gone.message": "Sambungan '{key}' sudah tiada.",
80
+ "figure.gate.contract.extension-gone.why": "Produk lain membaca nilai ini melalui kuncinya. Selepas terbitan ini nilai itu tidak ditemui.",
81
+ "figure.gate.contract.extension-changed.message": "Nilai sambungan '{key}' berubah.",
82
+ "figure.gate.contract.extension-changed.why": "Produk yang memiliki kunci ini membaca nilai baharu dan menilai perubahan itu.",
83
+ "figure.gate.contract.extension-added.message": "Sambungan '{key}' adalah baharu.",
84
+ "figure.gate.contract.extension-added.why": "Produk yang memiliki kunci ini membaca nilai ini.",
86
85
  "figure.gate.contract.joints-none": "tiada",
87
86
  "figure.gate.contract.state-input-joints-changed.message": "Kawalan '{id}' dahulu menggerakkan {before}. Kini ia menggerakkan {after}.",
88
87
  "figure.gate.contract.state-input-joints-changed.why": "Pengawal menulis nilai ini untuk menggerakkan sendi-sendi itu. Selepas terbitan ini nilai yang sama menggerakkan sendi lain, atau dengan jumlah lain.",
@@ -150,5 +149,8 @@
150
149
  "figure.gate.contract.slot-anchor-gone.message": "Anchor '{anchor}' tempat slot berdiri telah tiada.",
151
150
  "figure.gate.contract.slot-anchor-gone.why": "Penempatan yang meletakkan slotnya sendiri pada anchor ini tidak memegang apa-apa selepas keluaran ini.",
152
151
  "figure.gate.contract.slot-anchor-moved.message": "Anchor '{anchor}' beralih daripada muka {before} ke muka {after}.",
153
- "figure.gate.contract.slot-anchor-moved.why": "Setiap slot padanya, dan apa yang ada di situ, berdiri pada muka baharu selepas keluaran ini."
152
+ "figure.gate.contract.slot-anchor-moved.why": "Setiap slot padanya, dan apa yang ada di situ, berdiri pada muka baharu selepas keluaran ini.",
153
+ "figure.proposal.label-create": "Buat {name}",
154
+ "figure.proposal.label-revise": "Betulkan {name}",
155
+ "figure.proposal.reason": "{steps} arahan · gred {grade} · {triangles} segi tiga · dibuat dalam {attempts} cubaan"
154
156
  }
@@ -1,4 +1,5 @@
1
1
  {
2
+ "error.figure-proposal-failed": "无法生成该图形。",
2
3
  "error.figure-release-does-not-compile": "{type} 的发布源(版本 {version})无法编译。请在建模器中打开、修正并重新发布,之后才能在看板上绘制。",
3
4
  "figure.gate.occupancy-empty-axis.message": "声明的空间在 {axis} 上为空。",
4
5
  "figure.gate.occupancy-undeclared.how": "使用「适配部件」按当前部件声明空间。",
@@ -75,14 +76,12 @@
75
76
  "figure.gate.contract.public-input-range-narrowed.why": "可能有实例设置了新范围之外的值。系统不记录放置时使用了哪些值。",
76
77
  "figure.gate.contract.public-input-added.message": "现在可以在看板上设置 '{input}'。",
77
78
  "figure.gate.contract.public-input-added.why": "未提供值的已放置实例将处于其默认值。",
78
- "figure.gate.contract.carrier-gone.message": "此图形不再是 Carrier 类型 {type}。",
79
- "figure.gate.contract.carrier-gone.why": "实时数据以此代码称呼 Carrier。此次发布后,该类型的 Carrier 将找不到图形。",
80
- "figure.gate.contract.carrier-type-changed.message": "Carrier 类型从 {before} 变为 {after}。",
81
- "figure.gate.contract.carrier-type-changed.why": "实时数据以此代码称呼 Carrier。此次发布后,旧类型的 Carrier 将找不到图形。",
82
- "figure.gate.contract.carrier-dimensions-changed.message": "Carrier 尺寸从 {before} 变为 {after} mm。",
83
- "figure.gate.contract.carrier-dimensions-changed.why": "承载器按此尺寸放置和堆叠 Carrier。类型映射采用此发布版本后,将重新判定其位置和可容纳内容。",
84
- "figure.gate.contract.carrier-added.message": "此图形现在是 Carrier 类型 {type}。",
85
- "figure.gate.contract.carrier-added.why": "类型映射采用此发布版本后,带有此代码的实时数据将找到此图形。",
79
+ "figure.gate.contract.extension-gone.message": "扩展属性 '{key}' 已不存在。",
80
+ "figure.gate.contract.extension-gone.why": "其他产品按此键读取该值。此次发布后将找不到该值。",
81
+ "figure.gate.contract.extension-changed.message": "扩展属性 '{key}' 的值已更改。",
82
+ "figure.gate.contract.extension-changed.why": "定义此键的产品读取新值并判定变更。",
83
+ "figure.gate.contract.extension-added.message": "新增扩展属性 '{key}'。",
84
+ "figure.gate.contract.extension-added.why": "定义此键的产品读取此值。",
86
85
  "figure.gate.contract.joints-none": "无",
87
86
  "figure.gate.contract.state-input-joints-changed.message": "控制值 '{id}' 原来移动 {before},现在移动 {after}。",
88
87
  "figure.gate.contract.state-input-joints-changed.why": "控制器写入此值来驱动这些关节。此次发布后,同一值会移动其他关节,或移动不同的量。",
@@ -150,5 +149,8 @@
150
149
  "figure.gate.contract.slot-anchor-gone.message": "槽位所在的 '{anchor}' 基准面已删除。",
151
150
  "figure.gate.contract.slot-anchor-gone.why": "在此基准面上放置自有槽位的布置在本次发布后无法容纳任何东西。",
152
151
  "figure.gate.contract.slot-anchor-moved.message": "'{anchor}' 基准面从 {before} 面移到 {after} 面。",
153
- "figure.gate.contract.slot-anchor-moved.why": "其上的所有槽位及放置物在本次发布后位于新面上。"
152
+ "figure.gate.contract.slot-anchor-moved.why": "其上的所有槽位及放置物在本次发布后位于新面上。",
153
+ "figure.proposal.label-create": "制作 {name}",
154
+ "figure.proposal.label-revise": "修改 {name}",
155
+ "figure.proposal.reason": "{steps} 条命令 · 等级 {grade} · {triangles} 个三角形 · 第 {attempts} 次完成"
154
156
  }