make InvokeAI package installable

This commit makes InvokeAI 3.0 to be installable via PyPi.org and the
installer script.

Main changes.

1. Move static web pages into `invokeai/frontend/web` and modify the
API to look for them there. This allows pip to copy the files into the
distribution directory so that user no longer has to be in repo root
to launch.

2. Update invoke.sh and invoke.bat to launch the new web application
properly. This also changes the wording for launching the CLI from
"generate images" to "explore the InvokeAI node system," since I would
not recommend using the CLI to generate images routinely.

3. Fix a bug in the checkpoint converter script that was identified
during testing.

4. Better error reporting when checkpoint converter fails.

5. Rebuild front end.
This commit is contained in:
Lincoln Stein 2023-05-22 17:51:47 -04:00
parent d4fb16825e
commit d2dc1ed26f
89 changed files with 743 additions and 810 deletions

View File

@ -7,26 +7,26 @@ call .venv\Scripts\activate.bat
set INVOKEAI_ROOT=. set INVOKEAI_ROOT=.
:start :start
echo Do you want to generate images using the echo Desired action:
echo 1. command-line interface echo 1. Generate images with the browser-based interface
echo 2. browser-based UI echo 2. Explore InvokeAI nodes using a command-line interface
echo 3. run textual inversion training echo 3. Run textual inversion training
echo 4. merge models (diffusers type only) echo 4. Merge models (diffusers type only)
echo 5. download and install models echo 5. Download and install models
echo 6. change InvokeAI startup options echo 6. Change InvokeAI startup options
echo 7. re-run the configure script to fix a broken install echo 7. Re-run the configure script to fix a broken install
echo 8. open the developer console echo 8. Open the developer console
echo 9. update InvokeAI echo 9. Update InvokeAI
echo 10. command-line help echo 10. Command-line help
echo Q - quit echo Q - Quit
set /P restore="Please enter 1-10, Q: [2] " set /P restore="Please enter 1-10, Q: [2] "
if not defined restore set restore=2 if not defined restore set restore=2
IF /I "%restore%" == "1" ( IF /I "%restore%" == "1" (
echo Starting the InvokeAI command-line..
python .venv\Scripts\invokeai.exe %*
) ELSE IF /I "%restore%" == "2" (
echo Starting the InvokeAI browser-based UI.. echo Starting the InvokeAI browser-based UI..
python .venv\Scripts\invokeai-web.exe %* python .venv\Scripts\invokeai-web.exe %*
) ELSE IF /I "%restore%" == "2" (
echo Starting the InvokeAI command-line..
python .venv\Scripts\invokeai.exe %*
) ELSE IF /I "%restore%" == "3" ( ) ELSE IF /I "%restore%" == "3" (
echo Starting textual inversion training.. echo Starting textual inversion training..
python .venv\Scripts\invokeai-ti.exe --gui python .venv\Scripts\invokeai-ti.exe --gui

View File

@ -1,5 +1,10 @@
#!/bin/bash #!/bin/bash
# MIT License
# Coauthored by Lincoln Stein, Eugene Brodsky and Joshua Kimsey
# Copyright 2023, The InvokeAI Development Team
#### ####
# This launch script assumes that: # This launch script assumes that:
# 1. it is located in the runtime directory, # 1. it is located in the runtime directory,
@ -11,85 +16,168 @@
set -eu set -eu
# ensure we're in the correct folder in case user's CWD is somewhere else # Ensure we're in the correct folder in case user's CWD is somewhere else
scriptdir=$(dirname "$0") scriptdir=$(dirname "$0")
cd "$scriptdir" cd "$scriptdir"
. .venv/bin/activate . .venv/bin/activate
export INVOKEAI_ROOT="$scriptdir" export INVOKEAI_ROOT="$scriptdir"
PARAMS=$@
# set required env var for torch on mac MPS # Check to see if dialog is installed (it seems to be fairly standard, but good to check regardless) and if the user has passed the --no-tui argument to disable the dialog TUI
tui=true
if command -v dialog &>/dev/null; then
# This must use $@ to properly loop through the arguments passed by the user
for arg in "$@"; do
if [ "$arg" == "--no-tui" ]; then
tui=false
# Remove the --no-tui argument to avoid errors later on when passing arguments to InvokeAI
PARAMS=$(echo "$PARAMS" | sed 's/--no-tui//')
break
fi
done
else
tui=false
fi
# Set required env var for torch on mac MPS
if [ "$(uname -s)" == "Darwin" ]; then if [ "$(uname -s)" == "Darwin" ]; then
export PYTORCH_ENABLE_MPS_FALLBACK=1 export PYTORCH_ENABLE_MPS_FALLBACK=1
fi fi
if [ "$0" != "bash" ]; then # Primary function for the case statement to determine user input
while true do_choice() {
do case $1 in
echo "Do you want to generate images using the"
echo "1. command-line interface"
echo "2. browser-based UI"
echo "3. run textual inversion training"
echo "4. merge models (diffusers type only)"
echo "5. download and install models"
echo "6. change InvokeAI startup options"
echo "7. re-run the configure script to fix a broken install"
echo "8. open the developer console"
echo "9. update InvokeAI"
echo "10. command-line help"
echo "Q - Quit"
echo ""
read -p "Please enter 1-10, Q: [2] " yn
choice=${yn:='2'}
case $choice in
1) 1)
echo "Starting the InvokeAI command-line..." clear
invokeai $@ printf "Generate images with a browser-based interface\n"
invokeai-web $PARAMS
;; ;;
2) 2)
echo "Starting the InvokeAI browser-based UI..." clear
invokeai-web $@ printf "Explore InvokeAI nodes using a command-line interface\n"
invokeai $PARAMS
;; ;;
3) 3)
echo "Starting Textual Inversion:" clear
invokeai-ti --gui $@ printf "Textual inversion training\n"
invokeai-ti --gui $PARAMS
;; ;;
4) 4)
echo "Merging Models:" clear
invokeai-merge --gui $@ printf "Merge models (diffusers type only)\n"
invokeai-merge --gui $PARAMS
;; ;;
5) 5)
clear
printf "Download and install models\n"
invokeai-model-install --root ${INVOKEAI_ROOT} invokeai-model-install --root ${INVOKEAI_ROOT}
;; ;;
6) 6)
clear
printf "Change InvokeAI startup options\n"
invokeai-configure --root ${INVOKEAI_ROOT} --skip-sd-weights --skip-support-models invokeai-configure --root ${INVOKEAI_ROOT} --skip-sd-weights --skip-support-models
;; ;;
7) 7)
clear
printf "Re-run the configure script to fix a broken install\n"
invokeai-configure --root ${INVOKEAI_ROOT} --yes --default_only invokeai-configure --root ${INVOKEAI_ROOT} --yes --default_only
;; ;;
8) 8)
echo "Developer Console:" clear
printf "Open the developer console\n"
file_name=$(basename "${BASH_SOURCE[0]}") file_name=$(basename "${BASH_SOURCE[0]}")
bash --init-file "$file_name" bash --init-file "$file_name"
;; ;;
9) 9)
echo "Update:" clear
printf "Update InvokeAI\n"
invokeai-update invokeai-update
;; ;;
10) 10)
clear
printf "Command-line help\n"
invokeai --help invokeai --help
;; ;;
[qQ]) "HELP 1")
exit 0 clear
printf "Command-line help\n"
invokeai --help
;; ;;
*) *)
echo "Invalid selection" clear
exit;; printf "Exiting...\n"
exit
;;
esac esac
clear
}
# Dialog-based TUI for launcing Invoke functions
do_dialog() {
options=(
1 "Generate images with a browser-based interface"
2 "Generate images using a command-line interface"
3 "Textual inversion training"
4 "Merge models (diffusers type only)"
5 "Download and install models"
6 "Change InvokeAI startup options"
7 "Re-run the configure script to fix a broken install"
8 "Open the developer console"
9 "Update InvokeAI")
choice=$(dialog --clear \
--backtitle "\Zb\Zu\Z3InvokeAI" \
--colors \
--title "What would you like to do?" \
--ok-label "Run" \
--cancel-label "Exit" \
--help-button \
--help-label "CLI Help" \
--menu "Select an option:" \
0 0 0 \
"${options[@]}" \
2>&1 >/dev/tty) || clear
do_choice "$choice"
clear
}
# Command-line interface for launching Invoke functions
do_line_input() {
clear
printf " ** For a more attractive experience, please install the 'dialog' utility using your package manager. **\n\n"
printf "What would you like to do?\n"
printf "1: Generate images using the browser-based interface\n"
printf "2: Explore InvokeAI nodes using the command-line interface\n"
printf "3: Run textual inversion training\n"
printf "4: Merge models (diffusers type only)\n"
printf "5: Download and install models\n"
printf "6: Change InvokeAI startup options\n"
printf "7: Re-run the configure script to fix a broken install\n"
printf "8: Open the developer console\n"
printf "9: Update InvokeAI\n"
printf "10: Command-line help\n"
printf "Q: Quit\n\n"
read -p "Please enter 1-10, Q: [1] " yn
choice=${yn:='1'}
do_choice $choice
clear
}
# Main IF statement for launching Invoke with either the TUI or CLI, and for checking if the user is in the developer console
if [ "$0" != "bash" ]; then
while true; do
if $tui; then
# .dialogrc must be located in the same directory as the invoke.sh script
export DIALOGRC="./.dialogrc"
do_dialog
else
do_line_input
fi
done done
else # in developer console else # in developer console
python --version python --version
echo "Press ^D to exit" printf "Press ^D to exit\n"
export PS1="(InvokeAI) \u@\h \w> " export PS1="(InvokeAI) \u@\h \w> "
fi fi

View File

@ -46,9 +46,7 @@ class ApiDependencies:
events = FastAPIEventService(event_handler_id) events = FastAPIEventService(event_handler_id)
output_folder = os.path.abspath( output_folder = config.output_path
os.path.join(os.path.dirname(__file__), "../../../../outputs")
)
latents = ForwardCacheLatentsStorage(DiskLatentsStorage(f'{output_folder}/latents')) latents = ForwardCacheLatentsStorage(DiskLatentsStorage(f'{output_folder}/latents'))

View File

