[i18n] Add INodeSlot.localized_name field (#376)

* [i18n] Add INodeSlot.localized_name field

* nit
This commit is contained in:
Chenlei Hu
2024-12-13 12:01:21 -08:00
committed by GitHub
parent 1c1241bdb1
commit 0048b5a0fe
4 changed files with 21 additions and 5 deletions

View File

@@ -3348,7 +3348,7 @@ export class LGraphCanvas {
// TODO: Find a cheap way to measure text, and do it on node label change instead of here
// Input icon width + text approximation
const width =
20 + ((input.label?.length ?? input.name?.length) || 3) * 7
20 + ((input.label?.length ?? input.localized_name?.length ?? input.name?.length) || 3) * 7
is_inside = isInRectangle(
canvasx,
canvasy,

View File

@@ -1421,7 +1421,7 @@ export class LGraphNode implements Positionable, IPinnable {
if (this.inputs) {
for (let i = 0, l = this.inputs.length; i < l; ++i) {
const input = this.inputs[i]
const text = input.label || input.name || ""
const text = input.label || input.localized_name || input.name || ""
const text_width = compute_text_size(text)
if (input_width < text_width)
input_width = text_width
@@ -1431,7 +1431,7 @@ export class LGraphNode implements Positionable, IPinnable {
if (this.outputs) {
for (let i = 0, l = this.outputs.length; i < l; ++i) {
const output = this.outputs[i]
const text = output.label || output.name || ""
const text = output.label || output.localized_name || output.name || ""
const text_width = compute_text_size(text)
if (output_width < text_width)
output_width = text_width

View File

@@ -117,7 +117,7 @@ export function drawSlot(
// render slot label
if (render_text) {
const text = slot.label != null ? slot.label : slot.name
const text = slot.label || slot.localized_name || slot.name
if (text) {
// TODO: Finish impl. Highlight text on mouseover unless we're connecting links.
ctx.fillStyle = label_color

View File

@@ -190,7 +190,24 @@ export interface IOptionalSlotData<TSlot extends INodeInputSlot | INodeOutputSlo
export type ISlotType = number | string
export interface INodeSlot {
/**
* The name of the slot in English.
* Will be included in the serialized data.
*/
name: string
/**
* The localized name of the slot to display in the UI.
* Takes higher priority than {@link name} if set.
* Will be included in the serialized data.
*/
localized_name?: string
/**
* The name of the slot to display in the UI, modified by the user.
* Takes higher priority than {@link display_name} if set.
* Will be included in the serialized data.
*/
label?: string
type: ISlotType
dir?: LinkDirection
removable?: boolean
@@ -198,7 +215,6 @@ export interface INodeSlot {
not_subgraph_input?: boolean
color_off?: CanvasColour
color_on?: CanvasColour
label?: string
locked?: boolean
nameLocked?: boolean
pos?: Point