diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 9c2ff313..ed372f22 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -44,7 +44,7 @@ body: id: commit attributes: label: Commit where the problem happens - description: Which commit are you running ? (copy the **Commit hash** shown in the cmd/terminal when you launch the UI) + description: Which commit are you running ? (Do not write *Latest version/repo/commit*, as this means nothing and will have changed by the time we read your issue. Rather, copy the **Commit hash** shown in the cmd/terminal when you launch the UI) validations: required: true - type: dropdown diff --git a/.gitignore b/.gitignore index 70660c51..ee53044c 100644 --- a/.gitignore +++ b/.gitignore @@ -29,4 +29,5 @@ notification.mp3 /textual_inversion .vscode /extensions - +/test/stdout.txt +/test/stderr.txt diff --git a/CODEOWNERS b/CODEOWNERS index 935fedcf..a48d8012 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1 +1,13 @@ * @AUTOMATIC1111 +/localizations/ar_AR.json @xmodar @blackneoo +/localizations/de_DE.json @LunixWasTaken +/localizations/es_ES.json @innovaciones +/localizations/fr_FR.json @tumbly +/localizations/it_IT.json @EugenioBuffo +/localizations/ja_JP.json @yuuki76 +/localizations/ko_KR.json @36DB +/localizations/pt_BR.json @M-art-ucci +/localizations/ru_RU.json @kabachuha +/localizations/tr_TR.json @camenduru +/localizations/zh_CN.json @dtlnor @bgluminous +/localizations/zh_TW.json @benlisquare diff --git a/javascript/extensions.js b/javascript/extensions.js new file mode 100644 index 00000000..59179ca6 --- /dev/null +++ b/javascript/extensions.js @@ -0,0 +1,35 @@ + +function extensions_apply(_, _){ + disable = [] + update = [] + gradioApp().querySelectorAll('#extensions input[type="checkbox"]').forEach(function(x){ + if(x.name.startsWith("enable_") && ! x.checked) + disable.push(x.name.substr(7)) + + if(x.name.startsWith("update_") && x.checked) + update.push(x.name.substr(7)) + }) + + restart_reload() + + return [JSON.stringify(disable), JSON.stringify(update)] +} + +function extensions_check(){ + gradioApp().querySelectorAll('#extensions .extension_status').forEach(function(x){ + x.innerHTML = "Loading..." + }) + + return [] +} + +function install_extension_from_index(button, url){ + button.disabled = "disabled" + button.value = "Installing..." + + textarea = gradioApp().querySelector('#extension_to_install textarea') + textarea.value = url + textarea.dispatchEvent(new Event("input", { bubbles: true })) + + gradioApp().querySelector('#install_extension_button').click() +} diff --git a/javascript/hints.js b/javascript/hints.js index 6ddd6aec..623bc25c 100644 --- a/javascript/hints.js +++ b/javascript/hints.js @@ -75,6 +75,7 @@ titles = { "Create style": "Save current prompts as a style. If you add the token {prompt} to the text, the style use that as placeholder for your prompt when you use the style in the future.", "Checkpoint name": "Loads weights from checkpoint before making images. You can either use hash or a part of filename (as seen in settings) for checkpoint name. Recommended to use with Y axis for less switching.", + "Inpainting conditioning mask strength": "Only applies to inpainting models. Determines how strongly to mask off the original image for inpainting and img2img. 1.0 means fully masked, which is the default behaviour. 0.0 means a fully unmasked conditioning. Lower values will help preserve the overall composition of the image, but will struggle with large changes.", "vram": "Torch active: Peak amount of VRAM used by Torch during generation, excluding cached data.\nTorch reserved: Peak amount of VRAM allocated by Torch, including all active and cached data.\nSys VRAM: Peak amount of VRAM allocation across all applications / total GPU VRAM (peak utilization%).", diff --git a/javascript/imageviewer.js b/javascript/imageviewer.js index 9e380c65..67916536 100644 --- a/javascript/imageviewer.js +++ b/javascript/imageviewer.js @@ -13,6 +13,15 @@ function showModal(event) { } lb.style.display = "block"; lb.focus() + + const tabTxt2Img = gradioApp().getElementById("tab_txt2img") + const tabImg2Img = gradioApp().getElementById("tab_img2img") + // show the save button in modal only on txt2img or img2img tabs + if (tabTxt2Img.style.display != "none" || tabImg2Img.style.display != "none") { + gradioApp().getElementById("modal_save").style.display = "inline" + } else { + gradioApp().getElementById("modal_save").style.display = "none" + } event.stopPropagation() } @@ -81,6 +90,25 @@ function modalImageSwitch(offset) { } } +function saveImage(){ + const tabTxt2Img = gradioApp().getElementById("tab_txt2img") + const tabImg2Img = gradioApp().getElementById("tab_img2img") + const saveTxt2Img = "save_txt2img" + const saveImg2Img = "save_img2img" + if (tabTxt2Img.style.display != "none") { + gradioApp().getElementById(saveTxt2Img).click() + } else if (tabImg2Img.style.display != "none") { + gradioApp().getElementById(saveImg2Img).click() + } else { + console.error("missing implementation for saving modal of this type") + } +} + +function modalSaveImage(event) { + saveImage() + event.stopPropagation() +} + function modalNextImage(event) { modalImageSwitch(1) event.stopPropagation() @@ -93,6 +121,9 @@ function modalPrevImage(event) { function modalKeyHandler(event) { switch (event.key) { + case "s": + saveImage() + break; case "ArrowLeft": modalPrevImage(event) break; @@ -198,6 +229,14 @@ document.addEventListener("DOMContentLoaded", function() { modalTileImage.title = "Preview tiling"; modalControls.appendChild(modalTileImage) + const modalSave = document.createElement("span") + modalSave.className = "modalSave cursor" + modalSave.id = "modal_save" + modalSave.innerHTML = "🖫" + modalSave.addEventListener("click", modalSaveImage, true) + modalSave.title = "Save Image(s)" + modalControls.appendChild(modalSave) + const modalClose = document.createElement('span') modalClose.className = 'modalClose cursor'; modalClose.innerHTML = '×' diff --git a/javascript/progressbar.js b/javascript/progressbar.js index 7a05726e..671fde34 100644 --- a/javascript/progressbar.js +++ b/javascript/progressbar.js @@ -3,8 +3,21 @@ global_progressbars = {} galleries = {} galleryObservers = {} +// this tracks laumnches of window.setTimeout for progressbar to prevent starting a new timeout when the previous is still running +timeoutIds = {} + function check_progressbar(id_part, id_progressbar, id_progressbar_span, id_skip, id_interrupt, id_preview, id_gallery){ - var progressbar = gradioApp().getElementById(id_progressbar) + // gradio 3.8's enlightened approach allows them to create two nested div elements inside each other with same id + // every time you use gr.HTML(elem_id='xxx'), so we handle this here + var progressbar = gradioApp().querySelector("#"+id_progressbar+" #"+id_progressbar) + var progressbarParent + if(progressbar){ + progressbarParent = gradioApp().querySelector("#"+id_progressbar) + } else{ + progressbar = gradioApp().getElementById(id_progressbar) + progressbarParent = null + } + var skip = id_skip ? gradioApp().getElementById(id_skip) : null var interrupt = gradioApp().getElementById(id_interrupt) @@ -26,18 +39,26 @@ function check_progressbar(id_part, id_progressbar, id_progressbar_span, id_skip global_progressbars[id_progressbar] = progressbar var mutationObserver = new MutationObserver(function(m){ + if(timeoutIds[id_part]) return; + preview = gradioApp().getElementById(id_preview) gallery = gradioApp().getElementById(id_gallery) if(preview != null && gallery != null){ preview.style.width = gallery.clientWidth + "px" preview.style.height = gallery.clientHeight + "px" + if(progressbarParent) progressbar.style.width = progressbarParent.clientWidth + "px" //only watch gallery if there is a generation process going on check_gallery(id_gallery); var progressDiv = gradioApp().querySelectorAll('#' + id_progressbar_span).length > 0; - if(!progressDiv){ + if(progressDiv){ + timeoutIds[id_part] = window.setTimeout(function() { + timeoutIds[id_part] = null + requestMoreProgress(id_part, id_progressbar_span, id_skip, id_interrupt) + }, 500) + } else{ if (skip) { skip.style.display = "none" } @@ -47,13 +68,10 @@ function check_progressbar(id_part, id_progressbar, id_progressbar_span, id_skip if (galleryObservers[id_gallery]) { galleryObservers[id_gallery].disconnect(); galleries[id_gallery] = null; - } + } } - - } - window.setTimeout(function() { requestMoreProgress(id_part, id_progressbar_span, id_skip, id_interrupt) }, 500) }); mutationObserver.observe( progressbar, { childList:true, subtree:true }) } diff --git a/javascript/ui.js b/javascript/ui.js index cfd0dcd3..7e116465 100644 --- a/javascript/ui.js +++ b/javascript/ui.js @@ -45,14 +45,14 @@ function switch_to_txt2img(){ return args_to_array(arguments); } -function switch_to_img2img_img2img(){ +function switch_to_img2img(){ gradioApp().querySelector('#tabs').querySelectorAll('button')[1].click(); gradioApp().getElementById('mode_img2img').querySelectorAll('button')[0].click(); return args_to_array(arguments); } -function switch_to_img2img_inpaint(){ +function switch_to_inpaint(){ gradioApp().querySelector('#tabs').querySelectorAll('button')[1].click(); gradioApp().getElementById('mode_img2img').querySelectorAll('button')[1].click(); @@ -65,26 +65,6 @@ function switch_to_extras(){ return args_to_array(arguments); } -function extract_image_from_gallery_txt2img(gallery){ - switch_to_txt2img() - return extract_image_from_gallery(gallery); -} - -function extract_image_from_gallery_img2img(gallery){ - switch_to_img2img_img2img() - return extract_image_from_gallery(gallery); -} - -function extract_image_from_gallery_inpaint(gallery){ - switch_to_img2img_inpaint() - return extract_image_from_gallery(gallery); -} - -function extract_image_from_gallery_extras(gallery){ - switch_to_extras() - return extract_image_from_gallery(gallery); -} - function get_tab_index(tabId){ var res = 0 diff --git a/launch.py b/launch.py index 8affd410..ff2f74ba 100644 --- a/launch.py +++ b/launch.py @@ -7,6 +7,7 @@ import shlex import platform dir_repos = "repositories" +dir_extensions = "extensions" python = sys.executable git = os.environ.get('GIT', "git") index_url = os.environ.get('INDEX_URL', "") @@ -16,11 +17,11 @@ def extract_arg(args, name): return [x for x in args if x != name], name in args -def run(command, desc=None, errdesc=None): +def run(command, desc=None, errdesc=None, custom_env=None): if desc is not None: print(desc) - result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) + result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True, env=os.environ if custom_env is None else custom_env) if result.returncode != 0: @@ -101,9 +102,27 @@ def version_check(commit): else: print("Not a git clone, can't perform version check.") except Exception as e: - print("versipm check failed",e) + print("version check failed", e) + + +def run_extensions_installers(): + if not os.path.isdir(dir_extensions): + return + + for dirname_extension in os.listdir(dir_extensions): + path_installer = os.path.join(dir_extensions, dirname_extension, "install.py") + if not os.path.isfile(path_installer): + continue + + try: + env = os.environ.copy() + env['PYTHONPATH'] = os.path.abspath(".") + + print(run(f'"{python}" "{path_installer}"', errdesc=f"Error running install.py for extension {dirname_extension}", custom_env=env)) + except Exception as e: + print(e, file=sys.stderr) + - def prepare_enviroment(): torch_command = os.environ.get('TORCH_COMMAND', "pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 --extra-index-url https://download.pytorch.org/whl/cu113") requirements_file = os.environ.get('REQS_FILE', "requirements_versions.txt") @@ -128,10 +147,12 @@ def prepare_enviroment(): blip_commit_hash = os.environ.get('BLIP_COMMIT_HASH', "48211a1594f1321b00f14c9f7a5b4813144b2fb9") sys.argv += shlex.split(commandline_args) + test_argv = [x for x in sys.argv if x != '--tests'] sys.argv, skip_torch_cuda_test = extract_arg(sys.argv, '--skip-torch-cuda-test') sys.argv, reinstall_xformers = extract_arg(sys.argv, '--reinstall-xformers') sys.argv, update_check = extract_arg(sys.argv, '--update-check') + sys.argv, run_tests = extract_arg(sys.argv, '--tests') xformers = '--xformers' in sys.argv deepdanbooru = '--deepdanbooru' in sys.argv ngrok = '--ngrok' in sys.argv @@ -187,6 +208,8 @@ def prepare_enviroment(): run_pip(f"install -r {requirements_file}", "requirements for Web UI") + run_extensions_installers() + if update_check: version_check(commit) @@ -194,6 +217,26 @@ def prepare_enviroment(): print("Exiting because of --exit argument") exit(0) + if run_tests: + tests(test_argv) + exit(0) + + +def tests(argv): + if "--api" not in argv: + argv.append("--api") + + print(f"Launching Web UI in another process for testing with arguments: {' '.join(argv[1:])}") + + with open('test/stdout.txt', "w", encoding="utf8") as stdout, open('test/stderr.txt', "w", encoding="utf8") as stderr: + proc = subprocess.Popen([sys.executable, *argv], stdout=stdout, stderr=stderr) + + import test.server_poll + test.server_poll.run_tests() + + print(f"Stopping Web UI process with id {proc.pid}") + proc.kill() + def start_webui(): print(f"Launching Web UI with arguments: {' '.join(sys.argv[1:])}") diff --git a/localizations/ar_AR.json b/localizations/ar_AR.json index 1195a8e9..abbbcff4 100644 --- a/localizations/ar_AR.json +++ b/localizations/ar_AR.json @@ -1,45 +1,33 @@ { "rtl": true, - "⤡": "⤡", - "⊞": "⊞", - "×": "×", - "❮": "❮", - "❯": "❯", - "Loading...": "جار التحميل...", - "view": "معاينة", - "api": "api", - "•": "•", - "built with gradio": "مبني باستخدام Gradio", - "Stable Diffusion checkpoint": "نماذج الانتشار المستقر", - "txt2img": "نص لصورة", - "img2img": "صورة لصورة", - "Extras": "الإضافات", - "PNG Info": "معلومات PNG", - "Checkpoint Merger": "دمج النماذج", - "Train": "التدريب", - "Create aesthetic embedding": "Create aesthetic embedding", - "Image Browser": "مستعرض الصور", - "Settings": "الإعدادات", - "Prompt": "الموجه", - "Negative prompt": "الموجه السلبي", - "Run": "تشغيل", - "Skip": "تخطي", - "Interrupt": "إيقاف", - "Generate": "إنشاء", - "Style 1": "نمط 1", - "Style 2": "نمط 2", - "Label": "الوسم", - "File": "ملف", - "Drop File Here": "اسحب الملف هنا", - "-": "-", - "or": "أو", - "Click to Upload": "انقر للتحميل", - "Image": "صورة", - "Check progress": "تحقق من التقدم", - "Check progress (first)": "تحقق من التقدم (الأول)", - "Sampling Steps": "خطوات أخذ العينة", - "Sampling method": "نظام أخذ العينات", + "Loading...": "لحظة...", + "view": "اعرض ", + "api": "واجهة البرمجة", + "built with gradio": "مبني باستخدام gradio", + "Stable Diffusion checkpoint": "أوزان نموذج الإنتشار المسقر", + "txt2img": "نص إلى صورة", + "Prompt": "الطلب", + "Prompt (press Ctrl+Enter or Alt+Enter to generate)": "الطلب (لبدء الإنتاج Ctrl+Enter أو Alt+Enter اضغط)", + "Negative prompt": "عكس الطلب", + "Negative prompt (press Ctrl+Enter or Alt+Enter to generate)": "عكس الطلب (لبدء الإنتاج Ctrl+Enter أو Alt+Enter اضغط)", + "Add a random artist to the prompt.": "أضف فنان عشوائي للطلب", + "Read generation parameters from prompt or last generation if prompt is empty into user interface.": "اقرأ عوامل الإنتاج من الطلب أو من الإنتاج السابق إذا كان الطلب فارغا", + "Save style": "احتفظ بالطلب وعكسه كإضافة", + "Apply selected styles to current prompt": "ألحق الإضافات المحددة إلى الطلب وعكسه", + "Generate": "أنتج", + "Skip": "تخطى", + "Stop processing current image and continue processing.": "لا تكمل خطوات هذة الحزمة وانتقل إلى الحزمة التالية", + "Interrupt": "توقف", + "Stop processing images and return any results accumulated so far.": "توقف عن الإنتاج واعرض ما تم إلى الآن", + "Style 1": "الإضافة 1", + "Style to apply; styles have components for both positive and negative prompts and apply to both": "الإضافات (styles) عبارة عن كلمات تتكرر كثيرا يتم إلحاقها بالطلب وعكسه عند الرغبة", + "Style 2": "الإضافة 2", + "Do not do anything special": "لا يغير شيئا", + "Sampling Steps": "عدد الخطوات", + "Sampling method": "أسلوب الخطو", + "Which algorithm to use to produce the image": "Sampler: اسم نظام تحديد طريقة تغيير المسافات بين الخطوات", "Euler a": "Euler a", + "Euler Ancestral - very creative, each can get a completely different picture depending on step count, setting steps to higher than 30-40 does not help": "Euler Ancestral: طريقة مبدعة يمكن أن تنتج صور مختلفة على حسب عدد الخطوات، لا تتغير بعد 30-40 خطوة", "Euler": "Euler", "LMS": "LMS", "Heun": "Heun", @@ -51,406 +39,480 @@ "DPM2 Karras": "DPM2 Karras", "DPM2 a Karras": "DPM2 a Karras", "DDIM": "DDIM", + "Denoising Diffusion Implicit Models - best at inpainting": "Denoising Diffusion Implicit Models: الأفضل في الإنتاج الجزئي", "PLMS": "PLMS", "Width": "العرض", - "Height": "الارتفاع", - "Restore faces": "ترميم الوجوه", - "Tiling": "تبليط", - "Highres. fix": "إصلاح الصور عالية الدقة", - "Firstpass width": "عرض المرور الأول", - "Firstpass height": "ارتفاع المرور الأول", - "Denoising strength": "قوة تقليل الضوضاء", - "Batch count": "عدد الدُفعات", - "Batch size": "حجم الدفعة", - "CFG Scale": "مقياس التقارب من الموجه (CFG)", + "Height": "الإرتفاع", + "Restore faces": "تحسين الوجوه", + "Tiling": "ترصيف", + "Produce an image that can be tiled.": "أنتج صور يمكن ترصيفها بجانب بعضها كالبلاط", + "Highres. fix": "إصلاح الدقة العالية", + "Use a two step process to partially create an image at smaller resolution, upscale, and then improve details in it without changing composition": "أنتج صورة بدقة منخفضة ثم قم برفع الدقة فيما بعد لمنع التشوهات التي تحصل عندما تكون الدقة المطلوبة كبيرة", + "Firstpass width": "العرض الأولي", + "Firstpass height": "الإرتفاع الأولي", + "Denoising strength": "المدى", + "Determines how little respect the algorithm should have for image's content. At 0, nothing will change, and at 1 you'll get an unrelated image. With values below 1.0, processing will take less steps than the Sampling Steps slider specifies.": "Denoising strength: حدد مدى الإبتعاد عن الصورة (عدد الخطوات الفعلي = عدد الخطوات * المدى)", + "Batch count": "عدد الحزم", + "How many batches of images to create": "يتم إنتاج الصور على دفعات، كل دفعة فيها حزمة من الصور", + "Batch size": "حجم الحزمة", + "How many image to create in a single batch": "Batch size: إنتاج حزمة صور أسرع من إنتاجهم فرادى، حدد عدد الصور في كل حزمة", + "CFG Scale": "التركيز", + "Classifier Free Guidance Scale - how strongly the image should conform to prompt - lower values produce more creative results": "CFG scale: يحدد مقدار التركيز على تلبية الطلب وتجنب عكسه، كلما زاد قل الإبداع", "Seed": "البذرة", - "Extra": "إضافي", - "Variation seed": "تباين البذرة", - "Variation strength": "قوة التباين", - "Resize seed from width": "تغيير حجم البذرة من العرض", - "Resize seed from height": "تغيير حجم البذرة من الارتفاع", - "Open for Clip Aesthetic!": "Open for Clip Aesthetic!", + "A value that determines the output of random number generator - if you create an image with same parameters and seed as another image, you'll get the same result": "Seed: رقم طبيعي عشوائي يسمح بإعادة إنتاج نفس الصورة إذا توافقت قيم العوامل الأخرى", + "Set seed to -1, which will cause a new random number to be used every time": "استخدم بذرة جديدة في كل مرة (نرمز لهذا الخيار بجعل قيمة البذرة 1-)", + "Reuse seed from last generation, mostly useful if it was randomed": "أعد استخدام البذرة من الإنتاج السابق", + "Extra": "مزج", + "Variation seed": "بذرة الممزوج", + "Seed of a different picture to be mixed into the generation.": "Variation seed: بذرة صورة أخرى ليتم مزجها مع الصورة الحالية", + "Variation strength": "أثر الممزوج", + "How strong of a variation to produce. At 0, there will be no effect. At 1, you will get the complete picture with variation seed (except for ancestral samplers, where you will just get something).": "Variation seed strength: مقدار أثر الصورة المدمجة على النتيجة النهائية (0: لا أثر، 1: أثر كامل ما عدا عند استخدام أسلوب خطو سلفي Ancestral)", + "Resize seed from width": "عرض الممزوج", + "Resize seed from height": "إرتفاع الممزوج", + "Make an attempt to produce a picture similar to what would have been produced with same seed at specified resolution": "Seed resize from: حدد دقة صورة الممزوج (0: نفس دقة الإنتاج)", + "Open for Clip Aesthetic!": "تضمين تجميلي", "▼": "▼", - "Aesthetic weight": "Aesthetic weight", - "Aesthetic steps": "Aesthetic steps", - "Aesthetic learning rate": "Aesthetic learning rate", - "Slerp interpolation": "Slerp interpolation", - "Aesthetic imgs embedding": "Aesthetic imgs embedding", - "None": "لايوجد", - "Aesthetic text for imgs": "Aesthetic text for imgs", - "Slerp angle": "Slerp angle", - "Is negative text": "Is negative text", - "Script": "سكريبت", - "Prompt matrix": "مصفوفة الموجهات", - "Prompts from file or textbox": "موجهات من ملف أو مربع النص", - "X/Y plot": "الرسم البياني X/Y", - "Put variable parts at start of prompt": "ضع الأجزاء المتغيرة في بداية الموجه", - "Show Textbox": "إظهار مربع النص", - "File with inputs": "ملف يحتوي المدخلات", - "Prompts": "الموجهات", - "X type": "نوع X", - "Nothing": "لا شئ", - "Var. seed": "تغير البذرة", - "Var. strength": "قوة التغيير", - "Steps": "الخطوات", - "Prompt S/R": "موجه S / R", - "Prompt order": "ترتيب الموجهات", - "Sampler": "نظام أخذ العينات", - "Checkpoint name": "اسم النموذج", + "Aesthetic weight": "أثر التضمين", + "Aesthetic steps": "عدد الخطوات", + "Aesthetic learning rate": "معدل التعلم", + "Slerp interpolation": "امزج بطريقة كروية", + "Aesthetic imgs embedding": "التضمين", + "None": "بدون", + "Aesthetic text for imgs": "الطلب (اختياري)", + "This text is used to rotate the feature space of the imgs embs": "لإعادة توجيه التضمين التجميلي", + "Slerp angle": "أثر الطلب", + "Is negative text": "الطلب عكسي", + "Script": "أدوات خاصة", + "Prompt matrix": "مصفوفة طلبات", + "Put variable parts at start of prompt": "الجزء المتغير في بداية الطلب", + "Prompts from file or textbox": " قائمة طلبات", + "Iterate seed every line": "غير البذرة مع كل طلب", + "List of prompt inputs": "قائمة الطلبات", + "Upload prompt inputs": "اجلب الطلبات من ملف", + "Drop File Here": "اسقط ملف هنا", + "-": "-", + "or": "أو", + "Click to Upload": "انقر للرفع", + "X/Y plot": "مصفوفة عوامل", + "X type": "العامل الأول", + "Nothing": "لا شيء", + "Var. seed": "بذرة الممزوج", + "Var. strength": "أثر الممزوج", + "Steps": "عدد الخطوات", + "Prompt S/R": "كلمات بديلة", + "Prompt order": "ترتيب الكلمات", + "Sampler": "أسلوب الخطو", + "Checkpoint name": "ملف الأوزان", "Hypernetwork": "الشبكة الفائقة", "Hypernet str.": "قوة الشبكة الفائقة", - "Sigma Churn": "دفع سيجما", - "Sigma min": "أصغر سيجما", - "Sigma max": "أكبر سيجما", - "Sigma noise": "ضجة سيجما", - "Eta": "الوقت المتوقع", - "Clip skip": "تخطي Clip", - "Denoising": "تقليل الضوضاء", - "X values": "قيم X", - "Y type": "نوع Y", - "Y values": "قيم Y", - "Draw legend": "ارسم مفتاح التوضيح", - "Include Separate Images": "قم بتضمين الصور منفصلة", - "Keep -1 for seeds": "احتفظ بـقيمة -1 للبذور", - "Drop Image Here": "إسقاط الصورة هنا", - "Save": "حفظ", - "Send to img2img": "أرسل إلى صورة لصورة", - "Send to inpaint": "أرسل إلى إعادة الرسم الجزئي", - "Send to extras": "أرسل إلى الإضافات", - "Make Zip when Save?": "إنشاء ملف مضغوط عند الحفظ؟", - "Textbox": "مربع النص", - "Interrogate\nCLIP": "استجواب\n CLIP", - "Inpaint": "إعادة الرسم الجزئي", - "Batch img2img": "دفعات صورة لصورة", - "Image for img2img": "صورة (صورة لصورة)", - "Image for inpainting with mask": "صورة (إعادة الرسم الجزئي)", - "Mask": "القناع", - "Mask blur": "ضبابية القناع", - "Mask mode": "أسلوب القناع", - "Draw mask": "رسم القناع", - "Upload mask": "تحميل القناع", - "Masking mode": "أسلوب التقنيع", - "Inpaint masked": "إعادة الرسم الجزئي (المنطقة المقنعة)", - "Inpaint not masked": "إعادة الرسم الجزئي (المنطقة الغير مقنعة)", - "Masked content": "المحتوى المقنع", - "fill": "الملأ", - "original": "الأصلي", - "latent noise": "الضوضاء الكامنة", - "latent nothing": "لا شيء كامن", - "Inpaint at full resolution": "إعادة الرسم الجزئي بدقة كاملة", - "Inpaint at full resolution padding, pixels": "إعادة الرسم الجزئي بدقة كاملة, الحشو, بيكسل", - "Process images in a directory on the same machine where the server is running.": "معالجة الصور في المجلد على نفس الجهاز حيث يتم تشغيل الخادم.", - "Use an empty output directory to save pictures normally instead of writing to the output directory.": "استخدم مجلد إخراج فارغ لحفظ الصور بشكل طبيعي بدلاً من الكتابة إلى مجلد المخرجات.", - "Input directory": "مجلد المدخلات", - "Output directory": "مجلد المخرجات", - "Resize mode": "وضعية تغيير الحجم", - "Just resize": "تغييير الحجم فقط", - "Crop and resize": "اقتصاص وتغيير الحجم", - "Resize and fill": "تغيير الحجم والتعبئة", - "img2img alternative test": "صورة لصورة البديلة", - "Loopback": "الحلقة الراجعة", - "Outpainting mk2": "الرسم الخارجي نسخة 2", - "Poor man's outpainting": "الرسم الخارجي للفقراء", - "SD upscale": "ترقية الانتشار المستقر", - "should be 2 or lower.": "should be 2 or lower.", - "Override `Sampling method` to Euler?(this method is built for it)": "Override `Sampling method` to Euler?(this method is built for it)", - "Override `prompt` to the same value as `original prompt`?(and `negative prompt`)": "Override `prompt` to the same value as `original prompt`?(and `negative prompt`)", - "Original prompt": "Original prompt", - "Original negative prompt": "Original negative prompt", - "Override `Sampling Steps` to the same value as `Decode steps`?": "Override `Sampling Steps` to the same value as `Decode steps`?", - "Decode steps": "Decode steps", - "Override `Denoising strength` to 1?": "Override `Denoising strength` to 1?", - "Decode CFG scale": "Decode CFG scale", - "Randomness": "Randomness", - "Sigma adjustment for finding noise for image": "Sigma adjustment for finding noise for image", - "Loops": "Loops", - "Denoising strength change factor": "معامل قوة تقليل الضوضاء", - "Recommended settings: Sampling Steps: 80-100, Sampler: Euler a, Denoising strength: 0.8": "الإعدادات الموصى بها: خطوات أخذ العينات: 80-100 ، طريقة أخذ العينات: Euler a ، تقليل الضوضاء: 0.8", - "Pixels to expand": "عدد البكسل للتوسيع", - "Outpainting direction": "إتجاه الرسم الخارجي", + "Inpainting conditioning mask strength": "قوة قناع الإنتاج الجزئي", + "Only applies to inpainting models. Determines how strongly to mask off the original image for inpainting and img2img. 1.0 means fully masked, which is the default behaviour. 0.0 means a fully unmasked conditioning. Lower values will help preserve the overall composition of the image, but will struggle with large changes.": "حدد مدى صرامة قناع الإنتاج، يصبح القناع شفاف إذا قوته 0 (لا يعمل إلا مع ملفات أوزان الإنتاج الجزئي: inpainting)", + "Sigma Churn": "العشوائية (Schurn)", + "Sigma min": "أدنى تشويش (Stmin)", + "Sigma max": "أقصى تشويش (Stmax)", + "Sigma noise": "التشويش (Snoise)", + "Eta": "العامل Eta η", + "Clip skip": "تخطي آخر طبقات CLIP", + "Denoising": "المدى", + "Cond. Image Mask Weight": "قوة قناع الإنتاج الجزئي", + "X values": "قيم العامل الأول", + "Separate values for X axis using commas.": "افصل القيم بفواصل (,) من اليسار إلى اليمين", + "Y type": "العامل الثاني", + "Y values": "قيم العامل الثاني", + "Separate values for Y axis using commas.": "افصل القيم بفواصل (,) من الأعلى إلى الأسفل", + "Draw legend": "أضف مفتاح التوضيح", + "Include Separate Images": "أضف الصور منفصلة", + "Keep -1 for seeds": "استخدم بذور عشوائية", + "Save": "احفظ", + "Write image to a directory (default - log/images) and generation parameters into csv file.": "احفظ الصور مع ملف العوامل بصيغة CSV", + "Send to img2img": "أرسل لصورة إلى صورة", + "Send to inpaint": "أرسل للإنتاج الجزئي", + "Send to extras": "أرسل للمعالجة", + "Open images output directory": "افتح مجلد الصور المخرجة", + "Make Zip when Save?": "ضع النتائج في ملف مضغوط عند الحفظ", + "img2img": "صورة إلى صورة", + "Interrogate\nCLIP": "استجواب\nCLIP", + "Drop Image Here": "اسقط صورة هنا", + "Just resize": "تغيير الحجم فقط", + "Resize image to target resolution. Unless height and width match, you will get incorrect aspect ratio.": "غير حجم الصورة بدون مراعات اتزان الأبعاد", + "Crop and resize": "تغيير الحجم وقص الأطراف", + "Resize the image so that entirety of target resolution is filled with the image. Crop parts that stick out.": "غير حجم الصورة واقتص الأطراف الزائدة", + "Resize and fill": "تغيير الحجم وتبطين الأطراف", + "Resize the image so that entirety of image is inside target resolution. Fill empty space with image's colors.": "غير حجم الصورة واملأ الأطراف الزائدة بألوان من الصورة", + "img2img alternative test": "استجواب الصورة (تجريبي)", + "should be 2 or lower.": "يفترض أن يكون 2 أو أقل", + "Override `Sampling method` to Euler?(this method is built for it)": "استخدم أسلوب خطو Euler (مستحسن)", + "Override `prompt` to the same value as `original prompt`?(and `negative prompt`)": "استبدل الطلب وعكسه في الأعلى بالطلب الأصلي وعكسه التاليين", + "Original prompt": "الطلب الأصلي", + "Original negative prompt": "عكس الطلب الأصلي", + "Override `Sampling Steps` to the same value as `Decode steps`?": "استبدل عدد الخطوات بعدد الخطوات الأصلية", + "Decode steps": "عدد الخطوات الأصلية", + "Override `Denoising strength` to 1?": "اجعل المدى 1", + "Decode CFG scale": "التركيز", + "Randomness": "العشوائية", + "Sigma adjustment for finding noise for image": "لا تسمح بتثبيت قيمة التباين", + "Loopback": "اجترار وتكرار", + "Loops": "عدد المرات", + "How many times to repeat processing an image and using it as input for the next iteration": "كم مرة يتم أخذ مخرجات الإنتاج كمدخلات وإعادة الإنتاج مرة أخرى", + "Denoising strength change factor": "معدل تغيير المدى", + "In loopback mode, on each loop the denoising strength is multiplied by this value. <1 means decreasing variety so your sequence will converge on a fixed picture. >1 means increasing variety so your sequence will become more and more chaotic.": "يتم ضرب المدى بهذا الرقم في كل مرة، إذا استخدمت رقم أصغر من 1 يمكن الرسو على نتيجة، وإذا استخدمت رقم أكبر من 1 تصبح النتيجة عشوائية", + "Outpainting mk2": "توسيع الصورة (mk2)", + "Recommended settings: Sampling Steps: 80-100, Sampler: Euler a, Denoising strength: 0.8": "يفضل استخدام: 80-100 خطوة، أسلوب Euler a، المدى 0.8", + "Pixels to expand": "عدد البيكسلات", + "Mask blur": "تنعيم القناع", + "How much to blur the mask before processing, in pixels.": "مقدرا تنعيم القناع قبل استخدامه (يقاس بالبيكسل)", + "Outpainting direction": "اتجاه توسيع الصورة", "left": "يسار", "right": "يمين", "up": "فوق", "down": "تحت", - "Fall-off exponent (lower=higher detail)": "أس التناقص (الأدنى = تفاصيل أعلى)", - "Color variation": "اختلاف اللون", - "Will upscale the image to twice the dimensions; use width and height sliders to set tile size": "سيقوم بترقية الصورة إلى ضعف الأبعاد ؛ استخدم شريط تمرير العرض والارتفاع لضبط حجم التبليط", - "Tile overlap": "تداخل التبليط", - "Upscaler": "المرقي", + "Fall-off exponent (lower=higher detail)": "قوة السقوط (كلما قلت زادت التفاصيل)", + "Color variation": "تنوع الألوان", + "Poor man's outpainting": "توسيع الصورة (بدائي)", + "Masked content": "محتويات القناع", + "What to put inside the masked area before processing it with Stable Diffusion.": "ما يوضع مكان الفراغ في الصورة الذي نريد إنتاج محتوياته", + "fill": "ألوان", + "fill it with colors of the image": "املأ باستخدام ألوان مأخوذة من باقي الصورة", + "original": "بدون تغيير", + "keep whatever was there originally": "أبق محتويات ما تحت القناع كما هي", + "latent noise": "تشويش كامن", + "fill it with latent space noise": "املأه باستخدام تشويش من الفضاء الكامن", + "latent nothing": "تصفير كامن", + "fill it with latent space zeroes": "استبدل مكان القناع في الفضاء الكامن بأصفار", + "SD upscale": "مضاعفة الدقة بنموذج الإنتشار المستقر", + "Will upscale the image to twice the dimensions; use width and height sliders to set tile size": "سيتم تكبير حجم الصورة إلى الضعف، استخدم الطول والإرتفاع في الأعلى لتحديد حجم نافذة المكبر", + "Tile overlap": "تداخل النافذة", + "For SD upscale, how much overlap in pixels should there be between tiles. Tiles overlap so that when they are merged back into one picture, there is no clearly visible seam.": "المكبر ينظر إلى أجزاء الصورة من خلال نافذة لتكبير المحتوى ثم ينتقل إلى الجزء المجاور، يفضل أن يكون هناك تداخل بين كل رقعة لكي لا يكون هناك اختلاف واضح بينهم", + "Upscaler": "طريقة التكبير", "Lanczos": "Lanczos", + "LDSR": "LDSR", + "ScuNET GAN": "ScuNET GAN", + "ScuNET PSNR": "ScuNET PSNR", + "ESRGAN_4x": "ESRGAN_4x", + "SwinIR 4x": "SwinIR 4x", + "Inpaint": "إنتاج جزئي", + "Draw mask": "ارسم القناع", + "Upload mask": "ارفع القناع", + "Inpaint masked": "أنتج ما بداخل القناع", + "Inpaint not masked": "أنتج ما حول القناع", + "Inpaint at full resolution": "إنتاج بالدقة الكاملة", + "Upscale masked region to target resolution, do inpainting, downscale back and paste into original image": "كبر ما يراد إعادة إنتاجه ثم صغر النتيجة وألصقها في مكانها", + "Inpaint at full resolution padding, pixels": "عدد بيكسلات التبطين", + "Batch img2img": "صور إلى صور", + "Process images in a directory on the same machine where the server is running.": "حدد مسار مجلد صور موجود في جهاز الخادم", + "Use an empty output directory to save pictures normally instead of writing to the output directory.": "يمكنك أيضا تحديد مجلد حفظ النتائج (غير الإفتراضي)", + "Input directory": "مجلد المدخلات", + "Output directory": "مجلد المخرجات", + "Extras": "معالجة", "Single Image": "صورة واحدة", - "Batch Process": "معالجة الدفعات", - "Batch from Directory": "دفعة من المجلد", - "Source": "مصدر", - "Show result images": "إظهار نتائج الصور ", - "Scale by": "رفع الحجم بمقدار", - "Scale to": "رفع الحجم إلى", + "Source": "المصدر", + "Scale by": "مضاعفة الدقة", "Resize": "تغيير الحجم", - "Crop to fit": "اقتصاص للتوافق", - "Upscaler 2 visibility": "إظهار المرقي 2", - "GFPGAN visibility": "إظهار GFPGAN", - "CodeFormer visibility": "إظهار CodeFormer", - "CodeFormer weight (0 = maximum effect, 1 = minimum effect)": "وزن CodeFormer (0 = أقصى تأثير ، 1 = تأثير أدنى)", - "Open output directory": "افتح مجلد المخرجات", - "Send to txt2img": "أرسل إلى كتابة لصورة", - "A merger of the two checkpoints will be generated in your": "سيتم إنشاء نموذجمدمج من النموذجين في", - "checkpoint": "النموذج", - "directory.": "المجلد.", - "Primary model (A)": "النموذج الأساسي (أ)", - "Secondary model (B)": "النموذج الثانوي (ب)", - "Tertiary model (C)": "النموذج الثالث (ج)", - "Custom Name (Optional)": "اسم مخصص (اختياري)", - "Multiplier (M) - set to 0 to get model A": "المضاعف (M) - اضبط على 0 للحصول على النموذج أ", - "Interpolation Method": "طريقة الاستنباط", - "Weighted sum": "المجموع الموزون", - "Add difference": "أضافة الاختلاف", - "Save as float16": "حفظ float16", - "See": "شاهد", - "wiki": "ويكي", - "for detailed explanation.": "للحصول على شرح مفصل.", - "Create embedding": "إنشاء التضمين", - "Create hypernetwork": "إنشاء شبكة فائقة", - "Preprocess images": "تجهيز الصور", + "Upscaler 1": "المكبر الأول", + "Upscaler 2": "المكبر الثاني", + "Upscaler 2 visibility": "أثر المكبر الثاني", + "GFPGAN visibility": "أثر GFPGAN (محسن وجوه)", + "CodeFormer visibility": "أثر CodeFormer (محسن وجوه)", + "CodeFormer weight (0 = maximum effect, 1 = minimum effect)": "وزن CodeFormer (يزيد التفاصيل على حساب الجودة)", + "Upscale Before Restoring Faces": "كبر قبل تحسين الوجوه", + "Scale to": "دقة محددة", + "Crop to fit": "قص الأطراف الزائدة إذا لم تتناسب الأبعاد", + "Batch Process": "حزمة صور", + "Batch from Directory": "حزمة من مجلد", + "A directory on the same machine where the server is running.": "مسار مجلد صور موجود في جهاز الخادم", + "Leave blank to save images to the default path.": "اتركه فارغا لاستخدام المسار الإفتراضي", + "Show result images": "اعرض الصور الناتجة", + "PNG Info": "عوامل الصورة", + "Send to txt2img": "أرسل لنص إلى صورة", + "Checkpoint Merger": "مزج الأوزان", + "A merger of the two checkpoints will be generated in your": "سيتم مزج الأوزان التالية وحفظ الأوزان المدجمة مع ", + "checkpoint": "الأوزان", + "directory.": " مجلد.", + "Primary model (A)": "الأوزان الأولى (A)", + "Secondary model (B)": "الأوزان الثانية (B)", + "Tertiary model (C)": "الأوزان الثالثة (C)", + "Custom Name (Optional)": "الاسم الجديد (اختياري)", + "Multiplier (M) - set to 0 to get model A": "العامل M: مسافة الإبتعاد عن الأوزان الأولى A", + "Interpolation Method": "طريقة المزج", + "Weighted sum": "خطية", + "Result = A * (1 - M) + B * M": "النتيجة = A * (1 - M) + B * M", + "Add difference": "جمع الفرق", + "Result = A + (B - C) * M": "النتيجة = A + (B - C) * M", + "Save as float16": "احفظ بدقة float16", + "Run": "تشغيل", + "Train": "تدريب", + "See": "اقرأ", + "wiki": " الـwiki ", + "for detailed explanation.": "لمعرفة المزيد", + "Create embedding": "إنشاء تضمين", "Name": "الاسم", - "Initialization text": "نص التهيئة", - "Number of vectors per token": "عدد المتجهات لكل رمز", - "Overwrite Old Embedding": "الكتابة فوق التضمين القديم", - "Modules": "الوحدات", - "Enter hypernetwork layer structure": "أدخل بنية طبقة الشبكة الفائقة", - "Select activation function of hypernetwork": "حدد وظيفة تنشيط الشبكة الفائقة", - "linear": "خطي (Linear)", - "relu": "الوحدة الخطية المعدلة (Relu)", - "leakyrelu": "الوحدة الخطية المعدلة المسربة (Leakyrelu)", - "elu": "الوحدة الأسية الخطية (Elu)", - "swish": "Swish", - "Add layer normalization": "أضف طبقة التسوية", - "Use dropout": "استخدم الهبوط", - "Overwrite Old Hypernetwork": "الكتابة فوق الشبكة الفائقة القديمة", - "Source directory": "مجلد المصدر", - "Destination directory": "مجلد النتائج", - "Existing Caption txt Action": "الإجراء النصي للتعليق المتوفر", + "Initialization text": "النص المبدأي", + "Number of vectors per token": "عدد المتجهات لكل وحدة لغوية", + "Overwrite Old Embedding": "استبدل التضمين القديم", + "Create hypernetwork": "إنشاء شبكة فائقة", + "Modules": "الأجزاء", + "Enter hypernetwork layer structure": "ترتيب مضاعفات عرض الطبقات", + "1st and last digit must be 1. ex:'1, 2, 1'": "المضاعفين الأول والأخير يجب أن يكونا 1، مثال: 1, 2, 1", + "Select activation function of hypernetwork": "دالة التنشيط", + "linear": "linear", + "relu": "relu", + "leakyrelu": "leakyrelu", + "elu": "elu", + "swish": "swish", + "tanh": "tanh", + "sigmoid": "sigmoid", + "celu": "celu", + "gelu": "gelu", + "glu": "glu", + "hardshrink": "hardshrink", + "hardsigmoid": "hardsigmoid", + "hardtanh": "hardtanh", + "logsigmoid": "logsigmoid", + "logsoftmax": "logsoftmax", + "mish": "mish", + "prelu": "prelu", + "rrelu": "rrelu", + "relu6": "relu6", + "selu": "selu", + "silu": "silu", + "softmax": "softmax", + "softmax2d": "softmax2d", + "softmin": "softmin", + "softplus": "softplus", + "softshrink": "softshrink", + "softsign": "softsign", + "tanhshrink": "tanhshrink", + "threshold": "threshold", + "Select Layer weights initialization. relu-like - Kaiming, sigmoid-like - Xavier is recommended": "تهيئة الأوزان (استخدم Kaiming مع relu وأمثالها وXavier مع sigmoid وأمثالها)", + "Normal": "Normal", + "KaimingUniform": "KaimingUniform", + "KaimingNormal": "KaimingNormal", + "XavierUniform": "XavierUniform", + "XavierNormal": "XavierNormal", + "Add layer normalization": "أضف تسوية الطبقات (LayerNorm)", + "Use dropout": "استخدم الإسقاط (Dropout)", + "Overwrite Old Hypernetwork": "استبدل الشبكة الفائقة القديمة", + "Preprocess images": "معالجة مسبقة للصور", + "Source directory": "مجلد المدخلات", + "Destination directory": "مجلد المخرجات", + "Existing Caption txt Action": "اذا كانت الصورة لديها توصيف (طلب)", "ignore": "تجاهل", - "copy": "نسخ", - "prepend": "أضف قبل", + "copy": "انسخ", + "prepend": "أسبق", "append": "ألحق", - "Create flipped copies": "قم بإنشاء نسخ مقلوبة", - "Split oversized images": "تقسيم الصور كبيرة الحجم", - "Use BLIP for caption": "استخدم BLIP للتعليق", - "Use deepbooru for caption": "استخدم deepbooru للتعليق", - "Split image threshold": "حد تقسيم الصورة", - "Split image overlap ratio": "نسبة تداخل الصورة المنقسمة", - "Preprocess": "تجهيز الصور", - "Train an embedding or Hypernetwork; you must specify a directory with a set of 1:1 ratio images": "تدريب التضمين أو الشبكة الفائقة ؛ يجب تحديد مجلد بمجموعة من الصور بنسبة أبعاد 1: 1", - "[wiki]": "[ويكي]", + "Create flipped copies": "انشئ نسخ معكوسة للصور", + "Split oversized images": "قسّم الصور الكبيرة", + "Split image threshold": "حد تقسيم الصور الكبيرة", + "Split image overlap ratio": "نسبة تداخل اقسام الصور الكبيرة", + "Auto focal point crop": "اقتصاص تلقائي", + "Focal point face weight": "تمركز الوجوه", + "Focal point entropy weight": "تمركز التنوع", + "Focal point edges weight": "تمركز الحواف", + "Create debug image": "احفظ نتائج التحليل أيضا", + "Use BLIP for caption": "استخدم BLIP لتوصيف الصور", + "Use deepbooru for caption": "استخدم deepbooru لتوصيف الصور", + "Preprocess": "معالجة مسبقة", + "Train an embedding or Hypernetwork; you must specify a directory with a set of 1:1 ratio images": "درب التضمين أو الشبكة الفائقة: يجب تحديد مجلد يحتوي صور مربعة فقط ", + "[wiki]": "[wiki]", "Embedding": "التضمين", "Embedding Learning rate": "معدل تعلم التضمين", "Hypernetwork Learning rate": "معدل تعلم الشبكة الفائقة", "Dataset directory": "مجلد مجموعة البيانات", + "Path to directory with input images": "مسار مجلد الصور المدخلة", "Log directory": "مجلد السجل", - "Prompt template file": "ملف قالب الموجهات", - "Max steps": "الخطوات القصوى", - "Save an image to log directory every N steps, 0 to disable": "حفظ صورة في مجلد السجل كل N خطوات ، 0 للتعطيل", - "Save a copy of embedding to log directory every N steps, 0 to disable": "حفظ نسخة من التضمين في مجلد السجل كل N خطوات ، 0 للتعطيل", - "Save images with embedding in PNG chunks": "حفظ التضمين مع الصور في أجزاء PNG", - "Read parameters (prompt, etc...) from txt2img tab when making previews": "قراءة المتغيرات (الموجه ، إلخ ...) من علامة تبويب نص لصورة عند إجراء المعاينات", - "Train Hypernetwork": "تدريب الشبكة الفائقة", - "Train Embedding": "تدريب التضمين", - "Create an aesthetic embedding out of any number of images": "Create an aesthetic embedding out of any number of images", - "Create images embedding": "Create images embedding", - "extras": "إضافات", - "favorites": "المفضلة", - "custom fold": "custom fold", - "Load": "تحميل", + "Path to directory where to write outputs": "مسار مجلد الصور المخرجة", + "Prompt template file": "ملف صيغ الطلبات", + "Max steps": "أقصى عدد لخطوات التدريب", + "Save an image to log directory every N steps, 0 to disable": "احفظ صورة في السجل بعد كل كم خطوة تدريب (إذا 0 لا تحفظ)", + "Save a copy of embedding to log directory every N steps, 0 to disable": "احفظ التضمين في السجل بعد كل كم خطوة تدريب (إذا 0 لا تحفظ)", + "Save images with embedding in PNG chunks": "احفظ التضمين بداخل ملف الصورة كعامل يمكن استخراجه من عوامل الصورة (صيغة PNG)", + "Read parameters (prompt, etc...) from txt2img tab when making previews": "استخدم قيم العوامل الموجودة في تبويب نص إلى صورة لعرض نتائجهم أثناء التدريب", + "Train Hypernetwork": "درّب الشبكة الفائقة", + "Train Embedding": "درّب التضمين", + "Create aesthetic embedding": "تضمين تجميلي", + "Create an aesthetic embedding out of any number of images": "انشئ تضمين تجميلي يعبر عن مجموعة من الصور", + "Create images embedding": "انشئ التضمين التجميلي", + "Image Browser": "معرض الصور", + "Load": "حمّل", "Images directory": "مجلد الصور", - "Prev batch": "الدفعة السابقة", - "Next batch": "الدفعة التالية", "First Page": "الصفحة الأولى", "Prev Page": "الصفحة السابقة", - "Page Index": "فهرس الصفحات", + "Page Index": "رقم الصفحة", "Next Page": "الصفحة التالية", - "End Page": "صفحة النهاية", - "number of images to delete consecutively next": "عدد الصور المطلوب حذفها على التوالي بعد ذلك", - "Delete": "حذف", - "Generate Info": "معلومات الإنشاء", + "End Page": "الصفحة الأخيرة", + "number of images to delete consecutively next": "عدد الصور المتتالية للحذف", + "Delete": "احذف", + "Generate Info": "معلومات عامة", "File Name": "اسم الملف", - "Collect": "جمع", - "Refresh page": "إعادة تحميل الصفحة", - "Date to": "التاريخ إلى", - "Number": "الرقم", - "set_index": "وضع الفهرس", - "Checkbox": "صندوق اختيار", - "Apply settings": "تطبيق الإعدادات", - "Saving images/grids": "حفظ الصور / الإطار الشبكي", - "Always save all generated images": "احفظ دائمًا جميع الصور التي تم إنشائها", - "File format for images": "تنسيق ملفات الصور", - "Images filename pattern": "نمط اسم ملفات الصور", - "Add number to filename when saving": "Add number to filename when saving", - "Always save all generated image grids": "احفظ دائمًا جميع الإطارات الشبكية للصور التي تم إنشاؤها", - "File format for grids": "تنسيق ملفات الإطارات الشبكية", - "Add extended info (seed, prompt) to filename when saving grid": "أضف معلومات إضافية (البذرة ، الموجه) إلى اسم الملف عند حفظ الإطار الشبكي", - "Do not save grids consisting of one picture": "لا تحفظ الإطارات الشبكية التي تتكون من صورة واحدة", - "Prevent empty spots in grid (when set to autodetect)": "منع المناطق الفارغة في الإطار الشبكي (عند الضبط على الاكتشاف التلقائي)", - "Grid row count; use -1 for autodetect and 0 for it to be same as batch size": "عدد صفوف الإطار الشبكي استخدم -1 للاكتشاف التلقائي و 0 ليكون نفس حجم الدُفعة", - "Save text information about generation parameters as chunks to png files": "احفظ معلومات نصية حول متغيرات الإنشاء كمقاطع في ملفات png", - "Create a text file next to every image with generation parameters.": "قم بإنشاء ملف نصي بجوار كل صورة باستخدام متغيرات الإنشاء.", - "Save a copy of image before doing face restoration.": "احفظ نسخة من الصورة قبل القيام بترميم الوجوه.", - "Quality for saved jpeg images": "جودة الصور المحفوظة بتنسيق jpeg", - "If PNG image is larger than 4MB or any dimension is larger than 4000, downscale and save copy as JPG": "إذا كانت صورة PNG أكبر من 4 ميجابايت أو كان أي بُعد أكبر من 4000 ، قم بتقليل حجم الصورة وحفظها بتنسيق JPG", - "Use original name for output filename during batch process in extras tab": "استخدم الاسم الأصلي لاسم ملف الإخراج أثناء عملية الدُفعات في علامة تبويب الإضافات", - "When using 'Save' button, only save a single selected image": "عند استخدام زر 'حفظ' ، احفظ فقط صورة واحدة محددة", - "Do not add watermark to images": "لا تقم بإضافة العلامة المائية للصور", - "Paths for saving": "مسارات الحفظ", - "Output directory for images; if empty, defaults to three directories below": "مجلد المخرجات للصور ؛ إذا كان فارغا ، يتم تعيينه افتراضيًا إلى المجلدات الثلاثة أدناه", - "Output directory for txt2img images": "مجلد المخرجات لصور نص لصورة", - "Output directory for img2img images": "مجلد المخرجات لصور صورة لصورة", - "Output directory for images from extras tab": "مجلد المخرجات لصور علامة تبويب الإضافات", - "Output directory for grids; if empty, defaults to two directories below": "مجلد المخرجات للإطارات الشبكية ؛ إذا كان فارغا ، يتم تعيينه افتراضيًا إلى المجلدين أدناه", - "Output directory for txt2img grids": "مجلد المخرجات للإطارات الشبكية نص لصورة", - "Output directory for img2img grids": "مجلد المخرجات للإطارات الشبكية صورة لصورة", - "Directory for saving images using the Save button": "مجلد لحفظ الصور باستخدام زر حفظ", - "Saving to a directory": "يتم الحفظ إلى المجلد..", - "Save images to a subdirectory": "حفظ الصور في مجلد فرعي", - "Save grids to a subdirectory": "حفظ الإطارات الشبكية في مجلد فرعي", + "Collect": "اجمع", + "extras": "معالجة", + "favorites": "المفضلة", + "custom fold": "مجلد آخر", + "Input images directory": "مجلد الصور المدخلة", + "Settings": "إعدادات", + "Apply settings": "طبق الإعدادت", + "Saving images/grids": "حفظ الصور وجداولها", + "Always save all generated images": "احفظ كل الصور المنتجة", + "File format for images": "صيغة ملفات الصور", + "Images filename pattern": "نمط تسمية الصور", + "Use following tags to define how filenames for images are chosen: [steps], [cfg], [prompt], [prompt_no_styles], [prompt_spaces], [width], [height], [styles], [sampler], [seed], [model_hash], [prompt_words], [date], [datetime], [datetime], [datetime