mirror of
https://github.com/open-webui/open-webui
synced 2025-05-20 13:15:13 +00:00
👀 Fix Common users cannot upload files
💄Fix format 💄Fix format i18 ⭐ Feat paste upload files and make restrictions ⭐ Feat paste upload files and make restrictions
This commit is contained in:
parent
b01d72ade3
commit
775478534a
@ -577,6 +577,14 @@ async def get_query_settings(user=Depends(get_admin_user)):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@app.get("/file/limit/settings")
|
||||||
|
async def get_query_settings(user=Depends(get_verified_user)):
|
||||||
|
return {
|
||||||
|
"max_file_size": app.state.config.MAX_FILE_SIZE,
|
||||||
|
"max_file_count": app.state.config.MAX_FILE_COUNT,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class QuerySettingsForm(BaseModel):
|
class QuerySettingsForm(BaseModel):
|
||||||
k: Optional[int] = None
|
k: Optional[int] = None
|
||||||
r: Optional[float] = None
|
r: Optional[float] = None
|
||||||
|
@ -134,6 +134,33 @@ export const getQuerySettings = async (token: string) => {
|
|||||||
return res;
|
return res;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const getFileLimitSettings = async (token: string) => {
|
||||||
|
let error = null;
|
||||||
|
|
||||||
|
const res = await fetch(`${RAG_API_BASE_URL}/file/limit/settings`, {
|
||||||
|
method: 'GET',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
Authorization: `Bearer ${token}`
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(async (res) => {
|
||||||
|
if (!res.ok) throw await res.json();
|
||||||
|
return res.json();
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
console.log(err);
|
||||||
|
error = err.detail;
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
};
|
||||||
|
|
||||||
type QuerySettings = {
|
type QuerySettings = {
|
||||||
k: number | null;
|
k: number | null;
|
||||||
r: number | null;
|
r: number | null;
|
||||||
|
@ -18,11 +18,8 @@
|
|||||||
import { transcribeAudio } from '$lib/apis/audio';
|
import { transcribeAudio } from '$lib/apis/audio';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
getQuerySettings,
|
getFileLimitSettings,
|
||||||
processDocToVectorDB,
|
processDocToVectorDB,
|
||||||
uploadDocToVectorDB,
|
|
||||||
uploadWebToVectorDB,
|
|
||||||
uploadYoutubeTranscriptionToVectorDB
|
|
||||||
} from '$lib/apis/rag';
|
} from '$lib/apis/rag';
|
||||||
|
|
||||||
import { uploadFile } from '$lib/apis/files';
|
import { uploadFile } from '$lib/apis/files';
|
||||||
@ -62,7 +59,7 @@
|
|||||||
let commandsElement;
|
let commandsElement;
|
||||||
|
|
||||||
let inputFiles;
|
let inputFiles;
|
||||||
let querySettings;
|
let fileLimitSettings;
|
||||||
let dragged = false;
|
let dragged = false;
|
||||||
|
|
||||||
let user = null;
|
let user = null;
|
||||||
@ -196,8 +193,8 @@
|
|||||||
return [true, inputFiles];
|
return [true, inputFiles];
|
||||||
};
|
};
|
||||||
|
|
||||||
const processFileSizeLimit = async (querySettings, file) => {
|
const processFileSizeLimit = async (fileLimitSettings, file) => {
|
||||||
if (file.size <= querySettings.max_file_size * 1024 * 1024) {
|
if (file.size <= fileLimitSettings.max_file_size * 1024 * 1024) {
|
||||||
if (['image/gif', 'image/webp', 'image/jpeg', 'image/png'].includes(file['type'])) {
|
if (['image/gif', 'image/webp', 'image/jpeg', 'image/png'].includes(file['type'])) {
|
||||||
if (visionCapableModels.length === 0) {
|
if (visionCapableModels.length === 0) {
|
||||||
toast.error($i18n.t('Selected model(s) do not support image inputs'));
|
toast.error($i18n.t('Selected model(s) do not support image inputs'));
|
||||||
@ -220,21 +217,22 @@
|
|||||||
} else {
|
} else {
|
||||||
toast.error(
|
toast.error(
|
||||||
$i18n.t('File size exceeds the limit of {{size}}MB', {
|
$i18n.t('File size exceeds the limit of {{size}}MB', {
|
||||||
size: querySettings.max_file_size
|
size: fileLimitSettings.max_file_size
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
const initializeSettings = async () => {
|
const initFileLimitSettings = async () => {
|
||||||
try {
|
try {
|
||||||
querySettings = await getQuerySettings(localStorage.token);
|
fileLimitSettings = await getFileLimitSettings(localStorage.token);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error fetching query settings:', error);
|
console.error('Error fetching query settings:', error);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
initializeSettings();
|
initFileLimitSettings();
|
||||||
|
|
||||||
window.setTimeout(() => chatTextAreaElement?.focus(), 0);
|
window.setTimeout(() => chatTextAreaElement?.focus(), 0);
|
||||||
|
|
||||||
const dropZone = document.querySelector('body');
|
const dropZone = document.querySelector('body');
|
||||||
@ -265,7 +263,7 @@
|
|||||||
if (inputFiles && inputFiles.length > 0) {
|
if (inputFiles && inputFiles.length > 0) {
|
||||||
console.log(inputFiles);
|
console.log(inputFiles);
|
||||||
const [canProcess, filesToProcess] = await processFileCountLimit(
|
const [canProcess, filesToProcess] = await processFileCountLimit(
|
||||||
querySettings,
|
fileLimitSettings,
|
||||||
inputFiles
|
inputFiles
|
||||||
);
|
);
|
||||||
if (!canProcess) {
|
if (!canProcess) {
|
||||||
@ -275,7 +273,7 @@
|
|||||||
console.log(filesToProcess);
|
console.log(filesToProcess);
|
||||||
filesToProcess.forEach((file) => {
|
filesToProcess.forEach((file) => {
|
||||||
console.log(file, file.name.split('.').at(-1));
|
console.log(file, file.name.split('.').at(-1));
|
||||||
processFileSizeLimit(querySettings, file);
|
processFileSizeLimit(fileLimitSettings, file);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
toast.error($i18n.t(`File not found.`));
|
toast.error($i18n.t(`File not found.`));
|
||||||
@ -400,7 +398,7 @@
|
|||||||
const _inputFiles = Array.from(inputFiles);
|
const _inputFiles = Array.from(inputFiles);
|
||||||
console.log(_inputFiles);
|
console.log(_inputFiles);
|
||||||
const [canProcess, filesToProcess] = await processFileCountLimit(
|
const [canProcess, filesToProcess] = await processFileCountLimit(
|
||||||
querySettings,
|
fileLimitSettings,
|
||||||
_inputFiles
|
_inputFiles
|
||||||
);
|
);
|
||||||
if (!canProcess) {
|
if (!canProcess) {
|
||||||
@ -410,7 +408,7 @@
|
|||||||
console.log(filesToProcess);
|
console.log(filesToProcess);
|
||||||
filesToProcess.forEach((file) => {
|
filesToProcess.forEach((file) => {
|
||||||
console.log(file, file.name.split('.').at(-1));
|
console.log(file, file.name.split('.').at(-1));
|
||||||
processFileSizeLimit(querySettings, file);
|
processFileSizeLimit(fileLimitSettings, file);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
toast.error($i18n.t(`File not found.`));
|
toast.error($i18n.t(`File not found.`));
|
||||||
@ -703,37 +701,40 @@
|
|||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
rows="1"
|
rows="1"
|
||||||
on:input={(e) => {
|
on:input={async (e) => {
|
||||||
e.target.style.height = '';
|
e.target.style.height = '';
|
||||||
e.target.style.height = Math.min(e.target.scrollHeight, 200) + 'px';
|
e.target.style.height = Math.min(e.target.scrollHeight, 200) + 'px';
|
||||||
user = null;
|
user = null;
|
||||||
}}
|
}}
|
||||||
on:focus={(e) => {
|
on:focus={async (e) => {
|
||||||
e.target.style.height = '';
|
e.target.style.height = '';
|
||||||
e.target.style.height = Math.min(e.target.scrollHeight, 200) + 'px';
|
e.target.style.height = Math.min(e.target.scrollHeight, 200) + 'px';
|
||||||
}}
|
}}
|
||||||
on:paste={(e) => {
|
on:paste={async (e) => {
|
||||||
const clipboardData = e.clipboardData || window.clipboardData;
|
const clipboardData = e.clipboardData || window.clipboardData;
|
||||||
|
try {
|
||||||
|
if (clipboardData && clipboardData.items) {
|
||||||
|
const inputFiles = Array.from(clipboardData.items)
|
||||||
|
.map((item) => item.getAsFile())
|
||||||
|
.filter((file) => file);
|
||||||
|
|
||||||
if (clipboardData && clipboardData.items) {
|
const [canProcess, filesToProcess] = await processFileCountLimit(
|
||||||
for (const item of clipboardData.items) {
|
fileLimitSettings,
|
||||||
if (item.type.indexOf('image') !== -1) {
|
inputFiles
|
||||||
const blob = item.getAsFile();
|
);
|
||||||
const reader = new FileReader();
|
if (!canProcess) {
|
||||||
|
return;
|
||||||
reader.onload = function (e) {
|
|
||||||
files = [
|
|
||||||
...files,
|
|
||||||
{
|
|
||||||
type: 'image',
|
|
||||||
url: `${e.target.result}`
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
reader.readAsDataURL(blob);
|
|
||||||
}
|
}
|
||||||
|
filesToProcess.forEach((file) => {
|
||||||
|
console.log(file, file.name.split('.').at(-1));
|
||||||
|
processFileSizeLimit(fileLimitSettings, file);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
toast.error($i18n.t(`File not found.`));
|
||||||
}
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error processing files:', error);
|
||||||
|
toast.error($i18n.t(`An error occurred while processing files.`));
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
import { createNewDoc, deleteDocByName, getDocs } from '$lib/apis/documents';
|
import { createNewDoc, deleteDocByName, getDocs } from '$lib/apis/documents';
|
||||||
|
|
||||||
import { SUPPORTED_FILE_TYPE, SUPPORTED_FILE_EXTENSIONS } from '$lib/constants';
|
import { SUPPORTED_FILE_TYPE, SUPPORTED_FILE_EXTENSIONS } from '$lib/constants';
|
||||||
import { getQuerySettings, processDocToVectorDB, uploadDocToVectorDB } from '$lib/apis/rag';
|
import { getFileLimitSettings, processDocToVectorDB, uploadDocToVectorDB } from '$lib/apis/rag';
|
||||||
import { blobToFile, transformFileName } from '$lib/utils';
|
import { blobToFile, transformFileName } from '$lib/utils';
|
||||||
|
|
||||||
import Checkbox from '$lib/components/common/Checkbox.svelte';
|
import Checkbox from '$lib/components/common/Checkbox.svelte';
|
||||||
@ -24,7 +24,7 @@
|
|||||||
let importFiles = '';
|
let importFiles = '';
|
||||||
|
|
||||||
let inputFiles = '';
|
let inputFiles = '';
|
||||||
let querySettings;
|
let fileLimitSettings;
|
||||||
let query = '';
|
let query = '';
|
||||||
let documentsImportInputElement: HTMLInputElement;
|
let documentsImportInputElement: HTMLInputElement;
|
||||||
let tags = [];
|
let tags = [];
|
||||||
@ -99,16 +99,16 @@
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const initializeSettings = async () => {
|
const initFileLimitSettings = async () => {
|
||||||
try {
|
try {
|
||||||
querySettings = await getQuerySettings(localStorage.token);
|
fileLimitSettings = await getFileLimitSettings(localStorage.token);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error fetching query settings:', error);
|
console.error('Error fetching query settings:', error);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
initializeSettings();
|
initFileLimitSettings();
|
||||||
|
|
||||||
documents.subscribe((docs) => {
|
documents.subscribe((docs) => {
|
||||||
tags = docs.reduce((a, e, i, arr) => {
|
tags = docs.reduce((a, e, i, arr) => {
|
||||||
@ -147,7 +147,7 @@
|
|||||||
if (inputFiles && inputFiles.length > 0) {
|
if (inputFiles && inputFiles.length > 0) {
|
||||||
for (const file of inputFiles) {
|
for (const file of inputFiles) {
|
||||||
console.log(file, file.name.split('.').at(-1));
|
console.log(file, file.name.split('.').at(-1));
|
||||||
if (file.size <= querySettings.max_file_size * 1024 * 1024) {
|
if (file.size <= fileLimitSettings.max_file_size * 1024 * 1024) {
|
||||||
if (
|
if (
|
||||||
SUPPORTED_FILE_TYPE.includes(file['type']) ||
|
SUPPORTED_FILE_TYPE.includes(file['type']) ||
|
||||||
SUPPORTED_FILE_EXTENSIONS.includes(file.name.split('.').at(-1))
|
SUPPORTED_FILE_EXTENSIONS.includes(file.name.split('.').at(-1))
|
||||||
@ -162,7 +162,7 @@
|
|||||||
} else {
|
} else {
|
||||||
toast.error(
|
toast.error(
|
||||||
$i18n.t('File size exceeds the limit of {{size}}MB', {
|
$i18n.t('File size exceeds the limit of {{size}}MB', {
|
||||||
size: querySettings.max_file_size
|
size: fileLimitSettings.max_file_size
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "الأحرف الأبجدية الرقمية والواصلات",
|
"alphanumeric characters and hyphens": "الأحرف الأبجدية الرقمية والواصلات",
|
||||||
"Already have an account?": "هل تملك حساب ؟",
|
"Already have an account?": "هل تملك حساب ؟",
|
||||||
"an assistant": "مساعد",
|
"an assistant": "مساعد",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "و",
|
"and": "و",
|
||||||
"and create a new shared link.": "و أنشئ رابط مشترك جديد.",
|
"and create a new shared link.": "و أنشئ رابط مشترك جديد.",
|
||||||
"API Base URL": "API الرابط الرئيسي",
|
"API Base URL": "API الرابط الرئيسي",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "алфанумерични знаци и тире",
|
"alphanumeric characters and hyphens": "алфанумерични знаци и тире",
|
||||||
"Already have an account?": "Вече имате акаунт? ",
|
"Already have an account?": "Вече имате акаунт? ",
|
||||||
"an assistant": "асистент",
|
"an assistant": "асистент",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "и",
|
"and": "и",
|
||||||
"and create a new shared link.": "и създай нов общ линк.",
|
"and create a new shared link.": "и създай нов общ линк.",
|
||||||
"API Base URL": "API Базов URL",
|
"API Base URL": "API Базов URL",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "ইংরেজি অক্ষর, সংখ্যা এবং হাইফেন",
|
"alphanumeric characters and hyphens": "ইংরেজি অক্ষর, সংখ্যা এবং হাইফেন",
|
||||||
"Already have an account?": "আগে থেকেই একাউন্ট আছে?",
|
"Already have an account?": "আগে থেকেই একাউন্ট আছে?",
|
||||||
"an assistant": "একটা এসিস্ট্যান্ট",
|
"an assistant": "একটা এসিস্ট্যান্ট",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "এবং",
|
"and": "এবং",
|
||||||
"and create a new shared link.": "এবং একটি নতুন শেয়ারে লিংক তৈরি করুন.",
|
"and create a new shared link.": "এবং একটি নতুন শেয়ারে লিংক তৈরি করুন.",
|
||||||
"API Base URL": "এপিআই বেজ ইউআরএল",
|
"API Base URL": "এপিআই বেজ ইউআরএল",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "caràcters alfanumèrics i guions",
|
"alphanumeric characters and hyphens": "caràcters alfanumèrics i guions",
|
||||||
"Already have an account?": "Ja tens un compte?",
|
"Already have an account?": "Ja tens un compte?",
|
||||||
"an assistant": "un assistent",
|
"an assistant": "un assistent",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "i",
|
"and": "i",
|
||||||
"and create a new shared link.": "i crear un nou enllaç compartit.",
|
"and create a new shared link.": "i crear un nou enllaç compartit.",
|
||||||
"API Base URL": "URL Base de l'API",
|
"API Base URL": "URL Base de l'API",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "alphanumeric nga mga karakter ug hyphen",
|
"alphanumeric characters and hyphens": "alphanumeric nga mga karakter ug hyphen",
|
||||||
"Already have an account?": "Naa na kay account ?",
|
"Already have an account?": "Naa na kay account ?",
|
||||||
"an assistant": "usa ka katabang",
|
"an assistant": "usa ka katabang",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "Ug",
|
"and": "Ug",
|
||||||
"and create a new shared link.": "",
|
"and create a new shared link.": "",
|
||||||
"API Base URL": "API Base URL",
|
"API Base URL": "API Base URL",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "alphanumerische Zeichen und Bindestriche",
|
"alphanumeric characters and hyphens": "alphanumerische Zeichen und Bindestriche",
|
||||||
"Already have an account?": "Haben Sie bereits einen Account?",
|
"Already have an account?": "Haben Sie bereits einen Account?",
|
||||||
"an assistant": "ein Assistent",
|
"an assistant": "ein Assistent",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "und",
|
"and": "und",
|
||||||
"and create a new shared link.": "und erstellen Sie einen neuen freigegebenen Link.",
|
"and create a new shared link.": "und erstellen Sie einen neuen freigegebenen Link.",
|
||||||
"API Base URL": "API-Basis-URL",
|
"API Base URL": "API-Basis-URL",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "so alpha, many hyphen",
|
"alphanumeric characters and hyphens": "so alpha, many hyphen",
|
||||||
"Already have an account?": "Such account exists?",
|
"Already have an account?": "Such account exists?",
|
||||||
"an assistant": "such assistant",
|
"an assistant": "such assistant",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "and",
|
"and": "and",
|
||||||
"and create a new shared link.": "",
|
"and create a new shared link.": "",
|
||||||
"API Base URL": "API Base URL",
|
"API Base URL": "API Base URL",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "",
|
"alphanumeric characters and hyphens": "",
|
||||||
"Already have an account?": "",
|
"Already have an account?": "",
|
||||||
"an assistant": "",
|
"an assistant": "",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "",
|
"and": "",
|
||||||
"and create a new shared link.": "",
|
"and create a new shared link.": "",
|
||||||
"API Base URL": "",
|
"API Base URL": "",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "",
|
"alphanumeric characters and hyphens": "",
|
||||||
"Already have an account?": "",
|
"Already have an account?": "",
|
||||||
"an assistant": "",
|
"an assistant": "",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "",
|
"and": "",
|
||||||
"and create a new shared link.": "",
|
"and create a new shared link.": "",
|
||||||
"API Base URL": "",
|
"API Base URL": "",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "caracteres alfanuméricos y guiones",
|
"alphanumeric characters and hyphens": "caracteres alfanuméricos y guiones",
|
||||||
"Already have an account?": "¿Ya tienes una cuenta?",
|
"Already have an account?": "¿Ya tienes una cuenta?",
|
||||||
"an assistant": "un asistente",
|
"an assistant": "un asistente",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "y",
|
"and": "y",
|
||||||
"and create a new shared link.": "y crear un nuevo enlace compartido.",
|
"and create a new shared link.": "y crear un nuevo enlace compartido.",
|
||||||
"API Base URL": "Dirección URL de la API",
|
"API Base URL": "Dirección URL de la API",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "حروف الفبایی و خط فاصله",
|
"alphanumeric characters and hyphens": "حروف الفبایی و خط فاصله",
|
||||||
"Already have an account?": "از قبل حساب کاربری دارید؟",
|
"Already have an account?": "از قبل حساب کاربری دارید؟",
|
||||||
"an assistant": "یک دستیار",
|
"an assistant": "یک دستیار",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "و",
|
"and": "و",
|
||||||
"and create a new shared link.": "و یک لینک به اشتراک گذاری جدید ایجاد کنید.",
|
"and create a new shared link.": "و یک لینک به اشتراک گذاری جدید ایجاد کنید.",
|
||||||
"API Base URL": "API Base URL",
|
"API Base URL": "API Base URL",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "kirjaimia, numeroita ja väliviivoja",
|
"alphanumeric characters and hyphens": "kirjaimia, numeroita ja väliviivoja",
|
||||||
"Already have an account?": "Onko sinulla jo tili?",
|
"Already have an account?": "Onko sinulla jo tili?",
|
||||||
"an assistant": "avustaja",
|
"an assistant": "avustaja",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "ja",
|
"and": "ja",
|
||||||
"and create a new shared link.": "ja luo uusi jaettu linkki.",
|
"and create a new shared link.": "ja luo uusi jaettu linkki.",
|
||||||
"API Base URL": "APIn perus-URL",
|
"API Base URL": "APIn perus-URL",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "caractères alphanumériques et tirets",
|
"alphanumeric characters and hyphens": "caractères alphanumériques et tirets",
|
||||||
"Already have an account?": "Avez-vous déjà un compte ?",
|
"Already have an account?": "Avez-vous déjà un compte ?",
|
||||||
"an assistant": "un assistant",
|
"an assistant": "un assistant",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "et",
|
"and": "et",
|
||||||
"and create a new shared link.": "et créer un nouveau lien partagé.",
|
"and create a new shared link.": "et créer un nouveau lien partagé.",
|
||||||
"API Base URL": "URL de base de l'API",
|
"API Base URL": "URL de base de l'API",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "caractères alphanumériques et tirets",
|
"alphanumeric characters and hyphens": "caractères alphanumériques et tirets",
|
||||||
"Already have an account?": "Avez-vous déjà un compte ?",
|
"Already have an account?": "Avez-vous déjà un compte ?",
|
||||||
"an assistant": "un assistant",
|
"an assistant": "un assistant",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "et",
|
"and": "et",
|
||||||
"and create a new shared link.": "et créer un nouveau lien partagé.",
|
"and create a new shared link.": "et créer un nouveau lien partagé.",
|
||||||
"API Base URL": "URL de base de l'API",
|
"API Base URL": "URL de base de l'API",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "תווים אלפאנומריים ומקפים",
|
"alphanumeric characters and hyphens": "תווים אלפאנומריים ומקפים",
|
||||||
"Already have an account?": "כבר יש לך חשבון?",
|
"Already have an account?": "כבר יש לך חשבון?",
|
||||||
"an assistant": "עוזר",
|
"an assistant": "עוזר",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "וגם",
|
"and": "וגם",
|
||||||
"and create a new shared link.": "וצור קישור משותף חדש.",
|
"and create a new shared link.": "וצור קישור משותף חדש.",
|
||||||
"API Base URL": "כתובת URL בסיסית ל-API",
|
"API Base URL": "כתובת URL בסיסית ל-API",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "अल्फ़ान्यूमेरिक वर्ण और हाइफ़न",
|
"alphanumeric characters and hyphens": "अल्फ़ान्यूमेरिक वर्ण और हाइफ़न",
|
||||||
"Already have an account?": "क्या आपके पास पहले से एक खाता मौजूद है?",
|
"Already have an account?": "क्या आपके पास पहले से एक खाता मौजूद है?",
|
||||||
"an assistant": "एक सहायक",
|
"an assistant": "एक सहायक",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "और",
|
"and": "और",
|
||||||
"and create a new shared link.": "और एक नई साझा लिंक बनाएं.",
|
"and create a new shared link.": "और एक नई साझा लिंक बनाएं.",
|
||||||
"API Base URL": "एपीआई बेस यूआरएल",
|
"API Base URL": "एपीआई बेस यूआरएल",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "alfanumerički znakovi i crtice",
|
"alphanumeric characters and hyphens": "alfanumerički znakovi i crtice",
|
||||||
"Already have an account?": "Već imate račun?",
|
"Already have an account?": "Već imate račun?",
|
||||||
"an assistant": "asistent",
|
"an assistant": "asistent",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "i",
|
"and": "i",
|
||||||
"and create a new shared link.": "i stvorite novu dijeljenu vezu.",
|
"and create a new shared link.": "i stvorite novu dijeljenu vezu.",
|
||||||
"API Base URL": "Osnovni URL API-ja",
|
"API Base URL": "Osnovni URL API-ja",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "karakter alfanumerik dan tanda hubung",
|
"alphanumeric characters and hyphens": "karakter alfanumerik dan tanda hubung",
|
||||||
"Already have an account?": "Sudah memiliki akun?",
|
"Already have an account?": "Sudah memiliki akun?",
|
||||||
"an assistant": "asisten",
|
"an assistant": "asisten",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "dan",
|
"and": "dan",
|
||||||
"and create a new shared link.": "dan membuat tautan bersama baru.",
|
"and create a new shared link.": "dan membuat tautan bersama baru.",
|
||||||
"API Base URL": "URL Dasar API",
|
"API Base URL": "URL Dasar API",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "caratteri alfanumerici e trattini",
|
"alphanumeric characters and hyphens": "caratteri alfanumerici e trattini",
|
||||||
"Already have an account?": "Hai già un account?",
|
"Already have an account?": "Hai già un account?",
|
||||||
"an assistant": "un assistente",
|
"an assistant": "un assistente",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "e",
|
"and": "e",
|
||||||
"and create a new shared link.": "e crea un nuovo link condiviso.",
|
"and create a new shared link.": "e crea un nuovo link condiviso.",
|
||||||
"API Base URL": "URL base API",
|
"API Base URL": "URL base API",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "英数字とハイフン",
|
"alphanumeric characters and hyphens": "英数字とハイフン",
|
||||||
"Already have an account?": "すでにアカウントをお持ちですか?",
|
"Already have an account?": "すでにアカウントをお持ちですか?",
|
||||||
"an assistant": "アシスタント",
|
"an assistant": "アシスタント",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "および",
|
"and": "および",
|
||||||
"and create a new shared link.": "し、新しい共有リンクを作成します。",
|
"and create a new shared link.": "し、新しい共有リンクを作成します。",
|
||||||
"API Base URL": "API ベース URL",
|
"API Base URL": "API ベース URL",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "ალფანუმერული სიმბოლოები და დეფისები",
|
"alphanumeric characters and hyphens": "ალფანუმერული სიმბოლოები და დეფისები",
|
||||||
"Already have an account?": "უკვე გაქვს ანგარიში?",
|
"Already have an account?": "უკვე გაქვს ანგარიში?",
|
||||||
"an assistant": "ასისტენტი",
|
"an assistant": "ასისტენტი",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "და",
|
"and": "და",
|
||||||
"and create a new shared link.": "და შექმენით ახალი გაზიარებული ბმული.",
|
"and create a new shared link.": "და შექმენით ახალი გაზიარებული ბმული.",
|
||||||
"API Base URL": "API საბაზისო URL",
|
"API Base URL": "API საბაზისო URL",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "영문자, 숫자, 하이픈",
|
"alphanumeric characters and hyphens": "영문자, 숫자, 하이픈",
|
||||||
"Already have an account?": "이미 계정이 있으신가요?",
|
"Already have an account?": "이미 계정이 있으신가요?",
|
||||||
"an assistant": "어시스턴트",
|
"an assistant": "어시스턴트",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "그리고",
|
"and": "그리고",
|
||||||
"and create a new shared link.": "새로운 공유 링크를 생성합니다.",
|
"and create a new shared link.": "새로운 공유 링크를 생성합니다.",
|
||||||
"API Base URL": "API 기본 URL",
|
"API Base URL": "API 기본 URL",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "skaičiai, raidės ir brūkšneliai",
|
"alphanumeric characters and hyphens": "skaičiai, raidės ir brūkšneliai",
|
||||||
"Already have an account?": "Ar jau turite paskyrą?",
|
"Already have an account?": "Ar jau turite paskyrą?",
|
||||||
"an assistant": "assistentas",
|
"an assistant": "assistentas",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "ir",
|
"and": "ir",
|
||||||
"and create a new shared link.": "sukurti naują dalinimosi nuorodą",
|
"and create a new shared link.": "sukurti naują dalinimosi nuorodą",
|
||||||
"API Base URL": "API basės nuoroda",
|
"API Base URL": "API basės nuoroda",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "alfanumeriske tegn og bindestreker",
|
"alphanumeric characters and hyphens": "alfanumeriske tegn og bindestreker",
|
||||||
"Already have an account?": "Har du allerede en konto?",
|
"Already have an account?": "Har du allerede en konto?",
|
||||||
"an assistant": "en assistent",
|
"an assistant": "en assistent",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "og",
|
"and": "og",
|
||||||
"and create a new shared link.": "og opprett en ny delt lenke.",
|
"and create a new shared link.": "og opprett en ny delt lenke.",
|
||||||
"API Base URL": "API Grunn-URL",
|
"API Base URL": "API Grunn-URL",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "alfanumerieke karakters en streepjes",
|
"alphanumeric characters and hyphens": "alfanumerieke karakters en streepjes",
|
||||||
"Already have an account?": "Heb je al een account?",
|
"Already have an account?": "Heb je al een account?",
|
||||||
"an assistant": "een assistent",
|
"an assistant": "een assistent",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "en",
|
"and": "en",
|
||||||
"and create a new shared link.": "en maak een nieuwe gedeelde link.",
|
"and create a new shared link.": "en maak een nieuwe gedeelde link.",
|
||||||
"API Base URL": "API Base URL",
|
"API Base URL": "API Base URL",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "ਅਲਫ਼ਾਨਯੂਮੈਰਿਕ ਅੱਖਰ ਅਤੇ ਹਾਈਫਨ",
|
"alphanumeric characters and hyphens": "ਅਲਫ਼ਾਨਯੂਮੈਰਿਕ ਅੱਖਰ ਅਤੇ ਹਾਈਫਨ",
|
||||||
"Already have an account?": "ਪਹਿਲਾਂ ਹੀ ਖਾਤਾ ਹੈ?",
|
"Already have an account?": "ਪਹਿਲਾਂ ਹੀ ਖਾਤਾ ਹੈ?",
|
||||||
"an assistant": "ਇੱਕ ਸਹਾਇਕ",
|
"an assistant": "ਇੱਕ ਸਹਾਇਕ",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "ਅਤੇ",
|
"and": "ਅਤੇ",
|
||||||
"and create a new shared link.": "ਅਤੇ ਇੱਕ ਨਵਾਂ ਸਾਂਝਾ ਲਿੰਕ ਬਣਾਓ।",
|
"and create a new shared link.": "ਅਤੇ ਇੱਕ ਨਵਾਂ ਸਾਂਝਾ ਲਿੰਕ ਬਣਾਓ।",
|
||||||
"API Base URL": "API ਬੇਸ URL",
|
"API Base URL": "API ਬੇਸ URL",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "znaki alfanumeryczne i myślniki",
|
"alphanumeric characters and hyphens": "znaki alfanumeryczne i myślniki",
|
||||||
"Already have an account?": "Masz już konto?",
|
"Already have an account?": "Masz już konto?",
|
||||||
"an assistant": "asystent",
|
"an assistant": "asystent",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "i",
|
"and": "i",
|
||||||
"and create a new shared link.": "i utwórz nowy udostępniony link",
|
"and create a new shared link.": "i utwórz nowy udostępniony link",
|
||||||
"API Base URL": "Podstawowy adres URL interfejsu API",
|
"API Base URL": "Podstawowy adres URL interfejsu API",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "caracteres alfanuméricos e hífens",
|
"alphanumeric characters and hyphens": "caracteres alfanuméricos e hífens",
|
||||||
"Already have an account?": "Já tem uma conta?",
|
"Already have an account?": "Já tem uma conta?",
|
||||||
"an assistant": "um assistente",
|
"an assistant": "um assistente",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "e",
|
"and": "e",
|
||||||
"and create a new shared link.": "e criar um novo link compartilhado.",
|
"and create a new shared link.": "e criar um novo link compartilhado.",
|
||||||
"API Base URL": "URL Base da API",
|
"API Base URL": "URL Base da API",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "caracteres alfanuméricos e hífens",
|
"alphanumeric characters and hyphens": "caracteres alfanuméricos e hífens",
|
||||||
"Already have an account?": "Já tem uma conta?",
|
"Already have an account?": "Já tem uma conta?",
|
||||||
"an assistant": "um assistente",
|
"an assistant": "um assistente",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "e",
|
"and": "e",
|
||||||
"and create a new shared link.": "e criar um novo link partilhado.",
|
"and create a new shared link.": "e criar um novo link partilhado.",
|
||||||
"API Base URL": "URL Base da API",
|
"API Base URL": "URL Base da API",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "caractere alfanumerice și cratime",
|
"alphanumeric characters and hyphens": "caractere alfanumerice și cratime",
|
||||||
"Already have an account?": "Deja ai un cont?",
|
"Already have an account?": "Deja ai un cont?",
|
||||||
"an assistant": "un asistent",
|
"an assistant": "un asistent",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "și",
|
"and": "și",
|
||||||
"and create a new shared link.": "și creează un nou link partajat.",
|
"and create a new shared link.": "și creează un nou link partajat.",
|
||||||
"API Base URL": "URL Bază API",
|
"API Base URL": "URL Bază API",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "буквенно цифровые символы и дефисы",
|
"alphanumeric characters and hyphens": "буквенно цифровые символы и дефисы",
|
||||||
"Already have an account?": "У вас уже есть учетная запись?",
|
"Already have an account?": "У вас уже есть учетная запись?",
|
||||||
"an assistant": "ассистент",
|
"an assistant": "ассистент",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "и",
|
"and": "и",
|
||||||
"and create a new shared link.": "и создайте новую общую ссылку.",
|
"and create a new shared link.": "и создайте новую общую ссылку.",
|
||||||
"API Base URL": "Базовый адрес API",
|
"API Base URL": "Базовый адрес API",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "алфанумерички знакови и цртице",
|
"alphanumeric characters and hyphens": "алфанумерички знакови и цртице",
|
||||||
"Already have an account?": "Већ имате налог?",
|
"Already have an account?": "Већ имате налог?",
|
||||||
"an assistant": "помоћник",
|
"an assistant": "помоћник",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "и",
|
"and": "и",
|
||||||
"and create a new shared link.": "и направи нову дељену везу.",
|
"and create a new shared link.": "и направи нову дељену везу.",
|
||||||
"API Base URL": "Основна адреса API-ја",
|
"API Base URL": "Основна адреса API-ја",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "alfanumeriska tecken och bindestreck",
|
"alphanumeric characters and hyphens": "alfanumeriska tecken och bindestreck",
|
||||||
"Already have an account?": "Har du redan ett konto?",
|
"Already have an account?": "Har du redan ett konto?",
|
||||||
"an assistant": "en assistent",
|
"an assistant": "en assistent",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "och",
|
"and": "och",
|
||||||
"and create a new shared link.": "och skapa en ny delad länk.",
|
"and create a new shared link.": "och skapa en ny delad länk.",
|
||||||
"API Base URL": "API-bas-URL",
|
"API Base URL": "API-bas-URL",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "อักขระตัวเลขและขีดกลาง",
|
"alphanumeric characters and hyphens": "อักขระตัวเลขและขีดกลาง",
|
||||||
"Already have an account?": "มีบัญชีอยู่แล้ว?",
|
"Already have an account?": "มีบัญชีอยู่แล้ว?",
|
||||||
"an assistant": "ผู้ช่วย",
|
"an assistant": "ผู้ช่วย",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "และ",
|
"and": "และ",
|
||||||
"and create a new shared link.": "และสร้างลิงก์ที่แชร์ใหม่",
|
"and create a new shared link.": "และสร้างลิงก์ที่แชร์ใหม่",
|
||||||
"API Base URL": "URL ฐานของ API",
|
"API Base URL": "URL ฐานของ API",
|
||||||
|
@ -40,6 +40,7 @@
|
|||||||
"alphanumeric characters and hyphens": "harply-sanjy belgiler we defisler",
|
"alphanumeric characters and hyphens": "harply-sanjy belgiler we defisler",
|
||||||
"Already have an account?": "Hasabyňyz barmy?",
|
"Already have an account?": "Hasabyňyz barmy?",
|
||||||
"an assistant": "kömekçi",
|
"an assistant": "kömekçi",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "we",
|
"and": "we",
|
||||||
"and create a new shared link.": "we täze paýlaşylan baglanyşyk dörediň.",
|
"and create a new shared link.": "we täze paýlaşylan baglanyşyk dörediň.",
|
||||||
"API Base URL": "API Esasy URL",
|
"API Base URL": "API Esasy URL",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "",
|
"alphanumeric characters and hyphens": "",
|
||||||
"Already have an account?": "",
|
"Already have an account?": "",
|
||||||
"an assistant": "",
|
"an assistant": "",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "",
|
"and": "",
|
||||||
"and create a new shared link.": "",
|
"and create a new shared link.": "",
|
||||||
"API Base URL": "",
|
"API Base URL": "",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "alfanumerik karakterler ve tireler",
|
"alphanumeric characters and hyphens": "alfanumerik karakterler ve tireler",
|
||||||
"Already have an account?": "Zaten bir hesabınız mı var?",
|
"Already have an account?": "Zaten bir hesabınız mı var?",
|
||||||
"an assistant": "bir asistan",
|
"an assistant": "bir asistan",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "ve",
|
"and": "ve",
|
||||||
"and create a new shared link.": "ve yeni bir paylaşılan bağlantı oluşturun.",
|
"and create a new shared link.": "ve yeni bir paylaşılan bağlantı oluşturun.",
|
||||||
"API Base URL": "API Temel URL",
|
"API Base URL": "API Temel URL",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "алфавітно-цифрові символи та дефіси",
|
"alphanumeric characters and hyphens": "алфавітно-цифрові символи та дефіси",
|
||||||
"Already have an account?": "Вже є обліковий запис?",
|
"Already have an account?": "Вже є обліковий запис?",
|
||||||
"an assistant": "асистента",
|
"an assistant": "асистента",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "та",
|
"and": "та",
|
||||||
"and create a new shared link.": "і створіть нове спільне посилання.",
|
"and create a new shared link.": "і створіть нове спільне посилання.",
|
||||||
"API Base URL": "URL-адреса API",
|
"API Base URL": "URL-адреса API",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "ký tự số và gạch nối",
|
"alphanumeric characters and hyphens": "ký tự số và gạch nối",
|
||||||
"Already have an account?": "Bạn đã có tài khoản?",
|
"Already have an account?": "Bạn đã có tài khoản?",
|
||||||
"an assistant": "trợ lý",
|
"an assistant": "trợ lý",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "và",
|
"and": "và",
|
||||||
"and create a new shared link.": "và tạo một link chia sẻ mới",
|
"and create a new shared link.": "và tạo một link chia sẻ mới",
|
||||||
"API Base URL": "Đường dẫn tới API (API Base URL)",
|
"API Base URL": "Đường dẫn tới API (API Base URL)",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "字母数字字符和连字符",
|
"alphanumeric characters and hyphens": "字母数字字符和连字符",
|
||||||
"Already have an account?": "已经拥有账号了?",
|
"Already have an account?": "已经拥有账号了?",
|
||||||
"an assistant": "助手",
|
"an assistant": "助手",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "和",
|
"and": "和",
|
||||||
"and create a new shared link.": "并创建一个新的分享链接。",
|
"and create a new shared link.": "并创建一个新的分享链接。",
|
||||||
"API Base URL": "API 基础地址",
|
"API Base URL": "API 基础地址",
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
"alphanumeric characters and hyphens": "英文字母、數字和連字號",
|
"alphanumeric characters and hyphens": "英文字母、數字和連字號",
|
||||||
"Already have an account?": "已經有帳號了嗎?",
|
"Already have an account?": "已經有帳號了嗎?",
|
||||||
"an assistant": "一位助手",
|
"an assistant": "一位助手",
|
||||||
|
"An error occurred while processing files.": "",
|
||||||
"and": "和",
|
"and": "和",
|
||||||
"and create a new shared link.": "並建立新的共用連結。",
|
"and create a new shared link.": "並建立新的共用連結。",
|
||||||
"API Base URL": "API 基礎 URL",
|
"API Base URL": "API 基礎 URL",
|
||||||
|
Loading…
Reference in New Issue
Block a user