mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-16 16:30:15 +01:00
⚙️ fix: File Config Handling (revisited) (#5881)
* fix: improve file handling by preventing memoization issues, providing config values at run time
* 🌍 i18n: Update translation.json with latest translations
This commit is contained in:
parent
61f0480b57
commit
e3b5c59949
24 changed files with 348 additions and 180 deletions
|
|
@ -1,12 +1,10 @@
|
|||
import { v4 } from 'uuid';
|
||||
import debounce from 'lodash/debounce';
|
||||
import { useQueryClient } from '@tanstack/react-query';
|
||||
import { useState, useEffect, useCallback, useRef, useMemo } from 'react';
|
||||
import React, { useState, useEffect, useCallback, useRef, useMemo } from 'react';
|
||||
import {
|
||||
megabyte,
|
||||
QueryKeys,
|
||||
EModelEndpoint,
|
||||
codeTypeMapping,
|
||||
mergeFileConfig,
|
||||
isAgentsEndpoint,
|
||||
isAssistantsEndpoint,
|
||||
|
|
@ -16,14 +14,12 @@ import {
|
|||
import type { TEndpointsConfig, TError } from 'librechat-data-provider';
|
||||
import type { ExtendedFile, FileSetter } from '~/common';
|
||||
import { useUploadFileMutation, useGetFileConfig } from '~/data-provider';
|
||||
import useLocalize, { TranslationKeys } from '~/hooks/useLocalize';
|
||||
import { useDelayedUploadToast } from './useDelayedUploadToast';
|
||||
import { useToastContext } from '~/Providers/ToastContext';
|
||||
import { useChatContext } from '~/Providers/ChatContext';
|
||||
import useLocalize from '~/hooks/useLocalize';
|
||||
import { logger, validateFiles } from '~/utils';
|
||||
import useUpdateFiles from './useUpdateFiles';
|
||||
import { logger } from '~/utils';
|
||||
|
||||
const { checkType } = defaultFileConfig;
|
||||
|
||||
type UseFileHandling = {
|
||||
overrideEndpoint?: EModelEndpoint;
|
||||
|
|
@ -58,20 +54,11 @@ const useFileHandling = (params?: UseFileHandling) => {
|
|||
[params?.overrideEndpoint, conversation?.endpointType, conversation?.endpoint],
|
||||
);
|
||||
|
||||
const { fileLimit, fileSizeLimit, totalSizeLimit, supportedMimeTypes } = useMemo(
|
||||
() =>
|
||||
fileConfig?.endpoints[endpoint] ??
|
||||
fileConfig?.endpoints.default ??
|
||||
defaultFileConfig.endpoints[endpoint] ??
|
||||
defaultFileConfig.endpoints.default,
|
||||
[fileConfig, endpoint],
|
||||
);
|
||||
|
||||
const displayToast = useCallback(() => {
|
||||
if (errors.length > 1) {
|
||||
// TODO: this should not be a dynamic localize input!!
|
||||
const errorList = Array.from(new Set(errors))
|
||||
.map((e, i) => `${i > 0 ? '• ' : ''}${localize(e) || e}\n`)
|
||||
.map((e, i) => `${i > 0 ? '• ' : ''}${localize(e as TranslationKeys) || e}\n`)
|
||||
.join('');
|
||||
showToast({
|
||||
message: errorList,
|
||||
|
|
@ -80,7 +67,7 @@ const useFileHandling = (params?: UseFileHandling) => {
|
|||
});
|
||||
} else if (errors.length === 1) {
|
||||
// TODO: this should not be a dynamic localize input!!
|
||||
const message = localize(errors[0]) || errors[0];
|
||||
const message = localize(errors[0] as TranslationKeys) || errors[0];
|
||||
showToast({
|
||||
message,
|
||||
status: 'error',
|
||||
|
|
@ -147,7 +134,7 @@ const useFileHandling = (params?: UseFileHandling) => {
|
|||
const errorMessage =
|
||||
error?.code === 'ERR_CANCELED'
|
||||
? 'com_error_files_upload_canceled'
|
||||
: error?.response?.data?.message ?? 'com_error_files_upload';
|
||||
: (error?.response?.data?.message ?? 'com_error_files_upload');
|
||||
setError(errorMessage);
|
||||
},
|
||||
},
|
||||
|
|
@ -228,87 +215,6 @@ const useFileHandling = (params?: UseFileHandling) => {
|
|||
uploadFile.mutate(formData);
|
||||
};
|
||||
|
||||
const validateFiles = useCallback(
|
||||
(fileList: File[]) => {
|
||||
const existingFiles = Array.from(files.values());
|
||||
const incomingTotalSize = fileList.reduce((total, file) => total + file.size, 0);
|
||||
if (incomingTotalSize === 0) {
|
||||
setError('com_error_files_empty');
|
||||
return false;
|
||||
}
|
||||
const currentTotalSize = existingFiles.reduce((total, file) => total + file.size, 0);
|
||||
|
||||
if (fileList.length + files.size > fileLimit) {
|
||||
setError(`You can only upload up to ${fileLimit} files at a time.`);
|
||||
return false;
|
||||
}
|
||||
|
||||
for (let i = 0; i < fileList.length; i++) {
|
||||
let originalFile = fileList[i];
|
||||
let fileType = originalFile.type;
|
||||
const extension = originalFile.name.split('.').pop() ?? '';
|
||||
const knownCodeType = codeTypeMapping[extension];
|
||||
|
||||
// Infer MIME type for Known Code files when the type is empty or a mismatch
|
||||
if (knownCodeType && (!fileType || fileType !== knownCodeType)) {
|
||||
fileType = knownCodeType;
|
||||
}
|
||||
|
||||
// Check if the file type is still empty after the extension check
|
||||
if (!fileType) {
|
||||
setError('Unable to determine file type for: ' + originalFile.name);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Replace empty type with inferred type
|
||||
if (originalFile.type !== fileType) {
|
||||
const newFile = new File([originalFile], originalFile.name, { type: fileType });
|
||||
originalFile = newFile;
|
||||
fileList[i] = newFile;
|
||||
}
|
||||
|
||||
if (!checkType(originalFile.type, supportedMimeTypes)) {
|
||||
console.log(originalFile);
|
||||
setError('Currently, unsupported file type: ' + originalFile.type);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (originalFile.size >= fileSizeLimit) {
|
||||
setError(`File size exceeds ${fileSizeLimit / megabyte} MB.`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (currentTotalSize + incomingTotalSize > totalSizeLimit) {
|
||||
setError(`The total size of the files cannot exceed ${totalSizeLimit / megabyte} MB.`);
|
||||
return false;
|
||||
}
|
||||
|
||||
const combinedFilesInfo = [
|
||||
...existingFiles.map(
|
||||
(file) =>
|
||||
`${file.file?.name ?? file.filename}-${file.size}-${
|
||||
file.type?.split('/')[0] ?? 'file'
|
||||
}`,
|
||||
),
|
||||
...fileList.map(
|
||||
(file: File | undefined) =>
|
||||
`${file?.name}-${file?.size}-${file?.type.split('/')[0] ?? 'file'}`,
|
||||
),
|
||||
];
|
||||
|
||||
const uniqueFilesSet = new Set(combinedFilesInfo);
|
||||
|
||||
if (uniqueFilesSet.size !== combinedFilesInfo.length) {
|
||||
setError('com_error_files_dupe');
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
},
|
||||
[files, fileLimit, fileSizeLimit, totalSizeLimit, supportedMimeTypes],
|
||||
);
|
||||
|
||||
const loadImage = (extendedFile: ExtendedFile, preview: string) => {
|
||||
const img = new Image();
|
||||
img.onload = async () => {
|
||||
|
|
@ -332,7 +238,16 @@ const useFileHandling = (params?: UseFileHandling) => {
|
|||
/* Validate files */
|
||||
let filesAreValid: boolean;
|
||||
try {
|
||||
filesAreValid = validateFiles(fileList);
|
||||
filesAreValid = validateFiles({
|
||||
files,
|
||||
fileList,
|
||||
setError,
|
||||
endpointFileConfig:
|
||||
fileConfig?.endpoints[endpoint] ??
|
||||
fileConfig?.endpoints.default ??
|
||||
defaultFileConfig.endpoints[endpoint] ??
|
||||
defaultFileConfig.endpoints.default,
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('file validation error', error);
|
||||
setError('com_error_files_validation');
|
||||
|
|
|
|||
|
|
@ -333,11 +333,10 @@
|
|||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "اكتشاف تلقائي",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
|
|
@ -347,12 +346,13 @@
|
|||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_language": "اللغة",
|
||||
"com_nav_latex_parsing": "تحليل LaTeX في الرسائل (قد يؤثر على الأداء)",
|
||||
"com_nav_log_out": "تسجيل الخروج",
|
||||
|
|
|
|||
|
|
@ -340,11 +340,10 @@
|
|||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "Automatisch erkennen",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
|
|
@ -354,12 +353,13 @@
|
|||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_language": "Sprache",
|
||||
"com_nav_latex_parsing": "LaTeX in Nachrichten parsen (kann die Leistung beeinflussen)",
|
||||
"com_nav_log_out": "Abmelden",
|
||||
|
|
|
|||
|
|
@ -345,11 +345,10 @@
|
|||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "Auto detect",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
|
|
@ -359,6 +358,7 @@
|
|||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
|
|
@ -587,6 +587,7 @@
|
|||
"com_ui_duplication_processing": "Duplicating conversation...",
|
||||
"com_ui_duplication_success": "Successfully duplicated conversation",
|
||||
"com_ui_edit": "Edit",
|
||||
"com_ui_empty_category": "-",
|
||||
"com_ui_endpoint": "Endpoint",
|
||||
"com_ui_endpoint_menu": "LLM Endpoint Menu",
|
||||
"com_ui_endpoints_available": "Available Endpoints",
|
||||
|
|
@ -602,6 +603,7 @@
|
|||
"com_ui_field_required": "This field is required",
|
||||
"com_ui_filter_prompts": "Filter Prompts",
|
||||
"com_ui_filter_prompts_name": "Filter prompts by name",
|
||||
"com_ui_finance": "Finance",
|
||||
"com_ui_fork": "Fork",
|
||||
"com_ui_fork_all_target": "Include all to/from here",
|
||||
"com_ui_fork_branches": "Include related branches",
|
||||
|
|
@ -630,6 +632,7 @@
|
|||
"com_ui_happy_birthday": "It's my 1st birthday!",
|
||||
"com_ui_hide_qr": "Hide QR Code",
|
||||
"com_ui_host": "Host",
|
||||
"com_ui_idea": "Ideas",
|
||||
"com_ui_image_gen": "Image Gen",
|
||||
"com_ui_import_conversation": "Import",
|
||||
"com_ui_import_conversation_error": "There was an error importing your conversations",
|
||||
|
|
@ -648,12 +651,14 @@
|
|||
"com_ui_librechat_code_api_title": "Run AI Code",
|
||||
"com_ui_llm_menu": "LLM Menu",
|
||||
"com_ui_llms_available": "Available LLMs",
|
||||
"com_ui_loading": "Loading...",
|
||||
"com_ui_locked": "Locked",
|
||||
"com_ui_logo": "{{0}} Logo",
|
||||
"com_ui_manage": "Manage",
|
||||
"com_ui_max_tags": "Maximum number allowed is {{0}}, using latest values.",
|
||||
"com_ui_mention": "Mention an endpoint, assistant, or preset to quickly switch to it",
|
||||
"com_ui_min_tags": "Cannot remove more values, a minimum of {{0}} are required.",
|
||||
"com_ui_misc": "Misc.",
|
||||
"com_ui_model": "Model",
|
||||
"com_ui_model_parameters": "Model Parameters",
|
||||
"com_ui_more_info": "More info",
|
||||
|
|
@ -710,6 +715,7 @@
|
|||
"com_ui_revoke_keys": "Revoke Keys",
|
||||
"com_ui_revoke_keys_confirm": "Are you sure you want to revoke all keys?",
|
||||
"com_ui_role_select": "Role",
|
||||
"com_ui_roleplay": "Roleplay",
|
||||
"com_ui_run_code": "Run Code",
|
||||
"com_ui_run_code_error": "There was an error running the code",
|
||||
"com_ui_save": "Save",
|
||||
|
|
@ -741,6 +747,7 @@
|
|||
"com_ui_shared_link_delete_success": "Successfully deleted shared link",
|
||||
"com_ui_shared_link_not_found": "Shared link not found",
|
||||
"com_ui_shared_prompts": "Shared Prompts",
|
||||
"com_ui_shop": "Shopping",
|
||||
"com_ui_show_all": "Show All",
|
||||
"com_ui_show_qr": "Show QR Code",
|
||||
"com_ui_sign_in_to_domain": "Sign-in to {{0}}",
|
||||
|
|
@ -752,6 +759,7 @@
|
|||
"com_ui_stop": "Stop",
|
||||
"com_ui_storage": "Storage",
|
||||
"com_ui_submit": "Submit",
|
||||
"com_ui_teach_or_explain": "Learning",
|
||||
"com_ui_temporary_chat": "Temporary Chat",
|
||||
"com_ui_terms_and_conditions": "Terms and Conditions",
|
||||
"com_ui_terms_of_service": "Terms of service",
|
||||
|
|
@ -760,6 +768,7 @@
|
|||
"com_ui_token_exchange_method": "Token Exchange Method",
|
||||
"com_ui_token_url": "Token URL",
|
||||
"com_ui_tools": "Tools",
|
||||
"com_ui_travel": "Travel",
|
||||
"com_ui_unarchive": "Unarchive",
|
||||
"com_ui_unarchive_error": "Failed to unarchive conversation",
|
||||
"com_ui_unknown": "Unknown",
|
||||
|
|
@ -783,18 +792,9 @@
|
|||
"com_ui_version_var": "Version {{0}}",
|
||||
"com_ui_versions": "Versions",
|
||||
"com_ui_view_source": "View source chat",
|
||||
"com_ui_write": "Writing",
|
||||
"com_ui_yes": "Yes",
|
||||
"com_ui_zoom": "Zoom",
|
||||
"com_user_message": "You",
|
||||
"com_ui_loading": "Loading...",
|
||||
"com_ui_finance": "Finance",
|
||||
"com_ui_idea": "Ideas",
|
||||
"com_ui_misc": "Misc.",
|
||||
"com_ui_roleplay": "Roleplay",
|
||||
"com_ui_shop": "Shopping",
|
||||
"com_ui_teach_or_explain": "Learning",
|
||||
"com_ui_travel": "Travel",
|
||||
"com_ui_write": "Writing",
|
||||
"com_ui_empty_category": "-",
|
||||
"com_warning_resubmit_unsupported": "Resubmitting the AI message is not supported for this endpoint."
|
||||
}
|
||||
|
|
@ -333,11 +333,10 @@
|
|||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "Detección automática",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
|
|
@ -347,12 +346,13 @@
|
|||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_language": "Idioma",
|
||||
"com_nav_latex_parsing": "Analizar LaTeX en los mensajes (puede afectar el rendimiento)",
|
||||
"com_nav_log_out": "Cerrar sesión",
|
||||
|
|
|
|||
|
|
@ -345,11 +345,10 @@
|
|||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "Tuvasta automaatselt",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
|
|
@ -359,12 +358,13 @@
|
|||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_language": "Keel",
|
||||
"com_nav_latex_parsing": "LaTeXi parsimine sõnumites (võib mõjutada jõudlust)",
|
||||
"com_nav_log_out": "Logi välja",
|
||||
|
|
|
|||
|
|
@ -270,11 +270,10 @@
|
|||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "Tunnista automaattisesti",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
|
|
@ -284,12 +283,13 @@
|
|||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_language": "Kieli",
|
||||
"com_nav_latex_parsing": "Tulkitse LaTeX:ia viesteissä (saattaa vaikuttaa suoritustehoon)",
|
||||
"com_nav_log_out": "Kirjaudu ulos",
|
||||
|
|
|
|||
|
|
@ -337,11 +337,10 @@
|
|||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "Détection automatique",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
|
|
@ -351,12 +350,13 @@
|
|||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_language": "Langue",
|
||||
"com_nav_latex_parsing": "Analyse LaTeX dans les messages (peut affecter les performances)",
|
||||
"com_nav_log_out": "Se déconnecter",
|
||||
|
|
|
|||
|
|
@ -191,11 +191,10 @@
|
|||
"com_nav_hide_panel": "הסתר לוח הצד הימני ביותר",
|
||||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
|
|
@ -205,12 +204,13 @@
|
|||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_latex_parsing": "ניתוח LaTeX בהודעות (עשוי להשפיע על הביצועים)",
|
||||
"com_nav_log_out": "צא",
|
||||
"com_nav_modular_chat": "אפשר החלפת נקודות קצה באמצע שיחה",
|
||||
|
|
|
|||
|
|
@ -166,11 +166,10 @@
|
|||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "Deteksi otomatis",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
|
|
@ -180,12 +179,13 @@
|
|||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_language": "Bahasa",
|
||||
"com_nav_latex_parsing": "Parsing LaTeX dalam pesan (dapat memengaruhi kinerja)",
|
||||
"com_nav_log_out": "Keluar",
|
||||
|
|
|
|||
|
|
@ -337,11 +337,10 @@
|
|||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "Rileva automaticamente",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
|
|
@ -351,12 +350,13 @@
|
|||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_language": "Lingua",
|
||||
"com_nav_latex_parsing": "Analizza LaTeX nei messaggi (potrebbe influire sulle prestazioni)",
|
||||
"com_nav_log_out": "Disconnetti",
|
||||
|
|
|
|||
|
|
@ -333,11 +333,10 @@
|
|||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "自動検出",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
|
|
@ -347,12 +346,13 @@
|
|||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_language": "言語",
|
||||
"com_nav_latex_parsing": "メッセージ内の LaTeX の構文解析 (パフォーマンスに影響する可能性があります)",
|
||||
"com_nav_log_out": "ログアウト",
|
||||
|
|
|
|||
|
|
@ -333,11 +333,10 @@
|
|||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "자동 감지",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
|
|
@ -347,12 +346,13 @@
|
|||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_language": "언어",
|
||||
"com_nav_latex_parsing": "메시지에서 LaTeX 구문 분석(성능에 영향을 줄 수 있음)",
|
||||
"com_nav_log_out": "로그아웃",
|
||||
|
|
|
|||
|
|
@ -148,12 +148,12 @@
|
|||
"com_nav_font_size": "Lettertypegrootte",
|
||||
"com_nav_help_faq": "Help & FAQ",
|
||||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "Automatisch detecteren",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
|
|
@ -163,12 +163,13 @@
|
|||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_log_out": "Uitloggen",
|
||||
"com_nav_not_supported": "Niet ondersteund",
|
||||
"com_nav_open_sidebar": "Zijbalk openen",
|
||||
|
|
|
|||
|
|
@ -305,11 +305,10 @@
|
|||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "Automatyczne wykrywanie",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
|
|
@ -319,12 +318,13 @@
|
|||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_language": "Język",
|
||||
"com_nav_latex_parsing": "Parsowanie LaTeX w wiadomościach (może wpływać na wydajność)",
|
||||
"com_nav_log_out": "Wyloguj",
|
||||
|
|
|
|||
|
|
@ -305,11 +305,10 @@
|
|||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "Detecção automática",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
|
|
@ -319,12 +318,13 @@
|
|||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_language": "Idioma",
|
||||
"com_nav_latex_parsing": "Análise de LaTeX em mensagens (pode afetar o desempenho)",
|
||||
"com_nav_log_out": "Sair",
|
||||
|
|
|
|||
|
|
@ -1,20 +1,33 @@
|
|||
{
|
||||
"com_a11y_ai_composing": "A IA ainda está compondo.",
|
||||
"com_a11y_ai_composing": "A IA ainda está a escrever.",
|
||||
"com_a11y_end": "A IA terminou de responder.",
|
||||
"com_a11y_start": "A IA começou a responder.",
|
||||
"com_agents_allow_editing": "Permitir que outros utilizadores editem o seu agente",
|
||||
"com_agents_by_librechat": "por LibreChat",
|
||||
"com_agents_code_interpreter": "Quando ativo, permite que os seus agentes usem a API de Interpretação de código do LibreChat para correr código gerado, inclusivé processamento de ficheiros em segurança. Requer uma chave API válida.",
|
||||
"com_agents_code_interpreter_title": "API de Interpretação de Código",
|
||||
"com_agents_create_error": "Houve um erro ao criar seu agente.",
|
||||
"com_agents_description_placeholder": "Opcional: Descreva seu Agente aqui",
|
||||
"com_agents_enable_file_search": "Permitir Pesquisa de Ficheiros.",
|
||||
"com_agents_file_search_disabled": "O Agente deve ser criado antes carregar ficheiros para Pesquisar.",
|
||||
"com_agents_file_search_info": "Quando ativo, os agentes serão informados dos nomes de ficheiros listados abaixo, permitindo aos mesmos a extração de contexto relevante.",
|
||||
"com_agents_instructions_placeholder": "As instruções do sistema que o agente usa",
|
||||
"com_agents_missing_provider_model": "Por favor, escolhe um provedor e modelo antes de criar um agente.",
|
||||
"com_agents_name_placeholder": "Opcional: O nome do agente",
|
||||
"com_agents_no_access": "Não tens permissões para editar este agente.",
|
||||
"com_agents_not_available": "Agente não disponível.",
|
||||
"com_agents_search_name": "Pesquisar agentes por nome",
|
||||
"com_agents_update_error": "Houve um erro ao atualizar seu agente.",
|
||||
"com_assistants_action_attempt": "Assistente quer falar com {{0}}",
|
||||
"com_assistants_actions": "Ações",
|
||||
"com_assistants_actions_disabled": "Você precisa criar um assistente antes de adicionar ações.",
|
||||
"com_assistants_actions_info": "Permita que seu Assistente recupere informações ou execute ações via API's",
|
||||
"com_assistants_add_actions": "Adicionar Ações",
|
||||
"com_assistants_add_tools": "Adicionar Ferramentas",
|
||||
"com_assistants_allow_sites_you_trust": "Apenas permitir sites que confia.",
|
||||
"com_assistants_append_date": "Anexar Data e Hora Atual",
|
||||
"com_assistants_append_date_tooltip": "Quando ativado, a data e hora atual do cliente serão anexadas às instruções do sistema do assistente.",
|
||||
"com_assistants_attempt_info": "O Assistente quer enviar o seguinte:",
|
||||
"com_assistants_available_actions": "Ações Disponíveis",
|
||||
"com_assistants_capabilities": "Capacidades",
|
||||
"com_assistants_code_interpreter": "Interpretador de Código",
|
||||
|
|
@ -49,6 +62,7 @@
|
|||
"com_assistants_update_error": "Houve um erro ao atualizar seu assistente.",
|
||||
"com_assistants_update_success": "Atualizado com sucesso",
|
||||
"com_auth_already_have_account": "Já tem uma conta?",
|
||||
"com_auth_apple_login": "Autenticar com a Apple.",
|
||||
"com_auth_back_to_login": "Voltar para Login",
|
||||
"com_auth_click": "Clique",
|
||||
"com_auth_click_here": "Clique aqui",
|
||||
|
|
@ -111,9 +125,14 @@
|
|||
"com_auth_username_max_length": "O nome de usuário deve ter menos de 20 caracteres",
|
||||
"com_auth_username_min_length": "O nome de usuário deve ter pelo menos 2 caracteres",
|
||||
"com_auth_welcome_back": "Bem-vindo de volta",
|
||||
"com_click_to_download": "(Carrega aqui para descarregar)",
|
||||
"com_download_expired": "(Ficheiro expirado)",
|
||||
"com_download_expires": "(carrega aqui para descarregar - expira a {{0}})",
|
||||
"com_endpoint": "Endpoint",
|
||||
"com_endpoint_agent": "Agente",
|
||||
"com_endpoint_agent_model": "Modelo de Agente (Recomendado: GPT-3.5)",
|
||||
"com_endpoint_agent_placeholder": "Por favor, seleciona um Agente.",
|
||||
"com_endpoint_ai": "IA",
|
||||
"com_endpoint_anthropic_maxoutputtokens": "Número máximo de tokens que podem ser gerados na resposta. Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas mais longas. Nota: os modelos podem parar antes de atingir esse máximo.",
|
||||
"com_endpoint_anthropic_prompt_cache": "O cache de prompt permite reutilizar um grande contexto ou instruções em chamadas de API, reduzindo custos e latência",
|
||||
"com_endpoint_anthropic_temp": "Varia de 0 a 1. Use temperatura mais próxima de 0 para tarefas analíticas / de múltipla escolha, e mais próxima de 1 para tarefas criativas e generativas. Recomendamos alterar isso ou Top P, mas não ambos.",
|
||||
|
|
@ -168,6 +187,7 @@
|
|||
"com_endpoint_instructions_assistants_placeholder": "Substitui as instruções do assistente. Isso é útil para modificar o comportamento em uma base por execução.",
|
||||
"com_endpoint_max_output_tokens": "Máximo de Tokens de Saída",
|
||||
"com_endpoint_message": "Mensagem",
|
||||
"com_endpoint_message_new": "Mensagem {{0}}",
|
||||
"com_endpoint_message_not_appendable": "Edite sua mensagem ou Regenerar.",
|
||||
"com_endpoint_my_preset": "Meu Preset",
|
||||
"com_endpoint_no_presets": "Ainda não há presets, use o botão de configurações para criar um",
|
||||
|
|
@ -179,6 +199,7 @@
|
|||
"com_endpoint_openai_max_tokens": "Campo opcional `max_tokens`, representando o número máximo de tokens que podem ser gerados na conclusão do chat. O comprimento total dos tokens de entrada e dos tokens gerados é limitado pelo comprimento do contexto dos modelos. Você pode experimentar erros se esse número exceder o máximo de tokens de contexto.",
|
||||
"com_endpoint_openai_pres": "Número entre -2.0 e 2.0. Valores positivos penalizam novos tokens com base em sua presença no texto até agora, aumentando a probabilidade do modelo de falar sobre novos tópicos.",
|
||||
"com_endpoint_openai_prompt_prefix_placeholder": "Defina instruções personalizadas para incluir na Mensagem do Sistema. Padrão: nenhuma",
|
||||
"com_endpoint_openai_reasoning_effort": "Apenas para modelos o1: Restringir o esforço de raciocínio. Isto poderá resultar em respostas mais rápidas e menos tokens usados na lógica da resposta.",
|
||||
"com_endpoint_openai_resend": "Reenviar todas as imagens anexadas anteriormente. Nota: isso pode aumentar significativamente o custo de tokens e você pode experimentar erros com muitos anexos de imagem.",
|
||||
"com_endpoint_openai_resend_files": "Reenviar todos os arquivos anexados anteriormente. Nota: isso aumentará o custo de tokens e você pode experimentar erros com muitos anexos.",
|
||||
"com_endpoint_openai_stop": "Até 4 sequências onde a API parará de gerar mais tokens.",
|
||||
|
|
@ -212,7 +233,9 @@
|
|||
"com_endpoint_prompt_prefix_assistants": "Instruções Adicionais",
|
||||
"com_endpoint_prompt_prefix_assistants_placeholder": "Defina instruções ou contexto adicionais além das instruções principais do Assistente. Ignorado se vazio.",
|
||||
"com_endpoint_prompt_prefix_placeholder": "Defina instruções ou contexto personalizados. Ignorado se vazio.",
|
||||
"com_endpoint_reasoning_effort": "Esforço de raciocínio",
|
||||
"com_endpoint_save_as_preset": "Salvar Como Preset",
|
||||
"com_endpoint_search": "Procurar endereço por nome",
|
||||
"com_endpoint_set_custom_name": "Defina um nome personalizado, caso você possa encontrar este preset",
|
||||
"com_endpoint_skip_hover": "Habilitar pular a etapa de conclusão, que revisa a resposta final e os passos gerados",
|
||||
"com_endpoint_stop": "Sequências de Parada",
|
||||
|
|
@ -222,6 +245,13 @@
|
|||
"com_endpoint_top_p": "Top P",
|
||||
"com_endpoint_use_active_assistant": "Usar Assistente Ativo",
|
||||
"com_error_expired_user_key": "A chave fornecida para {{0}} expirou em {{1}}. Por favor, forneça uma nova chave e tente novamente.",
|
||||
"com_error_files_dupe": "Ficheiro duplicado detectado",
|
||||
"com_error_files_empty": "Ficheiros vazios não são permitidos.",
|
||||
"com_error_files_process": "Ocorreu um erro ao processar o ficheiro.",
|
||||
"com_error_files_unsupported_capability": "Não existem funcionalidades ativas que suportem este tipo de ficheiro.",
|
||||
"com_error_files_upload": "Ocorreu um erro ao enviar o ficheiro.",
|
||||
"com_error_files_upload_canceled": "O enviar do ficheiro foi cancelado. Nota: O envio pode estar ainda a ser processado e poderá necessitar de ser apagado manualmente.",
|
||||
"com_error_files_validation": "Ocorreu um erro ao validar o ficheiro.",
|
||||
"com_error_input_length": "A contagem de tokens da última mensagem é muito longa, excedendo o limite de tokens ({{0}} respectivamente). Por favor, encurte sua mensagem, ajuste o tamanho máximo do contexto nos parâmetros da conversa ou divida a conversa para continuar.",
|
||||
"com_error_invalid_user_key": "Chave fornecida inválida. Por favor, forneça uma chave válida e tente novamente.",
|
||||
"com_error_moderation": "Parece que o conteúdo enviado foi sinalizado pelo nosso sistema de moderação por não estar alinhado com nossas diretrizes da comunidade. Não podemos prosseguir com este tópico específico. Se você tiver outras perguntas ou tópicos que gostaria de explorar, edite sua mensagem ou crie uma nova conversa.",
|
||||
|
|
@ -230,6 +260,7 @@
|
|||
"com_files_filter": "Filtrar arquivos...",
|
||||
"com_files_no_results": "Nenhum resultado.",
|
||||
"com_files_number_selected": "{{0}} de {{1}} arquivo(s) selecionado(s)",
|
||||
"com_generated_files": "Ficheiros gerados:",
|
||||
"com_hide_examples": "Ocultar Exemplos",
|
||||
"com_nav_account_settings": "Configurações da Conta",
|
||||
"com_nav_always_make_prod": "Sempre tornar novas versões produção",
|
||||
|
|
@ -252,8 +283,11 @@
|
|||
"com_nav_browser": "Navegador",
|
||||
"com_nav_buffer_append_error": "Problema com o streaming de áudio. A reprodução pode ser interrompida.",
|
||||
"com_nav_change_picture": "Mudar foto",
|
||||
"com_nav_chat_commands": "Comandos de conversa",
|
||||
"com_nav_chat_commands_info": "Estes comandos são ativados ao escrever caracteres específicos no início da sua mensagem. Cada comando corre segundo o seu prefixo. Poderá desligar os mesmos se usa esses caracteres no início das suas mensagens com alguma frequência.",
|
||||
"com_nav_chat_direction": "Direção do chat",
|
||||
"com_nav_clear_all_chats": "Limpar todos os chats",
|
||||
"com_nav_clear_cache_confirm_message": "Tem a certeza que pretende apagar a cache?",
|
||||
"com_nav_clear_conversation": "Limpar conversas",
|
||||
"com_nav_clear_conversation_confirm_message": "Tem certeza de que deseja limpar todas as conversas? Isso é irreversível.",
|
||||
"com_nav_close_sidebar": "Fechar barra lateral",
|
||||
|
|
@ -294,6 +328,7 @@
|
|||
"com_nav_help_faq": "Ajuda & FAQ",
|
||||
"com_nav_hide_panel": "Ocultar painel mais à direita",
|
||||
"com_nav_info_code_artifacts": "Habilita a exibição de artefatos de código experimental ao lado do chat",
|
||||
"com_nav_info_code_artifacts_agent": "Permitir o uso de artefactos de código por este agente. Por defeito, instruções adicionais específicas ao uso de artefactos são adicionadas, caso o \"Modo de comando personalizado\" esteja ativo.",
|
||||
"com_nav_info_custom_prompt_mode": "Quando habilitado, o prompt padrão do sistema de artefatos não será incluído. Todas as instruções de geração de artefatos devem ser fornecidas manualmente neste modo.",
|
||||
"com_nav_info_enter_to_send": "Quando habilitado, pressionar `ENTER` enviará sua mensagem. Quando desabilitado, pressionar Enter adicionará uma nova linha, e você precisará pressionar `CTRL + ENTER` / `⌘ + ENTER` para enviar sua mensagem.",
|
||||
"com_nav_info_fork_change_default": "`Apenas mensagens visíveis` inclui apenas o caminho direto para a mensagem selecionada. `Incluir ramos relacionados` adiciona ramos ao longo do caminho. `Incluir tudo de/para aqui` inclui todas as mensagens e ramos conectados.",
|
||||
|
|
@ -305,11 +340,10 @@
|
|||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "Detecção automática",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
|
|
@ -319,18 +353,21 @@
|
|||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_language": "Idioma",
|
||||
"com_nav_latex_parsing": "Análise de LaTeX em mensagens (pode afetar o desempenho)",
|
||||
"com_nav_log_out": "Sair",
|
||||
"com_nav_long_audio_warning": "Textos mais longos levarão mais tempo para processar.",
|
||||
"com_nav_maximize_chat_space": "Maximizar espaço de conversa",
|
||||
"com_nav_modular_chat": "Habilitar troca de Endpoints no meio da conversa",
|
||||
"com_nav_my_files": "Meus Arquivos",
|
||||
"com_nav_no_search_results": "0 Resultados encontrados",
|
||||
"com_nav_not_supported": "Não Suportado",
|
||||
"com_nav_open_sidebar": "Abrir barra lateral",
|
||||
"com_nav_playback_rate": "Taxa de Reprodução de Áudio",
|
||||
|
|
@ -343,6 +380,7 @@
|
|||
"com_nav_plus_command_description": "Alternar comando \"+\" para adicionar uma configuração de resposta múltipla",
|
||||
"com_nav_profile_picture": "Foto de Perfil",
|
||||
"com_nav_save_drafts": "Salvar rascunhos localmente",
|
||||
"com_nav_scroll_button": "Botão de ir para o fim",
|
||||
"com_nav_search_placeholder": "Buscar mensagens",
|
||||
"com_nav_send_message": "Enviar mensagem",
|
||||
"com_nav_setting_account": "Conta",
|
||||
|
|
@ -355,26 +393,31 @@
|
|||
"com_nav_shared_links": "Links compartilhados",
|
||||
"com_nav_shared_links_manage": "Gerenciar",
|
||||
"com_nav_show_code": "Sempre mostrar código ao usar o interpretador de código",
|
||||
"com_nav_show_thinking": "Abrir Dropdown de lógica por defeito.",
|
||||
"com_nav_slash_command": "Comando /",
|
||||
"com_nav_slash_command_description": "Alternar comando \"/\" para selecionar um prompt via teclado",
|
||||
"com_nav_source_buffer_error": "Erro ao configurar a reprodução de áudio. Por favor, atualize a página.",
|
||||
"com_nav_speech_cancel_error": "Não foi possível parar a reprodução de áudio. Você pode precisar atualizar a página.",
|
||||
"com_nav_speech_to_text": "Fala para Texto",
|
||||
"com_nav_stop_generating": "Parar de gerar",
|
||||
"com_nav_text_to_speech": "Texto para Fala",
|
||||
"com_nav_theme": "Tema",
|
||||
"com_nav_theme_dark": "Escuro",
|
||||
"com_nav_theme_light": "Claro",
|
||||
"com_nav_theme_system": "Sistema",
|
||||
"com_nav_tool_dialog": "Ferramentas do Assistente",
|
||||
"com_nav_tool_dialog_agents": "Ferramentas do Agente",
|
||||
"com_nav_tool_dialog_description": "O assistente deve ser salvo para persistir as seleções de ferramentas.",
|
||||
"com_nav_tool_remove": "Remover",
|
||||
"com_nav_tool_search": "Buscar ferramentas",
|
||||
"com_nav_tts_init_error": "Falha ao inicializar texto-para-fala: {{0}}",
|
||||
"com_nav_tts_unsupported_error": "Texto-para-fala para o mecanismo selecionado não é suportado neste navegador.",
|
||||
"com_nav_user": "USUÁRIO",
|
||||
"com_nav_user_msg_markdown": "Mostrar as mensagens do utilizador como markdown",
|
||||
"com_nav_user_name_display": "Exibir nome de usuário nas mensagens",
|
||||
"com_nav_voice_select": "Voz",
|
||||
"com_nav_voices_fetch_error": "Não foi possível recuperar as opções de voz. Por favor, verifique sua conexão com a internet.",
|
||||
"com_nav_welcome_agent": "Por favor, seleciona um Agente.",
|
||||
"com_nav_welcome_assistant": "Por favor, Selecione um Assistente",
|
||||
"com_nav_welcome_message": "Como posso ajudar você hoje?",
|
||||
"com_show_agent_settings": "Mostrar Configurações do Agente",
|
||||
|
|
@ -387,24 +430,37 @@
|
|||
"com_sidepanel_hide_panel": "Ocultar Painel",
|
||||
"com_sidepanel_manage_files": "Gerenciar Arquivos",
|
||||
"com_sidepanel_parameters": "Parâmetros",
|
||||
"com_sidepanel_select_agent": "Seleciona um Agente.",
|
||||
"com_sidepanel_select_assistant": "Selecionar um Assistente",
|
||||
"com_ui_accept": "Eu aceito",
|
||||
"com_ui_add": "Adicionar",
|
||||
"com_ui_add_model_preset": "Adicionar um modelo ou predefinição para uma resposta adicional",
|
||||
"com_ui_add_multi_conversation": "Adicionar conversação múltiplca",
|
||||
"com_ui_admin": "Admin",
|
||||
"com_ui_admin_access_warning": "Desligar o acesso administrativo a esta funcionalidade poderá causar problemas inesperados na UI que precisem de atualizar. Se salvo, a única maneira de reverter será pela configuração do librechat.yaml que afecta todos os cargos.",
|
||||
"com_ui_admin_settings": "Configurações de Admin",
|
||||
"com_ui_advanced": "Avançado",
|
||||
"com_ui_agent": "Agente",
|
||||
"com_ui_agent_delete_error": "Houve um erro ao excluir o agente",
|
||||
"com_ui_agent_deleted": "Agente excluído com sucesso",
|
||||
"com_ui_agent_duplicate_error": "Ocorreu um erro ao duplicar o agente.",
|
||||
"com_ui_agent_duplicated": "Agente duplicado com sucesso",
|
||||
"com_ui_agent_editing_allowed": "Este agente já pode ser editado por outros utilizadores.",
|
||||
"com_ui_agents": "Agentes",
|
||||
"com_ui_agents_allow_create": "Permitir a criação de Agentes",
|
||||
"com_ui_agents_allow_share_global": "Permitir a partilha de Agentes com todos os utilizadores",
|
||||
"com_ui_agents_allow_use": "Permitir o uso de Agentes",
|
||||
"com_ui_all": "todos",
|
||||
"com_ui_all_proper": "Todos",
|
||||
"com_ui_analyzing": "A Analisar",
|
||||
"com_ui_analyzing_finished": "Análise concluída",
|
||||
"com_ui_api_key": "Chave da API",
|
||||
"com_ui_archive": "Arquivar",
|
||||
"com_ui_archive_error": "Falha ao arquivar conversa",
|
||||
"com_ui_artifact_click": "Clique para abrir",
|
||||
"com_ui_artifacts": "Artefatos",
|
||||
"com_ui_artifacts_toggle": "Alternar UI de Artefatos",
|
||||
"com_ui_artifacts_toggle_agent": "Permitir Artefactos",
|
||||
"com_ui_ascending": "Asc",
|
||||
"com_ui_assistant": "Assistente",
|
||||
"com_ui_assistant_delete_error": "Houve um erro ao excluir o assistente",
|
||||
|
|
@ -417,35 +473,53 @@
|
|||
"com_ui_attach_error_type": "Tipo de arquivo não suportado para o endpoint:",
|
||||
"com_ui_attach_warn_endpoint": "Arquivos não compatíveis podem ser ignorados sem uma ferramenta compatível",
|
||||
"com_ui_attachment": "Anexo",
|
||||
"com_ui_auth_type": "Tipo de Autenticação",
|
||||
"com_ui_auth_url": "Endereço de Autorização",
|
||||
"com_ui_authentication": "Autenticação",
|
||||
"com_ui_authentication_type": "Tipo de Autenticação",
|
||||
"com_ui_avatar": "Avatar",
|
||||
"com_ui_azure": "Azure",
|
||||
"com_ui_back_to_chat": "Voltar ao Chat",
|
||||
"com_ui_back_to_prompts": "Voltar aos Prompts",
|
||||
"com_ui_basic": "Basic",
|
||||
"com_ui_basic_auth_header": "Cabeçalho de Autorização Basic",
|
||||
"com_ui_bearer": "Bearer",
|
||||
"com_ui_bookmark_delete_confirm": "Tem certeza de que deseja excluir este favorito?",
|
||||
"com_ui_bookmarks": "Favoritos",
|
||||
"com_ui_bookmarks_add": "Adicionar Bookmarks",
|
||||
"com_ui_bookmarks_add_to_conversation": "Adicionar à conversa atual",
|
||||
"com_ui_bookmarks_count": "Contagem",
|
||||
"com_ui_bookmarks_create_error": "Houve um erro ao criar o favorito",
|
||||
"com_ui_bookmarks_create_exists": "Este favorito já existe",
|
||||
"com_ui_bookmarks_create_success": "Favorito criado com sucesso",
|
||||
"com_ui_bookmarks_delete": "Apagar Favorito",
|
||||
"com_ui_bookmarks_delete_error": "Houve um erro ao excluir o favorito",
|
||||
"com_ui_bookmarks_delete_success": "Favorito excluído com sucesso",
|
||||
"com_ui_bookmarks_description": "Descrição",
|
||||
"com_ui_bookmarks_edit": "Editar Favorito",
|
||||
"com_ui_bookmarks_filter": "Filtrar favoritos...",
|
||||
"com_ui_bookmarks_new": "Novo Favorito",
|
||||
"com_ui_bookmarks_title": "Título",
|
||||
"com_ui_bookmarks_update_error": "Houve um erro ao atualizar o favorito",
|
||||
"com_ui_bookmarks_update_success": "Favorito atualizado com sucesso",
|
||||
"com_ui_bulk_delete_error": "Falha ao apagar ligações partilhadas",
|
||||
"com_ui_callback_url": "Endereço de Callback",
|
||||
"com_ui_cancel": "Cancelar",
|
||||
"com_ui_chat": "Chat",
|
||||
"com_ui_chat_history": "Histórico de Chat",
|
||||
"com_ui_clear": "Limpar",
|
||||
"com_ui_clear_all": "Limpar tudo",
|
||||
"com_ui_client_id": "ID de Cliente",
|
||||
"com_ui_client_secret": "Client Secret",
|
||||
"com_ui_close": "Fechar",
|
||||
"com_ui_close_menu": "Fechar Menu",
|
||||
"com_ui_code": "Código",
|
||||
"com_ui_collapse_chat": "Colapsar Conversa",
|
||||
"com_ui_command_placeholder": "Opcional: Insira um comando para o prompt ou o nome será usado.",
|
||||
"com_ui_command_usage_placeholder": "Selecione um Prompt por comando ou nome",
|
||||
"com_ui_confirm_action": "Confirmar Ação",
|
||||
"com_ui_confirm_admin_use_change": "Mudar esta configuração irá bloquear acessos para administradores, você inclusivé. Tem a certeza que pretende avançar?",
|
||||
"com_ui_confirm_change": "Confirmar alteração",
|
||||
"com_ui_context": "Contexto",
|
||||
"com_ui_continue": "Continuar",
|
||||
"com_ui_controls": "Controles",
|
||||
|
|
@ -457,6 +531,9 @@
|
|||
"com_ui_create": "Criar",
|
||||
"com_ui_create_link": "Criar link",
|
||||
"com_ui_create_prompt": "Criar Prompt",
|
||||
"com_ui_currently_production": "Atualmente em produção",
|
||||
"com_ui_custom": "Costumizar",
|
||||
"com_ui_custom_header_name": "Nome de Cabeçalho Customizado",
|
||||
"com_ui_custom_prompt_mode": "Modo de Prompt Personalizado",
|
||||
"com_ui_dashboard": "Painel",
|
||||
"com_ui_date": "Data",
|
||||
|
|
@ -477,6 +554,7 @@
|
|||
"com_ui_date_today": "Hoje",
|
||||
"com_ui_date_yesterday": "Ontem",
|
||||
"com_ui_decline": "Eu não aceito",
|
||||
"com_ui_default_post_request": "Default (Pedido POST)",
|
||||
"com_ui_delete": "Excluir",
|
||||
"com_ui_delete_action": "Excluir Ação",
|
||||
"com_ui_delete_action_confirm": "Tem certeza de que deseja excluir esta ação?",
|
||||
|
|
@ -486,24 +564,39 @@
|
|||
"com_ui_delete_confirm_prompt_version_var": "Isso excluirá a versão selecionada para \"{{0}}\". Se não houver outras versões, o prompt será excluído.",
|
||||
"com_ui_delete_conversation": "Excluir chat?",
|
||||
"com_ui_delete_prompt": "Excluir Prompt?",
|
||||
"com_ui_delete_shared_link": "Apagar endereço partilhado?",
|
||||
"com_ui_delete_tool": "Excluir Ferramenta",
|
||||
"com_ui_delete_tool_confirm": "Tem certeza de que deseja excluir esta ferramenta?",
|
||||
"com_ui_descending": "Desc",
|
||||
"com_ui_description": "Descrição",
|
||||
"com_ui_description_placeholder": "Opcional: Insira uma descrição para exibir para o prompt",
|
||||
"com_ui_download": "Descarregar",
|
||||
"com_ui_download_artifact": "Descarregar Artefacto",
|
||||
"com_ui_download_error": "Erro ao baixar o arquivo. O arquivo pode ter sido excluído.",
|
||||
"com_ui_dropdown_variables": "Variáveis de dropdown:",
|
||||
"com_ui_dropdown_variables_info": "Crie menus dropdown personalizados para seus prompts: `{{nome_da_variável:opção1|opção2|opção3}}`",
|
||||
"com_ui_duplicate": "Duplicar",
|
||||
"com_ui_duplication_error": "Ocorreu um erro ao duplicar esta conversa",
|
||||
"com_ui_duplication_processing": "A duplicar conversa...",
|
||||
"com_ui_duplication_success": "Conversa duplicada com sucesso",
|
||||
"com_ui_edit": "Editar",
|
||||
"com_ui_empty_category": "-",
|
||||
"com_ui_endpoint": "Endpoint",
|
||||
"com_ui_endpoint_menu": "Menu de Endereços do LLM",
|
||||
"com_ui_endpoints_available": "Endereços Disponíveis",
|
||||
"com_ui_enter": "Entrar",
|
||||
"com_ui_enter_api_key": "Inserir Chave da API",
|
||||
"com_ui_enter_openapi_schema": "Insira o seu schema da OpenAPI aqui",
|
||||
"com_ui_enter_var": "Inserir {{0}}",
|
||||
"com_ui_error": "Erro",
|
||||
"com_ui_error_connection": "Erro ao conectar ao servidor, tente atualizar a página.",
|
||||
"com_ui_error_save_admin_settings": "Houve um erro ao salvar suas configurações de admin.",
|
||||
"com_ui_examples": "Exemplos",
|
||||
"com_ui_export_convo_modal": "Exportar Modal da Conversa",
|
||||
"com_ui_field_required": "Este campo é obrigatório",
|
||||
"com_ui_filter_prompts": "Filtro de Comando",
|
||||
"com_ui_filter_prompts_name": "Filtrar prompts por nome",
|
||||
"com_ui_finance": "Finanças",
|
||||
"com_ui_fork": "Bifurcar",
|
||||
"com_ui_fork_all_target": "Incluir todos para/de aqui",
|
||||
"com_ui_fork_branches": "Incluir ramificações relacionadas",
|
||||
|
|
@ -526,9 +619,12 @@
|
|||
"com_ui_fork_split_target_setting": "Iniciar bifurcação a partir da mensagem alvo por padrão",
|
||||
"com_ui_fork_success": "Conversa bifurcada com sucesso",
|
||||
"com_ui_fork_visible": "Apenas mensagens visíveis",
|
||||
"com_ui_go_back": "Para trás",
|
||||
"com_ui_go_to_conversation": "Ir para a conversa",
|
||||
"com_ui_happy_birthday": "É meu 1º aniversário!",
|
||||
"com_ui_hide_qr": "Esconder QR Code",
|
||||
"com_ui_host": "Host",
|
||||
"com_ui_idea": "Ideias",
|
||||
"com_ui_image_gen": "Geração de Imagem",
|
||||
"com_ui_import_conversation": "Importar",
|
||||
"com_ui_import_conversation_error": "Houve um erro ao importar suas conversas",
|
||||
|
|
@ -536,16 +632,28 @@
|
|||
"com_ui_import_conversation_info": "Importar conversas de um arquivo JSON",
|
||||
"com_ui_import_conversation_success": "Conversas importadas com sucesso",
|
||||
"com_ui_include_shadcnui": "Incluir instruções de componentes shadcn/ui",
|
||||
"com_ui_include_shadcnui_agent": "Incluir instruções shadcn/ui",
|
||||
"com_ui_input": "Entrada",
|
||||
"com_ui_instructions": "Instruções",
|
||||
"com_ui_latest_footer": "Toda IA para Todos.",
|
||||
"com_ui_latest_production_version": "Última versão produtiva",
|
||||
"com_ui_latest_version": "Última versão",
|
||||
"com_ui_librechat_code_api_key": "Obtem a tua chave da API do Interpretador de código Librechat",
|
||||
"com_ui_librechat_code_api_subtitle": "Seguro. Multilíngua. Entrada/Saída de Ficheiros.",
|
||||
"com_ui_librechat_code_api_title": "Correr código AI",
|
||||
"com_ui_llm_menu": "Menu LLM",
|
||||
"com_ui_llms_available": "LLMs disponíveis",
|
||||
"com_ui_loading": "A Carregar....",
|
||||
"com_ui_locked": "Bloqueado",
|
||||
"com_ui_logo": "Logotipo {{0}}",
|
||||
"com_ui_manage": "Gerenciar",
|
||||
"com_ui_max_tags": "O número máximo permitido é {{0}}, usando os valores mais recentes.",
|
||||
"com_ui_mention": "Mencione um endpoint, assistente ou predefinição para alternar rapidamente para ele",
|
||||
"com_ui_min_tags": "Não é possível remover mais valores, um mínimo de {{0}} é necessário.",
|
||||
"com_ui_misc": "Outros",
|
||||
"com_ui_model": "Modelo",
|
||||
"com_ui_model_parameters": "Parâmetros do Modelo",
|
||||
"com_ui_more_info": "Mais informação",
|
||||
"com_ui_my_prompts": "Meus Prompts",
|
||||
"com_ui_name": "Nome",
|
||||
"com_ui_new_chat": "Novo chat",
|
||||
|
|
@ -553,15 +661,21 @@
|
|||
"com_ui_no": "Não",
|
||||
"com_ui_no_bookmarks": "Parece que você ainda não tem favoritos. Clique em um chat e adicione um novo",
|
||||
"com_ui_no_category": "Sem categoria",
|
||||
"com_ui_no_changes": "Sem alterações para atualizar",
|
||||
"com_ui_no_terms_content": "Nenhum conteúdo de termos e condições para exibir",
|
||||
"com_ui_none": "Nenhum",
|
||||
"com_ui_none_selected": "Nenhum selecionado",
|
||||
"com_ui_nothing_found": "Nada encontrado",
|
||||
"com_ui_oauth": "OAuth",
|
||||
"com_ui_of": "de",
|
||||
"com_ui_off": "Desligado",
|
||||
"com_ui_on": "Ligado",
|
||||
"com_ui_openai": "OpenAI",
|
||||
"com_ui_page": "Página",
|
||||
"com_ui_prev": "Anterior",
|
||||
"com_ui_preview": "Pré-visualizar",
|
||||
"com_ui_privacy_policy": "Política de Privacidade",
|
||||
"com_ui_privacy_policy_url": "Endereço de política de privacidade",
|
||||
"com_ui_prompt": "Prompt",
|
||||
"com_ui_prompt_already_shared_to_all": "Este prompt já está compartilhado com todos os usuários",
|
||||
"com_ui_prompt_name": "Nome do Prompt",
|
||||
|
|
@ -576,21 +690,40 @@
|
|||
"com_ui_prompts_allow_use": "Permitir uso de Prompts",
|
||||
"com_ui_provider": "Provedor",
|
||||
"com_ui_read_aloud": "Ler em voz alta",
|
||||
"com_ui_refresh_link": "Atualizar endereço",
|
||||
"com_ui_regenerate": "Regenerar",
|
||||
"com_ui_region": "Região",
|
||||
"com_ui_rename": "Renomear",
|
||||
"com_ui_rename_prompt": "Renomear comando",
|
||||
"com_ui_requires_auth": "Requer autenticação",
|
||||
"com_ui_reset_var": "Reiniciar {{0}}",
|
||||
"com_ui_result": "Resultado",
|
||||
"com_ui_revoke": "Revogar",
|
||||
"com_ui_revoke_info": "Revogar todas as credenciais fornecidas pelo usuário",
|
||||
"com_ui_revoke_key_confirm": "Tem a certeza que pretende revogar esta chave?",
|
||||
"com_ui_revoke_key_endpoint": "Revogar chave para {{0}}",
|
||||
"com_ui_revoke_keys": "Revogar chaves",
|
||||
"com_ui_revoke_keys_confirm": "Tem a certeza que pretende revogar todas as chaves?",
|
||||
"com_ui_role_select": "Papel",
|
||||
"com_ui_roleplay": "Roleplay",
|
||||
"com_ui_run_code": "Correr código",
|
||||
"com_ui_run_code_error": "Ocorreu um erro ao correr o código",
|
||||
"com_ui_save": "Salvar",
|
||||
"com_ui_save_submit": "Salvar & Enviar",
|
||||
"com_ui_saved": "Salvo!",
|
||||
"com_ui_schema": "Schema",
|
||||
"com_ui_scope": "Scope",
|
||||
"com_ui_search": "Procurar",
|
||||
"com_ui_select": "Selecionar",
|
||||
"com_ui_select_file": "Selecionar um arquivo",
|
||||
"com_ui_select_model": "Selecionar um modelo",
|
||||
"com_ui_select_provider": "Selecionar um provedor",
|
||||
"com_ui_select_provider_first": "Selecione um provedor primeiro",
|
||||
"com_ui_select_region": "Escolha uma região",
|
||||
"com_ui_select_search_model": "Pesquisar modelo por nome",
|
||||
"com_ui_select_search_plugin": "Pesquisar plugin por nome",
|
||||
"com_ui_select_search_provider": "Procurar provedor por nome",
|
||||
"com_ui_select_search_region": "Procurar região por nome",
|
||||
"com_ui_share": "Compartilhar",
|
||||
"com_ui_share_create_message": "Seu nome e quaisquer mensagens que você adicionar após o compartilhamento permanecerão privadas.",
|
||||
"com_ui_share_delete_error": "Houve um erro ao excluir o link compartilhado",
|
||||
|
|
@ -599,37 +732,58 @@
|
|||
"com_ui_share_to_all_users": "Compartilhar com todos os usuários",
|
||||
"com_ui_share_update_message": "Seu nome, instruções personalizadas e quaisquer mensagens que você adicionar após o compartilhamento permanecerão privadas.",
|
||||
"com_ui_share_var": "Compartilhar {{0}}",
|
||||
"com_ui_shared_link_bulk_delete_success": "Endereços partilhados apagados com sucesso",
|
||||
"com_ui_shared_link_delete_success": "Endereço partilhado apagado com sucesso",
|
||||
"com_ui_shared_link_not_found": "Link compartilhado não encontrado",
|
||||
"com_ui_shared_prompts": "Prompts Compartilhados",
|
||||
"com_ui_shop": "Compras",
|
||||
"com_ui_show_all": "Mostrar Todos",
|
||||
"com_ui_show_qr": "Mostrar QR Code",
|
||||
"com_ui_sign_in_to_domain": "Autenticar em {{0}}",
|
||||
"com_ui_simple": "Simples",
|
||||
"com_ui_size": "Tamanho",
|
||||
"com_ui_special_variables": "Variáveis especiais:",
|
||||
"com_ui_special_variables_info": "Use `{{current_date}}` para a data atual, e `{{current_user}}` para o nome da sua conta.",
|
||||
"com_ui_speech_while_submitting": "Não é possível submeter fala enquanto a resposta está a ser gerada.",
|
||||
"com_ui_stop": "Parar",
|
||||
"com_ui_storage": "Armazenamento",
|
||||
"com_ui_submit": "Enviar",
|
||||
"com_ui_teach_or_explain": "A aprender",
|
||||
"com_ui_temporary_chat": "Conversa temporária",
|
||||
"com_ui_terms_and_conditions": "Termos e Condições",
|
||||
"com_ui_terms_of_service": "Termos de Serviço",
|
||||
"com_ui_thinking": "A pensar...",
|
||||
"com_ui_thoughts": "Raciocínio",
|
||||
"com_ui_token_exchange_method": "Método de troca de Token",
|
||||
"com_ui_token_url": "Endereço do Token",
|
||||
"com_ui_tools": "Ferramentas",
|
||||
"com_ui_travel": "Viajar",
|
||||
"com_ui_unarchive": "Desarquivar",
|
||||
"com_ui_unarchive_error": "Falha ao desarquivar conversa",
|
||||
"com_ui_unknown": "Desconhecido",
|
||||
"com_ui_update": "Atualizar",
|
||||
"com_ui_upload": "Carregar",
|
||||
"com_ui_upload_code_files": "Enviar para o interpretador de código",
|
||||
"com_ui_upload_delay": "O upload de \"{{0}}\" está demorando mais do que o esperado. Por favor, aguarde enquanto o arquivo termina de ser indexado para recuperação.",
|
||||
"com_ui_upload_error": "Houve um erro ao carregar seu arquivo",
|
||||
"com_ui_upload_file_search": "Enviar para a pesquisa de Ficheiro",
|
||||
"com_ui_upload_files": "Carregar arquivos",
|
||||
"com_ui_upload_image": "Carregar uma imagem",
|
||||
"com_ui_upload_image_input": "Inserir Imagem",
|
||||
"com_ui_upload_invalid": "Arquivo inválido para upload. Deve ser uma imagem não excedendo o limite",
|
||||
"com_ui_upload_invalid_var": "Arquivo inválido para upload. Deve ser uma imagem não excedendo {{0}} MB",
|
||||
"com_ui_upload_success": "Arquivo carregado com sucesso",
|
||||
"com_ui_upload_type": "Escolher tipo de Carregamento",
|
||||
"com_ui_use_micrphone": "Usar microfone",
|
||||
"com_ui_use_prompt": "Usar prompt",
|
||||
"com_ui_variables": "Variáveis",
|
||||
"com_ui_variables_info": "Use chaves duplas no seu texto para criar variáveis, por exemplo, `{{exemplo de variável}}`, para preencher posteriormente ao usar o prompt.",
|
||||
"com_ui_version_var": "Versão {{0}}",
|
||||
"com_ui_versions": "Versões",
|
||||
"com_ui_view_source": "Ver fonte da conversa",
|
||||
"com_ui_write": "A escrever",
|
||||
"com_ui_yes": "Sim",
|
||||
"com_user_message": "Você"
|
||||
"com_ui_zoom": "Ampliar",
|
||||
"com_user_message": "Você",
|
||||
"com_warning_resubmit_unsupported": "O reenvio da mensagem de IA não é suportado por este endereço."
|
||||
}
|
||||
|
|
@ -333,11 +333,10 @@
|
|||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "Автоопределение",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
|
|
@ -347,12 +346,13 @@
|
|||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_language": "Локализация",
|
||||
"com_nav_latex_parsing": "Обработка LaTeX в сообщениях (может повлиять на производительность)",
|
||||
"com_nav_log_out": "Выйти",
|
||||
|
|
|
|||
|
|
@ -135,12 +135,12 @@
|
|||
"com_nav_font_size": "Textstorlek",
|
||||
"com_nav_help_faq": "Hjälp & Vanliga frågor",
|
||||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "Automatisk detektering",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
|
|
@ -150,12 +150,13 @@
|
|||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_log_out": "Logga ut",
|
||||
"com_nav_not_supported": "Stöds ej",
|
||||
"com_nav_open_sidebar": "Öppna sidofält",
|
||||
|
|
|
|||
|
|
@ -337,11 +337,10 @@
|
|||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "Auto detect",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
|
|
@ -351,12 +350,13 @@
|
|||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_language": "Dil",
|
||||
"com_nav_latex_parsing": "Mesajlarda LaTeX işleme (performansı etkileyebilir)",
|
||||
"com_nav_log_out": "Çıkış yap",
|
||||
|
|
|
|||
|
|
@ -133,12 +133,12 @@
|
|||
"com_nav_font_size": "Cỡ chữ",
|
||||
"com_nav_help_faq": "Trợ giúp & Câu hỏi thường gặp",
|
||||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "Tự động phát hiện",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
|
|
@ -148,12 +148,13 @@
|
|||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_log_out": "Đăng xuất",
|
||||
"com_nav_not_supported": "Không được hỗ trợ",
|
||||
"com_nav_open_sidebar": "Mở thanh bên",
|
||||
|
|
|
|||
|
|
@ -339,11 +339,10 @@
|
|||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "自动检测语言",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
|
|
@ -353,11 +352,12 @@
|
|||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_language": "语言",
|
||||
"com_nav_latex_parsing": "解析消息中的 LaTeX(可能会影响性能)",
|
||||
|
|
|
|||
|
|
@ -333,11 +333,10 @@
|
|||
"com_nav_lang_arabic": "العربية",
|
||||
"com_nav_lang_auto": "自動偵測",
|
||||
"com_nav_lang_brazilian_portuguese": "Português Brasileiro",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_chinese": "中文",
|
||||
"com_nav_lang_dutch": "Nederlands",
|
||||
"com_nav_lang_english": "English",
|
||||
"com_nav_lang_estonian": "Eesti keel",
|
||||
"com_nav_lang_finnish": "Suomi",
|
||||
"com_nav_lang_french": "Français ",
|
||||
"com_nav_lang_german": "Deutsch",
|
||||
|
|
@ -347,12 +346,13 @@
|
|||
"com_nav_lang_japanese": "日本語",
|
||||
"com_nav_lang_korean": "한국어",
|
||||
"com_nav_lang_polish": "Polski",
|
||||
"com_nav_lang_portuguese": "Português",
|
||||
"com_nav_lang_russian": "Русский",
|
||||
"com_nav_lang_spanish": "Español",
|
||||
"com_nav_lang_swedish": "Svenska",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_lang_turkish": "Türkçe",
|
||||
"com_nav_lang_vietnamese": "Tiếng Việt",
|
||||
"com_nav_lang_traditional_chinese": "繁體中文",
|
||||
"com_nav_language": "語言",
|
||||
"com_nav_latex_parsing": "解析訊息中的 LaTeX 內容(可能影響效能)",
|
||||
"com_nav_log_out": "登出",
|
||||
|
|
|
|||
|
|
@ -1,6 +1,13 @@
|
|||
import { excelMimeTypes, QueryKeys } from 'librechat-data-provider';
|
||||
import {
|
||||
megabyte,
|
||||
QueryKeys,
|
||||
excelMimeTypes,
|
||||
codeTypeMapping,
|
||||
fileConfig as defaultFileConfig,
|
||||
} from 'librechat-data-provider';
|
||||
import type { TFile, EndpointFileConfig } from 'librechat-data-provider';
|
||||
import type { QueryClient } from '@tanstack/react-query';
|
||||
import type { TFile } from 'librechat-data-provider';
|
||||
import type { ExtendedFile } from '~/common';
|
||||
import SheetPaths from '~/components/svg/Files/SheetPaths';
|
||||
import TextPaths from '~/components/svg/Files/TextPaths';
|
||||
import FilePaths from '~/components/svg/Files/FilePaths';
|
||||
|
|
@ -190,3 +197,92 @@ export function formatBytes(bytes: number, decimals = 2) {
|
|||
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
||||
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm));
|
||||
}
|
||||
|
||||
const { checkType } = defaultFileConfig;
|
||||
|
||||
export const validateFiles = ({
|
||||
files,
|
||||
fileList,
|
||||
setError,
|
||||
endpointFileConfig,
|
||||
}: {
|
||||
fileList: File[];
|
||||
files: Map<string, ExtendedFile>;
|
||||
setError: (error: string) => void;
|
||||
endpointFileConfig: EndpointFileConfig;
|
||||
}) => {
|
||||
const { fileLimit, fileSizeLimit, totalSizeLimit, supportedMimeTypes } = endpointFileConfig;
|
||||
const existingFiles = Array.from(files.values());
|
||||
const incomingTotalSize = fileList.reduce((total, file) => total + file.size, 0);
|
||||
if (incomingTotalSize === 0) {
|
||||
setError('com_error_files_empty');
|
||||
return false;
|
||||
}
|
||||
const currentTotalSize = existingFiles.reduce((total, file) => total + file.size, 0);
|
||||
|
||||
if (fileLimit && fileList.length + files.size > fileLimit) {
|
||||
setError(`You can only upload up to ${fileLimit} files at a time.`);
|
||||
return false;
|
||||
}
|
||||
|
||||
for (let i = 0; i < fileList.length; i++) {
|
||||
let originalFile = fileList[i];
|
||||
let fileType = originalFile.type;
|
||||
const extension = originalFile.name.split('.').pop() ?? '';
|
||||
const knownCodeType = codeTypeMapping[extension];
|
||||
|
||||
// Infer MIME type for Known Code files when the type is empty or a mismatch
|
||||
if (knownCodeType && (!fileType || fileType !== knownCodeType)) {
|
||||
fileType = knownCodeType;
|
||||
}
|
||||
|
||||
// Check if the file type is still empty after the extension check
|
||||
if (!fileType) {
|
||||
setError('Unable to determine file type for: ' + originalFile.name);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Replace empty type with inferred type
|
||||
if (originalFile.type !== fileType) {
|
||||
const newFile = new File([originalFile], originalFile.name, { type: fileType });
|
||||
originalFile = newFile;
|
||||
fileList[i] = newFile;
|
||||
}
|
||||
|
||||
if (!checkType(originalFile.type, supportedMimeTypes)) {
|
||||
console.log(originalFile);
|
||||
setError('Currently, unsupported file type: ' + originalFile.type);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (fileSizeLimit && originalFile.size >= fileSizeLimit) {
|
||||
setError(`File size exceeds ${fileSizeLimit / megabyte} MB.`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (totalSizeLimit && currentTotalSize + incomingTotalSize > totalSizeLimit) {
|
||||
setError(`The total size of the files cannot exceed ${totalSizeLimit / megabyte} MB.`);
|
||||
return false;
|
||||
}
|
||||
|
||||
const combinedFilesInfo = [
|
||||
...existingFiles.map(
|
||||
(file) =>
|
||||
`${file.file?.name ?? file.filename}-${file.size}-${file.type?.split('/')[0] ?? 'file'}`,
|
||||
),
|
||||
...fileList.map(
|
||||
(file: File | undefined) =>
|
||||
`${file?.name}-${file?.size}-${file?.type.split('/')[0] ?? 'file'}`,
|
||||
),
|
||||
];
|
||||
|
||||
const uniqueFilesSet = new Set(combinedFilesInfo);
|
||||
|
||||
if (uniqueFilesSet.size !== combinedFilesInfo.length) {
|
||||
setError('com_error_files_dupe');
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue