mirror of
https://github.com/invoke-ai/InvokeAI.git
synced 2026-01-15 11:07:57 -05:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b2baead450 | ||
|
|
3be9b3ded8 | ||
|
|
47c7cff365 |
2
.github/workflows/pypi-release.yml
vendored
2
.github/workflows/pypi-release.yml
vendored
@@ -28,7 +28,7 @@ jobs:
|
||||
run: twine check dist/*
|
||||
|
||||
- name: check PyPI versions
|
||||
if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release/')
|
||||
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/v2.3'
|
||||
run: |
|
||||
pip install --upgrade requests
|
||||
python -c "\
|
||||
|
||||
@@ -8,42 +8,28 @@ To download a node, simply download the `.py` node file from the link and add it
|
||||
|
||||
To use a community workflow, download the the `.json` node graph file and load it into Invoke AI via the **Load Workflow** button in the Workflow Editor.
|
||||
|
||||
- Community Nodes
|
||||
+ [Depth Map from Wavefront OBJ](#depth-map-from-wavefront-obj)
|
||||
+ [Film Grain](#film-grain)
|
||||
+ [Generative Grammar-Based Prompt Nodes](#generative-grammar-based-prompt-nodes)
|
||||
+ [GPT2RandomPromptMaker](#gpt2randompromptmaker)
|
||||
+ [Grid to Gif](#grid-to-gif)
|
||||
+ [Halftone](#halftone)
|
||||
+ [Ideal Size](#ideal-size)
|
||||
+ [Image and Mask Composition Pack](#image-and-mask-composition-pack)
|
||||
+ [Image to Character Art Image Nodes](#image-to-character-art-image-nodes)
|
||||
+ [Image Picker](#image-picker)
|
||||
+ [Load Video Frame](#load-video-frame)
|
||||
+ [Make 3D](#make-3d)
|
||||
+ [Oobabooga](#oobabooga)
|
||||
+ [Prompt Tools](#prompt-tools)
|
||||
+ [Retroize](#retroize)
|
||||
+ [Size Stepper Nodes](#size-stepper-nodes)
|
||||
+ [Text font to Image](#text-font-to-image)
|
||||
+ [Thresholding](#thresholding)
|
||||
+ [XY Image to Grid and Images to Grids nodes](#xy-image-to-grid-and-images-to-grids-nodes)
|
||||
- [Example Node Template](#example-node-template)
|
||||
- [Disclaimer](#disclaimer)
|
||||
- [Help](#help)
|
||||
|
||||
--------------------------------
|
||||
|
||||
--------------------------------
|
||||
### Depth Map from Wavefront OBJ
|
||||
### Make 3D
|
||||
|
||||
**Description:** Render depth maps from Wavefront .obj files (triangulated) using this simple 3D renderer utilizing numpy and matplotlib to compute and color the scene. There are simple parameters to change the FOV, camera position, and model orientation.
|
||||
**Description:** Create compelling 3D stereo images from 2D originals.
|
||||
|
||||
To be imported, an .obj must use triangulated meshes, so make sure to enable that option if exporting from a 3D modeling program. This renderer makes each triangle a solid color based on its average depth, so it will cause anomalies if your .obj has large triangles. In Blender, the Remesh modifier can be helpful to subdivide a mesh into small pieces that work well given these limitations.
|
||||
**Node Link:** [https://gitlab.com/srcrr/shift3d/-/raw/main/make3d.py](https://gitlab.com/srcrr/shift3d)
|
||||
|
||||
**Node Link:** https://github.com/dwringer/depth-from-obj-node
|
||||
**Example Node Graph:** https://gitlab.com/srcrr/shift3d/-/raw/main/example-workflow.json?ref_type=heads&inline=false
|
||||
|
||||
**Example Usage:**
|
||||
</br><img src="https://raw.githubusercontent.com/dwringer/depth-from-obj-node/main/depth_from_obj_usage.jpg" width="500" />
|
||||
**Output Examples**
|
||||
|
||||
{: style="height:512px;width:512px"}
|
||||
{: style="height:512px;width:512px"}
|
||||
|
||||
--------------------------------
|
||||
### Ideal Size
|
||||
|
||||
**Description:** This node calculates an ideal image size for a first pass of a multi-pass upscaling. The aim is to avoid duplication that results from choosing a size larger than the model is capable of.
|
||||
|
||||
**Node Link:** https://github.com/JPPhoto/ideal-size-node
|
||||
|
||||
--------------------------------
|
||||
### Film Grain
|
||||
@@ -53,46 +39,36 @@ To be imported, an .obj must use triangulated meshes, so make sure to enable tha
|
||||
**Node Link:** https://github.com/JPPhoto/film-grain-node
|
||||
|
||||
--------------------------------
|
||||
### Generative Grammar-Based Prompt Nodes
|
||||
### Image Picker
|
||||
|
||||
**Description:** This set of 3 nodes generates prompts from simple user-defined grammar rules (loaded from custom files - examples provided below). The prompts are made by recursively expanding a special template string, replacing nonterminal "parts-of-speech" until no nonterminal terms remain in the string.
|
||||
**Description:** This InvokeAI node takes in a collection of images and randomly chooses one. This can be useful when you have a number of poses to choose from for a ControlNet node, or a number of input images for another purpose.
|
||||
|
||||
This includes 3 Nodes:
|
||||
- *Lookup Table from File* - loads a YAML file "prompt" section (or of a whole folder of YAML's) into a JSON-ified dictionary (Lookups output)
|
||||
- *Lookups Entry from Prompt* - places a single entry in a new Lookups output under the specified heading
|
||||
- *Prompt from Lookup Table* - uses a Collection of Lookups as grammar rules from which to randomly generate prompts.
|
||||
|
||||
**Node Link:** https://github.com/dwringer/generative-grammar-prompt-nodes
|
||||
|
||||
**Example Usage:**
|
||||
</br><img src="https://raw.githubusercontent.com/dwringer/generative-grammar-prompt-nodes/main/lookuptables_usage.jpg" width="500" />
|
||||
**Node Link:** https://github.com/JPPhoto/image-picker-node
|
||||
|
||||
--------------------------------
|
||||
### GPT2RandomPromptMaker
|
||||
### Thresholding
|
||||
|
||||
**Description:** A node for InvokeAI utilizes the GPT-2 language model to generate random prompts based on a provided seed and context.
|
||||
**Description:** This node generates masks for highlights, midtones, and shadows given an input image. You can optionally specify a blur for the lookup table used in making those masks from the source image.
|
||||
|
||||
**Node Link:** https://github.com/mickr777/GPT2RandomPromptMaker
|
||||
**Node Link:** https://github.com/JPPhoto/thresholding-node
|
||||
|
||||
**Output Examples**
|
||||
**Examples**
|
||||
|
||||
Generated Prompt: An enchanted weapon will be usable by any character regardless of their alignment.
|
||||
Input:
|
||||
|
||||
<img src="https://github.com/mickr777/InvokeAI/assets/115216705/8496ba09-bcdd-4ff7-8076-ff213b6a1e4c" width="200" />
|
||||
{: style="height:512px;width:512px"}
|
||||
|
||||
--------------------------------
|
||||
### Grid to Gif
|
||||
Highlights/Midtones/Shadows:
|
||||
|
||||
**Description:** One node that turns a grid image into an image collection, one node that turns an image collection into a gif.
|
||||
<img src="https://github.com/invoke-ai/InvokeAI/assets/34005131/727021c1-36ff-4ec8-90c8-105e00de986d" style="width: 30%" />
|
||||
<img src="https://github.com/invoke-ai/InvokeAI/assets/34005131/0b721bfc-f051-404e-b905-2f16b824ddfe" style="width: 30%" />
|
||||
<img src="https://github.com/invoke-ai/InvokeAI/assets/34005131/04c1297f-1c88-42b6-a7df-dd090b976286" style="width: 30%" />
|
||||
|
||||
**Node Link:** https://github.com/mildmisery/invokeai-GridToGifNode/blob/main/GridToGif.py
|
||||
Highlights/Midtones/Shadows (with LUT blur enabled):
|
||||
|
||||
**Example Node Graph:** https://github.com/mildmisery/invokeai-GridToGifNode/blob/main/Grid%20to%20Gif%20Example%20Workflow.json
|
||||
|
||||
**Output Examples**
|
||||
|
||||
<img src="https://raw.githubusercontent.com/mildmisery/invokeai-GridToGifNode/main/input.png" width="300" />
|
||||
<img src="https://raw.githubusercontent.com/mildmisery/invokeai-GridToGifNode/main/output.gif" width="300" />
|
||||
<img src="https://github.com/invoke-ai/InvokeAI/assets/34005131/19aa718a-70c1-4668-8169-d68f4bd13771" style="width: 30%" />
|
||||
<img src="https://github.com/invoke-ai/InvokeAI/assets/34005131/0a440e43-697f-4d17-82ee-f287467df0a5" style="width: 30%" />
|
||||
<img src="https://github.com/invoke-ai/InvokeAI/assets/34005131/0701fd0f-2ca7-4fe2-8613-2b52547bafce" style="width: 30%" />
|
||||
|
||||
--------------------------------
|
||||
### Halftone
|
||||
@@ -105,22 +81,108 @@ Generated Prompt: An enchanted weapon will be usable by any character regardless
|
||||
|
||||
Input:
|
||||
|
||||
<img src="https://github.com/invoke-ai/InvokeAI/assets/34005131/fd5efb9f-4355-4409-a1c2-c1ca99e0cab4" width="300" />
|
||||
{: style="height:512px;width:512px"}
|
||||
|
||||
Halftone Output:
|
||||
|
||||
<img src="https://github.com/invoke-ai/InvokeAI/assets/34005131/7e606f29-e68f-4d46-b3d5-97f799a4ec2f" width="300" />
|
||||
{: style="height:512px;width:512px"}
|
||||
|
||||
CMYK Halftone Output:
|
||||
|
||||
<img src="https://github.com/invoke-ai/InvokeAI/assets/34005131/c59c578f-db8e-4d66-8c66-2851752d75ea" width="300" />
|
||||
{: style="height:512px;width:512px"}
|
||||
|
||||
--------------------------------
|
||||
### Ideal Size
|
||||
### Retroize
|
||||
|
||||
**Description:** This node calculates an ideal image size for a first pass of a multi-pass upscaling. The aim is to avoid duplication that results from choosing a size larger than the model is capable of.
|
||||
**Description:** Retroize is a collection of nodes for InvokeAI to "Retroize" images. Any image can be given a fresh coat of retro paint with these nodes, either from your gallery or from within the graph itself. It includes nodes to pixelize, quantize, palettize, and ditherize images; as well as to retrieve palettes from existing images.
|
||||
|
||||
**Node Link:** https://github.com/JPPhoto/ideal-size-node
|
||||
**Node Link:** https://github.com/Ar7ific1al/invokeai-retroizeinode/
|
||||
|
||||
**Retroize Output Examples**
|
||||
|
||||

|
||||
|
||||
--------------------------------
|
||||
### GPT2RandomPromptMaker
|
||||
|
||||
**Description:** A node for InvokeAI utilizes the GPT-2 language model to generate random prompts based on a provided seed and context.
|
||||
|
||||
**Node Link:** https://github.com/mickr777/GPT2RandomPromptMaker
|
||||
|
||||
**Output Examples**
|
||||
|
||||
Generated Prompt: An enchanted weapon will be usable by any character regardless of their alignment.
|
||||
|
||||

|
||||
|
||||
--------------------------------
|
||||
### Load Video Frame
|
||||
|
||||
**Description:** This is a video frame image provider + indexer/video creation nodes for hooking up to iterators and ranges and ControlNets and such for invokeAI node experimentation. Think animation + ControlNet outputs.
|
||||
|
||||
**Node Link:** https://github.com/helix4u/load_video_frame
|
||||
|
||||
**Example Node Graph:** https://github.com/helix4u/load_video_frame/blob/main/Example_Workflow.json
|
||||
|
||||
**Output Example:**
|
||||
|
||||

|
||||
[Full mp4 of Example Output test.mp4](https://github.com/helix4u/load_video_frame/blob/main/test.mp4)
|
||||
|
||||
--------------------------------
|
||||
|
||||
### Oobabooga
|
||||
|
||||
**Description:** asks a local LLM running in Oobabooga's Text-Generation-Webui to write a prompt based on the user input.
|
||||
|
||||
**Link:** https://github.com/sammyf/oobabooga-node
|
||||
|
||||
|
||||
**Example:**
|
||||
|
||||
"describe a new mystical creature in its natural environment"
|
||||
|
||||
*can return*
|
||||
|
||||
"The mystical creature I am describing to you is called the "Glimmerwing". It is a majestic, iridescent being that inhabits the depths of the most enchanted forests and glimmering lakes. Its body is covered in shimmering scales that reflect every color of the rainbow, and it has delicate, translucent wings that sparkle like diamonds in the sunlight. The Glimmerwing's home is a crystal-clear lake, surrounded by towering trees with leaves that shimmer like jewels. In this serene environment, the Glimmerwing spends its days swimming gracefully through the water, chasing schools of glittering fish and playing with the gentle ripples of the lake's surface.
|
||||
As the sun sets, the Glimmerwing perches on a branch of one of the trees, spreading its wings to catch the last rays of light. The creature's scales glow softly, casting a rainbow of colors across the forest floor. The Glimmerwing sings a haunting melody, its voice echoing through the stillness of the night air. Its song is said to have the power to heal the sick and bring peace to troubled souls. Those who are lucky enough to hear the Glimmerwing's song are forever changed by its beauty and grace."
|
||||
|
||||

|
||||
|
||||
**Requirement**
|
||||
|
||||
a Text-Generation-Webui instance (might work remotely too, but I never tried it) and obviously InvokeAI 3.x
|
||||
|
||||
**Note**
|
||||
|
||||
This node works best with SDXL models, especially as the style can be described independantly of the LLM's output.
|
||||
|
||||
--------------------------------
|
||||
### Depth Map from Wavefront OBJ
|
||||
|
||||
**Description:** Render depth maps from Wavefront .obj files (triangulated) using this simple 3D renderer utilizing numpy and matplotlib to compute and color the scene. There are simple parameters to change the FOV, camera position, and model orientation.
|
||||
|
||||
To be imported, an .obj must use triangulated meshes, so make sure to enable that option if exporting from a 3D modeling program. This renderer makes each triangle a solid color based on its average depth, so it will cause anomalies if your .obj has large triangles. In Blender, the Remesh modifier can be helpful to subdivide a mesh into small pieces that work well given these limitations.
|
||||
|
||||
**Node Link:** https://github.com/dwringer/depth-from-obj-node
|
||||
|
||||
**Example Usage:**
|
||||

|
||||
|
||||
--------------------------------
|
||||
### Generative Grammar-Based Prompt Nodes
|
||||
|
||||
**Description:** This set of 3 nodes generates prompts from simple user-defined grammar rules (loaded from custom files - examples provided below). The prompts are made by recursively expanding a special template string, replacing nonterminal "parts-of-speech" until no more nonterminal terms remain in the string.
|
||||
|
||||
This includes 3 Nodes:
|
||||
- *Lookup Table from File* - loads a YAML file "prompt" section (or of a whole folder of YAML's) into a JSON-ified dictionary (Lookups output)
|
||||
- *Lookups Entry from Prompt* - places a single entry in a new Lookups output under the specified heading
|
||||
- *Prompt from Lookup Table* - uses a Collection of Lookups as grammar rules from which to randomly generate prompts.
|
||||
|
||||
**Node Link:** https://github.com/dwringer/generative-grammar-prompt-nodes
|
||||
|
||||
**Example Usage:**
|
||||

|
||||
|
||||
--------------------------------
|
||||
### Image and Mask Composition Pack
|
||||
@@ -146,88 +208,45 @@ This includes 15 Nodes:
|
||||
- *Text Mask (simple 2D)* - create and position a white on black (or black on white) line of text using any font locally available to Invoke.
|
||||
|
||||
**Node Link:** https://github.com/dwringer/composition-nodes
|
||||
|
||||
</br><img src="https://raw.githubusercontent.com/dwringer/composition-nodes/main/composition_pack_overview.jpg" width="500" />
|
||||
|
||||
**Nodes and Output Examples:**
|
||||

|
||||
|
||||
--------------------------------
|
||||
### Image to Character Art Image Nodes
|
||||
### Size Stepper Nodes
|
||||
|
||||
**Description:** Group of nodes to convert an input image into ascii/unicode art Image
|
||||
**Description:** This is a set of nodes for calculating the necessary size increments for doing upscaling workflows. Use the *Final Size & Orientation* node to enter your full size dimensions and orientation (portrait/landscape/random), then plug that and your initial generation dimensions into the *Ideal Size Stepper* and get 1, 2, or 3 intermediate pairs of dimensions for upscaling. Note this does not output the initial size or full size dimensions: the 1, 2, or 3 outputs of this node are only the intermediate sizes.
|
||||
|
||||
**Node Link:** https://github.com/mickr777/imagetoasciiimage
|
||||
A third node is included, *Random Switch (Integers)*, which is just a generic version of Final Size with no orientation selection.
|
||||
|
||||
**Node Link:** https://github.com/dwringer/size-stepper-nodes
|
||||
|
||||
**Example Usage:**
|
||||

|
||||
|
||||
--------------------------------
|
||||
|
||||
### Text font to Image
|
||||
|
||||
**Description:** text font to text image node for InvokeAI, download a font to use (or if in font cache uses it from there), the text is always resized to the image size, but can control that with padding, optional 2nd line
|
||||
|
||||
**Node Link:** https://github.com/mickr777/textfontimage
|
||||
|
||||
**Output Examples**
|
||||
|
||||
<img src="https://user-images.githubusercontent.com/115216705/271817646-8e061fcc-9a2c-4fa9-bcc7-c0f7b01e9056.png" width="300" /><img src="https://github.com/mickr777/imagetoasciiimage/assets/115216705/3c4990eb-2f42-46b9-90f9-0088b939dc6a" width="300" /></br>
|
||||
<img src="https://github.com/mickr777/imagetoasciiimage/assets/115216705/fee7f800-a4a8-41e2-a66b-c66e4343307e" width="300" />
|
||||
<img src="https://github.com/mickr777/imagetoasciiimage/assets/115216705/1d9c1003-a45f-45c2-aac7-46470bb89330" width="300" />
|
||||

|
||||
|
||||
Results after using the depth controlnet
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
--------------------------------
|
||||
|
||||
### Image Picker
|
||||
|
||||
**Description:** This InvokeAI node takes in a collection of images and randomly chooses one. This can be useful when you have a number of poses to choose from for a ControlNet node, or a number of input images for another purpose.
|
||||
|
||||
**Node Link:** https://github.com/JPPhoto/image-picker-node
|
||||
|
||||
--------------------------------
|
||||
### Load Video Frame
|
||||
|
||||
**Description:** This is a video frame image provider + indexer/video creation nodes for hooking up to iterators and ranges and ControlNets and such for invokeAI node experimentation. Think animation + ControlNet outputs.
|
||||
|
||||
**Node Link:** https://github.com/helix4u/load_video_frame
|
||||
|
||||
**Example Node Graph:** https://github.com/helix4u/load_video_frame/blob/main/Example_Workflow.json
|
||||
|
||||
**Output Example:**
|
||||
|
||||
<img src="https://github.com/helix4u/load_video_frame/blob/main/testmp4_embed_converted.gif" width="500" />
|
||||
[Full mp4 of Example Output test.mp4](https://github.com/helix4u/load_video_frame/blob/main/test.mp4)
|
||||
|
||||
--------------------------------
|
||||
### Make 3D
|
||||
|
||||
**Description:** Create compelling 3D stereo images from 2D originals.
|
||||
|
||||
**Node Link:** [https://gitlab.com/srcrr/shift3d/-/raw/main/make3d.py](https://gitlab.com/srcrr/shift3d)
|
||||
|
||||
**Example Node Graph:** https://gitlab.com/srcrr/shift3d/-/raw/main/example-workflow.json?ref_type=heads&inline=false
|
||||
|
||||
**Output Examples**
|
||||
|
||||
<img src="https://gitlab.com/srcrr/shift3d/-/raw/main/example-1.png" width="300" />
|
||||
<img src="https://gitlab.com/srcrr/shift3d/-/raw/main/example-2.png" width="300" />
|
||||
|
||||
--------------------------------
|
||||
### Oobabooga
|
||||
|
||||
**Description:** asks a local LLM running in Oobabooga's Text-Generation-Webui to write a prompt based on the user input.
|
||||
|
||||
**Link:** https://github.com/sammyf/oobabooga-node
|
||||
|
||||
**Example:**
|
||||
|
||||
"describe a new mystical creature in its natural environment"
|
||||
|
||||
*can return*
|
||||
|
||||
"The mystical creature I am describing to you is called the "Glimmerwing". It is a majestic, iridescent being that inhabits the depths of the most enchanted forests and glimmering lakes. Its body is covered in shimmering scales that reflect every color of the rainbow, and it has delicate, translucent wings that sparkle like diamonds in the sunlight. The Glimmerwing's home is a crystal-clear lake, surrounded by towering trees with leaves that shimmer like jewels. In this serene environment, the Glimmerwing spends its days swimming gracefully through the water, chasing schools of glittering fish and playing with the gentle ripples of the lake's surface.
|
||||
As the sun sets, the Glimmerwing perches on a branch of one of the trees, spreading its wings to catch the last rays of light. The creature's scales glow softly, casting a rainbow of colors across the forest floor. The Glimmerwing sings a haunting melody, its voice echoing through the stillness of the night air. Its song is said to have the power to heal the sick and bring peace to troubled souls. Those who are lucky enough to hear the Glimmerwing's song are forever changed by its beauty and grace."
|
||||
|
||||
<img src="https://github.com/sammyf/oobabooga-node/assets/42468608/cecdd820-93dd-4c35-abbf-607e001fb2ed" width="300" />
|
||||
|
||||
**Requirement**
|
||||
|
||||
a Text-Generation-Webui instance (might work remotely too, but I never tried it) and obviously InvokeAI 3.x
|
||||
|
||||
**Note**
|
||||
|
||||
This node works best with SDXL models, especially as the style can be described independently of the LLM's output.
|
||||
|
||||
--------------------------------
|
||||
### Prompt Tools
|
||||
|
||||
**Description:** A set of InvokeAI nodes that add general prompt manipulation tools. These were written to accompany the PromptsFromFile node and other prompt generation nodes.
|
||||
**Description:** A set of InvokeAI nodes that add general prompt manipulation tools. These where written to accompany the PromptsFromFile node and other prompt generation nodes.
|
||||
|
||||
1. PromptJoin - Joins to prompts into one.
|
||||
2. PromptReplace - performs a search and replace on a prompt. With the option of using regex.
|
||||
@@ -244,83 +263,51 @@ See full docs here: https://github.com/skunkworxdark/Prompt-tools-nodes/edit/mai
|
||||
**Node Link:** https://github.com/skunkworxdark/Prompt-tools-nodes
|
||||
|
||||
--------------------------------
|
||||
### Retroize
|
||||
|
||||
**Description:** Retroize is a collection of nodes for InvokeAI to "Retroize" images. Any image can be given a fresh coat of retro paint with these nodes, either from your gallery or from within the graph itself. It includes nodes to pixelize, quantize, palettize, and ditherize images; as well as to retrieve palettes from existing images.
|
||||
|
||||
**Node Link:** https://github.com/Ar7ific1al/invokeai-retroizeinode/
|
||||
|
||||
**Retroize Output Examples**
|
||||
|
||||
<img src="https://github.com/Ar7ific1al/InvokeAI_nodes_retroize/assets/2306586/de8b4fa6-324c-4c2d-b36c-297600c73974" width="500" />
|
||||
|
||||
--------------------------------
|
||||
### Size Stepper Nodes
|
||||
|
||||
**Description:** This is a set of nodes for calculating the necessary size increments for doing upscaling workflows. Use the *Final Size & Orientation* node to enter your full size dimensions and orientation (portrait/landscape/random), then plug that and your initial generation dimensions into the *Ideal Size Stepper* and get 1, 2, or 3 intermediate pairs of dimensions for upscaling. Note this does not output the initial size or full size dimensions: the 1, 2, or 3 outputs of this node are only the intermediate sizes.
|
||||
|
||||
A third node is included, *Random Switch (Integers)*, which is just a generic version of Final Size with no orientation selection.
|
||||
|
||||
**Node Link:** https://github.com/dwringer/size-stepper-nodes
|
||||
|
||||
**Example Usage:**
|
||||
</br><img src="https://raw.githubusercontent.com/dwringer/size-stepper-nodes/main/size_nodes_usage.jpg" width="500" />
|
||||
|
||||
--------------------------------
|
||||
### Text font to Image
|
||||
|
||||
**Description:** text font to text image node for InvokeAI, download a font to use (or if in font cache uses it from there), the text is always resized to the image size, but can control that with padding, optional 2nd line
|
||||
|
||||
**Node Link:** https://github.com/mickr777/textfontimage
|
||||
|
||||
**Output Examples**
|
||||
|
||||
<img src="https://github.com/mickr777/InvokeAI/assets/115216705/c21b0af3-d9c6-4c16-9152-846a23effd36" width="300" />
|
||||
|
||||
Results after using the depth controlnet
|
||||
|
||||
<img src="https://github.com/mickr777/InvokeAI/assets/115216705/915f1a53-968e-43eb-aa61-07cd8f1a733a" width="300" />
|
||||
<img src="https://github.com/mickr777/InvokeAI/assets/115216705/821ef89e-8a60-44f5-b94e-471a9d8690cc" width="300" />
|
||||
<img src="https://github.com/mickr777/InvokeAI/assets/115216705/2befcb6d-49f4-4bfd-b5fc-1fee19274f89" width="300" />
|
||||
|
||||
--------------------------------
|
||||
### Thresholding
|
||||
|
||||
**Description:** This node generates masks for highlights, midtones, and shadows given an input image. You can optionally specify a blur for the lookup table used in making those masks from the source image.
|
||||
|
||||
**Node Link:** https://github.com/JPPhoto/thresholding-node
|
||||
|
||||
**Examples**
|
||||
|
||||
Input:
|
||||
|
||||
<img src="https://github.com/invoke-ai/InvokeAI/assets/34005131/c88ada13-fb3d-484c-a4fe-947b44712632" width="300" />
|
||||
|
||||
Highlights/Midtones/Shadows:
|
||||
|
||||
<img src="https://github.com/invoke-ai/InvokeAI/assets/34005131/727021c1-36ff-4ec8-90c8-105e00de986d" width="300" />
|
||||
<img src="https://github.com/invoke-ai/InvokeAI/assets/34005131/0b721bfc-f051-404e-b905-2f16b824ddfe" width="300" />
|
||||
<img src="https://github.com/invoke-ai/InvokeAI/assets/34005131/04c1297f-1c88-42b6-a7df-dd090b976286" width="300" />
|
||||
|
||||
Highlights/Midtones/Shadows (with LUT blur enabled):
|
||||
|
||||
<img src="https://github.com/invoke-ai/InvokeAI/assets/34005131/19aa718a-70c1-4668-8169-d68f4bd13771" width="300" />
|
||||
<img src="https://github.com/invoke-ai/InvokeAI/assets/34005131/0a440e43-697f-4d17-82ee-f287467df0a5" width="300" />
|
||||
<img src="https://github.com/invoke-ai/InvokeAI/assets/34005131/0701fd0f-2ca7-4fe2-8613-2b52547bafce" width="300" />
|
||||
|
||||
--------------------------------
|
||||
### XY Image to Grid and Images to Grids nodes
|
||||
|
||||
**Description:** Image to grid nodes and supporting tools.
|
||||
|
||||
1. "Images To Grids" node - Takes a collection of images and creates a grid(s) of images. If there are more images than the size of a single grid then multiple grids will be created until it runs out of images.
|
||||
2. "XYImage To Grid" node - Converts a collection of XYImages into a labeled Grid of images. The XYImages collection has to be built using the supporting nodes. See example node setups for more details.
|
||||
1. "Images To Grids" node - Takes a collection of images and creates a grid(s) of images. If there are more images than the size of a single grid then mutilple grids will be created until it runs out of images.
|
||||
2. "XYImage To Grid" node - Converts a collection of XYImages into a labeled Grid of images. The XYImages collection has to be built using the supporoting nodes. See example node setups for more details.
|
||||
|
||||
|
||||
See full docs here: https://github.com/skunkworxdark/XYGrid_nodes/edit/main/README.md
|
||||
|
||||
**Node Link:** https://github.com/skunkworxdark/XYGrid_nodes
|
||||
|
||||
--------------------------------
|
||||
|
||||
### Image to Character Art Image Node's
|
||||
|
||||
**Description:** Group of nodes to convert an input image into ascii/unicode art Image
|
||||
|
||||
**Node Link:** https://github.com/mickr777/imagetoasciiimage
|
||||
|
||||
**Output Examples**
|
||||
|
||||
<img src="https://github.com/invoke-ai/InvokeAI/assets/115216705/8e061fcc-9a2c-4fa9-bcc7-c0f7b01e9056" width="300" />
|
||||
<img src="https://github.com/mickr777/imagetoasciiimage/assets/115216705/3c4990eb-2f42-46b9-90f9-0088b939dc6a" width="300" /></br>
|
||||
<img src="https://github.com/mickr777/imagetoasciiimage/assets/115216705/fee7f800-a4a8-41e2-a66b-c66e4343307e" width="300" />
|
||||
<img src="https://github.com/mickr777/imagetoasciiimage/assets/115216705/1d9c1003-a45f-45c2-aac7-46470bb89330" width="300" />
|
||||
|
||||
--------------------------------
|
||||
|
||||
### Grid to Gif
|
||||
|
||||
**Description:** One node that turns a grid image into an image colletion, one node that turns an image collection into a gif
|
||||
|
||||
**Node Link:** https://github.com/mildmisery/invokeai-GridToGifNode/blob/main/GridToGif.py
|
||||
|
||||
**Example Node Graph:** https://github.com/mildmisery/invokeai-GridToGifNode/blob/main/Grid%20to%20Gif%20Example%20Workflow.json
|
||||
|
||||
**Output Examples**
|
||||
|
||||
<img src="https://raw.githubusercontent.com/mildmisery/invokeai-GridToGifNode/main/input.png" width="300" />
|
||||
<img src="https://raw.githubusercontent.com/mildmisery/invokeai-GridToGifNode/main/output.gif" width="300" />
|
||||
|
||||
--------------------------------
|
||||
|
||||
### Example Node Template
|
||||
|
||||
**Description:** This node allows you to do super cool things with InvokeAI.
|
||||
@@ -331,7 +318,7 @@ See full docs here: https://github.com/skunkworxdark/XYGrid_nodes/edit/main/READ
|
||||
|
||||
**Output Examples**
|
||||
|
||||
</br><img src="https://invoke-ai.github.io/InvokeAI/assets/invoke_ai_banner.png" width="500" />
|
||||
{: style="height:115px;width:240px"}
|
||||
|
||||
|
||||
## Disclaimer
|
||||
|
||||
@@ -322,20 +322,3 @@ async def unstar_images_in_list(
|
||||
return ImagesUpdatedFromListResult(updated_image_names=updated_image_names)
|
||||
except Exception:
|
||||
raise HTTPException(status_code=500, detail="Failed to unstar images")
|
||||
|
||||
|
||||
class ImagesDownloaded(BaseModel):
|
||||
response: Optional[str] = Field(
|
||||
description="If defined, the message to display to the user when images begin downloading"
|
||||
)
|
||||
|
||||
|
||||
@images_router.post("/download", operation_id="download_images_from_list", response_model=ImagesDownloaded)
|
||||
async def download_images_from_list(
|
||||
image_names: list[str] = Body(description="The list of names of images to download", embed=True),
|
||||
board_id: Optional[str] = Body(
|
||||
default=None, description="The board from which image should be downloaded from", embed=True
|
||||
),
|
||||
) -> ImagesDownloaded:
|
||||
# return ImagesDownloaded(response="Your images are downloading")
|
||||
raise HTTPException(status_code=501, detail="Endpoint is not yet implemented")
|
||||
|
||||
@@ -30,8 +30,8 @@ class SocketIO:
|
||||
|
||||
async def _handle_sub_queue(self, sid, data, *args, **kwargs):
|
||||
if "queue_id" in data:
|
||||
await self.__sio.enter_room(sid, data["queue_id"])
|
||||
self.__sio.enter_room(sid, data["queue_id"])
|
||||
|
||||
async def _handle_unsub_queue(self, sid, data, *args, **kwargs):
|
||||
if "queue_id" in data:
|
||||
await self.__sio.enter_room(sid, data["queue_id"])
|
||||
self.__sio.enter_room(sid, data["queue_id"])
|
||||
|
||||
@@ -46,8 +46,6 @@ class FaceResultData(TypedDict):
|
||||
y_center: float
|
||||
mesh_width: int
|
||||
mesh_height: int
|
||||
chunk_x_offset: int
|
||||
chunk_y_offset: int
|
||||
|
||||
|
||||
class FaceResultDataWithId(FaceResultData):
|
||||
@@ -80,48 +78,6 @@ FONT_SIZE = 32
|
||||
FONT_STROKE_WIDTH = 4
|
||||
|
||||
|
||||
def coalesce_faces(face1: FaceResultData, face2: FaceResultData) -> FaceResultData:
|
||||
face1_x_offset = face1["chunk_x_offset"] - min(face1["chunk_x_offset"], face2["chunk_x_offset"])
|
||||
face2_x_offset = face2["chunk_x_offset"] - min(face1["chunk_x_offset"], face2["chunk_x_offset"])
|
||||
face1_y_offset = face1["chunk_y_offset"] - min(face1["chunk_y_offset"], face2["chunk_y_offset"])
|
||||
face2_y_offset = face2["chunk_y_offset"] - min(face1["chunk_y_offset"], face2["chunk_y_offset"])
|
||||
|
||||
new_im_width = (
|
||||
max(face1["image"].width, face2["image"].width)
|
||||
+ max(face1["chunk_x_offset"], face2["chunk_x_offset"])
|
||||
- min(face1["chunk_x_offset"], face2["chunk_x_offset"])
|
||||
)
|
||||
new_im_height = (
|
||||
max(face1["image"].height, face2["image"].height)
|
||||
+ max(face1["chunk_y_offset"], face2["chunk_y_offset"])
|
||||
- min(face1["chunk_y_offset"], face2["chunk_y_offset"])
|
||||
)
|
||||
pil_image = Image.new(mode=face1["image"].mode, size=(new_im_width, new_im_height))
|
||||
pil_image.paste(face1["image"], (face1_x_offset, face1_y_offset))
|
||||
pil_image.paste(face2["image"], (face2_x_offset, face2_y_offset))
|
||||
|
||||
# Mask images are always from the origin
|
||||
new_mask_im_width = max(face1["mask"].width, face2["mask"].width)
|
||||
new_mask_im_height = max(face1["mask"].height, face2["mask"].height)
|
||||
mask_pil = create_white_image(new_mask_im_width, new_mask_im_height)
|
||||
black_image = create_black_image(face1["mask"].width, face1["mask"].height)
|
||||
mask_pil.paste(black_image, (0, 0), ImageOps.invert(face1["mask"]))
|
||||
black_image = create_black_image(face2["mask"].width, face2["mask"].height)
|
||||
mask_pil.paste(black_image, (0, 0), ImageOps.invert(face2["mask"]))
|
||||
|
||||
new_face = FaceResultData(
|
||||
image=pil_image,
|
||||
mask=mask_pil,
|
||||
x_center=max(face1["x_center"], face2["x_center"]),
|
||||
y_center=max(face1["y_center"], face2["y_center"]),
|
||||
mesh_width=max(face1["mesh_width"], face2["mesh_width"]),
|
||||
mesh_height=max(face1["mesh_height"], face2["mesh_height"]),
|
||||
chunk_x_offset=max(face1["chunk_x_offset"], face2["chunk_x_offset"]),
|
||||
chunk_y_offset=max(face2["chunk_y_offset"], face2["chunk_y_offset"]),
|
||||
)
|
||||
return new_face
|
||||
|
||||
|
||||
def prepare_faces_list(
|
||||
face_result_list: list[FaceResultData],
|
||||
) -> list[FaceResultDataWithId]:
|
||||
@@ -135,7 +91,7 @@ def prepare_faces_list(
|
||||
should_add = True
|
||||
candidate_x_center = candidate["x_center"]
|
||||
candidate_y_center = candidate["y_center"]
|
||||
for idx, face in enumerate(deduped_faces):
|
||||
for face in deduped_faces:
|
||||
face_center_x = face["x_center"]
|
||||
face_center_y = face["y_center"]
|
||||
face_radius_w = face["mesh_width"] / 2
|
||||
@@ -149,7 +105,6 @@ def prepare_faces_list(
|
||||
)
|
||||
|
||||
if p < 1: # Inside of the already-added face's radius
|
||||
deduped_faces[idx] = coalesce_faces(face, candidate)
|
||||
should_add = False
|
||||
break
|
||||
|
||||
@@ -183,6 +138,7 @@ def generate_face_box_mask(
|
||||
chunk_x_offset: int = 0,
|
||||
chunk_y_offset: int = 0,
|
||||
draw_mesh: bool = True,
|
||||
check_bounds: bool = True,
|
||||
) -> list[FaceResultData]:
|
||||
result = []
|
||||
mask_pil = None
|
||||
@@ -255,20 +211,33 @@ def generate_face_box_mask(
|
||||
mask_pil = create_white_image(w + chunk_x_offset, h + chunk_y_offset)
|
||||
mask_pil.paste(init_mask_pil, (chunk_x_offset, chunk_y_offset))
|
||||
|
||||
x_center = float(x_center)
|
||||
y_center = float(y_center)
|
||||
face = FaceResultData(
|
||||
image=pil_image,
|
||||
mask=mask_pil or create_white_image(*pil_image.size),
|
||||
x_center=x_center + chunk_x_offset,
|
||||
y_center=y_center + chunk_y_offset,
|
||||
mesh_width=mesh_width,
|
||||
mesh_height=mesh_height,
|
||||
chunk_x_offset=chunk_x_offset,
|
||||
chunk_y_offset=chunk_y_offset,
|
||||
)
|
||||
left_side = x_center - mesh_width
|
||||
right_side = x_center + mesh_width
|
||||
top_side = y_center - mesh_height
|
||||
bottom_side = y_center + mesh_height
|
||||
im_width, im_height = pil_image.size
|
||||
over_w = im_width * 0.1
|
||||
over_h = im_height * 0.1
|
||||
if not check_bounds or (
|
||||
(left_side >= -over_w)
|
||||
and (right_side < im_width + over_w)
|
||||
and (top_side >= -over_h)
|
||||
and (bottom_side < im_height + over_h)
|
||||
):
|
||||
x_center = float(x_center)
|
||||
y_center = float(y_center)
|
||||
face = FaceResultData(
|
||||
image=pil_image,
|
||||
mask=mask_pil or create_white_image(*pil_image.size),
|
||||
x_center=x_center + chunk_x_offset,
|
||||
y_center=y_center + chunk_y_offset,
|
||||
mesh_width=mesh_width,
|
||||
mesh_height=mesh_height,
|
||||
)
|
||||
|
||||
result.append(face)
|
||||
result.append(face)
|
||||
else:
|
||||
context.services.logger.info("FaceTools --> Face out of bounds, ignoring.")
|
||||
|
||||
return result
|
||||
|
||||
@@ -377,6 +346,7 @@ def get_faces_list(
|
||||
chunk_x_offset=0,
|
||||
chunk_y_offset=0,
|
||||
draw_mesh=draw_mesh,
|
||||
check_bounds=False,
|
||||
)
|
||||
if should_chunk or len(result) == 0:
|
||||
context.services.logger.info("FaceTools --> Chunking image (chunk toggled on, or no face found in full image).")
|
||||
@@ -390,26 +360,24 @@ def get_faces_list(
|
||||
if width > height:
|
||||
# Landscape - slice the image horizontally
|
||||
fx = 0.0
|
||||
steps = int(width * 2 / height) + 1
|
||||
increment = (width - height) / (steps - 1)
|
||||
steps = int(width * 2 / height)
|
||||
while fx <= (width - height):
|
||||
x = int(fx)
|
||||
image_chunks.append(image.crop((x, 0, x + height, height)))
|
||||
image_chunks.append(image.crop((x, 0, x + height - 1, height - 1)))
|
||||
x_offsets.append(x)
|
||||
y_offsets.append(0)
|
||||
fx += increment
|
||||
fx += (width - height) / steps
|
||||
context.services.logger.info(f"FaceTools --> Chunk starting at x = {x}")
|
||||
elif height > width:
|
||||
# Portrait - slice the image vertically
|
||||
fy = 0.0
|
||||
steps = int(height * 2 / width) + 1
|
||||
increment = (height - width) / (steps - 1)
|
||||
steps = int(height * 2 / width)
|
||||
while fy <= (height - width):
|
||||
y = int(fy)
|
||||
image_chunks.append(image.crop((0, y, width, y + width)))
|
||||
image_chunks.append(image.crop((0, y, width - 1, y + width - 1)))
|
||||
x_offsets.append(0)
|
||||
y_offsets.append(y)
|
||||
fy += increment
|
||||
fy += (height - width) / steps
|
||||
context.services.logger.info(f"FaceTools --> Chunk starting at y = {y}")
|
||||
|
||||
for idx in range(len(image_chunks)):
|
||||
@@ -436,7 +404,7 @@ def get_faces_list(
|
||||
return all_faces
|
||||
|
||||
|
||||
@invocation("face_off", title="FaceOff", tags=["image", "faceoff", "face", "mask"], category="image", version="1.0.2")
|
||||
@invocation("face_off", title="FaceOff", tags=["image", "faceoff", "face", "mask"], category="image", version="1.0.1")
|
||||
class FaceOffInvocation(BaseInvocation):
|
||||
"""Bound, extract, and mask a face from an image using MediaPipe detection"""
|
||||
|
||||
@@ -530,7 +498,7 @@ class FaceOffInvocation(BaseInvocation):
|
||||
return output
|
||||
|
||||
|
||||
@invocation("face_mask_detection", title="FaceMask", tags=["image", "face", "mask"], category="image", version="1.0.2")
|
||||
@invocation("face_mask_detection", title="FaceMask", tags=["image", "face", "mask"], category="image", version="1.0.1")
|
||||
class FaceMaskInvocation(BaseInvocation):
|
||||
"""Face mask creation using mediapipe face detection"""
|
||||
|
||||
@@ -648,7 +616,7 @@ class FaceMaskInvocation(BaseInvocation):
|
||||
|
||||
|
||||
@invocation(
|
||||
"face_identifier", title="FaceIdentifier", tags=["image", "face", "identifier"], category="image", version="1.0.2"
|
||||
"face_identifier", title="FaceIdentifier", tags=["image", "face", "identifier"], category="image", version="1.0.1"
|
||||
)
|
||||
class FaceIdentifierInvocation(BaseInvocation):
|
||||
"""Outputs an image with detected face IDs printed on each face. For use with other FaceTools."""
|
||||
|
||||
@@ -44,31 +44,28 @@ class CoreMetadata(BaseModelExcludeNull):
|
||||
"""Core generation metadata for an image generated in InvokeAI."""
|
||||
|
||||
app_version: str = Field(default=__version__, description="The version of InvokeAI used to generate this image")
|
||||
generation_mode: Optional[str] = Field(
|
||||
default=None,
|
||||
generation_mode: str = Field(
|
||||
description="The generation mode that output this image",
|
||||
)
|
||||
created_by: Optional[str] = Field(description="The name of the creator of the image")
|
||||
positive_prompt: Optional[str] = Field(default=None, description="The positive prompt parameter")
|
||||
negative_prompt: Optional[str] = Field(default=None, description="The negative prompt parameter")
|
||||
width: Optional[int] = Field(default=None, description="The width parameter")
|
||||
height: Optional[int] = Field(default=None, description="The height parameter")
|
||||
seed: Optional[int] = Field(default=None, description="The seed used for noise generation")
|
||||
rand_device: Optional[str] = Field(default=None, description="The device used for random number generation")
|
||||
cfg_scale: Optional[float] = Field(default=None, description="The classifier-free guidance scale parameter")
|
||||
steps: Optional[int] = Field(default=None, description="The number of steps used for inference")
|
||||
scheduler: Optional[str] = Field(default=None, description="The scheduler used for inference")
|
||||
positive_prompt: str = Field(description="The positive prompt parameter")
|
||||
negative_prompt: str = Field(description="The negative prompt parameter")
|
||||
width: int = Field(description="The width parameter")
|
||||
height: int = Field(description="The height parameter")
|
||||
seed: int = Field(description="The seed used for noise generation")
|
||||
rand_device: str = Field(description="The device used for random number generation")
|
||||
cfg_scale: float = Field(description="The classifier-free guidance scale parameter")
|
||||
steps: int = Field(description="The number of steps used for inference")
|
||||
scheduler: str = Field(description="The scheduler used for inference")
|
||||
clip_skip: Optional[int] = Field(
|
||||
default=None,
|
||||
description="The number of skipped CLIP layers",
|
||||
)
|
||||
model: Optional[MainModelField] = Field(default=None, description="The main model used for inference")
|
||||
controlnets: Optional[list[ControlField]] = Field(default=None, description="The ControlNets used for inference")
|
||||
ipAdapters: Optional[list[IPAdapterMetadataField]] = Field(
|
||||
default=None, description="The IP Adapters used for inference"
|
||||
)
|
||||
t2iAdapters: Optional[list[T2IAdapterField]] = Field(default=None, description="The IP Adapters used for inference")
|
||||
loras: Optional[list[LoRAMetadataField]] = Field(default=None, description="The LoRAs used for inference")
|
||||
model: MainModelField = Field(description="The main model used for inference")
|
||||
controlnets: list[ControlField] = Field(description="The ControlNets used for inference")
|
||||
ipAdapters: list[IPAdapterMetadataField] = Field(description="The IP Adapters used for inference")
|
||||
t2iAdapters: list[T2IAdapterField] = Field(description="The IP Adapters used for inference")
|
||||
loras: list[LoRAMetadataField] = Field(description="The LoRAs used for inference")
|
||||
vae: Optional[VAEModelField] = Field(
|
||||
default=None,
|
||||
description="The VAE used for decoding, if the main model's default was not used",
|
||||
@@ -125,34 +122,27 @@ class MetadataAccumulatorOutput(BaseInvocationOutput):
|
||||
class MetadataAccumulatorInvocation(BaseInvocation):
|
||||
"""Outputs a Core Metadata Object"""
|
||||
|
||||
generation_mode: Optional[str] = InputField(
|
||||
default=None,
|
||||
generation_mode: str = InputField(
|
||||
description="The generation mode that output this image",
|
||||
)
|
||||
positive_prompt: Optional[str] = InputField(default=None, description="The positive prompt parameter")
|
||||
negative_prompt: Optional[str] = InputField(default=None, description="The negative prompt parameter")
|
||||
width: Optional[int] = InputField(default=None, description="The width parameter")
|
||||
height: Optional[int] = InputField(default=None, description="The height parameter")
|
||||
seed: Optional[int] = InputField(default=None, description="The seed used for noise generation")
|
||||
rand_device: Optional[str] = InputField(default=None, description="The device used for random number generation")
|
||||
cfg_scale: Optional[float] = InputField(default=None, description="The classifier-free guidance scale parameter")
|
||||
steps: Optional[int] = InputField(default=None, description="The number of steps used for inference")
|
||||
scheduler: Optional[str] = InputField(default=None, description="The scheduler used for inference")
|
||||
clip_skip: Optional[int] = InputField(
|
||||
positive_prompt: str = InputField(description="The positive prompt parameter")
|
||||
negative_prompt: str = InputField(description="The negative prompt parameter")
|
||||
width: int = InputField(description="The width parameter")
|
||||
height: int = InputField(description="The height parameter")
|
||||
seed: int = InputField(description="The seed used for noise generation")
|
||||
rand_device: str = InputField(description="The device used for random number generation")
|
||||
cfg_scale: float = InputField(description="The classifier-free guidance scale parameter")
|
||||
steps: int = InputField(description="The number of steps used for inference")
|
||||
scheduler: str = InputField(description="The scheduler used for inference")
|
||||
clip_skip: Optional[int] = Field(
|
||||
default=None,
|
||||
description="The number of skipped CLIP layers",
|
||||
)
|
||||
model: Optional[MainModelField] = InputField(default=None, description="The main model used for inference")
|
||||
controlnets: Optional[list[ControlField]] = InputField(
|
||||
default=None, description="The ControlNets used for inference"
|
||||
)
|
||||
ipAdapters: Optional[list[IPAdapterMetadataField]] = InputField(
|
||||
default=None, description="The IP Adapters used for inference"
|
||||
)
|
||||
t2iAdapters: Optional[list[T2IAdapterField]] = InputField(
|
||||
default=None, description="The IP Adapters used for inference"
|
||||
)
|
||||
loras: Optional[list[LoRAMetadataField]] = InputField(default=None, description="The LoRAs used for inference")
|
||||
model: MainModelField = InputField(description="The main model used for inference")
|
||||
controlnets: list[ControlField] = InputField(description="The ControlNets used for inference")
|
||||
ipAdapters: list[IPAdapterMetadataField] = InputField(description="The IP Adapters used for inference")
|
||||
t2iAdapters: list[T2IAdapterField] = Field(description="The IP Adapters used for inference")
|
||||
loras: list[LoRAMetadataField] = InputField(description="The LoRAs used for inference")
|
||||
strength: Optional[float] = InputField(
|
||||
default=None,
|
||||
description="The strength used for latents-to-latents",
|
||||
@@ -166,20 +156,6 @@ class MetadataAccumulatorInvocation(BaseInvocation):
|
||||
description="The VAE used for decoding, if the main model's default was not used",
|
||||
)
|
||||
|
||||
# High resolution fix metadata.
|
||||
hrf_width: Optional[int] = InputField(
|
||||
default=None,
|
||||
description="The high resolution fix height and width multipler.",
|
||||
)
|
||||
hrf_height: Optional[int] = InputField(
|
||||
default=None,
|
||||
description="The high resolution fix height and width multipler.",
|
||||
)
|
||||
hrf_strength: Optional[float] = InputField(
|
||||
default=None,
|
||||
description="The high resolution fix img2img strength used in the upscale pass.",
|
||||
)
|
||||
|
||||
# SDXL
|
||||
positive_style_prompt: Optional[str] = InputField(
|
||||
default=None,
|
||||
|
||||
@@ -55,9 +55,9 @@ class BoardImageRecordStorageBase(ABC):
|
||||
class SqliteBoardImageRecordStorage(BoardImageRecordStorageBase):
|
||||
_conn: sqlite3.Connection
|
||||
_cursor: sqlite3.Cursor
|
||||
_lock: threading.RLock
|
||||
_lock: threading.Lock
|
||||
|
||||
def __init__(self, conn: sqlite3.Connection, lock: threading.RLock) -> None:
|
||||
def __init__(self, conn: sqlite3.Connection, lock: threading.Lock) -> None:
|
||||
super().__init__()
|
||||
self._conn = conn
|
||||
# Enable row factory to get rows as dictionaries (must be done before making the cursor!)
|
||||
|
||||
@@ -89,9 +89,9 @@ class BoardRecordStorageBase(ABC):
|
||||
class SqliteBoardRecordStorage(BoardRecordStorageBase):
|
||||
_conn: sqlite3.Connection
|
||||
_cursor: sqlite3.Cursor
|
||||
_lock: threading.RLock
|
||||
_lock: threading.Lock
|
||||
|
||||
def __init__(self, conn: sqlite3.Connection, lock: threading.RLock) -> None:
|
||||
def __init__(self, conn: sqlite3.Connection, lock: threading.Lock) -> None:
|
||||
super().__init__()
|
||||
self._conn = conn
|
||||
# Enable row factory to get rows as dictionaries (must be done before making the cursor!)
|
||||
|
||||
@@ -241,8 +241,8 @@ class InvokeAIAppConfig(InvokeAISettings):
|
||||
version : bool = Field(default=False, description="Show InvokeAI version and exit", category="Other")
|
||||
|
||||
# CACHE
|
||||
ram : float = Field(default=7.5, gt=0, description="Maximum memory amount used by model cache for rapid switching (floating point number, GB)", category="Model Cache", )
|
||||
vram : float = Field(default=0.25, ge=0, description="Amount of VRAM reserved for model storage (floating point number, GB)", category="Model Cache", )
|
||||
ram : Union[float, Literal["auto"]] = Field(default=7.5, gt=0, description="Maximum memory amount used by model cache for rapid switching (floating point number or 'auto')", category="Model Cache", )
|
||||
vram : Union[float, Literal["auto"]] = Field(default=0.25, ge=0, description="Amount of VRAM reserved for model storage (floating point number or 'auto')", category="Model Cache", )
|
||||
lazy_offload : bool = Field(default=True, description="Keep models in VRAM until their space is needed", category="Model Cache", )
|
||||
|
||||
# DEVICE
|
||||
|
||||
@@ -150,9 +150,9 @@ class ImageRecordStorageBase(ABC):
|
||||
class SqliteImageRecordStorage(ImageRecordStorageBase):
|
||||
_conn: sqlite3.Connection
|
||||
_cursor: sqlite3.Cursor
|
||||
_lock: threading.RLock
|
||||
_lock: threading.Lock
|
||||
|
||||
def __init__(self, conn: sqlite3.Connection, lock: threading.RLock) -> None:
|
||||
def __init__(self, conn: sqlite3.Connection, lock: threading.Lock) -> None:
|
||||
super().__init__()
|
||||
self._conn = conn
|
||||
# Enable row factory to get rows as dictionaries (must be done before making the cursor!)
|
||||
|
||||
@@ -36,7 +36,7 @@ class SqliteSessionQueue(SessionQueueBase):
|
||||
__invoker: Invoker
|
||||
__conn: sqlite3.Connection
|
||||
__cursor: sqlite3.Cursor
|
||||
__lock: threading.RLock
|
||||
__lock: threading.Lock
|
||||
|
||||
def start(self, invoker: Invoker) -> None:
|
||||
self.__invoker = invoker
|
||||
@@ -45,7 +45,7 @@ class SqliteSessionQueue(SessionQueueBase):
|
||||
local_handler.register(event_name=EventServiceBase.queue_event, _func=self._on_session_event)
|
||||
self.__invoker.services.logger.info(f"Pruned {prune_result.deleted} finished queue items")
|
||||
|
||||
def __init__(self, conn: sqlite3.Connection, lock: threading.RLock) -> None:
|
||||
def __init__(self, conn: sqlite3.Connection, lock: threading.Lock) -> None:
|
||||
super().__init__()
|
||||
self.__conn = conn
|
||||
# Enable row factory to get rows as dictionaries (must be done before making the cursor!)
|
||||
|
||||
@@ -16,9 +16,9 @@ class SqliteItemStorage(ItemStorageABC, Generic[T]):
|
||||
_conn: sqlite3.Connection
|
||||
_cursor: sqlite3.Cursor
|
||||
_id_field: str
|
||||
_lock: threading.RLock
|
||||
_lock: threading.Lock
|
||||
|
||||
def __init__(self, conn: sqlite3.Connection, table_name: str, lock: threading.RLock, id_field: str = "id"):
|
||||
def __init__(self, conn: sqlite3.Connection, table_name: str, lock: threading.Lock, id_field: str = "id"):
|
||||
super().__init__()
|
||||
|
||||
self._table_name = table_name
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
import threading
|
||||
|
||||
lock = threading.RLock()
|
||||
lock = threading.Lock()
|
||||
|
||||
@@ -662,7 +662,7 @@ def default_ramcache() -> float:
|
||||
|
||||
def default_startup_options(init_file: Path) -> Namespace:
|
||||
opts = InvokeAIAppConfig.get_config()
|
||||
opts.ram = opts.ram or default_ramcache()
|
||||
opts.ram = default_ramcache()
|
||||
return opts
|
||||
|
||||
|
||||
|
||||
@@ -55,10 +55,8 @@ class MemorySnapshot:
|
||||
|
||||
try:
|
||||
malloc_info = LibcUtil().mallinfo2()
|
||||
except (OSError, AttributeError):
|
||||
# OSError: This is expected in environments that do not have the 'libc.so.6' shared library.
|
||||
# AttributeError: This is expected in environments that have `libc.so.6` but do not have the `mallinfo2` (e.g. glibc < 2.33)
|
||||
# TODO: Does `mallinfo` work?
|
||||
except OSError:
|
||||
# This is expected in environments that do not have the 'libc.so.6' shared library.
|
||||
malloc_info = None
|
||||
|
||||
return cls(process_ram, vram, malloc_info)
|
||||
|
||||
@@ -238,8 +238,11 @@ class ModelCache(object):
|
||||
f"{get_pretty_snapshot_diff(snapshot_before, snapshot_after)}"
|
||||
)
|
||||
|
||||
if abs(self_reported_model_size_after_load - self_reported_model_size_before_load) > 10 * MB:
|
||||
self.logger.debug(
|
||||
# We only log a warning for over-reported (not under-reported) model sizes before load. There is a known
|
||||
# issue where models report their fp32 size before load, and are then loaded as fp16. Once this issue is
|
||||
# addressed, it would make sense to log a warning for both over-reported and under-reported model sizes.
|
||||
if (self_reported_model_size_after_load - self_reported_model_size_before_load) > 10 * MB:
|
||||
self.logger.warning(
|
||||
f"Model '{key}' mis-reported its size before load. Self-reported size before/after load:"
|
||||
f" {(self_reported_model_size_before_load/GIG):.2f}GB /"
|
||||
f" {(self_reported_model_size_after_load/GIG):.2f}GB."
|
||||
@@ -296,7 +299,7 @@ class ModelCache(object):
|
||||
rel_tol=0.1,
|
||||
abs_tol=10 * MB,
|
||||
):
|
||||
self.logger.debug(
|
||||
self.logger.warning(
|
||||
f"Moving model '{key}' from {source_device} to"
|
||||
f" {target_device} caused an unexpected change in VRAM usage. The model's"
|
||||
" estimated size may be incorrect. Estimated model size:"
|
||||
|
||||
@@ -20,7 +20,6 @@ from multiprocessing import Process
|
||||
from multiprocessing.connection import Connection, Pipe
|
||||
from pathlib import Path
|
||||
from shutil import get_terminal_size
|
||||
from typing import Optional
|
||||
|
||||
import npyscreen
|
||||
import torch
|
||||
@@ -631,23 +630,21 @@ def ask_user_for_prediction_type(model_path: Path, tui_conn: Connection = None)
|
||||
return _ask_user_for_pt_cmdline(model_path)
|
||||
|
||||
|
||||
def _ask_user_for_pt_cmdline(model_path: Path) -> Optional[SchedulerPredictionType]:
|
||||
def _ask_user_for_pt_cmdline(model_path: Path) -> SchedulerPredictionType:
|
||||
choices = [SchedulerPredictionType.Epsilon, SchedulerPredictionType.VPrediction, None]
|
||||
print(
|
||||
f"""
|
||||
Please select the scheduler prediction type of the checkpoint named {model_path.name}:
|
||||
[1] "epsilon" - most v1.5 models and v2 models trained on 512 pixel images
|
||||
[2] "vprediction" - v2 models trained on 768 pixel images and a few v1.5 models
|
||||
[3] Accept the best guess; you can fix it in the Web UI later
|
||||
Please select the type of the V2 checkpoint named {model_path.name}:
|
||||
[1] A model based on Stable Diffusion v2 trained on 512 pixel images (SD-2-base)
|
||||
[2] A model based on Stable Diffusion v2 trained on 768 pixel images (SD-2-768)
|
||||
[3] Skip this model and come back later.
|
||||
"""
|
||||
)
|
||||
choice = None
|
||||
ok = False
|
||||
while not ok:
|
||||
try:
|
||||
choice = input("select [3]> ").strip()
|
||||
if not choice:
|
||||
return None
|
||||
choice = input("select> ").strip()
|
||||
choice = choices[int(choice) - 1]
|
||||
ok = True
|
||||
except (ValueError, IndexError):
|
||||
@@ -658,18 +655,22 @@ Please select the scheduler prediction type of the checkpoint named {model_path.
|
||||
|
||||
|
||||
def _ask_user_for_pt_tui(model_path: Path, tui_conn: Connection) -> SchedulerPredictionType:
|
||||
tui_conn.send_bytes(f"*need v2 config for:{model_path}".encode("utf-8"))
|
||||
# note that we don't do any status checking here
|
||||
response = tui_conn.recv_bytes().decode("utf-8")
|
||||
if response is None:
|
||||
return None
|
||||
elif response == "epsilon":
|
||||
return SchedulerPredictionType.epsilon
|
||||
elif response == "v":
|
||||
return SchedulerPredictionType.VPrediction
|
||||
elif response == "guess":
|
||||
return None
|
||||
else:
|
||||
try:
|
||||
tui_conn.send_bytes(f"*need v2 config for:{model_path}".encode("utf-8"))
|
||||
# note that we don't do any status checking here
|
||||
response = tui_conn.recv_bytes().decode("utf-8")
|
||||
if response is None:
|
||||
return None
|
||||
elif response == "epsilon":
|
||||
return SchedulerPredictionType.epsilon
|
||||
elif response == "v":
|
||||
return SchedulerPredictionType.VPrediction
|
||||
elif response == "abort":
|
||||
logger.info("Conversion aborted")
|
||||
return None
|
||||
else:
|
||||
return response
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
|
||||
|
||||
@@ -381,12 +381,12 @@ def select_stable_diffusion_config_file(
|
||||
wrap: bool = True,
|
||||
model_name: str = "Unknown",
|
||||
):
|
||||
message = f"Please select the correct prediction type for the checkpoint named '{model_name}'. Press <CANCEL> to skip installation."
|
||||
message = f"Please select the correct base model for the V2 checkpoint named '{model_name}'. Press <CANCEL> to skip installation."
|
||||
title = "CONFIG FILE SELECTION"
|
||||
options = [
|
||||
"'epsilon' - most v1.5 models and v2 models trained on 512 pixel images",
|
||||
"'vprediction' - v2 models trained on 768 pixel images and a few v1.5 models)",
|
||||
"Accept the best guess; you can fix it in the Web UI later",
|
||||
"An SD v2.x base model (512 pixels; no 'parameterization:' line in its yaml file)",
|
||||
"An SD v2.x v-predictive model (768 pixels; 'parameterization: \"v\"' line in its yaml file)",
|
||||
"Skip installation for now and come back later",
|
||||
]
|
||||
|
||||
F = ConfirmCancelPopup(
|
||||
@@ -410,7 +410,7 @@ def select_stable_diffusion_config_file(
|
||||
choice = F.add(
|
||||
npyscreen.SelectOne,
|
||||
values=options,
|
||||
value=[2],
|
||||
value=[0],
|
||||
max_height=len(options) + 1,
|
||||
scroll_exit=True,
|
||||
)
|
||||
@@ -420,5 +420,5 @@ def select_stable_diffusion_config_file(
|
||||
if not F.value:
|
||||
return None
|
||||
assert choice.value[0] in range(0, 3), "invalid choice"
|
||||
choices = ["epsilon", "v", "guess"]
|
||||
choices = ["epsilon", "v", "abort"]
|
||||
return choices[choice.value[0]]
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
dist/
|
||||
public/locales/*.json
|
||||
.husky/
|
||||
node_modules/
|
||||
patches/
|
||||
|
||||
169
invokeai/frontend/web/dist/assets/App-6010aecd.js
vendored
Normal file
169
invokeai/frontend/web/dist/assets/App-6010aecd.js
vendored
Normal file
File diff suppressed because one or more lines are too long
169
invokeai/frontend/web/dist/assets/App-9bf15601.js
vendored
169
invokeai/frontend/web/dist/assets/App-9bf15601.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
||||
import{w as s,i6 as T,v as l,a2 as I,i7 as R,ae as V,i8 as z,i9 as j,ia as D,ib as F,ic as G,id as W,ie as K,aG as H,ig as U,ih as Y}from"./index-e8dfd0d9.js";import{M as Z}from"./MantineProvider-9228e738.js";var P=String.raw,E=P`
|
||||
import{w as s,h_ as T,v as l,a2 as I,h$ as R,ae as V,i0 as z,i1 as j,i2 as D,i3 as F,i4 as G,i5 as W,i6 as K,aG as H,i7 as U,i8 as Y}from"./index-90346e33.js";import{M as Z}from"./MantineProvider-486d4834.js";var P=String.raw,E=P`
|
||||
:root,
|
||||
:host {
|
||||
--chakra-vh: 100vh;
|
||||
158
invokeai/frontend/web/dist/assets/index-90346e33.js
vendored
Normal file
158
invokeai/frontend/web/dist/assets/index-90346e33.js
vendored
Normal file
File diff suppressed because one or more lines are too long
158
invokeai/frontend/web/dist/assets/index-e8dfd0d9.js
vendored
158
invokeai/frontend/web/dist/assets/index-e8dfd0d9.js
vendored
File diff suppressed because one or more lines are too long
2
invokeai/frontend/web/dist/index.html
vendored
2
invokeai/frontend/web/dist/index.html
vendored
@@ -15,7 +15,7 @@
|
||||
margin: 0;
|
||||
}
|
||||
</style>
|
||||
<script type="module" crossorigin src="./assets/index-e8dfd0d9.js"></script>
|
||||
<script type="module" crossorigin src="./assets/index-90346e33.js"></script>
|
||||
</head>
|
||||
|
||||
<body dir="ltr">
|
||||
|
||||
15
invokeai/frontend/web/dist/locales/ar.json
vendored
15
invokeai/frontend/web/dist/locales/ar.json
vendored
@@ -1,9 +1,13 @@
|
||||
{
|
||||
"common": {
|
||||
"hotkeysLabel": "مفاتيح الأختصار",
|
||||
"themeLabel": "الموضوع",
|
||||
"languagePickerLabel": "منتقي اللغة",
|
||||
"reportBugLabel": "بلغ عن خطأ",
|
||||
"settingsLabel": "إعدادات",
|
||||
"darkTheme": "داكن",
|
||||
"lightTheme": "فاتح",
|
||||
"greenTheme": "أخضر",
|
||||
"img2img": "صورة إلى صورة",
|
||||
"unifiedCanvas": "لوحة موحدة",
|
||||
"nodes": "عقد",
|
||||
@@ -53,6 +57,7 @@
|
||||
"maintainAspectRatio": "الحفاظ على نسبة الأبعاد",
|
||||
"autoSwitchNewImages": "التبديل التلقائي إلى الصور الجديدة",
|
||||
"singleColumnLayout": "تخطيط عمود واحد",
|
||||
"pinGallery": "تثبيت المعرض",
|
||||
"allImagesLoaded": "تم تحميل جميع الصور",
|
||||
"loadMore": "تحميل المزيد",
|
||||
"noImagesInGallery": "لا توجد صور في المعرض"
|
||||
@@ -337,6 +342,7 @@
|
||||
"cfgScale": "مقياس الإعداد الذاتي للجملة",
|
||||
"width": "عرض",
|
||||
"height": "ارتفاع",
|
||||
"sampler": "مزج",
|
||||
"seed": "بذرة",
|
||||
"randomizeSeed": "تبديل بذرة",
|
||||
"shuffle": "تشغيل",
|
||||
@@ -358,6 +364,10 @@
|
||||
"hiresOptim": "تحسين الدقة العالية",
|
||||
"imageFit": "ملائمة الصورة الأولية لحجم الخرج",
|
||||
"codeformerFidelity": "الوثوقية",
|
||||
"seamSize": "حجم التشقق",
|
||||
"seamBlur": "ضباب التشقق",
|
||||
"seamStrength": "قوة التشقق",
|
||||
"seamSteps": "خطوات التشقق",
|
||||
"scaleBeforeProcessing": "تحجيم قبل المعالجة",
|
||||
"scaledWidth": "العرض المحجوب",
|
||||
"scaledHeight": "الارتفاع المحجوب",
|
||||
@@ -368,6 +378,8 @@
|
||||
"infillScalingHeader": "التعبئة والتحجيم",
|
||||
"img2imgStrength": "قوة صورة إلى صورة",
|
||||
"toggleLoopback": "تبديل الإعادة",
|
||||
"invoke": "إطلاق",
|
||||
"promptPlaceholder": "اكتب المحث هنا. [العلامات السلبية], (زيادة الوزن) ++, (نقص الوزن)--, التبديل و الخلط متاحة (انظر الوثائق)",
|
||||
"sendTo": "أرسل إلى",
|
||||
"sendToImg2Img": "أرسل إلى صورة إلى صورة",
|
||||
"sendToUnifiedCanvas": "أرسل إلى الخطوط الموحدة",
|
||||
@@ -381,6 +393,7 @@
|
||||
"useAll": "استخدام الكل",
|
||||
"useInitImg": "استخدام الصورة الأولية",
|
||||
"info": "معلومات",
|
||||
"deleteImage": "حذف الصورة",
|
||||
"initialImage": "الصورة الأولية",
|
||||
"showOptionsPanel": "إظهار لوحة الخيارات"
|
||||
},
|
||||
@@ -390,6 +403,7 @@
|
||||
"saveSteps": "حفظ الصور كل n خطوات",
|
||||
"confirmOnDelete": "تأكيد عند الحذف",
|
||||
"displayHelpIcons": "عرض أيقونات المساعدة",
|
||||
"useCanvasBeta": "استخدام مخطط الأزرار بيتا",
|
||||
"enableImageDebugging": "تمكين التصحيح عند التصوير",
|
||||
"resetWebUI": "إعادة تعيين واجهة الويب",
|
||||
"resetWebUIDesc1": "إعادة تعيين واجهة الويب يعيد فقط ذاكرة التخزين المؤقت للمتصفح لصورك وإعداداتك المذكورة. لا يحذف أي صور من القرص.",
|
||||
@@ -399,6 +413,7 @@
|
||||
"toast": {
|
||||
"tempFoldersEmptied": "تم تفريغ مجلد المؤقت",
|
||||
"uploadFailed": "فشل التحميل",
|
||||
"uploadFailedMultipleImagesDesc": "تم الصق صور متعددة، قد يتم تحميل صورة واحدة فقط في الوقت الحالي",
|
||||
"uploadFailedUnableToLoadDesc": "تعذر تحميل الملف",
|
||||
"downloadImageStarted": "بدأ تنزيل الصورة",
|
||||
"imageCopied": "تم نسخ الصورة",
|
||||
|
||||
17
invokeai/frontend/web/dist/locales/de.json
vendored
17
invokeai/frontend/web/dist/locales/de.json
vendored
@@ -1,8 +1,12 @@
|
||||
{
|
||||
"common": {
|
||||
"themeLabel": "Thema",
|
||||
"languagePickerLabel": "Sprachauswahl",
|
||||
"reportBugLabel": "Fehler melden",
|
||||
"settingsLabel": "Einstellungen",
|
||||
"darkTheme": "Dunkel",
|
||||
"lightTheme": "Hell",
|
||||
"greenTheme": "Grün",
|
||||
"img2img": "Bild zu Bild",
|
||||
"nodes": "Knoten",
|
||||
"langGerman": "Deutsch",
|
||||
@@ -44,6 +48,7 @@
|
||||
"langEnglish": "Englisch",
|
||||
"langDutch": "Niederländisch",
|
||||
"langFrench": "Französisch",
|
||||
"oceanTheme": "Ozean",
|
||||
"langItalian": "Italienisch",
|
||||
"langPortuguese": "Portogisisch",
|
||||
"langRussian": "Russisch",
|
||||
@@ -71,6 +76,7 @@
|
||||
"maintainAspectRatio": "Seitenverhältnis beibehalten",
|
||||
"autoSwitchNewImages": "Automatisch zu neuen Bildern wechseln",
|
||||
"singleColumnLayout": "Einspaltiges Layout",
|
||||
"pinGallery": "Galerie anpinnen",
|
||||
"allImagesLoaded": "Alle Bilder geladen",
|
||||
"loadMore": "Mehr laden",
|
||||
"noImagesInGallery": "Keine Bilder in der Galerie"
|
||||
@@ -340,6 +346,7 @@
|
||||
"cfgScale": "CFG-Skala",
|
||||
"width": "Breite",
|
||||
"height": "Höhe",
|
||||
"sampler": "Sampler",
|
||||
"randomizeSeed": "Zufälliger Seed",
|
||||
"shuffle": "Mischen",
|
||||
"noiseThreshold": "Rausch-Schwellenwert",
|
||||
@@ -360,6 +367,10 @@
|
||||
"hiresOptim": "High-Res-Optimierung",
|
||||
"imageFit": "Ausgangsbild an Ausgabegröße anpassen",
|
||||
"codeformerFidelity": "Glaubwürdigkeit",
|
||||
"seamSize": "Nahtgröße",
|
||||
"seamBlur": "Nahtunschärfe",
|
||||
"seamStrength": "Stärke der Naht",
|
||||
"seamSteps": "Nahtstufen",
|
||||
"scaleBeforeProcessing": "Skalieren vor der Verarbeitung",
|
||||
"scaledWidth": "Skaliert W",
|
||||
"scaledHeight": "Skaliert H",
|
||||
@@ -370,6 +381,8 @@
|
||||
"infillScalingHeader": "Infill und Skalierung",
|
||||
"img2imgStrength": "Bild-zu-Bild-Stärke",
|
||||
"toggleLoopback": "Toggle Loopback",
|
||||
"invoke": "Invoke",
|
||||
"promptPlaceholder": "Prompt hier eingeben. [negative Token], (mehr Gewicht)++, (geringeres Gewicht)--, Tausch und Überblendung sind verfügbar (siehe Dokumente)",
|
||||
"sendTo": "Senden an",
|
||||
"sendToImg2Img": "Senden an Bild zu Bild",
|
||||
"sendToUnifiedCanvas": "Senden an Unified Canvas",
|
||||
@@ -381,6 +394,7 @@
|
||||
"useSeed": "Seed verwenden",
|
||||
"useAll": "Alle verwenden",
|
||||
"useInitImg": "Ausgangsbild verwenden",
|
||||
"deleteImage": "Bild löschen",
|
||||
"initialImage": "Ursprüngliches Bild",
|
||||
"showOptionsPanel": "Optionsleiste zeigen",
|
||||
"cancel": {
|
||||
@@ -392,6 +406,7 @@
|
||||
"saveSteps": "Speichern der Bilder alle n Schritte",
|
||||
"confirmOnDelete": "Bestätigen beim Löschen",
|
||||
"displayHelpIcons": "Hilfesymbole anzeigen",
|
||||
"useCanvasBeta": "Canvas Beta Layout verwenden",
|
||||
"enableImageDebugging": "Bild-Debugging aktivieren",
|
||||
"resetWebUI": "Web-Oberfläche zurücksetzen",
|
||||
"resetWebUIDesc1": "Das Zurücksetzen der Web-Oberfläche setzt nur den lokalen Cache des Browsers mit Ihren Bildern und gespeicherten Einstellungen zurück. Es werden keine Bilder von der Festplatte gelöscht.",
|
||||
@@ -401,6 +416,7 @@
|
||||
"toast": {
|
||||
"tempFoldersEmptied": "Temp-Ordner geleert",
|
||||
"uploadFailed": "Hochladen fehlgeschlagen",
|
||||
"uploadFailedMultipleImagesDesc": "Mehrere Bilder eingefügt, es kann nur ein Bild auf einmal hochgeladen werden",
|
||||
"uploadFailedUnableToLoadDesc": "Datei kann nicht geladen werden",
|
||||
"downloadImageStarted": "Bild wird heruntergeladen",
|
||||
"imageCopied": "Bild kopiert",
|
||||
@@ -516,6 +532,7 @@
|
||||
"modifyConfig": "Optionen einstellen",
|
||||
"toggleAutoscroll": "Auroscroll ein/ausschalten",
|
||||
"toggleLogViewer": "Log Betrachter ein/ausschalten",
|
||||
"showGallery": "Zeige Galerie",
|
||||
"showOptionsPanel": "Zeige Optionen",
|
||||
"reset": "Zurücksetzen",
|
||||
"nextImage": "Nächstes Bild",
|
||||
|
||||
49
invokeai/frontend/web/dist/locales/en.json
vendored
49
invokeai/frontend/web/dist/locales/en.json
vendored
@@ -38,19 +38,16 @@
|
||||
"searchBoard": "Search Boards...",
|
||||
"selectBoard": "Select a Board",
|
||||
"topMessage": "This board contains images used in the following features:",
|
||||
"uncategorized": "Uncategorized",
|
||||
"downloadBoard": "Download Board"
|
||||
"uncategorized": "Uncategorized"
|
||||
},
|
||||
"common": {
|
||||
"accept": "Accept",
|
||||
"advanced": "Advanced",
|
||||
"areYouSure": "Are you sure?",
|
||||
"auto": "Auto",
|
||||
"back": "Back",
|
||||
"batch": "Batch Manager",
|
||||
"cancel": "Cancel",
|
||||
"close": "Close",
|
||||
"on": "On",
|
||||
"communityLabel": "Community",
|
||||
"controlNet": "ControlNet",
|
||||
"controlAdapter": "Control Adapter",
|
||||
@@ -135,11 +132,10 @@
|
||||
"upload": "Upload"
|
||||
},
|
||||
"controlnet": {
|
||||
"controlAdapter_one": "Control Adapter",
|
||||
"controlAdapter_other": "Control Adapters",
|
||||
"controlnet": "$t(controlnet.controlAdapter_one) #{{number}} ($t(common.controlNet))",
|
||||
"ip_adapter": "$t(controlnet.controlAdapter_one) #{{number}} ($t(common.ipAdapter))",
|
||||
"t2i_adapter": "$t(controlnet.controlAdapter_one) #{{number}} ($t(common.t2iAdapter))",
|
||||
"controlAdapter": "Control Adapter",
|
||||
"controlnet": "$t(controlnet.controlAdapter) #{{number}} ($t(common.controlNet))",
|
||||
"ip_adapter": "$t(controlnet.controlAdapter) #{{number}} ($t(common.ipAdapter))",
|
||||
"t2i_adapter": "$t(controlnet.controlAdapter) #{{number}} ($t(common.t2iAdapter))",
|
||||
"addControlNet": "Add $t(common.controlNet)",
|
||||
"addIPAdapter": "Add $t(common.ipAdapter)",
|
||||
"addT2IAdapter": "Add $t(common.t2iAdapter)",
|
||||
@@ -278,8 +274,7 @@
|
||||
"batchValues": "Batch Values",
|
||||
"notReady": "Unable to Queue",
|
||||
"batchQueued": "Batch Queued",
|
||||
"batchQueuedDesc_one": "Added {{count}} sessions to {{direction}} of queue",
|
||||
"batchQueuedDesc_other": "Added {{count}} sessions to {{direction}} of queue",
|
||||
"batchQueuedDesc": "Added {{item_count}} sessions to {{direction}} of queue",
|
||||
"front": "front",
|
||||
"back": "back",
|
||||
"batchFailedToQueue": "Failed to Queue Batch",
|
||||
@@ -328,10 +323,7 @@
|
||||
"showUploads": "Show Uploads",
|
||||
"singleColumnLayout": "Single Column Layout",
|
||||
"unableToLoad": "Unable to load Gallery",
|
||||
"uploads": "Uploads",
|
||||
"downloadSelection": "Download Selection",
|
||||
"preparingDownload": "Preparing Download",
|
||||
"preparingDownloadFailed": "Problem Preparing Download"
|
||||
"uploads": "Uploads"
|
||||
},
|
||||
"hotkeys": {
|
||||
"acceptStagingImage": {
|
||||
@@ -559,10 +551,8 @@
|
||||
"negativePrompt": "Negative Prompt",
|
||||
"noImageDetails": "No image details found",
|
||||
"noMetaData": "No metadata found",
|
||||
"noRecallParameters": "No parameters to recall found",
|
||||
"perlin": "Perlin Noise",
|
||||
"positivePrompt": "Positive Prompt",
|
||||
"recallParameters": "Recall Parameters",
|
||||
"scheduler": "Scheduler",
|
||||
"seamless": "Seamless",
|
||||
"seed": "Seed",
|
||||
@@ -707,7 +697,6 @@
|
||||
"vae": "VAE",
|
||||
"vaeLocation": "VAE Location",
|
||||
"vaeLocationValidationMsg": "Path to where your VAE is located.",
|
||||
"vaePrecision": "VAE Precision",
|
||||
"vaeRepoID": "VAE Repo ID",
|
||||
"vaeRepoIDValidationMsg": "Online repository of your VAE",
|
||||
"variant": "Variant",
|
||||
@@ -928,7 +917,6 @@
|
||||
},
|
||||
"parameters": {
|
||||
"aspectRatio": "Aspect Ratio",
|
||||
"aspectRatioFree": "Free",
|
||||
"boundingBoxHeader": "Bounding Box",
|
||||
"boundingBoxHeight": "Bounding Box Height",
|
||||
"boundingBoxWidth": "Bounding Box Width",
|
||||
@@ -976,10 +964,10 @@
|
||||
"missingFieldTemplate": "Missing field template",
|
||||
"missingInputForField": "{{nodeLabel}} -> {{fieldLabel}} missing input",
|
||||
"missingNodeTemplate": "Missing node template",
|
||||
"noControlImageForControlAdapter": "Control Adapter #{{number}} has no control image",
|
||||
"noControlImageForControlAdapter": "Control Adapter {{number}} has no control image",
|
||||
"noInitialImageSelected": "No initial image selected",
|
||||
"noModelForControlAdapter": "Control Adapter #{{number}} has no model selected.",
|
||||
"incompatibleBaseModelForControlAdapter": "Control Adapter #{{number}} model is invalid with main model.",
|
||||
"noModelForControlAdapter": "Control Adapter {{number}} has no model selected.",
|
||||
"incompatibleBaseModelForControlAdapter": "Control Adapter {{number}} model is invalid with main model.",
|
||||
"noModelSelected": "No model selected",
|
||||
"noPrompts": "No prompts generated",
|
||||
"noNodesInGraph": "No nodes in graph",
|
||||
@@ -1114,23 +1102,12 @@
|
||||
"showAdvancedOptions": "Show Advanced Options",
|
||||
"showProgressInViewer": "Show Progress Images in Viewer",
|
||||
"ui": "User Interface",
|
||||
"useSlidersForAll": "Use Sliders For All Options",
|
||||
"clearIntermediatesDisabled": "Queue must be empty to clear intermediates",
|
||||
"clearIntermediatesDesc1": "Clearing intermediates will reset your Canvas and ControlNet state.",
|
||||
"clearIntermediatesDesc2": "Intermediate images are byproducts of generation, different from the result images in the gallery. Clearing intermediates will free disk space.",
|
||||
"clearIntermediatesDesc3": "Your gallery images will not be deleted.",
|
||||
"clearIntermediates": "Clear Intermediates",
|
||||
"clearIntermediatesWithCount_one": "Clear {{count}} Intermediate",
|
||||
"clearIntermediatesWithCount_other": "Clear {{count}} Intermediates",
|
||||
"clearIntermediatesWithCount_zero": "No Intermediates to Clear",
|
||||
"intermediatesCleared_one": "Cleared {{count}} Intermediate",
|
||||
"intermediatesCleared_other": "Cleared {{count}} Intermediates",
|
||||
"intermediatesClearedFailed": "Problem Clearing Intermediates"
|
||||
"useSlidersForAll": "Use Sliders For All Options"
|
||||
},
|
||||
"toast": {
|
||||
"addedToBoard": "Added to board",
|
||||
"baseModelChangedCleared_one": "Base model changed, cleared or disabled {{count}} incompatible submodel",
|
||||
"baseModelChangedCleared_other": "Base model changed, cleared or disabled {{count}} incompatible submodels",
|
||||
"baseModelChangedCleared_one": "Base model changed, cleared or disabled {{number}} incompatible submodel",
|
||||
"baseModelChangedCleared_many": "$t(toast.baseModelChangedCleared_one)s",
|
||||
"canceled": "Processing Canceled",
|
||||
"canvasCopiedClipboard": "Canvas Copied to Clipboard",
|
||||
"canvasDownloaded": "Canvas Downloaded",
|
||||
|
||||
175
invokeai/frontend/web/dist/locales/es.json
vendored
175
invokeai/frontend/web/dist/locales/es.json
vendored
@@ -1,12 +1,16 @@
|
||||
{
|
||||
"common": {
|
||||
"hotkeysLabel": "Atajos de teclado",
|
||||
"themeLabel": "Tema",
|
||||
"languagePickerLabel": "Selector de idioma",
|
||||
"reportBugLabel": "Reportar errores",
|
||||
"settingsLabel": "Ajustes",
|
||||
"darkTheme": "Oscuro",
|
||||
"lightTheme": "Claro",
|
||||
"greenTheme": "Verde",
|
||||
"img2img": "Imagen a Imagen",
|
||||
"unifiedCanvas": "Lienzo Unificado",
|
||||
"nodes": "Editor del flujo de trabajo",
|
||||
"nodes": "Nodos",
|
||||
"langSpanish": "Español",
|
||||
"nodesDesc": "Un sistema de generación de imágenes basado en nodos, actualmente se encuentra en desarrollo. Mantente pendiente a nuestras actualizaciones acerca de esta fabulosa funcionalidad.",
|
||||
"postProcessing": "Post-procesamiento",
|
||||
@@ -15,7 +19,7 @@
|
||||
"postProcessDesc3": "La Interfaz de Línea de Comandos de Invoke AI ofrece muchas otras características, incluyendo -Embiggen-.",
|
||||
"training": "Entrenamiento",
|
||||
"trainingDesc1": "Un flujo de trabajo dedicado para el entrenamiento de sus propios -embeddings- y puntos de control utilizando Inversión Textual y Dreambooth desde la interfaz web.",
|
||||
"trainingDesc2": "InvokeAI ya admite el entrenamiento de incrustaciones personalizadas mediante la inversión textual mediante el script principal.",
|
||||
"trainingDesc2": "InvokeAI ya soporta el entrenamiento de -embeddings- personalizados utilizando la Inversión Textual mediante el script principal.",
|
||||
"upload": "Subir imagen",
|
||||
"close": "Cerrar",
|
||||
"load": "Cargar",
|
||||
@@ -59,27 +63,18 @@
|
||||
"statusConvertingModel": "Convertir el modelo",
|
||||
"statusModelConverted": "Modelo adaptado",
|
||||
"statusMergingModels": "Fusionar modelos",
|
||||
"oceanTheme": "Océano",
|
||||
"langPortuguese": "Portugués",
|
||||
"langKorean": "Coreano",
|
||||
"langHebrew": "Hebreo",
|
||||
"pinOptionsPanel": "Pin del panel de opciones",
|
||||
"loading": "Cargando",
|
||||
"loadingInvokeAI": "Cargando invocar a la IA",
|
||||
"postprocessing": "Tratamiento posterior",
|
||||
"txt2img": "De texto a imagen",
|
||||
"accept": "Aceptar",
|
||||
"cancel": "Cancelar",
|
||||
"linear": "Lineal",
|
||||
"random": "Aleatorio",
|
||||
"generate": "Generar",
|
||||
"openInNewTab": "Abrir en una nueva pestaña",
|
||||
"dontAskMeAgain": "No me preguntes de nuevo",
|
||||
"areYouSure": "¿Estas seguro?",
|
||||
"imagePrompt": "Indicación de imagen",
|
||||
"batch": "Administrador de lotes",
|
||||
"darkMode": "Modo oscuro",
|
||||
"lightMode": "Modo claro",
|
||||
"modelManager": "Administrador de modelos",
|
||||
"communityLabel": "Comunidad"
|
||||
"linear": "Lineal"
|
||||
},
|
||||
"gallery": {
|
||||
"generations": "Generaciones",
|
||||
@@ -92,15 +87,10 @@
|
||||
"maintainAspectRatio": "Mantener relación de aspecto",
|
||||
"autoSwitchNewImages": "Auto seleccionar Imágenes nuevas",
|
||||
"singleColumnLayout": "Diseño de una columna",
|
||||
"pinGallery": "Fijar galería",
|
||||
"allImagesLoaded": "Todas las imágenes cargadas",
|
||||
"loadMore": "Cargar más",
|
||||
"noImagesInGallery": "No hay imágenes para mostrar",
|
||||
"deleteImage": "Eliminar Imagen",
|
||||
"deleteImageBin": "Las imágenes eliminadas se enviarán a la papelera de tu sistema operativo.",
|
||||
"deleteImagePermanent": "Las imágenes eliminadas no se pueden restaurar.",
|
||||
"images": "Imágenes",
|
||||
"assets": "Activos",
|
||||
"autoAssignBoardOnClick": "Asignación automática de tableros al hacer clic"
|
||||
"noImagesInGallery": "Sin imágenes en la galería"
|
||||
},
|
||||
"hotkeys": {
|
||||
"keyboardShortcuts": "Atajos de teclado",
|
||||
@@ -307,12 +297,7 @@
|
||||
"acceptStagingImage": {
|
||||
"title": "Aceptar imagen",
|
||||
"desc": "Aceptar la imagen actual en el área de preparación"
|
||||
},
|
||||
"addNodes": {
|
||||
"title": "Añadir Nodos",
|
||||
"desc": "Abre el menú para añadir nodos"
|
||||
},
|
||||
"nodesHotkeys": "Teclas de acceso rápido a los nodos"
|
||||
}
|
||||
},
|
||||
"modelManager": {
|
||||
"modelManager": "Gestor de Modelos",
|
||||
@@ -364,8 +349,8 @@
|
||||
"delete": "Eliminar",
|
||||
"deleteModel": "Eliminar Modelo",
|
||||
"deleteConfig": "Eliminar Configuración",
|
||||
"deleteMsg1": "¿Estás seguro de que deseas eliminar este modelo de InvokeAI?",
|
||||
"deleteMsg2": "Esto eliminará el modelo del disco si está en la carpeta raíz de InvokeAI. Si está utilizando una ubicación personalizada, el modelo NO se eliminará del disco.",
|
||||
"deleteMsg1": "¿Estás seguro de querer eliminar esta entrada de modelo de InvokeAI?",
|
||||
"deleteMsg2": "El checkpoint del modelo no se eliminará de tu disco. Puedes volver a añadirlo si lo deseas.",
|
||||
"safetensorModels": "SafeTensors",
|
||||
"addDiffuserModel": "Añadir difusores",
|
||||
"inpainting": "v1 Repintado",
|
||||
@@ -384,8 +369,8 @@
|
||||
"convertToDiffusers": "Convertir en difusores",
|
||||
"convertToDiffusersHelpText1": "Este modelo se convertirá al formato 🧨 Difusores.",
|
||||
"convertToDiffusersHelpText2": "Este proceso sustituirá su entrada del Gestor de Modelos por la versión de Difusores del mismo modelo.",
|
||||
"convertToDiffusersHelpText3": "Tu archivo del punto de control en el disco se eliminará si está en la carpeta raíz de InvokeAI. Si está en una ubicación personalizada, NO se eliminará.",
|
||||
"convertToDiffusersHelpText5": "Por favor, asegúrate de tener suficiente espacio en el disco. Los modelos generalmente varían entre 2 GB y 7 GB de tamaño.",
|
||||
"convertToDiffusersHelpText3": "Su archivo de puntos de control en el disco NO será borrado ni modificado de ninguna manera. Puede volver a añadir su punto de control al Gestor de Modelos si lo desea.",
|
||||
"convertToDiffusersHelpText5": "Asegúrese de que dispone de suficiente espacio en disco. Los modelos suelen variar entre 4 GB y 7 GB de tamaño.",
|
||||
"convertToDiffusersHelpText6": "¿Desea transformar este modelo?",
|
||||
"convertToDiffusersSaveLocation": "Guardar ubicación",
|
||||
"v1": "v1",
|
||||
@@ -424,27 +409,7 @@
|
||||
"pickModelType": "Elige el tipo de modelo",
|
||||
"v2_768": "v2 (768px)",
|
||||
"addDifference": "Añadir una diferencia",
|
||||
"scanForModels": "Buscar modelos",
|
||||
"vae": "VAE",
|
||||
"variant": "Variante",
|
||||
"baseModel": "Modelo básico",
|
||||
"modelConversionFailed": "Conversión al modelo fallida",
|
||||
"selectModel": "Seleccionar un modelo",
|
||||
"modelUpdateFailed": "Error al actualizar el modelo",
|
||||
"modelsMergeFailed": "Fusión del modelo fallida",
|
||||
"convertingModelBegin": "Convirtiendo el modelo. Por favor, espere.",
|
||||
"modelDeleted": "Modelo eliminado",
|
||||
"modelDeleteFailed": "Error al borrar el modelo",
|
||||
"noCustomLocationProvided": "‐No se proporcionó una ubicación personalizada",
|
||||
"importModels": "Importar los modelos",
|
||||
"settings": "Ajustes",
|
||||
"syncModels": "Sincronizar las plantillas",
|
||||
"syncModelsDesc": "Si tus plantillas no están sincronizados con el backend, puedes actualizarlas usando esta opción. Esto suele ser útil en los casos en los que actualizas manualmente tu archivo models.yaml o añades plantillas a la carpeta raíz de InvokeAI después de que la aplicación haya arrancado.",
|
||||
"modelsSynced": "Plantillas sincronizadas",
|
||||
"modelSyncFailed": "La sincronización de la plantilla falló",
|
||||
"loraModels": "LoRA",
|
||||
"onnxModels": "Onnx",
|
||||
"oliveModels": "Olives"
|
||||
"scanForModels": "Buscar modelos"
|
||||
},
|
||||
"parameters": {
|
||||
"images": "Imágenes",
|
||||
@@ -452,9 +417,10 @@
|
||||
"cfgScale": "Escala CFG",
|
||||
"width": "Ancho",
|
||||
"height": "Alto",
|
||||
"sampler": "Muestreo",
|
||||
"seed": "Semilla",
|
||||
"randomizeSeed": "Semilla aleatoria",
|
||||
"shuffle": "Semilla aleatoria",
|
||||
"shuffle": "Aleatorizar",
|
||||
"noiseThreshold": "Umbral de Ruido",
|
||||
"perlinNoise": "Ruido Perlin",
|
||||
"variations": "Variaciones",
|
||||
@@ -473,6 +439,10 @@
|
||||
"hiresOptim": "Optimización de Alta Resolución",
|
||||
"imageFit": "Ajuste tamaño de imagen inicial al tamaño objetivo",
|
||||
"codeformerFidelity": "Fidelidad",
|
||||
"seamSize": "Tamaño del parche",
|
||||
"seamBlur": "Desenfoque del parche",
|
||||
"seamStrength": "Fuerza del parche",
|
||||
"seamSteps": "Pasos del parche",
|
||||
"scaleBeforeProcessing": "Redimensionar antes de procesar",
|
||||
"scaledWidth": "Ancho escalado",
|
||||
"scaledHeight": "Alto escalado",
|
||||
@@ -483,6 +453,8 @@
|
||||
"infillScalingHeader": "Remplazo y escalado",
|
||||
"img2imgStrength": "Peso de Imagen a Imagen",
|
||||
"toggleLoopback": "Alternar Retroalimentación",
|
||||
"invoke": "Invocar",
|
||||
"promptPlaceholder": "Ingrese la entrada aquí. [símbolos negativos], (subir peso)++, (bajar peso)--, también disponible alternado y mezclado (ver documentación)",
|
||||
"sendTo": "Enviar a",
|
||||
"sendToImg2Img": "Enviar a Imagen a Imagen",
|
||||
"sendToUnifiedCanvas": "Enviar a Lienzo Unificado",
|
||||
@@ -495,6 +467,7 @@
|
||||
"useAll": "Usar Todo",
|
||||
"useInitImg": "Usar Imagen Inicial",
|
||||
"info": "Información",
|
||||
"deleteImage": "Eliminar Imagen",
|
||||
"initialImage": "Imagen Inicial",
|
||||
"showOptionsPanel": "Mostrar panel de opciones",
|
||||
"symmetry": "Simetría",
|
||||
@@ -508,72 +481,37 @@
|
||||
},
|
||||
"copyImage": "Copiar la imagen",
|
||||
"general": "General",
|
||||
"negativePrompts": "Preguntas negativas",
|
||||
"imageToImage": "Imagen a imagen",
|
||||
"denoisingStrength": "Intensidad de la eliminación del ruido",
|
||||
"hiresStrength": "Alta resistencia",
|
||||
"showPreview": "Mostrar la vista previa",
|
||||
"hidePreview": "Ocultar la vista previa",
|
||||
"noiseSettings": "Ruido",
|
||||
"seamlessXAxis": "Eje x",
|
||||
"seamlessYAxis": "Eje y",
|
||||
"scheduler": "Programador",
|
||||
"boundingBoxWidth": "Anchura del recuadro",
|
||||
"boundingBoxHeight": "Altura del recuadro",
|
||||
"positivePromptPlaceholder": "Prompt Positivo",
|
||||
"negativePromptPlaceholder": "Prompt Negativo",
|
||||
"controlNetControlMode": "Modo de control",
|
||||
"clipSkip": "Omitir el CLIP",
|
||||
"aspectRatio": "Relación",
|
||||
"maskAdjustmentsHeader": "Ajustes de la máscara",
|
||||
"maskBlur": "Difuminar",
|
||||
"maskBlurMethod": "Método del desenfoque",
|
||||
"seamHighThreshold": "Alto",
|
||||
"seamLowThreshold": "Bajo",
|
||||
"coherencePassHeader": "Parámetros de la coherencia",
|
||||
"compositingSettingsHeader": "Ajustes de la composición",
|
||||
"coherenceSteps": "Pasos",
|
||||
"coherenceStrength": "Fuerza",
|
||||
"patchmatchDownScaleSize": "Reducir a escala",
|
||||
"coherenceMode": "Modo"
|
||||
"hidePreview": "Ocultar la vista previa"
|
||||
},
|
||||
"settings": {
|
||||
"models": "Modelos",
|
||||
"displayInProgress": "Mostrar las imágenes del progreso",
|
||||
"displayInProgress": "Mostrar imágenes en progreso",
|
||||
"saveSteps": "Guardar imágenes cada n pasos",
|
||||
"confirmOnDelete": "Confirmar antes de eliminar",
|
||||
"displayHelpIcons": "Mostrar iconos de ayuda",
|
||||
"useCanvasBeta": "Usar versión beta del Lienzo",
|
||||
"enableImageDebugging": "Habilitar depuración de imágenes",
|
||||
"resetWebUI": "Restablecer interfaz web",
|
||||
"resetWebUIDesc1": "Al restablecer la interfaz web, solo se restablece la caché local del navegador de sus imágenes y la configuración guardada. No se elimina ninguna imagen de su disco duro.",
|
||||
"resetWebUIDesc2": "Si las imágenes no se muestran en la galería o algo más no funciona, intente restablecer antes de reportar un incidente en GitHub.",
|
||||
"resetComplete": "Se ha restablecido la interfaz web.",
|
||||
"useSlidersForAll": "Utilice controles deslizantes para todas las opciones",
|
||||
"general": "General",
|
||||
"consoleLogLevel": "Nivel del registro",
|
||||
"shouldLogToConsole": "Registro de la consola",
|
||||
"developer": "Desarrollador",
|
||||
"antialiasProgressImages": "Imágenes del progreso de Antialias",
|
||||
"showProgressInViewer": "Mostrar las imágenes del progreso en el visor",
|
||||
"ui": "Interfaz del usuario",
|
||||
"generation": "Generación",
|
||||
"favoriteSchedulers": "Programadores favoritos",
|
||||
"favoriteSchedulersPlaceholder": "No hay programadores favoritos",
|
||||
"showAdvancedOptions": "Mostrar las opciones avanzadas",
|
||||
"alternateCanvasLayout": "Diseño alternativo del lienzo",
|
||||
"beta": "Beta",
|
||||
"enableNodesEditor": "Activar el editor de nodos",
|
||||
"experimental": "Experimental",
|
||||
"autoChangeDimensions": "Actualiza W/H a los valores predeterminados del modelo cuando se modifica"
|
||||
"resetComplete": "La interfaz web se ha restablecido. Actualice la página para recargarla.",
|
||||
"useSlidersForAll": "Utilice controles deslizantes para todas las opciones"
|
||||
},
|
||||
"toast": {
|
||||
"tempFoldersEmptied": "Directorio temporal vaciado",
|
||||
"uploadFailed": "Error al subir archivo",
|
||||
"uploadFailedMultipleImagesDesc": "Únicamente se puede subir una imágen a la vez",
|
||||
"uploadFailedUnableToLoadDesc": "No se pudo cargar la imágen",
|
||||
"downloadImageStarted": "Descargando imágen",
|
||||
"imageCopied": "Imágen copiada",
|
||||
"imageLinkCopied": "Enlace de imágen copiado",
|
||||
"imageNotLoaded": "No se cargó la imágen",
|
||||
"imageNotLoadedDesc": "No se pudo encontrar la imagen",
|
||||
"imageNotLoadedDesc": "No se encontró imagen para enviar al módulo Imagen a Imagen",
|
||||
"imageSavedToGallery": "Imágen guardada en la galería",
|
||||
"canvasMerged": "Lienzo consolidado",
|
||||
"sentToImageToImage": "Enviar hacia Imagen a Imagen",
|
||||
@@ -598,21 +536,7 @@
|
||||
"serverError": "Error en el servidor",
|
||||
"disconnected": "Desconectado del servidor",
|
||||
"canceled": "Procesando la cancelación",
|
||||
"connected": "Conectado al servidor",
|
||||
"problemCopyingImageLink": "No se puede copiar el enlace de la imagen",
|
||||
"uploadFailedInvalidUploadDesc": "Debe ser una sola imagen PNG o JPEG",
|
||||
"parameterSet": "Conjunto de parámetros",
|
||||
"parameterNotSet": "Parámetro no configurado",
|
||||
"nodesSaved": "Nodos guardados",
|
||||
"nodesLoadedFailed": "Error al cargar los nodos",
|
||||
"nodesLoaded": "Nodos cargados",
|
||||
"nodesCleared": "Nodos borrados",
|
||||
"problemCopyingImage": "No se puede copiar la imagen",
|
||||
"nodesNotValidJSON": "JSON no válido",
|
||||
"nodesCorruptedGraph": "No se puede cargar. El gráfico parece estar dañado.",
|
||||
"nodesUnrecognizedTypes": "No se puede cargar. El gráfico tiene tipos no reconocidos",
|
||||
"nodesNotValidGraph": "Gráfico del nodo InvokeAI no válido",
|
||||
"nodesBrokenConnections": "No se puede cargar. Algunas conexiones están rotas."
|
||||
"connected": "Conectado al servidor"
|
||||
},
|
||||
"tooltip": {
|
||||
"feature": {
|
||||
@@ -686,8 +610,7 @@
|
||||
"betaClear": "Limpiar",
|
||||
"betaDarkenOutside": "Oscurecer fuera",
|
||||
"betaLimitToBox": "Limitar a caja",
|
||||
"betaPreserveMasked": "Preservar área enmascarada",
|
||||
"antialiasing": "Suavizado"
|
||||
"betaPreserveMasked": "Preservar área enmascarada"
|
||||
},
|
||||
"accessibility": {
|
||||
"invokeProgressBar": "Activar la barra de progreso",
|
||||
@@ -708,30 +631,8 @@
|
||||
"modifyConfig": "Modificar la configuración",
|
||||
"toggleAutoscroll": "Activar el autodesplazamiento",
|
||||
"toggleLogViewer": "Alternar el visor de registros",
|
||||
"showOptionsPanel": "Mostrar el panel lateral",
|
||||
"showGallery": "Mostrar galería",
|
||||
"showOptionsPanel": "Mostrar el panel de opciones",
|
||||
"menu": "Menú"
|
||||
},
|
||||
"ui": {
|
||||
"hideProgressImages": "Ocultar el progreso de la imagen",
|
||||
"showProgressImages": "Mostrar el progreso de la imagen",
|
||||
"swapSizes": "Cambiar los tamaños",
|
||||
"lockRatio": "Proporción del bloqueo"
|
||||
},
|
||||
"nodes": {
|
||||
"showGraphNodes": "Mostrar la superposición de los gráficos",
|
||||
"zoomInNodes": "Acercar",
|
||||
"hideMinimapnodes": "Ocultar el minimapa",
|
||||
"fitViewportNodes": "Ajustar la vista",
|
||||
"zoomOutNodes": "Alejar",
|
||||
"hideGraphNodes": "Ocultar la superposición de los gráficos",
|
||||
"hideLegendNodes": "Ocultar la leyenda del tipo de campo",
|
||||
"showLegendNodes": "Mostrar la leyenda del tipo de campo",
|
||||
"showMinimapnodes": "Mostrar el minimapa",
|
||||
"reloadNodeTemplates": "Recargar las plantillas de nodos",
|
||||
"loadWorkflow": "Cargar el flujo de trabajo",
|
||||
"resetWorkflow": "Reiniciar e flujo de trabajo",
|
||||
"resetWorkflowDesc": "¿Está seguro de que deseas restablecer este flujo de trabajo?",
|
||||
"resetWorkflowDesc2": "Al reiniciar el flujo de trabajo se borrarán todos los nodos, aristas y detalles del flujo de trabajo.",
|
||||
"downloadWorkflow": "Descargar el flujo de trabajo en un archivo JSON"
|
||||
}
|
||||
}
|
||||
|
||||
8
invokeai/frontend/web/dist/locales/fi.json
vendored
8
invokeai/frontend/web/dist/locales/fi.json
vendored
@@ -15,6 +15,7 @@
|
||||
"rotateCounterClockwise": "Kierrä vastapäivään",
|
||||
"rotateClockwise": "Kierrä myötäpäivään",
|
||||
"flipVertically": "Käännä pystysuoraan",
|
||||
"showGallery": "Näytä galleria",
|
||||
"modifyConfig": "Muokkaa konfiguraatiota",
|
||||
"toggleAutoscroll": "Kytke automaattinen vieritys",
|
||||
"toggleLogViewer": "Kytke lokin katselutila",
|
||||
@@ -33,13 +34,18 @@
|
||||
"hotkeysLabel": "Pikanäppäimet",
|
||||
"reportBugLabel": "Raportoi Bugista",
|
||||
"langPolish": "Puola",
|
||||
"themeLabel": "Teema",
|
||||
"langDutch": "Hollanti",
|
||||
"settingsLabel": "Asetukset",
|
||||
"githubLabel": "Github",
|
||||
"darkTheme": "Tumma",
|
||||
"lightTheme": "Vaalea",
|
||||
"greenTheme": "Vihreä",
|
||||
"langGerman": "Saksa",
|
||||
"langPortuguese": "Portugali",
|
||||
"discordLabel": "Discord",
|
||||
"langEnglish": "Englanti",
|
||||
"oceanTheme": "Meren sininen",
|
||||
"langRussian": "Venäjä",
|
||||
"langUkranian": "Ukraina",
|
||||
"langSpanish": "Espanja",
|
||||
@@ -73,6 +79,7 @@
|
||||
"statusGeneratingInpainting": "Generoidaan sisällemaalausta",
|
||||
"statusGeneratingOutpainting": "Generoidaan ulosmaalausta",
|
||||
"statusRestoringFaces": "Korjataan kasvoja",
|
||||
"pinOptionsPanel": "Kiinnitä asetukset -paneeli",
|
||||
"loadingInvokeAI": "Ladataan Invoke AI:ta",
|
||||
"loading": "Ladataan",
|
||||
"statusGenerating": "Generoidaan",
|
||||
@@ -88,6 +95,7 @@
|
||||
"galleryImageResetSize": "Resetoi koko",
|
||||
"maintainAspectRatio": "Säilytä kuvasuhde",
|
||||
"galleryImageSize": "Kuvan koko",
|
||||
"pinGallery": "Kiinnitä galleria",
|
||||
"showGenerations": "Näytä generaatiot",
|
||||
"singleColumnLayout": "Yhden sarakkeen asettelu",
|
||||
"generations": "Generoinnit",
|
||||
|
||||
22
invokeai/frontend/web/dist/locales/fr.json
vendored
22
invokeai/frontend/web/dist/locales/fr.json
vendored
@@ -1,9 +1,13 @@
|
||||
{
|
||||
"common": {
|
||||
"hotkeysLabel": "Raccourcis clavier",
|
||||
"themeLabel": "Thème",
|
||||
"languagePickerLabel": "Sélecteur de langue",
|
||||
"reportBugLabel": "Signaler un bug",
|
||||
"settingsLabel": "Paramètres",
|
||||
"darkTheme": "Sombre",
|
||||
"lightTheme": "Clair",
|
||||
"greenTheme": "Vert",
|
||||
"img2img": "Image en image",
|
||||
"unifiedCanvas": "Canvas unifié",
|
||||
"nodes": "Nœuds",
|
||||
@@ -51,6 +55,7 @@
|
||||
"statusConvertingModel": "Conversion du modèle",
|
||||
"statusModelConverted": "Modèle converti",
|
||||
"loading": "Chargement",
|
||||
"pinOptionsPanel": "Épingler la page d'options",
|
||||
"statusMergedModels": "Modèles mélangés",
|
||||
"txt2img": "Texte vers image",
|
||||
"postprocessing": "Post-Traitement"
|
||||
@@ -66,6 +71,7 @@
|
||||
"maintainAspectRatio": "Maintenir le rapport d'aspect",
|
||||
"autoSwitchNewImages": "Basculer automatiquement vers de nouvelles images",
|
||||
"singleColumnLayout": "Mise en page en colonne unique",
|
||||
"pinGallery": "Épingler la galerie",
|
||||
"allImagesLoaded": "Toutes les images chargées",
|
||||
"loadMore": "Charger plus",
|
||||
"noImagesInGallery": "Aucune image dans la galerie"
|
||||
@@ -350,6 +356,7 @@
|
||||
"cfgScale": "CFG Echelle",
|
||||
"width": "Largeur",
|
||||
"height": "Hauteur",
|
||||
"sampler": "Echantillonneur",
|
||||
"seed": "Graine",
|
||||
"randomizeSeed": "Graine Aléatoire",
|
||||
"shuffle": "Mélanger",
|
||||
@@ -371,6 +378,10 @@
|
||||
"hiresOptim": "Optimisation Haute Résolution",
|
||||
"imageFit": "Ajuster Image Initiale à la Taille de Sortie",
|
||||
"codeformerFidelity": "Fidélité",
|
||||
"seamSize": "Taille des Joints",
|
||||
"seamBlur": "Flou des Joints",
|
||||
"seamStrength": "Force des Joints",
|
||||
"seamSteps": "Etapes des Joints",
|
||||
"scaleBeforeProcessing": "Echelle Avant Traitement",
|
||||
"scaledWidth": "Larg. Échelle",
|
||||
"scaledHeight": "Haut. Échelle",
|
||||
@@ -381,6 +392,8 @@
|
||||
"infillScalingHeader": "Remplissage et Mise à l'Échelle",
|
||||
"img2imgStrength": "Force de l'Image à l'Image",
|
||||
"toggleLoopback": "Activer/Désactiver la Boucle",
|
||||
"invoke": "Invoker",
|
||||
"promptPlaceholder": "Tapez le prompt ici. [tokens négatifs], (poids positif)++, (poids négatif)--, swap et blend sont disponibles (voir les docs)",
|
||||
"sendTo": "Envoyer à",
|
||||
"sendToImg2Img": "Envoyer à Image à Image",
|
||||
"sendToUnifiedCanvas": "Envoyer au Canvas Unifié",
|
||||
@@ -394,6 +407,7 @@
|
||||
"useAll": "Tout utiliser",
|
||||
"useInitImg": "Utiliser l'image initiale",
|
||||
"info": "Info",
|
||||
"deleteImage": "Supprimer l'image",
|
||||
"initialImage": "Image initiale",
|
||||
"showOptionsPanel": "Afficher le panneau d'options"
|
||||
},
|
||||
@@ -403,6 +417,7 @@
|
||||
"saveSteps": "Enregistrer les images tous les n étapes",
|
||||
"confirmOnDelete": "Confirmer la suppression",
|
||||
"displayHelpIcons": "Afficher les icônes d'aide",
|
||||
"useCanvasBeta": "Utiliser la mise en page bêta de Canvas",
|
||||
"enableImageDebugging": "Activer le débogage d'image",
|
||||
"resetWebUI": "Réinitialiser l'interface Web",
|
||||
"resetWebUIDesc1": "Réinitialiser l'interface Web ne réinitialise que le cache local du navigateur de vos images et de vos paramètres enregistrés. Cela n'efface pas les images du disque.",
|
||||
@@ -412,6 +427,7 @@
|
||||
"toast": {
|
||||
"tempFoldersEmptied": "Dossiers temporaires vidés",
|
||||
"uploadFailed": "Téléchargement échoué",
|
||||
"uploadFailedMultipleImagesDesc": "Plusieurs images collées, peut uniquement télécharger une image à la fois",
|
||||
"uploadFailedUnableToLoadDesc": "Impossible de charger le fichier",
|
||||
"downloadImageStarted": "Téléchargement de l'image démarré",
|
||||
"imageCopied": "Image copiée",
|
||||
@@ -522,10 +538,6 @@
|
||||
"useThisParameter": "Utiliser ce paramètre",
|
||||
"zoomIn": "Zoom avant",
|
||||
"zoomOut": "Zoom arrière",
|
||||
"showOptionsPanel": "Montrer la page d'options",
|
||||
"modelSelect": "Choix du modèle",
|
||||
"invokeProgressBar": "Barre de Progression Invoke",
|
||||
"copyMetadataJson": "Copie des métadonnées JSON",
|
||||
"menu": "Menu"
|
||||
"showOptionsPanel": "Montrer la page d'options"
|
||||
}
|
||||
}
|
||||
|
||||
18
invokeai/frontend/web/dist/locales/he.json
vendored
18
invokeai/frontend/web/dist/locales/he.json
vendored
@@ -107,10 +107,13 @@
|
||||
},
|
||||
"common": {
|
||||
"nodesDesc": "מערכת מבוססת צמתים עבור יצירת תמונות עדיין תחת פיתוח. השארו קשובים לעדכונים עבור הפיצ׳ר המדהים הזה.",
|
||||
"themeLabel": "ערכת נושא",
|
||||
"languagePickerLabel": "בחירת שפה",
|
||||
"githubLabel": "גיטהאב",
|
||||
"discordLabel": "דיסקורד",
|
||||
"settingsLabel": "הגדרות",
|
||||
"darkTheme": "חשוך",
|
||||
"lightTheme": "מואר",
|
||||
"langEnglish": "אנגלית",
|
||||
"langDutch": "הולנדית",
|
||||
"langArabic": "ערבית",
|
||||
@@ -152,6 +155,7 @@
|
||||
"statusMergedModels": "מודלים מוזגו",
|
||||
"hotkeysLabel": "מקשים חמים",
|
||||
"reportBugLabel": "דווח באג",
|
||||
"greenTheme": "ירוק",
|
||||
"langItalian": "איטלקית",
|
||||
"upload": "העלאה",
|
||||
"langPolish": "פולנית",
|
||||
@@ -380,6 +384,7 @@
|
||||
"maintainAspectRatio": "שמור על יחס רוחב-גובה",
|
||||
"autoSwitchNewImages": "החלף אוטומטית לתמונות חדשות",
|
||||
"singleColumnLayout": "תצוגת עמודה אחת",
|
||||
"pinGallery": "הצמד גלריה",
|
||||
"allImagesLoaded": "כל התמונות נטענו",
|
||||
"loadMore": "טען עוד",
|
||||
"noImagesInGallery": "אין תמונות בגלריה",
|
||||
@@ -394,6 +399,7 @@
|
||||
"cfgScale": "סולם CFG",
|
||||
"width": "רוחב",
|
||||
"height": "גובה",
|
||||
"sampler": "דוגם",
|
||||
"seed": "זרע",
|
||||
"imageToImage": "תמונה לתמונה",
|
||||
"randomizeSeed": "זרע אקראי",
|
||||
@@ -410,6 +416,10 @@
|
||||
"hiresOptim": "אופטימיזצית רזולוציה גבוהה",
|
||||
"hiresStrength": "חוזק רזולוציה גבוהה",
|
||||
"codeformerFidelity": "דבקות",
|
||||
"seamSize": "גודל תפר",
|
||||
"seamBlur": "טשטוש תפר",
|
||||
"seamStrength": "חוזק תפר",
|
||||
"seamSteps": "שלבי תפר",
|
||||
"scaleBeforeProcessing": "שנה קנה מידה לפני עיבוד",
|
||||
"scaledWidth": "קנה מידה לאחר שינוי W",
|
||||
"scaledHeight": "קנה מידה לאחר שינוי H",
|
||||
@@ -422,12 +432,14 @@
|
||||
"symmetry": "סימטריה",
|
||||
"vSymmetryStep": "צעד סימטריה V",
|
||||
"hSymmetryStep": "צעד סימטריה H",
|
||||
"invoke": "הפעלה",
|
||||
"cancel": {
|
||||
"schedule": "ביטול לאחר האיטרציה הנוכחית",
|
||||
"isScheduled": "מבטל",
|
||||
"immediate": "ביטול מיידי",
|
||||
"setType": "הגדר סוג ביטול"
|
||||
},
|
||||
"negativePrompts": "בקשות שליליות",
|
||||
"sendTo": "שליחה אל",
|
||||
"copyImage": "העתקת תמונה",
|
||||
"downloadImage": "הורדת תמונה",
|
||||
@@ -452,12 +464,15 @@
|
||||
"seamlessTiling": "ריצוף חלק",
|
||||
"img2imgStrength": "חוזק תמונה לתמונה",
|
||||
"initialImage": "תמונה ראשונית",
|
||||
"copyImageToLink": "העתקת תמונה לקישור"
|
||||
"copyImageToLink": "העתקת תמונה לקישור",
|
||||
"deleteImage": "מחיקת תמונה",
|
||||
"promptPlaceholder": "הקלד בקשה כאן. [אסימונים שליליים], (העלאת משקל)++ , (הורדת משקל)--, החלפה ומיזוג זמינים (ראה מסמכים)"
|
||||
},
|
||||
"settings": {
|
||||
"models": "מודלים",
|
||||
"displayInProgress": "הצגת תמונות בתהליך",
|
||||
"confirmOnDelete": "אישור בעת המחיקה",
|
||||
"useCanvasBeta": "שימוש בגרסת ביתא של תצוגת הקנבס",
|
||||
"useSlidersForAll": "שימוש במחוונים לכל האפשרויות",
|
||||
"resetWebUI": "איפוס ממשק משתמש",
|
||||
"resetWebUIDesc1": "איפוס ממשק המשתמש האינטרנטי מאפס רק את המטמון המקומי של הדפדפן של התמונות וההגדרות שנשמרו. זה לא מוחק תמונות מהדיסק.",
|
||||
@@ -469,6 +484,7 @@
|
||||
},
|
||||
"toast": {
|
||||
"uploadFailed": "העלאה נכשלה",
|
||||
"uploadFailedMultipleImagesDesc": "תמונות מרובות הודבקו, ניתן להעלות תמונה אחת בלבד בכל פעם",
|
||||
"imageCopied": "התמונה הועתקה",
|
||||
"imageLinkCopied": "קישור תמונה הועתק",
|
||||
"imageNotLoadedDesc": "לא נמצאה תמונה לשליחה למודול תמונה לתמונה",
|
||||
|
||||
959
invokeai/frontend/web/dist/locales/it.json
vendored
959
invokeai/frontend/web/dist/locales/it.json
vendored
File diff suppressed because it is too large
Load Diff
11
invokeai/frontend/web/dist/locales/ja.json
vendored
11
invokeai/frontend/web/dist/locales/ja.json
vendored
@@ -1,8 +1,12 @@
|
||||
{
|
||||
"common": {
|
||||
"themeLabel": "テーマ",
|
||||
"languagePickerLabel": "言語選択",
|
||||
"reportBugLabel": "バグ報告",
|
||||
"settingsLabel": "設定",
|
||||
"darkTheme": "ダーク",
|
||||
"lightTheme": "ライト",
|
||||
"greenTheme": "緑",
|
||||
"langJapanese": "日本語",
|
||||
"nodesDesc": "現在、画像生成のためのノードベースシステムを開発中です。機能についてのアップデートにご期待ください。",
|
||||
"postProcessing": "後処理",
|
||||
@@ -52,12 +56,14 @@
|
||||
"loadingInvokeAI": "Invoke AIをロード中",
|
||||
"statusConvertingModel": "モデルの変換",
|
||||
"statusMergedModels": "マージ済モデル",
|
||||
"pinOptionsPanel": "オプションパネルを固定",
|
||||
"githubLabel": "Github",
|
||||
"hotkeysLabel": "ホットキー",
|
||||
"langHebrew": "עברית",
|
||||
"discordLabel": "Discord",
|
||||
"langItalian": "Italiano",
|
||||
"langEnglish": "English",
|
||||
"oceanTheme": "オーシャン",
|
||||
"langArabic": "アラビア語",
|
||||
"langDutch": "Nederlands",
|
||||
"langFrench": "Français",
|
||||
@@ -77,6 +83,7 @@
|
||||
"gallerySettings": "ギャラリーの設定",
|
||||
"maintainAspectRatio": "アスペクト比を維持",
|
||||
"singleColumnLayout": "1カラムレイアウト",
|
||||
"pinGallery": "ギャラリーにピン留め",
|
||||
"allImagesLoaded": "すべての画像を読み込む",
|
||||
"loadMore": "さらに読み込む",
|
||||
"noImagesInGallery": "ギャラリーに画像がありません",
|
||||
@@ -348,6 +355,7 @@
|
||||
"useSeed": "シード値を使用",
|
||||
"useAll": "すべてを使用",
|
||||
"info": "情報",
|
||||
"deleteImage": "画像を削除",
|
||||
"showOptionsPanel": "オプションパネルを表示"
|
||||
},
|
||||
"settings": {
|
||||
@@ -356,6 +364,7 @@
|
||||
"saveSteps": "nステップごとに画像を保存",
|
||||
"confirmOnDelete": "削除時に確認",
|
||||
"displayHelpIcons": "ヘルプアイコンを表示",
|
||||
"useCanvasBeta": "キャンバスレイアウト(Beta)を使用する",
|
||||
"enableImageDebugging": "画像のデバッグを有効化",
|
||||
"resetWebUI": "WebUIをリセット",
|
||||
"resetWebUIDesc1": "WebUIのリセットは、画像と保存された設定のキャッシュをリセットするだけです。画像を削除するわけではありません。",
|
||||
@@ -364,6 +373,7 @@
|
||||
},
|
||||
"toast": {
|
||||
"uploadFailed": "アップロード失敗",
|
||||
"uploadFailedMultipleImagesDesc": "一度にアップロードできる画像は1枚のみです。",
|
||||
"uploadFailedUnableToLoadDesc": "ファイルを読み込むことができません。",
|
||||
"downloadImageStarted": "画像ダウンロード開始",
|
||||
"imageCopied": "画像をコピー",
|
||||
@@ -461,6 +471,7 @@
|
||||
"toggleAutoscroll": "自動スクロールの切替",
|
||||
"modifyConfig": "Modify Config",
|
||||
"toggleLogViewer": "Log Viewerの切替",
|
||||
"showGallery": "ギャラリーを表示",
|
||||
"showOptionsPanel": "オプションパネルを表示"
|
||||
}
|
||||
}
|
||||
|
||||
4
invokeai/frontend/web/dist/locales/ko.json
vendored
4
invokeai/frontend/web/dist/locales/ko.json
vendored
@@ -1,9 +1,13 @@
|
||||
{
|
||||
"common": {
|
||||
"themeLabel": "테마 설정",
|
||||
"languagePickerLabel": "언어 설정",
|
||||
"reportBugLabel": "버그 리포트",
|
||||
"githubLabel": "Github",
|
||||
"settingsLabel": "설정",
|
||||
"darkTheme": "다크 모드",
|
||||
"lightTheme": "라이트 모드",
|
||||
"greenTheme": "그린 모드",
|
||||
"langArabic": "العربية",
|
||||
"langEnglish": "English",
|
||||
"langDutch": "Nederlands",
|
||||
|
||||
965
invokeai/frontend/web/dist/locales/nl.json
vendored
965
invokeai/frontend/web/dist/locales/nl.json
vendored
File diff suppressed because it is too large
Load Diff
43
invokeai/frontend/web/dist/locales/pl.json
vendored
43
invokeai/frontend/web/dist/locales/pl.json
vendored
@@ -1,9 +1,13 @@
|
||||
{
|
||||
"common": {
|
||||
"hotkeysLabel": "Skróty klawiszowe",
|
||||
"themeLabel": "Motyw",
|
||||
"languagePickerLabel": "Wybór języka",
|
||||
"reportBugLabel": "Zgłoś błąd",
|
||||
"settingsLabel": "Ustawienia",
|
||||
"darkTheme": "Ciemny",
|
||||
"lightTheme": "Jasny",
|
||||
"greenTheme": "Zielony",
|
||||
"img2img": "Obraz na obraz",
|
||||
"unifiedCanvas": "Tryb uniwersalny",
|
||||
"nodes": "Węzły",
|
||||
@@ -39,11 +43,7 @@
|
||||
"statusUpscaling": "Powiększanie obrazu",
|
||||
"statusUpscalingESRGAN": "Powiększanie (ESRGAN)",
|
||||
"statusLoadingModel": "Wczytywanie modelu",
|
||||
"statusModelChanged": "Zmieniono model",
|
||||
"githubLabel": "GitHub",
|
||||
"discordLabel": "Discord",
|
||||
"darkMode": "Tryb ciemny",
|
||||
"lightMode": "Tryb jasny"
|
||||
"statusModelChanged": "Zmieniono model"
|
||||
},
|
||||
"gallery": {
|
||||
"generations": "Wygenerowane",
|
||||
@@ -56,6 +56,7 @@
|
||||
"maintainAspectRatio": "Zachowaj proporcje",
|
||||
"autoSwitchNewImages": "Przełączaj na nowe obrazy",
|
||||
"singleColumnLayout": "Układ jednokolumnowy",
|
||||
"pinGallery": "Przypnij galerię",
|
||||
"allImagesLoaded": "Koniec listy",
|
||||
"loadMore": "Wczytaj więcej",
|
||||
"noImagesInGallery": "Brak obrazów w galerii"
|
||||
@@ -273,6 +274,7 @@
|
||||
"cfgScale": "Skala CFG",
|
||||
"width": "Szerokość",
|
||||
"height": "Wysokość",
|
||||
"sampler": "Próbkowanie",
|
||||
"seed": "Inicjator",
|
||||
"randomizeSeed": "Losowy inicjator",
|
||||
"shuffle": "Losuj",
|
||||
@@ -294,6 +296,10 @@
|
||||
"hiresOptim": "Optymalizacja wys. rozdzielczości",
|
||||
"imageFit": "Przeskaluj oryginalny obraz",
|
||||
"codeformerFidelity": "Dokładność",
|
||||
"seamSize": "Rozmiar",
|
||||
"seamBlur": "Rozmycie",
|
||||
"seamStrength": "Siła",
|
||||
"seamSteps": "Kroki",
|
||||
"scaleBeforeProcessing": "Tryb skalowania",
|
||||
"scaledWidth": "Sk. do szer.",
|
||||
"scaledHeight": "Sk. do wys.",
|
||||
@@ -304,6 +310,8 @@
|
||||
"infillScalingHeader": "Wypełnienie i skalowanie",
|
||||
"img2imgStrength": "Wpływ sugestii na obraz",
|
||||
"toggleLoopback": "Wł/wył sprzężenie zwrotne",
|
||||
"invoke": "Wywołaj",
|
||||
"promptPlaceholder": "W tym miejscu wprowadź swoje sugestie. [negatywne sugestie], (wzmocnienie), (osłabienie)--, po więcej opcji (np. swap lub blend) zajrzyj do dokumentacji",
|
||||
"sendTo": "Wyślij do",
|
||||
"sendToImg2Img": "Użyj w trybie \"Obraz na obraz\"",
|
||||
"sendToUnifiedCanvas": "Użyj w trybie uniwersalnym",
|
||||
@@ -316,6 +324,7 @@
|
||||
"useAll": "Skopiuj wszystko",
|
||||
"useInitImg": "Użyj oryginalnego obrazu",
|
||||
"info": "Informacje",
|
||||
"deleteImage": "Usuń obraz",
|
||||
"initialImage": "Oryginalny obraz",
|
||||
"showOptionsPanel": "Pokaż panel ustawień"
|
||||
},
|
||||
@@ -325,6 +334,7 @@
|
||||
"saveSteps": "Zapisuj obrazy co X kroków",
|
||||
"confirmOnDelete": "Potwierdzaj usuwanie",
|
||||
"displayHelpIcons": "Wyświetlaj ikony pomocy",
|
||||
"useCanvasBeta": "Nowy układ trybu uniwersalnego",
|
||||
"enableImageDebugging": "Włącz debugowanie obrazu",
|
||||
"resetWebUI": "Zresetuj interfejs",
|
||||
"resetWebUIDesc1": "Resetowanie interfejsu wyczyści jedynie dane i ustawienia zapisane w pamięci przeglądarki. Nie usunie żadnych obrazów z dysku.",
|
||||
@@ -334,6 +344,7 @@
|
||||
"toast": {
|
||||
"tempFoldersEmptied": "Wyczyszczono folder tymczasowy",
|
||||
"uploadFailed": "Błąd przesyłania obrazu",
|
||||
"uploadFailedMultipleImagesDesc": "Możliwe jest przesłanie tylko jednego obrazu na raz",
|
||||
"uploadFailedUnableToLoadDesc": "Błąd wczytywania obrazu",
|
||||
"downloadImageStarted": "Rozpoczęto pobieranie",
|
||||
"imageCopied": "Skopiowano obraz",
|
||||
@@ -435,27 +446,5 @@
|
||||
"betaDarkenOutside": "Przyciemnienie",
|
||||
"betaLimitToBox": "Ogranicz do zaznaczenia",
|
||||
"betaPreserveMasked": "Zachowaj obszar"
|
||||
},
|
||||
"accessibility": {
|
||||
"zoomIn": "Przybliż",
|
||||
"exitViewer": "Wyjdź z podglądu",
|
||||
"modelSelect": "Wybór modelu",
|
||||
"invokeProgressBar": "Pasek postępu",
|
||||
"reset": "Zerowanie",
|
||||
"useThisParameter": "Użyj tego parametru",
|
||||
"copyMetadataJson": "Kopiuj metadane JSON",
|
||||
"uploadImage": "Wgrywanie obrazu",
|
||||
"previousImage": "Poprzedni obraz",
|
||||
"nextImage": "Następny obraz",
|
||||
"zoomOut": "Oddal",
|
||||
"rotateClockwise": "Obróć zgodnie ze wskazówkami zegara",
|
||||
"rotateCounterClockwise": "Obróć przeciwnie do wskazówek zegara",
|
||||
"flipHorizontally": "Odwróć horyzontalnie",
|
||||
"flipVertically": "Odwróć wertykalnie",
|
||||
"modifyConfig": "Modyfikuj ustawienia",
|
||||
"toggleAutoscroll": "Przełącz autoprzewijanie",
|
||||
"toggleLogViewer": "Przełącz podgląd logów",
|
||||
"showOptionsPanel": "Pokaż panel opcji",
|
||||
"menu": "Menu"
|
||||
}
|
||||
}
|
||||
|
||||
19
invokeai/frontend/web/dist/locales/pt.json
vendored
19
invokeai/frontend/web/dist/locales/pt.json
vendored
@@ -1,8 +1,11 @@
|
||||
{
|
||||
"common": {
|
||||
"greenTheme": "Verde",
|
||||
"langArabic": "العربية",
|
||||
"themeLabel": "Tema",
|
||||
"reportBugLabel": "Reportar Bug",
|
||||
"settingsLabel": "Configurações",
|
||||
"lightTheme": "Claro",
|
||||
"langBrPortuguese": "Português do Brasil",
|
||||
"languagePickerLabel": "Seletor de Idioma",
|
||||
"langDutch": "Nederlands",
|
||||
@@ -54,11 +57,14 @@
|
||||
"statusModelChanged": "Modelo Alterado",
|
||||
"githubLabel": "Github",
|
||||
"discordLabel": "Discord",
|
||||
"darkTheme": "Escuro",
|
||||
"training": "Treinando",
|
||||
"statusGeneratingOutpainting": "Geração de Ampliação",
|
||||
"statusGenerationComplete": "Geração Completa",
|
||||
"statusMergingModels": "Mesclando Modelos",
|
||||
"statusMergedModels": "Modelos Mesclados",
|
||||
"oceanTheme": "Oceano",
|
||||
"pinOptionsPanel": "Fixar painel de opções",
|
||||
"loading": "A carregar",
|
||||
"loadingInvokeAI": "A carregar Invoke AI",
|
||||
"langPortuguese": "Português"
|
||||
@@ -68,6 +74,7 @@
|
||||
"gallerySettings": "Configurações de Galeria",
|
||||
"maintainAspectRatio": "Mater Proporções",
|
||||
"autoSwitchNewImages": "Trocar para Novas Imagens Automaticamente",
|
||||
"pinGallery": "Fixar Galeria",
|
||||
"singleColumnLayout": "Disposição em Coluna Única",
|
||||
"allImagesLoaded": "Todas as Imagens Carregadas",
|
||||
"loadMore": "Carregar Mais",
|
||||
@@ -400,6 +407,7 @@
|
||||
"width": "Largura",
|
||||
"seed": "Seed",
|
||||
"hiresStrength": "Força da Alta Resolução",
|
||||
"negativePrompts": "Indicações negativas",
|
||||
"general": "Geral",
|
||||
"randomizeSeed": "Seed Aleatório",
|
||||
"shuffle": "Embaralhar",
|
||||
@@ -417,6 +425,10 @@
|
||||
"hiresOptim": "Otimização de Alta Res",
|
||||
"imageFit": "Caber Imagem Inicial No Tamanho de Saída",
|
||||
"codeformerFidelity": "Fidelidade",
|
||||
"seamSize": "Tamanho da Fronteira",
|
||||
"seamBlur": "Desfoque da Fronteira",
|
||||
"seamStrength": "Força da Fronteira",
|
||||
"seamSteps": "Passos da Fronteira",
|
||||
"tileSize": "Tamanho do Ladrilho",
|
||||
"boundingBoxHeader": "Caixa Delimitadora",
|
||||
"seamCorrectionHeader": "Correção de Fronteira",
|
||||
@@ -424,10 +436,12 @@
|
||||
"img2imgStrength": "Força de Imagem Para Imagem",
|
||||
"toggleLoopback": "Ativar Loopback",
|
||||
"symmetry": "Simetria",
|
||||
"promptPlaceholder": "Digite o prompt aqui. [tokens negativos], (upweight)++, (downweight)--, trocar e misturar estão disponíveis (veja docs)",
|
||||
"sendTo": "Mandar para",
|
||||
"openInViewer": "Abrir No Visualizador",
|
||||
"closeViewer": "Fechar Visualizador",
|
||||
"usePrompt": "Usar Prompt",
|
||||
"deleteImage": "Apagar Imagem",
|
||||
"initialImage": "Imagem inicial",
|
||||
"showOptionsPanel": "Mostrar Painel de Opções",
|
||||
"strength": "Força",
|
||||
@@ -435,10 +449,12 @@
|
||||
"upscale": "Redimensionar",
|
||||
"upscaleImage": "Redimensionar Imagem",
|
||||
"scaleBeforeProcessing": "Escala Antes do Processamento",
|
||||
"invoke": "Invocar",
|
||||
"images": "Imagems",
|
||||
"steps": "Passos",
|
||||
"cfgScale": "Escala CFG",
|
||||
"height": "Altura",
|
||||
"sampler": "Amostrador",
|
||||
"imageToImage": "Imagem para Imagem",
|
||||
"variationAmount": "Quntidade de Variatções",
|
||||
"scaledWidth": "L Escalada",
|
||||
@@ -465,6 +481,7 @@
|
||||
"settings": {
|
||||
"confirmOnDelete": "Confirmar Antes de Apagar",
|
||||
"displayHelpIcons": "Mostrar Ícones de Ajuda",
|
||||
"useCanvasBeta": "Usar Layout de Telas Beta",
|
||||
"enableImageDebugging": "Ativar Depuração de Imagem",
|
||||
"useSlidersForAll": "Usar deslizadores para todas as opções",
|
||||
"resetWebUIDesc1": "Reiniciar a interface apenas reinicia o cache local do broswer para imagens e configurações lembradas. Não apaga nenhuma imagem do disco.",
|
||||
@@ -477,6 +494,7 @@
|
||||
},
|
||||
"toast": {
|
||||
"uploadFailed": "Envio Falhou",
|
||||
"uploadFailedMultipleImagesDesc": "Várias imagens copiadas, só é permitido uma imagem de cada vez",
|
||||
"uploadFailedUnableToLoadDesc": "Não foj possível carregar o ficheiro",
|
||||
"downloadImageStarted": "Download de Imagem Começou",
|
||||
"imageNotLoadedDesc": "Nenhuma imagem encontrada a enviar para o módulo de imagem para imagem",
|
||||
@@ -593,6 +611,7 @@
|
||||
"flipVertically": "Espelhar verticalmente",
|
||||
"modifyConfig": "Modificar config",
|
||||
"toggleAutoscroll": "Alternar rolagem automática",
|
||||
"showGallery": "Mostrar galeria",
|
||||
"showOptionsPanel": "Mostrar painel de opções",
|
||||
"uploadImage": "Enviar imagem",
|
||||
"previousImage": "Imagem anterior",
|
||||
|
||||
17
invokeai/frontend/web/dist/locales/pt_BR.json
vendored
17
invokeai/frontend/web/dist/locales/pt_BR.json
vendored
@@ -1,9 +1,13 @@
|
||||
{
|
||||
"common": {
|
||||
"hotkeysLabel": "Teclas de atalho",
|
||||
"themeLabel": "Tema",
|
||||
"languagePickerLabel": "Seletor de Idioma",
|
||||
"reportBugLabel": "Relatar Bug",
|
||||
"settingsLabel": "Configurações",
|
||||
"darkTheme": "Noite",
|
||||
"lightTheme": "Dia",
|
||||
"greenTheme": "Verde",
|
||||
"img2img": "Imagem Para Imagem",
|
||||
"unifiedCanvas": "Tela Unificada",
|
||||
"nodes": "Nódulos",
|
||||
@@ -59,6 +63,7 @@
|
||||
"statusMergedModels": "Modelos Mesclados",
|
||||
"langRussian": "Russo",
|
||||
"langSpanish": "Espanhol",
|
||||
"pinOptionsPanel": "Fixar painel de opções",
|
||||
"loadingInvokeAI": "Carregando Invoke AI",
|
||||
"loading": "Carregando"
|
||||
},
|
||||
@@ -73,6 +78,7 @@
|
||||
"maintainAspectRatio": "Mater Proporções",
|
||||
"autoSwitchNewImages": "Trocar para Novas Imagens Automaticamente",
|
||||
"singleColumnLayout": "Disposição em Coluna Única",
|
||||
"pinGallery": "Fixar Galeria",
|
||||
"allImagesLoaded": "Todas as Imagens Carregadas",
|
||||
"loadMore": "Carregar Mais",
|
||||
"noImagesInGallery": "Sem Imagens na Galeria"
|
||||
@@ -396,6 +402,7 @@
|
||||
"cfgScale": "Escala CFG",
|
||||
"width": "Largura",
|
||||
"height": "Altura",
|
||||
"sampler": "Amostrador",
|
||||
"seed": "Seed",
|
||||
"randomizeSeed": "Seed Aleatório",
|
||||
"shuffle": "Embaralhar",
|
||||
@@ -417,6 +424,10 @@
|
||||
"hiresOptim": "Otimização de Alta Res",
|
||||
"imageFit": "Caber Imagem Inicial No Tamanho de Saída",
|
||||
"codeformerFidelity": "Fidelidade",
|
||||
"seamSize": "Tamanho da Fronteira",
|
||||
"seamBlur": "Desfoque da Fronteira",
|
||||
"seamStrength": "Força da Fronteira",
|
||||
"seamSteps": "Passos da Fronteira",
|
||||
"scaleBeforeProcessing": "Escala Antes do Processamento",
|
||||
"scaledWidth": "L Escalada",
|
||||
"scaledHeight": "A Escalada",
|
||||
@@ -427,6 +438,8 @@
|
||||
"infillScalingHeader": "Preencimento e Escala",
|
||||
"img2imgStrength": "Força de Imagem Para Imagem",
|
||||
"toggleLoopback": "Ativar Loopback",
|
||||
"invoke": "Invoke",
|
||||
"promptPlaceholder": "Digite o prompt aqui. [tokens negativos], (upweight)++, (downweight)--, trocar e misturar estão disponíveis (veja docs)",
|
||||
"sendTo": "Mandar para",
|
||||
"sendToImg2Img": "Mandar para Imagem Para Imagem",
|
||||
"sendToUnifiedCanvas": "Mandar para Tela Unificada",
|
||||
@@ -439,12 +452,14 @@
|
||||
"useAll": "Usar Todos",
|
||||
"useInitImg": "Usar Imagem Inicial",
|
||||
"info": "Informações",
|
||||
"deleteImage": "Apagar Imagem",
|
||||
"initialImage": "Imagem inicial",
|
||||
"showOptionsPanel": "Mostrar Painel de Opções",
|
||||
"vSymmetryStep": "V Passo de Simetria",
|
||||
"hSymmetryStep": "H Passo de Simetria",
|
||||
"symmetry": "Simetria",
|
||||
"copyImage": "Copiar imagem",
|
||||
"negativePrompts": "Indicações negativas",
|
||||
"hiresStrength": "Força da Alta Resolução",
|
||||
"denoisingStrength": "A força de remoção de ruído",
|
||||
"imageToImage": "Imagem para Imagem",
|
||||
@@ -462,6 +477,7 @@
|
||||
"saveSteps": "Salvar imagens a cada n passos",
|
||||
"confirmOnDelete": "Confirmar Antes de Apagar",
|
||||
"displayHelpIcons": "Mostrar Ícones de Ajuda",
|
||||
"useCanvasBeta": "Usar Layout de Telas Beta",
|
||||
"enableImageDebugging": "Ativar Depuração de Imagem",
|
||||
"resetWebUI": "Reiniciar Interface",
|
||||
"resetWebUIDesc1": "Reiniciar a interface apenas reinicia o cache local do broswer para imagens e configurações lembradas. Não apaga nenhuma imagem do disco.",
|
||||
@@ -472,6 +488,7 @@
|
||||
"toast": {
|
||||
"tempFoldersEmptied": "Pasta de Arquivos Temporários Esvaziada",
|
||||
"uploadFailed": "Envio Falhou",
|
||||
"uploadFailedMultipleImagesDesc": "Várias imagens copiadas, só é permitido uma imagem de cada vez",
|
||||
"uploadFailedUnableToLoadDesc": "Não foj possível carregar o arquivo",
|
||||
"downloadImageStarted": "Download de Imagem Começou",
|
||||
"imageCopied": "Imagem Copiada",
|
||||
|
||||
211
invokeai/frontend/web/dist/locales/ru.json
vendored
211
invokeai/frontend/web/dist/locales/ru.json
vendored
@@ -1,12 +1,16 @@
|
||||
{
|
||||
"common": {
|
||||
"hotkeysLabel": "Горячие клавиши",
|
||||
"themeLabel": "Тема",
|
||||
"languagePickerLabel": "Язык",
|
||||
"reportBugLabel": "Сообщить об ошибке",
|
||||
"settingsLabel": "Настройки",
|
||||
"darkTheme": "Темная",
|
||||
"lightTheme": "Светлая",
|
||||
"greenTheme": "Зеленая",
|
||||
"img2img": "Изображение в изображение (img2img)",
|
||||
"unifiedCanvas": "Единый холст",
|
||||
"nodes": "Редактор рабочего процесса",
|
||||
"nodes": "Ноды",
|
||||
"langRussian": "Русский",
|
||||
"nodesDesc": "Cистема генерации изображений на основе нодов (узлов) уже разрабатывается. Следите за новостями об этой замечательной функции.",
|
||||
"postProcessing": "Постобработка",
|
||||
@@ -45,12 +49,14 @@
|
||||
"statusMergingModels": "Слияние моделей",
|
||||
"statusModelConverted": "Модель сконвертирована",
|
||||
"statusMergedModels": "Модели объединены",
|
||||
"pinOptionsPanel": "Закрепить панель настроек",
|
||||
"loading": "Загрузка",
|
||||
"loadingInvokeAI": "Загрузка Invoke AI",
|
||||
"back": "Назад",
|
||||
"statusConvertingModel": "Конвертация модели",
|
||||
"cancel": "Отменить",
|
||||
"accept": "Принять",
|
||||
"oceanTheme": "Океан",
|
||||
"langUkranian": "Украинский",
|
||||
"langEnglish": "Английский",
|
||||
"postprocessing": "Постобработка",
|
||||
@@ -68,21 +74,7 @@
|
||||
"langPortuguese": "Португальский",
|
||||
"txt2img": "Текст в изображение (txt2img)",
|
||||
"langBrPortuguese": "Португальский (Бразилия)",
|
||||
"linear": "Линейная обработка",
|
||||
"dontAskMeAgain": "Больше не спрашивать",
|
||||
"areYouSure": "Вы уверены?",
|
||||
"random": "Случайное",
|
||||
"generate": "Сгенерировать",
|
||||
"openInNewTab": "Открыть в новой вкладке",
|
||||
"imagePrompt": "Запрос",
|
||||
"communityLabel": "Сообщество",
|
||||
"lightMode": "Светлая тема",
|
||||
"batch": "Пакетный менеджер",
|
||||
"modelManager": "Менеджер моделей",
|
||||
"darkMode": "Темная тема",
|
||||
"nodeEditor": "Редактор Нодов (Узлов)",
|
||||
"controlNet": "Controlnet",
|
||||
"advanced": "Расширенные"
|
||||
"linear": "Линейная обработка"
|
||||
},
|
||||
"gallery": {
|
||||
"generations": "Генерации",
|
||||
@@ -95,15 +87,10 @@
|
||||
"maintainAspectRatio": "Сохранять пропорции",
|
||||
"autoSwitchNewImages": "Автоматически выбирать новые",
|
||||
"singleColumnLayout": "Одна колонка",
|
||||
"pinGallery": "Закрепить галерею",
|
||||
"allImagesLoaded": "Все изображения загружены",
|
||||
"loadMore": "Показать больше",
|
||||
"noImagesInGallery": "Изображений нет",
|
||||
"deleteImagePermanent": "Удаленные изображения невозможно восстановить.",
|
||||
"deleteImageBin": "Удаленные изображения будут отправлены в корзину вашей операционной системы.",
|
||||
"deleteImage": "Удалить изображение",
|
||||
"images": "Изображения",
|
||||
"assets": "Ресурсы",
|
||||
"autoAssignBoardOnClick": "Авто-назначение доски по клику"
|
||||
"noImagesInGallery": "Изображений нет"
|
||||
},
|
||||
"hotkeys": {
|
||||
"keyboardShortcuts": "Горячие клавиши",
|
||||
@@ -310,12 +297,7 @@
|
||||
"acceptStagingImage": {
|
||||
"title": "Принять изображение",
|
||||
"desc": "Принять текущее изображение"
|
||||
},
|
||||
"addNodes": {
|
||||
"desc": "Открывает меню добавления узла",
|
||||
"title": "Добавление узлов"
|
||||
},
|
||||
"nodesHotkeys": "Горячие клавиши узлов"
|
||||
}
|
||||
},
|
||||
"modelManager": {
|
||||
"modelManager": "Менеджер моделей",
|
||||
@@ -368,14 +350,14 @@
|
||||
"deleteModel": "Удалить модель",
|
||||
"deleteConfig": "Удалить конфигурацию",
|
||||
"deleteMsg1": "Вы точно хотите удалить модель из InvokeAI?",
|
||||
"deleteMsg2": "Это приведет К УДАЛЕНИЮ модели С ДИСКА, если она находится в корневой папке Invoke. Если вы используете пользовательское расположение, то модель НЕ будет удалена с диска.",
|
||||
"deleteMsg2": "Это не удалит файл модели с диска. Позже вы можете добавить его снова.",
|
||||
"repoIDValidationMsg": "Онлайн-репозиторий модели",
|
||||
"convertToDiffusersHelpText5": "Пожалуйста, убедитесь, что у вас достаточно места на диске. Модели обычно занимают 2–7 Гб.",
|
||||
"convertToDiffusersHelpText5": "Пожалуйста, убедитесь, что у вас достаточно места на диске. Модели обычно занимают 4 – 7 Гб.",
|
||||
"invokeAIFolder": "Каталог InvokeAI",
|
||||
"ignoreMismatch": "Игнорировать несоответствия между выбранными моделями",
|
||||
"addCheckpointModel": "Добавить модель Checkpoint/Safetensor",
|
||||
"formMessageDiffusersModelLocationDesc": "Укажите хотя бы одно.",
|
||||
"convertToDiffusersHelpText3": "Ваш файл контрольной точки НА ДИСКЕ будет УДАЛЕН, если он находится в корневой папке InvokeAI. Если он находится в пользовательском расположении, то он НЕ будет удален.",
|
||||
"convertToDiffusersHelpText3": "Файл модели на диске НЕ будет удалён или изменён. Вы сможете заново добавить его в Model Manager при необходимости.",
|
||||
"vaeRepoID": "ID репозитория VAE",
|
||||
"mergedModelName": "Название объединенной модели",
|
||||
"checkpointModels": "Checkpoints",
|
||||
@@ -427,27 +409,7 @@
|
||||
"weightedSum": "Взвешенная сумма",
|
||||
"safetensorModels": "SafeTensors",
|
||||
"v2_768": "v2 (768px)",
|
||||
"v2_base": "v2 (512px)",
|
||||
"modelDeleted": "Модель удалена",
|
||||
"importModels": "Импорт Моделей",
|
||||
"variant": "Вариант",
|
||||
"baseModel": "Базовая модель",
|
||||
"modelsSynced": "Модели синхронизированы",
|
||||
"modelSyncFailed": "Не удалось синхронизировать модели",
|
||||
"vae": "VAE",
|
||||
"modelDeleteFailed": "Не удалось удалить модель",
|
||||
"noCustomLocationProvided": "Пользовательское местоположение не указано",
|
||||
"convertingModelBegin": "Конвертация модели. Пожалуйста, подождите.",
|
||||
"settings": "Настройки",
|
||||
"selectModel": "Выберите модель",
|
||||
"syncModels": "Синхронизация моделей",
|
||||
"syncModelsDesc": "Если ваши модели не синхронизированы с серверной частью, вы можете обновить их, используя эту опцию. Обычно это удобно в тех случаях, когда вы вручную обновляете свой файл \"models.yaml\" или добавляете модели в корневую папку InvokeAI после загрузки приложения.",
|
||||
"modelUpdateFailed": "Не удалось обновить модель",
|
||||
"modelConversionFailed": "Не удалось сконвертировать модель",
|
||||
"modelsMergeFailed": "Не удалось выполнить слияние моделей",
|
||||
"loraModels": "LoRAs",
|
||||
"onnxModels": "Onnx",
|
||||
"oliveModels": "Olives"
|
||||
"v2_base": "v2 (512px)"
|
||||
},
|
||||
"parameters": {
|
||||
"images": "Изображения",
|
||||
@@ -455,9 +417,10 @@
|
||||
"cfgScale": "Уровень CFG",
|
||||
"width": "Ширина",
|
||||
"height": "Высота",
|
||||
"sampler": "Семплер",
|
||||
"seed": "Сид",
|
||||
"randomizeSeed": "Случайный сид",
|
||||
"shuffle": "Обновить сид",
|
||||
"shuffle": "Обновить",
|
||||
"noiseThreshold": "Порог шума",
|
||||
"perlinNoise": "Шум Перлина",
|
||||
"variations": "Вариации",
|
||||
@@ -476,6 +439,10 @@
|
||||
"hiresOptim": "Оптимизация High Res",
|
||||
"imageFit": "Уместить изображение",
|
||||
"codeformerFidelity": "Точность",
|
||||
"seamSize": "Размер шва",
|
||||
"seamBlur": "Размытие шва",
|
||||
"seamStrength": "Сила шва",
|
||||
"seamSteps": "Шаги шва",
|
||||
"scaleBeforeProcessing": "Масштабировать",
|
||||
"scaledWidth": "Масштаб Ш",
|
||||
"scaledHeight": "Масштаб В",
|
||||
@@ -486,6 +453,8 @@
|
||||
"infillScalingHeader": "Заполнение и масштабирование",
|
||||
"img2imgStrength": "Сила обработки img2img",
|
||||
"toggleLoopback": "Зациклить обработку",
|
||||
"invoke": "Invoke",
|
||||
"promptPlaceholder": "Введите запрос здесь (на английском). [исключенные токены], (более значимые)++, (менее значимые)--, swap и blend тоже доступны (смотрите Github)",
|
||||
"sendTo": "Отправить",
|
||||
"sendToImg2Img": "Отправить в img2img",
|
||||
"sendToUnifiedCanvas": "Отправить на Единый холст",
|
||||
@@ -498,6 +467,7 @@
|
||||
"useAll": "Использовать все",
|
||||
"useInitImg": "Использовать как исходное",
|
||||
"info": "Метаданные",
|
||||
"deleteImage": "Удалить изображение",
|
||||
"initialImage": "Исходное изображение",
|
||||
"showOptionsPanel": "Показать панель настроек",
|
||||
"vSymmetryStep": "Шаг верт. симметрии",
|
||||
@@ -515,27 +485,8 @@
|
||||
"imageToImage": "Изображение в изображение",
|
||||
"denoisingStrength": "Сила шумоподавления",
|
||||
"copyImage": "Скопировать изображение",
|
||||
"showPreview": "Показать предпросмотр",
|
||||
"noiseSettings": "Шум",
|
||||
"seamlessXAxis": "Ось X",
|
||||
"seamlessYAxis": "Ось Y",
|
||||
"scheduler": "Планировщик",
|
||||
"boundingBoxWidth": "Ширина ограничивающей рамки",
|
||||
"boundingBoxHeight": "Высота ограничивающей рамки",
|
||||
"positivePromptPlaceholder": "Запрос",
|
||||
"negativePromptPlaceholder": "Исключающий запрос",
|
||||
"controlNetControlMode": "Режим управления",
|
||||
"clipSkip": "CLIP Пропуск",
|
||||
"aspectRatio": "Соотношение",
|
||||
"maskAdjustmentsHeader": "Настройка маски",
|
||||
"maskBlur": "Размытие",
|
||||
"maskBlurMethod": "Метод размытия",
|
||||
"seamLowThreshold": "Низкий",
|
||||
"seamHighThreshold": "Высокий",
|
||||
"coherenceSteps": "Шагов",
|
||||
"coherencePassHeader": "Порог Coherence",
|
||||
"coherenceStrength": "Сила",
|
||||
"compositingSettingsHeader": "Настройки компоновки"
|
||||
"negativePrompts": "Исключающий запрос",
|
||||
"showPreview": "Показать предпросмотр"
|
||||
},
|
||||
"settings": {
|
||||
"models": "Модели",
|
||||
@@ -543,38 +494,24 @@
|
||||
"saveSteps": "Сохранять каждые n щагов",
|
||||
"confirmOnDelete": "Подтверждать удаление",
|
||||
"displayHelpIcons": "Показывать значки подсказок",
|
||||
"useCanvasBeta": "Показывать инструменты слева (Beta UI)",
|
||||
"enableImageDebugging": "Включить отладку",
|
||||
"resetWebUI": "Сброс настроек Web UI",
|
||||
"resetWebUIDesc1": "Сброс настроек веб-интерфейса удаляет только локальный кэш браузера с вашими изображениями и настройками. Он не удаляет изображения с диска.",
|
||||
"resetWebUIDesc2": "Если изображения не отображаются в галерее или не работает что-то еще, пожалуйста, попробуйте сбросить настройки, прежде чем сообщать о проблеме на GitHub.",
|
||||
"resetComplete": "Настройки веб-интерфейса были сброшены.",
|
||||
"useSlidersForAll": "Использовать ползунки для всех параметров",
|
||||
"consoleLogLevel": "Уровень логирования",
|
||||
"shouldLogToConsole": "Логи в консоль",
|
||||
"developer": "Разработчик",
|
||||
"general": "Основное",
|
||||
"showProgressInViewer": "Показывать процесс генерации в Просмотрщике",
|
||||
"antialiasProgressImages": "Сглаживать предпоказ процесса генерации",
|
||||
"generation": "Поколение",
|
||||
"ui": "Пользовательский интерфейс",
|
||||
"favoriteSchedulers": "Избранные планировщики",
|
||||
"favoriteSchedulersPlaceholder": "Нет избранных планировщиков",
|
||||
"enableNodesEditor": "Включить редактор узлов",
|
||||
"experimental": "Экспериментальные",
|
||||
"beta": "Бета",
|
||||
"alternateCanvasLayout": "Альтернативный слой холста",
|
||||
"showAdvancedOptions": "Показать доп. параметры",
|
||||
"autoChangeDimensions": "Обновить Ш/В на стандартные для модели при изменении"
|
||||
"resetComplete": "Интерфейс сброшен. Обновите эту страницу.",
|
||||
"useSlidersForAll": "Использовать ползунки для всех параметров"
|
||||
},
|
||||
"toast": {
|
||||
"tempFoldersEmptied": "Временная папка очищена",
|
||||
"uploadFailed": "Загрузка не удалась",
|
||||
"uploadFailedMultipleImagesDesc": "Можно вставить только одно изображение (вы попробовали вставить несколько)",
|
||||
"uploadFailedUnableToLoadDesc": "Невозможно загрузить файл",
|
||||
"downloadImageStarted": "Скачивание изображения началось",
|
||||
"imageCopied": "Изображение скопировано",
|
||||
"imageLinkCopied": "Ссылка на изображение скопирована",
|
||||
"imageNotLoaded": "Изображение не загружено",
|
||||
"imageNotLoadedDesc": "Не удалось найти изображение",
|
||||
"imageNotLoadedDesc": "Не найдены изображения для отправки в img2img",
|
||||
"imageSavedToGallery": "Изображение сохранено в галерею",
|
||||
"canvasMerged": "Холст объединен",
|
||||
"sentToImageToImage": "Отправить в img2img",
|
||||
@@ -599,21 +536,7 @@
|
||||
"serverError": "Ошибка сервера",
|
||||
"disconnected": "Отключено от сервера",
|
||||
"connected": "Подключено к серверу",
|
||||
"canceled": "Обработка отменена",
|
||||
"problemCopyingImageLink": "Не удалось скопировать ссылку на изображение",
|
||||
"uploadFailedInvalidUploadDesc": "Должно быть одно изображение в формате PNG или JPEG",
|
||||
"parameterNotSet": "Параметр не задан",
|
||||
"parameterSet": "Параметр задан",
|
||||
"nodesLoaded": "Узлы загружены",
|
||||
"problemCopyingImage": "Не удается скопировать изображение",
|
||||
"nodesLoadedFailed": "Не удалось загрузить Узлы",
|
||||
"nodesCleared": "Узлы очищены",
|
||||
"nodesBrokenConnections": "Не удается загрузить. Некоторые соединения повреждены.",
|
||||
"nodesUnrecognizedTypes": "Не удается загрузить. Граф имеет нераспознанные типы",
|
||||
"nodesNotValidJSON": "Недопустимый JSON",
|
||||
"nodesCorruptedGraph": "Не удается загрузить. Граф, похоже, поврежден.",
|
||||
"nodesSaved": "Узлы сохранены",
|
||||
"nodesNotValidGraph": "Недопустимый граф узлов InvokeAI"
|
||||
"canceled": "Обработка отменена"
|
||||
},
|
||||
"tooltip": {
|
||||
"feature": {
|
||||
@@ -687,8 +610,7 @@
|
||||
"betaClear": "Очистить",
|
||||
"betaDarkenOutside": "Затемнить снаружи",
|
||||
"betaLimitToBox": "Ограничить выделением",
|
||||
"betaPreserveMasked": "Сохранять маскируемую область",
|
||||
"antialiasing": "Не удалось скопировать ссылку на изображение"
|
||||
"betaPreserveMasked": "Сохранять маскируемую область"
|
||||
},
|
||||
"accessibility": {
|
||||
"modelSelect": "Выбор модели",
|
||||
@@ -703,7 +625,8 @@
|
||||
"flipHorizontally": "Отразить горизонтально",
|
||||
"toggleAutoscroll": "Включить автопрокрутку",
|
||||
"toggleLogViewer": "Показать или скрыть просмотрщик логов",
|
||||
"showOptionsPanel": "Показать боковую панель",
|
||||
"showOptionsPanel": "Показать опции",
|
||||
"showGallery": "Показать галерею",
|
||||
"invokeProgressBar": "Индикатор выполнения",
|
||||
"reset": "Сброс",
|
||||
"modifyConfig": "Изменить конфиг",
|
||||
@@ -711,69 +634,5 @@
|
||||
"copyMetadataJson": "Скопировать метаданные JSON",
|
||||
"exitViewer": "Закрыть просмотрщик",
|
||||
"menu": "Меню"
|
||||
},
|
||||
"ui": {
|
||||
"showProgressImages": "Показывать промежуточный итог",
|
||||
"hideProgressImages": "Не показывать промежуточный итог",
|
||||
"swapSizes": "Поменять местами размеры",
|
||||
"lockRatio": "Зафиксировать пропорции"
|
||||
},
|
||||
"nodes": {
|
||||
"zoomInNodes": "Увеличьте масштаб",
|
||||
"zoomOutNodes": "Уменьшите масштаб",
|
||||
"fitViewportNodes": "Уместить вид",
|
||||
"hideGraphNodes": "Скрыть оверлей графа",
|
||||
"showGraphNodes": "Показать оверлей графа",
|
||||
"showLegendNodes": "Показать тип поля",
|
||||
"hideMinimapnodes": "Скрыть миникарту",
|
||||
"hideLegendNodes": "Скрыть тип поля",
|
||||
"showMinimapnodes": "Показать миникарту",
|
||||
"loadWorkflow": "Загрузить рабочий процесс",
|
||||
"resetWorkflowDesc2": "Сброс рабочего процесса очистит все узлы, ребра и детали рабочего процесса.",
|
||||
"resetWorkflow": "Сбросить рабочий процесс",
|
||||
"resetWorkflowDesc": "Вы уверены, что хотите сбросить этот рабочий процесс?",
|
||||
"reloadNodeTemplates": "Перезагрузить шаблоны узлов",
|
||||
"downloadWorkflow": "Скачать JSON рабочего процесса"
|
||||
},
|
||||
"controlnet": {
|
||||
"amult": "a_mult",
|
||||
"contentShuffleDescription": "Перетасовывает содержимое изображения",
|
||||
"bgth": "bg_th",
|
||||
"contentShuffle": "Перетасовка содержимого",
|
||||
"beginEndStepPercent": "Процент начала/конца шага",
|
||||
"duplicate": "Дублировать",
|
||||
"balanced": "Сбалансированный",
|
||||
"f": "F",
|
||||
"depthMidasDescription": "Генерация карты глубины с использованием Midas",
|
||||
"control": "Контроль",
|
||||
"coarse": "Грубость обработки",
|
||||
"crop": "Обрезка",
|
||||
"depthMidas": "Глубина (Midas)",
|
||||
"enableControlnet": "Включить ControlNet",
|
||||
"detectResolution": "Определить разрешение",
|
||||
"controlMode": "Режим контроля",
|
||||
"cannyDescription": "Детектор границ Canny",
|
||||
"depthZoe": "Глубина (Zoe)",
|
||||
"autoConfigure": "Автонастройка процессора",
|
||||
"delete": "Удалить",
|
||||
"canny": "Canny",
|
||||
"depthZoeDescription": "Генерация карты глубины с использованием Zoe"
|
||||
},
|
||||
"boards": {
|
||||
"autoAddBoard": "Авто добавление Доски",
|
||||
"topMessage": "Эта доска содержит изображения, используемые в следующих функциях:",
|
||||
"move": "Перемещение",
|
||||
"menuItemAutoAdd": "Авто добавление на эту доску",
|
||||
"myBoard": "Моя Доска",
|
||||
"searchBoard": "Поиск Доски...",
|
||||
"noMatching": "Нет подходящих Досок",
|
||||
"selectBoard": "Выбрать Доску",
|
||||
"cancel": "Отменить",
|
||||
"addBoard": "Добавить Доску",
|
||||
"bottomMessage": "Удаление этой доски и ее изображений приведет к сбросу всех функций, использующихся их в данный момент.",
|
||||
"uncategorized": "Без категории",
|
||||
"changeBoard": "Изменить Доску",
|
||||
"loading": "Загрузка...",
|
||||
"clearSearch": "Очистить поиск"
|
||||
}
|
||||
}
|
||||
|
||||
8
invokeai/frontend/web/dist/locales/sv.json
vendored
8
invokeai/frontend/web/dist/locales/sv.json
vendored
@@ -15,6 +15,7 @@
|
||||
"reset": "Starta om",
|
||||
"previousImage": "Föregående bild",
|
||||
"useThisParameter": "Använd denna parametern",
|
||||
"showGallery": "Visa galleri",
|
||||
"rotateCounterClockwise": "Rotera moturs",
|
||||
"rotateClockwise": "Rotera medurs",
|
||||
"modifyConfig": "Ändra konfiguration",
|
||||
@@ -26,6 +27,10 @@
|
||||
"githubLabel": "Github",
|
||||
"discordLabel": "Discord",
|
||||
"settingsLabel": "Inställningar",
|
||||
"darkTheme": "Mörk",
|
||||
"lightTheme": "Ljus",
|
||||
"greenTheme": "Grön",
|
||||
"oceanTheme": "Hav",
|
||||
"langEnglish": "Engelska",
|
||||
"langDutch": "Nederländska",
|
||||
"langFrench": "Franska",
|
||||
@@ -58,10 +63,12 @@
|
||||
"statusGenerationComplete": "Generering klar",
|
||||
"statusModelConverted": "Modell konverterad",
|
||||
"statusMergingModels": "Sammanfogar modeller",
|
||||
"pinOptionsPanel": "Nåla fast inställningspanelen",
|
||||
"loading": "Laddar",
|
||||
"loadingInvokeAI": "Laddar Invoke AI",
|
||||
"statusRestoringFaces": "Återskapar ansikten",
|
||||
"languagePickerLabel": "Språkväljare",
|
||||
"themeLabel": "Tema",
|
||||
"txt2img": "Text till bild",
|
||||
"nodes": "Noder",
|
||||
"img2img": "Bild till bild",
|
||||
@@ -101,6 +108,7 @@
|
||||
"galleryImageResetSize": "Återställ storlek",
|
||||
"gallerySettings": "Galleriinställningar",
|
||||
"maintainAspectRatio": "Behåll bildförhållande",
|
||||
"pinGallery": "Nåla fast galleri",
|
||||
"noImagesInGallery": "Inga bilder i galleriet",
|
||||
"autoSwitchNewImages": "Ändra automatiskt till nya bilder",
|
||||
"singleColumnLayout": "Enkolumnslayout"
|
||||
|
||||
8
invokeai/frontend/web/dist/locales/tr.json
vendored
8
invokeai/frontend/web/dist/locales/tr.json
vendored
@@ -19,15 +19,21 @@
|
||||
"reset": "Sıfırla",
|
||||
"uploadImage": "Resim Yükle",
|
||||
"previousImage": "Önceki Resim",
|
||||
"menu": "Menü"
|
||||
"menu": "Menü",
|
||||
"showGallery": "Galeriyi Göster"
|
||||
},
|
||||
"common": {
|
||||
"hotkeysLabel": "Kısayol Tuşları",
|
||||
"themeLabel": "Tema",
|
||||
"languagePickerLabel": "Dil Seçimi",
|
||||
"reportBugLabel": "Hata Bildir",
|
||||
"githubLabel": "Github",
|
||||
"discordLabel": "Discord",
|
||||
"settingsLabel": "Ayarlar",
|
||||
"darkTheme": "Karanlık Tema",
|
||||
"lightTheme": "Aydınlık Tema",
|
||||
"greenTheme": "Yeşil Tema",
|
||||
"oceanTheme": "Okyanus Tema",
|
||||
"langArabic": "Arapça",
|
||||
"langEnglish": "İngilizce",
|
||||
"langDutch": "Hollandaca",
|
||||
|
||||
21
invokeai/frontend/web/dist/locales/uk.json
vendored
21
invokeai/frontend/web/dist/locales/uk.json
vendored
@@ -1,9 +1,13 @@
|
||||
{
|
||||
"common": {
|
||||
"hotkeysLabel": "Гарячi клавіші",
|
||||
"themeLabel": "Тема",
|
||||
"languagePickerLabel": "Мова",
|
||||
"reportBugLabel": "Повідомити про помилку",
|
||||
"settingsLabel": "Налаштування",
|
||||
"darkTheme": "Темна",
|
||||
"lightTheme": "Світла",
|
||||
"greenTheme": "Зелена",
|
||||
"img2img": "Зображення із зображення (img2img)",
|
||||
"unifiedCanvas": "Універсальне полотно",
|
||||
"nodes": "Вузли",
|
||||
@@ -51,6 +55,8 @@
|
||||
"langHebrew": "Іврит",
|
||||
"langKorean": "Корейська",
|
||||
"langPortuguese": "Португальська",
|
||||
"pinOptionsPanel": "Закріпити панель налаштувань",
|
||||
"oceanTheme": "Океан",
|
||||
"langArabic": "Арабська",
|
||||
"langSimplifiedChinese": "Китайська (спрощена)",
|
||||
"langSpanish": "Іспанська",
|
||||
@@ -81,6 +87,7 @@
|
||||
"maintainAspectRatio": "Зберігати пропорції",
|
||||
"autoSwitchNewImages": "Автоматично вибирати нові",
|
||||
"singleColumnLayout": "Одна колонка",
|
||||
"pinGallery": "Закріпити галерею",
|
||||
"allImagesLoaded": "Всі зображення завантажені",
|
||||
"loadMore": "Завантажити більше",
|
||||
"noImagesInGallery": "Зображень немає"
|
||||
@@ -410,6 +417,7 @@
|
||||
"cfgScale": "Рівень CFG",
|
||||
"width": "Ширина",
|
||||
"height": "Висота",
|
||||
"sampler": "Семплер",
|
||||
"seed": "Сід",
|
||||
"randomizeSeed": "Випадковий сид",
|
||||
"shuffle": "Оновити",
|
||||
@@ -431,6 +439,10 @@
|
||||
"hiresOptim": "Оптимізація High Res",
|
||||
"imageFit": "Вмістити зображення",
|
||||
"codeformerFidelity": "Точність",
|
||||
"seamSize": "Размір шву",
|
||||
"seamBlur": "Розмиття шву",
|
||||
"seamStrength": "Сила шву",
|
||||
"seamSteps": "Кроки шву",
|
||||
"scaleBeforeProcessing": "Масштабувати",
|
||||
"scaledWidth": "Масштаб Ш",
|
||||
"scaledHeight": "Масштаб В",
|
||||
@@ -441,6 +453,8 @@
|
||||
"infillScalingHeader": "Заповнення і масштабування",
|
||||
"img2imgStrength": "Сила обробки img2img",
|
||||
"toggleLoopback": "Зациклити обробку",
|
||||
"invoke": "Викликати",
|
||||
"promptPlaceholder": "Введіть запит тут (англійською). [видалені токени], (більш вагомі)++, (менш вагомі)--, swap и blend також доступні (дивіться Github)",
|
||||
"sendTo": "Надіслати",
|
||||
"sendToImg2Img": "Надіслати у img2img",
|
||||
"sendToUnifiedCanvas": "Надіслати на полотно",
|
||||
@@ -453,6 +467,7 @@
|
||||
"useAll": "Використати все",
|
||||
"useInitImg": "Використати як початкове",
|
||||
"info": "Метадані",
|
||||
"deleteImage": "Видалити зображення",
|
||||
"initialImage": "Початкове зображення",
|
||||
"showOptionsPanel": "Показати панель налаштувань",
|
||||
"general": "Основне",
|
||||
@@ -470,7 +485,8 @@
|
||||
"denoisingStrength": "Сила шумоподавлення",
|
||||
"copyImage": "Копіювати зображення",
|
||||
"symmetry": "Симетрія",
|
||||
"hSymmetryStep": "Крок гор. симетрії"
|
||||
"hSymmetryStep": "Крок гор. симетрії",
|
||||
"negativePrompts": "Виключний запит"
|
||||
},
|
||||
"settings": {
|
||||
"models": "Моделі",
|
||||
@@ -478,6 +494,7 @@
|
||||
"saveSteps": "Зберігати кожні n кроків",
|
||||
"confirmOnDelete": "Підтверджувати видалення",
|
||||
"displayHelpIcons": "Показувати значки підказок",
|
||||
"useCanvasBeta": "Показувати інструменты зліва (Beta UI)",
|
||||
"enableImageDebugging": "Увімкнути налагодження",
|
||||
"resetWebUI": "Повернути початкові",
|
||||
"resetWebUIDesc1": "Скидання настройок веб-інтерфейсу видаляє лише локальний кеш браузера з вашими зображеннями та налаштуваннями. Це не призводить до видалення зображень з диску.",
|
||||
@@ -488,6 +505,7 @@
|
||||
"toast": {
|
||||
"tempFoldersEmptied": "Тимчасова папка очищена",
|
||||
"uploadFailed": "Не вдалося завантажити",
|
||||
"uploadFailedMultipleImagesDesc": "Можна вставити лише одне зображення (ви спробували вставити декілька)",
|
||||
"uploadFailedUnableToLoadDesc": "Неможливо завантажити файл",
|
||||
"downloadImageStarted": "Завантаження зображення почалося",
|
||||
"imageCopied": "Зображення скопійоване",
|
||||
@@ -608,6 +626,7 @@
|
||||
"rotateClockwise": "Обертати за годинниковою стрілкою",
|
||||
"toggleAutoscroll": "Увімкнути автопрокручування",
|
||||
"toggleLogViewer": "Показати або приховати переглядач журналів",
|
||||
"showGallery": "Показати галерею",
|
||||
"previousImage": "Попереднє зображення",
|
||||
"copyMetadataJson": "Скопіювати метадані JSON",
|
||||
"flipVertically": "Перевернути по вертикалі",
|
||||
|
||||
1237
invokeai/frontend/web/dist/locales/zh_CN.json
vendored
1237
invokeai/frontend/web/dist/locales/zh_CN.json
vendored
File diff suppressed because it is too large
Load Diff
23
invokeai/frontend/web/dist/locales/zh_Hant.json
vendored
23
invokeai/frontend/web/dist/locales/zh_Hant.json
vendored
@@ -13,6 +13,9 @@
|
||||
"settingsLabel": "設定",
|
||||
"upload": "上傳",
|
||||
"langArabic": "阿拉伯語",
|
||||
"greenTheme": "綠色",
|
||||
"lightTheme": "淺色",
|
||||
"darkTheme": "深色",
|
||||
"discordLabel": "Discord",
|
||||
"nodesDesc": "使用Node生成圖像的系統正在開發中。敬請期待有關於這項功能的更新。",
|
||||
"reportBugLabel": "回報錯誤",
|
||||
@@ -30,24 +33,6 @@
|
||||
"langBrPortuguese": "巴西葡萄牙語",
|
||||
"langRussian": "俄語",
|
||||
"langSpanish": "西班牙語",
|
||||
"unifiedCanvas": "統一畫布",
|
||||
"cancel": "取消",
|
||||
"langHebrew": "希伯來語",
|
||||
"txt2img": "文字轉圖片"
|
||||
},
|
||||
"accessibility": {
|
||||
"modelSelect": "選擇模型",
|
||||
"invokeProgressBar": "Invoke 進度條",
|
||||
"uploadImage": "上傳圖片",
|
||||
"reset": "重設",
|
||||
"nextImage": "下一張圖片",
|
||||
"previousImage": "上一張圖片",
|
||||
"flipHorizontally": "水平翻轉",
|
||||
"useThisParameter": "使用此參數",
|
||||
"zoomIn": "放大",
|
||||
"zoomOut": "縮小",
|
||||
"flipVertically": "垂直翻轉",
|
||||
"modifyConfig": "修改配置",
|
||||
"menu": "選單"
|
||||
"unifiedCanvas": "統一畫布"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,42 +54,42 @@
|
||||
]
|
||||
},
|
||||
"dependencies": {
|
||||
"@chakra-ui/anatomy": "^2.2.1",
|
||||
"@chakra-ui/icons": "^2.1.1",
|
||||
"@chakra-ui/react": "^2.8.1",
|
||||
"@chakra-ui/anatomy": "^2.2.0",
|
||||
"@chakra-ui/icons": "^2.1.0",
|
||||
"@chakra-ui/react": "^2.8.0",
|
||||
"@chakra-ui/styled-system": "^2.9.1",
|
||||
"@chakra-ui/theme-tools": "^2.1.1",
|
||||
"@chakra-ui/theme-tools": "^2.1.0",
|
||||
"@dagrejs/graphlib": "^2.1.13",
|
||||
"@dnd-kit/core": "^6.0.8",
|
||||
"@dnd-kit/modifiers": "^6.0.1",
|
||||
"@dnd-kit/utilities": "^3.2.1",
|
||||
"@emotion/react": "^11.11.1",
|
||||
"@emotion/styled": "^11.11.0",
|
||||
"@floating-ui/react-dom": "^2.0.2",
|
||||
"@fontsource-variable/inter": "^5.0.13",
|
||||
"@fontsource/inter": "^5.0.13",
|
||||
"@floating-ui/react-dom": "^2.0.1",
|
||||
"@fontsource-variable/inter": "^5.0.8",
|
||||
"@fontsource/inter": "^5.0.8",
|
||||
"@mantine/core": "^6.0.19",
|
||||
"@mantine/form": "^6.0.19",
|
||||
"@mantine/hooks": "^6.0.19",
|
||||
"@nanostores/react": "^0.7.1",
|
||||
"@reduxjs/toolkit": "^1.9.7",
|
||||
"@roarr/browser-log-writer": "^1.3.0",
|
||||
"@reduxjs/toolkit": "^1.9.5",
|
||||
"@roarr/browser-log-writer": "^1.1.5",
|
||||
"@stevebel/png": "^1.5.1",
|
||||
"compare-versions": "^6.1.0",
|
||||
"dateformat": "^5.0.3",
|
||||
"formik": "^2.4.5",
|
||||
"framer-motion": "^10.16.4",
|
||||
"formik": "^2.4.3",
|
||||
"framer-motion": "^10.16.1",
|
||||
"fuse.js": "^6.6.2",
|
||||
"i18next": "^23.5.1",
|
||||
"i18next": "^23.4.4",
|
||||
"i18next-browser-languagedetector": "^7.0.2",
|
||||
"i18next-http-backend": "^2.2.2",
|
||||
"konva": "^9.2.2",
|
||||
"i18next-http-backend": "^2.2.1",
|
||||
"konva": "^9.2.0",
|
||||
"lodash-es": "^4.17.21",
|
||||
"nanostores": "^0.9.2",
|
||||
"new-github-issue-url": "^1.0.0",
|
||||
"openapi-fetch": "^0.7.10",
|
||||
"overlayscrollbars": "^2.3.2",
|
||||
"overlayscrollbars-react": "^0.5.2",
|
||||
"openapi-fetch": "^0.7.4",
|
||||
"overlayscrollbars": "^2.2.0",
|
||||
"overlayscrollbars-react": "^0.5.0",
|
||||
"patch-package": "^8.0.0",
|
||||
"query-string": "^8.1.0",
|
||||
"react": "^18.2.0",
|
||||
@@ -98,25 +98,25 @@
|
||||
"react-dropzone": "^14.2.3",
|
||||
"react-error-boundary": "^4.0.11",
|
||||
"react-hotkeys-hook": "4.4.1",
|
||||
"react-i18next": "^13.3.0",
|
||||
"react-icons": "^4.11.0",
|
||||
"react-i18next": "^13.1.2",
|
||||
"react-icons": "^4.10.1",
|
||||
"react-konva": "^18.2.10",
|
||||
"react-redux": "^8.1.3",
|
||||
"react-redux": "^8.1.2",
|
||||
"react-resizable-panels": "^0.0.55",
|
||||
"react-use": "^17.4.0",
|
||||
"react-virtuoso": "^4.6.1",
|
||||
"react-zoom-pan-pinch": "^3.2.0",
|
||||
"reactflow": "^11.9.3",
|
||||
"react-virtuoso": "^4.5.0",
|
||||
"react-zoom-pan-pinch": "^3.0.8",
|
||||
"reactflow": "^11.8.3",
|
||||
"redux-dynamic-middlewares": "^2.2.0",
|
||||
"redux-remember": "^4.0.4",
|
||||
"redux-remember": "^4.0.1",
|
||||
"roarr": "^7.15.1",
|
||||
"serialize-error": "^11.0.2",
|
||||
"serialize-error": "^11.0.1",
|
||||
"socket.io-client": "^4.7.2",
|
||||
"type-fest": "^4.4.0",
|
||||
"type-fest": "^4.2.0",
|
||||
"use-debounce": "^9.0.4",
|
||||
"use-image": "^1.1.1",
|
||||
"uuid": "^9.0.1",
|
||||
"zod": "^3.22.4",
|
||||
"uuid": "^9.0.0",
|
||||
"zod": "^3.22.2",
|
||||
"zod-validation-error": "^1.5.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
@@ -129,40 +129,40 @@
|
||||
"devDependencies": {
|
||||
"@chakra-ui/cli": "^2.4.1",
|
||||
"@types/dateformat": "^5.0.0",
|
||||
"@types/lodash-es": "^4.17.9",
|
||||
"@types/node": "^20.8.6",
|
||||
"@types/react": "^18.2.28",
|
||||
"@types/react-dom": "^18.2.13",
|
||||
"@types/react-redux": "^7.1.27",
|
||||
"@types/react-transition-group": "^4.4.7",
|
||||
"@types/uuid": "^9.0.5",
|
||||
"@typescript-eslint/eslint-plugin": "^6.7.5",
|
||||
"@typescript-eslint/parser": "^6.7.5",
|
||||
"@vitejs/plugin-react-swc": "^3.4.0",
|
||||
"axios": "^1.5.1",
|
||||
"@types/lodash-es": "^4.14.194",
|
||||
"@types/node": "^20.5.1",
|
||||
"@types/react": "^18.2.20",
|
||||
"@types/react-dom": "^18.2.6",
|
||||
"@types/react-redux": "^7.1.25",
|
||||
"@types/react-transition-group": "^4.4.6",
|
||||
"@types/uuid": "^9.0.2",
|
||||
"@typescript-eslint/eslint-plugin": "^6.4.1",
|
||||
"@typescript-eslint/parser": "^6.4.1",
|
||||
"@vitejs/plugin-react-swc": "^3.3.2",
|
||||
"axios": "^1.4.0",
|
||||
"babel-plugin-transform-imports": "^2.0.0",
|
||||
"concurrently": "^8.2.1",
|
||||
"eslint": "^8.51.0",
|
||||
"concurrently": "^8.2.0",
|
||||
"eslint": "^8.47.0",
|
||||
"eslint-config-prettier": "^9.0.0",
|
||||
"eslint-plugin-prettier": "^5.0.1",
|
||||
"eslint-plugin-prettier": "^5.0.0",
|
||||
"eslint-plugin-react": "^7.33.2",
|
||||
"eslint-plugin-react-hooks": "^4.6.0",
|
||||
"form-data": "^4.0.0",
|
||||
"husky": "^8.0.3",
|
||||
"lint-staged": "^15.0.1",
|
||||
"lint-staged": "^14.0.1",
|
||||
"madge": "^6.1.0",
|
||||
"openapi-types": "^12.1.3",
|
||||
"openapi-typescript": "^6.7.0",
|
||||
"openapi-typescript": "^6.5.2",
|
||||
"postinstall-postinstall": "^2.1.0",
|
||||
"prettier": "^3.0.3",
|
||||
"prettier": "^3.0.2",
|
||||
"rollup-plugin-visualizer": "^5.9.2",
|
||||
"ts-toolbelt": "^9.6.0",
|
||||
"typescript": "^5.2.2",
|
||||
"vite": "^4.4.11",
|
||||
"vite": "^4.4.9",
|
||||
"vite-plugin-css-injected-by-js": "^3.3.0",
|
||||
"vite-plugin-dts": "^3.6.0",
|
||||
"vite-plugin-dts": "^3.5.2",
|
||||
"vite-plugin-eslint": "^1.8.1",
|
||||
"vite-tsconfig-paths": "^4.2.1",
|
||||
"vite-tsconfig-paths": "^4.2.0",
|
||||
"yarn": "^1.22.19"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
{
|
||||
"common": {
|
||||
"hotkeysLabel": "مفاتيح الأختصار",
|
||||
"themeLabel": "الموضوع",
|
||||
"languagePickerLabel": "منتقي اللغة",
|
||||
"reportBugLabel": "بلغ عن خطأ",
|
||||
"settingsLabel": "إعدادات",
|
||||
"darkTheme": "داكن",
|
||||
"lightTheme": "فاتح",
|
||||
"greenTheme": "أخضر",
|
||||
"img2img": "صورة إلى صورة",
|
||||
"unifiedCanvas": "لوحة موحدة",
|
||||
"nodes": "عقد",
|
||||
@@ -53,6 +57,7 @@
|
||||
"maintainAspectRatio": "الحفاظ على نسبة الأبعاد",
|
||||
"autoSwitchNewImages": "التبديل التلقائي إلى الصور الجديدة",
|
||||
"singleColumnLayout": "تخطيط عمود واحد",
|
||||
"pinGallery": "تثبيت المعرض",
|
||||
"allImagesLoaded": "تم تحميل جميع الصور",
|
||||
"loadMore": "تحميل المزيد",
|
||||
"noImagesInGallery": "لا توجد صور في المعرض"
|
||||
@@ -337,6 +342,7 @@
|
||||
"cfgScale": "مقياس الإعداد الذاتي للجملة",
|
||||
"width": "عرض",
|
||||
"height": "ارتفاع",
|
||||
"sampler": "مزج",
|
||||
"seed": "بذرة",
|
||||
"randomizeSeed": "تبديل بذرة",
|
||||
"shuffle": "تشغيل",
|
||||
@@ -358,6 +364,10 @@
|
||||
"hiresOptim": "تحسين الدقة العالية",
|
||||
"imageFit": "ملائمة الصورة الأولية لحجم الخرج",
|
||||
"codeformerFidelity": "الوثوقية",
|
||||
"seamSize": "حجم التشقق",
|
||||
"seamBlur": "ضباب التشقق",
|
||||
"seamStrength": "قوة التشقق",
|
||||
"seamSteps": "خطوات التشقق",
|
||||
"scaleBeforeProcessing": "تحجيم قبل المعالجة",
|
||||
"scaledWidth": "العرض المحجوب",
|
||||
"scaledHeight": "الارتفاع المحجوب",
|
||||
@@ -368,6 +378,8 @@
|
||||
"infillScalingHeader": "التعبئة والتحجيم",
|
||||
"img2imgStrength": "قوة صورة إلى صورة",
|
||||
"toggleLoopback": "تبديل الإعادة",
|
||||
"invoke": "إطلاق",
|
||||
"promptPlaceholder": "اكتب المحث هنا. [العلامات السلبية], (زيادة الوزن) ++, (نقص الوزن)--, التبديل و الخلط متاحة (انظر الوثائق)",
|
||||
"sendTo": "أرسل إلى",
|
||||
"sendToImg2Img": "أرسل إلى صورة إلى صورة",
|
||||
"sendToUnifiedCanvas": "أرسل إلى الخطوط الموحدة",
|
||||
@@ -381,6 +393,7 @@
|
||||
"useAll": "استخدام الكل",
|
||||
"useInitImg": "استخدام الصورة الأولية",
|
||||
"info": "معلومات",
|
||||
"deleteImage": "حذف الصورة",
|
||||
"initialImage": "الصورة الأولية",
|
||||
"showOptionsPanel": "إظهار لوحة الخيارات"
|
||||
},
|
||||
@@ -390,6 +403,7 @@
|
||||
"saveSteps": "حفظ الصور كل n خطوات",
|
||||
"confirmOnDelete": "تأكيد عند الحذف",
|
||||
"displayHelpIcons": "عرض أيقونات المساعدة",
|
||||
"useCanvasBeta": "استخدام مخطط الأزرار بيتا",
|
||||
"enableImageDebugging": "تمكين التصحيح عند التصوير",
|
||||
"resetWebUI": "إعادة تعيين واجهة الويب",
|
||||
"resetWebUIDesc1": "إعادة تعيين واجهة الويب يعيد فقط ذاكرة التخزين المؤقت للمتصفح لصورك وإعداداتك المذكورة. لا يحذف أي صور من القرص.",
|
||||
@@ -399,6 +413,7 @@
|
||||
"toast": {
|
||||
"tempFoldersEmptied": "تم تفريغ مجلد المؤقت",
|
||||
"uploadFailed": "فشل التحميل",
|
||||
"uploadFailedMultipleImagesDesc": "تم الصق صور متعددة، قد يتم تحميل صورة واحدة فقط في الوقت الحالي",
|
||||
"uploadFailedUnableToLoadDesc": "تعذر تحميل الملف",
|
||||
"downloadImageStarted": "بدأ تنزيل الصورة",
|
||||
"imageCopied": "تم نسخ الصورة",
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
{
|
||||
"common": {
|
||||
"themeLabel": "Thema",
|
||||
"languagePickerLabel": "Sprachauswahl",
|
||||
"reportBugLabel": "Fehler melden",
|
||||
"settingsLabel": "Einstellungen",
|
||||
"darkTheme": "Dunkel",
|
||||
"lightTheme": "Hell",
|
||||
"greenTheme": "Grün",
|
||||
"img2img": "Bild zu Bild",
|
||||
"nodes": "Knoten",
|
||||
"langGerman": "Deutsch",
|
||||
@@ -44,6 +48,7 @@
|
||||
"langEnglish": "Englisch",
|
||||
"langDutch": "Niederländisch",
|
||||
"langFrench": "Französisch",
|
||||
"oceanTheme": "Ozean",
|
||||
"langItalian": "Italienisch",
|
||||
"langPortuguese": "Portogisisch",
|
||||
"langRussian": "Russisch",
|
||||
@@ -71,6 +76,7 @@
|
||||
"maintainAspectRatio": "Seitenverhältnis beibehalten",
|
||||
"autoSwitchNewImages": "Automatisch zu neuen Bildern wechseln",
|
||||
"singleColumnLayout": "Einspaltiges Layout",
|
||||
"pinGallery": "Galerie anpinnen",
|
||||
"allImagesLoaded": "Alle Bilder geladen",
|
||||
"loadMore": "Mehr laden",
|
||||
"noImagesInGallery": "Keine Bilder in der Galerie"
|
||||
@@ -340,6 +346,7 @@
|
||||
"cfgScale": "CFG-Skala",
|
||||
"width": "Breite",
|
||||
"height": "Höhe",
|
||||
"sampler": "Sampler",
|
||||
"randomizeSeed": "Zufälliger Seed",
|
||||
"shuffle": "Mischen",
|
||||
"noiseThreshold": "Rausch-Schwellenwert",
|
||||
@@ -360,6 +367,10 @@
|
||||
"hiresOptim": "High-Res-Optimierung",
|
||||
"imageFit": "Ausgangsbild an Ausgabegröße anpassen",
|
||||
"codeformerFidelity": "Glaubwürdigkeit",
|
||||
"seamSize": "Nahtgröße",
|
||||
"seamBlur": "Nahtunschärfe",
|
||||
"seamStrength": "Stärke der Naht",
|
||||
"seamSteps": "Nahtstufen",
|
||||
"scaleBeforeProcessing": "Skalieren vor der Verarbeitung",
|
||||
"scaledWidth": "Skaliert W",
|
||||
"scaledHeight": "Skaliert H",
|
||||
@@ -370,6 +381,8 @@
|
||||
"infillScalingHeader": "Infill und Skalierung",
|
||||
"img2imgStrength": "Bild-zu-Bild-Stärke",
|
||||
"toggleLoopback": "Toggle Loopback",
|
||||
"invoke": "Invoke",
|
||||
"promptPlaceholder": "Prompt hier eingeben. [negative Token], (mehr Gewicht)++, (geringeres Gewicht)--, Tausch und Überblendung sind verfügbar (siehe Dokumente)",
|
||||
"sendTo": "Senden an",
|
||||
"sendToImg2Img": "Senden an Bild zu Bild",
|
||||
"sendToUnifiedCanvas": "Senden an Unified Canvas",
|
||||
@@ -381,6 +394,7 @@
|
||||
"useSeed": "Seed verwenden",
|
||||
"useAll": "Alle verwenden",
|
||||
"useInitImg": "Ausgangsbild verwenden",
|
||||
"deleteImage": "Bild löschen",
|
||||
"initialImage": "Ursprüngliches Bild",
|
||||
"showOptionsPanel": "Optionsleiste zeigen",
|
||||
"cancel": {
|
||||
@@ -392,6 +406,7 @@
|
||||
"saveSteps": "Speichern der Bilder alle n Schritte",
|
||||
"confirmOnDelete": "Bestätigen beim Löschen",
|
||||
"displayHelpIcons": "Hilfesymbole anzeigen",
|
||||
"useCanvasBeta": "Canvas Beta Layout verwenden",
|
||||
"enableImageDebugging": "Bild-Debugging aktivieren",
|
||||
"resetWebUI": "Web-Oberfläche zurücksetzen",
|
||||
"resetWebUIDesc1": "Das Zurücksetzen der Web-Oberfläche setzt nur den lokalen Cache des Browsers mit Ihren Bildern und gespeicherten Einstellungen zurück. Es werden keine Bilder von der Festplatte gelöscht.",
|
||||
@@ -401,6 +416,7 @@
|
||||
"toast": {
|
||||
"tempFoldersEmptied": "Temp-Ordner geleert",
|
||||
"uploadFailed": "Hochladen fehlgeschlagen",
|
||||
"uploadFailedMultipleImagesDesc": "Mehrere Bilder eingefügt, es kann nur ein Bild auf einmal hochgeladen werden",
|
||||
"uploadFailedUnableToLoadDesc": "Datei kann nicht geladen werden",
|
||||
"downloadImageStarted": "Bild wird heruntergeladen",
|
||||
"imageCopied": "Bild kopiert",
|
||||
@@ -516,6 +532,7 @@
|
||||
"modifyConfig": "Optionen einstellen",
|
||||
"toggleAutoscroll": "Auroscroll ein/ausschalten",
|
||||
"toggleLogViewer": "Log Betrachter ein/ausschalten",
|
||||
"showGallery": "Zeige Galerie",
|
||||
"showOptionsPanel": "Zeige Optionen",
|
||||
"reset": "Zurücksetzen",
|
||||
"nextImage": "Nächstes Bild",
|
||||
|
||||
@@ -38,19 +38,16 @@
|
||||
"searchBoard": "Search Boards...",
|
||||
"selectBoard": "Select a Board",
|
||||
"topMessage": "This board contains images used in the following features:",
|
||||
"uncategorized": "Uncategorized",
|
||||
"downloadBoard": "Download Board"
|
||||
"uncategorized": "Uncategorized"
|
||||
},
|
||||
"common": {
|
||||
"accept": "Accept",
|
||||
"advanced": "Advanced",
|
||||
"areYouSure": "Are you sure?",
|
||||
"auto": "Auto",
|
||||
"back": "Back",
|
||||
"batch": "Batch Manager",
|
||||
"cancel": "Cancel",
|
||||
"close": "Close",
|
||||
"on": "On",
|
||||
"communityLabel": "Community",
|
||||
"controlNet": "ControlNet",
|
||||
"controlAdapter": "Control Adapter",
|
||||
@@ -135,11 +132,10 @@
|
||||
"upload": "Upload"
|
||||
},
|
||||
"controlnet": {
|
||||
"controlAdapter_one": "Control Adapter",
|
||||
"controlAdapter_other": "Control Adapters",
|
||||
"controlnet": "$t(controlnet.controlAdapter_one) #{{number}} ($t(common.controlNet))",
|
||||
"ip_adapter": "$t(controlnet.controlAdapter_one) #{{number}} ($t(common.ipAdapter))",
|
||||
"t2i_adapter": "$t(controlnet.controlAdapter_one) #{{number}} ($t(common.t2iAdapter))",
|
||||
"controlAdapter": "Control Adapter",
|
||||
"controlnet": "$t(controlnet.controlAdapter) #{{number}} ($t(common.controlNet))",
|
||||
"ip_adapter": "$t(controlnet.controlAdapter) #{{number}} ($t(common.ipAdapter))",
|
||||
"t2i_adapter": "$t(controlnet.controlAdapter) #{{number}} ($t(common.t2iAdapter))",
|
||||
"addControlNet": "Add $t(common.controlNet)",
|
||||
"addIPAdapter": "Add $t(common.ipAdapter)",
|
||||
"addT2IAdapter": "Add $t(common.t2iAdapter)",
|
||||
@@ -278,8 +274,7 @@
|
||||
"batchValues": "Batch Values",
|
||||
"notReady": "Unable to Queue",
|
||||
"batchQueued": "Batch Queued",
|
||||
"batchQueuedDesc_one": "Added {{count}} sessions to {{direction}} of queue",
|
||||
"batchQueuedDesc_other": "Added {{count}} sessions to {{direction}} of queue",
|
||||
"batchQueuedDesc": "Added {{item_count}} sessions to {{direction}} of queue",
|
||||
"front": "front",
|
||||
"back": "back",
|
||||
"batchFailedToQueue": "Failed to Queue Batch",
|
||||
@@ -328,10 +323,7 @@
|
||||
"showUploads": "Show Uploads",
|
||||
"singleColumnLayout": "Single Column Layout",
|
||||
"unableToLoad": "Unable to load Gallery",
|
||||
"uploads": "Uploads",
|
||||
"downloadSelection": "Download Selection",
|
||||
"preparingDownload": "Preparing Download",
|
||||
"preparingDownloadFailed": "Problem Preparing Download"
|
||||
"uploads": "Uploads"
|
||||
},
|
||||
"hotkeys": {
|
||||
"acceptStagingImage": {
|
||||
@@ -559,10 +551,8 @@
|
||||
"negativePrompt": "Negative Prompt",
|
||||
"noImageDetails": "No image details found",
|
||||
"noMetaData": "No metadata found",
|
||||
"noRecallParameters": "No parameters to recall found",
|
||||
"perlin": "Perlin Noise",
|
||||
"positivePrompt": "Positive Prompt",
|
||||
"recallParameters": "Recall Parameters",
|
||||
"scheduler": "Scheduler",
|
||||
"seamless": "Seamless",
|
||||
"seed": "Seed",
|
||||
@@ -707,7 +697,6 @@
|
||||
"vae": "VAE",
|
||||
"vaeLocation": "VAE Location",
|
||||
"vaeLocationValidationMsg": "Path to where your VAE is located.",
|
||||
"vaePrecision": "VAE Precision",
|
||||
"vaeRepoID": "VAE Repo ID",
|
||||
"vaeRepoIDValidationMsg": "Online repository of your VAE",
|
||||
"variant": "Variant",
|
||||
@@ -928,7 +917,6 @@
|
||||
},
|
||||
"parameters": {
|
||||
"aspectRatio": "Aspect Ratio",
|
||||
"aspectRatioFree": "Free",
|
||||
"boundingBoxHeader": "Bounding Box",
|
||||
"boundingBoxHeight": "Bounding Box Height",
|
||||
"boundingBoxWidth": "Bounding Box Width",
|
||||
@@ -976,10 +964,10 @@
|
||||
"missingFieldTemplate": "Missing field template",
|
||||
"missingInputForField": "{{nodeLabel}} -> {{fieldLabel}} missing input",
|
||||
"missingNodeTemplate": "Missing node template",
|
||||
"noControlImageForControlAdapter": "Control Adapter #{{number}} has no control image",
|
||||
"noControlImageForControlAdapter": "Control Adapter {{number}} has no control image",
|
||||
"noInitialImageSelected": "No initial image selected",
|
||||
"noModelForControlAdapter": "Control Adapter #{{number}} has no model selected.",
|
||||
"incompatibleBaseModelForControlAdapter": "Control Adapter #{{number}} model is invalid with main model.",
|
||||
"noModelForControlAdapter": "Control Adapter {{number}} has no model selected.",
|
||||
"incompatibleBaseModelForControlAdapter": "Control Adapter {{number}} model is invalid with main model.",
|
||||
"noModelSelected": "No model selected",
|
||||
"noPrompts": "No prompts generated",
|
||||
"noNodesInGraph": "No nodes in graph",
|
||||
@@ -1114,23 +1102,12 @@
|
||||
"showAdvancedOptions": "Show Advanced Options",
|
||||
"showProgressInViewer": "Show Progress Images in Viewer",
|
||||
"ui": "User Interface",
|
||||
"useSlidersForAll": "Use Sliders For All Options",
|
||||
"clearIntermediatesDisabled": "Queue must be empty to clear intermediates",
|
||||
"clearIntermediatesDesc1": "Clearing intermediates will reset your Canvas and ControlNet state.",
|
||||
"clearIntermediatesDesc2": "Intermediate images are byproducts of generation, different from the result images in the gallery. Clearing intermediates will free disk space.",
|
||||
"clearIntermediatesDesc3": "Your gallery images will not be deleted.",
|
||||
"clearIntermediates": "Clear Intermediates",
|
||||
"clearIntermediatesWithCount_one": "Clear {{count}} Intermediate",
|
||||
"clearIntermediatesWithCount_other": "Clear {{count}} Intermediates",
|
||||
"clearIntermediatesWithCount_zero": "No Intermediates to Clear",
|
||||
"intermediatesCleared_one": "Cleared {{count}} Intermediate",
|
||||
"intermediatesCleared_other": "Cleared {{count}} Intermediates",
|
||||
"intermediatesClearedFailed": "Problem Clearing Intermediates"
|
||||
"useSlidersForAll": "Use Sliders For All Options"
|
||||
},
|
||||
"toast": {
|
||||
"addedToBoard": "Added to board",
|
||||
"baseModelChangedCleared_one": "Base model changed, cleared or disabled {{count}} incompatible submodel",
|
||||
"baseModelChangedCleared_other": "Base model changed, cleared or disabled {{count}} incompatible submodels",
|
||||
"baseModelChangedCleared_one": "Base model changed, cleared or disabled {{number}} incompatible submodel",
|
||||
"baseModelChangedCleared_many": "$t(toast.baseModelChangedCleared_one)s",
|
||||
"canceled": "Processing Canceled",
|
||||
"canvasCopiedClipboard": "Canvas Copied to Clipboard",
|
||||
"canvasDownloaded": "Canvas Downloaded",
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
{
|
||||
"common": {
|
||||
"hotkeysLabel": "Atajos de teclado",
|
||||
"themeLabel": "Tema",
|
||||
"languagePickerLabel": "Selector de idioma",
|
||||
"reportBugLabel": "Reportar errores",
|
||||
"settingsLabel": "Ajustes",
|
||||
"darkTheme": "Oscuro",
|
||||
"lightTheme": "Claro",
|
||||
"greenTheme": "Verde",
|
||||
"img2img": "Imagen a Imagen",
|
||||
"unifiedCanvas": "Lienzo Unificado",
|
||||
"nodes": "Editor del flujo de trabajo",
|
||||
"nodes": "Nodos",
|
||||
"langSpanish": "Español",
|
||||
"nodesDesc": "Un sistema de generación de imágenes basado en nodos, actualmente se encuentra en desarrollo. Mantente pendiente a nuestras actualizaciones acerca de esta fabulosa funcionalidad.",
|
||||
"postProcessing": "Post-procesamiento",
|
||||
@@ -15,7 +19,7 @@
|
||||
"postProcessDesc3": "La Interfaz de Línea de Comandos de Invoke AI ofrece muchas otras características, incluyendo -Embiggen-.",
|
||||
"training": "Entrenamiento",
|
||||
"trainingDesc1": "Un flujo de trabajo dedicado para el entrenamiento de sus propios -embeddings- y puntos de control utilizando Inversión Textual y Dreambooth desde la interfaz web.",
|
||||
"trainingDesc2": "InvokeAI ya admite el entrenamiento de incrustaciones personalizadas mediante la inversión textual mediante el script principal.",
|
||||
"trainingDesc2": "InvokeAI ya soporta el entrenamiento de -embeddings- personalizados utilizando la Inversión Textual mediante el script principal.",
|
||||
"upload": "Subir imagen",
|
||||
"close": "Cerrar",
|
||||
"load": "Cargar",
|
||||
@@ -59,27 +63,18 @@
|
||||
"statusConvertingModel": "Convertir el modelo",
|
||||
"statusModelConverted": "Modelo adaptado",
|
||||
"statusMergingModels": "Fusionar modelos",
|
||||
"oceanTheme": "Océano",
|
||||
"langPortuguese": "Portugués",
|
||||
"langKorean": "Coreano",
|
||||
"langHebrew": "Hebreo",
|
||||
"pinOptionsPanel": "Pin del panel de opciones",
|
||||
"loading": "Cargando",
|
||||
"loadingInvokeAI": "Cargando invocar a la IA",
|
||||
"postprocessing": "Tratamiento posterior",
|
||||
"txt2img": "De texto a imagen",
|
||||
"accept": "Aceptar",
|
||||
"cancel": "Cancelar",
|
||||
"linear": "Lineal",
|
||||
"random": "Aleatorio",
|
||||
"generate": "Generar",
|
||||
"openInNewTab": "Abrir en una nueva pestaña",
|
||||
"dontAskMeAgain": "No me preguntes de nuevo",
|
||||
"areYouSure": "¿Estas seguro?",
|
||||
"imagePrompt": "Indicación de imagen",
|
||||
"batch": "Administrador de lotes",
|
||||
"darkMode": "Modo oscuro",
|
||||
"lightMode": "Modo claro",
|
||||
"modelManager": "Administrador de modelos",
|
||||
"communityLabel": "Comunidad"
|
||||
"linear": "Lineal"
|
||||
},
|
||||
"gallery": {
|
||||
"generations": "Generaciones",
|
||||
@@ -92,15 +87,10 @@
|
||||
"maintainAspectRatio": "Mantener relación de aspecto",
|
||||
"autoSwitchNewImages": "Auto seleccionar Imágenes nuevas",
|
||||
"singleColumnLayout": "Diseño de una columna",
|
||||
"pinGallery": "Fijar galería",
|
||||
"allImagesLoaded": "Todas las imágenes cargadas",
|
||||
"loadMore": "Cargar más",
|
||||
"noImagesInGallery": "No hay imágenes para mostrar",
|
||||
"deleteImage": "Eliminar Imagen",
|
||||
"deleteImageBin": "Las imágenes eliminadas se enviarán a la papelera de tu sistema operativo.",
|
||||
"deleteImagePermanent": "Las imágenes eliminadas no se pueden restaurar.",
|
||||
"images": "Imágenes",
|
||||
"assets": "Activos",
|
||||
"autoAssignBoardOnClick": "Asignación automática de tableros al hacer clic"
|
||||
"noImagesInGallery": "Sin imágenes en la galería"
|
||||
},
|
||||
"hotkeys": {
|
||||
"keyboardShortcuts": "Atajos de teclado",
|
||||
@@ -307,12 +297,7 @@
|
||||
"acceptStagingImage": {
|
||||
"title": "Aceptar imagen",
|
||||
"desc": "Aceptar la imagen actual en el área de preparación"
|
||||
},
|
||||
"addNodes": {
|
||||
"title": "Añadir Nodos",
|
||||
"desc": "Abre el menú para añadir nodos"
|
||||
},
|
||||
"nodesHotkeys": "Teclas de acceso rápido a los nodos"
|
||||
}
|
||||
},
|
||||
"modelManager": {
|
||||
"modelManager": "Gestor de Modelos",
|
||||
@@ -364,8 +349,8 @@
|
||||
"delete": "Eliminar",
|
||||
"deleteModel": "Eliminar Modelo",
|
||||
"deleteConfig": "Eliminar Configuración",
|
||||
"deleteMsg1": "¿Estás seguro de que deseas eliminar este modelo de InvokeAI?",
|
||||
"deleteMsg2": "Esto eliminará el modelo del disco si está en la carpeta raíz de InvokeAI. Si está utilizando una ubicación personalizada, el modelo NO se eliminará del disco.",
|
||||
"deleteMsg1": "¿Estás seguro de querer eliminar esta entrada de modelo de InvokeAI?",
|
||||
"deleteMsg2": "El checkpoint del modelo no se eliminará de tu disco. Puedes volver a añadirlo si lo deseas.",
|
||||
"safetensorModels": "SafeTensors",
|
||||
"addDiffuserModel": "Añadir difusores",
|
||||
"inpainting": "v1 Repintado",
|
||||
@@ -384,8 +369,8 @@
|
||||
"convertToDiffusers": "Convertir en difusores",
|
||||
"convertToDiffusersHelpText1": "Este modelo se convertirá al formato 🧨 Difusores.",
|
||||
"convertToDiffusersHelpText2": "Este proceso sustituirá su entrada del Gestor de Modelos por la versión de Difusores del mismo modelo.",
|
||||
"convertToDiffusersHelpText3": "Tu archivo del punto de control en el disco se eliminará si está en la carpeta raíz de InvokeAI. Si está en una ubicación personalizada, NO se eliminará.",
|
||||
"convertToDiffusersHelpText5": "Por favor, asegúrate de tener suficiente espacio en el disco. Los modelos generalmente varían entre 2 GB y 7 GB de tamaño.",
|
||||
"convertToDiffusersHelpText3": "Su archivo de puntos de control en el disco NO será borrado ni modificado de ninguna manera. Puede volver a añadir su punto de control al Gestor de Modelos si lo desea.",
|
||||
"convertToDiffusersHelpText5": "Asegúrese de que dispone de suficiente espacio en disco. Los modelos suelen variar entre 4 GB y 7 GB de tamaño.",
|
||||
"convertToDiffusersHelpText6": "¿Desea transformar este modelo?",
|
||||
"convertToDiffusersSaveLocation": "Guardar ubicación",
|
||||
"v1": "v1",
|
||||
@@ -424,27 +409,7 @@
|
||||
"pickModelType": "Elige el tipo de modelo",
|
||||
"v2_768": "v2 (768px)",
|
||||
"addDifference": "Añadir una diferencia",
|
||||
"scanForModels": "Buscar modelos",
|
||||
"vae": "VAE",
|
||||
"variant": "Variante",
|
||||
"baseModel": "Modelo básico",
|
||||
"modelConversionFailed": "Conversión al modelo fallida",
|
||||
"selectModel": "Seleccionar un modelo",
|
||||
"modelUpdateFailed": "Error al actualizar el modelo",
|
||||
"modelsMergeFailed": "Fusión del modelo fallida",
|
||||
"convertingModelBegin": "Convirtiendo el modelo. Por favor, espere.",
|
||||
"modelDeleted": "Modelo eliminado",
|
||||
"modelDeleteFailed": "Error al borrar el modelo",
|
||||
"noCustomLocationProvided": "‐No se proporcionó una ubicación personalizada",
|
||||
"importModels": "Importar los modelos",
|
||||
"settings": "Ajustes",
|
||||
"syncModels": "Sincronizar las plantillas",
|
||||
"syncModelsDesc": "Si tus plantillas no están sincronizados con el backend, puedes actualizarlas usando esta opción. Esto suele ser útil en los casos en los que actualizas manualmente tu archivo models.yaml o añades plantillas a la carpeta raíz de InvokeAI después de que la aplicación haya arrancado.",
|
||||
"modelsSynced": "Plantillas sincronizadas",
|
||||
"modelSyncFailed": "La sincronización de la plantilla falló",
|
||||
"loraModels": "LoRA",
|
||||
"onnxModels": "Onnx",
|
||||
"oliveModels": "Olives"
|
||||
"scanForModels": "Buscar modelos"
|
||||
},
|
||||
"parameters": {
|
||||
"images": "Imágenes",
|
||||
@@ -452,9 +417,10 @@
|
||||
"cfgScale": "Escala CFG",
|
||||
"width": "Ancho",
|
||||
"height": "Alto",
|
||||
"sampler": "Muestreo",
|
||||
"seed": "Semilla",
|
||||
"randomizeSeed": "Semilla aleatoria",
|
||||
"shuffle": "Semilla aleatoria",
|
||||
"shuffle": "Aleatorizar",
|
||||
"noiseThreshold": "Umbral de Ruido",
|
||||
"perlinNoise": "Ruido Perlin",
|
||||
"variations": "Variaciones",
|
||||
@@ -473,6 +439,10 @@
|
||||
"hiresOptim": "Optimización de Alta Resolución",
|
||||
"imageFit": "Ajuste tamaño de imagen inicial al tamaño objetivo",
|
||||
"codeformerFidelity": "Fidelidad",
|
||||
"seamSize": "Tamaño del parche",
|
||||
"seamBlur": "Desenfoque del parche",
|
||||
"seamStrength": "Fuerza del parche",
|
||||
"seamSteps": "Pasos del parche",
|
||||
"scaleBeforeProcessing": "Redimensionar antes de procesar",
|
||||
"scaledWidth": "Ancho escalado",
|
||||
"scaledHeight": "Alto escalado",
|
||||
@@ -483,6 +453,8 @@
|
||||
"infillScalingHeader": "Remplazo y escalado",
|
||||
"img2imgStrength": "Peso de Imagen a Imagen",
|
||||
"toggleLoopback": "Alternar Retroalimentación",
|
||||
"invoke": "Invocar",
|
||||
"promptPlaceholder": "Ingrese la entrada aquí. [símbolos negativos], (subir peso)++, (bajar peso)--, también disponible alternado y mezclado (ver documentación)",
|
||||
"sendTo": "Enviar a",
|
||||
"sendToImg2Img": "Enviar a Imagen a Imagen",
|
||||
"sendToUnifiedCanvas": "Enviar a Lienzo Unificado",
|
||||
@@ -495,6 +467,7 @@
|
||||
"useAll": "Usar Todo",
|
||||
"useInitImg": "Usar Imagen Inicial",
|
||||
"info": "Información",
|
||||
"deleteImage": "Eliminar Imagen",
|
||||
"initialImage": "Imagen Inicial",
|
||||
"showOptionsPanel": "Mostrar panel de opciones",
|
||||
"symmetry": "Simetría",
|
||||
@@ -508,72 +481,37 @@
|
||||
},
|
||||
"copyImage": "Copiar la imagen",
|
||||
"general": "General",
|
||||
"negativePrompts": "Preguntas negativas",
|
||||
"imageToImage": "Imagen a imagen",
|
||||
"denoisingStrength": "Intensidad de la eliminación del ruido",
|
||||
"hiresStrength": "Alta resistencia",
|
||||
"showPreview": "Mostrar la vista previa",
|
||||
"hidePreview": "Ocultar la vista previa",
|
||||
"noiseSettings": "Ruido",
|
||||
"seamlessXAxis": "Eje x",
|
||||
"seamlessYAxis": "Eje y",
|
||||
"scheduler": "Programador",
|
||||
"boundingBoxWidth": "Anchura del recuadro",
|
||||
"boundingBoxHeight": "Altura del recuadro",
|
||||
"positivePromptPlaceholder": "Prompt Positivo",
|
||||
"negativePromptPlaceholder": "Prompt Negativo",
|
||||
"controlNetControlMode": "Modo de control",
|
||||
"clipSkip": "Omitir el CLIP",
|
||||
"aspectRatio": "Relación",
|
||||
"maskAdjustmentsHeader": "Ajustes de la máscara",
|
||||
"maskBlur": "Difuminar",
|
||||
"maskBlurMethod": "Método del desenfoque",
|
||||
"seamHighThreshold": "Alto",
|
||||
"seamLowThreshold": "Bajo",
|
||||
"coherencePassHeader": "Parámetros de la coherencia",
|
||||
"compositingSettingsHeader": "Ajustes de la composición",
|
||||
"coherenceSteps": "Pasos",
|
||||
"coherenceStrength": "Fuerza",
|
||||
"patchmatchDownScaleSize": "Reducir a escala",
|
||||
"coherenceMode": "Modo"
|
||||
"hidePreview": "Ocultar la vista previa"
|
||||
},
|
||||
"settings": {
|
||||
"models": "Modelos",
|
||||
"displayInProgress": "Mostrar las imágenes del progreso",
|
||||
"displayInProgress": "Mostrar imágenes en progreso",
|
||||
"saveSteps": "Guardar imágenes cada n pasos",
|
||||
"confirmOnDelete": "Confirmar antes de eliminar",
|
||||
"displayHelpIcons": "Mostrar iconos de ayuda",
|
||||
"useCanvasBeta": "Usar versión beta del Lienzo",
|
||||
"enableImageDebugging": "Habilitar depuración de imágenes",
|
||||
"resetWebUI": "Restablecer interfaz web",
|
||||
"resetWebUIDesc1": "Al restablecer la interfaz web, solo se restablece la caché local del navegador de sus imágenes y la configuración guardada. No se elimina ninguna imagen de su disco duro.",
|
||||
"resetWebUIDesc2": "Si las imágenes no se muestran en la galería o algo más no funciona, intente restablecer antes de reportar un incidente en GitHub.",
|
||||
"resetComplete": "Se ha restablecido la interfaz web.",
|
||||
"useSlidersForAll": "Utilice controles deslizantes para todas las opciones",
|
||||
"general": "General",
|
||||
"consoleLogLevel": "Nivel del registro",
|
||||
"shouldLogToConsole": "Registro de la consola",
|
||||
"developer": "Desarrollador",
|
||||
"antialiasProgressImages": "Imágenes del progreso de Antialias",
|
||||
"showProgressInViewer": "Mostrar las imágenes del progreso en el visor",
|
||||
"ui": "Interfaz del usuario",
|
||||
"generation": "Generación",
|
||||
"favoriteSchedulers": "Programadores favoritos",
|
||||
"favoriteSchedulersPlaceholder": "No hay programadores favoritos",
|
||||
"showAdvancedOptions": "Mostrar las opciones avanzadas",
|
||||
"alternateCanvasLayout": "Diseño alternativo del lienzo",
|
||||
"beta": "Beta",
|
||||
"enableNodesEditor": "Activar el editor de nodos",
|
||||
"experimental": "Experimental",
|
||||
"autoChangeDimensions": "Actualiza W/H a los valores predeterminados del modelo cuando se modifica"
|
||||
"resetComplete": "La interfaz web se ha restablecido. Actualice la página para recargarla.",
|
||||
"useSlidersForAll": "Utilice controles deslizantes para todas las opciones"
|
||||
},
|
||||
"toast": {
|
||||
"tempFoldersEmptied": "Directorio temporal vaciado",
|
||||
"uploadFailed": "Error al subir archivo",
|
||||
"uploadFailedMultipleImagesDesc": "Únicamente se puede subir una imágen a la vez",
|
||||
"uploadFailedUnableToLoadDesc": "No se pudo cargar la imágen",
|
||||
"downloadImageStarted": "Descargando imágen",
|
||||
"imageCopied": "Imágen copiada",
|
||||
"imageLinkCopied": "Enlace de imágen copiado",
|
||||
"imageNotLoaded": "No se cargó la imágen",
|
||||
"imageNotLoadedDesc": "No se pudo encontrar la imagen",
|
||||
"imageNotLoadedDesc": "No se encontró imagen para enviar al módulo Imagen a Imagen",
|
||||
"imageSavedToGallery": "Imágen guardada en la galería",
|
||||
"canvasMerged": "Lienzo consolidado",
|
||||
"sentToImageToImage": "Enviar hacia Imagen a Imagen",
|
||||
@@ -598,21 +536,7 @@
|
||||
"serverError": "Error en el servidor",
|
||||
"disconnected": "Desconectado del servidor",
|
||||
"canceled": "Procesando la cancelación",
|
||||
"connected": "Conectado al servidor",
|
||||
"problemCopyingImageLink": "No se puede copiar el enlace de la imagen",
|
||||
"uploadFailedInvalidUploadDesc": "Debe ser una sola imagen PNG o JPEG",
|
||||
"parameterSet": "Conjunto de parámetros",
|
||||
"parameterNotSet": "Parámetro no configurado",
|
||||
"nodesSaved": "Nodos guardados",
|
||||
"nodesLoadedFailed": "Error al cargar los nodos",
|
||||
"nodesLoaded": "Nodos cargados",
|
||||
"nodesCleared": "Nodos borrados",
|
||||
"problemCopyingImage": "No se puede copiar la imagen",
|
||||
"nodesNotValidJSON": "JSON no válido",
|
||||
"nodesCorruptedGraph": "No se puede cargar. El gráfico parece estar dañado.",
|
||||
"nodesUnrecognizedTypes": "No se puede cargar. El gráfico tiene tipos no reconocidos",
|
||||
"nodesNotValidGraph": "Gráfico del nodo InvokeAI no válido",
|
||||
"nodesBrokenConnections": "No se puede cargar. Algunas conexiones están rotas."
|
||||
"connected": "Conectado al servidor"
|
||||
},
|
||||
"tooltip": {
|
||||
"feature": {
|
||||
@@ -686,8 +610,7 @@
|
||||
"betaClear": "Limpiar",
|
||||
"betaDarkenOutside": "Oscurecer fuera",
|
||||
"betaLimitToBox": "Limitar a caja",
|
||||
"betaPreserveMasked": "Preservar área enmascarada",
|
||||
"antialiasing": "Suavizado"
|
||||
"betaPreserveMasked": "Preservar área enmascarada"
|
||||
},
|
||||
"accessibility": {
|
||||
"invokeProgressBar": "Activar la barra de progreso",
|
||||
@@ -708,30 +631,8 @@
|
||||
"modifyConfig": "Modificar la configuración",
|
||||
"toggleAutoscroll": "Activar el autodesplazamiento",
|
||||
"toggleLogViewer": "Alternar el visor de registros",
|
||||
"showOptionsPanel": "Mostrar el panel lateral",
|
||||
"showGallery": "Mostrar galería",
|
||||
"showOptionsPanel": "Mostrar el panel de opciones",
|
||||
"menu": "Menú"
|
||||
},
|
||||
"ui": {
|
||||
"hideProgressImages": "Ocultar el progreso de la imagen",
|
||||
"showProgressImages": "Mostrar el progreso de la imagen",
|
||||
"swapSizes": "Cambiar los tamaños",
|
||||
"lockRatio": "Proporción del bloqueo"
|
||||
},
|
||||
"nodes": {
|
||||
"showGraphNodes": "Mostrar la superposición de los gráficos",
|
||||
"zoomInNodes": "Acercar",
|
||||
"hideMinimapnodes": "Ocultar el minimapa",
|
||||
"fitViewportNodes": "Ajustar la vista",
|
||||
"zoomOutNodes": "Alejar",
|
||||
"hideGraphNodes": "Ocultar la superposición de los gráficos",
|
||||
"hideLegendNodes": "Ocultar la leyenda del tipo de campo",
|
||||
"showLegendNodes": "Mostrar la leyenda del tipo de campo",
|
||||
"showMinimapnodes": "Mostrar el minimapa",
|
||||
"reloadNodeTemplates": "Recargar las plantillas de nodos",
|
||||
"loadWorkflow": "Cargar el flujo de trabajo",
|
||||
"resetWorkflow": "Reiniciar e flujo de trabajo",
|
||||
"resetWorkflowDesc": "¿Está seguro de que deseas restablecer este flujo de trabajo?",
|
||||
"resetWorkflowDesc2": "Al reiniciar el flujo de trabajo se borrarán todos los nodos, aristas y detalles del flujo de trabajo.",
|
||||
"downloadWorkflow": "Descargar el flujo de trabajo en un archivo JSON"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
"rotateCounterClockwise": "Kierrä vastapäivään",
|
||||
"rotateClockwise": "Kierrä myötäpäivään",
|
||||
"flipVertically": "Käännä pystysuoraan",
|
||||
"showGallery": "Näytä galleria",
|
||||
"modifyConfig": "Muokkaa konfiguraatiota",
|
||||
"toggleAutoscroll": "Kytke automaattinen vieritys",
|
||||
"toggleLogViewer": "Kytke lokin katselutila",
|
||||
@@ -33,13 +34,18 @@
|
||||
"hotkeysLabel": "Pikanäppäimet",
|
||||
"reportBugLabel": "Raportoi Bugista",
|
||||
"langPolish": "Puola",
|
||||
"themeLabel": "Teema",
|
||||
"langDutch": "Hollanti",
|
||||
"settingsLabel": "Asetukset",
|
||||
"githubLabel": "Github",
|
||||
"darkTheme": "Tumma",
|
||||
"lightTheme": "Vaalea",
|
||||
"greenTheme": "Vihreä",
|
||||
"langGerman": "Saksa",
|
||||
"langPortuguese": "Portugali",
|
||||
"discordLabel": "Discord",
|
||||
"langEnglish": "Englanti",
|
||||
"oceanTheme": "Meren sininen",
|
||||
"langRussian": "Venäjä",
|
||||
"langUkranian": "Ukraina",
|
||||
"langSpanish": "Espanja",
|
||||
@@ -73,6 +79,7 @@
|
||||
"statusGeneratingInpainting": "Generoidaan sisällemaalausta",
|
||||
"statusGeneratingOutpainting": "Generoidaan ulosmaalausta",
|
||||
"statusRestoringFaces": "Korjataan kasvoja",
|
||||
"pinOptionsPanel": "Kiinnitä asetukset -paneeli",
|
||||
"loadingInvokeAI": "Ladataan Invoke AI:ta",
|
||||
"loading": "Ladataan",
|
||||
"statusGenerating": "Generoidaan",
|
||||
@@ -88,6 +95,7 @@
|
||||
"galleryImageResetSize": "Resetoi koko",
|
||||
"maintainAspectRatio": "Säilytä kuvasuhde",
|
||||
"galleryImageSize": "Kuvan koko",
|
||||
"pinGallery": "Kiinnitä galleria",
|
||||
"showGenerations": "Näytä generaatiot",
|
||||
"singleColumnLayout": "Yhden sarakkeen asettelu",
|
||||
"generations": "Generoinnit",
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
{
|
||||
"common": {
|
||||
"hotkeysLabel": "Raccourcis clavier",
|
||||
"themeLabel": "Thème",
|
||||
"languagePickerLabel": "Sélecteur de langue",
|
||||
"reportBugLabel": "Signaler un bug",
|
||||
"settingsLabel": "Paramètres",
|
||||
"darkTheme": "Sombre",
|
||||
"lightTheme": "Clair",
|
||||
"greenTheme": "Vert",
|
||||
"img2img": "Image en image",
|
||||
"unifiedCanvas": "Canvas unifié",
|
||||
"nodes": "Nœuds",
|
||||
@@ -51,6 +55,7 @@
|
||||
"statusConvertingModel": "Conversion du modèle",
|
||||
"statusModelConverted": "Modèle converti",
|
||||
"loading": "Chargement",
|
||||
"pinOptionsPanel": "Épingler la page d'options",
|
||||
"statusMergedModels": "Modèles mélangés",
|
||||
"txt2img": "Texte vers image",
|
||||
"postprocessing": "Post-Traitement"
|
||||
@@ -66,6 +71,7 @@
|
||||
"maintainAspectRatio": "Maintenir le rapport d'aspect",
|
||||
"autoSwitchNewImages": "Basculer automatiquement vers de nouvelles images",
|
||||
"singleColumnLayout": "Mise en page en colonne unique",
|
||||
"pinGallery": "Épingler la galerie",
|
||||
"allImagesLoaded": "Toutes les images chargées",
|
||||
"loadMore": "Charger plus",
|
||||
"noImagesInGallery": "Aucune image dans la galerie"
|
||||
@@ -350,6 +356,7 @@
|
||||
"cfgScale": "CFG Echelle",
|
||||
"width": "Largeur",
|
||||
"height": "Hauteur",
|
||||
"sampler": "Echantillonneur",
|
||||
"seed": "Graine",
|
||||
"randomizeSeed": "Graine Aléatoire",
|
||||
"shuffle": "Mélanger",
|
||||
@@ -371,6 +378,10 @@
|
||||
"hiresOptim": "Optimisation Haute Résolution",
|
||||
"imageFit": "Ajuster Image Initiale à la Taille de Sortie",
|
||||
"codeformerFidelity": "Fidélité",
|
||||
"seamSize": "Taille des Joints",
|
||||
"seamBlur": "Flou des Joints",
|
||||
"seamStrength": "Force des Joints",
|
||||
"seamSteps": "Etapes des Joints",
|
||||
"scaleBeforeProcessing": "Echelle Avant Traitement",
|
||||
"scaledWidth": "Larg. Échelle",
|
||||
"scaledHeight": "Haut. Échelle",
|
||||
@@ -381,6 +392,8 @@
|
||||
"infillScalingHeader": "Remplissage et Mise à l'Échelle",
|
||||
"img2imgStrength": "Force de l'Image à l'Image",
|
||||
"toggleLoopback": "Activer/Désactiver la Boucle",
|
||||
"invoke": "Invoker",
|
||||
"promptPlaceholder": "Tapez le prompt ici. [tokens négatifs], (poids positif)++, (poids négatif)--, swap et blend sont disponibles (voir les docs)",
|
||||
"sendTo": "Envoyer à",
|
||||
"sendToImg2Img": "Envoyer à Image à Image",
|
||||
"sendToUnifiedCanvas": "Envoyer au Canvas Unifié",
|
||||
@@ -394,6 +407,7 @@
|
||||
"useAll": "Tout utiliser",
|
||||
"useInitImg": "Utiliser l'image initiale",
|
||||
"info": "Info",
|
||||
"deleteImage": "Supprimer l'image",
|
||||
"initialImage": "Image initiale",
|
||||
"showOptionsPanel": "Afficher le panneau d'options"
|
||||
},
|
||||
@@ -403,6 +417,7 @@
|
||||
"saveSteps": "Enregistrer les images tous les n étapes",
|
||||
"confirmOnDelete": "Confirmer la suppression",
|
||||
"displayHelpIcons": "Afficher les icônes d'aide",
|
||||
"useCanvasBeta": "Utiliser la mise en page bêta de Canvas",
|
||||
"enableImageDebugging": "Activer le débogage d'image",
|
||||
"resetWebUI": "Réinitialiser l'interface Web",
|
||||
"resetWebUIDesc1": "Réinitialiser l'interface Web ne réinitialise que le cache local du navigateur de vos images et de vos paramètres enregistrés. Cela n'efface pas les images du disque.",
|
||||
@@ -412,6 +427,7 @@
|
||||
"toast": {
|
||||
"tempFoldersEmptied": "Dossiers temporaires vidés",
|
||||
"uploadFailed": "Téléchargement échoué",
|
||||
"uploadFailedMultipleImagesDesc": "Plusieurs images collées, peut uniquement télécharger une image à la fois",
|
||||
"uploadFailedUnableToLoadDesc": "Impossible de charger le fichier",
|
||||
"downloadImageStarted": "Téléchargement de l'image démarré",
|
||||
"imageCopied": "Image copiée",
|
||||
@@ -522,10 +538,6 @@
|
||||
"useThisParameter": "Utiliser ce paramètre",
|
||||
"zoomIn": "Zoom avant",
|
||||
"zoomOut": "Zoom arrière",
|
||||
"showOptionsPanel": "Montrer la page d'options",
|
||||
"modelSelect": "Choix du modèle",
|
||||
"invokeProgressBar": "Barre de Progression Invoke",
|
||||
"copyMetadataJson": "Copie des métadonnées JSON",
|
||||
"menu": "Menu"
|
||||
"showOptionsPanel": "Montrer la page d'options"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -107,10 +107,13 @@
|
||||
},
|
||||
"common": {
|
||||
"nodesDesc": "מערכת מבוססת צמתים עבור יצירת תמונות עדיין תחת פיתוח. השארו קשובים לעדכונים עבור הפיצ׳ר המדהים הזה.",
|
||||
"themeLabel": "ערכת נושא",
|
||||
"languagePickerLabel": "בחירת שפה",
|
||||
"githubLabel": "גיטהאב",
|
||||
"discordLabel": "דיסקורד",
|
||||
"settingsLabel": "הגדרות",
|
||||
"darkTheme": "חשוך",
|
||||
"lightTheme": "מואר",
|
||||
"langEnglish": "אנגלית",
|
||||
"langDutch": "הולנדית",
|
||||
"langArabic": "ערבית",
|
||||
@@ -152,6 +155,7 @@
|
||||
"statusMergedModels": "מודלים מוזגו",
|
||||
"hotkeysLabel": "מקשים חמים",
|
||||
"reportBugLabel": "דווח באג",
|
||||
"greenTheme": "ירוק",
|
||||
"langItalian": "איטלקית",
|
||||
"upload": "העלאה",
|
||||
"langPolish": "פולנית",
|
||||
@@ -380,6 +384,7 @@
|
||||
"maintainAspectRatio": "שמור על יחס רוחב-גובה",
|
||||
"autoSwitchNewImages": "החלף אוטומטית לתמונות חדשות",
|
||||
"singleColumnLayout": "תצוגת עמודה אחת",
|
||||
"pinGallery": "הצמד גלריה",
|
||||
"allImagesLoaded": "כל התמונות נטענו",
|
||||
"loadMore": "טען עוד",
|
||||
"noImagesInGallery": "אין תמונות בגלריה",
|
||||
@@ -394,6 +399,7 @@
|
||||
"cfgScale": "סולם CFG",
|
||||
"width": "רוחב",
|
||||
"height": "גובה",
|
||||
"sampler": "דוגם",
|
||||
"seed": "זרע",
|
||||
"imageToImage": "תמונה לתמונה",
|
||||
"randomizeSeed": "זרע אקראי",
|
||||
@@ -410,6 +416,10 @@
|
||||
"hiresOptim": "אופטימיזצית רזולוציה גבוהה",
|
||||
"hiresStrength": "חוזק רזולוציה גבוהה",
|
||||
"codeformerFidelity": "דבקות",
|
||||
"seamSize": "גודל תפר",
|
||||
"seamBlur": "טשטוש תפר",
|
||||
"seamStrength": "חוזק תפר",
|
||||
"seamSteps": "שלבי תפר",
|
||||
"scaleBeforeProcessing": "שנה קנה מידה לפני עיבוד",
|
||||
"scaledWidth": "קנה מידה לאחר שינוי W",
|
||||
"scaledHeight": "קנה מידה לאחר שינוי H",
|
||||
@@ -422,12 +432,14 @@
|
||||
"symmetry": "סימטריה",
|
||||
"vSymmetryStep": "צעד סימטריה V",
|
||||
"hSymmetryStep": "צעד סימטריה H",
|
||||
"invoke": "הפעלה",
|
||||
"cancel": {
|
||||
"schedule": "ביטול לאחר האיטרציה הנוכחית",
|
||||
"isScheduled": "מבטל",
|
||||
"immediate": "ביטול מיידי",
|
||||
"setType": "הגדר סוג ביטול"
|
||||
},
|
||||
"negativePrompts": "בקשות שליליות",
|
||||
"sendTo": "שליחה אל",
|
||||
"copyImage": "העתקת תמונה",
|
||||
"downloadImage": "הורדת תמונה",
|
||||
@@ -452,12 +464,15 @@
|
||||
"seamlessTiling": "ריצוף חלק",
|
||||
"img2imgStrength": "חוזק תמונה לתמונה",
|
||||
"initialImage": "תמונה ראשונית",
|
||||
"copyImageToLink": "העתקת תמונה לקישור"
|
||||
"copyImageToLink": "העתקת תמונה לקישור",
|
||||
"deleteImage": "מחיקת תמונה",
|
||||
"promptPlaceholder": "הקלד בקשה כאן. [אסימונים שליליים], (העלאת משקל)++ , (הורדת משקל)--, החלפה ומיזוג זמינים (ראה מסמכים)"
|
||||
},
|
||||
"settings": {
|
||||
"models": "מודלים",
|
||||
"displayInProgress": "הצגת תמונות בתהליך",
|
||||
"confirmOnDelete": "אישור בעת המחיקה",
|
||||
"useCanvasBeta": "שימוש בגרסת ביתא של תצוגת הקנבס",
|
||||
"useSlidersForAll": "שימוש במחוונים לכל האפשרויות",
|
||||
"resetWebUI": "איפוס ממשק משתמש",
|
||||
"resetWebUIDesc1": "איפוס ממשק המשתמש האינטרנטי מאפס רק את המטמון המקומי של הדפדפן של התמונות וההגדרות שנשמרו. זה לא מוחק תמונות מהדיסק.",
|
||||
@@ -469,6 +484,7 @@
|
||||
},
|
||||
"toast": {
|
||||
"uploadFailed": "העלאה נכשלה",
|
||||
"uploadFailedMultipleImagesDesc": "תמונות מרובות הודבקו, ניתן להעלות תמונה אחת בלבד בכל פעם",
|
||||
"imageCopied": "התמונה הועתקה",
|
||||
"imageLinkCopied": "קישור תמונה הועתק",
|
||||
"imageNotLoadedDesc": "לא נמצאה תמונה לשליחה למודול תמונה לתמונה",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,8 +1,12 @@
|
||||
{
|
||||
"common": {
|
||||
"themeLabel": "テーマ",
|
||||
"languagePickerLabel": "言語選択",
|
||||
"reportBugLabel": "バグ報告",
|
||||
"settingsLabel": "設定",
|
||||
"darkTheme": "ダーク",
|
||||
"lightTheme": "ライト",
|
||||
"greenTheme": "緑",
|
||||
"langJapanese": "日本語",
|
||||
"nodesDesc": "現在、画像生成のためのノードベースシステムを開発中です。機能についてのアップデートにご期待ください。",
|
||||
"postProcessing": "後処理",
|
||||
@@ -52,12 +56,14 @@
|
||||
"loadingInvokeAI": "Invoke AIをロード中",
|
||||
"statusConvertingModel": "モデルの変換",
|
||||
"statusMergedModels": "マージ済モデル",
|
||||
"pinOptionsPanel": "オプションパネルを固定",
|
||||
"githubLabel": "Github",
|
||||
"hotkeysLabel": "ホットキー",
|
||||
"langHebrew": "עברית",
|
||||
"discordLabel": "Discord",
|
||||
"langItalian": "Italiano",
|
||||
"langEnglish": "English",
|
||||
"oceanTheme": "オーシャン",
|
||||
"langArabic": "アラビア語",
|
||||
"langDutch": "Nederlands",
|
||||
"langFrench": "Français",
|
||||
@@ -77,6 +83,7 @@
|
||||
"gallerySettings": "ギャラリーの設定",
|
||||
"maintainAspectRatio": "アスペクト比を維持",
|
||||
"singleColumnLayout": "1カラムレイアウト",
|
||||
"pinGallery": "ギャラリーにピン留め",
|
||||
"allImagesLoaded": "すべての画像を読み込む",
|
||||
"loadMore": "さらに読み込む",
|
||||
"noImagesInGallery": "ギャラリーに画像がありません",
|
||||
@@ -348,6 +355,7 @@
|
||||
"useSeed": "シード値を使用",
|
||||
"useAll": "すべてを使用",
|
||||
"info": "情報",
|
||||
"deleteImage": "画像を削除",
|
||||
"showOptionsPanel": "オプションパネルを表示"
|
||||
},
|
||||
"settings": {
|
||||
@@ -356,6 +364,7 @@
|
||||
"saveSteps": "nステップごとに画像を保存",
|
||||
"confirmOnDelete": "削除時に確認",
|
||||
"displayHelpIcons": "ヘルプアイコンを表示",
|
||||
"useCanvasBeta": "キャンバスレイアウト(Beta)を使用する",
|
||||
"enableImageDebugging": "画像のデバッグを有効化",
|
||||
"resetWebUI": "WebUIをリセット",
|
||||
"resetWebUIDesc1": "WebUIのリセットは、画像と保存された設定のキャッシュをリセットするだけです。画像を削除するわけではありません。",
|
||||
@@ -364,6 +373,7 @@
|
||||
},
|
||||
"toast": {
|
||||
"uploadFailed": "アップロード失敗",
|
||||
"uploadFailedMultipleImagesDesc": "一度にアップロードできる画像は1枚のみです。",
|
||||
"uploadFailedUnableToLoadDesc": "ファイルを読み込むことができません。",
|
||||
"downloadImageStarted": "画像ダウンロード開始",
|
||||
"imageCopied": "画像をコピー",
|
||||
@@ -461,6 +471,7 @@
|
||||
"toggleAutoscroll": "自動スクロールの切替",
|
||||
"modifyConfig": "Modify Config",
|
||||
"toggleLogViewer": "Log Viewerの切替",
|
||||
"showGallery": "ギャラリーを表示",
|
||||
"showOptionsPanel": "オプションパネルを表示"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
{
|
||||
"common": {
|
||||
"themeLabel": "테마 설정",
|
||||
"languagePickerLabel": "언어 설정",
|
||||
"reportBugLabel": "버그 리포트",
|
||||
"githubLabel": "Github",
|
||||
"settingsLabel": "설정",
|
||||
"darkTheme": "다크 모드",
|
||||
"lightTheme": "라이트 모드",
|
||||
"greenTheme": "그린 모드",
|
||||
"langArabic": "العربية",
|
||||
"langEnglish": "English",
|
||||
"langDutch": "Nederlands",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,9 +1,13 @@
|
||||
{
|
||||
"common": {
|
||||
"hotkeysLabel": "Skróty klawiszowe",
|
||||
"themeLabel": "Motyw",
|
||||
"languagePickerLabel": "Wybór języka",
|
||||
"reportBugLabel": "Zgłoś błąd",
|
||||
"settingsLabel": "Ustawienia",
|
||||
"darkTheme": "Ciemny",
|
||||
"lightTheme": "Jasny",
|
||||
"greenTheme": "Zielony",
|
||||
"img2img": "Obraz na obraz",
|
||||
"unifiedCanvas": "Tryb uniwersalny",
|
||||
"nodes": "Węzły",
|
||||
@@ -39,11 +43,7 @@
|
||||
"statusUpscaling": "Powiększanie obrazu",
|
||||
"statusUpscalingESRGAN": "Powiększanie (ESRGAN)",
|
||||
"statusLoadingModel": "Wczytywanie modelu",
|
||||
"statusModelChanged": "Zmieniono model",
|
||||
"githubLabel": "GitHub",
|
||||
"discordLabel": "Discord",
|
||||
"darkMode": "Tryb ciemny",
|
||||
"lightMode": "Tryb jasny"
|
||||
"statusModelChanged": "Zmieniono model"
|
||||
},
|
||||
"gallery": {
|
||||
"generations": "Wygenerowane",
|
||||
@@ -56,6 +56,7 @@
|
||||
"maintainAspectRatio": "Zachowaj proporcje",
|
||||
"autoSwitchNewImages": "Przełączaj na nowe obrazy",
|
||||
"singleColumnLayout": "Układ jednokolumnowy",
|
||||
"pinGallery": "Przypnij galerię",
|
||||
"allImagesLoaded": "Koniec listy",
|
||||
"loadMore": "Wczytaj więcej",
|
||||
"noImagesInGallery": "Brak obrazów w galerii"
|
||||
@@ -273,6 +274,7 @@
|
||||
"cfgScale": "Skala CFG",
|
||||
"width": "Szerokość",
|
||||
"height": "Wysokość",
|
||||
"sampler": "Próbkowanie",
|
||||
"seed": "Inicjator",
|
||||
"randomizeSeed": "Losowy inicjator",
|
||||
"shuffle": "Losuj",
|
||||
@@ -294,6 +296,10 @@
|
||||
"hiresOptim": "Optymalizacja wys. rozdzielczości",
|
||||
"imageFit": "Przeskaluj oryginalny obraz",
|
||||
"codeformerFidelity": "Dokładność",
|
||||
"seamSize": "Rozmiar",
|
||||
"seamBlur": "Rozmycie",
|
||||
"seamStrength": "Siła",
|
||||
"seamSteps": "Kroki",
|
||||
"scaleBeforeProcessing": "Tryb skalowania",
|
||||
"scaledWidth": "Sk. do szer.",
|
||||
"scaledHeight": "Sk. do wys.",
|
||||
@@ -304,6 +310,8 @@
|
||||
"infillScalingHeader": "Wypełnienie i skalowanie",
|
||||
"img2imgStrength": "Wpływ sugestii na obraz",
|
||||
"toggleLoopback": "Wł/wył sprzężenie zwrotne",
|
||||
"invoke": "Wywołaj",
|
||||
"promptPlaceholder": "W tym miejscu wprowadź swoje sugestie. [negatywne sugestie], (wzmocnienie), (osłabienie)--, po więcej opcji (np. swap lub blend) zajrzyj do dokumentacji",
|
||||
"sendTo": "Wyślij do",
|
||||
"sendToImg2Img": "Użyj w trybie \"Obraz na obraz\"",
|
||||
"sendToUnifiedCanvas": "Użyj w trybie uniwersalnym",
|
||||
@@ -316,6 +324,7 @@
|
||||
"useAll": "Skopiuj wszystko",
|
||||
"useInitImg": "Użyj oryginalnego obrazu",
|
||||
"info": "Informacje",
|
||||
"deleteImage": "Usuń obraz",
|
||||
"initialImage": "Oryginalny obraz",
|
||||
"showOptionsPanel": "Pokaż panel ustawień"
|
||||
},
|
||||
@@ -325,6 +334,7 @@
|
||||
"saveSteps": "Zapisuj obrazy co X kroków",
|
||||
"confirmOnDelete": "Potwierdzaj usuwanie",
|
||||
"displayHelpIcons": "Wyświetlaj ikony pomocy",
|
||||
"useCanvasBeta": "Nowy układ trybu uniwersalnego",
|
||||
"enableImageDebugging": "Włącz debugowanie obrazu",
|
||||
"resetWebUI": "Zresetuj interfejs",
|
||||
"resetWebUIDesc1": "Resetowanie interfejsu wyczyści jedynie dane i ustawienia zapisane w pamięci przeglądarki. Nie usunie żadnych obrazów z dysku.",
|
||||
@@ -334,6 +344,7 @@
|
||||
"toast": {
|
||||
"tempFoldersEmptied": "Wyczyszczono folder tymczasowy",
|
||||
"uploadFailed": "Błąd przesyłania obrazu",
|
||||
"uploadFailedMultipleImagesDesc": "Możliwe jest przesłanie tylko jednego obrazu na raz",
|
||||
"uploadFailedUnableToLoadDesc": "Błąd wczytywania obrazu",
|
||||
"downloadImageStarted": "Rozpoczęto pobieranie",
|
||||
"imageCopied": "Skopiowano obraz",
|
||||
@@ -435,27 +446,5 @@
|
||||
"betaDarkenOutside": "Przyciemnienie",
|
||||
"betaLimitToBox": "Ogranicz do zaznaczenia",
|
||||
"betaPreserveMasked": "Zachowaj obszar"
|
||||
},
|
||||
"accessibility": {
|
||||
"zoomIn": "Przybliż",
|
||||
"exitViewer": "Wyjdź z podglądu",
|
||||
"modelSelect": "Wybór modelu",
|
||||
"invokeProgressBar": "Pasek postępu",
|
||||
"reset": "Zerowanie",
|
||||
"useThisParameter": "Użyj tego parametru",
|
||||
"copyMetadataJson": "Kopiuj metadane JSON",
|
||||
"uploadImage": "Wgrywanie obrazu",
|
||||
"previousImage": "Poprzedni obraz",
|
||||
"nextImage": "Następny obraz",
|
||||
"zoomOut": "Oddal",
|
||||
"rotateClockwise": "Obróć zgodnie ze wskazówkami zegara",
|
||||
"rotateCounterClockwise": "Obróć przeciwnie do wskazówek zegara",
|
||||
"flipHorizontally": "Odwróć horyzontalnie",
|
||||
"flipVertically": "Odwróć wertykalnie",
|
||||
"modifyConfig": "Modyfikuj ustawienia",
|
||||
"toggleAutoscroll": "Przełącz autoprzewijanie",
|
||||
"toggleLogViewer": "Przełącz podgląd logów",
|
||||
"showOptionsPanel": "Pokaż panel opcji",
|
||||
"menu": "Menu"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
{
|
||||
"common": {
|
||||
"greenTheme": "Verde",
|
||||
"langArabic": "العربية",
|
||||
"themeLabel": "Tema",
|
||||
"reportBugLabel": "Reportar Bug",
|
||||
"settingsLabel": "Configurações",
|
||||
"lightTheme": "Claro",
|
||||
"langBrPortuguese": "Português do Brasil",
|
||||
"languagePickerLabel": "Seletor de Idioma",
|
||||
"langDutch": "Nederlands",
|
||||
@@ -54,11 +57,14 @@
|
||||
"statusModelChanged": "Modelo Alterado",
|
||||
"githubLabel": "Github",
|
||||
"discordLabel": "Discord",
|
||||
"darkTheme": "Escuro",
|
||||
"training": "Treinando",
|
||||
"statusGeneratingOutpainting": "Geração de Ampliação",
|
||||
"statusGenerationComplete": "Geração Completa",
|
||||
"statusMergingModels": "Mesclando Modelos",
|
||||
"statusMergedModels": "Modelos Mesclados",
|
||||
"oceanTheme": "Oceano",
|
||||
"pinOptionsPanel": "Fixar painel de opções",
|
||||
"loading": "A carregar",
|
||||
"loadingInvokeAI": "A carregar Invoke AI",
|
||||
"langPortuguese": "Português"
|
||||
@@ -68,6 +74,7 @@
|
||||
"gallerySettings": "Configurações de Galeria",
|
||||
"maintainAspectRatio": "Mater Proporções",
|
||||
"autoSwitchNewImages": "Trocar para Novas Imagens Automaticamente",
|
||||
"pinGallery": "Fixar Galeria",
|
||||
"singleColumnLayout": "Disposição em Coluna Única",
|
||||
"allImagesLoaded": "Todas as Imagens Carregadas",
|
||||
"loadMore": "Carregar Mais",
|
||||
@@ -400,6 +407,7 @@
|
||||
"width": "Largura",
|
||||
"seed": "Seed",
|
||||
"hiresStrength": "Força da Alta Resolução",
|
||||
"negativePrompts": "Indicações negativas",
|
||||
"general": "Geral",
|
||||
"randomizeSeed": "Seed Aleatório",
|
||||
"shuffle": "Embaralhar",
|
||||
@@ -417,6 +425,10 @@
|
||||
"hiresOptim": "Otimização de Alta Res",
|
||||
"imageFit": "Caber Imagem Inicial No Tamanho de Saída",
|
||||
"codeformerFidelity": "Fidelidade",
|
||||
"seamSize": "Tamanho da Fronteira",
|
||||
"seamBlur": "Desfoque da Fronteira",
|
||||
"seamStrength": "Força da Fronteira",
|
||||
"seamSteps": "Passos da Fronteira",
|
||||
"tileSize": "Tamanho do Ladrilho",
|
||||
"boundingBoxHeader": "Caixa Delimitadora",
|
||||
"seamCorrectionHeader": "Correção de Fronteira",
|
||||
@@ -424,10 +436,12 @@
|
||||
"img2imgStrength": "Força de Imagem Para Imagem",
|
||||
"toggleLoopback": "Ativar Loopback",
|
||||
"symmetry": "Simetria",
|
||||
"promptPlaceholder": "Digite o prompt aqui. [tokens negativos], (upweight)++, (downweight)--, trocar e misturar estão disponíveis (veja docs)",
|
||||
"sendTo": "Mandar para",
|
||||
"openInViewer": "Abrir No Visualizador",
|
||||
"closeViewer": "Fechar Visualizador",
|
||||
"usePrompt": "Usar Prompt",
|
||||
"deleteImage": "Apagar Imagem",
|
||||
"initialImage": "Imagem inicial",
|
||||
"showOptionsPanel": "Mostrar Painel de Opções",
|
||||
"strength": "Força",
|
||||
@@ -435,10 +449,12 @@
|
||||
"upscale": "Redimensionar",
|
||||
"upscaleImage": "Redimensionar Imagem",
|
||||
"scaleBeforeProcessing": "Escala Antes do Processamento",
|
||||
"invoke": "Invocar",
|
||||
"images": "Imagems",
|
||||
"steps": "Passos",
|
||||
"cfgScale": "Escala CFG",
|
||||
"height": "Altura",
|
||||
"sampler": "Amostrador",
|
||||
"imageToImage": "Imagem para Imagem",
|
||||
"variationAmount": "Quntidade de Variatções",
|
||||
"scaledWidth": "L Escalada",
|
||||
@@ -465,6 +481,7 @@
|
||||
"settings": {
|
||||
"confirmOnDelete": "Confirmar Antes de Apagar",
|
||||
"displayHelpIcons": "Mostrar Ícones de Ajuda",
|
||||
"useCanvasBeta": "Usar Layout de Telas Beta",
|
||||
"enableImageDebugging": "Ativar Depuração de Imagem",
|
||||
"useSlidersForAll": "Usar deslizadores para todas as opções",
|
||||
"resetWebUIDesc1": "Reiniciar a interface apenas reinicia o cache local do broswer para imagens e configurações lembradas. Não apaga nenhuma imagem do disco.",
|
||||
@@ -477,6 +494,7 @@
|
||||
},
|
||||
"toast": {
|
||||
"uploadFailed": "Envio Falhou",
|
||||
"uploadFailedMultipleImagesDesc": "Várias imagens copiadas, só é permitido uma imagem de cada vez",
|
||||
"uploadFailedUnableToLoadDesc": "Não foj possível carregar o ficheiro",
|
||||
"downloadImageStarted": "Download de Imagem Começou",
|
||||
"imageNotLoadedDesc": "Nenhuma imagem encontrada a enviar para o módulo de imagem para imagem",
|
||||
@@ -593,6 +611,7 @@
|
||||
"flipVertically": "Espelhar verticalmente",
|
||||
"modifyConfig": "Modificar config",
|
||||
"toggleAutoscroll": "Alternar rolagem automática",
|
||||
"showGallery": "Mostrar galeria",
|
||||
"showOptionsPanel": "Mostrar painel de opções",
|
||||
"uploadImage": "Enviar imagem",
|
||||
"previousImage": "Imagem anterior",
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
{
|
||||
"common": {
|
||||
"hotkeysLabel": "Teclas de atalho",
|
||||
"themeLabel": "Tema",
|
||||
"languagePickerLabel": "Seletor de Idioma",
|
||||
"reportBugLabel": "Relatar Bug",
|
||||
"settingsLabel": "Configurações",
|
||||
"darkTheme": "Noite",
|
||||
"lightTheme": "Dia",
|
||||
"greenTheme": "Verde",
|
||||
"img2img": "Imagem Para Imagem",
|
||||
"unifiedCanvas": "Tela Unificada",
|
||||
"nodes": "Nódulos",
|
||||
@@ -59,6 +63,7 @@
|
||||
"statusMergedModels": "Modelos Mesclados",
|
||||
"langRussian": "Russo",
|
||||
"langSpanish": "Espanhol",
|
||||
"pinOptionsPanel": "Fixar painel de opções",
|
||||
"loadingInvokeAI": "Carregando Invoke AI",
|
||||
"loading": "Carregando"
|
||||
},
|
||||
@@ -73,6 +78,7 @@
|
||||
"maintainAspectRatio": "Mater Proporções",
|
||||
"autoSwitchNewImages": "Trocar para Novas Imagens Automaticamente",
|
||||
"singleColumnLayout": "Disposição em Coluna Única",
|
||||
"pinGallery": "Fixar Galeria",
|
||||
"allImagesLoaded": "Todas as Imagens Carregadas",
|
||||
"loadMore": "Carregar Mais",
|
||||
"noImagesInGallery": "Sem Imagens na Galeria"
|
||||
@@ -396,6 +402,7 @@
|
||||
"cfgScale": "Escala CFG",
|
||||
"width": "Largura",
|
||||
"height": "Altura",
|
||||
"sampler": "Amostrador",
|
||||
"seed": "Seed",
|
||||
"randomizeSeed": "Seed Aleatório",
|
||||
"shuffle": "Embaralhar",
|
||||
@@ -417,6 +424,10 @@
|
||||
"hiresOptim": "Otimização de Alta Res",
|
||||
"imageFit": "Caber Imagem Inicial No Tamanho de Saída",
|
||||
"codeformerFidelity": "Fidelidade",
|
||||
"seamSize": "Tamanho da Fronteira",
|
||||
"seamBlur": "Desfoque da Fronteira",
|
||||
"seamStrength": "Força da Fronteira",
|
||||
"seamSteps": "Passos da Fronteira",
|
||||
"scaleBeforeProcessing": "Escala Antes do Processamento",
|
||||
"scaledWidth": "L Escalada",
|
||||
"scaledHeight": "A Escalada",
|
||||
@@ -427,6 +438,8 @@
|
||||
"infillScalingHeader": "Preencimento e Escala",
|
||||
"img2imgStrength": "Força de Imagem Para Imagem",
|
||||
"toggleLoopback": "Ativar Loopback",
|
||||
"invoke": "Invoke",
|
||||
"promptPlaceholder": "Digite o prompt aqui. [tokens negativos], (upweight)++, (downweight)--, trocar e misturar estão disponíveis (veja docs)",
|
||||
"sendTo": "Mandar para",
|
||||
"sendToImg2Img": "Mandar para Imagem Para Imagem",
|
||||
"sendToUnifiedCanvas": "Mandar para Tela Unificada",
|
||||
@@ -439,12 +452,14 @@
|
||||
"useAll": "Usar Todos",
|
||||
"useInitImg": "Usar Imagem Inicial",
|
||||
"info": "Informações",
|
||||
"deleteImage": "Apagar Imagem",
|
||||
"initialImage": "Imagem inicial",
|
||||
"showOptionsPanel": "Mostrar Painel de Opções",
|
||||
"vSymmetryStep": "V Passo de Simetria",
|
||||
"hSymmetryStep": "H Passo de Simetria",
|
||||
"symmetry": "Simetria",
|
||||
"copyImage": "Copiar imagem",
|
||||
"negativePrompts": "Indicações negativas",
|
||||
"hiresStrength": "Força da Alta Resolução",
|
||||
"denoisingStrength": "A força de remoção de ruído",
|
||||
"imageToImage": "Imagem para Imagem",
|
||||
@@ -462,6 +477,7 @@
|
||||
"saveSteps": "Salvar imagens a cada n passos",
|
||||
"confirmOnDelete": "Confirmar Antes de Apagar",
|
||||
"displayHelpIcons": "Mostrar Ícones de Ajuda",
|
||||
"useCanvasBeta": "Usar Layout de Telas Beta",
|
||||
"enableImageDebugging": "Ativar Depuração de Imagem",
|
||||
"resetWebUI": "Reiniciar Interface",
|
||||
"resetWebUIDesc1": "Reiniciar a interface apenas reinicia o cache local do broswer para imagens e configurações lembradas. Não apaga nenhuma imagem do disco.",
|
||||
@@ -472,6 +488,7 @@
|
||||
"toast": {
|
||||
"tempFoldersEmptied": "Pasta de Arquivos Temporários Esvaziada",
|
||||
"uploadFailed": "Envio Falhou",
|
||||
"uploadFailedMultipleImagesDesc": "Várias imagens copiadas, só é permitido uma imagem de cada vez",
|
||||
"uploadFailedUnableToLoadDesc": "Não foj possível carregar o arquivo",
|
||||
"downloadImageStarted": "Download de Imagem Começou",
|
||||
"imageCopied": "Imagem Copiada",
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
{
|
||||
"common": {
|
||||
"hotkeysLabel": "Горячие клавиши",
|
||||
"themeLabel": "Тема",
|
||||
"languagePickerLabel": "Язык",
|
||||
"reportBugLabel": "Сообщить об ошибке",
|
||||
"settingsLabel": "Настройки",
|
||||
"darkTheme": "Темная",
|
||||
"lightTheme": "Светлая",
|
||||
"greenTheme": "Зеленая",
|
||||
"img2img": "Изображение в изображение (img2img)",
|
||||
"unifiedCanvas": "Единый холст",
|
||||
"nodes": "Редактор рабочего процесса",
|
||||
"nodes": "Ноды",
|
||||
"langRussian": "Русский",
|
||||
"nodesDesc": "Cистема генерации изображений на основе нодов (узлов) уже разрабатывается. Следите за новостями об этой замечательной функции.",
|
||||
"postProcessing": "Постобработка",
|
||||
@@ -45,12 +49,14 @@
|
||||
"statusMergingModels": "Слияние моделей",
|
||||
"statusModelConverted": "Модель сконвертирована",
|
||||
"statusMergedModels": "Модели объединены",
|
||||
"pinOptionsPanel": "Закрепить панель настроек",
|
||||
"loading": "Загрузка",
|
||||
"loadingInvokeAI": "Загрузка Invoke AI",
|
||||
"back": "Назад",
|
||||
"statusConvertingModel": "Конвертация модели",
|
||||
"cancel": "Отменить",
|
||||
"accept": "Принять",
|
||||
"oceanTheme": "Океан",
|
||||
"langUkranian": "Украинский",
|
||||
"langEnglish": "Английский",
|
||||
"postprocessing": "Постобработка",
|
||||
@@ -68,21 +74,7 @@
|
||||
"langPortuguese": "Португальский",
|
||||
"txt2img": "Текст в изображение (txt2img)",
|
||||
"langBrPortuguese": "Португальский (Бразилия)",
|
||||
"linear": "Линейная обработка",
|
||||
"dontAskMeAgain": "Больше не спрашивать",
|
||||
"areYouSure": "Вы уверены?",
|
||||
"random": "Случайное",
|
||||
"generate": "Сгенерировать",
|
||||
"openInNewTab": "Открыть в новой вкладке",
|
||||
"imagePrompt": "Запрос",
|
||||
"communityLabel": "Сообщество",
|
||||
"lightMode": "Светлая тема",
|
||||
"batch": "Пакетный менеджер",
|
||||
"modelManager": "Менеджер моделей",
|
||||
"darkMode": "Темная тема",
|
||||
"nodeEditor": "Редактор Нодов (Узлов)",
|
||||
"controlNet": "Controlnet",
|
||||
"advanced": "Расширенные"
|
||||
"linear": "Линейная обработка"
|
||||
},
|
||||
"gallery": {
|
||||
"generations": "Генерации",
|
||||
@@ -95,15 +87,10 @@
|
||||
"maintainAspectRatio": "Сохранять пропорции",
|
||||
"autoSwitchNewImages": "Автоматически выбирать новые",
|
||||
"singleColumnLayout": "Одна колонка",
|
||||
"pinGallery": "Закрепить галерею",
|
||||
"allImagesLoaded": "Все изображения загружены",
|
||||
"loadMore": "Показать больше",
|
||||
"noImagesInGallery": "Изображений нет",
|
||||
"deleteImagePermanent": "Удаленные изображения невозможно восстановить.",
|
||||
"deleteImageBin": "Удаленные изображения будут отправлены в корзину вашей операционной системы.",
|
||||
"deleteImage": "Удалить изображение",
|
||||
"images": "Изображения",
|
||||
"assets": "Ресурсы",
|
||||
"autoAssignBoardOnClick": "Авто-назначение доски по клику"
|
||||
"noImagesInGallery": "Изображений нет"
|
||||
},
|
||||
"hotkeys": {
|
||||
"keyboardShortcuts": "Горячие клавиши",
|
||||
@@ -310,12 +297,7 @@
|
||||
"acceptStagingImage": {
|
||||
"title": "Принять изображение",
|
||||
"desc": "Принять текущее изображение"
|
||||
},
|
||||
"addNodes": {
|
||||
"desc": "Открывает меню добавления узла",
|
||||
"title": "Добавление узлов"
|
||||
},
|
||||
"nodesHotkeys": "Горячие клавиши узлов"
|
||||
}
|
||||
},
|
||||
"modelManager": {
|
||||
"modelManager": "Менеджер моделей",
|
||||
@@ -368,14 +350,14 @@
|
||||
"deleteModel": "Удалить модель",
|
||||
"deleteConfig": "Удалить конфигурацию",
|
||||
"deleteMsg1": "Вы точно хотите удалить модель из InvokeAI?",
|
||||
"deleteMsg2": "Это приведет К УДАЛЕНИЮ модели С ДИСКА, если она находится в корневой папке Invoke. Если вы используете пользовательское расположение, то модель НЕ будет удалена с диска.",
|
||||
"deleteMsg2": "Это не удалит файл модели с диска. Позже вы можете добавить его снова.",
|
||||
"repoIDValidationMsg": "Онлайн-репозиторий модели",
|
||||
"convertToDiffusersHelpText5": "Пожалуйста, убедитесь, что у вас достаточно места на диске. Модели обычно занимают 2–7 Гб.",
|
||||
"convertToDiffusersHelpText5": "Пожалуйста, убедитесь, что у вас достаточно места на диске. Модели обычно занимают 4 – 7 Гб.",
|
||||
"invokeAIFolder": "Каталог InvokeAI",
|
||||
"ignoreMismatch": "Игнорировать несоответствия между выбранными моделями",
|
||||
"addCheckpointModel": "Добавить модель Checkpoint/Safetensor",
|
||||
"formMessageDiffusersModelLocationDesc": "Укажите хотя бы одно.",
|
||||
"convertToDiffusersHelpText3": "Ваш файл контрольной точки НА ДИСКЕ будет УДАЛЕН, если он находится в корневой папке InvokeAI. Если он находится в пользовательском расположении, то он НЕ будет удален.",
|
||||
"convertToDiffusersHelpText3": "Файл модели на диске НЕ будет удалён или изменён. Вы сможете заново добавить его в Model Manager при необходимости.",
|
||||
"vaeRepoID": "ID репозитория VAE",
|
||||
"mergedModelName": "Название объединенной модели",
|
||||
"checkpointModels": "Checkpoints",
|
||||
@@ -427,27 +409,7 @@
|
||||
"weightedSum": "Взвешенная сумма",
|
||||
"safetensorModels": "SafeTensors",
|
||||
"v2_768": "v2 (768px)",
|
||||
"v2_base": "v2 (512px)",
|
||||
"modelDeleted": "Модель удалена",
|
||||
"importModels": "Импорт Моделей",
|
||||
"variant": "Вариант",
|
||||
"baseModel": "Базовая модель",
|
||||
"modelsSynced": "Модели синхронизированы",
|
||||
"modelSyncFailed": "Не удалось синхронизировать модели",
|
||||
"vae": "VAE",
|
||||
"modelDeleteFailed": "Не удалось удалить модель",
|
||||
"noCustomLocationProvided": "Пользовательское местоположение не указано",
|
||||
"convertingModelBegin": "Конвертация модели. Пожалуйста, подождите.",
|
||||
"settings": "Настройки",
|
||||
"selectModel": "Выберите модель",
|
||||
"syncModels": "Синхронизация моделей",
|
||||
"syncModelsDesc": "Если ваши модели не синхронизированы с серверной частью, вы можете обновить их, используя эту опцию. Обычно это удобно в тех случаях, когда вы вручную обновляете свой файл \"models.yaml\" или добавляете модели в корневую папку InvokeAI после загрузки приложения.",
|
||||
"modelUpdateFailed": "Не удалось обновить модель",
|
||||
"modelConversionFailed": "Не удалось сконвертировать модель",
|
||||
"modelsMergeFailed": "Не удалось выполнить слияние моделей",
|
||||
"loraModels": "LoRAs",
|
||||
"onnxModels": "Onnx",
|
||||
"oliveModels": "Olives"
|
||||
"v2_base": "v2 (512px)"
|
||||
},
|
||||
"parameters": {
|
||||
"images": "Изображения",
|
||||
@@ -455,9 +417,10 @@
|
||||
"cfgScale": "Уровень CFG",
|
||||
"width": "Ширина",
|
||||
"height": "Высота",
|
||||
"sampler": "Семплер",
|
||||
"seed": "Сид",
|
||||
"randomizeSeed": "Случайный сид",
|
||||
"shuffle": "Обновить сид",
|
||||
"shuffle": "Обновить",
|
||||
"noiseThreshold": "Порог шума",
|
||||
"perlinNoise": "Шум Перлина",
|
||||
"variations": "Вариации",
|
||||
@@ -476,6 +439,10 @@
|
||||
"hiresOptim": "Оптимизация High Res",
|
||||
"imageFit": "Уместить изображение",
|
||||
"codeformerFidelity": "Точность",
|
||||
"seamSize": "Размер шва",
|
||||
"seamBlur": "Размытие шва",
|
||||
"seamStrength": "Сила шва",
|
||||
"seamSteps": "Шаги шва",
|
||||
"scaleBeforeProcessing": "Масштабировать",
|
||||
"scaledWidth": "Масштаб Ш",
|
||||
"scaledHeight": "Масштаб В",
|
||||
@@ -486,6 +453,8 @@
|
||||
"infillScalingHeader": "Заполнение и масштабирование",
|
||||
"img2imgStrength": "Сила обработки img2img",
|
||||
"toggleLoopback": "Зациклить обработку",
|
||||
"invoke": "Invoke",
|
||||
"promptPlaceholder": "Введите запрос здесь (на английском). [исключенные токены], (более значимые)++, (менее значимые)--, swap и blend тоже доступны (смотрите Github)",
|
||||
"sendTo": "Отправить",
|
||||
"sendToImg2Img": "Отправить в img2img",
|
||||
"sendToUnifiedCanvas": "Отправить на Единый холст",
|
||||
@@ -498,6 +467,7 @@
|
||||
"useAll": "Использовать все",
|
||||
"useInitImg": "Использовать как исходное",
|
||||
"info": "Метаданные",
|
||||
"deleteImage": "Удалить изображение",
|
||||
"initialImage": "Исходное изображение",
|
||||
"showOptionsPanel": "Показать панель настроек",
|
||||
"vSymmetryStep": "Шаг верт. симметрии",
|
||||
@@ -515,27 +485,8 @@
|
||||
"imageToImage": "Изображение в изображение",
|
||||
"denoisingStrength": "Сила шумоподавления",
|
||||
"copyImage": "Скопировать изображение",
|
||||
"showPreview": "Показать предпросмотр",
|
||||
"noiseSettings": "Шум",
|
||||
"seamlessXAxis": "Ось X",
|
||||
"seamlessYAxis": "Ось Y",
|
||||
"scheduler": "Планировщик",
|
||||
"boundingBoxWidth": "Ширина ограничивающей рамки",
|
||||
"boundingBoxHeight": "Высота ограничивающей рамки",
|
||||
"positivePromptPlaceholder": "Запрос",
|
||||
"negativePromptPlaceholder": "Исключающий запрос",
|
||||
"controlNetControlMode": "Режим управления",
|
||||
"clipSkip": "CLIP Пропуск",
|
||||
"aspectRatio": "Соотношение",
|
||||
"maskAdjustmentsHeader": "Настройка маски",
|
||||
"maskBlur": "Размытие",
|
||||
"maskBlurMethod": "Метод размытия",
|
||||
"seamLowThreshold": "Низкий",
|
||||
"seamHighThreshold": "Высокий",
|
||||
"coherenceSteps": "Шагов",
|
||||
"coherencePassHeader": "Порог Coherence",
|
||||
"coherenceStrength": "Сила",
|
||||
"compositingSettingsHeader": "Настройки компоновки"
|
||||
"negativePrompts": "Исключающий запрос",
|
||||
"showPreview": "Показать предпросмотр"
|
||||
},
|
||||
"settings": {
|
||||
"models": "Модели",
|
||||
@@ -543,38 +494,24 @@
|
||||
"saveSteps": "Сохранять каждые n щагов",
|
||||
"confirmOnDelete": "Подтверждать удаление",
|
||||
"displayHelpIcons": "Показывать значки подсказок",
|
||||
"useCanvasBeta": "Показывать инструменты слева (Beta UI)",
|
||||
"enableImageDebugging": "Включить отладку",
|
||||
"resetWebUI": "Сброс настроек Web UI",
|
||||
"resetWebUIDesc1": "Сброс настроек веб-интерфейса удаляет только локальный кэш браузера с вашими изображениями и настройками. Он не удаляет изображения с диска.",
|
||||
"resetWebUIDesc2": "Если изображения не отображаются в галерее или не работает что-то еще, пожалуйста, попробуйте сбросить настройки, прежде чем сообщать о проблеме на GitHub.",
|
||||
"resetComplete": "Настройки веб-интерфейса были сброшены.",
|
||||
"useSlidersForAll": "Использовать ползунки для всех параметров",
|
||||
"consoleLogLevel": "Уровень логирования",
|
||||
"shouldLogToConsole": "Логи в консоль",
|
||||
"developer": "Разработчик",
|
||||
"general": "Основное",
|
||||
"showProgressInViewer": "Показывать процесс генерации в Просмотрщике",
|
||||
"antialiasProgressImages": "Сглаживать предпоказ процесса генерации",
|
||||
"generation": "Поколение",
|
||||
"ui": "Пользовательский интерфейс",
|
||||
"favoriteSchedulers": "Избранные планировщики",
|
||||
"favoriteSchedulersPlaceholder": "Нет избранных планировщиков",
|
||||
"enableNodesEditor": "Включить редактор узлов",
|
||||
"experimental": "Экспериментальные",
|
||||
"beta": "Бета",
|
||||
"alternateCanvasLayout": "Альтернативный слой холста",
|
||||
"showAdvancedOptions": "Показать доп. параметры",
|
||||
"autoChangeDimensions": "Обновить Ш/В на стандартные для модели при изменении"
|
||||
"resetComplete": "Интерфейс сброшен. Обновите эту страницу.",
|
||||
"useSlidersForAll": "Использовать ползунки для всех параметров"
|
||||
},
|
||||
"toast": {
|
||||
"tempFoldersEmptied": "Временная папка очищена",
|
||||
"uploadFailed": "Загрузка не удалась",
|
||||
"uploadFailedMultipleImagesDesc": "Можно вставить только одно изображение (вы попробовали вставить несколько)",
|
||||
"uploadFailedUnableToLoadDesc": "Невозможно загрузить файл",
|
||||
"downloadImageStarted": "Скачивание изображения началось",
|
||||
"imageCopied": "Изображение скопировано",
|
||||
"imageLinkCopied": "Ссылка на изображение скопирована",
|
||||
"imageNotLoaded": "Изображение не загружено",
|
||||
"imageNotLoadedDesc": "Не удалось найти изображение",
|
||||
"imageNotLoadedDesc": "Не найдены изображения для отправки в img2img",
|
||||
"imageSavedToGallery": "Изображение сохранено в галерею",
|
||||
"canvasMerged": "Холст объединен",
|
||||
"sentToImageToImage": "Отправить в img2img",
|
||||
@@ -599,21 +536,7 @@
|
||||
"serverError": "Ошибка сервера",
|
||||
"disconnected": "Отключено от сервера",
|
||||
"connected": "Подключено к серверу",
|
||||
"canceled": "Обработка отменена",
|
||||
"problemCopyingImageLink": "Не удалось скопировать ссылку на изображение",
|
||||
"uploadFailedInvalidUploadDesc": "Должно быть одно изображение в формате PNG или JPEG",
|
||||
"parameterNotSet": "Параметр не задан",
|
||||
"parameterSet": "Параметр задан",
|
||||
"nodesLoaded": "Узлы загружены",
|
||||
"problemCopyingImage": "Не удается скопировать изображение",
|
||||
"nodesLoadedFailed": "Не удалось загрузить Узлы",
|
||||
"nodesCleared": "Узлы очищены",
|
||||
"nodesBrokenConnections": "Не удается загрузить. Некоторые соединения повреждены.",
|
||||
"nodesUnrecognizedTypes": "Не удается загрузить. Граф имеет нераспознанные типы",
|
||||
"nodesNotValidJSON": "Недопустимый JSON",
|
||||
"nodesCorruptedGraph": "Не удается загрузить. Граф, похоже, поврежден.",
|
||||
"nodesSaved": "Узлы сохранены",
|
||||
"nodesNotValidGraph": "Недопустимый граф узлов InvokeAI"
|
||||
"canceled": "Обработка отменена"
|
||||
},
|
||||
"tooltip": {
|
||||
"feature": {
|
||||
@@ -687,8 +610,7 @@
|
||||
"betaClear": "Очистить",
|
||||
"betaDarkenOutside": "Затемнить снаружи",
|
||||
"betaLimitToBox": "Ограничить выделением",
|
||||
"betaPreserveMasked": "Сохранять маскируемую область",
|
||||
"antialiasing": "Не удалось скопировать ссылку на изображение"
|
||||
"betaPreserveMasked": "Сохранять маскируемую область"
|
||||
},
|
||||
"accessibility": {
|
||||
"modelSelect": "Выбор модели",
|
||||
@@ -703,7 +625,8 @@
|
||||
"flipHorizontally": "Отразить горизонтально",
|
||||
"toggleAutoscroll": "Включить автопрокрутку",
|
||||
"toggleLogViewer": "Показать или скрыть просмотрщик логов",
|
||||
"showOptionsPanel": "Показать боковую панель",
|
||||
"showOptionsPanel": "Показать опции",
|
||||
"showGallery": "Показать галерею",
|
||||
"invokeProgressBar": "Индикатор выполнения",
|
||||
"reset": "Сброс",
|
||||
"modifyConfig": "Изменить конфиг",
|
||||
@@ -711,69 +634,5 @@
|
||||
"copyMetadataJson": "Скопировать метаданные JSON",
|
||||
"exitViewer": "Закрыть просмотрщик",
|
||||
"menu": "Меню"
|
||||
},
|
||||
"ui": {
|
||||
"showProgressImages": "Показывать промежуточный итог",
|
||||
"hideProgressImages": "Не показывать промежуточный итог",
|
||||
"swapSizes": "Поменять местами размеры",
|
||||
"lockRatio": "Зафиксировать пропорции"
|
||||
},
|
||||
"nodes": {
|
||||
"zoomInNodes": "Увеличьте масштаб",
|
||||
"zoomOutNodes": "Уменьшите масштаб",
|
||||
"fitViewportNodes": "Уместить вид",
|
||||
"hideGraphNodes": "Скрыть оверлей графа",
|
||||
"showGraphNodes": "Показать оверлей графа",
|
||||
"showLegendNodes": "Показать тип поля",
|
||||
"hideMinimapnodes": "Скрыть миникарту",
|
||||
"hideLegendNodes": "Скрыть тип поля",
|
||||
"showMinimapnodes": "Показать миникарту",
|
||||
"loadWorkflow": "Загрузить рабочий процесс",
|
||||
"resetWorkflowDesc2": "Сброс рабочего процесса очистит все узлы, ребра и детали рабочего процесса.",
|
||||
"resetWorkflow": "Сбросить рабочий процесс",
|
||||
"resetWorkflowDesc": "Вы уверены, что хотите сбросить этот рабочий процесс?",
|
||||
"reloadNodeTemplates": "Перезагрузить шаблоны узлов",
|
||||
"downloadWorkflow": "Скачать JSON рабочего процесса"
|
||||
},
|
||||
"controlnet": {
|
||||
"amult": "a_mult",
|
||||
"contentShuffleDescription": "Перетасовывает содержимое изображения",
|
||||
"bgth": "bg_th",
|
||||
"contentShuffle": "Перетасовка содержимого",
|
||||
"beginEndStepPercent": "Процент начала/конца шага",
|
||||
"duplicate": "Дублировать",
|
||||
"balanced": "Сбалансированный",
|
||||
"f": "F",
|
||||
"depthMidasDescription": "Генерация карты глубины с использованием Midas",
|
||||
"control": "Контроль",
|
||||
"coarse": "Грубость обработки",
|
||||
"crop": "Обрезка",
|
||||
"depthMidas": "Глубина (Midas)",
|
||||
"enableControlnet": "Включить ControlNet",
|
||||
"detectResolution": "Определить разрешение",
|
||||
"controlMode": "Режим контроля",
|
||||
"cannyDescription": "Детектор границ Canny",
|
||||
"depthZoe": "Глубина (Zoe)",
|
||||
"autoConfigure": "Автонастройка процессора",
|
||||
"delete": "Удалить",
|
||||
"canny": "Canny",
|
||||
"depthZoeDescription": "Генерация карты глубины с использованием Zoe"
|
||||
},
|
||||
"boards": {
|
||||
"autoAddBoard": "Авто добавление Доски",
|
||||
"topMessage": "Эта доска содержит изображения, используемые в следующих функциях:",
|
||||
"move": "Перемещение",
|
||||
"menuItemAutoAdd": "Авто добавление на эту доску",
|
||||
"myBoard": "Моя Доска",
|
||||
"searchBoard": "Поиск Доски...",
|
||||
"noMatching": "Нет подходящих Досок",
|
||||
"selectBoard": "Выбрать Доску",
|
||||
"cancel": "Отменить",
|
||||
"addBoard": "Добавить Доску",
|
||||
"bottomMessage": "Удаление этой доски и ее изображений приведет к сбросу всех функций, использующихся их в данный момент.",
|
||||
"uncategorized": "Без категории",
|
||||
"changeBoard": "Изменить Доску",
|
||||
"loading": "Загрузка...",
|
||||
"clearSearch": "Очистить поиск"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
"reset": "Starta om",
|
||||
"previousImage": "Föregående bild",
|
||||
"useThisParameter": "Använd denna parametern",
|
||||
"showGallery": "Visa galleri",
|
||||
"rotateCounterClockwise": "Rotera moturs",
|
||||
"rotateClockwise": "Rotera medurs",
|
||||
"modifyConfig": "Ändra konfiguration",
|
||||
@@ -26,6 +27,10 @@
|
||||
"githubLabel": "Github",
|
||||
"discordLabel": "Discord",
|
||||
"settingsLabel": "Inställningar",
|
||||
"darkTheme": "Mörk",
|
||||
"lightTheme": "Ljus",
|
||||
"greenTheme": "Grön",
|
||||
"oceanTheme": "Hav",
|
||||
"langEnglish": "Engelska",
|
||||
"langDutch": "Nederländska",
|
||||
"langFrench": "Franska",
|
||||
@@ -58,10 +63,12 @@
|
||||
"statusGenerationComplete": "Generering klar",
|
||||
"statusModelConverted": "Modell konverterad",
|
||||
"statusMergingModels": "Sammanfogar modeller",
|
||||
"pinOptionsPanel": "Nåla fast inställningspanelen",
|
||||
"loading": "Laddar",
|
||||
"loadingInvokeAI": "Laddar Invoke AI",
|
||||
"statusRestoringFaces": "Återskapar ansikten",
|
||||
"languagePickerLabel": "Språkväljare",
|
||||
"themeLabel": "Tema",
|
||||
"txt2img": "Text till bild",
|
||||
"nodes": "Noder",
|
||||
"img2img": "Bild till bild",
|
||||
@@ -101,6 +108,7 @@
|
||||
"galleryImageResetSize": "Återställ storlek",
|
||||
"gallerySettings": "Galleriinställningar",
|
||||
"maintainAspectRatio": "Behåll bildförhållande",
|
||||
"pinGallery": "Nåla fast galleri",
|
||||
"noImagesInGallery": "Inga bilder i galleriet",
|
||||
"autoSwitchNewImages": "Ändra automatiskt till nya bilder",
|
||||
"singleColumnLayout": "Enkolumnslayout"
|
||||
|
||||
@@ -19,15 +19,21 @@
|
||||
"reset": "Sıfırla",
|
||||
"uploadImage": "Resim Yükle",
|
||||
"previousImage": "Önceki Resim",
|
||||
"menu": "Menü"
|
||||
"menu": "Menü",
|
||||
"showGallery": "Galeriyi Göster"
|
||||
},
|
||||
"common": {
|
||||
"hotkeysLabel": "Kısayol Tuşları",
|
||||
"themeLabel": "Tema",
|
||||
"languagePickerLabel": "Dil Seçimi",
|
||||
"reportBugLabel": "Hata Bildir",
|
||||
"githubLabel": "Github",
|
||||
"discordLabel": "Discord",
|
||||
"settingsLabel": "Ayarlar",
|
||||
"darkTheme": "Karanlık Tema",
|
||||
"lightTheme": "Aydınlık Tema",
|
||||
"greenTheme": "Yeşil Tema",
|
||||
"oceanTheme": "Okyanus Tema",
|
||||
"langArabic": "Arapça",
|
||||
"langEnglish": "İngilizce",
|
||||
"langDutch": "Hollandaca",
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
{
|
||||
"common": {
|
||||
"hotkeysLabel": "Гарячi клавіші",
|
||||
"themeLabel": "Тема",
|
||||
"languagePickerLabel": "Мова",
|
||||
"reportBugLabel": "Повідомити про помилку",
|
||||
"settingsLabel": "Налаштування",
|
||||
"darkTheme": "Темна",
|
||||
"lightTheme": "Світла",
|
||||
"greenTheme": "Зелена",
|
||||
"img2img": "Зображення із зображення (img2img)",
|
||||
"unifiedCanvas": "Універсальне полотно",
|
||||
"nodes": "Вузли",
|
||||
@@ -51,6 +55,8 @@
|
||||
"langHebrew": "Іврит",
|
||||
"langKorean": "Корейська",
|
||||
"langPortuguese": "Португальська",
|
||||
"pinOptionsPanel": "Закріпити панель налаштувань",
|
||||
"oceanTheme": "Океан",
|
||||
"langArabic": "Арабська",
|
||||
"langSimplifiedChinese": "Китайська (спрощена)",
|
||||
"langSpanish": "Іспанська",
|
||||
@@ -81,6 +87,7 @@
|
||||
"maintainAspectRatio": "Зберігати пропорції",
|
||||
"autoSwitchNewImages": "Автоматично вибирати нові",
|
||||
"singleColumnLayout": "Одна колонка",
|
||||
"pinGallery": "Закріпити галерею",
|
||||
"allImagesLoaded": "Всі зображення завантажені",
|
||||
"loadMore": "Завантажити більше",
|
||||
"noImagesInGallery": "Зображень немає"
|
||||
@@ -410,6 +417,7 @@
|
||||
"cfgScale": "Рівень CFG",
|
||||
"width": "Ширина",
|
||||
"height": "Висота",
|
||||
"sampler": "Семплер",
|
||||
"seed": "Сід",
|
||||
"randomizeSeed": "Випадковий сид",
|
||||
"shuffle": "Оновити",
|
||||
@@ -431,6 +439,10 @@
|
||||
"hiresOptim": "Оптимізація High Res",
|
||||
"imageFit": "Вмістити зображення",
|
||||
"codeformerFidelity": "Точність",
|
||||
"seamSize": "Размір шву",
|
||||
"seamBlur": "Розмиття шву",
|
||||
"seamStrength": "Сила шву",
|
||||
"seamSteps": "Кроки шву",
|
||||
"scaleBeforeProcessing": "Масштабувати",
|
||||
"scaledWidth": "Масштаб Ш",
|
||||
"scaledHeight": "Масштаб В",
|
||||
@@ -441,6 +453,8 @@
|
||||
"infillScalingHeader": "Заповнення і масштабування",
|
||||
"img2imgStrength": "Сила обробки img2img",
|
||||
"toggleLoopback": "Зациклити обробку",
|
||||
"invoke": "Викликати",
|
||||
"promptPlaceholder": "Введіть запит тут (англійською). [видалені токени], (більш вагомі)++, (менш вагомі)--, swap и blend також доступні (дивіться Github)",
|
||||
"sendTo": "Надіслати",
|
||||
"sendToImg2Img": "Надіслати у img2img",
|
||||
"sendToUnifiedCanvas": "Надіслати на полотно",
|
||||
@@ -453,6 +467,7 @@
|
||||
"useAll": "Використати все",
|
||||
"useInitImg": "Використати як початкове",
|
||||
"info": "Метадані",
|
||||
"deleteImage": "Видалити зображення",
|
||||
"initialImage": "Початкове зображення",
|
||||
"showOptionsPanel": "Показати панель налаштувань",
|
||||
"general": "Основне",
|
||||
@@ -470,7 +485,8 @@
|
||||
"denoisingStrength": "Сила шумоподавлення",
|
||||
"copyImage": "Копіювати зображення",
|
||||
"symmetry": "Симетрія",
|
||||
"hSymmetryStep": "Крок гор. симетрії"
|
||||
"hSymmetryStep": "Крок гор. симетрії",
|
||||
"negativePrompts": "Виключний запит"
|
||||
},
|
||||
"settings": {
|
||||
"models": "Моделі",
|
||||
@@ -478,6 +494,7 @@
|
||||
"saveSteps": "Зберігати кожні n кроків",
|
||||
"confirmOnDelete": "Підтверджувати видалення",
|
||||
"displayHelpIcons": "Показувати значки підказок",
|
||||
"useCanvasBeta": "Показувати інструменты зліва (Beta UI)",
|
||||
"enableImageDebugging": "Увімкнути налагодження",
|
||||
"resetWebUI": "Повернути початкові",
|
||||
"resetWebUIDesc1": "Скидання настройок веб-інтерфейсу видаляє лише локальний кеш браузера з вашими зображеннями та налаштуваннями. Це не призводить до видалення зображень з диску.",
|
||||
@@ -488,6 +505,7 @@
|
||||
"toast": {
|
||||
"tempFoldersEmptied": "Тимчасова папка очищена",
|
||||
"uploadFailed": "Не вдалося завантажити",
|
||||
"uploadFailedMultipleImagesDesc": "Можна вставити лише одне зображення (ви спробували вставити декілька)",
|
||||
"uploadFailedUnableToLoadDesc": "Неможливо завантажити файл",
|
||||
"downloadImageStarted": "Завантаження зображення почалося",
|
||||
"imageCopied": "Зображення скопійоване",
|
||||
@@ -608,6 +626,7 @@
|
||||
"rotateClockwise": "Обертати за годинниковою стрілкою",
|
||||
"toggleAutoscroll": "Увімкнути автопрокручування",
|
||||
"toggleLogViewer": "Показати або приховати переглядач журналів",
|
||||
"showGallery": "Показати галерею",
|
||||
"previousImage": "Попереднє зображення",
|
||||
"copyMetadataJson": "Скопіювати метадані JSON",
|
||||
"flipVertically": "Перевернути по вертикалі",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -13,6 +13,9 @@
|
||||
"settingsLabel": "設定",
|
||||
"upload": "上傳",
|
||||
"langArabic": "阿拉伯語",
|
||||
"greenTheme": "綠色",
|
||||
"lightTheme": "淺色",
|
||||
"darkTheme": "深色",
|
||||
"discordLabel": "Discord",
|
||||
"nodesDesc": "使用Node生成圖像的系統正在開發中。敬請期待有關於這項功能的更新。",
|
||||
"reportBugLabel": "回報錯誤",
|
||||
@@ -30,24 +33,6 @@
|
||||
"langBrPortuguese": "巴西葡萄牙語",
|
||||
"langRussian": "俄語",
|
||||
"langSpanish": "西班牙語",
|
||||
"unifiedCanvas": "統一畫布",
|
||||
"cancel": "取消",
|
||||
"langHebrew": "希伯來語",
|
||||
"txt2img": "文字轉圖片"
|
||||
},
|
||||
"accessibility": {
|
||||
"modelSelect": "選擇模型",
|
||||
"invokeProgressBar": "Invoke 進度條",
|
||||
"uploadImage": "上傳圖片",
|
||||
"reset": "重設",
|
||||
"nextImage": "下一張圖片",
|
||||
"previousImage": "上一張圖片",
|
||||
"flipHorizontally": "水平翻轉",
|
||||
"useThisParameter": "使用此參數",
|
||||
"zoomIn": "放大",
|
||||
"zoomOut": "縮小",
|
||||
"flipVertically": "垂直翻轉",
|
||||
"modifyConfig": "修改配置",
|
||||
"menu": "選單"
|
||||
"unifiedCanvas": "統一畫布"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ export const addBatchEnqueuedListener = () => {
|
||||
id: 'batch-queued',
|
||||
title: t('queue.batchQueued'),
|
||||
description: t('queue.batchQueuedDesc', {
|
||||
count: response.enqueued,
|
||||
item_count: response.enqueued,
|
||||
direction: arg.prepend ? t('queue.front') : t('queue.back'),
|
||||
}),
|
||||
duration: 1000,
|
||||
|
||||
@@ -44,7 +44,7 @@ export const addCanvasMergedListener = () => {
|
||||
}
|
||||
|
||||
const baseLayerRect = canvasBaseLayer.getClientRect({
|
||||
relativeTo: canvasBaseLayer.getParent() ?? undefined,
|
||||
relativeTo: canvasBaseLayer.getParent(),
|
||||
});
|
||||
|
||||
const imageDTO = await dispatch(
|
||||
|
||||
@@ -73,9 +73,14 @@ export const addModelSelectedListener = () => {
|
||||
dispatch(
|
||||
addToast(
|
||||
makeToast({
|
||||
title: t('toast.baseModelChangedCleared', {
|
||||
count: modelsCleared,
|
||||
}),
|
||||
title: t(
|
||||
modelsCleared === 1
|
||||
? 'toast.baseModelChangedCleared_one'
|
||||
: 'toast.baseModelChangedCleared_many',
|
||||
{
|
||||
number: modelsCleared,
|
||||
}
|
||||
),
|
||||
status: 'warning',
|
||||
})
|
||||
)
|
||||
|
||||
@@ -22,8 +22,7 @@ export type AppFeature =
|
||||
| 'pauseQueue'
|
||||
| 'resumeQueue'
|
||||
| 'prependQueue'
|
||||
| 'invocationCache'
|
||||
| 'bulkDownload';
|
||||
| 'invocationCache';
|
||||
|
||||
/**
|
||||
* A disable-able Stable Diffusion feature
|
||||
@@ -39,8 +38,7 @@ export type SDFeature =
|
||||
| 'hires'
|
||||
| 'lora'
|
||||
| 'embedding'
|
||||
| 'vae'
|
||||
| 'hrf';
|
||||
| 'vae';
|
||||
|
||||
/**
|
||||
* Configuration options for the InvokeAI UI.
|
||||
@@ -111,14 +109,6 @@ export type AppConfig = {
|
||||
fineStep: number;
|
||||
coarseStep: number;
|
||||
};
|
||||
hrfStrength: {
|
||||
initial: number;
|
||||
min: number;
|
||||
sliderMax: number;
|
||||
inputMax: number;
|
||||
fineStep: number;
|
||||
coarseStep: number;
|
||||
};
|
||||
dynamicPrompts: {
|
||||
maxPrompts: {
|
||||
initial: number;
|
||||
|
||||
@@ -2,7 +2,6 @@ import { PopoverProps } from '@chakra-ui/react';
|
||||
|
||||
export type Feature =
|
||||
| 'clipSkip'
|
||||
| 'hrf'
|
||||
| 'paramNegativeConditioning'
|
||||
| 'paramPositiveConditioning'
|
||||
| 'paramScheduler'
|
||||
|
||||
@@ -45,7 +45,7 @@ const selector = createSelector(
|
||||
|
||||
return {
|
||||
activeLayerColor,
|
||||
layer,
|
||||
activeLayerString: layer.charAt(0).toUpperCase() + layer.slice(1),
|
||||
boundingBoxColor,
|
||||
boundingBoxCoordinatesString: `(${roundToHundreth(
|
||||
boxX
|
||||
@@ -73,7 +73,7 @@ const selector = createSelector(
|
||||
const IAICanvasStatusText = () => {
|
||||
const {
|
||||
activeLayerColor,
|
||||
layer,
|
||||
activeLayerString,
|
||||
boundingBoxColor,
|
||||
boundingBoxCoordinatesString,
|
||||
boundingBoxDimensionsString,
|
||||
@@ -116,9 +116,7 @@ const IAICanvasStatusText = () => {
|
||||
style={{
|
||||
color: activeLayerColor,
|
||||
}}
|
||||
>{`${t('unifiedCanvas.activeLayer')}: ${t(
|
||||
`unifiedCanvas.${layer}`
|
||||
)}`}</Box>
|
||||
>{`${t('unifiedCanvas.activeLayer')}: ${activeLayerString}`}</Box>
|
||||
<Box>{`${t('unifiedCanvas.canvasScale')}: ${canvasScaleString}%`}</Box>
|
||||
{shouldPreserveMaskedArea && (
|
||||
<Box
|
||||
@@ -126,7 +124,7 @@ const IAICanvasStatusText = () => {
|
||||
color: warningColor,
|
||||
}}
|
||||
>
|
||||
{t('unifiedCanvas.preserveMaskedArea')}: {t('common.on')}
|
||||
Preserve Masked Area: On
|
||||
</Box>
|
||||
)}
|
||||
{shouldShowBoundingBox && (
|
||||
|
||||
@@ -30,7 +30,6 @@ import {
|
||||
isCanvasMaskLine,
|
||||
} from './canvasTypes';
|
||||
import { appSocketQueueItemStatusChanged } from 'services/events/actions';
|
||||
import { queueApi } from 'services/api/endpoints/queue';
|
||||
|
||||
export const initialLayerState: CanvasLayerState = {
|
||||
objects: [],
|
||||
@@ -813,20 +812,6 @@ export const canvasSlice = createSlice({
|
||||
);
|
||||
}
|
||||
});
|
||||
builder.addMatcher(
|
||||
queueApi.endpoints.clearQueue.matchFulfilled,
|
||||
(state) => {
|
||||
state.batchIds = [];
|
||||
}
|
||||
);
|
||||
builder.addMatcher(
|
||||
queueApi.endpoints.cancelByBatchIds.matchFulfilled,
|
||||
(state, action) => {
|
||||
state.batchIds = state.batchIds.filter(
|
||||
(id) => !action.meta.arg.originalArgs.batch_ids.includes(id)
|
||||
);
|
||||
}
|
||||
);
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
@@ -11,53 +11,31 @@ import {
|
||||
selectAllIPAdapters,
|
||||
selectAllT2IAdapters,
|
||||
selectControlAdapterIds,
|
||||
selectValidControlNets,
|
||||
selectValidIPAdapters,
|
||||
selectValidT2IAdapters,
|
||||
} from 'features/controlAdapters/store/controlAdaptersSlice';
|
||||
import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus';
|
||||
import { Fragment, memo } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { FaPlus } from 'react-icons/fa';
|
||||
import { useAddControlAdapter } from '../hooks/useAddControlAdapter';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
const selector = createSelector(
|
||||
[stateSelector],
|
||||
({ controlAdapters }) => {
|
||||
const activeLabel: string[] = [];
|
||||
let isError = false;
|
||||
|
||||
const enabledIPAdapterCount = selectAllIPAdapters(controlAdapters).filter(
|
||||
(ca) => ca.isEnabled
|
||||
).length;
|
||||
const validIPAdapterCount = selectValidIPAdapters(controlAdapters).length;
|
||||
if (enabledIPAdapterCount > 0) {
|
||||
activeLabel.push(`${enabledIPAdapterCount} IP`);
|
||||
}
|
||||
if (enabledIPAdapterCount > validIPAdapterCount) {
|
||||
isError = true;
|
||||
const ipAdapterCount = selectAllIPAdapters(controlAdapters).length;
|
||||
if (ipAdapterCount > 0) {
|
||||
activeLabel.push(`${ipAdapterCount} IP`);
|
||||
}
|
||||
|
||||
const enabledControlNetCount = selectAllControlNets(controlAdapters).filter(
|
||||
(ca) => ca.isEnabled
|
||||
).length;
|
||||
const validControlNetCount = selectValidControlNets(controlAdapters).length;
|
||||
if (enabledControlNetCount > 0) {
|
||||
activeLabel.push(`${enabledControlNetCount} ControlNet`);
|
||||
}
|
||||
if (enabledControlNetCount > validControlNetCount) {
|
||||
isError = true;
|
||||
const controlNetCount = selectAllControlNets(controlAdapters).length;
|
||||
if (controlNetCount > 0) {
|
||||
activeLabel.push(`${controlNetCount} ControlNet`);
|
||||
}
|
||||
|
||||
const enabledT2IAdapterCount = selectAllT2IAdapters(controlAdapters).filter(
|
||||
(ca) => ca.isEnabled
|
||||
).length;
|
||||
const validT2IAdapterCount = selectValidT2IAdapters(controlAdapters).length;
|
||||
if (enabledT2IAdapterCount > 0) {
|
||||
activeLabel.push(`${enabledT2IAdapterCount} T2I`);
|
||||
}
|
||||
if (enabledT2IAdapterCount > validT2IAdapterCount) {
|
||||
isError = true;
|
||||
const t2iAdapterCount = selectAllT2IAdapters(controlAdapters).length;
|
||||
if (t2iAdapterCount > 0) {
|
||||
activeLabel.push(`${t2iAdapterCount} T2I`);
|
||||
}
|
||||
|
||||
const controlAdapterIds =
|
||||
@@ -66,7 +44,6 @@ const selector = createSelector(
|
||||
return {
|
||||
controlAdapterIds,
|
||||
activeLabel: activeLabel.join(', '),
|
||||
isError, // TODO: Add some visual indicator that the control adapters are in an error state
|
||||
};
|
||||
},
|
||||
defaultSelectorOptions
|
||||
@@ -89,10 +66,7 @@ const ControlAdaptersCollapse = () => {
|
||||
}
|
||||
|
||||
return (
|
||||
<IAICollapse
|
||||
label={t('controlnet.controlAdapter_other')}
|
||||
activeLabel={activeLabel}
|
||||
>
|
||||
<IAICollapse label="Control Adapters" activeLabel={activeLabel}>
|
||||
<Flex sx={{ flexDir: 'column', gap: 2 }}>
|
||||
<ButtonGroup size="sm" w="full" justifyContent="space-between">
|
||||
<IAIButton
|
||||
|
||||
@@ -3,7 +3,6 @@ import {
|
||||
Update,
|
||||
createEntityAdapter,
|
||||
createSlice,
|
||||
isAnyOf,
|
||||
} from '@reduxjs/toolkit';
|
||||
import {
|
||||
ControlNetModelParam,
|
||||
@@ -545,9 +544,3 @@ export const {
|
||||
} = controlAdaptersSlice.actions;
|
||||
|
||||
export default controlAdaptersSlice.reducer;
|
||||
|
||||
export const isAnyControlAdapterAdded = isAnyOf(
|
||||
controlAdapterAdded,
|
||||
controlAdapterAddedFromImage,
|
||||
controlAdapterRecalled
|
||||
);
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
import { Badge, Flex } from '@chakra-ui/react';
|
||||
import { memo } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
const AutoAddIcon = () => {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<Flex
|
||||
sx={{
|
||||
@@ -17,7 +15,7 @@ const AutoAddIcon = () => {
|
||||
variant="solid"
|
||||
sx={{ bg: 'accent.400', _dark: { bg: 'accent.500' } }}
|
||||
>
|
||||
{t('common.auto')}
|
||||
auto
|
||||
</Badge>
|
||||
</Flex>
|
||||
);
|
||||
|
||||
@@ -11,15 +11,12 @@ import { autoAddBoardIdChanged } from 'features/gallery/store/gallerySlice';
|
||||
import { BoardId } from 'features/gallery/store/types';
|
||||
import { MouseEvent, memo, useCallback, useMemo } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { FaDownload, FaPlus } from 'react-icons/fa';
|
||||
import { FaPlus } from 'react-icons/fa';
|
||||
import { useBoardName } from 'services/api/hooks/useBoardName';
|
||||
import { BoardDTO } from 'services/api/types';
|
||||
import { menuListMotionProps } from 'theme/components/menu';
|
||||
import GalleryBoardContextMenuItems from './GalleryBoardContextMenuItems';
|
||||
import NoBoardContextMenuItems from './NoBoardContextMenuItems';
|
||||
import { useFeatureStatus } from '../../../system/hooks/useFeatureStatus';
|
||||
import { useBulkDownloadImagesMutation } from '../../../../services/api/endpoints/images';
|
||||
import { addToast } from '../../../system/store/systemSlice';
|
||||
|
||||
type Props = {
|
||||
board?: BoardDTO;
|
||||
@@ -34,7 +31,6 @@ const BoardContextMenu = ({
|
||||
setBoardToDelete,
|
||||
children,
|
||||
}: Props) => {
|
||||
const { t } = useTranslation();
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const selector = useMemo(
|
||||
@@ -53,43 +49,17 @@ const BoardContextMenu = ({
|
||||
|
||||
const { isAutoAdd, autoAssignBoardOnClick } = useAppSelector(selector);
|
||||
const boardName = useBoardName(board_id);
|
||||
const isBulkDownloadEnabled =
|
||||
useFeatureStatus('bulkDownload').isFeatureEnabled;
|
||||
|
||||
const [bulkDownload] = useBulkDownloadImagesMutation();
|
||||
|
||||
const handleSetAutoAdd = useCallback(() => {
|
||||
dispatch(autoAddBoardIdChanged(board_id));
|
||||
}, [board_id, dispatch]);
|
||||
|
||||
const handleBulkDownload = useCallback(async () => {
|
||||
try {
|
||||
const response = await bulkDownload({
|
||||
image_names: [],
|
||||
board_id: board_id,
|
||||
}).unwrap();
|
||||
|
||||
dispatch(
|
||||
addToast({
|
||||
title: t('gallery.preparingDownload'),
|
||||
status: 'success',
|
||||
...(response.response ? { description: response.response } : {}),
|
||||
})
|
||||
);
|
||||
} catch {
|
||||
dispatch(
|
||||
addToast({
|
||||
title: t('gallery.preparingDownloadFailed'),
|
||||
status: 'error',
|
||||
})
|
||||
);
|
||||
}
|
||||
}, [t, board_id, bulkDownload, dispatch]);
|
||||
|
||||
const skipEvent = useCallback((e: MouseEvent<HTMLDivElement>) => {
|
||||
e.preventDefault();
|
||||
}, []);
|
||||
|
||||
const { t } = useTranslation();
|
||||
|
||||
return (
|
||||
<IAIContextMenu<HTMLDivElement>
|
||||
menuProps={{ size: 'sm', isLazy: true }}
|
||||
@@ -111,14 +81,6 @@ const BoardContextMenu = ({
|
||||
>
|
||||
{t('boards.menuItemAutoAdd')}
|
||||
</MenuItem>
|
||||
{isBulkDownloadEnabled && (
|
||||
<MenuItem
|
||||
icon={<FaDownload />}
|
||||
onClickCapture={handleBulkDownload}
|
||||
>
|
||||
{t('boards.downloadBoard')}
|
||||
</MenuItem>
|
||||
)}
|
||||
{!board && <NoBoardContextMenuItems />}
|
||||
{board && (
|
||||
<GalleryBoardContextMenuItems
|
||||
|
||||
@@ -8,29 +8,20 @@ import {
|
||||
} from 'features/changeBoardModal/store/slice';
|
||||
import { imagesToDeleteSelected } from 'features/deleteImageModal/store/slice';
|
||||
import { memo, useCallback, useMemo } from 'react';
|
||||
import { FaDownload, FaFolder, FaTrash } from 'react-icons/fa';
|
||||
import { FaFolder, FaTrash } from 'react-icons/fa';
|
||||
import { MdStar, MdStarBorder } from 'react-icons/md';
|
||||
import {
|
||||
useBulkDownloadImagesMutation,
|
||||
useStarImagesMutation,
|
||||
useUnstarImagesMutation,
|
||||
} from '../../../../services/api/endpoints/images';
|
||||
import { useFeatureStatus } from '../../../system/hooks/useFeatureStatus';
|
||||
import { addToast } from '../../../system/store/systemSlice';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
const MultipleSelectionMenuItems = () => {
|
||||
const { t } = useTranslation();
|
||||
const dispatch = useAppDispatch();
|
||||
const selection = useAppSelector((state) => state.gallery.selection);
|
||||
const customStarUi = useStore($customStarUI);
|
||||
|
||||
const isBulkDownloadEnabled =
|
||||
useFeatureStatus('bulkDownload').isFeatureEnabled;
|
||||
|
||||
const [starImages] = useStarImagesMutation();
|
||||
const [unstarImages] = useUnstarImagesMutation();
|
||||
const [bulkDownload] = useBulkDownloadImagesMutation();
|
||||
|
||||
const handleChangeBoard = useCallback(() => {
|
||||
dispatch(imagesToChangeSelected(selection));
|
||||
@@ -49,29 +40,6 @@ const MultipleSelectionMenuItems = () => {
|
||||
unstarImages({ imageDTOs: selection });
|
||||
}, [unstarImages, selection]);
|
||||
|
||||
const handleBulkDownload = useCallback(async () => {
|
||||
try {
|
||||
const response = await bulkDownload({
|
||||
image_names: selection.map((img) => img.image_name),
|
||||
}).unwrap();
|
||||
|
||||
dispatch(
|
||||
addToast({
|
||||
title: t('gallery.preparingDownload'),
|
||||
status: 'success',
|
||||
...(response.response ? { description: response.response } : {}),
|
||||
})
|
||||
);
|
||||
} catch {
|
||||
dispatch(
|
||||
addToast({
|
||||
title: t('gallery.preparingDownloadFailed'),
|
||||
status: 'error',
|
||||
})
|
||||
);
|
||||
}
|
||||
}, [t, selection, bulkDownload, dispatch]);
|
||||
|
||||
const areAllStarred = useMemo(() => {
|
||||
return selection.every((img) => img.starred);
|
||||
}, [selection]);
|
||||
@@ -98,11 +66,6 @@ const MultipleSelectionMenuItems = () => {
|
||||
{customStarUi ? customStarUi.on.text : `Star All`}
|
||||
</MenuItem>
|
||||
)}
|
||||
{isBulkDownloadEnabled && (
|
||||
<MenuItem icon={<FaDownload />} onClickCapture={handleBulkDownload}>
|
||||
{t('gallery.downloadSelection')}
|
||||
</MenuItem>
|
||||
)}
|
||||
<MenuItem icon={<FaFolder />} onClickCapture={handleChangeBoard}>
|
||||
Change Board
|
||||
</MenuItem>
|
||||
|
||||
@@ -20,7 +20,6 @@ import BoardsList from './Boards/BoardsList/BoardsList';
|
||||
import GalleryBoardName from './GalleryBoardName';
|
||||
import GallerySettingsPopover from './GallerySettingsPopover';
|
||||
import GalleryImageGrid from './ImageGrid/GalleryImageGrid';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
const selector = createSelector(
|
||||
[stateSelector],
|
||||
@@ -35,7 +34,6 @@ const selector = createSelector(
|
||||
);
|
||||
|
||||
const ImageGalleryContent = () => {
|
||||
const { t } = useTranslation();
|
||||
const resizeObserverRef = useRef<HTMLDivElement>(null);
|
||||
const galleryGridRef = useRef<HTMLDivElement>(null);
|
||||
const { galleryView } = useAppSelector(selector);
|
||||
@@ -113,7 +111,7 @@ const ImageGalleryContent = () => {
|
||||
leftIcon={<FaImages />}
|
||||
data-testid="images-tab"
|
||||
>
|
||||
{t('gallery.images')}
|
||||
Images
|
||||
</Tab>
|
||||
<Tab
|
||||
as={IAIButton}
|
||||
@@ -126,7 +124,7 @@ const ImageGalleryContent = () => {
|
||||
leftIcon={<FaServer />}
|
||||
data-testid="assets-tab"
|
||||
>
|
||||
{t('gallery.assets')}
|
||||
Assets
|
||||
</Tab>
|
||||
</ButtonGroup>
|
||||
</TabList>
|
||||
|
||||
@@ -18,7 +18,6 @@ import ImageMetadataActions from './ImageMetadataActions';
|
||||
import { useAppSelector } from '../../../../app/store/storeHooks';
|
||||
import { configSelector } from '../../../system/store/configSelectors';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import ScrollableContent from 'features/nodes/components/sidePanel/ScrollableContent';
|
||||
|
||||
type ImageMetadataViewerProps = {
|
||||
image: ImageDTO;
|
||||
@@ -66,32 +65,19 @@ const ImageMetadataViewer = ({ image }: ImageMetadataViewerProps) => {
|
||||
</Link>
|
||||
</Flex>
|
||||
|
||||
<ImageMetadataActions metadata={metadata} />
|
||||
|
||||
<Tabs
|
||||
variant="line"
|
||||
sx={{
|
||||
display: 'flex',
|
||||
flexDir: 'column',
|
||||
w: 'full',
|
||||
h: 'full',
|
||||
}}
|
||||
sx={{ display: 'flex', flexDir: 'column', w: 'full', h: 'full' }}
|
||||
>
|
||||
<TabList>
|
||||
<Tab>{t('metadata.recallParameters')}</Tab>
|
||||
<Tab>{t('metadata.metadata')}</Tab>
|
||||
<Tab>{t('metadata.imageDetails')}</Tab>
|
||||
<Tab>{t('metadata.workflow')}</Tab>
|
||||
</TabList>
|
||||
|
||||
<TabPanels>
|
||||
<TabPanel>
|
||||
{metadata ? (
|
||||
<ScrollableContent>
|
||||
<ImageMetadataActions metadata={metadata} />
|
||||
</ScrollableContent>
|
||||
) : (
|
||||
<IAINoContentFallback label={t('metadata.noRecallParameters')} />
|
||||
)}
|
||||
</TabPanel>
|
||||
<TabPanel>
|
||||
{metadata ? (
|
||||
<DataViewer data={metadata} label={t('metadata.metadata')} />
|
||||
|
||||
@@ -9,7 +9,6 @@ import { memo } from 'react';
|
||||
import { useFeatureStatus } from '../../system/hooks/useFeatureStatus';
|
||||
import ParamLoraList from './ParamLoraList';
|
||||
import ParamLoRASelect from './ParamLoraSelect';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
const selector = createSelector(
|
||||
stateSelector,
|
||||
@@ -23,7 +22,6 @@ const selector = createSelector(
|
||||
);
|
||||
|
||||
const ParamLoraCollapse = () => {
|
||||
const { t } = useTranslation();
|
||||
const { activeLabel } = useAppSelector(selector);
|
||||
|
||||
const isLoraEnabled = useFeatureStatus('lora').isFeatureEnabled;
|
||||
@@ -33,7 +31,7 @@ const ParamLoraCollapse = () => {
|
||||
}
|
||||
|
||||
return (
|
||||
<IAICollapse label={t('modelManager.loraModels')} activeLabel={activeLabel}>
|
||||
<IAICollapse label="LoRA" activeLabel={activeLabel}>
|
||||
<Flex sx={{ flexDir: 'column', gap: 2 }}>
|
||||
<ParamLoRASelect />
|
||||
<ParamLoraList />
|
||||
|
||||
@@ -1,247 +0,0 @@
|
||||
import { RootState } from 'app/store/store';
|
||||
import { NonNullableGraph } from 'features/nodes/types/types';
|
||||
import {
|
||||
DenoiseLatentsInvocation,
|
||||
ResizeLatentsInvocation,
|
||||
NoiseInvocation,
|
||||
LatentsToImageInvocation,
|
||||
Edge,
|
||||
} from 'services/api/types';
|
||||
import {
|
||||
LATENTS_TO_IMAGE,
|
||||
DENOISE_LATENTS,
|
||||
NOISE,
|
||||
MAIN_MODEL_LOADER,
|
||||
METADATA_ACCUMULATOR,
|
||||
LATENTS_TO_IMAGE_HRF,
|
||||
DENOISE_LATENTS_HRF,
|
||||
RESCALE_LATENTS,
|
||||
NOISE_HRF,
|
||||
VAE_LOADER,
|
||||
} from './constants';
|
||||
import { logger } from 'app/logging/logger';
|
||||
|
||||
// Copy certain connections from previous DENOISE_LATENTS to new DENOISE_LATENTS_HRF.
|
||||
function copyConnectionsToDenoiseLatentsHrf(graph: NonNullableGraph): void {
|
||||
const destinationFields = [
|
||||
'vae',
|
||||
'control',
|
||||
'ip_adapter',
|
||||
'metadata',
|
||||
'unet',
|
||||
'positive_conditioning',
|
||||
'negative_conditioning',
|
||||
];
|
||||
const newEdges: Edge[] = [];
|
||||
|
||||
// Loop through the existing edges connected to DENOISE_LATENTS
|
||||
graph.edges.forEach((edge: Edge) => {
|
||||
if (
|
||||
edge.destination.node_id === DENOISE_LATENTS &&
|
||||
destinationFields.includes(edge.destination.field)
|
||||
) {
|
||||
// Add a similar connection to DENOISE_LATENTS_HRF
|
||||
newEdges.push({
|
||||
source: {
|
||||
node_id: edge.source.node_id,
|
||||
field: edge.source.field,
|
||||
},
|
||||
destination: {
|
||||
node_id: DENOISE_LATENTS_HRF,
|
||||
field: edge.destination.field,
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
graph.edges = graph.edges.concat(newEdges);
|
||||
}
|
||||
|
||||
// Adds the high-res fix feature to the given graph.
|
||||
export const addHrfToGraph = (
|
||||
state: RootState,
|
||||
graph: NonNullableGraph
|
||||
): void => {
|
||||
// Double check hrf is enabled.
|
||||
if (
|
||||
!state.generation.hrfEnabled ||
|
||||
state.config.disabledSDFeatures.includes('hrf') ||
|
||||
state.generation.model?.model_type === 'onnx' // TODO: ONNX support
|
||||
) {
|
||||
return;
|
||||
}
|
||||
const log = logger('txt2img');
|
||||
|
||||
const { vae } = state.generation;
|
||||
const isAutoVae = !vae;
|
||||
const hrfWidth = state.generation.hrfWidth;
|
||||
const hrfHeight = state.generation.hrfHeight;
|
||||
|
||||
// Pre-existing (original) graph nodes.
|
||||
const originalDenoiseLatentsNode = graph.nodes[DENOISE_LATENTS] as
|
||||
| DenoiseLatentsInvocation
|
||||
| undefined;
|
||||
const originalNoiseNode = graph.nodes[NOISE] as NoiseInvocation | undefined;
|
||||
// Original latents to image should pick this up.
|
||||
const originalLatentsToImageNode = graph.nodes[LATENTS_TO_IMAGE] as
|
||||
| LatentsToImageInvocation
|
||||
| undefined;
|
||||
// Check if originalDenoiseLatentsNode is undefined and log an error
|
||||
if (!originalDenoiseLatentsNode) {
|
||||
log.error('originalDenoiseLatentsNode is undefined');
|
||||
return;
|
||||
}
|
||||
// Check if originalNoiseNode is undefined and log an error
|
||||
if (!originalNoiseNode) {
|
||||
log.error('originalNoiseNode is undefined');
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if originalLatentsToImageNode is undefined and log an error
|
||||
if (!originalLatentsToImageNode) {
|
||||
log.error('originalLatentsToImageNode is undefined');
|
||||
return;
|
||||
}
|
||||
// Change height and width of original noise node to initial resolution.
|
||||
if (originalNoiseNode) {
|
||||
originalNoiseNode.width = hrfWidth;
|
||||
originalNoiseNode.height = hrfHeight;
|
||||
}
|
||||
|
||||
// Define new nodes.
|
||||
// Denoise latents node to be run on upscaled latents.
|
||||
const denoiseLatentsHrfNode: DenoiseLatentsInvocation = {
|
||||
type: 'denoise_latents',
|
||||
id: DENOISE_LATENTS_HRF,
|
||||
is_intermediate: originalDenoiseLatentsNode?.is_intermediate,
|
||||
cfg_scale: originalDenoiseLatentsNode?.cfg_scale,
|
||||
scheduler: originalDenoiseLatentsNode?.scheduler,
|
||||
steps: originalDenoiseLatentsNode?.steps,
|
||||
denoising_start: 1 - state.generation.hrfStrength,
|
||||
denoising_end: 1,
|
||||
};
|
||||
|
||||
// New base resolution noise node.
|
||||
const hrfNoiseNode: NoiseInvocation = {
|
||||
type: 'noise',
|
||||
id: NOISE_HRF,
|
||||
seed: originalNoiseNode?.seed,
|
||||
use_cpu: originalNoiseNode?.use_cpu,
|
||||
is_intermediate: originalNoiseNode?.is_intermediate,
|
||||
};
|
||||
|
||||
const rescaleLatentsNode: ResizeLatentsInvocation = {
|
||||
id: RESCALE_LATENTS,
|
||||
type: 'lresize',
|
||||
width: state.generation.width,
|
||||
height: state.generation.height,
|
||||
};
|
||||
|
||||
// New node to convert latents to image.
|
||||
const latentsToImageHrfNode: LatentsToImageInvocation | undefined =
|
||||
originalLatentsToImageNode
|
||||
? {
|
||||
type: 'l2i',
|
||||
id: LATENTS_TO_IMAGE_HRF,
|
||||
fp32: originalLatentsToImageNode?.fp32,
|
||||
is_intermediate: originalLatentsToImageNode?.is_intermediate,
|
||||
}
|
||||
: undefined;
|
||||
|
||||
// Add new nodes to graph.
|
||||
graph.nodes[LATENTS_TO_IMAGE_HRF] =
|
||||
latentsToImageHrfNode as LatentsToImageInvocation;
|
||||
graph.nodes[DENOISE_LATENTS_HRF] =
|
||||
denoiseLatentsHrfNode as DenoiseLatentsInvocation;
|
||||
graph.nodes[NOISE_HRF] = hrfNoiseNode as NoiseInvocation;
|
||||
graph.nodes[RESCALE_LATENTS] = rescaleLatentsNode as ResizeLatentsInvocation;
|
||||
|
||||
// Connect nodes.
|
||||
graph.edges.push(
|
||||
{
|
||||
// Set up rescale latents.
|
||||
source: {
|
||||
node_id: DENOISE_LATENTS,
|
||||
field: 'latents',
|
||||
},
|
||||
destination: {
|
||||
node_id: RESCALE_LATENTS,
|
||||
field: 'latents',
|
||||
},
|
||||
},
|
||||
// Set up new noise node
|
||||
{
|
||||
source: {
|
||||
node_id: RESCALE_LATENTS,
|
||||
field: 'height',
|
||||
},
|
||||
destination: {
|
||||
node_id: NOISE_HRF,
|
||||
field: 'height',
|
||||
},
|
||||
},
|
||||
{
|
||||
source: {
|
||||
node_id: RESCALE_LATENTS,
|
||||
field: 'width',
|
||||
},
|
||||
destination: {
|
||||
node_id: NOISE_HRF,
|
||||
field: 'width',
|
||||
},
|
||||
},
|
||||
// Set up new denoise node.
|
||||
{
|
||||
source: {
|
||||
node_id: RESCALE_LATENTS,
|
||||
field: 'latents',
|
||||
},
|
||||
destination: {
|
||||
node_id: DENOISE_LATENTS_HRF,
|
||||
field: 'latents',
|
||||
},
|
||||
},
|
||||
{
|
||||
source: {
|
||||
node_id: NOISE_HRF,
|
||||
field: 'noise',
|
||||
},
|
||||
destination: {
|
||||
node_id: DENOISE_LATENTS_HRF,
|
||||
field: 'noise',
|
||||
},
|
||||
},
|
||||
// Set up new latents to image node.
|
||||
{
|
||||
source: {
|
||||
node_id: DENOISE_LATENTS_HRF,
|
||||
field: 'latents',
|
||||
},
|
||||
destination: {
|
||||
node_id: LATENTS_TO_IMAGE_HRF,
|
||||
field: 'latents',
|
||||
},
|
||||
},
|
||||
{
|
||||
source: {
|
||||
node_id: METADATA_ACCUMULATOR,
|
||||
field: 'metadata',
|
||||
},
|
||||
destination: {
|
||||
node_id: LATENTS_TO_IMAGE_HRF,
|
||||
field: 'metadata',
|
||||
},
|
||||
},
|
||||
{
|
||||
source: {
|
||||
node_id: isAutoVae ? MAIN_MODEL_LOADER : VAE_LOADER,
|
||||
field: 'vae',
|
||||
},
|
||||
destination: {
|
||||
node_id: LATENTS_TO_IMAGE_HRF,
|
||||
field: 'vae',
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
copyConnectionsToDenoiseLatentsHrf(graph);
|
||||
};
|
||||
@@ -2,7 +2,6 @@ import { NonNullableGraph } from 'features/nodes/types/types';
|
||||
import {
|
||||
CANVAS_OUTPUT,
|
||||
LATENTS_TO_IMAGE,
|
||||
LATENTS_TO_IMAGE_HRF,
|
||||
METADATA_ACCUMULATOR,
|
||||
NSFW_CHECKER,
|
||||
SAVE_IMAGE,
|
||||
@@ -83,14 +82,6 @@ export const addSaveImageNode = (
|
||||
},
|
||||
destination,
|
||||
});
|
||||
} else if (LATENTS_TO_IMAGE_HRF in graph.nodes) {
|
||||
graph.edges.push({
|
||||
source: {
|
||||
node_id: LATENTS_TO_IMAGE_HRF,
|
||||
field: 'image',
|
||||
},
|
||||
destination,
|
||||
});
|
||||
} else if (LATENTS_TO_IMAGE in graph.nodes) {
|
||||
graph.edges.push({
|
||||
source: {
|
||||
|
||||
@@ -86,7 +86,7 @@ export const addT2IAdaptersToLinearGraph = (
|
||||
|
||||
graph.nodes[t2iAdapterNode.id] = t2iAdapterNode as T2IAdapterInvocation;
|
||||
|
||||
if (metadataAccumulator?.t2iAdapters) {
|
||||
if (metadataAccumulator?.ipAdapters) {
|
||||
// metadata accumulator only needs a control field - not the whole node
|
||||
// extract what we need and add to the accumulator
|
||||
const t2iAdapterField = omit(t2iAdapterNode, [
|
||||
|
||||
@@ -6,7 +6,6 @@ import {
|
||||
ONNXTextToLatentsInvocation,
|
||||
} from 'services/api/types';
|
||||
import { addControlNetToLinearGraph } from './addControlNetToLinearGraph';
|
||||
import { addHrfToGraph } from './addHrfToGraph';
|
||||
import { addIPAdapterToLinearGraph } from './addIPAdapterToLinearGraph';
|
||||
import { addLoRAsToGraph } from './addLoRAsToGraph';
|
||||
import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph';
|
||||
@@ -48,10 +47,6 @@ export const buildLinearTextToImageGraph = (
|
||||
seamlessXAxis,
|
||||
seamlessYAxis,
|
||||
seed,
|
||||
hrfWidth,
|
||||
hrfHeight,
|
||||
hrfStrength,
|
||||
hrfEnabled: hrfEnabled,
|
||||
} = state.generation;
|
||||
|
||||
const use_cpu = shouldUseCpuNoise;
|
||||
@@ -259,9 +254,6 @@ export const buildLinearTextToImageGraph = (
|
||||
ipAdapters: [], // populated in addIPAdapterToLinearGraph
|
||||
t2iAdapters: [], // populated in addT2IAdapterToLinearGraph
|
||||
clip_skip: clipSkip,
|
||||
hrf_width: hrfEnabled ? hrfWidth : undefined,
|
||||
hrf_height: hrfEnabled ? hrfHeight : undefined,
|
||||
hrf_strength: hrfEnabled ? hrfStrength : undefined,
|
||||
};
|
||||
|
||||
graph.edges.push({
|
||||
@@ -295,12 +287,6 @@ export const buildLinearTextToImageGraph = (
|
||||
|
||||
addT2IAdaptersToLinearGraph(state, graph, DENOISE_LATENTS);
|
||||
|
||||
// High resolution fix.
|
||||
// NOTE: Not supported for onnx models.
|
||||
if (state.generation.hrfEnabled && !isUsingOnnxModel) {
|
||||
addHrfToGraph(state, graph);
|
||||
}
|
||||
|
||||
// NSFW & watermark - must be last thing added to graph
|
||||
if (state.system.shouldUseNSFWChecker) {
|
||||
// must add before watermarker!
|
||||
|
||||
@@ -2,14 +2,11 @@
|
||||
export const POSITIVE_CONDITIONING = 'positive_conditioning';
|
||||
export const NEGATIVE_CONDITIONING = 'negative_conditioning';
|
||||
export const DENOISE_LATENTS = 'denoise_latents';
|
||||
export const DENOISE_LATENTS_HRF = 'denoise_latents_hrf';
|
||||
export const LATENTS_TO_IMAGE = 'latents_to_image';
|
||||
export const LATENTS_TO_IMAGE_HRF = 'latents_to_image_hrf';
|
||||
export const SAVE_IMAGE = 'save_image';
|
||||
export const NSFW_CHECKER = 'nsfw_checker';
|
||||
export const WATERMARKER = 'invisible_watermark';
|
||||
export const NOISE = 'noise';
|
||||
export const NOISE_HRF = 'noise_hrf';
|
||||
export const RANDOM_INT = 'rand_int';
|
||||
export const RANGE_OF_SIZE = 'range_of_size';
|
||||
export const ITERATE = 'iterate';
|
||||
@@ -21,7 +18,6 @@ export const CLIP_SKIP = 'clip_skip';
|
||||
export const IMAGE_TO_LATENTS = 'image_to_latents';
|
||||
export const LATENTS_TO_LATENTS = 'latents_to_latents';
|
||||
export const RESIZE = 'resize_image';
|
||||
export const RESCALE_LATENTS = 'rescale_latents';
|
||||
export const IMG2IMG_RESIZE = 'img2img_resize';
|
||||
export const CANVAS_OUTPUT = 'canvas_output';
|
||||
export const INPAINT_IMAGE = 'inpaint_image';
|
||||
|
||||
@@ -6,11 +6,10 @@ import {
|
||||
setAspectRatio,
|
||||
setShouldLockAspectRatio,
|
||||
} from 'features/parameters/store/generationSlice';
|
||||
import i18next from 'i18next';
|
||||
import { activeTabNameSelector } from '../../../../ui/store/uiSelectors';
|
||||
|
||||
const aspectRatios = [
|
||||
{ name: i18next.t('parameters.aspectRatioFree'), value: null },
|
||||
{ name: 'Free', value: null },
|
||||
{ name: '2:3', value: 2 / 3 },
|
||||
{ name: '16:9', value: 16 / 9 },
|
||||
{ name: '1:1', value: 1 / 1 },
|
||||
|
||||
@@ -1,65 +0,0 @@
|
||||
import { Flex } from '@chakra-ui/react';
|
||||
import { createSelector } from '@reduxjs/toolkit';
|
||||
import { RootState, stateSelector } from 'app/store/store';
|
||||
import { useAppSelector } from 'app/store/storeHooks';
|
||||
import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions';
|
||||
import IAICollapse from 'common/components/IAICollapse';
|
||||
import { useMemo } from 'react';
|
||||
import ParamHrfStrength from './ParamHrfStrength';
|
||||
import ParamHrfToggle from './ParamHrfToggle';
|
||||
import ParamHrfWidth from './ParamHrfWidth';
|
||||
import ParamHrfHeight from './ParamHrfHeight';
|
||||
import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus';
|
||||
|
||||
const selector = createSelector(
|
||||
stateSelector,
|
||||
(state: RootState) => {
|
||||
const { hrfEnabled } = state.generation;
|
||||
|
||||
return { hrfEnabled };
|
||||
},
|
||||
defaultSelectorOptions
|
||||
);
|
||||
|
||||
export default function ParamHrfCollapse() {
|
||||
const isHRFFeatureEnabled = useFeatureStatus('hrf').isFeatureEnabled;
|
||||
const { hrfEnabled } = useAppSelector(selector);
|
||||
const activeLabel = useMemo(() => {
|
||||
if (hrfEnabled) {
|
||||
return 'On';
|
||||
} else {
|
||||
return 'Off';
|
||||
}
|
||||
}, [hrfEnabled]);
|
||||
|
||||
if (!isHRFFeatureEnabled) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (
|
||||
<IAICollapse label="High Resolution Fix" activeLabel={activeLabel}>
|
||||
<Flex sx={{ flexDir: 'column', gap: 2 }}>
|
||||
<ParamHrfToggle />
|
||||
{hrfEnabled && (
|
||||
<Flex
|
||||
sx={{
|
||||
gap: 2,
|
||||
p: 4,
|
||||
borderRadius: 4,
|
||||
flexDirection: 'column',
|
||||
w: 'full',
|
||||
bg: 'base.100',
|
||||
_dark: {
|
||||
bg: 'base.750',
|
||||
},
|
||||
}}
|
||||
>
|
||||
<ParamHrfWidth />
|
||||
<ParamHrfHeight />
|
||||
</Flex>
|
||||
)}
|
||||
{hrfEnabled && <ParamHrfStrength />}
|
||||
</Flex>
|
||||
</IAICollapse>
|
||||
);
|
||||
}
|
||||
@@ -1,87 +0,0 @@
|
||||
import { createSelector } from '@reduxjs/toolkit';
|
||||
import { stateSelector } from 'app/store/store';
|
||||
import { useAppDispatch, useAppSelector } from 'app/store/storeHooks';
|
||||
import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions';
|
||||
import IAISlider, { IAIFullSliderProps } from 'common/components/IAISlider';
|
||||
import { roundToMultiple } from 'common/util/roundDownToMultiple';
|
||||
import {
|
||||
setHrfHeight,
|
||||
setHrfWidth,
|
||||
} from 'features/parameters/store/generationSlice';
|
||||
import { memo, useCallback } from 'react';
|
||||
|
||||
function findPrevMultipleOfEight(n: number): number {
|
||||
return Math.floor((n - 1) / 8) * 8;
|
||||
}
|
||||
|
||||
const selector = createSelector(
|
||||
[stateSelector],
|
||||
({ generation, hotkeys, config }) => {
|
||||
const { min, fineStep, coarseStep } = config.sd.height;
|
||||
const { model, height, hrfHeight, aspectRatio, hrfEnabled } = generation;
|
||||
|
||||
const step = hotkeys.shift ? fineStep : coarseStep;
|
||||
|
||||
return {
|
||||
model,
|
||||
height,
|
||||
hrfHeight,
|
||||
min,
|
||||
step,
|
||||
aspectRatio,
|
||||
hrfEnabled,
|
||||
};
|
||||
},
|
||||
defaultSelectorOptions
|
||||
);
|
||||
|
||||
type ParamHeightProps = Omit<
|
||||
IAIFullSliderProps,
|
||||
'label' | 'value' | 'onChange'
|
||||
>;
|
||||
|
||||
const ParamHrfHeight = (props: ParamHeightProps) => {
|
||||
const { height, hrfHeight, min, step, aspectRatio, hrfEnabled } =
|
||||
useAppSelector(selector);
|
||||
const dispatch = useAppDispatch();
|
||||
const maxHrfHeight = Math.max(findPrevMultipleOfEight(height), min);
|
||||
|
||||
const handleChange = useCallback(
|
||||
(v: number) => {
|
||||
dispatch(setHrfHeight(v));
|
||||
if (aspectRatio) {
|
||||
const newWidth = roundToMultiple(v * aspectRatio, 8);
|
||||
dispatch(setHrfWidth(newWidth));
|
||||
}
|
||||
},
|
||||
[dispatch, aspectRatio]
|
||||
);
|
||||
|
||||
const handleReset = useCallback(() => {
|
||||
dispatch(setHrfHeight(maxHrfHeight));
|
||||
if (aspectRatio) {
|
||||
const newWidth = roundToMultiple(maxHrfHeight * aspectRatio, 8);
|
||||
dispatch(setHrfWidth(newWidth));
|
||||
}
|
||||
}, [dispatch, maxHrfHeight, aspectRatio]);
|
||||
|
||||
return (
|
||||
<IAISlider
|
||||
label="Initial Height"
|
||||
value={hrfHeight}
|
||||
min={min}
|
||||
step={step}
|
||||
max={maxHrfHeight}
|
||||
onChange={handleChange}
|
||||
handleReset={handleReset}
|
||||
withInput
|
||||
withReset
|
||||
withSliderMarks
|
||||
sliderNumberInputProps={{ max: maxHrfHeight }}
|
||||
isDisabled={!hrfEnabled}
|
||||
{...props}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
export default memo(ParamHrfHeight);
|
||||
@@ -1,64 +0,0 @@
|
||||
import { createSelector } from '@reduxjs/toolkit';
|
||||
import { useAppSelector, useAppDispatch } from 'app/store/storeHooks';
|
||||
import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions';
|
||||
import { memo, useCallback } from 'react';
|
||||
import { stateSelector } from 'app/store/store';
|
||||
import { setHrfStrength } from 'features/parameters/store/generationSlice';
|
||||
import IAISlider from 'common/components/IAISlider';
|
||||
|
||||
const selector = createSelector(
|
||||
[stateSelector],
|
||||
({ generation, hotkeys, config }) => {
|
||||
const { initial, min, sliderMax, inputMax, fineStep, coarseStep } =
|
||||
config.sd.hrfStrength;
|
||||
const { hrfStrength, hrfEnabled } = generation;
|
||||
const step = hotkeys.shift ? fineStep : coarseStep;
|
||||
|
||||
return {
|
||||
hrfStrength,
|
||||
initial,
|
||||
min,
|
||||
sliderMax,
|
||||
inputMax,
|
||||
step,
|
||||
hrfEnabled,
|
||||
};
|
||||
},
|
||||
defaultSelectorOptions
|
||||
);
|
||||
|
||||
const ParamHrfStrength = () => {
|
||||
const { hrfStrength, initial, min, sliderMax, step, hrfEnabled } =
|
||||
useAppSelector(selector);
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const handleHrfStrengthReset = useCallback(() => {
|
||||
dispatch(setHrfStrength(initial));
|
||||
}, [dispatch, initial]);
|
||||
|
||||
const handleHrfStrengthChange = useCallback(
|
||||
(v: number) => {
|
||||
dispatch(setHrfStrength(v));
|
||||
},
|
||||
[dispatch]
|
||||
);
|
||||
|
||||
return (
|
||||
<IAISlider
|
||||
label="Denoising Strength"
|
||||
aria-label="High Resolution Denoising Strength"
|
||||
min={min}
|
||||
max={sliderMax}
|
||||
step={step}
|
||||
value={hrfStrength}
|
||||
onChange={handleHrfStrengthChange}
|
||||
withSliderMarks
|
||||
withInput
|
||||
withReset
|
||||
handleReset={handleHrfStrengthReset}
|
||||
isDisabled={!hrfEnabled}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
export default memo(ParamHrfStrength);
|
||||
@@ -1,27 +0,0 @@
|
||||
import { RootState } from 'app/store/store';
|
||||
import { useAppDispatch, useAppSelector } from 'app/store/storeHooks';
|
||||
import IAISwitch from 'common/components/IAISwitch';
|
||||
import { setHrfEnabled } from 'features/parameters/store/generationSlice';
|
||||
import { ChangeEvent, useCallback } from 'react';
|
||||
|
||||
export default function ParamHrfToggle() {
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const hrfEnabled = useAppSelector(
|
||||
(state: RootState) => state.generation.hrfEnabled
|
||||
);
|
||||
|
||||
const handleHrfEnabled = useCallback(
|
||||
(e: ChangeEvent<HTMLInputElement>) =>
|
||||
dispatch(setHrfEnabled(e.target.checked)),
|
||||
[dispatch]
|
||||
);
|
||||
|
||||
return (
|
||||
<IAISwitch
|
||||
label="Enable High Resolution Fix"
|
||||
isChecked={hrfEnabled}
|
||||
onChange={handleHrfEnabled}
|
||||
/>
|
||||
);
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
import { createSelector } from '@reduxjs/toolkit';
|
||||
import { stateSelector } from 'app/store/store';
|
||||
import { useAppDispatch, useAppSelector } from 'app/store/storeHooks';
|
||||
import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions';
|
||||
import IAISlider, { IAIFullSliderProps } from 'common/components/IAISlider';
|
||||
import { roundToMultiple } from 'common/util/roundDownToMultiple';
|
||||
import {
|
||||
setHrfHeight,
|
||||
setHrfWidth,
|
||||
} from 'features/parameters/store/generationSlice';
|
||||
import { memo, useCallback } from 'react';
|
||||
|
||||
function findPrevMultipleOfEight(n: number): number {
|
||||
return Math.floor((n - 1) / 8) * 8;
|
||||
}
|
||||
|
||||
const selector = createSelector(
|
||||
[stateSelector],
|
||||
({ generation, hotkeys, config }) => {
|
||||
const { min, fineStep, coarseStep } = config.sd.width;
|
||||
const { model, width, hrfWidth, aspectRatio, hrfEnabled } = generation;
|
||||
|
||||
const step = hotkeys.shift ? fineStep : coarseStep;
|
||||
|
||||
return {
|
||||
model,
|
||||
width,
|
||||
hrfWidth,
|
||||
min,
|
||||
step,
|
||||
aspectRatio,
|
||||
hrfEnabled,
|
||||
};
|
||||
},
|
||||
defaultSelectorOptions
|
||||
);
|
||||
|
||||
type ParamWidthProps = Omit<IAIFullSliderProps, 'label' | 'value' | 'onChange'>;
|
||||
|
||||
const ParamHrfWidth = (props: ParamWidthProps) => {
|
||||
const { width, hrfWidth, min, step, aspectRatio, hrfEnabled } =
|
||||
useAppSelector(selector);
|
||||
const dispatch = useAppDispatch();
|
||||
const maxHrfWidth = Math.max(findPrevMultipleOfEight(width), min);
|
||||
|
||||
const handleChange = useCallback(
|
||||
(v: number) => {
|
||||
dispatch(setHrfWidth(v));
|
||||
if (aspectRatio) {
|
||||
const newHeight = roundToMultiple(v / aspectRatio, 8);
|
||||
dispatch(setHrfHeight(newHeight));
|
||||
}
|
||||
},
|
||||
[dispatch, aspectRatio]
|
||||
);
|
||||
|
||||
const handleReset = useCallback(() => {
|
||||
dispatch(setHrfWidth(maxHrfWidth));
|
||||
if (aspectRatio) {
|
||||
const newHeight = roundToMultiple(maxHrfWidth / aspectRatio, 8);
|
||||
dispatch(setHrfHeight(newHeight));
|
||||
}
|
||||
}, [dispatch, maxHrfWidth, aspectRatio]);
|
||||
|
||||
return (
|
||||
<IAISlider
|
||||
label="Initial Width"
|
||||
value={hrfWidth}
|
||||
min={min}
|
||||
step={step}
|
||||
max={maxHrfWidth}
|
||||
onChange={handleChange}
|
||||
handleReset={handleReset}
|
||||
withInput
|
||||
withReset
|
||||
withSliderMarks
|
||||
sliderNumberInputProps={{ max: maxHrfWidth }}
|
||||
isDisabled={!hrfEnabled}
|
||||
{...props}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
export default memo(ParamHrfWidth);
|
||||
@@ -7,7 +7,6 @@ import IAIMantineSelect from 'common/components/IAIMantineSelect';
|
||||
import { vaePrecisionChanged } from 'features/parameters/store/generationSlice';
|
||||
import { PrecisionParam } from 'features/parameters/types/parameterSchemas';
|
||||
import { memo, useCallback } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
const selector = createSelector(
|
||||
stateSelector,
|
||||
@@ -21,7 +20,6 @@ const selector = createSelector(
|
||||
const DATA = ['fp16', 'fp32'];
|
||||
|
||||
const ParamVAEModelSelect = () => {
|
||||
const { t } = useTranslation();
|
||||
const dispatch = useAppDispatch();
|
||||
const { vaePrecision } = useAppSelector(selector);
|
||||
|
||||
@@ -39,7 +37,7 @@ const ParamVAEModelSelect = () => {
|
||||
return (
|
||||
<IAIInformationalPopover feature="paramVAEPrecision">
|
||||
<IAIMantineSelect
|
||||
label={t('modelManager.vaePrecision')}
|
||||
label="VAE Precision"
|
||||
value={vaePrecision}
|
||||
data={DATA}
|
||||
onChange={handleChange}
|
||||
|
||||
@@ -5,7 +5,6 @@ import { configChanged } from 'features/system/store/configSlice';
|
||||
import { clamp } from 'lodash-es';
|
||||
import { ImageDTO } from 'services/api/types';
|
||||
|
||||
import { isAnyControlAdapterAdded } from 'features/controlAdapters/store/controlAdaptersSlice';
|
||||
import { clipSkipMap } from '../types/constants';
|
||||
import {
|
||||
CanvasCoherenceModeParam,
|
||||
@@ -27,10 +26,6 @@ import {
|
||||
} from '../types/parameterSchemas';
|
||||
|
||||
export interface GenerationState {
|
||||
hrfHeight: HeightParam;
|
||||
hrfWidth: WidthParam;
|
||||
hrfEnabled: boolean;
|
||||
hrfStrength: StrengthParam;
|
||||
cfgScale: CfgScaleParam;
|
||||
height: HeightParam;
|
||||
img2imgStrength: StrengthParam;
|
||||
@@ -73,10 +68,6 @@ export interface GenerationState {
|
||||
}
|
||||
|
||||
export const initialGenerationState: GenerationState = {
|
||||
hrfHeight: 64,
|
||||
hrfWidth: 64,
|
||||
hrfStrength: 0.75,
|
||||
hrfEnabled: false,
|
||||
cfgScale: 7.5,
|
||||
height: 512,
|
||||
img2imgStrength: 0.75,
|
||||
@@ -279,18 +270,6 @@ export const generationSlice = createSlice({
|
||||
setClipSkip: (state, action: PayloadAction<number>) => {
|
||||
state.clipSkip = action.payload;
|
||||
},
|
||||
setHrfHeight: (state, action: PayloadAction<number>) => {
|
||||
state.hrfHeight = action.payload;
|
||||
},
|
||||
setHrfWidth: (state, action: PayloadAction<number>) => {
|
||||
state.hrfWidth = action.payload;
|
||||
},
|
||||
setHrfStrength: (state, action: PayloadAction<number>) => {
|
||||
state.hrfStrength = action.payload;
|
||||
},
|
||||
setHrfEnabled: (state, action: PayloadAction<boolean>) => {
|
||||
state.hrfEnabled = action.payload;
|
||||
},
|
||||
shouldUseCpuNoiseChanged: (state, action: PayloadAction<boolean>) => {
|
||||
state.shouldUseCpuNoise = action.payload;
|
||||
},
|
||||
@@ -323,15 +302,6 @@ export const generationSlice = createSlice({
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// TODO: This is a temp fix to reduce issues with T2I adapter having a different downscaling
|
||||
// factor than the UNet. Hopefully we get an upstream fix in diffusers.
|
||||
builder.addMatcher(isAnyControlAdapterAdded, (state, action) => {
|
||||
if (action.payload.type === 't2i_adapter') {
|
||||
state.width = roundToMultiple(state.width, 64);
|
||||
state.height = roundToMultiple(state.height, 64);
|
||||
}
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
@@ -375,10 +345,6 @@ export const {
|
||||
setSeamlessXAxis,
|
||||
setSeamlessYAxis,
|
||||
setClipSkip,
|
||||
setHrfHeight,
|
||||
setHrfWidth,
|
||||
setHrfStrength,
|
||||
setHrfEnabled,
|
||||
shouldUseCpuNoiseChanged,
|
||||
setAspectRatio,
|
||||
setShouldLockAspectRatio,
|
||||
|
||||
@@ -210,15 +210,6 @@ export type HeightParam = z.infer<typeof zHeight>;
|
||||
export const isValidHeight = (val: unknown): val is HeightParam =>
|
||||
zHeight.safeParse(val).success;
|
||||
|
||||
/**
|
||||
* Zod schema for resolution parameter
|
||||
*/
|
||||
export const zResolution = z.tuple([zWidth, zHeight]);
|
||||
/**
|
||||
* Type alias for resolution parameter, inferred from its zod schema
|
||||
*/
|
||||
export type ResolutionParam = z.infer<typeof zResolution>;
|
||||
|
||||
export const zBaseModel = z.enum([
|
||||
'any',
|
||||
'sd-1',
|
||||
|
||||
@@ -60,9 +60,9 @@ const QueueButtonTooltipContent = ({ prepend = false }: Props) => {
|
||||
)}
|
||||
<StyledDivider />
|
||||
<Text fontWeight={400} fontStyle="oblique 10deg">
|
||||
{t('parameters.invoke.addingImagesTo')}{' '}
|
||||
Adding images to{' '}
|
||||
<Text as="span" fontWeight={600}>
|
||||
{autoAddBoardName || t('boards.uncategorized')}
|
||||
{autoAddBoardName || 'Uncategorized'}
|
||||
</Text>
|
||||
</Text>
|
||||
</Flex>
|
||||
|
||||
@@ -14,7 +14,6 @@ import { generationSelector } from 'features/parameters/store/generationSelector
|
||||
import { uiSelector } from 'features/ui/store/uiSelectors';
|
||||
import { memo } from 'react';
|
||||
import ParamSDXLImg2ImgDenoisingStrength from './ParamSDXLImg2ImgDenoisingStrength';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
const selector = createSelector(
|
||||
[uiSelector, generationSelector],
|
||||
@@ -30,15 +29,10 @@ const selector = createSelector(
|
||||
);
|
||||
|
||||
const SDXLImageToImageTabCoreParameters = () => {
|
||||
const { t } = useTranslation();
|
||||
const { shouldUseSliders, activeLabel } = useAppSelector(selector);
|
||||
|
||||
return (
|
||||
<IAICollapse
|
||||
label={t('parameters.general')}
|
||||
activeLabel={activeLabel}
|
||||
defaultIsOpen={true}
|
||||
>
|
||||
<IAICollapse label="General" activeLabel={activeLabel} defaultIsOpen={true}>
|
||||
<Flex
|
||||
sx={{
|
||||
flexDirection: 'column',
|
||||
|
||||
@@ -12,7 +12,6 @@ import ParamSteps from 'features/parameters/components/Parameters/Core/ParamStep
|
||||
import ParamSeedFull from 'features/parameters/components/Parameters/Seed/ParamSeedFull';
|
||||
import { memo } from 'react';
|
||||
import ParamSDXLImg2ImgDenoisingStrength from './ParamSDXLImg2ImgDenoisingStrength';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
const selector = createSelector(
|
||||
stateSelector,
|
||||
@@ -28,15 +27,10 @@ const selector = createSelector(
|
||||
);
|
||||
|
||||
const SDXLUnifiedCanvasTabCoreParameters = () => {
|
||||
const { t } = useTranslation();
|
||||
const { shouldUseSliders, activeLabel } = useAppSelector(selector);
|
||||
|
||||
return (
|
||||
<IAICollapse
|
||||
label={t('parameters.general')}
|
||||
activeLabel={activeLabel}
|
||||
defaultIsOpen={true}
|
||||
>
|
||||
<IAICollapse label="General" activeLabel={activeLabel} defaultIsOpen={true}>
|
||||
<Flex
|
||||
sx={{
|
||||
flexDirection: 'column',
|
||||
|
||||
@@ -2,8 +2,6 @@ import { Heading, Text } from '@chakra-ui/react';
|
||||
import { useAppDispatch } from 'app/store/storeHooks';
|
||||
import { controlAdaptersReset } from 'features/controlAdapters/store/controlAdaptersSlice';
|
||||
import { useCallback, useEffect } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useGetQueueStatusQuery } from 'services/api/endpoints/queue';
|
||||
import IAIButton from '../../../../common/components/IAIButton';
|
||||
import {
|
||||
useClearIntermediatesMutation,
|
||||
@@ -14,7 +12,6 @@ import { addToast } from '../../store/systemSlice';
|
||||
import StyledFlex from './StyledFlex';
|
||||
|
||||
export default function SettingsClearIntermediates() {
|
||||
const { t } = useTranslation();
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const { data: intermediatesCount, refetch: updateIntermediatesCount } =
|
||||
@@ -23,62 +20,52 @@ export default function SettingsClearIntermediates() {
|
||||
const [clearIntermediates, { isLoading: isLoadingClearIntermediates }] =
|
||||
useClearIntermediatesMutation();
|
||||
|
||||
const { data: queueStatus } = useGetQueueStatusQuery();
|
||||
const hasPendingItems =
|
||||
queueStatus &&
|
||||
(queueStatus.queue.in_progress > 0 || queueStatus.queue.pending > 0);
|
||||
|
||||
const handleClickClearIntermediates = useCallback(() => {
|
||||
if (hasPendingItems) {
|
||||
return;
|
||||
}
|
||||
|
||||
clearIntermediates()
|
||||
.unwrap()
|
||||
.then((clearedCount) => {
|
||||
.then((response) => {
|
||||
dispatch(controlAdaptersReset());
|
||||
dispatch(resetCanvas());
|
||||
dispatch(
|
||||
addToast({
|
||||
title: t('settings.intermediatesCleared', { count: clearedCount }),
|
||||
title: `Cleared ${response} intermediates`,
|
||||
status: 'info',
|
||||
})
|
||||
);
|
||||
})
|
||||
.catch(() => {
|
||||
dispatch(
|
||||
addToast({
|
||||
title: t('settings.intermediatesClearedFailed'),
|
||||
status: 'error',
|
||||
})
|
||||
);
|
||||
});
|
||||
}, [t, clearIntermediates, dispatch, hasPendingItems]);
|
||||
}, [clearIntermediates, dispatch]);
|
||||
|
||||
useEffect(() => {
|
||||
// update the count on mount
|
||||
updateIntermediatesCount();
|
||||
}, [updateIntermediatesCount]);
|
||||
|
||||
const buttonText = intermediatesCount
|
||||
? `Clear ${intermediatesCount} Intermediate${
|
||||
intermediatesCount > 1 ? 's' : ''
|
||||
}`
|
||||
: 'No Intermediates to Clear';
|
||||
|
||||
return (
|
||||
<StyledFlex>
|
||||
<Heading size="sm">{t('settings.clearIntermediates')}</Heading>
|
||||
<Heading size="sm">Clear Intermediates</Heading>
|
||||
<IAIButton
|
||||
tooltip={
|
||||
hasPendingItems ? t('settings.clearIntermediatesDisabled') : undefined
|
||||
}
|
||||
colorScheme="warning"
|
||||
onClick={handleClickClearIntermediates}
|
||||
isLoading={isLoadingClearIntermediates}
|
||||
isDisabled={!intermediatesCount || hasPendingItems}
|
||||
isDisabled={!intermediatesCount}
|
||||
>
|
||||
{t('settings.clearIntermediatesWithCount', {
|
||||
count: intermediatesCount ?? 0,
|
||||
})}
|
||||
{buttonText}
|
||||
</IAIButton>
|
||||
<Text fontWeight="bold">{t('settings.clearIntermediatesDesc1')}</Text>
|
||||
<Text variant="subtext">{t('settings.clearIntermediatesDesc2')}</Text>
|
||||
<Text variant="subtext">{t('settings.clearIntermediatesDesc3')}</Text>
|
||||
<Text fontWeight="bold">
|
||||
Clearing intermediates will reset your Canvas and ControlNet state.
|
||||
</Text>
|
||||
<Text variant="subtext">
|
||||
Intermediate images are byproducts of generation, different from the
|
||||
result images in the gallery. Clearing intermediates will free disk
|
||||
space.
|
||||
</Text>
|
||||
<Text variant="subtext">Your gallery images will not be deleted.</Text>
|
||||
</StyledFlex>
|
||||
);
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user