@ -123,8 +123,8 @@ def install_requested_models(
if scan_at_startup and scan_directory.is_dir(): if scan_at_startup and scan_directory.is_dir():
argument = "--autoconvert" argument = "--autoconvert"
print('** The global initfile is no longer supported; rewrite to support new yaml format **') print('** The global initfile is no longer supported; rewrite to support new yaml format **')
initfile = Path(config.root, 'invokeai.init') initfile = Path(config.root_dir, 'invokeai.init')
replacement = Path(config.root, f"invokeai.init.new") replacement = Path(config.root_dir, f"invokeai.init.new")
directory = str(scan_directory).replace("\\", "/") directory = str(scan_directory).replace("\\", "/")
with open(initfile, "r") as input: with open(initfile, "r") as input:
with open(replacement, "w") as output: with open(replacement, "w") as output:
@ -149,10 +149,8 @@ def yes_or_no(prompt: str, default_yes=True):
def get_root(root: str = None) -> str: def get_root(root: str = None) -> str:
if root: if root:
return root return root
elif os.environ.get("INVOKEAI_ROOT"):
return os.environ.get("INVOKEAI_ROOT")
else: else:
return config.root return config.root_dir
# --------------------------------------------- # ---------------------------------------------
@ -185,7 +183,7 @@ def all_datasets() -> dict:
# look for legacy model.ckpt in models directory and offer to # look for legacy model.ckpt in models directory and offer to
# normalize its name # normalize its name
def migrate_models_ckpt(): def migrate_models_ckpt():
model_path = os.path.join(config.root, Model_dir, Weights_dir) model_path = os.path.join(config.root_dir, Model_dir, Weights_dir)
if not os.path.exists(os.path.join(model_path, "model.ckpt")): if not os.path.exists(os.path.join(model_path, "model.ckpt")):
return return
new_name = initial_models()["stable-diffusion-1.4"]["file"] new_name = initial_models()["stable-diffusion-1.4"]["file"]
@ -230,7 +228,7 @@ def _download_repo_or_file(
def _download_ckpt_weights(mconfig: DictConfig, access_token: str) -> Path: def _download_ckpt_weights(mconfig: DictConfig, access_token: str) -> Path:
repo_id = mconfig["repo_id"] repo_id = mconfig["repo_id"]
filename = mconfig["file"] filename = mconfig["file"]
cache_dir = os.path.join(config.root, Model_dir, Weights_dir) cache_dir = os.path.join(config.root_dir, Model_dir, Weights_dir)
return hf_download_with_resume( return hf_download_with_resume(
repo_id=repo_id, repo_id=repo_id,
model_dir=cache_dir, model_dir=cache_dir,
@ -419,7 +417,7 @@ def new_config_file_contents(
stanza["height"] = mod["height"] stanza["height"] = mod["height"]
if "file" in mod: if "file" in mod:
stanza["weights"] = os.path.relpath( stanza["weights"] = os.path.relpath(
successfully_downloaded[model], start=config.root successfully_downloaded[model], start=config.root_dir
) )
stanza["config"] = os.path.normpath( stanza["config"] = os.path.normpath(
os.path.join(sd_configs(), mod["config"]) os.path.join(sd_configs(), mod["config"])
@ -458,7 +456,7 @@ def delete_weights(model_name: str, conf_stanza: dict):
weights = Path(weights) weights = Path(weights)
if not weights.is_absolute(): if not weights.is_absolute():
weights = Path(config.root) / weights weights = config.root_dir / weights
try: try:
weights.unlink() weights.unlink()
except OSError as e: except OSError as e:

View File

@ -1092,7 +1092,8 @@ def load_pipeline_from_original_stable_diffusion_ckpt(
:param vae: A diffusers VAE to load into the pipeline. :param vae: A diffusers VAE to load into the pipeline.
:param vae_path: Path to a checkpoint VAE that will be converted into diffusers and loaded into the pipeline. :param vae_path: Path to a checkpoint VAE that will be converted into diffusers and loaded into the pipeline.
""" """
config = get_invokeai_config() invoke_config = get_invokeai_config()
cache_dir = invoke_config.cache_dir
with warnings.catch_warnings(): with warnings.catch_warnings():
warnings.simplefilter("ignore") warnings.simplefilter("ignore")
verbosity = dlogging.get_verbosity() verbosity = dlogging.get_verbosity()
@ -1105,7 +1106,6 @@ def load_pipeline_from_original_stable_diffusion_ckpt(
else: else:
checkpoint = load_file(checkpoint_path) checkpoint = load_file(checkpoint_path)
cache_dir = config.cache_dir
pipeline_class = ( pipeline_class = (
StableDiffusionGeneratorPipeline StableDiffusionGeneratorPipeline
if return_generator_pipeline if return_generator_pipeline
@ -1297,7 +1297,7 @@ def load_pipeline_from_original_stable_diffusion_ckpt(
) )
safety_checker = StableDiffusionSafetyChecker.from_pretrained( safety_checker = StableDiffusionSafetyChecker.from_pretrained(
"CompVis/stable-diffusion-safety-checker", "CompVis/stable-diffusion-safety-checker",
cache_dir=config.cache_dir, cache_dir=cache_dir,
) )
feature_extractor = AutoFeatureExtractor.from_pretrained( feature_extractor = AutoFeatureExtractor.from_pretrained(
"CompVis/stable-diffusion-safety-checker", cache_dir=cache_dir "CompVis/stable-diffusion-safety-checker", cache_dir=cache_dir

View File

@ -14,6 +14,7 @@ import re
import sys import sys
import textwrap import textwrap
import time import time
import traceback
import warnings import warnings
from enum import Enum, auto from enum import Enum, auto
from pathlib import Path from pathlib import Path
@ -974,6 +975,7 @@ class ModelManager(object):
self.logger.debug("Conversion succeeded") self.logger.debug("Conversion succeeded")
except Exception as e: except Exception as e:
self.logger.warning(f"Conversion failed: {str(e)}") self.logger.warning(f"Conversion failed: {str(e)}")
self.logger.warning(traceback.format_exc())
self.logger.warning( self.logger.warning(
"If you are trying to convert an inpainting or 2.X model, please indicate the correct config file (e.g. v1-inpainting-inference.yaml)" "If you are trying to convert an inpainting or 2.X model, please indicate the correct config file (e.g. v1-inpainting-inference.yaml)"
) )

View File

@ -331,7 +331,7 @@ def download_with_resume(url: str, dest: Path, access_token: str = None) -> Path
elif resp.status_code != 200: elif resp.status_code != 200:
logger.error(f"An error occurred during downloading {dest}: {resp.reason}") logger.error(f"An error occurred during downloading {dest}: {resp.reason}")
else: else:
logger.error(f"{dest}: Downloading...") logger.info(f"{dest}: Downloading...")
try: try:
if content_length < 2000: if content_length < 2000:

View File

@ -4,14 +4,14 @@ pip install <path_to_git_source>.
''' '''
import os import os
import platform import platform
import pkg_resources
import psutil
import requests import requests
from rich import box, print from rich import box, print
from rich.console import Console, Group, group from rich.console import Console, group
from rich.panel import Panel from rich.panel import Panel
from rich.prompt import Prompt from rich.prompt import Prompt
from rich.style import Style from rich.style import Style
from rich.syntax import Syntax
from rich.text import Text
from invokeai.version import __version__ from invokeai.version import __version__
@ -32,6 +32,18 @@ else:
def get_versions()->dict: def get_versions()->dict:
return requests.get(url=INVOKE_AI_REL).json() return requests.get(url=INVOKE_AI_REL).json()
def invokeai_is_running()->bool:
for p in psutil.process_iter():
try:
cmdline = p.cmdline()
matches = [x for x in cmdline if x.endswith(('invokeai','invokeai.exe'))]
if matches:
print(f':exclamation: [bold red]An InvokeAI instance appears to be running as process {p.pid}[/red bold]')
return True
except (psutil.AccessDenied,psutil.NoSuchProcess):
continue
return False
def welcome(versions: dict): def welcome(versions: dict):
@group() @group()
@ -60,8 +72,22 @@ def welcome(versions: dict):
) )
console.line() console.line()
def get_extras():
extras = ''
try:
dist = pkg_resources.get_distribution('xformers')
extras = '[xformers]'
except pkg_resources.DistributionNotFound:
pass
return extras
def main(): def main():
versions = get_versions() versions = get_versions()
if invokeai_is_running():
print(f':exclamation: [bold red]Please terminate all running instances of InvokeAI before updating.[/red bold]')
input('Press any key to continue...')
return
welcome(versions) welcome(versions)
tag = None tag = None
@ -78,13 +104,15 @@ def main():
elif choice=='4': elif choice=='4':
branch = Prompt.ask('Enter an InvokeAI branch name') branch = Prompt.ask('Enter an InvokeAI branch name')
extras = get_extras()
print(f':crossed_fingers: Upgrading to [yellow]{tag if tag else release}[/yellow]') print(f':crossed_fingers: Upgrading to [yellow]{tag if tag else release}[/yellow]')
if release: if release:
cmd = f'pip install {INVOKE_AI_SRC}/{release}.zip --use-pep517 --upgrade' cmd = f"pip install 'invokeai{extras} @ {INVOKE_AI_SRC}/{release}.zip' --use-pep517 --upgrade"
elif tag: elif tag:
cmd = f'pip install {INVOKE_AI_TAG}/{tag}.zip --use-pep517 --upgrade' cmd = f"pip install 'invokeai{extras} @ {INVOKE_AI_TAG}/{tag}.zip' --use-pep517 --upgrade"
else: else:
cmd = f'pip install {INVOKE_AI_BRANCH}/{branch}.zip --use-pep517 --upgrade' cmd = f"pip install 'invokeai{extras} @ {INVOKE_AI_BRANCH}/{branch}.zip' --use-pep517 --upgrade"
print('') print('')
print('') print('')
if os.system(cmd)==0: if os.system(cmd)==0:

View File

@ -456,7 +456,7 @@ def main():
# setting a global here # setting a global here
config.root = os.path.expanduser(get_root(opt.root) or "") config.root = os.path.expanduser(get_root(opt.root) or "")
if not (config.conf_path / '..' ).exists(): if not (config.root_dir / config.conf_path.parent).exists():
logger.info( logger.info(
"Your InvokeAI root directory is not set up. Calling invokeai-configure." "Your InvokeAI root directory is not set up. Calling invokeai-configure."
) )

View File

@ -1 +0,0 @@
.ltr-image-gallery-css-transition-enter{transform:translate(150%)}.ltr-image-gallery-css-transition-enter-active{transform:translate(0);transition:all .12s ease-out}.ltr-image-gallery-css-transition-exit{transform:translate(0)}.ltr-image-gallery-css-transition-exit-active{transform:translate(150%);transition:all .12s ease-out}.rtl-image-gallery-css-transition-enter{transform:translate(-150%)}.rtl-image-gallery-css-transition-enter-active{transform:translate(0);transition:all .12s ease-out}.rtl-image-gallery-css-transition-exit{transform:translate(0)}.rtl-image-gallery-css-transition-exit-active{transform:translate(-150%);transition:all .12s ease-out}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -12,8 +12,7 @@
margin: 0; margin: 0;
} }
</style> </style>
<script type="module" crossorigin src="./assets/index-e53e8108.js"></script> <script type="module" crossorigin src="./assets/index-6bec0420.js"></script>
<link rel="stylesheet" href="./assets/index-5483945c.css">
</head> </head>
<body dir="ltr"> <body dir="ltr">

View File

@ -18,7 +18,7 @@
"training": "Training", "training": "Training",
"trainingDesc1": "Ein spezieller Arbeitsablauf zum Trainieren Ihrer eigenen Embeddings und Checkpoints mit Textual Inversion und Dreambooth über die Weboberfläche.", "trainingDesc1": "Ein spezieller Arbeitsablauf zum Trainieren Ihrer eigenen Embeddings und Checkpoints mit Textual Inversion und Dreambooth über die Weboberfläche.",
"trainingDesc2": "InvokeAI unterstützt bereits das Training von benutzerdefinierten Embeddings mit Textual Inversion unter Verwendung des Hauptskripts.", "trainingDesc2": "InvokeAI unterstützt bereits das Training von benutzerdefinierten Embeddings mit Textual Inversion unter Verwendung des Hauptskripts.",
"upload": "Upload", "upload": "Hochladen",
"close": "Schließen", "close": "Schließen",
"load": "Laden", "load": "Laden",
"statusConnected": "Verbunden", "statusConnected": "Verbunden",
@ -41,12 +41,34 @@
"statusUpscaling": "Hochskalierung", "statusUpscaling": "Hochskalierung",
"statusUpscalingESRGAN": "Hochskalierung (ESRGAN)", "statusUpscalingESRGAN": "Hochskalierung (ESRGAN)",
"statusLoadingModel": "Laden des Modells", "statusLoadingModel": "Laden des Modells",
"statusModelChanged": "Modell Geändert" "statusModelChanged": "Modell Geändert",
"cancel": "Abbruch",
"accept": "Annehmen",
"back": "Zurück",
"langEnglish": "Englisch",
"langDutch": "Niederländisch",
"langFrench": "Französisch",
"oceanTheme": "Ozean",
"langItalian": "Italienisch",
"langPortuguese": "Portogisisch",
"langRussian": "Russisch",
"langUkranian": "Ukrainisch",
"hotkeysLabel": "Tastenkombinationen",
"githubLabel": "Github",
"discordLabel": "Discord",
"txt2img": "Text zu Bild",
"postprocessing": "Nachbearbeitung",
"langPolish": "Polnisch",
"langJapanese": "Japanisch",
"langArabic": "Arabisch",
"langKorean": "Koreanisch",
"langHebrew": "Hebräisch",
"langSpanish": "Spanisch"
}, },
"gallery": { "gallery": {
"generations": "Erzeugungen", "generations": "Erzeugungen",
"showGenerations": "Zeige Erzeugnisse", "showGenerations": "Zeige Erzeugnisse",
"uploads": "Uploads", "uploads": "Hochgelades",
"showUploads": "Zeige Uploads", "showUploads": "Zeige Uploads",
"galleryImageSize": "Bildgröße", "galleryImageSize": "Bildgröße",
"galleryImageResetSize": "Größe zurücksetzen", "galleryImageResetSize": "Größe zurücksetzen",
@ -312,7 +334,11 @@
"deleteModel": "Model löschen", "deleteModel": "Model löschen",
"deleteConfig": "Konfiguration löschen", "deleteConfig": "Konfiguration löschen",
"deleteMsg1": "Möchten Sie diesen Model-Eintrag wirklich aus InvokeAI löschen?", "deleteMsg1": "Möchten Sie diesen Model-Eintrag wirklich aus InvokeAI löschen?",
"deleteMsg2": "Dadurch wird die Modellprüfpunktdatei nicht von Ihrer Festplatte gelöscht. Sie können sie bei Bedarf erneut hinzufügen." "deleteMsg2": "Dadurch wird die Modellprüfpunktdatei nicht von Ihrer Festplatte gelöscht. Sie können sie bei Bedarf erneut hinzufügen.",
"customConfig": "Benutzerdefinierte Konfiguration",
"invokeRoot": "InvokeAI Ordner",
"formMessageDiffusersVAELocationDesc": "Falls nicht angegeben, sucht InvokeAI nach der VAE-Datei innerhalb des oben angegebenen Modell Speicherortes.",
"checkpointModels": "Kontrollpunkte"
}, },
"parameters": { "parameters": {
"images": "Bilder", "images": "Bilder",
@ -370,7 +396,10 @@
"useInitImg": "Ausgangsbild verwenden", "useInitImg": "Ausgangsbild verwenden",
"deleteImage": "Bild löschen", "deleteImage": "Bild löschen",
"initialImage": "Ursprüngliches Bild", "initialImage": "Ursprüngliches Bild",
"showOptionsPanel": "Optionsleiste zeigen" "showOptionsPanel": "Optionsleiste zeigen",
"cancel": {
"setType": "Abbruchart festlegen"
}
}, },
"settings": { "settings": {
"displayInProgress": "Bilder in Bearbeitung anzeigen", "displayInProgress": "Bilder in Bearbeitung anzeigen",
@ -489,5 +518,25 @@
"betaDarkenOutside": "Außen abdunkeln", "betaDarkenOutside": "Außen abdunkeln",
"betaLimitToBox": "Begrenzung auf das Feld", "betaLimitToBox": "Begrenzung auf das Feld",
"betaPreserveMasked": "Maskiertes bewahren" "betaPreserveMasked": "Maskiertes bewahren"
},
"accessibility": {
"modelSelect": "Model Auswahl",
"uploadImage": "Bild hochladen",
"previousImage": "Voriges Bild",
"useThisParameter": "Benutze diesen Parameter",
"copyMetadataJson": "Kopiere metadata JSON",
"zoomIn": "Vergrößern",
"rotateClockwise": "Im Uhrzeigersinn drehen",
"flipHorizontally": "Horizontal drehen",
"flipVertically": "Vertikal drehen",
"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",
"zoomOut": "Verkleinern",
"rotateCounterClockwise": "Gegen den Uhrzeigersinn verdrehen"
} }
} }

View File

@ -19,12 +19,13 @@
"toggleAutoscroll": "Toggle autoscroll", "toggleAutoscroll": "Toggle autoscroll",
"toggleLogViewer": "Toggle Log Viewer", "toggleLogViewer": "Toggle Log Viewer",
"showGallery": "Show Gallery", "showGallery": "Show Gallery",
"showOptionsPanel": "Show Options Panel" "showOptionsPanel": "Show Options Panel",
"menu": "Menu"
}, },
"common": { "common": {
"hotkeysLabel": "Hotkeys", "hotkeysLabel": "Hotkeys",
"themeLabel": "Theme", "themeLabel": "Theme",
"languagePickerLabel": "Language Picker", "languagePickerLabel": "Language",
"reportBugLabel": "Report Bug", "reportBugLabel": "Report Bug",
"githubLabel": "Github", "githubLabel": "Github",
"discordLabel": "Discord", "discordLabel": "Discord",
@ -52,7 +53,8 @@
"txt2img": "Text To Image", "txt2img": "Text To Image",
"img2img": "Image To Image", "img2img": "Image To Image",
"unifiedCanvas": "Unified Canvas", "unifiedCanvas": "Unified Canvas",
"nodes": "Nodes", "linear": "Linear",
"nodes": "Node Editor",
"postprocessing": "Post Processing", "postprocessing": "Post Processing",
"nodesDesc": "A node based system for the generation of images is under development currently. Stay tuned for updates about this amazing feature.", "nodesDesc": "A node based system for the generation of images is under development currently. Stay tuned for updates about this amazing feature.",
"postProcessing": "Post Processing", "postProcessing": "Post Processing",
@ -61,7 +63,7 @@
"postProcessDesc3": "The Invoke AI Command Line Interface offers various other features including Embiggen.", "postProcessDesc3": "The Invoke AI Command Line Interface offers various other features including Embiggen.",
"training": "Training", "training": "Training",
"trainingDesc1": "A dedicated workflow for training your own embeddings and checkpoints using Textual Inversion and Dreambooth from the web interface.", "trainingDesc1": "A dedicated workflow for training your own embeddings and checkpoints using Textual Inversion and Dreambooth from the web interface.",
"trainingDesc2": "InvokeAI already supports training custom embeddings using Textual Inversion using the main script.", "trainingDesc2": "InvokeAI already supports training custom embeddourings using Textual Inversion using the main script.",
"upload": "Upload", "upload": "Upload",
"close": "Close", "close": "Close",
"cancel": "Cancel", "cancel": "Cancel",
@ -95,7 +97,13 @@
"statusMergedModels": "Models Merged", "statusMergedModels": "Models Merged",
"pinOptionsPanel": "Pin Options Panel", "pinOptionsPanel": "Pin Options Panel",
"loading": "Loading", "loading": "Loading",
"loadingInvokeAI": "Loading Invoke AI" "loadingInvokeAI": "Loading Invoke AI",
"random": "Random",
"generate": "Generate",
"openInNewTab": "Open in New Tab",
"dontAskMeAgain": "Don't ask me again",
"areYouSure": "Are you sure?",
"imagePrompt": "Image Prompt"
}, },
"gallery": { "gallery": {
"generations": "Generations", "generations": "Generations",
@ -111,7 +119,10 @@
"pinGallery": "Pin Gallery", "pinGallery": "Pin Gallery",
"allImagesLoaded": "All Images Loaded", "allImagesLoaded": "All Images Loaded",
"loadMore": "Load More", "loadMore": "Load More",
"noImagesInGallery": "No Images In Gallery" "noImagesInGallery": "No Images In Gallery",
"deleteImage": "Delete Image",
"deleteImageBin": "Deleted images will be sent to your operating system's Bin.",
"deleteImagePermanent": "Deleted images cannot be restored."
}, },
"hotkeys": { "hotkeys": {
"keyboardShortcuts": "Keyboard Shortcuts", "keyboardShortcuts": "Keyboard Shortcuts",
@ -439,13 +450,14 @@
"cfgScale": "CFG Scale", "cfgScale": "CFG Scale",
"width": "Width", "width": "Width",
"height": "Height", "height": "Height",
"sampler": "Sampler", "scheduler": "Scheduler",
"seed": "Seed", "seed": "Seed",
"imageToImage": "Image to Image", "imageToImage": "Image to Image",
"randomizeSeed": "Randomize Seed", "randomizeSeed": "Randomize Seed",
"shuffle": "Shuffle", "shuffle": "Shuffle Seed",
"noiseThreshold": "Noise Threshold", "noiseThreshold": "Noise Threshold",
"perlinNoise": "Perlin Noise", "perlinNoise": "Perlin Noise",
"noiseSettings": "Noise",
"variations": "Variations", "variations": "Variations",
"variationAmount": "Variation Amount", "variationAmount": "Variation Amount",
"seedWeights": "Seed Weights", "seedWeights": "Seed Weights",
@ -460,6 +472,8 @@
"scale": "Scale", "scale": "Scale",
"otherOptions": "Other Options", "otherOptions": "Other Options",
"seamlessTiling": "Seamless Tiling", "seamlessTiling": "Seamless Tiling",
"seamlessXAxis": "X Axis",
"seamlessYAxis": "Y Axis",
"hiresOptim": "High Res Optimization", "hiresOptim": "High Res Optimization",
"hiresStrength": "High Res Strength", "hiresStrength": "High Res Strength",
"imageFit": "Fit Initial Image To Output Size", "imageFit": "Fit Initial Image To Output Size",
@ -503,7 +517,6 @@
"useAll": "Use All", "useAll": "Use All",
"useInitImg": "Use Initial Image", "useInitImg": "Use Initial Image",
"info": "Info", "info": "Info",
"deleteImage": "Delete Image",
"initialImage": "Initial Image", "initialImage": "Initial Image",
"showOptionsPanel": "Show Options Panel", "showOptionsPanel": "Show Options Panel",
"hidePreview": "Hide Preview", "hidePreview": "Hide Preview",
@ -518,21 +531,35 @@
"useCanvasBeta": "Use Canvas Beta Layout", "useCanvasBeta": "Use Canvas Beta Layout",
"enableImageDebugging": "Enable Image Debugging", "enableImageDebugging": "Enable Image Debugging",
"useSlidersForAll": "Use Sliders For All Options", "useSlidersForAll": "Use Sliders For All Options",
"showProgressInViewer": "Show Progress Images in Viewer",
"antialiasProgressImages": "Antialias Progress Images",
"resetWebUI": "Reset Web UI", "resetWebUI": "Reset Web UI",
"resetWebUIDesc1": "Resetting the web UI only resets the browser's local cache of your images and remembered settings. It does not delete any images from disk.", "resetWebUIDesc1": "Resetting the web UI only resets the browser's local cache of your images and remembered settings. It does not delete any images from disk.",
"resetWebUIDesc2": "If images aren't showing up in the gallery or something else isn't working, please try resetting before submitting an issue on GitHub.", "resetWebUIDesc2": "If images aren't showing up in the gallery or something else isn't working, please try resetting before submitting an issue on GitHub.",
"resetComplete": "Web UI has been reset. Refresh the page to reload." "resetComplete": "Web UI has been reset. Refresh the page to reload.",
"consoleLogLevel": "Log Level",
"shouldLogToConsole": "Console Logging",
"developer": "Developer",
"general": "General",
"generation": "Generation",
"ui": "User Interface",
"availableSchedulers": "Available Schedulers"
}, },
"toast": { "toast": {
"serverError": "Server Error",
"disconnected": "Disconnected from Server",
"connected": "Connected to Server",
"canceled": "Processing Canceled",
"tempFoldersEmptied": "Temp Folder Emptied", "tempFoldersEmptied": "Temp Folder Emptied",
"uploadFailed": "Upload failed", "uploadFailed": "Upload failed",
"uploadFailedMultipleImagesDesc": "Multiple images pasted, may only upload one image at a time",
"uploadFailedUnableToLoadDesc": "Unable to load file", "uploadFailedUnableToLoadDesc": "Unable to load file",
"uploadFailedInvalidUploadDesc": "Must be single PNG or JPEG image",
"downloadImageStarted": "Image Download Started", "downloadImageStarted": "Image Download Started",
"imageCopied": "Image Copied", "imageCopied": "Image Copied",
"imageLinkCopied": "Image Link Copied", "imageLinkCopied": "Image Link Copied",
"problemCopyingImageLink": "Unable to Copy Image Link",
"imageNotLoaded": "No Image Loaded", "imageNotLoaded": "No Image Loaded",
"imageNotLoadedDesc": "No image found to send to image to image module", "imageNotLoadedDesc": "Could not find image",
"imageSavedToGallery": "Image Saved to Gallery", "imageSavedToGallery": "Image Saved to Gallery",
"canvasMerged": "Canvas Merged", "canvasMerged": "Canvas Merged",
"sentToImageToImage": "Sent To Image To Image", "sentToImageToImage": "Sent To Image To Image",
@ -627,6 +654,11 @@
"betaClear": "Clear", "betaClear": "Clear",
"betaDarkenOutside": "Darken Outside", "betaDarkenOutside": "Darken Outside",
"betaLimitToBox": "Limit To Box", "betaLimitToBox": "Limit To Box",
"betaPreserveMasked": "Preserve Masked" "betaPreserveMasked": "Preserve Masked",
"antialiasing": "Antialiasing"
},
"ui": {
"showProgressImages": "Show Progress Images",
"hideProgressImages": "Hide Progress Images"
} }
} }

