From 6f17c29d93b00834611a92b8e9bc9b1dd647cb01 Mon Sep 17 00:00:00 2001 From: Aleix Dorca Date: Thu, 23 Jan 2025 08:39:02 +0100 Subject: [PATCH 01/12] Update catalan translation.json --- src/lib/i18n/locales/ca-ES/translation.json | 70 ++++++++++----------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/src/lib/i18n/locales/ca-ES/translation.json b/src/lib/i18n/locales/ca-ES/translation.json index 2d2e94600..f3352fbff 100644 --- a/src/lib/i18n/locales/ca-ES/translation.json +++ b/src/lib/i18n/locales/ca-ES/translation.json @@ -5,7 +5,7 @@ "(e.g. `sh webui.sh --api`)": "(p. ex. `sh webui.sh --api`)", "(latest)": "(últim)", "{{ models }}": "{{ models }}", - "{{COUNT}} Replies": "", + "{{COUNT}} Replies": "{{COUNT}} respostes", "{{user}}'s Chats": "Els xats de {{user}}", "{{webUIName}} Backend Required": "El Backend de {{webUIName}} és necessari", "*Prompt node ID(s) are required for image generation": "*Els identificadors de nodes d'indicacions són necessaris per a la generació d'imatges", @@ -35,7 +35,7 @@ "Add Group": "Afegir grup", "Add Memory": "Afegir memòria", "Add Model": "Afegir un model", - "Add Reaction": "", + "Add Reaction": "Afegir reacció", "Add Tag": "Afegir etiqueta", "Add Tags": "Afegir etiquetes", "Add text content": "Afegir contingut de text", @@ -51,7 +51,7 @@ "Advanced Params": "Paràmetres avançats", "All Documents": "Tots els documents", "All models deleted successfully": "Tots els models s'han eliminat correctament", - "Allow Chat Controls": "", + "Allow Chat Controls": "Permetre els controls de xat", "Allow Chat Delete": "Permetre eliminar el xat", "Allow Chat Deletion": "Permetre la supressió del xat", "Allow Chat Edit": "Permetre editar el xat", @@ -60,7 +60,7 @@ "Allow Temporary Chat": "Permetre el xat temporal", "Allow User Location": "Permetre la ubicació de l'usuari", "Allow Voice Interruption in Call": "Permetre la interrupció de la veu en una trucada", - "Allowed Endpoints": "", + "Allowed Endpoints": "Punts d'accés permesos", "Already have an account?": "Ja tens un compte?", "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Alternativa al top_p, i pretén garantir un equilibri de qualitat i varietat. El paràmetre p representa la probabilitat mínima que es consideri un token, en relació amb la probabilitat del token més probable. Per exemple, amb p=0,05 i el token més probable amb una probabilitat de 0,9, es filtren els logits amb un valor inferior a 0,045. (Per defecte: 0.0)", "Amazing": "Al·lucinant", @@ -71,7 +71,7 @@ "API Base URL": "URL Base de l'API", "API Key": "clau API", "API Key created.": "clau API creada.", - "API Key Endpoint Restrictions": "", + "API Key Endpoint Restrictions": "Restriccions del punt d'accés de la Clau API", "API keys": "Claus de l'API", "Application DN": "DN d'aplicació", "Application DN Password": "Contrasenya del DN d'aplicació", @@ -91,7 +91,7 @@ "Assistant": "Assistent", "Attach file": "Adjuntar arxiu", "Attention to detail": "Atenció al detall", - "Attribute for Mail": "", + "Attribute for Mail": "Atribut per al Correu", "Attribute for Username": "Atribut per al Nom d'usuari", "Audio": "Àudio", "August": "Agost", @@ -168,7 +168,7 @@ "Click on the user role button to change a user's role.": "Clica sobre el botó de rol d'usuari per canviar el rol d'un usuari.", "Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Permís d'escriptura al porta-retalls denegat. Comprova els ajustos de navegador per donar l'accés necessari.", "Clone": "Clonar", - "Clone Chat": "", + "Clone Chat": "Clonar el xat", "Close": "Tancar", "Code execution": "Execució de codi", "Code formatted successfully": "Codi formatat correctament", @@ -189,7 +189,7 @@ "Confirm your action": "Confirma la teva acció", "Confirm your new password": "Confirma la teva nova contrasenya", "Connections": "Connexions", - "Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "", + "Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "Restringeix l'esforç de raonament dels models de raonament. Només aplicable a models de raonament de proveïdors específics que donen suport a l'esforç de raonament. (Per defecte: mitjà)", "Contact Admin for WebUI Access": "Posat en contacte amb l'administrador per accedir a WebUI", "Content": "Contingut", "Content Extraction": "Extracció de contingut", @@ -317,7 +317,7 @@ "Embedding Model": "Model d'incrustació", "Embedding Model Engine": "Motor de model d'incrustació", "Embedding model set to \"{{embedding_model}}\"": "Model d'incrustació configurat a \"{{embedding_model}}\"", - "Enable API Key": "", + "Enable API Key": "Activar la Clau API", "Enable autocomplete generation for chat messages": "Activar la generació automàtica per als missatges del xat", "Enable Community Sharing": "Activar l'ús compartit amb la comunitat", "Enable Google Drive": "Activar Google Drive", @@ -355,7 +355,7 @@ "Enter Mojeek Search API Key": "Introdueix la clau API de Mojeek Search", "Enter Number of Steps (e.g. 50)": "Introdueix el nombre de passos (p. ex. 50)", "Enter proxy URL (e.g. https://user:password@host:port)": "Entra l'URL (p. ex. https://user:password@host:port)", - "Enter reasoning effort": "", + "Enter reasoning effort": "Introdueix l'esforç de raonament", "Enter Sampler (e.g. Euler a)": "Introdueix el mostrejador (p.ex. Euler a)", "Enter Scheduler (e.g. Karras)": "Entra el programador (p.ex. Karras)", "Enter Score": "Introdueix la puntuació", @@ -393,7 +393,7 @@ "Evaluations": "Avaluacions", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Exemple: (&(objectClass=inetOrgPerson)(uid=%s))", "Example: ALL": "Exemple: TOTS", - "Example: mail": "", + "Example: mail": "Exemple: mail", "Example: ou=users,dc=foo,dc=example": "Exemple: ou=users,dc=foo,dc=example", "Example: sAMAccountName or uid or userPrincipalName": "Exemple: sAMAccountName o uid o userPrincipalName", "Exclude": "Excloure", @@ -414,12 +414,12 @@ "External Models": "Models externs", "Failed to add file.": "No s'ha pogut afegir l'arxiu.", "Failed to create API Key.": "No s'ha pogut crear la clau API.", - "Failed to fetch models": "", + "Failed to fetch models": "No s'han pogut obtenir els models", "Failed to read clipboard contents": "No s'ha pogut llegir el contingut del porta-retalls", "Failed to save models configuration": "No s'ha pogut desar la configuració dels models", "Failed to update settings": "No s'han pogut actualitzar les preferències", "Failed to upload file.": "No s'ha pogut pujar l'arxiu.", - "Features Permissions": "", + "Features Permissions": "Permisos de les característiques", "February": "Febrer", "Feedback History": "Històric de comentaris", "Feedbacks": "Comentaris", @@ -494,15 +494,15 @@ "I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "Afirmo que he llegit i entenc les implicacions de la meva acció. Soc conscient dels riscos associats a l'execució de codi arbitrari i he verificat la fiabilitat de la font.", "ID": "ID", "Ignite curiosity": "Despertar la curiositat", - "Image": "", + "Image": "Imatge", "Image Compression": "Compressió d'imatges", - "Image generation": "", - "Image Generation": "", + "Image generation": "Generació d'imatges", + "Image Generation": "Generació d'imatges", "Image Generation (Experimental)": "Generació d'imatges (Experimental)", "Image Generation Engine": "Motor de generació d'imatges", "Image Max Compression Size": "Mida màxima de la compressió d'imatges", - "Image Prompt Generation": "", - "Image Prompt Generation Prompt": "", + "Image Prompt Generation": "Generació d'indicacions d'imatge", + "Image Prompt Generation Prompt": "Indicació per a la generació d'indicacions d'imatge", "Image Settings": "Preferències d'imatges", "Images": "Imatges", "Import Chats": "Importar xats", @@ -523,7 +523,7 @@ "Interface": "Interfície", "Invalid file format.": "Format d'arxiu no vàlid.", "Invalid Tag": "Etiqueta no vàlida", - "is typing...": "", + "is typing...": "està escrivint...", "January": "Gener", "Jina API Key": "Clau API de Jina", "join our Discord for help.": "uneix-te al nostre Discord per obtenir ajuda.", @@ -548,7 +548,7 @@ "Language": "Idioma", "Last Active": "Activitat recent", "Last Modified": "Modificació", - "Last reply": "", + "Last reply": "Darrera resposta", "LDAP": "LDAP", "LDAP server updated": "Servidor LDAP actualitzat", "Leaderboard": "Tauler de classificació", @@ -559,7 +559,7 @@ "Leave empty to use the default prompt, or enter a custom prompt": "Deixa-ho en blanc per utilitzar la indicació predeterminada o introdueix una indicació personalitzada", "Light": "Clar", "Listening...": "Escoltant...", - "Llama.cpp": "", + "Llama.cpp": "Llama.cpp", "LLMs can make mistakes. Verify important information.": "Els models de llenguatge poden cometre errors. Verifica la informació important.", "Local": "Local", "Local Models": "Models locals", @@ -570,7 +570,7 @@ "Make sure to export a workflow.json file as API format from ComfyUI.": "Assegura't d'exportar un fitxer workflow.json com a format API des de ComfyUI.", "Manage": "Gestionar", "Manage Arena Models": "Gestionar els models de l'Arena", - "Manage Models": "", + "Manage Models": "Gestionar els models", "Manage Ollama": "Gestionar Ollama", "Manage Ollama API Connections": "Gestionar les connexions a l'API d'Ollama", "Manage OpenAI API Connections": "Gestionar les connexions a l'API d'OpenAI", @@ -625,7 +625,7 @@ "Name": "Nom", "Name your knowledge base": "Anomena la teva base de coneixement", "New Chat": "Nou xat", - "New Folder": "", + "New Folder": "Nova carpeta", "New Password": "Nova contrasenya", "new-channel": "nou-canal", "No content found": "No s'ha trobat contingut", @@ -636,7 +636,7 @@ "No files found.": "No s'han trobat arxius.", "No groups with access, add a group to grant access": "No hi ha cap grup amb accés, afegeix un grup per concedir accés", "No HTML, CSS, or JavaScript content found.": "No s'ha trobat contingut HTML, CSS o JavaScript.", - "No inference engine with management support found": "", + "No inference engine with management support found": "No s'ha trobat un motor d'inferència amb suport de gestió", "No knowledge found": "No s'ha trobat Coneixement", "No model IDs": "No hi ha IDs de model", "No models found": "No s'han trobat models", @@ -741,9 +741,9 @@ "RAG Template": "Plantilla RAG", "Rating": "Valoració", "Re-rank models by topic similarity": "Reclassificar els models per similitud de temes", - "Read": "", + "Read": "Llegit", "Read Aloud": "Llegir en veu alta", - "Reasoning Effort": "", + "Reasoning Effort": "Esforç de raonament", "Record voice": "Enregistrar la veu", "Redirecting you to OpenWebUI Community": "Redirigint-te a la comunitat OpenWebUI", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative. (Default: 40)": "Redueix la probabilitat de generar ximpleries. Un valor més alt (p. ex. 100) donarà respostes més diverses, mentre que un valor més baix (p. ex. 10) serà més conservador. (Per defecte: 40)", @@ -758,7 +758,7 @@ "Rename": "Canviar el nom", "Reorder Models": "Reordenar els models", "Repeat Last N": "Repeteix els darrers N", - "Reply in Thread": "", + "Reply in Thread": "Respondre al fil", "Request Mode": "Mode de sol·licitud", "Reranking Model": "Model de reavaluació", "Reranking model disabled": "Model de reavaluació desactivat", @@ -767,7 +767,7 @@ "Reset All Models": "Restablir tots els models", "Reset Upload Directory": "Restableix el directori de pujades", "Reset Vector Storage/Knowledge": "Restableix el Repositori de vectors/Coneixement", - "Reset view": "", + "Reset view": "Netejar la vista", "Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Les notifications de resposta no es poden activar perquè els permisos del lloc web han estat rebutjats. Comprova les preferències del navegador per donar l'accés necessari.", "Response splitting": "Divisió de la resposta", "Result": "Resultat", @@ -820,7 +820,7 @@ "Select a pipeline": "Seleccionar una Pipeline", "Select a pipeline url": "Seleccionar l'URL d'una Pipeline", "Select a tool": "Seleccionar una eina", - "Select an Ollama instance": "", + "Select an Ollama instance": "Seleccionar una instància d'Ollama", "Select Engine": "Seleccionar el motor", "Select Knowledge": "Seleccionar coneixement", "Select model": "Seleccionar un model", @@ -847,7 +847,7 @@ "Set Scheduler": "Establir el programador", "Set Steps": "Establir el nombre de passos", "Set Task Model": "Establir el model de tasca", - "Set the number of layers, which will be off-loaded to GPU. Increasing this value can significantly improve performance for models that are optimized for GPU acceleration but may also consume more power and GPU resources.": "", + "Set the number of layers, which will be off-loaded to GPU. Increasing this value can significantly improve performance for models that are optimized for GPU acceleration but may also consume more power and GPU resources.": "Estableix el nombre de capes que es descarregaran a la GPU. Augmentar aquest valor pot millorar significativament el rendiment dels models optimitzats per a l'acceleració de la GPU, però també pot consumir més energia i recursos de GPU.", "Set the number of worker threads used for computation. This option controls how many threads are used to process incoming requests concurrently. Increasing this value can improve performance under high concurrency workloads but may also consume more CPU resources.": "Establir el nombre de fils de treball utilitzats per al càlcul. Aquesta opció controla quants fils s'utilitzen per processar les sol·licituds entrants simultàniament. Augmentar aquest valor pot millorar el rendiment amb càrregues de treball de concurrència elevada, però també pot consumir més recursos de CPU.", "Set Voice": "Establir la veu", "Set whisper model": "Establir el model whisper", @@ -912,7 +912,7 @@ "The batch size determines how many text requests are processed together at once. A higher batch size can increase the performance and speed of the model, but it also requires more memory. (Default: 512)": "La mida del lot determina quantes sol·licituds de text es processen alhora. Una mida de lot més gran pot augmentar el rendiment i la velocitat del model, però també requereix més memòria. (Per defecte: 512)", "The developers behind this plugin are passionate volunteers from the community. If you find this plugin helpful, please consider contributing to its development.": "Els desenvolupadors d'aquest complement són voluntaris apassionats de la comunitat. Si trobeu útil aquest complement, considereu contribuir al seu desenvolupament.", "The evaluation leaderboard is based on the Elo rating system and is updated in real-time.": "La classificació d'avaluació es basa en el sistema de qualificació Elo i s'actualitza en temps real.", - "The LDAP attribute that maps to the mail that users use to sign in.": "", + "The LDAP attribute that maps to the mail that users use to sign in.": "L'atribut LDAP que s'associa al correu que els usuaris utilitzen per iniciar la sessió.", "The LDAP attribute that maps to the username that users use to sign in.": "L'atribut LDAP que mapeja el nom d'usuari amb l'usuari que vol iniciar sessió", "The leaderboard is currently in beta, and we may adjust the rating calculations as we refine the algorithm.": "La classificació està actualment en versió beta i és possible que s'ajustin els càlculs de la puntuació a mesura que es perfeccioni l'algorisme.", "The maximum file size in MB. If the file size exceeds this limit, the file will not be uploaded.": "La mida màxima del fitxer en MB. Si la mida del fitxer supera aquest límit, el fitxer no es carregarà.", @@ -948,7 +948,7 @@ "To access the GGUF models available for downloading,": "Per accedir als models GGUF disponibles per descarregar,", "To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Per accedir a la WebUI, poseu-vos en contacte amb l'administrador. Els administradors poden gestionar els estats dels usuaris des del tauler d'administració.", "To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Per adjuntar la base de coneixement aquí, afegiu-la primer a l'espai de treball \"Coneixement\".", - "To learn more about available endpoints, visit our documentation.": "", + "To learn more about available endpoints, visit our documentation.": "Per obtenir més informació sobre els punts d'accés disponibles, visiteu la nostra documentació.", "To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "Per protegir la privadesa, només es comparteixen puntuacions, identificadors de models, etiquetes i metadades dels comentaris; els registres de xat romanen privats i no s'inclouen.", "To select actions here, add them to the \"Functions\" workspace first.": "Per seleccionar accions aquí, afegeix-les primer a l'espai de treball \"Funcions\".", "To select filters here, add them to the \"Functions\" workspace first.": "Per seleccionar filtres aquí, afegeix-los primer a l'espai de treball \"Funcions\".", @@ -1027,7 +1027,7 @@ "variable to have them replaced with clipboard content.": "variable per tenir-les reemplaçades amb el contingut del porta-retalls.", "Version": "Versió", "Version {{selectedVersion}} of {{totalVersions}}": "Versió {{selectedVersion}} de {{totalVersions}}", - "View Replies": "", + "View Replies": "Veure les respostes", "Visibility": "Visibilitat", "Voice": "Veu", "Voice Input": "Entrada de veu", @@ -1058,7 +1058,7 @@ "Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text. (Default: 0.9)": "Funciona juntament amb top-k. Un valor més alt (p. ex., 0,95) donarà lloc a un text més divers, mentre que un valor més baix (p. ex., 0,5) generarà un text més concentrat i conservador. (Per defecte: 0,9)", "Workspace": "Espai de treball", "Workspace Permissions": "Permisos de l'espai de treball", - "Write": "", + "Write": "Escriure", "Write a prompt suggestion (e.g. Who are you?)": "Escriu una suggerència d'indicació (p. ex. Qui ets?)", "Write a summary in 50 words that summarizes [topic or keyword].": "Escriu un resum en 50 paraules que resumeixi [tema o paraula clau].", "Write something...": "Escriu quelcom...", @@ -1068,7 +1068,7 @@ "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Només pots xatejar amb un màxim de {{maxCount}} fitxers alhora.", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Pots personalitzar les teves interaccions amb els models de llenguatge afegint memòries mitjançant el botó 'Gestiona' que hi ha a continuació, fent-les més útils i adaptades a tu.", "You cannot upload an empty file.": "No es pot pujar un ariux buit.", - "You do not have permission to access this feature.": "", + "You do not have permission to access this feature.": "No tens permís per accedir a aquesta funcionalitat", "You do not have permission to upload files.": "No tens permisos per pujar arxius.", "You have no archived conversations.": "No tens converses arxivades.", "You have shared this chat": "Has compartit aquest xat", From 863f73de20291b5600bc41de6a61578f1b06655f Mon Sep 17 00:00:00 2001 From: Panda Date: Thu, 23 Jan 2025 18:44:52 +0100 Subject: [PATCH 02/12] Update zh-cn --- src/lib/i18n/locales/zh-CN/translation.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/lib/i18n/locales/zh-CN/translation.json b/src/lib/i18n/locales/zh-CN/translation.json index 53b0a9e7e..ff5d646b5 100644 --- a/src/lib/i18n/locales/zh-CN/translation.json +++ b/src/lib/i18n/locales/zh-CN/translation.json @@ -189,7 +189,7 @@ "Confirm your action": "确定吗?", "Confirm your new password": "确认新密码", "Connections": "外部连接", - "Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "", + "Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "限制推理模型的推理努力。仅适用于支持推理努力的特定提供商的推理模型。(默认值:中等)", "Contact Admin for WebUI Access": "请联系管理员以获取访问权限", "Content": "内容", "Content Extraction": "内容提取", @@ -355,7 +355,7 @@ "Enter Mojeek Search API Key": "输入 Mojeek Search API 密钥", "Enter Number of Steps (e.g. 50)": "输入步骤数 (Steps) (例如:50)", "Enter proxy URL (e.g. https://user:password@host:port)": "输入代理 URL (例如:https://用户名:密码@主机名:端口)", - "Enter reasoning effort": "", + "Enter reasoning effort": "设置推理努力", "Enter Sampler (e.g. Euler a)": "输入 Sampler (例如:Euler a)", "Enter Scheduler (e.g. Karras)": "输入 Scheduler (例如:Karras)", "Enter Score": "输入评分", @@ -414,7 +414,7 @@ "External Models": "外部模型", "Failed to add file.": "添加文件失败。", "Failed to create API Key.": "无法创建 API 密钥。", - "Failed to fetch models": "", + "Failed to fetch models": "无法获取模型", "Failed to read clipboard contents": "无法读取剪贴板内容", "Failed to save models configuration": "无法保存模型配置", "Failed to update settings": "无法更新设置", @@ -559,7 +559,7 @@ "Leave empty to use the default prompt, or enter a custom prompt": "留空以使用默认提示词,或输入自定义提示词。", "Light": "浅色", "Listening...": "正在倾听...", - "Llama.cpp": "", + "Llama.cpp": "Llama.cpp", "LLMs can make mistakes. Verify important information.": "大语言模型可能会生成误导性错误信息,请对关键信息加以验证。", "Local": "本地", "Local Models": "本地模型", @@ -570,7 +570,7 @@ "Make sure to export a workflow.json file as API format from ComfyUI.": "确保从 ComfyUI 导出 API 格式的 workflow.json 文件。", "Manage": "管理", "Manage Arena Models": "管理竞技场模型", - "Manage Models": "", + "Manage Models": "管理模型", "Manage Ollama": "管理 Ollama", "Manage Ollama API Connections": "管理Ollama API连接", "Manage OpenAI API Connections": "管理OpenAI API连接", @@ -636,7 +636,7 @@ "No files found.": "未找到文件。", "No groups with access, add a group to grant access": "没有权限组,请添加一个权限组以授予访问权限", "No HTML, CSS, or JavaScript content found.": "未找到 HTML、CSS 或 JavaScript 内容。", - "No inference engine with management support found": "", + "No inference engine with management support found": "未找到支持管理的推理引擎", "No knowledge found": "未找到知识", "No model IDs": "没有模型 ID", "No models found": "未找到任何模型", @@ -741,9 +741,9 @@ "RAG Template": "RAG 提示词模板", "Rating": "评价", "Re-rank models by topic similarity": "根据主题相似性对模型重新排序", - "Read": "", + "Read": "阅读", "Read Aloud": "朗读", - "Reasoning Effort": "", + "Reasoning Effort": "推理努力", "Record voice": "录音", "Redirecting you to OpenWebUI Community": "正在将您重定向到 OpenWebUI 社区", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative. (Default: 40)": "降低产生无意义答案的概率。数值越大(如 100),答案就越多样化,而数值越小(如 10),答案就越保守。(默认值:40)", @@ -820,7 +820,7 @@ "Select a pipeline": "选择一个管道", "Select a pipeline url": "选择一个管道 URL", "Select a tool": "选择一个工具", - "Select an Ollama instance": "", + "Select an Ollama instance": "选择一个 Ollama 实例。", "Select Engine": "选择引擎", "Select Knowledge": "选择知识", "Select model": "选择模型", @@ -1058,7 +1058,7 @@ "Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text. (Default: 0.9)": "与 top-k 一起工作。较高的值(例如0.95)将导致更具多样性的文本,而较低的值(例如0.5)将生成更集中和保守的文本。(默认值:0.9)", "Workspace": "工作空间", "Workspace Permissions": "工作空间权限", - "Write": "", + "Write": "写作", "Write a prompt suggestion (e.g. Who are you?)": "写一个提示词建议(例如:你是谁?)", "Write a summary in 50 words that summarizes [topic or keyword].": "用 50 个字写一个总结 [主题或关键词]。", "Write something...": "单击以键入内容...", From 8fc5532e2fb70ee5b82aeb286cdde0995c9c8657 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Thu, 23 Jan 2025 10:37:44 -0800 Subject: [PATCH 03/12] fix: tools valves access --- backend/open_webui/routers/tools.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/backend/open_webui/routers/tools.py b/backend/open_webui/routers/tools.py index bb19c6f3b..7b9144b4c 100644 --- a/backend/open_webui/routers/tools.py +++ b/backend/open_webui/routers/tools.py @@ -309,6 +309,17 @@ async def update_tools_valves_by_id( status_code=status.HTTP_401_UNAUTHORIZED, detail=ERROR_MESSAGES.NOT_FOUND, ) + + if ( + tools.user_id != user.id + and not has_access(user.id, "write", tools.access_control) + and user.role != "admin" + ): + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail=ERROR_MESSAGES.ACCESS_PROHIBITED, + ) + if id in request.app.state.TOOLS: tools_module = request.app.state.TOOLS[id] else: From dd6de749d570e0bf8309d66f3fcf7f242d5f397e Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Thu, 23 Jan 2025 10:40:49 -0800 Subject: [PATCH 04/12] fix: model update access --- backend/open_webui/routers/models.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/backend/open_webui/routers/models.py b/backend/open_webui/routers/models.py index db981a913..6c8519b2c 100644 --- a/backend/open_webui/routers/models.py +++ b/backend/open_webui/routers/models.py @@ -155,6 +155,16 @@ async def update_model_by_id( detail=ERROR_MESSAGES.NOT_FOUND, ) + if ( + model.user_id != user.id + and not has_access(user.id, "write", model.access_control) + and user.role != "admin" + ): + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail=ERROR_MESSAGES.ACCESS_PROHIBITED, + ) + model = Models.update_model_by_id(id, form_data) return model From bb45d35a364df8f4df8627b5b148d15ff2c2ad43 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Thu, 23 Jan 2025 11:04:50 -0800 Subject: [PATCH 05/12] fix: ollama prefix id --- backend/open_webui/routers/ollama.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/backend/open_webui/routers/ollama.py b/backend/open_webui/routers/ollama.py index 370e9ecec..69b2678e6 100644 --- a/backend/open_webui/routers/ollama.py +++ b/backend/open_webui/routers/ollama.py @@ -1030,6 +1030,16 @@ async def generate_chat_completion( if ":" not in payload["model"]: payload["model"] = f"{payload['model']}:latest" + await get_all_models(request) + model = request.app.state.OLLAMA_MODELS.get(model_id) + if model: + url_idx = model["urls"].pop() + else: + raise HTTPException( + status_code=404, + detail="Model not found", + ) + url = await get_ollama_url(request, payload["model"], url_idx) api_config = request.app.state.config.OLLAMA_API_CONFIGS.get( str(url_idx), From 3d5e361a21edf0ad85c6bf0645b9591425cfc237 Mon Sep 17 00:00:00 2001 From: Tiancong Li Date: Fri, 24 Jan 2025 03:13:10 +0800 Subject: [PATCH 06/12] i18n: update zh-TW --- src/lib/i18n/locales/zh-TW/translation.json | 38 ++++++++++----------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/lib/i18n/locales/zh-TW/translation.json b/src/lib/i18n/locales/zh-TW/translation.json index 7690fee33..eb0ad7592 100644 --- a/src/lib/i18n/locales/zh-TW/translation.json +++ b/src/lib/i18n/locales/zh-TW/translation.json @@ -51,7 +51,7 @@ "Advanced Params": "進階參數", "All Documents": "所有文件", "All models deleted successfully": "成功刪除所有模型", - "Allow Chat Controls": "", + "Allow Chat Controls": "允許控制對話", "Allow Chat Delete": "允許刪除對話", "Allow Chat Deletion": "允許刪除對話紀錄", "Allow Chat Edit": "允許編輯對話", @@ -189,7 +189,7 @@ "Confirm your action": "確認您的操作", "Confirm your new password": "確認您的新密碼", "Connections": "連線", - "Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "", + "Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "限制用於推理模型的推理程度 。僅適用於特定供應商提供的、支援推理程度設定的推理模型。(預設:中等)", "Contact Admin for WebUI Access": "請聯絡管理員以取得 WebUI 存取權限", "Content": "內容", "Content Extraction": "內容擷取", @@ -355,7 +355,7 @@ "Enter Mojeek Search API Key": "輸入 Mojeek 搜尋 API 金鑰", "Enter Number of Steps (e.g. 50)": "輸入步驟數(例如:50)", "Enter proxy URL (e.g. https://user:password@host:port)": "輸入代理程式 URL(例如:https://user:password@host:port)", - "Enter reasoning effort": "", + "Enter reasoning effort": "輸入推理程度", "Enter Sampler (e.g. Euler a)": "輸入取樣器(例如:Euler a)", "Enter Scheduler (e.g. Karras)": "輸入排程器(例如:Karras)", "Enter Score": "輸入分數", @@ -414,12 +414,12 @@ "External Models": "外部模型", "Failed to add file.": "新增檔案失敗。", "Failed to create API Key.": "建立 API 金鑰失敗。", - "Failed to fetch models": "", + "Failed to fetch models": "獲取模型失敗", "Failed to read clipboard contents": "讀取剪貼簿內容失敗", "Failed to save models configuration": "儲存模型設定失敗", "Failed to update settings": "更新設定失敗", "Failed to upload file.": "上傳檔案失敗。", - "Features Permissions": "", + "Features Permissions": "功能權限", "February": "2 月", "Feedback History": "回饋歷史", "Feedbacks": "回饋", @@ -494,15 +494,15 @@ "I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "我確認已閱讀並理解我的操作所帶來的影響。我了解執行任意程式碼的相關風險,並已驗證來源的可信度。", "ID": "ID", "Ignite curiosity": "點燃好奇心", - "Image": "", + "Image": "圖片", "Image Compression": "圖片壓縮", - "Image generation": "", - "Image Generation": "", + "Image generation": "圖片生成", + "Image Generation": "圖片生成", "Image Generation (Experimental)": "圖片生成(實驗性功能)", "Image Generation Engine": "圖片生成引擎", "Image Max Compression Size": "圖片最大壓縮大小", - "Image Prompt Generation": "", - "Image Prompt Generation Prompt": "", + "Image Prompt Generation": "圖片提示詞生成", + "Image Prompt Generation Prompt": "生成圖片提示詞的提示詞", "Image Settings": "圖片設定", "Images": "圖片", "Import Chats": "匯入對話紀錄", @@ -559,7 +559,7 @@ "Leave empty to use the default prompt, or enter a custom prompt": "留空以使用預設提示詞,或輸入自訂提示詞", "Light": "淺色", "Listening...": "正在聆聽...", - "Llama.cpp": "", + "Llama.cpp": "Llama.cpp", "LLMs can make mistakes. Verify important information.": "大型語言模型可能會出錯。請驗證重要資訊。", "Local": "本機", "Local Models": "本機模型", @@ -570,7 +570,7 @@ "Make sure to export a workflow.json file as API format from ComfyUI.": "請確保從 ComfyUI 匯出 workflow.json 檔案為 API 格式。", "Manage": "管理", "Manage Arena Models": "管理競技模型", - "Manage Models": "", + "Manage Models": "管理模型", "Manage Ollama": "管理 Ollama", "Manage Ollama API Connections": "管理 Ollama API 連線", "Manage OpenAI API Connections": "管理 OpenAI API 連線", @@ -636,7 +636,7 @@ "No files found.": "找不到檔案。", "No groups with access, add a group to grant access": "沒有具有存取權限的群組,新增群組以授予存取權限", "No HTML, CSS, or JavaScript content found.": "找不到 HTML、CSS 或 JavaScript 內容。", - "No inference engine with management support found": "", + "No inference engine with management support found": "找不到支援管理功能的推理引擎", "No knowledge found": "找不到知識", "No model IDs": "沒有任何模型 ID", "No models found": "找不到模型", @@ -741,9 +741,9 @@ "RAG Template": "RAG 範本", "Rating": "評分", "Re-rank models by topic similarity": "根據主題相似度重新排序模型", - "Read": "", + "Read": "讀取", "Read Aloud": "大聲朗讀", - "Reasoning Effort": "", + "Reasoning Effort": "推理程度", "Record voice": "錄音", "Redirecting you to OpenWebUI Community": "正在將您重導向至 OpenWebUI 社群", "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative. (Default: 40)": "降低產生無意義內容的機率。較高的值(例如 100)會給出更多樣化的答案,而較低的值(例如 10)會更保守。(預設:40)", @@ -820,7 +820,7 @@ "Select a pipeline": "選擇管線", "Select a pipeline url": "選擇管線 URL", "Select a tool": "選擇工具", - "Select an Ollama instance": "", + "Select an Ollama instance": "選擇一個 Ollama 實例", "Select Engine": "選擇引擎", "Select Knowledge": "選擇知識庫", "Select model": "選擇模型", @@ -847,7 +847,7 @@ "Set Scheduler": "設定排程器", "Set Steps": "設定步數", "Set Task Model": "設定任務模型", - "Set the number of layers, which will be off-loaded to GPU. Increasing this value can significantly improve performance for models that are optimized for GPU acceleration but may also consume more power and GPU resources.": "", + "Set the number of layers, which will be off-loaded to GPU. Increasing this value can significantly improve performance for models that are optimized for GPU acceleration but may also consume more power and GPU resources.": "設定要卸載至 GPU 的層數。增加此數值可以顯著提升針對 GPU 加速最佳化的模型的效能,但也可能消耗更多電力和 GPU 資源。", "Set the number of worker threads used for computation. This option controls how many threads are used to process incoming requests concurrently. Increasing this value can improve performance under high concurrency workloads but may also consume more CPU resources.": "設定用於計算的工作執行緒數量。此選項控制使用多少執行緒來同時處理傳入的請求。增加此值可以在高併發工作負載下提升效能,但也可能消耗更多 CPU 資源。", "Set Voice": "設定語音", "Set whisper model": "設定 whisper 模型", @@ -1058,7 +1058,7 @@ "Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text. (Default: 0.9)": "與 top-k 一起運作。較高的值(例如 0.95)會產生更多樣化的文字,而較低的值(例如 0.5)會產生更專注和保守的文字。(預設:0.9)", "Workspace": "工作區", "Workspace Permissions": "工作區權限", - "Write": "", + "Write": "寫入", "Write a prompt suggestion (e.g. Who are you?)": "撰寫提示詞建議(例如:你是誰?)", "Write a summary in 50 words that summarizes [topic or keyword].": "用 50 字寫一篇總結 [主題或關鍵字] 的摘要。", "Write something...": "寫一些什麽...", @@ -1068,7 +1068,7 @@ "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "您一次最多只能與 {{maxCount}} 個檔案進行對話。", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "您可以透過下方的「管理」按鈕新增記憶,將您與大型語言模型的互動個人化,讓它們更有幫助並更符合您的需求。", "You cannot upload an empty file.": "您無法上傳空檔案", - "You do not have permission to access this feature.": "", + "You do not have permission to access this feature.": "您沒有權限訪問此功能", "You do not have permission to upload files.": "您沒有權限上傳檔案", "You have no archived conversations.": "您沒有已封存的對話。", "You have shared this chat": "您已分享此對話", From ba81b47800bd9bc65de15687fe71bc23f6ff3e1e Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Thu, 23 Jan 2025 12:06:25 -0800 Subject: [PATCH 07/12] refac --- backend/open_webui/routers/ollama.py | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/backend/open_webui/routers/ollama.py b/backend/open_webui/routers/ollama.py index 69b2678e6..261cd5ba3 100644 --- a/backend/open_webui/routers/ollama.py +++ b/backend/open_webui/routers/ollama.py @@ -962,7 +962,7 @@ async def get_ollama_url(request: Request, model: str, url_idx: Optional[int] = ) url_idx = random.choice(models[model].get("urls", [])) url = request.app.state.config.OLLAMA_BASE_URLS[url_idx] - return url + return url, url_idx @router.post("/api/chat") @@ -1030,17 +1030,7 @@ async def generate_chat_completion( if ":" not in payload["model"]: payload["model"] = f"{payload['model']}:latest" - await get_all_models(request) - model = request.app.state.OLLAMA_MODELS.get(model_id) - if model: - url_idx = model["urls"].pop() - else: - raise HTTPException( - status_code=404, - detail="Model not found", - ) - - url = await get_ollama_url(request, payload["model"], url_idx) + url, url_idx = await get_ollama_url(request, payload["model"], url_idx) api_config = request.app.state.config.OLLAMA_API_CONFIGS.get( str(url_idx), request.app.state.config.OLLAMA_API_CONFIGS.get(url, {}), # Legacy support @@ -1142,7 +1132,7 @@ async def generate_openai_completion( if ":" not in payload["model"]: payload["model"] = f"{payload['model']}:latest" - url = await get_ollama_url(request, payload["model"], url_idx) + url, url_idx = await get_ollama_url(request, payload["model"], url_idx) api_config = request.app.state.config.OLLAMA_API_CONFIGS.get( str(url_idx), request.app.state.config.OLLAMA_API_CONFIGS.get(url, {}), # Legacy support @@ -1219,7 +1209,7 @@ async def generate_openai_chat_completion( if ":" not in payload["model"]: payload["model"] = f"{payload['model']}:latest" - url = await get_ollama_url(request, payload["model"], url_idx) + url, url_idx = await get_ollama_url(request, payload["model"], url_idx) api_config = request.app.state.config.OLLAMA_API_CONFIGS.get( str(url_idx), request.app.state.config.OLLAMA_API_CONFIGS.get(url, {}), # Legacy support From 45f88b80adf1f4902849d593589a10e0b919e7ad Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Thu, 23 Jan 2025 12:53:17 -0800 Subject: [PATCH 08/12] refac: think status --- backend/open_webui/utils/middleware.py | 2 +- src/lib/components/common/Collapsible.svelte | 32 +++++- src/lib/dayjs.js | 104 +++++++++++++++++++ 3 files changed, 136 insertions(+), 2 deletions(-) create mode 100644 src/lib/dayjs.js diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index e256a8f82..895f1bfd1 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -1170,7 +1170,7 @@ async def process_chat_response( ) # Format reasoning with
tag - content = f'{ongoing_content}
\nThought for {reasoning_duration} seconds\n{reasoning_display_content}\n
\n' + content = f'{ongoing_content}
\nThought for {reasoning_duration} seconds\n{reasoning_display_content}\n
\n' else: content = "" diff --git a/src/lib/components/common/Collapsible.svelte b/src/lib/components/common/Collapsible.svelte index e6e980ea4..2db89d208 100644 --- a/src/lib/components/common/Collapsible.svelte +++ b/src/lib/components/common/Collapsible.svelte @@ -1,5 +1,29 @@