mirror of
https://github.com/upscayl/upscayl.git
synced 2024-11-27 17:00:52 +01:00
Update to new schema, ADD: zh, ja, ru, es and fr
MOD: All necessary strings to match
This commit is contained in:
parent
bacbee8fa8
commit
d721e7ae7f
@ -2,11 +2,14 @@ import { atom } from "jotai";
|
||||
import en from "../locales/en.json";
|
||||
import ru from "../locales/ru.json";
|
||||
import ja from "../locales/ja.json";
|
||||
import zh from "../locales/zh.json";
|
||||
import es from "../locales/es.json";
|
||||
import fr from "../locales/fr.json";
|
||||
import { atomWithStorage } from "jotai/utils";
|
||||
|
||||
// Define the shape of the translations
|
||||
type Translations = typeof en;
|
||||
type Locales = "en" | "ru" | "ja";
|
||||
type Locales = "en" | "ru" | "ja" | "zh" | "es" | "fr";
|
||||
|
||||
// Utility function to access nested translation keys
|
||||
const getNestedTranslation = (obj: Translations, key: string): string => {
|
||||
@ -21,7 +24,14 @@ export const localeAtom = atomWithStorage<Locales>("language", "en");
|
||||
// Atom to get the translation function based on the current locale
|
||||
export const translationAtom = atom((get) => {
|
||||
const locale = get(localeAtom);
|
||||
const translations: Record<Locales, Translations> = { en, ru, ja };
|
||||
const translations: Record<Locales, Translations> = {
|
||||
en,
|
||||
ru,
|
||||
ja,
|
||||
zh,
|
||||
es,
|
||||
fr,
|
||||
};
|
||||
|
||||
return (key: string, params: Record<string, string> = {}): string => {
|
||||
const template = getNestedTranslation(translations[locale], key);
|
||||
|
@ -15,27 +15,27 @@ function Footer() {
|
||||
className="badge badge-neutral mb-2"
|
||||
onClick={() => setShowNewsModal(true)}
|
||||
>
|
||||
{t("APP.FOOTER.NEWS_TITLE")}
|
||||
{t("FOOTER.NEWS_TITLE")}
|
||||
</button>
|
||||
)}
|
||||
<p>
|
||||
{t("APP.FOOTER.COPYRIGHT")} {new Date().getFullYear()} -{" "}
|
||||
{t("FOOTER.COPYRIGHT")} {new Date().getFullYear()} -{" "}
|
||||
<a
|
||||
className="font-bold"
|
||||
href="https://github.com/upscayl/upscayl"
|
||||
target="_blank"
|
||||
>
|
||||
{t("APP.TITLE")}
|
||||
{t("TITLE")}
|
||||
</a>
|
||||
</p>
|
||||
<p>
|
||||
{t("APP.FOOTER.BY")}
|
||||
{t("FOOTER.TITLE")}
|
||||
<a
|
||||
href="https://github.com/upscayl"
|
||||
className="font-bold"
|
||||
target="_blank"
|
||||
>
|
||||
{t("APP.FOOTER.APP_TEAM")}
|
||||
{t("FOOTER.LINK_TITLE")}
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
|
@ -13,18 +13,18 @@ export default function Header({ version }: { version: string }) {
|
||||
target="_blank"
|
||||
className={`outline-none focus-visible:ring-2`}
|
||||
data-tooltip-id="tooltip"
|
||||
data-tooltip-content={t("APP.HEADER.GITHUB_STAR_TT_INFO")}
|
||||
data-tooltip-content={t("HEADER.GITHUB_BUTTON_TITLE")}
|
||||
>
|
||||
<div className="flex items-center gap-3 px-5 py-5">
|
||||
<Logo className="inline-block h-14 w-14" />
|
||||
<div className="flex flex-col justify-center">
|
||||
<h1 className="text-3xl font-bold">
|
||||
{t("APP.TITLE")}
|
||||
{t("TITLE")}
|
||||
<span className="text-xs">
|
||||
{version} {featureFlags.APP_STORE_BUILD && "Mac"}
|
||||
</span>
|
||||
</h1>
|
||||
<p className="">{t("APP.HEADER.APP_INFO")}</p>
|
||||
<p className="">{t("HEADER.DESCRIPTION")}</p>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
@ -58,7 +58,7 @@ export const NewsModal = ({
|
||||
|
||||
<form method="dialog" className="modal-backdrop">
|
||||
<button onClick={() => setShow(false)}>
|
||||
{t("APP.INFOS.DIALOG_BOX.CLOSE")}
|
||||
{t("APP.DIALOG_BOX.CLOSE")}
|
||||
</button>
|
||||
</form>
|
||||
</dialog>
|
||||
|
@ -18,7 +18,7 @@ const Tabs = ({ selectedTab, setSelectedTab }: TabsProps) => {
|
||||
setSelectedTab(0);
|
||||
}}
|
||||
>
|
||||
{t("APP.TITLE")}
|
||||
{t("TITLE")}
|
||||
</a>
|
||||
<a
|
||||
className={`tab ${selectedTab === 1 && "tab-active"}`}
|
||||
@ -26,7 +26,7 @@ const Tabs = ({ selectedTab, setSelectedTab }: TabsProps) => {
|
||||
setSelectedTab(1);
|
||||
}}
|
||||
>
|
||||
{t("APP.SETTINGS.TITLE")}
|
||||
{t("SETTINGS.TITLE")}
|
||||
</a>
|
||||
</div>
|
||||
);
|
||||
|
@ -43,16 +43,16 @@ export const UpscaylCloudModal = ({ show, setShow, setDontShowCloudModal }) => {
|
||||
</svg>
|
||||
</button>
|
||||
<p className="badge badge-neutral text-xs">
|
||||
{t("APP.UPSCAYL_CLOUD.COMING_SOON")}
|
||||
{t("UPSCAYL_CLOUD.COMING_SOON")}
|
||||
</p>
|
||||
<p className="text-2xl font-semibold">{t("APP.INTRO")}</p>
|
||||
<p className="text-2xl font-semibold">{t("INTRO")}</p>
|
||||
<p className="w-9/12 text-lg font-medium">
|
||||
{t("APP.UPSCAYL_CLOUD.CATCHY_PHRASE_1")}
|
||||
{t("UPSCAYL_CLOUD.CATCHY_PHRASE_1")}
|
||||
</p>
|
||||
|
||||
<div className="flex flex-col gap-2 text-start">
|
||||
<pre style={{ fontFamily: "inherit" }} className="leading-8">
|
||||
{t("APP.UPSCAYL_CLOUD.CATCHY_PHRASE_2")}
|
||||
{t("UPSCAYL_CLOUD.CATCHY_PHRASE_2")}
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -72,16 +72,16 @@ export const UpscaylCloudModal = ({ show, setShow, setDontShowCloudModal }) => {
|
||||
email,
|
||||
});
|
||||
} catch (error) {
|
||||
alert(t("APP.UPSCAYL_CLOUD.ALREADY_REGISTERED", { name }));
|
||||
alert(t("UPSCAYL_CLOUD.ALREADY_REGISTERED_ALERT", { name }));
|
||||
return;
|
||||
}
|
||||
setName("");
|
||||
setEmail("");
|
||||
setDontShowCloudModal(true);
|
||||
setShow(false);
|
||||
alert(t("APP.UPSCAYL_CLOUD.ADD_SUCCESS"));
|
||||
alert(t("UPSCAYL_CLOUD.ADD_SUCCESS"));
|
||||
} else {
|
||||
alert(t("APP.UPSCAYL_CLOUD.INCORRECT_FIELDS"));
|
||||
alert(t("UPSCAYL_CLOUD.INCORRECT_FIELDS_ALERT"));
|
||||
}
|
||||
}}
|
||||
>
|
||||
@ -105,7 +105,7 @@ export const UpscaylCloudModal = ({ show, setShow, setDontShowCloudModal }) => {
|
||||
type="submit"
|
||||
className="rounded-2xl bg-success px-4 py-2 text-success-content"
|
||||
>
|
||||
{t("APP.UPSCAYL_CLOUD.JOIN_WAITLIST")}
|
||||
{t("UPSCAYL_CLOUD.JOIN_WAITLIST")}
|
||||
</button>
|
||||
|
||||
<button
|
||||
@ -116,14 +116,14 @@ export const UpscaylCloudModal = ({ show, setShow, setDontShowCloudModal }) => {
|
||||
}}
|
||||
type="button"
|
||||
>
|
||||
{t("APP.UPSCAYL_CLOUD.DONT_SHOW_AGAIN")}
|
||||
{t("UPSCAYL_CLOUD.DONT_SHOW_AGAIN")}
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<form method="dialog" className="modal-backdrop">
|
||||
<button onClick={() => setShow(false)}>
|
||||
{t("APP.INFOS.DIALOG_BOX.CLOSE")}
|
||||
{t("APP.DIALOG_BOX.CLOSE")}
|
||||
</button>
|
||||
</form>
|
||||
</dialog>
|
||||
|
@ -16,14 +16,14 @@ export function CompressionInput({
|
||||
<div className="flex flex-col gap-2">
|
||||
<div className="flex gap-1 text-sm font-medium uppercase">
|
||||
<p className="shrink-0">
|
||||
{t("APP.INFOS.IMAGE_COMPRESSION.TITLE", {
|
||||
{t("SETTINGS.IMAGE_COMPRESSION.TITLE", {
|
||||
compression: compression.toString(),
|
||||
})}
|
||||
</p>
|
||||
</div>
|
||||
{compression > 0 && (
|
||||
<p className="text-xs text-base-content/80">
|
||||
{t("APP.INFOS.IMAGE_COMPRESSION.LOSSLESS_TIP")}
|
||||
{t("SETTINGS.IMAGE_COMPRESSION.DESCRIPTION")}
|
||||
</p>
|
||||
)}
|
||||
<input
|
||||
|
@ -16,15 +16,15 @@ export function CustomModelsFolderSelect({
|
||||
|
||||
return (
|
||||
<div className="flex flex-col items-start gap-2">
|
||||
<p className="text-sm font-medium">{t("APP.INFOS.CUSTOM_MODELS.ADD")}</p>
|
||||
<p className="text-sm font-medium">{t("SETTINGS.CUSTOM_MODELS.TITLE")}</p>
|
||||
<p className="text-xs text-base-content/80">
|
||||
{t("APP.INFOS.CUSTOM_MODELS.INFO")}
|
||||
{t("SETTINGS.CUSTOM_MODELS.DESCRIPTION")}
|
||||
<a
|
||||
href="https://github.com/upscayl/custom-models/blob/main/README.md"
|
||||
className="link underline"
|
||||
target="_blank"
|
||||
>
|
||||
{t("APP.INFOS.CUSTOM_MODELS.LINK_TEXT")}
|
||||
{t("SETTINGS.CUSTOM_MODELS.LINK_TITLE")}
|
||||
</a>
|
||||
</p>
|
||||
<p className="text-sm text-base-content/60">{customModelsPath}</p>
|
||||
@ -43,7 +43,7 @@ export function CustomModelsFolderSelect({
|
||||
}
|
||||
}}
|
||||
>
|
||||
{t("APP.INFOS.CUSTOM_MODELS.SELECT_FOLDER")}
|
||||
{t("SETTINGS.CUSTOM_MODELS.BUTTON_FOLDER")}
|
||||
</button>
|
||||
</div>
|
||||
);
|
||||
|
@ -12,12 +12,12 @@ export function CustomResolutionInput() {
|
||||
<div>
|
||||
<div className="flex flex-col gap-1">
|
||||
<p className="text-sm font-medium">
|
||||
{t("APP.INFOS.CUSTOM_INPUT_RESOLUTION.WIDTH")}
|
||||
{t("SETTINGS.CUSTOM_INPUT_RESOLUTION.TITLE")}
|
||||
</p>
|
||||
<p className="text-xs text-base-content/80">
|
||||
<b>{t("APP.INFOS.CUSTOM_INPUT_RESOLUTION.RESTART")}</b>
|
||||
<b>{t("SETTINGS.CUSTOM_INPUT_RESOLUTION.RESTART")}</b>
|
||||
<br />
|
||||
{t("APP.INFOS.CUSTOM_INPUT_RESOLUTION.CUSTOM_WIDTH_TIP")}
|
||||
{t("SETTINGS.CUSTOM_INPUT_RESOLUTION.DESCRIPTION")}
|
||||
</p>
|
||||
</div>
|
||||
<div className="mt-2 flex items-center gap-2">
|
||||
|
@ -7,13 +7,13 @@ export function DonateButton() {
|
||||
|
||||
return (
|
||||
<div className="flex flex-col gap-2 text-sm font-medium">
|
||||
<p>{t("APP.INFOS.DONATE.IF_LIKED")}</p>
|
||||
<p>{t("SETTINGS.DONATE.DESCRIPTION")}</p>
|
||||
<a
|
||||
href="https://buymeacoffee.com/fossisthefuture"
|
||||
target="_blank"
|
||||
className="btn btn-primary"
|
||||
>
|
||||
{t("APP.INFOS.DONATE.DONATE")}
|
||||
{t("SETTINGS.DONATE.BUTTON_TITLE")}
|
||||
</a>
|
||||
</div>
|
||||
);
|
||||
|
@ -12,13 +12,13 @@ export function GpuIdInput({ gpuId, handleGpuIdChange }) {
|
||||
|
||||
return (
|
||||
<div className="flex flex-col gap-2">
|
||||
<p className="text-sm font-medium">{t("APP.INFOS.GPU_ID_INPUT.ID")}</p>
|
||||
<p className="text-sm font-medium">{t("SETTINGS.GPU_ID_INPUT.TITLE")}</p>
|
||||
<p className="text-xs text-base-content/80">
|
||||
{t("APP.INFOS.GPU_ID_INPUT.READ_DOCS")}
|
||||
{t("SETTINGS.GPU_ID_INPUT.DESCRIPTION")}
|
||||
</p>
|
||||
{window.electron.platform === "win" && (
|
||||
<p className="text-xs text-base-content/80">
|
||||
{t("APP.INFOS.GPU_ID_INPUT.ENABLE_PERF_MODE")}
|
||||
{t("SETTINGS.GPU_ID_INPUT.ADDITIONAL_DESCRIPTION")}
|
||||
</p>
|
||||
)}
|
||||
<input
|
||||
|
@ -18,7 +18,7 @@ export function ImageFormatSelect({
|
||||
<div className="flex flex-col gap-2">
|
||||
<div className="flex flex-row gap-1">
|
||||
<p className="text-sm font-medium">
|
||||
{t("APP.INFOS.IMAGE_FORMAT.SAVE_AS")}
|
||||
{t("SETTINGS.IMAGE_FORMAT.TITLE")}
|
||||
</p>
|
||||
{/* <p className="badge-primary badge text-[10px] font-medium">
|
||||
EXPERIMENTAL
|
||||
@ -32,21 +32,21 @@ export function ImageFormatSelect({
|
||||
className={`btn ${saveImageAs === "png" && "btn-primary"}`}
|
||||
onClick={() => setExportType("png")}
|
||||
>
|
||||
{t("APP.INFOS.IMAGE_FORMAT.PNG")}
|
||||
{t("SETTINGS.IMAGE_FORMAT.PNG")}
|
||||
</button>
|
||||
{/* JPG */}
|
||||
<button
|
||||
className={`btn ${saveImageAs === "jpg" && "btn-primary"}`}
|
||||
onClick={() => setExportType("jpg")}
|
||||
>
|
||||
{t("APP.INFOS.IMAGE_FORMAT.JPG")}
|
||||
{t("SETTINGS.IMAGE_FORMAT.JPG")}
|
||||
</button>
|
||||
{/* WEBP */}
|
||||
<button
|
||||
className={`btn ${saveImageAs === "webp" && "btn-primary"}`}
|
||||
onClick={() => setExportType("webp")}
|
||||
>
|
||||
{t("APP.INFOS.IMAGE_FORMAT.WEBP")}
|
||||
{t("SETTINGS.IMAGE_FORMAT.WEBP")}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -22,9 +22,9 @@ export function ImageScaleSelect({
|
||||
{hideInfo ? (
|
||||
<>
|
||||
<p className="text-sm">
|
||||
{t("APP.INFOS.IMAGE_SCALE.TITLE")}{" "}
|
||||
{t("SETTINGS.IMAGE_SCALE.TITLE")}{" "}
|
||||
<span className="text-xs">
|
||||
{t("APP.INFOS.IMAGE_SCALE.SCALES_TIMES", {
|
||||
{t("SETTINGS.IMAGE_SCALE.IMAGE_SCALED_BY", {
|
||||
scale,
|
||||
})}
|
||||
</span>
|
||||
@ -33,9 +33,7 @@ export function ImageScaleSelect({
|
||||
<p
|
||||
className="badge badge-warning text-xs font-bold"
|
||||
data-tooltip-id="tooltip"
|
||||
data-tooltip-content={t(
|
||||
"APP.ERRORS.IMAGE_SCALE_WARN.PERF_ISSUE",
|
||||
)}
|
||||
data-tooltip-content={t("SETTINGS.IMAGE_SCALE.WARNING")}
|
||||
>
|
||||
!
|
||||
</p>
|
||||
@ -43,8 +41,8 @@ export function ImageScaleSelect({
|
||||
</>
|
||||
) : (
|
||||
<p className="text-sm font-medium">
|
||||
{t("APP.INFOS.IMAGE_SCALE.TITLE_CAPS")}{" "}
|
||||
{t("APP.INFOS.IMAGE_SCALE.SCALES_TIMES", {
|
||||
{t("SETTINGS.IMAGE_SCALE.TITLE")}{" "}
|
||||
{t("SETTINGS.IMAGE_SCALE.IMAGE_SCALED_BY", {
|
||||
scale,
|
||||
})}{" "}
|
||||
{useCustomWidth && "DISABLED"}
|
||||
@ -53,12 +51,12 @@ export function ImageScaleSelect({
|
||||
</div>
|
||||
{!hideInfo && (
|
||||
<p className="text-xs text-base-content/80">
|
||||
{t("APP.INFOS.IMAGE_SCALE.AI_UPSCALE_RESIZE_INFO")}
|
||||
{t("SETTINGS.IMAGE_SCALE.DESCRIPTION")}
|
||||
</p>
|
||||
)}
|
||||
{!hideInfo && parseInt(scale) >= 6 && (
|
||||
<p className="text-xs text-base-content/80 text-red-500">
|
||||
{t("APP.ERRORS.IMAGE_SCALE_WARN.PERF_ISSUE_DEVICE")}
|
||||
{t("SETTINGS.IMAGE_SCALE.ADDITIONAL_WARNING")}
|
||||
</p>
|
||||
)}
|
||||
|
||||
|
@ -28,9 +28,9 @@ export function LogArea({
|
||||
<p className="text-sm font-medium">LOGS</p>
|
||||
<button className="btn btn-primary btn-xs" onClick={copyOnClickHandler}>
|
||||
{isCopied ? (
|
||||
<span>{t("APP.INFOS.LOG_AREA.ON_COPY")}</span>
|
||||
<span>{t("SETTINGS.LOG_AREA.ON_COPY")}</span>
|
||||
) : (
|
||||
<span>{t("APP.INFOS.LOG_AREA.COPY")}</span>
|
||||
<span>{t("SETTINGS.LOG_AREA.BUTTON_TITLE")}</span>
|
||||
)}
|
||||
</button>
|
||||
</div>
|
||||
@ -40,7 +40,7 @@ export function LogArea({
|
||||
>
|
||||
{logData.length === 0 && (
|
||||
<p className="text-base-content/70">
|
||||
{t("APP.INFOS.LOG_AREA.NO_LOGS")}
|
||||
{t("SETTINGS.LOG_AREA.NO_LOGS")}
|
||||
</p>
|
||||
)}
|
||||
|
||||
|
@ -10,10 +10,10 @@ const OverwriteToggle = () => {
|
||||
return (
|
||||
<div className="flex flex-col gap-2">
|
||||
<p className="text-sm font-medium">
|
||||
{t("APP.INFOS.OVERWRITE_TOGGLE.OW_PREV")}
|
||||
{t("SETTINGS.OVERWRITE_TOGGLE.TITLE")}
|
||||
</p>
|
||||
<p className="text-xs text-base-content/80">
|
||||
{t("APP.INFOS.OVERWRITE_TOGGLE.OW_TIP")}
|
||||
{t("SETTINGS.OVERWRITE_TOGGLE.DESCRIPTION")}
|
||||
</p>
|
||||
<input
|
||||
type="checkbox"
|
||||
|
@ -7,16 +7,16 @@ export function ResetSettings() {
|
||||
return (
|
||||
<div className="flex flex-col items-start gap-2">
|
||||
<p className="text-sm font-medium">
|
||||
{t("APP.INFOS.RESET_SETTINGS.TITLE")}
|
||||
{t("SETTINGS.RESET_SETTINGS.BUTTON_TITLE")}
|
||||
</p>
|
||||
<button
|
||||
className="btn btn-primary"
|
||||
onClick={async () => {
|
||||
localStorage.clear();
|
||||
alert(t("APP.INFOS.RESET_SETTINGS.ON_RESET"));
|
||||
alert(t("SETTINGS.RESET_SETTINGS.ALERT"));
|
||||
}}
|
||||
>
|
||||
{t("APP.INFOS.RESET_SETTINGS.TITLE")}
|
||||
{t("SETTINGS.RESET_SETTINGS.BUTTON_TITLE")}
|
||||
</button>
|
||||
</div>
|
||||
);
|
||||
|
@ -15,10 +15,10 @@ export function SaveOutputFolderToggle() {
|
||||
return (
|
||||
<div className="flex flex-col gap-2">
|
||||
<p className="text-sm font-medium">
|
||||
{t("APP.INFOS.SAVE_OUTPUT_FOLDER.TITLE")}
|
||||
{t("SETTINGS.SAVE_OUTPUT_FOLDER.TITLE")}
|
||||
</p>
|
||||
<p className="text-xs text-base-content/80">
|
||||
{t("APP.INFOS.SAVE_OUTPUT_FOLDER.DESC")}
|
||||
{t("SETTINGS.SAVE_OUTPUT_FOLDER.DESCRIPTION")}
|
||||
</p>
|
||||
|
||||
<p className="font-mono text-sm">{outputPath}</p>
|
||||
|
@ -38,7 +38,7 @@ export function ThemeSelect() {
|
||||
|
||||
return (
|
||||
<div className="flex flex-col gap-2">
|
||||
<p className="text-sm font-medium">{t("APP.INFOS.THEME.TITLE")}</p>
|
||||
<p className="text-sm font-medium">{t("SETTINGS.THEME.TITLE")}</p>
|
||||
<select data-choose-theme className="select select-primary">
|
||||
{availableThemes.map((theme) => {
|
||||
return (
|
||||
|
@ -11,11 +11,11 @@ export function TileSizeInput() {
|
||||
<div>
|
||||
<div className="flex flex-col gap-1">
|
||||
<p className="text-sm font-medium">
|
||||
{t("APP.INFOS.CUSTOM_TILE_SIZE.TITLE")}
|
||||
{t("SETTINGS.CUSTOM_TILE_SIZE.TITLE")}
|
||||
</p>
|
||||
<p className="text-xs text-base-content/80">
|
||||
<br />
|
||||
{t("APP.INFOS.CUSTOM_TILE_SIZE.DESC")}
|
||||
{t("SETTINGS.CUSTOM_TILE_SIZE.DESCRIPTION")}
|
||||
</p>
|
||||
</div>
|
||||
<div className="mt-2 flex items-center gap-2">
|
||||
|
@ -11,10 +11,10 @@ const TurnOffNotificationsToggle = () => {
|
||||
return (
|
||||
<div className="flex flex-col gap-2">
|
||||
<p className="text-sm font-medium">
|
||||
{t("APP.INFOS.TURN_OFF_NOTIFICATIONS.TITLE")}
|
||||
{t("SETTINGS.TURN_OFF_NOTIFICATIONS.TITLE")}
|
||||
</p>
|
||||
<p className="text-xs text-base-content/80">
|
||||
{t("APP.INFOS.TURN_OFF_NOTIFICATIONS.DESC")}
|
||||
{t("SETTINGS.TURN_OFF_NOTIFICATIONS.DESCRIPTION")}
|
||||
</p>
|
||||
<input
|
||||
type="checkbox"
|
||||
|
@ -186,13 +186,13 @@ function SettingsTab({
|
||||
}}
|
||||
>
|
||||
<div className="flex flex-col gap-2 text-sm font-medium uppercase">
|
||||
<p>{t("APP.ERRORS.ISSUE_CHECK.TITLE")}</p>
|
||||
<p>{t("SETTINGS.SUPPORT.TITLE")}</p>
|
||||
<a
|
||||
className="btn btn-primary"
|
||||
href="https://docs.upscayl.org/"
|
||||
target="_blank"
|
||||
>
|
||||
{t("APP.ERRORS.ISSUE_CHECK.GET_HELP")}
|
||||
{t("SETTINGS.SUPPORT.DOCS_BUTTON_TITLE")}
|
||||
</a>
|
||||
{featureFlags.APP_STORE_BUILD && (
|
||||
<a
|
||||
@ -200,7 +200,7 @@ function SettingsTab({
|
||||
href={`mailto:upscayl@gmail.com?subject=Upscayl%20Issue%3A%20%3CIssue%20name%20here%3E&body=Device%20Name%3A%20%3CYOUR%20DEVICE%20MODEL%3E%0AOperating%20System%3A%20%3CYOUR%20OPERATING%20SYSTEM%20VERSION%3E%0AUpscayl%20Version%3A%20${upscaylVersion}%0A%0AHi%2C%20I'm%20having%20an%20issue%20with%20Upscayl.%20%3CDESCRIBE%20ISSUE%20HERE%3E`}
|
||||
target="_blank"
|
||||
>
|
||||
{t("APP.ERRORS.ISSUE_CHECK.EMAIL_DEV")}
|
||||
{t("SETTINGS.SUPPORT.EMAIL_BUTTON_TITLE")}
|
||||
</a>
|
||||
)}
|
||||
{!featureFlags.APP_STORE_BUILD && <DonateButton />}
|
||||
@ -261,7 +261,7 @@ function SettingsTab({
|
||||
setShow(true);
|
||||
}}
|
||||
>
|
||||
{t("APP.INTRO")}
|
||||
{t("INTRO")}
|
||||
</button>
|
||||
|
||||
<UpscaylCloudModal
|
||||
|
@ -5,6 +5,9 @@ const locales = {
|
||||
en: "English",
|
||||
ru: "Русский",
|
||||
ja: "日本語",
|
||||
zh: "漢語",
|
||||
es: "Español",
|
||||
fr: "Français",
|
||||
};
|
||||
|
||||
const LanguageSwitcher = () => {
|
||||
@ -14,7 +17,7 @@ const LanguageSwitcher = () => {
|
||||
return (
|
||||
<div>
|
||||
<div className="flex flex-col gap-2">
|
||||
<p className="text-sm font-medium">{t("APP.SETTINGS.CHANGE_LANG")}</p>
|
||||
<p className="text-sm font-medium">{t("SETTINGS.LANGUAGE.TITLE")}</p>
|
||||
<select
|
||||
data-choose-theme
|
||||
className="select select-primary"
|
||||
|
@ -47,7 +47,7 @@ const DialogContent = React.forwardRef<
|
||||
{children}
|
||||
<DialogPrimitive.Close className="absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity data-[state=open]:bg-accent data-[state=open]:text-muted-foreground hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none">
|
||||
<X className="h-4 w-4" />
|
||||
<span className="sr-only">{t("APP.INFOS.DIALOG_BOX.CLOSE")}</span>
|
||||
<span className="sr-only">{t("APP.DIALOG_BOX.CLOSE")}</span>
|
||||
</DialogPrimitive.Close>
|
||||
</DialogPrimitive.Content>
|
||||
</DialogPortal>
|
||||
|
@ -198,17 +198,15 @@ function LeftPaneImageSteps({
|
||||
<p
|
||||
className="mr-1 inline-block cursor-help text-sm"
|
||||
data-tooltip-id="tooltip"
|
||||
data-tooltip-content={t("APP.INFOS.LEFT_PANE_PROCESS.BATCH.TT_INFO")}
|
||||
data-tooltip-content={t("APP.BATCH_MODE.DESCRIPTION")}
|
||||
>
|
||||
{t("APP.INFOS.LEFT_PANE_PROCESS.BATCH.TITLE")}
|
||||
{t("APP.BATCH_MODE.TITLE")}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{/* STEP 1 */}
|
||||
<div className="animate-step-in">
|
||||
<p className="step-heading">
|
||||
{t("APP.INFOS.LEFT_PANE_PROCESS.STEP_1.TITLE")}
|
||||
</p>
|
||||
<p className="step-heading">{t("APP.FILE_SELECTION.TITLE")}</p>
|
||||
<button
|
||||
className="btn btn-primary"
|
||||
onClick={!batchMode ? selectImageHandler : selectFolderHandler}
|
||||
@ -216,20 +214,16 @@ function LeftPaneImageSteps({
|
||||
data-tooltip-content={imagePath}
|
||||
>
|
||||
{batchMode
|
||||
? t("APP.INFOS.LEFT_PANE_PROCESS.STEP_1.BATCH_YES")
|
||||
: t("APP.INFOS.LEFT_PANE_PROCESS.STEP_1.BATCH_NO")}
|
||||
? t("APP.FILE_SELECTION.BATCH_MODE_TYPE")
|
||||
: t("APP.FILE_SELECTION.SINGLE_MODE_TYPE")}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
{/* STEP 2 */}
|
||||
<div className="animate-step-in group flex flex-col gap-4">
|
||||
<div>
|
||||
<p className="step-heading">
|
||||
{t("APP.INFOS.LEFT_PANE_PROCESS.STEP_2.TITLE")}
|
||||
</p>
|
||||
<p className="mb-2 text-sm">
|
||||
{t("APP.INFOS.LEFT_PANE_PROCESS.STEP_2.SELECT_MODEL")}
|
||||
</p>
|
||||
<p className="step-heading">{t("APP.MODEL_SELECTION.TITLE")}</p>
|
||||
<p className="mb-2 text-sm">{t("APP.MODEL_SELECTION.DESCRIPTION")}</p>
|
||||
|
||||
<Select
|
||||
onMenuOpen={() => setOpen(true)}
|
||||
@ -272,14 +266,12 @@ function LeftPaneImageSteps({
|
||||
setDoubleUpscayl(!doubleUpscayl);
|
||||
}}
|
||||
>
|
||||
{t("APP.INFOS.LEFT_PANE_PROCESS.DOUBLE_UPSCAYL.TITLE")}
|
||||
{t("APP.DOUBLE_UPSCAYL.TITLE")}
|
||||
</p>
|
||||
<button
|
||||
className="badge badge-neutral badge-sm cursor-help"
|
||||
data-tooltip-id="tooltip"
|
||||
data-tooltip-content={t(
|
||||
"APP.INFOS.LEFT_PANE_PROCESS.DOUBLE_UPSCAYL.TT_INFO",
|
||||
)}
|
||||
data-tooltip-content={t("APP.DOUBLE_UPSCAYL.DESCRIPTION")}
|
||||
>
|
||||
?
|
||||
</button>
|
||||
@ -294,17 +286,13 @@ function LeftPaneImageSteps({
|
||||
<div className="flex flex-col pb-2">
|
||||
<div className="step-heading flex items-center gap-2">
|
||||
<span className="leading-none">
|
||||
{t("APP.INFOS.LEFT_PANE_PROCESS.STEP_3.TITLE")}
|
||||
{t("APP.OUTPUT_PATH_SELECTION.TITLE")}
|
||||
</span>
|
||||
{featureFlags.APP_STORE_BUILD && (
|
||||
<button
|
||||
className="badge badge-outline badge-sm cursor-pointer"
|
||||
onClick={() =>
|
||||
alert(
|
||||
t(
|
||||
"APP.INFOS.LEFT_PANE_PROCESS.STEP_3.MACOS_RESTRICTION_ALERT",
|
||||
),
|
||||
)
|
||||
alert(t("APP.OUTPUT_PATH_SELECTION.MAC_APP_STORE_ALERT"))
|
||||
}
|
||||
>
|
||||
?
|
||||
@ -314,7 +302,7 @@ function LeftPaneImageSteps({
|
||||
{!outputPath && featureFlags.APP_STORE_BUILD && (
|
||||
<div className="text-xs">
|
||||
<span className="rounded-btn bg-base-200 px-2 font-medium uppercase text-base-content/50">
|
||||
{t("APP.INFOS.LEFT_PANE_PROCESS.STEP_3.NOT_SELECTED")}
|
||||
{t("APP.OUTPUT_PATH_SELECTION.NOT_SELECTED")}
|
||||
</span>
|
||||
</div>
|
||||
)}
|
||||
@ -322,8 +310,8 @@ function LeftPaneImageSteps({
|
||||
{!batchMode && !featureFlags.APP_STORE_BUILD && (
|
||||
<p className="mb-2 text-sm">
|
||||
{!batchMode
|
||||
? t("APP.INFOS.LEFT_PANE_PROCESS.STEP_3.DEFAULT_IMG_PATH")
|
||||
: t("APP.INFOS.LEFT_PANE_PROCESS.STEP_3.DEFAULT_FOLDER_PATH")}
|
||||
? t("APP.OUTPUT_PATH_SELECTION.DEFAULT_IMG_PATH")
|
||||
: t("APP.OUTPUT_PATH_SELECTION.DEFAULT_FOLDER_PATH")}
|
||||
</p>
|
||||
)}
|
||||
<button
|
||||
@ -332,22 +320,20 @@ function LeftPaneImageSteps({
|
||||
data-tooltip-id="tooltip"
|
||||
onClick={outputHandler}
|
||||
>
|
||||
{t("APP.INFOS.LEFT_PANE_PROCESS.STEP_3.SET_OUTPUT_FOLDER")}
|
||||
{t("APP.OUTPUT_PATH_SELECTION.BUTTON_TITLE")}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
{/* STEP 4 */}
|
||||
<div className="animate-step-in">
|
||||
<p className="step-heading">
|
||||
{t("APP.INFOS.LEFT_PANE_PROCESS.STEP_4.TITLE")}
|
||||
</p>
|
||||
<p className="step-heading">{t("APP.SCALE_SELECTION.TITLE")}</p>
|
||||
{dimensions.width && dimensions.height && (
|
||||
<p className="mb-2 text-sm">
|
||||
{t("APP.INFOS.LEFT_PANE_PROCESS.STEP_4.UPSCAYL_FROM")}
|
||||
{t("APP.SCALE_SELECTION.FROM_TITLE")}
|
||||
<span className="font-bold">
|
||||
{dimensions.width}x{dimensions.height}
|
||||
</span>
|
||||
{t("APP.INFOS.LEFT_PANE_PROCESS.STEP_4.UPSCAYL_TO")}
|
||||
{t("APP.SCALE_SELECTION.TO_TITLE")}
|
||||
<span className="font-bold">
|
||||
{getUpscaleResolution().width}x{getUpscaleResolution().height}
|
||||
</span>
|
||||
@ -360,15 +346,15 @@ function LeftPaneImageSteps({
|
||||
? () =>
|
||||
toast({
|
||||
description: t(
|
||||
"APP.INFOS.LEFT_PANE_PROCESS.STEP_4.FOLDER_ALERT",
|
||||
"APP.SCALE_SELECTION.NO_OUTPUT_FOLDER_ALERT",
|
||||
),
|
||||
})
|
||||
: upscaylHandler
|
||||
}
|
||||
>
|
||||
{progress.length > 0
|
||||
? t("APP.INFOS.LEFT_PANE_PROCESS.STEP_4.PROCESS_IN_PROGRESS")
|
||||
: t("APP.INFOS.LEFT_PANE_PROCESS.STEP_4.PROCESS_START")}
|
||||
? t("APP.SCALE_SELECTION.IN_PROGRESS_BUTTON_TITLE")
|
||||
: t("APP.SCALE_SELECTION.START_BUTTON_TITLE")}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
|
@ -54,12 +54,12 @@ const ImageOptions = ({
|
||||
|
||||
<div className="flex flex-col justify-center gap-5 overflow-auto p-5">
|
||||
<button className="btn btn-primary" onClick={resetImagePaths}>
|
||||
{t("APP.INFOS.IMAGE_OPTIONS.RESET")}
|
||||
{t("APP.IMAGE_OPTIONS.RESET_BUTTON_TITLE")}
|
||||
</button>
|
||||
|
||||
<div className="flex flex-row items-center gap-2">
|
||||
<p className="text-sm font-medium">
|
||||
{t("APP.INFOS.IMAGE_OPTIONS.LENS_VIEW")}
|
||||
{t("APP.IMAGE_OPTIONS.LENS_VIEW_TITLE")}
|
||||
</p>
|
||||
<input
|
||||
type="checkbox"
|
||||
@ -70,13 +70,13 @@ const ImageOptions = ({
|
||||
}}
|
||||
/>
|
||||
<p className="text-sm font-medium">
|
||||
{t("APP.INFOS.IMAGE_OPTIONS.SLIDER_VIEW")}
|
||||
{t("APP.IMAGE_OPTIONS.SLIDER_VIEW_TITLE")}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="flex flex-col gap-2">
|
||||
<p className="text-sm font-medium">
|
||||
{t("APP.INFOS.IMAGE_OPTIONS.ZOOM_AMOUNT")} ({zoomAmount}%)
|
||||
{t("APP.IMAGE_OPTIONS.ZOOM_AMOUNT_TITLE")} ({zoomAmount}%)
|
||||
</p>
|
||||
<input
|
||||
type="range"
|
||||
@ -94,7 +94,7 @@ const ImageOptions = ({
|
||||
|
||||
<div className="flex flex-col gap-2">
|
||||
<p className="text-sm font-medium">
|
||||
{t("APP.INFOS.IMAGE_OPTIONS.LENS_SIZE")} ({lensSize / 10})
|
||||
{t("APP.IMAGE_OPTIONS.LENS_SIZE_TITLE")} ({lensSize / 10})
|
||||
</p>
|
||||
<input
|
||||
type="range"
|
||||
|
@ -47,7 +47,7 @@ function ProgressBar({
|
||||
<Logo className="spinner h-12 w-12" />
|
||||
<p className="rounded-full px-2 pb-2 font-bold">
|
||||
{batchMode &&
|
||||
`${t("APP.INFOS.PROGRESS_BAR.IN_PROGRESS")} ${batchProgress}`}
|
||||
`${t("APP.PROGRESS_BAR.BATCH_UPSCAYL_IN_PROGRESS_TITLE")} ${batchProgress}`}
|
||||
</p>
|
||||
<div className="flex flex-col items-center gap-1">
|
||||
{progress !== "Hold on..." ? (
|
||||
@ -61,11 +61,11 @@ function ProgressBar({
|
||||
<p className="text-sm font-bold">{progress}</p>
|
||||
)}
|
||||
<p className="animate-pulse rounded-full px-2 pb-3 text-xs font-medium text-neutral-content/50">
|
||||
{t("APP.INFOS.PROGRESS_BAR.PROGRESS_CATCHY")}
|
||||
{t("APP.PROGRESS_BAR.IN_PROGRESS_TITLE")}
|
||||
</p>
|
||||
</div>
|
||||
<button onClick={stopHandler} className="btn btn-outline">
|
||||
{t("APP.INFOS.PROGRESS_BAR.STOP")}
|
||||
{t("APP.PROGRESS_BAR.STOP_BUTTON_TITLE")}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -10,7 +10,7 @@ function ResetButton(props) {
|
||||
className="animate bg-gradient-blue absolute right-1 top-1 z-10 rounded-full px-4 py-2 text-white opacity-30 hover:opacity-100"
|
||||
onClick={props.resetImagePaths}
|
||||
>
|
||||
{t("APP.INFOS.RESET")}
|
||||
{t("APP.RESET_BUTTON_TITLE")}
|
||||
</button>
|
||||
);
|
||||
}
|
||||
|
@ -9,21 +9,19 @@ function RightPaneInfo({ version, batchMode }) {
|
||||
<div className="flex flex-col items-center rounded-btn bg-base-200 p-4">
|
||||
<p className="pb-1 text-lg font-semibold">
|
||||
{batchMode
|
||||
? t("APP.INFOS.RIGHT_PANE_INFO.SELECT_FOLDER")
|
||||
: t("APP.INFOS.RIGHT_PANE_INFO.SELECT_IMAGE")}
|
||||
? t("APP.RIGHT_PANE_INFO.SELECT_FOLDER")
|
||||
: t("APP.RIGHT_PANE_INFO.SELECT_IMAGE")}
|
||||
</p>
|
||||
{batchMode ? (
|
||||
<p className="w-full pb-5 text-center text-base-content/80 md:w-96">
|
||||
{t("APP.INFOS.RIGHT_PANE_INFO.NOTE_SPECIFIC_FORMATS_IN_FOLDER")}
|
||||
{t("APP.RIGHT_PANE_INFO.SELECT_FOLDER_DESCRIPTION")}
|
||||
</p>
|
||||
) : (
|
||||
<p className="w-full pb-5 text-center text-base-content/80 md:w-96">
|
||||
{t("APP.INFOS.RIGHT_PANE_INFO.SELECT_IMAGES")}
|
||||
{t("APP.RIGHT_PANE_INFO.SELECT_IMAGES_DESCRIPTION")}
|
||||
</p>
|
||||
)}
|
||||
<p className="badge badge-primary text-sm">
|
||||
{t("APP.INFOS.RIGHT_PANE_INFO.APP_VERSION", { version })}
|
||||
</p>
|
||||
<p className="badge badge-primary text-sm">Upscayl v{version}</p>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
@ -1,217 +1,210 @@
|
||||
{
|
||||
"TITLE": "Upscayl",
|
||||
"INTRO": "Introducing Upscayl Cloud!",
|
||||
"HEADER": {
|
||||
"GITHUB_BUTTON_TITLE": "Star us on GitHub 😁",
|
||||
"DESCRIPTION": "AI Image Upscaler"
|
||||
},
|
||||
"FOOTER": {
|
||||
"NEWS_TITLE": "UPSCAYL NEWS",
|
||||
"COPYRIGHT": "Copyright ©",
|
||||
"TITLE": "By ",
|
||||
"LINK_TITLE": "The Upscayl Team"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "SETTINGS",
|
||||
"CHANGE_LANGUAGE": { "TITLE": "Change Language" },
|
||||
"IMAGE_COMPRESSION": {
|
||||
"TITLE": "Image Compression",
|
||||
"DESCRIPTION": "PNG compression is lossless, so it might not reduce the file size significantly and higher compression values might affect the performance. JPG and WebP compression is lossy."
|
||||
},
|
||||
"CUSTOM_MODELS": {
|
||||
"TITLE": "ADD CUSTOM MODELS",
|
||||
"BUTTON_FOLDER": "Select Folder",
|
||||
"DESCRIPTION": "You can add your own models easily. For more details:",
|
||||
"LINK_TITLE": "Custom Models Repository"
|
||||
},
|
||||
"CUSTOM_INPUT_RESOLUTION": {
|
||||
"TITLE": "CUSTOM OUTPUT WIDTH",
|
||||
"RESTART": "REQUIRES RESTART",
|
||||
"DESCRIPTION": "Use a custom width for the output images. The height will be adjusted automatically. Enabling this will override the scale setting."
|
||||
},
|
||||
"DONATE": {
|
||||
"DESCRIPTION": "If you like what we do :)",
|
||||
"BUTTON_TITLE": "💎 DONATE"
|
||||
},
|
||||
"GPU_ID_INPUT": {
|
||||
"TITLE": "GPU ID",
|
||||
"DESCRIPTION": "Please read the Upscayl Documentation for more information.",
|
||||
"ADDITIONAL_DESCRIPTION": "Enable performance mode on Windows for better results."
|
||||
},
|
||||
"IMAGE_FORMAT": {
|
||||
"TITLE": "SAVE IMAGE AS",
|
||||
"PNG": "PNG",
|
||||
"JPG": "JPG",
|
||||
"WEBP": "WEBP"
|
||||
},
|
||||
"IMAGE_SCALE": {
|
||||
"TITLE": "Image Scale",
|
||||
"IMAGE_SCALED_BY": "IMAGE SCALE ({scale}X)",
|
||||
"DESCRIPTION": "Anything above 4X (except 16X Double Upscayl) only resizes the image and does not use AI upscaling.",
|
||||
"WARNING": "Anything above 5X may cause performance issues on some devices!",
|
||||
"ADDITIONAL_WARNING": "This may cause performance issues on some devices!"
|
||||
},
|
||||
"LOG_AREA": {
|
||||
"ON_COPY": "COPIED ✅",
|
||||
"BUTTON_TITLE": "COPY LOGS 📋",
|
||||
"NO_LOGS": "No logs to show"
|
||||
},
|
||||
"OVERWRITE_TOGGLE": {
|
||||
"TITLE": "OVERWRITE PREVIOUS UPSCALE",
|
||||
"DESCRIPTION": "If enabled, Upscayl will process the image again instead of loading it directly."
|
||||
},
|
||||
"RESET_SETTINGS": {
|
||||
"BUTTON_TITLE": "RESET UPSCAYL",
|
||||
"ALERT": "Upscayl has been reset. Please restart the app."
|
||||
},
|
||||
"SAVE_OUTPUT_FOLDER": {
|
||||
"TITLE": "SAVE OUTPUT FOLDER",
|
||||
"DESCRIPTION": "If enabled, the output folder will be remembered between sessions."
|
||||
},
|
||||
"THEME": {
|
||||
"TITLE": "UPSCAYL THEME"
|
||||
},
|
||||
"LANGUAGE": {
|
||||
"TITLE": "UPSCAYL LANGUAGE"
|
||||
},
|
||||
"CUSTOM_TILE_SIZE": {
|
||||
"TITLE": "CUSTOM TILE SIZE",
|
||||
"DESCRIPTION": "Use a custom tile size for segmenting the image. This can help process images faster by reducing the number of tiles generated."
|
||||
},
|
||||
"TURN_OFF_NOTIFICATIONS": {
|
||||
"TITLE": "TURN OFF NOTIFICATIONS",
|
||||
"DESCRIPTION": "If enabled, Upscayl will not send any system notifications on success or failure."
|
||||
},
|
||||
"SUPPORT": {
|
||||
"TITLE": "Having issues?",
|
||||
"DOCS_BUTTON_TITLE": "🙏 GET HELP",
|
||||
"EMAIL_BUTTON_TITLE": "📧 EMAIL DEVELOPER"
|
||||
}
|
||||
},
|
||||
"APP": {
|
||||
"TITLE": "Upscayl",
|
||||
"INTRO": "Introducing Upscayl Cloud!",
|
||||
"HEADER": {
|
||||
"GITHUB_STAR_TT_INFO": "Star us on GitHub 😁",
|
||||
"APP_INFO": "AI Image Upscaler"
|
||||
"BATCH_MODE": {
|
||||
"TITLE": "Batch Upscayl",
|
||||
"DESCRIPTION": "This will let you Upscayl all files in a folder at once"
|
||||
},
|
||||
"FOOTER": {
|
||||
"NEWS_TITLE": "UPSCAYL NEWS",
|
||||
"COPYRIGHT": "Copyright ©",
|
||||
"BY": "By ",
|
||||
"APP_TEAM": "The Upscayl Team"
|
||||
"FILE_SELECTION": {
|
||||
"TITLE": "Step 1",
|
||||
"BATCH_MODE_TYPE": "Select Folder",
|
||||
"SINGLE_MODE_TYPE": "Select Image"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "SETTINGS",
|
||||
"CHANGE_LANG": "Change Language"
|
||||
"MODEL_SELECTION": {
|
||||
"TITLE": "Step 2",
|
||||
"DESCRIPTION": "Select Model"
|
||||
},
|
||||
"INFOS": {
|
||||
"IMAGE_PROCESSING": {
|
||||
"START": "Processing the image...",
|
||||
"SCALE_CONVERT": "Scaling and converting image...",
|
||||
"WAIT": "Hold on...",
|
||||
"SUCCESS": "Upscayl Successful!",
|
||||
"BATCH": {
|
||||
"SELECT": "Selected folder:",
|
||||
"DONE": "All done!",
|
||||
"OPEN_DONE_FOLDER": "Open Upscayled Folder"
|
||||
}
|
||||
},
|
||||
"COMPARISION": {
|
||||
"SLIDER_ORIGINAL": "Original",
|
||||
"SLIDER_PROCESSED": "Upscayled"
|
||||
},
|
||||
"IMAGE_COMPRESSION": {
|
||||
"TITLE": "Image Compression ({compression}%)",
|
||||
"LOSSLESS_TIP": "PNG compression is lossless, so it might not reduce the file size significantly and higher compression values might affect the performance. JPG and WebP compression is lossy."
|
||||
},
|
||||
"CUSTOM_MODELS": {
|
||||
"ADD": "ADD CUSTOM MODELS",
|
||||
"SELECT_FOLDER": "Select Folder",
|
||||
"INFO": "You can add your own models easily. For more details:",
|
||||
"LINK_TEXT": "Custom Models Repository"
|
||||
},
|
||||
"CUSTOM_INPUT_RESOLUTION": {
|
||||
"WIDTH": "CUSTOM OUTPUT WIDTH",
|
||||
"RESTART": "REQUIRES RESTART",
|
||||
"CUSTOM_WIDTH_TIP": "Use a custom width for the output images. The height will be adjusted automatically. Enabling this will override the scale setting."
|
||||
},
|
||||
"DONATE": {
|
||||
"IF_LIKED": "If you like what we do :)",
|
||||
"DONATE": "💎 DONATE"
|
||||
},
|
||||
"GPU_ID_INPUT": {
|
||||
"ID": "GPU ID",
|
||||
"READ_DOCS": "Please read the Upscayl Documentation for more information.",
|
||||
"ENABLE_PERF_MODE": "Enable performance mode on Windows for better results."
|
||||
},
|
||||
"IMAGE_FORMAT": {
|
||||
"SAVE_AS": "SAVE IMAGE AS",
|
||||
"PNG": "PNG",
|
||||
"JPG": "JPG",
|
||||
"WEBP": "WEBP"
|
||||
},
|
||||
"IMAGE_SCALE": {
|
||||
"TITLE": "Image Scale",
|
||||
"TITLE_CAPS": "IMAGE SCALE",
|
||||
"SCALES_TIMES": "({scale}X)",
|
||||
"AI_UPSCALE_RESIZE_INFO": "Anything above 4X (except 16X Double Upscayl) only resizes the image and does not use AI upscaling."
|
||||
},
|
||||
"LOG_AREA": {
|
||||
"ON_COPY": "COPIED ✅",
|
||||
"COPY": "COPY LOGS 📋",
|
||||
"NO_LOGS": "No logs to show"
|
||||
},
|
||||
"OVERWRITE_TOGGLE": {
|
||||
"OW_PREV": "OVERWRITE PREVIOUS UPSCALE",
|
||||
"OW_TIP": "If enabled, Upscayl will process the image again instead of loading it directly."
|
||||
},
|
||||
"RESET_SETTINGS": {
|
||||
"TITLE": "RESET UPSCAYL",
|
||||
"ON_RESET": "Upscayl has been reset. Please restart the app."
|
||||
},
|
||||
"SAVE_OUTPUT_FOLDER": {
|
||||
"TITLE": "SAVE OUTPUT FOLDER",
|
||||
"DESC": "If enabled, the output folder will be remembered between sessions."
|
||||
},
|
||||
"THEME": {
|
||||
"TITLE": "UPSCAYL THEME"
|
||||
},
|
||||
"LANGUAGE": {
|
||||
"TITLE": "UPSCAYL LANGUAGE"
|
||||
},
|
||||
"CUSTOM_TILE_SIZE": {
|
||||
"TITLE": "CUSTOM TILE SIZE",
|
||||
"DESC": "Use a custom tile size for segmenting the image. This can help process images faster by reducing the number of tiles generated."
|
||||
},
|
||||
"TURN_OFF_NOTIFICATIONS": {
|
||||
"TITLE": "TURN OFF NOTIFICATIONS",
|
||||
"DESC": "If enabled, Upscayl will not send any system notifications on success or failure."
|
||||
},
|
||||
"DIALOG_BOX": {
|
||||
"CLOSE": "Close"
|
||||
},
|
||||
"LEFT_PANE_PROCESS": {
|
||||
"BATCH": {
|
||||
"TITLE": "Batch Upscayl",
|
||||
"TT_INFO": "This will let you Upscayl all files in a folder at once"
|
||||
},
|
||||
"STEP_1": {
|
||||
"TITLE": "Step 1",
|
||||
"BATCH_YES": "Select Folder",
|
||||
"BATCH_NO": "Select Image"
|
||||
},
|
||||
"STEP_2": {
|
||||
"TITLE": "Step 2",
|
||||
"SELECT_MODEL": "Select Model"
|
||||
},
|
||||
"DOUBLE_UPSCAYL": {
|
||||
"TITLE": "Double Upscayl",
|
||||
"TT_INFO": "Enable this option to run upscayl twice on an image. Note that this may cause a significant increase in processing time and possibly performance issues for scales greater than 4X."
|
||||
},
|
||||
"STEP_3": {
|
||||
"TITLE": "Step 3",
|
||||
"MACOS_RESTRICTION_ALERT": "Due to MacOS App Store security restrictions, Upscayl requires you to select an output folder everytime you start it.\n\nTo avoid this, you can permanently save a default output folder in the Upscayl 'Settings' tab.",
|
||||
"NOT_SELECTED": "Not Selected",
|
||||
"DEFAULT_IMG_PATH": "Defaults to Image's path",
|
||||
"DEFAULT_FOLDER_PATH": "Defaults to Folder's path",
|
||||
"SET_OUTPUT_FOLDER": "Set Output Folder"
|
||||
},
|
||||
"STEP_4": {
|
||||
"TITLE": "Step 4",
|
||||
"UPSCAYL_FROM": "Upscayl from ",
|
||||
"UPSCAYL_TO": " to ",
|
||||
"FOLDER_ALERT": "Please select an output folder first",
|
||||
"PROCESS_START": "Upscayl",
|
||||
"PROCESS_IN_PROGRESS": "Upscayling⏳"
|
||||
}
|
||||
},
|
||||
"IMAGE_OPTIONS": {
|
||||
"RESET": "Reset Image",
|
||||
"LENS_VIEW": "Lens View",
|
||||
"SLIDER_VIEW": "Slider View",
|
||||
"ZOOM_AMOUNT": "Zoom Amount",
|
||||
"LENS_SIZE": "Lens Size"
|
||||
},
|
||||
"PROGRESS_BAR": {
|
||||
"IN_PROGRESS": "Batch Upscayl In Progress:",
|
||||
"PROGRESS_CATCHY": "Doing the Upscayl magic...",
|
||||
"STOP": "STOP"
|
||||
},
|
||||
"RESET": "Reset",
|
||||
"RIGHT_PANE_INFO": {
|
||||
"SELECT_FOLDER": "Select a Folder to Upscayl",
|
||||
"SELECT_IMAGE": "Select an Image to Upscayl",
|
||||
"NOTE_SPECIFIC_FORMATS_IN_FOLDER": "Make sure that the folder doesn't contain anything except PNG, JPG, JPEG & WEBP images.",
|
||||
"SELECT_IMAGES": "Select or drag and drop a PNG, JPG, JPEG or WEBP image.",
|
||||
"APP_VERSION": "Upscayl v{version}"
|
||||
"DOUBLE_UPSCAYL": {
|
||||
"TITLE": "Double Upscayl",
|
||||
"DESCRIPTION": "Enable this option to run upscayl twice on an image. Note that this may cause a significant increase in processing time and possibly performance issues for scales greater than 4X."
|
||||
},
|
||||
"OUTPUT_PATH_SELECTION": {
|
||||
"TITLE": "Step 3",
|
||||
"MAC_APP_STORE_ALERT": "Due to MacOS App Store security restrictions, Upscayl requires you to select an output folder everytime you start it.\n\nTo avoid this, you can permanently save a default output folder in the Upscayl 'Settings' tab.",
|
||||
"NOT_SELECTED": "Not Selected",
|
||||
"DEFAULT_IMG_PATH": "Defaults to Image's path",
|
||||
"DEFAULT_FOLDER_PATH": "Defaults to Folder's path",
|
||||
"BUTTON_TITLE": "Set Output Folder"
|
||||
},
|
||||
"SCALE_SELECTION": {
|
||||
"TITLE": "Step 4",
|
||||
"FROM_TITLE": "Upscayl from ",
|
||||
"TO_TITLE": " to ",
|
||||
"NO_OUTPUT_FOLDER_ALERT": "Please select an output folder first",
|
||||
"START_BUTTON_TITLE": "Upscayl",
|
||||
"IN_PROGRESS_BUTTON_TITLE": "Upscayling⏳"
|
||||
},
|
||||
"IMAGE_OPTIONS": {
|
||||
"RESET_BUTTON_TITLE": "Reset Image",
|
||||
"LENS_VIEW_TITLE": "Lens View",
|
||||
"SLIDER_VIEW_TITLE": "Slider View",
|
||||
"ZOOM_AMOUNT_TITLE": "Zoom Amount",
|
||||
"LENS_SIZE_TITLE": "Lens Size"
|
||||
},
|
||||
"PROGRESS_BAR": {
|
||||
"BATCH_UPSCAYL_IN_PROGRESS_TITLE": "Batch Upscayl In Progress:",
|
||||
"IN_PROGRESS_TITLE": "Doing the Upscayl magic...",
|
||||
"STOP_BUTTON_TITLE": "STOP"
|
||||
},
|
||||
"RESET_BUTTON_TITLE": "Reset",
|
||||
"RIGHT_PANE_INFO": {
|
||||
"SELECT_FOLDER": "Select a Folder to Upscayl",
|
||||
"SELECT_IMAGE": "Select an Image to Upscayl",
|
||||
"SELECT_FOLDER_DESCRIPTION": "Make sure that the folder doesn't contain anything except PNG, JPG, JPEG & WEBP images.",
|
||||
"SELECT_IMAGES_DESCRIPTION": "Select or drag and drop a PNG, JPG, JPEG or WEBP image."
|
||||
},
|
||||
"PROGRESS": {
|
||||
"PROCESSING_TITLE": "Processing the image...",
|
||||
"SCALING_CONVERTING_TITLE": "Scaling and converting image...",
|
||||
"WAIT_TITLE": "Hold on...",
|
||||
"SUCCESS_TITLE": "Upscayl Successful!",
|
||||
"BATCH": {
|
||||
"SELECTED_FOLDER_TITLE": "Selected folder:",
|
||||
"DONE_TITLE": "All done!",
|
||||
"OPEN_UPSCAYLED_FOLDER_TITLE": "Open Upscayled Folder"
|
||||
}
|
||||
},
|
||||
"ERRORS": {
|
||||
"GPU_ERROR": {
|
||||
"TITLE": "GPU Error",
|
||||
"DESC": "Ran into an issue with the GPU. Please read the docs for troubleshooting! ({data})"
|
||||
},
|
||||
"COPY_ERROR": {
|
||||
"TITLE": "Copy Error",
|
||||
"DESC": ""
|
||||
},
|
||||
"OPEN_DOCS": "Open Docs",
|
||||
"TROUBLESHOOT": "Troubleshoot",
|
||||
"READ_WRITE_ERROR": {
|
||||
"TITLE": "Read/Write Error",
|
||||
"DESC": "Make sure that the path is correct and you have proper read/write permissions \n({data})"
|
||||
},
|
||||
"TILE_SIZE_ERROR": {
|
||||
"TITLE": "Error",
|
||||
"DESC": "The tile size is wrong. Please change the tile size in the settings or set to 0 ({data})"
|
||||
},
|
||||
"EXCEPTION_ERROR": {
|
||||
"TITLE": "Exception Error",
|
||||
"DESC": "Upscayl encountered an error. Possibly, the upscayl binary failed to execute the commands properly. Try checking the logs to see if you get any information. You can post an issue on Upscayl's GitHub repository for more help."
|
||||
},
|
||||
"GENERIC_ERROR": {
|
||||
"TITLE": "Error"
|
||||
},
|
||||
"INVALID_IMAGE_ERROR": {
|
||||
"TITLE": "Invalid Image",
|
||||
"DESC": "Please select an image with a valid extension like PNG, JPG, JPEG, or WEBP.",
|
||||
"DRAG_DESC": "Please drag and drop an image"
|
||||
},
|
||||
"NO_IMAGE_ERROR": {
|
||||
"TITLE": "No image selected",
|
||||
"DESC": "Please select an image to upscale"
|
||||
},
|
||||
"IMAGE_SCALE_WARN": {
|
||||
"PERF_ISSUE": "Anything above 5X may cause performance issues on some devices!",
|
||||
"PERF_ISSUE_DEVICE": "This may cause performance issues on some devices!"
|
||||
},
|
||||
"ISSUE_CHECK": {
|
||||
"TITLE": "Having issues?",
|
||||
"GET_HELP": "🙏 GET HELP",
|
||||
"EMAIL_DEV": "📧 EMAIL DEVELOPER"
|
||||
}
|
||||
"SLIDER": {
|
||||
"ORIGINAL_TITLE": "Original",
|
||||
"UPSCAYLED_TITLE": "Upscayled"
|
||||
},
|
||||
"UPSCAYL_CLOUD": {
|
||||
"COMING_SOON": "Coming soon!",
|
||||
"CATCHY_PHRASE_1": "No more errors, hardware issues, quality compromises or long loading times!",
|
||||
"CATCHY_PHRASE_2": "🌐 Upscayl anywhere, anytime, any device\n☁️ No Graphics Card or hardware required\n👩 Face Enhancement\n🦋 10+ models to choose from\n🏎 5x faster than Upscayl Desktop\n🎞 Video Upscaling\n💰 Commercial Usage\n😴 Upscayl while you sleep",
|
||||
"ALREADY_REGISTERED": "Thank you {name}! It seems that your email has already been registered :D If that's not the case, please try again.",
|
||||
"ADD_SUCCESS": "Thank you for joining the waitlist! We will notify you when Upscayl Cloud is ready for you.",
|
||||
"INCORRECT_FIELDS": "Please fill in all the fields correctly.",
|
||||
"JOIN_WAITLIST": "Join the waitlist",
|
||||
"DONT_SHOW_AGAIN": "DON'T SHOW AGAIN"
|
||||
"DIALOG_BOX": {
|
||||
"CLOSE": "Close"
|
||||
}
|
||||
},
|
||||
"ERRORS": {
|
||||
"GPU_ERROR": {
|
||||
"TITLE": "GPU Error",
|
||||
"DESCRIPTION": "Ran into an issue with the GPU. Please read the docs for troubleshooting! ({data})"
|
||||
},
|
||||
"COPY_ERROR": {
|
||||
"TITLE": "Copy Error",
|
||||
"DESCRIPTION": ""
|
||||
},
|
||||
"READ_WRITE_ERROR": {
|
||||
"TITLE": "Read/Write Error",
|
||||
"DESCRIPTION": "Make sure that the path is correct and you have proper read/write permissions \n({data})"
|
||||
},
|
||||
"TILE_SIZE_ERROR": {
|
||||
"TITLE": "Error",
|
||||
"DESCRIPTION": "The tile size is wrong. Please change the tile size in the settings or set to 0 ({data})"
|
||||
},
|
||||
"EXCEPTION_ERROR": {
|
||||
"TITLE": "Exception Error",
|
||||
"DESCRIPTION": "Upscayl encountered an error. Possibly, the upscayl binary failed to execute the commands properly. Try checking the logs to see if you get any information. You can post an issue on Upscayl's GitHub repository for more help."
|
||||
},
|
||||
"GENERIC_ERROR": {
|
||||
"TITLE": "Error"
|
||||
},
|
||||
"INVALID_IMAGE_ERROR": {
|
||||
"TITLE": "Invalid Image",
|
||||
"DESCRIPTION": "Please select an image with a valid extension like PNG, JPG, JPEG, or WEBP.",
|
||||
"ADDITIONAL_DESCRIPTION": "Please drag and drop an image"
|
||||
},
|
||||
"NO_IMAGE_ERROR": {
|
||||
"TITLE": "No image selected",
|
||||
"DESCRIPTION": "Please select an image to upscale"
|
||||
},
|
||||
"OPEN_DOCS_TITLE": "Open Docs",
|
||||
"OPEN_DOCS_BUTTON_TITLE": "Troubleshoot"
|
||||
},
|
||||
"UPSCAYL_CLOUD": {
|
||||
"COMING_SOON": "Coming soon!",
|
||||
"CATCHY_PHRASE_1": "No more errors, hardware issues, quality compromises or long loading times!",
|
||||
"CATCHY_PHRASE_2": "🌐 Upscayl anywhere, anytime, any device\n☁️ No Graphics Card or hardware required\n👩 Face Enhancement\n🦋 10+ models to choose from\n🏎 5x faster than Upscayl Desktop\n🎞 Video Upscaling\n💰 Commercial Usage\n😴 Upscayl while you sleep",
|
||||
"ALREADY_REGISTERED_ALERT": "Thank you {name}! It seems that your email has already been registered :D If that's not the case, please try again.",
|
||||
"ADD_SUCCESS": "Thank you for joining the waitlist! We will notify you when Upscayl Cloud is ready for you.",
|
||||
"INCORRECT_FIELDS_ALERT": "Please fill in all the fields correctly.",
|
||||
"JOIN_WAITLIST": "Join the waitlist",
|
||||
"DONT_SHOW_AGAIN": "DON'T SHOW AGAIN"
|
||||
}
|
||||
}
|
||||
|
210
renderer/locales/es.json
Normal file
210
renderer/locales/es.json
Normal file
@ -0,0 +1,210 @@
|
||||
{
|
||||
"TITLE": "Upscayl",
|
||||
"INTRO": "¡Presentamos Upscayl Cloud!",
|
||||
"HEADER": {
|
||||
"GITHUB_BUTTON_TITLE": "Danos una estrella en GitHub 😁",
|
||||
"DESCRIPTION": "Aumentador de imágenes con IA"
|
||||
},
|
||||
"FOOTER": {
|
||||
"NEWS_TITLE": "NOTICIAS DE UPSCAYL",
|
||||
"COPYRIGHT": "Copyright ©",
|
||||
"TITLE": "Por ",
|
||||
"LINK_TITLE": "El equipo de Upscayl"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "AJUSTES",
|
||||
"CHANGE_LANGUAGE": { "TITLE": "Cambiar idioma" },
|
||||
"IMAGE_COMPRESSION": {
|
||||
"TITLE": "Compresión de imagen",
|
||||
"DESCRIPTION": "La compresión PNG es sin pérdida, por lo que puede que no reduzca el tamaño del archivo significativamente y los valores de compresión más altos podrían afectar el rendimiento. La compresión JPG y WebP es con pérdida."
|
||||
},
|
||||
"CUSTOM_MODELS": {
|
||||
"TITLE": "AÑADIR MODELOS PERSONALIZADOS",
|
||||
"BUTTON_FOLDER": "Seleccionar carpeta",
|
||||
"DESCRIPTION": "Puedes añadir tus propios modelos fácilmente. Para más detalles:",
|
||||
"LINK_TITLE": "Repositorio de Modelos Personalizados"
|
||||
},
|
||||
"CUSTOM_INPUT_RESOLUTION": {
|
||||
"TITLE": "ANCHO DE SALIDA PERSONALIZADO",
|
||||
"RESTART": "REQUIERE REINICIO",
|
||||
"DESCRIPTION": "Usa un ancho personalizado para las imágenes de salida. La altura se ajustará automáticamente. Al habilitar esto, se anulará la configuración de escala."
|
||||
},
|
||||
"DONATE": {
|
||||
"DESCRIPTION": "Si te gusta lo que hacemos :)",
|
||||
"BUTTON_TITLE": "💎 DONAR"
|
||||
},
|
||||
"GPU_ID_INPUT": {
|
||||
"TITLE": "ID de GPU",
|
||||
"DESCRIPTION": "Por favor, lee la documentación de Upscayl para más información.",
|
||||
"ADDITIONAL_DESCRIPTION": "Habilita el modo de rendimiento en Windows para obtener mejores resultados."
|
||||
},
|
||||
"IMAGE_FORMAT": {
|
||||
"TITLE": "GUARDAR IMAGEN COMO",
|
||||
"PNG": "PNG",
|
||||
"JPG": "JPG",
|
||||
"WEBP": "WEBP"
|
||||
},
|
||||
"IMAGE_SCALE": {
|
||||
"TITLE": "Escala de imagen",
|
||||
"IMAGE_SCALED_BY": "ESCALA DE IMAGEN ({scale}X)",
|
||||
"DESCRIPTION": "Cualquier cosa por encima de 4X (excepto 16X Double Upscayl) solo redimensiona la imagen y no usa aumento con IA.",
|
||||
"WARNING": "¡Cualquier cosa por encima de 5X puede causar problemas de rendimiento en algunos dispositivos!",
|
||||
"ADDITIONAL_WARNING": "¡Esto puede causar problemas de rendimiento en algunos dispositivos!"
|
||||
},
|
||||
"LOG_AREA": {
|
||||
"ON_COPY": "COPIADO ✅",
|
||||
"BUTTON_TITLE": "COPIAR REGISTROS 📋",
|
||||
"NO_LOGS": "No hay registros para mostrar"
|
||||
},
|
||||
"OVERWRITE_TOGGLE": {
|
||||
"TITLE": "SOBREESCRIBIR AUMENTO ANTERIOR",
|
||||
"DESCRIPTION": "Si está habilitado, Upscayl procesará la imagen de nuevo en lugar de cargarla directamente."
|
||||
},
|
||||
"RESET_SETTINGS": {
|
||||
"BUTTON_TITLE": "REINICIAR UPSCAYL",
|
||||
"ALERT": "Upscayl ha sido reiniciado. Por favor, reinicia la aplicación."
|
||||
},
|
||||
"SAVE_OUTPUT_FOLDER": {
|
||||
"TITLE": "GUARDAR CARPETA DE SALIDA",
|
||||
"DESCRIPTION": "Si está habilitado, la carpeta de salida se recordará entre sesiones."
|
||||
},
|
||||
"THEME": {
|
||||
"TITLE": "TEMA DE UPSCAYL"
|
||||
},
|
||||
"LANGUAGE": {
|
||||
"TITLE": "IDIOMA DE UPSCAYL"
|
||||
},
|
||||
"CUSTOM_TILE_SIZE": {
|
||||
"TITLE": "TAMAÑO DE MOSAICO PERSONALIZADO",
|
||||
"DESCRIPTION": "Usa un tamaño de mosaico personalizado para segmentar la imagen. Esto puede ayudar a procesar las imágenes más rápido al reducir el número de mosaicos generados."
|
||||
},
|
||||
"TURN_OFF_NOTIFICATIONS": {
|
||||
"TITLE": "APAGAR NOTIFICACIONES",
|
||||
"DESCRIPTION": "Si está habilitado, Upscayl no enviará notificaciones del sistema al tener éxito o fallar."
|
||||
},
|
||||
"SUPPORT": {
|
||||
"TITLE": "¿Tienes problemas?",
|
||||
"DOCS_BUTTON_TITLE": "🙏 OBTENER AYUDA",
|
||||
"EMAIL_BUTTON_TITLE": "📧 CORREO AL DESARROLLADOR"
|
||||
}
|
||||
},
|
||||
"APP": {
|
||||
"TITLE": "Upscayl",
|
||||
"BATCH_MODE": {
|
||||
"TITLE": "Aumento por lotes",
|
||||
"DESCRIPTION": "Esto te permitirá aumentar todas las imágenes en una carpeta a la vez"
|
||||
},
|
||||
"FILE_SELECTION": {
|
||||
"TITLE": "Paso 1",
|
||||
"BATCH_MODE_TYPE": "Seleccionar carpeta",
|
||||
"SINGLE_MODE_TYPE": "Seleccionar imagen"
|
||||
},
|
||||
"MODEL_SELECTION": {
|
||||
"TITLE": "Paso 2",
|
||||
"DESCRIPTION": "Seleccionar modelo"
|
||||
},
|
||||
"DOUBLE_UPSCAYL": {
|
||||
"TITLE": "Doble Upscayl",
|
||||
"DESCRIPTION": "Habilita esta opción para realizar dos aumentos en una imagen. Ten en cuenta que esto puede causar un aumento significativo en el tiempo de procesamiento y posiblemente problemas de rendimiento para escalas superiores a 4X."
|
||||
},
|
||||
"OUTPUT_PATH_SELECTION": {
|
||||
"TITLE": "Paso 3",
|
||||
"MAC_APP_STORE_ALERT": "Debido a las restricciones de seguridad de la MacOS App Store, Upscayl requiere que selecciones una carpeta de salida cada vez que lo inicies.\n\nPara evitar esto, puedes guardar permanentemente una carpeta de salida predeterminada en la pestaña 'Ajustes' de Upscayl.",
|
||||
"NOT_SELECTED": "No seleccionado",
|
||||
"DEFAULT_IMG_PATH": "Ruta predeterminada de la imagen",
|
||||
"DEFAULT_FOLDER_PATH": "Ruta predeterminada de la carpeta",
|
||||
"BUTTON_TITLE": "Establecer carpeta de salida"
|
||||
},
|
||||
"SCALE_SELECTION": {
|
||||
"TITLE": "Paso 4",
|
||||
"FROM_TITLE": "Aumentar desde ",
|
||||
"TO_TITLE": " a ",
|
||||
"NO_OUTPUT_FOLDER_ALERT": "Por favor, selecciona primero una carpeta de salida",
|
||||
"START_BUTTON_TITLE": "Upscayl",
|
||||
"IN_PROGRESS_BUTTON_TITLE": "Aumentando⏳"
|
||||
},
|
||||
"IMAGE_OPTIONS": {
|
||||
"RESET_BUTTON_TITLE": "Restablecer imagen",
|
||||
"LENS_VIEW_TITLE": "Vista de lente",
|
||||
"SLIDER_VIEW_TITLE": "Vista de deslizador",
|
||||
"ZOOM_AMOUNT_TITLE": "Cantidad de zoom",
|
||||
"LENS_SIZE_TITLE": "Tamaño de lente"
|
||||
},
|
||||
"PROGRESS_BAR": {
|
||||
"BATCH_UPSCAYL_IN_PROGRESS_TITLE": "Aumento por lotes en progreso:",
|
||||
"IN_PROGRESS_TITLE": "Haciendo la magia de Upscayl...",
|
||||
"STOP_BUTTON_TITLE": "DETENER"
|
||||
},
|
||||
"RESET_BUTTON_TITLE": "Restablecer",
|
||||
"RIGHT_PANE_INFO": {
|
||||
"SELECT_FOLDER": "Selecciona una carpeta para aumentar",
|
||||
"SELECT_IMAGE": "Selecciona una imagen para aumentar",
|
||||
"SELECT_FOLDER_DESCRIPTION": "Asegúrate de que la carpeta no contenga nada excepto imágenes PNG, JPG, JPEG y WEBP.",
|
||||
"SELECT_IMAGES_DESCRIPTION": "Selecciona o arrastra y suelta una imagen PNG, JPG, JPEG o WEBP."
|
||||
},
|
||||
"PROGRESS": {
|
||||
"PROCESSING_TITLE": "Procesando la imagen...",
|
||||
"SCALING_CONVERTING_TITLE": "Escalando y convirtiendo la imagen...",
|
||||
"WAIT_TITLE": "Espera un momento...",
|
||||
"SUCCESS_TITLE": "¡Aumento exitoso!",
|
||||
"BATCH": {
|
||||
"SELECTED_FOLDER_TITLE": "Carpeta seleccionada:",
|
||||
"DONE_TITLE": "¡Todo listo!",
|
||||
"OPEN_UPSCAYLED_FOLDER_TITLE": "Abrir carpeta con imágenes aumentadas"
|
||||
}
|
||||
},
|
||||
"SLIDER": {
|
||||
"ORIGINAL_TITLE": "Original",
|
||||
"UPSCAYLED_TITLE": "Aumentado"
|
||||
},
|
||||
"DIALOG_BOX": {
|
||||
"CLOSE": "Cerrar"
|
||||
}
|
||||
},
|
||||
"ERRORS": {
|
||||
"GPU_ERROR": {
|
||||
"TITLE": "Error de GPU",
|
||||
"DESCRIPTION": "Se encontró un problema con la GPU. Por favor, lee la documentación para solucionar problemas. ({data})"
|
||||
},
|
||||
"COPY_ERROR": {
|
||||
"TITLE": "Error de copiado",
|
||||
"DESCRIPTION": ""
|
||||
},
|
||||
"READ_WRITE_ERROR": {
|
||||
"TITLE": "Error de lectura/escritura",
|
||||
"DESCRIPTION": "Asegúrate de que la ruta sea correcta y que tengas los permisos adecuados de lectura/escritura \n({data})"
|
||||
},
|
||||
"TILE_SIZE_ERROR": {
|
||||
"TITLE": "Error",
|
||||
"DESCRIPTION": "El tamaño del mosaico es incorrecto. Cambia el tamaño del mosaico en los ajustes o configúralo en 0 ({data})"
|
||||
},
|
||||
"EXCEPTION_ERROR": {
|
||||
"TITLE": "Error de excepción",
|
||||
"DESCRIPTION": "Upscayl encontró un error. Es posible que el binario de Upscayl no haya ejecutado los comandos correctamente. Intenta revisar los registros para ver si obtienes alguna información. Puedes publicar un problema en el repositorio de GitHub de Upscayl para obtener más ayuda."
|
||||
},
|
||||
"GENERIC_ERROR": {
|
||||
"TITLE": "Error"
|
||||
},
|
||||
"INVALID_IMAGE_ERROR": {
|
||||
"TITLE": "Imagen inválida",
|
||||
"DESCRIPTION": "Por favor, selecciona una imagen con una extensión válida como PNG, JPG, JPEG o WEBP.",
|
||||
"ADDITIONAL_DESCRIPTION": "Por favor, arrastra y suelta una imagen"
|
||||
},
|
||||
"NO_IMAGE_ERROR": {
|
||||
"TITLE": "No se ha seleccionado imagen",
|
||||
"DESCRIPTION": "Por favor, selecciona una imagen para aumentar"
|
||||
},
|
||||
"OPEN_DOCS_TITLE": "Abrir documentación",
|
||||
"OPEN_DOCS_BUTTON_TITLE": "Solucionar problemas"
|
||||
},
|
||||
"UPSCAYL_CLOUD": {
|
||||
"COMING_SOON": "¡Próximamente!",
|
||||
"CATCHY_PHRASE_1": "¡No más errores, problemas de hardware, compromisos de calidad o largos tiempos de carga!",
|
||||
"CATCHY_PHRASE_2": "🌐 Aumenta en cualquier lugar, en cualquier momento, en cualquier dispositivo\n☁️ No se requiere tarjeta gráfica ni hardware\n👩 Mejora de rostros\n🦋 Más de 10 modelos para elegir\n🏎 5 veces más rápido que Upscayl Desktop\n🎞 Aumento de videos\n💰 Uso comercial\n😴 Aumenta mientras duermes",
|
||||
"ALREADY_REGISTERED_ALERT": "¡Gracias {name}! Parece que tu correo electrónico ya ha sido registrado :D Si no es así, por favor intenta de nuevo.",
|
||||
"ADD_SUCCESS": "¡Gracias por unirte a la lista de espera! Te notificaremos cuando Upscayl Cloud esté listo para ti.",
|
||||
"INCORRECT_FIELDS_ALERT": "Por favor, completa todos los campos correctamente.",
|
||||
"JOIN_WAITLIST": "Únete a la lista de espera",
|
||||
"DONT_SHOW_AGAIN": "NO MOSTRAR DE NUEVO"
|
||||
}
|
||||
}
|
210
renderer/locales/fr.json
Normal file
210
renderer/locales/fr.json
Normal file
@ -0,0 +1,210 @@
|
||||
{
|
||||
"TITLE": "Upscayl",
|
||||
"INTRO": "Présentation de Upscayl Cloud !",
|
||||
"HEADER": {
|
||||
"GITHUB_BUTTON_TITLE": "Étoilez-nous sur GitHub 😁",
|
||||
"DESCRIPTION": "Suréchantillonneur d'images AI"
|
||||
},
|
||||
"FOOTER": {
|
||||
"NEWS_TITLE": "NOUVELLES UPSCAYL",
|
||||
"COPYRIGHT": "Droits d'auteur ©",
|
||||
"TITLE": "Par ",
|
||||
"LINK_TITLE": "L'équipe Upscayl"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "PARAMÈTRES",
|
||||
"CHANGE_LANGUAGE": { "TITLE": "Changer de langue" },
|
||||
"IMAGE_COMPRESSION": {
|
||||
"TITLE": "Compression d'image",
|
||||
"DESCRIPTION": "La compression PNG est sans perte, donc elle pourrait ne pas réduire la taille du fichier de manière significative et des valeurs de compression plus élevées pourraient affecter les performances. La compression JPG et WebP est avec perte."
|
||||
},
|
||||
"CUSTOM_MODELS": {
|
||||
"TITLE": "AJOUTER DES MODÈLES PERSONNALISÉS",
|
||||
"BUTTON_FOLDER": "Sélectionner un dossier",
|
||||
"DESCRIPTION": "Vous pouvez ajouter vos propres modèles facilement. Pour plus de détails :",
|
||||
"LINK_TITLE": "Répertoire des modèles personnalisés"
|
||||
},
|
||||
"CUSTOM_INPUT_RESOLUTION": {
|
||||
"TITLE": "LARGEUR DE SORTIE PERSONNALISÉE",
|
||||
"RESTART": "NÉCESSITE UN REDÉMARRAGE",
|
||||
"DESCRIPTION": "Utilisez une largeur personnalisée pour les images de sortie. La hauteur sera ajustée automatiquement. Activer cela remplacera le paramètre d'échelle."
|
||||
},
|
||||
"DONATE": {
|
||||
"DESCRIPTION": "Si vous aimez ce que nous faisons :)",
|
||||
"BUTTON_TITLE": "💎 FAIRE UN DON"
|
||||
},
|
||||
"GPU_ID_INPUT": {
|
||||
"TITLE": "ID GPU",
|
||||
"DESCRIPTION": "Veuillez lire la documentation Upscayl pour plus d'informations.",
|
||||
"ADDITIONAL_DESCRIPTION": "Activez le mode performance sur Windows pour de meilleurs résultats."
|
||||
},
|
||||
"IMAGE_FORMAT": {
|
||||
"TITLE": "ENREGISTRER L'IMAGE SOUS",
|
||||
"PNG": "PNG",
|
||||
"JPG": "JPG",
|
||||
"WEBP": "WEBP"
|
||||
},
|
||||
"IMAGE_SCALE": {
|
||||
"TITLE": "Échelle de l'image",
|
||||
"IMAGE_SCALED_BY": "ÉCHELLE DE L'IMAGE ({scale}X)",
|
||||
"DESCRIPTION": "Tout ce qui dépasse 4X (sauf 16X Double Upscayl) ne fait que redimensionner l'image et n'utilise pas le suréchantillonnage AI.",
|
||||
"WARNING": "Tout ce qui dépasse 5X peut causer des problèmes de performance sur certains appareils !",
|
||||
"ADDITIONAL_WARNING": "Cela peut causer des problèmes de performance sur certains appareils !"
|
||||
},
|
||||
"LOG_AREA": {
|
||||
"ON_COPY": "COPIÉ ✅",
|
||||
"BUTTON_TITLE": "COPIER LES JOURNAUX 📋",
|
||||
"NO_LOGS": "Aucun journal à afficher"
|
||||
},
|
||||
"OVERWRITE_TOGGLE": {
|
||||
"TITLE": "ÉCRASER LE SURÉCHANTILLONNAGE PRÉCÉDENT",
|
||||
"DESCRIPTION": "Si activé, Upscayl traitera à nouveau l'image au lieu de la charger directement."
|
||||
},
|
||||
"RESET_SETTINGS": {
|
||||
"BUTTON_TITLE": "RÉINITIALISER UPSCAYL",
|
||||
"ALERT": "Upscayl a été réinitialisé. Veuillez redémarrer l'application."
|
||||
},
|
||||
"SAVE_OUTPUT_FOLDER": {
|
||||
"TITLE": "ENREGISTRER LE DOSSIER DE SORTIE",
|
||||
"DESCRIPTION": "Si activé, le dossier de sortie sera mémorisé entre les sessions."
|
||||
},
|
||||
"THEME": {
|
||||
"TITLE": "THÈME UPSCAYL"
|
||||
},
|
||||
"LANGUAGE": {
|
||||
"TITLE": "LANGUE UPSCAYL"
|
||||
},
|
||||
"CUSTOM_TILE_SIZE": {
|
||||
"TITLE": "TAILLE DE TUILE PERSONNALISÉE",
|
||||
"DESCRIPTION": "Utilisez une taille de tuile personnalisée pour segmenter l'image. Cela peut aider à traiter les images plus rapidement en réduisant le nombre de tuiles générées."
|
||||
},
|
||||
"TURN_OFF_NOTIFICATIONS": {
|
||||
"TITLE": "DÉSACTIVER LES NOTIFICATIONS",
|
||||
"DESCRIPTION": "Si activé, Upscayl n'enverra aucune notification système en cas de succès ou d'échec."
|
||||
},
|
||||
"SUPPORT": {
|
||||
"TITLE": "Vous avez des problèmes ?",
|
||||
"DOCS_BUTTON_TITLE": "🙏 OBTENIR DE L'AIDE",
|
||||
"EMAIL_BUTTON_TITLE": "📧 EMAIL AU DÉVELOPPEUR"
|
||||
}
|
||||
},
|
||||
"APP": {
|
||||
"TITLE": "Upscayl",
|
||||
"BATCH_MODE": {
|
||||
"TITLE": "Suréchantillonnage par lot",
|
||||
"DESCRIPTION": "Cela vous permettra de suréchantillonner tous les fichiers d'un dossier en une seule fois"
|
||||
},
|
||||
"FILE_SELECTION": {
|
||||
"TITLE": "Étape 1",
|
||||
"BATCH_MODE_TYPE": "Sélectionner un dossier",
|
||||
"SINGLE_MODE_TYPE": "Sélectionner une image"
|
||||
},
|
||||
"MODEL_SELECTION": {
|
||||
"TITLE": "Étape 2",
|
||||
"DESCRIPTION": "Sélectionner un modèle"
|
||||
},
|
||||
"DOUBLE_UPSCAYL": {
|
||||
"TITLE": "Double Upscayl",
|
||||
"DESCRIPTION": "Activez cette option pour exécuter le suréchantillonnage deux fois sur une image. Notez que cela peut entraîner une augmentation significative du temps de traitement et éventuellement des problèmes de performance pour des échelles supérieures à 4X."
|
||||
},
|
||||
"OUTPUT_PATH_SELECTION": {
|
||||
"TITLE": "Étape 3",
|
||||
"MAC_APP_STORE_ALERT": "En raison des restrictions de sécurité de l'App Store MacOS, Upscayl vous demande de sélectionner un dossier de sortie à chaque démarrage.\n\nPour éviter cela, vous pouvez enregistrer de manière permanente un dossier de sortie par défaut dans l'onglet 'Paramètres' d'Upscayl.",
|
||||
"NOT_SELECTED": "Non sélectionné",
|
||||
"DEFAULT_IMG_PATH": "Par défaut au chemin de l'image",
|
||||
"DEFAULT_FOLDER_PATH": "Par défaut au chemin du dossier",
|
||||
"BUTTON_TITLE": "Définir le dossier de sortie"
|
||||
},
|
||||
"SCALE_SELECTION": {
|
||||
"TITLE": "Étape 4",
|
||||
"FROM_TITLE": "Suréchantillonner de ",
|
||||
"TO_TITLE": " à ",
|
||||
"NO_OUTPUT_FOLDER_ALERT": "Veuillez d'abord sélectionner un dossier de sortie",
|
||||
"START_BUTTON_TITLE": "Suréchantillonner",
|
||||
"IN_PROGRESS_BUTTON_TITLE": "Suréchantillonnage⏳"
|
||||
},
|
||||
"IMAGE_OPTIONS": {
|
||||
"RESET_BUTTON_TITLE": "Réinitialiser l'image",
|
||||
"LENS_VIEW_TITLE": "Vue de la lentille",
|
||||
"SLIDER_VIEW_TITLE": "Vue du curseur",
|
||||
"ZOOM_AMOUNT_TITLE": "Niveau de zoom",
|
||||
"LENS_SIZE_TITLE": "Taille de la lentille"
|
||||
},
|
||||
"PROGRESS_BAR": {
|
||||
"BATCH_UPSCAYL_IN_PROGRESS_TITLE": "Suréchantillonnage par lot en cours :",
|
||||
"IN_PROGRESS_TITLE": "Faire la magie du suréchantillonnage...",
|
||||
"STOP_BUTTON_TITLE": "ARRÊTER"
|
||||
},
|
||||
"RESET_BUTTON_TITLE": "Réinitialiser",
|
||||
"RIGHT_PANE_INFO": {
|
||||
"SELECT_FOLDER": "Sélectionnez un dossier à suréchantillonner",
|
||||
"SELECT_IMAGE": "Sélectionnez une image à suréchantillonner",
|
||||
"SELECT_FOLDER_DESCRIPTION": "Assurez-vous que le dossier ne contient rien d'autre que des images PNG, JPG, JPEG et WEBP.",
|
||||
"SELECT_IMAGES_DESCRIPTION": "Sélectionnez ou glissez-déposez une image PNG, JPG, JPEG ou WEBP."
|
||||
},
|
||||
"PROGRESS": {
|
||||
"PROCESSING_TITLE": "Traitement de l'image...",
|
||||
"SCALING_CONVERTING_TITLE": "Mise à l'échelle et conversion de l'image...",
|
||||
"WAIT_TITLE": "Patientez...",
|
||||
"SUCCESS_TITLE": "Suréchantillonnage réussi !",
|
||||
"BATCH": {
|
||||
"SELECTED_FOLDER_TITLE": "Dossier sélectionné :",
|
||||
"DONE_TITLE": "Tout est terminé !",
|
||||
"OPEN_UPSCAYLED_FOLDER_TITLE": "Ouvrir le dossier suréchantillonné"
|
||||
}
|
||||
},
|
||||
"SLIDER": {
|
||||
"ORIGINAL_TITLE": "Original",
|
||||
"UPSCAYLED_TITLE": "Suréchantillonné"
|
||||
},
|
||||
"DIALOG_BOX": {
|
||||
"CLOSE": "Fermer"
|
||||
}
|
||||
},
|
||||
"ERRORS": {
|
||||
"GPU_ERROR": {
|
||||
"TITLE": "Erreur GPU",
|
||||
"DESCRIPTION": "Un problème est survenu avec le GPU. Veuillez lire la documentation pour le dépannage ! ({data})"
|
||||
},
|
||||
"COPY_ERROR": {
|
||||
"TITLE": "Erreur de copie",
|
||||
"DESCRIPTION": ""
|
||||
},
|
||||
"READ_WRITE_ERROR": {
|
||||
"TITLE": "Erreur de lecture/écriture",
|
||||
"DESCRIPTION": "Assurez-vous que le chemin est correct et que vous avez les permissions de lecture/écriture appropriées \n({data})"
|
||||
},
|
||||
"TILE_SIZE_ERROR": {
|
||||
"TITLE": "Erreur",
|
||||
"DESCRIPTION": "La taille de la tuile est incorrecte. Veuillez changer la taille de la tuile dans les paramètres ou la définir à 0 ({data})"
|
||||
},
|
||||
"EXCEPTION_ERROR": {
|
||||
"TITLE": "Erreur d'exception",
|
||||
"DESCRIPTION": "Upscayl a rencontré une erreur. Il est possible que le binaire Upscayl n'ait pas réussi à exécuter correctement les commandes. Essayez de vérifier les journaux pour voir si vous obtenez des informations. Vous pouvez poster un problème sur le dépôt GitHub d'Upscayl pour obtenir plus d'aide."
|
||||
},
|
||||
"GENERIC_ERROR": {
|
||||
"TITLE": "Erreur"
|
||||
},
|
||||
"INVALID_IMAGE_ERROR": {
|
||||
"TITLE": "Image invalide",
|
||||
"DESCRIPTION": "Veuillez sélectionner une image avec une extension valide comme PNG, JPG, JPEG ou WEBP.",
|
||||
"ADDITIONAL_DESCRIPTION": "Veuillez glisser-déposer une image"
|
||||
},
|
||||
"NO_IMAGE_ERROR": {
|
||||
"TITLE": "Aucune image sélectionnée",
|
||||
"DESCRIPTION": "Veuillez sélectionner une image à suréchantillonner"
|
||||
},
|
||||
"OPEN_DOCS_TITLE": "Ouvrir la documentation",
|
||||
"OPEN_DOCS_BUTTON_TITLE": "Dépanner"
|
||||
},
|
||||
"UPSCAYL_CLOUD": {
|
||||
"COMING_SOON": "Bientôt disponible !",
|
||||
"CATCHY_PHRASE_1": "Plus d'erreurs, de problèmes matériels, de compromis sur la qualité ou de longs temps de chargement !",
|
||||
"CATCHY_PHRASE_2": "🌐 Suréchantillonnez n'importe où, n'importe quand, sur n'importe quel appareil\n☁️ Pas de carte graphique ou de matériel requis\n👩 Amélioration du visage\n🦋 Plus de 10 modèles au choix\n🏎 5x plus rapide que Upscayl Desktop\n🎞 Suréchantillonnage vidéo\n💰 Utilisation commerciale\n😴 Suréchantillonnez pendant que vous dormez",
|
||||
"ALREADY_REGISTERED_ALERT": "Merci {name} ! Il semble que votre email ait déjà été enregistré :D Si ce n'est pas le cas, veuillez réessayer.",
|
||||
"ADD_SUCCESS": "Merci de rejoindre la liste d'attente ! Nous vous informerons lorsque Upscayl Cloud sera prêt pour vous.",
|
||||
"INCORRECT_FIELDS_ALERT": "Veuillez remplir correctement tous les champs.",
|
||||
"JOIN_WAITLIST": "Rejoindre la liste d'attente",
|
||||
"DONT_SHOW_AGAIN": "NE PLUS AFFICHER"
|
||||
}
|
||||
}
|
@ -1,217 +1,210 @@
|
||||
{
|
||||
"TITLE": "Upscayl",
|
||||
"INTRO": "Upscayl Cloudを紹介します!",
|
||||
"HEADER": {
|
||||
"GITHUB_BUTTON_TITLE": "GitHubでスターをつけてください 😁",
|
||||
"DESCRIPTION": "AI画像アップスケーラー"
|
||||
},
|
||||
"FOOTER": {
|
||||
"NEWS_TITLE": "UPSCAYLニュース",
|
||||
"COPYRIGHT": "著作権 ©",
|
||||
"TITLE": "作成者: ",
|
||||
"LINK_TITLE": "Upscaylチーム"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "設定",
|
||||
"CHANGE_LANGUAGE": { "TITLE": "言語を変更する" },
|
||||
"IMAGE_COMPRESSION": {
|
||||
"TITLE": "画像圧縮",
|
||||
"DESCRIPTION": "PNG圧縮は非可逆的であるため、ファイルサイズが大幅に削減されることはなく、高い圧縮値はパフォーマンスに影響を与える可能性があります。JPGおよびWebP圧縮は可逆的です。"
|
||||
},
|
||||
"CUSTOM_MODELS": {
|
||||
"TITLE": "カスタムモデルを追加",
|
||||
"BUTTON_FOLDER": "フォルダを選択",
|
||||
"DESCRIPTION": "簡単に独自のモデルを追加できます。詳細については:",
|
||||
"LINK_TITLE": "カスタムモデルリポジトリ"
|
||||
},
|
||||
"CUSTOM_INPUT_RESOLUTION": {
|
||||
"TITLE": "カスタム出力幅",
|
||||
"RESTART": "再起動が必要",
|
||||
"DESCRIPTION": "出力画像のカスタム幅を使用します。高さは自動的に調整されます。これを有効にすると、スケール設定が上書きされます。"
|
||||
},
|
||||
"DONATE": {
|
||||
"DESCRIPTION": "私たちの活動が気に入ったら :)",
|
||||
"BUTTON_TITLE": "💎 寄付する"
|
||||
},
|
||||
"GPU_ID_INPUT": {
|
||||
"TITLE": "GPU ID",
|
||||
"DESCRIPTION": "詳細については、Upscaylのドキュメントをお読みください。",
|
||||
"ADDITIONAL_DESCRIPTION": "Windowsでパフォーマンスモードを有効にして、より良い結果を得ることができます。"
|
||||
},
|
||||
"IMAGE_FORMAT": {
|
||||
"TITLE": "画像を保存する形式",
|
||||
"PNG": "PNG",
|
||||
"JPG": "JPG",
|
||||
"WEBP": "WEBP"
|
||||
},
|
||||
"IMAGE_SCALE": {
|
||||
"TITLE": "画像スケール",
|
||||
"IMAGE_SCALED_BY": "画像スケール ({scale}X)",
|
||||
"DESCRIPTION": "4X以上のスケール(16X Double Upscaylを除く)は、画像をリサイズするだけで、AIアップスケーリングは行われません。",
|
||||
"WARNING": "5X以上は一部のデバイスでパフォーマンスに問題を引き起こす可能性があります!",
|
||||
"ADDITIONAL_WARNING": "これにより、一部のデバイスでパフォーマンスに問題が発生する可能性があります!"
|
||||
},
|
||||
"LOG_AREA": {
|
||||
"ON_COPY": "コピーされました ✅",
|
||||
"BUTTON_TITLE": "ログをコピー 📋",
|
||||
"NO_LOGS": "表示するログがありません"
|
||||
},
|
||||
"OVERWRITE_TOGGLE": {
|
||||
"TITLE": "以前のアップスケールを上書き",
|
||||
"DESCRIPTION": "有効にすると、Upscaylは画像を再処理し、直接ロードするのではなく再度処理します。"
|
||||
},
|
||||
"RESET_SETTINGS": {
|
||||
"BUTTON_TITLE": "Upscaylをリセット",
|
||||
"ALERT": "Upscaylがリセットされました。アプリを再起動してください。"
|
||||
},
|
||||
"SAVE_OUTPUT_FOLDER": {
|
||||
"TITLE": "出力フォルダを保存",
|
||||
"DESCRIPTION": "有効にすると、セッション間で出力フォルダが記憶されます。"
|
||||
},
|
||||
"THEME": {
|
||||
"TITLE": "UPSCAYLテーマ"
|
||||
},
|
||||
"LANGUAGE": {
|
||||
"TITLE": "UPSCAYLの言語"
|
||||
},
|
||||
"CUSTOM_TILE_SIZE": {
|
||||
"TITLE": "カスタムタイルサイズ",
|
||||
"DESCRIPTION": "画像をセグメント化するためにカスタムタイルサイズを使用します。これにより、生成されるタイルの数を減らして画像をより速く処理できます。"
|
||||
},
|
||||
"TURN_OFF_NOTIFICATIONS": {
|
||||
"TITLE": "通知をオフにする",
|
||||
"DESCRIPTION": "有効にすると、Upscaylは成功または失敗時にシステム通知を送信しなくなります。"
|
||||
},
|
||||
"SUPPORT": {
|
||||
"TITLE": "問題がありますか?",
|
||||
"DOCS_BUTTON_TITLE": "🙏 サポートを受ける",
|
||||
"EMAIL_BUTTON_TITLE": "📧 開発者にメール"
|
||||
}
|
||||
},
|
||||
"APP": {
|
||||
"TITLE": "Upscayl",
|
||||
"INTRO": "Upscayl Cloudの紹介!",
|
||||
"HEADER": {
|
||||
"GITHUB_STAR_TT_INFO": "GitHubでスターをつけてください 😁",
|
||||
"APP_INFO": "AI画像アップスケーラー"
|
||||
"BATCH_MODE": {
|
||||
"TITLE": "バッチUpscayl",
|
||||
"DESCRIPTION": "これにより、フォルダ内のすべてのファイルを一度にUpscaylできます"
|
||||
},
|
||||
"FOOTER": {
|
||||
"NEWS_TITLE": "UPSCAYLニュース",
|
||||
"COPYRIGHT": "著作権 ©",
|
||||
"BY": "作成者 ",
|
||||
"APP_TEAM": "Upscaylチーム"
|
||||
"FILE_SELECTION": {
|
||||
"TITLE": "ステップ 1",
|
||||
"BATCH_MODE_TYPE": "フォルダを選択",
|
||||
"SINGLE_MODE_TYPE": "画像を選択"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "設定",
|
||||
"CHANGE_LANG": "言語を変更"
|
||||
"MODEL_SELECTION": {
|
||||
"TITLE": "ステップ 2",
|
||||
"DESCRIPTION": "モデルを選択"
|
||||
},
|
||||
"INFOS": {
|
||||
"IMAGE_PROCESSING": {
|
||||
"START": "画像を処理中...",
|
||||
"SCALE_CONVERT": "画像をスケールして変換中...",
|
||||
"WAIT": "少々お待ちください...",
|
||||
"SUCCESS": "Upscaylに成功しました!",
|
||||
"BATCH": {
|
||||
"SELECT": "選択されたフォルダ:",
|
||||
"DONE": "すべて完了!",
|
||||
"OPEN_DONE_FOLDER": "Upscayledフォルダを開く"
|
||||
}
|
||||
},
|
||||
"COMPARISION": {
|
||||
"SLIDER_ORIGINAL": "オリジナル",
|
||||
"SLIDER_PROCESSED": "Upscayled"
|
||||
},
|
||||
"IMAGE_COMPRESSION": {
|
||||
"TITLE": "画像圧縮 ({compression}%)",
|
||||
"LOSSLESS_TIP": "PNG圧縮は無損失のため、ファイルサイズが大幅に減らない可能性があります。圧縮率を高くするとパフォーマンスに影響が出る場合があります。JPGとWebPの圧縮は有損です。"
|
||||
},
|
||||
"CUSTOM_MODELS": {
|
||||
"ADD": "カスタムモデルを追加",
|
||||
"SELECT_FOLDER": "フォルダを選択",
|
||||
"INFO": "簡単に独自のモデルを追加できます。詳細については:",
|
||||
"LINK_TEXT": "カスタムモデルリポジトリ"
|
||||
},
|
||||
"CUSTOM_INPUT_RESOLUTION": {
|
||||
"WIDTH": "カスタム出力幅",
|
||||
"RESTART": "再起動が必要",
|
||||
"CUSTOM_WIDTH_TIP": "出力画像のカスタム幅を使用します。高さは自動的に調整されます。これを有効にすると、スケール設定が無効になります。"
|
||||
},
|
||||
"DONATE": {
|
||||
"IF_LIKED": "気に入っていただけたら :)",
|
||||
"DONATE": "💎 寄付する"
|
||||
},
|
||||
"GPU_ID_INPUT": {
|
||||
"ID": "GPU ID",
|
||||
"READ_DOCS": "詳細については、Upscaylのドキュメントをお読みください。",
|
||||
"ENABLE_PERF_MODE": "Windowsでパフォーマンスモードを有効にして、より良い結果を得る。"
|
||||
},
|
||||
"IMAGE_FORMAT": {
|
||||
"SAVE_AS": "画像を保存",
|
||||
"PNG": "PNG",
|
||||
"JPG": "JPG",
|
||||
"WEBP": "WEBP"
|
||||
},
|
||||
"IMAGE_SCALE": {
|
||||
"TITLE": "画像スケール",
|
||||
"TITLE_CAPS": "画像スケール",
|
||||
"SCALES_TIMES": "({scale}倍)",
|
||||
"AI_UPSCALE_RESIZE_INFO": "4倍以上(16倍のDouble Upscaylを除く)は、画像のサイズ変更のみで、AIアップスケールは行われません。"
|
||||
},
|
||||
"LOG_AREA": {
|
||||
"ON_COPY": "コピーされました ✅",
|
||||
"COPY": "ログをコピー 📋",
|
||||
"NO_LOGS": "表示するログがありません"
|
||||
},
|
||||
"OVERWRITE_TOGGLE": {
|
||||
"OW_PREV": "以前のアップスケールを上書き",
|
||||
"OW_TIP": "有効にすると、Upscaylは画像を再処理し、直接読み込むのではなく処理します。"
|
||||
},
|
||||
"RESET_SETTINGS": {
|
||||
"TITLE": "UPSCAYLをリセット",
|
||||
"ON_RESET": "Upscaylがリセットされました。アプリを再起動してください。"
|
||||
},
|
||||
"SAVE_OUTPUT_FOLDER": {
|
||||
"TITLE": "出力フォルダを保存",
|
||||
"DESC": "有効にすると、セッション間で出力フォルダが記憶されます。"
|
||||
},
|
||||
"THEME": {
|
||||
"TITLE": "UPSCAYL テーマ"
|
||||
},
|
||||
"LANGUAGE": {
|
||||
"TITLE": "UPSCAYL 言語"
|
||||
},
|
||||
"CUSTOM_TILE_SIZE": {
|
||||
"TITLE": "カスタムタイルサイズ",
|
||||
"DESC": "画像を分割するためのカスタムタイルサイズを使用します。これにより、生成されるタイルの数を減らすことで、画像処理を高速化できます。"
|
||||
},
|
||||
"TURN_OFF_NOTIFICATIONS": {
|
||||
"TITLE": "通知をオフにする",
|
||||
"DESC": "有効にすると、Upscaylは成功や失敗時のシステム通知を送信しません。"
|
||||
},
|
||||
"DIALOG_BOX": {
|
||||
"CLOSE": "閉じる"
|
||||
},
|
||||
"LEFT_PANE_PROCESS": {
|
||||
"BATCH": {
|
||||
"TITLE": "バッチUpscayl",
|
||||
"TT_INFO": "これにより、フォルダ内のすべてのファイルを一度にUpscaylできます"
|
||||
},
|
||||
"STEP_1": {
|
||||
"TITLE": "ステップ1",
|
||||
"BATCH_YES": "フォルダを選択",
|
||||
"BATCH_NO": "画像を選択"
|
||||
},
|
||||
"STEP_2": {
|
||||
"TITLE": "ステップ2",
|
||||
"SELECT_MODEL": "モデルを選択"
|
||||
},
|
||||
"DOUBLE_UPSCAYL": {
|
||||
"TITLE": "Double Upscayl",
|
||||
"TT_INFO": "このオプションを有効にすると、画像に対して2回Upscaylを実行します。4倍以上のスケールでは、処理時間が大幅に増加し、パフォーマンス問題が発生する可能性があります。"
|
||||
},
|
||||
"STEP_3": {
|
||||
"TITLE": "ステップ3",
|
||||
"MACOS_RESTRICTION_ALERT": "MacOS App Storeのセキュリティ制限のため、Upscaylを起動するたびに出力フォルダを選択する必要があります。\n\nこれを避けるために、Upscaylの「設定」タブでデフォルトの出力フォルダを永続的に保存できます。",
|
||||
"NOT_SELECTED": "未選択",
|
||||
"DEFAULT_IMG_PATH": "画像のパスにデフォルト設定",
|
||||
"DEFAULT_FOLDER_PATH": "フォルダのパスにデフォルト設定",
|
||||
"SET_OUTPUT_FOLDER": "出力フォルダを設定"
|
||||
},
|
||||
"STEP_4": {
|
||||
"TITLE": "ステップ4",
|
||||
"UPSCAYL_FROM": "Upscaylから ",
|
||||
"UPSCAYL_TO": " まで",
|
||||
"FOLDER_ALERT": "まず出力フォルダを選択してください",
|
||||
"PROCESS_START": "Upscayl",
|
||||
"PROCESS_IN_PROGRESS": "Upscayling⏳"
|
||||
}
|
||||
},
|
||||
"IMAGE_OPTIONS": {
|
||||
"RESET": "画像をリセット",
|
||||
"LENS_VIEW": "レンズビュー",
|
||||
"SLIDER_VIEW": "スライダービュー",
|
||||
"ZOOM_AMOUNT": "ズーム量",
|
||||
"LENS_SIZE": "レンズサイズ"
|
||||
},
|
||||
"PROGRESS_BAR": {
|
||||
"IN_PROGRESS": "バッチUpscayl進行中:",
|
||||
"PROGRESS_CATCHY": "Upscaylの魔法を実行中...",
|
||||
"STOP": "停止"
|
||||
},
|
||||
"RESET": "リセット",
|
||||
"RIGHT_PANE_INFO": {
|
||||
"SELECT_FOLDER": "Upscaylするフォルダを選択",
|
||||
"SELECT_IMAGE": "Upscaylする画像を選択",
|
||||
"NOTE_SPECIFIC_FORMATS_IN_FOLDER": "フォルダにはPNG、JPG、JPEG、およびWEBP画像以外を含めないでください。",
|
||||
"SELECT_IMAGES": "PNG、JPG、JPEGまたはWEBP画像を選択するか、ドラッグ&ドロップしてください。",
|
||||
"APP_VERSION": "Upscayl v{version}"
|
||||
"DOUBLE_UPSCAYL": {
|
||||
"TITLE": "Double Upscayl",
|
||||
"DESCRIPTION": "このオプションを有効にすると、画像に対して2回Upscaylを実行します。4X以上のスケールでは、処理時間が大幅に増加し、パフォーマンスに問題が発生する可能性があることに注意してください。"
|
||||
},
|
||||
"OUTPUT_PATH_SELECTION": {
|
||||
"TITLE": "ステップ 3",
|
||||
"MAC_APP_STORE_ALERT": "MacOS App Storeのセキュリティ制限のため、Upscaylを開始するたびに出力フォルダを選択する必要があります。\n\nこれを回避するには、Upscaylの「設定」タブでデフォルトの出力フォルダを永久に保存できます。",
|
||||
"NOT_SELECTED": "未選択",
|
||||
"DEFAULT_IMG_PATH": "画像のパスがデフォルトになります",
|
||||
"DEFAULT_FOLDER_PATH": "フォルダのパスがデフォルトになります",
|
||||
"BUTTON_TITLE": "出力フォルダを設定"
|
||||
},
|
||||
"SCALE_SELECTION": {
|
||||
"TITLE": "ステップ 4",
|
||||
"FROM_TITLE": "Upscayl元 ",
|
||||
"TO_TITLE": " から ",
|
||||
"NO_OUTPUT_FOLDER_ALERT": "まず出力フォルダを選択してください",
|
||||
"START_BUTTON_TITLE": "Upscayl",
|
||||
"IN_PROGRESS_BUTTON_TITLE": "Upscayl中⏳"
|
||||
},
|
||||
"IMAGE_OPTIONS": {
|
||||
"RESET_BUTTON_TITLE": "画像をリセット",
|
||||
"LENS_VIEW_TITLE": "レンズビュー",
|
||||
"SLIDER_VIEW_TITLE": "スライダービュー",
|
||||
"ZOOM_AMOUNT_TITLE": "ズーム量",
|
||||
"LENS_SIZE_TITLE": "レンズサイズ"
|
||||
},
|
||||
"PROGRESS_BAR": {
|
||||
"BATCH_UPSCAYL_IN_PROGRESS_TITLE": "バッチUpscayl進行中:",
|
||||
"IN_PROGRESS_TITLE": "Upscaylの魔法をかけています...",
|
||||
"STOP_BUTTON_TITLE": "停止"
|
||||
},
|
||||
"RESET_BUTTON_TITLE": "リセット",
|
||||
"RIGHT_PANE_INFO": {
|
||||
"SELECT_FOLDER": "Upscaylするフォルダを選択",
|
||||
"SELECT_IMAGE": "Upscaylする画像を選択",
|
||||
"SELECT_FOLDER_DESCRIPTION": "フォルダにはPNG、JPG、JPEG、WEBPの画像以外のものが含まれていないことを確認してください。",
|
||||
"SELECT_IMAGES_DESCRIPTION": "PNG、JPG、JPEG、またはWEBP画像を選択するか、ドラッグアンドドロップしてください。"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"PROCESSING_TITLE": "画像を処理中...",
|
||||
"SCALING_CONVERTING_TITLE": "画像をスケールおよび変換中...",
|
||||
"WAIT_TITLE": "少々お待ちください...",
|
||||
"SUCCESS_TITLE": "Upscaylが成功しました!",
|
||||
"BATCH": {
|
||||
"SELECTED_FOLDER_TITLE": "選択されたフォルダ:",
|
||||
"DONE_TITLE": "すべて完了しました!",
|
||||
"OPEN_UPSCAYLED_FOLDER_TITLE": "Upscaylされたフォルダを開く"
|
||||
}
|
||||
},
|
||||
"ERRORS": {
|
||||
"GPU_ERROR": {
|
||||
"TITLE": "GPUエラー",
|
||||
"DESC": "GPUに問題が発生しました。トラブルシューティングについてはドキュメントをお読みください! ({data})"
|
||||
},
|
||||
"COPY_ERROR": {
|
||||
"TITLE": "コピーエラー",
|
||||
"DESC": ""
|
||||
},
|
||||
"OPEN_DOCS": "ドキュメントを開く",
|
||||
"TROUBLESHOOT": "トラブルシューティング",
|
||||
"READ_WRITE_ERROR": {
|
||||
"TITLE": "読み書きエラー",
|
||||
"DESC": "パスが正しく、適切な読み書き権限があることを確認してください \n({data})"
|
||||
},
|
||||
"TILE_SIZE_ERROR": {
|
||||
"TITLE": "エラー",
|
||||
"DESC": "タイルサイズが間違っています。設定でタイルサイズを変更するか、0に設定してください ({data})"
|
||||
},
|
||||
"EXCEPTION_ERROR": {
|
||||
"TITLE": "例外エラー",
|
||||
"DESC": "Upscaylでエラーが発生しました。おそらく、Upscaylバイナリがコマンドを正しく実行できなかった可能性があります。ログを確認して情報を得てください。さらに支援が必要な場合は、UpscaylのGitHubリポジトリに問題を投稿できます。"
|
||||
},
|
||||
"GENERIC_ERROR": {
|
||||
"TITLE": "エラー"
|
||||
},
|
||||
"INVALID_IMAGE_ERROR": {
|
||||
"TITLE": "無効な画像",
|
||||
"DESC": "PNG、JPG、JPEG、またはWEBPの有効な拡張子を持つ画像を選択してください。",
|
||||
"DRAG_DESC": "画像をドラッグ&ドロップしてください"
|
||||
},
|
||||
"NO_IMAGE_ERROR": {
|
||||
"TITLE": "画像が選択されていません",
|
||||
"DESC": "アップスケールする画像を選択してください"
|
||||
},
|
||||
"IMAGE_SCALE_WARN": {
|
||||
"PERF_ISSUE": "5倍以上は一部のデバイスでパフォーマンス問題を引き起こす可能性があります!",
|
||||
"PERF_ISSUE_DEVICE": "一部のデバイスでパフォーマンス問題が発生する可能性があります!"
|
||||
},
|
||||
"ISSUE_CHECK": {
|
||||
"TITLE": "問題がありますか?",
|
||||
"GET_HELP": "🙏 助けを得る",
|
||||
"EMAIL_DEV": "📧 開発者にメール"
|
||||
}
|
||||
"SLIDER": {
|
||||
"ORIGINAL_TITLE": "オリジナル",
|
||||
"UPSCAYLED_TITLE": "Upscayl後"
|
||||
},
|
||||
"UPSCAYL_CLOUD": {
|
||||
"COMING_SOON": "近日公開!",
|
||||
"CATCHY_PHRASE_1": "エラー、ハードウェアの問題、品質の妥協、長い読み込み時間はもうありません!",
|
||||
"CATCHY_PHRASE_2": "🌐 どこでも、いつでも、どんなデバイスでもUpscayl\n☁️ グラフィックカードやハードウェア不要\n👩 顔の強化\n🦋 10以上のモデルから選択可能\n🏎 Upscaylデスクトップより5倍速い\n🎞 ビデオアップスケーリング\n💰 商用利用可\n😴 眠っている間にUpscayl",
|
||||
"ALREADY_REGISTERED": "ありがとう{name}!あなたのメールはすでに登録されているようです :D もしそうでない場合は、もう一度お試しください。",
|
||||
"ADD_SUCCESS": "待機リストへのご参加ありがとうございます!Upscayl Cloudが準備でき次第ご連絡いたします。",
|
||||
"INCORRECT_FIELDS": "すべてのフィールドに正しく記入してください。",
|
||||
"JOIN_WAITLIST": "待機リストに参加する",
|
||||
"DONT_SHOW_AGAIN": "再び表示しない"
|
||||
"DIALOG_BOX": {
|
||||
"CLOSE": "閉じる"
|
||||
}
|
||||
},
|
||||
"ERRORS": {
|
||||
"GPU_ERROR": {
|
||||
"TITLE": "GPUエラー",
|
||||
"DESCRIPTION": "GPUに問題が発生しました。トラブルシューティングのためにドキュメントを参照してください! ({data})"
|
||||
},
|
||||
"COPY_ERROR": {
|
||||
"TITLE": "コピーエラー",
|
||||
"DESCRIPTION": ""
|
||||
},
|
||||
"READ_WRITE_ERROR": {
|
||||
"TITLE": "読み取り/書き込みエラー",
|
||||
"DESCRIPTION": "パスが正しいことを確認し、適切な読み取り/書き込み権限を持っていることを確認してください \n({data})"
|
||||
},
|
||||
"TILE_SIZE_ERROR": {
|
||||
"TITLE": "エラー",
|
||||
"DESCRIPTION": "タイルサイズが正しくありません。設定でタイルサイズを変更するか、0に設定してください ({data})"
|
||||
},
|
||||
"EXCEPTION_ERROR": {
|
||||
"TITLE": "例外エラー",
|
||||
"DESCRIPTION": "Upscaylでエラーが発生しました。おそらく、Upscaylのバイナリがコマンドを適切に実行できなかった可能性があります。ログを確認して情報を取得してみてください。さらに支援が必要な場合は、UpscaylのGitHubリポジトリに問題を投稿することができます。"
|
||||
},
|
||||
"GENERIC_ERROR": {
|
||||
"TITLE": "エラー"
|
||||
},
|
||||
"INVALID_IMAGE_ERROR": {
|
||||
"TITLE": "無効な画像",
|
||||
"DESCRIPTION": "PNG、JPG、JPEG、またはWEBPなどの有効な拡張子を持つ画像を選択してください。",
|
||||
"ADDITIONAL_DESCRIPTION": "画像をドラッグアンドドロップしてください"
|
||||
},
|
||||
"NO_IMAGE_ERROR": {
|
||||
"TITLE": "画像が選択されていません",
|
||||
"DESCRIPTION": "アップスケールする画像を選択してください"
|
||||
},
|
||||
"OPEN_DOCS_TITLE": "ドキュメントを開く",
|
||||
"OPEN_DOCS_BUTTON_TITLE": "トラブルシューティング"
|
||||
},
|
||||
"UPSCAYL_CLOUD": {
|
||||
"COMING_SOON": "近日公開!",
|
||||
"CATCHY_PHRASE_1": "もうエラー、ハードウェアの問題、品質の妥協や長い読み込み時間はありません!",
|
||||
"CATCHY_PHRASE_2": "🌐 いつでもどこでも、どのデバイスでもUpscayl\n☁️ グラフィックカードやハードウェアは不要\n👩 顔の改善\n🦋 10以上のモデルから選べます\n🏎 Upscaylデスクトップの5倍の速さ\n🎞 ビデオアップスケーリング\n💰 商用利用\n😴 寝ている間にUpscayl",
|
||||
"ALREADY_REGISTERED_ALERT": "ありがとう {name}!あなたのメールはすでに登録されているようです :D そうでない場合は、もう一度お試しください。",
|
||||
"ADD_SUCCESS": "待機リストにご参加いただきありがとうございます!Upscayl Cloudが準備でき次第お知らせします。",
|
||||
"INCORRECT_FIELDS_ALERT": "すべてのフィールドに正しく入力してください。",
|
||||
"JOIN_WAITLIST": "待機リストに参加",
|
||||
"DONT_SHOW_AGAIN": "再表示しない"
|
||||
}
|
||||
}
|
||||
|
@ -5,219 +5,212 @@
|
||||
// !!!!!!!!!!!!!!!!!!!!!KEEP ANYTHING PRESENT WITHIN FLOWER BRACES {variable} - THEY ARE VARIABLES!!!!!!!!!!!!!!!!!!!!!!!
|
||||
// Delete these comments starting with "//" as json format does not accept comments
|
||||
{
|
||||
"TITLE": "Upscayl",
|
||||
"INTRO": "Introducing Upscayl Cloud!",
|
||||
"HEADER": {
|
||||
"GITHUB_BUTTON_TITLE": "Star us on GitHub 😁",
|
||||
"DESCRIPTION": "AI Image Upscaler"
|
||||
},
|
||||
"FOOTER": {
|
||||
"NEWS_TITLE": "UPSCAYL NEWS",
|
||||
"COPYRIGHT": "Copyright ©",
|
||||
"TITLE": "By ",
|
||||
"LINK_TITLE": "The Upscayl Team"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "SETTINGS",
|
||||
"CHANGE_LANGUAGE": { "TITLE": "Change Language" },
|
||||
"IMAGE_COMPRESSION": {
|
||||
"TITLE": "Image Compression",
|
||||
"DESCRIPTION": "PNG compression is lossless, so it might not reduce the file size significantly and higher compression values might affect the performance. JPG and WebP compression is lossy."
|
||||
},
|
||||
"CUSTOM_MODELS": {
|
||||
"TITLE": "ADD CUSTOM MODELS",
|
||||
"BUTTON_FOLDER": "Select Folder",
|
||||
"DESCRIPTION": "You can add your own models easily. For more details:",
|
||||
"LINK_TITLE": "Custom Models Repository"
|
||||
},
|
||||
"CUSTOM_INPUT_RESOLUTION": {
|
||||
"TITLE": "CUSTOM OUTPUT WIDTH",
|
||||
"RESTART": "REQUIRES RESTART",
|
||||
"DESCRIPTION": "Use a custom width for the output images. The height will be adjusted automatically. Enabling this will override the scale setting."
|
||||
},
|
||||
"DONATE": {
|
||||
"DESCRIPTION": "If you like what we do :)",
|
||||
"BUTTON_TITLE": "💎 DONATE"
|
||||
},
|
||||
"GPU_ID_INPUT": {
|
||||
"TITLE": "GPU ID",
|
||||
"DESCRIPTION": "Please read the Upscayl Documentation for more information.",
|
||||
"ADDITIONAL_DESCRIPTION": "Enable performance mode on Windows for better results."
|
||||
},
|
||||
"IMAGE_FORMAT": {
|
||||
"TITLE": "SAVE IMAGE AS",
|
||||
"PNG": "PNG",
|
||||
"JPG": "JPG",
|
||||
"WEBP": "WEBP"
|
||||
},
|
||||
"IMAGE_SCALE": {
|
||||
"TITLE": "Image Scale",
|
||||
"IMAGE_SCALED_BY": "IMAGE SCALE ({scale}X)",
|
||||
"DESCRIPTION": "Anything above 4X (except 16X Double Upscayl) only resizes the image and does not use AI upscaling.",
|
||||
"WARNING": "Anything above 5X may cause performance issues on some devices!",
|
||||
"ADDITIONAL_WARNING": "This may cause performance issues on some devices!"
|
||||
},
|
||||
"LOG_AREA": {
|
||||
"ON_COPY": "COPIED ✅",
|
||||
"BUTTON_TITLE": "COPY LOGS 📋",
|
||||
"NO_LOGS": "No logs to show"
|
||||
},
|
||||
"OVERWRITE_TOGGLE": {
|
||||
"TITLE": "OVERWRITE PREVIOUS UPSCALE",
|
||||
"DESCRIPTION": "If enabled, Upscayl will process the image again instead of loading it directly."
|
||||
},
|
||||
"RESET_SETTINGS": {
|
||||
"BUTTON_TITLE": "RESET UPSCAYL",
|
||||
"ALERT": "Upscayl has been reset. Please restart the app."
|
||||
},
|
||||
"SAVE_OUTPUT_FOLDER": {
|
||||
"TITLE": "SAVE OUTPUT FOLDER",
|
||||
"DESCRIPTION": "If enabled, the output folder will be remembered between sessions."
|
||||
},
|
||||
"THEME": {
|
||||
"TITLE": "UPSCAYL THEME"
|
||||
},
|
||||
"LANGUAGE": {
|
||||
"TITLE": "UPSCAYL LANGUAGE"
|
||||
},
|
||||
"CUSTOM_TILE_SIZE": {
|
||||
"TITLE": "CUSTOM TILE SIZE",
|
||||
"DESCRIPTION": "Use a custom tile size for segmenting the image. This can help process images faster by reducing the number of tiles generated."
|
||||
},
|
||||
"TURN_OFF_NOTIFICATIONS": {
|
||||
"TITLE": "TURN OFF NOTIFICATIONS",
|
||||
"DESCRIPTION": "If enabled, Upscayl will not send any system notifications on success or failure."
|
||||
},
|
||||
"SUPPORT": {
|
||||
"TITLE": "Having issues?",
|
||||
"DOCS_BUTTON_TITLE": "🙏 GET HELP",
|
||||
"EMAIL_BUTTON_TITLE": "📧 EMAIL DEVELOPER"
|
||||
}
|
||||
},
|
||||
"APP": {
|
||||
"TITLE": "Upscayl",
|
||||
"INTRO": "Introducing Upscayl Cloud!",
|
||||
"HEADER": {
|
||||
"GITHUB_STAR_TT_INFO": "Star us on GitHub 😁",
|
||||
"APP_INFO": "AI Image Upscaler"
|
||||
"BATCH_MODE": {
|
||||
"TITLE": "Batch Upscayl",
|
||||
"DESCRIPTION": "This will let you Upscayl all files in a folder at once"
|
||||
},
|
||||
"FOOTER": {
|
||||
"NEWS_TITLE": "UPSCAYL NEWS",
|
||||
"COPYRIGHT": "Copyright ©",
|
||||
"BY": "By ",
|
||||
"APP_TEAM": "The Upscayl Team"
|
||||
"FILE_SELECTION": {
|
||||
"TITLE": "Step 1",
|
||||
"BATCH_MODE_TYPE": "Select Folder",
|
||||
"SINGLE_MODE_TYPE": "Select Image"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "SETTINGS",
|
||||
"CHANGE_LANG": "Change Language"
|
||||
"MODEL_SELECTION": {
|
||||
"TITLE": "Step 2",
|
||||
"DESCRIPTION": "Select Model"
|
||||
},
|
||||
"INFOS": {
|
||||
"IMAGE_PROCESSING": {
|
||||
"START": "Processing the image...",
|
||||
"SCALE_CONVERT": "Scaling and converting image...",
|
||||
"WAIT": "Hold on...",
|
||||
"SUCCESS": "Upscayl Successful!",
|
||||
"BATCH": {
|
||||
"SELECT": "Selected folder:",
|
||||
"DONE": "All done!",
|
||||
"OPEN_DONE_FOLDER": "Open Upscayled Folder"
|
||||
}
|
||||
},
|
||||
"COMPARISION": {
|
||||
"SLIDER_ORIGINAL": "Original",
|
||||
"SLIDER_PROCESSED": "Upscayled"
|
||||
},
|
||||
"IMAGE_COMPRESSION": {
|
||||
"TITLE": "Image Compression ({compression}%)",
|
||||
"LOSSLESS_TIP": "PNG compression is lossless, so it might not reduce the file size significantly and higher compression values might affect the performance. JPG and WebP compression is lossy."
|
||||
},
|
||||
"CUSTOM_MODELS": {
|
||||
"ADD": "ADD CUSTOM MODELS",
|
||||
"SELECT_FOLDER": "Select Folder",
|
||||
"INFO": "You can add your own models easily. For more details:",
|
||||
"LINK_TEXT": "Custom Models Repository"
|
||||
},
|
||||
"CUSTOM_INPUT_RESOLUTION": {
|
||||
"WIDTH": "CUSTOM OUTPUT WIDTH",
|
||||
"RESTART": "REQUIRES RESTART",
|
||||
"CUSTOM_WIDTH_TIP": "Use a custom width for the output images. The height will be adjusted automatically. Enabling this will override the scale setting."
|
||||
},
|
||||
"DONATE": {
|
||||
"IF_LIKED": "If you like what we do :)",
|
||||
"DONATE": "💎 DONATE"
|
||||
},
|
||||
"GPU_ID_INPUT": {
|
||||
"ID": "GPU ID",
|
||||
"READ_DOCS": "Please read the Upscayl Documentation for more information.",
|
||||
"ENABLE_PERF_MODE": "Enable performance mode on Windows for better results."
|
||||
},
|
||||
"IMAGE_FORMAT": {
|
||||
"SAVE_AS": "SAVE IMAGE AS",
|
||||
"PNG": "PNG",
|
||||
"JPG": "JPG",
|
||||
"WEBP": "WEBP"
|
||||
},
|
||||
"IMAGE_SCALE": {
|
||||
"TITLE": "Image Scale",
|
||||
"TITLE_CAPS": "IMAGE SCALE",
|
||||
"SCALES_TIMES": "({scale}X)",
|
||||
"AI_UPSCALE_RESIZE_INFO": "Anything above 4X (except 16X Double Upscayl) only resizes the image and does not use AI upscaling."
|
||||
},
|
||||
"LOG_AREA": {
|
||||
"ON_COPY": "COPIED ✅",
|
||||
"COPY": "COPY LOGS 📋",
|
||||
"NO_LOGS": "No logs to show"
|
||||
},
|
||||
"OVERWRITE_TOGGLE": {
|
||||
"OW_PREV": "OVERWRITE PREVIOUS UPSCALE",
|
||||
"OW_TIP": "If enabled, Upscayl will process the image again instead of loading it directly."
|
||||
},
|
||||
"RESET_SETTINGS": {
|
||||
"TITLE": "RESET UPSCAYL",
|
||||
"ON_RESET": "Upscayl has been reset. Please restart the app."
|
||||
},
|
||||
"SAVE_OUTPUT_FOLDER": {
|
||||
"TITLE": "SAVE OUTPUT FOLDER",
|
||||
"DESC": "If enabled, the output folder will be remembered between sessions."
|
||||
},
|
||||
"THEME": {
|
||||
"TITLE": "UPSCAYL THEME"
|
||||
},
|
||||
"LANGUAGE": {
|
||||
"TITLE": "UPSCAYL LANGUAGE"
|
||||
},
|
||||
"CUSTOM_TILE_SIZE": {
|
||||
"TITLE": "CUSTOM TILE SIZE",
|
||||
"DESC": "Use a custom tile size for segmenting the image. This can help process images faster by reducing the number of tiles generated."
|
||||
},
|
||||
"TURN_OFF_NOTIFICATIONS": {
|
||||
"TITLE": "TURN OFF NOTIFICATIONS",
|
||||
"DESC": "If enabled, Upscayl will not send any system notifications on success or failure."
|
||||
},
|
||||
"DIALOG_BOX": {
|
||||
"CLOSE": "Close"
|
||||
},
|
||||
"LEFT_PANE_PROCESS": {
|
||||
"BATCH": {
|
||||
"TITLE": "Batch Upscayl",
|
||||
"TT_INFO": "This will let you Upscayl all files in a folder at once"
|
||||
},
|
||||
"STEP_1": {
|
||||
"TITLE": "Step 1",
|
||||
"BATCH_YES": "Select Folder",
|
||||
"BATCH_NO": "Select Image"
|
||||
},
|
||||
"STEP_2": {
|
||||
"TITLE": "Step 2",
|
||||
"SELECT_MODEL": "Select Model"
|
||||
},
|
||||
"DOUBLE_UPSCAYL": {
|
||||
"TITLE": "Double Upscayl",
|
||||
"TT_INFO": "Enable this option to run upscayl twice on an image. Note that this may cause a significant increase in processing time and possibly performance issues for scales greater than 4X."
|
||||
},
|
||||
"STEP_3": {
|
||||
"TITLE": "Step 3",
|
||||
"MACOS_RESTRICTION_ALERT": "Due to MacOS App Store security restrictions, Upscayl requires you to select an output folder everytime you start it.\n\nTo avoid this, you can permanently save a default output folder in the Upscayl 'Settings' tab.",
|
||||
"NOT_SELECTED": "Not Selected",
|
||||
"DEFAULT_IMG_PATH": "Defaults to Image's path",
|
||||
"DEFAULT_FOLDER_PATH": "Defaults to Folder's path",
|
||||
"SET_OUTPUT_FOLDER": "Set Output Folder"
|
||||
},
|
||||
"STEP_4": {
|
||||
"TITLE": "Step 4",
|
||||
"UPSCAYL_FROM": "Upscayl from ",
|
||||
"UPSCAYL_TO": " to ",
|
||||
"FOLDER_ALERT": "Please select an output folder first",
|
||||
"PROCESS_START": "Upscayl",
|
||||
"PROCESS_IN_PROGRESS": "Upscayling⏳"
|
||||
}
|
||||
},
|
||||
"IMAGE_OPTIONS": {
|
||||
"RESET": "Reset Image",
|
||||
"LENS_VIEW": "Lens View",
|
||||
"SLIDER_VIEW": "Slider View",
|
||||
"ZOOM_AMOUNT": "Zoom Amount",
|
||||
"LENS_SIZE": "Lens Size"
|
||||
},
|
||||
"PROGRESS_BAR": {
|
||||
"IN_PROGRESS": "Batch Upscayl In Progress:",
|
||||
"PROGRESS_CATCHY": "Doing the Upscayl magic...",
|
||||
"STOP": "STOP"
|
||||
},
|
||||
"RESET": "Reset",
|
||||
"RIGHT_PANE_INFO": {
|
||||
"SELECT_FOLDER": "Select a Folder to Upscayl",
|
||||
"SELECT_IMAGE": "Select an Image to Upscayl",
|
||||
"NOTE_SPECIFIC_FORMATS_IN_FOLDER": "Make sure that the folder doesn't contain anything except PNG, JPG, JPEG & WEBP images.",
|
||||
"SELECT_IMAGES": "Select or drag and drop a PNG, JPG, JPEG or WEBP image.",
|
||||
"APP_VERSION": "Upscayl v{version}"
|
||||
"DOUBLE_UPSCAYL": {
|
||||
"TITLE": "Double Upscayl",
|
||||
"DESCRIPTION": "Enable this option to run upscayl twice on an image. Note that this may cause a significant increase in processing time and possibly performance issues for scales greater than 4X."
|
||||
},
|
||||
"OUTPUT_PATH_SELECTION": {
|
||||
"TITLE": "Step 3",
|
||||
"MAC_APP_STORE_ALERT": "Due to MacOS App Store security restrictions, Upscayl requires you to select an output folder everytime you start it.\n\nTo avoid this, you can permanently save a default output folder in the Upscayl 'Settings' tab.",
|
||||
"NOT_SELECTED": "Not Selected",
|
||||
"DEFAULT_IMG_PATH": "Defaults to Image's path",
|
||||
"DEFAULT_FOLDER_PATH": "Defaults to Folder's path",
|
||||
"BUTTON_TITLE": "Set Output Folder"
|
||||
},
|
||||
"SCALE_SELECTION": {
|
||||
"TITLE": "Step 4",
|
||||
"FROM_TITLE": "Upscayl from ",
|
||||
"TO_TITLE": " to ",
|
||||
"NO_OUTPUT_FOLDER_ALERT": "Please select an output folder first",
|
||||
"START_BUTTON_TITLE": "Upscayl",
|
||||
"IN_PROGRESS_BUTTON_TITLE": "Upscayling⏳"
|
||||
},
|
||||
"IMAGE_OPTIONS": {
|
||||
"RESET_BUTTON_TITLE": "Reset Image",
|
||||
"LENS_VIEW_TITLE": "Lens View",
|
||||
"SLIDER_VIEW_TITLE": "Slider View",
|
||||
"ZOOM_AMOUNT_TITLE": "Zoom Amount",
|
||||
"LENS_SIZE_TITLE": "Lens Size"
|
||||
},
|
||||
"PROGRESS_BAR": {
|
||||
"BATCH_UPSCAYL_IN_PROGRESS_TITLE": "Batch Upscayl In Progress:",
|
||||
"IN_PROGRESS_TITLE": "Doing the Upscayl magic...",
|
||||
"STOP_BUTTON_TITLE": "STOP"
|
||||
},
|
||||
"RESET_BUTTON_TITLE": "Reset",
|
||||
"RIGHT_PANE_INFO": {
|
||||
"SELECT_FOLDER": "Select a Folder to Upscayl",
|
||||
"SELECT_IMAGE": "Select an Image to Upscayl",
|
||||
"SELECT_FOLDER_DESCRIPTION": "Make sure that the folder doesn't contain anything except PNG, JPG, JPEG & WEBP images.",
|
||||
"SELECT_IMAGES_DESCRIPTION": "Select or drag and drop a PNG, JPG, JPEG or WEBP image."
|
||||
},
|
||||
"PROGRESS": {
|
||||
"PROCESSING_TITLE": "Processing the image...",
|
||||
"SCALING_CONVERTING_TITLE": "Scaling and converting image...",
|
||||
"WAIT_TITLE": "Hold on...",
|
||||
"SUCCESS_TITLE": "Upscayl Successful!",
|
||||
"BATCH": {
|
||||
"SELECTED_FOLDER_TITLE": "Selected folder:",
|
||||
"DONE_TITLE": "All done!",
|
||||
"OPEN_UPSCAYLED_FOLDER_TITLE": "Open Upscayled Folder"
|
||||
}
|
||||
},
|
||||
"ERRORS": {
|
||||
"GPU_ERROR": {
|
||||
"TITLE": "GPU Error",
|
||||
"DESC": "Ran into an issue with the GPU. Please read the docs for troubleshooting! ({data})"
|
||||
},
|
||||
"COPY_ERROR": {
|
||||
"TITLE": "Copy Error",
|
||||
"DESC": ""
|
||||
},
|
||||
"OPEN_DOCS": "Open Docs",
|
||||
"TROUBLESHOOT": "Troubleshoot",
|
||||
"READ_WRITE_ERROR": {
|
||||
"TITLE": "Read/Write Error",
|
||||
"DESC": "Make sure that the path is correct and you have proper read/write permissions \n({data})"
|
||||
},
|
||||
"TILE_SIZE_ERROR": {
|
||||
"TITLE": "Error",
|
||||
"DESC": "The tile size is wrong. Please change the tile size in the settings or set to 0 ({data})"
|
||||
},
|
||||
"EXCEPTION_ERROR": {
|
||||
"TITLE": "Exception Error",
|
||||
"DESC": "Upscayl encountered an error. Possibly, the upscayl binary failed to execute the commands properly. Try checking the logs to see if you get any information. You can post an issue on Upscayl's GitHub repository for more help."
|
||||
},
|
||||
"GENERIC_ERROR": {
|
||||
"TITLE": "Error"
|
||||
},
|
||||
"INVALID_IMAGE_ERROR": {
|
||||
"TITLE": "Invalid Image",
|
||||
"DESC": "Please select an image with a valid extension like PNG, JPG, JPEG, or WEBP.",
|
||||
"DRAG_DESC": "Please drag and drop an image"
|
||||
},
|
||||
"NO_IMAGE_ERROR": {
|
||||
"TITLE": "No image selected",
|
||||
"DESC": "Please select an image to upscale"
|
||||
},
|
||||
"IMAGE_SCALE_WARN": {
|
||||
"PERF_ISSUE": "Anything above 5X may cause performance issues on some devices!",
|
||||
"PERF_ISSUE_DEVICE": "This may cause performance issues on some devices!"
|
||||
},
|
||||
"ISSUE_CHECK": {
|
||||
"TITLE": "Having issues?",
|
||||
"GET_HELP": "🙏 GET HELP",
|
||||
"EMAIL_DEV": "📧 EMAIL DEVELOPER"
|
||||
}
|
||||
"SLIDER": {
|
||||
"ORIGINAL_TITLE": "Original",
|
||||
"UPSCAYLED_TITLE": "Upscayled"
|
||||
},
|
||||
"UPSCAYL_CLOUD": {
|
||||
"COMING_SOON": "Coming soon!",
|
||||
"CATCHY_PHRASE_1": "No more errors, hardware issues, quality compromises or long loading times!",
|
||||
"CATCHY_PHRASE_2": "🌐 Upscayl anywhere, anytime, any device\n☁️ No Graphics Card or hardware required\n👩 Face Enhancement\n🦋 10+ models to choose from\n🏎 5x faster than Upscayl Desktop\n🎞 Video Upscaling\n💰 Commercial Usage\n😴 Upscayl while you sleep",
|
||||
"ALREADY_REGISTERED": "Thank you {name}! It seems that your email has already been registered :D If that's not the case, please try again.",
|
||||
"ADD_SUCCESS": "Thank you for joining the waitlist! We will notify you when Upscayl Cloud is ready for you.",
|
||||
"INCORRECT_FIELDS": "Please fill in all the fields correctly.",
|
||||
"JOIN_WAITLIST": "Join the waitlist",
|
||||
"DONT_SHOW_AGAIN": "DON'T SHOW AGAIN"
|
||||
"DIALOG_BOX": {
|
||||
"CLOSE": "Close"
|
||||
}
|
||||
},
|
||||
"ERRORS": {
|
||||
"GPU_ERROR": {
|
||||
"TITLE": "GPU Error",
|
||||
"DESCRIPTION": "Ran into an issue with the GPU. Please read the docs for troubleshooting! ({data})"
|
||||
},
|
||||
"COPY_ERROR": {
|
||||
"TITLE": "Copy Error",
|
||||
"DESCRIPTION": ""
|
||||
},
|
||||
"READ_WRITE_ERROR": {
|
||||
"TITLE": "Read/Write Error",
|
||||
"DESCRIPTION": "Make sure that the path is correct and you have proper read/write permissions \n({data})"
|
||||
},
|
||||
"TILE_SIZE_ERROR": {
|
||||
"TITLE": "Error",
|
||||
"DESCRIPTION": "The tile size is wrong. Please change the tile size in the settings or set to 0 ({data})"
|
||||
},
|
||||
"EXCEPTION_ERROR": {
|
||||
"TITLE": "Exception Error",
|
||||
"DESCRIPTION": "Upscayl encountered an error. Possibly, the upscayl binary failed to execute the commands properly. Try checking the logs to see if you get any information. You can post an issue on Upscayl's GitHub repository for more help."
|
||||
},
|
||||
"GENERIC_ERROR": {
|
||||
"TITLE": "Error"
|
||||
},
|
||||
"INVALID_IMAGE_ERROR": {
|
||||
"TITLE": "Invalid Image",
|
||||
"DESCRIPTION": "Please select an image with a valid extension like PNG, JPG, JPEG, or WEBP.",
|
||||
"ADDITIONAL_DESCRIPTION": "Please drag and drop an image"
|
||||
},
|
||||
"NO_IMAGE_ERROR": {
|
||||
"TITLE": "No image selected",
|
||||
"DESCRIPTION": "Please select an image to upscale"
|
||||
},
|
||||
"OPEN_DOCS_TITLE": "Open Docs",
|
||||
"OPEN_DOCS_BUTTON_TITLE": "Troubleshoot"
|
||||
},
|
||||
"UPSCAYL_CLOUD": {
|
||||
"COMING_SOON": "Coming soon!",
|
||||
"CATCHY_PHRASE_1": "No more errors, hardware issues, quality compromises or long loading times!",
|
||||
"CATCHY_PHRASE_2": "🌐 Upscayl anywhere, anytime, any device\n☁️ No Graphics Card or hardware required\n👩 Face Enhancement\n🦋 10+ models to choose from\n🏎 5x faster than Upscayl Desktop\n🎞 Video Upscaling\n💰 Commercial Usage\n😴 Upscayl while you sleep",
|
||||
"ALREADY_REGISTERED_ALERT": "Thank you {name}! It seems that your email has already been registered :D If that's not the case, please try again.",
|
||||
"ADD_SUCCESS": "Thank you for joining the waitlist! We will notify you when Upscayl Cloud is ready for you.",
|
||||
"INCORRECT_FIELDS_ALERT": "Please fill in all the fields correctly.",
|
||||
"JOIN_WAITLIST": "Join the waitlist",
|
||||
"DONT_SHOW_AGAIN": "DON'T SHOW AGAIN"
|
||||
}
|
||||
}
|
||||
|
@ -1,217 +1,210 @@
|
||||
{
|
||||
"TITLE": "Upscayl",
|
||||
"INTRO": "Представляем Upscayl Cloud!",
|
||||
"HEADER": {
|
||||
"GITHUB_BUTTON_TITLE": "Оцените нас на GitHub 😁",
|
||||
"DESCRIPTION": "AI увеличитель изображений"
|
||||
},
|
||||
"FOOTER": {
|
||||
"NEWS_TITLE": "НОВОСТИ UPSCAYL",
|
||||
"COPYRIGHT": "Авторское право ©",
|
||||
"TITLE": "От ",
|
||||
"LINK_TITLE": "Команда Upscayl"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "НАСТРОЙКИ",
|
||||
"CHANGE_LANGUAGE": { "TITLE": "Сменить язык" },
|
||||
"IMAGE_COMPRESSION": {
|
||||
"TITLE": "Сжатие изображения",
|
||||
"DESCRIPTION": "Сжатие PNG без потерь, поэтому размер файла может не значительно уменьшиться, а более высокие значения сжатия могут повлиять на производительность. Сжатие JPG и WebP с потерями."
|
||||
},
|
||||
"CUSTOM_MODELS": {
|
||||
"TITLE": "ДОБАВИТЬ ПОЛЬЗОВАТЕЛЬСКИЕ МОДЕЛИ",
|
||||
"BUTTON_FOLDER": "Выбрать папку",
|
||||
"DESCRIPTION": "Вы можете легко добавить свои модели. Для получения дополнительной информации:",
|
||||
"LINK_TITLE": "Репозиторий пользовательских моделей"
|
||||
},
|
||||
"CUSTOM_INPUT_RESOLUTION": {
|
||||
"TITLE": "ПОЛЬЗОВАТЕЛЬСКАЯ ШИРИНА ВЫХОДА",
|
||||
"RESTART": "ТРЕБУЕТСЯ ПЕРЕЗАПУСК",
|
||||
"DESCRIPTION": "Используйте пользовательскую ширину для выходных изображений. Высота будет скорректирована автоматически. Включение этой функции заменит настройку масштаба."
|
||||
},
|
||||
"DONATE": {
|
||||
"DESCRIPTION": "Если вам нравится то, что мы делаем :)",
|
||||
"BUTTON_TITLE": "💎 ПОЖЕРТВОВАТЬ"
|
||||
},
|
||||
"GPU_ID_INPUT": {
|
||||
"TITLE": "ID GPU",
|
||||
"DESCRIPTION": "Пожалуйста, прочитайте документацию Upscayl для получения дополнительной информации.",
|
||||
"ADDITIONAL_DESCRIPTION": "Включите режим производительности на Windows для лучших результатов."
|
||||
},
|
||||
"IMAGE_FORMAT": {
|
||||
"TITLE": "СОХРАНИТЬ ИЗОБРАЖЕНИЕ КАК",
|
||||
"PNG": "PNG",
|
||||
"JPG": "JPG",
|
||||
"WEBP": "WEBP"
|
||||
},
|
||||
"IMAGE_SCALE": {
|
||||
"TITLE": "Масштаб изображения",
|
||||
"IMAGE_SCALED_BY": "МАСШТАБ ИЗОБРАЖЕНИЯ ({scale}X)",
|
||||
"DESCRIPTION": "Любое значение выше 4X (кроме 16X Double Upscayl) только изменяет размер изображения и не использует AI-увеличение.",
|
||||
"WARNING": "Любое значение выше 5X может вызвать проблемы с производительностью на некоторых устройствах!",
|
||||
"ADDITIONAL_WARNING": "Это может вызвать проблемы с производительностью на некоторых устройствах!"
|
||||
},
|
||||
"LOG_AREA": {
|
||||
"ON_COPY": "СКОПИРОВАНО ✅",
|
||||
"BUTTON_TITLE": "СКОПИРОВАТЬ ЛОГИ 📋",
|
||||
"NO_LOGS": "Нет логов для отображения"
|
||||
},
|
||||
"OVERWRITE_TOGGLE": {
|
||||
"TITLE": "ПЕРЕЗАПИСАТЬ ПРЕДЫДУЩЕЕ УВЕЛИЧЕНИЕ",
|
||||
"DESCRIPTION": "Если включено, Upscayl снова обработает изображение вместо того, чтобы загружать его напрямую."
|
||||
},
|
||||
"RESET_SETTINGS": {
|
||||
"BUTTON_TITLE": "СБРОСИТЬ UPSCAYL",
|
||||
"ALERT": "Upscayl был сброшен. Пожалуйста, перезапустите приложение."
|
||||
},
|
||||
"SAVE_OUTPUT_FOLDER": {
|
||||
"TITLE": "СОХРАНИТЬ ПАПКУ ВЫВОДА",
|
||||
"DESCRIPTION": "Если включено, папка вывода будет запоминаться между сеансами."
|
||||
},
|
||||
"THEME": {
|
||||
"TITLE": "ТЕМА UPSCAYL"
|
||||
},
|
||||
"LANGUAGE": {
|
||||
"TITLE": "ЯЗЫК UPSCAYL"
|
||||
},
|
||||
"CUSTOM_TILE_SIZE": {
|
||||
"TITLE": "ПОЛЬЗОВАТЕЛЬСКИЙ РАЗМЕР ПЛИТКИ",
|
||||
"DESCRIPTION": "Используйте пользовательский размер плитки для сегментации изображения. Это может помочь ускорить обработку изображений за счет уменьшения количества генерируемых плиток."
|
||||
},
|
||||
"TURN_OFF_NOTIFICATIONS": {
|
||||
"TITLE": "ВЫКЛЮЧИТЬ УВЕДОМЛЕНИЯ",
|
||||
"DESCRIPTION": "Если включено, Upscayl не будет отправлять системные уведомления о завершении или ошибках."
|
||||
},
|
||||
"SUPPORT": {
|
||||
"TITLE": "Возникли проблемы?",
|
||||
"DOCS_BUTTON_TITLE": "🙏 ПОЛУЧИТЬ ПОМОЩЬ",
|
||||
"EMAIL_BUTTON_TITLE": "📧 НАПИСАТЬ РАЗРАБОТЧИКУ"
|
||||
}
|
||||
},
|
||||
"APP": {
|
||||
"TITLE": "Upscayl",
|
||||
"INTRO": "Представляем Upscayl Cloud!",
|
||||
"HEADER": {
|
||||
"GITHUB_STAR_TT_INFO": "Поставьте нам звезду на GitHub 😁",
|
||||
"APP_INFO": "Улучшение изображений с помощью ИИ"
|
||||
"BATCH_MODE": {
|
||||
"TITLE": "Пакетное увеличение",
|
||||
"DESCRIPTION": "Это позволит вам увеличить все файлы в папке сразу"
|
||||
},
|
||||
"FOOTER": {
|
||||
"NEWS_TITLE": "НОВОСТИ UPSCAYL",
|
||||
"COPYRIGHT": "Авторское право ©",
|
||||
"BY": "От ",
|
||||
"APP_TEAM": "Команда Upscayl"
|
||||
"FILE_SELECTION": {
|
||||
"TITLE": "Шаг 1",
|
||||
"BATCH_MODE_TYPE": "Выбрать папку",
|
||||
"SINGLE_MODE_TYPE": "Выбрать изображение"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "НАСТРОЙКИ",
|
||||
"CHANGE_LANG": "Изменить язык"
|
||||
"MODEL_SELECTION": {
|
||||
"TITLE": "Шаг 2",
|
||||
"DESCRIPTION": "Выберите модель"
|
||||
},
|
||||
"INFOS": {
|
||||
"IMAGE_PROCESSING": {
|
||||
"START": "Обработка изображения...",
|
||||
"SCALE_CONVERT": "Масштабирование и конвертация изображения...",
|
||||
"WAIT": "Подождите...",
|
||||
"SUCCESS": "Upscayl выполнен успешно!",
|
||||
"BATCH": {
|
||||
"SELECT": "Выбранная папка:",
|
||||
"DONE": "Все готово!",
|
||||
"OPEN_DONE_FOLDER": "Открыть папку с Upscayl"
|
||||
}
|
||||
},
|
||||
"COMPARISION": {
|
||||
"SLIDER_ORIGINAL": "Оригинал",
|
||||
"SLIDER_PROCESSED": "Upscayl"
|
||||
},
|
||||
"IMAGE_COMPRESSION": {
|
||||
"TITLE": "Сжатие изображения ({compression}%)",
|
||||
"LOSSLESS_TIP": "Сжатие PNG без потерь, поэтому размер файла может не уменьшиться значительно, а более высокие значения сжатия могут повлиять на производительность. Сжатие JPG и WebP с потерями."
|
||||
},
|
||||
"CUSTOM_MODELS": {
|
||||
"ADD": "ДОБАВИТЬ СОБСТВЕННЫЕ МОДЕЛИ",
|
||||
"SELECT_FOLDER": "Выбрать папку",
|
||||
"INFO": "Вы можете легко добавить свои модели. Для получения дополнительной информации:",
|
||||
"LINK_TEXT": "Репозиторий пользовательских моделей"
|
||||
},
|
||||
"CUSTOM_INPUT_RESOLUTION": {
|
||||
"WIDTH": "ПОЛЬЗОВАТЕЛЬСКАЯ ШИРИНА ВЫВОДА",
|
||||
"RESTART": "ТРЕБУЕТСЯ ПЕРЕЗАГРУЗКА",
|
||||
"CUSTOM_WIDTH_TIP": "Используйте пользовательскую ширину для выходных изображений. Высота будет скорректирована автоматически. Включение этой опции отменит настройку масштаба."
|
||||
},
|
||||
"DONATE": {
|
||||
"IF_LIKED": "Если вам нравится то, что мы делаем :)",
|
||||
"DONATE": "💎 ПОЖЕРТВОВАТЬ"
|
||||
},
|
||||
"GPU_ID_INPUT": {
|
||||
"ID": "ID GPU",
|
||||
"READ_DOCS": "Пожалуйста, ознакомьтесь с документацией Upscayl для получения дополнительной информации.",
|
||||
"ENABLE_PERF_MODE": "Включите режим производительности в Windows для улучшения результатов."
|
||||
},
|
||||
"IMAGE_FORMAT": {
|
||||
"SAVE_AS": "СОХРАНИТЬ ИЗОБРАЖЕНИЕ КАК",
|
||||
"PNG": "PNG",
|
||||
"JPG": "JPG",
|
||||
"WEBP": "WEBP"
|
||||
},
|
||||
"IMAGE_SCALE": {
|
||||
"TITLE": "Масштаб изображения",
|
||||
"TITLE_CAPS": "МАСШТАБ ИЗОБРАЖЕНИЯ",
|
||||
"SCALES_TIMES": "({scale}X)",
|
||||
"AI_UPSCALE_RESIZE_INFO": "Все, что выше 4X (кроме 16X Double Upscayl), только изменяет размер изображения и не использует улучшение с помощью ИИ."
|
||||
},
|
||||
"LOG_AREA": {
|
||||
"ON_COPY": "СКОПИРОВАНО ✅",
|
||||
"COPY": "СКОПИРОВАТЬ ЛОГИ 📋",
|
||||
"NO_LOGS": "Нет логов для отображения"
|
||||
},
|
||||
"OVERWRITE_TOGGLE": {
|
||||
"OW_PREV": "ПЕРЕЗАПИСАТЬ ПРЕДЫДУЩИЙ UPSCALE",
|
||||
"OW_TIP": "Если включено, Upscayl обработает изображение заново, вместо загрузки его напрямую."
|
||||
},
|
||||
"RESET_SETTINGS": {
|
||||
"TITLE": "СБРОС UPSCAYL",
|
||||
"ON_RESET": "Upscayl был сброшен. Пожалуйста, перезапустите приложение."
|
||||
},
|
||||
"SAVE_OUTPUT_FOLDER": {
|
||||
"TITLE": "СОХРАНИТЬ ПАПКУ ВЫВОДА",
|
||||
"DESC": "Если включено, папка вывода будет запомнена между сеансами."
|
||||
},
|
||||
"THEME": {
|
||||
"TITLE": "ТЕМА UPSCAYL"
|
||||
},
|
||||
"LANGUAGE": {
|
||||
"TITLE": "ЯЗЫК UPSCAYL"
|
||||
},
|
||||
"CUSTOM_TILE_SIZE": {
|
||||
"TITLE": "ПОЛЬЗОВАТЕЛЬСКИЙ РАЗМЕР ПЛИТКИ",
|
||||
"DESC": "Используйте пользовательский размер плитки для сегментации изображения. Это может помочь ускорить обработку изображений за счет уменьшения количества создаваемых плиток."
|
||||
},
|
||||
"TURN_OFF_NOTIFICATIONS": {
|
||||
"TITLE": "ОТКЛЮЧИТЬ УВЕДОМЛЕНИЯ",
|
||||
"DESC": "Если включено, Upscayl не будет отправлять системные уведомления о успехе или неудаче."
|
||||
},
|
||||
"DIALOG_BOX": {
|
||||
"CLOSE": "Закрыть"
|
||||
},
|
||||
"LEFT_PANE_PROCESS": {
|
||||
"BATCH": {
|
||||
"TITLE": "Массовый Upscayl",
|
||||
"TT_INFO": "Это позволит вам обработать все файлы в папке сразу"
|
||||
},
|
||||
"STEP_1": {
|
||||
"TITLE": "Шаг 1",
|
||||
"BATCH_YES": "Выбрать папку",
|
||||
"BATCH_NO": "Выбрать изображение"
|
||||
},
|
||||
"STEP_2": {
|
||||
"TITLE": "Шаг 2",
|
||||
"SELECT_MODEL": "Выбрать модель"
|
||||
},
|
||||
"DOUBLE_UPSCAYL": {
|
||||
"TITLE": "Двойной Upscayl",
|
||||
"TT_INFO": "Включите эту опцию, чтобы дважды обработать изображение с помощью Upscayl. Обратите внимание, что это может значительно увеличить время обработки и возможные проблемы с производительностью при масштабах больше 4X."
|
||||
},
|
||||
"STEP_3": {
|
||||
"TITLE": "Шаг 3",
|
||||
"MACOS_RESTRICTION_ALERT": "Из-за ограничений безопасности App Store на MacOS, Upscayl требует, чтобы вы выбирали папку вывода каждый раз при запуске.\n\nЧтобы избежать этого, вы можете навсегда сохранить папку вывода по умолчанию во вкладке 'Настройки' Upscayl.",
|
||||
"NOT_SELECTED": "Не выбрано",
|
||||
"DEFAULT_IMG_PATH": "По умолчанию путь изображения",
|
||||
"DEFAULT_FOLDER_PATH": "По умолчанию путь папки",
|
||||
"SET_OUTPUT_FOLDER": "Установить папку вывода"
|
||||
},
|
||||
"STEP_4": {
|
||||
"TITLE": "Шаг 4",
|
||||
"UPSCAYL_FROM": "Upscayl с ",
|
||||
"UPSCAYL_TO": " до ",
|
||||
"FOLDER_ALERT": "Пожалуйста, сначала выберите папку вывода",
|
||||
"PROCESS_START": "Upscayl",
|
||||
"PROCESS_IN_PROGRESS": "Upscayling⏳"
|
||||
}
|
||||
},
|
||||
"IMAGE_OPTIONS": {
|
||||
"RESET": "Сбросить изображение",
|
||||
"LENS_VIEW": "Вид через линзу",
|
||||
"SLIDER_VIEW": "Просмотр через слайдер",
|
||||
"ZOOM_AMOUNT": "Увеличение",
|
||||
"LENS_SIZE": "Размер линзы"
|
||||
},
|
||||
"PROGRESS_BAR": {
|
||||
"IN_PROGRESS": "Массовый Upscayl в процессе:",
|
||||
"PROGRESS_CATCHY": "Происходит магия Upscayl...",
|
||||
"STOP": "ОСТАНОВИТЬ"
|
||||
},
|
||||
"RESET": "Сброс",
|
||||
"RIGHT_PANE_INFO": {
|
||||
"SELECT_FOLDER": "Выберите папку для Upscayl",
|
||||
"SELECT_IMAGE": "Выберите изображение для Upscayl",
|
||||
"NOTE_SPECIFIC_FORMATS_IN_FOLDER": "Убедитесь, что в папке нет ничего, кроме изображений форматов PNG, JPG, JPEG и WEBP.",
|
||||
"SELECT_IMAGES": "Выберите или перетащите изображение формата PNG, JPG, JPEG или WEBP.",
|
||||
"APP_VERSION": "Upscayl v{version}"
|
||||
"DOUBLE_UPSCAYL": {
|
||||
"TITLE": "Двойное увеличение",
|
||||
"DESCRIPTION": "Включите эту опцию, чтобы дважды увеличить изображение. Обратите внимание, что это может значительно увеличить время обработки и, возможно, вызвать проблемы с производительностью для масштабов больше 4X."
|
||||
},
|
||||
"OUTPUT_PATH_SELECTION": {
|
||||
"TITLE": "Шаг 3",
|
||||
"MAC_APP_STORE_ALERT": "Из-за ограничений безопасности MacOS App Store Upscayl требует выбора папки вывода каждый раз при запуске.\n\nЧтобы избежать этого, вы можете навсегда сохранить папку вывода по умолчанию на вкладке «Настройки» Upscayl.",
|
||||
"NOT_SELECTED": "Не выбрано",
|
||||
"DEFAULT_IMG_PATH": "По умолчанию путь изображения",
|
||||
"DEFAULT_FOLDER_PATH": "По умолчанию путь папки",
|
||||
"BUTTON_TITLE": "Установить папку вывода"
|
||||
},
|
||||
"SCALE_SELECTION": {
|
||||
"TITLE": "Шаг 4",
|
||||
"FROM_TITLE": "Увеличить с ",
|
||||
"TO_TITLE": " до ",
|
||||
"NO_OUTPUT_FOLDER_ALERT": "Пожалуйста, сначала выберите папку вывода",
|
||||
"START_BUTTON_TITLE": "Увеличить",
|
||||
"IN_PROGRESS_BUTTON_TITLE": "Увеличение⏳"
|
||||
},
|
||||
"IMAGE_OPTIONS": {
|
||||
"RESET_BUTTON_TITLE": "Сбросить изображение",
|
||||
"LENS_VIEW_TITLE": "Просмотр через линзу",
|
||||
"SLIDER_VIEW_TITLE": "Просмотр с ползунком",
|
||||
"ZOOM_AMOUNT_TITLE": "Увеличение",
|
||||
"LENS_SIZE_TITLE": "Размер линзы"
|
||||
},
|
||||
"PROGRESS_BAR": {
|
||||
"BATCH_UPSCAYL_IN_PROGRESS_TITLE": "Пакетное увеличение в процессе:",
|
||||
"IN_PROGRESS_TITLE": "Магия увеличения в процессе...",
|
||||
"STOP_BUTTON_TITLE": "СТОП"
|
||||
},
|
||||
"RESET_BUTTON_TITLE": "Сбросить",
|
||||
"RIGHT_PANE_INFO": {
|
||||
"SELECT_FOLDER": "Выберите папку для увеличения",
|
||||
"SELECT_IMAGE": "Выберите изображение для увеличения",
|
||||
"SELECT_FOLDER_DESCRIPTION": "Убедитесь, что в папке нет ничего, кроме изображений PNG, JPG, JPEG и WEBP.",
|
||||
"SELECT_IMAGES_DESCRIPTION": "Выберите или перетащите изображение в формате PNG, JPG, JPEG или WEBP."
|
||||
},
|
||||
"PROGRESS": {
|
||||
"PROCESSING_TITLE": "Обработка изображения...",
|
||||
"SCALING_CONVERTING_TITLE": "Масштабирование и конвертация изображения...",
|
||||
"WAIT_TITLE": "Пожалуйста, подождите...",
|
||||
"SUCCESS_TITLE": "Увеличение успешно!",
|
||||
"BATCH": {
|
||||
"SELECTED_FOLDER_TITLE": "Выбранная папка:",
|
||||
"DONE_TITLE": "Все готово!",
|
||||
"OPEN_UPSCAYLED_FOLDER_TITLE": "Открыть папку с увеличенными изображениями"
|
||||
}
|
||||
},
|
||||
"ERRORS": {
|
||||
"GPU_ERROR": {
|
||||
"TITLE": "Ошибка GPU",
|
||||
"DESC": "Произошла ошибка с GPU. Пожалуйста, ознакомьтесь с документацией для устранения неполадок! ({data})"
|
||||
},
|
||||
"COPY_ERROR": {
|
||||
"TITLE": "Ошибка копирования",
|
||||
"DESC": ""
|
||||
},
|
||||
"OPEN_DOCS": "Открыть документацию",
|
||||
"TROUBLESHOOT": "Устранение неполадок",
|
||||
"READ_WRITE_ERROR": {
|
||||
"TITLE": "Ошибка чтения/записи",
|
||||
"DESC": "Убедитесь, что путь указан правильно и у вас есть соответствующие права на чтение/запись \n({data})"
|
||||
},
|
||||
"TILE_SIZE_ERROR": {
|
||||
"TITLE": "Ошибка",
|
||||
"DESC": "Неправильный размер плитки. Пожалуйста, измените размер плитки в настройках или установите на 0 ({data})"
|
||||
},
|
||||
"EXCEPTION_ERROR": {
|
||||
"TITLE": "Ошибка исключения",
|
||||
"DESC": "Upscayl столкнулся с ошибкой. Возможно, двоичный файл upscayl не смог правильно выполнить команды. Попробуйте проверить логи, чтобы получить информацию. Вы можете создать запрос в репозитории Upscayl на GitHub для получения дополнительной помощи."
|
||||
},
|
||||
"GENERIC_ERROR": {
|
||||
"TITLE": "Ошибка"
|
||||
},
|
||||
"INVALID_IMAGE_ERROR": {
|
||||
"TITLE": "Недопустимое изображение",
|
||||
"DESC": "Пожалуйста, выберите изображение с допустимым расширением, таким как PNG, JPG, JPEG или WEBP.",
|
||||
"DRAG_DESC": "Пожалуйста, перетащите изображение"
|
||||
},
|
||||
"NO_IMAGE_ERROR": {
|
||||
"TITLE": "Изображение не выбрано",
|
||||
"DESC": "Пожалуйста, выберите изображение для улучшения"
|
||||
},
|
||||
"IMAGE_SCALE_WARN": {
|
||||
"PERF_ISSUE": "Масштабирование более чем на 5X может вызвать проблемы с производительностью на некоторых устройствах!",
|
||||
"PERF_ISSUE_DEVICE": "Это может вызвать проблемы с производительностью на некоторых устройствах!"
|
||||
},
|
||||
"ISSUE_CHECK": {
|
||||
"TITLE": "Возникли проблемы?",
|
||||
"GET_HELP": "🙏 ПОЛУЧИТЕ ПОМОЩЬ",
|
||||
"EMAIL_DEV": "📧 НАПИСАТЬ РАЗРАБОТЧИКУ"
|
||||
}
|
||||
"SLIDER": {
|
||||
"ORIGINAL_TITLE": "Оригинал",
|
||||
"UPSCAYLED_TITLE": "Увеличено"
|
||||
},
|
||||
"UPSCAYL_CLOUD": {
|
||||
"COMING_SOON": "Скоро будет доступно!",
|
||||
"CATCHY_PHRASE_1": "Больше никаких ошибок, проблем с оборудованием, компромиссов по качеству или долгих загрузок!",
|
||||
"CATCHY_PHRASE_2": "🌐 Upscayl везде, в любое время, на любом устройстве\n☁️ Не требуется видеокарта или оборудование\n👩 Улучшение лица\n🦋 Более 10 моделей на выбор\n🏎 В 5 раз быстрее, чем Upscayl Desktop\n🎞 Улучшение видео\n💰 Коммерческое использование\n😴 Upscayl, пока вы спите",
|
||||
"ALREADY_REGISTERED": "Спасибо {name}! Похоже, ваш email уже зарегистрирован :D Если это не так, попробуйте снова.",
|
||||
"ADD_SUCCESS": "Спасибо за участие в списке ожидания! Мы уведомим вас, когда Upscayl Cloud будет готов для вас.",
|
||||
"INCORRECT_FIELDS": "Пожалуйста, заполните все поля правильно.",
|
||||
"JOIN_WAITLIST": "Присоединиться к списку ожидания",
|
||||
"DONT_SHOW_AGAIN": "БОЛЬШЕ НЕ ПОКАЗЫВАТЬ"
|
||||
"DIALOG_BOX": {
|
||||
"CLOSE": "Закрыть"
|
||||
}
|
||||
},
|
||||
"ERRORS": {
|
||||
"GPU_ERROR": {
|
||||
"TITLE": "Ошибка GPU",
|
||||
"DESCRIPTION": "Произошла проблема с GPU. Пожалуйста, прочитайте документацию для устранения неполадок! ({data})"
|
||||
},
|
||||
"COPY_ERROR": {
|
||||
"TITLE": "Ошибка копирования",
|
||||
"DESCRIPTION": ""
|
||||
},
|
||||
"READ_WRITE_ERROR": {
|
||||
"TITLE": "Ошибка чтения/записи",
|
||||
"DESCRIPTION": "Убедитесь, что путь указан правильно и у вас есть необходимые права на чтение/запись \n({data})"
|
||||
},
|
||||
"TILE_SIZE_ERROR": {
|
||||
"TITLE": "Ошибка",
|
||||
"DESCRIPTION": "Неправильный размер плитки. Пожалуйста, измените размер плитки в настройках или установите значение 0 ({data})"
|
||||
},
|
||||
"EXCEPTION_ERROR": {
|
||||
"TITLE": "Ошибка исключения",
|
||||
"DESCRIPTION": "Upscayl столкнулся с ошибкой. Возможно, двоичный файл upscayl не смог правильно выполнить команды. Попробуйте проверить логи, чтобы узнать больше информации. Вы можете оставить запрос в репозитории GitHub Upscayl для получения дополнительной помощи."
|
||||
},
|
||||
"GENERIC_ERROR": {
|
||||
"TITLE": "Ошибка"
|
||||
},
|
||||
"INVALID_IMAGE_ERROR": {
|
||||
"TITLE": "Неверное изображение",
|
||||
"DESCRIPTION": "Пожалуйста, выберите изображение с правильным расширением, таким как PNG, JPG, JPEG или WEBP.",
|
||||
"ADDITIONAL_DESCRIPTION": "Пожалуйста, перетащите изображение"
|
||||
},
|
||||
"NO_IMAGE_ERROR": {
|
||||
"TITLE": "Изображение не выбрано",
|
||||
"DESCRIPTION": "Пожалуйста, выберите изображение для увеличения"
|
||||
},
|
||||
"OPEN_DOCS_TITLE": "Открыть документацию",
|
||||
"OPEN_DOCS_BUTTON_TITLE": "Устранение неполадок"
|
||||
},
|
||||
"UPSCAYL_CLOUD": {
|
||||
"COMING_SOON": "Скоро будет доступно!",
|
||||
"CATCHY_PHRASE_1": "Больше никаких ошибок, проблем с оборудованием, компромиссов в качестве или долгих загрузок!",
|
||||
"CATCHY_PHRASE_2": "🌐 Upscayl где угодно, в любое время, на любом устройстве\n☁️ Не требуется видеокарта или оборудование\n👩 Улучшение лиц\n🦋 Более 10 моделей на выбор\n🏎 В 5 раз быстрее, чем настольная версия Upscayl\n🎞 Увеличение видео\n💰 Коммерческое использование\n😴 Увеличивайте, пока спите",
|
||||
"ALREADY_REGISTERED_ALERT": "Спасибо, {name}! Похоже, ваш email уже зарегистрирован :D Если это не так, пожалуйста, попробуйте снова.",
|
||||
"ADD_SUCCESS": "Спасибо за присоединение к списку ожидания! Мы уведомим вас, когда Upscayl Cloud будет готов для вас.",
|
||||
"INCORRECT_FIELDS_ALERT": "Пожалуйста, правильно заполните все поля.",
|
||||
"JOIN_WAITLIST": "Присоединиться к списку ожидания",
|
||||
"DONT_SHOW_AGAIN": "БОЛЬШЕ НЕ ПОКАЗЫВАТЬ"
|
||||
}
|
||||
}
|
||||
|
210
renderer/locales/zh.json
Normal file
210
renderer/locales/zh.json
Normal file
@ -0,0 +1,210 @@
|
||||
{
|
||||
"TITLE": "Upscayl",
|
||||
"INTRO": "介绍 Upscayl 云端!",
|
||||
"HEADER": {
|
||||
"GITHUB_BUTTON_TITLE": "在 GitHub 上给我们加星 😁",
|
||||
"DESCRIPTION": "AI 图片放大工具"
|
||||
},
|
||||
"FOOTER": {
|
||||
"NEWS_TITLE": "UPSCAYL 新闻",
|
||||
"COPYRIGHT": "版权所有 ©",
|
||||
"TITLE": "由 ",
|
||||
"LINK_TITLE": "Upscayl 团队"
|
||||
},
|
||||
"SETTINGS": {
|
||||
"TITLE": "设置",
|
||||
"CHANGE_LANGUAGE": { "TITLE": "更改语言" },
|
||||
"IMAGE_COMPRESSION": {
|
||||
"TITLE": "图片压缩",
|
||||
"DESCRIPTION": "PNG 压缩是无损的,因此可能不会显著减少文件大小,而更高的压缩值可能会影响性能。JPG 和 WebP 压缩是有损的。"
|
||||
},
|
||||
"CUSTOM_MODELS": {
|
||||
"TITLE": "添加自定义模型",
|
||||
"BUTTON_FOLDER": "选择文件夹",
|
||||
"DESCRIPTION": "您可以轻松添加自己的模型。详情请见:",
|
||||
"LINK_TITLE": "自定义模型库"
|
||||
},
|
||||
"CUSTOM_INPUT_RESOLUTION": {
|
||||
"TITLE": "自定义输出宽度",
|
||||
"RESTART": "需要重启",
|
||||
"DESCRIPTION": "使用自定义宽度生成输出图片,高度将自动调整。启用此选项将覆盖缩放设置。"
|
||||
},
|
||||
"DONATE": {
|
||||
"DESCRIPTION": "如果您喜欢我们做的事情 :)",
|
||||
"BUTTON_TITLE": "💎 捐赠"
|
||||
},
|
||||
"GPU_ID_INPUT": {
|
||||
"TITLE": "GPU ID",
|
||||
"DESCRIPTION": "有关更多信息,请阅读 Upscayl 文档。",
|
||||
"ADDITIONAL_DESCRIPTION": "在 Windows 上启用性能模式以获得更好的效果。"
|
||||
},
|
||||
"IMAGE_FORMAT": {
|
||||
"TITLE": "保存图片为",
|
||||
"PNG": "PNG",
|
||||
"JPG": "JPG",
|
||||
"WEBP": "WEBP"
|
||||
},
|
||||
"IMAGE_SCALE": {
|
||||
"TITLE": "图片缩放",
|
||||
"IMAGE_SCALED_BY": "图片缩放 ({scale}X)",
|
||||
"DESCRIPTION": "超过 4X(除 16X 双重 Upscayl 外)只会调整图片大小,不会使用 AI 放大。",
|
||||
"WARNING": "超过 5X 可能会在某些设备上引发性能问题!",
|
||||
"ADDITIONAL_WARNING": "这可能会导致某些设备上的性能问题!"
|
||||
},
|
||||
"LOG_AREA": {
|
||||
"ON_COPY": "已复制 ✅",
|
||||
"BUTTON_TITLE": "复制日志 📋",
|
||||
"NO_LOGS": "无日志显示"
|
||||
},
|
||||
"OVERWRITE_TOGGLE": {
|
||||
"TITLE": "覆盖以前的放大",
|
||||
"DESCRIPTION": "如果启用,Upscayl 将重新处理图片,而不是直接加载。"
|
||||
},
|
||||
"RESET_SETTINGS": {
|
||||
"BUTTON_TITLE": "重置 UPSCAYL",
|
||||
"ALERT": "Upscayl 已被重置。请重新启动应用程序。"
|
||||
},
|
||||
"SAVE_OUTPUT_FOLDER": {
|
||||
"TITLE": "保存输出文件夹",
|
||||
"DESCRIPTION": "如果启用,输出文件夹将在会话之间被记住。"
|
||||
},
|
||||
"THEME": {
|
||||
"TITLE": "UPSCAYL 主题"
|
||||
},
|
||||
"LANGUAGE": {
|
||||
"TITLE": "UPSCAYL 语言"
|
||||
},
|
||||
"CUSTOM_TILE_SIZE": {
|
||||
"TITLE": "自定义瓦片大小",
|
||||
"DESCRIPTION": "使用自定义瓦片大小对图片进行分割。这样可以通过减少生成的瓦片数量来加快图片处理速度。"
|
||||
},
|
||||
"TURN_OFF_NOTIFICATIONS": {
|
||||
"TITLE": "关闭通知",
|
||||
"DESCRIPTION": "如果启用,Upscayl 将不会在成功或失败时发送任何系统通知。"
|
||||
},
|
||||
"SUPPORT": {
|
||||
"TITLE": "遇到问题?",
|
||||
"DOCS_BUTTON_TITLE": "🙏 获取帮助",
|
||||
"EMAIL_BUTTON_TITLE": "📧 邮件开发者"
|
||||
}
|
||||
},
|
||||
"APP": {
|
||||
"TITLE": "Upscayl",
|
||||
"BATCH_MODE": {
|
||||
"TITLE": "批量 Upscayl",
|
||||
"DESCRIPTION": "这将允许您一次性放大文件夹中的所有文件"
|
||||
},
|
||||
"FILE_SELECTION": {
|
||||
"TITLE": "步骤 1",
|
||||
"BATCH_MODE_TYPE": "选择文件夹",
|
||||
"SINGLE_MODE_TYPE": "选择图片"
|
||||
},
|
||||
"MODEL_SELECTION": {
|
||||
"TITLE": "步骤 2",
|
||||
"DESCRIPTION": "选择模型"
|
||||
},
|
||||
"DOUBLE_UPSCAYL": {
|
||||
"TITLE": "双重 Upscayl",
|
||||
"DESCRIPTION": "启用此选项可对图片进行两次放大。请注意,这可能会显著增加处理时间,并且可能在超过 4X 的缩放比例时导致性能问题。"
|
||||
},
|
||||
"OUTPUT_PATH_SELECTION": {
|
||||
"TITLE": "步骤 3",
|
||||
"MAC_APP_STORE_ALERT": "由于 MacOS 应用商店的安全限制,Upscayl 每次启动时都需要您选择一个输出文件夹。\n\n为避免此情况,您可以在 Upscayl 的“设置”选项卡中永久保存默认输出文件夹。",
|
||||
"NOT_SELECTED": "未选择",
|
||||
"DEFAULT_IMG_PATH": "默认图片路径",
|
||||
"DEFAULT_FOLDER_PATH": "默认文件夹路径",
|
||||
"BUTTON_TITLE": "设置输出文件夹"
|
||||
},
|
||||
"SCALE_SELECTION": {
|
||||
"TITLE": "步骤 4",
|
||||
"FROM_TITLE": "从 Upscayl ",
|
||||
"TO_TITLE": " 到 ",
|
||||
"NO_OUTPUT_FOLDER_ALERT": "请先选择一个输出文件夹",
|
||||
"START_BUTTON_TITLE": "Upscayl",
|
||||
"IN_PROGRESS_BUTTON_TITLE": "正在放大⏳"
|
||||
},
|
||||
"IMAGE_OPTIONS": {
|
||||
"RESET_BUTTON_TITLE": "重置图片",
|
||||
"LENS_VIEW_TITLE": "透镜视图",
|
||||
"SLIDER_VIEW_TITLE": "滑块视图",
|
||||
"ZOOM_AMOUNT_TITLE": "缩放量",
|
||||
"LENS_SIZE_TITLE": "透镜大小"
|
||||
},
|
||||
"PROGRESS_BAR": {
|
||||
"BATCH_UPSCAYL_IN_PROGRESS_TITLE": "批量 Upscayl 进行中:",
|
||||
"IN_PROGRESS_TITLE": "正在进行 Upscayl 魔法...",
|
||||
"STOP_BUTTON_TITLE": "停止"
|
||||
},
|
||||
"RESET_BUTTON_TITLE": "重置",
|
||||
"RIGHT_PANE_INFO": {
|
||||
"SELECT_FOLDER": "选择要 Upscayl 的文件夹",
|
||||
"SELECT_IMAGE": "选择要 Upscayl 的图片",
|
||||
"SELECT_FOLDER_DESCRIPTION": "确保文件夹中只包含 PNG、JPG、JPEG 和 WEBP 图片。",
|
||||
"SELECT_IMAGES_DESCRIPTION": "选择或拖放 PNG、JPG、JPEG 或 WEBP 图片。"
|
||||
},
|
||||
"PROGRESS": {
|
||||
"PROCESSING_TITLE": "正在处理图片...",
|
||||
"SCALING_CONVERTING_TITLE": "正在缩放和转换图片...",
|
||||
"WAIT_TITLE": "请稍等...",
|
||||
"SUCCESS_TITLE": "Upscayl 成功!",
|
||||
"BATCH": {
|
||||
"SELECTED_FOLDER_TITLE": "选择的文件夹:",
|
||||
"DONE_TITLE": "全部完成!",
|
||||
"OPEN_UPSCAYLED_FOLDER_TITLE": "打开已放大的文件夹"
|
||||
}
|
||||
},
|
||||
"SLIDER": {
|
||||
"ORIGINAL_TITLE": "原始",
|
||||
"UPSCAYLED_TITLE": "已放大"
|
||||
},
|
||||
"DIALOG_BOX": {
|
||||
"CLOSE": "关闭"
|
||||
}
|
||||
},
|
||||
"ERRORS": {
|
||||
"GPU_ERROR": {
|
||||
"TITLE": "GPU 错误",
|
||||
"DESCRIPTION": "遇到 GPU 问题。请阅读文档以进行故障排除!({data})"
|
||||
},
|
||||
"COPY_ERROR": {
|
||||
"TITLE": "复制错误",
|
||||
"DESCRIPTION": ""
|
||||
},
|
||||
"READ_WRITE_ERROR": {
|
||||
"TITLE": "读/写错误",
|
||||
"DESCRIPTION": "确保路径正确并且您拥有适当的读/写权限\n({data})"
|
||||
},
|
||||
"TILE_SIZE_ERROR": {
|
||||
"TITLE": "错误",
|
||||
"DESCRIPTION": "瓦片大小错误。请在设置中更改瓦片大小或设置为 0 ({data})"
|
||||
},
|
||||
"EXCEPTION_ERROR": {
|
||||
"TITLE": "异常错误",
|
||||
"DESCRIPTION": "Upscayl 遇到错误。可能是 Upscayl 二进制文件未能正确执行命令。请检查日志以查看是否有任何信息。您可以在 Upscayl 的 GitHub 仓库中发布问题以获取更多帮助。"
|
||||
},
|
||||
"GENERIC_ERROR": {
|
||||
"TITLE": "错误"
|
||||
},
|
||||
"INVALID_IMAGE_ERROR": {
|
||||
"TITLE": "无效图片",
|
||||
"DESCRIPTION": "请选择一个有效扩展名为 PNG、JPG、JPEG 或 WEBP 的图片。",
|
||||
"ADDITIONAL_DESCRIPTION": "请拖放图片"
|
||||
},
|
||||
"NO_IMAGE_ERROR": {
|
||||
"TITLE": "未选择图片",
|
||||
"DESCRIPTION": "请选择一张图片进行放大"
|
||||
},
|
||||
"OPEN_DOCS_TITLE": "打开文档",
|
||||
"OPEN_DOCS_BUTTON_TITLE": "故障排除"
|
||||
},
|
||||
"UPSCAYL_CLOUD": {
|
||||
"COMING_SOON": "即将推出!",
|
||||
"CATCHY_PHRASE_1": "告别错误、硬件问题、质量妥协或长时间加载!",
|
||||
"CATCHY_PHRASE_2": "🌐 随时随地,任何设备都能 Upscayl\n☁️ 无需显卡或硬件\n👩 面部增强\n🦋 10+ 模型可供选择\n🏎 比 Upscayl 桌面版快 5 倍\n🎞 视频放大\n💰 商业用途\n😴 睡觉时 Upscayl",
|
||||
"ALREADY_REGISTERED_ALERT": "感谢您 {name}!看起来您的邮箱已被注册 :D 如果不是这样,请再试一次。",
|
||||
"ADD_SUCCESS": "感谢您加入候补名单!我们将会在 Upscayl 云端准备就绪时通知您。",
|
||||
"INCORRECT_FIELDS_ALERT": "请正确填写所有字段。",
|
||||
"JOIN_WAITLIST": "加入候补名单",
|
||||
"DONT_SHOW_AGAIN": "不再显示"
|
||||
}
|
||||
}
|
@ -140,21 +140,21 @@ const Home = () => {
|
||||
const handleErrors = (data: string) => {
|
||||
if (data.includes("Invalid GPU")) {
|
||||
toast({
|
||||
title: t("APP.ERRORS.GPU_ERROR.TITLE"),
|
||||
description: t("APP.ERRORS.GPU_ERROR.DESC", { data }),
|
||||
title: t("ERRORS.GPU_ERROR.TITLE"),
|
||||
description: t("ERRORS.GPU_ERROR.DESCRIPTION", { data }),
|
||||
action: (
|
||||
<div className="flex flex-col gap-2">
|
||||
<ToastAction
|
||||
altText={t("APP.ERRORS.COPY_ERROR.TITLE")}
|
||||
altText={t("ERRORS.COPY_ERROR.TITLE")}
|
||||
onClick={() => {
|
||||
navigator.clipboard.writeText(data);
|
||||
}}
|
||||
>
|
||||
{t("APP.ERRORS.COPY_ERROR.TITLE")}
|
||||
{t("ERRORS.COPY_ERROR.TITLE")}
|
||||
</ToastAction>
|
||||
<a href="https://docs.upscayl.org/" target="_blank">
|
||||
<ToastAction altText={t("APP.ERRORS.OPEN_DOCS")}>
|
||||
{t("APP.ERRORS.TROUBLESHOOT")}
|
||||
<ToastAction altText={t("ERRORS.OPEN_DOCS_TITLE")}>
|
||||
{t("ERRORS.OPEN_DOCS_BUTTON_TITLE")}
|
||||
</ToastAction>
|
||||
</a>
|
||||
</div>
|
||||
@ -164,8 +164,8 @@ const Home = () => {
|
||||
} else if (data.includes("write") || data.includes("read")) {
|
||||
if (batchMode) return;
|
||||
toast({
|
||||
title: t("APP.ERRORS.READ_WRITE_ERROR.TITLE"),
|
||||
description: t("APP.ERRORS.READ_WRITE_ERROR.DESC", { data }),
|
||||
title: t("ERRORS.READ_WRITE_ERROR.TITLE"),
|
||||
description: t("ERRORS.READ_WRITE_ERROR.DESCRIPTION", { data }),
|
||||
action: (
|
||||
<div className="flex flex-col gap-2">
|
||||
<ToastAction
|
||||
@ -174,11 +174,11 @@ const Home = () => {
|
||||
navigator.clipboard.writeText(data);
|
||||
}}
|
||||
>
|
||||
{t("APP.ERRORS.COPY_ERROR.TITLE")}
|
||||
{t("ERRORS.COPY_ERROR.TITLE")}
|
||||
</ToastAction>
|
||||
<a href="https://docs.upscayl.org/" target="_blank">
|
||||
<ToastAction altText={t("APP.ERRORS.OPEN_DOCS")}>
|
||||
{t("APP.ERRORS.TROUBLESHOOT")}
|
||||
<ToastAction altText={t("ERRORS.OPEN_DOCS_TITLE")}>
|
||||
{t("ERRORS.OPEN_DOCS_BUTTON_TITLE")}
|
||||
</ToastAction>
|
||||
</a>
|
||||
</div>
|
||||
@ -187,14 +187,14 @@ const Home = () => {
|
||||
resetImagePaths();
|
||||
} else if (data.includes("tile size")) {
|
||||
toast({
|
||||
title: t("APP.ERRORS.TILE_SIZE_ERROR.TITLE"),
|
||||
description: t("APP.ERRORS.TILE_SIZE_ERROR.DESC", { data }),
|
||||
title: t("ERRORS.TILE_SIZE_ERROR.TITLE"),
|
||||
description: t("ERRORS.TILE_SIZE_ERROR.DESCRIPTION", { data }),
|
||||
});
|
||||
resetImagePaths();
|
||||
} else if (data.includes("uncaughtException")) {
|
||||
toast({
|
||||
title: t("APP.ERRORS.EXCEPTION_ERROR.TITLE"),
|
||||
description: t("APP.ERRORS.EXCEPTION_ERROR.DESC"),
|
||||
title: t("ERRORS.EXCEPTION_ERROR.TITLE"),
|
||||
description: t("ERRORS.EXCEPTION_ERROR.DESCRIPTION"),
|
||||
});
|
||||
resetImagePaths();
|
||||
}
|
||||
@ -214,12 +214,12 @@ const Home = () => {
|
||||
});
|
||||
// SCALING AND CONVERTING
|
||||
window.electron.on(COMMAND.SCALING_AND_CONVERTING, (_, data: string) => {
|
||||
setProgress(t("APP.INFOS.IMAGE_PROCESSING.START"));
|
||||
setProgress(t("APP.PROGRESS.PROCESSING_TITLE"));
|
||||
});
|
||||
// UPSCAYL ERROR
|
||||
window.electron.on(COMMAND.UPSCAYL_ERROR, (_, data: string) => {
|
||||
toast({
|
||||
title: t("APP.ERRORS.GENERIC_ERROR.TITLE"),
|
||||
title: t("ERRORS.GENERIC_ERROR.TITLE"),
|
||||
description: data,
|
||||
});
|
||||
resetImagePaths();
|
||||
@ -229,9 +229,9 @@ const Home = () => {
|
||||
if (data.length > 0 && data.length < 10) {
|
||||
setProgress(data);
|
||||
} else if (data.includes("converting")) {
|
||||
setProgress(t("APP.INFOS.IMAGE_PROCESSING.SCALE_CONVERT"));
|
||||
setProgress(t("APP.PROGRESS.SCALING_CONVERTING_TITLE"));
|
||||
} else if (data.includes("Successful")) {
|
||||
setProgress(t("APP.INFOS.IMAGE_PROCESSING.SUCCESS"));
|
||||
setProgress(t("APP.PROGRESS.SUCCESS_TITLE"));
|
||||
}
|
||||
handleErrors(data);
|
||||
logit(`🚧 UPSCAYL_PROGRESS: `, data);
|
||||
@ -239,7 +239,7 @@ const Home = () => {
|
||||
// FOLDER UPSCAYL PROGRESS
|
||||
window.electron.on(COMMAND.FOLDER_UPSCAYL_PROGRESS, (_, data: string) => {
|
||||
if (data.includes("Successful")) {
|
||||
setProgress(t("APP.INFOS.IMAGE_PROCESSING.SUCCESS"));
|
||||
setProgress(t("APP.PROGRESS.SUCCESS_TITLE"));
|
||||
}
|
||||
if (data.length > 0 && data.length < 10) {
|
||||
setProgress(data);
|
||||
@ -378,8 +378,8 @@ const Home = () => {
|
||||
logit("🔤 Extension: ", extension);
|
||||
if (!allowedFileTypes.includes(extension.toLowerCase())) {
|
||||
toast({
|
||||
title: t("APP.ERRORS.INVALID_IMAGE_ERROR.TITLE"),
|
||||
description: t("APP.ERRORS.INVALID_IMAGE_ERROR.DESC"),
|
||||
title: t("ERRORS.INVALID_IMAGE_ERROR.TITLE"),
|
||||
description: t("ERRORS.INVALID_IMAGE_ERROR.DESCRIPTION"),
|
||||
});
|
||||
resetImagePaths();
|
||||
}
|
||||
@ -466,8 +466,8 @@ const Home = () => {
|
||||
) {
|
||||
logit("👎 No valid files dropped");
|
||||
toast({
|
||||
title: t("APP.ERRORS.INVALID_IMAGE_ERROR.TITLE"),
|
||||
description: t("APP.ERRORS.INVALID_IMAGE_ERROR.DRAG_DESC"),
|
||||
title: t("ERRORS.INVALID_IMAGE_ERROR.TITLE"),
|
||||
description: t("ERRORS.INVALID_IMAGE_ERROR.ADDITIONAL_DESCRIPTION"),
|
||||
});
|
||||
return;
|
||||
}
|
||||
@ -481,8 +481,8 @@ const Home = () => {
|
||||
) {
|
||||
logit("🚫 Invalid file dropped");
|
||||
toast({
|
||||
title: t("APP.ERRORS.INVALID_IMAGE_ERROR.TITLE"),
|
||||
description: t("APP.ERRORS.INVALID_IMAGE_ERROR.DRAG_DESC"),
|
||||
title: t("ERRORS.INVALID_IMAGE_ERROR.TITLE"),
|
||||
description: t("ERRORS.INVALID_IMAGE_ERROR.ADDITIONAL_DESCRIPTION"),
|
||||
});
|
||||
} else {
|
||||
logit("🖼 Setting image path: ", filePath);
|
||||
@ -510,8 +510,8 @@ const Home = () => {
|
||||
!allowedFileTypes.includes(extension.toLowerCase())
|
||||
) {
|
||||
toast({
|
||||
title: t("APP.ERRORS.INVALID_IMAGE_ERROR.TITLE"),
|
||||
description: t("APP.ERRORS.INVALID_IMAGE_ERROR.DRAG_DESC"),
|
||||
title: t("ERRORS.INVALID_IMAGE_ERROR.TITLE"),
|
||||
description: t("ERRORS.INVALID_IMAGE_ERROR.ADDITIONAL_DESCRIPTION"),
|
||||
});
|
||||
} else {
|
||||
setImagePath(filePath);
|
||||
@ -528,7 +528,7 @@ const Home = () => {
|
||||
setUpscaledImagePath("");
|
||||
setUpscaledBatchFolderPath("");
|
||||
if (imagePath !== "" || batchFolderPath !== "") {
|
||||
setProgress(t("APP.INFOS.IMAGE_PROCESSING.WAIT"));
|
||||
setProgress(t("APP.PROGRESS.WAIT_TITLE"));
|
||||
// Double Upscayl
|
||||
if (doubleUpscayl) {
|
||||
window.electron.send<DoubleUpscaylPayload>(COMMAND.DOUBLE_UPSCAYL, {
|
||||
@ -582,8 +582,8 @@ const Home = () => {
|
||||
}
|
||||
} else {
|
||||
toast({
|
||||
title: t("APP.ERRORS.NO_IMAGE_ERROR.TITLE"),
|
||||
description: t("APP.ERRORS.NO_IMAGE_ERROR.DESC"),
|
||||
title: t("ERRORS.NO_IMAGE_ERROR.TITLE"),
|
||||
description: t("ERRORS.NO_IMAGE_ERROR.DESCRIPTION"),
|
||||
});
|
||||
logit("🚫 No valid image selected");
|
||||
}
|
||||
@ -607,7 +607,7 @@ const Home = () => {
|
||||
{!showSidebar && (
|
||||
<div className="fixed right-2 top-2 z-50 flex items-center justify-center gap-2 rounded-[7px] bg-base-300 px-2 py-1 font-medium text-base-content ">
|
||||
<Logo className="w-5" />
|
||||
{t("APP.TITLE")}
|
||||
{t("TITLE")}
|
||||
</div>
|
||||
)}
|
||||
|
||||
@ -654,7 +654,7 @@ const Home = () => {
|
||||
setShowCloudModal(true);
|
||||
}}
|
||||
>
|
||||
{t("APP.INTRO")}
|
||||
{t("INTRO")}
|
||||
</button>
|
||||
)}
|
||||
|
||||
@ -779,7 +779,7 @@ const Home = () => {
|
||||
batchFolderPath.length > 0 && (
|
||||
<p className="select-none text-base-content">
|
||||
<span className="font-bold">
|
||||
{t("APP.INFOS.IMAGE_PROCESSING.BATCH.SELECT")}
|
||||
{t("APP.PROGRESS.BATCH.SELECTED_FOLDER_TITLE")}
|
||||
</span>{" "}
|
||||
{batchFolderPath}
|
||||
</p>
|
||||
@ -788,13 +788,13 @@ const Home = () => {
|
||||
{batchMode && upscaledBatchFolderPath.length > 0 && (
|
||||
<div className="z-50 flex flex-col items-center">
|
||||
<p className="select-none py-4 font-bold text-base-content">
|
||||
{t("APP.INFOS.IMAGE_PROCESSING.BATCH.DONE")}
|
||||
{t("APP.PROGRESS.BATCH.DONE_TITLE")}
|
||||
</p>
|
||||
<button
|
||||
className="bg-gradient-blue btn btn-primary rounded-btn p-3 font-medium text-white/90 transition-colors"
|
||||
onClick={openFolderHandler}
|
||||
>
|
||||
{t("APP.INFOS.IMAGE_PROCESSING.BATCH.OPEN_DONE_FOLDER")}
|
||||
{t("APP.PROGRESS.BATCH.OPEN_UPSCAYLED_FOLDER_TITLE")}
|
||||
</button>
|
||||
</div>
|
||||
)}
|
||||
@ -860,13 +860,13 @@ const Home = () => {
|
||||
itemOne={
|
||||
<>
|
||||
<p className="absolute bottom-1 left-1 rounded-md bg-black p-1 text-sm font-medium text-white opacity-30">
|
||||
{t("APP.INFOS.COMPARISION.SLIDER_ORIGINAL")}
|
||||
{t("APP.SLIDER.ORIGINAL_TITLE")}
|
||||
</p>
|
||||
|
||||
<img
|
||||
/* USE REGEX TO GET THE FILENAME AND ENCODE IT INTO PROPER FORM IN ORDER TO AVOID ERRORS DUE TO SPECIAL CHARACTERS */
|
||||
src={"file:///" + sanitizedImagePath}
|
||||
alt={t("APP.INFOS.COMPARISION.SLIDER_ORIGINAL")}
|
||||
alt={t("APP.SLIDER.ORIGINAL_TITLE")}
|
||||
onMouseMove={handleMouseMove}
|
||||
style={{
|
||||
objectFit: "contain",
|
||||
@ -880,12 +880,12 @@ const Home = () => {
|
||||
itemTwo={
|
||||
<>
|
||||
<p className="absolute bottom-1 right-1 rounded-md bg-black p-1 text-sm font-medium text-white opacity-30">
|
||||
{t("APP.INFOS.COMPARISION.SLIDER_PROCESSED")}
|
||||
{t("APP.SLIDER.UPSCAYLED_TITLE")}
|
||||
</p>
|
||||
<img
|
||||
/* USE REGEX TO GET THE FILENAME AND ENCODE IT INTO PROPER FORM IN ORDER TO AVOID ERRORS DUE TO SPECIAL CHARACTERS */
|
||||
src={"file:///" + sanitizedUpscaledImagePath}
|
||||
alt="Upscayl"
|
||||
alt={t("APP.SLIDER.UPSCAYLED_TITLE")}
|
||||
style={{
|
||||
objectFit: "contain",
|
||||
backgroundPosition: "0% 0%",
|
||||
|
Loading…
Reference in New Issue
Block a user