View File

@ -73,7 +73,8 @@
"postprocessing": "Tratamiento posterior", "postprocessing": "Tratamiento posterior",
"txt2img": "De texto a imagen", "txt2img": "De texto a imagen",
"accept": "Aceptar", "accept": "Aceptar",
"cancel": "Cancelar" "cancel": "Cancelar",
"linear": "Lineal"
}, },
"gallery": { "gallery": {
"generations": "Generaciones", "generations": "Generaciones",
@ -483,7 +484,9 @@
"negativePrompts": "Preguntas negativas", "negativePrompts": "Preguntas negativas",
"imageToImage": "Imagen a imagen", "imageToImage": "Imagen a imagen",
"denoisingStrength": "Intensidad de la eliminación del ruido", "denoisingStrength": "Intensidad de la eliminación del ruido",
"hiresStrength": "Alta resistencia" "hiresStrength": "Alta resistencia",
"showPreview": "Mostrar la vista previa",
"hidePreview": "Ocultar la vista previa"
}, },
"settings": { "settings": {
"models": "Modelos", "models": "Modelos",
@ -529,7 +532,11 @@
"metadataLoadFailed": "Error al cargar metadatos", "metadataLoadFailed": "Error al cargar metadatos",
"initialImageSet": "Imágen inicial establecida", "initialImageSet": "Imágen inicial establecida",
"initialImageNotSet": "Imagen inicial no establecida", "initialImageNotSet": "Imagen inicial no establecida",
"initialImageNotSetDesc": "Error al establecer la imágen inicial" "initialImageNotSetDesc": "Error al establecer la imágen inicial",
"serverError": "Error en el servidor",
"disconnected": "Desconectado del servidor",
"canceled": "Procesando la cancelación",
"connected": "Conectado al servidor"
}, },
"tooltip": { "tooltip": {
"feature": { "feature": {
@ -625,6 +632,7 @@
"toggleAutoscroll": "Activar el autodesplazamiento", "toggleAutoscroll": "Activar el autodesplazamiento",
"toggleLogViewer": "Alternar el visor de registros", "toggleLogViewer": "Alternar el visor de registros",
"showGallery": "Mostrar galería", "showGallery": "Mostrar galería",
"showOptionsPanel": "Mostrar el panel de opciones" "showOptionsPanel": "Mostrar el panel de opciones",
"menu": "Menú"
} }
} }

View File

@ -73,7 +73,8 @@
"postprocessing": "Post Elaborazione", "postprocessing": "Post Elaborazione",
"txt2img": "Testo a Immagine", "txt2img": "Testo a Immagine",
"accept": "Accetta", "accept": "Accetta",
"cancel": "Annulla" "cancel": "Annulla",
"linear": "Lineare"
}, },
"gallery": { "gallery": {
"generations": "Generazioni", "generations": "Generazioni",
@ -483,7 +484,9 @@
}, },
"hSymmetryStep": "Passi Simmetria Orizzontale", "hSymmetryStep": "Passi Simmetria Orizzontale",
"vSymmetryStep": "Passi Simmetria Verticale", "vSymmetryStep": "Passi Simmetria Verticale",
"symmetry": "Simmetria" "symmetry": "Simmetria",
"hidePreview": "Nascondi l'anteprima",
"showPreview": "Mostra l'anteprima"
}, },
"settings": { "settings": {
"models": "Modelli", "models": "Modelli",
@ -529,7 +532,11 @@
"metadataLoadFailed": "Impossibile caricare i metadati", "metadataLoadFailed": "Impossibile caricare i metadati",
"initialImageSet": "Immagine iniziale impostata", "initialImageSet": "Immagine iniziale impostata",
"initialImageNotSet": "Immagine iniziale non impostata", "initialImageNotSet": "Immagine iniziale non impostata",
"initialImageNotSetDesc": "Impossibile caricare l'immagine iniziale" "initialImageNotSetDesc": "Impossibile caricare l'immagine iniziale",
"serverError": "Errore del Server",
"disconnected": "Disconnesso dal Server",
"connected": "Connesso al Server",
"canceled": "Elaborazione annullata"
}, },
"tooltip": { "tooltip": {
"feature": { "feature": {
@ -625,6 +632,7 @@
"showOptionsPanel": "Mostra il pannello opzioni", "showOptionsPanel": "Mostra il pannello opzioni",
"flipVertically": "Capovolgi verticalmente", "flipVertically": "Capovolgi verticalmente",
"toggleAutoscroll": "Attiva/disattiva lo scorrimento automatico", "toggleAutoscroll": "Attiva/disattiva lo scorrimento automatico",
"modifyConfig": "Modifica configurazione" "modifyConfig": "Modifica configurazione",
"menu": "Menu"
} }
} }

View File

@ -37,7 +37,43 @@
"statusUpscaling": "アップスケーリング", "statusUpscaling": "アップスケーリング",
"statusUpscalingESRGAN": "アップスケーリング (ESRGAN)", "statusUpscalingESRGAN": "アップスケーリング (ESRGAN)",
"statusLoadingModel": "モデルを読み込む", "statusLoadingModel": "モデルを読み込む",
"statusModelChanged": "モデルを変更" "statusModelChanged": "モデルを変更",
"cancel": "キャンセル",
"accept": "同意",
"langBrPortuguese": "Português do Brasil",
"langRussian": "Русский",
"langSimplifiedChinese": "简体中文",
"langUkranian": "Украї́нська",
"langSpanish": "Español",
"img2img": "img2img",
"unifiedCanvas": "Unified Canvas",
"statusMergingModels": "モデルのマージ",
"statusModelConverted": "変換済モデル",
"statusGeneratingInpainting": "Inpaintingを生成",
"statusIterationComplete": "Iteration Complete",
"statusGeneratingOutpainting": "Outpaintingを生成",
"loading": "ロード中",
"loadingInvokeAI": "Invoke AIをロード中",
"statusConvertingModel": "モデルの変換",
"statusMergedModels": "マージ済モデル",
"pinOptionsPanel": "オプションパネルを固定",
"githubLabel": "Github",
"hotkeysLabel": "ホットキー",
"langHebrew": "עברית",
"discordLabel": "Discord",
"langItalian": "Italiano",
"langEnglish": "English",
"oceanTheme": "オーシャン",
"langArabic": "アラビア語",
"langDutch": "Nederlands",
"langFrench": "Français",
"langGerman": "Deutsch",
"langPortuguese": "Português",
"nodes": "ノード",
"langKorean": "한국어",
"langPolish": "Polski",
"txt2img": "txt2img",
"postprocessing": "Post Processing"
}, },
"gallery": { "gallery": {
"uploads": "アップロード", "uploads": "アップロード",
@ -46,11 +82,14 @@
"galleryImageResetSize": "サイズをリセット", "galleryImageResetSize": "サイズをリセット",
"gallerySettings": "ギャラリーの設定", "gallerySettings": "ギャラリーの設定",
"maintainAspectRatio": "アスペクト比を維持", "maintainAspectRatio": "アスペクト比を維持",
"singleColumnLayout": "シングルカラムレイアウト", "singleColumnLayout": "1カラムレイアウト",
"pinGallery": "ギャラリーにピン留め", "pinGallery": "ギャラリーにピン留め",
"allImagesLoaded": "すべての画像を読み込む", "allImagesLoaded": "すべての画像を読み込む",
"loadMore": "さらに読み込む", "loadMore": "さらに読み込む",
"noImagesInGallery": "ギャラリーに画像がありません" "noImagesInGallery": "ギャラリーに画像がありません",
"generations": "生成",
"showGenerations": "生成過程を見る",
"autoSwitchNewImages": "新しい画像に自動切替"
}, },
"hotkeys": { "hotkeys": {
"keyboardShortcuts": "キーボードショートカット", "keyboardShortcuts": "キーボードショートカット",
@ -59,14 +98,16 @@
"galleryHotkeys": "ギャラリーのホットキー", "galleryHotkeys": "ギャラリーのホットキー",
"unifiedCanvasHotkeys": "Unified Canvasのホットキー", "unifiedCanvasHotkeys": "Unified Canvasのホットキー",
"invoke": { "invoke": {
"desc": "画像を生成" "desc": "画像を生成",
"title": "Invoke"
}, },
"cancel": { "cancel": {
"title": "キャンセル", "title": "キャンセル",
"desc": "画像の生成をキャンセル" "desc": "画像の生成をキャンセル"
}, },
"focusPrompt": { "focusPrompt": {
"desc": "プロンプトテキストボックスにフォーカス" "desc": "プロンプトテキストボックスにフォーカス",
"title": "プロジェクトにフォーカス"
}, },
"toggleOptions": { "toggleOptions": {
"title": "オプションパネルのトグル", "title": "オプションパネルのトグル",
@ -410,5 +451,27 @@
"accept": "同意", "accept": "同意",
"showHide": "表示/非表示", "showHide": "表示/非表示",
"discardAll": "すべて破棄" "discardAll": "すべて破棄"
},
"accessibility": {
"modelSelect": "モデルを選択",
"invokeProgressBar": "進捗バー",
"reset": "リセット",
"uploadImage": "画像をアップロード",
"previousImage": "前の画像",
"nextImage": "次の画像",
"useThisParameter": "このパラメータを使用する",
"copyMetadataJson": "メタデータをコピー(JSON)",
"zoomIn": "ズームイン",
"exitViewer": "ExitViewer",
"zoomOut": "ズームアウト",
"rotateCounterClockwise": "反時計回りに回転",
"rotateClockwise": "時計回りに回転",
"flipHorizontally": "水平方向に反転",
"flipVertically": "垂直方向に反転",
"toggleAutoscroll": "自動スクロールの切替",
"modifyConfig": "Modify Config",
"toggleLogViewer": "Log Viewerの切替",
"showGallery": "ギャラリーを表示",
"showOptionsPanel": "オプションパネルを表示"
} }
} }

View File

@ -62,7 +62,18 @@
"statusConvertingModel": "Omzetten van model", "statusConvertingModel": "Omzetten van model",
"statusModelConverted": "Model omgezet", "statusModelConverted": "Model omgezet",
"statusMergingModels": "Samenvoegen van modellen", "statusMergingModels": "Samenvoegen van modellen",
"statusMergedModels": "Modellen samengevoegd" "statusMergedModels": "Modellen samengevoegd",
"cancel": "Annuleer",
"accept": "Akkoord",
"langPortuguese": "Português",
"pinOptionsPanel": "Zet deelscherm Opties vast",
"loading": "Bezig met laden",
"loadingInvokeAI": "Bezig met laden van Invoke AI",
"oceanTheme": "Oceaan",
"langHebrew": "עברית",
"langKorean": "한국어",
"txt2img": "Tekst naar afbeelding",
"postprocessing": "Nabewerking"
}, },
"gallery": { "gallery": {
"generations": "Gegenereerde afbeeldingen", "generations": "Gegenereerde afbeeldingen",
@ -301,7 +312,7 @@
"name": "Naam", "name": "Naam",
"nameValidationMsg": "Geef een naam voor je model", "nameValidationMsg": "Geef een naam voor je model",
"description": "Beschrijving", "description": "Beschrijving",
"descriptionValidationMsg": "Voeg een beschrijving toe voor je model.", "descriptionValidationMsg": "Voeg een beschrijving toe voor je model",
"config": "Configuratie", "config": "Configuratie",
"configValidationMsg": "Pad naar het configuratiebestand van je model.", "configValidationMsg": "Pad naar het configuratiebestand van je model.",
"modelLocation": "Locatie model", "modelLocation": "Locatie model",
@ -391,7 +402,13 @@
"modelMergeInterpAddDifferenceHelp": "In deze stand wordt model 3 eerst van model 2 afgehaald. Wat daar uitkomt wordt gemengd met model 1, gebruikmakend van de hierboven ingestelde alfawaarde.", "modelMergeInterpAddDifferenceHelp": "In deze stand wordt model 3 eerst van model 2 afgehaald. Wat daar uitkomt wordt gemengd met model 1, gebruikmakend van de hierboven ingestelde alfawaarde.",
"inverseSigmoid": "Keer Sigmoid om", "inverseSigmoid": "Keer Sigmoid om",
"sigmoid": "Sigmoid", "sigmoid": "Sigmoid",
"weightedSum": "Gewogen som" "weightedSum": "Gewogen som",
"v2_base": "v2 (512px)",
"v2_768": "v2 (768px)",
"none": "geen",
"addDifference": "Voeg verschil toe",
"scanForModels": "Scan naar modellen",
"pickModelType": "Kies modelsoort"
}, },
"parameters": { "parameters": {
"images": "Afbeeldingen", "images": "Afbeeldingen",
@ -561,7 +578,7 @@
"autoSaveToGallery": "Bewaar automatisch naar galerij", "autoSaveToGallery": "Bewaar automatisch naar galerij",
"saveBoxRegionOnly": "Bewaar alleen tekengebied", "saveBoxRegionOnly": "Bewaar alleen tekengebied",
"limitStrokesToBox": "Beperk streken tot tekenvak", "limitStrokesToBox": "Beperk streken tot tekenvak",
"showCanvasDebugInfo": "Toon foutopsporingsgegevens canvas", "showCanvasDebugInfo": "Toon aanvullende canvasgegevens",
"clearCanvasHistory": "Wis canvasgeschiedenis", "clearCanvasHistory": "Wis canvasgeschiedenis",
"clearHistory": "Wis geschiedenis", "clearHistory": "Wis geschiedenis",
"clearCanvasHistoryMessage": "Het wissen van de canvasgeschiedenis laat het huidige canvas ongemoeid, maar wist onherstelbaar de geschiedenis voor het ongedaan maken en herhalen.", "clearCanvasHistoryMessage": "Het wissen van de canvasgeschiedenis laat het huidige canvas ongemoeid, maar wist onherstelbaar de geschiedenis voor het ongedaan maken en herhalen.",
@ -587,5 +604,27 @@
"betaDarkenOutside": "Verduister buiten tekenvak", "betaDarkenOutside": "Verduister buiten tekenvak",
"betaLimitToBox": "Beperk tot tekenvak", "betaLimitToBox": "Beperk tot tekenvak",
"betaPreserveMasked": "Behoud masker" "betaPreserveMasked": "Behoud masker"
},
"accessibility": {
"exitViewer": "Stop viewer",
"zoomIn": "Zoom in",
"rotateCounterClockwise": "Draai tegen de klok in",
"modelSelect": "Modelkeuze",
"invokeProgressBar": "Voortgangsbalk Invoke",
"reset": "Herstel",
"uploadImage": "Upload afbeelding",
"previousImage": "Vorige afbeelding",
"nextImage": "Volgende afbeelding",
"useThisParameter": "Gebruik deze parameter",
"copyMetadataJson": "Kopieer metagegevens-JSON",
"zoomOut": "Zoom uit",
"rotateClockwise": "Draai met de klok mee",
"flipHorizontally": "Spiegel horizontaal",
"flipVertically": "Spiegel verticaal",
"modifyConfig": "Wijzig configuratie",
"toggleAutoscroll": "Autom. scrollen aan/uit",
"toggleLogViewer": "Logboekviewer aan/uit",
"showGallery": "Toon galerij",
"showOptionsPanel": "Toon deelscherm Opties"
} }
} }

View File

@ -9,7 +9,7 @@
"lightTheme": "Светлая", "lightTheme": "Светлая",
"greenTheme": "Зеленая", "greenTheme": "Зеленая",
"img2img": "Изображение в изображение (img2img)", "img2img": "Изображение в изображение (img2img)",
"unifiedCanvas": "Универсальный холст", "unifiedCanvas": "Единый холст",
"nodes": "Ноды", "nodes": "Ноды",
"langRussian": "Русский", "langRussian": "Русский",
"nodesDesc": "Cистема генерации изображений на основе нодов (узлов) уже разрабатывается. Следите за новостями об этой замечательной функции.", "nodesDesc": "Cистема генерации изображений на основе нодов (узлов) уже разрабатывается. Следите за новостями об этой замечательной функции.",
@ -53,7 +53,28 @@
"loading": "Загрузка", "loading": "Загрузка",
"loadingInvokeAI": "Загрузка Invoke AI", "loadingInvokeAI": "Загрузка Invoke AI",
"back": "Назад", "back": "Назад",
"statusConvertingModel": "Конвертация модели" "statusConvertingModel": "Конвертация модели",
"cancel": "Отменить",
"accept": "Принять",
"oceanTheme": "Океан",
"langUkranian": "Украинский",
"langEnglish": "Английский",
"postprocessing": "Постобработка",
"langArabic": "Арабский",
"langSpanish": "Испанский",
"langSimplifiedChinese": "Китайский (упрощенный)",
"langDutch": "Нидерландский",
"langFrench": "Французский",
"langGerman": "Немецкий",
"langHebrew": "Иврит",
"langItalian": "Итальянский",
"langJapanese": "Японский",
"langKorean": "Корейский",
"langPolish": "Польский",
"langPortuguese": "Португальский",
"txt2img": "Текст в изображение (txt2img)",
"langBrPortuguese": "Португальский (Бразилия)",
"linear": "Линейная обработка"
}, },
"gallery": { "gallery": {
"generations": "Генерации", "generations": "Генерации",
@ -72,11 +93,11 @@
"noImagesInGallery": "Изображений нет" "noImagesInGallery": "Изображений нет"
}, },
"hotkeys": { "hotkeys": {
"keyboardShortcuts": "Клавиатурные сокращения", "keyboardShortcuts": "Горячие клавиши",
"appHotkeys": "Горячие клавиши приложения", "appHotkeys": "Горячие клавиши приложения",
"generalHotkeys": "Общие горячие клавиши", "generalHotkeys": "Общие горячие клавиши",
"galleryHotkeys": "Горячие клавиши галереи", "galleryHotkeys": "Горячие клавиши галереи",
"unifiedCanvasHotkeys": "Горячие клавиши универсального холста", "unifiedCanvasHotkeys": "Горячие клавиши Единого холста",
"invoke": { "invoke": {
"title": "Invoke", "title": "Invoke",
"desc": "Сгенерировать изображение" "desc": "Сгенерировать изображение"
@ -266,12 +287,12 @@
"desc": "Сбросить вид холста" "desc": "Сбросить вид холста"
}, },
"previousStagingImage": { "previousStagingImage": {
"title": "Previous Staging Image", "title": "Предыдущее изображение",
"desc": "Предыдущее изображение" "desc": "Предыдущая область изображения"
}, },
"nextStagingImage": { "nextStagingImage": {
"title": "Next Staging Image", "title": "Следующее изображение",
"desc": "Следующее изображение" "desc": "Следующая область изображения"
}, },
"acceptStagingImage": { "acceptStagingImage": {
"title": "Принять изображение", "title": "Принять изображение",
@ -353,7 +374,42 @@
"modelConverted": "Модель преобразована", "modelConverted": "Модель преобразована",
"invokeRoot": "Каталог InvokeAI", "invokeRoot": "Каталог InvokeAI",
"modelsMerged": "Модели объединены", "modelsMerged": "Модели объединены",
"mergeModels": "Объединить модели" "mergeModels": "Объединить модели",
"scanForModels": "Просканировать модели",
"sigmoid": "Сигмоид",
"formMessageDiffusersModelLocation": "Расположение Diffusers-модели",
"modelThree": "Модель 3",
"modelMergeHeaderHelp2": "Только Diffusers-модели доступны для объединения. Если вы хотите объединить checkpoint-модели, сначала преобразуйте их в Diffusers.",
"pickModelType": "Выбрать тип модели",
"formMessageDiffusersVAELocation": "Расположение VAE",
"v1": "v1",
"convertToDiffusersSaveLocation": "Путь сохранения",
"customSaveLocation": "Пользовательский путь сохранения",
"alpha": "Альфа",
"diffusersModels": "Diffusers",
"customConfig": "Пользовательский конфиг",
"pathToCustomConfig": "Путь к пользовательскому конфигу",
"inpainting": "v1 Inpainting",
"sameFolder": "В ту же папку",
"modelOne": "Модель 1",
"mergedModelCustomSaveLocation": "Пользовательский путь",
"none": "пусто",
"addDifference": "Добавить разницу",
"vaeRepoIDValidationMsg": "Онлайн репозиторий VAE",
"convertToDiffusersHelpText2": "Этот процесс заменит вашу запись в Model Manager на версию той же модели в Diffusers.",
"custom": "Пользовательский",
"modelTwo": "Модель 2",
"mergedModelSaveLocation": "Путь сохранения",
"merge": "Объединить",
"interpolationType": "Тип интерполяции",
"modelMergeInterpAddDifferenceHelp": "В этом режиме Модель 3 сначала вычитается из Модели 2. Результирующая версия смешивается с Моделью 1 с установленным выше коэффициентом Альфа.",
"modelMergeHeaderHelp1": "Вы можете объединить до трех разных моделей, чтобы создать смешанную, соответствующую вашим потребностям.",
"modelMergeAlphaHelp": "Альфа влияет на силу смешивания моделей. Более низкие значения альфа приводят к меньшему влиянию второй модели.",
"inverseSigmoid": "Обратный Сигмоид",
"weightedSum": "Взвешенная сумма",
"safetensorModels": "SafeTensors",
"v2_768": "v2 (768px)",
"v2_base": "v2 (512px)"
}, },
"parameters": { "parameters": {
"images": "Изображения", "images": "Изображения",
@ -380,7 +436,7 @@
"scale": "Масштаб", "scale": "Масштаб",
"otherOptions": "Другие параметры", "otherOptions": "Другие параметры",
"seamlessTiling": "Бесшовный узор", "seamlessTiling": "Бесшовный узор",
"hiresOptim": "Высокое разрешение", "hiresOptim": "Оптимизация High Res",
"imageFit": "Уместить изображение", "imageFit": "Уместить изображение",
"codeformerFidelity": "Точность", "codeformerFidelity": "Точность",
"seamSize": "Размер шва", "seamSize": "Размер шва",
@ -397,11 +453,11 @@
"infillScalingHeader": "Заполнение и масштабирование", "infillScalingHeader": "Заполнение и масштабирование",
"img2imgStrength": "Сила обработки img2img", "img2imgStrength": "Сила обработки img2img",
"toggleLoopback": "Зациклить обработку", "toggleLoopback": "Зациклить обработку",
"invoke": "Вызвать", "invoke": "Invoke",
"promptPlaceholder": "Введите запрос здесь (на английском). [исключенные токены], (более значимые)++, (менее значимые)--, swap и blend тоже доступны (смотрите Github)", "promptPlaceholder": "Введите запрос здесь (на английском). [исключенные токены], (более значимые)++, (менее значимые)--, swap и blend тоже доступны (смотрите Github)",
"sendTo": "Отправить", "sendTo": "Отправить",
"sendToImg2Img": "Отправить в img2img", "sendToImg2Img": "Отправить в img2img",
"sendToUnifiedCanvas": "Отправить на холст", "sendToUnifiedCanvas": "Отправить на Единый холст",
"copyImageToLink": "Скопировать ссылку", "copyImageToLink": "Скопировать ссылку",
"downloadImage": "Скачать", "downloadImage": "Скачать",
"openInViewer": "Открыть в просмотрщике", "openInViewer": "Открыть в просмотрщике",
@ -413,7 +469,24 @@
"info": "Метаданные", "info": "Метаданные",
"deleteImage": "Удалить изображение", "deleteImage": "Удалить изображение",
"initialImage": "Исходное изображение", "initialImage": "Исходное изображение",
"showOptionsPanel": "Показать панель настроек" "showOptionsPanel": "Показать панель настроек",
"vSymmetryStep": "Шаг верт. симметрии",
"cancel": {
"immediate": "Отменить немедленно",
"schedule": "Отменить после текущей итерации",
"isScheduled": "Отмена",
"setType": "Установить тип отмены"
},
"general": "Основное",
"hiresStrength": "Сила High Res",
"symmetry": "Симметрия",
"hSymmetryStep": "Шаг гор. симметрии",
"hidePreview": "Скрыть предпросмотр",
"imageToImage": "Изображение в изображение",
"denoisingStrength": "Сила шумоподавления",
"copyImage": "Скопировать изображение",
"negativePrompts": "Исключающий запрос",
"showPreview": "Показать предпросмотр"
}, },
"settings": { "settings": {
"models": "Модели", "models": "Модели",
@ -423,10 +496,11 @@
"displayHelpIcons": "Показывать значки подсказок", "displayHelpIcons": "Показывать значки подсказок",
"useCanvasBeta": "Показывать инструменты слева (Beta UI)", "useCanvasBeta": "Показывать инструменты слева (Beta UI)",
"enableImageDebugging": "Включить отладку", "enableImageDebugging": "Включить отладку",
"resetWebUI": "Вернуть умолчания", "resetWebUI": "Сброс настроек Web UI",
"resetWebUIDesc1": "Сброс настроек веб-интерфейса удаляет только локальный кэш браузера с вашими изображениями и настройками. Он не удаляет изображения с диска.", "resetWebUIDesc1": "Сброс настроек веб-интерфейса удаляет только локальный кэш браузера с вашими изображениями и настройками. Он не удаляет изображения с диска.",
"resetWebUIDesc2": "Если изображения не отображаются в галерее или не работает что-то еще, пожалуйста, попробуйте сбросить настройки, прежде чем сообщать о проблеме на GitHub.", "resetWebUIDesc2": "Если изображения не отображаются в галерее или не работает что-то еще, пожалуйста, попробуйте сбросить настройки, прежде чем сообщать о проблеме на GitHub.",
"resetComplete": "Интерфейс сброшен. Обновите эту страницу." "resetComplete": "Интерфейс сброшен. Обновите эту страницу.",
"useSlidersForAll": "Использовать ползунки для всех параметров"
}, },
"toast": { "toast": {
"tempFoldersEmptied": "Временная папка очищена", "tempFoldersEmptied": "Временная папка очищена",
@ -441,7 +515,7 @@
"imageSavedToGallery": "Изображение сохранено в галерею", "imageSavedToGallery": "Изображение сохранено в галерею",
"canvasMerged": "Холст объединен", "canvasMerged": "Холст объединен",
"sentToImageToImage": "Отправить в img2img", "sentToImageToImage": "Отправить в img2img",
"sentToUnifiedCanvas": "Отправить на холст", "sentToUnifiedCanvas": "Отправлено на Единый холст",
"parametersSet": "Параметры заданы", "parametersSet": "Параметры заданы",
"parametersNotSet": "Параметры не заданы", "parametersNotSet": "Параметры не заданы",
"parametersNotSetDesc": "Не найдены метаданные изображения.", "parametersNotSetDesc": "Не найдены метаданные изображения.",
@ -458,7 +532,11 @@
"metadataLoadFailed": "Не удалось загрузить метаданные", "metadataLoadFailed": "Не удалось загрузить метаданные",
"initialImageSet": "Исходное изображение задано", "initialImageSet": "Исходное изображение задано",
"initialImageNotSet": "Исходное изображение не задано", "initialImageNotSet": "Исходное изображение не задано",
"initialImageNotSetDesc": "Не получилось загрузить исходное изображение" "initialImageNotSetDesc": "Не получилось загрузить исходное изображение",
"serverError": "Ошибка сервера",
"disconnected": "Отключено от сервера",
"connected": "Подключено к серверу",
"canceled": "Обработка отменена"
}, },
"tooltip": { "tooltip": {
"feature": { "feature": {
@ -507,7 +585,7 @@
"autoSaveToGallery": "Автосохранение в галерее", "autoSaveToGallery": "Автосохранение в галерее",
"saveBoxRegionOnly": "Сохранять только выделение", "saveBoxRegionOnly": "Сохранять только выделение",
"limitStrokesToBox": "Ограничить штрихи выделением", "limitStrokesToBox": "Ограничить штрихи выделением",
"showCanvasDebugInfo": "Показать отладку холста", "showCanvasDebugInfo": "Показать доп. информацию о холсте",
"clearCanvasHistory": "Очистить историю холста", "clearCanvasHistory": "Очистить историю холста",
"clearHistory": "Очистить историю", "clearHistory": "Очистить историю",
"clearCanvasHistoryMessage": "Очистка истории холста оставляет текущий холст нетронутым, но удаляет историю отмен и повторов.", "clearCanvasHistoryMessage": "Очистка истории холста оставляет текущий холст нетронутым, но удаляет историю отмен и повторов.",
@ -535,6 +613,26 @@
"betaPreserveMasked": "Сохранять маскируемую область" "betaPreserveMasked": "Сохранять маскируемую область"
}, },
"accessibility": { "accessibility": {
"modelSelect": "Выбор модели" "modelSelect": "Выбор модели",
"uploadImage": "Загрузить изображение",
"nextImage": "Следующее изображение",
"previousImage": "Предыдущее изображение",
"zoomIn": "Приблизить",
"zoomOut": "Отдалить",
"rotateClockwise": "Повернуть по часовой стрелке",
"rotateCounterClockwise": "Повернуть против часовой стрелки",
"flipVertically": "Перевернуть вертикально",
"flipHorizontally": "Отразить горизонтально",
"toggleAutoscroll": "Включить автопрокрутку",
"toggleLogViewer": "Показать или скрыть просмотрщик логов",
"showOptionsPanel": "Показать опции",
"showGallery": "Показать галерею",
"invokeProgressBar": "Индикатор выполнения",
"reset": "Сброс",
"modifyConfig": "Изменить конфиг",
"useThisParameter": "Использовать этот параметр",
"copyMetadataJson": "Скопировать метаданные JSON",
"exitViewer": "Закрыть просмотрщик",
"menu": "Меню"
} }
} }

View File

@ -16,9 +16,9 @@
"postProcessing": "Постобробка", "postProcessing": "Постобробка",
"postProcessDesc1": "Invoke AI пропонує широкий спектр функцій постобробки. Збільшення зображення (upscale) та відновлення облич вже доступні в інтерфейсі. Отримайте доступ до них з меню 'Додаткові параметри' на вкладках 'Зображення із тексту' та 'Зображення із зображення'. Обробляйте зображення безпосередньо, використовуючи кнопки дій із зображеннями над поточним зображенням або в режимі перегляду.", "postProcessDesc1": "Invoke AI пропонує широкий спектр функцій постобробки. Збільшення зображення (upscale) та відновлення облич вже доступні в інтерфейсі. Отримайте доступ до них з меню 'Додаткові параметри' на вкладках 'Зображення із тексту' та 'Зображення із зображення'. Обробляйте зображення безпосередньо, використовуючи кнопки дій із зображеннями над поточним зображенням або в режимі перегляду.",
"postProcessDesc2": "Найближчим часом буде випущено спеціальний інтерфейс для більш сучасних процесів постобробки.", "postProcessDesc2": "Найближчим часом буде випущено спеціальний інтерфейс для більш сучасних процесів постобробки.",
"postProcessDesc3": "Інтерфейс командного рядка Invoke AI пропонує різні інші функції, включаючи збільшення Embiggen", "postProcessDesc3": "Інтерфейс командного рядка Invoke AI пропонує різні інші функції, включаючи збільшення Embiggen.",
"training": "Навчання", "training": "Навчання",
"trainingDesc1": "Спеціальний інтерфейс для навчання власних моделей з використанням Textual Inversion та Dreambooth", "trainingDesc1": "Спеціальний інтерфейс для навчання власних моделей з використанням Textual Inversion та Dreambooth.",
"trainingDesc2": "InvokeAI вже підтримує навчання моделей за допомогою TI, через інтерфейс командного рядка.", "trainingDesc2": "InvokeAI вже підтримує навчання моделей за допомогою TI, через інтерфейс командного рядка.",
"upload": "Завантажити", "upload": "Завантажити",
"close": "Закрити", "close": "Закрити",
@ -43,7 +43,38 @@
"statusUpscaling": "Збільшення", "statusUpscaling": "Збільшення",
"statusUpscalingESRGAN": "Збільшення (ESRGAN)", "statusUpscalingESRGAN": "Збільшення (ESRGAN)",
"statusLoadingModel": "Завантаження моделі", "statusLoadingModel": "Завантаження моделі",
"statusModelChanged": "Модель змінено" "statusModelChanged": "Модель змінено",
"cancel": "Скасувати",
"accept": "Підтвердити",
"back": "Назад",
"postprocessing": "Постобробка",
"statusModelConverted": "Модель сконвертована",
"statusMergingModels": "Злиття моделей",
"loading": "Завантаження",
"loadingInvokeAI": "Завантаження Invoke AI",
"langHebrew": "Іврит",
"langKorean": "Корейська",
"langPortuguese": "Португальська",
"pinOptionsPanel": "Закріпити панель налаштувань",
"oceanTheme": "Океан",
"langArabic": "Арабська",
"langSimplifiedChinese": "Китайська (спрощена)",
"langSpanish": "Іспанська",
"langEnglish": "Англійська",
"langGerman": "Німецька",
"langItalian": "Італійська",
"langJapanese": "Японська",
"langPolish": "Польська",
"langBrPortuguese": "Португальська (Бразилія)",
"langRussian": "Російська",
"githubLabel": "Github",
"txt2img": "Текст в зображення (txt2img)",
"discordLabel": "Discord",
"langDutch": "Голландська",
"langFrench": "Французька",
"statusMergedModels": "Моделі об'єднані",
"statusConvertingModel": "Конвертація моделі",
"linear": "Лінійна обробка"
}, },
"gallery": { "gallery": {
"generations": "Генерації", "generations": "Генерації",
@ -284,15 +315,15 @@
"description": "Опис", "description": "Опис",
"descriptionValidationMsg": "Введіть опис моделі", "descriptionValidationMsg": "Введіть опис моделі",
"config": "Файл конфігурації", "config": "Файл конфігурації",
"configValidationMsg": "Шлях до файлу конфігурації", "configValidationMsg": "Шлях до файлу конфігурації.",
"modelLocation": "Розташування моделі", "modelLocation": "Розташування моделі",
"modelLocationValidationMsg": "Шлях до файлу з моделлю", "modelLocationValidationMsg": "Шлях до файлу з моделлю.",
"vaeLocation": "Розтышування VAE", "vaeLocation": "Розтышування VAE",
"vaeLocationValidationMsg": "Шлях до VAE", "vaeLocationValidationMsg": "Шлях до VAE.",
"width": "Ширина", "width": "Ширина",
"widthValidationMsg": "Початкова ширина зображень", "widthValidationMsg": "Початкова ширина зображень.",
"height": "Висота", "height": "Висота",
"heightValidationMsg": "Початкова висота зображень", "heightValidationMsg": "Початкова висота зображень.",
"addModel": "Додати модель", "addModel": "Додати модель",
"updateModel": "Оновити модель", "updateModel": "Оновити модель",
"availableModels": "Доступні моделі", "availableModels": "Доступні моделі",
@ -319,7 +350,66 @@
"deleteModel": "Видалити модель", "deleteModel": "Видалити модель",
"deleteConfig": "Видалити конфігурацію", "deleteConfig": "Видалити конфігурацію",
"deleteMsg1": "Ви точно хочете видалити модель із InvokeAI?", "deleteMsg1": "Ви точно хочете видалити модель із InvokeAI?",
"deleteMsg2": "Це не призведе до видалення файлу моделі з диску. Позніше ви можете додати його знову." "deleteMsg2": "Це не призведе до видалення файлу моделі з диску. Позніше ви можете додати його знову.",
"allModels": "Усі моделі",
"diffusersModels": "Diffusers",
"scanForModels": "Сканувати моделі",
"convert": "Конвертувати",
"convertToDiffusers": "Конвертувати в Diffusers",
"formMessageDiffusersVAELocationDesc": "Якщо не надано, InvokeAI буде шукати файл VAE в розташуванні моделі, вказаній вище.",
"convertToDiffusersHelpText3": "Файл моделі на диску НЕ буде видалено або змінено. Ви можете знову додати його в Model Manager, якщо потрібно.",
"customConfig": "Користувальницький конфіг",
"invokeRoot": "Каталог InvokeAI",
"custom": "Користувальницький",
"modelTwo": "Модель 2",
"modelThree": "Модель 3",
"mergedModelName": "Назва об'єднаної моделі",
"alpha": "Альфа",
"interpolationType": "Тип інтерполяції",
"mergedModelSaveLocation": "Шлях збереження",
"mergedModelCustomSaveLocation": "Користувальницький шлях",
"invokeAIFolder": "Каталог InvokeAI",
"ignoreMismatch": "Ігнорувати невідповідності між вибраними моделями",
"modelMergeHeaderHelp2": "Тільки Diffusers-моделі доступні для об'єднання. Якщо ви хочете об'єднати checkpoint-моделі, спочатку перетворіть їх на Diffusers.",
"checkpointModels": "Checkpoints",
"repo_id": "ID репозиторію",
"v2_base": "v2 (512px)",
"repoIDValidationMsg": "Онлайн-репозиторій моделі",
"formMessageDiffusersModelLocationDesc": "Вкажіть хоча б одне.",
"formMessageDiffusersModelLocation": "Шлях до Diffusers-моделі",
"v2_768": "v2 (768px)",
"formMessageDiffusersVAELocation": "Шлях до VAE",
"convertToDiffusersHelpText5": "Переконайтеся, що у вас достатньо місця на диску. Моделі зазвичай займають від 4 до 7 Гб.",
"convertToDiffusersSaveLocation": "Шлях збереження",
"v1": "v1",
"convertToDiffusersHelpText6": "Ви хочете перетворити цю модель?",
"inpainting": "v1 Inpainting",
"modelConverted": "Модель перетворено",
"sameFolder": "У ту ж папку",
"statusConverting": "Перетворення",
"merge": "Об'єднати",
"mergeModels": "Об'єднати моделі",
"modelOne": "Модель 1",
"sigmoid": "Сігмоїд",
"weightedSum": "Зважена сума",
"none": "пусто",
"addDifference": "Додати різницю",
"pickModelType": "Вибрати тип моделі",
"convertToDiffusersHelpText4": "Це одноразова дія. Вона може зайняти від 30 до 60 секунд в залежності від характеристик вашого комп'ютера.",
"pathToCustomConfig": "Шлях до конфігу користувача",
"safetensorModels": "SafeTensors",
"addCheckpointModel": "Додати модель Checkpoint/Safetensor",
"addDiffuserModel": "Додати Diffusers",
"vaeRepoID": "ID репозиторію VAE",
"vaeRepoIDValidationMsg": "Онлайн-репозиторій VAE",
"modelMergeInterpAddDifferenceHelp": "У цьому режимі Модель 3 спочатку віднімається з Моделі 2. Результуюча версія змішується з Моделью 1 із встановленим вище коефіцієнтом Альфа.",
"customSaveLocation": "Користувальницький шлях збереження",
"modelMergeAlphaHelp": "Альфа впливає силу змішування моделей. Нижчі значення альфа призводять до меншого впливу другої моделі.",
"convertToDiffusersHelpText1": "Ця модель буде конвертована в формат 🧨 Diffusers.",
"convertToDiffusersHelpText2": "Цей процес замінить ваш запис в Model Manager на версію тієї ж моделі в Diffusers.",
"modelsMerged": "Моделі об'єднані",
"modelMergeHeaderHelp1": "Ви можете об'єднати до трьох різних моделей, щоб створити змішану, що відповідає вашим потребам.",
"inverseSigmoid": "Зворотній Сігмоїд"
}, },
"parameters": { "parameters": {
"images": "Зображення", "images": "Зображення",
@ -346,7 +436,7 @@
"scale": "Масштаб", "scale": "Масштаб",
"otherOptions": "інші параметри", "otherOptions": "інші параметри",
"seamlessTiling": "Безшовний узор", "seamlessTiling": "Безшовний узор",
"hiresOptim": "Висока роздільна здатність", "hiresOptim": "Оптимізація High Res",
"imageFit": "Вмістити зображення", "imageFit": "Вмістити зображення",
"codeformerFidelity": "Точність", "codeformerFidelity": "Точність",
"seamSize": "Размір шву", "seamSize": "Размір шву",
@ -379,7 +469,24 @@
"info": "Метадані", "info": "Метадані",
"deleteImage": "Видалити зображення", "deleteImage": "Видалити зображення",
"initialImage": "Початкове зображення", "initialImage": "Початкове зображення",
"showOptionsPanel": "Показати панель налаштувань" "showOptionsPanel": "Показати панель налаштувань",
"general": "Основне",
"cancel": {
"immediate": "Скасувати негайно",
"schedule": "Скасувати після поточної ітерації",
"isScheduled": "Відміна",
"setType": "Встановити тип скасування"
},
"vSymmetryStep": "Крок верт. симетрії",
"hiresStrength": "Сила High Res",
"hidePreview": "Сховати попередній перегляд",
"showPreview": "Показати попередній перегляд",
"imageToImage": "Зображення до зображення",
"denoisingStrength": "Сила шумоподавлення",
"copyImage": "Копіювати зображення",
"symmetry": "Симетрія",
"hSymmetryStep": "Крок гор. симетрії",
"negativePrompts": "Виключний запит"
}, },
"settings": { "settings": {
"models": "Моделі", "models": "Моделі",
@ -392,7 +499,8 @@
"resetWebUI": "Повернути початкові", "resetWebUI": "Повернути початкові",
"resetWebUIDesc1": "Скидання настройок веб-інтерфейсу видаляє лише локальний кеш браузера з вашими зображеннями та налаштуваннями. Це не призводить до видалення зображень з диску.", "resetWebUIDesc1": "Скидання настройок веб-інтерфейсу видаляє лише локальний кеш браузера з вашими зображеннями та налаштуваннями. Це не призводить до видалення зображень з диску.",
"resetWebUIDesc2": "Якщо зображення не відображаються в галереї або не працює ще щось, спробуйте скинути налаштування, перш ніж повідомляти про проблему на GitHub.", "resetWebUIDesc2": "Якщо зображення не відображаються в галереї або не працює ще щось, спробуйте скинути налаштування, перш ніж повідомляти про проблему на GitHub.",
"resetComplete": "Інтерфейс скинуто. Оновіть цю сторінку." "resetComplete": "Інтерфейс скинуто. Оновіть цю сторінку.",
"useSlidersForAll": "Використовувати повзунки для всіх параметрів"
}, },
"toast": { "toast": {
"tempFoldersEmptied": "Тимчасова папка очищена", "tempFoldersEmptied": "Тимчасова папка очищена",
@ -410,21 +518,25 @@
"sentToUnifiedCanvas": "Надіслати на полотно", "sentToUnifiedCanvas": "Надіслати на полотно",
"parametersSet": "Параметри задані", "parametersSet": "Параметри задані",
"parametersNotSet": "Параметри не задані", "parametersNotSet": "Параметри не задані",
"parametersNotSetDesc": "Не знайдені метадані цього зображення", "parametersNotSetDesc": "Не знайдені метадані цього зображення.",
"parametersFailed": "Проблема із завантаженням параметрів", "parametersFailed": "Проблема із завантаженням параметрів",
"parametersFailedDesc": "Неможливо завантажити початкове зображення", "parametersFailedDesc": "Неможливо завантажити початкове зображення.",
"seedSet": "Сід заданий", "seedSet": "Сід заданий",
"seedNotSet": "Сід не заданий", "seedNotSet": "Сід не заданий",
"seedNotSetDesc": "Не вдалося знайти сід для зображення", "seedNotSetDesc": "Не вдалося знайти сід для зображення.",
"promptSet": "Запит заданий", "promptSet": "Запит заданий",
"promptNotSet": "Запит не заданий", "promptNotSet": "Запит не заданий",
"promptNotSetDesc": "Не вдалося знайти запит для зображення", "promptNotSetDesc": "Не вдалося знайти запит для зображення.",
"upscalingFailed": "Збільшення не вдалося", "upscalingFailed": "Збільшення не вдалося",
"faceRestoreFailed": "Відновлення облич не вдалося", "faceRestoreFailed": "Відновлення облич не вдалося",
"metadataLoadFailed": "Не вдалося завантажити метадані", "metadataLoadFailed": "Не вдалося завантажити метадані",
"initialImageSet": "Початкове зображення задане", "initialImageSet": "Початкове зображення задане",
"initialImageNotSet": "Початкове зображення не задане", "initialImageNotSet": "Початкове зображення не задане",
"initialImageNotSetDesc": "Не вдалося завантажити початкове зображення" "initialImageNotSetDesc": "Не вдалося завантажити початкове зображення",
"serverError": "Помилка сервера",
"disconnected": "Відключено від сервера",
"connected": "Підключено до сервера",
"canceled": "Обробку скасовано"
}, },
"tooltip": { "tooltip": {
"feature": { "feature": {
@ -473,10 +585,10 @@
"autoSaveToGallery": "Автозбереження до галереї", "autoSaveToGallery": "Автозбереження до галереї",
"saveBoxRegionOnly": "Зберiгати тiльки видiлення", "saveBoxRegionOnly": "Зберiгати тiльки видiлення",
"limitStrokesToBox": "Обмежити штрихи виділенням", "limitStrokesToBox": "Обмежити штрихи виділенням",
"showCanvasDebugInfo": "Показати налаштування полотна", "showCanvasDebugInfo": "Показати дод. інформацію про полотно",
"clearCanvasHistory": "Очистити iсторiю полотна", "clearCanvasHistory": "Очистити iсторiю полотна",
"clearHistory": "Очистити iсторiю", "clearHistory": "Очистити iсторiю",
"clearCanvasHistoryMessage": "Очищення історії полотна залишає поточне полотно незайманим, але видаляє історію скасування та повтору", "clearCanvasHistoryMessage": "Очищення історії полотна залишає поточне полотно незайманим, але видаляє історію скасування та повтору.",
"clearCanvasHistoryConfirm": "Ви впевнені, що хочете очистити історію полотна?", "clearCanvasHistoryConfirm": "Ви впевнені, що хочете очистити історію полотна?",
"emptyTempImageFolder": "Очистити тимчасову папку", "emptyTempImageFolder": "Очистити тимчасову папку",
"emptyFolder": "Очистити папку", "emptyFolder": "Очистити папку",
@ -499,5 +611,28 @@
"betaDarkenOutside": "Затемнити зовні", "betaDarkenOutside": "Затемнити зовні",
"betaLimitToBox": "Обмежити виділенням", "betaLimitToBox": "Обмежити виділенням",
"betaPreserveMasked": "Зберiгати замасковану область" "betaPreserveMasked": "Зберiгати замасковану область"
},
"accessibility": {
"nextImage": "Наступне зображення",
"modelSelect": "Вибір моделі",
"invokeProgressBar": "Індикатор виконання",
"reset": "Скинути",
"uploadImage": "Завантажити зображення",
"useThisParameter": "Використовувати цей параметр",
"exitViewer": "Вийти з переглядача",
"zoomIn": "Збільшити",
"zoomOut": "Зменшити",
"rotateCounterClockwise": "Обертати проти годинникової стрілки",
"rotateClockwise": "Обертати за годинниковою стрілкою",
"toggleAutoscroll": "Увімкнути автопрокручування",
"toggleLogViewer": "Показати або приховати переглядач журналів",
"showGallery": "Показати галерею",
"previousImage": "Попереднє зображення",
"copyMetadataJson": "Скопіювати метадані JSON",
"flipVertically": "Перевернути по вертикалі",
"flipHorizontally": "Відобразити по горизонталі",
"showOptionsPanel": "Показати опції",
"modifyConfig": "Змінити конфігурацію",
"menu": "Меню"
} }
} }

View File

@ -481,5 +481,22 @@
"betaDarkenOutside": "暗化外部区域", "betaDarkenOutside": "暗化外部区域",
"betaLimitToBox": "限制在框内", "betaLimitToBox": "限制在框内",
"betaPreserveMasked": "保留遮罩层" "betaPreserveMasked": "保留遮罩层"
},
"accessibility": {
"modelSelect": "模型选择",
"invokeProgressBar": "Invoke 进度条",
"reset": "重置",
"nextImage": "下一张图片",
"useThisParameter": "使用此参数",
"uploadImage": "上传图片",
"previousImage": "上一张图片",
"copyMetadataJson": "复制JSON元数据",
"exitViewer": "退出视口ExitViewer",
"zoomIn": "放大",
"zoomOut": "缩小",
"rotateCounterClockwise": "逆时针旋转",
"rotateClockwise": "顺时针旋转",
"flipHorizontally": "水平翻转",
"flipVertically": "垂直翻转"
} }
} }

File diff suppressed because one or more lines are too long