diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3df9f2e702ba..2b87129da4bd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,253 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [0.11.4] - 2026-09-21
+
+### Added
+
+- 📉 **Far smaller slim image.** A slim build now comes down at around 175 MB, near enough 89% smaller than the last release, the local models, the packages around them and the tools that installed them all gone from it; what that changes about the way an instance behaves is set out under Changed below and in the documentation. [Commit](https://github.com/open-webui/open-webui/commit/cb942bb94c8dc7941336088fb3392e2398ff56c1), [Commit](https://github.com/open-webui/open-webui/commit/d27aa72ab4a7b5632b4ad49e8467081ad3d7ebb4)
+- 📦 **Smaller standard image.** The image no longer carries a second copy of Python, two sets of fonts nothing ever loaded, packages nothing imports, or the tool that installed them, taking about 170 MB off a standard build. [#29731](https://github.com/open-webui/open-webui/pull/29731), [#29723](https://github.com/open-webui/open-webui/pull/29723), [#29725](https://github.com/open-webui/open-webui/pull/29725), [#29726](https://github.com/open-webui/open-webui/pull/29726), [#29728](https://github.com/open-webui/open-webui/pull/29728), [Commit](https://github.com/open-webui/open-webui/commit/91f8775b28b52c9ae7f2ab990cf2490bda8055d6), [Commit](https://github.com/open-webui/open-webui/commit/98fcb844e1b19f7dd6289af26273cdec5447dc52), [Commit](https://github.com/open-webui/open-webui/commit/508de20779168003e538bb936b49a31d4a8fb8bb), [Commit](https://github.com/open-webui/open-webui/commit/a1c02098aa2687c72482a59117efe643b785df51)
+- 🧑💻 **Skills from a terminal.** Skills a connected terminal server offers now sit beside workspace skills everywhere skills are picked — the "$" and "/" menus, the integrations menu and the skills panel, each marked Terminal — and are used the same way: picking one puts its instructions, its folder and the files it ships with in front of the model, and a model that was only told a skill exists can open it itself. They follow whichever terminal is selected and clear when that changes. [Commit](https://github.com/open-webui/open-webui/commit/e69236bccb1e12d14045b09b76ebac0490014851)
+- 📔 **Terminal instructions file.** A model working with a terminal is now handed the AGENTS.md sitting in that terminal's home directory, read afresh at the start of every turn, so the instructions you keep beside your work reach the model without being pasted in. [Commit](https://github.com/open-webui/open-webui/commit/946be432375057dc18dbcc7c3513feb322a83a4b), [Commit](https://github.com/open-webui/open-webui/commit/f6922a4c4293449805938c80fbe54174994a1fc6)
+- 📇 **Automatic skill discovery.** Every skill you can reach is now listed to the model by name and description, and the full text of one is loaded only when it decides to use it; before, a skill you had not selected in the message box was invisible to it, and this applies to models with built-in tools on. [Commit](https://github.com/open-webui/open-webui/commit/e69236bccb1e12d14045b09b76ebac0490014851)
+- 🌄 **Model background images.** A workspace model can now carry a background image, uploaded in its editor and drawn behind the chat whenever that model is selected, sitting below a folder's own background and above your personal one, and it travels with the model through export and import. [Commit](https://github.com/open-webui/open-webui/commit/66addbd6b47bfb25cf9aa37ec70d24db5b28b6b6)
+- 📓 **Skill creation from a chat.** Typing "/skills:create" in a chat that already has content, with a terminal selected, turns the workflow you just went through into a reusable skill written to ".agents/skills" under that terminal's root working directory rather than whatever folder the shell happens to sit in, and authored to Open WebUI's skill standards. [Commit](https://github.com/open-webui/open-webui/commit/113c56fc8c1986359556107a20e206159ca32f59), [Commit](https://github.com/open-webui/open-webui/commit/924a4a10fbd0be508a69faf66bf08ac9761bc24d), [Commit](https://github.com/open-webui/open-webui/commit/58078ab3045cc7aee409d9215f68adf0e02c9165), [Commit](https://github.com/open-webui/open-webui/commit/d25f6c7135e0aee93dc2c840ce320d97617a6e47), [Commit](https://github.com/open-webui/open-webui/commit/a096961a31499be23890b98a040ecf2917405568)
+- 🖥️ **Terminal tabs per command.** The terminal pane now carries a tab for each command a model is running alongside your own shell, so you can watch them as they go, move between them and take the shell yourself, each tab opening with the command that produced it. Opening the pane puts you in a tab, starting your shell where nothing else is running, and closing the last tab folds the pane away again. [Commit](https://github.com/open-webui/open-webui/commit/54a7a7a7ce22725074c29c7e827446f5dce1421c), [Commit](https://github.com/open-webui/open-webui/commit/f3eade42aead0a3b96ada3a300d6c294c89f74a8), [Commit](https://github.com/open-webui/open-webui/commit/de1203f9b5d3d8b2a84bf5c89d1c61542469367a), [Commit](https://github.com/open-webui/open-webui/commit/675b9839f17df94f866c871cbdb9881323a18a8a)
+- 📂 **Folder uploads to terminals.** The file browser beside a terminal takes a folder now, dropped onto it or picked from the Upload Folder entry in its menus, and rebuilds what is inside it as it goes, subfolders and all, where before a drop uploaded only the files sitting loose at the top. [Commit](https://github.com/open-webui/open-webui/commit/f80ef8bd001d7ef650fb278d6fbd05bea4afad0f), [Commit](https://github.com/open-webui/open-webui/commit/4cc0d48b4d83503199bcc5f2322881722971a499), [Commit](https://github.com/open-webui/open-webui/commit/674760bfc1122e0a19fe299e05a86d1cbb528e6f)
+- ⚖️ **Side-by-side file comparison.** Picking two files in the file browser lights up a Compare button that lays them side by side or one above the other, numbering the lines, marking what was added and removed down to the part of the line that changed, counting both, and letting you swap which is which or leave whitespace out of it, a choice it remembers; a terminal too old to offer the comparison says so rather than failing quietly. [Commit](https://github.com/open-webui/open-webui/commit/8556033c6b64fa53e44152ebab1f889a578529af), [Commit](https://github.com/open-webui/open-webui/commit/3808eace6c2beb1904f0f04fdd443ec544f94acb)
+- 🌐 **Suggested prompts in your language.** A fresh install now offers its suggested starter prompts in the language the interface is set to, rather than the same four in English for everyone, and the model defaults panel carries a way back to those defaults once its own suggestions have been edited. [Commit](https://github.com/open-webui/open-webui/commit/30881dbcc966206cc15fb0b2276b41d88f7c0f09), [Commit](https://github.com/open-webui/open-webui/commit/9fba2843b16a111b035949f5865e29ec6cf5ac9c)
+- 📏 **Exa result length cap.** Web search through Exa can be held to a number of characters per result, set beside its key in the admin web search settings or as "EXA_MAX_CONTENT_LENGTH". [Commit](https://github.com/open-webui/open-webui/commit/12b14124b9376eccf2ba7cf3dba92bc145493703)
+- 🇪🇺 **European web search option.** Staan can now be picked as the web search provider, giving deployments that need search inside the EU an option they do not have to host themselves, configured from the admin web search settings or through "STAAN_API_KEY", "STAAN_MARKET" and "STAAN_MAX_SNIPPETS". [#30138](https://github.com/open-webui/open-webui/pull/30138), [#26006](https://github.com/open-webui/open-webui/discussions/26006), [#30303](https://github.com/open-webui/open-webui/pull/30303), [#30301](https://github.com/open-webui/open-webui/issues/30301)
+- 🗣️ **Per-language names and descriptions.** A model, tool, skill, function, banner or arena entry can now hold its name, description, starter prompts and valve labels once per language, written in a searchable table in its own editor or brought in as a JSON file, which is refused where a translation drops one of the placeholders the original fills in. The interface shows the wording for the language it is set to, and falls back to the plain text where that language has none. [Commit](https://github.com/open-webui/open-webui/commit/7b6562e3358956ec71eed05352538a646d047734), [Commit](https://github.com/open-webui/open-webui/commit/858ab727d2d80bb3c9ef40f01a32de7a12ca75c9), [Commit](https://github.com/open-webui/open-webui/commit/3facfa61d413945d7144d26b827fcce1f3aef7c5), [Commit](https://github.com/open-webui/open-webui/commit/85b11a4f3504434bd9cd0748629b8a84817fb4f2)
+- ✏️ **Interface text you can reword.** An administrator can now replace the interface's own wording language by language from a panel in the admin settings, with a replacement refused where it drops one of the placeholders the original fills in. [Commit](https://github.com/open-webui/open-webui/commit/67ac1a4e937271a02bfb02a330aa99dc8192cbf4)
+- 🔓 **Turning off the sign-in form.** The box asking for an email address and a password can now be taken off the sign-in page from the authentication settings, where until now it could only be set before the server started, leaving single sign-on or a directory to sign people in. [Commit](https://github.com/open-webui/open-webui/commit/c4a349651e34bf5d0920bb5e26707ae9961ac39f)
+- 🏷️ **Custom file metadata.** Metadata attached to an uploaded file now travels with the pieces that file is split into and arrives with the retrieved sources, the oversized and internal fields left out, and an operator can name in "RAG_SOURCE_METADATA_KEYS" which of those fields the model itself gets to see alongside the text. [#29499](https://github.com/open-webui/open-webui/pull/29499), [#29486](https://github.com/open-webui/open-webui/issues/29486), [Commit](https://github.com/open-webui/open-webui/commit/894655f66b9563890e63c76090ddecc90a311eb2), [#29502](https://github.com/open-webui/open-webui/pull/29502), [#29696](https://github.com/open-webui/open-webui/pull/29696)
+- 🗑️ **Quick delete shortcut.** Holding Shift over a note in the list or grid, or over a row on the automations page, turns its trailing controls into a delete button, removing the entry in one click rather than the three the menu and its confirmation ask for. [#29635](https://github.com/open-webui/open-webui/pull/29635), [#29633](https://github.com/open-webui/open-webui/issues/29633), [#29640](https://github.com/open-webui/open-webui/pull/29640), [#29637](https://github.com/open-webui/open-webui/issues/29637)
+- 🔀 **Diffs are drawn as diffs.** A diff or patch block in a reply is now laid out as one, with the file and hunk headings, the old and new line numbers, and the added and removed lines picked out down to the part of the line that changed, and a button to switch to the plain text and back. [Commit](https://github.com/open-webui/open-webui/commit/254e29b9af634145dde0450451a36f0dfbd8f421)
+- ✒️ **A formatting switch for notes.** A note you can edit carries a Formatting switch in its menu: turned off, Markdown you type or paste stays as the characters you wrote, a paste keeps its plain text, and a web address is left as text, while formatting already in the note is untouched. [Commit](https://github.com/open-webui/open-webui/commit/d8f27e745bd31c89efa25cbe0f41bb0f70576fc5)
+- 🎛️ **Admin model list filters.** The models page in the admin settings can now be narrowed to the base models a connection offers or to the ones built in the workspace, alongside the filters for enabled, disabled, visible and hidden. [Commit](https://github.com/open-webui/open-webui/commit/9e634c0c56e0a060717f1e24a11b082daf664036)
+- 🔍 **Settings search by name.** The search box in settings now matches each setting's own name and description rather than a keyword list kept per page, in whichever language you are using and regardless of accents, it leaves out anything your permissions do not let you change, and opening a result no longer clears what you typed. [Commit](https://github.com/open-webui/open-webui/commit/7cbaabe02fc3c7c040008e82cf85f590bd0c346a), [Commit](https://github.com/open-webui/open-webui/commit/9d98ffcddf792be8d567ea39370d39fcac649acd), [Commit](https://github.com/open-webui/open-webui/commit/c82634b9d01adadbf9780ff84a0a8168fdc4fdea)
+- 🆘 **A model for every chat.** Opening a conversation whose model has since been retired no longer leaves it stranded with nothing selected; it falls back to your default model, then the configured default, then the first one available, and a chat that still has a live model keeps it. [#29757](https://github.com/open-webui/open-webui/pull/29757)
+- ⚡ **Non-blocking search.** Searching the text of chats and knowledge, and the grep a model runs over a knowledge base, now run beside the rest of the server rather than in front of it, so a long search no longer keeps other requests waiting. [#29621](https://github.com/open-webui/open-webui/pull/29621), [Commit](https://github.com/open-webui/open-webui/commit/d9c8de9c39fca7c4756e0f9bd599b09ebe435208)
+- ✴️ **Lighter shared note editing.** Notes written by several people at once no longer echo every keystroke back to the server once per watcher; the traffic between editors falls by half with two of them and keeps falling as more join, so shared notes stay smooth as the room grows. [#28185](https://github.com/open-webui/open-webui/pull/28185)
+- 🔢 **Sorted knowledge listings.** The "ls", "tree" and "find" commands a model runs over a knowledge base now sort by name and take "-t", "-S" and "-r" for newest first, largest first and reversed. [#29840](https://github.com/open-webui/open-webui/pull/29840)
+- 🪪 **Authentication type header.** A request to an OpenAI or Ollama connection now carries "X-OpenWebUI-Auth-Type", saying whether the person behind it signed in through the browser or called with an API key; its name is set with "FORWARD_USER_INFO_HEADER_AUTH_TYPE" and "{{AUTH_TYPE}}" works in custom headers. [Commit](https://github.com/open-webui/open-webui/commit/ee46e2664ab23bacc536fed21c06ab19067d695b)
+- 💡 **Follow-up ghost text.** Once a reply has finished, the first of the follow-up questions it suggests now sits greyed inside the empty message box as well as under the reply: Tab writes it out, and typing anything of your own clears it away. [Commit](https://github.com/open-webui/open-webui/commit/7aaa4a692e949724913834efc47c57572042703b)
+- 🪵 **Model refusal logging.** A request turned away with "Model not found" now writes a warning naming the account, the model and why it was refused, while the message the caller sees stays as vague as before. [Commit](https://github.com/open-webui/open-webui/commit/f5fcf4c89fb27ed39825875d573446fa84aa2a5b)
+- 🤲 **Cheaper chat requests behind Redis.** Where several servers share their websocket traffic through Redis, a chat request no longer pulls the whole shared model list from Redis to ask about a couple of models; each worker keeps its own copy and refetches only when the list actually changed, so the cost stops growing with the number of models configured. [#28176](https://github.com/open-webui/open-webui/pull/28176), [#28167](https://github.com/open-webui/open-webui/issues/28167)
+- 💽 **Long conversations stream cheaper.** Writing or reading a single message no longer loads, checks and rewrites the entire conversation to change a few hundred bytes, so streaming into a long chat stops getting more expensive as it grows, and the whole round trip a message event costs falls to a fraction on conversations of thousands of messages. [#28184](https://github.com/open-webui/open-webui/pull/28184), [#28169](https://github.com/open-webui/open-webui/issues/28169)
+- 🧱 **In-place streaming appends.** Streamed replies can be assembled with CPython's in-place string append, turned on with "ENABLE_CHAT_RESPONSE_STREAM_INPLACE_APPEND" and left off by default while it is rolled out gradually. [Commit](https://github.com/open-webui/open-webui/commit/113c56fc8c1986359556107a20e206159ca32f59), [Commit](https://github.com/open-webui/open-webui/commit/924a4a10fbd0be508a69faf66bf08ac9761bc24d), [#30066](https://github.com/open-webui/open-webui/pull/30066)
+- 📘 **Direct connection guidance.** The connections and integrations pages in the personal settings now say plainly that a direct connection leans on your browser session to keep requests running, which suits testing and temporary use rather than everyday work. [Commit](https://github.com/open-webui/open-webui/commit/5d66dd6ad291db17894953714c01fd4303093e7e), [Commit](https://github.com/open-webui/open-webui/commit/15e2259a2ae1b7dec1f93a52078304dd3a79a14c)
+- 🔄 **General improvements.** Various improvements were implemented across the application to enhance performance, stability, and security.
+- 🌐 **Translation updates.** Translations for Japanese, Traditional Chinese, Korean, Finnish, Russian, Ukrainian, German, Spanish, Portuguese (Brazil), Arabic, Arabic (Bahrain), Azerbaijani, Bulgarian, Bengali, Tibetan, Bosnian, Catalan, Cebuano, Czech, Danish, Basque, Croatian, Dutch, Italian, Turkish, Simplified Chinese, Bosnian, Catalan, Danish, Estonian, Finnish, Galician, Croatian, Kabyle, Norwegian Bokmål, Portuguese (Portugal), Romanian and Turkmen were enhanced and expanded.
+
+### Fixed
+
+- 🛡️ **Security Advisory**: This release includes security and access-control fixes. We recommend updating production deployments at your earliest convenience. Not all security fixes in this version may be enumerated in the fixed section. Some may be withheld for a short time to give administrators time to upgrade. [Advisories](https://github.com/open-webui/open-webui/security)
+- 🔑 **Tokens stay out of logs.** A failure part way through signing in with an identity provider no longer writes the credentials it was handed into the application log, recording the provider and the error it reported instead. [#29709](https://github.com/open-webui/open-webui/pull/29709)
+- 🔐 **Sign-in role mapping.** Roles sent by an identity provider were in some setups not applied, leaving an account at the default role, and a sign-in whose roles cannot be read is now refused rather than let through. [Commit](https://github.com/open-webui/open-webui/commit/10d1cfe6375f207acaa531e857edb575ded2cfc3)
+- 🚫 **Blocked sign-in groups saved.** Comma-separated group names typed into the blocked groups field now take effect once saved, where the save stored the text as written and the sign-in check then read it as nothing; a group name carrying a comma of its own survives a save too. [Commit](https://github.com/open-webui/open-webui/commit/3fc1146c13d7b4b7a67c7fd058014436f80e0dfd)
+- 🚪 **Signing out ends the session.** Signing out or having every token revoked left any live connection that account already had in place, and those are now cut at the same moment; a token already revoked can no longer be replayed to cut someone else's newer session. [Commit](https://github.com/open-webui/open-webui/commit/3a6d0fd203050401481bdb8621b827089d393817)
+- 🛡 **Diagrams and SVG stay on this origin.** Mermaid diagrams and SVG previews, attached or uploaded, no longer follow references pointing at another origin, a picture, style or configuration line among them, and a diagram that reaches outside is refused with an error; a file whose drawing leans on an external sprite now shows that part blank. [#30271](https://github.com/open-webui/open-webui/pull/30271)
+- 📲 **Terminal sessions follow access changes.** A terminal connection now re-checks your access to it every ten seconds for as long as it stays open, so removing someone's permission or deactivating their account ends their live terminal on the next check, on every worker and not only the one they signed in through. [Commit](https://github.com/open-webui/open-webui/commit/a1189a2d757407530a0c1c85a41b46cd6a4f7da5), [Commit](https://github.com/open-webui/open-webui/commit/e8bd0661d3774248c318286849041b94bb861909)
+- 🔒 **Connection model listing access.** The endpoints that list the models on a single Ollama or OpenAI connection could be reached by a signed-in account of any role, and now check the caller's role. [#29619](https://github.com/open-webui/open-webui/pull/29619)
+- 🔏 **Knowledge file access.** A file's access through a knowledge base now follows its actual attachment alone, rather than also a collection name left behind on the file record. [#29937](https://github.com/open-webui/open-webui/pull/29937)
+- 🌳 **Knowledge directories stay inside their base.** A directory id supplied to the knowledge file routes is now refused where it belongs to a different knowledge base, where a caller-supplied id could reach into a directory tree outside the one being addressed. [Commit](https://github.com/open-webui/open-webui/commit/a9541c18ca2a056f4ccfe56b9c733cba74b86b49), [#29887](https://github.com/open-webui/open-webui/pull/29887)
+- 🍪 **Cookie forwarding scope.** A connection authenticating as the signed-in person is handed this instance's browser cookies only where its new Forward cookies switch is on, which an instance relying on it has to turn on after upgrading. [Commit](https://github.com/open-webui/open-webui/commit/b71744b17823f7a3a9a64cb363e79a7164ed5b23), [Commit](https://github.com/open-webui/open-webui/commit/3cda47cdb449aac970426f0929c9e5f8bb8bd807), [Commit](https://github.com/open-webui/open-webui/commit/f9f815c86220f809fad5ee1300c44f55dea74c79)
+- 🗝️ **Revocation list fallback.** Where the revocation list is kept in Redis and Redis cannot be reached, a token is now accepted rather than the request failing, so signing out may not take effect until Redis is back. [Commit](https://github.com/open-webui/open-webui/commit/c1615bec2f5f143084b5fcc04f42ebfa0dade9df), [Commit](https://github.com/open-webui/open-webui/commit/6a85abb3f5e002f3069007213e16e4ef60776890)
+- 🗒 **Home page chat drafts.** A message typed into a chat started from the home page now comes back after a reload, text, uploads and all, where the draft was stored under a key the page never read again. [#29762](https://github.com/open-webui/open-webui/pull/29762), [#29760](https://github.com/open-webui/open-webui/issues/29760)
+- 🏞️ **S3-hosted chat images.** A chat image whose host echoes a Content-Encoding nothing asked for, an S3 or MinIO object uploaded with that metadata among them, no longer breaks the reply it sits in; it is sent as its link the way an unreachable image already was. [#29623](https://github.com/open-webui/open-webui/pull/29623)
+- 🪆 **Branch descent guard.** Stepping between reply branches walked a chat's children without tracking where it had already been, so a history that pointed back at itself spun forever and locked the tab, and a child id with no message behind it threw; every one of the eleven places that walk now shares a single guarded helper. [#30070](https://github.com/open-webui/open-webui/pull/30070)
+- 🗒️ **Note save on exit.** A note's title and its attachments save a moment after they change, and leaving the note inside that moment dropped the save, so the notes list kept showing the old title until the page was reloaded; the pending save now finishes before the next page opens. [#29745](https://github.com/open-webui/open-webui/pull/29745), [#29744](https://github.com/open-webui/open-webui/issues/29744)
+- 📷 **Attachments sent without text.** Sending an image or a file with nothing typed to a model that has skills attached replaced the empty message with the list of skill names, so the model answered with its own catalogue instead of looking at what you sent. [#30045](https://github.com/open-webui/open-webui/pull/30045), [#30040](https://github.com/open-webui/open-webui/issues/30040)
+- 🖍️ **SVG attachments read as text.** An SVG attached to a chat went up as a picture and came back rejected by every model that tried to decode it, and is now read as its source text instead, which needs a model that accepts file uploads. [#30102](https://github.com/open-webui/open-webui/pull/30102), [#30100](https://github.com/open-webui/open-webui/issues/30100)
+- 🩹 **Notes survive a small edit.** Asked to add a section or change a few lines, a model would send the whole note back and lose the rest of it with nothing to undo, because the editing tool never said when to edit a range instead; it now spells out the range rules the handler already enforced. [#30048](https://github.com/open-webui/open-webui/pull/30048)
+- 📋 **Note paste placement.** A plain paste replaced more of the note than was selected, and a paste into a code block broke out of the block instead of going inside it; both now land exactly where they were dropped. [Commit](https://github.com/open-webui/open-webui/commit/d8f27e745bd31c89efa25cbe0f41bb0f70576fc5)
+- 🧿 **Insert into note on read-only notes.** The Insert into note action no longer appears on a note you may only read, which offered it where it could not land. [#30223](https://github.com/open-webui/open-webui/pull/30223), [#30174](https://github.com/open-webui/open-webui/issues/30174)
+- 🤝 **Note sharing survives a save.** Saving a note you had been given access to took that sharing away, so the note went private and everyone else lost it. [#30175](https://github.com/open-webui/open-webui/pull/30175)
+- 🌍 **Collaborative link handling.** In a note two people are writing at once, a plain web address arriving from the other editor was turned into a link on your screen but not on theirs; it is now left as written. [Commit](https://github.com/open-webui/open-webui/commit/d8f27e745bd31c89efa25cbe0f41bb0f70576fc5)
+- 📑 **Tika 4 document formatting.** Where document extraction runs against a Tika server on version 4, the text now comes back as Markdown rather than a flat run of characters, so headings, lists and tables survive into what the model reads. [Commit](https://github.com/open-webui/open-webui/commit/ba34bee2d17e1c00238c85a8aab1a11a60db164e)
+- ⏳ **Session expiry accuracy.** A session with an identity provider now expires with the token it actually calls with, rather than whichever of its two tokens ran out first, which renewed it early and dropped it whenever that failed. [Commit](https://github.com/open-webui/open-webui/commit/aaaf26fb8ede28854dd660b11b85ba6bafe64007)
+- 🧩 **Tool steps in finished replies.** A reply that called tools showed each step as it ran, then lost them the moment the reply completed, because the provider's closing message replaced everything on screen rather than joining it; the closing message is now merged into what is already there, and a tool call is no longer mistaken for its own result. [Commit](https://github.com/open-webui/open-webui/commit/e1bfefdf9f8f2012cecfc7d81079bd6fff147932), [Commit](https://github.com/open-webui/open-webui/commit/31b272d3c93b87636c920f2aa68d6caaa07ae79a)
+- 🧭 **Streamed replies follow along.** A reply arriving over the response events now keeps the view at the bottom as it is written, as replies on the older path already did, unless you have scrolled up yourself. [Commit](https://github.com/open-webui/open-webui/commit/dfde08aa7391d924359b27f5768411d7a533a6ec), [Commit](https://github.com/open-webui/open-webui/commit/88e78b7819b28ffe91f3dff24d8c5d992004197e)
+- 🚿 **Tool results arrive when the tools are done.** The results of a model's tool calls now reach the reply as soon as the round that produced them finishes, instead of being held back with the rest of the streaming until the throttle let them through, and a channel reply or a continuation no longer carries the picture data a tool handed the model. [Commit](https://github.com/open-webui/open-webui/commit/478d1785fd27f400c614a5700f5b38ec9de412f9)
+- 🧗 **Tagged blocks while streaming.** A reply using reasoning, solution or code interpreter tags briefly showed the raw tag text in the message as it arrived, because the chunk carrying it reached the browser before the cleaned output did; the cleaned output is now sent the moment a tag is taken out, and the code an interpreter block writes fills that block rather than the message body. [Commit](https://github.com/open-webui/open-webui/commit/58b36765a7c20f5943a3180bd289de48876d0878)
+- 📗 **Excel in the code interpreter.** Reading or writing a spreadsheet in code the browser runs failed outright because the library that handles them never reached the browser, and it is now shipped alongside the rest. [#30140](https://github.com/open-webui/open-webui/pull/30140), [#30130](https://github.com/open-webui/open-webui/issues/30130)
+- 📀 **Bundled charts and formatting.** Drawing a chart with seaborn in code the browser runs fetched the library over the internet at that moment rather than taking it from what ships, and the code editor's Format button failed outright for anyone who is not an administrator; both now work from what comes with the application, offline included. [#30148](https://github.com/open-webui/open-webui/pull/30148), [#30145](https://github.com/open-webui/open-webui/issues/30145)
+- 🙋 **Typed answer submission.** In the card a model puts up to ask you a question, choosing one of its options on the last question sends your answers straight away, but typing your own into the Other box left Submit answers greyed out with no way to send it, and it now turns on as soon as that box has text. [#29494](https://github.com/open-webui/open-webui/pull/29494), [#29311](https://github.com/open-webui/open-webui/issues/29311)
+- 🥇 **A truthful Recommended badge.** The card a model puts up to ask you a question marks its first option Recommended, but nothing told the model that, so the badge fell on whichever option happened to be listed first; models are now asked to put the option they recommend there. [#30196](https://github.com/open-webui/open-webui/pull/30196), [#30195](https://github.com/open-webui/open-webui/issues/30195)
+- 🎚️ **Partial settings permissions.** An account barred from changing the interface settings can now save its system prompt, notifications, audio, keyboard shortcuts and pinned models, which were refused along with them. [Commit](https://github.com/open-webui/open-webui/commit/98a920168e2eea435ac15e1ad3d679946631e41d)
+- 🎧 **Speech file types kept.** Saving the audio settings emptied the list of file types accepted for speech recognition, so transcription then turned away the recordings it had taken before. [#30208](https://github.com/open-webui/open-webui/pull/30208)
+- 🚻 **Group picker without permission.** The picker for sharing a chat, a note or a knowledge base with a group was offered to accounts not allowed to share with groups, and is now hidden from them. [#30189](https://github.com/open-webui/open-webui/pull/30189)
+- 🗜️ **Per-field settings saves.** Only the settings actually changed are now stored, rather than the whole object, so another tab's older copy no longer overwrites them and a default an administrator changes still reaches everyone, and pinning a model, reordering the list or picking a default from outside the settings window now saves the same way. [Commit](https://github.com/open-webui/open-webui/commit/98a920168e2eea435ac15e1ad3d679946631e41d), [#30183](https://github.com/open-webui/open-webui/pull/30183)
+- ⚠️ **Failed settings feedback.** Settings that could not be saved were shown as saved anyway until the page was reloaded, because the interface stored them locally without waiting on the server; a failure now raises an error and leaves the panel as it was. [Commit](https://github.com/open-webui/open-webui/commit/98a920168e2eea435ac15e1ad3d679946631e41d)
+- 🔠 **Menu text scaling.** The entries in the menus that drop down across the interface now scale with the rest of it, rather than staying at a fixed size while the menu around them grew. [#29493](https://github.com/open-webui/open-webui/pull/29493), [#29488](https://github.com/open-webui/open-webui/issues/29488)
+- 🪞 **Account menu highlighting.** An account menu entry carrying a pin button beside it now lights up across the whole row in the shared colour, and a long label no longer pushes the pin out of the menu. [Commit](https://github.com/open-webui/open-webui/commit/e723dcda58f638a5da2398743d22d3e5854042bf)
+- 🔲 **Shift-click file selection.** Shift-clicking a file in the terminal's file browser now adds that range to what is already selected, and clicking through a selected file removes its range. [Commit](https://github.com/open-webui/open-webui/commit/f80ef8bd001d7ef650fb278d6fbd05bea4afad0f), [Commit](https://github.com/open-webui/open-webui/commit/4cc0d48b4d83503199bcc5f2322881722971a499), [Commit](https://github.com/open-webui/open-webui/commit/674760bfc1122e0a19fe299e05a86d1cbb528e6f)
+- 🛟 **Attachment name collisions.** Attaching a file to a message on an instance that puts attachments in a terminal's working directory replaced whatever file of that name was sitting there; the upload now takes the next free name, "report (1).pdf" beside "report.pdf", and the attachment shows the name it was saved under, though two uploads arriving at the same moment from different browsers can still land on the same name. [Commit](https://github.com/open-webui/open-webui/commit/d70053e44993f271d534fb87d2b40724b028fca2)
+- 📛 **Failed upload feedback.** A file that could not be written to the terminal now says so, rather than passing in silence while the browser refreshed as though it had arrived. [Commit](https://github.com/open-webui/open-webui/commit/f80ef8bd001d7ef650fb278d6fbd05bea4afad0f), [Commit](https://github.com/open-webui/open-webui/commit/4cc0d48b4d83503199bcc5f2322881722971a499), [Commit](https://github.com/open-webui/open-webui/commit/674760bfc1122e0a19fe299e05a86d1cbb528e6f)
+- ☑️ **Unchecked checkbox defaults.** A prompt variable written as a checkbox with a default of false opened the form already ticked, as did False, "false", 0 and "0", because any non-empty default counted as ticked; it is now ticked only where the value really is true. [#30037](https://github.com/open-webui/open-webui/pull/30037), [#30036](https://github.com/open-webui/open-webui/issues/30036)
+- 🎯 **Prefilled question timing.** Opening a chat from a link holding a question sent it before the box had it, so a question naming a variable went off with the variable unfilled; the send now waits for the text to be in place and filled in. [Commit](https://github.com/open-webui/open-webui/commit/3808eace6c2beb1904f0f04fdd443ec544f94acb), [Commit](https://github.com/open-webui/open-webui/commit/a23b579233276e40159eb615917b9aeb7d5ed5c9)
+- 📜 **Task list height.** The list of steps a model works through ran as long as it needed and pushed the rest of the reply down the page; it now stops at a quarter of the window's height and scrolls within itself. [Commit](https://github.com/open-webui/open-webui/commit/307b9b9133f0c7ad899f4b76226059da6f3177eb)
+- ⎋ **Escape key targeting.** The shortcut for closing a dialog always shut the settings window, whichever dialog was actually in front, so a dialog opened from within settings took both away at once; each dialog now answers the shortcut for itself, as it already did for the escape key. [#29830](https://github.com/open-webui/open-webui/pull/29830), [#29817](https://github.com/open-webui/open-webui/issues/29817)
+- 🎹 **Message pair shortcut.** The shortcut that adds an empty question and answer to a chat also sent whatever was typed in the message box, so the pair arrived alongside a message you had not meant to send yet. [#30167](https://github.com/open-webui/open-webui/pull/30167)
+- 🥁 **Collapsing the task list.** Folding away the list of tasks under a reply also sent whatever you had typed in the message box. [#30202](https://github.com/open-webui/open-webui/pull/30202)
+- 🕰️ **Temporary chat links.** A link carrying the temporary chat marker opened an ordinary chat, because the marker was written into the address but never read back when the page loaded, and such a link now opens the temporary chat it promises. [Commit](https://github.com/open-webui/open-webui/commit/67adde31936d1d2e656140f9edd898b1fbb18a1c)
+- ⌨️ **Recording a new shortcut.** Pressing a key combination to record it as a shortcut also ran whatever that combination was already bound to, so setting one up did the thing you were trying to rebind. [#30160](https://github.com/open-webui/open-webui/pull/30160)
+- 🔃 **Stale tab reload.** A tab still running the previous build met an error page after the server was updated instead of loading the new one, because every image built from Docker carried the same version stamp; the stamp now follows the build, and a stale tab reloads as it was meant to. [#29832](https://github.com/open-webui/open-webui/pull/29832), [#29831](https://github.com/open-webui/open-webui/issues/29831)
+- 📌 **Channel code headers.** The bar naming a piece of code in a channel thread or its pinned messages now sits flush at the top of the panel, clipped to the block, rather than floating over the code as it scrolls. [#29836](https://github.com/open-webui/open-webui/pull/29836), [#29835](https://github.com/open-webui/open-webui/issues/29835)
+- 📨 **Duplicated proxy headers.** A reply proxied from a terminal server or an OpenAI or Ollama connection no longer carries that server's own "Server" and "Date" headers, which had a reverse proxy in front logging a duplicate line for every one. [#29841](https://github.com/open-webui/open-webui/pull/29841), [#29824](https://github.com/open-webui/open-webui/issues/29824), [#29843](https://github.com/open-webui/open-webui/pull/29843)
+- 🎣 **Testing an image connection.** The Verify button beside an image generation connection saved the whole image configuration first and then tested whichever engine was active rather than the connection beside it, and it now tests exactly that connection and changes nothing. [Commit](https://github.com/open-webui/open-webui/commit/64bbdf7a73724986fac8bcf6e880fe32ef9ac495)
+- 🪝 **Responses API tool strictness.** A workspace tool, MCP server or OpenAPI server reaching a model on the Responses API was turned into a strict schema where it had never asked to be, so the model filled every optional field with empty strings, zeros and empty arrays, and search and filter tools were handed values where leaving them out was meant. [#30046](https://github.com/open-webui/open-webui/pull/30046), [#27750](https://github.com/open-webui/open-webui/issues/27750)
+- 🪃 **Responses API tool calling.** A forced tool choice sent to a connection on the Responses API went out in the wrong shape and was refused by providers that check it, and a tool call in a reply that was not streamed came back as empty text, so nothing reading the API ever saw it. [#30095](https://github.com/open-webui/open-webui/pull/30095), [#30085](https://github.com/open-webui/open-webui/issues/30085)
+- ⛓️ **Missing tools in links.** Opening a chat from a link whose "tools" or "tool-ids" parameter names a tool that no longer exists, or that the account cannot see, kept that id in the selection and sent it with the message; ids matching no tool the account has are now dropped and the rest of the link works as before. [#29803](https://github.com/open-webui/open-webui/pull/29803)
+- 🚫 **Model editor error messages.** A workspace model that cannot be loaded for editing now says so, instead of sending you back with "You do not have permission to edit this model" whatever the real reason. [#29694](https://github.com/open-webui/open-webui/pull/29694), [#29629](https://github.com/open-webui/open-webui/issues/29629)
+- 👥 **Directory updates that were dropped.** A change your identity provider sent as an add or a remove, or without naming the attribute it was changing, was accepted and then quietly discarded, so a rename or a deactivation never reached the account; those now take effect. [Commit](https://github.com/open-webui/open-webui/commit/ad9da981680c0fd9151c803a366a01545ea907c1)
+- 🗃️ **Directory request validation.** A provisioning request carrying the wrong kind of value, or an attribute Open WebUI does not support, now comes back as an error instead of passing in silence, and a sync that changes nothing no longer marks the account as touched. [Commit](https://github.com/open-webui/open-webui/commit/ad9da981680c0fd9151c803a366a01545ea907c1)
+- 🔘 **Model editor save button.** Saving a workspace model whose model list could not be refreshed afterwards now reports the error and frees the Save button, rather than leaving it disabled and spinning though the model had been saved. [Commit](https://github.com/open-webui/open-webui/commit/dc98e3023fc6e0113dbad76545cdb15e014db6ad), [Commit](https://github.com/open-webui/open-webui/commit/cc5479d16d5caf28ec19a16ffa1ee4f3dbc0f63f)
+- 🫱 **Rating a reply again.** Switching a reply's rating from one thumb to the other kept the score and the reason given the first time, and rating a reply whose feedback had since been deleted failed outright; both now record the rating you just gave. [#30075](https://github.com/open-webui/open-webui/pull/30075), [#30077](https://github.com/open-webui/open-webui/pull/30077)
+- 📶 **Sorting feedback by user.** The User column in the admin feedback history did nothing when clicked, and now sorts by who left the feedback. [#30191](https://github.com/open-webui/open-webui/pull/30191)
+- 🪂 **Closing the Edit User dialog.** Changes typed into the admin Edit User dialog and then abandoned showed on the row in the user list until the page was reloaded, and closing the dialog now drops them. [#30193](https://github.com/open-webui/open-webui/pull/30193)
+- 🪙 **Model defaults save.** Saving the model defaults in the admin settings put the selected, pinned and ordered models back as they stood when the page was opened, undoing anything changed in between. [#30206](https://github.com/open-webui/open-webui/pull/30206)
+- 👤 **A custom gender shown back.** An account whose gender is a wording of its own came back to an empty dropdown in the account form, and the form now shows Custom with that wording beside it. [#30215](https://github.com/open-webui/open-webui/pull/30215)
+- 🗓️ **Clearing a calendar event.** Emptying the repeat, the description or the location of a calendar event did not take and the old wording came back, and those fields can be cleared again. [#30204](https://github.com/open-webui/open-webui/pull/30204)
+- 📕 **Required prompt dropdowns.** A prompt's form could be sent with a required dropdown left unchosen, and now asks you to pick something first. [#30078](https://github.com/open-webui/open-webui/pull/30078)
+- 🎫 **Account form required fields.** The account form now refuses to save with a required field left empty, the way the admin user dialog does, and a date of birth is no longer demanded of accounts that never set one. [#30296](https://github.com/open-webui/open-webui/pull/30296), [#30295](https://github.com/open-webui/open-webui/issues/30295)
+- 🐑 **Model clones keep their base.** Cloning a model from the admin Models settings now carries the model it was built on, where the clone came out detached from it, and an arena model no longer offers Clone at all. [#30080](https://github.com/open-webui/open-webui/pull/30080), [#30079](https://github.com/open-webui/open-webui/issues/30079)
+- 🧤 **Model sharing survives a save.** Saving a model you cannot fully share no longer strips the access entries you cannot re-create, where an editor resending every stored entry had each one re-checked against what its author may grant, and a save from someone with narrow rights quietly took the model private for everyone else. [Commit](https://github.com/open-webui/open-webui/commit/754c4b5762ed0d79954ff28c4e06631004dc31b3), [#30093](https://github.com/open-webui/open-webui/pull/30093), [#30087](https://github.com/open-webui/open-webui/issues/30087)
+- 📠 **Prompt version saves.** Saving a new version of a prompt without Set as Production leaves the live prompt exactly as it was, where the draft quietly took its place, and the editor now shows the production text the moment a version is set. [#30231](https://github.com/open-webui/open-webui/pull/30231), [#30230](https://github.com/open-webui/open-webui/issues/30230), [#30233](https://github.com/open-webui/open-webui/pull/30233), [#30232](https://github.com/open-webui/open-webui/issues/30232)
+- 💬 **Model description round trips.** A workspace model whose description is switched from the default back to custom saves again, where the switch read the field as empty and the description was dropped on save. [#30249](https://github.com/open-webui/open-webui/pull/30249), [#30247](https://github.com/open-webui/open-webui/issues/30247)
+- 🎚 **Compaction threshold saves.** The context compaction threshold set in general settings now reaches the model parameters, where the value never left the page. [#30270](https://github.com/open-webui/open-webui/pull/30270), [#30269](https://github.com/open-webui/open-webui/issues/30269)
+- 📢 **Speech engine defaults.** Switching the text to speech engine now applies that engine's own default voice and model, where the change kept the previous engine's settings in place. [#30289](https://github.com/open-webui/open-webui/pull/30289), [#30288](https://github.com/open-webui/open-webui/issues/30288)
+- 🗞 **MinerU key in local mode.** The document settings save again in local mode with the MinerU key left empty, where the form demanded a key it did not need. [#30299](https://github.com/open-webui/open-webui/pull/30299), [#30298](https://github.com/open-webui/open-webui/issues/30298)
+- 🫂 **Group dialog reset.** The new-group dialog opens empty after a group is created, where the next one came up holding the group just made. [#30280](https://github.com/open-webui/open-webui/pull/30280), [#30279](https://github.com/open-webui/open-webui/issues/30279)
+- 🧵 **Thread reply notifications.** Clicking the notification for a reply written inside a thread dropped you at the bottom of the channel with the thread still shut and the reply nowhere in sight; it now opens the thread the reply belongs to. [#29856](https://github.com/open-webui/open-webui/pull/29856), [#29855](https://github.com/open-webui/open-webui/issues/29855)
+- 🔽 **Dropdown arrow spacing.** The arrow in the dropdowns drawn no wider than their contents, among them the provider on a new connection, no longer overlaps the last characters of the longest choice. [#29866](https://github.com/open-webui/open-webui/pull/29866), [#29865](https://github.com/open-webui/open-webui/issues/29865)
+- 🧊 **Lowercase header handling.** Headers from an upstream that writes them in lower case, as anything served by uvicorn does, are now matched without regard to case, so "Content-Encoding" is stripped and clients stop failing to decompress a body the server had already decoded. [#29843](https://github.com/open-webui/open-webui/pull/29843)
+- 🛑 **Complete chat stop.** Where a chat had more than one task in flight, stopping it, deleting it, or closing a note being worked on could stop the first and leave the rest running to the end, both because a task that had already finished ended the round early and because the list being worked through was rewritten underneath it as each one was cleared away; every task is now stopped in turn, so a reply that was calling tools stops calling them rather than running on to its own limit, though instances sharing their state through Redis were not affected. [Commit](https://github.com/open-webui/open-webui/commit/e35b907f737e625b900b3a03d61890f67ab0c4b0), [#29844](https://github.com/open-webui/open-webui/pull/29844), [#29816](https://github.com/open-webui/open-webui/issues/29816)
+- 🖊️ **Channel code blocks.** Where a model answers in a channel with structured output, the code inside it was drawn as plain highlighted text rather than in the editor every other message uses, so it could not be edited in place and a diff in it could not be opened for editing; it now renders the same way as everywhere else. [#29861](https://github.com/open-webui/open-webui/pull/29861)
+- 📐 **Code block edits on collapse.** An unsaved edit inside a code block stays on screen when the block is folded away and opened again, where collapsing it showed the saved text though the edit was still pending. [#30284](https://github.com/open-webui/open-webui/pull/30284), [#30283](https://github.com/open-webui/open-webui/issues/30283)
+- 🚨 **Code run errors with output.** A code run that ends with an error now shows the error alongside what it printed, where a run that printed anything at all showed its error nowhere. [#30286](https://github.com/open-webui/open-webui/pull/30286), [#30285](https://github.com/open-webui/open-webui/issues/30285)
+- 🔕 **Reactions on read-only channels.** The reaction picker no longer appears on a channel open to you as a viewer alone, matching the reply and menu options already hidden there. [#30241](https://github.com/open-webui/open-webui/pull/30241), [#30240](https://github.com/open-webui/open-webui/issues/30240)
+- 🎯 **Knowledge search accuracy on PostgreSQL.** A fresh install using PostgreSQL built its search index before a single piece of text existed to organise it around, so the index was never fit for the content that arrived afterwards and every search quietly returned the wrong passages; the index now waits until there is enough text to build on, and until then searches read everything exactly. An install already carrying such an index can restore it by rebuilding that one index. [#30143](https://github.com/open-webui/open-webui/pull/30143), [#30134](https://github.com/open-webui/open-webui/issues/30134)
+- 🗂 **Knowledge file filter on first click.** The File content filter in a knowledge base now narrows the listing the first time it is clicked, where the first click only armed the checkbox and everything stayed listed until it was clicked again. [#30211](https://github.com/open-webui/open-webui/pull/30211), [#30210](https://github.com/open-webui/open-webui/issues/30210)
+- 🔭 **Knowledge base search recall.** Where many knowledge bases are stored together, a search of one holding a small share of what is stored found only a small share of its matches, and the shortfall grew as the store did; the search now keeps looking until it has enough from the knowledge base you asked for, and "PGVECTOR_ITERATIVE_SCAN" switches that off or makes it strict. [#30142](https://github.com/open-webui/open-webui/pull/30142), [#30135](https://github.com/open-webui/open-webui/issues/30135)
+- 🪣 **Searches that found nothing.** A knowledge search that came back empty never handed its database connection back, so enough of them left knowledge search failing outright until the server was restarted; connections are returned now on PostgreSQL and on openGauss alike. [#30142](https://github.com/open-webui/open-webui/pull/30142), [#30133](https://github.com/open-webui/open-webui/issues/30133), [#30144](https://github.com/open-webui/open-webui/pull/30144)
+- 🧽 **Knowledge folder deletion.** Deleting a folder without moving what was in it up a level dropped the files from the listing but left their text in the search index and the files themselves in storage, so a model went on retrieving and citing pages from a folder that was no longer there; the text is now removed with the folder, and a file no other knowledge base holds is deleted with it unless file retention is switched on. [Commit](https://github.com/open-webui/open-webui/commit/17dbc6f001aeea25ae1df528cb79bb272eca4a77)
+- 🦀 **Regex searches over chat and knowledge files.** A pattern search now runs in time proportional to the text whatever the pattern, where a nasty expression could stall the search for good, and the patterns it accepts follow RE2's rules, with no lookarounds or backreferences and character classes matching ASCII only. [Commit](https://github.com/open-webui/open-webui/commit/97e013a66169c4fcd7f26ab9e41a4ff260ffd4da)
+- ⏰ **Automation schedule parsing.** An automation whose rule puts the time in "DTSTART" is now read at that hour, rather than listed at midnight and opened at nine, which moved when it ran as soon as it was saved again. [Commit](https://github.com/open-webui/open-webui/commit/540467b90a430e47e536c20710878b342de659fb)
+- ⏲️ **Recurrence counts and start dates.** A rule repeating a set number of times, ten or a hundred, is read as the limited repeat it is, where any count beginning with a one was treated as one-shot, and a rule carrying its start date on the same line as its repeat text now follows the start you picked, on schedules and calendar events alike. [#29262](https://github.com/open-webui/open-webui/pull/29262)
+- ⌛ **Stalled schedules and stuck tasks.** A schedule whose rule takes too long to work out no longer holds up the round that evaluates it and is skipped with a warning, and background tasks shared through Redis now expire once their worker falls silent, after "REDIS_TASK_TTL" seconds. [Commit](https://github.com/open-webui/open-webui/commit/5fb869db221d9599a576e8e2eea9c3314947d25e)
+- 📣 **Model mention chips.** A mention whose ID carried anything beyond letters, digits and a little punctuation, such as the brackets in some workspace model IDs, stayed on screen as the raw "<@…>" text both in the box you type in and in the message once sent; any ID without a space in it is now drawn as a chip. [#29864](https://github.com/open-webui/open-webui/pull/29864)
+- 😀 **Multi-codepoint emoji.** An emoji whose shortcode is several codepoints, the flags among them, is inserted whole, where only its first part reached the message. [#30213](https://github.com/open-webui/open-webui/pull/30213), [#30212](https://github.com/open-webui/open-webui/issues/30212)
+- 🔔 **Custom webhook names.** A webhook target named with a space or a slash is now tidied the way an automatic name always was, so it can still be edited, deleted, made the default or tested afterwards. [#29947](https://github.com/open-webui/open-webui/pull/29947)
+- 🪛 **Paginated MCP tool lists.** A server that hands its tools back a page at a time had only the first page read, so the rest were never offered to a model; the whole list is now collected before the tools are built. [Commit](https://github.com/open-webui/open-webui/commit/ffae4116a8d58a820f1770c41c69dafe4d51c881)
+- 💭 **Anthropic thinking blocks.** Open WebUI's own thinking blocks are no longer forwarded to an OpenAI-compatible backend, which since 0.11.0 made a strict server such as NVIDIA Dynamo refuse an Anthropic client's second turn; signed blocks still pass through. [#29849](https://github.com/open-webui/open-webui/pull/29849), [#29799](https://github.com/open-webui/open-webui/issues/29799)
+- 🗨️ **Channel model terminals.** A model with a terminal chosen in the workspace had that choice honoured in a chat but dropped where it answered in a channel or ran as a channel automation, so it worked without one; it now carries the same terminal everywhere, alongside the tools, filters and features it already carried. [Commit](https://github.com/open-webui/open-webui/commit/c78ad89934095c4e42e3f059d400a24fe5681de2)
+- 🧺 **Deleted channel messages leave no quotes.** Deleting a channel message now clears the quote of it sitting on every reply and drops it from the reply box, where a reply kept showing the deleted message and could still be sent addressed to it. [#30314](https://github.com/open-webui/open-webui/pull/30314), [#30313](https://github.com/open-webui/open-webui/issues/30313)
+- 🔌 **Terminal tools need a terminal.** A model was offered the tools that read your terminal and type into it whether or not the chat had a terminal switched on and connected in your browser, so it could reach for one that was not there; those tools are now handed over only for the terminal the chat has open. [Commit](https://github.com/open-webui/open-webui/commit/ca1eefe2937081b010ffef3985997d17d3332fa3), [Commit](https://github.com/open-webui/open-webui/commit/1ddba7e2c6f625fbc2c131eb24d3b9775ad898ad)
+- 🔤 **Custom header encoding.** The custom headers a connection sends are encoded once the values are filled in, so a person's name or group carrying anything beyond plain ASCII, a line break included, no longer breaks the request or reaches the other end as something else. [Commit](https://github.com/open-webui/open-webui/commit/7a4a4b93dca34f8ce0c481b180d3eea23797e984)
+- 🆎 **Chromium spellcheck corrections.** Picking a suggestion from the browser's own spelling menu in the message box did nothing, or put the misspelling straight back, because a highlight meant for the notes editor was being drawn over the selection and rebuilding the text underneath it, taking the browser's spelling marks with it; that highlight is now kept out of the message box and only drawn where the editor is not in use. [#29952](https://github.com/open-webui/open-webui/pull/29952), [#29944](https://github.com/open-webui/open-webui/issues/29944)
+- 🈁 **IME composition while renaming.** Confirming a chat rename with Enter or Escape part way through typing with an input method editor now finishes the composition without saving or cancelling the rename, where the key press acted at once. [Commit](https://github.com/open-webui/open-webui/commit/85146206f60a22385ed27dae30d4f00e7e2675eb)
+- 🐳 **Dotless host addresses.** With local web fetching turned on, an address pointing at a container name on the same network, "http://apprise:8000" and the like, is now accepted rather than refused as invalid. [#29945](https://github.com/open-webui/open-webui/pull/29945), [#28161](https://github.com/open-webui/open-webui/issues/28161)
+- 🪧 **False skill mentions.** Something written as "<$fh>" in a message, as Perl and other languages do, was taken for a mention of a skill and quietly removed before the model saw it, and drawn on screen as a chip; only mentions naming a skill that exists and is turned on are treated as mentions now. [Commit](https://github.com/open-webui/open-webui/commit/0edd731c7422870aa109fd0b758c6d68c06655da)
+- 🎒 **Skill settings survive saving.** Saving a skill from its editor cleared the tags and translations it carried and switched it back on where it had been disabled, and all of that now survives the save. [#30185](https://github.com/open-webui/open-webui/pull/30185)
+- 🫥 **Webhook avatar forwarding.** Turning "ENABLE_PROFILE_IMAGE_URL_FORWARDING" off stops browsers being sent on to outside picture addresses, and a channel webhook's picture was sent on regardless; it now serves the built-in picture like the rest, in the webhooks dialog as well as the message list, where the dialog had been sending every viewer's browser straight to the outside address. [#29889](https://github.com/open-webui/open-webui/pull/29889), [#29892](https://github.com/open-webui/open-webui/pull/29892)
+- 🪟 **Statistics window origin.** The window that shares chat statistics with the community accepted requests from any page that opened it and answered to anywhere; it now reads and replies only where the community site is at the other end. [#29918](https://github.com/open-webui/open-webui/pull/29918)
+- 🖼️ **Tool image rendering.** Where a tool answered with an image tucked inside an object or a list rather than on its own, the image was written into the conversation as its raw text, a single screenshot costing hundreds of thousands of tokens and crowding out everything else; such an image is now taken out wherever it sits and attached to the reply, so the model is handed the picture and you see it. An older fault that let every second image through untouched goes with it, and in a saved chat such an image is now kept as a file and referred to rather than written into the conversation itself, so the chat stays small. [#29665](https://github.com/open-webui/open-webui/pull/29665), [#29208](https://github.com/open-webui/open-webui/issues/29208), [Commit](https://github.com/open-webui/open-webui/commit/d372bec70427fe2d568e052ce5e1529e2ad41da9)
+- ⏱️ **Stopped reply state.** Pressing stop saved the reply as finished while the parts inside it were still marked as running, so a block went on reading "Thinking..." or "Executing..." and came back that way after every reload; those parts are now closed off as the reply is stopped, and an open tab settles at once rather than only after a reload, while a tool call still waiting for your approval keeps its prompt. [#29495](https://github.com/open-webui/open-webui/pull/29495), [#29281](https://github.com/open-webui/open-webui/issues/29281)
+- 🩺 **Knowledge sync errors.** A knowledge base sync that fails now names the file it happened on and what the browser said, rather than reporting nothing beyond "Error accessing directory". [#29507](https://github.com/open-webui/open-webui/pull/29507)
+- 🚧 **Terminal proxy restrictions.** Requests passed through to a terminal server are now refused where they aim at that server's administrative endpoints, are not followed on to somewhere else, and are turned away where the path carries characters a parser would rewrite. [Commit](https://github.com/open-webui/open-webui/commit/51bb8cb142f72503e861eeee25ae4dc73c26c36b)
+- ⛔ **Malformed tool calls.** Where a model asked for a tool with arguments that were not an object at all, a bare list or string, the reply stopped there; the model is now told what was wrong with the call and can try again. [Commit](https://github.com/open-webui/open-webui/commit/fed94c9f5af8a59660425d52df09e15fbedb25bc)
+- 📡 **Broken stream reporting.** Where something failed part way through streaming an answer out of "/api/chat/completions", the stream simply stopped, leaving a client waiting on an answer that would never finish; it now closes with an error and a proper end of stream. [Commit](https://github.com/open-webui/open-webui/commit/c0fb36c9b833a85a3a7364e195cf54f3d6c7a787)
+- 🧷 **Chat unblocked after an error.** A reply that failed, on a content filter or an exhausted quota, left the chat turning away everything you typed after it and stopped the message queue. Only the failed reply now ends, so the chat carries on and the other replies in a multi-model answer keep writing. [Commit](https://github.com/open-webui/open-webui/commit/dbb17a5725f9d7f844a6eee63ffca0bd077c7d94)
+- 🫙 **Empty failed replies in history.** An assistant turn that ended in an error with nothing written is no longer handed back to the model as part of the conversation when you send your next message. [Commit](https://github.com/open-webui/open-webui/commit/dbb17a5725f9d7f844a6eee63ffca0bd077c7d94)
+- 📭 **Empty page uploads.** Adding a web address to a knowledge base that came back without any text failed with a bare "Error uploading file" and, where the upload itself was refused, left the row sitting in the list; the reason now reaches you as it was given, and the row is taken away. [Commit](https://github.com/open-webui/open-webui/commit/6786ae1797eadaad7464a147213790e2d272822b)
+- 🎞️ **Tool embed scope.** The frames a tool call can ask to have shown, which run scripts of their own, were drawn wherever a message was rendered, a channel among them; they are now drawn only in the replies of the chat you are in, and never in a channel. [#29985](https://github.com/open-webui/open-webui/pull/29985)
+- 🚰 **Rejected picture addresses.** A model entry carrying a picture address the server refuses no longer leaves that address in memory, where anyone signed in could pile them up. [#29971](https://github.com/open-webui/open-webui/pull/29971)
+- 🖌 **Editing a stored image.** Asking a model to edit an image this instance already holds now works whatever host its address names, where a container name, a default port or a self-composed host made the edit fail with a generic loading error. [#29691](https://github.com/open-webui/open-webui/pull/29691), [#29220](https://github.com/open-webui/open-webui/issues/29220)
+- 🧪 **Memory replies carry less.** The memory tool no longer hands the model each memory's stored metadata, and a memory now records the model's id rather than the whole model entry. [Commit](https://github.com/open-webui/open-webui/commit/e9a0164690a8b1e190bdc8f4613e9d918b26d327)
+- 🔇 **Memory fully off.** With memory switched off, stored memories are no longer folded into a reply's context and the memory tools are no longer offered to the model, where both went on reaching it behind the switch. [#30228](https://github.com/open-webui/open-webui/pull/30228), [#30227](https://github.com/open-webui/open-webui/issues/30227)
+- 🧠 **Memory review behind the switch.** The background review that drafts new memories from a conversation no longer runs when memories are switched off or the account is barred from them, where it went on spending a task-model call every interval turn and failing at the write. [#30309](https://github.com/open-webui/open-webui/pull/30309)
+- 🏗️ **Terminal server save button.** Saving a terminal server now waits for the save to finish before the dialog closes and cannot be set off twice by a second click. [Commit](https://github.com/open-webui/open-webui/commit/1cdd7aa459d6e96905324b452600ff56369d8a4e)
+- 🗺️ **Terminal file panel paths.** The file panel beside a terminal now opens the file a model just wrote even when it is named with a relative path, where the panel could not match the name, jumped to the root and dragged the session's working directory with it. [#30282](https://github.com/open-webui/open-webui/pull/30282), [#30051](https://github.com/open-webui/open-webui/issues/30051)
+- 🍴 **Forked chat folder.** Forking a chat put the copy in the original's folder even where you cannot write to that folder; it is now created outside any folder unless you can. [#30069](https://github.com/open-webui/open-webui/pull/30069)
+- 🪢 **Dropping a folder in place.** Dragging a folder onto the folder it already sits in failed with "Folder already exists", and is now taken for the no-op it is. [#30169](https://github.com/open-webui/open-webui/pull/30169)
+- 🗝️ **Read-only folders read-only everywhere.** A folder shared with you as a viewer no longer shows its edit controls on the empty-chat page, where they appeared and a save went through or failed depending on rights the page never checked. [Commit](https://github.com/open-webui/open-webui/commit/ee3ece1e2b8c9a38c94faf354ca020d66aba801d)
+- 🚿 **Deleting a folder, keeping chats.** Removing a folder while keeping the chats inside it was refused for an account not allowed to delete chats, even though nothing was being deleted, and it now goes through. [#30163](https://github.com/open-webui/open-webui/pull/30163)
+- 🏷️ **Tag cleanup after deletion.** An administrator deleting someone else's chat tidied unused tags out of their own account rather than the owner's, leaving the owner with tags nothing points at. [#30171](https://github.com/open-webui/open-webui/pull/30171)
+- 🌱 **Forking past an unfinished reply.** A chat that held an interrupted reply anywhere in it refused every fork from then on and never recovered; forking now waits only on a reply actually being generated, and a turn paused for tool approval still forks with its prompt showing. [#30131](https://github.com/open-webui/open-webui/pull/30131), [#30128](https://github.com/open-webui/open-webui/issues/30128)
+- 💾 **Deleted tool memory.** Deleting a tool or a function left the whole of its code in memory for as long as the server ran; it is now let go of along with the rest. [#29983](https://github.com/open-webui/open-webui/pull/29983)
+- 🐌 **Sign-in rate limiting.** Counting sign-in attempts through Redis no longer stops the whole worker until Redis answers, so a slow Redis stops freezing every other request with it. [#29977](https://github.com/open-webui/open-webui/pull/29977)
+- ♻️ **Session pool cleanup.** The task that clears out abandoned websocket sessions now carries on through an error from Redis instead of ending for good, and stops properly at shutdown. [#29976](https://github.com/open-webui/open-webui/pull/29976), [#29979](https://github.com/open-webui/open-webui/pull/29979)
+- 🛰️ **Direct connections across workers.** A reply streamed over a direct connection no longer goes quiet part way through where several servers share their websocket traffic through Redis; the events it lives on now travel between workers the way the rest already did. [Commit](https://github.com/open-webui/open-webui/commit/0180efecf362d487e0c30f040f5948c325fbe337)
+- 🫧 **Empty document ids.** A save arriving for a document with no id at all was filed against that empty id and never cleared, so anyone signed in could pile them up; nothing is filed for it now. [#29980](https://github.com/open-webui/open-webui/pull/29980)
+- 🔬 **Page fetch CPU spin.** Fetching a page through the browser-driven loader never returned where that page opened a WebSocket, holding a worker thread at full CPU for the life of the process and costing another core on every further fetch, which left the whole instance slow. [#30050](https://github.com/open-webui/open-webui/pull/30050), [#30024](https://github.com/open-webui/open-webui/issues/30024)
+- 🔁 **Duplicate search tracebacks.** A vector database outage wrote a full traceback twice for every collection and query pair, turning one outage into hundreds of identical stack traces per message on every replica; a single record now names every collection that failed. [#29981](https://github.com/open-webui/open-webui/pull/29981)
+- 🧯 **Page fetch logging.** Fetching a page through the browser-driven loader filled the log with tracebacks where the page closed while it was still pulling pieces of itself, as sites behind Cloudflare and similar do; those requests are now let go of before the page closes. [#29325](https://github.com/open-webui/open-webui/pull/29325), [#28869](https://github.com/open-webui/open-webui/issues/28869)
+- 📤 **Tool export scope.** Exporting all tools at once returned every tool the account could see, the source of a tool shared for reading included; it now returns only the tools it may edit, matching the single-tool export and the way models already export. [#29310](https://github.com/open-webui/open-webui/pull/29310)
+- 🗳️ **Partial workspace exports.** Exporting the prompts or the models from the workspace wrote out only the page you happened to be looking at, so most of them were quietly left out of the file; both now export everything you are allowed to. [#30187](https://github.com/open-webui/open-webui/pull/30187)
+- 🧳 **Imported chats keep more.** A chat brought back from an export arrived unpinned and unarchived and without the variables it was saved with, and all three now survive the round trip. [#30155](https://github.com/open-webui/open-webui/pull/30155), [#30151](https://github.com/open-webui/open-webui/pull/30151)
+- 🗂️ **Unarchiving from search.** The menu on a search result offered to archive a chat that was already archived and said it had been archived when it had been brought back, and it now names and reports whichever of the two it did. [#30177](https://github.com/open-webui/open-webui/pull/30177)
+- 🙈 **Folder filters with no match.** A chat search narrowed by a folder name that matches no folder now finds nothing, where the folder filter was quietly dropped and every chat came back. [#30273](https://github.com/open-webui/open-webui/pull/30273), [#29959](https://github.com/open-webui/open-webui/discussions/29959)
+- 🧹 **Sidebar after bulk actions.** Archiving, deleting or unarchiving every chat at once, or importing a batch of them, left the folders and the pinned chats in the sidebar showing what was no longer there until the page was reloaded, and a bulk action that failed no longer reports success. [Commit](https://github.com/open-webui/open-webui/commit/8b3ee2827241ccc952a3073b2a6bbfad5df01827)
+- 🔐 **Model pictures follow model access.** The picture belonging to a model is now shown only to people who can see that model, where anyone signed in could fetch it and tell an existing model from an unknown one by which picture came back. [#29700](https://github.com/open-webui/open-webui/pull/29700)
+- 🚪 **Webhook pictures follow channel access.** The picture belonging to a channel webhook is now shown only to people with access to that channel, where anyone signed in could fetch it or be sent on to wherever it pointed, and it is refused outright where channels are turned off. [#29703](https://github.com/open-webui/open-webui/pull/29703)
+- 📎 **Safer Word document previews.** Previewing a Word document no longer renders an HTML sub-document embedded inside it, and a link in one opens only where it points at a web address, a mail address or a telephone number. [#29699](https://github.com/open-webui/open-webui/pull/29699)
+- 🚦 **Citation link schemes.** A source attached to a reply now opens only where it points at a web address, falling back to the panel that shows the source rather than following anything else. [#29701](https://github.com/open-webui/open-webui/pull/29701)
+- 🈚 **Citation chips inside formatted text.** A citation inside bold, italic or linked text now renders its chip, where the formatting took it and the citation vanished from the sentence. [#30278](https://github.com/open-webui/open-webui/pull/30278), [#30277](https://github.com/open-webui/open-webui/issues/30277)
+- 🐍 **Saving a tool or function.** Saving a tool or function in the admin pages no longer fails with a missing module error from the built-in code formatter, which was not installing everything it needed. [#29503](https://github.com/open-webui/open-webui/pull/29503)
+- 🛠️ **Tool request duplication.** A tool that writes through an address carrying part of its input no longer has that part repeated in the body of the request as well, which servers checking their input strictly turned away, so those calls now go through. [#29717](https://github.com/open-webui/open-webui/pull/29717), [#29716](https://github.com/open-webui/open-webui/issues/29716)
+- 🍎 **Answers survive on Apple Silicon.** Asking a question that searches a knowledge base with a locally run reranking model no longer takes the whole server down on a Mac, losing the answer and the connection with it. [#29735](https://github.com/open-webui/open-webui/pull/29735), [#29722](https://github.com/open-webui/open-webui/issues/29722)
+- 📚 **Web results stop being cited.** Pages a web search only listed are no longer offered to the model as things to cite, which had it attaching a result id to text from a different result and the citations panel resolving that to a title that looked right. [#29631](https://github.com/open-webui/open-webui/pull/29631), [#29627](https://github.com/open-webui/open-webui/issues/29627)
+- 🔎 **SearchApi errors, news and links.** Web search through searchapi.io now reports a bad key instead of coming back empty, reads the news results it returns alongside its ordinary ones, and hands the web loader the resolved destination link, so citations stop pointing at a redirect page. [#30308](https://github.com/open-webui/open-webui/pull/30308), [#30305](https://github.com/open-webui/open-webui/issues/30305)
+- 🔼 **Honest version checks.** An instance that cannot reach the release listing now says the check failed, instead of reporting whatever it is running as the newest version and recording nothing about it. [#29626](https://github.com/open-webui/open-webui/pull/29626), [#29580](https://github.com/open-webui/open-webui/issues/29580)
+- 🏟️ **Arena models report their errors.** A message to an arena model whose provider answers with an error now shows that error in the chat, where it used to fail on something unrelated and leave the real reason unsaid, and titles and tags no longer break the same way. [#29662](https://github.com/open-webui/open-webui/pull/29662), [#29658](https://github.com/open-webui/open-webui/issues/29658)
+- 🏳️ **Nameless tool calls fail once.** A model endpoint that sends a tool call with no name at all now has that call fail on the spot, rather than the missing name being kept, stored with the message and sent back on the next turn for the endpoint to reject. [#29690](https://github.com/open-webui/open-webui/pull/29690), [#29686](https://github.com/open-webui/open-webui/issues/29686)
+- 🧹 **Direct connections stop leaking listeners.** A server talking to a direct connection no longer leaves a listener behind for every request that ends any way but a clean finish, which grew without limit while a connection kept failing. [#29509](https://github.com/open-webui/open-webui/pull/29509)
+- 🚀 **Cheaper model refreshes.** The model registry shared through Redis is now written only when the models themselves change, rather than on every refresh because of the countdown Ollama attaches to a model it holds in memory. [Commit](https://github.com/open-webui/open-webui/commit/649c012ecf308a994ea180127f7f8f94d0aec311)
+- ✍️ **Continued reply text.** Asking for the rest of a cut-off reply in a temporary chat replaced what was on screen with only the new text, because the message being continued was read back from the saved chat it did not have. It is now taken from the request before the model is called, the continuation joins the same message instead of arriving as a second one, on a connection whose provider is set to llama.cpp the model is told to carry on from the text it is handed rather than repeat it back, opening the result in the message editor no longer shows a line break where the two halves meet, and, where haptic feedback is switched on, a continuation buzzes as it streams like any other reply. [Commit](https://github.com/open-webui/open-webui/commit/77d2000eb79e1cb6ae2004d40e8cca8c9e754cd0), [Commit](https://github.com/open-webui/open-webui/commit/6c7aa3543d21442241f6c53add5ff623ec816c44), [Commit](https://github.com/open-webui/open-webui/commit/57fc344873edc0db9e9f7ff3e9fb167cd80e3ef2), [Commit](https://github.com/open-webui/open-webui/commit/7eefeef4f17118f81c87acb464ad562803a6f26c), [Commit](https://github.com/open-webui/open-webui/commit/d418840aa9c4b77f613308cdaa4f2c6a062a8715), [Commit](https://github.com/open-webui/open-webui/commit/3795d5b29253d4b8d7a0adbab457c7317c40f3c6), [Commit](https://github.com/open-webui/open-webui/commit/57acc2b68f2f9e40b53aa7e609fdd52a4b0d15c4)
+- 🔗 **Cancelled edits keep attachments.** Cancelling the edit of a message no longer strips the files attached to it, where dropping the edit took the attachments down with it. [#30281](https://github.com/open-webui/open-webui/pull/30281), [#30192](https://github.com/open-webui/open-webui/issues/30192)
+- 🏎️ **Faster media page reads.** The browser-driven loader pulled every image, video and font a page referenced down through the server before any text was extracted, so a page carrying a few dozen audio players took ten seconds or timed out. Those requests are now dropped before they are made, and the same page comes back in under three seconds, having pulled 4 MB where it used to pull 55. [#29742](https://github.com/open-webui/open-webui/pull/29742), [#29741](https://github.com/open-webui/open-webui/issues/29741)
+- 📝 **Starting a note from search.** Starting a note from the search box now works when you are already on the notes page, keeps the whole of what you typed including characters such as ampersands and hashes, and no longer makes a further note each time the browser back button is pressed. [#29645](https://github.com/open-webui/open-webui/pull/29645), [#29642](https://github.com/open-webui/open-webui/issues/29642)
+- 📱 **Apple device replies.** An assistant reply no longer comes up blank in a home screen app, an in-app browser or a desktop-class window on Apple devices, where the check that avoided the drawing fault only recognised Safari itself. [#29734](https://github.com/open-webui/open-webui/pull/29734), [#29688](https://github.com/open-webui/open-webui/issues/29688), [#26712](https://github.com/open-webui/open-webui/issues/26712)
+- 📊 **Single source relevance.** A reply drawing on a single source now shows how relevant that source is, where the figure appeared only once a second source joined it and so looked as though it came and went. [#29647](https://github.com/open-webui/open-webui/pull/29647), [#29646](https://github.com/open-webui/open-webui/issues/29646)
+- 🔧 **Arduino sketches upload to knowledge.** A sketch file now reaches the plain text reader like the C++ and header files beside it, rather than being handed to a document extraction server that could make nothing of it and failing the upload. [#29673](https://github.com/open-webui/open-webui/pull/29673), [#29670](https://github.com/open-webui/open-webui/issues/29670)
+- 📰 **Docling conversion failures.** A file that Docling refuses or fails to convert now fails the upload with the reason Docling gave, rather than breaking with a raw error or quietly filing a placeholder that was then indexed and handed to the model in place of the file. [#30107](https://github.com/open-webui/open-webui/pull/30107), [#29808](https://github.com/open-webui/open-webui/issues/29808)
+- 📄 **Uploaded text kept as written.** A file whose text contains escape sequences such as the one standing for a non-breaking space is now stored and read by the model exactly as it was written, rather than having some of them rewritten depending on where in the file they sat. [#29736](https://github.com/open-webui/open-webui/pull/29736), [#29732](https://github.com/open-webui/open-webui/issues/29732)
+- 🔦 **Readable slash command labels.** The entries in the slash command menu no longer show as white text on a white background in the light theme. [#29512](https://github.com/open-webui/open-webui/pull/29512), [#29510](https://github.com/open-webui/open-webui/issues/29510)
+- ⌨️ **Literal arrow sequences.** A sequence such as three hyphens after a less-than sign is now shown as the characters it is made of rather than drawn as an arrow, which had text look changed when it never was. [#29595](https://github.com/open-webui/open-webui/pull/29595), [#29594](https://github.com/open-webui/open-webui/issues/29594)
+- 🖌️ **Editing an image you uploaded.** An image already held by Open WebUI can now be used with image editing, where fetching its own link back over the network could fail on a private network or without a sign-in. [Commit](https://github.com/open-webui/open-webui/commit/50413f34824ea49d5b94d3a97f3fe4bb2e881e38)
+- 🖼 **Playground image edits.** Editing an image in the Images playground now works, where every attempt came back rejected since the request carried its fields under a heading the endpoint never read. [Commit](https://github.com/open-webui/open-webui/commit/c07fa08b995e8d1a1fc2d94a88d8cea691bdc5ee)
+- 🎨 **A tidier attach webpage dialog.** The row holding the Add button no longer carries a grey band of its own between the address box and the button, matching every other dialog. [#29664](https://github.com/open-webui/open-webui/pull/29664), [#29663](https://github.com/open-webui/open-webui/issues/29663)
+- 🖱️ **A plain note date.** The date under a note title no longer shows a pointing hand or announces itself as something to press, having never done anything when clicked. [#29708](https://github.com/open-webui/open-webui/pull/29708)
+- 🌇 **Folder backgrounds on creation.** The background image picked in the Create Folder dialog now arrives on the folder when it is created from the sidebar, where the image was discarded unless the dialog was opened from an existing folder. [#30218](https://github.com/open-webui/open-webui/pull/30218), [#30217](https://github.com/open-webui/open-webui/issues/30217)
+- 🖇 **Delete Chat shortcut everywhere.** The keyboard shortcut that deletes the open chat now works wherever the chat was opened from, where it did nothing unless the chat's row happened to be on screen in the sidebar at that moment. [#30165](https://github.com/open-webui/open-webui/pull/30165), [#30164](https://github.com/open-webui/open-webui/issues/30164)
+- 🚮 **Retired chat variables.** A model whose system prompt no longer declares a variable a previous prompt did stops asking for it, where every new chat kept opening the dialog and refusing to send until a value was entered. [#30173](https://github.com/open-webui/open-webui/pull/30173), [#30172](https://github.com/open-webui/open-webui/issues/30172)
+- 👁️ **Compact hover previews in Safari.** Holding over a chat in the sidebar shows the small preview every other browser shows, rather than one laid out at the width and spacing of a full conversation. [#29734](https://github.com/open-webui/open-webui/pull/29734)
+- 🔖 **Visible title generation faults.** When a new chat's automatic title cannot be generated, the reason now reaches the log at the default level, rather than only under debug logging where a broken feature looked the same as a switched-off one. [#30106](https://github.com/open-webui/open-webui/pull/30106), [#29533](https://github.com/open-webui/open-webui/issues/29533)
+
+### Changed
+
+- 🪶 **Slim starts with nothing configured.** The slim image leaves out the local models and the libraries around them, and still starts and holds a conversation on its defaults; the features that leaned on those models each need an external service of their own. [Commit](https://github.com/open-webui/open-webui/commit/cb942bb94c8dc7941336088fb3392e2398ff56c1)
+- 🗄️ **Slim database support.** The slim image runs on SQLite, its default, or on PostgreSQL; pointed at MySQL, MariaDB or another engine, or started with AWS RDS IAM logins switched on, it stops with an error instead of starting, and those deployments need the standard image. [Commit](https://github.com/open-webui/open-webui/commit/d27aa72ab4a7b5632b4ad49e8467081ad3d7ebb4)
+- 📁 **Slim file storage.** The slim image keeps files on local storage, its default; configured for an S3, Google Cloud or Azure bucket, it stops with an error instead of starting, and those deployments need the standard image. [Commit](https://github.com/open-webui/open-webui/commit/d27aa72ab4a7b5632b4ad49e8467081ad3d7ebb4)
+- 🧮 **Slim searches only through pgvector.** Knowledge search on the slim image needs PostgreSQL with pgvector, and configured for another vector store the instance still starts, and the failure arrives the first time something is searched rather than at startup. [Commit](https://github.com/open-webui/open-webui/commit/cb942bb94c8dc7941336088fb3392e2398ff56c1), [Commit](https://github.com/open-webui/open-webui/commit/d27aa72ab4a7b5632b4ad49e8467081ad3d7ebb4)
+- 🧠 **Slim embedding requirements.** The slim image carries no embedding or reranking model, so knowledge needs OpenAI, Ollama or Azure OpenAI embeddings and an external reranker, falling back to plain cosine scoring where none is set. [Commit](https://github.com/open-webui/open-webui/commit/cb942bb94c8dc7941336088fb3392e2398ff56c1)
+- ✂️ **Slim document splitting.** Splitting a document along a downloaded tokenizer is unavailable on the slim image, which leaves splitting by character or by token count. [Commit](https://github.com/open-webui/open-webui/commit/cb942bb94c8dc7941336088fb3392e2398ff56c1)
+- 📃 **Slim document readers.** The slim image reads text, Markdown, CSV, HTML and XML files as they are; uploading a PDF, a Word file or a presentation fails unless one of the external document extractors is configured. [Commit](https://github.com/open-webui/open-webui/commit/cb942bb94c8dc7941336088fb3392e2398ff56c1)
+- 🎙️ **Slim speech requirements.** The slim image carries neither local Whisper nor local voices, so speech to text and text to speech need an external engine before they will work. [Commit](https://github.com/open-webui/open-webui/commit/cb942bb94c8dc7941336088fb3392e2398ff56c1)
+- 🕸️ **Slim web page fetching.** The slim image carries no headless browser, so a web page is fetched over plain HTTP or through an external loader, and a page that draws itself with JavaScript comes back with less of its content than on the standard image. [Commit](https://github.com/open-webui/open-webui/commit/cb942bb94c8dc7941336088fb3392e2398ff56c1), [Commit](https://github.com/open-webui/open-webui/commit/d27aa72ab4a7b5632b4ad49e8467081ad3d7ebb4)
+- 🔎 **Slim leaves out DDGS.** DDGS, the metasearch provider that needs no key of its own, is not carried in the slim image, so web search there needs a provider with a key. [Commit](https://github.com/open-webui/open-webui/commit/0fa4dea5ff64ea663f162d07c9a1175c39e4aad0)
+- 📥 **Slim code interpreter packages.** The slim image leaves out the code interpreter's packages, so the browser fetches numpy, pandas, matplotlib, scikit-learn and the rest from "cdn.jsdelivr.net" and the interpreter stops working where that is blocked. [Commit](https://github.com/open-webui/open-webui/commit/98fcb844e1b19f7dd6289af26273cdec5447dc52)
+- 🧰 **Slim git requirements.** The slim image no longer carries git, so a tool or function whose requirements point at a "git+https://" address fails to install and needs the standard image or a published package. [Commit](https://github.com/open-webui/open-webui/commit/30eed1251301f74e0dfeaad09c41e81320f790fc)
+- 🧺 **LangChain community removal.** The readers for text, HTML, Word, CSV, PDF and Azure Document Intelligence are now written here rather than taken from "langchain-community", which is no longer installed; a tool or function importing it has to name it in its own requirements from now on. [Commit](https://github.com/open-webui/open-webui/commit/05484aa055a868a49842e1ddff169c19c98b755b)
+- 🧾 **Undeclared package imports.** Packages that sat in the image only by accident, among them nltk, pymongo, the Google Drive client and the Gemini SDK, are no longer installed, so a tool or function importing one must name it in its own requirements. [#29725](https://github.com/open-webui/open-webui/pull/29725), [#29726](https://github.com/open-webui/open-webui/pull/29726), [Commit](https://github.com/open-webui/open-webui/commit/a1c02098aa2687c72482a59117efe643b785df51)
+- 🆔 **Model ID whitespace.** A workspace model whose ID contains a space or a tab is now refused in the editor, through the API and on import; one already stored goes on answering but cannot be saved again until it is recreated. [Commit](https://github.com/open-webui/open-webui/commit/8a19e2f867063256bb2836649e2fe80af41ef748)
+- 🖇️ **Link scheme rendering.** A link in a reply, a citation or a web search result is now rendered only where it points at a web address, a mail address, a telephone number or somewhere inside this instance; anything else, an "ftp://" address or an application link such as "obsidian://" or "vscode://" among them, is shown as the text it is. Two old oddities go with it: a source written as "HTTP://" now becomes a link, and a filename merely containing the letters http no longer becomes one that leads nowhere. [#29890](https://github.com/open-webui/open-webui/pull/29890)
+- 🧲 **Integrations tab is opt-in.** The Integrations tab in personal settings, where tool and terminal connections of your own are managed, is now hidden until an administrator turns on Direct Integrations under Integrations or sets "ENABLE_DIRECT_INTEGRATIONS", and hiding it leaves existing connections working. [Commit](https://github.com/open-webui/open-webui/commit/6d8e63e3666e1b1aa5540ffda0816be5f40c5271), [Commit](https://github.com/open-webui/open-webui/commit/c82634b9d01adadbf9780ff84a0a8168fdc4fdea)
+- 📡 **Image connection check endpoint.** The endpoint that checks an image generation connection has moved and now takes the connection to test in the request itself, so anything calling the old address needs updating. [Commit](https://github.com/open-webui/open-webui/commit/64bbdf7a73724986fac8bcf6e880fe32ef9ac495)
+
## [0.11.3] - 2026-08-31
### Added
@@ -287,6 +534,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- 🛎️ **Losing all your settings.** Your interface settings are no longer wiped by a session that failed to load them, which could happen with no action on your part and cleared everything from your theme to your model parameters; saving now changes only the settings you actually changed, and a session that cannot load them tells you instead of carrying on as though you had none. [#27766](https://github.com/open-webui/open-webui/issues/27766), [Commit](https://github.com/open-webui/open-webui/commit/ad8c79f68657bd3bcf5db6be650e498bb904b36b)
- 🖲️ **Losing the collapsed sidebar.** With the sidebar collapsed, opening a chat no longer pushes the narrow sidebar strip off the edge of the screen, which left no way to reopen the sidebar short of shrinking the window to phone size. [#28501](https://github.com/open-webui/open-webui/pull/28501), [#28500](https://github.com/open-webui/open-webui/issues/28500)
- 🧯 **Timers that fail without saying so.** A timer whose reply cannot be generated, such as one set against a model that has since been removed, is now recorded as failed with the reason, instead of being marked as completed while the reply never arrives. [#27785](https://github.com/open-webui/open-webui/pull/27785), [#27783](https://github.com/open-webui/open-webui/issues/27783)
+- 🎲 **Timers stop for retired owners.** A timer whose owner has been deleted or demoted to pending is recorded as an error instead of running, so a retired account no longer answers through a timer it set while active. [#30220](https://github.com/open-webui/open-webui/pull/30220)
- 🖊️ **Message buttons in channels.** The buttons that appear when you hover a channel message now sit above the message rather than over its content, so they can be clicked on a message that starts with a code block or a table, and so the code and table controls stay clickable too. [#27737](https://github.com/open-webui/open-webui/pull/27737), [#27736](https://github.com/open-webui/open-webui/issues/27736)
- 🔡 **Searching for non-English tags and text.** Searching workspace models by tag, or prompts and automations by their contents, now finds entries containing characters outside the English alphabet, where roughly half were missed depending on which settings were in force when each one was saved. [#28399](https://github.com/open-webui/open-webui/pull/28399)
- 🔭 **Searching the calendar without an end date.** Asking a model to search your calendar without naming an end date now works on PostgreSQL, where the open-ended range was too large for the database to accept and the search failed outright. [Commit](https://github.com/open-webui/open-webui/commit/9550731cc17759f6862595b8cd849ae48695b5c1), [#27717](https://github.com/open-webui/open-webui/issues/27717)
diff --git a/backend/open_webui/__init__.py b/backend/open_webui/__init__.py
index e803cea46691..c56c875566aa 100644
--- a/backend/open_webui/__init__.py
+++ b/backend/open_webui/__init__.py
@@ -1,6 +1,6 @@
import base64
import os
-import random
+import secrets
import sys
from pathlib import Path
from typing import Annotated
@@ -45,7 +45,7 @@ def serve(
if key_length < 1:
raise ValueError('WEBUI_SECRET_KEY_LENGTH must be a positive integer')
typer.echo(f'Generating a new secret key and saving it to {KEY_FILE}')
- KEY_FILE.write_bytes(base64.b64encode(random.randbytes(key_length)))
+ KEY_FILE.write_bytes(base64.b64encode(secrets.token_bytes(key_length)))
typer.echo(f'Loading WEBUI_SECRET_KEY from {KEY_FILE}')
os.environ['WEBUI_SECRET_KEY'] = KEY_FILE.read_text()
diff --git a/backend/open_webui/config.py b/backend/open_webui/config.py
index 5765a26ab6b4..cc38281c4bfb 100644
--- a/backend/open_webui/config.py
+++ b/backend/open_webui/config.py
@@ -1302,6 +1302,8 @@ def reachable(host: str, port: int) -> bool:
TAVILY_EXTRACT_DEPTH = os.getenv('TAVILY_EXTRACT_DEPTH', 'basic')
+TAVILY_SEARCH_DEPTH = os.getenv('TAVILY_SEARCH_DEPTH', 'basic')
+
STAAN_API_KEY = os.getenv('STAAN_API_KEY', '')
STAAN_MARKET = os.getenv('STAAN_MARKET', 'en-us')
@@ -1675,43 +1677,13 @@ def reachable(host: str, port: int) -> bool:
DEFAULT_PINNED_MODELS = os.getenv('DEFAULT_PINNED_MODELS', None)
+# None uses the frontend's localized defaults; an empty list disables suggestions.
try:
- default_prompt_suggestions = JSONCodec.loads(os.getenv('DEFAULT_PROMPT_SUGGESTIONS', '[]'))
+ DEFAULT_PROMPT_SUGGESTIONS = JSONCodec.loads(os.getenv('DEFAULT_PROMPT_SUGGESTIONS', 'null'))
except Exception as e:
log.exception(f'Error loading DEFAULT_PROMPT_SUGGESTIONS: {e}')
- default_prompt_suggestions = []
-if default_prompt_suggestions == []:
- default_prompt_suggestions = [
- {
- 'title': ['Help me study', 'vocabulary for a college entrance exam'],
- 'content': "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.",
- },
- {
- 'title': ['Give me ideas', "for what to do with my kids' art"],
- 'content': "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.",
- },
- {
- 'title': ['Tell me a fun fact', 'about the Roman Empire'],
- 'content': 'Tell me a random fun fact about the Roman Empire',
- },
- {
- 'title': ['Show me a code snippet', "of a website's sticky header"],
- 'content': "Show me a code snippet of a website's sticky header in CSS and JavaScript.",
- },
- {
- 'title': [
- 'Explain options trading',
- "if I'm familiar with buying and selling stocks",
- ],
- 'content': "Explain options trading in simple terms if I'm familiar with buying and selling stocks.",
- },
- {
- 'title': ['Overcome procrastination', 'give me tips'],
- 'content': 'Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?',
- },
- ]
+ DEFAULT_PROMPT_SUGGESTIONS = None
-DEFAULT_PROMPT_SUGGESTIONS = default_prompt_suggestions
DEFAULT_PROMPT_SUGGESTIONS_I18N = {}
try:
@@ -3028,6 +3000,7 @@ def feishu_oauth_register(oauth: OAuth):
'web.search.sougou_api_sk': SOUGOU_API_SK,
'web.search.tavily_api_key': TAVILY_API_KEY,
'web.search.tavily_extract_depth': TAVILY_EXTRACT_DEPTH,
+ 'web.search.tavily_search_depth': TAVILY_SEARCH_DEPTH,
'web.search.staan_api_key': STAAN_API_KEY,
'web.search.staan_market': STAAN_MARKET,
'web.search.staan_max_snippets': STAAN_MAX_SNIPPETS,
diff --git a/backend/open_webui/env.py b/backend/open_webui/env.py
index 68c4272872a3..dc160e15925d 100644
--- a/backend/open_webui/env.py
+++ b/backend/open_webui/env.py
@@ -388,6 +388,14 @@ def parse_section(section):
except ValueError:
REDIS_RESPONSE_STREAM_TTL = 3600
+# Seconds a task survives without a heartbeat. 0 disables expiry.
+try:
+ REDIS_TASK_TTL = int(os.getenv('REDIS_TASK_TTL', '300'))
+ if REDIS_TASK_TTL != 0 and REDIS_TASK_TTL < 60:
+ REDIS_TASK_TTL = 300
+except ValueError:
+ REDIS_TASK_TTL = 300
+
REDIS_SENTINEL_HOSTS = os.getenv('REDIS_SENTINEL_HOSTS', '')
REDIS_SENTINEL_PORT = os.getenv('REDIS_SENTINEL_PORT', '26379')
@@ -485,6 +493,12 @@ def parse_section(section):
WEBSOCKET_REDIS_URL = os.getenv('WEBSOCKET_REDIS_URL', REDIS_URL)
WEBSOCKET_REDIS_CLUSTER = os.getenv('WEBSOCKET_REDIS_CLUSTER', str(REDIS_CLUSTER)).lower() == 'true'
+# publishes room-targeted emits on per-room redis channels so instances skip
+# messages for rooms without local members; must be identical across the fleet
+# (toggle with a full restart, not a rolling one), set false for the previous
+# shared-channel-only delivery
+WEBSOCKET_REDIS_ROOM_CHANNELS = os.getenv('WEBSOCKET_REDIS_ROOM_CHANNELS', 'True').lower() == 'true'
+
websocket_redis_lock_timeout = os.getenv('WEBSOCKET_REDIS_LOCK_TIMEOUT', '60')
try:
@@ -1048,7 +1062,9 @@ def _parse_ssl_env(value: str) -> 'bool | _ssl.SSLContext':
# Opt in to CPython's in-place string append optimization for streamed responses.
# Off by default for a staged rollout. Only a host already out of memory can lose
# text here; the default path (a full copy per chunk) raises there too.
-ENABLE_CHAT_RESPONSE_STREAM_INPLACE_APPEND = os.getenv('ENABLE_CHAT_RESPONSE_STREAM_INPLACE_APPEND', 'False').lower() == 'true'
+ENABLE_CHAT_RESPONSE_STREAM_INPLACE_APPEND = (
+ os.getenv('ENABLE_CHAT_RESPONSE_STREAM_INPLACE_APPEND', 'False').lower() == 'true'
+)
# When enabled, uses a hardcoded extension-to-MIME dictionary as a last-resort
# fallback when both mimetypes.guess_type() and file.meta.content_type fail to
diff --git a/backend/open_webui/internal/db.py b/backend/open_webui/internal/db.py
index 7fb0d17b1961..e2f523cfc233 100644
--- a/backend/open_webui/internal/db.py
+++ b/backend/open_webui/internal/db.py
@@ -348,15 +348,16 @@ def like(pattern, value, escape=None):
if compiled is False:
return False
if compiled is None:
- regex = []
+ segments = ['']
escaped = False
for char in pattern:
if escape and not escaped and char == escape:
escaped = True
continue
- regex.append(
- '.*' if not escaped and char == '%' else '.' if not escaped and char == '_' else re.escape(char)
- )
+ if not escaped and char == '%':
+ segments.append('')
+ else:
+ segments[-1] += '.' if not escaped and char == '_' else re.escape(char)
escaped = False
if escaped:
compiled = False
@@ -364,7 +365,11 @@ def like(pattern, value, escape=None):
compiled_patterns.clear()
compiled_patterns[key] = compiled
return False
- compiled = re.compile(''.join(regex), re.DOTALL)
+ # Atomic groups pin each middle segment to its first match, so '%' never backtracks.
+ regex = segments[0] + ''.join(f'(?>.*?{segment})' for segment in segments[1:-1])
+ if len(segments) > 1:
+ regex += '.*' + segments[-1]
+ compiled = re.compile(regex, re.DOTALL)
if len(compiled_patterns) >= 512:
compiled_patterns.clear()
compiled_patterns[key] = compiled
diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py
index 3cf7619332f4..ecba6407f342 100644
--- a/backend/open_webui/main.py
+++ b/backend/open_webui/main.py
@@ -74,6 +74,7 @@
seed_registered_defaults,
)
from open_webui.constants import ERROR_MESSAGES, TASKS
+from open_webui.utils.recurrence import RecurrenceEvaluationTimeout
from open_webui.env import (
USE_SLIM,
AIOHTTP_CLIENT_SESSION_SSL,
@@ -107,12 +108,14 @@
MAX_BODY_LOG_SIZE,
# Redis
REDIS_KEY_PREFIX,
+ REDIS_TASK_TTL,
REDIS_URL,
RESET_CONFIG_ON_START,
SAFE_MODE,
SCIM_TOKEN,
VERSION,
WEBSOCKET_HEARTBEAT_INTERVAL,
+ WEBSOCKET_MANAGER,
# Admin Account Runtime Creation
WEBUI_ADMIN_EMAIL,
WEBUI_ADMIN_NAME,
@@ -189,6 +192,7 @@
get_user_id_from_session_pool,
periodic_session_pool_cleanup,
periodic_usage_pool_cleanup,
+ redis_event_listener,
)
from open_webui.socket.main import (
app as socket_app,
@@ -200,6 +204,7 @@
list_task_ids_by_item_id,
list_tasks,
redis_task_command_listener,
+ redis_task_heartbeat,
stop_item_tasks,
stop_task,
) # Import from tasks.py
@@ -232,6 +237,7 @@
normalize_chat_variables,
)
from open_webui.utils.embeddings import generate_embeddings
+from open_webui.utils.headers import get_headers_and_cookies
from open_webui.utils.json_codec import JSONCodec
from open_webui.utils.json_response import apply_orjson_http_json
from open_webui.utils.logger import start_logger
@@ -259,7 +265,7 @@
encrypt_data,
get_oauth_client_info_with_dynamic_client_registration,
get_oauth_client_info_with_static_credentials,
- recover_static_oauth_client_metadata,
+ recover_oauth_client_metadata,
resolve_oauth_client_info,
)
from open_webui.utils.plugin import install_tool_and_function_dependencies
@@ -386,6 +392,11 @@ async def lifespan(app: FastAPI):
if app.state.redis is not None:
app.state.redis_task_command_listener = asyncio.create_task(redis_task_command_listener(app))
+ if REDIS_TASK_TTL > 0:
+ app.state.redis_task_heartbeat = asyncio.create_task(redis_task_heartbeat(app))
+
+ if WEBSOCKET_MANAGER == 'redis':
+ app.state.redis_event_listener = asyncio.create_task(redis_event_listener())
app.state.periodic_usage_pool_cleanup = asyncio.create_task(periodic_usage_pool_cleanup())
app.state.periodic_session_pool_cleanup = asyncio.create_task(periodic_session_pool_cleanup())
@@ -473,6 +484,12 @@ async def lifespan(app: FastAPI):
if hasattr(app.state, 'redis_task_command_listener'):
app.state.redis_task_command_listener.cancel()
+ if hasattr(app.state, 'redis_task_heartbeat'):
+ app.state.redis_task_heartbeat.cancel()
+
+ if hasattr(app.state, 'redis_event_listener'):
+ app.state.redis_event_listener.cancel()
+
app.state.periodic_usage_pool_cleanup.cancel()
app.state.periodic_session_pool_cleanup.cancel()
app.state.scheduler_worker_loop.cancel()
@@ -495,6 +512,12 @@ async def lifespan(app: FastAPI):
lifespan=lifespan,
)
+
+@app.exception_handler(RecurrenceEvaluationTimeout)
+async def recurrence_timeout_handler(request: Request, exc: RecurrenceEvaluationTimeout):
+ return JSONResponse(status_code=400, content={'detail': str(exc)})
+
+
# Used by readiness checks to gate traffic until startup work is done.
app.state.startup_complete = False
@@ -614,9 +637,7 @@ async def initialize_runtime_config(app: FastAPI):
if server_id and auth_type in ('oauth_2.1', 'oauth_2.1_static'):
try:
oauth_client_info = resolve_oauth_client_info(tool_server_connection)
- oauth_client_info = await recover_static_oauth_client_metadata(
- tool_server_connection, oauth_client_info
- )
+ oauth_client_info = await recover_oauth_client_metadata(tool_server_connection, oauth_client_info)
oauth_client_info = apply_connection_oauth_options(tool_server_connection, oauth_client_info)
app.state.oauth_client_manager.add_client(
f'mcp:{server_id}',
@@ -974,14 +995,12 @@ async def unload_model(request: Request, form_data: ModelUnloadForm, user=Depend
try:
timeout = aiohttp.ClientTimeout(total=30)
async with aiohttp.ClientSession(timeout=timeout, trust_env=True) as session:
- headers = {
- 'Content-Type': 'application/json',
- **({'Authorization': f'Bearer {key}'} if key else {}),
- }
+ headers, cookies = await get_headers_and_cookies(request, url, key, api_config, user=user)
async with session.post(
f'{url}/api/generate',
data=payload,
headers=headers,
+ cookies=cookies,
) as r:
if not r.ok:
errors.append({'url_idx': idx, 'error': await r.text()})
@@ -1015,14 +1034,12 @@ async def unload_model(request: Request, form_data: ModelUnloadForm, user=Depend
try:
timeout = aiohttp.ClientTimeout(total=30)
async with aiohttp.ClientSession(timeout=timeout, trust_env=True) as session:
- headers = {
- 'Content-Type': 'application/json',
- **({'Authorization': f'Bearer {key}'} if key else {}),
- }
+ headers, cookies = await get_headers_and_cookies(request, base_url, key, api_config, user=user)
async with session.post(
f'{root_url}/models/unload',
json={'model': actual_model},
headers=headers,
+ cookies=cookies,
) as r:
if not r.ok:
detail = await r.text()
@@ -1470,7 +1487,9 @@ async def run_initial_title_generation():
asyncio.create_task(run_initial_title_generation())
else:
# Existing chat — verify ownership
- if not await Chats.is_chat_owner(chat_id, user.id) and user.role != 'admin':
+ if not await Chats.is_chat_owner(chat_id, user.id) and not (
+ user.role == 'admin' and ENABLE_ADMIN_CHAT_ACCESS
+ ):
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail=ERROR_MESSAGES.DEFAULT(),
@@ -1625,7 +1644,8 @@ async def run_initial_title_generation():
async def process_chat(request, form_data, user, metadata, model, tasks=None):
try:
ctx = None
- if metadata.get('assistant_message_id'):
+ # Saved chats load the message after approved tool calls run, so their results are kept
+ if metadata.get('assistant_message_id') and not is_saved_chat_id(metadata.get('chat_id')):
ctx = await build_chat_response_context(request, form_data, user, model, metadata, tasks, [])
form_data, metadata, events = await process_chat_payload(request, form_data, user, metadata, model)
@@ -2058,7 +2078,7 @@ async def verify_chat_ownership(chat_id: str | None, user) -> None:
detail='Channel chats are not supported on this endpoint',
)
- if user.role != 'admin' and not await Chats.is_chat_owner(chat_id, user.id):
+ if not (user.role == 'admin' and ENABLE_ADMIN_CHAT_ACCESS) and not await Chats.is_chat_owner(chat_id, user.id):
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail=ERROR_MESSAGES.DEFAULT(),
@@ -2122,11 +2142,11 @@ async def list_tasks_by_chat_id_endpoint(request: Request, chat_id: str, user=De
socket_id = get_temporary_chat_session_id(chat_id)
if socket_id:
owner_id = get_user_id_from_session_pool(socket_id)
- if owner_id != user.id and user.role != 'admin':
+ if owner_id != user.id and not (user.role == 'admin' and ENABLE_ADMIN_CHAT_ACCESS):
return {'task_ids': []}
else:
chat = await Chats.get_chat_by_id(chat_id)
- if chat is None or (chat.user_id != user.id and user.role != 'admin'):
+ if chat is None or (chat.user_id != user.id and not (user.role == 'admin' and ENABLE_ADMIN_CHAT_ACCESS)):
return {'task_ids': []}
task_ids = await list_task_ids_by_item_id(request.app.state.redis, chat_id)
@@ -2141,11 +2161,11 @@ async def stop_tasks_by_chat_id_endpoint(request: Request, chat_id: str, user=De
chat = None
if socket_id:
owner_id = get_user_id_from_session_pool(socket_id)
- if owner_id != user.id and user.role != 'admin':
+ if owner_id != user.id and not (user.role == 'admin' and ENABLE_ADMIN_CHAT_ACCESS):
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=ERROR_MESSAGES.NOT_FOUND)
else:
chat = await Chats.get_chat_by_id(chat_id)
- if chat is None or (chat.user_id != user.id and user.role != 'admin'):
+ if chat is None or (chat.user_id != user.id and not (user.role == 'admin' and ENABLE_ADMIN_CHAT_ACCESS)):
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=ERROR_MESSAGES.NOT_FOUND)
result = await stop_item_tasks(request.app.state.redis, chat_id)
diff --git a/backend/open_webui/models/access_grants.py b/backend/open_webui/models/access_grants.py
index 03a7ef72029e..49cb83a18039 100644
--- a/backend/open_webui/models/access_grants.py
+++ b/backend/open_webui/models/access_grants.py
@@ -686,8 +686,7 @@ async def get_users_with_access(
Get all users who have the specified permission on a resource.
Returns a list of UserModel instances.
"""
- from open_webui.models.groups import Groups
- from open_webui.models.users import UserModel, Users
+ from open_webui.models.users import Users
async with get_async_db_context(db) as db:
result = await db.execute(
@@ -699,27 +698,69 @@ async def get_users_with_access(
)
grants = result.scalars().all()
- # Check for public access
- for grant in grants:
- if grant.principal_type == 'user' and grant.principal_id == '*':
- result = await Users.get_users(filter={'roles': ['!pending']}, db=db)
- return result.get('users', [])
-
- user_ids_with_access = set()
-
- for grant in grants:
- if grant.principal_type == 'user':
- user_ids_with_access.add(grant.principal_id)
- elif grant.principal_type == 'group':
- group_user_ids = await Groups.get_group_user_ids_by_id(grant.principal_id, db=db)
- if group_user_ids:
- user_ids_with_access.update(group_user_ids)
+ user_ids_with_access = await self.get_user_ids_by_access_grants(grants, permission, db=db)
if not user_ids_with_access:
return []
return await Users.get_users_by_user_ids(list(user_ids_with_access), db=db)
+ async def get_user_ids_by_access_grants(
+ self,
+ access_grants: list[AccessGrantModel],
+ permission: str = 'read',
+ db: AsyncSession | None = None,
+ ) -> set[str]:
+ """Get user IDs with the specified permission, including public and group grants."""
+ from open_webui.models.groups import Groups
+ from open_webui.models.users import Users
+
+ async with get_async_db_context(db) as db:
+ user_ids = set()
+ group_ids = []
+ for grant in access_grants:
+ if grant.permission != permission:
+ continue
+ if grant.principal_type == PRINCIPAL_TYPE_USER:
+ if grant.principal_id == WILDCARD_PRINCIPAL_ID:
+ result = await Users.get_users(filter={'roles': ['!pending']}, db=db)
+ return {user.id for user in result.get('users', [])}
+ user_ids.add(grant.principal_id)
+ elif grant.principal_type == PRINCIPAL_TYPE_GROUP:
+ group_ids.append(grant.principal_id)
+
+ if group_ids:
+ group_user_ids = await Groups.get_group_user_ids_by_ids(group_ids, db=db)
+ for members in group_user_ids.values():
+ user_ids.update(members)
+ return user_ids
+
+ async def get_revoked_user_ids_by_resource(
+ self,
+ resource_type: str,
+ resource_id: str,
+ previous_access_grants: list[AccessGrantModel],
+ permission: str = 'read',
+ db: AsyncSession | None = None,
+ ) -> set[str]:
+ """Get user IDs that lost the specified permission after a resource's grants changed."""
+ async with get_async_db_context(db) as db:
+ access_grants = await self.get_grants_by_resource(resource_type, resource_id, db=db)
+ previous_principals = {
+ (grant.principal_type, grant.principal_id)
+ for grant in previous_access_grants
+ if grant.permission == permission
+ }
+ principals = {
+ (grant.principal_type, grant.principal_id) for grant in access_grants if grant.permission == permission
+ }
+ if previous_principals <= principals or (PRINCIPAL_TYPE_USER, WILDCARD_PRINCIPAL_ID) in principals:
+ return set()
+
+ previous_user_ids = await self.get_user_ids_by_access_grants(previous_access_grants, permission, db=db)
+ user_ids = await self.get_user_ids_by_access_grants(access_grants, permission, db=db)
+ return previous_user_ids - user_ids
+
def has_permission_filter(
self,
db,
diff --git a/backend/open_webui/models/automations.py b/backend/open_webui/models/automations.py
index 11a906670b85..954026cfc8c4 100644
--- a/backend/open_webui/models/automations.py
+++ b/backend/open_webui/models/automations.py
@@ -195,7 +195,7 @@ async def search_automations(
stmt = stmt.filter(
or_(
Automation.name.ilike(f'%{query}%'),
- *(data_text.ilike(f'%{variant}%') for variant in json_text_variants(query)),
+ *(data_text.icontains(variant, autoescape=True) for variant in json_text_variants(query)),
)
)
@@ -312,6 +312,7 @@ async def claim_due(self, now_ns: int, limit: int = 10, db: Optional[AsyncSessio
rows = result.scalars().all()
from open_webui.utils.automations import next_run_ns
+ from open_webui.utils.recurrence import RecurrenceEvaluationTimeout
# Batch-fetch user timezones so rescheduling respects each
# user's local timezone instead of falling back to server time.
@@ -323,13 +324,20 @@ async def claim_due(self, now_ns: int, limit: int = 10, db: Optional[AsyncSessio
tz_result = await db.execute(select(User.id, User.timezone).where(User.id.in_(user_ids)))
timezone_by_user_id = {uid: tz for uid, tz in tz_result.all()}
+ claimed = []
for row in rows:
+ try:
+ next_run_at = await next_run_ns(row.data.get('rrule', ''), tz=timezone_by_user_id.get(row.user_id))
+ except RecurrenceEvaluationTimeout:
+ log.warning('Skipping automation %s: recurrence evaluation timed out', row.id)
+ continue
row.last_run_at = now_ns
- row.next_run_at = next_run_ns(row.data.get('rrule', ''), tz=timezone_by_user_id.get(row.user_id))
+ row.next_run_at = next_run_at
+ claimed.append(row)
await db.commit()
- return [AutomationModel.model_validate(r) for r in rows]
+ return [AutomationModel.model_validate(r) for r in claimed]
####################
diff --git a/backend/open_webui/models/calendar.py b/backend/open_webui/models/calendar.py
index 3a3147a7ad03..fd7390fcea65 100644
--- a/backend/open_webui/models/calendar.py
+++ b/backend/open_webui/models/calendar.py
@@ -8,7 +8,7 @@
from open_webui.models.access_grants import AccessGrantModel, AccessGrants
from open_webui.models.groups import Groups
from open_webui.models.users import User, UserModel, UserResponse
-from pydantic import BaseModel, ConfigDict, Field, field_validator
+from pydantic import BaseModel, ConfigDict, Field
from sqlalchemy import (
JSON,
BigInteger,
@@ -179,6 +179,20 @@ class CalendarUpdateForm(BaseModel):
access_grants: Optional[list[dict]] = None
+async def validate_calendar_rrule(value: Optional[str]) -> None:
+ if value:
+ from open_webui.utils.recurrence import rrule_interval_seconds
+
+ try:
+ interval = await rrule_interval_seconds(value)
+ except ValueError:
+ raise
+ except Exception as e:
+ raise ValueError(ERROR_MESSAGES.AUTOMATION_INVALID_RRULE(e)) from e
+ if interval is not None and interval < MIN_CALENDAR_RRULE_INTERVAL_SECONDS:
+ raise ValueError(ERROR_MESSAGES.CALENDAR_RRULE_TOO_FREQUENT)
+
+
class CalendarEventForm(BaseModel):
calendar_id: str
title: str
@@ -193,22 +207,6 @@ class CalendarEventForm(BaseModel):
meta: Optional[dict] = None
attendees: Optional[list[dict]] = None
- @field_validator('rrule')
- @classmethod
- def reject_sub_daily_rrule(cls, value: Optional[str]) -> Optional[str]:
- if value:
- from open_webui.utils.automations import rrule_interval_seconds
-
- try:
- interval = rrule_interval_seconds(value)
- except ValueError:
- raise
- except Exception as e:
- raise ValueError(ERROR_MESSAGES.AUTOMATION_INVALID_RRULE(e))
- if interval is not None and interval < MIN_CALENDAR_RRULE_INTERVAL_SECONDS:
- raise ValueError(ERROR_MESSAGES.CALENDAR_RRULE_TOO_FREQUENT)
- return value
-
class CalendarEventUpdateForm(BaseModel):
calendar_id: Optional[str] = None
@@ -225,22 +223,6 @@ class CalendarEventUpdateForm(BaseModel):
is_cancelled: Optional[bool] = None
attendees: Optional[list[dict]] = None
- @field_validator('rrule')
- @classmethod
- def reject_sub_daily_rrule(cls, value: Optional[str]) -> Optional[str]:
- if value:
- from open_webui.utils.automations import rrule_interval_seconds
-
- try:
- interval = rrule_interval_seconds(value)
- except ValueError:
- raise
- except Exception as e:
- raise ValueError(ERROR_MESSAGES.AUTOMATION_INVALID_RRULE(e))
- if interval is not None and interval < MIN_CALENDAR_RRULE_INTERVAL_SECONDS:
- raise ValueError(ERROR_MESSAGES.CALENDAR_RRULE_TOO_FREQUENT)
- return value
-
class RSVPForm(BaseModel):
status: str # 'accepted' | 'declined' | 'tentative' | 'pending'
@@ -465,6 +447,7 @@ async def _to_event_model(
async def insert_new_event(
self, user_id: str, form_data: CalendarEventForm, db: Optional[AsyncSession] = None
) -> Optional[CalendarEventModel]:
+ await validate_calendar_rrule(form_data.rrule)
async with get_async_db_context(db) as db:
now = int(time.time_ns())
event = CalendarEvent(
@@ -695,6 +678,7 @@ async def search_events(
async def update_event_by_id(
self, id: str, form_data: CalendarEventUpdateForm, db: Optional[AsyncSession] = None
) -> Optional[CalendarEventModel]:
+ await validate_calendar_rrule(form_data.rrule)
async with get_async_db_context(db) as db:
result = await db.execute(select(CalendarEvent).filter(CalendarEvent.id == id))
event = result.scalars().first()
diff --git a/backend/open_webui/models/chat_messages.py b/backend/open_webui/models/chat_messages.py
index baa45ab603a4..7ccbba7a87c1 100644
--- a/backend/open_webui/models/chat_messages.py
+++ b/backend/open_webui/models/chat_messages.py
@@ -1012,12 +1012,15 @@ async def get_hourly_message_counts_by_model(
self,
start_date: Optional[int] = None,
end_date: Optional[int] = None,
+ group_id: Optional[str] = None,
db: Optional[AsyncSession] = None,
) -> dict[str, dict[str, int]]:
"""Get message counts grouped by hour and model."""
async with get_async_db_context(db) as db:
from datetime import datetime, timedelta
+ from open_webui.models.groups import GroupMember
+
stmt = select(ChatMessage.created_at, ChatMessage.model_id).filter(
ChatMessage.role == 'assistant',
ChatMessage.model_id.isnot(None),
@@ -1027,6 +1030,9 @@ async def get_hourly_message_counts_by_model(
stmt = stmt.filter(ChatMessage.created_at >= start_date)
if end_date:
stmt = stmt.filter(ChatMessage.created_at <= end_date)
+ if group_id:
+ group_users = select(GroupMember.user_id).filter(GroupMember.group_id == group_id).scalar_subquery()
+ stmt = stmt.filter(ChatMessage.user_id.in_(group_users))
result = await db.execute(stmt)
results = result.all()
diff --git a/backend/open_webui/models/chats.py b/backend/open_webui/models/chats.py
index 46131dc8e9df..c5620f0cfef4 100644
--- a/backend/open_webui/models/chats.py
+++ b/backend/open_webui/models/chats.py
@@ -417,9 +417,6 @@ def _sanitize_chat_row(self, chat_item):
"""
Clean a Chat SQLAlchemy model's title + chat JSON,
and return True if anything changed.
-
- The message write paths (upsert/status/delete) rely on this
- leaving the blob clean and sanitize only the data they add.
"""
changed = False
@@ -651,6 +648,7 @@ def _chat_import_form_to_chat_model(self, user_id: str, form_data: ChatImportFor
'current_message_id': form_data.current_message_id or self.get_current_message_id(form_data.chat),
'created_at': (form_data.created_at if form_data.created_at else int(time.time())),
'updated_at': (form_data.updated_at if form_data.updated_at else int(time.time())),
+ 'last_read_at': int(time.time()),
}
)
return chat
@@ -1106,11 +1104,16 @@ async def get_message_by_id_and_message_id(self, id: str, message_id: str) -> di
if messages_map and message_id in messages_map:
return messages_map[message_id]
- chat = await self.get_chat_by_id(id)
- if chat is None:
+ # Messages the frontend saved straight into the chat blob have no chat_message row yet.
+ async with get_async_db_context() as session:
+ result = await session.execute(select(Chat.chat[('history', 'messages')]).filter_by(id=id))
+ row = result.one_or_none()
+
+ if row is None:
return None
- return chat.chat.get('history', {}).get('messages', {}).get(message_id, {})
+ messages = row[0] or {}
+ return self._clean_null_bytes(messages.get(message_id, {}))
async def get_message_metadata(
self,
@@ -1158,7 +1161,6 @@ async def upsert_message_to_chat_by_id_and_message_id(
if chat_item is None:
return None
- self._sanitize_chat_row(chat_item)
chat = chat_item.chat or {}
self._repair_chat_current_id(chat)
@@ -1166,7 +1168,7 @@ async def upsert_message_to_chat_by_id_and_message_id(
saved_message = self.upsert_message_to_history(history, message_id, message)
chat['history'] = history
chat_item.chat = chat # chat is a fresh dict when the column was empty
- chat_item.title = chat.get('title', 'New Chat')
+ chat_item.title = self._clean_null_bytes(chat.get('title', 'New Chat'))
chat_item.current_message_id = self.get_current_message_id(chat)
flag_modified(chat_item, 'chat')
@@ -1204,7 +1206,6 @@ async def delete_message_from_chat_by_id_and_message_id(self, id: str, message_i
if chat_item is None:
return None
- self._sanitize_chat_row(chat_item)
chat = chat_item.chat or {}
self._repair_chat_current_id(chat)
@@ -1212,7 +1213,7 @@ async def delete_message_from_chat_by_id_and_message_id(self, id: str, message_i
deleted_ids = self.delete_message_from_history(history, message_id)
if not deleted_ids:
chat_item.chat = chat
- chat_item.title = chat.get('title', 'New Chat')
+ chat_item.title = self._clean_null_bytes(chat.get('title', 'New Chat'))
chat_item.current_message_id = self.get_current_message_id(chat)
flag_modified(chat_item, 'chat')
await session.commit()
@@ -1221,7 +1222,7 @@ async def delete_message_from_chat_by_id_and_message_id(self, id: str, message_i
messages = history.get('messages') or {}
chat['history'] = history
chat_item.chat = chat
- chat_item.title = chat.get('title', 'New Chat')
+ chat_item.title = self._clean_null_bytes(chat.get('title', 'New Chat'))
chat_item.current_message_id = self.get_current_message_id(chat)
flag_modified(chat_item, 'chat')
chat_item.updated_at = int(time.time())
@@ -1251,7 +1252,6 @@ async def add_message_status_to_chat_by_id_and_message_id(
if chat_item is None:
return None
- self._sanitize_chat_row(chat_item)
chat = chat_item.chat or {}
self._repair_chat_current_id(chat)
history = chat.get('history', {})
@@ -1263,7 +1263,7 @@ async def add_message_status_to_chat_by_id_and_message_id(
chat['history'] = history
chat_item.chat = chat
- chat_item.title = chat.get('title', 'New Chat')
+ chat_item.title = self._clean_null_bytes(chat.get('title', 'New Chat'))
chat_item.current_message_id = self.get_current_message_id(chat)
flag_modified(chat_item, 'chat')
await session.commit()
@@ -2522,6 +2522,8 @@ async def delete_chats_by_user_id(self, user_id: str, db: AsyncSession | None =
async def delete_chats_by_user_id_and_folder_id(
self, user_id: str, folder_id: str, db: AsyncSession | None = None
) -> bool:
+ from open_webui.models.shared_chats import SharedChat as SharedChatTable
+
try:
async with get_async_db_context(db) as session:
chat_ids_stmt = select(Chat.id).filter_by(user_id=user_id, folder_id=folder_id)
@@ -2529,6 +2531,7 @@ async def delete_chats_by_user_id_and_folder_id(
update(AutomationRun).filter(AutomationRun.chat_id.in_(chat_ids_stmt)).values(chat_id=None)
)
await session.execute(delete(ChatMessage).filter(ChatMessage.chat_id.in_(chat_ids_stmt)))
+ await session.execute(delete(SharedChatTable).filter(SharedChatTable.chat_id.in_(chat_ids_stmt)))
await session.execute(delete(Chat).filter_by(user_id=user_id, folder_id=folder_id))
await session.commit()
@@ -2536,18 +2539,15 @@ async def delete_chats_by_user_id_and_folder_id(
except Exception:
return False
- async def move_chats_by_user_id_and_folder_id(
+ async def move_chats_by_folder_id(
self,
- user_id: str,
folder_id: str,
new_folder_id: str | None,
db: AsyncSession | None = None,
) -> bool:
try:
async with get_async_db_context(db) as session:
- await session.execute(
- update(Chat).filter_by(user_id=user_id, folder_id=folder_id).values(folder_id=new_folder_id)
- )
+ await session.execute(update(Chat).filter_by(folder_id=folder_id).values(folder_id=new_folder_id))
await session.commit()
return True
diff --git a/backend/open_webui/models/knowledge.py b/backend/open_webui/models/knowledge.py
index 9361da9ad963..6322e1c1613d 100644
--- a/backend/open_webui/models/knowledge.py
+++ b/backend/open_webui/models/knowledge.py
@@ -625,6 +625,7 @@ async def search_files_by_id(
db=db,
),
breadcrumbs=await self.get_directory_breadcrumbs(
+ knowledge_id,
filter.get('directory_id') if filter else None,
db=db,
),
@@ -908,6 +909,7 @@ async def get_directory_by_id(
async def get_directory_breadcrumbs(
self,
+ knowledge_id: str,
directory_id: Optional[str],
db: Optional[AsyncSession] = None,
) -> list[KnowledgeDirectoryModel]:
@@ -922,7 +924,10 @@ async def get_directory_breadcrumbs(
while current_id and current_id not in seen:
seen.add(current_id)
- result = await db.execute(select(KnowledgeDirectory).filter_by(id=current_id))
+ # Scoped by knowledge base so a caller-supplied id cannot walk another one's tree.
+ result = await db.execute(
+ select(KnowledgeDirectory).filter_by(id=current_id, knowledge_id=knowledge_id)
+ )
directory = result.scalars().first()
if not directory:
break
diff --git a/backend/open_webui/models/models.py b/backend/open_webui/models/models.py
index 00a7a2650e4b..d48f1e9008a9 100755
--- a/backend/open_webui/models/models.py
+++ b/backend/open_webui/models/models.py
@@ -392,7 +392,9 @@ async def search_models(
else:
meta_text = func.lower(cast(Model.meta, String))
variants = json_text_variants(tag.lower())
- stmt = stmt.filter(or_(*(meta_text.like(f'%"{variant}"%') for variant in variants)))
+ stmt = stmt.filter(
+ or_(*(meta_text.contains(f'"{variant}"', autoescape=True) for variant in variants))
+ )
order_by = filter.get('order_by')
direction = filter.get('direction')
@@ -622,16 +624,20 @@ async def sync_models(
await db.execute(update(Model).filter_by(id=model.id).values(**model_data))
else:
db.add(Model(**model_data))
- await AccessGrants.set_access_grants('model', model.id, model.access_grants, db=db)
# Remove models that are no longer present
for model in existing_models:
if model.id not in new_model_ids:
- await AccessGrants.revoke_all_access('model', model.id, db=db)
await db.delete(model)
await db.commit()
+ # Grants after the commit to avoid SQLite write-lock contention when session sharing is off
+ for model in models:
+ await AccessGrants.set_access_grants('model', model.id, model.access_grants, db=db)
+ for model_id in existing_ids - new_model_ids:
+ await AccessGrants.revoke_all_access('model', model_id, db=db)
+
result = await db.execute(select(Model))
all_models = result.scalars().all()
model_ids = [model.id for model in all_models]
diff --git a/backend/open_webui/models/prompts.py b/backend/open_webui/models/prompts.py
index e6e07eacc79b..75cc93b5a831 100644
--- a/backend/open_webui/models/prompts.py
+++ b/backend/open_webui/models/prompts.py
@@ -346,7 +346,10 @@ async def search_prompts(
# Fallback for dialects with no JSON array function: LIKE on the text.
tags_text = func.lower(cast(Prompt.tags, String))
tag_clause = or_(
- *(tags_text.like(f'%"{variant}"%') for variant in json_text_variants(tag_lower))
+ *(
+ tags_text.contains(f'"{variant}"', autoescape=True)
+ for variant in json_text_variants(tag_lower)
+ )
)
tag_lower = None
@@ -506,14 +509,16 @@ async def update_prompt_by_id(
)
# Update prompt fields
- prompt.name = form_data.name
prompt.command = form_data.command
- prompt.content = form_data.content
- prompt.data = form_data.data or prompt.data
- prompt.meta = form_data.meta or prompt.meta
- if form_data.tags is not None:
- prompt.tags = form_data.tags
+ if form_data.is_production:
+ prompt.name = form_data.name
+ prompt.content = form_data.content
+ prompt.data = form_data.data or prompt.data
+ prompt.meta = form_data.meta or prompt.meta
+
+ if form_data.tags is not None:
+ prompt.tags = form_data.tags
if form_data.access_grants is not None:
await AccessGrants.set_access_grants('prompt', prompt.id, form_data.access_grants, db=session)
@@ -531,7 +536,7 @@ async def update_prompt_by_id(
'command': prompt.command,
'data': form_data.data or {},
'meta': form_data.meta or {},
- 'tags': prompt.tags or [],
+ 'tags': form_data.tags if form_data.tags is not None else (prompt.tags or []),
'access_grants': [grant.model_dump() for grant in current_access_grants],
}
diff --git a/backend/open_webui/retrieval/loaders/main.py b/backend/open_webui/retrieval/loaders/main.py
index 74221f1aea68..a3a3d5b7dd6f 100644
--- a/backend/open_webui/retrieval/loaders/main.py
+++ b/backend/open_webui/retrieval/loaders/main.py
@@ -273,7 +273,7 @@ def load(self) -> list[Document]:
f'{self.url}/v1/convert/file',
files={
'files': (
- self.file_path,
+ os.path.basename(self.file_path),
f,
self.mime_type or 'application/octet-stream',
)
@@ -427,15 +427,17 @@ def _detect_text_encoding(self, file_path: str) -> str:
'gbk': 'gb18030',
'big5': 'big5',
'euckr': 'euc-kr',
+ 'cp949': 'cp949',
'eucjp': 'euc-jp',
'iso2022jp': 'euc-jp',
- 'shiftjis': 'shift_jis',
+ 'shiftjis': 'cp932',
+ 'cp932': 'cp932',
}
# Build priority list: chardet-hinted codec first, then remaining CJK
base_order = ['gb18030', 'big5', 'euc-kr', 'euc-jp']
hinted = _ENC_FAMILY.get(detected_enc)
- if hinted and hinted in base_order:
+ if hinted:
ordered = [hinted] + [e for e in base_order if e != hinted]
else:
ordered = base_order
@@ -743,7 +745,7 @@ def _get_loader(self, filename: str, file_content_type: str, file_path: str):
)
loader = TextLoader(file_path, encoding=self._detect_text_encoding(file_path))
elif file_ext in ['htm', 'html']:
- loader = HTMLLoader(file_path, encoding='unicode_escape')
+ loader = HTMLLoader(file_path, encoding=self._detect_text_encoding(file_path))
elif file_ext == 'md':
loader = TextLoader(file_path, encoding=self._detect_text_encoding(file_path))
elif file_content_type == 'application/epub+zip':
diff --git a/backend/open_webui/retrieval/utils.py b/backend/open_webui/retrieval/utils.py
index 055f75012295..58a4da1f1b82 100644
--- a/backend/open_webui/retrieval/utils.py
+++ b/backend/open_webui/retrieval/utils.py
@@ -30,6 +30,7 @@
AIOHTTP_CLIENT_SESSION_SSL,
AIOHTTP_CLIENT_TIMEOUT,
BYPASS_RETRIEVAL_ACCESS_CONTROL,
+ ENABLE_ADMIN_CHAT_ACCESS,
ENABLE_FORWARD_USER_INFO_HEADERS,
ENABLE_RETRIEVAL_UNSCOPED_COLLECTIONS,
MPS_INFERENCE_LOCK,
@@ -838,6 +839,7 @@ async def _fetch_collection(name: str):
return name, await ASYNC_VECTOR_DB_CLIENT.get(collection_name=name)
except Exception as e:
log.exception(f'Failed to fetch collection {name}: {e}')
+ failed_collection_names.add(name)
return name, None
collection_results = dict(await asyncio.gather(*(_fetch_collection(name) for name in collection_names)))
@@ -1461,7 +1463,9 @@ async def get_sources_from_items(
elif item.get('type') == 'chat':
# Chat Attached
chat = await Chats.get_chat_by_id(item.get('id'))
- has_read_access = bool(chat and (user.role == 'admin' or chat.user_id == user.id))
+ has_read_access = bool(
+ chat and ((user.role == 'admin' and ENABLE_ADMIN_CHAT_ACCESS) or chat.user_id == user.id)
+ )
if chat and not has_read_access:
has_read_access = await AccessGrants.has_access(
diff --git a/backend/open_webui/retrieval/vector/dbs/chroma.py b/backend/open_webui/retrieval/vector/dbs/chroma.py
index 2c51aeca9374..5c5d9602e8d2 100755
--- a/backend/open_webui/retrieval/vector/dbs/chroma.py
+++ b/backend/open_webui/retrieval/vector/dbs/chroma.py
@@ -28,6 +28,8 @@
log = logging.getLogger(__name__)
+GET_PAGE_SIZE = 10000
+
class ChromaClient(VectorDBBase):
def __init__(self):
@@ -131,12 +133,18 @@ def get(self, collection_name: str) -> Optional[GetResult]:
# Get all the items in the collection.
collection = self.client.get_collection(name=collection_name, embedding_function=None)
if collection:
- result = collection.get()
+ ids, documents, metadatas = [], [], []
+ # Unpaged get() exceeds SQLite's bind-variable limit on large collections
+ for offset in range(0, collection.count(), GET_PAGE_SIZE):
+ page = collection.get(limit=GET_PAGE_SIZE, offset=offset)
+ ids.extend(page['ids'])
+ documents.extend(page['documents'])
+ metadatas.extend(page['metadatas'])
return GetResult(
**{
- 'ids': [result['ids']],
- 'documents': [result['documents']],
- 'metadatas': [result['metadatas']],
+ 'ids': [ids],
+ 'documents': [documents],
+ 'metadatas': [metadatas],
}
)
return None
diff --git a/backend/open_webui/retrieval/vector/dbs/qdrant.py b/backend/open_webui/retrieval/vector/dbs/qdrant.py
index f8ed6007739b..d1b302b34f72 100644
--- a/backend/open_webui/retrieval/vector/dbs/qdrant.py
+++ b/backend/open_webui/retrieval/vector/dbs/qdrant.py
@@ -28,6 +28,7 @@
from qdrant_client.models import models
NO_LIMIT = 999999999
+SCROLL_PAGE_SIZE = 1000
log = logging.getLogger(__name__)
@@ -92,6 +93,24 @@ def _result_to_get_result(self, points) -> GetResult:
}
)
+ def _scroll_points(
+ self, collection_name: str, scroll_filter: Optional[models.Filter] = None, limit: Optional[int] = None
+ ) -> list:
+ # Paged so a strict-mode max_query_limit does not reject the read
+ points = []
+ offset = None
+ while True:
+ page_size = SCROLL_PAGE_SIZE if limit is None else min(SCROLL_PAGE_SIZE, limit - len(points))
+ page, offset = self.client.scroll(
+ collection_name=f'{self.collection_prefix}_{collection_name}',
+ scroll_filter=scroll_filter,
+ limit=page_size,
+ offset=offset,
+ )
+ points.extend(page)
+ if offset is None or len(points) == limit:
+ return points
+
def _create_collection(self, collection_name: str, dimension: int):
collection_name_with_prefix = f'{self.collection_prefix}_{collection_name}'
self.client.create_collection(
@@ -180,32 +199,22 @@ def query(self, collection_name: str, filter: dict, limit: Optional[int] = None)
if not self.has_collection(collection_name):
return None
try:
- if limit is None:
- limit = NO_LIMIT # otherwise qdrant would set limit to 10!
-
field_conditions = []
for key, value in filter.items():
field_conditions.append(
models.FieldCondition(key=f'metadata.{key}', match=models.MatchValue(value=value))
)
- points = self.client.scroll(
- collection_name=f'{self.collection_prefix}_{collection_name}',
- scroll_filter=models.Filter(should=field_conditions),
- limit=limit,
- )
- return self._result_to_get_result(points[0])
+ points = self._scroll_points(collection_name, models.Filter(should=field_conditions), limit)
+ return self._result_to_get_result(points)
except Exception as e:
log.exception(f"Error querying a collection '{collection_name}': {e}")
return None
def get(self, collection_name: str) -> Optional[GetResult]:
# Get all the items in the collection.
- points = self.client.scroll(
- collection_name=f'{self.collection_prefix}_{collection_name}',
- limit=NO_LIMIT, # otherwise qdrant would set limit to 10!
- )
- return self._result_to_get_result(points[0])
+ points = self._scroll_points(collection_name)
+ return self._result_to_get_result(points)
def insert(self, collection_name: str, items: list[VectorItem]):
# Insert the items into the collection, if the collection does not exist, it will be created.
diff --git a/backend/open_webui/retrieval/vector/dbs/qdrant_multitenancy.py b/backend/open_webui/retrieval/vector/dbs/qdrant_multitenancy.py
index 870cd2b02f0b..6bf71717e291 100644
--- a/backend/open_webui/retrieval/vector/dbs/qdrant_multitenancy.py
+++ b/backend/open_webui/retrieval/vector/dbs/qdrant_multitenancy.py
@@ -29,7 +29,7 @@
from qdrant_client.http.models import PointStruct
from qdrant_client.models import models
-NO_LIMIT = 999999999
+SCROLL_PAGE_SIZE = 1000
TENANT_ID_FIELD = 'tenant_id'
DEFAULT_DIMENSION = 384
@@ -97,6 +97,21 @@ def _result_to_get_result(self, points) -> GetResult:
metadatas.append(payload['metadata'])
return GetResult(ids=[ids], documents=[documents], metadatas=[metadatas])
+ def _scroll_points(self, collection_name: str, scroll_filter: models.Filter, limit: Optional[int] = None) -> List:
+ # Paged so a strict-mode max_query_limit does not reject the read
+ points, offset = [], None
+ while True:
+ page_size = SCROLL_PAGE_SIZE if limit is None else min(SCROLL_PAGE_SIZE, limit - len(points))
+ page, offset = self.client.scroll(
+ collection_name=collection_name,
+ scroll_filter=scroll_filter,
+ limit=page_size,
+ offset=offset,
+ )
+ points.extend(page)
+ if offset is None or len(points) == limit:
+ return points
+
def _get_collection_and_tenant_id(self, collection_name: str) -> Tuple[str, str]:
"""
Maps the traditional collection name to multi-tenant collection and tenant ID.
@@ -287,17 +302,11 @@ def query(self, collection_name: str, filter: Dict[str, Any], limit: Optional[in
if not self.client.collection_exists(collection_name=mt_collection):
log.debug("Collection %s doesn't exist, query returns None", mt_collection)
return None
- if limit is None:
- limit = NO_LIMIT
tenant_filter = _tenant_filter(tenant_id)
field_conditions = [_metadata_filter(k, '$eq', v) for k, v in filter.items()]
combined_filter = models.Filter(must=[tenant_filter, *field_conditions])
- points = self.client.scroll(
- collection_name=mt_collection,
- scroll_filter=combined_filter,
- limit=limit,
- )
- return self._result_to_get_result(points[0])
+ points = self._scroll_points(mt_collection, combined_filter, limit)
+ return self._result_to_get_result(points)
def get(self, collection_name: str) -> Optional[GetResult]:
"""
@@ -310,12 +319,8 @@ def get(self, collection_name: str) -> Optional[GetResult]:
log.debug("Collection %s doesn't exist, get returns None", mt_collection)
return None
tenant_filter = _tenant_filter(tenant_id)
- points = self.client.scroll(
- collection_name=mt_collection,
- scroll_filter=models.Filter(must=[tenant_filter]),
- limit=NO_LIMIT,
- )
- return self._result_to_get_result(points[0])
+ points = self._scroll_points(mt_collection, models.Filter(must=[tenant_filter]))
+ return self._result_to_get_result(points)
def upsert(self, collection_name: str, items: List[VectorItem]):
"""
diff --git a/backend/open_webui/retrieval/web/searchapi.py b/backend/open_webui/retrieval/web/searchapi.py
index bd4c292c1809..0e9f4b02fe33 100644
--- a/backend/open_webui/retrieval/web/searchapi.py
+++ b/backend/open_webui/retrieval/web/searchapi.py
@@ -26,19 +26,26 @@ def search_searchapi(
engine = engine or 'google'
payload = {'engine': engine, 'q': query, 'api_key': api_key}
+ if engine.startswith('google'):
+ payload['link'] = 'resolved'
url = f'{url}?{urlencode(payload)}'
- response = requests.request('GET', url)
+ response = requests.request('GET', url, timeout=30)
+ response.raise_for_status()
json_response = response.json()
- log.info('results from searchapi search: %s', json_response)
+ log.debug('results from searchapi search: %s', json_response)
- results = sorted(json_response.get('organic_results', []), key=lambda x: x.get('position', 0))
+ # top_stories entries carry no position, so the merged list keeps API order
+ results = [
+ *json_response.get('organic_results', []),
+ *json_response.get('top_stories', []),
+ ]
if filter_list:
results = get_filtered_results(results, filter_list)
return [
SearchResult(
- link=result['link'],
+ link=result.get('link', ''),
title=result.get('title'),
snippet=result.get('snippet'),
)
diff --git a/backend/open_webui/retrieval/web/staan.py b/backend/open_webui/retrieval/web/staan.py
index 8326a0782c57..c1af2b5b2a83 100644
--- a/backend/open_webui/retrieval/web/staan.py
+++ b/backend/open_webui/retrieval/web/staan.py
@@ -30,7 +30,7 @@ def search_staan(
'Accept': 'application/json',
'Authorization': f'Bearer {api_key}',
}
- params = {'q': query, 'market': market, 'count': count}
+ params = {'q': query, 'market': market}
if max_snippets:
params['extra_snippets'] = 'true'
diff --git a/backend/open_webui/retrieval/web/tavily.py b/backend/open_webui/retrieval/web/tavily.py
index 7bf15a1e627f..a0403787b593 100644
--- a/backend/open_webui/retrieval/web/tavily.py
+++ b/backend/open_webui/retrieval/web/tavily.py
@@ -14,6 +14,7 @@ def search_tavily(
query: str,
count: int,
filter_list: list[str] | None = None,
+ search_depth: str = 'basic',
# **kwargs,
) -> list[SearchResult]:
"""Search using Tavily's Search API and return the results as a list of SearchResult objects.
@@ -22,6 +23,7 @@ def search_tavily(
api_key (str): A Tavily Search API key
query (str): The query to search for
count (int): The maximum number of results to return
+ search_depth (str): Tavily search depth
Returns:
A list of SearchResult objects.
@@ -31,7 +33,7 @@ def search_tavily(
'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}',
}
- data = {'query': query, 'max_results': count}
+ data = {'query': query, 'max_results': count, 'search_depth': search_depth}
response = requests.post(url, headers=headers, json=data)
response.raise_for_status()
diff --git a/backend/open_webui/routers/analytics.py b/backend/open_webui/routers/analytics.py
index d9cf8e0a6139..7d57ab3262ba 100644
--- a/backend/open_webui/routers/analytics.py
+++ b/backend/open_webui/routers/analytics.py
@@ -207,7 +207,9 @@ async def get_daily_stats(
):
"""Get message counts grouped by model for time-series chart."""
if granularity == 'hourly':
- counts = await ChatMessages.get_hourly_message_counts_by_model(start_date=start_date, end_date=end_date, db=db)
+ counts = await ChatMessages.get_hourly_message_counts_by_model(
+ start_date=start_date, end_date=end_date, group_id=group_id, db=db
+ )
else:
counts = await ChatMessages.get_daily_message_counts_by_model(
start_date=start_date, end_date=end_date, group_id=group_id, db=db
diff --git a/backend/open_webui/routers/auths.py b/backend/open_webui/routers/auths.py
index 16ae0422e82b..0ca2f518f840 100644
--- a/backend/open_webui/routers/auths.py
+++ b/backend/open_webui/routers/auths.py
@@ -9,6 +9,7 @@
import uuid
from ssl import CERT_NONE, CERT_REQUIRED, PROTOCOL_TLS
+import jwt
from aiohttp import BasicAuth, ClientSession
from fastapi import APIRouter, Depends, HTTPException, Request, status
from fastapi.responses import JSONResponse, Response
@@ -75,6 +76,7 @@
verify_password,
)
from open_webui.utils.groups import apply_default_group_assignment
+from open_webui.utils.json_codec import JSONCodec
from open_webui.utils.misc import parse_duration, validate_email_format
from open_webui.utils.rate_limit import RateLimiter
from pydantic import BaseModel, StrictStr, field_validator
@@ -1463,6 +1465,9 @@ class OAuthConfigForm(BaseModel):
def _format_oauth_form_value(field: str, value):
+ if field == 'OAUTH_BLOCKED_GROUPS' and isinstance(value, list):
+ # Preserve commas in group names and regex patterns when the form is saved.
+ return JSONCodec.dumps(value)
if field in OAUTH_COMMA_LIST_FIELDS and isinstance(value, list):
return ','.join(str(item) for item in value)
return value
@@ -1747,12 +1752,20 @@ async def token_exchange(
detail='User not found. Please sign in via the web interface first.',
)
+ # The provider's userinfo endpoint has already accepted this token.
+ # Keep an empty dict for opaque tokens so exchange role checks still apply.
+ token_claims = {}
+ try:
+ token_claims = jwt.decode(form_data.token, options={'verify_signature': False})
+ except jwt.PyJWTError as e:
+ log.debug('Token exchange: cannot decode token claims: %s', e)
+
user = await oauth_manager.update_user_role_from_oauth(
request=request,
user=user,
user_data=user_data,
provider=provider,
- access_token=form_data.token,
+ token_claims=token_claims,
db=db,
)
if await Config.get('oauth.enable_group_mapping'):
@@ -1761,6 +1774,7 @@ async def token_exchange(
user=user,
user_data=user_data,
default_permissions=await Config.get('user.permissions'),
+ token_claims=token_claims,
db=db,
)
diff --git a/backend/open_webui/routers/automations.py b/backend/open_webui/routers/automations.py
index caf8879e2899..4b44a8b8ed21 100644
--- a/backend/open_webui/routers/automations.py
+++ b/backend/open_webui/routers/automations.py
@@ -87,7 +87,7 @@ async def check_automation_limits(request, user, rrule_str: str, db, is_create:
if min_interval:
min_interval = int(min_interval)
if min_interval > 0:
- interval = rrule_interval_seconds(rrule_str)
+ interval = await rrule_interval_seconds(rrule_str)
if interval is not None and interval < min_interval:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
@@ -150,7 +150,7 @@ async def enrich_automation(automation: AutomationModel, db: AsyncSession, tz: s
return AutomationResponse(
**automation.model_dump(),
last_run=last_run,
- next_runs=next_n_runs_ns(automation.data['rrule'], tz=tz),
+ next_runs=await next_n_runs_ns(automation.data['rrule'], tz=tz),
)
@@ -216,7 +216,7 @@ async def create_new_automation(
await check_automation_folder_access(form_data.folder_id, user, db)
await check_automation_channel_access(form_data, user, db)
try:
- validate_rrule(form_data.data.rrule, tz=user.timezone)
+ await validate_rrule(form_data.data.rrule, tz=user.timezone)
except ValueError as e:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
@@ -226,7 +226,7 @@ async def create_new_automation(
await check_automation_limits(request, user, form_data.data.rrule, db, is_create=True)
tz = user.timezone
- automation = await Automations.insert(user.id, form_data, next_run_ns(form_data.data.rrule, tz=tz), db=db)
+ automation = await Automations.insert(user.id, form_data, await next_run_ns(form_data.data.rrule, tz=tz), db=db)
response = await enrich_automation(automation, db, tz=tz)
await publish_event(
request,
@@ -276,7 +276,7 @@ async def update_automation_by_id(
await check_automation_channel_access(form_data, user, db)
try:
- validate_rrule(form_data.data.rrule, tz=user.timezone)
+ await validate_rrule(form_data.data.rrule, tz=user.timezone)
except ValueError as e:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
@@ -286,7 +286,7 @@ async def update_automation_by_id(
await check_automation_limits(request, user, form_data.data.rrule, db, is_create=False)
tz = user.timezone
- updated = await Automations.update_by_id(id, form_data, next_run_ns(form_data.data.rrule, tz=tz), db=db)
+ updated = await Automations.update_by_id(id, form_data, await next_run_ns(form_data.data.rrule, tz=tz), db=db)
response = await enrich_automation(updated, db, tz=tz)
await publish_event(
request,
@@ -313,7 +313,7 @@ async def toggle_automation_by_id(
await check_automations_permission(request, user)
automation = await Automations.get_by_id(id, db=db)
check_automation_access(automation, user)
- toggled = await Automations.toggle(id, next_run_ns(automation.data['rrule'], tz=user.timezone), db=db)
+ toggled = await Automations.toggle(id, await next_run_ns(automation.data['rrule'], tz=user.timezone), db=db)
response = await enrich_automation(toggled, db, tz=user.timezone)
await publish_event(
request,
diff --git a/backend/open_webui/routers/calendar.py b/backend/open_webui/routers/calendar.py
index f95be48e8401..86d982480322 100644
--- a/backend/open_webui/routers/calendar.py
+++ b/backend/open_webui/routers/calendar.py
@@ -273,7 +273,10 @@ async def get_events(
async def create_event(request: Request, form_data: CalendarEventForm, user: UserModel = Depends(get_verified_user)):
await check_calendar_permission(request, user)
await _check_calendar_access(form_data.calendar_id, user, 'write')
- event = await CalendarEvents.insert_new_event(user.id, form_data)
+ try:
+ event = await CalendarEvents.insert_new_event(user.id, form_data)
+ except ValueError as e:
+ raise HTTPException(status_code=422, detail=str(e)) from e
await publish_event(
request,
EVENTS.CALENDAR_EVENT_CREATED,
@@ -325,7 +328,10 @@ async def update_event(
if form_data.calendar_id is not None and form_data.calendar_id != event.calendar_id:
await _check_calendar_access(form_data.calendar_id, user, 'write')
- updated = await CalendarEvents.update_event_by_id(event_id, form_data)
+ try:
+ updated = await CalendarEvents.update_event_by_id(event_id, form_data)
+ except ValueError as e:
+ raise HTTPException(status_code=422, detail=str(e)) from e
if not updated:
raise HTTPException(status_code=500, detail='Failed to update')
await publish_event(
diff --git a/backend/open_webui/routers/channels.py b/backend/open_webui/routers/channels.py
index de25739c92ca..c9d38bf2ced3 100644
--- a/backend/open_webui/routers/channels.py
+++ b/backend/open_webui/routers/channels.py
@@ -40,6 +40,7 @@
emit_to_users,
enter_room_for_users,
get_user_ids_from_room,
+ leave_room_for_users,
sio,
)
from open_webui.utils.access_control import filter_allowed_access_grants, has_permission
@@ -687,6 +688,8 @@ async def remove_members_by_id(
try:
deleted = await Channels.remove_members_from_channel(channel.id, form_data.user_ids, db=db)
+ if channel.type in ['group', 'dm']:
+ await leave_room_for_users(f'channel:{channel.id}', form_data.user_ids)
await publish_event(
request,
@@ -731,8 +734,18 @@ async def update_channel_by_id(
'sharing.public_channels',
)
+ previous_access_grants = channel.access_grants
+
try:
channel = await Channels.update_channel_by_id(id, form_data, db=db)
+ # Group and DM channels use membership instead of access grants.
+ if form_data.access_grants is not None and channel.type not in ['group', 'dm']:
+ revoked_user_ids = await AccessGrants.get_revoked_user_ids_by_resource(
+ 'channel', id, previous_access_grants, db=db
+ )
+ revoked_user_ids.discard(channel.user_id)
+ await leave_room_for_users(f'channel:{id}', list(revoked_user_ids))
+
await publish_event(
request,
EVENTS.CHANNEL_UPDATED,
@@ -769,6 +782,7 @@ async def delete_channel_by_id(
try:
await Channels.delete_channel_by_id(id, db=db)
+ await sio.close_room(f'channel:{id}')
await publish_event(
request,
EVENTS.CHANNEL_DELETED,
diff --git a/backend/open_webui/routers/chats.py b/backend/open_webui/routers/chats.py
index ed339a601aa7..e6194d0f6448 100644
--- a/backend/open_webui/routers/chats.py
+++ b/backend/open_webui/routers/chats.py
@@ -680,7 +680,7 @@ async def export_single_chat_stats(
)
# Verify the chat belongs to the user (unless admin)
- if chat.user_id != user.id and user.role != 'admin':
+ if chat.user_id != user.id and not (user.role == 'admin' and ENABLE_ADMIN_CHAT_ACCESS):
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
@@ -716,8 +716,10 @@ async def delete_all_user_chats(
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
)
+ tag_ids = [tag.id for tag in await Tags.get_tags_by_user_id(user.id, db=db)]
result = await Chats.delete_chats_by_user_id(user.id, db=db)
if result:
+ await Chats.delete_orphan_tags_for_user(tag_ids, user.id, db=db)
await publish_event(
request,
EVENTS.CHAT_DELETED_ALL,
@@ -1129,8 +1131,14 @@ async def archive_all_chats(
async def unarchive_all_chats(
request: Request, user=Depends(get_verified_user), db: AsyncSession = Depends(get_async_session)
):
+ tag_ids = {
+ tag_id
+ for chat in await Chats.get_archived_chats_by_user_id(user.id, db=db)
+ for tag_id in chat.meta.get('tags', [])
+ }
result = await Chats.unarchive_all_chats_by_user_id(user.id, db=db)
if result:
+ await Tags.ensure_tags_exist(list(tag_ids), user.id, db=db)
await publish_event(request, EVENTS.CHAT_UNARCHIVED, actor=user, subject_id=user.id, subject_type='user')
return result
@@ -1420,7 +1428,7 @@ async def update_chat_message_by_id(
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
)
- if chat.user_id != user.id and user.role != 'admin':
+ if chat.user_id != user.id and not (user.role == 'admin' and ENABLE_ADMIN_CHAT_ACCESS):
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
@@ -1481,7 +1489,7 @@ async def delete_chat_message_by_id(
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
)
- if chat.user_id != user.id and user.role != 'admin':
+ if chat.user_id != user.id and not (user.role == 'admin' and ENABLE_ADMIN_CHAT_ACCESS):
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
@@ -1529,7 +1537,7 @@ async def send_chat_message_event_by_id(
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
)
- if chat.user_id != user.id and user.role != 'admin':
+ if chat.user_id != user.id and not (user.role == 'admin' and ENABLE_ADMIN_CHAT_ACCESS):
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
@@ -1576,6 +1584,8 @@ async def delete_chat_by_id(
# not be reachable for a chat the caller may not delete.
if user.role == 'admin':
chat = await Chats.get_chat_by_id(id, db=db)
+ if chat and chat.user_id != user.id and not ENABLE_ADMIN_CHAT_ACCESS:
+ chat = None
else:
if not await has_permission(user.id, 'chat.delete', await Config.get('user.permissions')):
raise HTTPException(
@@ -1840,21 +1850,9 @@ async def clone_shared_chat_by_id(
):
await require_chat_import_permission(request, user, db)
- chat = await Chats.get_chat_by_share_id(id, db=db)
-
- # Fallback: admins can also access any chat directly by chat ID
- if not chat and user.role == 'admin' and ENABLE_ADMIN_CHAT_ACCESS:
- chat = await Chats.get_chat_by_id(id, db=db)
-
- if not chat:
- raise HTTPException(
- status_code=status.HTTP_401_UNAUTHORIZED,
- detail=ERROR_MESSAGES.NOT_FOUND,
- )
-
# Enforce access grants (owner and admins bypass)
shared = await SharedChats.get_by_id(id, db=db)
- if shared and user.role != 'admin' and shared.user_id != user.id:
+ if shared and not (user.role == 'admin' and ENABLE_ADMIN_CHAT_ACCESS) and shared.user_id != user.id:
has_grant = await is_open_shared_chat(shared, db=db) or await AccessGrants.has_access(
user_id=user.id,
resource_type='shared_chat',
@@ -1868,6 +1866,18 @@ async def clone_shared_chat_by_id(
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
)
+ chat = await Chats.get_chat_by_share_id(id, db=db) if shared else None
+
+ # Fallback: admins can also access any chat directly by chat ID
+ if not chat and user.role == 'admin' and ENABLE_ADMIN_CHAT_ACCESS:
+ chat = await Chats.get_chat_by_id(id, db=db)
+
+ if not chat:
+ raise HTTPException(
+ status_code=status.HTTP_401_UNAUTHORIZED,
+ detail=ERROR_MESSAGES.NOT_FOUND,
+ )
+
updated_chat = {
**chat.chat,
'originalChatId': chat.id,
@@ -2034,7 +2044,7 @@ async def update_shared_chat_access_by_id(
user=Depends(get_verified_user),
db: AsyncSession = Depends(get_async_session),
):
- if user.role == 'admin':
+ if user.role == 'admin' and ENABLE_ADMIN_CHAT_ACCESS:
chat = await Chats.get_chat_by_id(id, db=db)
else:
chat = await Chats.get_chat_by_id_and_user_id(id, user.id, db=db)
@@ -2070,7 +2080,7 @@ async def get_shared_chat_access_by_id(
user=Depends(get_verified_user),
db: AsyncSession = Depends(get_async_session),
):
- if user.role == 'admin':
+ if user.role == 'admin' and ENABLE_ADMIN_CHAT_ACCESS:
chat = await Chats.get_chat_by_id(id, db=db)
else:
chat = await Chats.get_chat_by_id_and_user_id(id, user.id, db=db)
diff --git a/backend/open_webui/routers/configs.py b/backend/open_webui/routers/configs.py
index 38227dd2fc90..35f1b23cf467 100644
--- a/backend/open_webui/routers/configs.py
+++ b/backend/open_webui/routers/configs.py
@@ -22,7 +22,7 @@
get_discovery_urls,
get_oauth_client_info_with_dynamic_client_registration,
get_oauth_client_info_with_static_credentials,
- recover_static_oauth_client_metadata,
+ recover_oauth_client_metadata,
resolve_oauth_client_info,
)
from open_webui.utils.tools import (
@@ -273,7 +273,7 @@ async def set_tool_servers_config(
if auth_type in ('oauth_2.1', 'oauth_2.1_static') and server_id:
try:
oauth_client_info = resolve_oauth_client_info(connection)
- oauth_client_info = await recover_static_oauth_client_metadata(connection, oauth_client_info)
+ oauth_client_info = await recover_oauth_client_metadata(connection, oauth_client_info)
oauth_client_info = apply_connection_oauth_options(connection, oauth_client_info)
request.app.state.oauth_client_manager.add_client(
f'{server_type}:{server_id}',
@@ -810,7 +810,7 @@ class PromptSuggestion(BaseModel):
class SetDefaultSuggestionsForm(BaseModel):
- suggestions: list[PromptSuggestion]
+ suggestions: list[PromptSuggestion] | None
i18n: dict[str, Any] | None = None
diff --git a/backend/open_webui/routers/evaluations.py b/backend/open_webui/routers/evaluations.py
index 00c1517c88eb..9dd8413077d4 100644
--- a/backend/open_webui/routers/evaluations.py
+++ b/backend/open_webui/routers/evaluations.py
@@ -265,7 +265,7 @@ async def get_leaderboard(
return LeaderboardResponse(entries=entries)
-@router.get('/leaderboard/{model_id}/history', response_model=ModelHistoryResponse)
+@router.get('/leaderboard/{model_id:path}/history', response_model=ModelHistoryResponse)
async def get_model_history(
model_id: str,
days: int = 30,
diff --git a/backend/open_webui/routers/files.py b/backend/open_webui/routers/files.py
index c2a429a3db3e..650249849f06 100644
--- a/backend/open_webui/routers/files.py
+++ b/backend/open_webui/routers/files.py
@@ -224,6 +224,15 @@ async def _process_handler(db_session):
f'{knowledge_id}: user {user.id} lacks write access'
)
else:
+ directory_id = file_metadata.get('directory_id') or None
+ if directory_id:
+ directory = await Knowledges.get_directory_by_id(directory_id, db=db_session)
+ if not directory or directory.knowledge_id != knowledge_id:
+ log.warning(
+ 'Ignoring directory %s: not a directory of knowledge %s', directory_id, knowledge_id
+ )
+ directory_id = None
+
# Keep the generic file status stream open until the
# KB-specific vector write and durable link both finish.
await Files.update_file_data_by_id(file_item.id, {'status': 'processing'}, db=db_session)
@@ -237,7 +246,7 @@ async def _process_handler(db_session):
knowledge_id=knowledge_id,
file_id=file_item.id,
user_id=user.id,
- directory_id=file_metadata.get('directory_id'),
+ directory_id=directory_id,
db=db_session,
)
if not knowledge_file:
diff --git a/backend/open_webui/routers/folders.py b/backend/open_webui/routers/folders.py
index 9653a6d9b830..cb8c9953cf42 100644
--- a/backend/open_webui/routers/folders.py
+++ b/backend/open_webui/routers/folders.py
@@ -162,6 +162,16 @@ async def create_folder(
detail=ERROR_MESSAGES.DEFAULT('Folder already exists'),
)
+ if (
+ form_data.data
+ and 'files' in form_data.data
+ and not await can_read_all_folder_files(form_data.data['files'], user, db=db)
+ ):
+ raise HTTPException(
+ status_code=status.HTTP_403_FORBIDDEN,
+ detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
+ )
+
# Check if creating a subfolder in a shared folder
if form_data.parent_id:
parent = await Folders.get_folder_by_id(form_data.parent_id, db=db)
@@ -202,16 +212,6 @@ async def create_folder(
detail=ERROR_MESSAGES.DEFAULT('Error creating folder'),
)
- if (
- form_data.data
- and 'files' in form_data.data
- and not await can_read_all_folder_files(form_data.data['files'], user, db=db)
- ):
- raise HTTPException(
- status_code=status.HTTP_403_FORBIDDEN,
- detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
- )
-
try:
folder = await Folders.insert_new_folder(user.id, form_data, form_data.parent_id, db=db)
await publish_event(
@@ -287,7 +287,12 @@ async def get_shared_folders(
############################
-@router.get('/{id}', response_model=None)
+class FolderResponse(FolderModel):
+ access_grants: list[dict] = []
+ write_access: bool = False
+
+
+@router.get('/{id}', response_model=FolderResponse)
async def get_folder_by_id(
request: Request, id: str, user=Depends(get_verified_user), db: AsyncSession = Depends(get_async_session)
):
@@ -295,13 +300,21 @@ async def get_folder_by_id(
folder = await Folders.get_folder_by_id_and_user_id(id, user.id, db=db)
if folder:
grants = await AccessGrants.get_grants_by_resource('folder', id, db=db)
- return {**folder.model_dump(), 'access_grants': [g.model_dump() for g in grants]}
+ return FolderResponse(
+ **folder.model_dump(),
+ access_grants=[g.model_dump() for g in grants],
+ write_access=True,
+ )
# Check shared access
folder = await Folders.get_folder_by_id(id, db=db)
if folder and (user.role == 'admin' or await _has_folder_access(user.id, folder, 'read', db)):
grants = await AccessGrants.get_grants_by_resource('folder', id, db=db)
- return {**folder.model_dump(), 'access_grants': [g.model_dump() for g in grants]}
+ return FolderResponse(
+ **folder.model_dump(),
+ access_grants=[g.model_dump() for g in grants],
+ write_access=user.role == 'admin' or await _has_folder_access(user.id, folder, 'write', db),
+ )
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
@@ -358,6 +371,15 @@ async def update_folder_name_by_id(
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
)
+ # Editors send back the owner's existing entries, so only new ones are checked against the editor.
+ existing_files = (folder.data or {}).get('files') or []
+ added_files = [entry for entry in form_data.data['files'] or [] if entry not in existing_files]
+ if not await can_read_all_folder_files(added_files, user, db=db):
+ raise HTTPException(
+ status_code=status.HTTP_403_FORBIDDEN,
+ detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
+ )
+
try:
folder = await Folders.update_folder_by_id_and_user_id(id, folder.user_id, form_data, db=db)
await publish_event(
@@ -704,8 +726,8 @@ async def delete_folder_by_id(
for folder_id in folder_ids:
if delete_contents:
await Chats.delete_chats_by_user_id_and_folder_id(folder_owner_id, folder_id, db=db)
- else:
- await Chats.move_chats_by_user_id_and_folder_id(folder_owner_id, folder_id, None, db=db)
+
+ await Chats.move_chats_by_folder_id(folder_id, None, db=db)
# Clean up access grants for this folder
await AccessGrants.revoke_all_access('folder', folder_id, db=db)
diff --git a/backend/open_webui/routers/images.py b/backend/open_webui/routers/images.py
index f7ea78962297..c894f2c65148 100644
--- a/backend/open_webui/routers/images.py
+++ b/backend/open_webui/routers/images.py
@@ -509,8 +509,9 @@ async def get_image_data(data: str, headers=None, trusted_base_url: str | None =
mime_type = header.split(';')[0].lstrip('data:')
img_data = base64.b64decode(encoded)
else:
- mime_type = 'image/png'
img_data = base64.b64decode(data)
+ with Image.open(io.BytesIO(img_data)) as image:
+ mime_type = Image.MIME.get(image.format, 'image/png')
return img_data, mime_type
except Exception as e:
log.exception(f'Error loading image data: {e}')
@@ -520,7 +521,7 @@ async def get_image_data(data: str, headers=None, trusted_base_url: str | None =
async def upload_image(request, image_data, content_type, metadata, user, db=None):
if image_data is None or content_type is None:
raise ValueError('Failed to retrieve image data from the generation backend')
- image_format = mimetypes.guess_extension(content_type)
+ image_format = IMAGE_FILE_EXTENSIONS.get(content_type.lower()) or mimetypes.guess_extension(content_type) or '.png'
file = UploadFile(
file=io.BytesIO(image_data),
filename=f'generated-image{image_format}', # will be converted to a unique ID on upload_file
@@ -667,7 +668,9 @@ async def image_generations(
if image_url := image.get('url', None):
image_data, content_type = await get_image_data(
image_url,
- {k: v for k, v in headers.items() if k != 'Content-Type'},
+ {k: v for k, v in headers.items() if k != 'Content-Type'}
+ if _is_same_origin(image_url, image_config.IMAGES_OPENAI_API_BASE_URL)
+ else None,
)
else:
image_data, content_type = await get_image_data(image['b64_json'])
@@ -918,11 +921,8 @@ async def load_url_image(data):
if data.startswith('http://') or data.startswith('https://'):
parsed = urlparse(data)
- if (
- parsed.netloc == urlparse(str(request.base_url)).netloc
- and parsed.path.startswith('/api/v1/files/')
- and '/content' in parsed.path
- ):
+ # Fetching /api/v1/files/{id}/content over the network would be unauthenticated.
+ if parsed.path.startswith('/api/v1/files/') and '/content' in parsed.path:
return await load_url_image(parsed.path)
# Validate URL to prevent SSRF attacks against local/private networks.
@@ -1046,7 +1046,9 @@ async def load_url_image(data):
if image_url := image.get('url', None):
image_data, content_type = await get_image_data(
image_url,
- {k: v for k, v in headers.items() if k != 'Content-Type'},
+ {k: v for k, v in headers.items() if k != 'Content-Type'}
+ if _is_same_origin(image_url, image_config.IMAGES_EDIT_OPENAI_API_BASE_URL)
+ else None,
)
else:
image_data, content_type = await get_image_data(image['b64_json'])
diff --git a/backend/open_webui/routers/knowledge.py b/backend/open_webui/routers/knowledge.py
index 43ec07a53c2b..84008db22155 100644
--- a/backend/open_webui/routers/knowledge.py
+++ b/backend/open_webui/routers/knowledge.py
@@ -151,6 +151,24 @@ def external_knowledge_error():
)
+async def _verify_directory_in_knowledge(
+ id: str,
+ directory_id: str | None,
+ db: AsyncSession,
+ detail: str = ERROR_MESSAGES.NOT_FOUND,
+):
+ """Verify a caller-supplied directory belongs to the knowledge base in the URL. Unset means the root level."""
+ if not directory_id:
+ return None
+
+ directory = await Knowledges.get_directory_by_id(directory_id, db=db)
+ if not directory or directory.knowledge_id != id:
+ raise HTTPException(
+ status_code=status.HTTP_404_NOT_FOUND,
+ detail=detail,
+ )
+
+
@router.get('/', response_model=KnowledgeAccessListResponse)
async def get_knowledge_bases(
page: int | None = 1,
@@ -1437,6 +1455,8 @@ async def add_file_to_knowledge_by_id(
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
)
+ await _verify_directory_in_knowledge(id, form_data.directory_id, db, detail='Target directory not found.')
+
file = await Files.get_file_by_id(form_data.file_id, db=db)
if not file:
raise HTTPException(
@@ -2049,6 +2069,9 @@ async def add_files_to_knowledge_batch(
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
)
+ for directory_id in {form.directory_id for form in form_data if form.directory_id}:
+ await _verify_directory_in_knowledge(id, directory_id, db, detail='Target directory not found.')
+
# Batch-fetch all files to avoid N+1 queries
log.info('files/batch/add - %s files', len(form_data))
file_ids = [form.file_id for form in form_data]
@@ -2237,6 +2260,8 @@ async def create_knowledge_directory(
):
await _verify_knowledge_write_access(id, user, db)
+ await _verify_directory_in_knowledge(id, form_data.parent_id, db, detail='Parent directory not found.')
+
directory = await Knowledges.create_directory(
knowledge_id=id,
name=form_data.name,
@@ -2269,14 +2294,11 @@ async def update_knowledge_directory(
db: AsyncSession = Depends(get_async_session),
):
await _verify_knowledge_write_access(id, user, db)
+ await _verify_directory_in_knowledge(id, dir_id, db)
- # Verify directory belongs to this knowledge base
- directory = await Knowledges.get_directory_by_id(dir_id, db=db)
- if not directory or directory.knowledge_id != id:
- raise HTTPException(
- status_code=status.HTTP_404_NOT_FOUND,
- detail=ERROR_MESSAGES.NOT_FOUND,
- )
+ # '__unset__' leaves the parent alone, None moves the directory to the root
+ if form_data.parent_id not in (None, '__unset__'):
+ await _verify_directory_in_knowledge(id, form_data.parent_id, db, detail='Parent directory not found.')
result = await Knowledges.update_directory(
directory_id=dir_id,
@@ -2309,14 +2331,7 @@ async def delete_knowledge_directory(
db: AsyncSession = Depends(get_async_session),
):
await _verify_knowledge_write_access(id, user, db)
-
- # Verify directory belongs to this knowledge base
- directory = await Knowledges.get_directory_by_id(dir_id, db=db)
- if not directory or directory.knowledge_id != id:
- raise HTTPException(
- status_code=status.HTTP_404_NOT_FOUND,
- detail=ERROR_MESSAGES.NOT_FOUND,
- )
+ await _verify_directory_in_knowledge(id, dir_id, db)
# Collect before delete_directory drops the KnowledgeFile rows
files = [] if move_files else await Knowledges.get_files_by_id_and_directory_id(id, dir_id, db=db)
@@ -2375,14 +2390,7 @@ async def move_file_in_knowledge(
detail=ERROR_MESSAGES.NOT_FOUND,
)
- # If target directory is set, verify it belongs to this knowledge base
- if form_data.directory_id:
- directory = await Knowledges.get_directory_by_id(form_data.directory_id, db=db)
- if not directory or directory.knowledge_id != id:
- raise HTTPException(
- status_code=status.HTTP_404_NOT_FOUND,
- detail='Target directory not found.',
- )
+ await _verify_directory_in_knowledge(id, form_data.directory_id, db, detail='Target directory not found.')
success = await Knowledges.move_file_to_directory(
knowledge_id=id,
diff --git a/backend/open_webui/routers/models.py b/backend/open_webui/routers/models.py
index f9437b5b87b1..e8426b1dae03 100644
--- a/backend/open_webui/routers/models.py
+++ b/backend/open_webui/routers/models.py
@@ -27,7 +27,7 @@
)
from open_webui.events import EVENTS, publish_event
from open_webui.internal.db import get_async_session
-from open_webui.models.access_grants import AccessGrants
+from open_webui.models.access_grants import AccessGrants, normalize_access_grants
from open_webui.models.config import Config
from open_webui.models.files import Files
from open_webui.models.groups import Groups
@@ -62,6 +62,8 @@ def add_chat_variables_schema(model_dict: dict) -> dict:
schema = get_chat_variables_schema(system)
if schema:
model_dict.setdefault('meta', {})['chat_variables_schema'] = schema
+ elif isinstance(model_dict.get('meta'), dict):
+ model_dict['meta'].pop('chat_variables_schema', None)
return model_dict
@@ -983,13 +985,29 @@ async def update_model_by_id(
form_data.meta.background_image_url = model.meta.background_image_url
await _verify_background_image(form_data.meta.background_image_url, user, db, model.meta.background_image_url)
- form_data.access_grants = await filter_allowed_access_grants(
- await Config.get('user.permissions'),
- user.id,
- user.role,
- form_data.access_grants,
- 'sharing.public_models',
- )
+ if form_data.access_grants is not None:
+ # The editor resends every stored grant, so re-checking them would strip sharing this user cannot re-create.
+ existing_access_grants = {
+ (grant.principal_type, grant.principal_id, grant.permission) for grant in model.access_grants
+ }
+ submitted_access_grants_map = {
+ (grant['principal_type'], grant['principal_id'], grant['permission']): grant
+ for grant in normalize_access_grants(form_data.access_grants)
+ }
+ preserved_access_grants = [
+ grant for key, grant in submitted_access_grants_map.items() if key in existing_access_grants
+ ]
+ new_access_grants = [
+ grant for key, grant in submitted_access_grants_map.items() if key not in existing_access_grants
+ ]
+
+ form_data.access_grants = preserved_access_grants + await filter_allowed_access_grants(
+ await Config.get('user.permissions'),
+ user.id,
+ user.role,
+ new_access_grants,
+ 'sharing.public_models',
+ )
model = await Models.update_model_by_id(form_data.id, ModelForm(**form_data.model_dump()), db=db)
if model:
diff --git a/backend/open_webui/routers/notes.py b/backend/open_webui/routers/notes.py
index a84dd3f94eea..e44a311f4582 100644
--- a/backend/open_webui/routers/notes.py
+++ b/backend/open_webui/routers/notes.py
@@ -11,7 +11,7 @@
from open_webui.constants import ERROR_MESSAGES
from open_webui.events import EVENTS, publish_event
from open_webui.internal.db import get_async_session
-from open_webui.models.access_grants import AccessGrants
+from open_webui.models.access_grants import AccessGrantModel, AccessGrants
from open_webui.models.chats import ChatForm, ChatResponse, Chats
from open_webui.models.config import Config
from open_webui.models.groups import Groups
@@ -23,7 +23,7 @@
NoteUserResponse,
)
from open_webui.models.users import UserResponse, Users
-from open_webui.socket.main import sio
+from open_webui.socket.main import leave_room_for_users, sio
from open_webui.utils.access_control import (
filter_allowed_access_grants,
has_permission,
@@ -46,6 +46,23 @@ def _truncate_note_data(data: Optional[dict], max_length: int = 1000) -> Optiona
return {'content': {'md': md[:max_length]}}
+async def leave_note_rooms_for_revoked_users(
+ note: NoteModel, previous_access_grants: list[AccessGrantModel], db: AsyncSession | None = None
+):
+ revoked_user_ids = await AccessGrants.get_revoked_user_ids_by_resource(
+ 'note', note.id, previous_access_grants, db=db
+ )
+ revoked_user_ids.discard(note.user_id)
+ if not revoked_user_ids:
+ return
+
+ users = await Users.get_users_by_user_ids(list(revoked_user_ids), db=db)
+ # Admins retain access to notes regardless of grants.
+ user_ids = [user.id for user in users if user.role != 'admin']
+ for room in [f'note:{note.id}', f'doc_note:{note.id}']:
+ await leave_room_for_users(room, user_ids)
+
+
############################
# GetNotes
############################
@@ -564,8 +581,13 @@ async def update_note_by_id(
db=db,
)
+ previous_access_grants = note.access_grants
+
try:
note = await Notes.update_note_by_id(id, form_data, db=db)
+ if form_data.access_grants is not None:
+ await leave_note_rooms_for_revoked_users(note, previous_access_grants, db=db)
+
pinned_note_ids = await Notes.get_pinned_note_ids(user.id, db=db)
note.is_pinned = note.id in pinned_note_ids
@@ -644,6 +666,7 @@ async def update_note_access_by_id(
)
await AccessGrants.set_access_grants('note', id, form_data.access_grants, db=db)
+ await leave_note_rooms_for_revoked_users(note, note.access_grants, db=db)
note = await Notes.get_note_by_id(id, db=db)
pinned_note_ids = await Notes.get_pinned_note_ids(user.id, db=db)
@@ -744,6 +767,9 @@ async def delete_note_by_id(
try:
note = await Notes.delete_note_by_id(id, db=db)
+ for room in [f'note:{id}', f'doc_note:{id}']:
+ await sio.close_room(room)
+
await publish_event(
request,
EVENTS.NOTE_DELETED,
diff --git a/backend/open_webui/routers/ollama.py b/backend/open_webui/routers/ollama.py
index b283db9ae822..d354986d37cd 100644
--- a/backend/open_webui/routers/ollama.py
+++ b/backend/open_webui/routers/ollama.py
@@ -22,8 +22,6 @@
AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST,
AIOHTTP_FILE_STREAM_CHUNK_SIZE,
BYPASS_MODEL_ACCESS_CONTROL,
- ENABLE_FORWARD_USER_INFO_HEADERS,
- FORWARD_SESSION_INFO_HEADER_CHAT_ID,
MODELS_CACHE_TTL,
REDIS_KEY_PREFIX,
)
@@ -36,7 +34,7 @@
from open_webui.models.users import UserModel
from open_webui.utils.access_control import check_model_access
from open_webui.utils.auth import get_admin_user, get_verified_user
-from open_webui.utils.headers import get_custom_headers, include_user_info_headers
+from open_webui.utils.headers import get_headers_and_cookies
from open_webui.utils.json_codec import JSONCodec
from open_webui.utils.misc import calculate_sha256
from open_webui.utils.model_ids import strip_provider_model_prefix
@@ -67,24 +65,21 @@ def _clean_proxy_headers(raw_headers) -> dict:
async def send_get_request(
- url: str,
- key: str | None = None,
- user: UserModel | None = None,
+ request: Request = None,
+ url=None,
+ key=None,
+ user: UserModel = None,
+ config=None,
):
"""Issue a GET request to an Ollama backend and return JSON, or *None* on failure."""
try:
session = await get_session()
- headers: dict = {
- 'Content-Type': 'application/json',
- }
- if key:
- headers['Authorization'] = f'Bearer {key}'
- if ENABLE_FORWARD_USER_INFO_HEADERS and user:
- headers = include_user_info_headers(headers, user)
+ headers, cookies = await get_headers_and_cookies(request, url, key, config, user=user)
async with session.get(
url,
headers=headers,
+ cookies=cookies,
ssl=AIOHTTP_CLIENT_SESSION_SSL,
timeout=_MODEL_LIST_TIMEOUT,
) as r:
@@ -114,25 +109,14 @@ async def send_request(
try:
session = await get_session()
- headers = {
- 'Content-Type': 'application/json',
- **({'Authorization': f'Bearer {key}'} if key else {}),
- }
-
- if ENABLE_FORWARD_USER_INFO_HEADERS and user:
- headers = include_user_info_headers(headers, user, request=request)
- if metadata and metadata.get('chat_id'):
- headers[FORWARD_SESSION_INFO_HEADER_CHAT_ID] = metadata.get('chat_id')
-
- # Custom per-connection headers last so admin-set headers take precedence.
- if api_config and api_config.get('headers'):
- headers.update(await get_custom_headers(api_config['headers'], user, metadata, request=request))
+ headers, cookies = await get_headers_and_cookies(request, url, key, api_config, metadata, user=user)
r = await session.request(
method,
url,
data=payload,
headers=headers,
+ cookies=cookies,
ssl=AIOHTTP_CLIENT_SESSION_SSL,
timeout=get_client_timeout(stream=stream),
)
@@ -249,24 +233,26 @@ class ConnectionVerificationForm(BaseModel):
url: str
key: str | None = None
+ config: dict | None = None
+
@router.post('/verify')
async def verify_connection(
+ request: Request,
form_data: ConnectionVerificationForm,
user=Depends(get_admin_user),
):
"""Verify that an Ollama backend at *form_data.url* is reachable."""
try:
session = await get_session()
- headers: dict = {}
- if form_data.key:
- headers['Authorization'] = f'Bearer {form_data.key}'
- if ENABLE_FORWARD_USER_INFO_HEADERS and user:
- headers = include_user_info_headers(headers, user)
+ headers, cookies = await get_headers_and_cookies(
+ request, form_data.url, form_data.key, form_data.config, user=user
+ )
async with session.get(
f'{form_data.url}/api/version',
headers=headers,
+ cookies=cookies,
ssl=AIOHTTP_CLIENT_SESSION_SSL,
timeout=_MODEL_LIST_TIMEOUT,
) as r:
@@ -403,9 +389,11 @@ async def get_all_models(request: Request, user: UserModel | None = None):
for idx, url in enumerate(base_urls):
api_config = resolve_api_config(api_configs, idx, url)
if not api_config:
- tasks.append(send_get_request(f'{url}/api/tags', user=user))
+ tasks.append(send_get_request(request, f'{url}/api/tags', user=user))
elif api_config.get('enable', True):
- tasks.append(send_get_request(f'{url}/api/tags', api_config.get('key'), user=user))
+ tasks.append(
+ send_get_request(request, f'{url}/api/tags', api_config.get('key'), user=user, config=api_config)
+ )
else:
tasks.append(asyncio.ensure_future(asyncio.sleep(0, None)))
@@ -495,9 +483,15 @@ async def get_ollama_tags(
if url_idx is None:
result = await get_all_models(request, user=user)
else:
- url = (await Config.get('ollama.base_urls', []))[url_idx]
- key = get_api_key(url_idx, url, (await Config.get('ollama.api_configs', {})))
- result = await send_request(f'{url}/api/tags', 'GET', key=key, user=user)
+ url, api_config, key = await get_ollama_connection(url_idx)
+ result = await send_request(
+ f'{url}/api/tags',
+ 'GET',
+ key=key,
+ user=user,
+ api_config=api_config,
+ request=request,
+ )
if user.role == 'user' and not BYPASS_MODEL_ACCESS_CONTROL:
result['models'] = await get_filtered_models(result, user)
@@ -524,9 +518,11 @@ async def get_ollama_loaded_models(
continue
api_config = resolve_api_config(api_configs, idx, url)
if not api_config:
- tasks.append(send_get_request(f'{url}/api/ps', user=user))
+ tasks.append(send_get_request(request, f'{url}/api/ps', user=user))
elif api_config.get('enable', True):
- tasks.append(send_get_request(f'{url}/api/ps', api_config.get('key'), user=user))
+ tasks.append(
+ send_get_request(request, f'{url}/api/ps', api_config.get('key'), user=user, config=api_config)
+ )
else:
tasks.append(asyncio.ensure_future(asyncio.sleep(0, None)))
@@ -559,8 +555,15 @@ async def get_ollama_versions(
return {'version': False}
if url_idx is not None:
- url = (await Config.get('ollama.base_urls', []))[url_idx]
- return await send_request(f'{url}/api/version', 'GET')
+ url, api_config, key = await get_ollama_connection(url_idx)
+ return await send_request(
+ f'{url}/api/version',
+ 'GET',
+ key=key,
+ user=user,
+ api_config=api_config,
+ request=request,
+ )
# Fan-out to every enabled backend
tasks = []
@@ -570,7 +573,9 @@ async def get_ollama_versions(
(await Config.get('ollama.api_configs', {})).get(url, {}),
)
if api_config.get('enable', True):
- tasks.append(send_get_request(f'{url}/api/version', api_config.get('key')))
+ tasks.append(
+ send_get_request(request, f'{url}/api/version', api_config.get('key'), user=user, config=api_config)
+ )
raw = await asyncio.gather(*tasks)
valid = [r for r in raw if r is not None]
@@ -634,6 +639,8 @@ async def unload_model(
payload=JSONCodec.dumps(payload),
key=key,
user=user,
+ api_config=api_config,
+ request=request,
)
results.append({'url_idx': idx, 'success': True, 'response': res})
except Exception as e:
@@ -663,17 +670,19 @@ async def pull_model(
form_data = form_data.model_dump(exclude_none=True)
form_data['model'] = form_data.get('model', form_data.get('name'))
- url = (await Config.get('ollama.base_urls', []))[url_idx]
+ url, api_config, key = await get_ollama_connection(url_idx)
log.info('url: %s', url)
# Admins may pull from any registry
return await send_request(
f'{url}/api/pull',
payload=JSONCodec.dumps({**form_data, 'insecure': True}),
- key=get_api_key(url_idx, url, (await Config.get('ollama.api_configs', {}))),
+ key=key,
user=user,
stream=True,
passthrough=True,
+ api_config=api_config,
+ request=request,
)
@@ -704,16 +713,18 @@ async def push_model(
raise HTTPException(status_code=400, detail=ERROR_MESSAGES.MODEL_NOT_FOUND(form_data.model))
url_idx = models[form_data.model]['urls'][0]
- url = (await Config.get('ollama.base_urls', []))[url_idx]
+ url, api_config, key = await get_ollama_connection(url_idx)
log.debug('url: %s', url)
return await send_request(
f'{url}/api/push',
payload=form_data.model_dump_json(exclude_none=True).encode(),
- key=get_api_key(url_idx, url, (await Config.get('ollama.api_configs', {}))),
+ key=key,
user=user,
stream=True,
passthrough=True,
+ api_config=api_config,
+ request=request,
)
@@ -738,15 +749,17 @@ async def create_model(
raise HTTPException(status_code=503, detail=ERROR_MESSAGES.OLLAMA_API_DISABLED)
log.debug('form_data: %s', form_data)
- url = (await Config.get('ollama.base_urls', []))[url_idx]
+ url, api_config, key = await get_ollama_connection(url_idx)
return await send_request(
f'{url}/api/create',
payload=form_data.model_dump_json(exclude_none=True).encode(),
- key=get_api_key(url_idx, url, (await Config.get('ollama.api_configs', {}))),
+ key=key,
user=user,
stream=True,
passthrough=True,
+ api_config=api_config,
+ request=request,
)
@@ -776,14 +789,15 @@ async def copy_model(
raise HTTPException(status_code=400, detail=ERROR_MESSAGES.MODEL_NOT_FOUND(form_data.source))
url_idx = models[form_data.source]['urls'][0]
- url = (await Config.get('ollama.base_urls', []))[url_idx]
- key = get_api_key(url_idx, url, (await Config.get('ollama.api_configs', {})))
+ url, api_config, key = await get_ollama_connection(url_idx)
await send_request(
f'{url}/api/copy',
payload=form_data.model_dump_json(exclude_none=True).encode(),
key=key,
user=user,
+ api_config=api_config,
+ request=request,
)
await publish_event(
request,
@@ -818,8 +832,7 @@ async def delete_model(
raise HTTPException(status_code=400, detail=ERROR_MESSAGES.MODEL_NOT_FOUND(model))
url_idx = models[model]['urls'][0]
- url = (await Config.get('ollama.base_urls', []))[url_idx]
- key = get_api_key(url_idx, url, (await Config.get('ollama.api_configs', {})))
+ url, api_config, key = await get_ollama_connection(url_idx)
await send_request(
f'{url}/api/delete',
@@ -827,6 +840,8 @@ async def delete_model(
payload=JSONCodec.dumps(payload),
key=key,
user=user,
+ api_config=api_config,
+ request=request,
)
await publish_event(
request,
@@ -861,14 +876,15 @@ async def show_model_info(
raise HTTPException(status_code=400, detail=ERROR_MESSAGES.MODEL_NOT_FOUND(model))
url_idx = random.choice(models[model]['urls'])
- url = (await Config.get('ollama.base_urls', []))[url_idx]
- key = get_api_key(url_idx, url, (await Config.get('ollama.api_configs', {})))
+ url, api_config, key = await get_ollama_connection(url_idx)
return await send_request(
f'{url}/api/show',
payload=JSONCodec.dumps(payload),
key=key,
user=user,
+ api_config=api_config,
+ request=request,
)
@@ -922,6 +938,8 @@ async def embed(
payload=form_data.model_dump_json(exclude_none=True).encode(),
key=key,
user=user,
+ api_config=api_config,
+ request=request,
)
@@ -973,6 +991,8 @@ async def embeddings(
payload=form_data.model_dump_json(exclude_none=True).encode(),
key=key,
user=user,
+ api_config=api_config,
+ request=request,
)
@@ -1030,6 +1050,8 @@ async def generate_completion(
user=user,
stream=True,
passthrough=True,
+ api_config=api_config,
+ request=request,
)
@@ -1501,8 +1523,15 @@ async def get_openai_models(
model_list = await get_all_models(request, user=user)
raw_models = model_list['models']
else:
- url = (await Config.get('ollama.base_urls', []))[url_idx]
- model_list = await send_request(f'{url}/api/tags', 'GET')
+ url, api_config, key = await get_ollama_connection(url_idx)
+ model_list = await send_request(
+ f'{url}/api/tags',
+ 'GET',
+ key=key,
+ user=user,
+ api_config=api_config,
+ request=request,
+ )
raw_models = model_list.get('models', [])
now_ts = int(time.time())
@@ -1552,6 +1581,8 @@ async def download_file_stream(
file_url: str,
file_path: str,
file_name: str,
+ ollama_headers: dict,
+ ollama_cookies: dict,
chunk_size: int = AIOHTTP_FILE_STREAM_CHUNK_SIZE,
):
"""Stream a model file download from *file_url*, then push the blob to Ollama."""
@@ -1590,7 +1621,12 @@ async def blob_chunks():
async with session.post(
blob_url,
data=blob_chunks(),
- headers={'Content-Length': str(blob_size)},
+ headers={
+ **ollama_headers,
+ 'Content-Type': 'application/octet-stream',
+ 'Content-Length': str(blob_size),
+ },
+ cookies=ollama_cookies,
ssl=AIOHTTP_CLIENT_SESSION_SSL,
timeout=aiohttp.ClientTimeout(total=30),
) as blob_resp:
@@ -1617,15 +1653,17 @@ async def download_model(
detail='Invalid file_url. Only URLs from allowed hosts are permitted.',
)
- url = (await Config.get('ollama.base_urls', []))[url_idx if url_idx is not None else 0]
+ url, api_config, key = await get_ollama_connection(url_idx if url_idx is not None else 0)
file_name = parse_huggingface_url(form_data.url)
if not file_name:
return None
+ headers, cookies = await get_headers_and_cookies(request, url, key, api_config, user=user)
+
file_path = os.path.join(UPLOAD_DIR, file_name)
return StreamingResponse(
- download_file_stream(url, form_data.url, file_path, file_name),
+ download_file_stream(url, form_data.url, file_path, file_name, headers, cookies),
)
@@ -1638,7 +1676,8 @@ async def upload_model(
user=Depends(get_admin_user),
):
"""Upload a local model file, push it as a blob, and create the model in Ollama."""
- ollama_url = (await Config.get('ollama.base_urls', []))[url_idx if url_idx is not None else 0]
+ ollama_url, api_config, key = await get_ollama_connection(url_idx if url_idx is not None else 0)
+ headers, cookies = await get_headers_and_cookies(request, ollama_url, key, api_config, user=user)
filename = os.path.basename(file.filename)
file_path = os.path.join(UPLOAD_DIR, filename)
@@ -1680,7 +1719,12 @@ async def blob_chunks():
async with session.post(
blob_url,
data=blob_chunks(),
- headers={'Content-Length': str(total_size)},
+ headers={
+ **headers,
+ 'Content-Type': 'application/octet-stream',
+ 'Content-Length': str(total_size),
+ },
+ cookies=cookies,
ssl=AIOHTTP_CLIENT_SESSION_SSL,
timeout=get_client_timeout(),
) as resp:
@@ -1702,7 +1746,8 @@ async def blob_chunks():
async with session.post(
f'{ollama_url}/api/create',
- headers={'Content-Type': 'application/json'},
+ headers=headers,
+ cookies=cookies,
data=JSONCodec.dumps(create_payload),
ssl=AIOHTTP_CLIENT_SESSION_SSL,
timeout=get_client_timeout(),
diff --git a/backend/open_webui/routers/openai.py b/backend/open_webui/routers/openai.py
index 63676d166e91..b8a75c2bfb39 100644
--- a/backend/open_webui/routers/openai.py
+++ b/backend/open_webui/routers/openai.py
@@ -10,7 +10,6 @@
import aiofiles
import aiohttp
from aiocache import cached
-from azure.identity import DefaultAzureCredential, get_bearer_token_provider
from fastapi import APIRouter, Depends, HTTPException, Request, status
from fastapi.responses import (
FileResponse,
@@ -28,7 +27,6 @@
BYPASS_MODEL_ACCESS_CONTROL,
ENABLE_FORWARD_USER_INFO_HEADERS,
ENABLE_OPENAI_API_PASSTHROUGH,
- FORWARD_SESSION_INFO_HEADER_CHAT_ID,
MODELS_CACHE_TTL,
REDIS_KEY_PREFIX,
)
@@ -42,7 +40,7 @@
from open_webui.utils.access_control import check_model_access, has_connection_access, has_permission
from open_webui.utils.anthropic import ANTHROPIC_VERSION, get_anthropic_models, is_anthropic_url
from open_webui.utils.auth import get_admin_user, get_verified_user
-from open_webui.utils.headers import get_custom_headers, include_user_info_headers
+from open_webui.utils.headers import get_headers_and_cookies, include_user_info_headers
from open_webui.utils.json_codec import JSONCodec
from open_webui.utils.misc import convert_logit_bias_input_to_json
from open_webui.utils.model_ids import strip_provider_model_prefix
@@ -152,87 +150,6 @@ def openai_reasoning_model_handler(payload):
return payload
-async def get_headers_and_cookies(
- request: Request,
- url,
- key=None,
- config=None,
- metadata: dict | None = None,
- user: UserModel = None,
-):
- cookies = getattr(request, 'cookies', {}) if config.get('forward_cookies', False) else {}
- headers = {
- 'Content-Type': 'application/json',
- **(
- {
- # LICENSE covers this Open WebUI upstream metadata identifier.
- # Do not alter, remove, obscure, or replace it except as LICENSE permits:
- # https://docs.openwebui.com/license.
- 'HTTP-Referer': 'https://openwebui.com/',
- 'X-Title': 'Open WebUI',
- }
- if 'openrouter.ai' in url
- else {}
- ),
- }
-
- if ENABLE_FORWARD_USER_INFO_HEADERS and user:
- headers = include_user_info_headers(headers, user, request=request)
- if metadata and metadata.get('chat_id'):
- headers[FORWARD_SESSION_INFO_HEADER_CHAT_ID] = metadata.get('chat_id')
-
- token = None
- auth_type = config.get('auth_type')
-
- if auth_type == 'bearer' or auth_type is None:
- # Default to bearer if not specified
- token = f'{key}'
- elif auth_type == 'none':
- token = None
- elif auth_type == 'session':
- token = request.state.token.credentials
- elif auth_type == 'system_oauth':
- oauth_token = None
- try:
- if request.cookies.get('oauth_session_id', None):
- oauth_token = await request.app.state.oauth_manager.get_oauth_token(
- user.id,
- request.cookies.get('oauth_session_id', None),
- )
- except Exception as e:
- log.error(f'Error getting OAuth token: {e}')
-
- if oauth_token:
- token = f'{oauth_token.get("access_token", "")}'
-
- elif auth_type in ('azure_ad', 'microsoft_entra_id'):
- token = get_microsoft_entra_id_access_token()
-
- if token:
- headers['Authorization'] = f'Bearer {token}'
-
- if config.get('headers') and isinstance(config.get('headers'), dict):
- custom_headers = await get_custom_headers(config.get('headers'), user, metadata, request=request)
- headers.update(custom_headers)
-
- return headers, cookies
-
-
-def get_microsoft_entra_id_access_token():
- """
- Get Microsoft Entra ID access token using DefaultAzureCredential for Azure OpenAI.
- Returns the token string or None if authentication fails.
- """
- try:
- token_provider = get_bearer_token_provider(
- DefaultAzureCredential(), 'https://cognitiveservices.azure.com/.default'
- )
- return token_provider()
- except Exception as e:
- log.error(f'Error getting Microsoft Entra ID access token: {e}')
- return None
-
-
##########################################
#
# API routes
diff --git a/backend/open_webui/routers/retrieval.py b/backend/open_webui/routers/retrieval.py
index c36b0b8a53b5..401eeb079ad4 100644
--- a/backend/open_webui/routers/retrieval.py
+++ b/backend/open_webui/routers/retrieval.py
@@ -59,6 +59,7 @@
SENTENCE_TRANSFORMERS_CROSS_ENCODER_SIGMOID_ACTIVATION_FUNCTION,
SENTENCE_TRANSFORMERS_MODEL_KWARGS,
USE_SLIM,
+ USER_AGENT,
)
from open_webui.events import EVENTS, publish_event
from open_webui.internal.db import get_async_db, get_async_session
@@ -386,6 +387,7 @@ def get_rf(
'STAAN_MAX_SNIPPETS': 'web.search.staan_max_snippets',
'TAVILY_API_KEY': 'web.search.tavily_api_key',
'TAVILY_EXTRACT_DEPTH': 'web.search.tavily_extract_depth',
+ 'TAVILY_SEARCH_DEPTH': 'web.search.tavily_search_depth',
'TEXT_SPLITTER': 'rag.text_splitter',
'TIKA_SERVER_URL': 'rag.tika_server_url',
'TIKA_SERVER_VERSION': 'rag.tika_server_version',
@@ -772,6 +774,7 @@ async def get_rag_config(request: Request, user=Depends(get_admin_user)):
'FIRECRAWL_API_BASE_URL': config.FIRECRAWL_API_BASE_URL,
'FIRECRAWL_TIMEOUT': config.FIRECRAWL_TIMEOUT,
'TAVILY_EXTRACT_DEPTH': config.TAVILY_EXTRACT_DEPTH,
+ 'TAVILY_SEARCH_DEPTH': config.TAVILY_SEARCH_DEPTH,
'EXTERNAL_WEB_SEARCH_URL': config.EXTERNAL_WEB_SEARCH_URL,
'EXTERNAL_WEB_SEARCH_API_KEY': config.EXTERNAL_WEB_SEARCH_API_KEY,
'EXTERNAL_WEB_LOADER_URL': config.EXTERNAL_WEB_LOADER_URL,
@@ -855,6 +858,7 @@ class WebConfig(BaseModel):
FIRECRAWL_API_BASE_URL: str | None = None
FIRECRAWL_TIMEOUT: str | None = None
TAVILY_EXTRACT_DEPTH: str | None = None
+ TAVILY_SEARCH_DEPTH: str | None = None
EXTERNAL_WEB_SEARCH_URL: str | None = None
EXTERNAL_WEB_SEARCH_API_KEY: str | None = None
EXTERNAL_WEB_LOADER_URL: str | None = None
@@ -1385,6 +1389,7 @@ async def update_rag_config(request: Request, form_data: ConfigForm, user=Depend
config.EXTERNAL_WEB_LOADER_URL = form_data.web.EXTERNAL_WEB_LOADER_URL
config.EXTERNAL_WEB_LOADER_API_KEY = form_data.web.EXTERNAL_WEB_LOADER_API_KEY
config.TAVILY_EXTRACT_DEPTH = form_data.web.TAVILY_EXTRACT_DEPTH
+ config.TAVILY_SEARCH_DEPTH = form_data.web.TAVILY_SEARCH_DEPTH
config.YOUTUBE_LOADER_LANGUAGE = form_data.web.YOUTUBE_LOADER_LANGUAGE
config.YOUTUBE_LOADER_PROXY_URL = form_data.web.YOUTUBE_LOADER_PROXY_URL
request.app.state.YOUTUBE_LOADER_TRANSLATION = form_data.web.YOUTUBE_LOADER_TRANSLATION
@@ -1534,6 +1539,7 @@ async def update_rag_config(request: Request, form_data: ConfigForm, user=Depend
'FIRECRAWL_API_BASE_URL': config.FIRECRAWL_API_BASE_URL,
'FIRECRAWL_TIMEOUT': config.FIRECRAWL_TIMEOUT,
'TAVILY_EXTRACT_DEPTH': config.TAVILY_EXTRACT_DEPTH,
+ 'TAVILY_SEARCH_DEPTH': config.TAVILY_SEARCH_DEPTH,
'EXTERNAL_WEB_SEARCH_URL': config.EXTERNAL_WEB_SEARCH_URL,
'EXTERNAL_WEB_SEARCH_API_KEY': config.EXTERNAL_WEB_SEARCH_API_KEY,
'EXTERNAL_WEB_LOADER_URL': config.EXTERNAL_WEB_LOADER_URL,
@@ -1935,10 +1941,10 @@ async def process_file(
The session is committed before external API calls, and updates use a fresh session.
"""
config = await get_retrieval_config()
- if user.role == 'admin':
- file = await Files.get_file_by_id(form_data.file_id, db=db)
- else:
- file = await Files.get_file_by_id_and_user_id(form_data.file_id, user.id, db=db)
+ file = await Files.get_file_by_id(form_data.file_id, db=db)
+ if file and file.user_id != user.id and user.role != 'admin':
+ if not await has_access_to_file(file.id, 'write', user, db=db):
+ file = None
if file:
try:
@@ -2251,9 +2257,11 @@ async def _fetch_url(url: str, max_size_mb: int | str | None) -> dict:
except (TypeError, ValueError):
max_bytes = None
+ headers = {'User-Agent': USER_AGENT} if USER_AGENT else None
+
async with get_ssrf_safe_session() as session:
async with session.get(
- url, ssl=AIOHTTP_CLIENT_SESSION_SSL, allow_redirects=AIOHTTP_CLIENT_ALLOW_REDIRECTS
+ url, headers=headers, ssl=AIOHTTP_CLIENT_SESSION_SSL, allow_redirects=AIOHTTP_CLIENT_ALLOW_REDIRECTS
) as response:
response.raise_for_status()
@@ -2373,7 +2381,16 @@ async def process_url(
}
config = await get_retrieval_config()
- url_result = await _fetch_url(form_data.url, config.FILE_MAX_SIZE)
+ try:
+ url_result = await _fetch_url(form_data.url, config.FILE_MAX_SIZE)
+ except HTTPException:
+ raise
+ except Exception as e:
+ log.exception(e)
+ raise HTTPException(
+ status_code=status.HTTP_400_BAD_REQUEST,
+ detail=ERROR_MESSAGES.DEFAULT(e, f'Could not read content from {form_data.url}'),
+ )
if url_result['kind'] == 'web':
result = await process_web(request, form_data, process=process, user=user)
@@ -2454,6 +2471,13 @@ async def process_web(
detail=ERROR_MESSAGES.DEFAULT(e, f'Could not read content from {form_data.url}'),
)
+ # web loaders swallow fetch errors and return no documents
+ if not docs:
+ raise HTTPException(
+ status_code=status.HTTP_400_BAD_REQUEST,
+ detail=ERROR_MESSAGES.DEFAULT(f'Could not read content from {form_data.url}'),
+ )
+
try:
log.debug('text_content: %s', content)
@@ -2702,6 +2726,7 @@ async def search_web(request: Request, engine: str, query: str, user=None) -> li
query,
config.WEB_SEARCH_RESULT_COUNT,
config.WEB_SEARCH_DOMAIN_FILTER_LIST,
+ search_depth=config.TAVILY_SEARCH_DEPTH,
)
else:
raise Exception('No TAVILY_API_KEY found in environment variables')
diff --git a/backend/open_webui/routers/terminals.py b/backend/open_webui/routers/terminals.py
index e57314bfde86..6b5cd6e1d3da 100644
--- a/backend/open_webui/routers/terminals.py
+++ b/backend/open_webui/routers/terminals.py
@@ -5,6 +5,7 @@
* /{server_id}/{path:path} — proxy request to terminal server
"""
+import asyncio
import logging
import posixpath
from urllib.parse import unquote
@@ -18,17 +19,17 @@
from open_webui.models.config import Config
from open_webui.models.groups import Groups
from open_webui.utils.access_control import has_connection_access
-from open_webui.utils.auth import get_verified_user
+from open_webui.utils.auth import get_verified_user, get_verified_user_by_token
from open_webui.utils.headers import bearer_auth_header, normalize_bearer_token
from open_webui.utils.json_codec import JSONCodec
from open_webui.utils.terminals import (
TERMINAL_CONTEXT_HEADER,
get_terminal_server_url,
is_terminal_orchestrator,
+ terminal_chat_uploads,
terminal_context_available,
terminal_context_config,
terminal_context_id,
- terminal_chat_uploads,
terminal_contexts,
)
from starlette.background import BackgroundTask
@@ -262,10 +263,6 @@ async def _resolve_authenticated_connection(ws: WebSocket, server_id: str):
Returns ``(user, connection, chat_id, token)`` on success, or ``None`` after
closing *ws* with an appropriate error code.
"""
- import asyncio
-
- from open_webui.utils.auth import get_verified_user_by_token
-
# First-message authentication
try:
raw = await asyncio.wait_for(ws.receive_text(), timeout=10.0)
@@ -274,13 +271,28 @@ async def _resolve_authenticated_connection(ws: WebSocket, server_id: str):
await ws.close(code=4001, reason='Expected auth message')
return None
token = payload.get('token', '')
+ except (TimeoutError, JSONCodec.JSONDecodeError):
+ await ws.close(code=4001, reason='Auth timeout or invalid payload')
+ return None
+ except Exception:
+ await ws.close(code=4001, reason='Invalid token')
+ return None
+
+ result = await _resolve_terminal_access(ws, server_id, token)
+ if result is None:
+ return None
+ user, connection = result
+ chat_id = payload.get('chat_id', '')
+ return user, connection, chat_id if isinstance(chat_id, str) else '', token
+
+
+async def _resolve_terminal_access(ws: WebSocket, server_id: str, token: str):
+ """Resolve current access for both the handshake and an open terminal session."""
+ try:
user = await get_verified_user_by_token(token, getattr(ws.app.state, 'redis', None))
if user is None:
await ws.close(code=4001, reason='Invalid token')
return None
- except (asyncio.TimeoutError, JSONCodec.JSONDecodeError):
- await ws.close(code=4001, reason='Auth timeout or invalid payload')
- return None
except Exception:
await ws.close(code=4001, reason='Invalid token')
return None
@@ -297,16 +309,14 @@ async def _resolve_authenticated_connection(ws: WebSocket, server_id: str):
await ws.close(code=4003, reason='Terminal server disabled')
return None
- user_group_ids = {group.id for group in await Groups.get_groups_by_member_id(user.id)}
- if not await has_connection_access(user, connection, user_group_ids):
+ if not await has_connection_access(user, connection):
await ws.close(code=4003, reason='Access denied')
return None
- chat_id = payload.get('chat_id', '')
if not terminal_context_available(connection, 'chat'):
await ws.close(code=4003, reason='Terminal server is not available in chats')
return None
- return user, connection, chat_id if isinstance(chat_id, str) else '', token
+ return user, connection
@router.websocket('/{server_id}/api/terminals/{session_id}')
@@ -366,7 +376,6 @@ async def ws_terminal(
headers=upstream_headers,
ssl=AIOHTTP_CLIENT_SESSION_SSL,
) as upstream:
- import asyncio
import json as _json
# First-message auth to upstream terminal server
@@ -419,20 +428,30 @@ async def _upstream_to_client():
except Exception:
pass
- # End the proxy as soon as either direction finishes (e.g. a
- # graceful upstream CLOSE) and cancel the sibling, which would
+ async def _watch_access():
+ try:
+ while True:
+ # Poll current state so revocation also works across workers.
+ await asyncio.sleep(10)
+ if await _resolve_terminal_access(ws, server_id, token) is None:
+ return
+ except Exception:
+ log.exception('Terminal access recheck failed')
+
+ # End the proxy as soon as any task finishes (e.g. a
+ # graceful upstream CLOSE) and cancel the rest, which would
# otherwise hang on a blocked ws.receive() until the browser leaves.
tasks = [
asyncio.create_task(_client_to_upstream()),
asyncio.create_task(_upstream_to_client()),
+ asyncio.create_task(_watch_access()),
]
- _done, pending = await asyncio.wait(tasks, return_when=asyncio.FIRST_COMPLETED)
- for task in pending:
- task.cancel()
- try:
- await task
- except asyncio.CancelledError:
- pass
+ try:
+ await asyncio.wait(tasks, return_when=asyncio.FIRST_COMPLETED)
+ finally:
+ for task in tasks:
+ task.cancel()
+ await asyncio.gather(*tasks, return_exceptions=True)
except Exception as e:
log.exception('Terminal WebSocket proxy error: %s', e)
finally:
diff --git a/backend/open_webui/routers/tools.py b/backend/open_webui/routers/tools.py
index a814eb30f367..12c3771420ae 100644
--- a/backend/open_webui/routers/tools.py
+++ b/backend/open_webui/routers/tools.py
@@ -27,7 +27,7 @@
)
from open_webui.utils.access_control import (
filter_allowed_access_grants,
- has_access,
+ has_connection_access,
has_permission,
)
from open_webui.utils.auth import get_admin_user, get_verified_user
@@ -102,7 +102,7 @@ async def get_tools(
)
# OpenAPI Tool Servers
- server_access_grants = {}
+ server_connections = {}
for server in await get_tool_servers(request):
server_idx = server.get('idx', 0)
connections = await Config.get('tool_server.connections', [])
@@ -113,10 +113,8 @@ async def get_tools(
)
continue
connection = connections[server_idx]
- server_config = connection.get('config', {})
-
server_id = f'server:{server.get("id")}'
- server_access_grants[server_id] = server_config.get('access_grants', [])
+ server_connections[server_id] = connection
tools.append(
ToolUserResponse(
@@ -149,10 +147,8 @@ async def get_tools(
user.id, f'mcp:{server_id}'
)
- server_config = server.get('config') or {}
-
tool_id = f'server:mcp:{info.get("id")}'
- server_access_grants[tool_id] = server_config.get('access_grants', [])
+ server_connections[tool_id] = server
tools.append(
ToolUserResponse(
@@ -181,12 +177,10 @@ async def get_tools(
tool
for tool in tools
if not str(tool.id).startswith('server:')
- or await has_access(
- user.id,
- 'read',
- server_access_grants.get(str(tool.id), []),
+ or await has_connection_access(
+ user,
+ server_connections[str(tool.id)],
user_group_ids,
- db=db,
)
]
diff --git a/backend/open_webui/socket/main.py b/backend/open_webui/socket/main.py
index d4ac18f655a1..f157ed2f81ba 100644
--- a/backend/open_webui/socket/main.py
+++ b/backend/open_webui/socket/main.py
@@ -6,6 +6,7 @@
import random
import sys
import time
+from contextlib import suppress
from typing import Any
import pycrdt as Y
@@ -23,6 +24,7 @@
WEBSOCKET_REDIS_CLUSTER,
WEBSOCKET_REDIS_LOCK_TIMEOUT,
WEBSOCKET_REDIS_OPTIONS,
+ WEBSOCKET_REDIS_ROOM_CHANNELS,
WEBSOCKET_REDIS_URL,
WEBSOCKET_SENTINEL_HOSTS,
WEBSOCKET_SENTINEL_PORT,
@@ -37,18 +39,25 @@
from open_webui.models.folders import Folders
from open_webui.models.notes import Notes, NoteUpdateForm
from open_webui.models.users import UserNameResponse, Users
-from open_webui.socket.utils import RedisDict, RedisLock, YdocManager
-from open_webui.tasks import create_task, stop_item_tasks
+from open_webui.socket.redis_room_channels import AsyncRedisRoomChannelManager
+from open_webui.socket.utils import CachedRedisDict, RedisDict, RedisLock, YdocManager
+from open_webui.tasks import (
+ REDIS_PUBSUB_MAX_RECONNECT_INTERVAL,
+ REDIS_PUBSUB_RECONNECT_INTERVAL,
+ create_task,
+ stop_item_tasks,
+)
from open_webui.utils.access_control import has_permission
from open_webui.utils.auth import get_verified_user_by_token
from open_webui.utils.chat_id import is_saved_chat_id
-from open_webui.utils.json_codec import SOCKETIO_JSON
+from open_webui.utils.json_codec import SOCKETIO_JSON, JSONCodec, dumps_bytes
from open_webui.utils.misc import get_output_text
from open_webui.utils.redis import (
build_sentinel_url,
get_redis_connection,
get_sentinels_from_env,
)
+from redis.exceptions import RedisError
from socketio.packet import Packet
logging.basicConfig(stream=sys.stdout, level=GLOBAL_LOG_LEVEL)
@@ -86,7 +95,8 @@ def reconstruct_binary(cls, data: Any, attachments: list[bytes]):
if sentinel_hosts
else WEBSOCKET_REDIS_URL
)
- redis_manager = socketio.AsyncRedisManager(ws_redis_url, redis_options=WEBSOCKET_REDIS_OPTIONS, json=SOCKETIO_JSON)
+ manager_class = AsyncRedisRoomChannelManager if WEBSOCKET_REDIS_ROOM_CHANNELS else socketio.AsyncRedisManager
+ redis_manager = manager_class(ws_redis_url, redis_options=WEBSOCKET_REDIS_OPTIONS, json=SOCKETIO_JSON)
sio = socketio.AsyncServer(
cors_allowed_origins=SOCKETIO_CORS_ORIGINS,
async_mode='asgi',
@@ -133,12 +143,11 @@ def reconstruct_binary(cls, data: Any, attachments: list[bytes]):
async_mode=True,
)
- MODELS = RedisDict(
+ MODELS = CachedRedisDict(
f'{REDIS_KEY_PREFIX}:models',
redis_url=WEBSOCKET_REDIS_URL,
redis_sentinels=ws_sentinels,
redis_cluster=WEBSOCKET_REDIS_CLUSTER,
- cache_set_signature=True,
)
SESSION_POOL = RedisDict(
@@ -190,6 +199,11 @@ def reconstruct_binary(cls, data: Any, attachments: list[bytes]):
redis_key_prefix=f'{REDIS_KEY_PREFIX}:ydoc:documents',
)
+REDIS_EVENT_CHANNEL = f'{REDIS_KEY_PREFIX}:direct_completion'
+
+EVENT_QUEUES: dict[str, asyncio.Queue] = {}
+EVENT_PUBLISH_LOCK = asyncio.Lock()
+
def get_session_pool_batches():
"""All session pool entries, in bounded batches for the Redis backing."""
@@ -332,8 +346,20 @@ def get_session_ids_from_room(room):
def get_session_ids_by_user_id(user_id: str) -> list[str]:
"""Get known session IDs for a user across the local rooms and shared session pool."""
- session_ids = set(get_session_ids_from_room(f'user:{user_id}'))
- session_ids.update(sid for sid, entry in SESSION_POOL.items() if entry and entry.get('id') == user_id)
+ return get_session_ids_by_user_ids([user_id])
+
+
+def get_session_ids_by_user_ids(user_ids: list[str]) -> list[str]:
+ """Get known session IDs for users across the local rooms and shared session pool."""
+ if not user_ids:
+ return []
+
+ user_ids = set(user_ids)
+ session_ids = set()
+ for user_id in user_ids:
+ session_ids.update(get_session_ids_from_room(f'user:{user_id}'))
+ for batch in get_session_pool_batches():
+ session_ids.update(sid for sid, user in batch if user and user.get('id') in user_ids)
return list(session_ids)
@@ -374,6 +400,15 @@ async def enter_room_for_users(room: str, user_ids: list[str]):
log.debug('Failed to make users %s join room %s: %s', user_ids, room, e)
+async def leave_room_for_users(room: str, user_ids: list[str]):
+ """Make all sessions of each user leave a room, including sessions on other workers."""
+ for sid in get_session_ids_by_user_ids(user_ids):
+ try:
+ await sio.leave_room(sid, room)
+ except Exception as e:
+ log.debug('Failed to make session %s leave room %s: %s', sid, room, e)
+
+
async def disconnect_user_sessions(user_id: str):
"""Disconnect all Socket.IO sessions belonging to a user.
@@ -828,33 +863,34 @@ async def yjs_document_update(sid, data):
log.warning(f'User {user.get("id")} does not have write access to note {note_id}. Rejecting update.')
return
- user_id = data.get('user_id', sid)
+ update = data.get('update') # List of bytes from frontend
- update = data['update'] # List of bytes from frontend
+ if update:
+ user_id = data.get('user_id', sid)
- await YDOC_MANAGER.append_to_updates(
- document_id=document_id,
- update=update, # Convert list of bytes to bytes
- )
+ await YDOC_MANAGER.append_to_updates(
+ document_id=document_id,
+ update=update, # Convert list of bytes to bytes
+ )
- # Broadcast update to all other users in the document
- await sio.emit(
- 'ydoc:document:update',
- {
- 'document_id': document_id,
- 'user_id': user_id,
- 'update': update,
- 'socket_id': sid, # Add socket_id to match frontend filtering
- },
- room=f'doc_{document_id}',
- skip_sid=sid,
- )
+ # Broadcast update to all other users in the document
+ await sio.emit(
+ 'ydoc:document:update',
+ {
+ 'document_id': document_id,
+ 'user_id': user_id,
+ 'update': update,
+ 'socket_id': sid, # Add socket_id to match frontend filtering
+ },
+ room=f'doc_{document_id}',
+ skip_sid=sid,
+ )
async def debounced_save():
await asyncio.sleep(0.5)
await document_save_handler(document_id, data.get('data', {}), user)
- if data.get('data'):
+ if document_id.startswith('note:') and data.get('data'):
# Only drop the pending save when a new one takes its place.
# Updates without a content snapshot (the resync a client sends
# after rejoining a document) would otherwise cancel the pending
@@ -948,6 +984,62 @@ async def disconnect(sid, reason=None):
# print(f"Unknown session ID {sid} disconnected")
+async def redis_event_listener() -> None:
+ """Route events received over Redis to their local queues."""
+ reconnect_interval = REDIS_PUBSUB_RECONNECT_INTERVAL
+
+ while True:
+ pubsub = None
+ try:
+ # RedisCluster can't route a pubsub subscribe until initialize() fills its slot cache.
+ await REDIS.initialize()
+
+ pubsub = REDIS.pubsub()
+ await pubsub.subscribe(REDIS_EVENT_CHANNEL)
+ reconnect_interval = REDIS_PUBSUB_RECONNECT_INTERVAL
+
+ async for message in pubsub.listen():
+ if message['type'] != 'message':
+ continue
+ event = JSONCodec.loads(message['data'])
+ queue = EVENT_QUEUES.get(event['channel'])
+ if queue is not None:
+ await queue.put(event['data'])
+ log.warning('Redis event listener stopped. Retrying.')
+ except asyncio.CancelledError:
+ raise
+ except Exception:
+ log.exception('Redis event listener failed. Retrying.')
+ finally:
+ if pubsub:
+ with suppress(Exception):
+ await pubsub.aclose()
+
+ await asyncio.sleep(reconnect_interval)
+ reconnect_interval = min(reconnect_interval * 2, REDIS_PUBSUB_MAX_RECONNECT_INTERVAL)
+
+
+@sio.on('*')
+async def socket_event_handler(event: Any, sid: str, *args: Any) -> None:
+ """Route user-owned stream events to a local queue or another worker."""
+ if not isinstance(event, str) or event.count(':') != 2 or not args:
+ return
+
+ user = await get_socket_session_user(sid)
+ if not user or user.get('id') != event.split(':', 1)[0]:
+ return
+
+ queue = EVENT_QUEUES.get(event)
+ if queue is not None:
+ await queue.put(args[0])
+ elif WEBSOCKET_MANAGER == 'redis':
+ try:
+ async with EVENT_PUBLISH_LOCK:
+ await REDIS.publish(REDIS_EVENT_CHANNEL, dumps_bytes({'channel': event, 'data': args[0]}))
+ except RedisError as e:
+ log.debug('Failed to relay socket event %s: %s', event, e)
+
+
async def _make_channel_emitter(request_info):
"""Event emitter that routes pipeline output to a channel message.
@@ -1015,7 +1107,8 @@ async def __channel_emitter__(event_data):
state['output'] = copy.deepcopy(output)
now = time.time()
- if done or (now - state['last_emit_at']) >= THROTTLE_INTERVAL:
+ # Tool boundaries must publish all results before waiting on the next model response.
+ if done or data.get('flush') or (now - state['last_emit_at']) >= THROTTLE_INTERVAL:
state['last_emit_at'] = now
await _emit_channel_update(content, done, output if isinstance(output, list) else None)
diff --git a/backend/open_webui/socket/redis_room_channels.py b/backend/open_webui/socket/redis_room_channels.py
new file mode 100644
index 000000000000..715ccc1ea92d
--- /dev/null
+++ b/backend/open_webui/socket/redis_room_channels.py
@@ -0,0 +1,82 @@
+"""Per-room redis channels let instances skip the decode and packet encode for rooms with no local members."""
+
+import asyncio
+
+from socketio import AsyncRedisManager
+
+
+class AsyncRedisRoomChannelManager(AsyncRedisManager):
+ name = 'aioredisroomchannel'
+
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ self._local_room_channels = set()
+
+ # collision-free while namespaces contain no '#' (socket.io default '/'); rooms may contain '#'
+ def _room_channel(self, namespace, room):
+ return f'{self.channel}#{namespace}#{room}'.encode()
+
+ def basic_enter_room(self, sid, namespace, room, eio_sid=None):
+ super().basic_enter_room(sid, namespace, room, eio_sid=eio_sid)
+ if room is not None:
+ self._local_room_channels.add(self._room_channel(namespace, room))
+
+ def basic_leave_room(self, sid, namespace, room):
+ super().basic_leave_room(sid, namespace, room)
+ if room is not None and room not in self.rooms.get(namespace, {}):
+ self._local_room_channels.discard(self._room_channel(namespace, room))
+
+ async def _publish(self, data):
+ if data.get('method') == 'emit' and isinstance(data.get('room'), str):
+ channel = self._room_channel(data['namespace'], data['room'])
+ else:
+ channel = self.channel
+ _, error = self._get_redis_module_and_error()
+ for retries_left in range(1, -1, -1): # 2 attempts
+ try:
+ if not self.connected:
+ self._redis_connect()
+ return await self.redis.publish(channel, self.json.dumps(data))
+ except error as exc:
+ if retries_left > 0:
+ self._get_logger().error('Cannot publish to redis... retrying', extra={'redis_exception': str(exc)})
+ self.connected = False
+ else:
+ self._get_logger().error(
+ 'Cannot publish to redis... giving up', extra={'redis_exception': str(exc)}
+ )
+ break
+
+ async def _redis_listen_with_retries(self):
+ _, error = self._get_redis_module_and_error()
+ retry_sleep = 1
+ subscribed = False
+ while True:
+ try:
+ if not subscribed:
+ self._redis_connect()
+ await self.pubsub.subscribe(self.channel)
+ await self.pubsub.psubscribe(f'{self.channel}#*')
+ retry_sleep = 1
+ async for message in self.pubsub.listen():
+ yield message
+ except error as exc:
+ self._get_logger().error(
+ f'Cannot receive from redis... retrying in {retry_sleep} secs',
+ extra={'redis_exception': str(exc)},
+ )
+ subscribed = False
+ await asyncio.sleep(retry_sleep)
+ retry_sleep *= 2
+ if retry_sleep > 60:
+ retry_sleep = 60
+
+ async def _listen(self):
+ main_channel = self.channel.encode()
+ async for message in self._redis_listen_with_retries():
+ if 'data' not in message:
+ continue
+ if (message['type'] == 'message' and message['channel'] == main_channel) or (
+ message['type'] == 'pmessage' and message['channel'] in self._local_room_channels
+ ):
+ yield message['data']
diff --git a/backend/open_webui/socket/utils.py b/backend/open_webui/socket/utils.py
index 049052a1e12f..f976a94e77c8 100644
--- a/backend/open_webui/socket/utils.py
+++ b/backend/open_webui/socket/utils.py
@@ -134,7 +134,8 @@ def delete_many(self, *keys):
"""Delete fields in one HDEL; no keys is a no-op (HDEL rejects an empty field list)."""
if keys:
self.redis.hdel(self.name, *keys)
- self._last_signature = None
+ if self._signature_name:
+ self.redis.delete(self._signature_name)
def set(self, mapping: dict):
if not mapping:
@@ -149,10 +150,14 @@ def set(self, mapping: dict):
digest.update(b'\0')
digest.update(serialized[key].encode())
digest.update(b'\0')
- signature = digest.hexdigest()
+ content_digest = digest.hexdigest()
- if self._signature_name and self.redis.get(self._signature_name) == signature:
- return
+ if self._signature_name:
+ stored_signature = self.redis.get(self._signature_name)
+ if stored_signature and stored_signature.startswith(f'{content_digest}:'):
+ return
+ # Cleared first so readers refetch while the hash is being rewritten.
+ self.redis.delete(self._signature_name)
# Fetch existing keys before writing so we know which ones to remove.
# HKEYS is cheap — it transfers only short key strings, not large JSON values.
@@ -168,7 +173,7 @@ def set(self, mapping: dict):
self.redis.hdel(self.name, *keys_to_remove)
if self._signature_name:
- self.redis.set(self._signature_name, signature)
+ self.redis.set(self._signature_name, f'{content_digest}:{uuid.uuid4().hex}')
def get(self, key, default=None):
try:
@@ -196,6 +201,43 @@ def setdefault(self, key, default=None):
return self[key]
+class CachedRedisDict(RedisDict):
+ """Answers reads from a per-worker cache of the hash, refetched whenever its signature changes."""
+
+ def __init__(self, name: str, redis_url: str, redis_sentinels: list = [], redis_cluster: bool = False):
+ super().__init__(name, redis_url, redis_sentinels, redis_cluster, cache_set_signature=True)
+ self._cache: dict = {}
+ self._cached_signature: str | None = None
+
+ def _refresh_cache(self) -> dict:
+ stored_signature = self.redis.get(self._signature_name)
+ if stored_signature is None or stored_signature != self._cached_signature:
+ self._cache = self.redis.hgetall(self.name)
+ self._cached_signature = stored_signature
+ return self._cache
+
+ def __getitem__(self, key):
+ value = self._refresh_cache().get(key)
+ if value is None:
+ raise KeyError(key)
+ return JSONCodec.loads(value)
+
+ def __contains__(self, key):
+ return key in self._refresh_cache()
+
+ def __len__(self):
+ return len(self._refresh_cache())
+
+ def keys(self):
+ return list(self._refresh_cache().keys())
+
+ def values(self):
+ return [JSONCodec.loads(v) for v in self._refresh_cache().values()]
+
+ def items(self):
+ return [(k, JSONCodec.loads(v)) for k, v in self._refresh_cache().items()]
+
+
class YdocManager:
COMPACTION_THRESHOLD = 500
diff --git a/backend/open_webui/storage/provider.py b/backend/open_webui/storage/provider.py
index c8236416de1d..919900f75254 100644
--- a/backend/open_webui/storage/provider.py
+++ b/backend/open_webui/storage/provider.py
@@ -168,7 +168,9 @@ def get_file(self, file_path: str) -> str:
try:
s3_key = self._extract_s3_key(file_path)
local_file_path = self._get_local_file_path(s3_key)
- self.s3_client.download_file(self.bucket_name, s3_key, local_file_path)
+ # download_file's temp name caps characters, not bytes, so non-ASCII names can exceed NAME_MAX
+ with open(local_file_path, 'wb') as local_file:
+ self.s3_client.download_fileobj(self.bucket_name, s3_key, local_file)
return local_file_path
except ClientError as e:
raise RuntimeError(f'Error downloading file from S3: {e}')
diff --git a/backend/open_webui/tasks.py b/backend/open_webui/tasks.py
index 322cd32e60dc..05f622ef06f1 100644
--- a/backend/open_webui/tasks.py
+++ b/backend/open_webui/tasks.py
@@ -6,7 +6,7 @@
from redis.asyncio import Redis
-from open_webui.env import REDIS_KEY_PREFIX, REDIS_RESPONSE_STREAM_TTL
+from open_webui.env import REDIS_KEY_PREFIX, REDIS_RESPONSE_STREAM_TTL, REDIS_TASK_TTL
from open_webui.utils.json_codec import JSONCodec, dumps_bytes
log = logging.getLogger(__name__)
@@ -66,13 +66,28 @@ async def redis_task_command_listener(app):
reconnect_interval = min(reconnect_interval * 2, REDIS_PUBSUB_MAX_RECONNECT_INTERVAL)
+async def redis_task_heartbeat(app):
+ redis: Redis = app.state.redis
+ while True:
+ await asyncio.sleep(REDIS_TASK_TTL / 4)
+ try:
+ pipe = redis.pipeline(transaction=False)
+ for task_id in list(tasks):
+ # EXPIRE cannot recreate a task already removed by cleanup.
+ pipe.expire(f'{REDIS_TASKS_KEY}:{task_id}', REDIS_TASK_TTL)
+ await pipe.execute()
+ except Exception:
+ log.exception('Redis task heartbeat failed')
+
+
### ------------------------------
### REDIS-ENABLED HANDLERS
### ------------------------------
async def redis_save_task(redis: Redis, task_id: str, item_id: str | None):
- pipe = redis.pipeline()
+ pipe = redis.pipeline(transaction=False)
+ pipe.set(f'{REDIS_TASKS_KEY}:{task_id}', '1', ex=REDIS_TASK_TTL or None)
pipe.hset(REDIS_TASKS_KEY, task_id, item_id or '')
if item_id:
pipe.sadd(f'{REDIS_ITEM_TASKS_KEY}:{item_id}', task_id)
@@ -80,25 +95,36 @@ async def redis_save_task(redis: Redis, task_id: str, item_id: str | None):
async def redis_cleanup_task(redis: Redis, task_id: str, item_id: str | None):
- pipe = redis.pipeline()
+ pipe = redis.pipeline(transaction=False)
+ pipe.delete(f'{REDIS_TASKS_KEY}:{task_id}')
pipe.hdel(REDIS_TASKS_KEY, task_id)
pipe.hdel(REDIS_RESPONSE_STREAMS_KEY, task_id)
if item_id:
pipe.srem(f'{REDIS_ITEM_TASKS_KEY}:{item_id}', task_id)
- await pipe.execute()
- # Remove the set key entirely if no tasks remain for this item
- if await redis.scard(f'{REDIS_ITEM_TASKS_KEY}:{item_id}') == 0:
- await redis.delete(f'{REDIS_ITEM_TASKS_KEY}:{item_id}')
- else:
- await pipe.execute()
+ await pipe.execute()
-async def redis_list_tasks(redis: Redis) -> list[str]:
- return list(await redis.hkeys(REDIS_TASKS_KEY))
+async def redis_list_tasks(redis: Redis, item_id: str | None = None) -> list[str]:
+ task_ids = list(
+ await redis.smembers(f'{REDIS_ITEM_TASKS_KEY}:{item_id}')
+ if item_id is not None
+ else await redis.hkeys(REDIS_TASKS_KEY)
+ )
+ if not task_ids or REDIS_TASK_TTL == 0:
+ return task_ids
+ pipe = redis.pipeline(transaction=False)
+ for task_id in task_ids:
+ pipe.exists(f'{REDIS_TASKS_KEY}:{task_id}')
-async def redis_list_item_tasks(redis: Redis, item_id: str) -> list[str]:
- return list(await redis.smembers(f'{REDIS_ITEM_TASKS_KEY}:{item_id}'))
+ active = []
+ for task_id, exists in zip(task_ids, await pipe.execute()):
+ if exists:
+ active.append(task_id)
+ else:
+ task_item_id = item_id if item_id is not None else await redis.hget(REDIS_TASKS_KEY, task_id)
+ await redis_cleanup_task(redis, task_id, task_item_id or None)
+ return active
async def redis_send_command(redis: Redis, command: dict):
@@ -166,7 +192,7 @@ async def list_task_ids_by_item_id(redis, id):
List all tasks associated with a specific ID.
"""
if redis:
- return await redis_list_item_tasks(redis, id)
+ return await redis_list_tasks(redis, id)
return list(item_tasks.get(id, []))
diff --git a/backend/open_webui/tools/builtin.py b/backend/open_webui/tools/builtin.py
index 8dedd75c1362..c1d1b164d626 100644
--- a/backend/open_webui/tools/builtin.py
+++ b/backend/open_webui/tools/builtin.py
@@ -3484,6 +3484,7 @@ async def view_skill(
__request__: Request = None,
__user__: dict = None,
__metadata__: dict = None,
+ __event_call__: callable = None,
) -> str:
"""
Load the full instructions of a skill by its id from the available skills manifest.
@@ -3504,7 +3505,9 @@ async def view_skill(
from open_webui.utils.terminals import get_terminal_skill
skill_name = unquote(id.removeprefix(terminal_skill_prefix))
- skill = await get_terminal_skill(__request__, __user__, __metadata__ or {}, skill_name)
+ skill = await get_terminal_skill(
+ __request__, __user__, __metadata__ or {}, skill_name, {'__event_call__': __event_call__}
+ )
if not skill:
return JSONCodec.dumps({'error': f"Skill '{id}' not found"})
return JSONCodec.dumps(skill, ensure_ascii=False)
@@ -3768,7 +3771,7 @@ async def create_automation(
# Validate the RRULE
try:
- validate_rrule(rrule, tz=user.timezone)
+ await validate_rrule(rrule, tz=user.timezone)
except ValueError as e:
return JSONCodec.dumps({'error': f'Invalid schedule: {e}'})
@@ -3794,7 +3797,7 @@ async def create_automation(
is_active=True,
)
- automation = await Automations.insert(user_id, form, next_run_ns(rrule, tz=tz))
+ automation = await Automations.insert(user_id, form, await next_run_ns(rrule, tz=tz))
return JSONCodec.dumps(
{
@@ -3805,7 +3808,7 @@ async def create_automation(
'model_id': model_id,
'target': automation.data.get('target'),
'is_active': automation.is_active,
- 'next_runs': next_n_runs_ns(rrule, tz=tz),
+ 'next_runs': await next_n_runs_ns(rrule, tz=tz),
},
ensure_ascii=False,
)
@@ -3876,7 +3879,7 @@ async def update_automation(
# Validate RRULE if changed
if rrule is not None:
try:
- validate_rrule(new_rrule, tz=user.timezone)
+ await validate_rrule(new_rrule, tz=user.timezone)
except ValueError as e:
return JSONCodec.dumps({'error': f'Invalid schedule: {e}'})
@@ -3898,7 +3901,7 @@ async def update_automation(
is_active=automation.is_active,
)
- updated = await Automations.update_by_id(automation_id, form, next_run_ns(new_rrule, tz=tz))
+ updated = await Automations.update_by_id(automation_id, form, await next_run_ns(new_rrule, tz=tz))
return JSONCodec.dumps(
{
@@ -3909,7 +3912,7 @@ async def update_automation(
'model_id': new_model_id,
'target': updated.data.get('target'),
'is_active': updated.is_active,
- 'next_runs': next_n_runs_ns(new_rrule, tz=tz),
+ 'next_runs': await next_n_runs_ns(new_rrule, tz=tz),
},
ensure_ascii=False,
)
@@ -3977,7 +3980,7 @@ async def list_automations(
'rrule': rrule,
'is_active': item.is_active,
'last_run_at': item.last_run_at,
- 'next_runs': next_n_runs_ns(rrule, tz=user.timezone if user else None),
+ 'next_runs': await next_n_runs_ns(rrule, tz=user.timezone if user else None),
}
)
@@ -4024,7 +4027,7 @@ async def toggle_automation(
rrule = automation.data.get('rrule', '')
toggled = await Automations.toggle(
automation_id,
- next_run_ns(rrule, tz=user.timezone if user else None),
+ await next_run_ns(rrule, tz=user.timezone if user else None),
)
return JSONCodec.dumps(
diff --git a/backend/open_webui/utils/access_control/__init__.py b/backend/open_webui/utils/access_control/__init__.py
index 0853597b13ce..4418fc45a30c 100644
--- a/backend/open_webui/utils/access_control/__init__.py
+++ b/backend/open_webui/utils/access_control/__init__.py
@@ -179,6 +179,40 @@ async def has_connection_access(
return await has_access(user.id, 'read', access_grants, user_group_ids)
+async def has_arena_model_access(
+ user: UserModel,
+ model: dict,
+ user_group_ids: set[str] | None = None,
+ db: AsyncSession | None = None,
+) -> bool:
+ """
+ Check if a user can access an arena model based on ``info.meta.access_grants``.
+
+ Arena models are config-driven (not DB-owned). Empty grants are private to
+ admins, matching Open Terminal / ``has_connection_access``.
+
+ - Admin with BYPASS_ADMIN_ACCESS_CONTROL → always allowed
+ - Missing, None, or empty access_grants → private, admin-only
+ - access_grants has entries → delegates to ``has_access``
+ """
+ from open_webui.config import BYPASS_ADMIN_ACCESS_CONTROL
+
+ if user.role == 'admin' and BYPASS_ADMIN_ACCESS_CONTROL:
+ return True
+
+ access_grants = ((model.get('info') or {}).get('meta') or {}).get('access_grants', [])
+ if not access_grants:
+ # No grants configured → private, admin-only: admins must keep access
+ # to arena models only they can configure, even when they do not bypass
+ # access control globally.
+ return user.role == 'admin'
+
+ if user_group_ids is None:
+ user_group_ids = {group.id for group in await Groups.get_groups_by_member_id(user.id, db=db)}
+
+ return await has_access(user.id, 'read', access_grants, user_group_ids, db=db)
+
+
def migrate_access_control(data: dict, ac_key: str = 'access_control', grants_key: str = 'access_grants') -> None:
"""
Auto-migrate a config dict in-place from legacy access_control dict to access_grants list.
diff --git a/backend/open_webui/utils/access_control/files.py b/backend/open_webui/utils/access_control/files.py
index 66cf3d44841d..f4859acb9584 100644
--- a/backend/open_webui/utils/access_control/files.py
+++ b/backend/open_webui/utils/access_control/files.py
@@ -84,9 +84,7 @@ async def has_access_to_file(
# Check if the file is directly attached to a shared workspace model (per the ownership
# note above, model write is conferred only for files the model owner owns).
- model_owners = await Models.get_model_owner_ids_by_file_id(
- file.id, db=db, include_background=access_type == 'read'
- )
+ model_owners = await Models.get_model_owner_ids_by_file_id(file.id, db=db, include_background=access_type == 'read')
if access_type != 'read':
model_owners = {model_id: owner_id for model_id, owner_id in model_owners.items() if owner_id == file.user_id}
if user.id in model_owners.values():
diff --git a/backend/open_webui/utils/anthropic.py b/backend/open_webui/utils/anthropic.py
index 36237bdaeb81..bd2cea2e61d7 100644
--- a/backend/open_webui/utils/anthropic.py
+++ b/backend/open_webui/utils/anthropic.py
@@ -432,8 +432,8 @@ def convert_anthropic_to_openai_payload(
else:
openai_payload[param] = anthropic_payload[param]
- # Tools conversion: Anthropic → OpenAI
- if 'tools' in anthropic_payload:
+ # Tools conversion: Anthropic → OpenAI (backends reject an empty tools array)
+ if anthropic_payload.get('tools'):
openai_tools = []
for tool in anthropic_payload['tools']:
openai_tools.append(
@@ -452,7 +452,7 @@ def convert_anthropic_to_openai_payload(
openai_payload['tools'] = openai_tools
# tool_choice
- if 'tool_choice' in anthropic_payload:
+ if 'tool_choice' in anthropic_payload and 'tools' in openai_payload:
tool_choice = anthropic_payload['tool_choice']
if isinstance(tool_choice, dict):
tool_choice_type = tool_choice.get('type', 'auto')
@@ -616,6 +616,7 @@ async def openai_stream_to_anthropic_stream(openai_stream_generator, model: str
server_tool_use = None
service_tier = None
stop_reason = 'end_turn'
+ error_message = None
# Track content blocks with a running index.
# Each text block or tool_use block gets its own index.
@@ -671,6 +672,13 @@ async def openai_stream_to_anthropic_stream(openai_stream_generator, model: str
except (JSONCodec.JSONDecodeError, TypeError):
continue
+ error = data.get('error')
+ if error:
+ error_message = (
+ error.get('message') if isinstance(error, dict) else error
+ ) or 'Chat completion stream failed'
+ break
+
usage_data = data.get('usage')
if isinstance(usage_data, dict):
cache_creation = usage_data.get('cache_creation_input_tokens')
@@ -904,8 +912,18 @@ async def openai_stream_to_anthropic_stream(openai_stream_generator, model: str
}
stop_reason = stop_reason_map.get(finish_reason, 'end_turn')
+ if error_message:
+ break
+
except Exception as e:
log.error(f'Error in Anthropic stream conversion: {e}')
+ error_message = 'Chat completion stream failed'
+
+ # Skip message_stop so a failed stream is not reported as complete.
+ if error_message:
+ error_event = {'type': 'error', 'error': {'type': 'api_error', 'message': error_message}}
+ yield f'event: error\ndata: {JSONCodec.dumps(error_event)}\n\n'.encode()
+ return
# Close any open thinking block
if thinking_block_open:
diff --git a/backend/open_webui/utils/automations.py b/backend/open_webui/utils/automations.py
index 7df4c399aa56..be5d6868f1df 100644
--- a/backend/open_webui/utils/automations.py
+++ b/backend/open_webui/utils/automations.py
@@ -20,12 +20,10 @@
import os
import random
import time
-from datetime import datetime, timedelta
+from datetime import timedelta
from typing import Optional
from uuid import uuid4
-from zoneinfo import ZoneInfo
-from dateutil.rrule import HOURLY, MINUTELY, SECONDLY, rruleset, rrulestr
from fastapi import Request
from fastapi.security import HTTPAuthorizationCredentials
from open_webui.constants import ERROR_MESSAGES
@@ -39,6 +37,14 @@
from open_webui.models.users import Users
from open_webui.utils.auth import create_token
from open_webui.utils.misc import parse_duration
+from open_webui.utils.models import get_all_models
+from open_webui.utils.recurrence import (
+ _resolve_tz,
+ next_n_runs_ns,
+ next_run_ns,
+ rrule_interval_seconds,
+ validate_rrule,
+)
from open_webui.utils.task import prompt_template
from open_webui.utils.terminals import get_terminal_server_url
from starlette.datastructures import Headers
@@ -50,153 +56,6 @@
CALENDAR_ALERT_LOOKAHEAD_MINUTES = int(os.getenv('CALENDAR_ALERT_LOOKAHEAD_MINUTES', '10'))
-####################
-# RRULE Helpers
-####################
-
-
-def _resolve_tz(tz: str = None) -> Optional[ZoneInfo]:
- """Safely resolve a timezone string to ZoneInfo.
-
- Returns None (→ server-local fallback) when *tz* is empty, None,
- or an unrecognised IANA key. Logs a warning on bad keys so
- misconfiguration is visible in the server logs.
- """
- if not tz:
- return None
- try:
- return ZoneInfo(tz)
- except (KeyError, Exception):
- log.warning('Unknown timezone %r — falling back to server time', tz)
- return None
-
-
-def _parse_rule(s: str, now: Optional[datetime] = None):
- """Parse RRULE with clock-aligned DTSTART for sub-daily frequencies.
-
- SECONDLY/MINUTELY/HOURLY rules use a fixed epoch DTSTART (2000-01-01 00:00)
- so intervals snap to clock boundaries (e.g. every 5min = :00, :05, :10).
- """
- upper = s.upper()
- if 'EXRULE' in upper:
- raise ValueError('EXRULE is not supported in recurrence rules')
-
- parsed = rrulestr(s, ignoretz=True)
- rules = parsed._rrule if isinstance(parsed, rruleset) else [parsed]
- if len(rules) > 1:
- raise ValueError('only one RRULE is supported per recurrence rule')
-
- rule = rules[0]
- start = rule._dtstart.replace(tzinfo=None)
- anchor = now or datetime.now()
- lines = s.splitlines()
- stripped = '\n'.join(line for line in lines if not line.upper().startswith('DTSTART')) or s
- has_dtstart = any(line.upper().startswith('DTSTART') for line in lines)
- step = {
- SECONDLY: timedelta(seconds=rule._interval),
- MINUTELY: timedelta(minutes=rule._interval),
- HOURLY: timedelta(hours=rule._interval),
- }.get(rule._freq)
-
- if step is None:
- if not rule._dtstart.tzinfo:
- return parsed
- return rrulestr(stripped, dtstart=start, ignoretz=True)
-
- if rule._interval < 1:
- raise ValueError('RRULE INTERVAL must be a positive integer')
- dtstart = None
- if has_dtstart:
- emitted = ((anchor - start) // step) if anchor > start else 0
- emitted *= len(rule._byminute or (0,)) * len(rule._bysecond or (0,))
- if emitted <= 100_000:
- if rule._dtstart.tzinfo:
- dtstart = start
- else:
- return parsed
- if not has_dtstart or dtstart is None:
- epoch = datetime(2000, 1, 1)
- dtstart = epoch + ((anchor - epoch) // step) * step
-
- return rrulestr(stripped, dtstart=dtstart, ignoretz=True)
-
-
-def validate_rrule(s: str, tz: str = None) -> None:
- """Raise ValueError if the RRULE is malformed or exhausted.
-
- When *tz* is provided the "now" reference uses the user's local
- clock so that near-future schedules are not incorrectly rejected
- on servers whose system clock is ahead (e.g. UTC vs US timezones).
- """
- upper = s.upper()
- if 'COUNT=' in upper and 'DTSTART' not in upper:
- raise ValueError(ERROR_MESSAGES.AUTOMATION_COUNT_REQUIRES_DTSTART)
- zi = _resolve_tz(tz)
- now = datetime.now(zi).replace(tzinfo=None) if zi else datetime.now()
- try:
- rule = _parse_rule(s, now)
- except Exception as e:
- raise ValueError(ERROR_MESSAGES.AUTOMATION_INVALID_RRULE(e))
- if rule.after(now) is None:
- raise ValueError(ERROR_MESSAGES.AUTOMATION_NO_FUTURE_RUNS)
-
-
-def next_run_ns(s: str, tz: str = None) -> Optional[int]:
- """Next occurrence as epoch nanoseconds, respecting user timezone."""
- zi = _resolve_tz(tz)
- now = datetime.now(zi) if zi else datetime.now()
- now_naive = now.replace(tzinfo=None)
- dt = _parse_rule(s, now_naive).after(now_naive)
- if dt is None:
- return None
- if zi:
- dt = dt.replace(tzinfo=zi)
- return int(dt.timestamp() * 1_000_000_000)
-
-
-def next_n_runs_ns(s: str, n: int = 5, tz: str = None) -> list[int]:
- """Compute next N occurrences for UI preview.
-
- Uses the user's timezone for the starting "now" so that the
- preview matches the user's local clock (same as next_run_ns).
- """
- zi = _resolve_tz(tz)
- result = []
- now = datetime.now(zi).replace(tzinfo=None) if zi else datetime.now()
- rule = _parse_rule(s, now)
- dt = now
- for _ in range(n):
- dt = rule.after(dt)
- if not dt:
- break
- if zi:
- dt_tz = dt.replace(tzinfo=zi)
- result.append(int(dt_tz.timestamp() * 1_000_000_000))
- else:
- result.append(int(dt.timestamp() * 1_000_000_000))
- return result
-
-
-def rrule_interval_seconds(s: str) -> Optional[int]:
- """Approximate interval between recurrences in seconds.
-
- Returns None for one-shot (COUNT=1) schedules or rules
- with fewer than two future occurrences.
- """
- if 'COUNT=1' in s:
- return None
- s = '\n'.join(line for line in s.splitlines() if not line.upper().startswith('DTSTART')) or s
- now = datetime.now()
- rule = _parse_rule(s, now)
- first = rule.after(now)
- if first is None:
- return None
- second = rule.after(first)
- if second is None:
- return None
- return int((second - first).total_seconds())
-
-
############################
# Worker Loop
############################
@@ -532,6 +391,9 @@ async def execute_automation(app, automation: AutomationModel) -> None:
expires_delta=expires_delta or timedelta(hours=1),
)
+ if not app.state.MODELS:
+ await get_all_models(_build_request(app, token=token), user=user)
+
target = automation.data.get('target') or {}
if target.get('type') == 'channel':
await _execute_channel_automation(app, automation, user, prompt, model_id, token)
diff --git a/backend/open_webui/utils/calendar.py b/backend/open_webui/utils/calendar.py
index 1ce590203a7a..0406db38f6af 100644
--- a/backend/open_webui/utils/calendar.py
+++ b/backend/open_webui/utils/calendar.py
@@ -44,7 +44,7 @@ def to_local_datetime(timestamp_ns: int) -> dt.datetime:
original_start_ns = event_dict['start_at']
original_start = to_local_datetime(original_start_ns)
- rule_str = '\n'.join(line for line in rrule_str.splitlines() if not line.upper().startswith('DTSTART')) or rrule_str
+ rule_str = '\n'.join(part for part in rrule_str.split() if not part.upper().startswith('DTSTART')) or rrule_str
try:
# Anchor to the event's real start so day-of-week / day-of-month are correct
diff --git a/backend/open_webui/utils/chat.py b/backend/open_webui/utils/chat.py
index 0b64a52165c0..c97985dde4ac 100644
--- a/backend/open_webui/utils/chat.py
+++ b/backend/open_webui/utils/chat.py
@@ -23,9 +23,9 @@
process_pipeline_outlet_filter,
)
from open_webui.socket.main import (
+ EVENT_QUEUES,
get_event_call,
get_event_emitter,
- sio,
)
from open_webui.utils.filter import (
get_filter_functions,
@@ -33,7 +33,7 @@
)
from open_webui.utils.json_codec import JSONCodec
from open_webui.utils.models import check_model_access, get_all_models
-from open_webui.utils.payload import convert_payload_openai_to_ollama
+from open_webui.utils.payload import apply_system_prompt_to_body, convert_payload_openai_to_ollama
from open_webui.utils.response import (
convert_response_ollama_to_openai,
convert_streaming_response_ollama_to_openai,
@@ -71,19 +71,8 @@ async def generate_direct_chat_completion(
logging.info('WebSocket channel: %s', channel)
if form_data.get('stream'):
- q = asyncio.Queue()
-
- async def message_listener(sid, data):
- """
- Handle received socket messages and push them into the queue.
- """
- await q.put(data)
-
- def remove_message_listener():
- sio.handlers['/'].pop(channel, None)
-
- # Register the listener
- sio.on(channel, message_listener)
+ queue = asyncio.Queue()
+ EVENT_QUEUES[channel] = queue
# Start processing chat completion in background
try:
@@ -103,16 +92,15 @@ def remove_message_listener():
status = res.get('status', False)
except BaseException:
- remove_message_listener()
+ EVENT_QUEUES.pop(channel, None)
raise
if status:
# Define a generator to stream responses
async def event_generator():
- nonlocal q
try:
while True:
- data = await q.get() # Wait for new messages
+ data = await queue.get() # Wait for new messages
if isinstance(data, dict):
if 'done' in data and data['done']:
break # Stop streaming when 'done' is received
@@ -127,16 +115,16 @@ async def event_generator():
log.debug('Error in event generator: %s', e)
pass
finally:
- remove_message_listener()
+ EVENT_QUEUES.pop(channel, None)
# Define a background task to run the event generator
async def background():
- remove_message_listener()
+ EVENT_QUEUES.pop(channel, None)
# Return the streaming response
return StreamingResponse(event_generator(), media_type='text/event-stream', background=background)
else:
- remove_message_listener()
+ EVENT_QUEUES.pop(channel, None)
raise Exception(str(res))
else:
res = await event_caller(
@@ -293,6 +281,14 @@ async def stream_wrapper(stream):
# Below does not require bypass_filter because this is the only route the uses this function and it is already bypassing the filter
return await generate_function_chat_completion(request, form_data, user=user, models=models)
if model.get('owned_by') == 'ollama':
+ # Apply before Ollama conversion so tool follow-ups keep the model system prompt
+ if not bypass_system_prompt:
+ model_info = await Models.get_model_by_id(form_data['model'])
+ if model_info:
+ system = model_info.params.model_dump().get('system')
+ form_data = await apply_system_prompt_to_body(system, form_data, metadata, user)
+ request.state.bypass_system_prompt = True
+
# Using /ollama/api/chat endpoint
form_data = convert_payload_openai_to_ollama(form_data)
response = await generate_ollama_chat_completion(
diff --git a/backend/open_webui/utils/files.py b/backend/open_webui/utils/files.py
index f982da167554..e9c926e5f859 100644
--- a/backend/open_webui/utils/files.py
+++ b/backend/open_webui/utils/files.py
@@ -75,9 +75,16 @@ async def get_image_base64_from_url(url: str, user=None) -> Optional[str]:
# rebinding DNS answer that passed validate_url cannot reach an internal address.
async with get_ssrf_safe_session() as session:
async with session.get(
- url, ssl=AIOHTTP_CLIENT_SESSION_SSL, allow_redirects=AIOHTTP_CLIENT_ALLOW_REDIRECTS
+ url,
+ ssl=AIOHTTP_CLIENT_SESSION_SSL,
+ allow_redirects=AIOHTTP_CLIENT_ALLOW_REDIRECTS,
+ headers={'Accept-Encoding': 'identity'},
) as response:
response.raise_for_status()
+ # Accept-Encoding is only a request; the sender can still compress and pick our decompressed size.
+ encodings = response.headers.getall('Content-Encoding', ())
+ if any(encoding.lower() not in ('', 'identity') for encoding in encodings):
+ return None
image_data = bytearray()
total = 0
async for chunk in response.content.iter_chunked(64 * 1024):
diff --git a/backend/open_webui/utils/headers.py b/backend/open_webui/utils/headers.py
index 91cd0888348f..75368a43efda 100644
--- a/backend/open_webui/utils/headers.py
+++ b/backend/open_webui/utils/headers.py
@@ -5,7 +5,10 @@
from urllib.parse import quote
import jwt
+from fastapi import Request
from open_webui.env import (
+ ENABLE_FORWARD_USER_INFO_HEADERS,
+ FORWARD_SESSION_INFO_HEADER_CHAT_ID,
FORWARD_USER_INFO_HEADER_AUTH_TYPE,
FORWARD_USER_INFO_HEADER_JWT,
FORWARD_USER_INFO_HEADER_JWT_EXPIRES_SECONDS,
@@ -161,3 +164,87 @@ def parse_custom_headers(
parsed_headers[key] = quote(value, safe=punctuation + ' \t')
return parsed_headers
+
+
+async def get_headers_and_cookies(
+ request: Request,
+ url,
+ key=None,
+ config=None,
+ metadata: dict | None = None,
+ user=None,
+):
+ config = config or {}
+ cookies = getattr(request, 'cookies', {}) if config.get('forward_cookies', False) else {}
+ headers = {
+ 'Content-Type': 'application/json',
+ **(
+ {
+ # LICENSE covers this Open WebUI upstream metadata identifier.
+ # Do not alter, remove, obscure, or replace it except as LICENSE permits:
+ # https://docs.openwebui.com/license.
+ 'HTTP-Referer': 'https://openwebui.com/',
+ 'X-Title': 'Open WebUI',
+ }
+ if 'openrouter.ai' in url
+ else {}
+ ),
+ }
+
+ if ENABLE_FORWARD_USER_INFO_HEADERS and user:
+ headers = include_user_info_headers(headers, user, request=request)
+ if metadata and metadata.get('chat_id'):
+ headers[FORWARD_SESSION_INFO_HEADER_CHAT_ID] = metadata.get('chat_id')
+
+ token = None
+ auth_type = config.get('auth_type')
+
+ if auth_type == 'bearer' or auth_type is None:
+ # Default to bearer if not specified
+ token = key
+ elif auth_type == 'none':
+ token = None
+ elif auth_type == 'session':
+ token = request.state.token.credentials
+ elif auth_type == 'system_oauth':
+ oauth_token = None
+ try:
+ if request.cookies.get('oauth_session_id', None):
+ oauth_token = await request.app.state.oauth_manager.get_oauth_token(
+ user.id,
+ request.cookies.get('oauth_session_id', None),
+ )
+ except Exception as e:
+ log.error(f'Error getting OAuth token: {e}')
+
+ if oauth_token:
+ token = f'{oauth_token.get("access_token", "")}'
+
+ elif auth_type in ('azure_ad', 'microsoft_entra_id'):
+ token = get_microsoft_entra_id_access_token()
+
+ if token:
+ headers['Authorization'] = f'Bearer {token}'
+
+ if config.get('headers') and isinstance(config.get('headers'), dict):
+ custom_headers = await get_custom_headers(config.get('headers'), user, metadata, request=request)
+ headers.update(custom_headers)
+
+ return headers, cookies
+
+
+def get_microsoft_entra_id_access_token():
+ """
+ Get Microsoft Entra ID access token using DefaultAzureCredential for Azure OpenAI.
+ Returns the token string or None if authentication fails.
+ """
+ from azure.identity import DefaultAzureCredential, get_bearer_token_provider
+
+ try:
+ token_provider = get_bearer_token_provider(
+ DefaultAzureCredential(), 'https://cognitiveservices.azure.com/.default'
+ )
+ return token_provider()
+ except Exception as e:
+ log.error(f'Error getting Microsoft Entra ID access token: {e}')
+ return None
diff --git a/backend/open_webui/utils/images/comfyui.py b/backend/open_webui/utils/images/comfyui.py
index 11a0ebb8febf..6447a69f88b9 100644
--- a/backend/open_webui/utils/images/comfyui.py
+++ b/backend/open_webui/utils/images/comfyui.py
@@ -91,6 +91,7 @@ async def _ws_get_images(ws, workflow, client_id, base_url, api_key):
node_output = history['outputs'][node_id]
if node_id in workflow and workflow[node_id].get('class_type') in [
'SaveImage',
+ 'SaveImageAdvanced',
'PreviewImage',
]:
if 'images' in node_output:
diff --git a/backend/open_webui/utils/memory.py b/backend/open_webui/utils/memory.py
index 96eb28a6e1ca..1308c44dd823 100644
--- a/backend/open_webui/utils/memory.py
+++ b/backend/open_webui/utils/memory.py
@@ -8,6 +8,7 @@
from fastapi import HTTPException
from open_webui.models.config import Config
from open_webui.models.memories import Memories
+from open_webui.utils.access_control import has_permission
from open_webui.utils.json_codec import JSONCodec
from open_webui.utils.misc import add_or_update_system_message, get_content_from_message
@@ -428,10 +429,12 @@ async def review_memory_after_turn(
return
config = await Config.get_many(
+ 'memories.enable',
'memories.background_review.enable',
'memories.review_interval_turns',
+ 'user.permissions',
)
- if not config.get('memories.background_review.enable'):
+ if not config.get('memories.enable') or not config.get('memories.background_review.enable'):
return
try:
@@ -443,6 +446,10 @@ async def review_memory_after_turn(
if user_turns == 0 or user_turns % interval != 0:
return
+ # features is client-supplied; re-check the permission the memory routes enforce.
+ if user.role != 'admin' and not await has_permission(user.id, 'features.memories', config.get('user.permissions')):
+ return
+
task = asyncio.create_task(
_review_memory(
request=request,
diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py
index ad784658c8fa..6a3e4b6f5b3e 100644
--- a/backend/open_webui/utils/middleware.py
+++ b/backend/open_webui/utils/middleware.py
@@ -115,6 +115,7 @@
get_last_user_message_item,
get_message_list,
get_output_text,
+ get_paired_tool_call_ids,
get_response_error_detail,
get_reasoning_details,
get_system_message,
@@ -509,6 +510,7 @@ def get_citation_source_from_tool_result(
},
'document': [],
'metadata': [],
+ 'distances': [],
}
sources_by_file[key]['document'].append(content)
@@ -520,6 +522,8 @@ def get_citation_source_from_tool_result(
**({'note_id': note_id} if note_id else {}),
}
)
+ if 'distance' in chunk:
+ sources_by_file[key]['distances'].append(chunk['distance'])
# Return all grouped sources as a list
if sources_by_file:
@@ -933,6 +937,9 @@ def handle_responses_streaming_event(
error = data.get('response', {}).get('error', {})
return current_output, {'error': error}
+ elif event_type == 'error':
+ return current_output, {'error': data}
+
else:
return current_output, None
@@ -1195,7 +1202,6 @@ async def process_tool_result(
'chat_id': metadata.get('chat_id', None),
'message_id': metadata.get('message_id', None),
'session_id': metadata.get('session_id', None),
- 'result': item,
},
user,
)
@@ -1768,19 +1774,10 @@ async def get_image_urls(delta_images, request, metadata, user) -> list[str]:
return image_urls
-async def add_file_context(messages: list, chat_id: str, user) -> list:
+def add_file_context(messages: list) -> list:
"""
Add file URLs to messages for native function calling.
"""
- if not is_saved_chat_id(chat_id):
- return messages
-
- chat = await Chats.get_chat_by_id_and_user_id(chat_id, user.id)
- if not chat:
- return messages
-
- history = chat.chat.get('history', {})
- stored_messages = get_message_list(history.get('messages', {}), history.get('currentId'))
def format_file_tag(file):
# Every file reaching here has a url or a chat id, so id is always set.
@@ -1793,20 +1790,13 @@ def format_file_tag(file):
attrs += f' name="{file["name"]}"'
return f''
- # Pair only user-role messages from both lists to avoid misalignment.
- # After process_messages_with_output(), assistant messages with tool calls
- # are expanded into multiple messages (assistant + tool results), making
- # the payload message list longer than the stored message list. A naive
- # positional zip() would pair user messages with wrong stored messages,
- # causing later images to lose their file context (see #21878).
- user_messages = [m for m in messages if m.get('role') == 'user']
- stored_user_messages = [m for m in stored_messages if m.get('role') == 'user']
-
- for message, stored_message in zip(user_messages, stored_user_messages):
+ for message in messages:
+ if message.get('role') != 'user':
+ continue
# Chat references carry no url - they are addressed by id via view_chat.
attached_files = [
file
- for file in stored_message.get('files', [])
+ for file in message.get('files', [])
if (file.get('url') and not file.get('url').startswith('data:'))
or (file.get('type') == 'chat' and file.get('id'))
]
@@ -2237,7 +2227,9 @@ async def load_messages_from_db(chat_id: str, message_id: str) -> Optional[list[
return [
{k: v for k, v in msg.items() if k in MESSAGE_REPLAY_KEYS}
for msg in db_messages
- if not (msg.get('role') == 'assistant' and msg.get('error') and not msg.get('content') and not msg.get('output'))
+ if not (
+ msg.get('role') == 'assistant' and msg.get('error') and not msg.get('content') and not msg.get('output')
+ )
]
@@ -2269,6 +2261,7 @@ def strip_reasoning_details(output: list) -> list:
def process_messages_with_output(
messages: list[dict],
reasoning_format: str | None = None,
+ include_file_context: bool = False,
) -> list[dict]:
"""
Process messages with OR-aligned output items for LLM consumption.
@@ -2294,33 +2287,25 @@ def process_messages_with_output(
continue
clean_message = dict(message)
- for key in ('id', 'files', 'output', 'model', 'contextSummary', 'context_summary', 'usage'):
+ for key in ('id', 'output', 'model', 'contextSummary', 'context_summary', 'usage'):
clean_message.pop(key, None)
processed.append(clean_message)
+ if include_file_context:
+ add_file_context(processed)
+ for message in processed:
+ message.pop('files', None)
+
return processed
def sanitize_tool_pairs(messages: list[dict]) -> list[dict]:
- tool_result_ids = {
- message.get('tool_call_id')
- for message in messages
- if message.get('role') == 'tool' and message.get('tool_call_id')
- }
-
- tool_call_ids = {
- tool_call.get('id')
- for message in messages
- for tool_call in (message.get('tool_calls') or [])
- if message.get('role') == 'assistant' and tool_call.get('id')
- }
+ paired_ids_by_message = get_paired_tool_call_ids(messages)
sanitized = []
- for message in messages:
+ for message, paired_ids in zip(messages, paired_ids_by_message):
if message.get('role') == 'assistant' and message.get('tool_calls'):
- kept = [
- tool_call for tool_call in message.get('tool_calls') or [] if tool_call.get('id') in tool_result_ids
- ]
+ kept = [tool_call for tool_call in message.get('tool_calls') or [] if tool_call.get('id') in paired_ids]
if kept:
sanitized.append({**message, 'tool_calls': kept})
else:
@@ -2329,14 +2314,12 @@ def sanitize_tool_pairs(messages: list[dict]) -> list[dict]:
clean.pop('reasoning_items', None)
if clean.get('content'):
sanitized.append(clean)
- elif message.get('role') != 'tool' or message.get('tool_call_id') in tool_call_ids:
+ elif message.get('role') != 'tool' or message.get('tool_call_id') in paired_ids:
sanitized.append(message)
return sanitized
-
-
async def connect_mcp_server(
request,
server_id: str,
@@ -2439,6 +2422,17 @@ async def process_chat_payload(request, form_data, user, metadata, model):
# which the frontend strips, causing tool calls to be merged into content.
chat_id = metadata.get('chat_id')
user_message_id = metadata.get('user_message_id')
+ payload_tools = form_data.get('tools', None) # snapshot before filters
+ chat = await Chats.get_chat_by_id(chat_id) if is_saved_chat_id(chat_id) else None
+ is_note_chat = bool(chat and (chat.meta or {}).get('internal') is True and (chat.meta or {}).get('type') == 'note')
+ use_builtin_tools = is_note_chat or (
+ bool(metadata.get('session_id'))
+ and metadata.get('params', {}).get('function_calling') != 'legacy'
+ and (model.get('info', {}).get('meta', {}).get('capabilities') or {}).get('builtin_tools', True)
+ )
+ metadata['include_file_context'] = bool(
+ chat and chat.user_id == user.id and payload_tools is None and use_builtin_tools
+ )
if is_saved_chat_id(chat_id) and user_message_id:
db_messages = await load_messages_from_db(chat_id, user_message_id)
@@ -2475,8 +2469,6 @@ async def process_chat_payload(request, form_data, user, metadata, model):
if f.get('url')
],
]
- # Strip files field — it's been incorporated into content
- message.pop('files', None)
if regeneration_prompt:
form_data['messages'].append({'role': 'user', 'content': regeneration_prompt})
@@ -2512,6 +2504,10 @@ async def process_chat_payload(request, form_data, user, metadata, model):
except Exception:
log.exception('Context compaction failed; continuing with full chat history')
+ metadata['context_start_message_id'] = next(
+ (message.get('id') for message in form_data.get('messages', []) if message.get('role') != 'system'), None
+ )
+
# Process messages with OR-aligned output items for clean LLM messages
for message in form_data.get('messages', []):
output = message.get('output')
@@ -2523,6 +2519,7 @@ async def process_chat_payload(request, form_data, user, metadata, model):
form_data['messages'] = process_messages_with_output(
form_data.get('messages', []),
reasoning_format=get_reasoning_format(model),
+ include_file_context=metadata['include_file_context'],
)
form_data['messages'] = sanitize_tool_pairs(form_data['messages'])
@@ -2644,7 +2641,6 @@ async def process_chat_payload(request, form_data, user, metadata, model):
form_data['files'] = files
variables = form_data.pop('variables', None)
- payload_tools = form_data.get('tools', None) # snapshot before filters
# Process the form_data through the pipeline
try:
@@ -2777,12 +2773,6 @@ async def process_chat_payload(request, form_data, user, metadata, model):
available_skills = []
terminal_skills = []
view_skill_ids = []
- chat = None
- if is_saved_chat_id(metadata.get('chat_id')):
- chat = await Chats.get_chat_by_id(metadata['chat_id'])
-
- is_note_chat = bool(chat and (chat.meta or {}).get('internal') is True and (chat.meta or {}).get('type') == 'note')
-
if is_note_chat:
note_id = (chat.meta or {}).get('note_id')
note = await Notes.get_note_by_id(note_id) if note_id else None
@@ -2806,20 +2796,12 @@ async def process_chat_payload(request, form_data, user, metadata, model):
if note_files:
files = [*(files or []), *note_files]
- use_builtin_tools = is_note_chat or (
- bool(metadata.get('session_id'))
- and metadata.get('params', {}).get('function_calling') != 'legacy'
- and (model.get('info', {}).get('meta', {}).get('capabilities') or {}).get('builtin_tools', True)
- )
-
if skill_ids or use_builtin_tools:
- import aiohttp
- from open_webui.env import AIOHTTP_CLIENT_SESSION_TOOL_SERVER_SSL, AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER_DATA
from open_webui.models.skills import Skills as SkillsModel
from open_webui.utils.terminals import (
format_terminal_skill_context,
format_terminal_skill_manifest_entry,
- get_terminal_request_info,
+ get_terminal_json,
get_terminal_skill,
)
@@ -2853,45 +2835,34 @@ async def process_chat_payload(request, form_data, user, metadata, model):
f'{skill.description or ""}\n\n'
)
- terminal_request = (
- await get_terminal_request_info(request, user, metadata, extra_params) if terminal_id or terminal_skill_ids else None
+ listed = (
+ await get_terminal_json(request, user, metadata, '/skills', extra_params)
+ if terminal_id or terminal_skill_ids
+ else None
)
- listed_terminal_skills = []
- if terminal_request:
- terminal_base_url, terminal_headers, terminal_cookies = terminal_request
- timeout = aiohttp.ClientTimeout(total=AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER_DATA)
- async with aiohttp.ClientSession(timeout=timeout, trust_env=True) as session:
- async with session.get(
- f'{terminal_base_url.rstrip("/")}/skills',
- headers=terminal_headers,
- cookies=terminal_cookies,
- ssl=AIOHTTP_CLIENT_SESSION_TOOL_SERVER_SSL,
- ) as response:
- if response.status == 200:
- listed = await response.json()
- listed_terminal_skills = listed if isinstance(listed, list) else []
-
- if terminal_id and use_builtin_tools:
- terminal_skills = listed_terminal_skills
- elif terminal_skill_ids:
- terminal_skill_map = {skill['id']: skill for skill in listed_terminal_skills}
- terminal_skills = [skill for sid in terminal_skill_ids if (skill := terminal_skill_map.get(sid))]
-
- for skill in terminal_skills:
- sid = skill['id']
- if sid in mentioned_skill_ids or not use_builtin_tools:
- skill_name = unquote(sid.removeprefix(terminal_skill_prefix))
- loaded = await get_terminal_skill(request, user.model_dump(), metadata, skill_name, extra_params)
- if loaded:
- form_data['messages'] = add_or_update_system_message(
- format_terminal_skill_context(loaded),
- form_data['messages'],
- append=True,
- )
- else:
- view_skill_ids.append(sid)
- skill_manifest += format_terminal_skill_manifest_entry(skill)
+ listed_terminal_skills = listed if isinstance(listed, list) else []
+
+ if terminal_id and use_builtin_tools:
+ terminal_skills = listed_terminal_skills
+ elif terminal_skill_ids:
+ terminal_skill_map = {skill['id']: skill for skill in listed_terminal_skills}
+ terminal_skills = [skill for sid in terminal_skill_ids if (skill := terminal_skill_map.get(sid))]
+
+ for skill in terminal_skills:
+ sid = skill['id']
+ if sid in mentioned_skill_ids or not use_builtin_tools:
+ skill_name = unquote(sid.removeprefix(terminal_skill_prefix))
+ loaded = await get_terminal_skill(request, user.model_dump(), metadata, skill_name, extra_params)
+ if loaded:
+ form_data['messages'] = add_or_update_system_message(
+ format_terminal_skill_context(loaded),
+ form_data['messages'],
+ append=True,
+ )
+ else:
+ view_skill_ids.append(sid)
+ skill_manifest += format_terminal_skill_manifest_entry(skill)
if skill_manifest:
form_data['messages'] = add_or_update_system_message(
@@ -3062,6 +3033,8 @@ async def tool_function(**kwargs):
for tool_server in direct_tool_servers:
if tool_server.get('is_terminal') is True and not terminal_capability:
continue
+ # Copy so the pops below keep metadata intact for sub-agents and approval resumes
+ tool_server = dict(tool_server)
system_prompt = tool_server.pop('system_prompt', None)
if system_prompt:
form_data['messages'] = add_or_update_system_message(
@@ -3093,10 +3066,6 @@ async def tool_function(**kwargs):
# Only inject when the request originates from the UI (identified by session_id).
# API callers don't expect hidden tools; they can explicitly request tools via tool_ids.
if use_builtin_tools:
- # Add file context to user messages
- chat_id = metadata.get('chat_id')
- form_data['messages'] = await add_file_context(form_data.get('messages', []), chat_id, user)
-
if (model.get('info', {}).get('meta', {}).get('builtinTools') or {}).get('knowledge', True):
from html import escape
@@ -3483,6 +3452,8 @@ async def drain_approved_tool_calls(request, form_data, user, model, metadata) -
output_parts.append({'type': 'input_image', 'image_url': image_url})
else:
display_files.append(file_item)
+ if file_item.get('type') == 'image' and file_item.get('url'):
+ output_parts.append({'type': 'input_image', 'image_url': file_item['url']})
output.append(
{
@@ -3556,6 +3527,11 @@ async def drain_approved_tool_calls(request, form_data, user, model, metadata) -
assistant_message = await Chats.get_message_by_id_and_message_id(chat_id, message_id)
if assistant_message:
db_messages.append({k: v for k, v in assistant_message.items() if k in MESSAGE_REPLAY_KEYS})
+ context_start_message_id = metadata.get('context_start_message_id')
+ start_index = next(
+ (index for index, message in enumerate(db_messages) if message.get('id') == context_start_message_id), 0
+ )
+ db_messages = db_messages[start_index:]
for message in db_messages:
output = message.get('output')
# reasoning_details can be model/provider-bound, so only replay them
@@ -3567,9 +3543,11 @@ async def drain_approved_tool_calls(request, form_data, user, model, metadata) -
):
message['output'] = strip_reasoning_details(output)
+ system_message = get_system_message(form_data.get('messages', []))
form_data['messages'] = process_messages_with_output(
- db_messages,
+ [system_message, *db_messages] if system_message else db_messages,
reasoning_format=get_reasoning_format(model),
+ include_file_context=metadata.get('include_file_context', False),
)
form_data['messages'] = sanitize_tool_pairs(form_data['messages'])
@@ -3624,7 +3602,7 @@ async def pause_for_tool_approval(chat_id: str, message_id: str, output: list[di
if not has_pending_approval:
item['status'] = 'pending'
has_pending_approval = True
- elif item.get('status') == 'in_progress':
+ elif item.get('status') in {'in_progress', 'completed'}:
item['status'] = 'queued'
await Chats.upsert_message_to_chat_by_id_and_message_id(
@@ -3860,7 +3838,7 @@ async def background_tasks_handler(ctx):
if isinstance(content, str):
content = re.sub(
- r']*>.*?<\/details>|!\[.*?\]\(.*?\)',
+ r']*>(?:(?!|!\[[^\[\]]*\]\([^()]*\)',
'',
content,
flags=re.S | re.I,
@@ -3991,7 +3969,7 @@ async def background_tasks_handler(ctx):
await event_emitter(
{
'type': 'chat:title',
- 'data': message.get('content', user_message),
+ 'data': title,
}
)
@@ -4035,7 +4013,7 @@ async def background_tasks_handler(ctx):
await review_memory_after_turn(
request=request,
user=user,
- model=ctx['model'],
+ model=ctx.get('model'),
metadata=metadata,
form_data=form_data,
assistant_message=ctx.get('assistant_message') or {},
@@ -4561,7 +4539,7 @@ def get_tag_boundaries(item, text, scanned_length):
last_type = output[-1].get('type', '') if output else ''
- if last_type == 'message':
+ if last_type == 'message' and output[-1].get('_tag_type') != content_type:
# Use the output item's own text for tag detection
item = output[-1]
item_text = get_last_text(output)
@@ -4691,14 +4669,14 @@ def get_tag_boundaries(item, text, scanned_length):
# Strip start and end tags from content
start_tag_pattern = _start_tag_pattern(start_tag)
- block_content = re.sub(start_tag_pattern, '', block_content).strip()
+ block_content = re.sub(start_tag_pattern, '', block_content)
end_tag_pattern = rf'{re.escape(end_tag)}'
end_tag_regex = re.compile(end_tag_pattern, re.DOTALL)
split_content = end_tag_regex.split(block_content, maxsplit=1)
block_content = split_content[0].strip() if split_content else ''
- leftover_content = split_content[1].strip() if len(split_content) > 1 else ''
+ leftover_content = split_content[1].lstrip() if len(split_content) > 1 else ''
if block_content:
# Update the item with final content
@@ -4974,6 +4952,14 @@ def get_response_data_with_full_output_index(response_data: dict):
**response_data,
'output_index': response_data['output_index'] + len(prior_output),
}
+ if prior_output and isinstance(response_data.get('response'), dict):
+ # response.output is this round only; the response.completed reducer drops earlier rounds
+ return {
+ **response_data,
+ 'response': {
+ key: value for key, value in response_data['response'].items() if key != 'output'
+ },
+ }
return response_data
async def flush_pending_delta_data(threshold: int = 0):
@@ -5117,8 +5103,8 @@ async def emit_response_completion_event(response_data: dict, stream_output: lis
'data': data,
}
)
- # Check for Responses API events (type field starts with "response.")
- elif data.get('type', '').startswith('response.'):
+ # Check for Responses API events
+ elif data.get('type', '').startswith('response.') or data.get('type', '') == 'error':
response_data_type = data.get('type', '')
response_data_is_delta = response_data_type.endswith('.delta')
output, response_metadata = handle_responses_streaming_event(data, output)
@@ -5177,6 +5163,20 @@ async def emit_response_completion_event(response_data: dict, stream_output: lis
response_metadata['usage'] = usage
if response_metadata.get('error'):
+ log.error(
+ 'Provider returned error (streaming): %s', response_metadata['error']
+ )
+ if save_to_chat:
+ try:
+ await Chats.upsert_message_to_chat_by_id_and_message_id(
+ metadata['chat_id'],
+ metadata['message_id'],
+ {
+ 'error': {'content': response_metadata['error']},
+ },
+ )
+ except Exception:
+ pass
await event_emitter(
{
'type': 'chat:completion',
@@ -5808,6 +5808,7 @@ async def emit_response_completion_event(response_data: dict, stream_output: lis
if responses_api_tool_calls:
tool_calls.append(_split_tool_calls(responses_api_tool_calls))
+ output_start = len(prior_output)
try:
await stream_body_handler(response, form_data)
finally:
@@ -5839,6 +5840,42 @@ async def emit_response_completion_event(response_data: dict, stream_output: lis
get_content_from_message(original_system_message) if original_system_message else None
)
+ async def emit_output():
+ # Channels publish whole messages; Continue can merge into the preceding item.
+ snapshot = continuing or (metadata.get('chat_id') or '').startswith('channel:')
+ frontend_output = []
+ for item in full_output() if snapshot else full_output()[output_start:]:
+ if item.get('type') == 'function_call_output':
+ # input_image parts are for the LLM only, via convert_output_to_messages
+ item = {
+ **item,
+ 'output': [
+ part for part in item.get('output', []) if part.get('type') != 'input_image'
+ ],
+ }
+ frontend_output.append(item)
+
+ if snapshot:
+ await event_emitter(
+ {
+ 'type': 'chat:completion',
+ 'data': {'output': frontend_output, 'flush': True},
+ }
+ )
+ return
+
+ for output_index, item in enumerate(frontend_output, start=output_start):
+ await event_emitter(
+ {
+ 'type': 'response:completion',
+ 'data': {
+ 'type': 'response.output_item.done',
+ 'output_index': output_index,
+ 'item': item,
+ },
+ }
+ )
+
while tool_calls and (
max_tool_call_iterations is None or tool_call_iterations < max_tool_call_iterations
):
@@ -5906,14 +5943,7 @@ async def emit_response_completion_event(response_data: dict, stream_output: lis
)
return
- await event_emitter(
- {
- 'type': 'chat:completion',
- 'data': {
- 'output': full_output(),
- },
- }
- )
+ await emit_output()
tools = metadata.get('tools', {})
@@ -6085,8 +6115,7 @@ async def execute_tool_call(tool_call):
)
result_status_by_call_id[result.get('tool_call_id', '')] = local_output_status
- # Separate image data URIs (for LLM via input_image) from
- # other files (for frontend display via files attribute).
+ # Data-URI images: LLM only. File-URL images: LLM and frontend. Other files: frontend.
display_files = []
for file_item in result.get('files', []):
if file_item.get('type') == 'image' and file_item.get('url', '').startswith('data:'):
@@ -6094,8 +6123,9 @@ async def execute_tool_call(tool_call):
image_url = await store_tool_result_image(request, file_item['url'], metadata, user)
output_parts.append({'type': 'input_image', 'image_url': image_url})
else:
- # Frontend display (MCP images, audio, etc.)
display_files.append(file_item)
+ if file_item.get('type') == 'image' and file_item.get('url'):
+ output_parts.append({'type': 'input_image', 'image_url': file_item['url']})
output.append(
{
@@ -6180,25 +6210,7 @@ async def execute_tool_call(tool_call):
)
tool_call_sources.clear()
- # Strip input_image parts (large base64 data URIs) from the
- # output sent to the frontend — they're only for LLM consumption
- # via convert_output_to_messages.
- frontend_output = []
- for item in full_output():
- if item.get('type') == 'function_call_output':
- parts = item.get('output', [])
- if any(p.get('type') == 'input_image' for p in parts):
- item = {**item, 'output': [p for p in parts if p.get('type') != 'input_image']}
- frontend_output.append(item)
-
- await event_emitter(
- {
- 'type': 'chat:completion',
- 'data': {
- 'output': frontend_output,
- },
- }
- )
+ await emit_output()
try:
new_form_data = {
@@ -6297,6 +6309,7 @@ async def execute_tool_call(tool_call):
if not msg_parts or (len(msg_parts) == 1 and not msg_parts[0].get('text', '').strip()):
prior_output.pop()
output = []
+ output_start = len(prior_output)
await stream_body_handler(res, new_form_data)
output = full_output()
prior_output = []
diff --git a/backend/open_webui/utils/misc.py b/backend/open_webui/utils/misc.py
index ad959d3bc790..5c5dcce3a6c4 100644
--- a/backend/open_webui/utils/misc.py
+++ b/backend/open_webui/utils/misc.py
@@ -261,6 +261,26 @@ def get_output_text(output: list | None) -> str:
return '\n'.join(texts)
+def get_paired_tool_call_ids(messages: list[dict]) -> list[set[str]]:
+ """Tool call ids answered within each message's assistant-plus-tool-results block."""
+ paired_ids_by_message = [set() for _ in messages]
+ for index, message in enumerate(messages):
+ if message.get('role') != 'assistant' or not message.get('tool_calls'):
+ continue
+
+ block_end = index + 1
+ while block_end < len(messages) and messages[block_end].get('role') == 'tool':
+ block_end += 1
+
+ requested_ids = {tool_call.get('id') for tool_call in message['tool_calls'] if tool_call.get('id')}
+ completed_ids = {tool_message.get('tool_call_id') for tool_message in messages[index + 1 : block_end]}
+ paired_ids = requested_ids & completed_ids
+ for block_index in range(index, block_end):
+ paired_ids_by_message[block_index] = paired_ids
+
+ return paired_ids_by_message
+
+
def reconcile_tool_pairs(messages: list[dict]) -> list[dict]:
"""Drop unpaired tool_use / tool_result from a reconstructed conversation.
@@ -271,22 +291,14 @@ def reconcile_tool_pairs(messages: list[dict]) -> list[dict]:
Well-formed output is unaffected: every id pairs, so nothing is stripped.
"""
- completed_tool_call_ids = {
- message['tool_call_id'] for message in messages if message.get('role') == 'tool' and message.get('tool_call_id')
- }
- requested_tool_call_ids = {
- tool_call['id']
- for message in messages
- for tool_call in message.get('tool_calls') or ()
- if message.get('role') == 'assistant' and tool_call.get('id')
- }
+ paired_ids_by_message = get_paired_tool_call_ids(messages)
reconciled_messages = []
- for message in messages:
+ for message, paired_ids in zip(messages, paired_ids_by_message):
role = message.get('role')
- # Orphan tool result — no assistant ever claimed this call_id.
- if role == 'tool' and message.get('tool_call_id') not in requested_tool_call_ids:
+ # Orphan tool result: not claimed by the assistant heading its tool block.
+ if role == 'tool' and message.get('tool_call_id') not in paired_ids:
continue
# Non-assistant or no tool_calls — pass through unchanged.
@@ -294,10 +306,8 @@ def reconcile_tool_pairs(messages: list[dict]) -> list[dict]:
reconciled_messages.append(message)
continue
- # Keep only tool_calls whose id received a tool-role response.
- valid_tool_calls = [
- tool_call for tool_call in message['tool_calls'] if tool_call.get('id') in completed_tool_call_ids
- ]
+ # Keep only tool_calls whose id received an adjacent tool-role response.
+ valid_tool_calls = [tool_call for tool_call in message['tool_calls'] if tool_call.get('id') in paired_ids]
if valid_tool_calls:
reconciled_messages.append({**message, 'tool_calls': valid_tool_calls})
diff --git a/backend/open_webui/utils/models.py b/backend/open_webui/utils/models.py
index 3926bfa9be7e..2ac1ba7c514a 100644
--- a/backend/open_webui/utils/models.py
+++ b/backend/open_webui/utils/models.py
@@ -19,7 +19,7 @@
from open_webui.models.users import UserModel
from open_webui.routers import ollama, openai
from open_webui.socket.utils import RedisDict
-from open_webui.utils.access_control import has_access, has_base_model_access
+from open_webui.utils.access_control import has_arena_model_access, has_base_model_access
from open_webui.utils.json_codec import JSONCodec
from open_webui.utils.plugin import (
get_functions_cache,
@@ -182,11 +182,23 @@ async def get_all_models(request, refresh: bool = False, user: UserModel = None)
if model:
if custom_model.is_active:
+ arena_meta = model['info']['meta'] if model.get('arena') else None
model['name'] = custom_model.name
model['info'] = custom_model.model_dump()
+ if arena_meta:
+ # Evaluation config owns arena access grants and model_ids
+ model['info']['meta'].update(
+ {
+ key: arena_meta[key]
+ for key in ('access_grants', 'model_ids', 'filter_mode')
+ if key in arena_meta
+ }
+ )
schema = get_chat_variables_schema(custom_model.params.model_dump().get('system'))
if schema:
model['info'].setdefault('meta', {})['chat_variables_schema'] = schema
+ elif isinstance(model['info'].get('meta'), dict):
+ model['info']['meta'].pop('chat_variables_schema', None)
action_ids = []
filter_ids = []
@@ -239,6 +251,8 @@ async def get_all_models(request, refresh: bool = False, user: UserModel = None)
schema = get_chat_variables_schema(custom_model.params.model_dump().get('system'))
if schema:
info.setdefault('meta', {})['chat_variables_schema'] = schema
+ elif isinstance(info.get('meta'), dict):
+ info['meta'].pop('chat_variables_schema', None)
if 'params' in info:
# Remove params to avoid exposing sensitive info
del info['params']
@@ -460,14 +474,7 @@ def get_action_priority(action_id):
async def check_model_access(user, model, model_info=None, db=None):
if model.get('arena'):
- meta = model.get('info', {}).get('meta', {})
- access_grants = meta.get('access_grants', [])
- if not await has_access(
- user.id,
- permission='read',
- access_grants=access_grants,
- db=db,
- ):
+ if not await has_arena_model_access(user, model, db=db):
log.warning(
'Model access denied: user_id=%r model_id=%r reason=arena_read_denied',
user.id,
@@ -545,13 +552,11 @@ async def get_filtered_models(models, user, db=None):
filtered_models = []
for model in models:
if model.get('arena'):
- meta = model.get('info', {}).get('meta', {})
- access_grants = meta.get('access_grants', [])
- if await has_access(
- user.id,
- permission='read',
- access_grants=access_grants,
+ if await has_arena_model_access(
+ user,
+ model,
user_group_ids=user_group_ids,
+ db=db,
):
filtered_models.append(model)
continue
diff --git a/backend/open_webui/utils/oauth.py b/backend/open_webui/utils/oauth.py
index 10dedb1e6c1a..061737a35b19 100644
--- a/backend/open_webui/utils/oauth.py
+++ b/backend/open_webui/utils/oauth.py
@@ -72,6 +72,7 @@
ENABLE_OAUTH_ID_TOKEN_COOKIE,
OAUTH_CLIENT_INFO_ENCRYPTION_KEY,
OAUTH_MAX_SESSIONS_PER_USER,
+ REDIS_KEY_PREFIX,
WEBUI_AUTH_COOKIE_SAME_SITE,
WEBUI_AUTH_COOKIE_SECURE,
)
@@ -188,7 +189,7 @@ def _default_value(value):
return getattr(value, 'value', value)
-def _get_roles_claim(claims: dict, claim: str) -> list | str | int | None:
+def _get_claim(claims: dict, claim: str) -> list | str | int | None:
"""Read nested or flat claims, preserving explicit empty values and zero."""
value = claims
for key in claim.split('.'):
@@ -351,6 +352,19 @@ def is_in_blocked_groups(group_name: str, groups: list) -> bool:
return False
+def _parse_blocked_groups(value) -> list[str]:
+ """Accept JSON arrays, persisted lists, and comma-separated admin input."""
+ if isinstance(value, str):
+ try:
+ parsed = JSONCodec.loads(value)
+ except JSONCodec.JSONDecodeError:
+ parsed = None
+ value = parsed if isinstance(parsed, list) else [group.strip() for group in value.split(',')]
+ if not isinstance(value, list):
+ return []
+ return [group for group in value if isinstance(group, str) and group]
+
+
def get_parsed_and_base_url(server_url) -> tuple[urllib.parse.ParseResult, str]:
parsed = urllib.parse.urlparse(server_url)
base_url = f'{parsed.scheme}://{parsed.netloc}'
@@ -598,6 +612,8 @@ async def get_oauth_client_info_with_dynamic_client_registration(
oauth_client_info = OAuthClientInformationFull.model_validate(
{
**registration_response_json,
+ # RFC 7591: the server may omit scope; keep the requested one.
+ 'scope': registration_response_json.get('scope') or oauth_client_metadata.scope,
'issuer': oauth_server_metadata_url,
'server_metadata': oauth_server_metadata,
'resource': resource,
@@ -785,10 +801,7 @@ def build_oauth_request_params(client_info: OAuthClientInformationFull | None) -
return params
-async def recover_static_oauth_client_metadata(connection: dict, oauth_client_info: dict) -> dict:
- if connection.get('auth_type') != 'oauth_2.1_static':
- return oauth_client_info
-
+async def recover_oauth_client_metadata(connection: dict, oauth_client_info: dict) -> dict:
if oauth_client_info.get('scope') and oauth_client_info.get('resource'):
return oauth_client_info
@@ -799,13 +812,13 @@ async def recover_static_oauth_client_metadata(connection: dict, oauth_client_in
try:
resource_metadata = await get_protected_resource_metadata(server_url)
except Exception as e:
- log.debug('Unable to recover static OAuth metadata for %s: %s', server_url, e)
+ log.debug('Unable to recover OAuth metadata for %s: %s', server_url, e)
return oauth_client_info
recovered = {**oauth_client_info}
if not recovered.get('scope') and resource_metadata.scopes_supported:
recovered['scope'] = ' '.join(resource_metadata.scopes_supported)
- log.info('Recovered static OAuth scopes for %s from protected resource metadata', server_url)
+ log.info('Recovered OAuth scopes for %s from protected resource metadata', server_url)
if not recovered.get('resource') and resource_metadata.resource:
recovered['resource'] = resource_metadata.resource
@@ -902,7 +915,7 @@ async def ensure_client_from_config(self, client_id):
try:
oauth_client_info = resolve_oauth_client_info(connection)
- oauth_client_info = await recover_static_oauth_client_metadata(connection, oauth_client_info)
+ oauth_client_info = await recover_oauth_client_metadata(connection, oauth_client_info)
oauth_client_info = apply_connection_oauth_options(connection, oauth_client_info)
return self.add_client(expected_client_id, OAuthClientInformationFull(**oauth_client_info))['client']
except InvalidToken:
@@ -1320,6 +1333,7 @@ def __init__(self, app):
self.app = app
self._clients = {}
+ self._refresh_locks: dict[str, asyncio.Lock] = {}
for name, provider_config in OAUTH_PROVIDERS.items():
if 'register' not in provider_config:
@@ -1415,22 +1429,35 @@ async def _refresh_token(self, session) -> dict:
Returns:
dict: Refreshed token data, or None if refresh failed
"""
- try:
- # Perform the actual refresh
- refreshed_token = await self._perform_token_refresh(session)
+ redis = self.app.state.redis
+ if redis:
+ # Shared across workers and replicas
+ refresh_lock = redis.lock(f'{REDIS_KEY_PREFIX}:oauth:refresh_lock:{session.id}', timeout=60)
+ else:
+ refresh_lock = self._refresh_locks.setdefault(session.id, asyncio.Lock())
- if refreshed_token:
- # Update the session with new token data
- session = await OAuthSessions.update_session_by_id(session.id, refreshed_token)
- log.info('Successfully refreshed token for session %s', session.id)
- return session.token
- else:
- log.error(f'Failed to refresh token for session {session.id}')
- return None
+ async with refresh_lock:
+ # Another request may have refreshed while we waited; its refresh token is now spent
+ current_session = await OAuthSessions.get_session_by_id(session.id)
+ if current_session and current_session.token != session.token:
+ return current_session.token
- except Exception as e:
- log.error(f'Error refreshing token for session {session.id}: {e}')
- return None
+ try:
+ # Perform the actual refresh
+ refreshed_token = await self._perform_token_refresh(session)
+
+ if refreshed_token:
+ # Update the session with new token data
+ session = await OAuthSessions.update_session_by_id(session.id, refreshed_token)
+ log.info('Successfully refreshed token for session %s', session.id)
+ return session.token
+ else:
+ log.error(f'Failed to refresh token for session {session.id}')
+ return None
+
+ except Exception as e:
+ log.error(f'Error refreshing token for session {session.id}: {e}')
+ return None
async def _perform_token_refresh(self, session) -> dict:
"""
@@ -1515,7 +1542,7 @@ async def _perform_token_refresh(self, session) -> dict:
log.error(f'Exception during token refresh for provider {provider}: {e}')
return None
- async def get_user_role(self, user, user_data, *, access_token: str | None = None):
+ async def get_user_role(self, user, user_data, *, token_claims: dict | None = None):
auth_config = await get_oauth_runtime_config()
user_count = await Users.get_num_users()
if user and user_count == 1:
@@ -1540,14 +1567,9 @@ async def get_user_role(self, user, user_data, *, access_token: str | None = Non
role = user.role if user else auth_config.DEFAULT_USER_ROLE
if oauth_claim:
- claim_data = _get_roles_claim(user_data, oauth_claim)
- if claim_data is None and access_token is not None:
- # The exchange endpoint has already validated this token with the provider's userinfo endpoint.
- try:
- token_claims = jwt.decode(access_token, options={'verify_signature': False})
- claim_data = _get_roles_claim(token_claims, oauth_claim)
- except jwt.PyJWTError as e:
- log.debug('Token exchange: cannot decode token claims: %s', e)
+ claim_data = _get_claim(user_data, oauth_claim)
+ if claim_data is None and token_claims is not None:
+ claim_data = _get_claim(token_claims, oauth_claim)
if isinstance(claim_data, list):
oauth_roles = claim_data
@@ -1560,7 +1582,7 @@ async def get_user_role(self, user, user_data, *, access_token: str | None = Non
elif isinstance(claim_data, int):
oauth_roles = [str(claim_data)]
- if access_token is not None and not oauth_roles and oauth_allowed_roles and '*' not in oauth_allowed_roles:
+ if token_claims is not None and not oauth_roles and oauth_allowed_roles and '*' not in oauth_allowed_roles:
log.warning('Token exchange denied: no readable roles claim in userinfo or the token')
raise HTTPException(status.HTTP_403_FORBIDDEN, detail=ERROR_MESSAGES.ACCESS_PROHIBITED)
@@ -1610,10 +1632,10 @@ async def update_user_role_from_oauth(
user_data,
provider,
*,
- access_token: str | None = None,
+ token_claims: dict | None = None,
db=None,
):
- determined_role = await self.get_user_role(user, user_data, access_token=access_token)
+ determined_role = await self.get_user_role(user, user_data, token_claims=token_claims)
if user.role == determined_role:
return user
@@ -1631,24 +1653,20 @@ async def update_user_role_from_oauth(
return user
- async def update_user_groups(self, request, user, user_data, default_permissions, db=None):
+ async def update_user_groups(
+ self, request, user, user_data, default_permissions, db=None, *, token_claims: dict | None = None
+ ):
auth_config = await get_oauth_runtime_config()
log.debug('Running OAUTH Group management')
oauth_claim = auth_config.OAUTH_GROUPS_CLAIM
- try:
- blocked_groups = JSONCodec.loads(auth_config.OAUTH_BLOCKED_GROUPS)
- except Exception as e:
- log.exception(f'Error loading OAUTH_BLOCKED_GROUPS: {e}')
- blocked_groups = []
+ blocked_groups = _parse_blocked_groups(auth_config.OAUTH_BLOCKED_GROUPS)
user_oauth_groups = []
- # Nested claim search for groups claim
if oauth_claim:
- claim_data = user_data
- nested_claims = oauth_claim.split('.')
- for nested_claim in nested_claims:
- claim_data = claim_data.get(nested_claim, {})
+ claim_data = _get_claim(user_data, oauth_claim)
+ if claim_data is None and token_claims is not None:
+ claim_data = _get_claim(token_claims, oauth_claim)
if isinstance(claim_data, list):
user_oauth_groups = claim_data
@@ -1675,7 +1693,7 @@ async def update_user_groups(self, request, user, user_data, default_permissions
log.debug('Using creator ID %s for potential group creation.', creator_id)
for group_name in user_oauth_groups:
- if group_name not in all_group_names:
+ if group_name not in all_group_names and not is_in_blocked_groups(group_name, blocked_groups):
log.info("Group '%s' not found via OAuth claim. Creating group...", group_name)
try:
new_group_form = GroupForm(
diff --git a/backend/open_webui/utils/payload.py b/backend/open_webui/utils/payload.py
index 7ee2f9d3b350..94a9bc47697f 100644
--- a/backend/open_webui/utils/payload.py
+++ b/backend/open_webui/utils/payload.py
@@ -379,10 +379,6 @@ def convert_payload_openai_to_ollama(openai_payload: dict) -> dict:
if 'tools' in openai_payload:
ollama_payload['tools'] = openai_payload['tools']
- if 'max_tokens' in openai_payload:
- ollama_payload['num_predict'] = openai_payload['max_tokens']
- del openai_payload['max_tokens']
-
# If there are advanced parameters in the payload, format them in Ollama's options field
if openai_payload.get('options'):
# Copied before key deletions below so the caller's options stay intact
@@ -430,6 +426,11 @@ def parse_json(value: str) -> dict:
ollama_options['stop'] = openai_payload.get('stop')
ollama_payload['options'] = ollama_options
+ if 'max_tokens' in openai_payload:
+ ollama_options = ollama_payload.get('options', {})
+ ollama_options['num_predict'] = openai_payload['max_tokens']
+ ollama_payload['options'] = ollama_options
+
if 'metadata' in openai_payload:
ollama_payload['metadata'] = openai_payload['metadata']
diff --git a/backend/open_webui/utils/recurrence.py b/backend/open_webui/utils/recurrence.py
new file mode 100644
index 000000000000..c4817eca07b7
--- /dev/null
+++ b/backend/open_webui/utils/recurrence.py
@@ -0,0 +1,180 @@
+"""Recurrence calculations isolated from application/DB imports for worker processes."""
+
+import asyncio
+import logging
+from datetime import datetime, timedelta
+from functools import partial
+from typing import Optional
+from zoneinfo import ZoneInfo
+
+import anyio
+from anyio import fail_after, to_process, to_thread
+from dateutil.rrule import HOURLY, MINUTELY, SECONDLY, rruleset, rrulestr
+from open_webui.constants import ERROR_MESSAGES
+
+log = logging.getLogger(__name__)
+RRULE_TIMEOUT_SECONDS = 2
+
+
+class RecurrenceEvaluationTimeout(ValueError):
+ """The evaluation budget expired; the schedule may still have occurrences."""
+
+
+def _resolve_tz(tz: str = None) -> Optional[ZoneInfo]:
+ """Safely resolve a timezone string to ZoneInfo.
+
+ Returns None (→ server-local fallback) when *tz* is empty, None,
+ or an unrecognised IANA key. Logs a warning on bad keys so
+ misconfiguration is visible in the server logs.
+ """
+ if not tz:
+ return None
+ try:
+ return ZoneInfo(tz)
+ except (KeyError, Exception):
+ log.warning('Unknown timezone %r — falling back to server time', tz)
+ return None
+
+
+def _parse_rule(s: str, now: Optional[datetime] = None):
+ """Parse RRULE with clock-aligned DTSTART for sub-daily frequencies.
+
+ SECONDLY/MINUTELY/HOURLY rules use a fixed epoch DTSTART (2000-01-01 00:00)
+ so intervals snap to clock boundaries (e.g. every 5min = :00, :05, :10).
+ """
+ upper = s.upper()
+ if 'EXRULE' in upper:
+ raise ValueError('EXRULE is not supported in recurrence rules')
+
+ parsed = rrulestr(s, ignoretz=True)
+ rules = parsed._rrule if isinstance(parsed, rruleset) else [parsed]
+ if len(rules) > 1:
+ raise ValueError('only one RRULE is supported per recurrence rule')
+
+ rule = rules[0]
+ start = rule._dtstart.replace(tzinfo=None)
+ anchor = now or datetime.now()
+ parts = s.split()
+ stripped = '\n'.join(part for part in parts if not part.upper().startswith('DTSTART')) or s
+ has_dtstart = any(part.upper().startswith('DTSTART') for part in parts)
+ step = {
+ SECONDLY: timedelta(seconds=rule._interval),
+ MINUTELY: timedelta(minutes=rule._interval),
+ HOURLY: timedelta(hours=rule._interval),
+ }.get(rule._freq)
+
+ if step is None:
+ if not rule._dtstart.tzinfo:
+ return parsed
+ return rrulestr(stripped, dtstart=start, ignoretz=True)
+
+ if rule._interval < 1:
+ raise ValueError('RRULE INTERVAL must be a positive integer')
+ dtstart = None
+ if has_dtstart:
+ emitted = ((anchor - start) // step) if anchor > start else 0
+ emitted *= len(rule._byminute or (0,)) * len(rule._bysecond or (0,))
+ if emitted <= 100_000:
+ if rule._dtstart.tzinfo:
+ dtstart = start
+ else:
+ return parsed
+ if not has_dtstart or dtstart is None:
+ epoch = datetime(2000, 1, 1)
+ dtstart = epoch + ((anchor - epoch) // step) * step
+
+ return rrulestr(stripped, dtstart=dtstart, ignoretz=True)
+
+
+def _next_occurrences(s: str, now: datetime, n: int) -> list[datetime]:
+ rule = _parse_rule(s, now)
+ occurrences = []
+ for _ in range(n):
+ now = rule.after(now)
+ if now is None:
+ break
+ occurrences.append(now)
+ return occurrences
+
+
+async def _get_next_occurrences(s: str, now: datetime, n: int) -> list[datetime]:
+ # A result-count or date limit cannot bound work before the first match.
+ try:
+ with fail_after(RRULE_TIMEOUT_SECONDS):
+ return await to_process.run_sync(_next_occurrences, s, now, n, cancellable=True)
+ except TimeoutError as e:
+ raise RecurrenceEvaluationTimeout('Schedule took too long to evaluate; simplify its recurrence rule.') from e
+ except NotImplementedError:
+ # Windows' SelectorEventLoop (required by psycopg) cannot spawn subprocesses.
+ run_on_proactor_loop = partial(
+ anyio.run, _get_next_occurrences, s, now, n, backend_options={'loop_factory': asyncio.ProactorEventLoop}
+ )
+ return await to_thread.run_sync(run_on_proactor_loop)
+
+
+async def validate_rrule(s: str, tz: str = None) -> None:
+ """Raise ValueError if the RRULE is malformed or exhausted.
+
+ When *tz* is provided the "now" reference uses the user's local
+ clock so that near-future schedules are not incorrectly rejected
+ on servers whose system clock is ahead (e.g. UTC vs US timezones).
+ """
+ upper = s.upper()
+ if 'COUNT=' in upper and 'DTSTART' not in upper:
+ raise ValueError(ERROR_MESSAGES.AUTOMATION_COUNT_REQUIRES_DTSTART)
+ zi = _resolve_tz(tz)
+ now = datetime.now(zi).replace(tzinfo=None) if zi else datetime.now()
+ try:
+ occurrences = await _get_next_occurrences(s, now, 1)
+ except RecurrenceEvaluationTimeout:
+ raise
+ except Exception as e:
+ raise ValueError(ERROR_MESSAGES.AUTOMATION_INVALID_RRULE(e))
+ if not occurrences:
+ raise ValueError(ERROR_MESSAGES.AUTOMATION_NO_FUTURE_RUNS)
+
+
+async def next_run_ns(s: str, tz: str = None) -> Optional[int]:
+ """Next occurrence as epoch nanoseconds, respecting user timezone."""
+ zi = _resolve_tz(tz)
+ now = datetime.now(zi) if zi else datetime.now()
+ now_naive = now.replace(tzinfo=None)
+ occurrences = await _get_next_occurrences(s, now_naive, 1)
+ if not occurrences:
+ return None
+ dt = occurrences[0]
+ if zi:
+ dt = dt.replace(tzinfo=zi)
+ return int(dt.timestamp() * 1_000_000_000)
+
+
+async def next_n_runs_ns(s: str, n: int = 5, tz: str = None) -> list[int]:
+ """Compute next N occurrences for UI preview.
+
+ Uses the user's timezone for the starting "now" so that the
+ preview matches the user's local clock (same as next_run_ns).
+ """
+ zi = _resolve_tz(tz)
+ result = []
+ now = datetime.now(zi).replace(tzinfo=None) if zi else datetime.now()
+ for dt in await _get_next_occurrences(s, now, n):
+ if zi:
+ dt_tz = dt.replace(tzinfo=zi)
+ result.append(int(dt_tz.timestamp() * 1_000_000_000))
+ else:
+ result.append(int(dt.timestamp() * 1_000_000_000))
+ return result
+
+
+async def rrule_interval_seconds(s: str) -> Optional[int]:
+ """Approximate interval between recurrences in seconds.
+
+ Returns None for one-shot (COUNT=1) schedules or rules
+ with fewer than two future occurrences.
+ """
+ s = '\n'.join(part for part in s.split() if not part.upper().startswith('DTSTART')) or s
+ now = datetime.now()
+ occurrences = await _get_next_occurrences(s, now, 2)
+ if len(occurrences) < 2:
+ return None
+ return int((occurrences[1] - occurrences[0]).total_seconds())
diff --git a/backend/open_webui/utils/redis.py b/backend/open_webui/utils/redis.py
index 90d81abb2689..0eb1469862ff 100644
--- a/backend/open_webui/utils/redis.py
+++ b/backend/open_webui/utils/redis.py
@@ -35,7 +35,7 @@
_redis_sync.exceptions.ReadOnlyError,
_redis_sync.exceptions.TimeoutError,
)
-_FACTORY_METHODS = frozenset({'pipeline', 'pubsub', 'monitor', 'client', 'transaction'})
+_FACTORY_METHODS = frozenset({'pipeline', 'pubsub', 'monitor', 'client', 'transaction', 'lock'})
_CONNECTION_POOL: dict[tuple, Any] = {}
diff --git a/backend/open_webui/utils/skills.py b/backend/open_webui/utils/skills.py
index 5adc07198673..1cbe439dc177 100644
--- a/backend/open_webui/utils/skills.py
+++ b/backend/open_webui/utils/skills.py
@@ -32,7 +32,7 @@ def extract_skill_ids_from_messages(messages: list[dict]) -> set[str]:
SKILL_MENTION_STRIP_RE = re.compile(rf'<(?:\$({SKILL_ID_RE})(?:\|([^>]*))?|/({SKILL_ID_RE})\|([^>]*))>')
-SKILLS_CREATE_RE = re.compile(r"^/skills:create(?:\s+(.*))?$", re.IGNORECASE | re.DOTALL)
+SKILLS_CREATE_RE = re.compile(r'^/skills:create(?:\s+(.*))?$', re.IGNORECASE | re.DOTALL)
OPEN_WEBUI_SKILL_AUTHORING_STANDARDS = """\
Follow the Open WebUI skill-authoring standards:
@@ -126,8 +126,7 @@ def has_prior_real_chat_content(messages: list[dict]) -> bool:
len(messages),
)
return any(
- message.get('role') == 'user' and _message_has_real_content(message)
- for message in messages[:last_user_idx]
+ message.get('role') == 'user' and _message_has_real_content(message) for message in messages[:last_user_idx]
)
diff --git a/backend/open_webui/utils/subagents.py b/backend/open_webui/utils/subagents.py
index 809dd601aecf..13b9699216ce 100644
--- a/backend/open_webui/utils/subagents.py
+++ b/backend/open_webui/utils/subagents.py
@@ -14,7 +14,7 @@
from open_webui.models.config import Config
from open_webui.models.users import UserModel, Users
from open_webui.tasks import create_task, has_active_tasks
-from open_webui.utils.auth import create_token
+from open_webui.utils.auth import VERIFIED_USER_ROLES, create_token
from open_webui.utils.json_codec import JSONCodec
from open_webui.utils.misc import get_message_list
from sqlalchemy import select
@@ -84,7 +84,7 @@ async def process_pending_internal_messages(
return
user = await Users.get_user_by_id(user_id)
- if not user:
+ if not user or user.role not in VERIFIED_USER_ROLES:
return
async with get_async_db() as db:
diff --git a/backend/open_webui/utils/terminals.py b/backend/open_webui/utils/terminals.py
index e7d34550d320..4dbd7e6b3f71 100644
--- a/backend/open_webui/utils/terminals.py
+++ b/backend/open_webui/utils/terminals.py
@@ -2,6 +2,7 @@
import asyncio
import logging
+import ntpath
import posixpath
from urllib.parse import quote
@@ -119,12 +120,15 @@ def terminal_chat_uploads(connection: dict) -> str:
return value if value in TERMINAL_CHAT_UPLOAD_MODES else 'default'
-async def get_terminal_request_info(request, user, metadata: dict, extra_params: dict | None = None):
+async def get_terminal_json(request, user, metadata: dict, path: str, extra_params: dict | None = None):
+ """Read from an admin terminal on the backend or a personal terminal in its browser."""
+ import aiohttp
+
+ from open_webui.env import AIOHTTP_CLIENT_SESSION_TOOL_SERVER_SSL, AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER_DATA
from open_webui.models.config import Config
from open_webui.models.groups import Groups
from open_webui.models.users import UserModel
from open_webui.utils.access_control import has_connection_access
- from open_webui.utils.headers import bearer_auth_header
from open_webui.utils.tools import build_tool_server_headers
metadata = metadata or {}
@@ -163,66 +167,39 @@ async def get_terminal_request_info(request, user, metadata: dict, extra_params:
headers['X-Session-Id'] = metadata['chat_id']
if context_id:
headers[TERMINAL_CONTEXT_HEADER] = context_id
- return get_terminal_server_url(connection), headers, cookies
-
- selector = str(terminal_id).rstrip('/')
- direct_terminal = next(
- (
- server
- for server in metadata.get('tool_servers') or []
- if str(server.get('url') or '').rstrip('/') == selector
- ),
- None,
- )
- if not direct_terminal:
- return None
-
- headers = {'Accept': 'application/json'}
- key = str(direct_terminal.get('key') or '').strip()
- if key:
- headers.update(bearer_auth_header(key))
- if metadata.get('chat_id'):
- headers['X-Session-Id'] = metadata['chat_id']
- return selector, headers, {}
+ timeout = aiohttp.ClientTimeout(total=AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER_DATA)
+ async with aiohttp.ClientSession(timeout=timeout, trust_env=True) as session:
+ async with session.get(
+ f'{get_terminal_server_url(connection)}{path}',
+ headers=headers,
+ cookies=cookies,
+ ssl=AIOHTTP_CLIENT_SESSION_TOOL_SERVER_SSL,
+ allow_redirects=False,
+ ) as response:
+ return await response.json() if response.status == 200 else None
+
+ event_caller = (extra_params or {}).get('__event_call__')
+ if event_caller:
+ result = await event_caller(
+ {
+ 'type': 'request:terminal',
+ 'data': {'terminal_id': terminal_id, 'path': path, 'session_id': metadata.get('session_id')},
+ }
+ )
+ return result.get('data') if isinstance(result, dict) else None
+ return None
async def get_terminal_agents_md(request, user, metadata: dict, extra_params: dict | None = None) -> str | None:
"""Load the selected terminal user's home AGENTS.md afresh for this turn."""
- import aiohttp
- from open_webui.env import AIOHTTP_CLIENT_SESSION_TOOL_SERVER_SSL
-
try:
async with asyncio.timeout(5):
- terminal_request = await get_terminal_request_info(request, user, metadata, extra_params)
- if not terminal_request:
+ data = await get_terminal_json(request, user, metadata, '/files/cwd', extra_params)
+ home = data.get('home') if isinstance(data, dict) else None
+ if not isinstance(home, str) or not (posixpath.isabs(home) or ntpath.isabs(home)):
return None
- base_url, headers, cookies = terminal_request
- async with aiohttp.ClientSession(
- headers=headers, cookies=cookies, timeout=aiohttp.ClientTimeout(total=5), trust_env=True
- ) as session:
- async with session.get(
- f'{base_url.rstrip("/")}/files/cwd',
- ssl=AIOHTTP_CLIENT_SESSION_TOOL_SERVER_SSL,
- allow_redirects=False,
- ) as response:
- if response.status != 200:
- log.debug('Skipping terminal AGENTS.md: home lookup returned HTTP %s', response.status)
- return None
- data = await response.json()
- home = data.get('home') if isinstance(data, dict) else None
- if not isinstance(home, str) or not posixpath.isabs(home):
- return None
- path = posixpath.join(home, 'AGENTS.md')
- async with session.get(
- f'{base_url.rstrip("/")}/files/read',
- params={'path': path},
- ssl=AIOHTTP_CLIENT_SESSION_TOOL_SERVER_SSL,
- allow_redirects=False,
- ) as response:
- if response.status == 404:
- return None
- response.raise_for_status()
- data = await response.json()
+ path = quote(posixpath.join(home, 'AGENTS.md'), safe='')
+ data = await get_terminal_json(request, user, metadata, f'/files/read?path={path}', extra_params)
content = data.get('content') if isinstance(data, dict) else None
if not isinstance(content, str) or not content.strip():
@@ -247,25 +224,9 @@ def add_terminal_agents_md(messages: list[dict], agents_md: str) -> list[dict]:
async def get_terminal_skill(
request, user, metadata: dict, skill_name: str, extra_params: dict | None = None
) -> dict | None:
- from urllib.parse import quote
-
- import aiohttp
- from open_webui.env import AIOHTTP_CLIENT_SESSION_TOOL_SERVER_SSL, AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER_DATA
-
- terminal_request = await get_terminal_request_info(request, user, metadata, extra_params)
- if not terminal_request:
- return None
- base_url, headers, cookies = terminal_request
-
- timeout = aiohttp.ClientTimeout(total=AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER_DATA)
- async with aiohttp.ClientSession(timeout=timeout, trust_env=True) as session:
- async with session.get(
- f'{base_url.rstrip("/")}/skills/{quote(skill_name, safe="")}',
- headers=headers,
- cookies=cookies,
- ssl=AIOHTTP_CLIENT_SESSION_TOOL_SERVER_SSL,
- ) as response:
- skill = await response.json() if response.status == 200 else None
+ skill = await get_terminal_json(
+ request, user, metadata, f'/skills/read?name={quote(skill_name, safe="")}', extra_params
+ )
if not isinstance(skill, dict):
return None
diff --git a/backend/open_webui/utils/timers.py b/backend/open_webui/utils/timers.py
index 094a2130c87b..15a6b898db59 100644
--- a/backend/open_webui/utils/timers.py
+++ b/backend/open_webui/utils/timers.py
@@ -11,12 +11,13 @@
from typing import Literal
from uuid import uuid4
-from fastapi import Request
+from fastapi import HTTPException, Request
from open_webui.internal.db import get_async_db
from open_webui.models.chat_messages import ChatMessages
from open_webui.models.chats import Chat, ChatForm, Chats
from open_webui.models.users import UserModel, Users
from open_webui.tasks import has_active_tasks
+from open_webui.utils.auth import VERIFIED_USER_ROLES
from open_webui.utils.json_codec import JSONCodec
from open_webui.utils.misc import get_message_list
from sqlalchemy import select
@@ -258,6 +259,11 @@ async def execute_due_timer(app, timer_id: str, claim_id: str | None = None) ->
await _set_timer_state(timer_id, 'error', timer_error='timer user no longer exists')
return
+ # Re-gate the rehydrated owner: a demoted owner must not run.
+ if user.role not in VERIFIED_USER_ROLES:
+ await _set_timer_state(timer_id, 'error', timer_error='owner no longer permitted to run timers')
+ return
+
run = meta.get('run') or {}
model_id = run.get('model_id') or meta.get('timer_model_id')
if not model_id:
@@ -410,7 +416,20 @@ async def execute_due_timer(app, timer_id: str, claim_id: str | None = None) ->
await app.state.CHAT_COMPLETION_HANDLER(request, form_data, user=user)
except Exception as exc:
log.exception(f'Timer {timer_id} completion failed')
- await _set_timer_state(timer_id, 'error', timer_error=str(exc)[:500])
+ error_detail = exc.detail if isinstance(exc, HTTPException) else str(exc)
+ await _set_timer_state(timer_id, 'error', timer_error=error_detail[:500])
+ await Chats.upsert_message_to_chat_by_id_and_message_id(
+ parent_chat_id, assistant_message_id, {'error': {'content': error_detail}, 'done': True}
+ )
+ await sio.emit(
+ 'events',
+ {
+ 'chat_id': parent_chat_id,
+ 'message_id': assistant_message_id,
+ 'data': {'type': 'chat:message:error', 'data': {'error': {'content': error_detail}, 'done': True}},
+ },
+ room=f'user:{timer.user_id}',
+ )
async def _set_timer_state(timer_id: str, status: str, **fields) -> None:
diff --git a/backend/open_webui/utils/tool_approval.py b/backend/open_webui/utils/tool_approval.py
index c59b2d6316be..7d5376bb01ee 100644
--- a/backend/open_webui/utils/tool_approval.py
+++ b/backend/open_webui/utils/tool_approval.py
@@ -5,7 +5,10 @@
from sqlalchemy.ext.asyncio import AsyncSession
from open_webui.constants import ERROR_MESSAGES
+from open_webui.env import ENABLE_ADMIN_CHAT_ACCESS
from open_webui.models.chats import Chats
+from open_webui.models.config import Config
+from open_webui.models.users import Users
from open_webui.socket.main import get_event_emitter
from open_webui.utils.json_codec import JSONCodec
@@ -25,7 +28,7 @@ async def resolve_tool_call_output(
db: AsyncSession | None = None,
) -> dict:
chat = await Chats.get_chat_by_id(chat_id, db=db)
- if not chat or (chat.user_id != user.id and user.role != 'admin'):
+ if not chat or (chat.user_id != user.id and not (user.role == 'admin' and ENABLE_ADMIN_CHAT_ACCESS)):
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
@@ -160,8 +163,17 @@ async def build_tool_approval_resume_payload(chat_id: str, message_id: str, chat
raise HTTPException(status_code=status.HTTP_409_CONFLICT, detail='Tool call message model is missing.')
messages = []
- if params.get('system'):
- messages.append({'role': 'system', 'content': params.get('system')})
+ system_prompt = params.get('system')
+ if not system_prompt:
+ # Mirror the chat UI's system prompt fallback
+ user = await Users.get_user_by_id(chat.user_id)
+ ui_settings = (user.settings.ui if user and user.settings else None) or {}
+ system_prompt = ui_settings.get('system')
+ if system_prompt is None:
+ default_interface_settings = await Config.get('ui.default_interface_settings') or {}
+ system_prompt = default_interface_settings.get('system')
+ if system_prompt:
+ messages.append({'role': 'system', 'content': system_prompt})
return {
'stream': params.get('stream_response', True),
diff --git a/backend/requirements-slim.txt b/backend/requirements-slim.txt
index e482bf330dce..c688c89d23f3 100644
--- a/backend/requirements-slim.txt
+++ b/backend/requirements-slim.txt
@@ -21,7 +21,7 @@ joserfc==1.7.4
requests==2.34.2
regex==2026.5.9
google-re2==1.1.20251105 # bounded compilation and linear-time knowledge searches
-aiohttp==3.13.5 # do not update to 3.13.3 - broken
+aiohttp==3.14.3 # do not update to 3.13.3 - broken
aiodns==3.6.1 # keep pinned: 4.x pulls pycares 5 (c-ares 1.34.6) which breaks DNS on some hosts (#28013, #28215); opt-in via AIOHTTP_CLIENT_ASYNC_DNS_RESOLVER
aiocache==0.12.3
aiofiles==25.1.0
@@ -38,7 +38,7 @@ alembic==1.18.4
pycrdt==0.13.1
redis==8.0.1
-hiredis==3.4.0
+hiredis==3.4.2
python-dateutil==2.9.0.post0
pytz==2026.2
@@ -67,7 +67,7 @@ lxml==6.1.1
validators==0.35.0
psutil==7.2.2
-pillow==12.2.0
+pillow==12.3.0
rank-bm25==0.2.2
black==26.5.1
diff --git a/backend/requirements.txt b/backend/requirements.txt
index 11282b280754..adbc0e560ee8 100644
--- a/backend/requirements.txt
+++ b/backend/requirements.txt
@@ -16,7 +16,7 @@ joserfc==1.7.4
requests==2.34.2
regex==2026.5.9
google-re2==1.1.20251105 # bounded compilation and linear-time knowledge searches
-aiohttp==3.13.5 # do not update to 3.13.3 - broken
+aiohttp==3.14.3 # do not update to 3.13.3 - broken
aiodns==3.6.1 # keep pinned: 4.x pulls pycares 5 (c-ares 1.34.6) which breaks DNS on some hosts (#28013, #28215); opt-in via AIOHTTP_CLIENT_ASYNC_DNS_RESOLVER
aiocache==0.12.3
aiofiles==25.1.0
@@ -34,7 +34,7 @@ alembic==1.18.4
pycrdt==0.13.1
redis==8.0.1
-hiredis==3.4.0
+hiredis==3.4.2
pytz==2026.2
@@ -85,7 +85,7 @@ psutil==7.2.2
sentencepiece==0.2.1
soundfile==0.13.1
-pillow==12.2.0
+pillow==12.3.0
opencv-python-headless==4.13.0.92
rapidocr==3.9.2
rank-bm25==0.2.2
diff --git a/package-lock.json b/package-lock.json
index 45a7cf56deab..d17274c7c23d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "open-webui",
- "version": "0.11.3",
+ "version": "0.11.4",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "open-webui",
- "version": "0.11.3",
+ "version": "0.11.4",
"dependencies": {
"@azure/msal-browser": "^4.5.0",
"@codemirror/lang-javascript": "^6.2.2",
diff --git a/package.json b/package.json
index ed938ec131be..16f139835fe3 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "open-webui",
- "version": "0.11.3",
+ "version": "0.11.4",
"private": true,
"scripts": {
"dev": "npm run pyodide:fetch && vite dev --host",
diff --git a/pyproject.toml b/pyproject.toml
index 0f67b1b1200d..e410b2b788fd 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -22,7 +22,7 @@ dependencies = [
"joserfc==1.7.4",
"requests==2.34.2",
- "aiohttp==3.13.5", # do not update to 3.13.3 - broken
+ "aiohttp==3.14.3", # do not update to 3.13.3 - broken
"aiodns==3.6.1", # keep pinned: 4.x pulls pycares 5 (c-ares 1.34.6) which breaks DNS on some hosts (#28013, #28215); opt-in via AIOHTTP_CLIENT_ASYNC_DNS_RESOLVER
"aiocache==0.12.3",
"aiofiles==25.1.0",
@@ -40,7 +40,7 @@ dependencies = [
"pycrdt==0.13.1",
"redis==8.0.1",
- "hiredis==3.4.0",
+ "hiredis==3.4.2",
# "valkey-glide-sync==2.3.1", # optional: install manually if VECTOR_DB=valkey
"pytz==2026.2",
@@ -93,7 +93,7 @@ dependencies = [
"soundfile==0.13.1",
"azure-ai-documentintelligence==1.0.2",
- "pillow==12.2.0",
+ "pillow==12.3.0",
"opencv-python-headless==4.13.0.92",
"rapidocr==3.9.2",
"rank-bm25==0.2.2",
diff --git a/scripts/prepare-pyodide.js b/scripts/prepare-pyodide.js
index 8ec57426cb66..cb043f73126d 100644
--- a/scripts/prepare-pyodide.js
+++ b/scripts/prepare-pyodide.js
@@ -13,7 +13,8 @@ const packages = [
'tiktoken',
'pytz',
'black',
- 'openai'
+ 'openai',
+ 'lxml'
];
// Pure-Python packages whose wheels must be downloaded from PyPI and saved into
@@ -28,13 +29,18 @@ const pypiPackages = [
'pytokens',
'openpyxl',
'et-xmlfile',
- 'seaborn'
+ 'seaborn',
+ 'python-pptx',
+ 'python-docx',
+ 'xlsxwriter'
];
const pypiDepends = {
black: ['click', 'mypy-extensions', 'packaging', 'pathspec', 'platformdirs', 'pytokens'],
openpyxl: ['et-xmlfile'],
- seaborn: ['matplotlib', 'numpy', 'pandas']
+ seaborn: ['matplotlib', 'numpy', 'pandas'],
+ 'python-pptx': ['lxml', 'pillow', 'xlsxwriter', 'typing-extensions'],
+ 'python-docx': ['lxml', 'typing-extensions']
};
import { loadPyodide } from 'pyodide';
diff --git a/src/lib/apis/configs/index.ts b/src/lib/apis/configs/index.ts
index ec5d4a12ab55..236664f1159c 100644
--- a/src/lib/apis/configs/index.ts
+++ b/src/lib/apis/configs/index.ts
@@ -744,7 +744,7 @@ export const setSubagentsConfig = async (token: string, config: object) => {
export const setDefaultPromptSuggestions = async (
token: string,
- promptSuggestions: any[],
+ promptSuggestions: any[] | null,
promptSuggestionsI18n: Record = {}
) => {
let error = null;
diff --git a/src/lib/apis/images/index.ts b/src/lib/apis/images/index.ts
index ad2f79d7313f..3717093798ae 100644
--- a/src/lib/apis/images/index.ts
+++ b/src/lib/apis/images/index.ts
@@ -258,14 +258,12 @@ export const imageEdits = async (
...(token && { authorization: `Bearer ${token}` })
},
body: JSON.stringify({
- form_data: {
- image: images,
- prompt,
- ...(model && { model }),
- ...(size && { size }),
- ...(n && { n }),
- ...(background && { background })
- }
+ image: images,
+ prompt,
+ ...(model && { model }),
+ ...(size && { size }),
+ ...(n && { n }),
+ ...(background && { background })
})
})
.then(async (res) => {
diff --git a/src/lib/components/AddConnectionModal.svelte b/src/lib/components/AddConnectionModal.svelte
index a7edcf391389..0ada5f55c36b 100644
--- a/src/lib/components/AddConnectionModal.svelte
+++ b/src/lib/components/AddConnectionModal.svelte
@@ -77,9 +77,29 @@
// remove trailing slash from url
url = url.replace(/\/$/, '');
+ let _headers = null;
+
+ if (headers) {
+ try {
+ _headers = JSON.parse(headers);
+ if (typeof _headers !== 'object' || Array.isArray(_headers)) {
+ _headers = null;
+ throw new Error('Headers must be a valid JSON object');
+ }
+ headers = JSON.stringify(_headers, null, 2);
+ } catch (error) {
+ toast.error($i18n.t('Headers must be a valid JSON object'));
+ return;
+ }
+ }
+
const res = await verifyOllamaConnection(localStorage.token, {
url,
- key
+ key,
+ config: {
+ auth_type,
+ ...(_headers ? { headers: _headers } : {})
+ }
}).catch((error) => {
toast.error(`${error}`);
});
@@ -241,6 +261,12 @@
showAdvanced = false;
tags = [];
modelIds = [];
+ headers = '';
+ enable = true;
+ connectionType = 'external';
+ provider = '';
+ apiVersion = '';
+ apiType = '';
};
const init = () => {
diff --git a/src/lib/components/admin/Analytics.svelte b/src/lib/components/admin/Analytics.svelte
index bd33b3c3729f..da69de19e111 100644
--- a/src/lib/components/admin/Analytics.svelte
+++ b/src/lib/components/admin/Analytics.svelte
@@ -18,7 +18,7 @@
{#if loaded}
-
-
+
{/each}
diff --git a/src/lib/components/chat/Settings/Personalization.svelte b/src/lib/components/chat/Settings/Personalization.svelte
index a7518291caf3..b88f7f1294b1 100644
--- a/src/lib/components/chat/Settings/Personalization.svelte
+++ b/src/lib/components/chat/Settings/Personalization.svelte
@@ -185,7 +185,7 @@
{/if}
-
+ {$i18n.t('delete this link')}
@@ -150,7 +151,7 @@
{$i18n.t('and create a new shared link.')}
{:else}
{$i18n.t(
- "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat."
+ "Messages you send after creating your link won't be shared. Your link is private until you choose who can view it."
)}
{/if}
diff --git a/src/lib/components/chat/Suggestions.svelte b/src/lib/components/chat/Suggestions.svelte
index 2d3d52b8ca84..f61695b2dc2d 100644
--- a/src/lib/components/chat/Suggestions.svelte
+++ b/src/lib/components/chat/Suggestions.svelte
@@ -27,14 +27,13 @@
// Update the filteredPrompts if inputValue changes
// Only increase version if something wirklich geändert hat
- $: getFilteredPrompts(inputValue);
+ $: if (fuse) getFilteredPrompts(inputValue);
- // Helper function to check if arrays are the same
- // (based on unique IDs oder content)
+ // Compare objects so translated text refreshes even when IDs stay the same.
function arraysEqual(a, b) {
if (a.length !== b.length) return false;
for (let i = 0; i < a.length; i++) {
- if ((a[i].id ?? a[i].content) !== (b[i].id ?? b[i].content)) {
+ if (a[i] !== b[i]) {
return false;
}
}
@@ -60,7 +59,6 @@
$: if (suggestionPrompts) {
sortedPrompts = [...(suggestionPrompts ?? [])].sort(() => Math.random() - 0.5);
- getFilteredPrompts(inputValue);
}
diff --git a/src/lib/components/common/Dropdown.svelte b/src/lib/components/common/Dropdown.svelte
index 9234ec7afc1a..781785020a9d 100644
--- a/src/lib/components/common/Dropdown.svelte
+++ b/src/lib/components/common/Dropdown.svelte
@@ -14,6 +14,9 @@
/** Close when clicking outside */
export let closeOnOutsideClick = true;
+ /** Close action menus after selection. Submenu triggers prevent the default click. */
+ export let closeOnSelect = false;
+
/** Called when open/close state changes */
export let onOpenChange: (state: boolean) => void = () => {};
@@ -281,11 +284,15 @@
afterOpen();
}
- function handleWindowPointerDown(event: PointerEvent) {
- if (!show || !closeOnOutsideClick) return;
+ function handleWindowClick(event: MouseEvent) {
+ if (!show || !closeOnOutsideClick || event.detail === 0) return;
if (!(event.target instanceof Node)) return;
if (triggerEl?.contains(event.target)) return;
if (contentEl?.contains(event.target)) return;
+ // Submenu content is portaled outside contentEl.
+ if (event.target instanceof Element && event.target.closest('[role="menu"]')) return;
+ event.preventDefault();
+ event.stopPropagation();
closeDropdown(false);
}
@@ -302,10 +309,7 @@
import { onMount, onDestroy } from 'svelte';
- let onPointerDown: ((e: PointerEvent) => void) | undefined;
onMount(() => {
- onPointerDown = (e) => handleWindowPointerDown(e);
- document.addEventListener('pointerdown', onPointerDown, true);
if (visualViewportAware) {
window.visualViewport?.addEventListener('resize', scheduleSettledPositionUpdates);
window.visualViewport?.addEventListener('scroll', schedulePositionUpdate);
@@ -314,9 +318,6 @@
onDestroy(() => {
if (positionFrame != null) cancelAnimationFrame(positionFrame);
for (const timer of settleTimers) window.clearTimeout(timer);
- if (onPointerDown) {
- document.removeEventListener('pointerdown', onPointerDown, true);
- }
if (visualViewportAware) {
window.visualViewport?.removeEventListener('resize', scheduleSettledPositionUpdates);
window.visualViewport?.removeEventListener('scroll', schedulePositionUpdate);
@@ -325,6 +326,7 @@
e.stopPropagation()}
+ on:click={(e) => {
+ e.stopPropagation();
+ if (closeOnSelect && !e.defaultPrevented) closeDropdown();
+ }}
on:pointerdown={(e) => e.stopPropagation()}
>
diff --git a/src/lib/components/common/FileItem.svelte b/src/lib/components/common/FileItem.svelte
index cf1695018c2f..1172f05c428a 100644
--- a/src/lib/components/common/FileItem.svelte
+++ b/src/lib/components/common/FileItem.svelte
@@ -2,7 +2,7 @@
import { createEventDispatcher, getContext } from 'svelte';
import { WEBUI_API_BASE_URL } from '$lib/constants';
- import { formatFileSize } from '$lib/utils';
+ import { formatFileSize, safeLinkUrl } from '$lib/utils';
import { settings, showFileNavPath } from '$lib/stores';
import FileItemModal from './FileItemModal.svelte';
@@ -71,7 +71,7 @@
} else {
window.open(`${WEBUI_API_BASE_URL}/files/${url}/content`, '_blank').focus();
}
- } else {
+ } else if (safeLinkUrl(url)) {
window.open(`${url}`, '_blank').focus();
}
}
diff --git a/src/lib/components/common/FileItemModal.svelte b/src/lib/components/common/FileItemModal.svelte
index f17b70d329d3..a19e5246d568 100644
--- a/src/lib/components/common/FileItemModal.svelte
+++ b/src/lib/components/common/FileItemModal.svelte
@@ -4,7 +4,7 @@
import { getContext, onMount, tick } from 'svelte';
- import { formatFileSize, getLineCount } from '$lib/utils';
+ import { formatFileSize, getLineCount, safeLinkUrl } from '$lib/utils';
import { WEBUI_API_BASE_URL } from '$lib/constants';
import { settings } from '$lib/stores';
import { getKnowledgeById } from '$lib/apis/knowledge';
@@ -264,7 +264,7 @@
href="#"
class="hover:underline line-clamp-1"
on:click|preventDefault={() => {
- if (item.type === 'file' || item.url) {
+ if (item.type === 'file' || safeLinkUrl(item.url)) {
let fileId = item?.id ?? item?.tempId;
window.open(
item.type === 'file'
diff --git a/src/lib/components/common/InterfaceSettings.svelte b/src/lib/components/common/InterfaceSettings.svelte
index c40cd3b495ec..d64c56291d76 100644
--- a/src/lib/components/common/InterfaceSettings.svelte
+++ b/src/lib/components/common/InterfaceSettings.svelte
@@ -42,7 +42,6 @@
let userLocation = false;
// Interface
- let defaultModelId = '';
let showUsername = false;
let highContrastMode = false;
@@ -247,7 +246,6 @@
}
saveSettings({
- models: [defaultModelId],
imageCompressionSize: imageCompressionSize,
fontFamily
});
@@ -387,11 +385,6 @@
imageCompressionSize = currentSettings?.imageCompressionSize ?? { width: '', height: '' };
imageCompressionInChannels = currentSettings?.imageCompressionInChannels ?? true;
- defaultModelId = currentSettings?.models?.at(0) ?? '';
- if ($config?.default_models) {
- defaultModelId = $config.default_models.split(',')[0];
- }
-
backgroundImageUrl = currentSettings?.backgroundImageUrl ?? null;
webSearch = currentSettings?.webSearch ?? null;
@@ -459,7 +452,9 @@
/>
{
editHandler();
closeMenu();
@@ -69,8 +72,9 @@
{#if $config.features.enable_community_sharing}
{
shareHandler();
closeMenu();
@@ -110,8 +114,9 @@
{
deleteHandler();
closeMenu();
diff --git a/src/lib/components/workspace/Skills.svelte b/src/lib/components/workspace/Skills.svelte
index 876e44b2cfbf..20dbb211a9df 100644
--- a/src/lib/components/workspace/Skills.svelte
+++ b/src/lib/components/workspace/Skills.svelte
@@ -584,7 +584,8 @@
{
- toggleSkillById(localStorage.token, skill.id);
+ await toggleSkillById(localStorage.token, skill.id);
+ _skills.set(await getSkills(localStorage.token));
}}
/>
diff --git a/src/lib/i18n/index.ts b/src/lib/i18n/index.ts
index 7e6ea803004b..48872052ba59 100644
--- a/src/lib/i18n/index.ts
+++ b/src/lib/i18n/index.ts
@@ -6,6 +6,7 @@ import { writable } from 'svelte/store';
import type { I18nOverrides } from '$lib/utils/translationDictionary';
import { assembleSettingsTranslations } from './settings-translations';
+import languages from './locales/languages.json';
let overrides: I18nOverrides = {};
@@ -71,12 +72,25 @@ const createIsLoadingStore = (i18n: i18nType) => {
return isLoading;
};
+const languageCodes = languages.map(({ code }) => code);
+
+const toBundleCode = (code: string) => {
+ const ownBundle = languageCodes.find((bundle) => bundle.toLowerCase() === code.toLowerCase());
+ if (ownBundle) return ownBundle;
+ const baseLanguage = code.split('-')[0].toLowerCase();
+ const primaryBundle = `${baseLanguage}-${baseLanguage.toUpperCase()}`;
+ if (languageCodes.includes(primaryBundle)) return primaryBundle;
+ // the first sibling of a regional code can be another script (zh-HK would get zh-CN)
+ if (code.includes('-')) return code;
+ return languageCodes.find((bundle) => bundle.startsWith(`${baseLanguage}-`)) ?? code;
+};
+
export const initI18n = (defaultLocale?: string, value: I18nOverrides = {}) => {
overrides = value;
const detectionOrder = defaultLocale
? ['querystring', 'localStorage']
: ['querystring', 'localStorage', 'navigator'];
- const fallbackDefaultLocale = defaultLocale ? [defaultLocale] : ['en-US'];
+ const fallbackDefaultLocale = defaultLocale ? [defaultLocale, 'en-US'] : ['en-US'];
return i18next
.use(resourcesToBackend(loadResource))
@@ -87,7 +101,8 @@ export const initI18n = (defaultLocale?: string, value: I18nOverrides = {}) => {
order: detectionOrder,
caches: ['localStorage'],
lookupQuerystring: 'lang',
- lookupLocalStorage: 'locale'
+ lookupLocalStorage: 'locale',
+ convertDetectedLanguage: toBundleCode
},
fallbackLng: {
fr: ['fr-FR'],
@@ -106,10 +121,7 @@ export const initI18n = (defaultLocale?: string, value: I18nOverrides = {}) => {
const i18n = createI18nStore(i18next);
const isLoadingStore = createIsLoadingStore(i18next);
-export const getLanguages = async () => {
- const languages = (await import(`./locales/languages.json`)).default;
- return languages;
-};
+export const getLanguages = async () => languages;
export const changeLanguage = (lang: string) => {
document.documentElement.setAttribute('lang', lang);
return i18next.changeLanguage(lang);
diff --git a/src/lib/i18n/locales/ar-BH/translation.json b/src/lib/i18n/locales/ar-BH/translation.json
index 3ae865de16f0..40113ba20a28 100644
--- a/src/lib/i18n/locales/ar-BH/translation.json
+++ b/src/lib/i18n/locales/ar-BH/translation.json
@@ -107,6 +107,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "يتوفر الآن إصدار جديد (v{{LATEST_VERSION}}).",
"A private conversation between you and selected users": "محادثة خاصة بينك وبين مستخدمين محددين",
"a user": "مستخدم",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "قبول اقتراح الإكمال التلقائي\nالانتقال إلى متغير المطالبة",
"Access": "الوصول",
"Access Control": "التحكم في الوصول",
@@ -379,6 +380,7 @@
"Chat Menu": "قائمة المحادثة",
"Chat moved successfully": "تم نقل المحادثة بنجاح",
"Chat Permissions": "أذونات المحادثة",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "تم إلغاء مشاركة المحادثة بنجاح.",
"Chat Uploads": "ملفات المحادثة المرفوعة",
"Chat Variables": "متغيرات المحادثة",
@@ -534,6 +536,7 @@
"Could not check for updates": "تعذّر التحقق من التحديثات",
"Could not load release notes.": "تعذّر تحميل ملاحظات الإصدار.",
"Could not read file.": "تعذّرت قراءة الملف.",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "لم تجد لغتك؟",
"CPU": "وحدة المعالجة المركزية",
"Create": "إنشاء",
@@ -967,6 +970,8 @@
"Experience": "تجربة الاستخدام",
"Experimental": "تجريبي",
"Explain": "شرح",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "تم الاستكشاف",
"Exploring": "جارٍ الاستكشاف",
"Export": "تصدير",
@@ -1094,6 +1099,7 @@
"Follow up: {{question}}": "متابعة: {{question}}",
"Followed instructions perfectly": "اتبعت التعليمات على أكمل وجه",
"for placeholders": "للعناصر النائبة",
+ "for what to do with my kids' art": "",
"Fork": "تفريع",
"Fork chat": "تفريع المحادثة",
"Fork the current chat branch into a new chat.": "تفريع الفرع الحالي من المحادثة إلى محادثة جديدة.",
@@ -1141,6 +1147,8 @@
"Get information on {{name}} in the UI": "الحصول على معلومات عن {{name}} في الواجهة",
"Get started": "ابدأ الآن",
"Get started with {{WEBUI_NAME}}": "ابدأ باستخدام {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "على مستوى النظام",
"Good Response": "استجابة جيدة",
"Google": "Google",
@@ -1166,6 +1174,8 @@
"Height": "الارتفاع",
"Hello, {{name}}": " {{name}} مرحبا",
"Help": "مساعدة",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "ساعد المجتمع على اكتشاف نماذج رائعة",
"Help us translate Open WebUI!": "ساعدنا في ترجمة Open WebUI!",
"Hex Color": "لون بالنظام الست عشري",
@@ -1196,6 +1206,7 @@
"Identity audit": "تدقيق الهوية",
"Idle only": "الخاملة فقط",
"Idle Timeout": "مهلة الخمول",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "صورة",
"Image Generation": "توليد الصور",
"Image Max Compression Size": "الحد الأقصى لأبعاد الصورة بعد الضغط",
@@ -1228,7 +1239,6 @@
"Input Key (e.g. text, unet_name, steps)": "مفتاح الإدخال (مثل text, unet_name, steps)",
"Input needed": "مطلوب إدخال",
"Input Variables": "متغيرات الإدخال",
- "Insert": "إدراج",
"Insert into note": "إدراج في الملاحظة",
"Instructions": "التعليمات",
"Integrations": "التكاملات",
@@ -1361,7 +1371,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "يمكن تنزيل 3 نماذج كحد أقصى في وقت واحد. الرجاء معاودة المحاولة في وقت لاحق.",
"May": "مايو",
"MBR": "عضو",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "دعم MCP تجريبي، وتتغير مواصفاته باستمرار، مما قد يؤدي إلى حالات عدم توافق. يتولى فريق Open WebUI صيانة دعم مواصفات OpenAPI مباشرةً، مما يجعله الخيار الأكثر موثوقية من حيث التوافق.",
"Medium": "متوسط",
"Member removed successfully": "تمت إزالة العضو بنجاح",
@@ -1600,6 +1609,7 @@
"OAuth Server URL": "عنوان URL لخادم OAuth",
"OAuth session disconnected": "تم قطع اتصال جلسة OAuth",
"October": "اكتوبر",
+ "of a website's sticky header": "",
"Off": "أغلاق",
"Okay, Let's Go!": "حسنا دعنا نذهب!",
"OLED Dark": "OLED داكن",
@@ -1649,7 +1659,6 @@
"OpenAI API Key is required.": "OpenAI API.مطلوب مفتاح ",
"OpenAI API settings updated": "تم تحديث إعدادات OpenAI API",
"OpenAI URL/Key required.": "URL/مفتاح OpenAI.مطلوب عنوان ",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "مواصفة OpenAPI",
"openapi.json URL or Path": "عنوان URL أو مسار openapi.json",
"optional": "اختياري",
@@ -1662,6 +1671,7 @@
"out of": "من أصل",
"Output": "المخرجات",
"OUTPUT": "المخرجات",
+ "Overcome procrastination": "",
"Overview": "نظرة عامة",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "عنوان URL لواجهة API الخاصة بـ PaddleOCR-vl مطلوب.",
@@ -3120,6 +3130,8 @@
"Show Files": "عرض الملفات",
"Show Hidden Files": "عرض الملفات المخفية",
"Show image preview": "عرض معاينة الصورة",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "عرض النموذج",
"Show more": "عرض المزيد",
"Show or switch the current model.": "عرض النموذج الحالي أو تبديله.",
@@ -3237,6 +3249,8 @@
"Task List": "قائمة مهام",
"Tasks": "المهام",
"tasks completed": "— المهام المكتملة",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "أخبرنا المزيد:",
"Temporary": "مؤقت",
"Temporary Chat": "محادثة مؤقتة",
@@ -3372,6 +3386,7 @@
"Type Hugging Face Resolve (Download) URL": "اكتب عنوان URL لحل مشكلة الوجه (تنزيل).",
"Type your answer": "اكتب إجابتك",
"Uh-oh! There was an issue with the response.": "أوه! حدثت مشكلة في الرد.",
+ "Unarchive": "",
"Unarchive Chat": "إلغاء أرشفة المحادثة",
"Unassigned": "غير معيّن",
"Underline": "تسطير",
@@ -3480,6 +3495,7 @@
"Visible": "ظاهر",
"Visible to all users": "ظاهر لجميع المستخدمين",
"Visual": "مرئي",
+ "vocabulary for a college entrance exam": "",
"Voice": "الصوت",
"Voice Input": "إدخال صوتي",
"Voice mode": "الوضع الصوتي",
@@ -3510,6 +3526,7 @@
"Weekly": "أسبوعيًا",
"Weekly at": "أسبوعيًا في",
"Welcome to your AI home.": "مرحبًا بك في موطنك للذكاء الاصطناعي.",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "ما الذي تحاول تحقيقه؟",
"What are you working on?": "على ماذا تعمل؟",
"What is NOT shared:": "ما لا تتم مشاركته:",
diff --git a/src/lib/i18n/locales/ar/translation.json b/src/lib/i18n/locales/ar/translation.json
index a25fff7b629d..29719f6c4f82 100644
--- a/src/lib/i18n/locales/ar/translation.json
+++ b/src/lib/i18n/locales/ar/translation.json
@@ -107,6 +107,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "يتوفر الآن إصدار جديد (v{{LATEST_VERSION}}).",
"A private conversation between you and selected users": "محادثة خاصة بينك وبين مستخدمين محددين",
"a user": "مستخدم",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "قبول اقتراح الإكمال التلقائي\nالانتقال إلى متغير المطالبة",
"Access": "الوصول",
"Access Control": "التحكم في الوصول",
@@ -379,6 +380,7 @@
"Chat Menu": "قائمة المحادثة",
"Chat moved successfully": "تم نقل المحادثة بنجاح",
"Chat Permissions": "أذونات المحادثة",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "تم إلغاء مشاركة المحادثة بنجاح.",
"Chat Uploads": "ملفات المحادثة المرفوعة",
"Chat Variables": "متغيرات المحادثة",
@@ -534,6 +536,7 @@
"Could not check for updates": "تعذّر التحقق من التحديثات",
"Could not load release notes.": "تعذّر تحميل ملاحظات الإصدار.",
"Could not read file.": "تعذّرت قراءة الملف.",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "لم تجد لغتك؟",
"CPU": "وحدة المعالجة المركزية",
"Create": "إنشاء",
@@ -967,6 +970,8 @@
"Experience": "تجربة الاستخدام",
"Experimental": "تجريبي",
"Explain": "شرح",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "تم الاستكشاف",
"Exploring": "جارٍ الاستكشاف",
"Export": "تصدير",
@@ -1094,6 +1099,7 @@
"Follow up: {{question}}": "متابعة: {{question}}",
"Followed instructions perfectly": "اتبعت التعليمات على أكمل وجه",
"for placeholders": "للعناصر النائبة",
+ "for what to do with my kids' art": "",
"Fork": "تفريع",
"Fork chat": "تفريع الدردشة",
"Fork the current chat branch into a new chat.": "تفريع الفرع الحالي من الدردشة إلى دردشة جديدة.",
@@ -1141,6 +1147,8 @@
"Get information on {{name}} in the UI": "الحصول على معلومات عن {{name}} في الواجهة",
"Get started": "ابدأ الآن",
"Get started with {{WEBUI_NAME}}": "ابدأ باستخدام {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "عام",
"Good Response": "استجابة جيدة",
"Google": "Google",
@@ -1166,6 +1174,8 @@
"Height": "الارتفاع",
"Hello, {{name}}": " {{name}} مرحبا",
"Help": "مساعدة",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "ساعد المجتمع على اكتشاف نماذج رائعة",
"Help us translate Open WebUI!": "ساعدنا في ترجمة Open WebUI!",
"Hex Color": "لون سداسي",
@@ -1196,6 +1206,7 @@
"Identity audit": "تدقيق الهوية",
"Idle only": "الخاملة فقط",
"Idle Timeout": "مهلة الخمول",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "صورة",
"Image Generation": "توليد الصور",
"Image Max Compression Size": "الحد الأقصى لضغط الصورة",
@@ -1228,7 +1239,6 @@
"Input Key (e.g. text, unet_name, steps)": "مفتاح الإدخال (مثل text, unet_name, steps)",
"Input needed": "مطلوب إدخال",
"Input Variables": "متغيرات الإدخال",
- "Insert": "إدراج",
"Insert into note": "إدراج في الملاحظة",
"Instructions": "التعليمات",
"Integrations": "التكاملات",
@@ -1361,7 +1371,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "يمكن تنزيل 3 نماذج كحد أقصى في وقت واحد. الرجاء معاودة المحاولة في وقت لاحق.",
"May": "مايو",
"MBR": "عضو",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "دعم MCP تجريبي، وتتغير مواصفاته باستمرار، مما قد يؤدي إلى حالات عدم توافق. يتولى فريق Open WebUI صيانة دعم مواصفات OpenAPI مباشرةً، مما يجعله الخيار الأكثر موثوقية من حيث التوافق.",
"Medium": "متوسط",
"Member removed successfully": "تمت إزالة العضو بنجاح",
@@ -1600,6 +1609,7 @@
"OAuth Server URL": "عنوان URL لخادم OAuth",
"OAuth session disconnected": "تم قطع اتصال جلسة OAuth",
"October": "اكتوبر",
+ "of a website's sticky header": "",
"Off": "أغلاق",
"Okay, Let's Go!": "حسنا دعنا نذهب!",
"OLED Dark": "OLED داكن",
@@ -1649,7 +1659,6 @@
"OpenAI API Key is required.": "OpenAI API.مطلوب مفتاح ",
"OpenAI API settings updated": "تم تحديث إعدادات OpenAI API",
"OpenAI URL/Key required.": "URL/مفتاح OpenAI.مطلوب عنوان ",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "مواصفة OpenAPI",
"openapi.json URL or Path": "عنوان URL أو مسار openapi.json",
"optional": "اختياري",
@@ -1662,6 +1671,7 @@
"out of": "من أصل",
"Output": "المخرجات",
"OUTPUT": "الإخراج",
+ "Overcome procrastination": "",
"Overview": "نظرة عامة",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "عنوان URL لواجهة API الخاصة بـ PaddleOCR-vl مطلوب.",
@@ -3120,6 +3130,8 @@
"Show Files": "عرض الملفات",
"Show Hidden Files": "عرض الملفات المخفية",
"Show image preview": "عرض معاينة الصورة",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "عرض النموذج",
"Show more": "عرض المزيد",
"Show or switch the current model.": "عرض النموذج الحالي أو تبديله.",
@@ -3237,6 +3249,8 @@
"Task List": "قائمة مهام",
"Tasks": "المهام",
"tasks completed": "— المهام المكتملة",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "أخبرنا المزيد:",
"Temporary": "مؤقت",
"Temporary Chat": "محادثة مؤقتة",
@@ -3372,6 +3386,7 @@
"Type Hugging Face Resolve (Download) URL": "اكتب عنوان URL لحل مشكلة الوجه (تنزيل).",
"Type your answer": "اكتب إجابتك",
"Uh-oh! There was an issue with the response.": "أوه! حدثت مشكلة في الرد.",
+ "Unarchive": "",
"Unarchive Chat": "إلغاء أرشفة المحادثة",
"Unassigned": "غير معيّن",
"Underline": "تسطير",
@@ -3480,6 +3495,7 @@
"Visible": "ظاهر",
"Visible to all users": "ظاهر لجميع المستخدمين",
"Visual": "مرئي",
+ "vocabulary for a college entrance exam": "",
"Voice": "الصوت",
"Voice Input": "إدخال صوتي",
"Voice mode": "الوضع الصوتي",
@@ -3510,6 +3526,7 @@
"Weekly": "أسبوعيًا",
"Weekly at": "أسبوعيًا في",
"Welcome to your AI home.": "مرحبًا بك في موطنك للذكاء الاصطناعي.",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "ما الذي تحاول تحقيقه؟",
"What are you working on?": "على ماذا تعمل؟",
"What is NOT shared:": "ما لا تتم مشاركته:",
diff --git a/src/lib/i18n/locales/az-AZ/translation.json b/src/lib/i18n/locales/az-AZ/translation.json
index 1c0695ccb722..e18db8d1dccd 100644
--- a/src/lib/i18n/locales/az-AZ/translation.json
+++ b/src/lib/i18n/locales/az-AZ/translation.json
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Yeni versiya (v{{LATEST_VERSION}}) artıq mövcuddur.",
"A private conversation between you and selected users": "Sizinlə seçilmiş istifadəçilər arasında şəxsi söhbət",
"a user": "istifadəçi",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Avtomatik tamamlama təklifini qəbul et\nSorğu dəyişəninə keç",
"Access": "Giriş",
"Access Control": "Girişə nəzarət",
@@ -343,6 +344,7 @@
"Chat Menu": "Çat menyusu",
"Chat moved successfully": "Çat uğurla köçürüldü",
"Chat Permissions": "Çat icazələri",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "Çatın paylaşımı uğurla ləğv edildi.",
"Chat Uploads": "Çata yüklənən fayllar",
"Chat Variables": "Çat dəyişənləri",
@@ -494,6 +496,7 @@
"Could not check for updates": "Yeniləmələri yoxlamaq mümkün olmadı",
"Could not load release notes.": "Buraxılış qeydlərini yükləmək mümkün olmadı.",
"Could not read file.": "Fayl oxuna bilmədi.",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "Dilinizi tapa bilmədiniz?",
"CPU": "Mərkəzi prosessor (CPU)",
"Create": "Yarat",
@@ -919,6 +922,8 @@
"Experience": "İstifadə təcrübəsi",
"Experimental": "Eksperimental",
"Explain": "İzah et",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "Araşdırıldı",
"Exploring": "Araşdırılır",
"Export": "İxrac et",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "Davam sualı: {{question}}",
"Followed instructions perfectly": "Təlimatlara mükəmməl əməl edildi",
"for placeholders": "yer tutucular üçün",
+ "for what to do with my kids' art": "",
"Fork": "Yeni qol yarat",
"Fork chat": "Çatın yeni qolunu yarat",
"Fork the current chat branch into a new chat.": "Cari çat qolundan yeni çat yaradın.",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "İnterfeysdə {{name}} haqqında məlumat əldə edin",
"Get started": "Başlayın",
"Get started with {{WEBUI_NAME}}": "{{WEBUI_NAME}} ilə başlayın",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Qlobal",
"Good Response": "Yaxşı cavab",
"Google": "Google",
@@ -1118,6 +1126,8 @@
"Height": "Hündürlük",
"Hello, {{name}}": "Salam, {{name}}",
"Help": "Kömək",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "İcmanın möhtəşəm modelləri kəşf etməsinə kömək edin",
"Help us translate Open WebUI!": "Open WebUI-ni tərcümə etməyimizə kömək edin!",
"Hex Color": "Hex Rəngi",
@@ -1148,6 +1158,7 @@
"Identity audit": "Kimlik auditi",
"Idle only": "Yalnız boşdayanma zamanı",
"Idle Timeout": "Boşdayanma vaxt həddi",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Şəkil",
"Image Generation": "Şəkil yaradılması",
"Image Max Compression Size": "Şəklin maksimum sıxılma ölçüsü",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "Giriş açarı (məs. text, unet_name, steps)",
"Input needed": "İstifadəçi girişi tələb olunur",
"Input Variables": "Giriş dəyişənləri",
- "Insert": "Daxil et",
"Insert into note": "Qeydə əlavə et",
"Instructions": "Təlimatlar",
"Integrations": "İnteqrasiyalar",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Eyni vaxtda maksimum 3 model yüklənə bilər. Zəhmət olmasa bir az sonra yenidən cəhd edin.",
"May": "May",
"MBR": "MBR",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "MCP dəstəyi eksperimentaldır və spesifikasiyası tez-tez dəyişir, bu da uyğunsuzluqlara səbəb ola bilər. OpenAPI spesifikasiyası birbaşa Open WebUI komandası tərəfindən dəstəklənir və daha etibarlıdır.",
"Medium": "Orta",
"Member removed successfully": "Üzv uğurla çıxarıldı",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "OAuth server URL-i",
"OAuth session disconnected": "OAuth sessiyasının bağlantısı kəsildi",
"October": "Oktyabr",
+ "of a website's sticky header": "",
"Off": "Bağlı",
"Okay, Let's Go!": "Yaxşı, başlayaq!",
"OLED Dark": "OLED Qara",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "OpenAI API Açarı tələb olunur.",
"OpenAI API settings updated": "OpenAI API ayarları yeniləndi",
"OpenAI URL/Key required.": "OpenAI URL/Açar tələb olunur.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "OpenAPI Spesifikasiyası",
"openapi.json URL or Path": "openapi.json URL-i və ya Yolu",
"optional": "istəyə bağlı",
@@ -1610,6 +1619,7 @@
"out of": "/",
"Output": "Çıxış",
"OUTPUT": "ÇIXIŞ",
+ "Overcome procrastination": "",
"Overview": "İcmal",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "PaddleOCR-vl API URL-i tələb olunur.",
@@ -3056,6 +3066,8 @@
"Show Files": "Faylları Göstər",
"Show Hidden Files": "Gizli faylları göstər",
"Show image preview": "Şəkil önizləməsini göstər",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Modeli Göstər",
"Show more": "Daha çox göstər",
"Show or switch the current model.": "Cari modeli göstərin və ya dəyişin.",
@@ -3169,6 +3181,8 @@
"Task List": "Tapşırıq siyahısı",
"Tasks": "Tapşırıqlar",
"tasks completed": "tapşırıq tamamlanıb",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Bizə daha çox məlumat verin:",
"Temporary": "Müvəqqəti",
"Temporary Chat": "Müvəqqəti çat",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "Hugging Face Resolve (Yükləmə) URL-ni yazın",
"Type your answer": "Cavabınızı yazın",
"Uh-oh! There was an issue with the response.": "Vay! Cavabda problem yarandı.",
+ "Unarchive": "",
"Unarchive Chat": "Çatı arxivdən çıxar",
"Unassigned": "Təyin edilməyib",
"Underline": "Altdan xətt",
@@ -3412,6 +3427,7 @@
"Visible": "Görünən",
"Visible to all users": "Bütün istifadəçilərə görünür",
"Visual": "Vizual",
+ "vocabulary for a college entrance exam": "",
"Voice": "Səs",
"Voice Input": "Səsli giriş",
"Voice mode": "Səs rejimi",
@@ -3442,6 +3458,7 @@
"Weekly": "Həftəlik",
"Weekly at": "Hər həftə saat",
"Welcome to your AI home.": "Süni intellekt məkanınıza xoş gəlmisiniz.",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "Nəyə nail olmaq istəyirsiniz?",
"What are you working on?": "Nəyin üzərində işləyirsiniz?",
"What is NOT shared:": "Nələr paylaşılmır:",
diff --git a/src/lib/i18n/locales/bg-BG/translation.json b/src/lib/i18n/locales/bg-BG/translation.json
index 70704bef624a..606015b0fefa 100644
--- a/src/lib/i18n/locales/bg-BG/translation.json
+++ b/src/lib/i18n/locales/bg-BG/translation.json
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Вече е налична нова версия (v{{LATEST_VERSION}}).",
"A private conversation between you and selected users": "Личен разговор между вас и избрани потребители",
"a user": "потребител",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Приеми автоматичното допълване\nПремини към променлива на промпта",
"Access": "Достъп",
"Access Control": "Контрол на достъпа",
@@ -343,6 +344,7 @@
"Chat Menu": "Меню на чата",
"Chat moved successfully": "Чатът е преместен успешно",
"Chat Permissions": "Разрешения за чат",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "Споделянето на чата е прекратено успешно.",
"Chat Uploads": "Файлове, качени в чата",
"Chat Variables": "Променливи на чата",
@@ -494,6 +496,7 @@
"Could not check for updates": "Неуспешна проверка за актуализации",
"Could not load release notes.": "Бележките по изданието не можаха да се заредят.",
"Could not read file.": "Файлът не можа да се прочете.",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "Не намирате своя език?",
"CPU": "CPU",
"Create": "Създай",
@@ -919,6 +922,8 @@
"Experience": "Потребителско изживяване",
"Experimental": "Експериментално",
"Explain": "Обясни",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "Проучено",
"Exploring": "Проучване",
"Export": "Износ",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "Последващ въпрос: {{question}}",
"Followed instructions perfectly": "Следвайте инструкциите перфектно",
"for placeholders": "за заместители",
+ "for what to do with my kids' art": "",
"Fork": "Разклоняване",
"Fork chat": "Разклоняване на чата",
"Fork the current chat branch into a new chat.": "Създаване на нов чат от текущото разклонение на чата.",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "Получаване на информация за {{name}} в интерфейса",
"Get started": "Започнете",
"Get started with {{WEBUI_NAME}}": "Започнете с {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Глобално",
"Good Response": "Добър отговор",
"Google": "Google",
@@ -1118,6 +1126,8 @@
"Height": "Височина",
"Hello, {{name}}": "Здравей, {{name}}",
"Help": "Помощ",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "Помогнете на общността да открива чудесни модели",
"Help us translate Open WebUI!": "Помогнете ни да преведем Open WebUI!",
"Hex Color": "Hex цвят",
@@ -1148,6 +1158,7 @@
"Identity audit": "Одит на идентичността",
"Idle only": "Само при неактивност",
"Idle Timeout": "Време за изчакване при неактивност",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Изображение",
"Image Generation": "Генериране на изображения",
"Image Max Compression Size": "Максимален размер на компресия на изображения",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "Входен ключ (напр. text, unet_name, steps)",
"Input needed": "Необходимо е въвеждане",
"Input Variables": "Входни променливи",
- "Insert": "Вмъкване",
"Insert into note": "Вмъкване в бележка",
"Instructions": "Инструкции",
"Integrations": "Интеграции",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Максимум 3 модела могат да бъдат сваляни едновременно. Моля, опитайте отново по-късно.",
"May": "Май",
"MBR": "ЧЛЕНОВЕ",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "Поддръжката на MCP е експериментална и спецификацията му се променя често, което може да доведе до несъвместимости. Поддръжката на спецификацията OpenAPI се осигурява пряко от екипа на Open WebUI, което я прави по-надежден избор за съвместимост.",
"Medium": "Средно",
"Member removed successfully": "Членът е премахнат успешно",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "URL адрес на OAuth сървъра",
"OAuth session disconnected": "OAuth сесията е прекъсната",
"October": "Октомври",
+ "of a website's sticky header": "",
"Off": "Изкл.",
"Okay, Let's Go!": "ОК, Нека започваме!",
"OLED Dark": "OLED тъмно",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "OpenAI API ключ е задължителен.",
"OpenAI API settings updated": "Настройките на OpenAI API са актуализирани",
"OpenAI URL/Key required.": "OpenAI URL/Key е задължителен.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "OpenAPI спецификация",
"openapi.json URL or Path": "URL адрес или път до openapi.json",
"optional": "незадължително",
@@ -1610,6 +1619,7 @@
"out of": "от",
"Output": "Изход",
"OUTPUT": "ИЗХОД",
+ "Overcome procrastination": "",
"Overview": "Преглед",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "Изисква се URL адрес на PaddleOCR-vl API.",
@@ -3056,6 +3066,8 @@
"Show Files": "Показване на файлове",
"Show Hidden Files": "Показване на скритите файлове",
"Show image preview": "Показване на преглед на изображението",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Покажи модел",
"Show more": "Показване на още",
"Show or switch the current model.": "Показване или смяна на текущия модел.",
@@ -3169,6 +3181,8 @@
"Task List": "Списък със задачи",
"Tasks": "Задачи",
"tasks completed": "— завършени задачи",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Повече информация:",
"Temporary": "Временен",
"Temporary Chat": "Временен чат",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "Въведете Hugging Face Resolve (Изтегляне) URL",
"Type your answer": "Въведете отговора си",
"Uh-oh! There was an issue with the response.": "Ох! Имаше проблем с отговора.",
+ "Unarchive": "",
"Unarchive Chat": "Разархивирай чат",
"Unassigned": "Неразпределени",
"Underline": "Подчертаване",
@@ -3412,6 +3427,7 @@
"Visible": "Видими",
"Visible to all users": "Видимо за всички потребители",
"Visual": "Визуален",
+ "vocabulary for a college entrance exam": "",
"Voice": "Глас",
"Voice Input": "Гласов вход",
"Voice mode": "Гласов режим",
@@ -3442,6 +3458,7 @@
"Weekly": "Ежеседмично",
"Weekly at": "Всяка седмица в",
"Welcome to your AI home.": "Добре дошли във вашия AI дом.",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "Какво се опитвате да постигнете?",
"What are you working on?": "Върху какво работите?",
"What is NOT shared:": "Какво НЕ се споделя:",
diff --git a/src/lib/i18n/locales/bn-BD/translation.json b/src/lib/i18n/locales/bn-BD/translation.json
index 5a6477172064..561843913d12 100644
--- a/src/lib/i18n/locales/bn-BD/translation.json
+++ b/src/lib/i18n/locales/bn-BD/translation.json
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "একটি নতুন সংস্করণ (v{{LATEST_VERSION}}) এখন উপলব্ধ।",
"A private conversation between you and selected users": "আপনার ও নির্বাচিত ব্যবহারকারীদের মধ্যে ব্যক্তিগত কথোপকথন",
"a user": "একজন ব্যাবহারকারী",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "স্বয়ংসম্পূর্ণকরণের প্রস্তাব গ্রহণ করুন\nপ্রম্পটের চলকে যান",
"Access": "প্রবেশাধিকার",
"Access Control": "প্রবেশাধিকার নিয়ন্ত্রণ",
@@ -343,6 +344,7 @@
"Chat Menu": "চ্যাটের মেনু",
"Chat moved successfully": "চ্যাট সফলভাবে সরানো হয়েছে",
"Chat Permissions": "চ্যাটের অনুমতিসমূহ",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "চ্যাটের শেয়ারিং সফলভাবে বন্ধ হয়েছে।",
"Chat Uploads": "চ্যাটে আপলোড করা ফাইল",
"Chat Variables": "চ্যাটের চলকসমূহ",
@@ -494,6 +496,7 @@
"Could not check for updates": "হালনাগাদ পরীক্ষা করা যায়নি",
"Could not load release notes.": "সংস্করণের নোট লোড করা যায়নি।",
"Could not read file.": "ফাইল পড়া যায়নি।",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "আপনার ভাষা খুঁজে পাননি?",
"CPU": "CPU",
"Create": "তৈরি করুন",
@@ -919,6 +922,8 @@
"Experience": "ব্যবহারের অভিজ্ঞতা",
"Experimental": "পরিক্ষামূলক",
"Explain": "ব্যাখ্যা করুন",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "অন্বেষণ করা হয়েছে",
"Exploring": "অন্বেষণ করা হচ্ছে",
"Export": "রপ্তানি",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "পরবর্তী প্রশ্ন: {{question}}",
"Followed instructions perfectly": "নির্দেশাবলী নিখুঁতভাবে অনুসরণ করা হয়েছে",
"for placeholders": "প্লেসহোল্ডারের জন্য",
+ "for what to do with my kids' art": "",
"Fork": "নতুন শাখা তৈরি করুন",
"Fork chat": "চ্যাটের নতুন শাখা তৈরি করুন",
"Fork the current chat branch into a new chat.": "বর্তমান চ্যাটের শাখা থেকে নতুন চ্যাট তৈরি করুন।",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "ইন্টারফেসে {{name}} সম্পর্কে তথ্য পান",
"Get started": "শুরু করুন",
"Get started with {{WEBUI_NAME}}": "{{WEBUI_NAME}} ব্যবহার শুরু করুন",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "সর্বজনীন",
"Good Response": "ভালো সাড়া",
"Google": "Google",
@@ -1118,6 +1126,8 @@
"Height": "উচ্চতা",
"Hello, {{name}}": "হ্যালো, {{name}}",
"Help": "সহায়তা",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "দারুণ মডেল খুঁজে পেতে কমিউনিটিকে সাহায্য করুন",
"Help us translate Open WebUI!": "Open WebUI অনুবাদে আমাদের সাহায্য করুন!",
"Hex Color": "হেক্স রং",
@@ -1148,6 +1158,7 @@
"Identity audit": "পরিচয় নিরীক্ষা",
"Idle only": "শুধু নিষ্ক্রিয় অবস্থায়",
"Idle Timeout": "নিষ্ক্রিয়তার সময়সীমা",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "ছবি",
"Image Generation": "ছবি তৈরি",
"Image Max Compression Size": "সংকুচিত ছবির সর্বোচ্চ আকার",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "ইনপুট কী (যেমন text, unet_name, steps)",
"Input needed": "ব্যবহারকারীর ইনপুট প্রয়োজন",
"Input Variables": "ইনপুট ভেরিয়েবলসমূহ",
- "Insert": "সন্নিবেশ করুন",
"Insert into note": "নোটে সন্নিবেশ করুন",
"Instructions": "নির্দেশনা",
"Integrations": "ইন্টিগ্রেশনসমূহ",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "একসঙ্গে সর্বোচ্চ তিনটি মডেল ডাউনলোড করা যায়। দয়া করে পরে আবার চেষ্টা করুন।",
"May": "মে",
"MBR": "সদস্য",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "MCP সমর্থন পরীক্ষামূলক এবং এর স্পেসিফিকেশন প্রায়ই বদলায়, যা অসামঞ্জস্য ঘটাতে পারে। OpenAPI স্পেসিফিকেশনের সমর্থন সরাসরি Open WebUI দল রক্ষণাবেক্ষণ করে, তাই সামঞ্জস্যের জন্য এটি বেশি নির্ভরযোগ্য।",
"Medium": "মাঝারি",
"Member removed successfully": "সদস্য সফলভাবে সরানো হয়েছে",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "OAuth সার্ভারের URL",
"OAuth session disconnected": "OAuth সেশন বিচ্ছিন্ন হয়েছে",
"October": "অক্টোবর",
+ "of a website's sticky header": "",
"Off": "বন্ধ",
"Okay, Let's Go!": "ঠিক আছে, চলুন যাই!",
"OLED Dark": "OLED ডার্ক",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "OpenAI API কোড আবশ্যক",
"OpenAI API settings updated": "OpenAI API সেটিংসমূহ আপডেট হয়েছে",
"OpenAI URL/Key required.": "OpenAI URL/Key আবশ্যক",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "OpenAPI স্পেসিফিকেশন",
"openapi.json URL or Path": "openapi.json-এর URL বা পাথ",
"optional": "ঐচ্ছিক",
@@ -1610,6 +1619,7 @@
"out of": "/",
"Output": "আউটপুট",
"OUTPUT": "আউটপুট",
+ "Overcome procrastination": "",
"Overview": "সামগ্রিক চিত্র",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "PaddleOCR-vl API URL প্রয়োজন।",
@@ -3056,6 +3066,8 @@
"Show Files": "ফাইল দেখান",
"Show Hidden Files": "লুকানো ফাইল দেখান",
"Show image preview": "ছবির প্রিভিউ দেখান",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "মডেল দেখান",
"Show more": "আরও দেখান",
"Show or switch the current model.": "বর্তমান মডেল দেখান বা পরিবর্তন করুন।",
@@ -3169,6 +3181,8 @@
"Task List": "কাজের তালিকা",
"Tasks": "কাজসমূহ",
"tasks completed": "কাজ সম্পন্ন",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "আরও বলুন:",
"Temporary": "অস্থায়ী",
"Temporary Chat": "অস্থায়ী চ্যাট",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "Hugging Face থেকে ডাউনলোড করার ইউআরএল টাইপ করুন",
"Type your answer": "আপনার উত্তর লিখুন",
"Uh-oh! There was an issue with the response.": "ওহ! উত্তরে একটি সমস্যা হয়েছে।",
+ "Unarchive": "",
"Unarchive Chat": "চ্যাট আর্কাইভ থেকে ফিরিয়ে আনুন",
"Unassigned": "নির্ধারিত নয়",
"Underline": "আন্ডারলাইন",
@@ -3412,6 +3427,7 @@
"Visible": "দৃশ্যমান",
"Visible to all users": "সব ব্যবহারকারীর কাছে দৃশ্যমান",
"Visual": "ভিজুয়াল",
+ "vocabulary for a college entrance exam": "",
"Voice": "কণ্ঠস্বর",
"Voice Input": "ভয়েস ইনপুট",
"Voice mode": "ভয়েস মোড",
@@ -3442,6 +3458,7 @@
"Weekly": "সাপ্তাহিক",
"Weekly at": "প্রতি সপ্তাহে, সময়:",
"Welcome to your AI home.": "আপনার AI-এর ঘরে স্বাগতম।",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "আপনি কী অর্জন করতে চান?",
"What are you working on?": "আপনি কী নিয়ে কাজ করছেন?",
"What is NOT shared:": "যা শেয়ার করা হয় না:",
diff --git a/src/lib/i18n/locales/bo-TB/translation.json b/src/lib/i18n/locales/bo-TB/translation.json
index 271a862ca8fd..e7c2d374794d 100644
--- a/src/lib/i18n/locales/bo-TB/translation.json
+++ b/src/lib/i18n/locales/bo-TB/translation.json
@@ -62,6 +62,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "པར་གཞི་གསར་པ། (v{{LATEST_VERSION}}) ད་ལྟ་ཡོད།",
"A private conversation between you and selected users": "ཁྱེད་དང་བདམས་པའི་བེད་སྤྱོད་མཁན་བར་གྱི་སྒེར་གྱི་ཁ་བརྡ།",
"a user": "བེད་སྤྱོད་མཁན་ཞིག",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "རང་འགུལ་ཁ་སྐོང་གི་གྲུབ་འབྲས་དང་ལེན།\nའགུལ་སློང་གི་འགྱུར་ཚད་ལ་མཆོང་།",
"Access": "འཛུལ་སྤྱོད།",
"Access Control": "འཛུལ་སྤྱོད་ཚོད་འཛིན།",
@@ -334,6 +335,7 @@
"Chat Menu": "ཁ་བརྡའི་འདེམས་ཐོ།",
"Chat moved successfully": "ཁ་བརྡ་ལེགས་པར་སྤོས་ཟིན།",
"Chat Permissions": "ཁ་བརྡའི་དབང་ཚད།",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "ཁ་བརྡའི་མཉམ་སྤྱོད་ལེགས་པར་མཚམས་བཞག་ཟིན།",
"Chat Uploads": "ཁ་བརྡར་ཡར་སྤར་བྱས་པའི་ཡིག་ཆ།",
"Chat Variables": "ཁ་བརྡའི་འགྱུར་ཚད།",
@@ -484,6 +486,7 @@
"Could not check for updates": "གསར་བཅོས་ཡོད་མེད་ཞིབ་བཤེར་མ་ཐུབ།",
"Could not load release notes.": "པར་འགྲེམས་མཆན་བུ་འཇུག་མ་ཐུབ།",
"Could not read file.": "ཡིག་ཆ་ཀློག་མ་ཐུབ།",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "ཁྱེད་ཀྱི་སྐད་ཡིག་མ་རྙེད་དམ།",
"CPU": "CPU",
"Create": "གསར་བཟོ།",
@@ -907,6 +910,8 @@
"Experience": "བེད་སྤྱོད་ཉམས་མྱོང་།",
"Experimental": "ཚོད་ལྟའི་རང་བཞིན།",
"Explain": "འགྲེལ་བཤད།",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "ཞིབ་འཚོལ་བྱས་ཟིན།",
"Exploring": "ཞིབ་འཚོལ་བྱེད་བཞིན་པ།",
"Export": "ཕྱིར་གཏོང་།",
@@ -1034,6 +1039,7 @@
"Follow up: {{question}}": "རྗེས་མཐུད་འདྲི་བ། {{question}}",
"Followed instructions perfectly": "ལམ་སྟོན་ཡང་དག་པར་བསྒྲུབས།",
"for placeholders": "གནས་འཛིན་རྟགས་ཀྱི་ཆེད་དུ།",
+ "for what to do with my kids' art": "",
"Fork": "ཡལ་ག་བཟོ་བ།",
"Fork chat": "ཁ་བརྡའི་ཡལ་ག་བཟོ་བ།",
"Fork the current chat branch into a new chat.": "ད་ལྟའི་ཁ་བརྡའི་ཡལ་ག་ཁ་བརྡ་གསར་པར་བཟོ་བ།",
@@ -1081,6 +1087,8 @@
"Get information on {{name}} in the UI": "བེད་སྤྱོད་ངོས་སུ་ {{name}} སྐོར་གྱི་གནས་ཚུལ་ལྟ་བ།",
"Get started": "འགོ་འཛུགས།",
"Get started with {{WEBUI_NAME}}": "{{WEBUI_NAME}} དང་མཉམ་དུ་འགོ་འཛུགས་པ།",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "འཛམ་གླིང་ཡོངས་ཀྱི་",
"Good Response": "ལན་ཡག་པོ།",
"Google": "Google",
@@ -1106,6 +1114,8 @@
"Height": "མཐོ་ཚད།",
"Hello, {{name}}": "བཀྲ་ཤིས་བདེ་ལེགས། {{name}}",
"Help": "རོགས་རམ།",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "སྤྱི་ཚོགས་ཀྱིས་དཔེ་དབྱིབས་ལེགས་པོ་རྙེད་པར་རོགས་རམ་བྱེད་པ།",
"Help us translate Open WebUI!": "Open WebUI ཡིག་སྒྱུར་བྱེད་པར་རོགས་རམ་བྱོས།",
"Hex Color": "Hex ཚོན་མདོག",
@@ -1136,6 +1146,7 @@
"Identity audit": "ཐོབ་ཐང་ཞིབ་བཤེར།",
"Idle only": "ལས་མེད་སྐབས་ཁོ་ན།",
"Idle Timeout": "ལས་མེད་སྐབས་ཀྱི་དུས་ཚད།",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "པར།",
"Image Generation": "པར་བཟོ།",
"Image Max Compression Size": "པར་གྱི་བསྡུ་སྐུམ་ཆེ་ཤོས།",
@@ -1168,7 +1179,6 @@
"Input Key (e.g. text, unet_name, steps)": "ནང་འཇུག་ལྡེ་མིག (དཔེར་ན། text, unet_name, steps)",
"Input needed": "ནང་འཇུག་དགོས།",
"Input Variables": "ནང་འཇུག་འགྱུར་ཚད།",
- "Insert": "བར་འཇུག",
"Insert into note": "མཆན་བུའི་ནང་འཇུག་པ།",
"Instructions": "བཀོད་ཁྱབ།",
"Integrations": "མཉམ་སྦྱོར།",
@@ -1296,7 +1306,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "དཔེ་དབྱིབས་ ༣ ལས་མང་བ་མཉམ་དུ་ཕབ་ལེན་བྱེད་མི་ཐུབ། རྗེས་སུ་ཡང་བསྐྱར་ཚོད་ལྟ་བྱེད་རོགས།",
"May": "ཟླ་བ་ལྔ་པ།",
"MBR": "ཁོངས་མི།",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "MCP རྒྱབ་སྐྱོར་ནི་ཚོད་ལྟའི་རང་བཞིན་ཡིན་ཞིང་དེའི་ཚད་གཞི་ཡང་ཡང་འགྱུར་བས་མཐུན་མིན་འབྱུང་སྲིད། OpenAPI ཚད་གཞིའི་རྒྱབ་སྐྱོར་ Open WebUI ཚོགས་པས་ཐད་ཀར་སྲུང་སྐྱོང་བྱེད་པས་མཐུན་སྦྱོར་གྱི་ཆ་ནས་བློས་འཁེལ་ཆེ་བའི་གདམ་ག་ཡིན།",
"Medium": "འབྲིང་།",
"Member removed successfully": "ཁོངས་མི་ལེགས་པར་ཕྱིར་འདོན་བྱས་ཟིན།",
@@ -1535,6 +1544,7 @@
"OAuth Server URL": "OAuth ཞབས་ཞུ་ཆས་ཀྱི་ URL",
"OAuth session disconnected": "OAuth ལས་ཐུན་གྱི་སྦྲེལ་མཐུད་བཅད་ཟིན།",
"October": "ཟླ་བ་བཅུ་པ།",
+ "of a website's sticky header": "",
"Off": "ཁ་རྒྱག་པ།",
"Okay, Let's Go!": "འགྲིག་སོང་། འགྲོ།",
"OLED Dark": "OLED ནག་པོ།",
@@ -1584,7 +1594,6 @@
"OpenAI API Key is required.": "OpenAI API ལྡེ་མིག་དགོས་ངེས།",
"OpenAI API settings updated": "OpenAI API སྒྲིག་འགོད་གསར་སྒྱུར་བྱས།",
"OpenAI URL/Key required.": "OpenAI URL/ལྡེ་མིག་དགོས་ངེས།",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "OpenAPI ཚད་གཞི།",
"openapi.json URL or Path": "openapi.json ཡི་ URL ཡང་ན་ལམ་བུ།",
"optional": "གདམ་ག་ཅན།",
@@ -1597,6 +1606,7 @@
"out of": "/",
"Output": "ཐོན་འབྲས།",
"OUTPUT": "ཐོན་འབྲས།",
+ "Overcome procrastination": "",
"Overview": "སྤྱི་མཐོང་།",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "PaddleOCR-vl API URL དགོས།",
@@ -3040,6 +3050,8 @@
"Show Files": "ཡིག་ཆ་སྟོན་པ།",
"Show Hidden Files": "སྦས་པའི་ཡིག་ཆ་སྟོན་པ།",
"Show image preview": "པར་རིས་སྔོན་ལྟ་སྟོན་པ།",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "དཔེ་དབྱིབས་སྟོན་པ།",
"Show more": "མང་ཙམ་སྟོན་པ།",
"Show or switch the current model.": "ད་ལྟའི་དཔེ་དབྱིབས་སྟོན་པའམ་བརྗེ་བ།",
@@ -3152,6 +3164,8 @@
"Task List": "ལས་འགན་ཐོ་གཞུང་།",
"Tasks": "ལས་འགན།",
"tasks completed": "— ལེགས་འགྲུབ་ལས་འགན།",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "ང་ཚོ་ལ་མང་ཙམ་ཤོད།:",
"Temporary": "གནས་སྐབས།",
"Temporary Chat": "གནས་སྐབས་ཁ་བརྡ།",
@@ -3287,6 +3301,7 @@
"Type Hugging Face Resolve (Download) URL": "Hugging Face Resolve (ཕབ་ལེན།) URL མནན་པ།",
"Type your answer": "ཁྱེད་ཀྱི་ལན་བྲིས།",
"Uh-oh! There was an issue with the response.": "ཨོའོ། ལན་ལ་དཀའ་ངལ་ཞིག་བྱུང་སོང་།",
+ "Unarchive": "",
"Unarchive Chat": "ཁ་བརྡ་ཕྱིར་འདོན།",
"Unassigned": "མ་བགོས་པ།",
"Underline": "འོག་ཐིག",
@@ -3395,6 +3410,7 @@
"Visible": "མཐོང་ཐུབ་པ།",
"Visible to all users": "བེད་སྤྱོད་མཁན་ཚང་མས་མཐོང་ཐུབ་པ།",
"Visual": "མཐོང་རྣམ།",
+ "vocabulary for a college entrance exam": "",
"Voice": "སྐད།",
"Voice Input": "སྐད་ཀྱི་ནང་འཇུག",
"Voice mode": "སྐད་སྒྲའི་རྣམ་པ།",
@@ -3425,6 +3441,7 @@
"Weekly": "བདུན་རེ།",
"Weekly at": "བདུན་རེའི་ཆུ་ཚོད།",
"Welcome to your AI home.": "ཁྱེད་ཀྱི་ AI ཁྱིམ་ལ་ཕེབས་པར་དགའ་བསུ་ཞུ།",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "ཁྱེད་ཀྱིས་ཅི་ཞིག་འགྲུབ་ཐབས་བྱེད་བཞིན་ཡོད།",
"What are you working on?": "ཁྱེད་ཀྱིས་ཅི་ཞིག་ལས་ཀ་བྱེད་བཞིན་ཡོད།",
"What is NOT shared:": "མཉམ་སྤྱོད་མི་བྱེད་པ།",
diff --git a/src/lib/i18n/locales/bs-BA/translation.json b/src/lib/i18n/locales/bs-BA/translation.json
index db33dc48ab71..3b3c1b0c4248 100644
--- a/src/lib/i18n/locales/bs-BA/translation.json
+++ b/src/lib/i18n/locales/bs-BA/translation.json
@@ -5,7 +5,7 @@
"[Last] dddd [at] h:mm A": "[Prošle sedmice:] dddd [u] h:mm A",
"[Today at] h:mm A": "[Danas u] h:mm A",
"[Yesterday at] h:mm A": "[Jučer u] h:mm A",
- "{{ models }}": "{{ modeli }}",
+ "{{ models }}": "{{ models }}",
"{{count}} added lines_one": "",
"{{count}} added lines_few": "",
"{{count}} added lines_other": "",
@@ -80,6 +80,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Dostupna je nova verzija (v{{LATEST_VERSION}}).",
"A private conversation between you and selected users": "Privatan razgovor između vas i odabranih korisnika",
"a user": "korisnik",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Prihvati automatsku dopunu\nIdi na varijablu prompta",
"Access": "Pristup",
"Access Control": "Kontrola pristupa",
@@ -352,6 +353,7 @@
"Chat Menu": "Meni razgovora",
"Chat moved successfully": "Razgovor je uspješno premješten",
"Chat Permissions": "Dozvole za razgovor",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "Dijeljenje razgovora je uspješno prekinuto.",
"Chat Uploads": "Datoteke učitane u razgovor",
"Chat Variables": "Varijable razgovora",
@@ -504,6 +506,7 @@
"Could not check for updates": "Nije moguće provjeriti ažuriranja",
"Could not load release notes.": "Nije moguće učitati napomene o izdanju.",
"Could not read file.": "Nije moguće pročitati datoteku.",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "Niste pronašli svoj jezik?",
"CPU": "CPU",
"Create": "Kreiraj",
@@ -931,6 +934,8 @@
"Experience": "Korisničko iskustvo",
"Experimental": "Eksperimentalno",
"Explain": "Objasni",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "Istraženo",
"Exploring": "Istraživanje",
"Export": "Izvoz",
@@ -1058,6 +1063,7 @@
"Follow up: {{question}}": "Dodatno pitanje: {{question}}",
"Followed instructions perfectly": "Savršeno slijedio upute",
"for placeholders": "za rezervirana mjesta",
+ "for what to do with my kids' art": "",
"Fork": "Razgranaj",
"Fork chat": "Razgranaj razgovor",
"Fork the current chat branch into a new chat.": "Izdvoji trenutnu granu razgovora u novi razgovor.",
@@ -1105,6 +1111,8 @@
"Get information on {{name}} in the UI": "Prikaži informacije o {{name}} u korisničkom sučelju",
"Get started": "Započni",
"Get started with {{WEBUI_NAME}}": "Počnite koristiti {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Globalno",
"Good Response": "Dobar odgovor",
"Google": "Google",
@@ -1130,6 +1138,8 @@
"Height": "Visina",
"Hello, {{name}}": "Bok, {{name}}",
"Help": "Pomoć",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "Pomozite zajednici da otkrije odlične modele",
"Help us translate Open WebUI!": "Pomozite nam prevesti Open WebUI!",
"Hex Color": "Heksadecimalna boja",
@@ -1160,6 +1170,7 @@
"Identity audit": "Revizija identiteta",
"Idle only": "Samo u mirovanju",
"Idle Timeout": "Vremensko ograničenje neaktivnosti",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Slika",
"Image Generation": "Generiranje slika",
"Image Max Compression Size": "Maksimalne dimenzije komprimirane slike",
@@ -1192,7 +1203,6 @@
"Input Key (e.g. text, unet_name, steps)": "Ulazni ključ (npr. text, unet_name, steps)",
"Input needed": "Potreban unos",
"Input Variables": "Ulazne varijable",
- "Insert": "Umetni",
"Insert into note": "Umetni u bilješku",
"Instructions": "Upute",
"Integrations": "Integracije",
@@ -1322,7 +1332,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Maksimalno 3 modela se mogu preuzeti istovremeno. Pokušajte ponovo kasnije.",
"May": "Maj",
"MBR": "ČLAN",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "Podrška za MCP je eksperimentalna i njegova se specifikacija često mijenja, što može dovesti do nekompatibilnosti. Podršku za OpenAPI specifikaciju direktno održava Open WebUI tim, pa je ona pouzdanija opcija za kompatibilnost.",
"Medium": "Srednje",
"Member removed successfully": "Član uspješno uklonjen",
@@ -1561,6 +1570,7 @@
"OAuth Server URL": "URL OAuth servera",
"OAuth session disconnected": "OAuth sesija je prekinuta",
"October": "Oktobar",
+ "of a website's sticky header": "",
"Off": "Isključeno",
"Okay, Let's Go!": "U redu, idemo!",
"OLED Dark": "OLED Tamno",
@@ -1610,7 +1620,6 @@
"OpenAI API Key is required.": "Potreban je OpenAI API ključ.",
"OpenAI API settings updated": "Postavke OpenAI API-ja ažurirane",
"OpenAI URL/Key required.": "Potreban je OpenAI URL/ključ.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "OpenAPI specifikacija",
"openapi.json URL or Path": "URL ili putanja za openapi.json",
"optional": "opcionalno",
@@ -1623,6 +1632,7 @@
"out of": "od",
"Output": "Izlaz",
"OUTPUT": "IZLAZ",
+ "Overcome procrastination": "",
"Overview": "Pregled",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "Potreban je URL PaddleOCR-vl API-ja.",
@@ -3072,6 +3082,8 @@
"Show Files": "Prikaži datoteke",
"Show Hidden Files": "Prikaži skrivene datoteke",
"Show image preview": "Prikaži pregled slike",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Prikaži model",
"Show more": "Prikaži više",
"Show or switch the current model.": "Prikaži ili promijeni trenutni model.",
@@ -3186,6 +3198,8 @@
"Task List": "Lista zadataka",
"Tasks": "Zadaci",
"tasks completed": "— završeni zadaci",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Recite nam više:",
"Temporary": "Privremeno",
"Temporary Chat": "Privremeni razgovor",
@@ -3321,6 +3335,7 @@
"Type Hugging Face Resolve (Download) URL": "Upišite Hugging Face Resolve (Download) URL",
"Type your answer": "Unesite odgovor",
"Uh-oh! There was an issue with the response.": "Ups! Došlo je do problema s odgovorom.",
+ "Unarchive": "",
"Unarchive Chat": "Vrati razgovor iz arhive",
"Unassigned": "Nije dodijeljeno",
"Underline": "Podvučeno",
@@ -3429,6 +3444,7 @@
"Visible": "Vidljivo",
"Visible to all users": "Vidljivo svim korisnicima",
"Visual": "Vizuelno",
+ "vocabulary for a college entrance exam": "",
"Voice": "Glas",
"Voice Input": "Glasovni unos",
"Voice mode": "Glasovni način rada",
@@ -3459,6 +3475,7 @@
"Weekly": "Sedmično",
"Weekly at": "Sedmično u",
"Welcome to your AI home.": "Dobro došli u svoj AI dom.",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "Šta pokušavate postići?",
"What are you working on?": "Na čemu radite?",
"What is NOT shared:": "Šta se NE dijeli:",
diff --git a/src/lib/i18n/locales/ca-ES/translation.json b/src/lib/i18n/locales/ca-ES/translation.json
index 30cb5b872612..3d171cc5f418 100644
--- a/src/lib/i18n/locales/ca-ES/translation.json
+++ b/src/lib/i18n/locales/ca-ES/translation.json
@@ -6,9 +6,9 @@
"[Today at] h:mm A": "[Avui a les] h:mm A",
"[Yesterday at] h:mm A": "[Ahir a les] h:mm A",
"{{ models }}": "{{ models }}",
- "{{count}} added lines_one": "",
- "{{count}} added lines_many": "",
- "{{count}} added lines_other": "",
+ "{{count}} added lines_one": "{{count}} línia afegida",
+ "{{count}} added lines_many": "{{count}} línies afegides",
+ "{{count}} added lines_other": "{{count}} línies afegides",
"{{COUNT}} Available Skills": "{{COUNT}} habilitats disponibles",
"{{COUNT}} Available Tools": "{{COUNT}} eines disponibles",
"{{COUNT}} characters": "{{COUNT}} caràcters",
@@ -33,9 +33,9 @@
"{{count}} of {{total}} accessible_many": "{{count}} de {{total}} accessibles",
"{{count}} of {{total}} accessible_other": "{{count}} de {{total}} accessibles",
"{{COUNT}} pipeline(s) selected": "Pipelines seleccionades: {{COUNT}}",
- "{{count}} removed lines_one": "",
- "{{count}} removed lines_many": "",
- "{{count}} removed lines_other": "",
+ "{{count}} removed lines_one": "{{count}} línia eliminada",
+ "{{count}} removed lines_many": "{{count}} línies eliminades",
+ "{{count}} removed lines_other": "{{count}} línies eliminades",
"{{COUNT}} Replies": "{{COUNT}} respostes",
"{{COUNT}} Rows": "{{COUNT}} files",
"{{count}} selected_one": "{{count}} seleccionat",
@@ -80,6 +80,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Hi ha una nova versió disponible (v{{LATEST_VERSION}}).",
"A private conversation between you and selected users": "Una conversa privada entre tu i els usuaris seleccionats",
"a user": "un usuari",
+ "about the Roman Empire": "sobre l'Imperi Romà",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Accepta la generació d'autocompleció\nVés a la variable de la indicació",
"Access": "Accés",
"Access Control": "Control d'accés",
@@ -281,11 +282,11 @@
"Azure AI Speech": "Azure AI Speech",
"Azure OpenAI": "Azure OpenAI",
"Back": "Enrere",
- "Background Image": "",
- "Background image must be at most 25 megapixels.": "",
- "Background image must be at most 5 MiB.": "",
- "Background image must be PNG, JPEG, WebP, or GIF.": "",
- "Background image preview": "",
+ "Background Image": "Imatge de fons",
+ "Background image must be at most 25 megapixels.": "La imatge de fons ha de tenir com a màxim 25 megapíxels.",
+ "Background image must be at most 5 MiB.": "La imatge de fons ha de tenir com a màxim 5 MiB.",
+ "Background image must be PNG, JPEG, WebP, or GIF.": "La imatge de fons ha de ser PNG, JPEG, WebP o GIF.",
+ "Background image preview": "Vista prèvia de la imatge de fons",
"Background sub-agent finished": "El subagent en segon pla ha acabat",
"background sub-agents": "subagents en segon pla",
"Bad Response": "Resposta errònia",
@@ -352,6 +353,7 @@
"Chat Menu": "Menú del xat",
"Chat moved successfully": "El xat s'ha mogut correctament",
"Chat Permissions": "Permisos del xat",
+ "Chat unarchived.": "S'ha desarxivat el xat.",
"Chat unshared successfully.": "El xat s'ha deixat de compartir correctament",
"Chat Uploads": "Càrregues de xat",
"Chat Variables": "Variables de xat",
@@ -458,7 +460,7 @@
"Connection lost. Reconnecting...": "Connexió perduda. Reconnectant...",
"Connection successful": "Connexió correcta",
"Connection Type": "Tipus de connexió",
- "Connections managed through the Admin Panel are recommended for everyday use. Direct connections provide convenient access to your own endpoints, but rely on your browser session to keep requests running, making them better suited to testing and temporary use.": "",
+ "Connections managed through the Admin Panel are recommended for everyday use. Direct connections provide convenient access to your own endpoints, but rely on your browser session to keep requests running, making them better suited to testing and temporary use.": "Es recomanen les connexions gestionades mitjançant el tauler d'administració per a l'ús diari. Les connexions directes proporcionen un accés còmode als vostres propis punts finals, però confien en la sessió del vostre navegador per mantenir les sol·licituds en funcionament, cosa que les fa més adequades per a proves i ús temporal.",
"Connections saved successfully": "Les connexions s'han desat correctament",
"Connections settings updated": "Les preferències de les connexions s'han actualitzat",
"Contact Admin for WebUI Access": "Posa't en contacte amb l'administrador per accedir a WebUI",
@@ -504,13 +506,14 @@
"Could not check for updates": "No s'ha pogut comprovar si hi ha actualitzacions",
"Could not load release notes.": "No s'han pogut carregar les notes de la versió.",
"Could not read file.": "No s'ha pogut llegir l'arxiu",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "Podries començar preguntant-me sobre els casos en què poso més tard i després donar-me alguns suggeriments per superar-ho?",
"Couldn't find your language?": "No trobes el teu idioma?",
"CPU": "CPU",
"Create": "Crear",
"Create a knowledge base": "Crear una base de coneixement",
"Create a model": "Crear un model",
"Create a new note": "Crear una nova nota",
- "Create a reusable terminal skill from this chat.": "",
+ "Create a reusable terminal skill from this chat.": "Crea una habilitat de terminal reutilitzable des d'aquest xat.",
"Create Account": "Crear un compte",
"Create Admin Account": "Crear un compte d'Administrador",
"Create announcements shown to users in the app.": "Crear anuncis que es mostren als usuaris a l'aplicació.",
@@ -521,8 +524,8 @@
"Create new key": "Crear una nova clau",
"Create Prompt": "Crear un missatge",
"Create scheduled prompts that run automatically on a recurring basis.": "Crea sol·licituds programades que s'executin automàticament de manera recurrent.",
- "Create skill": "",
- "Create skill: create a reusable terminal skill from this chat.": "",
+ "Create skill": "Crea habilitat",
+ "Create skill: create a reusable terminal skill from this chat.": "Crea habilitat: crea una habilitat de terminal reutilitzable des d'aquest xat.",
"Create your first note from the Create menu.": "Crear la teva primera nota des del menú Crea.",
"Created": "Creat",
"Created at": "Creat el",
@@ -625,7 +628,7 @@
"Detected Variables": "Variables detectades",
"Dictate": "Dictar",
"Didn't fully follow instructions": "No s'han seguit les instruccions completament",
- "Diff settings": "",
+ "Diff settings": "Configuració de la diferència",
"Direct": "Directe",
"Direct Message": "Missatge directe",
"Direct Tool Servers": "Servidors d'eines directes",
@@ -849,7 +852,7 @@
"Enter skill instructions in markdown...": "Introdueix les instruccions de l'habilitat en format markdown...",
"Enter Sougou Search API sID": "Introdueix el sID de l'API de Sougou Search",
"Enter Sougou Search API SK": "Introdueix l'SK de l'API de Sougou Search",
- "Enter Staan API Key": "",
+ "Enter Staan API Key": "Introdueix la clau de l'API de Staan",
"Enter stop sequence": "Introdueix la seqüència de parada",
"Enter system prompt": "Introdueix la indicació de sistema",
"Enter system prompt here": "Entra la indicació de sistema aquí",
@@ -931,6 +934,8 @@
"Experience": "Experiència d'usuari",
"Experimental": "Experimental",
"Explain": "Explicar",
+ "Explain options trading": "Explica'm el comerç d'opcions",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "Explica'm el comerç d'opcions en termes senzills si estic familiaritzat amb la compra i venda d'accions.",
"Explored": "Explorat",
"Exploring": "Explorant",
"Export": "Exportar",
@@ -949,8 +954,8 @@
"External Knowledge Source": "Font de coneixement extern",
"External vectors must be generated with the same embedding model configured in Open WebUI.": "Els vectors externs s'han de generar amb el mateix model d'incrustació configurat a Open WebUI.",
"Extract action items from this note.": "Extreure elements d'acció d'aquesta nota.",
- "Extracted text lines": "",
- "Extracting text and comparing…": "",
+ "Extracted text lines": "Línies de text extretes",
+ "Extracting text and comparing…": "S'està extreent text i comparant...",
"Failed to add file.": "No s'ha pogut afegir l'arxiu.",
"Failed to add members": "No s'han pogut afegir els membres",
"Failed to archive chat.": "No s'ha pogut arxivar el xat",
@@ -994,7 +999,7 @@
"Failed to save chat variables": "No s'han pogut desar les variables del xat",
"Failed to save connections": "No s'han pogut desar les connexions",
"Failed to save conversation": "No s'ha pogut desar la conversa",
- "Failed to save model": "",
+ "Failed to save model": "No s'ha pogut desar el model",
"Failed to save models configuration": "No s'ha pogut desar la configuració dels models",
"Failed to save policy: {{error}}": "No s'ha pogut desar la política: {{error}}",
"Failed to save terminal servers": "No s'han pogut desar els servidors de terminal",
@@ -1004,7 +1009,7 @@
"Failed to update settings": "No s'han pogut actualitzar les preferències",
"Failed to update status": "No s'ha pogut actualitzar l'estat",
"Failed to update webhook": "No s'ha pogut actualitzar el webhook",
- "Failed to upload background image.": "",
+ "Failed to upload background image.": "No s'ha pogut carregar la imatge de fons.",
"Failed to upload file.": "No s'ha pogut pujar l'arxiu.",
"Features Permissions": "Permisos de les característiques",
"February": "Febrer",
@@ -1021,7 +1026,7 @@
"File content": "Contingut de l'arxiu",
"File content updated successfully.": "El contingut de l'arxiu s'ha actualitzat correctament.",
"File deleted successfully.": "L'arxiu s'ha eliminat correctament",
- "File differences": "",
+ "File differences": "Diferències de fitxers",
"File Mode": "Mode d'arxiu",
"File moved.": "Arxius moguts",
"File name": "Nom d'arxiu",
@@ -1058,14 +1063,15 @@
"Follow up: {{question}}": "Continuació: {{question}}",
"Followed instructions perfectly": "S'han seguit les instruccions perfectament",
"for placeholders": "per a marcadors de posició",
+ "for what to do with my kids' art": "per saber què fer amb l'art dels meus fills",
"Fork": "Bifurcar",
"Fork chat": "Bifurcar el xat",
"Fork the current chat branch into a new chat.": "Bifurcar la branca actual del xat en un xat nou.",
"Fork: fork the current chat branch into a new chat.": "Bifurcar: bifurcar la branca actual del xat en un xat nou.",
"Forking chat...": "S'està bifurcant el xat...",
"Form": "Formulari",
- "Format Markdown as you type and paste. Turn off to keep Markdown characters and paste plain text. Existing formatting is preserved.": "",
- "Formatting": "",
+ "Format Markdown as you type and paste. Turn off to keep Markdown characters and paste plain text. Existing formatting is preserved.": "Formata el Markdown mentre escrivis i enganxes. Desactiva-ho per mantenir els caràcters de Markdown i enganxar text pla. El formatat existent es conserva.",
+ "Formatting": "Formatatge",
"Formatting may be inconsistent from source.": "La formatació pot ser inconsistent amb l'origen",
"Forward": "Endavant",
"Forward cookies": "Reenviar galetes",
@@ -1105,6 +1111,8 @@
"Get information on {{name}} in the UI": "Obtenir informació de {{name}} a l'interfície d'usuari",
"Get started": "Començar",
"Get started with {{WEBUI_NAME}}": "Comença amb {{WEBUI_NAME}}",
+ "Give me ideas": "Dona'm idees",
+ "give me tips": "dona'm consells",
"Global": "Global",
"Good Response": "Bona resposta",
"Google": "Google",
@@ -1130,6 +1138,8 @@
"Height": "Alçada",
"Hello, {{name}}": "Hola, {{name}}",
"Help": "Ajuda",
+ "Help me study": "Ajuda'm a estudiar",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "Ajuda'm a estudiar vocabulari: escriu una frase perquè ompli el buit, i intentaré triar l'opció correcta.",
"Help the community discover great models": "Ajuda la comunitat a descobrir models",
"Help us translate Open WebUI!": "Ajuda'ns a traduir Open WebUI!",
"Hex Color": "Color hexadecimal",
@@ -1140,7 +1150,7 @@
"Hide from Sidebar": "Amagar de la barra lateral",
"Hide Hidden Files": "Amaga els fitxers ocults",
"Hide Model": "Amagar el model",
- "Hide whitespace": "",
+ "Hide whitespace": "Amaga els espais en blanc",
"High": "Alt",
"History": "Historial",
"Home": "Inici",
@@ -1160,6 +1170,7 @@
"Identity audit": "Auditoria d'identitat",
"Idle only": "Només inactiu",
"Idle Timeout": "Temps d'espera d'inactivitat",
+ "if I'm familiar with buying and selling stocks": "si estic familiaritzat amb la compra i venda d'accions",
"Image": "Imatge",
"Image Generation": "Generació d'imatges",
"Image Max Compression Size": "Mida màxima de la compressió d'imatges",
@@ -1192,12 +1203,11 @@
"Input Key (e.g. text, unet_name, steps)": "Entra la clau (p. ex. text, unet_name, steps)",
"Input needed": "Es necessita entrada",
"Input Variables": "Variables d'entrada",
- "Insert": "Inserir",
"Insert into note": "Inserir a la nota",
"Instructions": "Instruccions",
"Integrations": "Integracions",
"Interface Settings Access": "Accés a la configuració de la interfície",
- "Invalid background image.": "",
+ "Invalid background image.": "Imatge de fons no vàlida.",
"Invalid file format.": "Format d'arxiu no vàlid.",
"Invalid format.": "Format no vàlid.",
"Invalid JSON": "JSON no vàlid",
@@ -1311,18 +1321,17 @@
"Mark all as read": "Marcar-ho tot com a llegit",
"Mark as unread": "Marcar-ho com a no llegit",
"Markdown": "Markdown",
- "Market": "",
- "Matching tabs: {{count}}_one": "",
- "Matching tabs: {{count}}_many": "",
- "Matching tabs: {{count}}_other": "",
- "Max Snippets": "",
+ "Market": "Mercat",
+ "Matching tabs: {{count}}_one": "Pestanya coincident: {{count}}",
+ "Matching tabs: {{count}}_many": "Pestanyes coincidents: {{count}}",
+ "Matching tabs: {{count}}_other": "Pestanyes coincidents: {{count}}",
+ "Max Snippets": "Max Fragments",
"Max tokens to retrieve (1024-32768, default 8192)": "Nombre màxim de tokens a obtenir (1024-32768, per defecte 8192)",
- "Maximum extra snippets returned per result. Set to 0 to disable them.": "",
+ "Maximum extra snippets returned per result. Set to 0 to disable them.": "Màxim de fragments addicionals retornats per resultat. Establir-lo a 0 per desactivar-los.",
"Maximum number of files per folder is {{max}}.": "El nombre màxim de fitxers per carpeta és {{max}}.",
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Es poden descarregar un màxim de 3 models simultàniament. Si us plau, prova-ho més tard.",
"May": "Maig",
"MBR": "MBR",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "El suport per a MCP és experimental i la seva especificació canvia sovint, cosa que pot provocar incompatibilitats. El suport per a l'especificació d'OpenAPI el manté directament l'equip d'Open WebUI, cosa que el converteix en l'opció més fiable per a la compatibilitat.",
"Medium": "Mig",
"Member removed successfully": "El membre s'ha eliminat satisfactòriament",
@@ -1372,7 +1381,7 @@
"Model filesystem path detected. Model shortname is required for update, cannot continue.": "S'ha detectat el camí del sistema de fitxers del model. És necessari un nom curt del model per actualitzar, no es pot continuar.",
"Model Filtering": "Filtrat de models",
"Model ID": "Identificador del model",
- "Model ID cannot contain whitespace.": "",
+ "Model ID cannot contain whitespace.": "L'identificador del model no pot contenir espais en blanc.",
"Model ID is already added": "L'identificador del model ja s'ha afegit",
"Model ID is required.": "L'ID del model és necessari",
"Model IDs": "Identificadors del model",
@@ -1526,7 +1535,7 @@
"No suggestion prompts": "Cap prompt suggerit",
"No Terminal connection configured.": "No hi ha cap configuració de terminal configurada.",
"No terminal connections configured.": "No hi ha connexions de terminal configurades.",
- "No text differences": "",
+ "No text differences": "Sense diferències de text",
"No tool server connections configured.": "No hi ha connexions a servidors d'eines configurades.",
"No tools accessible": "No hi ha eines accessibles",
"No tools found": "No s'han trobat eines",
@@ -1561,6 +1570,7 @@
"OAuth Server URL": "URL del servidor OAuth",
"OAuth session disconnected": "Sessió OAuth desconnectada",
"October": "Octubre",
+ "of a website's sticky header": "de la capçalera d'un lloc web",
"Off": "Desactivat",
"Okay, Let's Go!": "D'acord, som-hi!",
"OLED Dark": "OLED Fosc",
@@ -1610,7 +1620,6 @@
"OpenAI API Key is required.": "Es requereix la clau API d'OpenAI.",
"OpenAI API settings updated": "Configuració de l'API d'OpenAI actualitzada",
"OpenAI URL/Key required.": "URL/Clau d'OpenAI requerides.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "Especificació OpenAPI",
"openapi.json URL or Path": "Camí o URL a openapi.json",
"optional": "opcional",
@@ -1623,6 +1632,7 @@
"out of": "de",
"Output": "Sortida",
"OUTPUT": "SORTIDA",
+ "Overcome procrastination": "Superar la procrastinació",
"Overview": "Vista general",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "URL de l'API PaddleOCR-vl necessària",
@@ -1685,7 +1695,7 @@
"Please select a valid JSON file": "Si us plau, selecciona un arxiu JSON vàlid",
"Please select at least one user for Direct Message channel.": "Selecciona com a mínim un usuari per al canal de missatge directe.",
"Please wait until all files are uploaded.": "Si us plau, espera fins que s'hagin carregat tots els fitxers.",
- "PNG, JPEG, WebP, or GIF. Up to 5 MiB and 25 megapixels.": "",
+ "PNG, JPEG, WebP, or GIF. Up to 5 MiB and 25 megapixels.": "PNG, JPEG, WebP o GIF. Fins a 5 MiB i 25 megapíxels.",
"Policy changes apply to newly provisioned terminals. Refresh matching terminals to apply them to existing terminals.": "Els canvis de política s'apliquen als nous terminals subministrats. Actualitza els terminals coincidents per aplicar-los als terminals existents.",
"Policy ID": "ID de política",
"Policy ID is required": "L'identificador de la política és obligatori",
@@ -1737,7 +1747,7 @@
"Quick Actions": "Accions ràpides",
"Ran {{COUNT}} analyses": "S'han executat {{COUNT}} anàlisis",
"Ran {{COUNT}} analysis": "S'han executat {{COUNT}} anàlisis",
- "Rate {{rating}} out of 10": "Nota {{rating} sobre 10",
+ "Rate {{rating}} out of 10": "Nota {{rating}} sobre 10",
"Rating": "Valoració",
"Read": "Llegit",
"Read Aloud": "Llegir en veu alta",
@@ -1770,7 +1780,7 @@
"Refused when it shouldn't have": "Refusat quan no hauria d'haver estat",
"Regenerate": "Regenerar",
"Regenerate Response": "Tornar a generar la resposta",
- "Region and language of the search results, e.g. en-us.": "",
+ "Region and language of the search results, e.g. en-us.": "Regió i idioma dels resultats de la cerca, p. ex. en-us.",
"Register Again": "Registrar de nou",
"Register Client": "Registrar client",
"Registered": "Registrat",
@@ -1800,7 +1810,7 @@
"Renamed to {{name}}": "S'ha reanomenat a {{name}}",
"Reorder": "Reordenar",
"Repeat": "Repetir",
- "Replace": "",
+ "Replace": "Substituir",
"Reply": "Respondre",
"Reply in Thread": "Respondre al fil",
"Reply to thread...": "Respondre al fil...",
@@ -1899,8 +1909,8 @@
"Searching the web": "Cercant la web...",
"See readme.md for instructions": "Consulta l'arxiu readme.md per obtenir instruccions",
"Select": "Escollir",
- "Select {{modelName}} model": "Selecciona el model {{modelName}}",
- "Select {{name}}": "",
+ "Select {{modelName}} model": "Seleccionar el model {{modelName}}",
+ "Select {{name}}": "Seleccionar {{name}}",
"Select a base model (e.g. llama3, gpt-4o)": "Seleccionar un model base (p. ex. llama3, gpt-4o)",
"Select a conversation to preview": "Seleccionar una conversa a previsualitzar",
"Select a engine": "Seleccionar un motor",
@@ -1922,7 +1932,7 @@
"Select an auth method": "Seleccionar un mètode d'autenticació",
"Select an embedding model engine": "Seleccionar un motor d'incrustació",
"Select an engine": "Seleccionar un motor",
- "Select an instance": "Selecciona una instància",
+ "Select an instance": "Seleccionar una instància",
"Select an Ollama instance": "Seleccionar una instància d'Ollama",
"Select an option": "Seleccionar una opció",
"Select an output format": "Seleccionar un format de sortida",
@@ -2176,8 +2186,8 @@
"settings.admin.connections.cacheBaseModelList.label": "Llista de models base en memòria cau",
"settings.admin.connections.directConnections.description": "Les connexions directes permeten als usuaris connectar-se als seus propis endpoints d'API compatibles amb OpenAI.",
"settings.admin.connections.directConnections.label": "Connexions directes",
- "settings.admin.connections.directIntegrations.description": "",
- "settings.admin.connections.directIntegrations.label": "",
+ "settings.admin.connections.directIntegrations.description": "Les connexions gestionades mitjançant el Panell d'Administració són recomanables per a l'ús quotidià. Les connexions directes proporcionen un accés còmode als vostres propis punts de connexió, però depenen de la sessió del navegador per mantenir les sol·licituds en execució, cosa que les fa més adequades per a proves i ús temporal.",
+ "settings.admin.connections.directIntegrations.label": "Integracions directes",
"settings.admin.connections.manageOllamaApiConnections.description": "Problemes en accedir a Ollama?",
"settings.admin.connections.manageOllamaApiConnections.label": "Gestionar les connexions a l'API d'Ollama",
"settings.admin.connections.manageOpenaiApiConnections.label": "Gestionar les connexions a l'API d'OpenAI",
@@ -2351,7 +2361,7 @@
"settings.admin.documents.textSplitter.label": "Separador de text",
"settings.admin.documents.tikaServerUrl.description": "Punt final del servidor Tika utilitzat per a l'extracció de contingut.",
"settings.admin.documents.tikaServerUrl.label": "URL del servidor Tika",
- "settings.admin.documents.tikaServerVersion.description": "Selecciona la versió de l'API del servidor Tika.",
+ "settings.admin.documents.tikaServerVersion.description": "Seleccionar la versió de l'API del servidor Tika.",
"settings.admin.documents.tikaServerVersion.label": "Versió del servidor Tika",
"settings.admin.documents.title": "Documents",
"settings.admin.documents.tokenizerModel.description": "Model tokenitzador utilitzat per a la divisió de tokens del transformador.",
@@ -2676,8 +2686,8 @@
"settings.admin.web.kagiSearchApiKey.label": "Clau API de Kagi Search",
"settings.admin.web.language.label": "Idioma",
"settings.admin.web.linkupApiKey.label": "Clau API de Linkup",
- "settings.admin.web.maxContentLength.description": "",
- "settings.admin.web.maxContentLength.label": "",
+ "settings.admin.web.maxContentLength.description": "Mida màxima del contingut retornat pels resultats de la cerca web, en caràcters.",
+ "settings.admin.web.maxContentLength.label": "Longitud màxima del contingut",
"settings.admin.web.microsoftWebIqApiBaseUrl.label": "URL de base de l'API Microsoft Web IQ",
"settings.admin.web.microsoftWebIqApiKey.label": "Clau de l'API de Microsoft Web IQ",
"settings.admin.web.mojeekSearchApiKey.label": "Clau API de Mojeek Search",
@@ -2826,31 +2836,31 @@
"settings.personal.general.modelParameters.label": "Paràmetres del model",
"settings.personal.general.parameters.contextCompactionThreshold.description": "Establir un llindar de tokens per a la compactació de context específic del model. Quan s'estableix, anul·la el llindar global fins al límit global.",
"settings.personal.general.parameters.contextCompactionThreshold.label": "Llindar de compactació del context",
- "settings.personal.general.parameters.format.label": "",
- "settings.personal.general.parameters.frequencyPenalty.label": "",
+ "settings.personal.general.parameters.format.label": "Format",
+ "settings.personal.general.parameters.frequencyPenalty.label": "Penalització de freqüència",
"settings.personal.general.parameters.functionCalling.description": "El mode natiu (per defecte) aprofita les capacitats de trucada d'eines integrades del model. El mode heretat funciona amb una gamma més àmplia de models trucant a les eines una vegada abans de l'execució mitjançant una injecció ràpida.",
"settings.personal.general.parameters.functionCalling.label": "Crida a funcions",
- "settings.personal.general.parameters.keepAlive.label": "",
- "settings.personal.general.parameters.logitBias.label": "",
- "settings.personal.general.parameters.maxTokens.label": "",
- "settings.personal.general.parameters.minP.label": "",
- "settings.personal.general.parameters.mirostat.label": "",
- "settings.personal.general.parameters.mirostatEta.label": "",
- "settings.personal.general.parameters.mirostatTau.label": "",
- "settings.personal.general.parameters.numBatch.label": "",
- "settings.personal.general.parameters.numCtx.label": "",
- "settings.personal.general.parameters.numGpu.label": "",
- "settings.personal.general.parameters.numKeep.label": "",
- "settings.personal.general.parameters.numThread.label": "",
+ "settings.personal.general.parameters.keepAlive.label": "Keep Alive",
+ "settings.personal.general.parameters.logitBias.label": "Biaix de logits",
+ "settings.personal.general.parameters.maxTokens.label": "Màxim de tokens",
+ "settings.personal.general.parameters.minP.label": "Min P",
+ "settings.personal.general.parameters.mirostat.label": "Mirostat",
+ "settings.personal.general.parameters.mirostatEta.label": "Mirostat Eta",
+ "settings.personal.general.parameters.mirostatTau.label": "Mirostat Tau",
+ "settings.personal.general.parameters.numBatch.label": "Num Batch",
+ "settings.personal.general.parameters.numCtx.label": "Num Ctx",
+ "settings.personal.general.parameters.numGpu.label": "Num GPU",
+ "settings.personal.general.parameters.numKeep.label": "Num Keep",
+ "settings.personal.general.parameters.numThread.label": "Num Thread",
"settings.personal.general.parameters.ollama.description": "Aquesta opció activa o desactiva l'ús de la funció de raonament a Ollama, que permet que el model pensi abans de generar una resposta. Quan està activada, el model pot trigar una estona en processar el context de la conversa i generar una resposta més reflexiva.",
"settings.personal.general.parameters.ollama.label": "Ollama",
- "settings.personal.general.parameters.presencePenalty.label": "",
+ "settings.personal.general.parameters.presencePenalty.label": "Penalització de presència",
"settings.personal.general.parameters.reasoningEffort.description": "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.",
"settings.personal.general.parameters.reasoningEffort.label": "Esforç de raonament",
"settings.personal.general.parameters.reasoningTags.description": "Activar, desactivar o personalitzar les etiquetes de raonament que utilitza el model. \"Activat\" utilitza etiquetes predeterminades, \"Desactivat\" desactiva les etiquetes de raonament i \"Personalitzat\" permet especificar les etiquetes d'inici i finalització.",
"settings.personal.general.parameters.reasoningTags.label": "Etiqueta de raonament",
- "settings.personal.general.parameters.repeatLastN.label": "",
- "settings.personal.general.parameters.repeatPenalty.label": "",
+ "settings.personal.general.parameters.repeatLastN.label": "Repetir darrers N",
+ "settings.personal.general.parameters.repeatPenalty.label": "Penalització de repetició",
"settings.personal.general.parameters.seed.description": "Estableix la llavor del nombre aleatori que s'utilitzarà per a la generació. Establir-ho a un número específic farà que el model generi el mateix text per a la mateixa sol·licitud.",
"settings.personal.general.parameters.seed.label": "Llavor",
"settings.personal.general.parameters.stopSequence.description": "Establir les seqüències d'aturada a utilitzar. Quan es trobi aquest patró, el LLM deixarà de generar text. Es poden establir diversos patrons de parada especificant diversos paràmetres de parada separats en un fitxer model.",
@@ -2861,12 +2871,12 @@
"settings.personal.general.parameters.streamDeltaChunkSize.label": "Mida del fragment Delta del flux",
"settings.personal.general.parameters.temperature.description": "La temperatura del model. Augmentar la temperatura farà que el model respongui de manera més creativa.",
"settings.personal.general.parameters.temperature.label": "Temperatura",
- "settings.personal.general.parameters.tfsZ.label": "",
- "settings.personal.general.parameters.think.label": "",
- "settings.personal.general.parameters.topK.label": "",
- "settings.personal.general.parameters.topP.label": "",
- "settings.personal.general.parameters.useMlock.label": "",
- "settings.personal.general.parameters.useMmap.label": "",
+ "settings.personal.general.parameters.tfsZ.label": "TFS Z",
+ "settings.personal.general.parameters.think.label": "Think",
+ "settings.personal.general.parameters.topK.label": "Top K",
+ "settings.personal.general.parameters.topP.label": "Top P",
+ "settings.personal.general.parameters.useMlock.label": "Utilitzar mlock",
+ "settings.personal.general.parameters.useMmap.label": "Utilitzar mmap",
"settings.personal.general.sections.advancedParameters.title": "Paràmetres avançats",
"settings.personal.general.sections.systemPrompt.description": "Establir la sol·licitud predeterminada del sistema per a nous xats.",
"settings.personal.general.sections.systemPrompt.title": "Indicació del Sistema",
@@ -3007,7 +3017,7 @@
"settings.personal.personalization.savedMemories.label": "Memòria desada",
"settings.personal.personalization.sections.memory.title": "Memòria",
"settings.personal.personalization.title": "Personalització",
- "settings.personal.shortcuts.acceptAutocomplete.label": "",
+ "settings.personal.shortcuts.acceptAutocomplete.label": "Acceptar autocompletat",
"settings.personal.shortcuts.addPrompt.label": "Afegir indicació personalitzada",
"settings.personal.shortcuts.allowToolCall.label": "Permetre la crida a l'eina",
"settings.personal.shortcuts.attachFile.label": "Adjuntar arxiu del coneixement",
@@ -3072,6 +3082,8 @@
"Show Files": "Mostra els arxius",
"Show Hidden Files": "Mostra els fitxers ocults",
"Show image preview": "Mostrar la previsualització de la imatge",
+ "Show me a code snippet": "Mostra'm un fragment de codi",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "Mostra'm un fragment de codi de la capçalera d'un lloc web en CSS i JavaScript.",
"Show Model": "Mostrar el model",
"Show more": "Mostrar-ne més",
"Show or switch the current model.": "Mostrar o canviar el model actual.",
@@ -3120,7 +3132,7 @@
"Speech recognition error: {{error}}": "Error de reconeixement de veu: {{error}}",
"Speech-to-Text Language": "Llengua de Veu-a-Text",
"Sponsor on GitHub": "Patrocina a GitHub",
- "Staan API Key": "",
+ "Staan API Key": "Clau de l'API de Staan",
"Start a new conversation": "Iniciar una nova conversa",
"Start of the channel": "Inici del canal",
"Start Tag": "Etiqueta d'inici",
@@ -3157,7 +3169,7 @@
"Summarize this note.": "Resumeix aquesta nota.",
"Support": "Dona suport",
"Support this plugin:": "Dona suport a aquest complement:",
- "Swap": "",
+ "Swap": "Intercanviar",
"Switch camera": "Canviar la càmera",
"Switch to JSON editor": "Canviar a l'editor JSON",
"Switch to visual editor": "Canviar a l'editor visual",
@@ -3186,6 +3198,8 @@
"Task List": "Llista de tasques",
"Tasks": "Tasques",
"tasks completed": "tasques completades",
+ "Tell me a fun fact": "Explica'm una dada divertida",
+ "Tell me a random fun fact about the Roman Empire": "Explica'm una dada divertida aleatòria sobre l'Imperi Romà",
"Tell us more:": "Dona'ns més informació:",
"Temporary": "Temporal",
"Temporary Chat": "Xat temporal",
@@ -3321,6 +3335,7 @@
"Type Hugging Face Resolve (Download) URL": "Escriu la URL de Resolució (Descàrrega) de Hugging Face",
"Type your answer": "Escriu la teva resposta",
"Uh-oh! There was an issue with the response.": "Vaja! Hi ha hagut una incidència amb la resposta.",
+ "Unarchive": "Desarxivar",
"Unarchive Chat": "Desarxivar xat",
"Unassigned": "Sense assignar",
"Underline": "Subratllat",
@@ -3357,14 +3372,14 @@
"Upload failed for {{failed}} of {{total}} files.": "Arxius que no s'han pogut pujar: {{failed}} de {{total}}.",
"Upload files": "Pujar fitxers",
"Upload Files": "Pujar fitxers",
- "Upload Folder": "",
+ "Upload Folder": "Pujar carpeta",
"Upload Model": "Pujar model",
"Upload Photo": "Carrega la foto",
"Upload profile image": "Pujar imatge de perfil",
"Upload Progress": "Progrés de càrrega",
"Uploaded files or images": "Arxius o imatges pujats",
"Uploading": "S'està carregant",
- "Uploading {{current}}/{{total}}: {{file}}": "Pujant {{current}}/{{total}}: {{arxiu}}",
+ "Uploading {{current}}/{{total}}: {{file}}": "Pujant {{current}}/{{total}}: {{file}}",
"Uploading...": "Pujant...",
"URL": "URL",
"URL is required": "La URL és necessària",
@@ -3378,7 +3393,7 @@
"Use segmented retrieval for focused and relevant content extraction.": "Utilitzar la recuperació segmentada per a l'extracció de contingut centrada i rellevant.",
"Use segmented retrieval for focused and relevant context.": "Utilitzar la recuperació segmentada per a un context centrat i rellevant.",
"Use segmented retrieval for focused context.": "Utilitzar la recuperació segmentada per al context.",
- "Use these in model system prompts as {{example}}.": "Utilitzar-los a les indicacions del sistema del model com a {{exemple}}.",
+ "Use these in model system prompts as {{example}}.": "Utilitzar-los a les indicacions del sistema del model com a {{example}}.",
"Use Web Search?": "Utilitzar la cerca web?",
"user": "usuari",
"User": "Usuari",
@@ -3429,6 +3444,7 @@
"Visible": "Visible",
"Visible to all users": "Visible per a tots els usuaris",
"Visual": "Visual",
+ "vocabulary for a college entrance exam": "vocabulari per a un examen d'accés a la universitat",
"Voice": "Veu",
"Voice Input": "Entrada de veu",
"Voice mode": "Mode de veu",
@@ -3459,6 +3475,7 @@
"Weekly": "Cada setmana",
"Weekly at": "Setmanalment a les",
"Welcome to your AI home.": "Benvingut a la teva IA.",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "Quines són 5 coses creatives que podria fer amb l'art dels meus fills? No vull llençar-los, però també és massa desordre.",
"What are you trying to achieve?": "Què intentes aconseguir?",
"What are you working on?": "En què estàs treballant?",
"What is NOT shared:": "Què no es comparteix",
diff --git a/src/lib/i18n/locales/ceb-PH/translation.json b/src/lib/i18n/locales/ceb-PH/translation.json
index f7048be05f19..e4d90f8c7de7 100644
--- a/src/lib/i18n/locales/ceb-PH/translation.json
+++ b/src/lib/i18n/locales/ceb-PH/translation.json
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Anaa na ang bag-ong bersyon (v{{LATEST_VERSION}}).",
"A private conversation between you and selected users": "Pribadong panaghisgot tali kanimo ug sa gipiling mga tiggamit",
"a user": "usa ka user",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Dawata ang awtomatikong pagkumpleto\nAmbak ngadto sa variable sa aghat",
"Access": "Akses",
"Access Control": "Pagkontrol sa akses",
@@ -343,6 +344,7 @@
"Chat Menu": "Menu sa panaghisgot",
"Chat moved successfully": "Malampusong nabalhin ang panaghisgot",
"Chat Permissions": "Mga pagtugot sa panaghisgot",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "Malampusong nahunong ang pagpaambit sa panaghisgot.",
"Chat Uploads": "Mga file nga gi-upload sa panaghisgot",
"Chat Variables": "Mga variable sa panaghisgot",
@@ -494,6 +496,7 @@
"Could not check for updates": "Dili masusi ang mga update",
"Could not load release notes.": "Dili makarga ang mga nota sa bersyon.",
"Could not read file.": "Dili mabasa ang file.",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "Wala nimo makit-i ang imong pinulongan?",
"CPU": "CPU",
"Create": "Paghimo",
@@ -919,6 +922,8 @@
"Experience": "Kasinatian sa paggamit",
"Experimental": "Eksperimento",
"Explain": "Ipasabot",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "Nasusi na",
"Exploring": "Nagsusi",
"Export": "I-export",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "Sunod nga pangutana: {{question}}",
"Followed instructions perfectly": "Hingpit nga gisunod ang mga instruksyon",
"for placeholders": "alang sa mga placeholder",
+ "for what to do with my kids' art": "",
"Fork": "Pagsanga",
"Fork chat": "Isanga ang panaghisgot",
"Fork the current chat branch into a new chat.": "Paghimo og bag-ong panaghisgot gikan sa kasamtangang sanga sa panaghisgot.",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "Tan-awa ang impormasyon bahin sa {{name}} sa interface",
"Get started": "Sugdi",
"Get started with {{WEBUI_NAME}}": "Sugdi ang paggamit sa {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Tibuok sistema",
"Good Response": "Maayong tubag",
"Google": "Google",
@@ -1118,6 +1126,8 @@
"Height": "Gitas-on",
"Hello, {{name}}": "Maayong buntag, {{name}}",
"Help": "Tabang",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "Tabangi ang komunidad sa pagdiskobre og maayong mga modelo",
"Help us translate Open WebUI!": "Tabangi kami sa paghubad sa Open WebUI!",
"Hex Color": "Hex nga kolor",
@@ -1148,6 +1158,7 @@
"Identity audit": "Pagsusi sa pagkatawo",
"Idle only": "Sa dili aktibo lamang",
"Idle Timeout": "Limitasyon sa panahon nga dili aktibo",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Hulagway",
"Image Generation": "Paghimo og hulagway",
"Image Max Compression Size": "Pinakadakong gidak-on sa gi-compress nga hulagway",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "Yawe sa input (pananglitan text, unet_name, steps)",
"Input needed": "Gikinahanglan ang input",
"Input Variables": "Mga variable sa input",
- "Insert": "Isulod",
"Insert into note": "Isulod sa nota",
"Instructions": "Mga instruksyon",
"Integrations": "Mga integrasyon",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Ang labing taas nga 3 nga mga disenyo mahimong ma-download nga dungan. ",
"May": "Mayo",
"MBR": "Miyembro",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "Eksperimental pa ang suporta sa MCP ug kanunay mausab ang espesipikasyon niini, nga mahimong hinungdan sa dili pagkatakdo. Ang suporta sa espesipikasyon sa OpenAPI direktang gimentinar sa grupo sa Open WebUI, busa mas kasaligan kini alang sa pagkatakdo.",
"Medium": "Kasarangan",
"Member removed successfully": "Malampusong natangtang ang miyembro",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "URL sa OAuth server",
"OAuth session disconnected": "Naputol ang koneksyon sa sesyon sa OAuth",
"October": "Oktubre",
+ "of a website's sticky header": "",
"Off": "Napuo",
"Okay, Let's Go!": "Okay, lakaw na!",
"OLED Dark": "Ngitngit nga OLED",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "Ang yawe sa OpenAI API gikinahanglan.",
"OpenAI API settings updated": "Na-update ang mga setting sa OpenAI API",
"OpenAI URL/Key required.": "Gikinahanglan ang URL/yawe sa OpenAI.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "Espesipikasyon sa OpenAPI",
"openapi.json URL or Path": "URL o path sa openapi.json",
"optional": "dili kinahanglan",
@@ -1610,6 +1619,7 @@
"out of": "sa",
"Output": "Output",
"OUTPUT": "OUTPUT",
+ "Overcome procrastination": "",
"Overview": "Kinatibuk-ang pagtan-aw",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "Gikinahanglan ang URL sa PaddleOCR-vl API.",
@@ -3056,6 +3066,8 @@
"Show Files": "Ipakita ang mga file",
"Show Hidden Files": "Ipakita ang tinagong mga file",
"Show image preview": "Ipakita ang tan-aw daan sa hulagway",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Ipakita ang modelo",
"Show more": "Ipakita ang dugang",
"Show or switch the current model.": "Ipakita o ilisi ang kasamtangang modelo.",
@@ -3169,6 +3181,8 @@
"Task List": "Lista sa mga buluhaton",
"Tasks": "Mga buluhaton",
"tasks completed": "ka buluhaton nga nahuman",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Sultihi kami og dugang:",
"Temporary": "Temporaryo",
"Temporary Chat": "Temporaryong panaghisgot",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "Pagsulod sa resolusyon (pag-download) URL Hugging Face",
"Type your answer": "Isulat ang imong tubag",
"Uh-oh! There was an issue with the response.": "Aguy! Adunay problema sa tubag.",
+ "Unarchive": "",
"Unarchive Chat": "Kuhaa ang panaghisgot gikan sa archive",
"Unassigned": "Wala pa itakda",
"Underline": "Linyaa sa ubos",
@@ -3412,6 +3427,7 @@
"Visible": "Makita",
"Visible to all users": "Makita sa tanang tiggamit",
"Visual": "Biswal",
+ "vocabulary for a college entrance exam": "",
"Voice": "Tingog",
"Voice Input": "Input sa tingog",
"Voice mode": "Mode sa tingog",
@@ -3442,6 +3458,7 @@
"Weekly": "Matag semana",
"Weekly at": "Matag semana sa",
"Welcome to your AI home.": "Maayong pag-abot sa imong puloy-anan sa AI.",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "Unsa ang imong gustong makab-ot?",
"What are you working on?": "Unsa ang imong gitrabaho?",
"What is NOT shared:": "Unsa ang DILI ipaambit:",
diff --git a/src/lib/i18n/locales/cs-CZ/translation.json b/src/lib/i18n/locales/cs-CZ/translation.json
index b6eaf6f873f8..8686d3d61d6f 100644
--- a/src/lib/i18n/locales/cs-CZ/translation.json
+++ b/src/lib/i18n/locales/cs-CZ/translation.json
@@ -89,6 +89,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Nová verze (v{{LATEST_VERSION}}) je nyní k dispozici.",
"A private conversation between you and selected users": "Soukromá konverzace mezi vámi a vybranými uživateli",
"a user": "uživatel",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Přijmout automatické doplnění\nPřejít na proměnnou instrukcí",
"Access": "Přístup",
"Access Control": "Řízení přístupu",
@@ -361,6 +362,7 @@
"Chat Menu": "Nabídka konverzace",
"Chat moved successfully": "Konverzace byla úspěšně přesunuta",
"Chat Permissions": "Oprávnění konverzace",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "Sdílení konverzace bylo úspěšně zrušeno.",
"Chat Uploads": "Soubory nahrané do konverzace",
"Chat Variables": "Proměnné konverzace",
@@ -514,6 +516,7 @@
"Could not check for updates": "Nepodařilo se zkontrolovat aktualizace",
"Could not load release notes.": "Nepodařilo se načíst poznámky k vydání.",
"Could not read file.": "Nepodařilo se přečíst soubor.",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "Nenašli jste svůj jazyk?",
"CPU": "CPU",
"Create": "Vytvořit",
@@ -943,6 +946,8 @@
"Experience": "Uživatelský zážitek",
"Experimental": "Experimentální",
"Explain": "Vysvětlit",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "Prozkoumáno",
"Exploring": "Prozkoumávání",
"Export": "Exportovat",
@@ -1070,6 +1075,7 @@
"Follow up: {{question}}": "Navazující otázka: {{question}}",
"Followed instructions perfectly": "Dokonale dodržel pokyny",
"for placeholders": "pro zástupné symboly",
+ "for what to do with my kids' art": "",
"Fork": "Rozvětvit",
"Fork chat": "Rozvětvit konverzaci",
"Fork the current chat branch into a new chat.": "Vytvořit novou konverzaci z aktuální větve konverzace.",
@@ -1117,6 +1123,8 @@
"Get information on {{name}} in the UI": "Získat informace o {{name}} v uživatelském rozhraní",
"Get started": "Začít",
"Get started with {{WEBUI_NAME}}": "Začněte s {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Globální",
"Good Response": "Dobrá odpověď",
"Google": "Google",
@@ -1142,6 +1150,8 @@
"Height": "Výška",
"Hello, {{name}}": "Dobrý den, {{name}}",
"Help": "Nápověda",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "Pomozte komunitě objevit skvělé modely",
"Help us translate Open WebUI!": "Pomozte nám přeložit Open WebUI!",
"Hex Color": "Hex barva",
@@ -1172,6 +1182,7 @@
"Identity audit": "Audit identity",
"Idle only": "Pouze při nečinnosti",
"Idle Timeout": "Časový limit nečinnosti",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Obrázek",
"Image Generation": "Generování obrázků",
"Image Max Compression Size": "Maximální velikost komprese obrázku",
@@ -1204,7 +1215,6 @@
"Input Key (e.g. text, unet_name, steps)": "Vstupní klíč (např. text, unet_name, steps)",
"Input needed": "Je potřeba vstup",
"Input Variables": "Vstupní proměnné",
- "Insert": "Vložit",
"Insert into note": "Vložit do poznámky",
"Instructions": "Pokyny",
"Integrations": "Integrace",
@@ -1335,7 +1345,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Současně lze stahovat maximálně 3 modely. Zkuste to prosím později.",
"May": "Květen",
"MBR": "Členové",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "Podpora MCP je experimentální a jeho specifikace se často mění, což může vést k nekompatibilitě. Podporu specifikace OpenAPI udržuje přímo tým Open WebUI, a proto je z hlediska kompatibility spolehlivější.",
"Medium": "Střední",
"Member removed successfully": "Člen byl úspěšně odebrán",
@@ -1574,6 +1583,7 @@
"OAuth Server URL": "URL serveru OAuth",
"OAuth session disconnected": "Relace OAuth byla odpojena",
"October": "Říjen",
+ "of a website's sticky header": "",
"Off": "Vypnuto",
"Okay, Let's Go!": "Dobře, jdeme na to!",
"OLED Dark": "OLED tmavý",
@@ -1623,7 +1633,6 @@
"OpenAI API Key is required.": "Je vyžadován klíč OpenAI API.",
"OpenAI API settings updated": "Nastavení OpenAI API byla aktualizována",
"OpenAI URL/Key required.": "Je vyžadována URL/klíč OpenAI.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "Specifikace OpenAPI",
"openapi.json URL or Path": "URL nebo cesta k openapi.json",
"optional": "nepovinné",
@@ -1636,6 +1645,7 @@
"out of": "z",
"Output": "Výstup",
"OUTPUT": "VÝSTUP",
+ "Overcome procrastination": "",
"Overview": "Přehled",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "Je vyžadována URL API PaddleOCR-vl.",
@@ -3088,6 +3098,8 @@
"Show Files": "Zobrazit soubory",
"Show Hidden Files": "Zobrazit skryté soubory",
"Show image preview": "Zobrazit náhled obrázku",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Zobrazit model",
"Show more": "Zobrazit více",
"Show or switch the current model.": "Zobrazit nebo změnit aktuální model.",
@@ -3203,6 +3215,8 @@
"Task List": "Seznam úkolů",
"Tasks": "Úkoly",
"tasks completed": "— dokončené úkoly",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Řekněte nám více:",
"Temporary": "Dočasná konverzace",
"Temporary Chat": "Dočasná konverzace",
@@ -3338,6 +3352,7 @@
"Type Hugging Face Resolve (Download) URL": "Zadejte URL pro stažení z Hugging Face.",
"Type your answer": "Zadejte odpověď",
"Uh-oh! There was an issue with the response.": "Jejda! Vyskytl se problém s odpovědí.",
+ "Unarchive": "",
"Unarchive Chat": "Zrušit archivaci konverzace",
"Unassigned": "Nepřiřazeno",
"Underline": "Podtržení",
@@ -3446,6 +3461,7 @@
"Visible": "Viditelné",
"Visible to all users": "Viditelné všem uživatelům",
"Visual": "Vizuální",
+ "vocabulary for a college entrance exam": "",
"Voice": "Hlas",
"Voice Input": "Hlasový vstup",
"Voice mode": "Hlasový režim",
@@ -3476,6 +3492,7 @@
"Weekly": "Týdně",
"Weekly at": "Týdně v",
"Welcome to your AI home.": "Vítejte ve svém AI domově.",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "Čeho se snažíte dosáhnout?",
"What are you working on?": "Na čem pracujete?",
"What is NOT shared:": "Co se NESDÍLÍ:",
diff --git a/src/lib/i18n/locales/da-DK/translation.json b/src/lib/i18n/locales/da-DK/translation.json
index be76b58e330c..5c200d57ec5d 100644
--- a/src/lib/i18n/locales/da-DK/translation.json
+++ b/src/lib/i18n/locales/da-DK/translation.json
@@ -5,7 +5,7 @@
"[Last] dddd [at] h:mm A": "[Sidste] dddd [kl.] h:mm A",
"[Today at] h:mm A": "[I dag kl.] h:mm A",
"[Yesterday at] h:mm A": "[I går kl.] h:mm A",
- "{{ models }}": "{{ modeller }}",
+ "{{ models }}": "{{ models }}",
"{{count}} added lines_one": "",
"{{count}} added lines_other": "",
"{{COUNT}} Available Skills": "Tilgængelige færdigheder: {{COUNT}}",
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "En ny version (v{{LATEST_VERSION}}) er nu tilgængelig.",
"A private conversation between you and selected users": "En privat samtale mellem dig og udvalgte brugere",
"a user": "en bruger",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Accepter genereret autofuldførelse\nHop til prompt variable",
"Access": "Adgang",
"Access Control": "Adgangskontrol",
@@ -343,6 +344,7 @@
"Chat Menu": "Chatmenu",
"Chat moved successfully": "Chat flyttet",
"Chat Permissions": "Chat tilladelser",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "Delingen af chatten er ophævet.",
"Chat Uploads": "Filer uploadet til chatten",
"Chat Variables": "Chatvariabler",
@@ -494,6 +496,7 @@
"Could not check for updates": "Kunne ikke søge efter opdateringer",
"Could not load release notes.": "Kunne ikke indlæse udgivelsesnoter.",
"Could not read file.": "Kunne ikke læse filen.",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "Kunne du ikke finde dit sprog?",
"CPU": "CPU",
"Create": "Opret",
@@ -919,6 +922,8 @@
"Experience": "Brugeroplevelse",
"Experimental": "Eksperimentel",
"Explain": "Forklar",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "Udforsket",
"Exploring": "Udforsker",
"Export": "Eksportér",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "Opfølgende spørgsmål: {{question}}",
"Followed instructions perfectly": "Fulgte instruktionerne perfekt",
"for placeholders": "til pladsholdere",
+ "for what to do with my kids' art": "",
"Fork": "Forgren",
"Fork chat": "Forgren chat",
"Fork the current chat branch into a new chat.": "Opret en ny chat fra den aktuelle chatgren.",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "Få information om {{name}} i brugergrænsefladen",
"Get started": "Kom i gang",
"Get started with {{WEBUI_NAME}}": "Kom i gang med {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Global",
"Good Response": "Godt svar",
"Google": "Google",
@@ -1118,6 +1126,8 @@
"Height": "Højde",
"Hello, {{name}}": "Hej {{name}}",
"Help": "Hjælp",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "Hjælp fællesskabet med at opdage gode modeller",
"Help us translate Open WebUI!": "Hjælp os med at oversætte Open WebUI!",
"Hex Color": "Hex farve",
@@ -1148,6 +1158,7 @@
"Identity audit": "Identitetskontrol",
"Idle only": "Kun ved inaktivitet",
"Idle Timeout": "Timeout ved inaktivitet",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Billede",
"Image Generation": "Billedgenerering",
"Image Max Compression Size": "Billede max komprimering størrelse",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "Inputnøgler (f.eks. text, unet_name, steps)",
"Input needed": "Input påkrævet",
"Input Variables": "Input variable",
- "Insert": "Indsæt",
"Insert into note": "Indsæt i note",
"Instructions": "Instruktioner",
"Integrations": "Integrationer",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Højst 3 modeller kan downloades samtidigt. Prøv igen senere.",
"May": "Maj",
"MBR": "MBR",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "MCP understøttelse er eksperimentel og dens specifikationer ændres ofte hvilket kan medføre inkompatibilitet. OpenAI specifikationsunderstøttelse er vedligeholdt af Open WebUI-teamet hvilket gør det til den mest pålidelige mulighed for understøttelse.",
"Medium": "Medium",
"Member removed successfully": "Medlem fjernet",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "OAuth-server-URL",
"OAuth session disconnected": "OAuth-sessionen blev afbrudt",
"October": "Oktober",
+ "of a website's sticky header": "",
"Off": "Fra",
"Okay, Let's Go!": "Okay, lad os komme i gang!",
"OLED Dark": "OLED Mørk",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "OpenAI API-nøgle er påkrævet.",
"OpenAI API settings updated": "OpenAI API indstillinger opdateret",
"OpenAI URL/Key required.": "OpenAI URL/nøgle påkrævet.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "OpenAPI spec",
"openapi.json URL or Path": "openapi.json URL eller sti",
"optional": "valgfri",
@@ -1610,6 +1619,7 @@
"out of": "ud af",
"Output": "Output",
"OUTPUT": "OUTPUT",
+ "Overcome procrastination": "",
"Overview": "Oversigt",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "PaddleOCR-vl API-URL er påkrævet.",
@@ -3056,6 +3066,8 @@
"Show Files": "Vis filer",
"Show Hidden Files": "Vis skjulte filer",
"Show image preview": "Vis billedforhåndsvisning",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Vis model",
"Show more": "Vis mere",
"Show or switch the current model.": "Vis eller skift den aktuelle model.",
@@ -3169,6 +3181,8 @@
"Task List": "Opgaveliste",
"Tasks": "Opgaver",
"tasks completed": "— fuldførte opgaver",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Fortæl os mere:",
"Temporary": "Midlertidig chat",
"Temporary Chat": "Midlertidig chat",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "Indtast Hugging Face Resolve (Download) URL",
"Type your answer": "Skriv dit svar",
"Uh-oh! There was an issue with the response.": "Uh-oh! Der var et problem det det svar.",
+ "Unarchive": "",
"Unarchive Chat": "Fjern chat fra arkiv",
"Unassigned": "Ikke tildelt",
"Underline": "Understreget",
@@ -3412,6 +3427,7 @@
"Visible": "Synlig",
"Visible to all users": "Synlig for alle brugere",
"Visual": "Visuel",
+ "vocabulary for a college entrance exam": "",
"Voice": "Stemme",
"Voice Input": "Stemme Input",
"Voice mode": "Stemmetilstand",
@@ -3442,6 +3458,7 @@
"Weekly": "Ugentligt",
"Weekly at": "Ugentligt kl.",
"Welcome to your AI home.": "Velkommen til dit AI-hjem.",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "Hvad prøver du at opnå?",
"What are you working on?": "Hvad arbejder du på?",
"What is NOT shared:": "Hvad der IKKE deles:",
diff --git a/src/lib/i18n/locales/de-DE/translation.json b/src/lib/i18n/locales/de-DE/translation.json
index da755a5213b0..b4284a02d7a0 100644
--- a/src/lib/i18n/locales/de-DE/translation.json
+++ b/src/lib/i18n/locales/de-DE/translation.json
@@ -6,12 +6,12 @@
"[Today at] h:mm A": "[Heute um] h:mm A",
"[Yesterday at] h:mm A": "[Gestern um] h:mm A",
"{{ models }}": "{{ models }}",
- "{{count}} added lines_one": "",
- "{{count}} added lines_other": "",
+ "{{count}} added lines_one": "{{count}} hinzugefügte Zeile",
+ "{{count}} added lines_other": "{{count}} hinzugefügte Zeilen",
"{{COUNT}} Available Skills": "{{COUNT}} verfügbare Skills",
"{{COUNT}} Available Tools": "{{COUNT}} verfügbare Werkzeuge",
"{{COUNT}} characters": "{{COUNT}} Zeichen",
- "{{COUNT}} document(s) selected.": "",
+ "{{COUNT}} document(s) selected.": "{{COUNT}} Dokument(e) ausgewählt.",
"{{COUNT}} extracted lines": "{{COUNT}} extrahierte Zeilen",
"{{count}} files_one": "{{count}} Datei",
"{{count}} files_other": "{{count}} Dateien",
@@ -26,11 +26,11 @@
"{{COUNT}} members": "{{COUNT}} Mitglieder",
"{{count}} of {{total}} accessible_one": "{{count}} von {{total}} zugänglich",
"{{count}} of {{total}} accessible_other": "{{count}} von {{total}} zugänglich",
- "{{COUNT}} pipeline(s) selected": "",
- "{{count}} removed lines_one": "",
- "{{count}} removed lines_other": "",
+ "{{COUNT}} pipeline(s) selected": "{{COUNT}} Pipeline(s) ausgewählt",
+ "{{count}} removed lines_one": "{{count}} entfernte Zeile",
+ "{{count}} removed lines_other": "{{count}} entfernte Zeilen",
"{{COUNT}} Replies": "{{COUNT}} Antworten",
- "{{COUNT}} Rows": "{{COUNT}} Reihen",
+ "{{COUNT}} Rows": "{{COUNT}} Zeilen",
"{{count}} selected_one": "{{count}} ausgewählt",
"{{count}} selected_other": "{{count}} ausgewählt",
"{{COUNT}} Sources": "{{COUNT}} Quellen",
@@ -45,32 +45,33 @@
"{{label}} contains invalid JSON": "{{label}} enthält ungültiges JSON",
"{{label}} must be a JSON object": "{{label}} muss ein JSON-Objekt sein",
"{{model}} download has been canceled": "Der Download von {{model}} wurde abgebrochen",
- "{{modelName}} profile image": "{{modelName}} Profil Bild",
+ "{{modelName}} profile image": "Profilbild von {{modelName}}",
"{{NAMES}} reacted with {{REACTION}}": "{{NAMES}} reagierte(n) mit {{REACTION}}",
- "{{page}} / {{totalPages}} ({{rows}} rows)": "",
- "{{percent}}% full": "",
+ "{{page}} / {{totalPages}} ({{rows}} rows)": "{{page}} / {{totalPages}} ({{rows}} Zeilen)",
+ "{{percent}}% full": "{{percent}} % belegt",
"{{user}}'s Chats": "Chats von {{user}}",
"{{webUIName}} Backend Required": "{{webUIName}}-Backend erforderlich",
- "* (all domains)": "",
+ "* (all domains)": "* (alle Domains)",
"*Prompt node ID(s) are required for image generation": "*Prompt-Node-ID(s) sind für die Bildgenerierung erforderlich",
- "*required": "",
+ "*required": "*erforderlich",
"1 file": "1 Datei",
"1 group": "1 Gruppe",
- "1 hour before": "1 Stunde vor",
+ "1 hour before": "1 Stunde vorher",
"1 Source": "1 Quelle",
"1 user": "1 Benutzer",
- "10 minutes before": "10 Minuten vor",
- "15 minutes before": "15 Minuten vor",
- "1m_time_ago": "vor 1 Minute",
- "30 minutes before": "30 Minuten vor",
- "5 minutes before": "5 Minuten vor",
- "A chat run failed.": "",
- "A chat run finished successfully.": "",
+ "10 minutes before": "10 Minuten vorher",
+ "15 minutes before": "15 Minuten vorher",
+ "1m_time_ago": "1 min",
+ "30 minutes before": "30 Minuten vorher",
+ "5 minutes before": "5 Minuten vorher",
+ "A chat run failed.": "Ein Chat-Durchlauf ist fehlgeschlagen.",
+ "A chat run finished successfully.": "Ein Chat-Durchlauf wurde erfolgreich abgeschlossen.",
"A collaboration channel where people join as members": "Ein Kanal zur Zusammenarbeit, dem Mitglieder beitreten können",
"A discussion channel where access is controlled by groups and permissions": "Ein Diskussionskanal, dessen Zugriff durch Gruppen und Berechtigungen gesteuert wird",
"A new version (v{{LATEST_VERSION}}) is now available.": "Eine neue Version (v{{LATEST_VERSION}}) ist jetzt verfügbar.",
"A private conversation between you and selected users": "Eine private Unterhaltung zwischen Ihnen und ausgewählten Benutzern",
"a user": "ein Benutzer",
+ "about the Roman Empire": "über das Römische Reich",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Autovervollständigung akzeptieren\nZur Prompt-Variable springen",
"Access": "Zugriff",
"Access Control": "Zugriffskontrolle",
@@ -119,7 +120,7 @@
"Add Terminal Connection": "Terminalverbindung hinzufügen",
"Add text content": "Textinhalt hinzufügen",
"Add to favorites": "Zu Favoriten hinzufügen",
- "Add translation": "",
+ "Add translation": "Übersetzung hinzufügen",
"Add User": "Benutzer hinzufügen",
"Add User Group": "Benutzergruppe hinzufügen",
"Add User Variable": "Benutzervariable hinzufügen",
@@ -127,7 +128,7 @@
"Add webpage": "Webseite hinzufügen",
"Add your Open Terminal URL and API key in Settings → Integrations.": "Fügen Sie Ihre Open-Terminal-URL und Ihren API-Schlüssel unter Einstellungen → Integrationen hinzu.",
"Additional configuration options for marker. This should be a JSON string with key-value pairs. For example, '{\"key\": \"value\"}'. Supported keys include: disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level": "Zusätzliche Konfigurationsoptionen für Marker. Dies sollte ein JSON-String mit Schlüssel-Wert-Paaren sein. Zum Beispiel '{\"key\": \"value\"}'. Unterstützte Schlüssel sind: disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level",
- "Additional feedback comments": "Zusätzliche Feedback Kommentare",
+ "Additional feedback comments": "Zusätzliche Feedback-Kommentare",
"admin": "Administrator",
"Admin": "Administrator",
"Admin Panel": "Admin-Bereich",
@@ -144,11 +145,11 @@
"All models are now hidden": "Alle Modelle sind nun versteckt",
"All models are now visible": "Alle Modelle sind nun sichtbar",
"All models deleted successfully": "Alle Modelle erfolgreich gelöscht",
- "All rights reserved.": "",
+ "All rights reserved.": "Alle Rechte vorbehalten.",
"All shared chats have been unshared.": "Die Freigabe aller geteilten Chats wurde aufgehoben.",
"All Sources": "Alle Quellen",
"All time": "Gesamte Zeit",
- "All Users": "Alle Nutzer",
+ "All Users": "Alle Benutzer",
"All users and system events": "Alle Benutzer- und Systemereignisse",
"Allow": "Erlauben",
"Allow {{NAME}}?": "{{NAME}} erlauben?",
@@ -167,7 +168,7 @@
"Allow Delete Messages": "Löschen von Nachrichten erlauben",
"Allow File Upload": "Dateiupload erlauben",
"Allow Multiple Models in Chat": "Mehrere Modelle im Chat erlauben",
- "Allow public write access": "Erlaubte öffentlichen schreibenden Zugang",
+ "Allow public write access": "Öffentlichen Schreibzugriff erlauben",
"Allow Rate Response": "Antwortbewertung erlauben",
"Allow Regenerate Response": "Antwort-Neugenerierung erlauben",
"Allow Sharing With Groups": "Teilen mit Gruppen erlauben",
@@ -177,7 +178,7 @@
"Allow Text to Speech": "Text-zu-Sprache erlauben",
"Allow the AI to delegate tasks to sub-agents. Each sub-agent creates a real chat with full tool access. Uses additional LLM calls.": "Erlaubt der KI, Aufgaben an Sub-Agents zu delegieren. Jeder Sub-Agent erstellt einen echten Chat mit vollem Werkzeugzugriff. Verursacht zusätzliche LLM-Aufrufe.",
"Allow Tool Call": "Werkzeugaufruf erlauben",
- "Allow Web Upload": "Webseiten Upload erlauben",
+ "Allow Web Upload": "Webseiten-Upload erlauben",
"Already have an account?": "Bereits registriert?",
"Also bound to {{action}}": "Auch mit \"{{action}}\" belegt",
"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.": "Eine Alternative zu top_p, die ein Gleichgewicht zwischen Qualität und Vielfalt anstrebt. Der Parameter p stellt die Mindestwahrscheinlichkeit dar, mit der ein Token relativ zur Wahrscheinlichkeit des wahrscheinlichsten Tokens berücksichtigt wird. Wenn z. B. p = 0.05 ist und das wahrscheinlichste Token eine Wahrscheinlichkeit von 0.9 hat, werden Logits mit einem Wert kleiner als 0.045 gefiltert.",
@@ -186,9 +187,9 @@
"an assistant": "ein Assistent",
"Analytics": "Analyse",
"Analyzed": "Analysiert",
- "Analyzing...": "Analysiere...",
+ "Analyzing...": "Wird analysiert...",
"and {{COUNT}} more": "und {{COUNT}} weitere",
- "and create a new shared link.": "und erstellen Sie einen neuen Freigabe-Link.",
+ "and create a new shared link.": "und einen neuen Freigabe-Link zu erstellen.",
"Anyone": "Jeder",
"Anyone with the link can view": "Für alle mit dem Link einsehbar",
"API Base URL": "API-Basis-URL",
@@ -197,10 +198,10 @@
"API Key created.": "API-Schlüssel erstellt.",
"API Key deleted.": "API-Schlüssel gelöscht.",
"API Keys": "API-Schlüssel",
- "API Type": "API Typ",
+ "API Type": "API-Typ",
"API Version": "API-Version",
"API Version is required": "API-Version ist erforderlich",
- "App navigation": "",
+ "App navigation": "App-Navigation",
"applies to all users with the \"user\" role": "gilt für alle Benutzer mit der Rolle \"Benutzer\"",
"April": "April",
"Archive": "Archivieren",
@@ -215,7 +216,7 @@
"Are you sure you want to delete this directory?": "Sind Sie sicher, dass Sie dieses Verzeichnis löschen möchten?",
"Are you sure you want to delete this memory? This action cannot be undone.": "Möchten Sie diese Erinnerung wirklich löschen? Dieser Vorgang kann nicht rückgängig gemacht werden.",
"Are you sure you want to delete this message?": "Sind Sie sicher, dass Sie diese Nachricht löschen möchten?",
- "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "Sind Sie sicher, dass Sie diese Version löschen wollen? Child-Versionen werden zu dem Parent dieser Version verlinkt.",
+ "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "Sind Sie sicher, dass Sie diese Version löschen möchten? Untergeordnete Versionen werden mit der übergeordneten Version dieser Version verknüpft.",
"Are you sure you want to delete this webhook? This action cannot be undone.": "Sind Sie sicher, dass Sie diesen Webhook löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.",
"Are you sure you want to delete this?": "Sind Sie sicher, dass Sie das löschen wollen?",
"Are you sure you want to reset all permissions to their default values? You will still need to save to apply the changes.": "Sind Sie sicher, dass Sie alle Berechtigungen auf ihre Standardwerte zurücksetzen möchten? Sie müssen dennoch speichern, um die Änderungen anzuwenden.",
@@ -226,7 +227,7 @@
"Ask": "Fragen",
"Ask a question": "Stellen Sie eine Frage",
"Ask a test question": "Eine Testfrage stellen",
- "Ask for approval": "",
+ "Ask for approval": "Um Bestätigung bitten",
"Ask this knowledge source a test question": "Dieser Wissensquelle eine Testfrage stellen",
"Assistant": "Assistent",
"Assistant messages": "Assistentennachrichten",
@@ -238,7 +239,7 @@
"Attach Notes": "Notizen anhängen",
"Attach Webpage": "Webseite anhängen",
"Attention to detail": "Liebe zum Detail",
- "Audio player": "",
+ "Audio player": "Audioplayer",
"August": "August",
"Auth": "Authentifizierung",
"Auth Mode": "Authentifizierungsmodus",
@@ -264,7 +265,7 @@
"Available Skills": "Verfügbare Skills",
"Available Tools": "Verfügbare Werkzeuge",
"Available variables": "Verfügbare Variablen",
- "available!": "Verfügbar!",
+ "available!": "verfügbar!",
"Average messages per active day": "Durchschnittliche Nachrichten pro aktivem Tag",
"Average tokens per chat": "Durchschnittliche Token pro Chat",
"Away": "Abwesend",
@@ -272,21 +273,21 @@
"Azure AI Speech": "Azure AI Speech",
"Azure OpenAI": "Azure OpenAI",
"Back": "Zurück",
- "Background Image": "",
- "Background image must be at most 25 megapixels.": "",
- "Background image must be at most 5 MiB.": "",
- "Background image must be PNG, JPEG, WebP, or GIF.": "",
- "Background image preview": "",
+ "Background Image": "Hintergrundbild",
+ "Background image must be at most 25 megapixels.": "Das Hintergrundbild darf höchstens 25 Megapixel groß sein.",
+ "Background image must be at most 5 MiB.": "Das Hintergrundbild darf höchstens 5 MiB groß sein.",
+ "Background image must be PNG, JPEG, WebP, or GIF.": "Das Hintergrundbild muss im Format PNG, JPEG, WebP oder GIF vorliegen.",
+ "Background image preview": "Vorschau des Hintergrundbilds",
"Background sub-agent finished": "Sub-Agent im Hintergrund abgeschlossen",
- "background sub-agents": "Sub-Agents",
+ "background sub-agents": "Sub-Agents im Hintergrund",
"Bad Response": "Schlechte Antwort",
"Base Model (From)": "Basismodell (Von)",
- "Base Model is required.": "Basis Modell ist notwendig.",
- "Base Models": "",
- "Basic text only": "",
+ "Base Model is required.": "Basismodell ist erforderlich.",
+ "Base Models": "Basismodelle",
+ "Basic text only": "Nur einfacher Text",
"Basics": "Grundeinstellungen",
"Bearer": "Bearer",
- "before": "zuvor",
+ "before": "bereits geteilt",
"Being lazy": "Faulheit",
"Bing": "Bing",
"Bold": "Fett",
@@ -296,7 +297,7 @@
"Button ID": "Schaltflächen-ID",
"Button Label": "Schaltflächenbeschriftung",
"Button Prompt": "Schaltflächen-Prompt",
- "By": "",
+ "By": "Von",
"by {{name}}": "von {{name}}",
"By {{name}}": "Von {{name}}",
"By supporting the project through sponsorship or an enterprise license, you help us stay independent, ship new features faster, improve stability, and grow Open WebUI for the long haul.": "Mit einem Sponsoring oder einer Enterprise-Lizenz unterstützen Sie uns dabei, unabhängig zu bleiben, neue Funktionen schneller auszuliefern, die Stabilität zu verbessern und Open WebUI langfristig weiterzuentwickeln.",
@@ -311,12 +312,12 @@
"Camera": "Kamera",
"Cancel": "Abbrechen",
"Cancel download of {{model}}": "Download von {{model}} abbrechen",
- "Cannot create an empty note.": "Leere Notiz kann nicht gespeichert werden.",
+ "Cannot create an empty note.": "Leere Notiz kann nicht erstellt werden.",
"Cannot delete the production version": "Die produktive Version kann nicht gelöscht werden",
"Capture": "Aufnahme",
"Capture Audio": "Audio aufnehmen",
- "Change folder icon": "Ordner-Icon ändern",
- "Change User Role": "Nutzerrolle ändern",
+ "Change folder icon": "Ordnersymbol ändern",
+ "Change User Role": "Benutzerrolle ändern",
"Channel": "Kanal",
"Channel deleted successfully": "Kanal erfolgreich gelöscht",
"Channel is required": "Kanal ist erforderlich",
@@ -334,15 +335,16 @@
"Chat Conversation": "Chat-Unterhaltung",
"Chat deleted.": "Chat gelöscht.",
"Chat exported successfully": "Chat erfolgreich exportiert",
- "Chat failed": "",
- "Chat finished": "",
+ "Chat failed": "Chat fehlgeschlagen",
+ "Chat finished": "Chat abgeschlossen",
"Chat forked": "Chat verzweigt",
"Chat history": "Chatverlauf",
"Chat ID": "Chat-ID",
"Chat is too short to compact": "Der Chat ist zu kurz zum Verdichten",
- "Chat Menu": "",
+ "Chat Menu": "Chat-Menü",
"Chat moved successfully": "Chat erfolgreich verschoben",
"Chat Permissions": "Chat-Berechtigungen",
+ "Chat unarchived.": "Chat aus dem Archiv wiederhergestellt.",
"Chat unshared successfully.": "Chat-Freigabe erfolgreich aufgehoben",
"Chat Uploads": "Chat-Uploads",
"Chat Variables": "Chat-Variablen",
@@ -353,7 +355,7 @@
"Chats Public Sharing": "Öffentliche Chat-Freigabe",
"Check Again": "Erneut prüfen",
"Check OAuth Discovery": "OAuth-Discovery prüfen",
- "Check what is running in this chat.": "",
+ "Check what is running in this chat.": "Prüfen, was in diesem Chat gerade läuft.",
"Checking for updates...": "Suche nach Updates...",
"Choose a model before saving...": "Wählen Sie vor dem Speichern ein Modell...",
"Choose channel": "Kanal auswählen",
@@ -379,7 +381,7 @@
"Click to connect": "Zum Verbinden klicken",
"Click to copy ID": "Zum Kopieren der ID klicken",
"Click to rebind": "Zum Neubelegen klicken",
- "Client ID": "Client ID",
+ "Client ID": "Client-ID",
"Client Secret": "Client Secret",
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Schreibzugriff auf Zwischenablage verweigert. Bitte prüfen Sie Ihre Browsereinstellungen.",
"Clone": "Klonen",
@@ -387,15 +389,15 @@
"Clone of {{TITLE}}": "Kopie von {{TITLE}}",
"Close": "Schließen",
"Close Banner": "Banner schließen",
- "Close chat controls": "Chat Controls schließen",
+ "Close chat controls": "Chat-Steuerung schließen",
"Close citation modal": "Zitat-Popup schließen",
"Close Configure Connection Modal": "Verbindungs-Konfiguration schließen",
- "Close embed": "",
+ "Close embed": "Einbettung schließen",
"Close feedback": "Feedback schließen",
"Close modal": "Modal schließen",
"Close Modal": "Modal schließen",
"Close Sidebar": "Seitenleiste schließen",
- "Close terminal": "",
+ "Close terminal": "Terminal schließen",
"cloud": "Cloud",
"CMU ARCTIC speaker embedding name": "Name des CMU ARCTIC Sprecher-Embeddings",
"Code Block": "Code-Block",
@@ -418,10 +420,10 @@
"Command": "Befehl",
"Commands": "Befehle",
"Comment": "Kommentar",
- "Commit Message": "Commit Nachricht",
- "Community Reviews": "Community Bewertungen",
- "Compact": "",
- "Compact: shorten older messages so this chat can keep going.": "",
+ "Commit Message": "Commit-Nachricht",
+ "Community Reviews": "Community-Bewertungen",
+ "Compact": "Verdichten",
+ "Compact: shorten older messages so this chat can keep going.": "Verdichten: ältere Nachrichten kürzen, damit dieser Chat fortgesetzt werden kann.",
"Compacting context": "Kontext wird verdichtet",
"Compacting context...": "Kontext wird verdichtet...",
"Compare": "Vergleichen",
@@ -439,7 +441,7 @@
"Confirm your action": "Bitte bestätigen",
"Confirm your new password": "Neues Passwort bestätigen",
"Confirm Your Password": "Passwort bestätigen",
- "Connect to an AI provider to start chatting": "Zum Chatten mit einem AI provider verbinden",
+ "Connect to an AI provider to start chatting": "Verbinden Sie sich mit einem KI-Anbieter, um zu chatten",
"Connect to Open Terminal instances. Admins and users granted access can use file browsing and terminal tools through these servers.": "Stellt eine Verbindung zu Open-Terminal-Instanzen her. Administratoren und Benutzer mit Zugriff können über diese Server die Dateiansicht und Terminal-Werkzeuge nutzen.",
"Connect to your own OpenAPI compatible external tool servers.": "Verbinden Sie Ihre eigenen OpenAPI-kompatiblen externen Tool-Server.",
"Connected": "Verbunden",
@@ -448,19 +450,19 @@
"Connection lost. Reconnecting...": "Verbindung unterbrochen. Wird wiederhergestellt...",
"Connection successful": "Verbindung erfolgreich",
"Connection Type": "Verbindungstyp",
- "Connections managed through the Admin Panel are recommended for everyday use. Direct connections provide convenient access to your own endpoints, but rely on your browser session to keep requests running, making them better suited to testing and temporary use.": "",
+ "Connections managed through the Admin Panel are recommended for everyday use. Direct connections provide convenient access to your own endpoints, but rely on your browser session to keep requests running, making them better suited to testing and temporary use.": "Für den täglichen Gebrauch werden Verbindungen empfohlen, die über den Admin-Bereich verwaltet werden. Direkte Verbindungen bieten bequemen Zugriff auf Ihre eigenen Endpunkte, sind aber darauf angewiesen, dass Ihre Browsersitzung die Anfragen am Laufen hält. Daher eignen sie sich eher für Tests und die vorübergehende Nutzung.",
"Connections saved successfully": "Verbindungen erfolgreich gespeichert",
"Connections settings updated": "Verbindungseinstellungen aktualisiert",
"Contact Admin for WebUI Access": "Kontaktieren Sie den Administrator für WebUI-Zugriff",
"Content": "Inhalt",
"Content Field": "Inhaltsfeld",
- "Content lengths (character counts only)": "Content-Längen (nur Zeichen)",
+ "Content lengths (character counts only)": "Inhaltslängen (nur Zeichenanzahl)",
"Content matches": "Treffer im Inhalt",
"Context": "Kontext",
"Context compacted": "Kontext verdichtet",
"Context compaction failed": "Kontextverdichtung fehlgeschlagen",
"Context compaction is disabled": "Kontextverdichtung ist deaktiviert",
- "Context usage": "",
+ "Context usage": "Kontextauslastung",
"Continue": "Fortfahren",
"Continue Response": "Antwort fortsetzen",
"Continue with {{provider}}": "Mit {{provider}} fortfahren",
@@ -475,9 +477,9 @@
"Copied shared chat URL to clipboard!": "Chat-Freigabe-URL in die Zwischenablage kopiert!",
"Copied to clipboard": "In die Zwischenablage kopiert",
"Copy": "Kopieren",
- "Copy API Key": "API Key kopieren",
+ "Copy API Key": "API-Schlüssel kopieren",
"Copy content": "Inhalt kopieren",
- "Copy default": "",
+ "Copy default": "Standard übernehmen",
"Copy Last Code Block": "Letzten Code-Block kopieren",
"Copy Last Response": "Letzte Antwort kopieren",
"Copy link": "Link kopieren",
@@ -489,18 +491,19 @@
"Copy Token": "Token kopieren",
"Copy URL": "URL kopieren",
"Copying to clipboard was successful!": "Erfolgreich in die Zwischenablage kopiert!",
- "Copyright (c)": "",
+ "Copyright (c)": "Copyright (c)",
"CORS must be properly configured by the provider to allow requests from Open WebUI.": "CORS muss vom Anbieter korrekt konfiguriert sein, um Anfragen von Open WebUI zuzulassen.",
- "Could not check for updates": "",
+ "Could not check for updates": "Suche nach Updates fehlgeschlagen",
"Could not load release notes.": "Die Versionshinweise konnten nicht geladen werden.",
"Could not read file.": "Datei konnte nicht gelesen werden.",
- "Couldn't find your language?": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "Könntest du mich zuerst fragen, in welchen Situationen ich am meisten prokrastiniere, und mir dann Vorschläge machen, wie ich das überwinden kann?",
+ "Couldn't find your language?": "Ihre Sprache ist nicht dabei?",
"CPU": "CPU",
"Create": "Erstellen",
"Create a knowledge base": "Wissensspeicher erstellen",
"Create a model": "Modell erstellen",
"Create a new note": "Neue Notiz erstellen",
- "Create a reusable terminal skill from this chat.": "",
+ "Create a reusable terminal skill from this chat.": "Aus diesem Chat einen wiederverwendbaren Terminal-Skill erstellen.",
"Create Account": "Konto erstellen",
"Create Admin Account": "Admin-Konto erstellen",
"Create announcements shown to users in the app.": "Erstellt Ankündigungen, die Benutzern in der App angezeigt werden.",
@@ -511,8 +514,8 @@
"Create new key": "Neuen Schlüssel erstellen",
"Create Prompt": "Prompt erstellen",
"Create scheduled prompts that run automatically on a recurring basis.": "Erstellen Sie geplante Prompts, die automatisch in regelmäßigen Abständen ausgeführt werden.",
- "Create skill": "",
- "Create skill: create a reusable terminal skill from this chat.": "",
+ "Create skill": "Skill erstellen",
+ "Create skill: create a reusable terminal skill from this chat.": "Skill erstellen: aus diesem Chat einen wiederverwendbaren Terminal-Skill erstellen.",
"Create your first note from the Create menu.": "Erstellen Sie Ihre erste Notiz über das Menü \"Erstellen\".",
"Created": "Erstellt",
"Created at": "Erstellt am",
@@ -523,9 +526,9 @@
"CSV Import": "CSV-Import",
"CSV: Name,Email": "CSV: Name,Email",
"Ctrl+Enter to Send": "Strg+Enter zum Senden",
- "Cumulative": "",
+ "Cumulative": "Kumuliert",
"Current": "Aktuell",
- "Current branch": "",
+ "Current branch": "Aktueller Zweig",
"Current Model": "Aktuelles Modell",
"Current streak": "Aktuelle Serie",
"Custom": "Benutzerdefiniert",
@@ -544,7 +547,7 @@
"Database": "Datenbank",
"Datalab Marker API": "Datalab Marker API",
"Date is required": "Datum ist erforderlich",
- "Date Modified": "Datum geändert",
+ "Date Modified": "Änderungsdatum",
"Day": "Tag",
"DD/MM/YYYY": "DD.MM.YYYY",
"December": "Dezember",
@@ -561,7 +564,7 @@
"Default permissions": "Standardberechtigungen",
"Default permissions updated successfully": "Standardberechtigungen erfolgreich aktualisiert",
"Default Prompt Suggestions": "Standard-Prompt-Vorschläge",
- "Default to 389 or 636 if TLS is enabled": "Standard auf 389 oder 636, wenn TLS aktiviert ist",
+ "Default to 389 or 636 if TLS is enabled": "Standardmäßig 389 oder 636, wenn TLS aktiviert ist",
"Default to ALL": "Standardmäßig ALLE",
"Default to memberOf": "Standardmäßig memberOf",
"Default to segmented retrieval for focused and relevant content extraction, this is recommended for most cases.": "Standardmäßig segmentierter Abruf für fokussierte Inhaltsextraktion (empfohlen).",
@@ -590,7 +593,7 @@
"Delete note?": "Notiz löschen?",
"Delete prompt?": "Prompt löschen?",
"Delete skill?": "Skill löschen?",
- "delete this link": "diesen Link löschen",
+ "delete this link": "diesen Link zu löschen",
"Delete tool?": "Werkzeug löschen?",
"Delete User": "Benutzer löschen",
"Delete Version": "Version löschen",
@@ -607,15 +610,15 @@
"Describe the edit...": "Beschreiben Sie die Änderung...",
"Describe the image...": "Beschreiben Sie das Bild...",
"Describe what changed...": "Beschreiben Sie, was sich geändert hat...",
- "Describe your knowledge base and objectives": "Beschreiben Sie Ihren Wissensspeicher und Ziele",
+ "Describe your knowledge base and objectives": "Beschreiben Sie Ihren Wissensspeicher und Ihre Ziele",
"Description": "Beschreibung",
- "Description ({{language}})": "",
+ "Description ({{language}})": "Beschreibung ({{language}})",
"Deselect": "Abwählen",
"Destination": "Ziel",
"Detected Variables": "Erkannte Variablen",
"Dictate": "Diktieren",
"Didn't fully follow instructions": "Anweisungen nicht vollständig befolgt",
- "Diff settings": "",
+ "Diff settings": "Vergleichseinstellungen",
"Direct": "Direkt",
"Direct Message": "Direktnachricht",
"Direct Tool Servers": "Direkte Tool-Server",
@@ -639,15 +642,15 @@
"Discover, download, and explore custom tools": "Benutzerdefinierte Werkzeuge entdecken und herunterladen",
"Discover, download, and explore model presets": "Modellvorlagen entdecken und herunterladen",
"Discussion channel where access is based on groups and permissions": "Diskussionskanal mit gruppenbasiertem Zugriff",
- "Dismiss": "",
- "Dismiss notification": "",
+ "Dismiss": "Schließen",
+ "Dismiss notification": "Benachrichtigung schließen",
"Display": "Anzeige",
"Do not install functions from sources you do not fully trust.": "Installieren Sie keine Funktionen aus nicht vertrauenswürdigen Quellen.",
"Do not install tools from sources you do not fully trust.": "Installieren Sie keine Werkzeuge aus nicht vertrauenswürdigen Quellen.",
"Do you want to sync your usage stats with Open WebUI Community?": "Möchten Sie Ihre Nutzungsstatistiken mit der Open WebUI Community synchronisieren?",
"Docling": "Docling",
"Docling Parameters": "Docling-Parameter",
- "Docling Server URL required.": "Docling Server-URL erforderlich.",
+ "Docling Server URL required.": "Docling-Server-URL erforderlich.",
"Document": "Dokument",
"Document ID Field": "Dokument-ID-Feld",
"Document Intelligence": "Dokumentenintelligenz",
@@ -667,10 +670,10 @@
"Download CSV Template": "CSV-Vorlage herunterladen",
"Download failed": "Download fehlgeschlagen",
"Download Model": "Modell herunterladen",
- "Downloading \"{{name}}\"": "",
+ "Downloading \"{{name}}\"": "Wird heruntergeladen: \"{{name}}\"",
"Downloading \"{{searchValue}}\"": "\"{{searchValue}}\" wird heruntergeladen",
"Downloading stats...": "Statistiken werden heruntergeladen...",
- "Drag and Drop Container": "",
+ "Drag and Drop Container": "Drag-and-Drop-Bereich",
"Drag to reorder": "Zum Umsortieren ziehen",
"Draw": "Zeichnen",
"Drop any files here to upload": "Dateien zum Hochladen hier ablegen",
@@ -684,7 +687,7 @@
"e.g. A filter to remove profanity from text": "z. B. Ein Filter zum Entfernen von Schimpfwörtern",
"e.g. about the Roman Empire": "z. B. über das Römische Reich",
"e.g. alloy, echo, shimmer": "z. B. alloy, echo, shimmer",
- "e.g. Code Review Guidelines": "z. B. Code Review Richtlinien",
+ "e.g. Code Review Guidelines": "z. B. Code-Review-Richtlinien",
"e.g. code-review-guidelines": "z. B. code-review-richtlinien",
"e.g. en": "z. B. de",
"e.g. My Filter": "z. B. Mein Filter",
@@ -692,9 +695,9 @@
"e.g. my_filter": "z. B. mein_filter",
"e.g. my_tools": "z. B. meine_werkzeuge",
"e.g. pdf, docx, txt": "z. B. pdf, docx, txt",
- "e.g. Step-by-step instructions for code reviews": "z. B. Schritt für Schritt Anleitung für ein Code Review",
+ "e.g. Step-by-step instructions for code reviews": "z. B. Schritt-für-Schritt-Anleitung für Code-Reviews",
"e.g. Tell me a fun fact": "z. B. Erzähl mir einen Fun Fact",
- "e.g. Tell me a fun fact about the Roman Empire": "z. B. Erzähl mir etwas Interessantes über Rom",
+ "e.g. Tell me a fun fact about the Roman Empire": "z. B. Erzähl mir einen Fun Fact über das Römische Reich",
"e.g. Tools for performing various operations": "z. B. Werkzeuge für verschiedene Operationen",
"e.g., 3, 4, 5 (leave blank for default)": "z. B. 3, 4, 5 (leer lassen für Standard)",
"e.g., audio/wav,audio/mpeg,video/* (leave blank for defaults)": "z. B. audio/wav,audio/mpeg,video/* (leer für Standard)",
@@ -709,26 +712,26 @@
"Edit Knowledge Connection": "Wissensverbindung bearbeiten",
"Edit Last Message": "Letzte Nachricht bearbeiten",
"Edit Memory": "Erinnerung bearbeiten",
- "Edit Prompt": "Prompt editieren",
- "Edit Terminal Connection": "Terminal Verbindung bearbeiten",
+ "Edit Prompt": "Prompt bearbeiten",
+ "Edit Terminal Connection": "Terminalverbindung bearbeiten",
"Edit User": "Benutzer bearbeiten",
"Edit User Group": "Benutzergruppe bearbeiten",
"Edit User Variable": "Benutzervariable bearbeiten",
"Edit webhook": "Webhook bearbeiten",
"edited": "bearbeitet",
- "Editing language": "",
+ "Editing language": "Bearbeitungssprache",
"Eject": "Auswerfen",
"Eject model": "Modell auswerfen",
"ElevenLabs": "ElevenLabs",
"Email": "E-Mail",
- "Embedded content": "",
+ "Embedded content": "Eingebetteter Inhalt",
"Emoji": "Emoji",
- "Emoji graphics provided by": "",
- "Emojis": "Emoji",
+ "Emoji graphics provided by": "Emoji-Grafiken bereitgestellt von",
+ "Emojis": "Emojis",
"Empty": "Leer",
"Empty message": "Leere Nachricht",
"Enable All": "Alle aktivieren",
- "Enable all ({{COUNT}})": "",
+ "Enable all ({{COUNT}})": "Alle aktivieren ({{COUNT}})",
"Enable Code Interpreter": "Code-Interpreter aktivieren",
"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Aktiviert Memory Locking (mlock), um das Auslagern von Modelldaten aus dem RAM zu verhindern. Dies sperrt den Arbeitsspeicherbereich des Modells und sichert schnellen Datenzugriff sowie konstante Leistung.",
"Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "Aktiviert Memory Mapping (mmap) zum Laden von Modelldaten. Dies nutzt Festplattenspeicher als RAM-Erweiterung, was die Leistung durch schnelleren Datenzugriff verbessern kann, jedoch viel Speicherplatz benötigt und systemabhängig ist.",
@@ -750,8 +753,8 @@
"Enter api auth string (e.g. username:password)": "API-Auth-String eingeben (z. B. username:password)",
"Enter Application DN": "Anwendungs-DN eingeben",
"Enter Application DN Password": "Anwendungs-DN-Passwort eingeben",
- "Enter Bing Search V7 Endpoint": "Bing Search V7 Endpunkt eingeben",
- "Enter Bing Search V7 Subscription Key": "Bing Search V7 Key eingeben",
+ "Enter Bing Search V7 Endpoint": "Bing Search V7-Endpunkt eingeben",
+ "Enter Bing Search V7 Subscription Key": "Bing Search V7 Abonnement-Schlüssel eingeben",
"Enter Bocha Search API Key": "Bocha Search API-Schlüssel eingeben",
"Enter Brave Search API Key": "Brave Search API-Schlüssel eingeben",
"Enter certificate path": "Zertifikatpfad eingeben",
@@ -760,10 +763,10 @@
"Enter Chunk Size": "Chunk-Größe eingeben",
"Enter Client ID": "Client-ID eingeben",
"Enter Client Secret": "Client Secret eingeben",
- "Enter comma-separated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "Kommagetrennte \"token:bias_value\"-Paare eingeben (Bsp: 5432:100, 413:-100)",
+ "Enter comma-separated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "Kommagetrennte \"token:bias_value\"-Paare eingeben (z. B. 5432:100, 413:-100)",
"Enter content for the pending user info overlay. Leave empty for default.": "Inhalt für das Overlay 'Ausstehende Aktivierung'. Leer lassen für Standard.",
"Enter coordinates (e.g. 51.505, -0.09)": "Koordinaten eingeben (z. B. 51.505, -0.09)",
- "Enter Datalab Marker API Base URL": "Datalab Marker API Basis-URL eingeben",
+ "Enter Datalab Marker API Base URL": "Datalab Marker API-Basis-URL eingeben",
"Enter Datalab Marker API Key": "Datalab Marker API-Schlüssel eingeben",
"Enter description": "Beschreibung eingeben",
"Enter Docling API Key": "Docling API-Schlüssel eingeben",
@@ -779,9 +782,9 @@
"Enter External Web Loader URL": "URL für ext. Web-Loader",
"Enter External Web Search API Key": "API-Schlüssel für ext. Websuche",
"Enter External Web Search URL": "URL für ext. Websuche",
- "Enter Firecrawl API Base URL": "Firecrawl API Basis-URL eingeben",
+ "Enter Firecrawl API Base URL": "Firecrawl API-Basis-URL eingeben",
"Enter Firecrawl API Key": "Firecrawl API-Schlüssel eingeben",
- "Enter Firecrawl Timeout": "Firecrawl Timeout eingeben",
+ "Enter Firecrawl Timeout": "Firecrawl-Timeout eingeben",
"Enter folder name": "Ordnername eingeben",
"Enter function name filter list (e.g. func1, !func2)": "Funktionsnamen-Filterliste eingeben (z. B. func1, !func2)",
"Enter GitHub Raw URL": "GitHub-Raw-URL eingeben",
@@ -789,7 +792,7 @@
"Enter Google PSE Engine Id": "Google PSE Engine-ID eingeben",
"Enter hex color (e.g. #FF0000)": "Hex-Farbe eingeben (z. B. #FF0000)",
"Enter Image Size (e.g. 512x512)": "Bildgröße eingeben (z. B. 512x512)",
- "Enter Jina API Base URL": "Jina API Base URL eingeben",
+ "Enter Jina API Base URL": "Jina API-Basis-URL eingeben",
"Enter Jina API Key": "Jina API-Schlüssel eingeben",
"Enter JSON config (e.g., {\"disable_links\": true})": "JSON-Konfig eingeben (z. B. {\"disable_links\": true})",
"Enter Jupyter Password": "Jupyter-Passwort eingeben",
@@ -802,7 +805,7 @@
"Enter Microsoft Web IQ API Base URL": "Microsoft Web IQ API-Basis-URL eingeben",
"Enter Microsoft Web IQ API Key": "Microsoft Web IQ API-Schlüssel eingeben",
"Enter MinerU API Key": "MinerU-API-Schlüssel eingeben",
- "Enter Mistral API Base URL": "Mistral API Basis-URL eingeben",
+ "Enter Mistral API Base URL": "Mistral API-Basis-URL eingeben",
"Enter Mistral API Key": "Mistral API-Schlüssel eingeben",
"Enter model tag (e.g. {{modelTag}})": "Modell-Tag eingeben (z. B. {{modelTag}})",
"Enter Mojeek Search API Key": "Mojeek Search API-Schlüssel eingeben",
@@ -811,7 +814,7 @@
"Enter Number of Steps (e.g. 50)": "Anzahl der Schritte eingeben (z. B. 50)",
"Enter Ollama Cloud API Key": "Ollama Cloud API-Schlüssel eingeben",
"Enter OpenSERP Base URL": "OpenSERP-Basis-URL eingeben",
- "Enter PaddleOCR-vl API Base URL": "PaddleOCR-vl API Basis-URL eingeben",
+ "Enter PaddleOCR-vl API Base URL": "PaddleOCR-vl API-Basis-URL eingeben",
"Enter PaddleOCR-vl API Token": "PaddleOCR-vl API-Token eingeben",
"Enter Perplexity API Key": "Perplexity API-Schlüssel eingeben",
"Enter Perplexity Search API URL": "Perplexity Search API-URL eingeben",
@@ -824,8 +827,8 @@
"Enter Score": "Wertung eingeben",
"Enter SearchApi API Key": "SearchApi API-Schlüssel eingeben",
"Enter SearchApi Engine": "SearchApi Engine eingeben",
- "Enter Searxng Query URL": "Searxng Query-URL eingeben",
- "Enter Searxng search language": "Searxng-Such Sprache eingeben",
+ "Enter Searxng Query URL": "Searxng-Abfrage-URL eingeben",
+ "Enter Searxng search language": "Searxng-Suchsprache eingeben",
"Enter Seed": "Seed eingeben",
"Enter SerpApi API Key": "SerpApi API-Schlüssel eingeben",
"Enter SerpApi Engine": "SerpApi Engine eingeben",
@@ -839,7 +842,7 @@
"Enter skill instructions in markdown...": "Skill-Anweisungen in Markdown eingeben...",
"Enter Sougou Search API sID": "Sougou Search API sID eingeben",
"Enter Sougou Search API SK": "Sougou Search API SK eingeben",
- "Enter Staan API Key": "",
+ "Enter Staan API Key": "Staan API-Schlüssel eingeben",
"Enter stop sequence": "Stoppsequenz eingeben",
"Enter system prompt": "System-Prompt eingeben",
"Enter system prompt here": "System-Prompt hier eingeben",
@@ -850,7 +853,7 @@
"Enter Tika Server URL": "Tika Server-URL eingeben",
"Enter to Send": "Enter zum Senden",
"Enter token threshold": "Token-Schwellenwert eingeben",
- "Enter Tokenizer Model": "Tokenizer Modell eingeben",
+ "Enter Tokenizer Model": "Tokenizer-Modell eingeben",
"Enter Top K": "Top K eingeben",
"Enter Top K Reranker": "Top K Reranker eingeben",
"Enter URL (e.g. http://127.0.0.1:7860/)": "URL eingeben (z. B. http://127.0.0.1:7860/)",
@@ -860,9 +863,9 @@
"Enter Yacy Password": "Yacy-Passwort eingeben",
"Enter Yacy URL (e.g. http://yacy.example.com:8090)": "Yacy-URL eingeben (z. B. http://yacy.example.com:8090)",
"Enter Yacy Username": "Yacy-Benutzername eingeben",
- "Enter Yandex Web Search API Key": "Yandex Web-Such API Key eingeben",
- "Enter Yandex Web Search URL": "Yandex Web-Such URL eingeben",
- "Enter You.com API Key": "You.com API Key eingeben",
+ "Enter Yandex Web Search API Key": "Yandex Web Search API-Schlüssel eingeben",
+ "Enter Yandex Web Search URL": "Yandex Web Search URL eingeben",
+ "Enter You.com API Key": "You.com API-Schlüssel eingeben",
"Enter your code here...": "Code hier eingeben...",
"Enter your current password": "Aktuelles Passwort eingeben",
"Enter Your Email": "Ihre E-Mail eingeben",
@@ -886,7 +889,7 @@
"Error accessing Google Drive: {{error}}": "Fehler beim Zugriff auf Google Drive: {{error}}",
"Error accessing media devices.": "Fehler beim Zugriff auf Mediengeräte.",
"Error deleting model: {{error}}": "Fehler beim Löschen des Modells: {{error}}",
- "Error previewing file: {{error}}": "",
+ "Error previewing file: {{error}}": "Fehler bei der Dateivorschau: {{error}}",
"Error starting recording.": "Fehler beim Starten der Aufnahme.",
"Error unloading model: {{error}}": "Fehler beim Entladen des Modells: {{error}}",
"Error uploading file: {{error}}": "Fehler beim Hochladen der Datei: {{error}}",
@@ -905,20 +908,22 @@
"Every {{count}} minutes_other": "Alle {{count}} Minuten",
"Every minute": "Jede Minute",
"Example": "Beispiel",
- "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Bsp: (&(objectClass=inetOrgPerson)(uid=%s))",
- "Example: ALL": "Bsp: ALL",
- "Example: mail": "Bsp: mail",
- "Example: ou=users,dc=foo,dc=example": "Bsp: ou=users,dc=foo,dc=example",
- "Example: sAMAccountName or uid or userPrincipalName": "Bsp: sAMAccountName oder uid oder userPrincipalName",
+ "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Beispiel: (&(objectClass=inetOrgPerson)(uid=%s))",
+ "Example: ALL": "Beispiel: ALL",
+ "Example: mail": "Beispiel: mail",
+ "Example: ou=users,dc=foo,dc=example": "Beispiel: ou=users,dc=foo,dc=example",
+ "Example: sAMAccountName or uid or userPrincipalName": "Beispiel: sAMAccountName oder uid oder userPrincipalName",
"Exceeded the number of seats in your license. Please contact support to increase the number of seats.": "Die Benutzeranzahl Ihrer Lizenz wurde überschritten. Bitte kontaktieren Sie den Support für eine Erweiterung.",
"Exclude": "Ausschließen",
"Execute code for analysis": "Code zur Analyse ausführen",
"Executing {{NAME}}...": "{{NAME}} wird ausgeführt...",
"Expand": "Ausklappen",
- "Expand input": "",
+ "Expand input": "Eingabefeld erweitern",
"Experience": "Benutzererlebnis",
"Experimental": "Experimentell",
"Explain": "Erklären",
+ "Explain options trading": "Erklär mir den Optionshandel",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "Erklär mir den Optionshandel in einfachen Worten. Mit dem Kauf und Verkauf von Aktien kenne ich mich aus.",
"Explored": "Untersucht",
"Exploring": "Untersuche",
"Export": "Exportieren",
@@ -937,15 +942,15 @@
"External Knowledge Source": "Externe Wissensquelle",
"External vectors must be generated with the same embedding model configured in Open WebUI.": "Externe Vektoren müssen mit demselben Embedding-Modell erzeugt werden, das in Open WebUI konfiguriert ist.",
"Extract action items from this note.": "Aufgaben aus dieser Notiz extrahieren.",
- "Extracted text lines": "",
- "Extracting text and comparing…": "",
+ "Extracted text lines": "Extrahierte Textzeilen",
+ "Extracting text and comparing…": "Text wird extrahiert und verglichen...",
"Failed to add file.": "Hinzufügen der Datei fehlgeschlagen.",
"Failed to add members": "Mitglieder konnten nicht hinzugefügt werden",
"Failed to archive chat.": "Chat konnte nicht archiviert werden.",
"Failed to clear status": "Status konnte nicht geleert werden",
"Failed to compare files.": "Dateien konnten nicht verglichen werden.",
- "Failed to connect to {{URL}} OpenAPI tool server": "Verbindung zum OpenAPI-Toolserver {{URL}} fehlgeschlagen",
- "Failed to connect to {{URL}} terminal server": "Fehler beim Verbinden zum Terminal Server {{URL}}",
+ "Failed to connect to {{URL}} OpenAPI tool server": "Verbindung zum OpenAPI-Tool-Server {{URL}} fehlgeschlagen",
+ "Failed to connect to {{URL}} terminal server": "Verbindung zum Terminal-Server {{URL}} fehlgeschlagen",
"Failed to copy link": "Link konnte nicht kopiert werden",
"Failed to create API Key.": "API-Schlüssel konnte nicht erstellt werden.",
"Failed to create chat": "Chat konnte nicht erstellt werden",
@@ -966,13 +971,13 @@
"Failed to load Excel/CSV file. Please try downloading it instead.": "Excel/CSV-Datei konnte nicht geladen werden. Bitte versuchen Sie stattdessen, sie herunterzuladen.",
"Failed to load file content.": "Dateiinhalt konnte nicht geladen werden.",
"Failed to load folder": "Ordner konnte nicht geladen werden",
- "Failed to load Interface settings": "Interface Einstellungen konnten nicht geladen werden",
+ "Failed to load Interface settings": "Oberflächeneinstellungen konnten nicht geladen werden",
"Failed to load policy: {{error}}": "Richtlinie konnte nicht geladen werden: {{error}}",
"Failed to load PPTX file. Please try downloading it instead.": "PPTX-Datei konnte nicht geladen werden. Versuchen Sie stattdessen, sie herunterzuladen.",
"Failed to load usage": "Nutzungsdaten konnten nicht geladen werden",
- "Failed to load valves": "",
+ "Failed to load valves": "Valves konnten nicht geladen werden",
"Failed to move chat": "Chat konnte nicht verschoben werden",
- "Failed to open database": "",
+ "Failed to open database": "Datenbank konnte nicht geöffnet werden",
"Failed to process URL: {{url}}": "{{url}} konnte nicht verarbeitet werden",
"Failed to read clipboard contents": "Zwischenablage konnte nicht gelesen werden",
"Failed to refresh terminals: {{error}}": "Terminals konnten nicht aktualisiert werden: {{error}}",
@@ -982,22 +987,22 @@
"Failed to save chat variables": "Chat-Variablen konnten nicht gespeichert werden",
"Failed to save connections": "Verbindungen konnten nicht gespeichert werden",
"Failed to save conversation": "Unterhaltung konnte nicht gespeichert werden",
- "Failed to save model": "",
+ "Failed to save model": "Modell konnte nicht gespeichert werden",
"Failed to save models configuration": "Modellkonfiguration konnte nicht gespeichert werden",
- "Failed to save policy: {{error}}": "Fehler beim Speichern der Policy: {{error}}",
- "Failed to save terminal servers": "Terminal Server konnten nicht gespeichert werden",
+ "Failed to save policy: {{error}}": "Richtlinie konnte nicht gespeichert werden: {{error}}",
+ "Failed to save terminal servers": "Terminal-Server konnten nicht gespeichert werden",
"Failed to save webhook": "Webhook konnte nicht gespeichert werden",
"Failed to search files": "Dateien konnten nicht durchsucht werden",
"Failed to unshare chat.": "Chat-Freigabe konnte nicht entfernt werden",
"Failed to update settings": "Einstellungen konnten nicht aktualisiert werden",
"Failed to update status": "Status konnte nicht aktualisiert werden",
"Failed to update webhook": "Webhook konnte nicht aktualisiert werden",
- "Failed to upload background image.": "",
+ "Failed to upload background image.": "Hintergrundbild konnte nicht hochgeladen werden.",
"Failed to upload file.": "Datei-Upload fehlgeschlagen.",
"Features Permissions": "Funktionsberechtigungen",
"February": "Februar",
"Feedback": "Feedback",
- "Feedback Activity": "Feedback Aktivität",
+ "Feedback Activity": "Feedback-Aktivität",
"Feedback deleted successfully": "Feedback erfolgreich gelöscht",
"Feedback Details": "Feedback-Details",
"Feel free to add specific details": "Fügen Sie gerne Details hinzu",
@@ -1009,7 +1014,7 @@
"File content": "Datei-Inhalt",
"File content updated successfully.": "Dateiinhalt erfolgreich aktualisiert.",
"File deleted successfully.": "Datei erfolgreich gelöscht.",
- "File differences": "",
+ "File differences": "Dateiunterschiede",
"File Mode": "Datei-Modus",
"File moved.": "Datei verschoben.",
"File name": "Dateiname",
@@ -1038,7 +1043,7 @@
"Folder Name": "Ordnername",
"Folder name cannot be empty.": "Ordnername darf nicht leer sein.",
"Folder name updated successfully": "Ordnername erfolgreich aktualisiert",
- "Folder options": "Ordner Optionen",
+ "Folder options": "Ordneroptionen",
"Folder updated successfully": "Ordner erfolgreich aktualisiert",
"Folders": "Ordner",
"Folders Sharing": "Ordnerfreigabe",
@@ -1046,23 +1051,24 @@
"Follow up: {{question}}": "Folgefrage: {{question}}",
"Followed instructions perfectly": "Anweisungen perfekt befolgt",
"for placeholders": "für Platzhalter",
- "Fork": "",
- "Fork chat": "",
- "Fork the current chat branch into a new chat.": "",
- "Fork: fork the current chat branch into a new chat.": "",
+ "for what to do with my kids' art": "für die Kunstwerke meiner Kinder",
+ "Fork": "Verzweigen",
+ "Fork chat": "Chat verzweigen",
+ "Fork the current chat branch into a new chat.": "Den aktuellen Chat-Zweig als neuen Chat abzweigen.",
+ "Fork: fork the current chat branch into a new chat.": "Verzweigen: den aktuellen Chat-Zweig als neuen Chat abzweigen.",
"Forking chat...": "Chat wird verzweigt...",
"Form": "Formular",
- "Format Markdown as you type and paste. Turn off to keep Markdown characters and paste plain text. Existing formatting is preserved.": "",
- "Formatting": "",
+ "Format Markdown as you type and paste. Turn off to keep Markdown characters and paste plain text. Existing formatting is preserved.": "Markdown beim Tippen und Einfügen formatieren. Deaktivieren, um Markdown-Zeichen beizubehalten und reinen Text einzufügen. Bestehende Formatierungen bleiben erhalten.",
+ "Formatting": "Formatierung",
"Formatting may be inconsistent from source.": "Formatierung kann von der Quelle abweichen.",
"Forward": "Weiterleiten",
- "Forward cookies": "",
- "Forward cookies from your Open WebUI request to this server.": "",
+ "Forward cookies": "Cookies weiterleiten",
+ "Forward cookies from your Open WebUI request to this server.": "Cookies aus Ihrer Open-WebUI-Anfrage an diesen Server weiterleiten.",
"Forwards system user OAuth access token to authenticate": "Leitet OAuth-Zugriffstoken des Systembenutzers zur Authentifizierung weiter",
"Forwards system user session credentials to authenticate": "Leitet Sitzungsdaten des Systembenutzers zur Authentifizierung weiter",
"Fr_day_of_week": "Fr",
- "from {{provider}}": "",
- "Full access": "",
+ "from {{provider}}": "von {{provider}}",
+ "Full access": "Vollzugriff",
"Function created successfully": "Funktion erfolgreich erstellt",
"Function deleted successfully": "Funktion erfolgreich gelöscht",
"Function Description": "Funktionsbeschreibung",
@@ -1088,11 +1094,13 @@
"Generate Message Pair": "Nachrichtenpaar generieren",
"Generated Image": "Generiertes Bild",
"Generated images will appear here": "Generierte Bilder werden hier erscheinen",
- "Generating search query": "Generiere Suchanfrage",
- "Generating...": "Generiere...",
+ "Generating search query": "Suchanfrage wird generiert",
+ "Generating...": "Wird generiert...",
"Get information on {{name}} in the UI": "Informationen zu {{name}} in der UI abrufen",
"Get started": "Loslegen",
"Get started with {{WEBUI_NAME}}": "Loslegen mit {{WEBUI_NAME}}",
+ "Give me ideas": "Gib mir Ideen",
+ "give me tips": "mit ein paar Tipps",
"Global": "Global",
"Good Response": "Gute Antwort",
"Google": "Google",
@@ -1118,8 +1126,10 @@
"Height": "Höhe",
"Hello, {{name}}": "Hallo, {{name}}",
"Help": "Hilfe",
- "Help the community discover great models": "Hilf der Community dabei großartige Modelle zu entdecken",
- "Help us translate Open WebUI!": "",
+ "Help me study": "Hilf mir beim Lernen",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "Hilf mir beim Vokabellernen: Schreib einen Lückensatz, und ich versuche, die richtige Option auszuwählen.",
+ "Help the community discover great models": "Helfen Sie der Community, großartige Modelle zu entdecken",
+ "Help us translate Open WebUI!": "Helfen Sie uns, Open WebUI zu übersetzen!",
"Hex Color": "Hex-Farbe",
"Hex Color - Leave empty for default color": "Hex-Farbe - Leer lassen für Standard",
"Hidden": "Versteckt",
@@ -1128,26 +1138,27 @@
"Hide from Sidebar": "Aus Seitenleiste ausblenden",
"Hide Hidden Files": "Versteckte Dateien ausblenden",
"Hide Model": "Modell verbergen",
- "Hide whitespace": "",
+ "Hide whitespace": "Leerraum ausblenden",
"High": "Hoch",
"History": "Verlauf",
"Home": "Startseite",
- "Horizontal Layout": "",
+ "Horizontal Layout": "Horizontales Layout",
"Hourly": "Stündlich",
"Hourly Messages": "Stündliche Nachrichten",
"How can I help you today?": "Wie kann ich Ihnen heute helfen?",
"How would you rate this response?": "Wie bewerten Sie diese Antwort?",
"HTML": "HTML",
- "HTML Preview": "",
+ "HTML Preview": "HTML-Vorschau",
"http://localhost:8000": "http://localhost:8000",
"https://mineru.net/api/v4": "https://mineru.net/api/v4",
- "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.": "Ich bestätige, dass ich die Auswirkungen meiner Handlung verstanden habe. Ich bin mir der Risiken bei der Ausführung von beliebigem Code bewusst und habe die Vertrauenswürdigkeit der Quelle überprüft.",
+ "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.": "Ich bestätige, dass ich dies gelesen habe und die Auswirkungen meiner Handlung verstehe. Ich bin mir der Risiken bei der Ausführung von beliebigem Code bewusst und habe die Vertrauenswürdigkeit der Quelle überprüft.",
"ID": "ID",
"ID cannot contain \":\" or \"|\" characters": "ID darf keine \":\" oder \"|\" Zeichen enthalten",
"ID copied to clipboard": "ID in die Zwischenablage kopiert",
"Identity audit": "Identitätsprüfung",
"Idle only": "Nur im Leerlauf",
"Idle Timeout": "Inaktivitäts-Timeout",
+ "if I'm familiar with buying and selling stocks": "für jemanden, der sich mit Aktienkauf und -verkauf auskennt",
"Image": "Bild",
"Image Generation": "Bildgenerierung",
"Image Max Compression Size": "Max. Bildkompressionsgröße",
@@ -1180,15 +1191,14 @@
"Input Key (e.g. text, unet_name, steps)": "Eingabeschlüssel (z. B. text, unet_name, steps)",
"Input needed": "Eingabe erforderlich",
"Input Variables": "Eingabevariablen",
- "Insert": "Einfügen",
"Insert into note": "In Notiz einfügen",
"Instructions": "Anweisungen",
"Integrations": "Integrationen",
"Interface Settings Access": "Zugriff auf Oberflächeneinstellungen",
- "Invalid background image.": "",
+ "Invalid background image.": "Ungültiges Hintergrundbild.",
"Invalid file format.": "Ungültiges Dateiformat.",
"Invalid format.": "Ungültiges Format.",
- "Invalid JSON": "",
+ "Invalid JSON": "Ungültiges JSON",
"Invalid JSON file": "Ungültige JSON-Datei",
"Invalid JSON format": "Ungültiges JSON-Format",
"Invalid JSON format for ComfyUI Edit Workflow.": "Ungültiges JSON-Format für ComfyUI-Bearbeitungsworkflow.",
@@ -1203,7 +1213,7 @@
"join our Discord for help.": "Treten Sie unserem Discord bei, um Hilfe zu erhalten.",
"JSON": "JSON",
"JSON Base64": "JSON Base64",
- "JSON parse error: {{error}}": "",
+ "JSON parse error: {{error}}": "JSON-Parsefehler: {{error}}",
"JSON Preview": "JSON-Vorschau",
"JSON Spec": "JSON-Spezifikation",
"July": "Juli",
@@ -1243,7 +1253,7 @@
"Learn more about Open Terminal": "Mehr über Open Terminal erfahren",
"Learn more about OpenAPI tool servers.": "Erfahren Sie mehr über OpenAPI-Tool-Server.",
"Learn more about Voxtral transcription.": "Erfahren Sie mehr über Voxtral-Transkription.",
- "Leave a public review for {{modelName}}": "Hinterlasse eine öffentliche Bewertung für {{modelName}}",
+ "Leave a public review for {{modelName}}": "Hinterlassen Sie eine öffentliche Bewertung für {{modelName}}",
"Leave empty for no compression": "Leer lassen für keine Kompression",
"Leave empty for unlimited": "Leer lassen für unbegrenzt",
"Leave empty to include all models from \"{{url}}\" endpoint": "Leer lassen, um alle Modelle vom Endpunkt \"{{url}}\" einzuschließen",
@@ -1255,26 +1265,26 @@
"Leave empty to use the default prompt, or enter a custom prompt": "Leer lassen, um den Standard-Prompt zu verwenden, oder geben Sie einen eigenen Prompt ein",
"Legacy": "Veraltet",
"lexical": "lexikalisch",
- "License Error": "",
- "license purchased by": "",
+ "License Error": "Lizenzfehler",
+ "license purchased by": "Lizenz erworben von",
"Lifecycle JSON": "Lifecycle-JSON",
"Lifetime tokens": "Token insgesamt",
- "Lift List": "Liste anheben",
+ "Lift List": "Listeneinzug verringern",
"Light": "Hell",
"List": "Liste",
- "Listening...": "Höre zu...",
+ "Listening...": "Hört zu...",
"LiteLLM": "LiteLLM",
"Live": "Live",
"llama.cpp": "llama.cpp",
"LLMs can make mistakes. Verify important information.": "KI-Modelle können Fehler machen. Überprüfen Sie wichtige Informationen.",
"LM Studio": "LM Studio",
"Load Model": "Modell laden",
- "Loaded": "geladen",
- "Loading": "",
- "Loading Kokoro.js...": "Lade Kokoro.js...",
+ "Loaded": "Geladen",
+ "Loading": "Wird geladen",
+ "Loading Kokoro.js...": "Kokoro.js wird geladen...",
"Loading policy...": "Richtlinie wird geladen...",
"Loading release notes...": "Versionshinweise werden geladen...",
- "Loading...": "Lade...",
+ "Loading...": "Wird geladen...",
"local": "lokal",
"Local": "Lokal",
"Location": "Standort",
@@ -1299,17 +1309,16 @@
"Mark all as read": "Alle als gelesen markieren",
"Mark as unread": "Als ungelesen markieren",
"Markdown": "Markdown",
- "Market": "",
- "Matching tabs: {{count}}_one": "",
- "Matching tabs: {{count}}_other": "",
- "Max Snippets": "",
+ "Market": "Markt",
+ "Matching tabs: {{count}}_one": "Passender Tab: {{count}}",
+ "Matching tabs: {{count}}_other": "Passende Tabs: {{count}}",
+ "Max Snippets": "Max. Ausschnitte",
"Max tokens to retrieve (1024-32768, default 8192)": "Max. Token zum Abrufen (1024-32768, Standard 8192)",
- "Maximum extra snippets returned per result. Set to 0 to disable them.": "",
+ "Maximum extra snippets returned per result. Set to 0 to disable them.": "Maximale Anzahl zusätzlicher Ausschnitte pro Ergebnis. Auf 0 setzen, um sie zu deaktivieren.",
"Maximum number of files per folder is {{max}}.": "Die maximale Anzahl der Dateien pro Ordner ist {{max}}.",
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Es können maximal 3 Modelle gleichzeitig heruntergeladen werden. Bitte versuchen Sie es später erneut.",
"May": "Mai",
"MBR": "MBR",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "Die MCP-Unterstützung ist experimentell und ihre Spezifikation ändert sich häufig, was zu Inkompatibilitäten führen kann. Die Unterstützung der OpenAPI-Spezifikation wird direkt vom Open WebUI-Team gepflegt und ist daher die verlässlichere Option.",
"Medium": "Mittel",
"Member removed successfully": "Mitglied erfolgreich entfernt",
@@ -1317,7 +1326,7 @@
"Members": "Mitglieder",
"Members added successfully": "Mitglieder erfolgreich hinzugefügt",
"Memories": "Erinnerungen",
- "Memory": "Erinnerungen",
+ "Memory": "Arbeitsspeicher",
"Memory added successfully": "Erinnerung erfolgreich hinzugefügt",
"Memory cleared successfully": "Erinnerungen erfolgreich gelöscht",
"Memory deleted successfully": "Erinnerung erfolgreich gelöscht",
@@ -1359,7 +1368,7 @@
"Model filesystem path detected. Model shortname is required for update, cannot continue.": "Modell-Dateisystempfad erkannt. Modellkurzname ist für das Update erforderlich; Vorgang kann nicht fortgesetzt werden.",
"Model Filtering": "Modellfilterung",
"Model ID": "Modell-ID",
- "Model ID cannot contain whitespace.": "",
+ "Model ID cannot contain whitespace.": "Die Modell-ID darf keine Leerzeichen enthalten.",
"Model ID is already added": "Modell-ID wurde bereits hinzugefügt",
"Model ID is required.": "Modell-ID ist erforderlich.",
"Model IDs": "Modell-IDs",
@@ -1376,7 +1385,7 @@
"Model order saved successfully": "Reihenfolge der Modelle erfolgreich gespeichert",
"Model Params": "Modell-Parameter",
"Model Permissions": "Modellberechtigungen",
- "model profile": "",
+ "model profile": "Modellprofil",
"Model providers": "Modellanbieter",
"Model removed from pinned models": "Modell von den angehefteten Modellen entfernt",
"Model removed from selected models": "Modell von den ausgewählten Modellen entfernt",
@@ -1384,17 +1393,17 @@
"Model unloaded successfully": "Modell erfolgreich entladen",
"Model updated successfully": "Modell erfolgreich aktualisiert",
"Model Usage": "Modell-Nutzung",
- "Model: show or switch the current model.": "",
+ "Model: show or switch the current model.": "Modell: aktuelles Modell anzeigen oder wechseln.",
"Model(s) do not support file upload": "Modell(e) unterstützen keinen Dateiupload",
"Modelfile Content": "Modelfile-Inhalt",
- "modelfile profile": "",
+ "modelfile profile": "Modelfile-Profil",
"Models": "Modelle",
"Models Access": "Modellzugriff",
"Models configuration saved successfully": "Modellkonfiguration erfolgreich gespeichert",
"Models imported successfully": "Modelle erfolgreich importiert",
"Models Public Sharing": "Öffentliche Freigabe von Modellen",
"Models Sharing": "Modelle teilen",
- "Modified": "",
+ "Modified": "Geändert",
"Mojeek": "Mojeek",
"Monday – Friday": "Montag – Freitag",
"Month": "Monat",
@@ -1408,9 +1417,9 @@
"Multipart Upload": "Multipart-Upload",
"Mute": "Stummschalten",
"Muted": "Stumm",
- "My Terminal": "Meine Terminals",
+ "My Terminal": "Mein Terminal",
"Name": "Name",
- "Name and description are required": "",
+ "Name and description are required": "Name und Beschreibung sind erforderlich",
"Name and ID are required, please fill them out": "Name und ID sind erforderlich, bitte füllen Sie diese aus",
"Name is required": "Name ist erforderlich",
"Name your knowledge base": "Benennen Sie Ihren Wissensspeicher",
@@ -1420,7 +1429,7 @@
"Navigate to Previous Chat": "Zum vorherigen Chat wechseln",
"Never": "Nie",
"New": "Neu",
- "New Button": "Neuer Button",
+ "New Button": "Neue Schaltfläche",
"New calendar": "Neuer Kalender",
"New Calendar": "Neuer Kalender",
"New chat": "Neuer Chat",
@@ -1460,7 +1469,7 @@
"No chats found for this user.": "Keine Chats für diesen Benutzer gefunden.",
"No chats found.": "Keine Chats gefunden.",
"No content": "Kein Inhalt",
- "No content available": "",
+ "No content available": "Kein Inhalt verfügbar",
"No content found": "Kein Inhalt gefunden",
"No content to speak": "Kein Inhalt zum Vorlesen",
"No conversation to save": "Keine Unterhaltung zum Speichern vorhanden",
@@ -1479,7 +1488,7 @@
"No folders": "Keine Ordner",
"No functions found": "Keine Funktionen gefunden",
"No groups found": "Keine Gruppen gefunden",
- "No history available": "Keine History verfügbar",
+ "No history available": "Kein Verlauf verfügbar",
"No HTML, CSS, or JavaScript content found.": "Keine HTML-, CSS- oder JavaScript-Inhalte gefunden.",
"No inference engine with management support found": "Keine Inferenz-Engine mit Verwaltungsunterstützung gefunden",
"No kernel": "Kein Kernel",
@@ -1511,10 +1520,10 @@
"No source available": "Keine Quelle verfügbar",
"No sources found": "Keine Quellen gefunden",
"No suggestion prompts": "Keine Vorschlags-Prompts",
- "No Terminal connection configured.": "Keine Terminal Verbindung konfiguriert.",
- "No terminal connections configured.": "Keine Terminal Verbindungen konfiguriert.",
- "No text differences": "",
- "No tool server connections configured.": "Keine Werkzeug-Server Verbindungen konfiguriert.",
+ "No Terminal connection configured.": "Keine Terminalverbindung konfiguriert.",
+ "No terminal connections configured.": "Keine Terminalverbindungen konfiguriert.",
+ "No text differences": "Keine Textunterschiede",
+ "No tool server connections configured.": "Keine Tool-Server-Verbindungen konfiguriert.",
"No tools accessible": "Keine Werkzeuge zugänglich",
"No tools found": "Keine Werkzeuge gefunden",
"No usage data found": "Keine Nutzungsdaten gefunden",
@@ -1545,9 +1554,10 @@
"OAuth ID": "OAuth-ID",
"OAuth Resource Parameter": "OAuth-Ressourcenparameter",
"OAuth Scopes": "OAuth-Scopes",
- "OAuth Server URL": "OAuth Server URL",
+ "OAuth Server URL": "OAuth-Server-URL",
"OAuth session disconnected": "OAuth-Sitzung getrennt",
"October": "Oktober",
+ "of a website's sticky header": "für einen Sticky Header einer Website",
"Off": "Aus",
"Okay, Let's Go!": "Okay, los geht's!",
"OLED Dark": "OLED Dunkel",
@@ -1585,19 +1595,18 @@
"Open Model Selector": "Modell-Selektor öffnen",
"Open note": "Notiz öffnen",
"Open Settings": "Einstellungen öffnen",
- "Open settings.": "",
+ "Open settings.": "Einstellungen öffnen.",
"Open Sidebar": "Seitenleiste öffnen",
- "Open terminal": "",
+ "Open terminal": "Terminal öffnen",
"Open the changelog modal after sign-in when enabled.": "Zeigt nach der Anmeldung die Versionshinweise an, wenn aktiviert.",
"Open User Profile Menu": "Benutzerprofilmenü öffnen",
"Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI kann Werkzeuge verwenden, die von jedem OpenAPI-Server bereitgestellt werden.",
- "Open WebUI version": "Open WebUI Version",
+ "Open WebUI version": "Open-WebUI-Version",
"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Die installierte Open-WebUI-Version (v{{OPEN_WEBUI_VERSION}}) ist niedriger als die erforderliche Version (v{{REQUIRED_VERSION}})",
"OpenAI": "OpenAI",
"OpenAI API Key is required.": "OpenAI-API-Schlüssel ist erforderlich.",
"OpenAI API settings updated": "OpenAI-API-Einstellungen aktualisiert",
"OpenAI URL/Key required.": "OpenAI-URL/-Schlüssel erforderlich.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "OpenAPI-Spezifikation",
"openapi.json URL or Path": "openapi.json-URL oder Pfad",
"optional": "optional",
@@ -1605,14 +1614,15 @@
"or": "oder",
"Orchestrator": "Orchestrator",
"Ordered List": "Nummerierte Liste",
- "Original": "",
+ "Original": "Original",
"Other": "Andere",
"out of": "von",
"Output": "Ausgabe",
"OUTPUT": "AUSGABE",
+ "Overcome procrastination": "Hilf mir, Prokrastination zu überwinden",
"Overview": "Übersicht",
"PaddleOCR-vl": "PaddleOCR-vl",
- "PaddleOCR-vl API URL required.": "PaddleOCR-vl API URL erforderlich.",
+ "PaddleOCR-vl API URL required.": "PaddleOCR-vl API-URL erforderlich.",
"page": "Seite",
"Page": "Seite",
"Parameters": "Parameter",
@@ -1651,7 +1661,7 @@
"Plain text (.md)": "Klartext (.md)",
"Plain text (.txt)": "Klartext (.txt)",
"Playground": "Testumgebung",
- "Playground Chat": "",
+ "Playground Chat": "Testumgebungs-Chat",
"Please carefully review the following warnings:": "Bitte lesen Sie die folgenden Warnungen sorgfältig durch:",
"Please connect all required integrations before sending a message": "Bitte verbinden Sie alle erforderlichen Integrationen, bevor Sie eine Nachricht senden",
"Please do not close the settings page while loading the model.": "Bitte schließen Sie die Einstellungsseite nicht, während das Modell lädt.",
@@ -1672,9 +1682,9 @@
"Please select a valid JSON file": "Bitte wählen Sie eine gültige JSON-Datei aus",
"Please select at least one user for Direct Message channel.": "Bitte wählen Sie mindestens einen Benutzer für den Direktnachrichten-Kanal aus.",
"Please wait until all files are uploaded.": "Bitte warten Sie, bis alle Dateien hochgeladen sind.",
- "PNG, JPEG, WebP, or GIF. Up to 5 MiB and 25 megapixels.": "",
+ "PNG, JPEG, WebP, or GIF. Up to 5 MiB and 25 megapixels.": "PNG, JPEG, WebP oder GIF. Bis zu 5 MiB und 25 Megapixel.",
"Policy changes apply to newly provisioned terminals. Refresh matching terminals to apply them to existing terminals.": "Änderungen an der Richtlinie gelten für neu bereitgestellte Terminals. Aktualisieren Sie die passenden Terminals, um die Änderungen auch dort zu übernehmen.",
- "Policy ID": "Policy-ID",
+ "Policy ID": "Richtlinien-ID",
"Policy ID is required": "Richtlinien-ID ist erforderlich",
"Policy is still loading": "Die Richtlinie wird noch geladen",
"Ports": "Ports",
@@ -1699,7 +1709,7 @@
"Previous version": "Vorherige Version",
"Private": "Privat",
"Private conversation between selected users": "Private Unterhaltung zwischen ausgewählten Benutzern",
- "Production version updated": "Produktiv-Version updated",
+ "Production version updated": "Produktivversion aktualisiert",
"Profile": "Profil",
"Prompt": "Prompt",
"Prompt Content": "Prompt-Inhalt",
@@ -1716,15 +1726,15 @@
"Pull \"{{searchValue}}\" from Ollama.com": "\"{{searchValue}}\" von Ollama.com laden",
"Pull a model from Ollama.com": "Ein Modell von Ollama.com laden",
"Pull Model": "Modell laden",
- "Pyodide file browser": "Pyodide Datei Explorer",
+ "Pyodide file browser": "Pyodide-Dateibrowser",
"Quality": "Qualität",
- "Query failed": "",
- "Querying": "Frage ab...",
- "Queued messages": "",
+ "Query failed": "Abfrage fehlgeschlagen",
+ "Querying": "Abfrage läuft...",
+ "Queued messages": "Nachrichten in der Warteschlange",
"Quick Actions": "Schnellaktionen",
"Ran {{COUNT}} analyses": "{{COUNT}} Analysen durchgeführt",
"Ran {{COUNT}} analysis": "{{COUNT}} Analyse durchgeführt",
- "Rate {{rating}} out of 10": "Bewerte {{rating}} von 10",
+ "Rate {{rating}} out of 10": "Mit {{rating}} von 10 bewerten",
"Rating": "Bewertung",
"Read": "Lesen",
"Read Aloud": "Vorlesen",
@@ -1732,9 +1742,9 @@
"Read only": "Schreibgeschützt",
"Read Only": "Nur lesend",
"Read the docs": "Zur Dokumentation",
- "Read-only": "",
+ "Read-only": "Schreibgeschützt",
"Read-Only Access": "Nur lesender Zugriff",
- "Reason": "Nachdenken",
+ "Reason": "Grund",
"Reasoning text...": "Reasoning-Text...",
"Rebuild knowledge file, knowledge search, and memory vectors using the current embedding model.": "Erstellt die Vektoren für Wissensdateien, Wissenssuche und Erinnerungen mit dem aktuellen Embedding-Modell neu.",
"Receives matching events across the instance, including system/config events and events associated with any user.": "Empfängt passende Ereignisse instanzweit, einschließlich System-/Konfigurationsereignissen und Ereignissen, die einem beliebigen Benutzer zugeordnet sind.",
@@ -1756,11 +1766,11 @@
"Refused when it shouldn't have": "Fälschlicherweise abgelehnt",
"Regenerate": "Neu generieren",
"Regenerate Response": "Antwort neu generieren",
- "Region and language of the search results, e.g. en-us.": "",
+ "Region and language of the search results, e.g. en-us.": "Region und Sprache der Suchergebnisse, z. B. en-us.",
"Register Again": "Erneut registrieren",
"Register Client": "Client registrieren",
"Registered": "Registriert",
- "registered to": "",
+ "registered to": "registriert für",
"Registration failed": "Registrierung fehlgeschlagen",
"Registration successful": "Registrierung erfolgreich",
"Reindex Embedding Data": "Embedding-Daten neu indizieren",
@@ -1771,7 +1781,7 @@
"Reminder": "Erinnerung",
"Remove": "Entfernen",
"Remove {{MODELID}} from list.": "{{MODELID}} von der Liste entfernen.",
- "Remove action": "Action entfernen",
+ "Remove action": "Aktion entfernen",
"Remove file": "Datei entfernen",
"Remove File": "Datei entfernen",
"Remove from favorites": "Von Favoriten entfernen",
@@ -1783,9 +1793,9 @@
"Removing {{count}} stale files..._other": "{{count}} veraltete Dateien werden entfernt...",
"Rename": "Umbenennen",
"Renamed to {{name}}": "In {{name}} umbenannt",
- "Reorder": "",
- "Repeat": "Wiederholen",
- "Replace": "",
+ "Reorder": "Neu anordnen",
+ "Repeat": "Wiederholung",
+ "Replace": "Ersetzen",
"Reply": "Antworten",
"Reply in Thread": "Im Thread antworten",
"Reply to thread...": "Im Thread antworten...",
@@ -1802,7 +1812,7 @@
"Reset to Defaults": "Auf Standardwerte zurücksetzen",
"Reset view": "Ansicht zurücksetzen",
"Reset zoom": "Zoom zurücksetzen",
- "Resize panel": "",
+ "Resize panel": "Bereichsgröße ändern",
"Response": "Antwort",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Antwortbenachrichtigungen können nicht aktiviert werden, da die Website-Berechtigungen verweigert wurden. Bitte erteilen Sie in Ihren Browser-Einstellungen den erforderlichen Zugriff.",
"Responses": "Responses",
@@ -1820,10 +1830,10 @@
"Run": "Ausführen",
"Run AI on your own terms. Connect any model, extend with code, and protect what matters without compromise. Your models, your data, your machine, wherever you open it.": "KI zu Ihren Bedingungen. Binden Sie jedes beliebige Modell ein, erweitern Sie es mit eigenem Code und schützen Sie kompromisslos, was Ihnen wichtig ist. Ihre Modelle, Ihre Daten, Ihr Rechner – wo immer Sie es öffnen.",
"Run All": "Alle starten",
- "Run cell (⌘+Enter)": "",
+ "Run cell (⌘+Enter)": "Zelle ausführen (⌘+Enter)",
"Run now": "Jetzt ausführen",
"Run Now": "Jetzt ausführen",
- "Run tools without asking for approval.": "",
+ "Run tools without asking for approval.": "Werkzeuge ohne Bestätigung ausführen.",
"Running": "Läuft",
"Running Open WebUI for a team?": "Sie betreiben Open WebUI für ein Team?",
"Running...": "Läuft...",
@@ -1837,14 +1847,14 @@
"Save Chat": "Chat speichern",
"Saved": "Gespeichert",
"Saving...": "Wird gespeichert...",
- "Schedule": "Planen",
+ "Schedule": "Zeitplan",
"Scheduled time must be in the future": "Geplante Zeit muss in der Zukunft liegen",
- "Screen Share": "",
+ "Screen Share": "Bildschirmfreigabe",
"Scroll to bottom": "Nach unten scrollen",
"Scroll to Top": "Zum Anfang scrollen",
"Search": "Suchen",
"Search a model": "Ein Modell suchen",
- "Search actions": "Actions durchsuchen",
+ "Search actions": "Aktionen durchsuchen",
"Search all emojis": "Alle Emojis durchsuchen",
"Search Automations": "Automatisierungen suchen",
"Search channels": "Kanäle durchsuchen",
@@ -1872,19 +1882,19 @@
"Search skills": "Skills durchsuchen",
"Search Skills": "Skills durchsuchen",
"Search the internet": "Das Internet durchsuchen",
- "Search tools": "Tools durchsuchen",
+ "Search tools": "Werkzeuge durchsuchen",
"Search Tools": "Werkzeuge durchsuchen...",
- "Search translations": "",
+ "Search translations": "Übersetzungen durchsuchen",
"Search users or groups": "Benutzer oder Gruppen suchen",
"Searched {{count}} sites": "{{count}} Seiten durchsucht",
"Searching": "Suche...",
"Searching \"{{searchQuery}}\"": "Suche nach \"{{searchQuery}}\"",
"Searching Knowledge for \"{{searchQuery}}\"": "Suche im Wissen nach \"{{searchQuery}}\"",
- "Searching the web": "Durchsuche das Web...",
+ "Searching the web": "Web wird durchsucht...",
"See readme.md for instructions": "Siehe readme.md für Anweisungen",
"Select": "Auswählen",
"Select {{modelName}} model": "Modell {{modelName}} auswählen",
- "Select {{name}}": "",
+ "Select {{name}}": "{{name}} auswählen",
"Select a base model (e.g. llama3, gpt-4o)": "Wählen Sie ein Basismodell (z. B. llama3, gpt-4o)",
"Select a conversation to preview": "Wählen Sie eine Unterhaltung für die Vorschau",
"Select a engine": "Wählen Sie eine Engine",
@@ -1962,7 +1972,7 @@
"settings configured": "Einstellungen konfiguriert",
"Settings Permissions": "Berechtigungen für Einstellungen",
"Settings saved successfully!": "Einstellungen erfolgreich gespeichert!",
- "Settings: open settings.": "",
+ "Settings: open settings.": "Einstellungen: Einstellungen öffnen.",
"settings.admin.analytics.title": "Analyse",
"settings.admin.audio.additionalParameters.description": "Zusätzliche OpenAI-kompatible TTS-Anfrageparameter als JSON eingeben.",
"settings.admin.audio.additionalParameters.label": "Weitere Parameter",
@@ -1973,7 +1983,7 @@
"settings.admin.audio.outputFormat.label": "Ausgabeformat",
"settings.admin.audio.requestFormat.description": "Legt fest, wie Audiodaten an den OpenAI-kompatiblen Endpunkt gesendet werden.",
"settings.admin.audio.requestFormat.label": "Anfrageformat",
- "settings.admin.audio.responseSplitting.description": "Steuert, wie Nachrichtentext für TTS-Anfragen geteilt wird. 'Punctuation' teilt nach Sätzen, 'paragraphs' nach Absätzen und 'none' behält die Nachricht als Ganzes.",
+ "settings.admin.audio.responseSplitting.description": "Steuert, wie Nachrichtentext für TTS-Anfragen geteilt wird. 'Punctuation' teilt nach Sätzen, 'Paragraphs' nach Absätzen und 'Keine' behält die Nachricht als Ganzes.",
"settings.admin.audio.responseSplitting.label": "Aufteilung der Antwort",
"settings.admin.audio.sections.speechToText.title": "Sprache-zu-Text",
"settings.admin.audio.sections.textToSpeech.title": "Text-zu-Sprache",
@@ -2010,7 +2020,7 @@
"settings.admin.audio.useChatCompletionsApi.description": "Verwenden Sie den Endpunkt /v1/chat/completions statt /v1/audio/transcriptions für potenziell bessere Genauigkeit.",
"settings.admin.audio.useChatCompletionsApi.label": "Chat Completions API verwenden",
"settings.admin.authentication.adminContactEmail.description": "E-Mail-Adresse, die angezeigt wird, solange ein Konto auf Freigabe wartet.",
- "settings.admin.authentication.adminContactEmail.label": "Admin Kontakt E-Mail",
+ "settings.admin.authentication.adminContactEmail.label": "Admin-Kontakt-E-Mail",
"settings.admin.authentication.adminDetails.description": "Zeigt die Kontaktdaten des Administrators an, solange ein Konto auf Freigabe wartet.",
"settings.admin.authentication.adminDetails.label": "Administrator-Kontaktdaten",
"settings.admin.authentication.adminRoles.description": "Rollen des Anbieters, die Administratorrechte gewähren.",
@@ -2022,10 +2032,10 @@
"settings.admin.authentication.allowedRoles.description": "Rollen des Anbieters, die sich anmelden dürfen.",
"settings.admin.authentication.allowedRoles.label": "Erlaubte Rollen",
"settings.admin.authentication.apiKeyEndpointRestrictions.description": "Beschränkt API-Schlüssel auf die konfigurierten Endpunkte.",
- "settings.admin.authentication.apiKeyEndpointRestrictions.label": "API-Schlüssel Endpunkteinschränkungen",
+ "settings.admin.authentication.apiKeyEndpointRestrictions.label": "Endpunkteinschränkungen für API-Schlüssel",
"settings.admin.authentication.apiKeys.description": "Erlaubt Benutzern, API-Schlüssel für den programmatischen Zugriff zu erstellen.",
"settings.admin.authentication.apiKeys.label": "API-Schlüssel",
- "settings.admin.authentication.applicationDn.description": "Bind DN für die Verzeichnissuche.",
+ "settings.admin.authentication.applicationDn.description": "Bind-DN für die Verzeichnissuche.",
"settings.admin.authentication.applicationDn.label": "Anwendungs-DN",
"settings.admin.authentication.applicationDnPassword.description": "Passwort für den Bind-DN.",
"settings.admin.authentication.applicationDnPassword.label": "Anwendungs-DN-Passwort",
@@ -2042,9 +2052,9 @@
"settings.admin.authentication.ciphers.description": "Liste der TLS-Cipher für LDAP-Verbindungen.",
"settings.admin.authentication.ciphers.label": "Chiffren",
"settings.admin.authentication.clientId.description": "Client-ID vom OAuth-Anbieter.",
- "settings.admin.authentication.clientId.label": "Client ID",
+ "settings.admin.authentication.clientId.label": "Client-ID",
"settings.admin.authentication.clientSecret.description": "Client-Secret vom OAuth-Anbieter.",
- "settings.admin.authentication.clientSecret.label": "Client Secret",
+ "settings.admin.authentication.clientSecret.label": "Client-Secret",
"settings.admin.authentication.defaultGroup.description": "Gruppe, der neue Benutzer standardmäßig zugewiesen werden.",
"settings.admin.authentication.defaultGroup.label": "Standardgruppe",
"settings.admin.authentication.defaultUserRole.description": "Rolle, die neuen Benutzern beim Erstellen eines Kontos zugewiesen wird.",
@@ -2071,8 +2081,8 @@
"settings.admin.authentication.label.label": "Label",
"settings.admin.authentication.ldap.description": "Erlaubt Benutzern die Anmeldung über ein LDAP-Verzeichnis.",
"settings.admin.authentication.ldap.label": "LDAP",
- "settings.admin.authentication.loginForm.description": "",
- "settings.admin.authentication.loginForm.label": "",
+ "settings.admin.authentication.loginForm.description": "Zeigt die Anmeldung mit E-Mail und Passwort auf der Anmeldeseite an. Richten Sie vor dem Deaktivieren SSO oder LDAP ein. Das Deaktivieren sperrt auch lokale Registrierungen; der API-Zugriff per Passwort bleibt unverändert.",
+ "settings.admin.authentication.loginForm.label": "Anmeldeformular",
"settings.admin.authentication.mergeAccountsByEmail.description": "Verknüpft OAuth-Anmeldungen mit vorhandenen Konten derselben E-Mail-Adresse.",
"settings.admin.authentication.mergeAccountsByEmail.label": "Konten anhand der E-Mail-Adresse zusammenführen",
"settings.admin.authentication.newSignUps.description": "Erlaubt neuen Benutzern, ein Konto zu erstellen.",
@@ -2160,8 +2170,8 @@
"settings.admin.connections.cacheBaseModelList.label": "Basismodell-Liste cachen",
"settings.admin.connections.directConnections.description": "Direktverbindungen erlauben Benutzern die Verbindung zu eigenen OpenAI-kompatiblen API-Endpunkten.",
"settings.admin.connections.directConnections.label": "Direktverbindungen",
- "settings.admin.connections.directIntegrations.description": "",
- "settings.admin.connections.directIntegrations.label": "",
+ "settings.admin.connections.directIntegrations.description": "Zeigt den Tab \"Integrationen\" für Benutzer mit der Berechtigung, eigene Werkzeug- und Terminalverbindungen zu verwalten, einschließlich Administratoren. Das Ausblenden deaktiviert keine bestehenden Verbindungen.",
+ "settings.admin.connections.directIntegrations.label": "Direkte Integrationen",
"settings.admin.connections.manageOllamaApiConnections.description": "Probleme beim Zugriff auf Ollama?",
"settings.admin.connections.manageOllamaApiConnections.label": "Ollama-API-Verbindungen verwalten",
"settings.admin.connections.manageOpenaiApiConnections.label": "OpenAI-API-Verbindungen verwalten",
@@ -2234,7 +2244,7 @@
"settings.admin.documents.embeddingBatchSize.description": "Anzahl der Elemente, die pro Embedding-Batch verarbeitet werden.",
"settings.admin.documents.embeddingBatchSize.label": "Embedding-Batch-Größe",
"settings.admin.documents.embeddingConcurrentRequests.description": "Maximale Anzahl gleichzeitiger Embedding-Anfragen. 0 bedeutet unbegrenzt.",
- "settings.admin.documents.embeddingConcurrentRequests.label": "Gleichzeitige Embedding Anfragen",
+ "settings.admin.documents.embeddingConcurrentRequests.label": "Gleichzeitige Embedding-Anfragen",
"settings.admin.documents.embeddingModel.description": "Modell, das die Embeddings erzeugt. Nach einer Änderung muss der Wissensspeicher neu indexiert werden.",
"settings.admin.documents.embeddingModel.label": "Embedding-Modell",
"settings.admin.documents.embeddingModelEngine.description": "Anbieter, der die Embeddings für Dokumente erzeugt.",
@@ -2246,7 +2256,7 @@
"settings.admin.documents.externalDocumentLoaderApiKey.description": "API-Schlüssel, der an den externen Dokumenten-Loader gesendet wird.",
"settings.admin.documents.externalDocumentLoaderApiKey.label": "API-Schlüssel",
"settings.admin.documents.fileExtensions.description": "Kommagetrennte Dateiendungen, die MinerU verarbeiten soll.",
- "settings.admin.documents.fileExtensions.label": "Dateierweiterungen",
+ "settings.admin.documents.fileExtensions.label": "Dateiendungen",
"settings.admin.documents.forceOcr.description": "Führt die Texterkennung auf allen PDF-Seiten aus, auch auf Seiten mit eingebettetem Text.",
"settings.admin.documents.forceOcr.label": "OCR erzwingen",
"settings.admin.documents.formatLines.description": "Formatiert Zeilen, um Inline-Formeln und Textstile zu erkennen.",
@@ -2261,9 +2271,9 @@
"settings.admin.documents.hybridSearch.description": "Kombiniert semantische und stichwortbasierte Suche.",
"settings.admin.documents.hybridSearch.label": "Hybride Suche",
"settings.admin.documents.imageCompressionHeight.description": "Höhe in Pixeln, auf die Bilder komprimiert werden. Leer lassen, um nicht zu komprimieren.",
- "settings.admin.documents.imageCompressionHeight.label": "Bildkompression Höhe",
+ "settings.admin.documents.imageCompressionHeight.label": "Bildkompressionshöhe",
"settings.admin.documents.imageCompressionWidth.description": "Breite in Pixeln, auf die Bilder komprimiert werden. Leer lassen, um nicht zu komprimieren.",
- "settings.admin.documents.imageCompressionWidth.label": "Bildkompression Breite",
+ "settings.admin.documents.imageCompressionWidth.label": "Bildkompressionsbreite",
"settings.admin.documents.markdownHeaderTextSplitter.description": "Teilt Dokumente an Markdown-Überschriften auf, bevor nach Zeichen oder Token aufgeteilt wird.",
"settings.admin.documents.markdownHeaderTextSplitter.label": "Markdown-Header-Text-Splitter",
"settings.admin.documents.maxUploadCount.description": "Maximale Anzahl Dateien, die gleichzeitig im Chat verwendet werden können.",
@@ -2297,7 +2307,7 @@
"settings.admin.documents.pdfExtractImagesOcr.description": "Extrahiert Bilder aus PDFs, damit OCR auch reine Bildseiten verarbeiten kann.",
"settings.admin.documents.pdfExtractImagesOcr.label": "Bilder aus PDFs extrahieren (OCR)",
"settings.admin.documents.pdfLoaderMode.description": "Der Seitenmodus erzeugt ein Dokument pro Seite. Der Einzelmodus hält die Seiten zusammen, sodass Chunks über Seitengrenzen hinweg gebildet werden können.",
- "settings.admin.documents.pdfLoaderMode.label": "PDF Loader Modus",
+ "settings.admin.documents.pdfLoaderMode.label": "PDF-Loader-Modus",
"settings.admin.documents.ragExternalRerankerApiKey.description": "API-Schlüssel, der an den externen Reranker gesendet wird.",
"settings.admin.documents.ragExternalRerankerApiKey.label": "API-Schlüssel",
"settings.admin.documents.ragExternalRerankerUrl.description": "Endpunkt des externen Rerankers.",
@@ -2339,11 +2349,11 @@
"settings.admin.documents.tikaServerVersion.label": "Tika-Server-Version",
"settings.admin.documents.title": "Dokumente",
"settings.admin.documents.tokenizerModel.description": "Tokenizer-Modell für die tokenbasierte Aufteilung mit Transformern.",
- "settings.admin.documents.tokenizerModel.label": "Tokenizer Modell",
+ "settings.admin.documents.tokenizerModel.label": "Tokenizer-Modell",
"settings.admin.documents.topK.description": "Maximale Anzahl abgerufener Chunks, die an das Modell übergeben werden.",
"settings.admin.documents.topK.label": "Top-K",
"settings.admin.documents.topKReranker.description": "Maximale Anzahl an Ergebnissen der hybriden Suche, die an den Reranker gesendet werden.",
- "settings.admin.documents.topKReranker.label": "Top-K Reranker",
+ "settings.admin.documents.topKReranker.label": "Top-K-Reranker",
"settings.admin.documents.updateEmbeddingModel.label": "Embedding-Modell aktualisieren",
"settings.admin.documents.useBase64.description": "Sendet PDFs als Base64-Daten-URLs, statt sie zuvor hochzuladen.",
"settings.admin.documents.useBase64.label": "Base64 verwenden",
@@ -2393,10 +2403,10 @@
"settings.admin.general.sections.ui.title": "Benutzeroberfläche",
"settings.admin.general.seeWhatSNew.label": "Entdecken Sie, was neu ist",
"settings.admin.general.title": "Allgemein",
- "settings.admin.general.translations.addTranslation.label": "",
- "settings.admin.general.translations.uiTranslations.label": "",
+ "settings.admin.general.translations.addTranslation.label": "Übersetzung hinzufügen",
+ "settings.admin.general.translations.uiTranslations.label": "Oberflächenübersetzungen",
"settings.admin.general.userStatus.description": "Zeigt Statusinformationen zu Benutzern in der App an.",
- "settings.admin.general.userStatus.label": "Nutzerstatus",
+ "settings.admin.general.userStatus.label": "Benutzerstatus",
"settings.admin.general.userWebhooks.description": "Erlaubt Benutzern, Webhooks in ihrem Konto einzurichten.",
"settings.admin.general.userWebhooks.label": "Benutzer-Webhooks",
"settings.admin.general.version.label": "Version",
@@ -2417,9 +2427,9 @@
"settings.admin.images.comfyuiComfyuiWorkflow.label": "ComfyUI-Workflow",
"settings.admin.images.editingWorkflowNodes.description": "Ordnet die Workflow-Node-Eingaben für die Bildbearbeitung zu.",
"settings.admin.images.editingWorkflowNodes.label": "ComfyUI-Workflow-Nodes",
- "settings.admin.images.editWorkflowJsonContent.label": "workflow.json Inhalt bearbeiten",
+ "settings.admin.images.editWorkflowJsonContent.label": "Inhalt von workflow.json bearbeiten",
"settings.admin.images.geminiEndpointMethod.description": "Wählt die aufzurufende Methode des Gemini-Endpunkts.",
- "settings.admin.images.geminiEndpointMethod.label": "Gemini Endpunkt-Methode",
+ "settings.admin.images.geminiEndpointMethod.label": "Gemini-Endpunkt-Methode",
"settings.admin.images.generationWorkflowNodes.description": "Ordnet die Workflow-Node-Eingaben für die Bildgenerierung zu.",
"settings.admin.images.generationWorkflowNodes.label": "ComfyUI-Workflow-Nodes",
"settings.admin.images.imageEdit.description": "Erlaubt Benutzern, vorhandene Bilder zu bearbeiten.",
@@ -2459,14 +2469,14 @@
"settings.admin.images.serverConnectionVerified.label": "Serververbindung überprüft",
"settings.admin.images.steps.label": "Schritte",
"settings.admin.images.title": "Bilder",
- "settings.admin.images.verifyConnection.label": "",
+ "settings.admin.images.verifyConnection.label": "Verbindung prüfen",
"settings.admin.integrations.addConnection.label": "Verbindung hinzufügen",
"settings.admin.integrations.externalKnowledge.addConnection.label": "Verbindung hinzufügen",
"settings.admin.integrations.externalKnowledge.title": "Externe Wissensquellen",
- "settings.admin.integrations.externalToolServers.label": "Externe Werkzeug-Server",
+ "settings.admin.integrations.externalToolServers.label": "Externe Tool-Server",
"settings.admin.integrations.mcp.label": "MCP",
"settings.admin.integrations.openApi.label": "OpenAPI",
- "settings.admin.integrations.openTerminal.label": "Terminal öffnen",
+ "settings.admin.integrations.openTerminal.label": "Open Terminal",
"settings.admin.integrations.sections.knowledge.title": "Wissen",
"settings.admin.integrations.sections.terminal.title": "Terminal",
"settings.admin.integrations.sections.tools.title": "Werkzeuge",
@@ -2493,7 +2503,7 @@
"settings.admin.interface.imagePromptGenerationPrompt.label": "Prompt für Bild-Prompt-Generierung",
"settings.admin.interface.localTaskModel.label": "Lokales Aufgabenmodell",
"settings.admin.interface.promptTemplate.description": "Legt das Verhalten für gesprochene Unterhaltungen fest.",
- "settings.admin.interface.promptTemplate.label": "Prompt Vorlage",
+ "settings.admin.interface.promptTemplate.label": "Prompt-Vorlage",
"settings.admin.interface.queryGenerationPrompt.description": "Gemeinsamer Prompt für das Umformulieren von Wissens- und Websuchanfragen.",
"settings.admin.interface.queryGenerationPrompt.label": "Abfrage-Generierungs-Prompt",
"settings.admin.interface.retainedMessages.description": "Prozentsatz der neuesten Nachrichten, die erhalten bleiben, nachdem ältere Nachrichten zusammengefasst wurden.",
@@ -2519,12 +2529,12 @@
"settings.admin.interface.tokenCap.label": "Token-Obergrenze",
"settings.admin.interface.tokenThreshold.description": "Ältere Nachrichten werden zusammengefasst, wenn der geschätzte Kontext dieses Token-Limit überschreitet.",
"settings.admin.interface.tokenThreshold.label": "Token-Schwellenwert",
- "settings.admin.interface.toolPermissions.description": "Zeigt \"Full access\" und \"Ask for approval\" im Menü der Chat-Eingabe an.",
+ "settings.admin.interface.toolPermissions.description": "Zeigt \"Vollzugriff\" und \"Um Bestätigung bitten\" im Menü der Chat-Eingabe an.",
"settings.admin.interface.toolPermissions.label": "Werkzeug-Berechtigungen",
"settings.admin.interface.toolsFunctionCallingPrompt.description": "Gibt vor, wie der Assistent Werkzeug- und Funktionsaufrufe formatiert.",
"settings.admin.interface.toolsFunctionCallingPrompt.label": "Prompt für Werkzeug-Funktionsaufrufe",
"settings.admin.interface.voiceModePrompt.description": "Wendet spezielle Anweisungen an, solange der Sprachmodus aktiv ist.",
- "settings.admin.interface.voiceModePrompt.label": "Anruf-Modus Prompt",
+ "settings.admin.interface.voiceModePrompt.label": "Prompt für Sprachmodus",
"settings.admin.interface.webSearchQueryGeneration.description": "Formuliert Benutzeranfragen in Websuchanfragen um.",
"settings.admin.interface.webSearchQueryGeneration.label": "Suchanfragen-Generierung",
"settings.admin.models.builtinTools.automations.description": "Geplante Automatisierungen erstellen und verwalten",
@@ -2541,7 +2551,7 @@
"settings.admin.models.builtinTools.files.label": "Dateien",
"settings.admin.models.builtinTools.imageGeneration.description": "Bilder generieren und bearbeiten",
"settings.admin.models.builtinTools.imageGeneration.label": "Bildgenerierung",
- "settings.admin.models.builtinTools.knowledge.description": "Wissensbasen durchsuchen und abfragen",
+ "settings.admin.models.builtinTools.knowledge.description": "Wissensspeicher durchsuchen und abfragen",
"settings.admin.models.builtinTools.knowledge.label": "Wissensspeicher",
"settings.admin.models.builtinTools.memory.description": "Erinnerungen des Benutzers durchsuchen und verwalten",
"settings.admin.models.builtinTools.memory.label": "Erinnerungen",
@@ -2592,10 +2602,10 @@
"settings.admin.models.defaultFeatures.title": "Standardfunktionen",
"settings.admin.models.defaultFeatures.webSearch.description": "Modell kann das Web nach Informationen durchsuchen",
"settings.admin.models.defaultFeatures.webSearch.label": "Websuche",
- "settings.admin.models.defaults.modelCapabilities.label": "Modell Fähigkeiten",
+ "settings.admin.models.defaults.modelCapabilities.label": "Modellfähigkeiten",
"settings.admin.models.defaults.modelDefaults.label": "Modell-Standardwerte",
- "settings.admin.models.defaults.modelParameters.label": "Modell Parameter",
- "settings.admin.models.defaults.promptSuggestions.label": "Prompt Vorschläge",
+ "settings.admin.models.defaults.modelParameters.label": "Modellparameter",
+ "settings.admin.models.defaults.promptSuggestions.label": "Prompt-Vorschläge",
"settings.admin.models.disableAllModels.label": "Alle deaktivieren",
"settings.admin.models.enableAllModels.label": "Alle aktivieren",
"settings.admin.models.exportModels.label": "Exportieren",
@@ -2629,7 +2639,7 @@
"settings.admin.subagents.systemPrompt.description": "Leer lassen, um den integrierten Standard zu verwenden.",
"settings.admin.subagents.systemPrompt.label": "System-Prompt",
"settings.admin.subagents.title": "Sub-Agents",
- "settings.admin.web.bingSearchV7Endpoint.label": "Bing Search V7 Endpunkt",
+ "settings.admin.web.bingSearchV7Endpoint.label": "Bing Search V7-Endpunkt",
"settings.admin.web.bingSearchV7SubscriptionKey.label": "Bing Search V7 Abonnement-Schlüssel",
"settings.admin.web.bochaSearchApiKey.label": "Bocha Search API-Schlüssel",
"settings.admin.web.braveSearchApiKey.label": "Brave Search API-Schlüssel",
@@ -2640,7 +2650,7 @@
"settings.admin.web.concurrentRequests.description": "Begrenzt die parallelen Anfragen des Web-Loaders.",
"settings.admin.web.concurrentRequests.label": "Gleichzeitige Anfragen",
"settings.admin.web.contextTokens.label": "Kontext-Token",
- "settings.admin.web.ddgsBackend.label": "DDGS Backend",
+ "settings.admin.web.ddgsBackend.label": "DDGS-Backend",
"settings.admin.web.domainFilterList.description": "Beschränkt Domains anhand einer kommagetrennten Liste oder schließt sie aus.",
"settings.admin.web.domainFilterList.label": "Domain-Filterliste",
"settings.admin.web.exaApiKey.label": "Exa API-Schlüssel",
@@ -2650,18 +2660,18 @@
"settings.admin.web.externalWebSearchUrl.label": "URL für ext. Websuche",
"settings.admin.web.fetchUrlContentLengthLimit.description": "Maximale Zeichenanzahl für Fetch URL-Inhalte. Leer lassen für unbegrenzt.",
"settings.admin.web.fetchUrlContentLengthLimit.label": "Max. Inhaltslänge für Fetch URL",
- "settings.admin.web.firecrawlApiBaseUrl.label": "Firecrawl API Basis-URL",
+ "settings.admin.web.firecrawlApiBaseUrl.label": "Firecrawl API-Basis-URL",
"settings.admin.web.firecrawlApiKey.label": "Firecrawl API-Schlüssel",
"settings.admin.web.firecrawlTimeoutS.label": "Firecrawl-Timeout (s)",
"settings.admin.web.googlePseApiKey.label": "Google PSE API-Schlüssel",
"settings.admin.web.googlePseEngineId.label": "Google PSE Engine-ID",
- "settings.admin.web.jinaApiBaseUrl.label": "Jina API Base URL",
+ "settings.admin.web.jinaApiBaseUrl.label": "Jina API-Basis-URL",
"settings.admin.web.jinaApiKey.label": "Jina-API-Schlüssel",
"settings.admin.web.kagiSearchApiKey.label": "Kagi Search API-Schlüssel",
"settings.admin.web.language.label": "Sprache",
"settings.admin.web.linkupApiKey.label": "Linkup-API-Schlüssel",
- "settings.admin.web.maxContentLength.description": "",
- "settings.admin.web.maxContentLength.label": "",
+ "settings.admin.web.maxContentLength.description": "Maximale Zeichenanzahl pro Exa-Suchergebnis. Leer lassen für kein Limit.",
+ "settings.admin.web.maxContentLength.label": "Max. Inhaltslänge",
"settings.admin.web.microsoftWebIqApiBaseUrl.label": "Microsoft Web IQ API-Basis-URL",
"settings.admin.web.microsoftWebIqApiKey.label": "Microsoft Web IQ API-Schlüssel",
"settings.admin.web.mojeekSearchApiKey.label": "Mojeek Search API-Schlüssel",
@@ -2683,7 +2693,7 @@
"settings.admin.web.searxngQueryUrl.label": "Searxng-Abfrage-URL",
"settings.admin.web.searxngSearchLanguageAllEnEsDeFrEtc.label": "SearxNG-Suchsprache (all, en, es, de, fr, etc.)",
"settings.admin.web.sections.loader.title": "Loader",
- "settings.admin.web.sections.search.title": "Suchen",
+ "settings.admin.web.sections.search.title": "Suche",
"settings.admin.web.serpapiApiKey.label": "SerpApi-API-Schlüssel",
"settings.admin.web.serpapiEngine.label": "SerpApi-Engine",
"settings.admin.web.serperApiKey.label": "Serper-API-Schlüssel",
@@ -2715,10 +2725,10 @@
"settings.admin.web.yacyInstanceUrl.label": "Yacy-Instanz-URL",
"settings.admin.web.yacyPassword.label": "Yacy-Passwort",
"settings.admin.web.yacyUsername.label": "Yacy-Benutzername",
- "settings.admin.web.yandexWebSearchApiKey.label": "Yandex Web Search API Key",
+ "settings.admin.web.yandexWebSearchApiKey.label": "Yandex Web Search API-Schlüssel",
"settings.admin.web.yandexWebSearchConfig.label": "Yandex Web Search Konfiguration",
"settings.admin.web.yandexWebSearchUrl.label": "Yandex Web Search URL",
- "settings.admin.web.youComApiKey.label": "You.com API Key",
+ "settings.admin.web.youComApiKey.label": "You.com API-Schlüssel",
"settings.admin.web.youtubeLanguage.description": "Bevorzugte Sprachcodes für Transkripte, durch Kommas getrennt.",
"settings.admin.web.youtubeLanguage.label": "YouTube-Sprache",
"settings.admin.web.youtubeProxyUrl.description": "Proxy-URL für Anfragen des YouTube-Loaders.",
@@ -2788,7 +2798,7 @@
"settings.personal.connections.addConnection.label": "Verbindung hinzufügen",
"settings.personal.connections.sections.directConnections.title": "Direktverbindungen",
"settings.personal.connections.title": "Verbindungen",
- "settings.personal.dataControls.archiveAll.label": "Alle Archivieren",
+ "settings.personal.dataControls.archiveAll.label": "Alle archivieren",
"settings.personal.dataControls.archiveAllChats.description": "Verschiebt nach Bestätigung alle Chats ins Archiv.",
"settings.personal.dataControls.archiveAllChats.label": "Alle Chats archivieren",
"settings.personal.dataControls.deleteAllChats.description": "Löscht nach Bestätigung alle Chats endgültig.",
@@ -2810,34 +2820,34 @@
"settings.personal.general.modelParameters.label": "Modellparameter",
"settings.personal.general.parameters.contextCompactionThreshold.description": "Legt einen modellspezifischen Token-Schwellenwert für die Kontextverdichtung fest. Ist er gesetzt, ersetzt er den globalen Schwellenwert bis zur globalen Obergrenze.",
"settings.personal.general.parameters.contextCompactionThreshold.label": "Schwellenwert für Kontextverdichtung",
- "settings.personal.general.parameters.format.label": "",
- "settings.personal.general.parameters.frequencyPenalty.label": "",
- "settings.personal.general.parameters.functionCalling.description": "Der native Modus (Standard) nutzt die integrierten Funktionsaufruf-Fähigkeiten des Modells. Der Legacy-Modus funktioniert mit einer größeren Bandbreite an Modellen, indem Werkzeuge einmalig vor der Ausführung per Prompt-Injektion aufgerufen werden.",
+ "settings.personal.general.parameters.format.label": "format",
+ "settings.personal.general.parameters.frequencyPenalty.label": "frequency_penalty",
+ "settings.personal.general.parameters.functionCalling.description": "Der Modus \"Nativ\" (Standard) nutzt die integrierten Werkzeugaufruf-Fähigkeiten des Modells. Der Modus \"Veraltet\" funktioniert mit mehr Modellen, da Werkzeuge einmalig vor der Ausführung per Prompt-Injection aufgerufen werden.",
"settings.personal.general.parameters.functionCalling.label": "Funktionsaufruf",
- "settings.personal.general.parameters.keepAlive.label": "",
- "settings.personal.general.parameters.logitBias.label": "",
- "settings.personal.general.parameters.maxTokens.label": "",
- "settings.personal.general.parameters.minP.label": "",
- "settings.personal.general.parameters.mirostat.label": "",
- "settings.personal.general.parameters.mirostatEta.label": "",
- "settings.personal.general.parameters.mirostatTau.label": "",
- "settings.personal.general.parameters.numBatch.label": "",
- "settings.personal.general.parameters.numCtx.label": "",
- "settings.personal.general.parameters.numGpu.label": "",
- "settings.personal.general.parameters.numKeep.label": "",
- "settings.personal.general.parameters.numThread.label": "",
- "settings.personal.general.parameters.ollama.description": "Diese Option aktiviert die Reasoning-Funktion in Ollama, wodurch das Modell vor der Antwort nachdenken kann. Wenn aktiviert, nimmt sich das Modell einen Moment Zeit, um den Kontext zu verarbeiten und eine durchdachtere Antwort zu generieren.",
+ "settings.personal.general.parameters.keepAlive.label": "keep_alive",
+ "settings.personal.general.parameters.logitBias.label": "logit_bias",
+ "settings.personal.general.parameters.maxTokens.label": "max_tokens",
+ "settings.personal.general.parameters.minP.label": "min_p",
+ "settings.personal.general.parameters.mirostat.label": "mirostat",
+ "settings.personal.general.parameters.mirostatEta.label": "mirostat_eta",
+ "settings.personal.general.parameters.mirostatTau.label": "mirostat_tau",
+ "settings.personal.general.parameters.numBatch.label": "num_batch",
+ "settings.personal.general.parameters.numCtx.label": "num_ctx",
+ "settings.personal.general.parameters.numGpu.label": "num_gpu",
+ "settings.personal.general.parameters.numKeep.label": "num_keep",
+ "settings.personal.general.parameters.numThread.label": "num_thread",
+ "settings.personal.general.parameters.ollama.description": "Diese Option aktiviert oder deaktiviert die Reasoning-Funktion in Ollama, mit der das Modell vor der Antwort nachdenken kann. Wenn sie aktiviert ist, nimmt sich das Modell einen Moment Zeit, um den Gesprächskontext zu verarbeiten und eine durchdachtere Antwort zu generieren.",
"settings.personal.general.parameters.ollama.label": "Ollama",
- "settings.personal.general.parameters.presencePenalty.label": "",
- "settings.personal.general.parameters.reasoningEffort.description": "Beschränkt den Aufwand für Reasoning-Modelle. Nur anwendbar auf Modelle bestimmter Anbieter, die 'Reasoning Effort' unterstützen.",
+ "settings.personal.general.parameters.presencePenalty.label": "presence_penalty",
+ "settings.personal.general.parameters.reasoningEffort.description": "Begrenzt den Reasoning-Aufwand von Reasoning-Modellen. Gilt nur für Reasoning-Modelle bestimmter Anbieter, die Reasoning Effort unterstützen.",
"settings.personal.general.parameters.reasoningEffort.label": "Reasoning Effort",
- "settings.personal.general.parameters.reasoningTags.description": "Aktivieren, deaktivieren oder passen Sie Reasoning-Tags an. \"Aktiviert\" nutzt Standard-Tags, \"Deaktiviert\" schaltet sie aus, \"Benutzerdefiniert\" erlaubt eigene Start/End-Tags.",
+ "settings.personal.general.parameters.reasoningTags.description": "Aktiviert, deaktiviert oder konfiguriert die vom Modell verwendeten Reasoning-Tags. \"Aktiviert\" nutzt die Standard-Tags, \"Deaktiviert\" schaltet Reasoning-Tags aus und mit \"Benutzerdefiniert\" können Sie eigene Start- und End-Tags festlegen.",
"settings.personal.general.parameters.reasoningTags.label": "Reasoning-Tags",
- "settings.personal.general.parameters.repeatLastN.label": "",
- "settings.personal.general.parameters.repeatPenalty.label": "",
+ "settings.personal.general.parameters.repeatLastN.label": "repeat_last_n",
+ "settings.personal.general.parameters.repeatPenalty.label": "repeat_penalty",
"settings.personal.general.parameters.seed.description": "Legt den Startwert (Seed) für die Zufallszahlengenerierung fest. Mit einem festen Wert erzeugt das Modell für denselben Prompt immer denselben Text.",
"settings.personal.general.parameters.seed.label": "Seed",
- "settings.personal.general.parameters.stopSequence.description": "Legt die zu verwendenden Stoppsequenzen fest. Wenn dieses Muster erkannt wird, stoppt das LLM die Textgenerierung. Mehrere Stoppmuster können durch separate Stopp-Parameter in einer Modelldatei angegeben werden.",
+ "settings.personal.general.parameters.stopSequence.description": "Legt die zu verwendenden Stoppsequenzen fest. Wenn dieses Muster erkannt wird, beendet das LLM die Textgenerierung und gibt das Ergebnis zurück. Mehrere Stoppmuster können durch separate Stopp-Parameter in einem Modelfile angegeben werden.",
"settings.personal.general.parameters.stopSequence.label": "Stoppsequenz",
"settings.personal.general.parameters.streamChatResponse.description": "Wenn aktiviert, antwortet das Modell in Echtzeit auf jede Chat-Nachricht. Dieser Modus ist nützlich für Live-Chats, kann jedoch die Leistung auf langsamerer Hardware beeinträchtigen.",
"settings.personal.general.parameters.streamChatResponse.label": "Chat-Antwort streamen",
@@ -2845,12 +2855,12 @@
"settings.personal.general.parameters.streamDeltaChunkSize.label": "Stream-Delta-Chunk-Größe",
"settings.personal.general.parameters.temperature.description": "Die Temperatur des Modells. Eine Erhöhung führt zu kreativeren Antworten.",
"settings.personal.general.parameters.temperature.label": "Temperatur",
- "settings.personal.general.parameters.tfsZ.label": "",
- "settings.personal.general.parameters.think.label": "",
- "settings.personal.general.parameters.topK.label": "",
- "settings.personal.general.parameters.topP.label": "",
- "settings.personal.general.parameters.useMlock.label": "",
- "settings.personal.general.parameters.useMmap.label": "",
+ "settings.personal.general.parameters.tfsZ.label": "tfs_z",
+ "settings.personal.general.parameters.think.label": "think",
+ "settings.personal.general.parameters.topK.label": "top_k",
+ "settings.personal.general.parameters.topP.label": "top_p",
+ "settings.personal.general.parameters.useMlock.label": "use_mlock",
+ "settings.personal.general.parameters.useMmap.label": "use_mmap",
"settings.personal.general.sections.advancedParameters.title": "Erweiterte Parameter",
"settings.personal.general.sections.systemPrompt.description": "Legt den Standard-System-Prompt für neue Chats fest.",
"settings.personal.general.sections.systemPrompt.title": "System-Prompt",
@@ -2899,7 +2909,7 @@
"settings.personal.interface.displayTheUsernameInsteadOfYouInTheChat.description": "Zeigt in den Sprechblasen Ihren Benutzernamen statt \"Du\" an.",
"settings.personal.interface.displayTheUsernameInsteadOfYouInTheChat.label": "Benutzernamen statt \"Du\" im Chat anzeigen",
"settings.personal.interface.enableMessageQueue.description": "Stellt ausgehende Nachrichten in eine Warteschlange, statt laufende Antworten zu unterbrechen.",
- "settings.personal.interface.enableMessageQueue.label": "Nachrichten Queue aktivieren",
+ "settings.personal.interface.enableMessageQueue.label": "Nachrichtenwarteschlange aktivieren",
"settings.personal.interface.enterKeyBehavior.description": "Legt fest, ob die Eingabetaste sofort sendet oder Strg+Eingabe erforderlich ist.",
"settings.personal.interface.enterKeyBehavior.label": "Eingabetasten-Verhalten",
"settings.personal.interface.fadeEffectForStreamingText.description": "Blendet Text während des Streamings sanft ein.",
@@ -2937,7 +2947,7 @@
"settings.personal.interface.promptAutocompletion.description": "Schlägt beim Schreiben von Prompts Vervollständigungen vor.",
"settings.personal.interface.promptAutocompletion.label": "Prompt-Autovervollständigung",
"settings.personal.interface.regenerateMenu.description": "Zeigt bei Antworten des Assistenten das Menü zum erneuten Generieren an.",
- "settings.personal.interface.regenerateMenu.label": "Menü neu generieren",
+ "settings.personal.interface.regenerateMenu.label": "Menü zum Neugenerieren",
"settings.personal.interface.renderMarkdownInAssistantMessages.description": "Stellt Markdown in Antworten des Assistenten formatiert dar.",
"settings.personal.interface.renderMarkdownInAssistantMessages.label": "Markdown in Assistentennachrichten rendern",
"settings.personal.interface.renderMarkdownInPreviews.description": "Stellt Markdown in Vorschauen und kompakten Ansichten formatiert dar.",
@@ -2991,7 +3001,7 @@
"settings.personal.personalization.savedMemories.label": "Gespeicherte Erinnerungen",
"settings.personal.personalization.sections.memory.title": "Erinnerungen",
"settings.personal.personalization.title": "Personalisierung",
- "settings.personal.shortcuts.acceptAutocomplete.label": "",
+ "settings.personal.shortcuts.acceptAutocomplete.label": "Autovervollständigung akzeptieren\nZur Prompt-Variable springen",
"settings.personal.shortcuts.addPrompt.label": "Benutzerdefinierten Prompt hinzufügen",
"settings.personal.shortcuts.allowToolCall.label": "Werkzeugaufruf erlauben",
"settings.personal.shortcuts.attachFile.label": "Datei aus Wissensspeicher anhängen",
@@ -3027,10 +3037,10 @@
"settings.personal.tools.addConnection.description": "Verbinden Sie Ihre eigenen OpenAPI-kompatiblen externen Tool-Server.",
"settings.personal.tools.addConnection.label": "Verbindung hinzufügen",
"settings.personal.tools.openApi.label": "OpenAPI",
- "settings.personal.tools.sections.externalToolServers.title": "Externe Werkzeug-Server",
+ "settings.personal.tools.sections.externalToolServers.title": "Externe Tool-Server",
"settings.personal.tools.terminals.addConnection.description": "Verbinden Sie sich mit Open-Terminal-Instanzen, um Dateien zu durchsuchen und sie als dauerhaft verfügbare Werkzeuge zu nutzen. Es kann immer nur eine aktiv sein.",
"settings.personal.tools.terminals.addConnection.label": "Verbindung hinzufügen",
- "settings.personal.tools.terminals.sections.openTerminal.title": "Terminal öffnen",
+ "settings.personal.tools.terminals.sections.openTerminal.title": "Open Terminal",
"settings.personal.tools.title": "Integrationen",
"settings.personal.usage.sections.activity.title": "Aktivität",
"settings.personal.usage.sections.activityInsights.title": "Aktivitätsübersicht",
@@ -3047,18 +3057,20 @@
"Shared Chats": "Geteilte Chats",
"Shared with you": "Mit Ihnen geteilt",
"Sharing Permissions": "Freigabeberechtigungen",
- "Shell": "",
- "Shorten older messages so this chat can keep going.": "",
+ "Shell": "Shell",
+ "Shorten older messages so this chat can keep going.": "Ältere Nachrichten kürzen, damit dieser Chat fortgesetzt werden kann.",
"Show": "Anzeigen",
- "Show \"What's New\" Modal on Login": "\"Was gibt's Neues\"-Fenster beim Anmelden anzeigen",
+ "Show \"What's New\" Modal on Login": "\"Neuigkeiten\"-Fenster beim Anmelden anzeigen",
"Show All": "Alle anzeigen",
"Show all ({{COUNT}} characters)": "Alle anzeigen ({{COUNT}} Zeichen)",
"Show Files": "Dateien anzeigen",
"Show Hidden Files": "Versteckte Dateien anzeigen",
"Show image preview": "Bildvorschau anzeigen",
+ "Show me a code snippet": "Zeig mir ein Code-Beispiel",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "Zeig mir ein Code-Beispiel für einen Sticky Header einer Website in CSS und JavaScript.",
"Show Model": "Modell anzeigen",
"Show more": "Mehr anzeigen",
- "Show or switch the current model.": "",
+ "Show or switch the current model.": "Aktuelles Modell anzeigen oder wechseln.",
"Show Shortcuts": "Tastenkombinationen anzeigen",
"Show the floating quick-action toolbar in chat.": "Zeigt die schwebende Leiste für Schnellaktionen im Chat an.",
"Show your support!": "Zeigen Sie Ihre Unterstützung!",
@@ -3071,9 +3083,9 @@
"Sign up": "Registrieren",
"Sign up to {{WEBUI_NAME}}": "Bei {{WEBUI_NAME}} registrieren",
"Signing in to {{WEBUI_NAME}}": "Anmeldung bei {{WEBUI_NAME}}...",
- "simultaneous sub-agents": "Sub-Agents",
+ "simultaneous sub-agents": "gleichzeitige Sub-Agents",
"Single": "Einzeln",
- "Sink List": "Sink-Liste",
+ "Sink List": "Listeneinzug erhöhen",
"Size": "Größe",
"sk-1234": "sk-1234",
"Skill created successfully": "Skill erfolgreich erstellt",
@@ -3090,8 +3102,8 @@
"Skills Public Sharing": "Öffentliches Teilen von Skills",
"Skills Sharing": "Teilen von Skills",
"Skip to main content": "Zum Hauptinhalt springen",
- "Slim requires external services for embeddings, vector storage, and document extraction. Basic text files can be read locally.": "",
- "Slim requires external speech providers. Local speech models and audio conversion are unavailable.": "",
+ "Slim requires external services for embeddings, vector storage, and document extraction. Basic text files can be read locally.": "Slim benötigt externe Dienste für Embeddings, Vektorspeicherung und Dokumentextraktion. Einfache Textdateien können lokal gelesen werden.",
+ "Slim requires external speech providers. Local speech models and audio conversion are unavailable.": "Slim benötigt externe Sprachanbieter. Lokale Sprachmodelle und Audiokonvertierung sind nicht verfügbar.",
"Something went wrong :/": "Etwas ist schiefgelaufen :/",
"Sonar": "Sonar",
"Sonar Deep Research": "Sonar Deep Research",
@@ -3102,30 +3114,30 @@
"Source": "Quelle",
"Specific users or groups": "Bestimmte Benutzer oder Gruppen",
"Speech recognition error: {{error}}": "Spracherkennungsfehler: {{error}}",
- "Speech-to-Text Language": "Speech-to-Text Sprache",
+ "Speech-to-Text Language": "Sprache für Spracherkennung",
"Sponsor on GitHub": "Auf GitHub sponsern",
- "Staan API Key": "",
+ "Staan API Key": "Staan API-Schlüssel",
"Start a new conversation": "Neue Unterhaltung beginnen",
"Start of the channel": "Beginn des Kanals",
"Start Tag": "Start-Tag",
"Start the chat to use this terminal.": "Starten Sie den Chat, um dieses Terminal zu verwenden.",
"Starting in {{count}} minutes_one": "Beginnt in {{count}} Minute",
"Starting in {{count}} minutes_other": "Beginnt in {{count}} Minuten",
- "Starting in 1 minute": "Beginnt in 1 minute",
- "Starting kernel...": "Kernel starten...",
+ "Starting in 1 minute": "Beginnt in 1 Minute",
+ "Starting kernel...": "Kernel wird gestartet...",
"Starting now": "Startet jetzt",
"Status": "Status",
"Status cleared successfully": "Status erfolgreich gelöscht",
"Status updated successfully": "Status erfolgreich aktualisiert",
- "Status: check what is running in this chat.": "",
+ "Status: check what is running in this chat.": "Status: prüfen, was in diesem Chat gerade läuft.",
"STDOUT/STDERR": "STDOUT/STDERR",
"Stop": "Stopp",
- "Stop before each tool call until you allow or deny it.": "",
+ "Stop before each tool call until you allow or deny it.": "Vor jedem Werkzeugaufruf anhalten, bis Sie ihn erlauben oder ablehnen.",
"Stop camera": "Kamera ausschalten",
"Stop Download": "Download stoppen",
"Stop Generating": "Generierung stoppen",
"Storage": "Speicher",
- "Streamable HTTP": "Streambares HTTP",
+ "Streamable HTTP": "Streamable HTTP",
"Strikethrough": "Durchgestrichen",
"Su_day_of_week": "So",
"Submit answers": "Antworten absenden",
@@ -3140,7 +3152,7 @@
"Summarize this note.": "Diese Notiz zusammenfassen.",
"Support": "Unterstützung",
"Support this plugin:": "Unterstützen Sie dieses Plugin:",
- "Swap": "",
+ "Swap": "Tauschen",
"Switch camera": "Kamera wechseln",
"Switch to JSON editor": "Zum JSON-Editor wechseln",
"Switch to visual editor": "Zum visuellen Editor wechseln",
@@ -3169,13 +3181,15 @@
"Task List": "Aufgabenliste",
"Tasks": "Aufgaben",
"tasks completed": "Aufgaben abgeschlossen",
+ "Tell me a fun fact": "Erzähl mir einen Fun Fact",
+ "Tell me a random fun fact about the Roman Empire": "Erzähl mir einen zufälligen Fun Fact über das Römische Reich",
"Tell us more:": "Erzählen Sie uns mehr:",
- "Temporary": "",
+ "Temporary": "Temporär",
"Temporary Chat": "Temporärer Chat",
- "Temporary: toggle temporary chat for this new chat.": "",
+ "Temporary: toggle temporary chat for this new chat.": "Temporär: temporären Chat für diesen neuen Chat ein- oder ausschalten.",
"Terminal": "Terminal",
"Terminal Contexts": "Terminal-Kontexte",
- "Terminal servers saved": "Terminal Server gespeichert",
+ "Terminal servers saved": "Terminal-Server gespeichert",
"Test": "Testen",
"Test must pass before a source is created.": "Der Test muss erfolgreich sein, bevor eine Quelle angelegt werden kann.",
"Test notification sent.": "Testbenachrichtigung gesendet.",
@@ -3201,7 +3215,7 @@
"There was an error syncing your stats. Please try again.": "Beim Synchronisieren Ihrer Statistiken ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.",
"These settings are read from environment variables and cannot be edited here while {{ENV_VAR}} is disabled.": "Diese Einstellungen werden aus Umgebungsvariablen gelesen und können hier nicht bearbeitet werden, solange {{ENV_VAR}} deaktiviert ist.",
"thinking, output_config": "thinking, output_config",
- "Thinking...": "Denke nach...",
+ "Thinking...": "Denkt nach...",
"This action cannot be undone. Do you wish to continue?": "Diese Aktion kann nicht rückgängig gemacht werden. Möchten Sie fortfahren?",
"This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "Dieser Kanal wurde am {{createdAt}} erstellt. Dies ist der Anfang des Kanals {{channelName}}.",
"This chat won't appear in history and your messages will not be saved.": "Dieser Chat erscheint nicht im Verlauf und Ihre Nachrichten werden nicht gespeichert.",
@@ -3229,7 +3243,7 @@
"Thought for less than a second": "Für weniger als eine Sekunde nachgedacht",
"Thread": "Thread",
"Through": "Bis",
- "Thumbs up/down ratings from users on model responses": "Daumen hoch/runter von Benutzer für Modell Antworten",
+ "Thumbs up/down ratings from users on model responses": "Daumen-hoch/-runter-Bewertungen von Benutzern zu Modellantworten",
"Tika": "Tika",
"Tika 3.x": "Tika 3.x",
"Tika 4.x": "Tika 4.x",
@@ -3243,15 +3257,15 @@
"Title is required": "Titel ist erforderlich",
"To access the available model names for downloading,": "Um die verfügbaren Modellnamen für den Download anzuzeigen,",
"To access the GGUF models available for downloading,": "Um die verfügbaren GGUF-Modelle für den Download anzuzeigen,",
- "To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Für Zugriff auf die WebUI wenden Sie sich bitte an den Administrator. Administratoren können den Benutzerstatus im Admin-Panel verwalten.",
- "To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Um einen Wissensspeicher hier anzuhängen, fügen Sie sie zuerst dem Arbeitsbereich \"Wissen\" hinzu.",
+ "To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Für Zugriff auf die WebUI wenden Sie sich bitte an den Administrator. Administratoren können den Benutzerstatus im Admin-Bereich verwalten.",
+ "To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Um hier Wissensspeicher anzuhängen, fügen Sie diese zuerst dem Arbeitsbereich \"Wissen\" hinzu.",
"To learn more about available endpoints, visit our documentation.": "Um mehr über verfügbare Endpunkte zu erfahren, besuchen Sie unsere Dokumentation.",
"To learn more about SpeechT5,": "Um mehr über SpeechT5 zu erfahren,",
"To see the available CMU Arctic speaker embeddings,": "Um die verfügbaren CMU-Arctic-Speaker-Embeddings zu sehen,",
"To select actions here, add them to the \"Functions\" workspace first.": "Um hier Aktionen auswählen zu können, fügen Sie sie zuerst dem Arbeitsbereich \"Funktionen\" hinzu.",
"To select default filters here, enable toggleable filters for this model first.": "Um hier Standardfilter auswählen zu können, aktivieren Sie zuerst umschaltbare Filter für dieses Modell.",
"To select filters here, add them to the \"Functions\" workspace first.": "Um hier Filter auswählen zu können, fügen Sie sie zuerst dem Arbeitsbereich \"Funktionen\" hinzu.",
- "To select skills here, add them to the \"Skills\" workspace first.": "Um hier Skills auszuwählen, füge sie zuerst dem Workspace \"Skills\" hinzu.",
+ "To select skills here, add them to the \"Skills\" workspace first.": "Um hier Skills auswählen zu können, fügen Sie sie zuerst dem Arbeitsbereich \"Skills\" hinzu.",
"To select toolkits here, add them to the \"Tools\" workspace or enable a tool server first.": "Um hier Toolkits auswählen zu können, fügen Sie sie zuerst dem Arbeitsbereich \"Werkzeuge\" hinzu oder aktivieren Sie einen Tool-Server.",
"Today": "Heute",
"Today at": "Heute um",
@@ -3262,8 +3276,8 @@
"Toggle Dictation": "Diktieren umschalten",
"Toggle Mute": "Stummschaltung umschalten",
"Toggle Sidebar": "Seitenleiste umschalten",
- "Toggle status history": "Status Updates umschalten",
- "Toggle temporary chat for this new chat.": "",
+ "Toggle status history": "Statusverlauf umschalten",
+ "Toggle temporary chat for this new chat.": "Temporären Chat für diesen neuen Chat ein- oder ausschalten.",
"Toggle whether current connection is active.": "Umschalten, ob die aktuelle Verbindung aktiv ist.",
"Token": "Token",
"Token activity": "Token-Aktivität",
@@ -3292,8 +3306,8 @@
"Top": "Oben",
"Total chats": "Chats insgesamt",
"Transformers": "Transformers",
- "Translation key": "",
- "Trial License": "",
+ "Translation key": "Übersetzungsschlüssel",
+ "Trial License": "Testlizenz",
"Try adjusting your search or filter to find what you are looking for.": "Versuchen Sie, Ihre Suche oder Filter anzupassen, um zu finden, was Sie suchen.",
"Try Again": "Erneut versuchen",
"TTS Voice": "TTS-Stimme",
@@ -3301,9 +3315,10 @@
"Type": "Typ",
"Type a model ref": "Modellreferenz eingeben",
"Type here...": "Hier eingeben...",
- "Type Hugging Face Resolve (Download) URL": "Hugging Face Resolve (Download) URL eingeben",
+ "Type Hugging Face Resolve (Download) URL": "Hugging-Face-Resolve-URL (Download) eingeben",
"Type your answer": "Antwort eingeben",
"Uh-oh! There was an issue with the response.": "Es ist ein Problem mit der Antwort aufgetreten.",
+ "Unarchive": "Aus dem Archiv wiederherstellen",
"Unarchive Chat": "Chat wiederherstellen",
"Unassigned": "Nicht belegt",
"Underline": "Unterstreichen",
@@ -3330,17 +3345,17 @@
"Updated": "Aktualisiert",
"Updated at": "Aktualisiert am",
"Updated At": "Aktualisiert am",
- "Updating \"{{modelId}}\"": "",
+ "Updating \"{{modelId}}\"": "Wird aktualisiert: \"{{modelId}}\"",
"Upgrade to a licensed plan for enhanced capabilities, including custom theming and branding, and dedicated support.": "Upgraden Sie auf einen lizenzierten Plan für erweiterte Funktionen, einschließlich individuellem Design, Branding und dediziertem Support.",
"Upload": "Hochladen",
"Upload a GGUF model": "GGUF-Modell hochladen",
"Upload Audio": "Audio hochladen",
- "Upload directory": "Ordner Hochladen",
+ "Upload directory": "Ordner hochladen",
"Upload failed": "Upload fehlgeschlagen",
"Upload failed for {{failed}} of {{total}} files.": "Upload für {{failed}} von {{total}} Dateien fehlgeschlagen.",
"Upload files": "Dateien hochladen",
"Upload Files": "Datei(en) hochladen",
- "Upload Folder": "",
+ "Upload Folder": "Ordner hochladen",
"Upload Model": "Modell hochladen",
"Upload Photo": "Foto hochladen",
"Upload profile image": "Profilbild hochladen",
@@ -3348,13 +3363,13 @@
"Uploaded files or images": "Hochgeladene Dateien oder Bilder",
"Uploading": "Wird hochgeladen",
"Uploading {{current}}/{{total}}: {{file}}": "Wird hochgeladen {{current}}/{{total}}: {{file}}",
- "Uploading...": "Lade hoch...",
+ "Uploading...": "Wird hochgeladen...",
"URL": "URL",
"URL is required": "URL ist erforderlich",
"URL Mode": "URL-Modus",
"Use": "Verwenden Sie",
"Use a valid event name or pattern like user.*": "Verwenden Sie einen gültigen Ereignisnamen oder ein Muster wie user.*",
- "Use default": "",
+ "Use default": "Standard verwenden",
"Use device vibration feedback on supported Android devices.": "Nutzt die Vibration des Geräts auf unterstützten Android-Geräten.",
"Use discovered scopes": "Erkannte Scopes verwenden",
"Use groups to organize your users and assign permissions.": "Verwenden Sie Gruppen, um Ihre Benutzer zu organisieren und Berechtigungen zu vergeben.",
@@ -3365,8 +3380,8 @@
"Use Web Search?": "Websuche verwenden?",
"user": "Benutzer",
"User": "Benutzer",
- "User Activity": "Benutzer Aktivität",
- "User Count": "",
+ "User Activity": "Benutzeraktivität",
+ "User Count": "Benutzeranzahl",
"User Groups": "Benutzergruppen",
"User location successfully retrieved.": "Benutzerstandort erfolgreich abgerufen.",
"User menu": "Benutzermenü",
@@ -3398,8 +3413,8 @@
"Verify Connection": "Verbindung prüfen",
"Version {{selectedVersion}} of {{totalVersions}}": "Version {{selectedVersion}} von {{totalVersions}}",
"Version deleted": "Version gelöscht",
- "Vertical Layout": "",
- "Video player": "",
+ "Vertical Layout": "Vertikales Layout",
+ "Video player": "Videoplayer",
"View channel": "Kanal anzeigen",
"View chat": "Chat ansehen",
"View Replies": "Antworten anzeigen",
@@ -3412,6 +3427,7 @@
"Visible": "Sichtbar",
"Visible to all users": "Für alle Benutzer sichtbar",
"Visual": "Visuell",
+ "vocabulary for a college entrance exam": "Vokabeln für eine Aufnahmeprüfung",
"Voice": "Stimme",
"Voice Input": "Spracheingabe",
"Voice mode": "Sprachmodus",
@@ -3421,7 +3437,7 @@
"Waiting for upload...": "Warten auf Upload...",
"Warning": "Warnung",
"Warning:": "Warnung:",
- "Warning: Enabling this will allow users to run scheduled prompts automatically.": "Warnung: Wenn Sie dies aktivieren, können Nutzer geplante Prompts automatisch ausführen.",
+ "Warning: Enabling this will allow users to run scheduled prompts automatically.": "Warnung: Wenn Sie dies aktivieren, können Benutzer geplante Prompts automatisch ausführen.",
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "Warnung: Wenn Sie dies aktivieren, können Benutzer beliebigen Code auf den Server hochladen.",
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Warnung: Die Jupyter-Ausführung ermöglicht beliebige Codeausführung und birgt erhebliche Sicherheitsrisiken – gehen Sie mit äußerster Vorsicht vor.",
"We_day_of_week": "Mi",
@@ -3433,7 +3449,7 @@
"Webhook Name": "Webhook-Name",
"Webhook saved": "Webhook gespeichert",
"Webhooks": "Webhooks",
- "Webpage URLs": "Webseiten URLs",
+ "Webpage URLs": "Webseiten-URLs",
"WebUI will make requests to \"{{url}}\"": "WebUI wird Anfragen an \"{{url}}\" senden",
"WebUI will make requests to \"{{url}}/api/chat\"": "WebUI wird Anfragen an \"{{url}}/api/chat\" senden",
"WebUI will make requests to \"{{url}}/chat/completions\"": "WebUI wird Anfragen an \"{{url}}/chat/completions\" senden",
@@ -3442,6 +3458,7 @@
"Weekly": "Wöchentlich",
"Weekly at": "Wöchentlich um",
"Welcome to your AI home.": "Willkommen in Ihrem KI-Zuhause.",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "Was sind 5 kreative Ideen für die Kunstwerke meiner Kinder? Ich möchte sie nicht wegwerfen, aber sie nehmen so viel Platz weg.",
"What are you trying to achieve?": "Was möchten Sie erreichen?",
"What are you working on?": "Woran arbeiten Sie?",
"What is NOT shared:": "Was NICHT geteilt wird:",
@@ -3458,12 +3475,12 @@
"Working Directory": "Arbeitsverzeichnis",
"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.": "Funktioniert zusammen mit Top-K. Ein höherer Wert (z. B. 0.95) führt zu vielfältigerem Text, während ein niedrigerer Wert (z. B. 0.5) fokussierteren und konservativeren Text erzeugt.",
"Workspace": "Arbeitsbereich",
- "Workspace Models": "",
+ "Workspace Models": "Arbeitsbereichsmodelle",
"Workspace Permissions": "Arbeitsbereichsberechtigungen",
"Write": "Schreiben",
"Write a summary in 50 words that summarizes {{topic}}.": "Schreiben Sie eine Zusammenfassung in 50 Wörtern über {{topic}}.",
"Write something...": "Schreiben Sie etwas...",
- "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Schreiben Sie hier den Inhalt des System-Prompts Ihres Modells\nz. B.: Sie sind Mario aus Super Mario Bros und agieren als Assistent.",
+ "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Schreiben Sie hier den Inhalt des System-Prompts Ihres Modells\nz. B.: Du bist Mario aus Super Mario Bros und agierst als Assistent.",
"Yahoo": "Yahoo",
"Yandex": "Yandex",
"Yearly": "Jährlich",
@@ -3480,13 +3497,13 @@
"You do not have permission to make this public": "Sie haben keine Berechtigung, das zu veröffentlichen.",
"You do not have permission to send messages in this channel.": "Sie haben keine Berechtigung, Nachrichten in diesem Kanal zu senden.",
"You do not have permission to send messages in this thread.": "Sie haben keine Berechtigung, Nachrichten in diesem Thread zu senden.",
- "You do not have permission to upload files to this knowledge base.": "Sie haben keine Berechtigung, Dateien in diese Wissensspeicher hochzuladen.",
+ "You do not have permission to upload files to this knowledge base.": "Sie haben keine Berechtigung, Dateien in diesen Wissensspeicher hochzuladen.",
"You do not have permission to upload files.": "Sie haben keine Berechtigung, Dateien hochzuladen.",
- "You do not have permission to upload web content.": "Sie haben keine Berechtigung Webseiten hochzuladen.",
+ "You do not have permission to upload web content.": "Sie haben keine Berechtigung, Webinhalte hochzuladen.",
"You have more than 50 users, which often means this workspace is supporting organizational use. Open WebUI is free to use as-is, with no restrictions or hidden limits, and we want to keep it that way.": "Sie haben mehr als 50 Benutzer – das deutet meist darauf hin, dass dieser Arbeitsbereich organisationsweit genutzt wird. Open WebUI ist in dieser Form kostenlos nutzbar, ohne Einschränkungen oder versteckte Limits, und das soll auch so bleiben.",
"You have no archived conversations.": "Sie haben keine archivierten Unterhaltungen.",
"You have no shared conversations.": "Sie haben keine geteilten Unterhaltungen.",
- "You have shared this chat": "Sie haben diesen Chat geteilt",
+ "You have shared this chat": "Sie haben diesen Chat",
"You're a helpful assistant.": "Du bist ein hilfreicher Assistent.",
"You're now logged in.": "Sie sind jetzt angemeldet.",
"Your account status is currently pending activation.": "Ihr Kontostatus wartet derzeit auf Aktivierung.",
@@ -3497,7 +3514,7 @@
"Your query will be sent to the configured web search provider.": "Ihre Anfrage wird an den konfigurierten Web-Suchanbieter gesendet.",
"Your usage stats have been successfully synced.": "Ihre Nutzungsstatistiken wurden erfolgreich synchronisiert.",
"YouTube": "YouTube",
- "YouTube video player": "",
+ "YouTube video player": "YouTube-Videoplayer",
"Zoom in": "Vergrößern",
"Zoom out": "Verkleinern"
}
diff --git a/src/lib/i18n/locales/dg-DG/translation.json b/src/lib/i18n/locales/dg-DG/translation.json
index faf7d08b6a53..2969c1ae3ef9 100644
--- a/src/lib/i18n/locales/dg-DG/translation.json
+++ b/src/lib/i18n/locales/dg-DG/translation.json
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "",
"A private conversation between you and selected users": "",
"a user": "such user",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "",
"Access": "",
"Access Control": "",
@@ -343,6 +344,7 @@
"Chat Menu": "",
"Chat moved successfully": "",
"Chat Permissions": "",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "",
"Chat Uploads": "",
"Chat Variables": "",
@@ -494,6 +496,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "",
@@ -919,6 +922,8 @@
"Experience": "",
"Experimental": "Much Experiment",
"Explain": "",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "",
"Exploring": "",
"Export": "",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "",
"Followed instructions perfectly": "",
"for placeholders": "",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "",
"Get started": "",
"Get started with {{WEBUI_NAME}}": "",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "",
"Good Response": "",
"Google": "",
@@ -1118,6 +1126,8 @@
"Height": "",
"Hello, {{name}}": "Much helo, {{name}}",
"Help": "",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "",
"Help us translate Open WebUI!": "",
"Hex Color": "",
@@ -1148,6 +1158,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "",
"Image Generation": "",
"Image Max Compression Size": "",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "",
"Input needed": "",
"Input Variables": "",
- "Insert": "",
"Insert into note": "",
"Instructions": "",
"Integrations": "",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Maximum of 3 models can be downloaded simultaneously. Please try again later.",
"May": "",
"MBR": "",
- "MCP": "",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "",
"Medium": "",
"Member removed successfully": "",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "",
+ "of a website's sticky header": "",
"Off": "Off",
"Okay, Let's Go!": "Okay, Let's Go!",
"OLED Dark": "OLED Dark",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "OpenAI Bark Key is required.",
"OpenAI API settings updated": "",
"OpenAI URL/Key required.": "",
- "OpenAPI": "",
"OpenAPI Spec": "",
"openapi.json URL or Path": "",
"optional": "",
@@ -1610,6 +1619,7 @@
"out of": "",
"Output": "",
"OUTPUT": "",
+ "Overcome procrastination": "",
"Overview": "",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -3056,6 +3066,8 @@
"Show Files": "",
"Show Hidden Files": "",
"Show image preview": "",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "",
"Show more": "",
"Show or switch the current model.": "",
@@ -3169,6 +3181,8 @@
"Task List": "",
"Tasks": "",
"tasks completed": "",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "",
"Temporary": "",
"Temporary Chat": "",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "Type Hugging Face Resolve (Download) URL much download",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "",
+ "Unarchive": "",
"Unarchive Chat": "",
"Unassigned": "",
"Underline": "",
@@ -3412,6 +3427,7 @@
"Visible": "",
"Visible to all users": "",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "",
"Voice Input": "",
"Voice mode": "",
@@ -3442,6 +3458,7 @@
"Weekly": "",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "",
"What are you working on?": "",
"What is NOT shared:": "",
diff --git a/src/lib/i18n/locales/el-GR/translation.json b/src/lib/i18n/locales/el-GR/translation.json
index ea2e77f2515c..d6be6f192f55 100644
--- a/src/lib/i18n/locales/el-GR/translation.json
+++ b/src/lib/i18n/locales/el-GR/translation.json
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Μια νέα έκδοση (v{{LATEST_VERSION}}) είναι τώρα διαθέσιμη.",
"A private conversation between you and selected users": "",
"a user": "ένας χρήστης",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "",
"Access": "Πρόσβαση",
"Access Control": "Έλεγχος Πρόσβασης",
@@ -343,6 +344,7 @@
"Chat Menu": "",
"Chat moved successfully": "Η συνομιλία μετακινήθηκε επιτυχώς",
"Chat Permissions": "Δικαιώματα Συνομιλίας",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "",
"Chat Uploads": "",
"Chat Variables": "",
@@ -494,6 +496,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "Δημιουργία",
@@ -919,6 +922,8 @@
"Experience": "",
"Experimental": "Πειραματικό",
"Explain": "Επεξήγηση",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "",
"Exploring": "",
"Export": "Εξαγωγή",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "",
"Followed instructions perfectly": "Ακολούθησε τις οδηγίες τέλεια",
"for placeholders": "",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "",
"Get started": "Ξεκινήστε",
"Get started with {{WEBUI_NAME}}": "Ξεκινήστε με {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Καθολικό",
"Good Response": "Καλή Απάντηση",
"Google": "",
@@ -1118,6 +1126,8 @@
"Height": "",
"Hello, {{name}}": "Γειά σου, {{name}}",
"Help": "Βοήθεια",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "",
"Help us translate Open WebUI!": "",
"Hex Color": "Χρώμα Hex",
@@ -1148,6 +1158,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Εικόνα",
"Image Generation": "Δημιουργία Εικόνας",
"Image Max Compression Size": "",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "",
"Input needed": "",
"Input Variables": "",
- "Insert": "",
"Insert into note": "",
"Instructions": "",
"Integrations": "Ενσωματώσεις",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Μέγιστο των 3 μοντέλων μπορούν να κατεβούν ταυτόχρονα. Παρακαλώ δοκιμάστε ξανά αργότερα.",
"May": "Μάιος",
"MBR": "",
- "MCP": "",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "",
"Medium": "",
"Member removed successfully": "",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "Οκτώβριος",
+ "of a website's sticky header": "",
"Off": "Ανενεργό",
"Okay, Let's Go!": "Εντάξει, Πάμε!",
"OLED Dark": "Σκούρο OLED",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "Απαιτείται το Κλειδί API OpenAI.",
"OpenAI API settings updated": "Οι ρυθμίσεις API OpenAI ενημερώθηκαν",
"OpenAI URL/Key required.": "Απαιτείται URL/Kλειδί OpenAI.",
- "OpenAPI": "",
"OpenAPI Spec": "Προδιαγραφή OpenAPI",
"openapi.json URL or Path": "URL ή Διαδρομή openapi.json",
"optional": "",
@@ -1610,6 +1619,7 @@
"out of": "",
"Output": "",
"OUTPUT": "ΕΞΟΔΟΣ",
+ "Overcome procrastination": "",
"Overview": "Επισκόπηση",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -3056,6 +3066,8 @@
"Show Files": "",
"Show Hidden Files": "",
"Show image preview": "",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "",
"Show more": "",
"Show or switch the current model.": "",
@@ -3169,6 +3181,8 @@
"Task List": "Λίστα Εργασιών",
"Tasks": "Εργασίες",
"tasks completed": "",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Πείτε μας περισσότερα:",
"Temporary": "",
"Temporary Chat": "Προσωρινή Συνομιλία",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "Τύπος URL Ανάλυσης Hugging Face Resolve (Λήψη)",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "Ωχ! Παρουσιάστηκε κάποιο σφάλμα με την απάντηση.",
+ "Unarchive": "",
"Unarchive Chat": "Απο-αρχειοθέτηση Συνομιλίας",
"Unassigned": "",
"Underline": "",
@@ -3412,6 +3427,7 @@
"Visible": "",
"Visible to all users": "",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "Φωνή",
"Voice Input": "Εισαγωγή Φωνής",
"Voice mode": "Λειτουργία Φωνής",
@@ -3442,6 +3458,7 @@
"Weekly": "",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "Τι προσπαθείτε να πετύχετε?",
"What are you working on?": "Τι εργάζεστε;",
"What is NOT shared:": "",
diff --git a/src/lib/i18n/locales/en-GB/translation.json b/src/lib/i18n/locales/en-GB/translation.json
index b3ec2acdf440..109256d58e55 100644
--- a/src/lib/i18n/locales/en-GB/translation.json
+++ b/src/lib/i18n/locales/en-GB/translation.json
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "",
"A private conversation between you and selected users": "",
"a user": "",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "",
"Access": "",
"Access Control": "",
@@ -343,6 +344,7 @@
"Chat Menu": "",
"Chat moved successfully": "",
"Chat Permissions": "",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "",
"Chat Uploads": "",
"Chat Variables": "",
@@ -494,6 +496,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "",
@@ -919,6 +922,8 @@
"Experience": "",
"Experimental": "",
"Explain": "",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "",
"Exploring": "",
"Export": "",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "",
"Followed instructions perfectly": "",
"for placeholders": "",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "",
"Get started": "",
"Get started with {{WEBUI_NAME}}": "",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "",
"Good Response": "",
"Google": "",
@@ -1118,6 +1126,8 @@
"Height": "",
"Hello, {{name}}": "",
"Help": "",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "",
"Help us translate Open WebUI!": "",
"Hex Color": "Hex Colour",
@@ -1148,6 +1158,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "",
"Image Generation": "",
"Image Max Compression Size": "",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "",
"Input needed": "",
"Input Variables": "",
- "Insert": "",
"Insert into note": "",
"Instructions": "",
"Integrations": "",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "",
"May": "",
"MBR": "",
- "MCP": "",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "",
"Medium": "",
"Member removed successfully": "",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "",
+ "of a website's sticky header": "",
"Off": "",
"Okay, Let's Go!": "",
"OLED Dark": "",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "",
"OpenAI API settings updated": "",
"OpenAI URL/Key required.": "",
- "OpenAPI": "",
"OpenAPI Spec": "",
"openapi.json URL or Path": "",
"optional": "",
@@ -1610,6 +1619,7 @@
"out of": "",
"Output": "",
"OUTPUT": "",
+ "Overcome procrastination": "",
"Overview": "",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -3056,6 +3066,8 @@
"Show Files": "",
"Show Hidden Files": "",
"Show image preview": "",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "",
"Show more": "",
"Show or switch the current model.": "",
@@ -3169,6 +3181,8 @@
"Task List": "",
"Tasks": "",
"tasks completed": "",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "",
"Temporary": "",
"Temporary Chat": "",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "",
+ "Unarchive": "",
"Unarchive Chat": "",
"Unassigned": "",
"Underline": "",
@@ -3412,6 +3427,7 @@
"Visible": "",
"Visible to all users": "",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "",
"Voice Input": "",
"Voice mode": "",
@@ -3442,6 +3458,7 @@
"Weekly": "",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "",
"What are you working on?": "",
"What is NOT shared:": "",
diff --git a/src/lib/i18n/locales/en-US/translation.json b/src/lib/i18n/locales/en-US/translation.json
index e67c1d5a3fc0..ee7dba23b509 100644
--- a/src/lib/i18n/locales/en-US/translation.json
+++ b/src/lib/i18n/locales/en-US/translation.json
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "",
"A private conversation between you and selected users": "",
"a user": "",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "",
"Access": "",
"Access Control": "",
@@ -238,6 +239,7 @@
"Attach Notes": "",
"Attach Webpage": "",
"Attention to detail": "",
+ "Audio playback failed": "",
"Audio player": "",
"August": "",
"Auth": "",
@@ -283,6 +285,7 @@
"Base Model (From)": "",
"Base Model is required.": "",
"Base Models": "",
+ "Basic": "",
"Basic text only": "",
"Basics": "",
"Bearer": "",
@@ -495,6 +498,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "",
@@ -920,6 +924,8 @@
"Experience": "",
"Experimental": "",
"Explain": "",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "",
"Exploring": "",
"Export": "",
@@ -995,6 +1001,7 @@
"Failed to update webhook": "",
"Failed to upload background image.": "",
"Failed to upload file.": "",
+ "Fast": "",
"Features Permissions": "",
"February": "",
"Feedback": "",
@@ -1047,6 +1054,7 @@
"Follow up: {{question}}": "",
"Followed instructions perfectly": "",
"for placeholders": "",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1094,6 +1102,8 @@
"Get information on {{name}} in the UI": "",
"Get started": "",
"Get started with {{WEBUI_NAME}}": "",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "",
"Good Response": "",
"Google": "",
@@ -1119,6 +1129,8 @@
"Height": "",
"Hello, {{name}}": "",
"Help": "",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "",
"Help us translate Open WebUI!": "",
"Hex Color": "",
@@ -1149,6 +1161,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "",
"Image Generation": "",
"Image Max Compression Size": "",
@@ -1181,7 +1194,6 @@
"Input Key (e.g. text, unet_name, steps)": "",
"Input needed": "",
"Input Variables": "",
- "Insert": "",
"Insert into note": "",
"Instructions": "",
"Integrations": "",
@@ -1310,7 +1322,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "",
"May": "",
"MBR": "",
- "MCP": "",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "",
"Medium": "",
"Member removed successfully": "",
@@ -1549,6 +1560,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "",
+ "of a website's sticky header": "",
"Off": "",
"Okay, Let's Go!": "",
"OLED Dark": "",
@@ -1598,7 +1610,6 @@
"OpenAI API Key is required.": "",
"OpenAI API settings updated": "",
"OpenAI URL/Key required.": "",
- "OpenAPI": "",
"OpenAPI Spec": "",
"openapi.json URL or Path": "",
"optional": "",
@@ -1611,6 +1622,7 @@
"out of": "",
"Output": "",
"OUTPUT": "",
+ "Overcome procrastination": "",
"Overview": "",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -2696,6 +2708,7 @@
"settings.admin.web.sougouSearchApiSk.label": "Sougou Search API SK",
"settings.admin.web.tavilyApiKey.label": "Tavily API Key",
"settings.admin.web.tavilyExtractDepth.label": "Tavily Extract Depth",
+ "settings.admin.web.tavilySearchDepth.label": "Tavily Search Depth",
"settings.admin.web.timeout.description": "Maximum time to wait while loading web content.",
"settings.admin.web.timeout.label": "Timeout",
"settings.admin.web.title": "Web Search",
@@ -3057,6 +3070,8 @@
"Show Files": "",
"Show Hidden Files": "",
"Show image preview": "",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "",
"Show more": "",
"Show or switch the current model.": "",
@@ -3170,6 +3185,8 @@
"Task List": "",
"Tasks": "",
"tasks completed": "",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "",
"Temporary": "",
"Temporary Chat": "",
@@ -3305,6 +3322,7 @@
"Type Hugging Face Resolve (Download) URL": "",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "",
+ "Ultra-fast": "",
"Unarchive": "",
"Unarchive Chat": "",
"Unassigned": "",
@@ -3414,6 +3432,7 @@
"Visible": "",
"Visible to all users": "",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "",
"Voice Input": "",
"Voice mode": "",
@@ -3444,6 +3463,7 @@
"Weekly": "",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "",
"What are you working on?": "",
"What is NOT shared:": "",
diff --git a/src/lib/i18n/locales/es-ES/translation.json b/src/lib/i18n/locales/es-ES/translation.json
index 30078ea3ae8c..82777d626c1b 100644
--- a/src/lib/i18n/locales/es-ES/translation.json
+++ b/src/lib/i18n/locales/es-ES/translation.json
@@ -80,6 +80,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Nueva versión (v{{LATEST_VERSION}}) disponible.",
"A private conversation between you and selected users": "Conversación privada entre tú y los usuarios seleccionados",
"a user": "un usuario",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Aceptar Generar Autocompletado\nIr a la Configuración de este Prompt",
"Access": "Acceso",
"Access Control": "Control de Acceso",
@@ -352,6 +353,7 @@
"Chat Menu": "Menú del Chat",
"Chat moved successfully": "Chat movido correctamente",
"Chat Permissions": "Permisos del Chat",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "Chat descompartido correctamente",
"Chat Uploads": "Subidas en el Chat",
"Chat Variables": "Variables del Chat",
@@ -504,6 +506,7 @@
"Could not check for updates": "No se ha podido comprobar si hay actualizaciones",
"Could not load release notes.": "No se han podido cargar las notas de la versión.",
"Could not read file.": "No se ha podido leer el archivo",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "¿No encuentras tu idioma?",
"CPU": "CPU",
"Create": "Crear",
@@ -931,6 +934,8 @@
"Experience": "Experiencia",
"Experimental": "Experimental",
"Explain": "Explicar",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "Explorado",
"Exploring": "Explorando",
"Export": "Exportar",
@@ -1058,6 +1063,7 @@
"Follow up: {{question}}": "Seguimiento: {{question}}",
"Followed instructions perfectly": "Siguió las instrucciones perfectamente",
"for placeholders": "para marcadores de posición",
+ "for what to do with my kids' art": "",
"Fork": "Bifurcar",
"Fork chat": "Bifurcar chat",
"Fork the current chat branch into a new chat.": "Bifurca la rama actual del chat en un chat nuevo.",
@@ -1105,6 +1111,8 @@
"Get information on {{name}} in the UI": "Obtener información sobre {{name}} en la IU",
"Get started": "Empezar",
"Get started with {{WEBUI_NAME}}": "Empezar con {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Global",
"Good Response": "Buena Respuesta",
"Google": "Google",
@@ -1130,6 +1138,8 @@
"Height": "Altura",
"Hello, {{name}}": "Hola, {{name}}",
"Help": "Ayuda",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "Ayuda a la comunidad a descubrir grandes modelos",
"Help us translate Open WebUI!": "¡Ayúdanos a traducir Open WebUI!",
"Hex Color": "Color Hex",
@@ -1160,6 +1170,7 @@
"Identity audit": "Auditoría de identidad",
"Idle only": "Solo inactivo",
"Idle Timeout": "Tiempo de espera por inactividad",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Imagen",
"Image Generation": "Generación de Imagen",
"Image Max Compression Size": "Tamaño Máximo en Compresión de Imagen",
@@ -1192,7 +1203,6 @@
"Input Key (e.g. text, unet_name, steps)": "Ingresa Clave (ej. text, unet_name. steps)",
"Input needed": "Se requiere entrada",
"Input Variables": "Ingresar variables",
- "Insert": "Insertar",
"Insert into note": "Insertar en la nota",
"Instructions": "Instrucciones",
"Integrations": "Integraciones",
@@ -1322,7 +1332,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Se puede descargar un máximo de 3 modelos simultáneamente. Por favor, reinténtelo más tarde.",
"May": "Mayo",
"MBR": "MBR",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "El soporte de MCP es experimental y su especificación cambia con frecuencia, lo que puede generar incompatibilidades. El equipo de Open WebUI mantiene directamente la compatibilidad con la especificación OpenAPI, lo que la convierte en la opción más fiable para la compatibilidad.",
"Medium": "Medio",
"Member removed successfully": "Miembro removido correctamente",
@@ -1561,6 +1570,7 @@
"OAuth Server URL": "URL del servidor de OAuth",
"OAuth session disconnected": "Sesión OAuth desconectada",
"October": "Octubre",
+ "of a website's sticky header": "",
"Off": "Desactivado",
"Okay, Let's Go!": "Vale, ¡Vamos!",
"OLED Dark": "Oscuro OLED",
@@ -1610,7 +1620,6 @@
"OpenAI API Key is required.": "Clave API de OpenAI requerida.",
"OpenAI API settings updated": "Ajustes de API OpenAI actualizados",
"OpenAI URL/Key required.": "URL/Clave de OpenAI requerida.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "Especif. OpenAPI",
"openapi.json URL or Path": "URL o Ruta a openapi.json",
"optional": "opcional",
@@ -1623,6 +1632,7 @@
"out of": "fuera de",
"Output": "Salida",
"OUTPUT": "SALIDA",
+ "Overcome procrastination": "",
"Overview": "Vista General",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "URL de la API de paddleOCR-vl requerida",
@@ -3072,6 +3082,8 @@
"Show Files": "Mostrar Archivos",
"Show Hidden Files": "Mostrar Archivos Ocultos",
"Show image preview": "Mostrar previsualización de imagen",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Mostrar Modelo",
"Show more": "Mostrar más",
"Show or switch the current model.": "Muestra o cambia el modelo actual.",
@@ -3186,6 +3198,8 @@
"Task List": "Lista de Tareas",
"Tasks": "Tareas",
"tasks completed": "tareas completadas",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Dinos algo más:",
"Temporary": "Temporal",
"Temporary Chat": "Chat Temporal",
@@ -3321,6 +3335,7 @@
"Type Hugging Face Resolve (Download) URL": "Escribir la URL de Hugging Face Resolve (Descarga)",
"Type your answer": "Escribe tu respuesta",
"Uh-oh! There was an issue with the response.": "¡Vaya! Hubo un problema con la respuesta.",
+ "Unarchive": "",
"Unarchive Chat": "Desarchivar Chat",
"Unassigned": "Sin asignar",
"Underline": "Subrayado",
@@ -3429,6 +3444,7 @@
"Visible": "Visible",
"Visible to all users": "Visible para todos los usuarios",
"Visual": "Visual",
+ "vocabulary for a college entrance exam": "",
"Voice": "Voz",
"Voice Input": "Entrada de Voz",
"Voice mode": "Modo de Voz",
@@ -3459,6 +3475,7 @@
"Weekly": "Semanal",
"Weekly at": "Semanalmente a las",
"Welcome to your AI home.": "Bienvenido a tu hogar de IA.",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "¿Qué estás tratando de conseguir?",
"What are you working on?": "¿En qué estás trabajando?",
"What is NOT shared:": "Que NO es compartido:",
diff --git a/src/lib/i18n/locales/et-EE/translation.json b/src/lib/i18n/locales/et-EE/translation.json
index 2a20098f12bb..09fce988795e 100644
--- a/src/lib/i18n/locales/et-EE/translation.json
+++ b/src/lib/i18n/locales/et-EE/translation.json
@@ -5,7 +5,7 @@
"[Last] dddd [at] h:mm A": "[Eelmisel] dddd [kell] h:mm A",
"[Today at] h:mm A": "[Täna kell] h:mm A",
"[Yesterday at] h:mm A": "[Eile kell] h:mm A",
- "{{ models }}": "{{ mudelid }}",
+ "{{ models }}": "{{ models }}",
"{{count}} added lines_one": "",
"{{count}} added lines_other": "",
"{{COUNT}} Available Skills": "",
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Uus versioon (v{{LATEST_VERSION}}) on saadaval.",
"A private conversation between you and selected users": "Privaatne vestlus teie ja valitud kasutajate vahel",
"a user": "kasutaja",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Nõustu automaattäitmise genereerimisega\nHüppa sisendi muutujale",
"Access": "Juurdepääs",
"Access Control": "Juurdepääsu kontroll",
@@ -343,6 +344,7 @@
"Chat Menu": "",
"Chat moved successfully": "Vestlus edukalt teisaldatud",
"Chat Permissions": "Vestluse õigused",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "Vestluse jagamine edukalt lõpetatud.",
"Chat Uploads": "",
"Chat Variables": "",
@@ -494,6 +496,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "Faili ei saanud lugeda.",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "Loo",
@@ -919,6 +922,8 @@
"Experience": "",
"Experimental": "Katsetuslik",
"Explain": "Selgita",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "",
"Exploring": "",
"Export": "Ekspordi",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "Järelküsimus: {{question}}",
"Followed instructions perfectly": "Järgis juhiseid täiuslikult",
"for placeholders": "kohatäidete jaoks",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "Hangi teave {{name}} kohta kasutajaliideses",
"Get started": "Alusta",
"Get started with {{WEBUI_NAME}}": "Alusta {{WEBUI_NAME}} kasutamist",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Globaalne",
"Good Response": "Hea vastus",
"Google": "Google",
@@ -1118,6 +1126,8 @@
"Height": "Kõrgus",
"Hello, {{name}}": "Tere, {{name}}",
"Help": "Abi",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "Aidake kogukonnal avastada suurepäraseid mudeleid",
"Help us translate Open WebUI!": "",
"Hex Color": "Hex värv",
@@ -1148,6 +1158,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Pilt",
"Image Generation": "Pildi genereerimine",
"Image Max Compression Size": "Pildi maksimaalne tihendamise suurus",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "Sisendvõti (nt text, unet_name, steps)",
"Input needed": "",
"Input Variables": "Sisendmuutujad",
- "Insert": "Sisesta",
"Insert into note": "",
"Instructions": "",
"Integrations": "Integratsioonid",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Korraga saab alla laadida maksimaalselt 3 mudelit. Palun proovige hiljem uuesti.",
"May": "Mai",
"MBR": "MBR",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "MCP tugi on eksperimentaalne ja selle spetsifikatsioon muutub sageli, mis võib põhjustada ühildumatusi. OpenAPI spetsifikatsiooni tuge hooldab otseselt Open WebUI meeskond, muutes selle ühilduvuse jaoks usaldusväärsemaks valikuks.",
"Medium": "Keskmine",
"Member removed successfully": "Liige edukalt eemaldatud",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "Oktoober",
+ "of a website's sticky header": "",
"Off": "Väljas",
"Okay, Let's Go!": "Hea küll, lähme!",
"OLED Dark": "OLED tume",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "OpenAI API võti on nõutav.",
"OpenAI API settings updated": "OpenAI API seaded uuendatud",
"OpenAI URL/Key required.": "OpenAI URL/võti on nõutav.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "OpenAPI spetsifikatsioon",
"openapi.json URL or Path": "openapi.json URL või tee",
"optional": "valikuline",
@@ -1610,6 +1619,7 @@
"out of": "",
"Output": "Väljund",
"OUTPUT": "VÄLJUND",
+ "Overcome procrastination": "",
"Overview": "Ülevaade",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -3056,6 +3066,8 @@
"Show Files": "Kuva failid",
"Show Hidden Files": "",
"Show image preview": "Kuva pildi eelvaade",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Kuva mudel",
"Show more": "",
"Show or switch the current model.": "",
@@ -3169,6 +3181,8 @@
"Task List": "Ülesannete nimekiri",
"Tasks": "Ülesanded",
"tasks completed": "",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Räägi meile lähemalt:",
"Temporary": "",
"Temporary Chat": "Ajutine vestlus",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "Sisestage Hugging Face Resolve (Allalaadimise) URL",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "Oi-oi! Vastusega oli probleem.",
+ "Unarchive": "",
"Unarchive Chat": "Eemalda vestlus arhiivist",
"Unassigned": "",
"Underline": "Allakriipsutus",
@@ -3412,6 +3427,7 @@
"Visible": "Nähtav",
"Visible to all users": "Nähtav kõigile kasutajatele",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "Hääl",
"Voice Input": "Häälsisend",
"Voice mode": "Häälrežiim",
@@ -3442,6 +3458,7 @@
"Weekly": "",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "Mida te püüate saavutada?",
"What are you working on?": "Millega te tegelete?",
"What is NOT shared:": "Mida EI jagata:",
diff --git a/src/lib/i18n/locales/eu-ES/translation.json b/src/lib/i18n/locales/eu-ES/translation.json
index cb8940a2b856..bd3598a1243d 100644
--- a/src/lib/i18n/locales/eu-ES/translation.json
+++ b/src/lib/i18n/locales/eu-ES/translation.json
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Bertsio berri bat (v{{LATEST_VERSION}}) eskuragarri dago orain.",
"A private conversation between you and selected users": "Zure eta hautatutako erabiltzaileen arteko elkarrizketa pribatua",
"a user": "erabiltzaile bat",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Onartu osatze automatikoa\nJoan prompt-aren aldagaira",
"Access": "Sarbidea",
"Access Control": "Sarbide Kontrola",
@@ -343,6 +344,7 @@
"Chat Menu": "Txataren menua",
"Chat moved successfully": "Txata ongi lekuz aldatu da",
"Chat Permissions": "Txat Baimenak",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "Txata partekatzeari ongi utzi zaio.",
"Chat Uploads": "Txatera kargatutako fitxategiak",
"Chat Variables": "Txat-aldagaiak",
@@ -494,6 +496,7 @@
"Could not check for updates": "Ezin izan dira eguneraketak egiaztatu",
"Could not load release notes.": "Ezin izan dira bertsio-oharrak kargatu.",
"Could not read file.": "Ezin izan da fitxategia irakurri.",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "Ez duzu zure hizkuntza aurkitu?",
"CPU": "CPUa",
"Create": "Sortu",
@@ -919,6 +922,8 @@
"Experience": "Erabilera-esperientzia",
"Experimental": "Esperimentala",
"Explain": "Azaldu",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "Aztertuta",
"Exploring": "Aztertzen",
"Export": "Esportatu",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "Jarraipen-galdera: {{question}}",
"Followed instructions perfectly": "Jarraibideak perfektuki jarraitu ditu",
"for placeholders": "leku-marketarako",
+ "for what to do with my kids' art": "",
"Fork": "Sortu adar berria",
"Fork chat": "Sortu txataren adar berria",
"Fork the current chat branch into a new chat.": "Sortu txat berri bat uneko txat-adarretik.",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "Lortu {{name}} modeloari buruzko informazioa interfazean",
"Get started": "Hasi",
"Get started with {{WEBUI_NAME}}": "Hasi {{WEBUI_NAME}}-rekin",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Globala",
"Good Response": "Erantzun Ona",
"Google": "Google",
@@ -1118,6 +1126,8 @@
"Height": "Altuera",
"Hello, {{name}}": "Kaixo, {{name}}",
"Help": "Laguntza",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "Lagundu komunitateari modelo bikainak aurkitzen",
"Help us translate Open WebUI!": "Lagundu Open WebUI itzultzen!",
"Hex Color": "Hex Kolorea",
@@ -1148,6 +1158,7 @@
"Identity audit": "Identitate-auditoria",
"Idle only": "Inaktibo daudenean soilik",
"Idle Timeout": "Inaktibitatearen denbora-muga",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Irudia",
"Image Generation": "Irudiak sortzea",
"Image Max Compression Size": "Konprimitutako irudiaren gehieneko tamaina",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "Sarrerako gakoa (adib. text, unet_name, steps)",
"Input needed": "Erabiltzailearen sarrera behar da",
"Input Variables": "Sarrerako aldagaiak",
- "Insert": "Txertatu",
"Insert into note": "Txertatu oharrean",
"Instructions": "Jarraibideak",
"Integrations": "Integrazioak",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Gehienez 3 modelo deskarga daitezke aldi berean. Saiatu berriro geroago.",
"May": "Maiatza",
"MBR": "KIDE",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "MCP euskarria esperimentala da eta haren espezifikazioa maiz aldatzen da, eta horrek bateraezintasunak eragin ditzake. OpenAPI espezifikazioaren euskarria Open WebUI taldeak zuzenean mantentzen du; beraz, bateragarritasunerako aukera fidagarriagoa da.",
"Medium": "Ertaina",
"Member removed successfully": "Kidea ongi kendu da",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "OAuth zerbitzariaren URLa",
"OAuth session disconnected": "OAuth saioa deskonektatu da",
"October": "Urria",
+ "of a website's sticky header": "",
"Off": "Itzalita",
"Okay, Let's Go!": "Ados, Goazen!",
"OLED Dark": "OLED iluna",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "OpenAI API gakoa beharrezkoa da.",
"OpenAI API settings updated": "OpenAI API ezarpenak eguneratu dira",
"OpenAI URL/Key required.": "OpenAI URL/Gakoa beharrezkoa da.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "OpenAPI espezifikazioa",
"openapi.json URL or Path": "openapi.json URLa edo bidea",
"optional": "aukerakoa",
@@ -1610,6 +1619,7 @@
"out of": "/",
"Output": "Irteera",
"OUTPUT": "IRTEERA",
+ "Overcome procrastination": "",
"Overview": "Ikuspegi orokorra",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "PaddleOCR-vl APIaren URLa behar da.",
@@ -3056,6 +3066,8 @@
"Show Files": "Erakutsi fitxategiak",
"Show Hidden Files": "Erakutsi ezkutuko fitxategiak",
"Show image preview": "Erakutsi irudiaren aurrebista",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Erakutsi modeloa",
"Show more": "Erakutsi gehiago",
"Show or switch the current model.": "Erakutsi edo aldatu uneko modeloa.",
@@ -3169,6 +3181,8 @@
"Task List": "Ataza-zerrenda",
"Tasks": "Atazak",
"tasks completed": "ataza osatuta",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Kontatu gehiago:",
"Temporary": "Aldi baterakoa",
"Temporary Chat": "Behin-behineko txata",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "Idatzi Hugging Face Resolve (Deskarga) URLa",
"Type your answer": "Idatzi zure erantzuna",
"Uh-oh! There was an issue with the response.": "Ene! Arazo bat izan da erantzunarekin.",
+ "Unarchive": "",
"Unarchive Chat": "Desartxibatu txata",
"Unassigned": "Esleitu gabe",
"Underline": "Azpimarra",
@@ -3412,6 +3427,7 @@
"Visible": "Ikusgai",
"Visible to all users": "Erabiltzaile guztientzat ikusgai",
"Visual": "Ikusizkoa",
+ "vocabulary for a college entrance exam": "",
"Voice": "Ahotsa",
"Voice Input": "Ahots sarrera",
"Voice mode": "Ahots-modua",
@@ -3442,6 +3458,7 @@
"Weekly": "Astero",
"Weekly at": "Astero, ordua:",
"Welcome to your AI home.": "Ongi etorri zure AA etxera.",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "Zer lortu nahi duzu?",
"What are you working on?": "Zertan ari zara lanean?",
"What is NOT shared:": "Partekatzen EZ dena:",
diff --git a/src/lib/i18n/locales/fa-IR/translation.json b/src/lib/i18n/locales/fa-IR/translation.json
index 3d897bdc94f7..06ea6b014938 100644
--- a/src/lib/i18n/locales/fa-IR/translation.json
+++ b/src/lib/i18n/locales/fa-IR/translation.json
@@ -6,36 +6,36 @@
"[Today at] h:mm A": "[امروز در] h:mm A",
"[Yesterday at] h:mm A": "[دیروز در] h:mm A",
"{{ models }}": "{{ models }}",
- "{{count}} added lines_one": "",
- "{{count}} added lines_other": "",
+ "{{count}} added lines_one": "{{count}} خط اضافهشده",
+ "{{count}} added lines_other": "{{count}} خط اضافهشده",
"{{COUNT}} Available Skills": "",
"{{COUNT}} Available Tools": "{{COUNT}} ابزار موجود",
"{{COUNT}} characters": "{{COUNT}} نویسه",
"{{COUNT}} document(s) selected.": "",
"{{COUNT}} extracted lines": "{{COUNT}} خط استخراج شده",
- "{{count}} files_one": "",
- "{{count}} files_other": "",
+ "{{count}} files_one": "{{count}} فایل",
+ "{{count}} files_other": "{{count}} فایل",
"{{COUNT}} files": "",
- "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "",
- "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "",
- "{{count}} filters_one": "",
- "{{count}} filters_other": "",
- "{{count}} groups_one": "",
- "{{count}} groups_other": "",
+ "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "{{count}} فایل انتخاب شده است. فقط فایلهای جدید و تغییریافته بارگذاری میشوند. فایلهای حذفشده از مقصد نیز حذف میشوند. ساختار پوشهها در مقصد بازتاب داده میشود. ادامه میدهید؟",
+ "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "{{count}} فایل انتخاب شده است. فقط فایلهای جدید و تغییریافته بارگذاری میشوند. فایلهای حذفشده از مقصد نیز حذف میشوند. ساختار پوشهها در مقصد بازتاب داده میشود. ادامه میدهید؟",
+ "{{count}} filters_one": "{{count}} فیلتر",
+ "{{count}} filters_other": "{{count}} فیلتر",
+ "{{count}} groups_one": "{{count}} گروه",
+ "{{count}} groups_other": "{{count}} گروه",
"{{COUNT}} hidden lines": "{{COUNT}} خط پنهان",
"{{COUNT}} members": "",
- "{{count}} of {{total}} accessible_one": "",
- "{{count}} of {{total}} accessible_other": "",
+ "{{count}} of {{total}} accessible_one": "{{count}} مورد از {{total}} مورد قابل دسترسی است",
+ "{{count}} of {{total}} accessible_other": "{{count}} مورد از {{total}} مورد قابل دسترسی است",
"{{COUNT}} pipeline(s) selected": "",
- "{{count}} removed lines_one": "",
- "{{count}} removed lines_other": "",
+ "{{count}} removed lines_one": "{{count}} خط حذفشده",
+ "{{count}} removed lines_other": "{{count}} خط حذفشده",
"{{COUNT}} Replies": "{{COUNT}} پاسخ",
"{{COUNT}} Rows": "",
- "{{count}} selected_one": "",
- "{{count}} selected_other": "",
+ "{{count}} selected_one": "{{count}} مورد انتخابشده",
+ "{{count}} selected_other": "{{count}} مورد انتخابشده",
"{{COUNT}} Sources": "{{COUNT}} منبع",
- "{{count}} users_one": "",
- "{{count}} users_other": "",
+ "{{count}} users_one": "{{count}} کاربر",
+ "{{count}} users_other": "{{count}} کاربر",
"{{COUNT}} words": "{{COUNT}} کلمه",
"{{COUNT}}d_time_ago": "",
"{{COUNT}}h_time_ago": "",
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "نسخه جدید (v{{LATEST_VERSION}}) در دسترس است.",
"A private conversation between you and selected users": "",
"a user": "یک کاربر",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "پذیرش تولید خودکار تکمیل\nپرش به متغیر پرامپت",
"Access": "دسترسی",
"Access Control": "کنترل دسترسی",
@@ -343,6 +344,7 @@
"Chat Menu": "",
"Chat moved successfully": "چت با موفقیت منتقل شد",
"Chat Permissions": "مجوزهای گفتگو",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "",
"Chat Uploads": "",
"Chat Variables": "",
@@ -428,8 +430,8 @@
"Comparing with knowledge base...": "",
"Completions": "تکمیل\u200cها",
"Compress uploaded images before sending or storage.": "",
- "Computing checksums ({{count}} files)_one": "",
- "Computing checksums ({{count}} files)_other": "",
+ "Computing checksums ({{count}} files)_one": "در حال محاسبهٔ مجموع کنترلی ({{count}} فایل)",
+ "Computing checksums ({{count}} files)_other": "در حال محاسبهٔ مجموع کنترلی ({{count}} فایل)",
"Config imported successfully": "پیکربندی با موفقیت وارد شد",
"Configure": "پیکربندی",
"Confirm": "تایید",
@@ -494,6 +496,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "ایجاد",
@@ -899,10 +902,10 @@
"Event names may change as Open WebUI evolves. Use broad patterns like user.* for integrations that should continue across new related events.": "",
"Event title": "",
"Event updated": "",
- "Every {{count}} hours_one": "",
- "Every {{count}} hours_other": "",
- "Every {{count}} minutes_one": "",
- "Every {{count}} minutes_other": "",
+ "Every {{count}} hours_one": "هر {{count}} ساعت",
+ "Every {{count}} hours_other": "هر {{count}} ساعت",
+ "Every {{count}} minutes_one": "هر {{count}} دقیقه",
+ "Every {{count}} minutes_other": "هر {{count}} دقیقه",
"Every minute": "",
"Example": "",
"Example: (&(objectClass=inetOrgPerson)(uid=%s))": "مثال: (&(objectClass=inetOrgPerson)(uid=%s))",
@@ -919,6 +922,8 @@
"Experience": "",
"Experimental": "آزمایشی",
"Explain": "توضیح",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "",
"Exploring": "",
"Export": "خروجی گرفتن",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "",
"Followed instructions perfectly": "دستورالعمل ها را کاملا دنبال کرد",
"for placeholders": "",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "دریافت اطلاعات درباره {{name}} در رابط کاربری",
"Get started": "شروع کنید",
"Get started with {{WEBUI_NAME}}": "شروع کار با {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "سراسری",
"Good Response": "پاسخ خوب",
"Google": "",
@@ -1118,6 +1126,8 @@
"Height": "ارتفاع",
"Hello, {{name}}": "سلام، {{name}}",
"Help": "کمک",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "",
"Help us translate Open WebUI!": "",
"Hex Color": "رنگ هگز",
@@ -1148,6 +1158,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "تصویر",
"Image Generation": "تولید تصویر",
"Image Max Compression Size": "حداکثر اندازه فشرده\u200cسازی تصویر",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "کلید ورودی (مثلاً text, unet_name, steps)",
"Input needed": "",
"Input Variables": "متغیرهای ورودی",
- "Insert": "درج",
"Insert into note": "",
"Instructions": "",
"Integrations": "یکپارچه\u200cسازی\u200cها",
@@ -1300,8 +1310,8 @@
"Mark as unread": "",
"Markdown": "مارک\u200cداون",
"Market": "",
- "Matching tabs: {{count}}_one": "",
- "Matching tabs: {{count}}_other": "",
+ "Matching tabs: {{count}}_one": "زبانههای منطبق: {{count}}",
+ "Matching tabs: {{count}}_other": "زبانههای منطبق: {{count}}",
"Max Snippets": "",
"Max tokens to retrieve (1024-32768, default 8192)": "",
"Maximum extra snippets returned per result. Set to 0 to disable them.": "",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "حداکثر 3 مدل را می توان به طور همزمان دانلود کرد. لطفاً بعداً دوباره امتحان کنید.",
"May": "ماهی",
"MBR": "",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "پشتیبانی MCP آزمایشی است و مشخصات آن اغلب تغییر می\u200cکند، که می\u200cتواند منجر به ناسازگاری شود. پشتیبانی از مشخصات OpenAPI مستقیماً توسط تیم Open WebUI نگهداری می\u200cشود و آن را به گزینه قابل اعتماد\u200cتری برای سازگاری تبدیل می\u200cکند.",
"Medium": "متوسط",
"Member removed successfully": "",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "اکتبر",
+ "of a website's sticky header": "",
"Off": "خاموش",
"Okay, Let's Go!": "باشه، بزن بریم!",
"OLED Dark": "OLED تیره",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "مقدار کلید OpenAI API مورد نیاز است.",
"OpenAI API settings updated": "تنظیمات API اوپن\u200cای\u200cآی به\u200cروز شد",
"OpenAI URL/Key required.": "URL/Key OpenAI مورد نیاز است.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "مشخصات OpenAPI",
"openapi.json URL or Path": "آدرس URL یا مسیر openapi.json",
"optional": "",
@@ -1610,6 +1619,7 @@
"out of": "",
"Output": "",
"OUTPUT": "خروجی",
+ "Overcome procrastination": "",
"Overview": "نمای کلی",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -1749,8 +1759,8 @@
"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.": "احتمال تولید محتوای بی\u200cمعنی را کاهش می\u200cدهد. مقدار بالاتر (مثلاً 100) پاسخ\u200cهای متنوع\u200cتری می\u200cدهد، در حالی که مقدار پایین\u200cتر (مثلاً 10) محافظه\u200cکارانه\u200cتر خواهد بود.",
"Reference Chats": "چت\u200cهای مرجع",
"Refresh": "",
- "Refresh requested: {{count}} terminal(s)_one": "",
- "Refresh requested: {{count}} terminal(s)_other": "",
+ "Refresh requested: {{count}} terminal(s)_one": "درخواست تازهسازی برای {{count}} ترمینال ارسال شد",
+ "Refresh requested: {{count}} terminal(s)_other": "درخواست تازهسازی برای {{count}} ترمینال ارسال شد",
"Refresh Terminals": "",
"Refreshing...": "",
"Refused when it shouldn't have": "رد شده زمانی که باید نباشد",
@@ -1779,8 +1789,8 @@
"Remove Pinned Model": "",
"Remove prompt suggestion": "",
"Remove Selected Model": "",
- "Removing {{count}} stale files..._one": "",
- "Removing {{count}} stale files..._other": "",
+ "Removing {{count}} stale files..._one": "در حال حذف {{count}} فایل منسوخشده...",
+ "Removing {{count}} stale files..._other": "در حال حذف {{count}} فایل منسوخشده...",
"Rename": "تغییر نام",
"Renamed to {{name}}": "",
"Reorder": "",
@@ -3056,6 +3066,8 @@
"Show Files": "",
"Show Hidden Files": "",
"Show image preview": "نمایش پیش\u200cنمایش تصویر",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "نمایش مدل",
"Show more": "",
"Show or switch the current model.": "",
@@ -3109,8 +3121,8 @@
"Start of the channel": "آغاز کانال",
"Start Tag": "تگ شروع",
"Start the chat to use this terminal.": "",
- "Starting in {{count}} minutes_one": "",
- "Starting in {{count}} minutes_other": "",
+ "Starting in {{count}} minutes_one": "شروع تا {{count}} دقیقهٔ دیگر",
+ "Starting in {{count}} minutes_other": "شروع تا {{count}} دقیقهٔ دیگر",
"Starting in 1 minute": "",
"Starting kernel...": "",
"Starting now": "",
@@ -3169,6 +3181,8 @@
"Task List": "لیست وظایف",
"Tasks": "وظایف",
"tasks completed": "",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "بیشتر بگویید:",
"Temporary": "",
"Temporary Chat": "چت موقت",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "مقدار URL دانلود (Resolve) Hugging Face را وارد کنید",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "اوه! مشکلی در پاسخ وجود داشت.",
+ "Unarchive": "",
"Unarchive Chat": "خارج کردن چت از آرشیو",
"Unassigned": "",
"Underline": "زیر خط",
@@ -3412,6 +3427,7 @@
"Visible": "",
"Visible to all users": "",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "صوت",
"Voice Input": "ورودی صوتی",
"Voice mode": "حالت صوتی",
@@ -3442,6 +3458,7 @@
"Weekly": "",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "به دنبال دستیابی به چه هدفی هستید؟",
"What are you working on?": "روی چه چیزی کار می\u200cکنید؟",
"What is NOT shared:": "",
@@ -3461,7 +3478,7 @@
"Workspace Models": "",
"Workspace Permissions": "مجوزهای محیط کار",
"Write": "نوشتن",
- "Write a summary in 50 words that summarizes {{topic}}.": "خلاصه ای در 50 کلمه بنویسید که [موضوع یا کلمه کلیدی] را خلاصه کند.",
+ "Write a summary in 50 words that summarizes {{topic}}.": "خلاصهای ۵۰ کلمهای دربارهٔ {{topic}} بنویسید.",
"Write something...": "چیزی بنویسید...",
"Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "محتوای پرامپت سیستمی مدل خود را اینجا بنویسید\nمثال: شما ماریو از بازی Super Mario Bros هستید و به عنوان دستیار عمل می\u200cکنید.",
"Yahoo": "",
diff --git a/src/lib/i18n/locales/fi-FI/translation.json b/src/lib/i18n/locales/fi-FI/translation.json
index 5a8bd7a70ebb..1db6d27b7099 100644
--- a/src/lib/i18n/locales/fi-FI/translation.json
+++ b/src/lib/i18n/locales/fi-FI/translation.json
@@ -5,7 +5,7 @@
"[Last] dddd [at] h:mm A": "[Viimeisin] dddd h:mm A",
"[Today at] h:mm A": "[Tänään] h:mm A",
"[Yesterday at] h:mm A": "[Eilen] h:mm A",
- "{{ models }}": "{{ mallit }}",
+ "{{ models }}": "{{ models }}",
"{{count}} added lines_one": "",
"{{count}} added lines_other": "",
"{{COUNT}} Available Skills": "{{COUNT}} taitoa käytettävissä",
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Uusi versio (v{{LATEST_VERSION}}) on nyt saatavilla.",
"A private conversation between you and selected users": "Yksityinen keskustelu sinun ja valittujen käyttäjien välillä",
"a user": "käyttäjä",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Hyväksy automaattiset täydennykset\n Siirry kehotteen muuttujaan",
"Access": "Pääsy",
"Access Control": "Käyttöoikeuksien hallinta",
@@ -343,6 +344,7 @@
"Chat Menu": "",
"Chat moved successfully": "Keskustelu siirrettiin onnistuneesti",
"Chat Permissions": "Keskustelun käyttöoikeudet",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "Keskustelun jako lopetettiin onnistuneesti",
"Chat Uploads": "Keskustelun lataukset",
"Chat Variables": "Keskustelu muuttujat",
@@ -494,6 +496,7 @@
"Could not check for updates": "",
"Could not load release notes.": "Julkaisutietojen lataaminen epäonnistui.",
"Could not read file.": "Tiedostoa ei voitu lukea.",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "CPU",
"Create": "Luo",
@@ -919,6 +922,8 @@
"Experience": "",
"Experimental": "Kokeellinen",
"Explain": "Selitä",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "Tutkittu",
"Exploring": "Tutkii",
"Export": "Vie",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "Jatkokysymys: {{question}}",
"Followed instructions perfectly": "Noudatti ohjeita täydellisesti",
"for placeholders": "",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "Hae tietoja {{name}} -nimestä käyttöliittymässä",
"Get started": "Aloita",
"Get started with {{WEBUI_NAME}}": "Aloita käyttämään {{WEBUI_NAME}}:iä",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Yleinen",
"Good Response": "Hyvä vastaus",
"Google": "",
@@ -1118,6 +1126,8 @@
"Height": "Korkeus",
"Hello, {{name}}": "Hei, {{name}}",
"Help": "Ohje",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "Auta yhteisöä löytämään upeita malleja",
"Help us translate Open WebUI!": "",
"Hex Color": "Heksadesimaaliväri",
@@ -1148,6 +1158,7 @@
"Identity audit": "Identiteetin tarkastus",
"Idle only": "Vain lepotila",
"Idle Timeout": "Aikakatkaisu",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Kuva",
"Image Generation": "Kuvagenerointi",
"Image Max Compression Size": "Kuvan enimmäispakkauskoko",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "Syötteen arvo (esim. text, unet_namme, steps)",
"Input needed": "",
"Input Variables": "Syötteen muuttujat",
- "Insert": "Lisää",
"Insert into note": "Lisää muistiinpanoon",
"Instructions": "Ohjeistukset",
"Integrations": "Integraatiot",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Enintään 3 mallia voidaan ladata samanaikaisesti. Yritä myöhemmin uudelleen.",
"May": "toukokuu",
"MBR": "MBR",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "MCP-tuki on kokeellinen ja sen määritykset muuttuvat usein, mikä voi johtaa yhteensopivuus ongelmiin. OpenAPI-määritysten tuesta vastaa suoraan Open WebUI -tiimi, joten se on luotettavampi vaihtoehto yhteensopivuuden kannalta.",
"Medium": "Keskitaso",
"Member removed successfully": "Jäsen poistettu onnistuneesti",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "OAuth palvelimen verkko-osoite",
"OAuth session disconnected": "OAuth-istunto katkaistu",
"October": "lokakuu",
+ "of a website's sticky header": "",
"Off": "Ei käytössä",
"Okay, Let's Go!": "Okei, mennään!",
"OLED Dark": "OLED-tumma",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "OpenAI API -avain vaaditaan.",
"OpenAI API settings updated": "OpenAI API -asetukset päivitetty",
"OpenAI URL/Key required.": "OpenAI URL/avain vaaditaan.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "OpenAPI Spec",
"openapi.json URL or Path": "openapi.json verkko-osoite tai polku",
"optional": "vaihtoehtoinen",
@@ -1610,6 +1619,7 @@
"out of": "/",
"Output": "Tuloste",
"OUTPUT": "TULOSTE",
+ "Overcome procrastination": "",
"Overview": "Yleiskatsaus",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "PaddleOCR-vl API verkko-osoite vaaditaan.",
@@ -3056,6 +3066,8 @@
"Show Files": "Näytä tiedostot",
"Show Hidden Files": "Näytä piilotetut tiedostot",
"Show image preview": "Näytä kuvan esikatselu",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Näytä malli",
"Show more": "Näytä lisää",
"Show or switch the current model.": "",
@@ -3169,6 +3181,8 @@
"Task List": "Tehtävälista",
"Tasks": "Tehtävät",
"tasks completed": "Tehtävät suoritettu",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Kerro lisää:",
"Temporary": "",
"Temporary Chat": "Väliaikainen keskustelu",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "Kirjoita Hugging Face -resolve-latausosoite",
"Type your answer": "Kirjoita vastauksesi",
"Uh-oh! There was an issue with the response.": "Voi ei! Vastauksessa ilmeni ongelma.",
+ "Unarchive": "",
"Unarchive Chat": "Pura keskustelun arkistointi",
"Unassigned": "Ei määritetty",
"Underline": "Alleviivaus",
@@ -3412,6 +3427,7 @@
"Visible": "Näkyvillä",
"Visible to all users": "Näkyy kaikille käyttäjille",
"Visual": "Visuaalinen",
+ "vocabulary for a college entrance exam": "",
"Voice": "Ääni",
"Voice Input": "Äänitulolaitteen käyttö",
"Voice mode": "Puhetila",
@@ -3442,6 +3458,7 @@
"Weekly": "Viikoittain",
"Weekly at": "Viikoittain",
"Welcome to your AI home.": "Tervetuloa tekoälykotiisi.",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "Mitä yrität saavuttaa?",
"What are you working on?": "Mitä olet työskentelemässä?",
"What is NOT shared:": "Mitä EI jaeta:",
diff --git a/src/lib/i18n/locales/fil-PH/translation.json b/src/lib/i18n/locales/fil-PH/translation.json
index c1e962d09c06..839176801280 100644
--- a/src/lib/i18n/locales/fil-PH/translation.json
+++ b/src/lib/i18n/locales/fil-PH/translation.json
@@ -72,6 +72,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "",
"A private conversation between you and selected users": "",
"a user": "",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "",
"Access": "",
"Access Control": "",
@@ -344,6 +345,7 @@
"Chat Menu": "",
"Chat moved successfully": "",
"Chat Permissions": "",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "",
"Chat Uploads": "",
"Chat Variables": "",
@@ -495,6 +497,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "Lumikha",
@@ -920,6 +923,8 @@
"Experience": "",
"Experimental": "",
"Explain": "",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "",
"Exploring": "",
"Export": "I-export",
@@ -1047,6 +1052,7 @@
"Follow up: {{question}}": "",
"Followed instructions perfectly": "",
"for placeholders": "",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1094,6 +1100,8 @@
"Get information on {{name}} in the UI": "",
"Get started": "Magsimula",
"Get started with {{WEBUI_NAME}}": "",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "",
"Good Response": "",
"Google": "",
@@ -1119,6 +1127,8 @@
"Height": "",
"Hello, {{name}}": "",
"Help": "Tulong",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "",
"Help us translate Open WebUI!": "",
"Hex Color": "",
@@ -1149,6 +1159,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Larawan",
"Image Generation": "",
"Image Max Compression Size": "",
@@ -1181,7 +1192,6 @@
"Input Key (e.g. text, unet_name, steps)": "",
"Input needed": "",
"Input Variables": "",
- "Insert": "",
"Insert into note": "",
"Instructions": "Mga Tagubilin",
"Integrations": "",
@@ -1310,7 +1320,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "",
"May": "Mayo",
"MBR": "",
- "MCP": "",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "",
"Medium": "",
"Member removed successfully": "",
@@ -1549,6 +1558,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "Oktubre",
+ "of a website's sticky header": "",
"Off": "Naka-off",
"Okay, Let's Go!": "",
"OLED Dark": "",
@@ -1598,7 +1608,6 @@
"OpenAI API Key is required.": "",
"OpenAI API settings updated": "",
"OpenAI URL/Key required.": "",
- "OpenAPI": "",
"OpenAPI Spec": "",
"openapi.json URL or Path": "",
"optional": "",
@@ -1611,6 +1620,7 @@
"out of": "",
"Output": "",
"OUTPUT": "",
+ "Overcome procrastination": "",
"Overview": "Pangkalahatang-tanaw",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -3058,6 +3068,8 @@
"Show Files": "",
"Show Hidden Files": "",
"Show image preview": "",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "",
"Show more": "",
"Show or switch the current model.": "",
@@ -3172,6 +3184,8 @@
"Task List": "",
"Tasks": "Mga Gawain",
"tasks completed": "",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "",
"Temporary": "",
"Temporary Chat": "",
@@ -3307,6 +3321,7 @@
"Type Hugging Face Resolve (Download) URL": "",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "",
+ "Unarchive": "",
"Unarchive Chat": "",
"Unassigned": "",
"Underline": "Naka-salungguhit",
@@ -3415,6 +3430,7 @@
"Visible": "Nakikita",
"Visible to all users": "",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "Boses",
"Voice Input": "",
"Voice mode": "",
@@ -3445,6 +3461,7 @@
"Weekly": "Linggu-linggo",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "",
"What are you working on?": "Ano ang ginagawa mo?",
"What is NOT shared:": "",
diff --git a/src/lib/i18n/locales/fo-FO/translation.json b/src/lib/i18n/locales/fo-FO/translation.json
index 9cb6dd3096ea..5b22dd8cf847 100644
--- a/src/lib/i18n/locales/fo-FO/translation.json
+++ b/src/lib/i18n/locales/fo-FO/translation.json
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Ein nýggj útgáva (v{{LATEST_VERSION}}) er nú tøk.",
"A private conversation between you and selected users": "Ein privat samrøða millum teg og valdar brúkarar",
"a user": "ein brúkari",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Góðtak sjálvvirkandi fullføring\nFar til prompt-variabul",
"Access": "Atgongd",
"Access Control": "Atgongdarstýring",
@@ -343,6 +344,7 @@
"Chat Menu": "",
"Chat moved successfully": "Kjattið varð flutt",
"Chat Permissions": "Kjattloyvi",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "Kjattið er ikki longur deilt.",
"Chat Uploads": "",
"Chat Variables": "Kjattvariablar",
@@ -494,6 +496,7 @@
"Could not check for updates": "",
"Could not load release notes.": "Útgávuviðmerkingarnar kundu ikki lesast.",
"Could not read file.": "Fílan kundi ikki lesast.",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "CPU",
"Create": "Stovna",
@@ -919,6 +922,8 @@
"Experience": "",
"Experimental": "Royndarstig",
"Explain": "Greið frá",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "Kannað",
"Exploring": "Kannar",
"Export": "Flyt út",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "Uppfylging: {{question}}",
"Followed instructions perfectly": "Fylgdi vegleiðingunum fullkomiliga",
"for placeholders": "til plásshaldarar",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "Fá upplýsingar um {{name}} í markamótinum",
"Get started": "Byrja",
"Get started with {{WEBUI_NAME}}": "Byrja við {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Altumfevnandi",
"Good Response": "Gott svar",
"Google": "Google",
@@ -1118,6 +1126,8 @@
"Height": "Hædd",
"Hello, {{name}}": "Hey, {{name}}",
"Help": "Hjálp",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "Hjálp samfelagnum at finna góð modell",
"Help us translate Open WebUI!": "",
"Hex Color": "Hex-litur",
@@ -1148,6 +1158,7 @@
"Identity audit": "Grannskoðan av samleika",
"Idle only": "Bara tá óvirkið",
"Idle Timeout": "Óvirknistíðaravmarking",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Mynd",
"Image Generation": "Myndagerð",
"Image Max Compression Size": "Mesta stødd til myndatýsting",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "Inntakslykil (t.d. text, unet_name, steps)",
"Input needed": "",
"Input Variables": "Inntaksvariablar",
- "Insert": "Set inn",
"Insert into note": "Set inn í viðmerking",
"Instructions": "Vegleiðingar",
"Integrations": "Samantvinningar",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Í mesta lagi 3 modell kunnu takast niður samstundis. Royn aftur seinni.",
"May": "mai",
"MBR": "MBR",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "MCP-stuðul er á royndarstigi, og forskriftin broytist ofta, sum kann geva ósambærileika. Stuðulin til OpenAPI-forskriftina verður røktur beinleiðis av Open WebUI-toyminum og er tí tryggari viðvíkjandi sambærileika.",
"Medium": "Miðal",
"Member removed successfully": "Limurin varð tikin burtur",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "URL til OAuth-tænastu",
"OAuth session disconnected": "OAuth-setan varð loyst",
"October": "oktober",
+ "of a website's sticky header": "",
"Off": "Sløkt",
"Okay, Let's Go!": "Gott, lat okkum byrja!",
"OLED Dark": "OLED-myrkt",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "OpenAI API-lykil er kravdur.",
"OpenAI API settings updated": "OpenAI API-stillingar dagførdar",
"OpenAI URL/Key required.": "OpenAI URL/lykil er kravdur.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "OpenAPI-forskrift",
"openapi.json URL or Path": "URL ella leið til openapi.json",
"optional": "sjálvvalt",
@@ -1610,6 +1619,7 @@
"out of": "av",
"Output": "Úttak",
"OUTPUT": "ÚTTAK",
+ "Overcome procrastination": "",
"Overview": "Yvirlit",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "PaddleOCR-vl API-URL er kravt.",
@@ -3056,6 +3066,8 @@
"Show Files": "Vís fílur",
"Show Hidden Files": "",
"Show image preview": "Vís myndaforsýning",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Vís modell",
"Show more": "Vís meira",
"Show or switch the current model.": "",
@@ -3169,6 +3181,8 @@
"Task List": "Uppgávulisti",
"Tasks": "Uppgávur",
"tasks completed": "uppgávur lidnar",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Sig okkum meira:",
"Temporary": "",
"Temporary Chat": "Fyribils kjatt",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "Skriva Hugging Face Resolve-URL (niðurtøka)",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "Á nei! Ein trupulleiki var við svarinum.",
+ "Unarchive": "",
"Unarchive Chat": "Tak kjatt úr savninum",
"Unassigned": "Ikki tillutað",
"Underline": "Undirstriking",
@@ -3412,6 +3427,7 @@
"Visible": "Sjónligt",
"Visible to all users": "Sjónligt fyri allar brúkarar",
"Visual": "Visuelt",
+ "vocabulary for a college entrance exam": "",
"Voice": "Rødd",
"Voice Input": "Røddinnsláttur",
"Voice mode": "Røddarháttur",
@@ -3442,6 +3458,7 @@
"Weekly": "Vikuliga",
"Weekly at": "Vikuliga kl.",
"Welcome to your AI home.": "Vælkomin heim til títt AI.",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "Hvat roynir tú at røkka?",
"What are you working on?": "Hvat arbeiðir tú við?",
"What is NOT shared:": "Hetta verður IKKI deilt:",
diff --git a/src/lib/i18n/locales/fr-CA/translation.json b/src/lib/i18n/locales/fr-CA/translation.json
index db4757bfcab9..59e7d2510099 100644
--- a/src/lib/i18n/locales/fr-CA/translation.json
+++ b/src/lib/i18n/locales/fr-CA/translation.json
@@ -80,6 +80,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Une nouvelle version (v{{LATEST_VERSION}}) est disponible.",
"A private conversation between you and selected users": "",
"a user": "un utilisateur",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "",
"Access": "Accès",
"Access Control": "Contrôle d'accès",
@@ -352,6 +353,7 @@
"Chat Menu": "",
"Chat moved successfully": "",
"Chat Permissions": "Autorisations de la conversation",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "",
"Chat Uploads": "",
"Chat Variables": "",
@@ -504,6 +506,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "Créer",
@@ -931,6 +934,8 @@
"Experience": "",
"Experimental": "Expérimental",
"Explain": "Explique",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "",
"Exploring": "",
"Export": "Exportation",
@@ -1058,6 +1063,7 @@
"Follow up: {{question}}": "",
"Followed instructions perfectly": "A parfaitement suivi les instructions",
"for placeholders": "",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1105,6 +1111,8 @@
"Get information on {{name}} in the UI": "Obtenir des informations sur {{name}} dans l'interface utilisateur",
"Get started": "Démarrer",
"Get started with {{WEBUI_NAME}}": "Démarrez avec {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Globale",
"Good Response": "Bonne réponse",
"Google": "",
@@ -1130,6 +1138,8 @@
"Height": "",
"Hello, {{name}}": "Bonjour, {{name}}.",
"Help": "Aide",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "",
"Help us translate Open WebUI!": "",
"Hex Color": "Couleur Hex",
@@ -1160,6 +1170,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Image",
"Image Generation": "Génération d'images",
"Image Max Compression Size": "Taille maximale de compression d'image",
@@ -1192,7 +1203,6 @@
"Input Key (e.g. text, unet_name, steps)": "",
"Input needed": "",
"Input Variables": "Variables d'entrée",
- "Insert": "Insérer",
"Insert into note": "",
"Instructions": "",
"Integrations": "",
@@ -1322,7 +1332,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Un maximum de 3 modèles peut être téléchargé en même temps. Veuillez réessayer ultérieurement.",
"May": "Mai",
"MBR": "",
- "MCP": "",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "",
"Medium": "",
"Member removed successfully": "",
@@ -1561,6 +1570,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "Octobre",
+ "of a website's sticky header": "",
"Off": "Désactivé",
"Okay, Let's Go!": "D'accord, allons-y !",
"OLED Dark": "Noir OLED",
@@ -1610,7 +1620,6 @@
"OpenAI API Key is required.": "Une clé API OpenAI est requise.",
"OpenAI API settings updated": "Réglages de l'API OpenAI mis à jour",
"OpenAI URL/Key required.": "URL/Clé OpenAI requise.",
- "OpenAPI": "",
"OpenAPI Spec": "",
"openapi.json URL or Path": "URL ou chemin openapi.json",
"optional": "",
@@ -1623,6 +1632,7 @@
"out of": "",
"Output": "",
"OUTPUT": "SORTIE",
+ "Overcome procrastination": "",
"Overview": "Aperçu",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -3072,6 +3082,8 @@
"Show Files": "",
"Show Hidden Files": "",
"Show image preview": "Afficher l'aperçu de l'image",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Afficher le model",
"Show more": "",
"Show or switch the current model.": "",
@@ -3186,6 +3198,8 @@
"Task List": "",
"Tasks": "Tâches",
"tasks completed": "",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Dites-nous en plus à ce sujet : ",
"Temporary": "",
"Temporary Chat": "conversation temporaire",
@@ -3321,6 +3335,7 @@
"Type Hugging Face Resolve (Download) URL": "Entrez l'URL de Téléchargement Hugging Face Resolve",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "Oh! Un problème est survenu avec la réponse.",
+ "Unarchive": "",
"Unarchive Chat": "Désarchiver la conversation",
"Unassigned": "",
"Underline": "",
@@ -3429,6 +3444,7 @@
"Visible": "",
"Visible to all users": "",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "Voix",
"Voice Input": "Saisie vocale",
"Voice mode": "Mode vocal",
@@ -3459,6 +3475,7 @@
"Weekly": "",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "Que cherchez-vous à accomplir ?",
"What are you working on?": "Sur quoi travaillez-vous ?",
"What is NOT shared:": "",
diff --git a/src/lib/i18n/locales/fr-FR/translation.json b/src/lib/i18n/locales/fr-FR/translation.json
index c48b2a117367..b9a6b546a28f 100644
--- a/src/lib/i18n/locales/fr-FR/translation.json
+++ b/src/lib/i18n/locales/fr-FR/translation.json
@@ -6,87 +6,88 @@
"[Today at] h:mm A": "[Aujourd'hui à] H[h]mm",
"[Yesterday at] h:mm A": "[Hier à] H[h]mm",
"{{ models }}": "{{ models }}",
- "{{count}} added lines_one": "",
- "{{count}} added lines_many": "",
- "{{count}} added lines_other": "",
- "{{COUNT}} Available Skills": "",
+ "{{count}} added lines_one": "{{count}} ligne ajoutée",
+ "{{count}} added lines_many": "{{count}} lignes ajoutées",
+ "{{count}} added lines_other": "{{count}} lignes ajoutées",
+ "{{COUNT}} Available Skills": "{{COUNT}} compétences disponibles",
"{{COUNT}} Available Tools": "{{COUNT}} outils disponibles ",
"{{COUNT}} characters": "{{COUNT}} caractères",
- "{{COUNT}} document(s) selected.": "",
+ "{{COUNT}} document(s) selected.": "{{COUNT}} document(s) sélectionné(s).",
"{{COUNT}} extracted lines": "{{COUNT}} lignes extraites",
- "{{count}} files_one": "",
- "{{count}} files_many": "",
- "{{count}} files_other": "",
+ "{{count}} files_one": "{{count}} fichier",
+ "{{count}} files_many": "{{count}} fichiers",
+ "{{count}} files_other": "{{count}} fichiers",
"{{COUNT}} files": "{{COUNT}} fichiers",
- "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "",
- "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_many": "",
- "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "",
- "{{count}} filters_one": "",
- "{{count}} filters_many": "",
- "{{count}} filters_other": "",
- "{{count}} groups_one": "",
- "{{count}} groups_many": "",
- "{{count}} groups_other": "",
+ "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "{{count}} fichier sélectionné. Seuls les nouveaux fichiers et ceux modifiés seront téléversés. Les fichiers supprimés seront retirés. La structure des dossiers sera reproduite. Continuer ?",
+ "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_many": "{{count}} fichiers sélectionnés. Seuls les nouveaux fichiers et ceux modifiés seront téléversés. Les fichiers supprimés seront retirés. La structure des dossiers sera reproduite. Continuer ?",
+ "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "{{count}} fichiers sélectionnés. Seuls les nouveaux fichiers et ceux modifiés seront téléversés. Les fichiers supprimés seront retirés. La structure des dossiers sera reproduite. Continuer ?",
+ "{{count}} filters_one": "{{count}} filtre",
+ "{{count}} filters_many": "{{count}} filtres",
+ "{{count}} filters_other": "{{count}} filtres",
+ "{{count}} groups_one": "{{count}} groupe",
+ "{{count}} groups_many": "{{count}} groupes",
+ "{{count}} groups_other": "{{count}} groupes",
"{{COUNT}} hidden lines": "Nombres de lignes cachées {{COUNT}}",
"{{COUNT}} members": "{{COUNT}} membres",
- "{{count}} of {{total}} accessible_one": "",
- "{{count}} of {{total}} accessible_many": "",
- "{{count}} of {{total}} accessible_other": "",
- "{{COUNT}} pipeline(s) selected": "",
- "{{count}} removed lines_one": "",
- "{{count}} removed lines_many": "",
- "{{count}} removed lines_other": "",
+ "{{count}} of {{total}} accessible_one": "{{count}} sur {{total}} accessible",
+ "{{count}} of {{total}} accessible_many": "{{count}} sur {{total}} accessibles",
+ "{{count}} of {{total}} accessible_other": "{{count}} sur {{total}} accessibles",
+ "{{COUNT}} pipeline(s) selected": "{{COUNT}} pipeline(s) sélectionné(s)",
+ "{{count}} removed lines_one": "{{count}} ligne supprimée",
+ "{{count}} removed lines_many": "{{count}} lignes supprimées",
+ "{{count}} removed lines_other": "{{count}} lignes supprimées",
"{{COUNT}} Replies": "{{COUNT}} réponses",
"{{COUNT}} Rows": "{{COUNT}} lignes",
- "{{count}} selected_one": "",
- "{{count}} selected_many": "",
- "{{count}} selected_other": "",
+ "{{count}} selected_one": "{{count}} sélectionné",
+ "{{count}} selected_many": "{{count}} sélectionnés",
+ "{{count}} selected_other": "{{count}} sélectionnés",
"{{COUNT}} Sources": "{{COUNT}} Sources",
- "{{count}} users_one": "",
- "{{count}} users_many": "",
- "{{count}} users_other": "",
+ "{{count}} users_one": "{{count}} utilisateur",
+ "{{count}} users_many": "{{count}} utilisateurs",
+ "{{count}} users_other": "{{count}} utilisateurs",
"{{COUNT}} words": "{{COUNT}} mots",
"{{COUNT}}d_time_ago": "{{COUNT}}j",
"{{COUNT}}h_time_ago": "{{COUNT}}h",
"{{COUNT}}m_time_ago": "{{COUNT}}min",
"{{COUNT}}w_time_ago": "{{COUNT}}sem",
"{{COUNT}}y_time_ago": "{{COUNT}}a",
- "{{label}} contains invalid JSON": "",
- "{{label}} must be a JSON object": "",
+ "{{label}} contains invalid JSON": "{{label}} contient un JSON invalide",
+ "{{label}} must be a JSON object": "{{label}} doit être un objet JSON",
"{{model}} download has been canceled": "Le téléchargement de {{model}} a été annulé",
"{{modelName}} profile image": "Image de profil de {{modelName}}",
"{{NAMES}} reacted with {{REACTION}}": "{{NAMES}} a réagi avec {{REACTION}}",
- "{{page}} / {{totalPages}} ({{rows}} rows)": "",
- "{{percent}}% full": "",
+ "{{page}} / {{totalPages}} ({{rows}} rows)": "{{page}} / {{totalPages}} ({{rows}} lignes)",
+ "{{percent}}% full": "{{percent}}% plein",
"{{user}}'s Chats": "Conversations de {{user}}",
"{{webUIName}} Backend Required": "Backend {{webUIName}} requis",
- "* (all domains)": "",
+ "* (all domains)": "* (tous les domaines)",
"*Prompt node ID(s) are required for image generation": "*Les ID de noeud du prompt sont nécessaires pour la génération d'image",
- "*required": "",
- "1 file": "",
- "1 group": "",
+ "*required": "*requis",
+ "1 file": "1 fichier",
+ "1 group": "1 groupe",
"1 hour before": "1 heure avant",
"1 Source": "1 Source",
- "1 user": "",
+ "1 user": "1 utilisateur",
"10 minutes before": "10 minutes avant",
"15 minutes before": "15 minutes avant",
"1m_time_ago": "1min",
"30 minutes before": "30 minutes avant",
"5 minutes before": "5 minutes avant",
- "A chat run failed.": "",
- "A chat run finished successfully.": "",
+ "A chat run failed.": "Une exécution de conversation a échoué.",
+ "A chat run finished successfully.": "Une exécution de conversation s'est terminée avec succès.",
"A collaboration channel where people join as members": "Un canal collaboratif où les membres rejoignent librement",
"A discussion channel where access is controlled by groups and permissions": "Un canal de discussion où l'accès est contrôlé par les groupes et les permissions",
"A new version (v{{LATEST_VERSION}}) is now available.": "Une nouvelle version (v{{LATEST_VERSION}}) est disponible.",
"A private conversation between you and selected users": "Une conversation privée entre vous et les utilisateurs sélectionnés",
"a user": "un utilisateur",
+ "about the Roman Empire": "à propos de l'Empire romain",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Accepter l'autocomplétion\nRenseigner les variables du prompt",
"Access": "Accès",
"Access Control": "Contrôle d'accès",
"Access Grants": "Droits d'accès",
- "Access level": "",
+ "Access level": "Niveau d'accès",
"Access List": "Liste des accès",
- "Access prohibited": "",
+ "Access prohibited": "Accès interdit",
"Access updated": "Accès mis à jour",
"Accessible to all users": "Accessible à tous les utilisateurs",
"Account Activation Pending": "Activation du compte en attente",
@@ -99,7 +100,7 @@
"Activity": "Activité",
"Add": "Ajouter",
"Add a model ID": "Ajouter un ID de modèle",
- "Add a preference, fact, or instruction about you": "",
+ "Add a preference, fact, or instruction about you": "Ajoutez une préférence, un fait ou une instruction vous concernant",
"Add a short description about what this model does": "Ajoutez une brève description de ce que fait ce modèle.",
"Add a tag": "Ajouter un tag",
"Add a tag...": "Ajouter un tag...",
@@ -112,15 +113,15 @@
"Add Custom Prompt": "Ajouter un prompt personnalisé",
"Add description": "Ajouter une description",
"Add Details": "Ajouter des détails",
- "Add durable context for future chats": "",
+ "Add durable context for future chats": "Ajouter un contexte durable pour les futures conversations",
"Add Files": "Ajouter des fichiers",
"Add Image": "Ajouter une image",
- "Add Knowledge Connection": "",
+ "Add Knowledge Connection": "Ajouter une connexion de connaissances",
"Add location": "Ajouter un lieu",
"Add Member": "Ajouter un membre",
"Add Members": "Ajouter des membres",
"Add Memory": "Ajouter un souvenir",
- "Add prompt suggestion": "",
+ "Add prompt suggestion": "Ajouter une suggestion de prompt",
"Add Reaction": "Ajouter une réaction",
"Add tag": "Ajouter un tag",
"Add Tag": "Ajouter un tag",
@@ -128,11 +129,11 @@
"Add Terminal Connection": "Ajouter une connexion à un terminal",
"Add text content": "Ajouter du contenu textuel",
"Add to favorites": "Ajouter aux favoris",
- "Add translation": "",
+ "Add translation": "Ajouter une traduction",
"Add User": "Ajouter un utilisateur",
"Add User Group": "Ajouter un groupe d'utilisateurs",
- "Add User Variable": "",
- "Add webhook": "",
+ "Add User Variable": "Ajouter une variable utilisateur",
+ "Add webhook": "Ajouter un webhook",
"Add webpage": "Ajouter une page web",
"Add your Open Terminal URL and API key in Settings → Integrations.": "Ajoutez votre URL Open Terminal et votre clé API dans Réglages → Intégrations.",
"Additional configuration options for marker. This should be a JSON string with key-value pairs. For example, '{\"key\": \"value\"}'. Supported keys include: disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level": "Options de configuration supplémentaires pour Marker. Cela doit être un JSON avec des paires clé-valeur. Par exemple, '{\"key\": \"value\"}'. Les clés supportées incluent : disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level",
@@ -140,27 +141,27 @@
"admin": "administrateur",
"Admin": "Administrateur",
"Admin Panel": "Panneau d'administration",
- "Admin-managed service account": "",
+ "Admin-managed service account": "Compte de service géré par l'administrateur",
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Les administrateurs ont accès à tous les outils en permanence ; les utilisateurs doivent se voir attribuer des outils pour chaque modèle dans l'espace de travail.",
"Advanced": "Avancé",
"Advanced Params": "Réglages avancés",
- "After changing the embedding model, reindex knowledge, knowledge search, and memory vectors for changes to take effect.": "",
- "AI": "",
+ "After changing the embedding model, reindex knowledge, knowledge search, and memory vectors for changes to take effect.": "Après avoir changé le modèle d'embedding, réindexez les connaissances, la recherche de connaissances et les vecteurs de mémoire pour que les modifications prennent effet.",
+ "AI": "IA",
"All": "Tout",
"All chats have been unarchived.": "Toutes les conversations ont été désarchivées.",
"All day": "Toute la journée",
- "All events": "",
+ "All events": "Tous les événements",
"All models are now hidden": "Tous les modèles sont maintenant masqués",
"All models are now visible": "Tous les modèles sont maintenant visibles",
"All models deleted successfully": "Tous les modèles supprimés avec succès",
- "All rights reserved.": "",
- "All shared chats have been unshared.": "",
- "All Sources": "",
+ "All rights reserved.": "Tous droits réservés.",
+ "All shared chats have been unshared.": "Toutes les conversations partagées ont été désactivées.",
+ "All Sources": "Toutes les sources",
"All time": "Toute la période",
"All Users": "Tous les utilisateurs",
- "All users and system events": "",
- "Allow": "",
- "Allow {{NAME}}?": "",
+ "All users and system events": "Tous les utilisateurs et événements système",
+ "Allow": "Autoriser",
+ "Allow {{NAME}}?": "Autoriser {{NAME}} ?",
"Allow browser notifications for completed responses.": "Autoriser les notifications du navigateur lorsque les réponses sont terminées.",
"Allow Call": "Autoriser les appels",
"Allow Chat Controls": "Autoriser les contrôles de la conversation",
@@ -185,10 +186,10 @@
"Allow Temporary Chat": "Autoriser la conversation temporaire",
"Allow Text to Speech": "Autoriser la synthèse vocale",
"Allow the AI to delegate tasks to sub-agents. Each sub-agent creates a real chat with full tool access. Uses additional LLM calls.": "Autoriser l'IA à déléguer des tâches à des sous-agents. Chaque sous-agent crée une véritable conversation avec un accès complet aux outils. Consomme des appels LLM supplémentaires.",
- "Allow Tool Call": "",
+ "Allow Tool Call": "Autoriser l'appel d'outil",
"Allow Web Upload": "Autoriser le téléversement depuis le web",
"Already have an account?": "Avez-vous déjà un compte ?",
- "Also bound to {{action}}": "",
+ "Also bound to {{action}}": "Également lié à {{action}}",
"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.": "Alternative à top_p, et vise à assurer un équilibre entre qualité et variété. Le paramètre p représente la probabilité minimale pour qu'un token soit considéré, par rapport à la probabilité du token le plus probable. Par exemple, avec p=0.05 et le token le plus probable ayant une probabilité de 0.9, les logits d'une valeur inférieure à 0.045 sont filtrés.",
"Always": "Toujours",
"Amazing": "Incroyable",
@@ -199,17 +200,17 @@
"and {{COUNT}} more": "et {{COUNT}} autres",
"and create a new shared link.": "et créer un nouveau lien partagé.",
"Anyone": "Tout le monde",
- "Anyone with the link can view": "",
+ "Anyone with the link can view": "Toute personne disposant du lien peut voir",
"API Base URL": "URL de base de l'API",
"API Key": "Clé API",
- "API Key / Token": "",
+ "API Key / Token": "Clé API / Jeton",
"API Key created.": "Clé API générée.",
- "API Key deleted.": "",
+ "API Key deleted.": "Clé API supprimée.",
"API Keys": "Clés API",
"API Type": "Type d'API",
"API Version": "Version de l'API",
"API Version is required": "Version de l'API requise",
- "App navigation": "",
+ "App navigation": "Navigation dans l'application",
"applies to all users with the \"user\" role": "s'applique à tous les utilisateurs ayant le rôle « utilisateur »",
"April": "Avril",
"Archive": "Archiver",
@@ -221,25 +222,25 @@
"Are you sure you want to delete all chats? This action cannot be undone.": "Êtes-vous sûr de vouloir supprimer toutes les conversations ? Cette action est irréversible.",
"Are you sure you want to delete this channel?": "Êtes-vous sûr de vouloir supprimer ce canal ?",
"Are you sure you want to delete this connection? This action cannot be undone.": "Êtes-vous sûr de vouloir supprimer cette connexion ? Cette action est irréversible.",
- "Are you sure you want to delete this directory?": "",
+ "Are you sure you want to delete this directory?": "Êtes-vous sûr de vouloir supprimer ce répertoire ?",
"Are you sure you want to delete this memory? This action cannot be undone.": "Êtes-vous sûr de vouloir supprimer ce souvenir ? Cette action est irréversible.",
"Are you sure you want to delete this message?": "Êtes-vous sûr de vouloir supprimer ce message ?",
"Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "Êtes-vous sûr de vouloir supprimer cette version ? Les versions enfants seront rattachées à la version parente.",
- "Are you sure you want to delete this webhook? This action cannot be undone.": "",
+ "Are you sure you want to delete this webhook? This action cannot be undone.": "Êtes-vous sûr de vouloir supprimer ce webhook ? Cette action est irréversible.",
"Are you sure you want to delete this?": "Êtes-vous sûr de vouloir supprimer ceci ?",
- "Are you sure you want to reset all permissions to their default values? You will still need to save to apply the changes.": "",
+ "Are you sure you want to reset all permissions to their default values? You will still need to save to apply the changes.": "Êtes-vous sûr de vouloir réinitialiser toutes les autorisations à leurs valeurs par défaut ? Vous devrez enregistrer pour appliquer les modifications.",
"Are you sure you want to unarchive all archived chats?": "Êtes-vous sûr de vouloir désarchiver toutes les conversations ?",
- "Are you sure you want to unshare all shared chats? This will remove all share links.": "",
+ "Are you sure you want to unshare all shared chats? This will remove all share links.": "Êtes-vous sûr de vouloir désactiver le partage de toutes les conversations ? Cela supprimera tous les liens de partage.",
"Artifacts": "Artéfacts",
"Asc": "Croissant",
"Ask": "Demander",
"Ask a question": "Posez votre question",
- "Ask a test question": "",
- "Ask for approval": "",
- "Ask this knowledge source a test question": "",
+ "Ask a test question": "Poser une question de test",
+ "Ask for approval": "Demander une approbation",
+ "Ask this knowledge source a test question": "Poser une question de test à cette source de connaissances",
"Assistant": "Assistant",
- "Assistant messages": "",
- "at": "",
+ "Assistant messages": "Messages de l'assistant",
+ "at": "à",
"At time of event": "Au moment de l'événement",
"Attach File From Knowledge": "Joindre un fichier depuis les connaissances",
"Attach Files": "Joindre des fichiers",
@@ -247,53 +248,53 @@
"Attach Notes": "Joindre une note",
"Attach Webpage": "Joindre une page web",
"Attention to detail": "Attention aux détails",
- "Audio player": "",
+ "Audio player": "Lecteur audio",
"August": "Août",
"Auth": "Auth",
- "Auth Mode": "",
- "Auth required": "",
+ "Auth Mode": "Mode d'authentification",
+ "Auth required": "Authentification requise",
"Authenticate": "Authentifier",
- "Authorize OAuth": "",
+ "Authorize OAuth": "Autoriser OAuth",
"Auto": "Automatique",
"Auto (Random)": "Auto (Aléatoire)",
- "Automatic": "",
- "Automatic Delivery": "",
- "Automatic Events": "",
+ "Automatic": "Automatique",
+ "Automatic Delivery": "Livraison automatique",
+ "Automatic Events": "Événements automatiques",
"Automatic1111": "Automatic1111",
"AUTOMATIC1111 Base URL is required.": "L'URL de base {AUTOMATIC1111} est requise.",
"Automation": "Automatisation",
"Automation created": "Automatisation créée",
- "Automation Menu": "",
+ "Automation Menu": "Menu d'automatisation",
"Automation title": "Titre de l'automatisation",
"Automation triggered": "Automatisation déclenchée",
"Automation updated": "Automatisation mise à jour",
"Automations": "Automatisations",
"Available list": "Liste disponible",
"Available models": "Modèles disponibles",
- "Available Skills": "",
+ "Available Skills": "Compétences disponibles",
"Available Tools": "Outils disponibles",
- "Available variables": "",
+ "Available variables": "Variables disponibles",
"available!": "disponible !",
- "Average messages per active day": "",
- "Average tokens per chat": "",
+ "Average messages per active day": "Nombre moyen de messages par jour actif",
+ "Average tokens per chat": "Nombre moyen de tokens par conversation",
"Away": "Absent",
"Awful": "Horrible",
"Azure AI Speech": "Azure AI Speech",
"Azure OpenAI": "Azure OpenAI",
"Back": "Retour en arrière",
- "Background Image": "",
- "Background image must be at most 25 megapixels.": "",
- "Background image must be at most 5 MiB.": "",
- "Background image must be PNG, JPEG, WebP, or GIF.": "",
- "Background image preview": "",
- "Background sub-agent finished": "",
- "background sub-agents": "",
+ "Background Image": "Image d'arrière-plan",
+ "Background image must be at most 25 megapixels.": "L'image d'arrière-plan doit faire au maximum 25 mégapixels.",
+ "Background image must be at most 5 MiB.": "L'image d'arrière-plan doit faire au maximum 5 MiO.",
+ "Background image must be PNG, JPEG, WebP, or GIF.": "L'image d'arrière-plan doit être au format PNG, JPEG, WebP ou GIF.",
+ "Background image preview": "Aperçu de l'image d'arrière-plan",
+ "Background sub-agent finished": "Sous-agent en arrière-plan terminé",
+ "background sub-agents": "sous-agents en arrière-plan",
"Bad Response": "Mauvaise réponse",
"Base Model (From)": "Modèle de base (à partir de)",
- "Base Model is required.": "",
- "Base Models": "",
- "Basic text only": "",
- "Basics": "",
+ "Base Model is required.": "Le modèle de base est requis.",
+ "Base Models": "Modèles de base",
+ "Basic text only": "Texte simple uniquement",
+ "Basics": "Bases",
"Bearer": "Bearer",
"before": "avant",
"Being lazy": "Être fainéant",
@@ -305,10 +306,10 @@
"Button ID": "ID du bouton",
"Button Label": "Étiquette du bouton",
"Button Prompt": "Invite du bouton",
- "By": "",
+ "By": "Par",
"by {{name}}": "par {{name}}",
"By {{name}}": "Par {{name}}",
- "By supporting the project through sponsorship or an enterprise license, you help us stay independent, ship new features faster, improve stability, and grow Open WebUI for the long haul.": "",
+ "By supporting the project through sponsorship or an enterprise license, you help us stay independent, ship new features faster, improve stability, and grow Open WebUI for the long haul.": "En soutenant le projet via un parrainage ou une licence entreprise, vous nous aidez à rester indépendants, à livrer de nouvelles fonctionnalités plus rapidement, à améliorer la stabilité et à faire grandir Open WebUI sur le long terme.",
"Calendar": "Calendrier",
"Calendar created": "Calendrier créé",
"Calendar deleted": "Calendrier supprimé",
@@ -328,7 +329,7 @@
"Change User Role": "Changer le rôle de l'utilisateur",
"Channel": "Canal",
"Channel deleted successfully": "Canal supprimé avec succès",
- "Channel is required": "",
+ "Channel is required": "Un canal est requis",
"Channel Name": "Nom du canal",
"Channel name cannot be empty.": "Le nom du canal ne peut pas être vide.",
"Channel name must be less than 128 characters": "Le nom du canal doit faire moins de 128 caractères",
@@ -337,40 +338,41 @@
"Channels": "Canaux",
"Character": "Caractère",
"Chat": "Conversation",
- "Chat actions": "",
+ "Chat actions": "Actions de conversation",
"Chat archived.": "Conversation archivée.",
"Chat Completions": "Chat Completions",
"Chat Conversation": "Conversation par chat",
"Chat deleted.": "Conversation supprimée.",
"Chat exported successfully": "Conversation exportée avec succès",
- "Chat failed": "",
- "Chat finished": "",
- "Chat forked": "",
- "Chat history": "",
+ "Chat failed": "Échec de la conversation",
+ "Chat finished": "Conversation terminée",
+ "Chat forked": "Conversation dupliquée",
+ "Chat history": "Historique des conversations",
"Chat ID": "ID de chat",
- "Chat is too short to compact": "",
- "Chat Menu": "",
+ "Chat is too short to compact": "La conversation est trop courte pour être compactée",
+ "Chat Menu": "Menu des conversations",
"Chat moved successfully": "Conversation déplacée avec succès",
"Chat Permissions": "Autorisations de la conversation",
+ "Chat unarchived.": "Conversation désarchivée.",
"Chat unshared successfully.": "Conversation non partagée avec succès.",
- "Chat Uploads": "",
- "Chat Variables": "",
- "Chat Variables have conflicting model definitions": "",
+ "Chat Uploads": "Téléversements de conversations",
+ "Chat Variables": "Variables de conversation",
+ "Chat Variables have conflicting model definitions": "Les variables de conversation ont des définitions de modèle en conflit",
"chats": "conversations",
"Chats": "Conversations",
- "Chats Open Sharing": "",
+ "Chats Open Sharing": "Partage ouvert des conversations",
"Chats Public Sharing": "Partage public des conversations",
"Check Again": "Vérifiez à nouveau.",
- "Check OAuth Discovery": "",
- "Check what is running in this chat.": "",
+ "Check OAuth Discovery": "Vérifier la découverte OAuth",
+ "Check what is running in this chat.": "Vérifier ce qui s'exécute dans cette conversation.",
"Checking for updates...": "Recherche de mises à jour...",
"Choose a model before saving...": "Choisissez un modèle avant de sauvegarder...",
- "Choose channel": "",
- "Choose folder": "",
+ "Choose channel": "Choisir un canal",
+ "Choose folder": "Choisir un dossier",
"Citation": "Citation",
"Citations": "Citations",
- "Clear": "",
- "Clear filters to reorder": "",
+ "Clear": "Effacer",
+ "Clear filters to reorder": "Effacer les filtres pour réorganiser",
"Clear Memory": "Effacer la mémoire",
"Clear search": "Effacer la recherche",
"Clear status": "Effacer le statut",
@@ -387,9 +389,9 @@
"Click on the user role button to change a user's role.": "Cliquez sur le bouton de rôle d'utilisateur pour modifier son rôle.",
"Click to connect": "Cliquez pour vous connecter",
"Click to copy ID": "Cliquez pour copier l'ID",
- "Click to rebind": "",
- "Client ID": "",
- "Client Secret": "",
+ "Click to rebind": "Cliquez pour réassocier",
+ "Client ID": "ID client",
+ "Client Secret": "Secret client",
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "L'autorisation d'écriture du presse-papier a été refusée. Veuillez vérifier les réglages de votre navigateur pour accorder l'accès nécessaire.",
"Clone": "Cloner",
"Clone Chat": "Dupliquer la conversation",
@@ -399,12 +401,12 @@
"Close chat controls": "Fermer les contrôles de la conversation",
"Close citation modal": "Fermer la fenêtre de citation",
"Close Configure Connection Modal": "Fermer la fenêtre de configuration de la connexion",
- "Close embed": "",
+ "Close embed": "Fermer l'embed",
"Close feedback": "Fermer la fenêtre d'évaluation",
"Close modal": "Fermer la fenêtre",
"Close Modal": "Fermer la fenêtre",
"Close Sidebar": "Fermer la barre latérale",
- "Close terminal": "",
+ "Close terminal": "Fermer le terminal",
"cloud": "cloud",
"CMU ARCTIC speaker embedding name": "Nom de l'embedding de locuteur CMU Arctic",
"Code Block": "Bloc de code",
@@ -415,63 +417,63 @@
"Collaboration channel where people join as members": "Canal collaboratif où les membres rejoignent librement",
"Collapse": "Réduire",
"Collection": "Collection",
- "Collection Field": "",
+ "Collection Field": "Champ de collection",
"Collections": "Collections",
"Color": "Couleur",
"ComfyUI": "ComfyUI",
"ComfyUI Base URL is required.": "L'URL de base ComfyUI est requise.",
"Comma separated Node Ids (e.g. 1 or 1,2)": "ID de nœud séparés par des virgules (Ex : 1 ou 1,2)",
- "Comma-separated group names": "",
- "Comma-separated top-level request parameters this upstream may receive without translation. Use * to allow all captured passthrough params.": "",
+ "Comma-separated group names": "Noms de groupes séparés par des virgules",
+ "Comma-separated top-level request parameters this upstream may receive without translation. Use * to allow all captured passthrough params.": "Paramètres de requête de niveau supérieur séparés par des virgules que cet amont peut recevoir sans traduction. Utilisez * pour autoriser tous les paramètres de passage.",
"command": "commande",
"Command": "Commande",
- "Commands": "",
+ "Commands": "Commandes",
"Comment": "Commentaire",
"Commit Message": "Description de la modification",
"Community Reviews": "Avis de la communauté",
- "Compact": "",
- "Compact: shorten older messages so this chat can keep going.": "",
- "Compacting context": "",
- "Compacting context...": "",
- "Compare": "",
- "Comparing with knowledge base...": "",
+ "Compact": "Compacter",
+ "Compact: shorten older messages so this chat can keep going.": "Compacter : raccourcir les anciens messages pour que cette conversation puisse continuer.",
+ "Compacting context": "Compaction du contexte",
+ "Compacting context...": "Compaction du contexte en cours...",
+ "Compare": "Comparer",
+ "Comparing with knowledge base...": "Comparaison avec la base de connaissances...",
"Completions": "Complétions",
- "Compress uploaded images before sending or storage.": "",
- "Computing checksums ({{count}} files)_one": "",
- "Computing checksums ({{count}} files)_many": "",
- "Computing checksums ({{count}} files)_other": "",
+ "Compress uploaded images before sending or storage.": "Compresser les images téléversées avant l'envoi ou le stockage.",
+ "Computing checksums ({{count}} files)_one": "Calcul des sommes de contrôle ({{count}} fichier)",
+ "Computing checksums ({{count}} files)_many": "Calcul des sommes de contrôle ({{count}} fichiers)",
+ "Computing checksums ({{count}} files)_other": "Calcul des sommes de contrôle ({{count}} fichiers)",
"Config imported successfully": "Configuration importée avec succès",
"Configure": "Configurer",
"Confirm": "Confirmer",
"Confirm Password": "Confirmer le mot de passe",
"Confirm Prompt from Embed": "Confirmer le prompt de l'embed",
- "Confirm recording": "",
+ "Confirm recording": "Confirmer l'enregistrement",
"Confirm your action": "Confirmer votre action",
"Confirm your new password": "Confirmer votre nouveau mot de passe",
"Confirm Your Password": "Confirmez votre mot de passe",
"Connect to an AI provider to start chatting": "Connectez-vous à un fournisseur d'IA pour commencer à discuter",
- "Connect to Open Terminal instances. Admins and users granted access can use file browsing and terminal tools through these servers.": "",
+ "Connect to Open Terminal instances. Admins and users granted access can use file browsing and terminal tools through these servers.": "Se connecter à des instances Open Terminal. Les administrateurs et les utilisateurs autorisés peuvent utiliser les outils de navigation de fichiers et de terminal via ces serveurs.",
"Connect to your own OpenAPI compatible external tool servers.": "Connectez-vous à vos serveurs d'outils externes.",
- "Connected": "",
+ "Connected": "Connecté",
"Connected ({{type}})": "Connecté ({{type}})",
"Connection failed": "Échec de la connexion",
"Connection lost. Reconnecting...": "Connexion perdue. Reconnexion...",
"Connection successful": "Connexion réussie",
"Connection Type": "Type de connexion",
- "Connections managed through the Admin Panel are recommended for everyday use. Direct connections provide convenient access to your own endpoints, but rely on your browser session to keep requests running, making them better suited to testing and temporary use.": "",
+ "Connections managed through the Admin Panel are recommended for everyday use. Direct connections provide convenient access to your own endpoints, but rely on your browser session to keep requests running, making them better suited to testing and temporary use.": "Les connexions gérées via le Panneau d'administration sont recommandées pour un usage quotidien. Les connexions directes offrent un accès pratique à vos propres points de terminaison, mais dépendent de votre session navigateur pour maintenir les requêtes actives, ce qui les rend mieux adaptées aux tests et à un usage temporaire.",
"Connections saved successfully": "Connexions enregistrées avec succès",
"Connections settings updated": "Réglages de connexion mis à jour",
"Contact Admin for WebUI Access": "Contacter l'administrateur pour obtenir l'accès à WebUI",
"Content": "Contenu",
- "Content Field": "",
+ "Content Field": "Champ de contenu",
"Content lengths (character counts only)": "Longueur du contenu (nombre de caractères uniquement)",
- "Content matches": "",
- "Context": "",
- "Context compacted": "",
- "Context compaction failed": "",
- "Context compaction is disabled": "",
- "Context usage": "",
- "Continue": "",
+ "Content matches": "Correspondances de contenu",
+ "Context": "Contexte",
+ "Context compacted": "Contexte compacté",
+ "Context compaction failed": "Échec de la compaction du contexte",
+ "Context compaction is disabled": "La compaction du contexte est désactivée",
+ "Context usage": "Utilisation du contexte",
+ "Continue": "Continuer",
"Continue Response": "Continuer la réponse",
"Continue with {{provider}}": "Continuer avec {{provider}}",
"Continue with Email": "Continuer avec l'email",
@@ -487,7 +489,7 @@
"Copy": "Copier",
"Copy API Key": "Copier la clé API",
"Copy content": "Copier le contenu",
- "Copy default": "",
+ "Copy default": "Copier par défaut",
"Copy Last Code Block": "Copier le dernier bloc de code",
"Copy Last Response": "Copier la dernière réponse",
"Copy link": "Copier le lien",
@@ -499,61 +501,62 @@
"Copy Token": "Copier le jeton",
"Copy URL": "Copier l'URL",
"Copying to clipboard was successful!": "La copie dans le presse-papiers a réussi !",
- "Copyright (c)": "",
+ "Copyright (c)": "Copyright (c)",
"CORS must be properly configured by the provider to allow requests from Open WebUI.": "Le réglage CORS doit être correctement configuré par le fournisseur pour autoriser les requêtes provenant de l'Open WebUI.",
- "Could not check for updates": "",
- "Could not load release notes.": "",
+ "Could not check for updates": "Impossible de vérifier les mises à jour",
+ "Could not load release notes.": "Impossible de charger les notes de mise à jour.",
"Could not read file.": "Impossible de lire le fichier.",
- "Couldn't find your language?": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "Pourriez-vous commencer par me demander quelles sont les situations où je procrastine le plus, puis me donner des suggestions pour les surmonter ?",
+ "Couldn't find your language?": "Votre langue n'est pas disponible ?",
"CPU": "CPU",
"Create": "Créer",
"Create a knowledge base": "Créer une base de connaissances",
"Create a model": "Créer un modèle",
"Create a new note": "Créer une nouvelle note",
- "Create a reusable terminal skill from this chat.": "",
+ "Create a reusable terminal skill from this chat.": "Créer une compétence de terminal réutilisable à partir de cette conversation.",
"Create Account": "Créer un compte",
"Create Admin Account": "Créer un compte administrateur",
- "Create announcements shown to users in the app.": "",
+ "Create announcements shown to users in the app.": "Créer des annonces affichées aux utilisateurs dans l'application.",
"Create Channel": "Créer un canal",
"Create Folder": "Créer un dossier",
"Create Knowledge": "Créer une connaissance",
"Create Model": "Créer le modèle",
"Create new key": "Créer une nouvelle clé",
- "Create Prompt": "",
+ "Create Prompt": "Créer un prompt",
"Create scheduled prompts that run automatically on a recurring basis.": "Créer des invites planifiées qui s'exécutent automatiquement de manière récurrente.",
- "Create skill": "",
- "Create skill: create a reusable terminal skill from this chat.": "",
- "Create your first note from the Create menu.": "",
- "Created": "",
+ "Create skill": "Créer une compétence",
+ "Create skill: create a reusable terminal skill from this chat.": "Créer une compétence : créer une compétence de terminal réutilisable à partir de cette conversation.",
+ "Create your first note from the Create menu.": "Créez votre première note depuis le menu Créer.",
+ "Created": "Créé",
"Created at": "Créé le",
"Created At": "Créé le",
"Created by": "Créé par",
"Created by you": "Créé par vous",
"Created on {{date}}": "Créé le {{date}}",
"CSV Import": "Import CSV",
- "CSV: Name,Email": "",
+ "CSV: Name,Email": "CSV : Nom,Email",
"Ctrl+Enter to Send": "Ctrl+Enter pour envoyer",
- "Cumulative": "",
- "Current": "",
- "Current branch": "",
+ "Cumulative": "Cumulatif",
+ "Current": "Actuel",
+ "Current branch": "Branche actuelle",
"Current Model": "Modèle actuel",
- "Current streak": "",
+ "Current streak": "Série actuelle",
"Custom": "Sur mesure",
"Custom color": "Couleur personnalisée",
"Custom description enabled": "Description personnalisée activée",
"Custom Gender": "Genre personnalisé",
"Custom Parameter Name": "Nom du réglage personnalisé",
"Custom Parameter Value": "Valeur du réglage personnalisé",
- "Custom permissions": "",
- "Custom range": "",
+ "Custom permissions": "Permissions personnalisées",
+ "Custom range": "Plage personnalisée",
"Daily": "Journalier",
- "Daily at": "",
+ "Daily at": "Quotidien à",
"Daily Messages": "Messages par jour",
"Dark": "Sombre",
- "Data": "",
+ "Data": "Données",
"Database": "Base de données",
"Datalab Marker API": "API Datalab Marker",
- "Date is required": "",
+ "Date is required": "La date est requise",
"Date Modified": "Modifié le",
"Day": "Jour",
"DD/MM/YYYY": "DD/MM/YYYY",
@@ -565,7 +568,7 @@
"Default action buttons will be used.": "Les boutons d'action par défaut seront utilisés",
"Default description enabled": "Description par défaut activée",
"Default Filters": "Filtres par défaut",
- "Default Interface Settings": "",
+ "Default Interface Settings": "Paramètres d'interface par défaut",
"Default Model": "Modèle standard",
"Default model updated": "Modèle par défaut mis à jour",
"Default permissions": "Autorisations par défaut",
@@ -573,22 +576,22 @@
"Default Prompt Suggestions": "Suggestions de prompts par défaut",
"Default to 389 or 636 if TLS is enabled": "Par défaut à 389 ou 636 si TLS est activé",
"Default to ALL": "Par défaut à TOUS",
- "Default to memberOf": "",
+ "Default to memberOf": "Par défaut à memberOf",
"Default to segmented retrieval for focused and relevant content extraction, this is recommended for most cases.": "La recherche segmentée par défaut permet d'extraire un contenu ciblé et pertinent, ce qui est recommandé dans la plupart des cas.",
- "Default webhook": "",
+ "Default webhook": "Webhook par défaut",
"Delete": "Supprimer",
"Delete {{name}}": "Supprimer {{name}}",
"Delete a model": "Supprimer un modèle",
"Delete All": "Tout supprimer",
- "Delete all contents inside this directory": "",
+ "Delete all contents inside this directory": "Supprimer tout le contenu de ce répertoire",
"Delete all contents inside this folder": "Supprimer tout le contenu de ce dossier",
- "Delete API Key?": "",
+ "Delete API Key?": "Supprimer la clé API ?",
"Delete automation?": "Supprimer l'automation ?",
"Delete calendar": "Supprimer le calendrier",
"Delete Calendar": "Supprimer le calendrier",
"Delete Chat": "Supprimer la Conversation",
"Delete chat?": "Supprimer la conversation ?",
- "Delete directory?": "",
+ "Delete directory?": "Supprimer le répertoire ?",
"Delete Event": "Supprimer l'événement",
"Delete File": "Supprimer le fichier",
"Delete folder?": "Supprimer le dossier ?",
@@ -609,9 +612,9 @@
"Deleted {{name}}": "Supprimé {{name}}",
"Deleted {{ok}} of {{total}} items": "Supprimé {{ok}} sur {{total}} éléments",
"Deleted User": "Utilisateur supprimé",
- "Denied {{NAME}}": "",
- "Deny": "",
- "Deny Tool Call": "",
+ "Denied {{NAME}}": "Refusé {{NAME}}",
+ "Deny": "Refuser",
+ "Deny Tool Call": "Refuser l'appel d'outil",
"Deployment names are required for Azure OpenAI": "Les noms de déploiement sont requis pour Azure OpenAI",
"Desc": "Décroissant",
"Describe the edit...": "Décrivez la modification...",
@@ -619,23 +622,23 @@
"Describe what changed...": "Décrivez ce qui a changé...",
"Describe your knowledge base and objectives": "Décrivez votre base de connaissances et vos objectifs",
"Description": "Description",
- "Description ({{language}})": "",
+ "Description ({{language}})": "Description ({{language}})",
"Deselect": "Désélectionner",
- "Destination": "",
- "Detected Variables": "",
+ "Destination": "Destination",
+ "Detected Variables": "Variables détectées",
"Dictate": "Dicter",
"Didn't fully follow instructions": "N'a pas entièrement respecté les instructions",
- "Diff settings": "",
+ "Diff settings": "Paramètres de diff",
"Direct": "Direct",
"Direct Message": "Message direct",
"Direct Tool Servers": "Serveur d'outils directs",
- "Directory created.": "",
- "Directory deleted.": "",
- "Directory moved.": "",
- "Directory name": "",
- "Directory renamed.": "",
+ "Directory created.": "Répertoire créé.",
+ "Directory deleted.": "Répertoire supprimé.",
+ "Directory moved.": "Répertoire déplacé.",
+ "Directory name": "Nom du répertoire",
+ "Directory renamed.": "Répertoire renommé.",
"Directory selection was cancelled": "La sélection du répertoire a été annulée",
- "Disable all": "",
+ "Disable all": "Désactiver tout",
"Disable All": "Désactiver tout",
"Disable Code Interpreter": "Désactiver l'interpréteur de code",
"Disabled": "Désactivé",
@@ -649,8 +652,8 @@
"Discover, download, and explore custom tools": "Découvrez, téléchargez et explorez des outils personnalisés",
"Discover, download, and explore model presets": "Découvrir, télécharger et explorer des préréglages de modèles",
"Discussion channel where access is based on groups and permissions": "Canal de discussion où l'accès est basé sur les groupes et les permissions",
- "Dismiss": "",
- "Dismiss notification": "",
+ "Dismiss": "Ignorer",
+ "Dismiss notification": "Ignorer la notification",
"Display": "Afficher",
"Do not install functions from sources you do not fully trust.": "N'installez pas de fonctions provenant de sources auxquelles vous ne faites pas entièrement confiance.",
"Do not install tools from sources you do not fully trust.": "N'installez pas d'outils provenant de sources auxquelles vous ne faites pas entièrement confiance.",
@@ -659,33 +662,33 @@
"Docling Parameters": "Paramètres Docling",
"Docling Server URL required.": "URL du serveur Docling requise.",
"Document": "Document",
- "Document ID Field": "",
+ "Document ID Field": "Champ ID du document",
"Document Intelligence": "Document Intelligence",
"Document Intelligence endpoint required.": "Endpoint Document Intelligence requis.",
"Documentation": "Documentation",
"does not make any external connections, and your data stays securely on your locally hosted server.": "n'établit aucune connexion externe et garde vos données en sécurité sur votre serveur local.",
- "Don't fetch random pipelines from sources you don't trust.": "",
+ "Don't fetch random pipelines from sources you don't trust.": "Ne récupérez pas de pipelines aléatoires depuis des sources non fiables.",
"Don't have an account?": "Vous n'avez pas de compte ?",
"Don't like the style": "N'apprécie pas le style",
"Done": "Terminé",
"Download": "Télécharger",
- "Download \"{{searchValue}}\"": "",
- "Download \"{{searchValue}}\" from {{provider}}": "",
+ "Download \"{{searchValue}}\"": "Télécharger \"{{searchValue}}\"",
+ "Download \"{{searchValue}}\" from {{provider}}": "Télécharger \"{{searchValue}}\" depuis {{provider}}",
"Download as JSON": "Télécharger au format JSON",
"Download as SVG": "Télécharger au format SVG",
"Download canceled": "Téléchargement annulé",
- "Download CSV Template": "",
- "Download failed": "",
- "Download Model": "",
- "Downloading \"{{name}}\"": "",
- "Downloading \"{{searchValue}}\"": "",
+ "Download CSV Template": "Télécharger le modèle CSV",
+ "Download failed": "Échec du téléchargement",
+ "Download Model": "Télécharger le modèle",
+ "Downloading \"{{name}}\"": "Téléchargement de \"{{name}}\"",
+ "Downloading \"{{searchValue}}\"": "Téléchargement de \"{{searchValue}}\"",
"Downloading stats...": "Téléchargement des statistiques...",
- "Drag and Drop Container": "",
- "Drag to reorder": "",
+ "Drag and Drop Container": "Conteneur glisser-déposer",
+ "Drag to reorder": "Glisser pour réorganiser",
"Draw": "Match nul",
"Drop any files here to upload": "Déposez des fichiers ici pour les téléverser",
"Drop files here": "Déposez des fichiers ici",
- "Drop to upload": "",
+ "Drop to upload": "Déposer pour téléverser",
"DuckDuckGo": "DuckDuckGo",
"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "par ex. '30s', '10 min'. Les unités de temps valides sont 's', 'm', 'h'.",
"e.g. 'low', 'medium', 'high'": "par ex. « low », « medium », « high »",
@@ -716,40 +719,40 @@
"Edit Connection": "Modifier la connexion",
"Edit Default Permissions": "Modifier les autorisations par défaut",
"Edit Folder": "Modifier le dossier",
- "Edit Knowledge Connection": "",
+ "Edit Knowledge Connection": "Modifier la connexion de connaissances",
"Edit Last Message": "Modifier le dernier message",
"Edit Memory": "Modifier la mémoire",
"Edit Prompt": "Modifier le prompt",
"Edit Terminal Connection": "Modifier la connexion à un terminal",
"Edit User": "Modifier l'utilisateur",
"Edit User Group": "Modifier le groupe d'utilisateurs",
- "Edit User Variable": "",
- "Edit webhook": "",
+ "Edit User Variable": "Modifier la variable utilisateur",
+ "Edit webhook": "Modifier le webhook",
"edited": "édité",
- "Editing language": "",
+ "Editing language": "Modification de la langue",
"Eject": "Ejecte",
"Eject model": "Éjecter le modèle",
"ElevenLabs": "ElevenLabs",
"Email": "E-mail",
- "Embedded content": "",
- "Emoji": "",
- "Emoji graphics provided by": "",
- "Emojis": "",
- "Empty": "",
+ "Embedded content": "Contenu intégré",
+ "Emoji": "Emoji",
+ "Emoji graphics provided by": "Graphiques emoji fournis par",
+ "Emojis": "Emojis",
+ "Empty": "Vide",
"Empty message": "Message vide",
"Enable All": "Activer tout",
- "Enable all ({{COUNT}})": "",
+ "Enable all ({{COUNT}})": "Activer tout ({{COUNT}})",
"Enable Code Interpreter": "Autoriser l'interprétation de code",
"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Activer le verrouillage de la mémoire (mlock) pour empêcher les données du modèle d'être échangées de la RAM. Cette option verrouille l'ensemble de pages de travail du modèle en RAM, garantissant qu'elles ne seront pas échangées vers le disque. Cela peut aider à maintenir les performances en évitant les défauts de page et en assurant un accès rapide aux données.",
"Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "Activer le mappage de la mémoire (mmap) pour charger les données du modèle. Cette option permet au système d'utiliser le stockage disque comme une extension de la RAM en traitant les fichiers disque comme s'ils étaient en RAM. Cela peut améliorer les performances du modèle en permettant un accès plus rapide aux données. Cependant, cela peut ne pas fonctionner correctement avec tous les systèmes et peut consommer une quantité significative d'espace disque.",
"Enable Mirostat sampling for controlling perplexity.": "Activer l'échantillonnage Mirostat pour contrôler Perplexité.",
"Enabled": "Activé",
- "End call": "",
+ "End call": "Terminer l'appel",
"End Tag": "Tag de fin",
- "Endpoint": "",
+ "Endpoint": "Point de terminaison",
"Enforce Temporary Chat": "Imposer les discussions temporaires",
"Enhance": "Améliore",
- "Enhance this note and update it.": "",
+ "Enhance this note and update it.": "Améliorez cette note et mettez-la à jour.",
"Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Vérifiez que votre fichier CSV comprenne les 4 colonnes dans cet ordre : Name, Email, Password, Role.",
"Enter {{role}} message here": "Entrez le message {{role}} ici",
"Enter a title for the pending user info overlay. Leave empty for default.": "Entrez un titre pour l'interface utilisateur en attente. Laissez vide pour le défaut.",
@@ -820,7 +823,7 @@
"Enter New Password": "Entrez votre nouveau mots de passe",
"Enter Number of Steps (e.g. 50)": "Entrez le nombre d'étapes (par ex. 50)",
"Enter Ollama Cloud API Key": "Entrez la clé API Ollama Cloud",
- "Enter OpenSERP Base URL": "",
+ "Enter OpenSERP Base URL": "Entrez l'URL de base d'OpenSERP",
"Enter PaddleOCR-vl API Base URL": "Entrez l'URL de base de l'API PaddleOCR-vl",
"Enter PaddleOCR-vl API Token": "Entrez le token de l'API PaddleOCR-vl",
"Enter Perplexity API Key": "Entrez la clé API Perplexity",
@@ -849,7 +852,7 @@
"Enter skill instructions in markdown...": "Entrez les instructions du skill au format markdown...",
"Enter Sougou Search API sID": "Entrez le sID pour l'API Search de Sougou",
"Enter Sougou Search API SK": "Entrez la SK pour l'API Search de Sougou",
- "Enter Staan API Key": "",
+ "Enter Staan API Key": "Entrez la clé API Staan",
"Enter stop sequence": "Entrez la séquence d'arrêt",
"Enter system prompt": "Entrez le prompt système",
"Enter system prompt here": "Entrez le prompt système ici",
@@ -885,8 +888,8 @@
"Enter Your Password": "Entrez votre mot de passe",
"Enter Your Role": "Entrez votre rôle",
"Enter Your Username": "Entrez votre nom d'utilisateur",
- "Enterprise licenses also include dedicated support, customization options, and more, at a fraction of the cost of building and maintaining this stack internally.": "",
- "Enterprise licensing": "",
+ "Enterprise licenses also include dedicated support, customization options, and more, at a fraction of the cost of building and maintaining this stack internally.": "Les licences entreprise incluent également un support dédié, des options de personnalisation et bien plus, pour une fraction du coût de la construction et de la maintenance de cette pile en interne.",
+ "Enterprise licensing": "Licences entreprise",
"Entra ID": "Entra ID",
"Environment Variables": "Variables d'environnement",
"Ephemeral": "Éphémère",
@@ -896,27 +899,27 @@
"Error accessing Google Drive: {{error}}": "Erreur d'accès à Google Drive : {{error}}",
"Error accessing media devices.": "Erreur lors de l'accès aux dispositifs medias",
"Error deleting model: {{error}}": "Erreur lors de la suppression du modèle : {{error}}",
- "Error previewing file: {{error}}": "",
+ "Error previewing file: {{error}}": "Erreur de prévisualisation du fichier : {{error}}",
"Error starting recording.": "Erreur lors du démarrage de l'enregistrement",
"Error unloading model: {{error}}": "Erreur lors du déchargement du modèle : {{error}}",
"Error uploading file: {{error}}": "Erreur de téléversement du fichier : {{error}}",
"Error: A model with the ID '{{modelId}}' already exists. Please select a different ID to proceed.": "Erreur : Un modèle avec l'ID '{{modelId}}' existe déjà. Veuillez sélectionner un ID différent pour continuer.",
"Error: Model ID cannot be empty. Please enter a valid ID to proceed.": "Erreur : l'ID du modèle ne peut pas être vide. Veuillez saisir un ID valide pour continuer.",
"Evaluations": "Évaluations",
- "Event": "",
+ "Event": "Événement",
"Event created": "Événement créé",
"Event deleted": "Événement supprimé",
- "Event names may change as Open WebUI evolves. Use broad patterns like user.* for integrations that should continue across new related events.": "",
+ "Event names may change as Open WebUI evolves. Use broad patterns like user.* for integrations that should continue across new related events.": "Les noms des événements peuvent changer à mesure qu'Open WebUI évolue. Utilisez des motifs larges comme user.* pour les intégrations qui doivent continuer à travers les nouveaux événements liés.",
"Event title": "Titre de l'événement",
"Event updated": "Événement mis à jour",
- "Every {{count}} hours_one": "",
- "Every {{count}} hours_many": "",
- "Every {{count}} hours_other": "",
- "Every {{count}} minutes_one": "",
- "Every {{count}} minutes_many": "",
- "Every {{count}} minutes_other": "",
- "Every minute": "",
- "Example": "",
+ "Every {{count}} hours_one": "Toutes les {{count}} heures",
+ "Every {{count}} hours_many": "Toutes les {{count}} heures",
+ "Every {{count}} hours_other": "Toutes les {{count}} heures",
+ "Every {{count}} minutes_one": "Toutes les {{count}} minutes",
+ "Every {{count}} minutes_many": "Toutes les {{count}} minutes",
+ "Every {{count}} minutes_other": "Toutes les {{count}} minutes",
+ "Every minute": "Chaque minute",
+ "Example": "Exemple",
"Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Exemple: (&(objectClass=inetOrgPerson)(uid=%s))",
"Example: ALL": "Exemple: TOUS",
"Example: mail": "Exemple: mail",
@@ -925,32 +928,34 @@
"Exceeded the number of seats in your license. Please contact support to increase the number of seats.": "Le nombre de sièges de votre licence est dépassé. Veuillez contacter le support pour augmenter le nombre de sièges.",
"Exclude": "Exclure",
"Execute code for analysis": "Exécuter le code pour l'analyse",
- "Executing {{NAME}}...": "",
+ "Executing {{NAME}}...": "Exécution de {{NAME}}...",
"Expand": "Développer",
- "Expand input": "",
- "Experience": "",
+ "Expand input": "Étendre la zone de saisie",
+ "Experience": "Expérience",
"Experimental": "Expérimental",
"Explain": "Explique",
+ "Explain options trading": "Expliquer le trading d'options",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "Expliquer le trading d'options en termes simples si je connais l'achat et la vente d'actions.",
"Explored": "Exploré",
"Exploring": "Explorer",
"Export": "Exporter",
"Export as CSV": "Exporter au format CSV",
"Export as JSON": "Exporter au format JSON",
"Export chat (.json)": "Exporter la conversation (.json)",
- "Export JSON": "",
+ "Export JSON": "Exporter en JSON",
"Export Models": "Exporter les modèles",
"Export Prompts": "Exporter les prompts",
- "Export Skills": "",
+ "Export Skills": "Exporter les compétences",
"Export to CSV": "Exporter en CSV",
"Export Tools": "Exporter les outils",
"External": "Externe",
- "External connection not found.": "",
+ "External connection not found.": "Connexion externe introuvable.",
"External Document Loader URL required.": "URL du chargeur de document externe requis",
- "External Knowledge Source": "",
- "External vectors must be generated with the same embedding model configured in Open WebUI.": "",
- "Extract action items from this note.": "",
- "Extracted text lines": "",
- "Extracting text and comparing…": "",
+ "External Knowledge Source": "Source de connaissances externe",
+ "External vectors must be generated with the same embedding model configured in Open WebUI.": "Les vecteurs externes doivent être générés avec le même modèle d'embedding configuré dans Open WebUI.",
+ "Extract action items from this note.": "Extraire les éléments d'action de cette note.",
+ "Extracted text lines": "Lignes de texte extraites",
+ "Extracting text and comparing…": "Extraction du texte et comparaison…",
"Failed to add file.": "Échec de l'ajout du fichier.",
"Failed to add members": "Échec de l'ajout des membres",
"Failed to archive chat.": "Échec de l'archivage de la conversation.",
@@ -977,14 +982,14 @@
"Failed to load DOCX file. Please try downloading it instead.": "Échec du chargement du fichier DOCX. Essayez plutôt de le télécharger.",
"Failed to load Excel/CSV file. Please try downloading it instead.": "Échec du chargement du fichier Excel/CSV. Essayez plutôt de le télécharger.",
"Failed to load file content.": "Échec du chargement du contenu du fichier",
- "Failed to load folder": "",
+ "Failed to load folder": "Échec du chargement du dossier",
"Failed to load Interface settings": "Échec du chargement des réglages de l'interface",
"Failed to load policy: {{error}}": "Échec du chargement de la politique : {{error}}",
"Failed to load PPTX file. Please try downloading it instead.": "Échec du chargement du fichier PPTX. Essayez plutôt de le télécharger.",
"Failed to load usage": "Échec du chargement des données d'utilisation",
- "Failed to load valves": "",
+ "Failed to load valves": "Échec du chargement des vannes",
"Failed to move chat": "Échec du déplacement du chat",
- "Failed to open database": "",
+ "Failed to open database": "Échec de l'ouverture de la base de données",
"Failed to process URL: {{url}}": "Échec du traitement de l'URL : {{url}}",
"Failed to read clipboard contents": "Échec de la lecture du contenu du presse-papiers",
"Failed to refresh terminals: {{error}}": "Échec de l'actualisation des terminaux : {{error}}",
@@ -994,17 +999,17 @@
"Failed to save chat variables": "Échec de l'enregistrement des variables de la conversation",
"Failed to save connections": "Échec de la sauvegarde des connexions",
"Failed to save conversation": "Échec de la sauvegarde de la conversation",
- "Failed to save model": "",
+ "Failed to save model": "Échec de l'enregistrement du modèle",
"Failed to save models configuration": "Échec de la sauvegarde de la configuration des modèles",
"Failed to save policy: {{error}}": "Échec de la sauvegarde de la politique : {{error}}",
"Failed to save terminal servers": "Échec de la sauvegarde des serveurs de terminal",
"Failed to save webhook": "Échec de l'enregistrement du webhook",
- "Failed to search files": "",
+ "Failed to search files": "Échec de la recherche de fichiers",
"Failed to unshare chat.": "Échec de l'annulation du partage de la conversation.",
"Failed to update settings": "Échec de la mise à jour des réglages",
"Failed to update status": "Échec de la mise à jour du statut",
"Failed to update webhook": "Échec de la mise à jour du webhook",
- "Failed to upload background image.": "",
+ "Failed to upload background image.": "Échec du téléversement de l'image d'arrière-plan.",
"Failed to upload file.": "Échec du téléversement du fichier.",
"Features Permissions": "Autorisations des fonctionnalités",
"February": "Février",
@@ -1014,28 +1019,28 @@
"Feedback Details": "Détails du retour d'information",
"Feel free to add specific details": "N'hésitez pas à ajouter des détails spécifiques",
"Female": "Femme",
- "Fetch page contents without proxy environment variables.": "",
+ "Fetch page contents without proxy environment variables.": "Récupérer le contenu des pages sans variables d'environnement de proxy.",
"File": "Fichier",
"File added successfully.": "Fichier ajouté avec succès.",
"File browser": "Explorateur de fichiers",
"File content": "Contenu du fichier",
"File content updated successfully.": "Contenu du fichier mis à jour avec succès.",
"File deleted successfully.": "Fichier supprimé avec succès.",
- "File differences": "",
+ "File differences": "Différences de fichiers",
"File Mode": "Mode fichier",
- "File moved.": "",
+ "File moved.": "Fichier déplacé.",
"File name": "Nom du fichier",
"File not found.": "Fichier introuvable.",
"File removed successfully.": "Fichier supprimé avec succès.",
- "File renamed.": "",
+ "File renamed.": "Fichier renommé.",
"File size should not exceed {{maxSize}} MB.": "La taille du fichier ne doit pas dépasser {{maxSize}} Mo.",
"File uploaded successfully": "Fichier téléversé avec succès",
"Filename": "Nom du fichier",
- "Filename matches": "",
+ "Filename matches": "Correspondances de noms de fichiers",
"Files": "Fichiers",
- "Filesystem": "",
- "Fill the required fields first.": "",
- "Fill the source fields and test query first.": "",
+ "Filesystem": "Système de fichiers",
+ "Fill the required fields first.": "Remplissez d'abord les champs obligatoires.",
+ "Fill the source fields and test query first.": "Remplissez d'abord les champs source et la requête de test.",
"Filter": "Filtre",
"Filter is now globally disabled": "Le filtre est maintenant désactivé globalement",
"Filter is now globally enabled": "Le filtre est désormais activé globalement",
@@ -1053,28 +1058,29 @@
"Folder options": "Options du dossier",
"Folder updated successfully": "Dossier mis à jour avec succès",
"Folders": "Dossiers",
- "Folders Sharing": "",
+ "Folders Sharing": "Partage des dossiers",
"Follow up": "Questions de suivi",
"Follow up: {{question}}": "Question de suivi : {{question}}",
"Followed instructions perfectly": "A parfaitement suivi les instructions",
"for placeholders": "pour les variables dynamiques",
- "Fork": "",
- "Fork chat": "",
- "Fork the current chat branch into a new chat.": "",
- "Fork: fork the current chat branch into a new chat.": "",
- "Forking chat...": "",
+ "for what to do with my kids' art": "que faire avec les dessins de mes enfants",
+ "Fork": "Dupliquer",
+ "Fork chat": "Dupliquer la conversation",
+ "Fork the current chat branch into a new chat.": "Dupliquer la branche actuelle de la conversation dans une nouvelle conversation.",
+ "Fork: fork the current chat branch into a new chat.": "Dupliquer : dupliquer la branche actuelle de la conversation dans une nouvelle conversation.",
+ "Forking chat...": "Duplication de la conversation...",
"Form": "Formulaire",
- "Format Markdown as you type and paste. Turn off to keep Markdown characters and paste plain text. Existing formatting is preserved.": "",
- "Formatting": "",
+ "Format Markdown as you type and paste. Turn off to keep Markdown characters and paste plain text. Existing formatting is preserved.": "Formater le Markdown au fur et à mesure que vous tapez et collez. Désactivez pour conserver les caractères Markdown et coller du texte brut. Le formatage existant est préservé.",
+ "Formatting": "Formatage",
"Formatting may be inconsistent from source.": "Le formatage peut être incohérent par rapport à la source.",
- "Forward": "",
- "Forward cookies": "",
- "Forward cookies from your Open WebUI request to this server.": "",
+ "Forward": "Transférer",
+ "Forward cookies": "Transférer les cookies",
+ "Forward cookies from your Open WebUI request to this server.": "Transférer les cookies de votre requête Open WebUI vers ce serveur.",
"Forwards system user OAuth access token to authenticate": "Transfère le jeton d'accès OAuth de l'utilisateur système pour l'authentification",
"Forwards system user session credentials to authenticate": "Transmet les identifiants de session de l'utilisateur pour l'authentification",
- "Fr_day_of_week": "",
- "from {{provider}}": "",
- "Full access": "",
+ "Fr_day_of_week": "Vendredi",
+ "from {{provider}}": "depuis {{provider}}",
+ "Full access": "Accès complet",
"Function created successfully": "Fonction créée avec succès",
"Function deleted successfully": "Fonction supprimée avec succès",
"Function Description": "Description de la fonction",
@@ -1082,21 +1088,21 @@
"Function imported successfully": "Fonction importée avec succès",
"Function is now globally disabled": "La fonction est désormais globalement désactivée",
"Function is now globally enabled": "La fonction est désormais globalement activée",
- "Function Menu": "",
+ "Function Menu": "Menu des fonctions",
"Function Name": "Nom de la fonction",
"Function Name Filter List": "Liste de filtrage des fonctions par nom",
- "Function starter": "",
+ "Function starter": "Démarreur de fonction",
"Function updated successfully": "Fonction mise à jour avec succès",
"Functions": "Fonctions",
"Functions allow arbitrary code execution.": "Les fonctions permettent l'exécution de code arbitraire.",
- "Functions can execute arbitrary code.": "",
+ "Functions can execute arbitrary code.": "Les fonctions peuvent exécuter du code arbitraire.",
"Functions imported successfully": "Fonctions importées avec succès",
"Gemini": "Gemini",
"Gemini API Key is required.": "La clé d'API de Gemini est requise",
"General": "Général",
"Generate": "Génère",
"Generate an image": "Génère une image",
- "Generate message pair": "",
+ "Generate message pair": "Générer une paire de messages",
"Generate Message Pair": "Générer une paire de messages",
"Generated Image": "Image générée",
"Generated images will appear here": "Les images générées apparaîtront ici",
@@ -1105,6 +1111,8 @@
"Get information on {{name}} in the UI": "Obtenir des informations sur {{name}} dans l'interface utilisateur",
"Get started": "Démarrer",
"Get started with {{WEBUI_NAME}}": "Démarrez avec {{WEBUI_NAME}}",
+ "Give me ideas": "Donnez-moi des idées",
+ "give me tips": "donnez-moi des conseils",
"Global": "Global",
"Good Response": "Bonne réponse",
"Google": "Google",
@@ -1112,8 +1120,8 @@
"Gravatar": "Gravatar",
"Grid": "Grille",
"Grokipedia": "Grokipedia",
- "group": "",
- "Group": "",
+ "group": "groupe",
+ "Group": "Groupe",
"Group Channel": "Canal de groupe",
"Group created successfully": "Groupe créé avec succès",
"Group deleted successfully": "Groupe supprimé avec succès",
@@ -1130,79 +1138,81 @@
"Height": "Hauteur",
"Hello, {{name}}": "Bonjour, {{name}}.",
"Help": "Aide",
+ "Help me study": "Aidez-moi à étudier",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "Aidez-moi à étudier le vocabulaire : écrivez une phrase pour que je puisse remplir le blanc, et j'essaierai de choisir la bonne option.",
"Help the community discover great models": "Aidez la communauté à découvrir les meilleurs modèles",
- "Help us translate Open WebUI!": "",
+ "Help us translate Open WebUI!": "Aidez-nous à traduire Open WebUI !",
"Hex Color": "Couleur Hex",
"Hex Color - Leave empty for default color": "Couleur Hex - Laissez vide pour la couleur par défaut",
"Hidden": "Masqué",
"Hide": "Cacher",
"Hide All": "Masquer tout",
"Hide from Sidebar": "Cacher de la barre latérale",
- "Hide Hidden Files": "",
+ "Hide Hidden Files": "Masquer les fichiers cachés",
"Hide Model": "Cache le Model",
- "Hide whitespace": "",
+ "Hide whitespace": "Masquer les espaces blancs",
"High": "Elevé",
"History": "Historique",
"Home": "Home",
- "Horizontal Layout": "",
+ "Horizontal Layout": "Disposition horizontale",
"Hourly": "Par heure",
"Hourly Messages": "Messages par heure",
"How can I help you today?": "Comment puis-je vous aider aujourd'hui ?",
"How would you rate this response?": "Comment évalueriez-vous cette réponse ?",
"HTML": "HTML",
- "HTML Preview": "",
+ "HTML Preview": "Aperçu HTML",
"http://localhost:8000": "http://localhost:8000",
"https://mineru.net/api/v4": "https://mineru.net/api/v4",
"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.": "Je reconnais avoir lu et compris les implications de mes actions. Je suis conscient des risques associés à l'exécution d'un code arbitraire et j'ai vérifié la fiabilité de la source.",
"ID": "ID",
"ID cannot contain \":\" or \"|\" characters": "L'ID ne peut pas contenir les caractères « : » ou « | »",
"ID copied to clipboard": "ID copié dans le presse-papiers",
- "Identity audit": "",
- "Idle only": "",
+ "Identity audit": "Audit d'identité",
+ "Idle only": "Uniquement en inactivité",
"Idle Timeout": "Délai d'inactivité",
+ "if I'm familiar with buying and selling stocks": "si je connais l'achat et la vente d'actions",
"Image": "Image",
"Image Generation": "Génération d'image",
"Image Max Compression Size": "Taille maximale de compression d'image",
"Image Max Compression Size height": "Taille maximale de compression d'image (hauteur)",
"Image Max Compression Size width": "Taille maximale de compression d'image (largeur)",
- "Image unavailable": "",
- "image/*, video/*": "",
+ "Image unavailable": "Image indisponible",
+ "image/*, video/*": "image/*, vidéo/*",
"Images": "Images",
"Import": "Importer",
- "Import CSV": "",
+ "Import CSV": "Importer un CSV",
"Import From Link": "Importer depuis le lien",
- "Import JSON": "",
+ "Import JSON": "Importer un JSON",
"Import Models": "Importer les modèles",
"Import Prompts": "Importer les prompts",
- "Import Skills": "",
+ "Import Skills": "Importer des compétences",
"Import successful": "Import réussi",
"Import Tools": "Importer les outils",
- "Import txt/md": "",
- "Imported automations successfully": "",
- "Imported notes successfully": "",
- "Importing...": "",
+ "Import txt/md": "Importer du texte/markdown",
+ "Imported automations successfully": "Automatisations importées avec succès",
+ "Imported notes successfully": "Notes importées avec succès",
+ "Importing...": "Importation en cours...",
"Inactive": "Inactif",
"Include": "Inclure",
"Influences how quickly the algorithm responds to feedback from the generated text. A lower learning rate will result in slower adjustments, while a higher learning rate will make the algorithm more responsive.": "Influe sur la rapidité avec laquelle l'algorithme répond aux retours d'information du texte généré. Un taux d'apprentissage plus bas entraînera des ajustements plus lents, tandis qu'un taux d'apprentissage plus élevé rendra l'algorithme plus réactif.",
"Info": "Info",
"Initials": "Initiales",
"Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "Injecter l'ensemble du contenu comme contexte pour un traitement complet, recommandé pour les requêtes complexes.",
- "Inline": "",
+ "Inline": "En ligne",
"Input": "Entrée",
"Input Key (e.g. text, unet_name, steps)": "Clé de la variable d'entrée (par ex. text, unet_name, steps)",
- "Input needed": "",
+ "Input needed": "Entrée nécessaire",
"Input Variables": "Variables d'entrée",
- "Insert": "Insérer",
- "Insert into note": "",
+ "Insert into note": "Insérer dans la note",
"Instructions": "Instructions",
"Integrations": "Intégrations",
"Interface Settings Access": "Accès aux paramètres de l'interface",
- "Invalid background image.": "",
+ "Invalid background image.": "Image d'arrière-plan invalide.",
"Invalid file format.": "Format de fichier non valide.",
- "Invalid format.": "",
- "Invalid JSON": "",
+ "Invalid format.": "Format invalide",
+ "Invalid JSON": "JSON invalide",
"Invalid JSON file": "Fichier JSON non valide",
- "Invalid JSON format": "",
+ "Invalid JSON format": "Format JSON invalide",
"Invalid JSON format for ComfyUI Edit Workflow.": "Format JSON non valide pour le workflow ComfyUI de modification d'image.",
"Invalid JSON format for ComfyUI Workflow.": "Format JSON non valide pour le workflow ComfyUI.",
"Invalid JSON format for Parameters": "Format JSON non valide pour les paramètres",
@@ -1214,23 +1224,23 @@
"January": "Janvier",
"join our Discord for help.": "Rejoignez notre Discord pour obtenir de l'aide.",
"JSON": "JSON",
- "JSON Base64": "",
- "JSON parse error: {{error}}": "",
+ "JSON Base64": "JSON Base64",
+ "JSON parse error: {{error}}": "Erreur d'analyse JSON : {{error}}",
"JSON Preview": "Aperçu JSON",
"JSON Spec": "Spécification JSON",
"July": "Juillet",
"June": "Juin",
- "Keep current webhook URL": "",
+ "Keep current webhook URL": "Conserver l'URL actuelle du webhook",
"Keep in Sidebar": "Epingler dans la barre latérale",
"Key": "Clé",
"Key is required": "La clé est requise",
- "key_name": "",
- "Keyboard": "",
+ "key_name": "nom_clé",
+ "Keyboard": "Clavier",
"Knowledge": "Connaissances",
"Knowledge Access": "Accès aux connaissances",
"Knowledge Base": "Base de connaissances",
- "Knowledge base has been reset": "",
- "Knowledge base not found.": "",
+ "Knowledge base has been reset": "La base de connaissances a été réinitialisée",
+ "Knowledge base not found.": "Base de connaissances introuvable.",
"Knowledge created successfully.": "Connaissance créée avec succès.",
"Knowledge deleted successfully.": "Connaissance supprimée avec succès.",
"Knowledge Description": "Description des connaissances",
@@ -1238,8 +1248,8 @@
"Knowledge Name": "Nom de la connaissance",
"Knowledge Public Sharing": "Partage public des Connaissances",
"Knowledge Sharing": "Partage des connaissances",
- "Knowledge source created.": "",
- "Knowledge source updated.": "",
+ "Knowledge source created.": "Source de connaissances créée.",
+ "Knowledge source updated.": "Source de connaissances mise à jour.",
"Knowledge updated successfully": "Connaissance mise à jour avec succès",
"Kokoro.js (Browser)": "Kokoro.js (Navigateur)",
"Last 24 hours": "Dernières 24 heures",
@@ -1249,7 +1259,7 @@
"Last Active": "Dernière activité",
"Last Modified": "Dernière modification",
"Last reply": "Dernière réponse",
- "Last run": "",
+ "Last run": "Dernière exécution",
"Leaderboard": "Classement",
"Learn More": "En savoir plus",
"Learn more about Open Terminal": "En savoir plus sur Open Terminal",
@@ -1267,62 +1277,61 @@
"Leave empty to use the default prompt, or enter a custom prompt": "Laissez vide pour utiliser le prompt par défaut, ou entrez un prompt personnalisé",
"Legacy": "Déprécié",
"lexical": "lexical",
- "License Error": "",
- "license purchased by": "",
- "Lifecycle JSON": "",
- "Lifetime tokens": "",
+ "License Error": "Erreur de licence",
+ "license purchased by": "licence achetée par",
+ "Lifecycle JSON": "JSON de cycle de vie",
+ "Lifetime tokens": "Tokens de durée de vie",
"Lift List": "Réduire l'indentation",
"Light": "Clair",
"List": "Liste",
"Listening...": "Écoute en cours...",
- "LiteLLM": "",
+ "LiteLLM": "LiteLLM",
"Live": "Actif",
"llama.cpp": "llama.cpp",
"LLMs can make mistakes. Verify important information.": "Les LLM peuvent faire des erreurs. Vérifiez les informations importantes.",
- "LM Studio": "",
- "Load Model": "",
- "Loaded": "",
- "Loading": "",
+ "LM Studio": "LM Studio",
+ "Load Model": "Charger le modèle",
+ "Loaded": "Chargé",
+ "Loading": "Chargement...",
"Loading Kokoro.js...": "Chargement de Kokoro.js...",
- "Loading policy...": "",
- "Loading release notes...": "",
+ "Loading policy...": "Chargement de la politique...",
+ "Loading release notes...": "Chargement des notes de mise à jour...",
"Loading...": "Chargement de...",
"local": "local",
"Local": "Local",
"Location": "Localisation",
"Location access not allowed": "Accès à la localisation non autorisé",
- "Longest active chat": "",
- "Longest streak": "",
+ "Longest active chat": "Conversation active la plus longue",
+ "Longest streak": "Série la plus longue",
"Lost": "Perdu",
"Low": "Faible",
"LTR": "LTR",
"Made by Open WebUI Community": "Réalisé par la communauté OpenWebUI",
- "Make Default": "",
+ "Make Default": "Définir par défaut",
"Make password visible in the user interface": "Rendre visible les mots de passe dans l'interface",
- "Make Private": "",
- "Make Public": "",
+ "Make Private": "Rendre privé",
+ "Make Public": "Rendre public",
"Male": "Homme",
"Manage": "Gérer",
"Manage Connections": "Gérer les connexions",
"Manage Models": "Gérer les modèles",
"Manage Ollama": "Gérer Ollama",
- "Mapped Source": "",
+ "Mapped Source": "Source mappée",
"March": "Mars",
- "Mark all as read": "",
- "Mark as unread": "",
+ "Mark all as read": "Tout marquer comme lu",
+ "Mark as unread": "Marquer comme non lu",
"Markdown": "Markdown",
- "Market": "",
- "Matching tabs: {{count}}_one": "",
- "Matching tabs: {{count}}_many": "",
- "Matching tabs: {{count}}_other": "",
- "Max Snippets": "",
+ "Market": "Marché",
+ "Matching tabs: {{count}}_one": "Onglets correspondants : {{count}}",
+ "Matching tabs: {{count}}_many": "Onglets correspondants : {{count}}",
+ "Matching tabs: {{count}}_other": "Onglets correspondants : {{count}}",
+ "Max Snippets": "Nombre maximal d'extraits",
"Max tokens to retrieve (1024-32768, default 8192)": "Max tokens à récupérer (1024-32768, par défaut 8192)",
- "Maximum extra snippets returned per result. Set to 0 to disable them.": "",
+ "Maximum extra snippets returned per result. Set to 0 to disable them.": "Nombre maximal d'extraits supplémentaires retournés par résultat. Définissez à 0 pour les désactiver.",
"Maximum number of files per folder is {{max}}.": "Le nombre maximum de fichiers par dossier est de {{max}}.",
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Un maximum de 3 modèles peut être téléchargé en même temps. Veuillez réessayer ultérieurement.",
"May": "Mai",
"MBR": "Membre",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "Le support du MCP est expérimental et sa spécification évolue fréquemment, ce qui peut entraîner des incompatibilités. Le support de la spécification OpenAPI est directement maintenu par l'équipe Open WebUI, ce qui en fait l'option la plus fiable en termes de compatibilité.",
"Medium": "Moyen",
"Member removed successfully": "Membre supprimé avec succès",
@@ -1345,7 +1354,7 @@
"messages": "messages",
"Messages": "Messages",
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Les messages que vous envoyez après avoir créé votre lien ne seront pas partagés. Les utilisateurs disposant de l'URL pourront voir la conversation partagée.",
- "Metadata Field": "",
+ "Metadata Field": "Champ de métadonnées",
"Microsoft OneDrive": "Microsoft OneDrive",
"Microsoft OneDrive (personal)": "Microsoft OneDrive (personnel)",
"Microsoft OneDrive (work/school)": "Microsoft OneDrive (travail/école)",
@@ -1355,7 +1364,7 @@
"Mistral OCR": "Mistral OCR",
"Mistral OCR API Key required.": "Clé d'API pour Mistral OCR requise",
"MistralAI": "MistralAI",
- "Mo_day_of_week": "",
+ "Mo_day_of_week": "Lundi",
"Model": "Modèle",
"Model '{{modelName}}' has been successfully downloaded.": "Le modèle '{{modelName}}' a été téléchargé avec succès.",
"Model '{{modelTag}}' is already in queue for downloading.": "Le modèle '{{modelTag}}' est déjà dans la file d'attente pour le téléchargement.",
@@ -1364,52 +1373,52 @@
"Model {{name}} is now {{status}}": "Le modèle {{name}} est désormais {{status}}.",
"Model {{name}} is now hidden": "Le modèle {{name}} est maintenant masqué",
"Model {{name}} is now visible": "Le modèle {{name}} est maintenant visible",
- "Model added to pinned models": "",
- "Model added to selected models": "",
+ "Model added to pinned models": "Modèle ajouté aux modèles épinglés",
+ "Model added to selected models": "Modèle ajouté aux modèles sélectionnés",
"Model created successfully!": "Modèle créé avec succès !",
- "Model deleted successfully": "",
- "Model download started": "",
+ "Model deleted successfully": "Modèle supprimé avec succès",
+ "Model download started": "Téléchargement du modèle démarré",
"Model filesystem path detected. Model shortname is required for update, cannot continue.": "Chemin du système de fichiers de modèle détecté. Le nom court du modèle est requis pour la mise à jour, l'opération ne peut pas être poursuivie.",
"Model Filtering": "Filtrage de modèle",
"Model ID": "ID du modèle",
- "Model ID cannot contain whitespace.": "",
- "Model ID is already added": "",
+ "Model ID cannot contain whitespace.": "L'ID du modèle ne peut pas contenir d'espaces.",
+ "Model ID is already added": "L'ID du modèle est déjà ajouté",
"Model ID is required.": "L'ID du modèle est requis.",
"Model IDs": "ID des modèles",
- "Model is now private": "",
- "Model is now public": "",
- "Model list refreshed": "",
- "Model loaded successfully": "",
+ "Model is now private": "Le modèle est maintenant privé",
+ "Model is now public": "Le modèle est maintenant public",
+ "Model list refreshed": "Liste des modèles actualisée",
+ "Model loaded successfully": "Modèle chargé avec succès",
"Model Name": "Nom du modèle",
"Model name already exists, please choose a different one": "Le nom du modèle existe déjà, veuillez en choisir un autre",
"Model Name is required.": "Le nom du modèle est requis.",
"Model names and usage frequency": "Noms des modèles et fréquence d'utilisation",
"Model not found": "Modèle introuvable",
"Model not selected": "Modèle non sélectionné",
- "Model order saved successfully": "",
+ "Model order saved successfully": "Ordre des modèles enregistré avec succès",
"Model Params": "Réglages du modèle",
"Model Permissions": "Autorisations du modèle",
- "model profile": "",
- "Model providers": "",
- "Model removed from pinned models": "",
- "Model removed from selected models": "",
+ "model profile": "profil du modèle",
+ "Model providers": "Fournisseurs de modèles",
+ "Model removed from pinned models": "Modèle retiré des modèles épinglés",
+ "Model removed from selected models": "Modèle retiré des modèles sélectionnés",
"Model responses or outputs": "Les réponses des modèles",
"Model unloaded successfully": "Modèle déchargé avec succès",
"Model updated successfully": "Modèle mis à jour avec succès",
"Model Usage": "Utilisation des modèles",
- "Model: show or switch the current model.": "",
+ "Model: show or switch the current model.": "Modèle : afficher ou changer le modèle actuel.",
"Model(s) do not support file upload": "Le(s) modèle(s) ne supportent pas le téléversement de fichiers",
"Modelfile Content": "Contenu du Fichier de Modèle",
- "modelfile profile": "",
+ "modelfile profile": "profil du fichier modèle",
"Models": "Modèles",
"Models Access": "Accès aux modèles",
"Models configuration saved successfully": "Configuration des modèles enregistrée avec succès",
"Models imported successfully": "Modèles importés avec succès",
"Models Public Sharing": "Partage public des modèles",
"Models Sharing": "Partage des modèles",
- "Modified": "",
+ "Modified": "Modifié",
"Mojeek": "Mojeek",
- "Monday – Friday": "",
+ "Monday – Friday": "Lundi – Vendredi",
"Month": "Mois",
"Monthly": "Mensuel",
"More": "Plus",
@@ -1418,28 +1427,28 @@
"More Options": "Plus d'options",
"Move": "Déplacer",
"Moved {{name}}": "{{name}} déplacé",
- "Multipart Upload": "",
+ "Multipart Upload": "Téléversement multipartite",
"Mute": "Désactiver le son",
"Muted": "Son désactivé",
"My Terminal": "Mon terminal",
"Name": "Nom d'utilisateur",
- "Name and description are required": "",
+ "Name and description are required": "Le nom et la description sont requis",
"Name and ID are required, please fill them out": "Le nom et l'ID sont obligatoires, veuillez les remplir",
"Name is required": "Le nom est obligatoire",
"Name your knowledge base": "Nommez votre base de connaissances",
"Name, prompt, and model are required": "Le nom, le prompt et le modèle sont requis",
"Native": "Natif",
- "Navigate to Next Chat": "",
- "Navigate to Previous Chat": "",
+ "Navigate to Next Chat": "Naviguer vers la conversation suivante",
+ "Navigate to Previous Chat": "Naviguer vers la conversation précédente",
"Never": "Jamais",
"New": "Nouveaux",
"New Button": "Nouveau bouton",
"New calendar": "Nouveau calendrier",
"New Calendar": "Nouveau calendrier",
- "New chat": "",
+ "New chat": "Nouvelle conversation",
"New Chat": "Nouvelle conversation",
- "New directory": "",
- "New Directory": "",
+ "New directory": "Nouveau répertoire",
+ "New Directory": "Nouveau répertoire",
"New File": "Nouveau fichier",
"New Folder": "Nouveau dossier",
"New Function": "Nouvelle fonction",
@@ -1451,29 +1460,29 @@
"New Tool": "Nouvel outil",
"New Webhook": "Nouveau webhook",
"new-channel": "nouveau-canal",
- "Next": "",
+ "Next": "Suivant",
"Next message": "Message suivant",
- "Next month": "",
- "Next page": "",
+ "Next month": "Mois suivant",
+ "Next page": "Page suivante",
"Next run": "Prochaine exécution",
- "Next version": "",
+ "Next version": "Version suivante",
"No access grants. Private to you.": "Aucun partage. Visible uniquement par vous.",
"No actions found": "Aucune action trouvée",
"No activity data": "Aucune activité",
"No additional headers are sent unless configured.": "Aucun en-tête supplémentaire n'est envoyé sans configuration.",
"No authentication": "Aucune authentification",
"No automations found": "Aucune automatisation trouvée",
- "No channels": "",
+ "No channels": "Aucun canal",
"No chat alerts": "Aucune alerte de conversation",
"No chat history": "Aucun historique de conversation",
"No chat to compact": "Aucune conversation à compacter",
"No chat to fork": "Aucune conversation à dupliquer",
- "No chats": "",
+ "No chats": "Aucune conversation",
"No chats found": "Aucune discussion trouvée",
"No chats found for this user.": "Pas de conversation trouvée pour cet utilisateur.",
"No chats found.": "Pas de conversation trouvée.",
"No content": "Pas de contenu",
- "No content available": "",
+ "No content available": "Aucun contenu disponible",
"No content found": "Aucun contenu trouvé",
"No content to speak": "Rien à signaler",
"No conversation to save": "Aucune conversation à sauvegarder",
@@ -1511,7 +1520,7 @@
"No notes found": "Aucune note trouvée",
"No notification targets configured.": "Aucune cible de notification configurée.",
"No one": "Personne",
- "No output items": "",
+ "No output items": "Aucun élément de sortie",
"No pinned messages": "Aucun message épinglé",
"No prompts found": "Aucun prompt trouvé",
"No Repeat": "Aucune répétition",
@@ -1526,7 +1535,7 @@
"No suggestion prompts": "Aucun prompt suggéré",
"No Terminal connection configured.": "Aucune connexion à un terminal configurée.",
"No terminal connections configured.": "Aucune connexion à un terminal configurée.",
- "No text differences": "",
+ "No text differences": "Aucune différence de texte",
"No tool server connections configured.": "Aucune connexion à un serveur d'outils configurée.",
"No tools accessible": "Aucun outil accessible",
"No tools found": "Aucun outil trouvé",
@@ -1538,70 +1547,71 @@
"No webhooks yet": "Aucun webhook trouvé",
"Node Ids": "ID des noeuds",
"None": "Aucun",
- "Not configured": "",
+ "Not configured": "Non configuré",
"Not factually correct": "Non factuellement correct",
"Not helpful": "Pas utile",
"Not Registered": "Non enregistré",
"Not scheduled": "Non planifié",
"Note": "Note",
"Note deleted successfully": "Note supprimée avec succès",
- "Note Menu": "",
+ "Note Menu": "Menu des notes",
"Notes": "Notes",
"Notes Public Sharing": "Partage public des notes",
"Notes Sharing": "Partage des notes",
- "Nothing to compact": "",
+ "Nothing to compact": "Rien à compacter",
"November": "Novembre",
"OAuth": "OAuth",
"OAuth 2.1": "OAuth 2.1",
"OAuth 2.1 (Static)": "OAuth 2.1 (Statique)",
- "OAuth discovery successful": "",
+ "OAuth discovery successful": "Découverte OAuth réussie",
"OAuth ID": "ID OAuth",
- "OAuth Resource Parameter": "",
- "OAuth Scopes": "",
+ "OAuth Resource Parameter": "Paramètre de ressource OAuth",
+ "OAuth Scopes": "Portées OAuth",
"OAuth Server URL": "URL du serveur OAuth",
"OAuth session disconnected": "Session OAuth déconnectée",
"October": "Octobre",
+ "of a website's sticky header": "d'un en-tête collant d'un site web",
"Off": "Désactivé",
"Okay, Let's Go!": "D'accord, allons-y !",
"OLED Dark": "Noir OLED",
"Ollama": "Ollama",
"Ollama API settings updated": "Réglages de l'API Ollama mis à jour",
- "Omit": "",
+ "Omit": "Omettre",
"On": "Activé",
"Once": "Une fois",
- "Only active during Voice Mode.": "",
+ "Only active during Voice Mode.": "Uniquement actif en mode vocal.",
"Only active when \"Paste Large Text as File\" setting is toggled on.": "Uniquement lorsque le paramètre \"Coller un texte volumineux comme fichier\" est activé.",
- "Only active when a tool call is waiting for approval.": "",
+ "Only active when a tool call is waiting for approval.": "Uniquement actif lorsqu'un appel d'outil attend une approbation.",
"Only active when the chat input is in focus and an LLM is generating a response.": "Uniquement lorsque la zone de saisie de la conversation est active et qu'un LLM génère une réponse.",
"Only active when the chat input is in focus.": "Uniquement lorsque la zone de saisie de la conversation est active.",
"Only alphanumeric characters and hyphens are allowed": "Seuls les caractères alphanumériques et les tirets sont autorisés",
"Only alphanumeric characters and hyphens are allowed in the command string.": "Seuls les caractères alphanumériques et les tirets sont autorisés dans la chaîne de commande.",
"Only can be triggered when the chat input is in focus.": "Ne peut être déclenché que lorsque le champ de saisie est actif.",
"Only collections can be edited, create a new knowledge base to edit/add documents.": "Seules les collections peuvent être modifiées, créez une nouvelle base de connaissances pour modifier/ajouter des documents.",
- "Only install functions from sources you trust.": "",
- "Only install tools from sources you trust.": "",
+ "Only install functions from sources you trust.": "N'installez des fonctions que depuis des sources de confiance.",
+ "Only install tools from sources you trust.": "N'installez des outils que depuis des sources de confiance.",
"Only invited users can access": "Limité aux utilisateurs sélectionnés",
"Only select users and groups with permission can access": "Seuls les utilisateurs et groupes autorisés peuvent accéder",
"Only sync new/updated chats": "Synchroniser uniquement les conversations nouvelles/modifiées",
- "Only when away": "",
+ "Only when away": "Uniquement en absence",
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Oups ! Il semble que l'URL soit invalide. Veuillez vérifier à nouveau et réessayer.",
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Oups ! Vous utilisez une méthode non prise en charge (frontend uniquement). Veuillez servir l'interface Web à partir du backend.",
- "Open": "",
- "Open automation": "",
- "Open create menu": "",
+ "Open": "Ouvrir",
+ "Open automation": "Ouvrir l'automatisation",
+ "Open create menu": "Ouvrir le menu de création",
"Open file": "Ouvrir le fichier",
- "Open Folder": "",
+ "Open Folder": "Ouvrir le dossier",
"Open in full screen": "Ouvrir en plein écran",
"Open in new tab": "Ouvrir dans un nouvel onglet",
"Open link": "Ouvrir le lien",
"Open modal to configure connection": "Ouvrir la fenêtre modale pour configurer la connexion",
"Open Model Selector": "Ouvrir la liste des modèles",
- "Open note": "",
+ "Open note": "Ouvrir la note",
"Open Settings": "Ouvrir les réglages",
- "Open settings.": "",
+ "Open settings.": "Ouvrir les paramètres.",
"Open Sidebar": "Ouvrir la barre latérale",
- "Open terminal": "",
- "Open the changelog modal after sign-in when enabled.": "",
+ "Open terminal": "Ouvrir le terminal",
+ "Open the changelog modal after sign-in when enabled.": "Ouvrir la fenêtre modale du journal des modifications après la connexion si activé.",
"Open User Profile Menu": "Ouvrir le menu du profil utilisateur",
"Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI peut utiliser les outils fournis par n'importe quel serveur OpenAPI.",
"Open WebUI version": "Version d'Open WebUI",
@@ -1610,48 +1620,48 @@
"OpenAI API Key is required.": "Une clé d'API OpenAI est requise.",
"OpenAI API settings updated": "Réglages de l'API OpenAI mis à jour",
"OpenAI URL/Key required.": "URL/Clé OpenAI requise.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "Spécification OpenAPI",
"openapi.json URL or Path": "URL ou chemin openapi.json",
"optional": "optionnel",
"Optional": "Facultatif",
"or": "ou",
- "Orchestrator": "",
+ "Orchestrator": "Orchestrateur",
"Ordered List": "Liste ordonnée",
- "Original": "",
+ "Original": "Original",
"Other": "Autre",
- "out of": "",
+ "out of": "sur",
"Output": "Sortie",
"OUTPUT": "SORTIE",
+ "Overcome procrastination": "Surmonter la procrastination",
"Overview": "Aperçu",
- "PaddleOCR-vl": "",
- "PaddleOCR-vl API URL required.": "",
+ "PaddleOCR-vl": "PaddleOCR-vl",
+ "PaddleOCR-vl API URL required.": "URL de l'API PaddleOCR-vl requise.",
"page": "page",
"Page": "Page",
"Parameters": "Réglages",
"Parent message not found": "Message parent introuvable",
"Participate in community leaderboards and evaluations! Syncing aggregated usage stats helps drive research and improvements to Open WebUI. Your privacy is paramount: no message content is ever shared.": "Participez aux classements et évaluations de la communauté ! La synchronisation des statistiques d'utilisation agrégées contribue à l'amélioration d'Open WebUI. Votre vie privée est primordiale : aucun contenu de message n'est jamais partagé.",
- "Passthrough params": "",
+ "Passthrough params": "Paramètres de passage",
"Password": "Mot de passe",
- "Password updated. Please sign in again.": "",
+ "Password updated. Please sign in again.": "Mot de passe mis à jour. Veuillez vous reconnecter.",
"Passwords do not match.": "Les mots de passe ne correspondent pas.",
- "Path": "",
+ "Path": "Chemin",
"Path copied": "Chemin copié",
"Paused": "En pause",
"PDF document (.pdf)": "Document au format PDF (.pdf)",
- "pdf, docx, pptx, xlsx": "",
- "Peak tokens": "",
+ "pdf, docx, pptx, xlsx": "pdf, docx, pptx, xlsx",
+ "Peak tokens": "Tokens de pointe",
"pending": "en attente",
"Pending": "en attente",
- "Per automation": "",
- "Per chat": "",
+ "Per automation": "Par automatisation",
+ "Per chat": "Par conversation",
"Permission denied when accessing media devices": "Accès aux appareils multimédias refusé",
"Permission denied when accessing microphone": "Accès au microphone refusé",
"Permission denied when accessing microphone: {{error}}": "Accès au microphone refusé : {{error}}",
"Permissions": "Permissions",
- "Permissions reset to defaults": "",
+ "Permissions reset to defaults": "Permissions réinitialisées aux valeurs par défaut",
"Persistent": "Persistant",
- "Personal": "",
+ "Personal": "Personnel",
"Pin": "Épingler",
"Pin to Sidebar": "Épingler à la barre latérale",
"Pinned": "Épinglé",
@@ -1659,12 +1669,12 @@
"Pipe": "Pipeline",
"Pipeline deleted successfully": "Pipeline supprimée avec succès",
"Pipeline downloaded successfully": "Pipeline téléchargée avec succès",
- "Pipelines are a plugin system with arbitrary code execution.": "",
+ "Pipelines are a plugin system with arbitrary code execution.": "Les pipelines sont un système de plugins avec exécution de code arbitraire.",
"Pipelines Not Detected": "Aucun pipelines détecté",
"Plain text (.md)": "Texte brut (.md)",
"Plain text (.txt)": "Texte (.txt)",
"Playground": "Playground",
- "Playground Chat": "",
+ "Playground Chat": "Conversation en mode bac à sable",
"Please carefully review the following warnings:": "Veuillez lire attentivement les avertissements suivants :",
"Please connect all required integrations before sending a message": "Veuillez connecter toutes les intégrations requises avant d'envoyer un message",
"Please do not close the settings page while loading the model.": "Veuillez ne pas fermer les réglages pendant le chargement du modèle.",
@@ -1675,41 +1685,41 @@
"Please enter a valid path": "Veuillez entrer un chemin d'accès valide",
"Please enter a valid URL": "Veuillez entrer une URL valide",
"Please enter a valid URL.": "Veuillez entrer une URL valide.",
- "Please enter Client ID and Client Secret": "",
+ "Please enter Client ID and Client Secret": "Veuillez entrer l'ID client et le secret client",
"Please fill in all fields.": "Veuillez remplir tous les champs.",
"Please register the OAuth client": "Veuillez enregistrer le client OAuth",
- "Please save the connection before authorizing OAuth": "",
+ "Please save the connection before authorizing OAuth": "Veuillez enregistrer la connexion avant d'autoriser OAuth",
"Please save the connection to persist the OAuth client information and do not change the ID": "Veuillez enregistrer la connexion pour conserver les informations du client OAuth et ne modifiez pas l'ID",
"Please select a model.": "Veuillez sélectionner un modèle.",
"Please select a reason": "Veuillez sélectionner une raison",
"Please select a valid JSON file": "Veuillez sélectionner un fichier JSON valide",
"Please select at least one user for Direct Message channel.": "Veuillez sélectionner au moins un utilisateur pour un canal de message direct.",
"Please wait until all files are uploaded.": "Veuillez patienter jusqu'à ce que tous les fichiers soient téléchargés.",
- "PNG, JPEG, WebP, or GIF. Up to 5 MiB and 25 megapixels.": "",
- "Policy changes apply to newly provisioned terminals. Refresh matching terminals to apply them to existing terminals.": "",
- "Policy ID": "",
- "Policy ID is required": "",
- "Policy is still loading": "",
+ "PNG, JPEG, WebP, or GIF. Up to 5 MiB and 25 megapixels.": "PNG, JPEG, WebP ou GIF. Jusqu'à 5 MiO et 25 mégapixels.",
+ "Policy changes apply to newly provisioned terminals. Refresh matching terminals to apply them to existing terminals.": "Les modifications de politique s'appliquent aux nouveaux terminaux configurés. Actualisez les terminaux correspondants pour appliquer les modifications aux terminaux existants.",
+ "Policy ID": "ID de la politique",
+ "Policy ID is required": "L'ID de la politique est requis",
+ "Policy is still loading": "La politique est encore en cours de chargement",
"Ports": "Ports",
"Positive attitude": "Attitude positive",
"Prefer not to say": "Je préfère ne pas répondre",
- "Preferences": "",
+ "Preferences": "Préférences",
"Prefix ID": "ID de préfixe",
"Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Le préfixe ID est utilisé pour éviter les conflits avec d'autres connexions en ajoutant un préfixe aux ID de modèle - laissez vide pour désactiver",
- "Preparing {{NAME}}...": "",
- "Preparing download...": "",
- "Press keys...": "",
+ "Preparing {{NAME}}...": "Préparation de {{NAME}}...",
+ "Preparing download...": "Préparation du téléchargement...",
+ "Press keys...": "Appuyez sur les touches...",
"Prevent File Creation": "Empêcher la création de fichier",
"Preview": "Aperçu",
- "Preview Access": "",
- "Preview failed": "",
- "Previous": "",
+ "Preview Access": "Accès à l'aperçu",
+ "Preview failed": "Échec de l'aperçu",
+ "Previous": "Précédent",
"Previous 30 days": "30 derniers jours",
"Previous 7 days": "7 derniers jours",
"Previous message": "Message précédent",
- "Previous month": "",
- "Previous page": "",
- "Previous version": "",
+ "Previous month": "Mois précédent",
+ "Previous page": "Page précédente",
+ "Previous version": "Version précédente",
"Private": "Privé",
"Private conversation between selected users": "Conversation privée entre les utilisateurs sélectionnés",
"Production version updated": "Version active mise à jour",
@@ -1717,23 +1727,23 @@
"Prompt": "Prompt",
"Prompt Content": "Contenu du prompt",
"Prompt created successfully": "Prompt créé avec succès",
- "Prompt Menu": "",
+ "Prompt Menu": "Menu des invites",
"Prompt Name": "Nom du prompt",
"Prompt updated successfully": "Prompt mis à jour avec succès",
"Prompts": "Prompts",
"Prompts Access": "Accès aux prompts",
"Prompts Public Sharing": "Partage public des prompts",
"Prompts Sharing": "Partage de prompts",
- "Provider": "",
+ "Provider": "Fournisseur",
"Public": "Public",
"Pull \"{{searchValue}}\" from Ollama.com": "Récupérer « {{searchValue}} » depuis Ollama.com",
"Pull a model from Ollama.com": "Télécharger un modèle depuis Ollama.com",
"Pull Model": "Télécharger le modèle",
"Pyodide file browser": "Explorateur de fichiers Pyodide",
- "Quality": "",
- "Query failed": "",
+ "Quality": "Qualité",
+ "Query failed": "Échec de la requête",
"Querying": "Requête en cours",
- "Queued messages": "",
+ "Queued messages": "Messages en file d'attente",
"Quick Actions": "Actions rapides",
"Ran {{COUNT}} analyses": "{{COUNT}} analyses effectuées",
"Ran {{COUNT}} analysis": "{{COUNT}} analyse effectuée",
@@ -1742,19 +1752,19 @@
"Read": "Lire",
"Read Aloud": "Lire à haute voix",
"Read more →": "En savoir plus →",
- "Read only": "",
+ "Read only": "Lecture seule",
"Read Only": "Lecture seule",
- "Read the docs": "",
- "Read-only": "",
+ "Read the docs": "Lire la documentation",
+ "Read-only": "Lecture seule",
"Read-Only Access": "Accès en lecture seule",
"Reason": "Raison",
"Reasoning text...": "Texte de raisonnement...",
- "Rebuild knowledge file, knowledge search, and memory vectors using the current embedding model.": "",
- "Receives matching events across the instance, including system/config events and events associated with any user.": "",
- "Receives matching events that are not associated with a user.": "",
- "Receives matching user-associated events only when the actor, user subject, or user data matches these users or current group members. System/config events are not sent.": "",
+ "Rebuild knowledge file, knowledge search, and memory vectors using the current embedding model.": "Reconstruire le fichier de connaissances, la recherche de connaissances et les vecteurs de mémoire à l'aide du modèle d'embedding actuel.",
+ "Receives matching events across the instance, including system/config events and events associated with any user.": "Reçoit les événements correspondants dans l'instance, y compris les événements système/configuration et les événements associés à n'importe quel utilisateur.",
+ "Receives matching events that are not associated with a user.": "Reçoit les événements correspondants non associés à un utilisateur.",
+ "Receives matching user-associated events only when the actor, user subject, or user data matches these users or current group members. System/config events are not sent.": "Reçoit les événements associés à un utilisateur uniquement lorsque l'acteur, le sujet utilisateur ou les données utilisateur correspondent à ces utilisateurs ou aux membres actuels du groupe. Les événements système/configuration ne sont pas envoyés.",
"Recently Used": "Récemment utilisé",
- "Recommended": "",
+ "Recommended": "Recommandé",
"Reconnected": "Reconnecté",
"Record": "Enregistrement",
"Record voice": "Enregistrer la voix",
@@ -1762,22 +1772,22 @@
"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.": "Réduit la probabilité de générer du contenu incohérent. Une valeur plus élevée (ex. : 100) produira des réponses plus variées, tandis qu'une valeur plus faible (ex. : 10) sera plus conservatrice.",
"Reference Chats": "Discussions de référence",
"Refresh": "Actualiser",
- "Refresh requested: {{count}} terminal(s)_one": "",
- "Refresh requested: {{count}} terminal(s)_many": "",
- "Refresh requested: {{count}} terminal(s)_other": "",
- "Refresh Terminals": "",
- "Refreshing...": "",
+ "Refresh requested: {{count}} terminal(s)_one": "Actualisation demandée : {{count}} terminal",
+ "Refresh requested: {{count}} terminal(s)_many": "Actualisation demandée : {{count}} terminaux",
+ "Refresh requested: {{count}} terminal(s)_other": "Actualisation demandée : {{count}} terminaux",
+ "Refresh Terminals": "Actualiser les terminaux",
+ "Refreshing...": "Actualisation en cours...",
"Refused when it shouldn't have": "Refusé alors qu'il n'aurait pas dû l'être",
"Regenerate": "Regénérer",
"Regenerate Response": "Regénérer la réponse",
- "Region and language of the search results, e.g. en-us.": "",
+ "Region and language of the search results, e.g. en-us.": "Région et langue des résultats de recherche, par ex. fr-fr.",
"Register Again": "Enregistrer à nouveau",
"Register Client": "Enregistrer le client",
"Registered": "Enregistré",
- "registered to": "",
+ "registered to": "enregistré à",
"Registration failed": "Échec de l'enregistrement",
"Registration successful": "Enregistrement réussi",
- "Reindex Embedding Data": "",
+ "Reindex Embedding Data": "Réindexer les données d'embedding",
"Release Notes": "Notes de mise à jour",
"Releases": "Livraisons",
"Relevance": "Pertinence",
@@ -1790,34 +1800,34 @@
"Remove File": "Retirer le fichier",
"Remove from favorites": "Retirer des favoris",
"Remove image": "Retirer l'image",
- "Remove Pinned Model": "",
- "Remove prompt suggestion": "",
- "Remove Selected Model": "",
- "Removing {{count}} stale files..._one": "",
- "Removing {{count}} stale files..._many": "",
- "Removing {{count}} stale files..._other": "",
+ "Remove Pinned Model": "Retirer le modèle épinglé",
+ "Remove prompt suggestion": "Retirer la suggestion d'invite",
+ "Remove Selected Model": "Retirer le modèle sélectionné",
+ "Removing {{count}} stale files..._one": "Suppression de {{count}} fichier obsolète...",
+ "Removing {{count}} stale files..._many": "Suppression de {{count}} fichiers obsolètes...",
+ "Removing {{count}} stale files..._other": "Suppression de {{count}} fichiers obsolètes...",
"Rename": "Renommer",
"Renamed to {{name}}": "Renommé en {{name}}",
- "Reorder": "",
- "Repeat": "",
- "Replace": "",
+ "Reorder": "Réorganiser",
+ "Repeat": "Répéter",
+ "Replace": "Remplacer",
"Reply": "Répondre",
"Reply in Thread": "Répondre dans le fil de discussion",
"Reply to thread...": "Répondre au fil de discussion...",
"Replying to {{NAME}}": "En réponse à {{NAME}}",
"required": "requis",
- "Research Knowledge": "",
+ "Research Knowledge": "Rechercher des connaissances",
"Reset": "Réinitialiser",
"Reset All Models": "Réinitialiser tous les modèles",
- "Reset all permissions to their initial configuration values": "",
- "Reset Defaults": "",
- "Reset group permissions to match the current default user permissions": "",
- "Reset knowledge base?": "",
- "Reset persisted files": "",
- "Reset to Defaults": "",
+ "Reset all permissions to their initial configuration values": "Réinitialiser toutes les permissions à leurs valeurs de configuration initiales",
+ "Reset Defaults": "Réinitialiser les valeurs par défaut",
+ "Reset group permissions to match the current default user permissions": "Réinitialiser les permissions du groupe pour correspondre aux permissions utilisateur par défaut actuelles",
+ "Reset knowledge base?": "Réinitialiser la base de connaissances ?",
+ "Reset persisted files": "Réinitialiser les fichiers persistants",
+ "Reset to Defaults": "Réinitialiser aux valeurs par défaut",
"Reset view": "Réinitialiser la vue",
- "Reset zoom": "",
- "Resize panel": "",
+ "Reset zoom": "Réinitialiser le zoom",
+ "Resize panel": "Redimensionner le panneau",
"Response": "Réponse",
"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 réponse ne peuvent pas être activées car les autorisations du site web ont été refusées. Veuillez vérifier les réglages de votre navigateur pour accorder l'accès nécessaire.",
"Responses": "Responses",
@@ -1829,47 +1839,47 @@
"Retrieved {{count}} sources_many": "{{count}} sources récupérées",
"Retrieved {{count}} sources_other": "{{count}} sources récupérées",
"Retrieved 1 source": "Une source récupérée",
- "Retry": "",
- "Rewrite the selected text.": "",
+ "Retry": "Réessayer",
+ "Rewrite the selected text.": "Réécrire le texte sélectionné.",
"Role": "Rôle",
"RTL": "RTL",
"Run": "Exécuter",
- "Run AI on your own terms. Connect any model, extend with code, and protect what matters without compromise. Your models, your data, your machine, wherever you open it.": "",
+ "Run AI on your own terms. Connect any model, extend with code, and protect what matters without compromise. Your models, your data, your machine, wherever you open it.": "Exécutez l'IA à vos propres conditions. Connectez n'importe quel modèle, étendez-le avec du code et protégez ce qui compte sans compromis. Vos modèles, vos données, votre machine, où que vous l'ouvriez.",
"Run All": "Tout exécuter",
- "Run cell (⌘+Enter)": "",
+ "Run cell (⌘+Enter)": "Exécuter la cellule (⌘+Entrée)",
"Run now": "Exécuter maintenant",
"Run Now": "Exécuter maintenant",
- "Run tools without asking for approval.": "",
+ "Run tools without asking for approval.": "Exécuter les outils sans demander d'approbation.",
"Running": "Exécution",
- "Running Open WebUI for a team?": "",
+ "Running Open WebUI for a team?": "Utilisez-vous Open WebUI pour une équipe ?",
"Running...": "Exécution...",
- "runs": "",
- "Runs": "",
- "Sa_day_of_week": "",
+ "runs": "exécutions",
+ "Runs": "Exécutions",
+ "Sa_day_of_week": "Samedi",
"Save": "Enregistrer",
"Save & Create": "Enregistrer & Créer",
"Save & Update": "Enregistrer & Mettre à jour",
"Save As Copy": "Enregistrer comme copie",
"Save Chat": "Enregistrer la conversation",
"Saved": "Enregistré",
- "Saving...": "",
+ "Saving...": "Enregistrement en cours...",
"Schedule": "Planifier",
"Scheduled time must be in the future": "L'heure prévue doit être située dans le futur",
- "Screen Share": "",
- "Scroll to bottom": "",
+ "Screen Share": "Partage d'écran",
+ "Scroll to bottom": "Faire défiler vers le bas",
"Scroll to Top": "Retour en haut",
"Search": "Recherche",
"Search a model": "Rechercher un modèle",
- "Search actions": "",
+ "Search actions": "Rechercher des actions",
"Search all emojis": "Rechercher tous les emojis",
"Search Automations": "Rechercher des automatisations",
- "Search channels": "",
+ "Search channels": "Rechercher des canaux",
"Search Chats": "Rechercher des conversations",
"Search Collection": "Rechercher une collection",
"Search Files": "Rechercher des fichiers",
- "Search files and contents": "",
- "Search filters": "",
- "Search folders": "",
+ "Search files and contents": "Rechercher des fichiers et leur contenu",
+ "Search filters": "Rechercher des filtres",
+ "Search folders": "Rechercher des dossiers",
"search for archived chats": "Rechercher les conversations archivées",
"search for folders": "Rechercher tous les dossiers",
"search for pinned chats": "Rechercher les conversations épinglées",
@@ -1883,15 +1893,15 @@
"Search Models": "Rechercher des modèles",
"Search Notes": "Rechercher des notes",
"Search options": "Options de recherche",
- "Search or add pattern": "",
+ "Search or add pattern": "Rechercher ou ajouter un motif",
"Search Prompts": "Rechercher des prompts",
- "Search skills": "",
+ "Search skills": "Rechercher des compétences",
"Search Skills": "Rechercher des skills",
"Search the internet": "Cherche sur Internet",
- "Search tools": "",
+ "Search tools": "Rechercher des outils",
"Search Tools": "Rechercher des outils",
- "Search translations": "",
- "Search users or groups": "",
+ "Search translations": "Rechercher des traductions",
+ "Search users or groups": "Rechercher des utilisateurs ou des groupes",
"Searched {{count}} sites": "{{count}} sites recherchés",
"Searching": "Recherche en cours",
"Searching \"{{searchQuery}}\"": "Recherche de « {{searchQuery}} »",
@@ -1900,7 +1910,7 @@
"See readme.md for instructions": "Voir le fichier readme.md pour les instructions",
"Select": "Choisir",
"Select {{modelName}} model": "Sélectionner le modèle {{modelName}}",
- "Select {{name}}": "",
+ "Select {{name}}": "Sélectionner {{name}}",
"Select a base model (e.g. llama3, gpt-4o)": "Chosir un modèle de base (ex : lamma3, gpt-4o)",
"Select a conversation to preview": "Choisir une conversation pour la prévisualiser",
"Select a engine": "Sélectionnez un moteur",
@@ -1917,54 +1927,54 @@
"Select a theme": "Sélectionnez un thème",
"Select a tool": "Sélectionnez un outil",
"Select a voice": "Sélectionnez une voix",
- "Select Action": "",
+ "Select Action": "Sélectionner une action",
"Select All": "Tout sélectionner",
"Select an auth method": "Veuillez sélectionner une méthode de connexion",
"Select an embedding model engine": "Sélectionnez un moteur de modèle d'embedding",
"Select an engine": "Sélectionnez un moteur",
- "Select an instance": "",
+ "Select an instance": "Sélectionnez une instance",
"Select an Ollama instance": "Sélectionnez une instance Ollama",
"Select an option": "Sélectionner une option",
"Select an output format": "Sélectionnez un format de sortie",
"Select dtype": "Sélectionner le dtype",
"Select Engine": "Sélectionnez le moteur",
- "Select Filter": "",
+ "Select Filter": "Sélectionnez le filtre",
"Select how to split message text for TTS requests": "Sélectionnez comment diviser le texte du message pour les requêtes TTS",
"Select Knowledge": "Sélectionnez une connaissance",
"Select Method": "Sélectionner une méthode",
"Select model": "Sélectionnez un modèle",
"Select only one model to call": "Sélectionnez seulement un modèle pour appeler",
- "Select options": "",
- "Select Skill": "",
- "Select Tool": "",
+ "Select options": "Sélectionnez des options",
+ "Select Skill": "Sélectionnez une compétence",
+ "Select Tool": "Sélectionnez un outil",
"Select view": "Sélectionner la vue",
- "Selected": "",
+ "Selected": "Sélectionné",
"Selected model: {{modelName}}": "Modèle sélectionné : {{modelName}}",
"Selected model(s) do not support image inputs": "Les modèle(s) sélectionné(s) ne prennent pas en charge les entrées d'images",
- "Selected models define incompatible Chat Variables.": "",
+ "Selected models define incompatible Chat Variables.": "Les modèles sélectionnés définissent des variables de conversation incompatibles.",
"semantic": "sémantique",
"Send": "Envoyer",
"Send a Message": "Envoyer un message",
- "Send events for": "",
+ "Send events for": "Envoyer des événements pour",
"Send message": "Envoyer un message",
"Send now": "Envoyer maintenant",
- "Send Test": "",
+ "Send Test": "Envoyer un test",
"September": "Septembre",
"Server connection failed": "Connexion au serveur échouée",
"Server connection verified": "Connexion au serveur vérifiée",
- "Service Account": "",
- "Services": "",
+ "Service Account": "Compte de service",
+ "Services": "Services",
"Session": "Session",
- "Session expired. Please sign in again.": "",
- "Set a local zoom level for the app interface.": "",
+ "Session expired. Please sign in again.": "Session expirée. Veuillez vous reconnecter.",
+ "Set a local zoom level for the app interface.": "Définir un niveau de zoom local pour l'interface de l'application.",
"Set as default": "Définir comme valeur par défaut",
- "Set as Pinned Model": "",
+ "Set as Pinned Model": "Définir comme modèle épinglé",
"Set as Production": "Définir comme version active",
- "Set as Selected Model": "",
+ "Set as Selected Model": "Définir comme modèle sélectionné",
"Set embedding model": "Définir le modèle d'embedding",
"Set embedding model (e.g. {{model}})": "Définir le modèle d'embedding (par ex. {{model}})",
"Set reranking model (e.g. {{model}})": "Définir le modèle de ré-ranking (par ex. {{model}})",
- "Set system-wide interface defaults for every account. Personal settings override these defaults.": "",
+ "Set system-wide interface defaults for every account. Personal settings override these defaults.": "Définir les valeurs par défaut de l'interface pour tous les comptes. Les paramètres personnels remplacent ces valeurs par défaut.",
"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.": "Définir le nombre de couches qui seront déchargées sur le GPU. Augmenter cette valeur peut améliorer considérablement les performances pour les modèles optimisés pour l'accélération GPU, mais peut également consommer plus d'énergie et de ressources 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.": "Définir le nombre de threads de travail utilisés pour le calcul. Cette option contrôle combien de threads sont utilisés pour traiter les demandes entrantes simultanément. L'augmentation de cette valeur peut améliorer les performances sous de fortes charges de travail concurrentes mais peut également consommer plus de ressources CPU.",
"Set whisper model": "Choisir le modèle Whisper",
@@ -1975,10 +1985,10 @@
"Sets the size of the context window used to generate the next token.": "Définit la taille de la fenêtre de contexte utilisée pour générer le prochain token.",
"Setting": "Réglage",
"Settings": "Réglages",
- "settings configured": "",
+ "settings configured": "paramètres configurés",
"Settings Permissions": "Autorisations des paramètres",
"Settings saved successfully!": "Réglages enregistrés avec succès !",
- "Settings: open settings.": "",
+ "Settings: open settings.": "Paramètres : ouvrir les paramètres.",
"settings.admin.analytics.title": "Analytique",
"settings.admin.audio.additionalParameters.description": "Entrez les paramètres supplémentaires de requête TTS compatible OpenAI au format JSON.",
"settings.admin.audio.additionalParameters.label": "Paramètres supplémentaires",
@@ -1987,13 +1997,13 @@
"settings.admin.audio.mistralSttModel.description": "Laissez vide pour utiliser le modèle par défaut (voxtral-mini-latest).",
"settings.admin.audio.mistralSttModel.label": "Modèle de Speech-to-Text",
"settings.admin.audio.outputFormat.label": "Format de sortie",
- "settings.admin.audio.requestFormat.description": "",
- "settings.admin.audio.requestFormat.label": "",
+ "settings.admin.audio.requestFormat.description": "Format de la requête audio pour les appels d'outils.",
+ "settings.admin.audio.requestFormat.label": "Format de la requête",
"settings.admin.audio.responseSplitting.description": "Contrôle la façon dont le texte des messages est divisé pour les demandes de Text-to-Speech. « ponctuation » divise en phrases, « paragraphes » divise en paragraphes et « aucun » garde le message en tant que chaîne de texte unique.",
- "settings.admin.audio.responseSplitting.label": "",
+ "settings.admin.audio.responseSplitting.label": "Division de la réponse",
"settings.admin.audio.sections.speechToText.title": "Reconnaissance vocale",
"settings.admin.audio.sections.textToSpeech.title": "Text-to-Speech",
- "settings.admin.audio.speechToTextEngine.description": "",
+ "settings.admin.audio.speechToTextEngine.description": "Moteur utilisé pour la reconnaissance vocale.",
"settings.admin.audio.speechToTextEngine.label": "Moteur de reconnaissance vocale",
"settings.admin.audio.sttAzureApiKey.label": "Clé API",
"settings.admin.audio.sttAzureBaseUrl.label": "URL du point de terminaison",
@@ -2007,9 +2017,9 @@
"settings.admin.audio.sttOpenaiApiKey.label": "Clé API",
"settings.admin.audio.sttWhisperModel.description": "Open WebUI utilise faster-whisper en interne.",
"settings.admin.audio.sttWhisperModel.label": "Modèle de Speech-to-Text",
- "settings.admin.audio.supportedMimeTypes.description": "",
+ "settings.admin.audio.supportedMimeTypes.description": "Types MIME pris en charge pour les fichiers audio.",
"settings.admin.audio.supportedMimeTypes.label": "Types MIME pris en charge",
- "settings.admin.audio.textToSpeechEngine.description": "",
+ "settings.admin.audio.textToSpeechEngine.description": "Moteur utilisé pour la synthèse vocale.",
"settings.admin.audio.textToSpeechEngine.label": "Moteur de Text-to-Speech",
"settings.admin.audio.title": "Audio",
"settings.admin.audio.ttsApiKey.label": "Clé API",
@@ -2022,147 +2032,147 @@
"settings.admin.audio.ttsOpenaiApiBaseUrl.label": "URL de base de l'API",
"settings.admin.audio.ttsOpenaiApiKey.label": "Clé API",
"settings.admin.audio.ttsVoice.label": "Voix de Text-to-Speech",
- "settings.admin.audio.updateModel.label": "",
+ "settings.admin.audio.updateModel.label": "Mettre à jour le modèle",
"settings.admin.audio.useChatCompletionsApi.description": "Utilise le endpoint /v1/chat/completions au lieu de /v1/audio/transcriptions pour une meilleure précision potentielle.",
"settings.admin.audio.useChatCompletionsApi.label": "Utiliser l'API Chat Completions",
- "settings.admin.authentication.adminContactEmail.description": "",
+ "settings.admin.authentication.adminContactEmail.description": "Email de contact de l'administrateur pour les utilisateurs.",
"settings.admin.authentication.adminContactEmail.label": "Email de contact de l'administrateur",
- "settings.admin.authentication.adminDetails.description": "",
- "settings.admin.authentication.adminDetails.label": "",
- "settings.admin.authentication.adminRoles.description": "",
- "settings.admin.authentication.adminRoles.label": "",
- "settings.admin.authentication.allowedDomains.description": "",
- "settings.admin.authentication.allowedDomains.label": "",
- "settings.admin.authentication.allowedEndpoints.description": "",
+ "settings.admin.authentication.adminDetails.description": "Détails de l'administrateur pour l'interface.",
+ "settings.admin.authentication.adminDetails.label": "Détails de l'administrateur",
+ "settings.admin.authentication.adminRoles.description": "Rôles d'administrateur avec accès complet.",
+ "settings.admin.authentication.adminRoles.label": "Rôles d'administrateur",
+ "settings.admin.authentication.allowedDomains.description": "Domaines autorisés pour les connexions utilisateur.",
+ "settings.admin.authentication.allowedDomains.label": "Domaines autorisés",
+ "settings.admin.authentication.allowedEndpoints.description": "Points de terminaison autorisés pour les requêtes API.",
"settings.admin.authentication.allowedEndpoints.label": "Points de terminaison autorisés",
- "settings.admin.authentication.allowedRoles.description": "",
- "settings.admin.authentication.allowedRoles.label": "",
- "settings.admin.authentication.apiKeyEndpointRestrictions.description": "",
+ "settings.admin.authentication.allowedRoles.description": "Rôles autorisés à accéder à l'interface.",
+ "settings.admin.authentication.allowedRoles.label": "Rôles autorisés",
+ "settings.admin.authentication.apiKeyEndpointRestrictions.description": "Restrictions des points de terminaison pour les clés API.",
"settings.admin.authentication.apiKeyEndpointRestrictions.label": "Restrictions des points de terminaison de la clé API",
"settings.admin.authentication.apiKeys.description": "Autoriser les utilisateurs à créer des clés API pour un accès programmatique.",
"settings.admin.authentication.apiKeys.label": "Clés API",
- "settings.admin.authentication.applicationDn.description": "",
+ "settings.admin.authentication.applicationDn.description": "DN de l'application pour la connexion LDAP.",
"settings.admin.authentication.applicationDn.label": "DN de l'application",
- "settings.admin.authentication.applicationDnPassword.description": "",
+ "settings.admin.authentication.applicationDnPassword.description": "Mot de passe pour le DN de l'application LDAP.",
"settings.admin.authentication.applicationDnPassword.label": "Mot de passe DN de l'application",
- "settings.admin.authentication.attributeForMail.description": "",
+ "settings.admin.authentication.attributeForMail.description": "Attribut LDAP utilisé comme adresse email.",
"settings.admin.authentication.attributeForMail.label": "Attribut pour l'e-mail",
- "settings.admin.authentication.attributeForUsername.description": "",
+ "settings.admin.authentication.attributeForUsername.description": "Attribut LDAP utilisé comme nom d'utilisateur.",
"settings.admin.authentication.attributeForUsername.label": "Attribut pour le nom d'utilisateur",
- "settings.admin.authentication.autoRedirect.description": "",
- "settings.admin.authentication.autoRedirect.label": "",
- "settings.admin.authentication.blockedGroups.description": "",
- "settings.admin.authentication.blockedGroups.label": "",
- "settings.admin.authentication.certificatePath.description": "",
+ "settings.admin.authentication.autoRedirect.description": "Redirection automatique vers le fournisseur OAuth.",
+ "settings.admin.authentication.autoRedirect.label": "Redirection automatique",
+ "settings.admin.authentication.blockedGroups.description": "Groupes bloqués pour la connexion.",
+ "settings.admin.authentication.blockedGroups.label": "Groupes bloqués",
+ "settings.admin.authentication.certificatePath.description": "Chemin du certificat pour la vérification TLS.",
"settings.admin.authentication.certificatePath.label": "Chemin du certificat",
- "settings.admin.authentication.ciphers.description": "",
+ "settings.admin.authentication.ciphers.description": "Chiffres TLS pour les connexions LDAP.",
"settings.admin.authentication.ciphers.label": "Chiffres",
- "settings.admin.authentication.clientId.description": "",
- "settings.admin.authentication.clientId.label": "",
- "settings.admin.authentication.clientSecret.description": "",
- "settings.admin.authentication.clientSecret.label": "",
- "settings.admin.authentication.defaultGroup.description": "",
+ "settings.admin.authentication.clientId.description": "ID client pour OAuth.",
+ "settings.admin.authentication.clientId.label": "ID client",
+ "settings.admin.authentication.clientSecret.description": "Secret client pour OAuth.",
+ "settings.admin.authentication.clientSecret.label": "Secret client",
+ "settings.admin.authentication.defaultGroup.description": "Groupe par défaut pour les nouveaux utilisateurs.",
"settings.admin.authentication.defaultGroup.label": "Groupe par défaut",
- "settings.admin.authentication.defaultUserRole.description": "",
+ "settings.admin.authentication.defaultUserRole.description": "Rôle par défaut pour les nouveaux utilisateurs.",
"settings.admin.authentication.defaultUserRole.label": "Rôle utilisateur par défaut",
- "settings.admin.authentication.emailClaim.description": "",
- "settings.admin.authentication.emailClaim.label": "",
- "settings.admin.authentication.enableGroupCreation.description": "",
- "settings.admin.authentication.enableGroupCreation.label": "",
- "settings.admin.authentication.enableGroupManagement.description": "",
- "settings.admin.authentication.enableGroupManagement.label": "",
- "settings.admin.authentication.enableOauthGroupCreation.description": "",
- "settings.admin.authentication.enableOauthGroupCreation.label": "",
- "settings.admin.authentication.enableOauthGroupManagement.description": "",
- "settings.admin.authentication.enableOauthGroupManagement.label": "",
- "settings.admin.authentication.groupAttribute.description": "",
- "settings.admin.authentication.groupAttribute.label": "",
- "settings.admin.authentication.groupClaim.description": "",
- "settings.admin.authentication.groupClaim.label": "",
- "settings.admin.authentication.host.description": "",
+ "settings.admin.authentication.emailClaim.description": "Revendication OAuth utilisée comme email.",
+ "settings.admin.authentication.emailClaim.label": "Revendication email",
+ "settings.admin.authentication.enableGroupCreation.description": "Autoriser les utilisateurs à créer des groupes.",
+ "settings.admin.authentication.enableGroupCreation.label": "Autoriser la création de groupes",
+ "settings.admin.authentication.enableGroupManagement.description": "Autoriser les utilisateurs à gérer des groupes.",
+ "settings.admin.authentication.enableGroupManagement.label": "Autoriser la gestion de groupes",
+ "settings.admin.authentication.enableOauthGroupCreation.description": "Autoriser la création de groupes via OAuth.",
+ "settings.admin.authentication.enableOauthGroupCreation.label": "Autoriser la création de groupes OAuth",
+ "settings.admin.authentication.enableOauthGroupManagement.description": "Autoriser la gestion de groupes via OAuth.",
+ "settings.admin.authentication.enableOauthGroupManagement.label": "Autoriser la gestion de groupes OAuth",
+ "settings.admin.authentication.groupAttribute.description": "Attribut LDAP pour les groupes.",
+ "settings.admin.authentication.groupAttribute.label": "Attribut de groupe",
+ "settings.admin.authentication.groupClaim.description": "Revendication OAuth pour les groupes.",
+ "settings.admin.authentication.groupClaim.label": "Revendication de groupe",
+ "settings.admin.authentication.host.description": "Hôte du serveur LDAP.",
"settings.admin.authentication.host.label": "Hôte",
- "settings.admin.authentication.jwtExpiration.description": "",
+ "settings.admin.authentication.jwtExpiration.description": "Durée de validité du jeton JWT.",
"settings.admin.authentication.jwtExpiration.label": "Expiration du jeton JWT",
- "settings.admin.authentication.label.description": "",
+ "settings.admin.authentication.label.description": "Libellé pour le fournisseur OAuth.",
"settings.admin.authentication.label.label": "Étiquette",
"settings.admin.authentication.ldap.description": "Autoriser les utilisateurs à s'authentifier auprès d'un annuaire LDAP.",
"settings.admin.authentication.ldap.label": "LDAP",
- "settings.admin.authentication.loginForm.description": "",
- "settings.admin.authentication.loginForm.label": "",
- "settings.admin.authentication.mergeAccountsByEmail.description": "",
- "settings.admin.authentication.mergeAccountsByEmail.label": "",
+ "settings.admin.authentication.loginForm.description": "Afficher le formulaire de connexion.",
+ "settings.admin.authentication.loginForm.label": "Formulaire de connexion",
+ "settings.admin.authentication.mergeAccountsByEmail.description": "Fusionner les comptes avec le même email.",
+ "settings.admin.authentication.mergeAccountsByEmail.label": "Fusionner les comptes par email",
"settings.admin.authentication.newSignUps.description": "Autoriser les nouveaux utilisateurs à créer un compte.",
- "settings.admin.authentication.newSignUps.label": "",
+ "settings.admin.authentication.newSignUps.label": "Nouveaux comptes",
"settings.admin.authentication.oauthOidc.description": "Autoriser les utilisateurs à s'authentifier auprès d'un fournisseur OAuth / OIDC.",
- "settings.admin.authentication.oauthOidc.label": "",
+ "settings.admin.authentication.oauthOidc.label": "OAuth/OIDC",
"settings.admin.authentication.oauthSignup.description": "Autoriser les utilisateurs à créer un compte via OAuth.",
- "settings.admin.authentication.oauthSignup.label": "",
- "settings.admin.authentication.pendingUserOverlayContent.description": "",
+ "settings.admin.authentication.oauthSignup.label": "Inscription OAuth",
+ "settings.admin.authentication.pendingUserOverlayContent.description": "Contenu de l'overlay pour les utilisateurs en attente.",
"settings.admin.authentication.pendingUserOverlayContent.label": "Contenu de l'overlay utilisateur en attente",
- "settings.admin.authentication.pendingUserOverlayTitle.description": "",
+ "settings.admin.authentication.pendingUserOverlayTitle.description": "Titre de l'overlay pour les utilisateurs en attente.",
"settings.admin.authentication.pendingUserOverlayTitle.label": "Titre de l'overlay utilisateur en attente",
- "settings.admin.authentication.pictureClaim.description": "",
- "settings.admin.authentication.pictureClaim.label": "",
- "settings.admin.authentication.port.description": "",
+ "settings.admin.authentication.pictureClaim.description": "Revendication OAuth utilisée comme image de profil.",
+ "settings.admin.authentication.pictureClaim.label": "Revendication image",
+ "settings.admin.authentication.port.description": "Port du serveur LDAP.",
"settings.admin.authentication.port.label": "Port",
- "settings.admin.authentication.providerName.description": "",
- "settings.admin.authentication.providerName.label": "",
- "settings.admin.authentication.providerUrl.description": "",
- "settings.admin.authentication.providerUrl.label": "",
- "settings.admin.authentication.redirectUri.description": "",
- "settings.admin.authentication.redirectUri.label": "",
- "settings.admin.authentication.roleMapping.description": "",
- "settings.admin.authentication.roleMapping.label": "",
- "settings.admin.authentication.rolesClaim.description": "",
- "settings.admin.authentication.rolesClaim.label": "",
- "settings.admin.authentication.scopes.description": "",
- "settings.admin.authentication.scopes.label": "",
- "settings.admin.authentication.searchBase.description": "",
+ "settings.admin.authentication.providerName.description": "Nom du fournisseur OAuth.",
+ "settings.admin.authentication.providerName.label": "Nom du fournisseur",
+ "settings.admin.authentication.providerUrl.description": "URL du fournisseur OAuth.",
+ "settings.admin.authentication.providerUrl.label": "URL du fournisseur",
+ "settings.admin.authentication.redirectUri.description": "URI de redirection pour OAuth.",
+ "settings.admin.authentication.redirectUri.label": "URI de redirection",
+ "settings.admin.authentication.roleMapping.description": "Mappage des rôles OAuth aux rôles Open WebUI.",
+ "settings.admin.authentication.roleMapping.label": "Mappage des rôles",
+ "settings.admin.authentication.rolesClaim.description": "Revendication OAuth pour les rôles.",
+ "settings.admin.authentication.rolesClaim.label": "Revendication des rôles",
+ "settings.admin.authentication.scopes.description": "Portées OAuth demandées.",
+ "settings.admin.authentication.scopes.label": "Portées",
+ "settings.admin.authentication.searchBase.description": "Base de recherche pour les utilisateurs LDAP.",
"settings.admin.authentication.searchBase.label": "Base de recherche",
- "settings.admin.authentication.searchFilters.description": "",
+ "settings.admin.authentication.searchFilters.description": "Filtres pour la recherche LDAP.",
"settings.admin.authentication.searchFilters.label": "Filtres de recherche",
"settings.admin.authentication.sections.ldap.title": "LDAP",
- "settings.admin.authentication.sections.oauthOidc.title": "",
- "settings.admin.authentication.sections.pendingAccounts.title": "",
- "settings.admin.authentication.sections.userAccess.title": "",
- "settings.admin.authentication.subClaim.description": "",
- "settings.admin.authentication.subClaim.label": "",
+ "settings.admin.authentication.sections.oauthOidc.title": "OAuth/OIDC",
+ "settings.admin.authentication.sections.pendingAccounts.title": "Comptes en attente",
+ "settings.admin.authentication.sections.userAccess.title": "Accès utilisateur",
+ "settings.admin.authentication.subClaim.description": "Revendication secondaire pour OAuth.",
+ "settings.admin.authentication.subClaim.label": "Revendication secondaire",
"settings.admin.authentication.title": "Authentification",
- "settings.admin.authentication.tls.description": "",
+ "settings.admin.authentication.tls.description": "Utiliser TLS pour les connexions LDAP.",
"settings.admin.authentication.tls.label": "TLS",
- "settings.admin.authentication.updateEmail.description": "",
- "settings.admin.authentication.updateEmail.label": "",
- "settings.admin.authentication.updateName.description": "",
- "settings.admin.authentication.updateName.label": "",
- "settings.admin.authentication.updatePicture.description": "",
- "settings.admin.authentication.updatePicture.label": "",
- "settings.admin.authentication.usernameClaim.description": "",
- "settings.admin.authentication.usernameClaim.label": "",
- "settings.admin.authentication.validateCertificate.description": "",
- "settings.admin.authentication.validateCertificate.label": "",
- "settings.admin.codeExecution.codeExecutionEngine.description": "",
+ "settings.admin.authentication.updateEmail.description": "Autoriser les utilisateurs à mettre à jour leur email.",
+ "settings.admin.authentication.updateEmail.label": "Mettre à jour l'email",
+ "settings.admin.authentication.updateName.description": "Autoriser les utilisateurs à mettre à jour leur nom.",
+ "settings.admin.authentication.updateName.label": "Mettre à jour le nom",
+ "settings.admin.authentication.updatePicture.description": "Autoriser les utilisateurs à mettre à jour leur image de profil.",
+ "settings.admin.authentication.updatePicture.label": "Mettre à jour l'image",
+ "settings.admin.authentication.usernameClaim.description": "Revendication OAuth utilisée comme nom d'utilisateur.",
+ "settings.admin.authentication.usernameClaim.label": "Revendication nom d'utilisateur",
+ "settings.admin.authentication.validateCertificate.description": "Valider le certificat TLS.",
+ "settings.admin.authentication.validateCertificate.label": "Valider le certificat",
+ "settings.admin.codeExecution.codeExecutionEngine.description": "Moteur utilisé pour l'exécution de code.",
"settings.admin.codeExecution.codeExecutionEngine.label": "Moteur d'exécution de code",
- "settings.admin.codeExecution.codeExecutionJupyterAuth.description": "",
+ "settings.admin.codeExecution.codeExecutionJupyterAuth.description": "Méthode d'authentification pour Jupyter.",
"settings.admin.codeExecution.codeExecutionJupyterAuth.label": "Mode d'authentification Jupyter",
- "settings.admin.codeExecution.codeExecutionJupyterAuthPassword.description": "",
- "settings.admin.codeExecution.codeExecutionJupyterAuthPassword.label": "",
- "settings.admin.codeExecution.codeExecutionJupyterAuthToken.label": "",
- "settings.admin.codeExecution.codeExecutionJupyterTimeout.description": "",
+ "settings.admin.codeExecution.codeExecutionJupyterAuthPassword.description": "Mot de passe pour Jupyter.",
+ "settings.admin.codeExecution.codeExecutionJupyterAuthPassword.label": "Mot de passe Jupyter",
+ "settings.admin.codeExecution.codeExecutionJupyterAuthToken.label": "Jeton Jupyter",
+ "settings.admin.codeExecution.codeExecutionJupyterTimeout.description": "Délai d'expiration pour les requêtes Jupyter.",
"settings.admin.codeExecution.codeExecutionJupyterTimeout.label": "Délai d'exécution du code dépassé",
- "settings.admin.codeExecution.codeExecutionJupyterUrl.description": "",
+ "settings.admin.codeExecution.codeExecutionJupyterUrl.description": "URL du serveur Jupyter.",
"settings.admin.codeExecution.codeExecutionJupyterUrl.label": "URL Jupyter",
- "settings.admin.codeExecution.codeInterpreterEngine.description": "",
+ "settings.admin.codeExecution.codeInterpreterEngine.description": "Moteur utilisé pour l'interpréteur de code.",
"settings.admin.codeExecution.codeInterpreterEngine.label": "Moteur de l'interpréteur de code",
- "settings.admin.codeExecution.codeInterpreterJupyterAuth.description": "",
+ "settings.admin.codeExecution.codeInterpreterJupyterAuth.description": "Méthode d'authentification pour l'interpréteur de code Jupyter.",
"settings.admin.codeExecution.codeInterpreterJupyterAuth.label": "Mode d'authentification Jupyter",
- "settings.admin.codeExecution.codeInterpreterJupyterAuthPassword.description": "",
- "settings.admin.codeExecution.codeInterpreterJupyterAuthPassword.label": "",
- "settings.admin.codeExecution.codeInterpreterJupyterAuthToken.label": "",
- "settings.admin.codeExecution.codeInterpreterJupyterTimeout.description": "",
+ "settings.admin.codeExecution.codeInterpreterJupyterAuthPassword.description": "Mot de passe pour l'interpréteur de code Jupyter.",
+ "settings.admin.codeExecution.codeInterpreterJupyterAuthPassword.label": "Mot de passe Jupyter",
+ "settings.admin.codeExecution.codeInterpreterJupyterAuthToken.label": "Jeton Jupyter",
+ "settings.admin.codeExecution.codeInterpreterJupyterTimeout.description": "Délai d'expiration pour les requêtes de l'interpréteur de code Jupyter.",
"settings.admin.codeExecution.codeInterpreterJupyterTimeout.label": "Délai d'exécution du code dépassé",
- "settings.admin.codeExecution.codeInterpreterJupyterUrl.description": "",
+ "settings.admin.codeExecution.codeInterpreterJupyterUrl.description": "URL du serveur Jupyter pour l'interpréteur de code.",
"settings.admin.codeExecution.codeInterpreterJupyterUrl.label": "URL Jupyter",
- "settings.admin.codeExecution.codeInterpreterPromptTemplate.description": "",
+ "settings.admin.codeExecution.codeInterpreterPromptTemplate.description": "Modèle d'invite pour l'interpréteur de code.",
"settings.admin.codeExecution.codeInterpreterPromptTemplate.label": "Modèle d'invite pour l'interpréteur de code",
"settings.admin.codeExecution.enableCodeExecution.description": "Autoriser les modèles à exécuter le code généré et à renvoyer les résultats d'exécution.",
"settings.admin.codeExecution.enableCodeExecution.label": "Autoriser l'exécution de code",
@@ -2176,203 +2186,203 @@
"settings.admin.connections.cacheBaseModelList.label": "Mettre en cache la liste des modèles de base",
"settings.admin.connections.directConnections.description": "Les connexions directes permettent aux utilisateurs de se connecter à leurs propres points d'extension API compatibles OpenAI.",
"settings.admin.connections.directConnections.label": "Direct connexions",
- "settings.admin.connections.directIntegrations.description": "",
- "settings.admin.connections.directIntegrations.label": "",
+ "settings.admin.connections.directIntegrations.description": "Activer les intégrations directes pour les utilisateurs.",
+ "settings.admin.connections.directIntegrations.label": "Intégrations directes",
"settings.admin.connections.manageOllamaApiConnections.description": "Problèmes d'accès à Ollama ?",
"settings.admin.connections.manageOllamaApiConnections.label": "Gérer les connexions API Ollama",
"settings.admin.connections.manageOpenaiApiConnections.label": "Gérer les connexions API OpenAI",
"settings.admin.connections.ollamaApi.label": "API Ollama",
"settings.admin.connections.openaiApi.label": "API compatibles OpenAI",
"settings.admin.connections.refreshModels.label": "Actualiser",
- "settings.admin.connections.sections.userConnections.title": "",
+ "settings.admin.connections.sections.userConnections.title": "Connexions utilisateur",
"settings.admin.connections.title": "Connexions",
- "settings.admin.db.allChats.description": "",
- "settings.admin.db.allChats.label": "",
- "settings.admin.db.database.description": "",
+ "settings.admin.db.allChats.description": "Exporter toutes les conversations.",
+ "settings.admin.db.allChats.label": "Exporter toutes les conversations",
+ "settings.admin.db.database.description": "Base de données pour le stockage.",
"settings.admin.db.database.label": "Base de données",
- "settings.admin.db.exportConfig.description": "",
+ "settings.admin.db.exportConfig.description": "Exporter la configuration.",
"settings.admin.db.exportConfig.label": "Exporter la configuration",
- "settings.admin.db.importConfig.description": "",
+ "settings.admin.db.importConfig.description": "Importer la configuration.",
"settings.admin.db.importConfig.label": "Importer la configuration",
"settings.admin.db.sections.config.title": "Configuration",
"settings.admin.db.sections.export.title": "Exporter",
"settings.admin.db.title": "Base de données",
- "settings.admin.db.users.description": "",
+ "settings.admin.db.users.description": "Exporter les utilisateurs.",
"settings.admin.db.users.label": "Utilisateurs",
- "settings.admin.documents.additionalConfig.description": "",
+ "settings.admin.documents.additionalConfig.description": "Configuration supplémentaire pour le traitement des documents.",
"settings.admin.documents.additionalConfig.label": "Configuration supplémentaire",
- "settings.admin.documents.allowedFileExtensions.description": "",
+ "settings.admin.documents.allowedFileExtensions.description": "Extensions de fichiers autorisées pour le téléversement.",
"settings.admin.documents.allowedFileExtensions.label": "Extensions de fichier autorisées",
- "settings.admin.documents.apiMode.description": "",
+ "settings.admin.documents.apiMode.description": "Mode API pour le traitement des documents.",
"settings.admin.documents.apiMode.label": "Mode API",
- "settings.admin.documents.apiTimeout.description": "",
+ "settings.admin.documents.apiTimeout.description": "Délai d'expiration pour les requêtes API.",
"settings.admin.documents.apiTimeout.label": "Délai d'expiration de l'API",
- "settings.admin.documents.apiToken.description": "",
- "settings.admin.documents.apiToken.label": "",
- "settings.admin.documents.apiUrl.description": "",
- "settings.admin.documents.apiUrl.label": "",
- "settings.admin.documents.asyncEmbeddingProcessing.description": "",
+ "settings.admin.documents.apiToken.description": "Jeton API pour le service de traitement des documents.",
+ "settings.admin.documents.apiToken.label": "Jeton API",
+ "settings.admin.documents.apiUrl.description": "URL du service de traitement des documents.",
+ "settings.admin.documents.apiUrl.label": "URL du service",
+ "settings.admin.documents.asyncEmbeddingProcessing.description": "Activer le traitement asynchrone des embeddings.",
"settings.admin.documents.asyncEmbeddingProcessing.label": "Traitement asynchrone des embeddings",
- "settings.admin.documents.azureopenaikey.description": "",
+ "settings.admin.documents.azureopenaikey.description": "Clé API Azure OpenAI pour les embeddings.",
"settings.admin.documents.azureopenaikey.label": "Clé API",
- "settings.admin.documents.azureopenaiurl.description": "",
+ "settings.admin.documents.azureopenaiurl.description": "URL du service Azure OpenAI pour les embeddings.",
"settings.admin.documents.azureopenaiurl.label": "URL de base de l'API",
- "settings.admin.documents.bm25Weight.description": "",
+ "settings.admin.documents.bm25Weight.description": "Poids pour l'algorithme BM25.",
"settings.admin.documents.bm25Weight.label": "Poids BM25",
- "settings.admin.documents.bypassEmbeddingAndRetrieval.description": "",
+ "settings.admin.documents.bypassEmbeddingAndRetrieval.description": "Ignorer l'embedding et la récupération.",
"settings.admin.documents.bypassEmbeddingAndRetrieval.label": "Ignorer l'Embedding et le Retrieval",
- "settings.admin.documents.chunkMinSizeTarget.description": "",
+ "settings.admin.documents.chunkMinSizeTarget.description": "Taille minimale cible pour les chunks.",
"settings.admin.documents.chunkMinSizeTarget.label": "Taille minimale cible des chunks",
- "settings.admin.documents.chunkOverlap.description": "",
+ "settings.admin.documents.chunkOverlap.description": "Chevauchement entre les chunks.",
"settings.admin.documents.chunkOverlap.label": "Chevauchement des chunks",
- "settings.admin.documents.chunkSize.description": "",
+ "settings.admin.documents.chunkSize.description": "Taille des chunks pour le traitement.",
"settings.admin.documents.chunkSize.label": "Taille des chunks",
- "settings.admin.documents.contentExtractionEngine.description": "",
+ "settings.admin.documents.contentExtractionEngine.description": "Moteur utilisé pour l'extraction de contenu.",
"settings.admin.documents.contentExtractionEngine.label": "Moteur d'extraction de contenu",
- "settings.admin.documents.datalabMarkerApiBaseUrl.description": "",
+ "settings.admin.documents.datalabMarkerApiBaseUrl.description": "URL de base de l'API Datalab Marker.",
"settings.admin.documents.datalabMarkerApiBaseUrl.label": "URL de base de l'API",
- "settings.admin.documents.datalabMarkerApiKey.description": "",
+ "settings.admin.documents.datalabMarkerApiKey.description": "Clé API pour Datalab Marker.",
"settings.admin.documents.datalabMarkerApiKey.label": "Clé API",
- "settings.admin.documents.disableImageExtraction.description": "",
+ "settings.admin.documents.disableImageExtraction.description": "Désactiver l'extraction d'images.",
"settings.admin.documents.disableImageExtraction.label": "Empecher l'extraction d'image",
- "settings.admin.documents.doclingApiKey.description": "",
+ "settings.admin.documents.doclingApiKey.description": "Clé API pour Docling.",
"settings.admin.documents.doclingApiKey.label": "Clé API",
- "settings.admin.documents.doclingParams.description": "",
+ "settings.admin.documents.doclingParams.description": "Paramètres pour Docling.",
"settings.admin.documents.doclingParams.label": "Réglages",
- "settings.admin.documents.doclingServerUrl.description": "",
- "settings.admin.documents.doclingServerUrl.label": "",
- "settings.admin.documents.documentIntelligenceKey.description": "",
+ "settings.admin.documents.doclingServerUrl.description": "URL du serveur Docling.",
+ "settings.admin.documents.doclingServerUrl.label": "URL du serveur Docling",
+ "settings.admin.documents.documentIntelligenceKey.description": "Clé pour Document Intelligence.",
"settings.admin.documents.documentIntelligenceKey.label": "Clé",
- "settings.admin.documents.documentIntelligenceModel.description": "",
+ "settings.admin.documents.documentIntelligenceModel.description": "Modèle pour Document Intelligence.",
"settings.admin.documents.documentIntelligenceModel.label": "Modèle Document Intelligence",
- "settings.admin.documents.documentLoaderUrl.description": "",
- "settings.admin.documents.documentLoaderUrl.label": "",
- "settings.admin.documents.embeddingBatchSize.description": "",
+ "settings.admin.documents.documentLoaderUrl.description": "URL du chargeur de documents.",
+ "settings.admin.documents.documentLoaderUrl.label": "URL du chargeur de documents",
+ "settings.admin.documents.embeddingBatchSize.description": "Taille du lot pour le traitement des embeddings.",
"settings.admin.documents.embeddingBatchSize.label": "Taille du lot d'embedding",
- "settings.admin.documents.embeddingConcurrentRequests.description": "",
+ "settings.admin.documents.embeddingConcurrentRequests.description": "Nombre de requêtes d'embedding simultanées.",
"settings.admin.documents.embeddingConcurrentRequests.label": "Requêtes d'embedding simultanées",
- "settings.admin.documents.embeddingModel.description": "",
+ "settings.admin.documents.embeddingModel.description": "Modèle utilisé pour les embeddings.",
"settings.admin.documents.embeddingModel.label": "Modèle d'embedding",
- "settings.admin.documents.embeddingModelEngine.description": "",
+ "settings.admin.documents.embeddingModelEngine.description": "Moteur pour le modèle d'embedding.",
"settings.admin.documents.embeddingModelEngine.label": "Moteur de modèle d'embedding",
- "settings.admin.documents.endpoint.description": "",
- "settings.admin.documents.endpoint.label": "",
- "settings.admin.documents.enrichHybridSearchText.description": "",
+ "settings.admin.documents.endpoint.description": "Point de terminaison pour le service de documents.",
+ "settings.admin.documents.endpoint.label": "Point de terminaison",
+ "settings.admin.documents.enrichHybridSearchText.description": "Enrichir le texte de recherche hybride.",
"settings.admin.documents.enrichHybridSearchText.label": "Enrichir le texte de recherche hybride",
- "settings.admin.documents.externalDocumentLoaderApiKey.description": "",
+ "settings.admin.documents.externalDocumentLoaderApiKey.description": "Clé API pour le chargeur de documents externe.",
"settings.admin.documents.externalDocumentLoaderApiKey.label": "Clé API",
- "settings.admin.documents.fileExtensions.description": "",
- "settings.admin.documents.fileExtensions.label": "",
- "settings.admin.documents.forceOcr.description": "",
+ "settings.admin.documents.fileExtensions.description": "Extensions de fichiers autorisées.",
+ "settings.admin.documents.fileExtensions.label": "Extensions de fichiers",
+ "settings.admin.documents.forceOcr.description": "Forcer l'OCR sur les images.",
"settings.admin.documents.forceOcr.label": "Forcer l'OCR",
- "settings.admin.documents.formatLines.description": "",
+ "settings.admin.documents.formatLines.description": "Formater les lignes pour l'extraction.",
"settings.admin.documents.formatLines.label": "Formatter les lignes",
- "settings.admin.documents.fullContextMode.description": "",
+ "settings.admin.documents.fullContextMode.description": "Mode avec injection complète dans le contexte.",
"settings.admin.documents.fullContextMode.label": "Mode avec injection complète dans le contexte",
"settings.admin.documents.googleDrive.description": "Autoriser Google Drive comme source de documents.",
"settings.admin.documents.googleDrive.label": "Google Drive",
- "settings.admin.documents.headers.description": "",
+ "settings.admin.documents.headers.description": "En-têtes HTTP pour les requêtes.",
"settings.admin.documents.headers.label": "En-têtes HTTP",
- "settings.admin.documents.headerVariables.label": "",
- "settings.admin.documents.hybridSearch.description": "",
+ "settings.admin.documents.headerVariables.label": "Variables d'en-tête",
+ "settings.admin.documents.hybridSearch.description": "Activer la recherche hybride.",
"settings.admin.documents.hybridSearch.label": "Recherche hybride",
- "settings.admin.documents.imageCompressionHeight.description": "",
+ "settings.admin.documents.imageCompressionHeight.description": "Hauteur pour la compression d'images.",
"settings.admin.documents.imageCompressionHeight.label": "Compression de la hauteur de l'image",
- "settings.admin.documents.imageCompressionWidth.description": "",
+ "settings.admin.documents.imageCompressionWidth.description": "Largeur pour la compression d'images.",
"settings.admin.documents.imageCompressionWidth.label": "Compression de la largeur de l'image",
- "settings.admin.documents.markdownHeaderTextSplitter.description": "",
+ "settings.admin.documents.markdownHeaderTextSplitter.description": "Diviser le texte par en-têtes Markdown.",
"settings.admin.documents.markdownHeaderTextSplitter.label": "Découpage par en-têtes markdown",
- "settings.admin.documents.maxUploadCount.description": "",
+ "settings.admin.documents.maxUploadCount.description": "Nombre maximal de fichiers à téléverser.",
"settings.admin.documents.maxUploadCount.label": "Nombre maximal de téléversements",
- "settings.admin.documents.maxUploadSize.description": "",
+ "settings.admin.documents.maxUploadSize.description": "Taille maximale des fichiers à téléverser.",
"settings.admin.documents.maxUploadSize.label": "Limite de taille de téléversement",
- "settings.admin.documents.mineruApiKey.description": "",
+ "settings.admin.documents.mineruApiKey.description": "Clé API pour MinerU.",
"settings.admin.documents.mineruApiKey.label": "Clé API",
- "settings.admin.documents.mineruParams.description": "",
+ "settings.admin.documents.mineruParams.description": "Paramètres pour MinerU.",
"settings.admin.documents.mineruParams.label": "Réglages",
- "settings.admin.documents.mistralOcrApiBaseUrl.description": "",
+ "settings.admin.documents.mistralOcrApiBaseUrl.description": "URL de base de l'API Mistral OCR.",
"settings.admin.documents.mistralOcrApiBaseUrl.label": "URL de base de l'API",
- "settings.admin.documents.mistralOcrApiKey.description": "",
+ "settings.admin.documents.mistralOcrApiKey.description": "Clé API pour Mistral OCR.",
"settings.admin.documents.mistralOcrApiKey.label": "Clé API",
- "settings.admin.documents.ollamakey.description": "",
+ "settings.admin.documents.ollamakey.description": "Clé API pour Ollama.",
"settings.admin.documents.ollamakey.label": "Clé API",
- "settings.admin.documents.ollamaurl.description": "",
+ "settings.admin.documents.ollamaurl.description": "URL du service Ollama.",
"settings.admin.documents.ollamaurl.label": "URL de base de l'API",
"settings.admin.documents.onedrive.description": "Autoriser OneDrive comme source de documents.",
"settings.admin.documents.onedrive.label": "OneDrive",
- "settings.admin.documents.openaikey.description": "",
+ "settings.admin.documents.openaikey.description": "Clé API pour OpenAI.",
"settings.admin.documents.openaikey.label": "Clé API",
- "settings.admin.documents.openaiurl.description": "",
+ "settings.admin.documents.openaiurl.description": "URL du service OpenAI.",
"settings.admin.documents.openaiurl.label": "URL de base de l'API",
- "settings.admin.documents.outputFormat.description": "",
+ "settings.admin.documents.outputFormat.description": "Format de sortie pour les documents.",
"settings.admin.documents.outputFormat.label": "Format de sortie",
- "settings.admin.documents.paddleocrVlBaseUrl.description": "",
+ "settings.admin.documents.paddleocrVlBaseUrl.description": "URL de base pour PaddleOCR-vl.",
"settings.admin.documents.paddleocrVlBaseUrl.label": "URL de base de l'API",
- "settings.admin.documents.paginate.description": "",
+ "settings.admin.documents.paginate.description": "Paginer les résultats.",
"settings.admin.documents.paginate.label": "Paginer",
- "settings.admin.documents.pdfExtractImagesOcr.description": "",
+ "settings.admin.documents.pdfExtractImagesOcr.description": "Extraire les images des PDF pour l'OCR.",
"settings.admin.documents.pdfExtractImagesOcr.label": "Extraction d'images PDF (OCR)",
- "settings.admin.documents.pdfLoaderMode.description": "",
+ "settings.admin.documents.pdfLoaderMode.description": "Mode de chargement des PDF.",
"settings.admin.documents.pdfLoaderMode.label": "Mode de chargement des PDF",
- "settings.admin.documents.ragExternalRerankerApiKey.description": "",
+ "settings.admin.documents.ragExternalRerankerApiKey.description": "Clé API pour le reranker externe.",
"settings.admin.documents.ragExternalRerankerApiKey.label": "Clé API",
- "settings.admin.documents.ragExternalRerankerUrl.description": "",
+ "settings.admin.documents.ragExternalRerankerUrl.description": "URL du reranker externe.",
"settings.admin.documents.ragExternalRerankerUrl.label": "URL de base de l'API",
- "settings.admin.documents.ragTemplate.description": "",
+ "settings.admin.documents.ragTemplate.description": "Modèle pour le RAG.",
"settings.admin.documents.ragTemplate.label": "Modèle RAG",
"settings.admin.documents.reindex.label": "Réindexer",
- "settings.admin.documents.reindexKnowledgeAndMemoryVectors.description": "",
- "settings.admin.documents.reindexKnowledgeAndMemoryVectors.label": "",
- "settings.admin.documents.relevanceThreshold.description": "",
+ "settings.admin.documents.reindexKnowledgeAndMemoryVectors.description": "Réindexer les vecteurs de connaissances et de mémoire.",
+ "settings.admin.documents.reindexKnowledgeAndMemoryVectors.label": "Réindexer les vecteurs",
+ "settings.admin.documents.relevanceThreshold.description": "Seuil de pertinence pour la recherche.",
"settings.admin.documents.relevanceThreshold.label": "Seuil de pertinence",
- "settings.admin.documents.rerankingBatchSize.description": "",
- "settings.admin.documents.rerankingBatchSize.label": "",
- "settings.admin.documents.rerankingEngine.description": "",
+ "settings.admin.documents.rerankingBatchSize.description": "Taille du lot pour le réordonnancement.",
+ "settings.admin.documents.rerankingBatchSize.label": "Taille du lot de réordonnancement",
+ "settings.admin.documents.rerankingEngine.description": "Moteur pour le réordonnancement.",
"settings.admin.documents.rerankingEngine.label": "Moteur de ré-ranking",
- "settings.admin.documents.rerankingModel.description": "",
+ "settings.admin.documents.rerankingModel.description": "Modèle pour le réordonnancement.",
"settings.admin.documents.rerankingModel.label": "Modèle de ré-ranking",
- "settings.admin.documents.resetUploadDirectory.description": "",
+ "settings.admin.documents.resetUploadDirectory.description": "Réinitialiser le répertoire de téléversement.",
"settings.admin.documents.resetUploadDirectory.label": "Réinitialiser le répertoire de téléchargement",
- "settings.admin.documents.resetVectorStorageKnowledge.description": "",
+ "settings.admin.documents.resetVectorStorageKnowledge.description": "Réinitialiser le stockage vectoriel et les connaissances.",
"settings.admin.documents.resetVectorStorageKnowledge.label": "Réinitialiser le stockage vectoriel/connaissances",
- "settings.admin.documents.sections.contentExtraction.title": "",
+ "settings.admin.documents.sections.contentExtraction.title": "Extraction de contenu",
"settings.admin.documents.sections.dangerZone.title": "Zone de danger",
"settings.admin.documents.sections.embedding.title": "Embedding",
"settings.admin.documents.sections.files.title": "Fichiers",
"settings.admin.documents.sections.integration.title": "Intégration",
"settings.admin.documents.sections.retrieval.title": "Récupération",
- "settings.admin.documents.skipCache.description": "",
+ "settings.admin.documents.skipCache.description": "Ignorer le cache pour les résultats.",
"settings.admin.documents.skipCache.label": "Ne pas utiliser le cache",
- "settings.admin.documents.stripExistingOcr.description": "",
+ "settings.admin.documents.stripExistingOcr.description": "Supprimer l'OCR existant.",
"settings.admin.documents.stripExistingOcr.label": "Supprimer l'OCR existant",
- "settings.admin.documents.supportedMediaMimeTypes.description": "",
- "settings.admin.documents.supportedMediaMimeTypes.label": "",
- "settings.admin.documents.textSplitter.description": "",
+ "settings.admin.documents.supportedMediaMimeTypes.description": "Types MIME de médias pris en charge.",
+ "settings.admin.documents.supportedMediaMimeTypes.label": "Types MIME pris en charge",
+ "settings.admin.documents.textSplitter.description": "Méthode de division du texte.",
"settings.admin.documents.textSplitter.label": "Découpage du texte",
- "settings.admin.documents.tikaServerUrl.description": "",
- "settings.admin.documents.tikaServerUrl.label": "",
- "settings.admin.documents.tikaServerVersion.description": "",
- "settings.admin.documents.tikaServerVersion.label": "",
+ "settings.admin.documents.tikaServerUrl.description": "URL du serveur Tika.",
+ "settings.admin.documents.tikaServerUrl.label": "URL du serveur Tika",
+ "settings.admin.documents.tikaServerVersion.description": "Version du serveur Tika.",
+ "settings.admin.documents.tikaServerVersion.label": "Version Tika",
"settings.admin.documents.title": "Documents",
- "settings.admin.documents.tokenizerModel.description": "",
- "settings.admin.documents.tokenizerModel.label": "",
- "settings.admin.documents.topK.description": "",
+ "settings.admin.documents.tokenizerModel.description": "Modèle de tokenisation.",
+ "settings.admin.documents.tokenizerModel.label": "Modèle de tokenisation",
+ "settings.admin.documents.topK.description": "Nombre de résultats à retourner.",
"settings.admin.documents.topK.label": "Top K",
- "settings.admin.documents.topKReranker.description": "",
+ "settings.admin.documents.topKReranker.description": "Nombre de résultats à réordonner.",
"settings.admin.documents.topKReranker.label": "Top K Reranker",
- "settings.admin.documents.updateEmbeddingModel.label": "",
- "settings.admin.documents.useBase64.description": "",
- "settings.admin.documents.useBase64.label": "",
- "settings.admin.documents.useLlm.description": "",
+ "settings.admin.documents.updateEmbeddingModel.label": "Mettre à jour le modèle d'embedding",
+ "settings.admin.documents.useBase64.description": "Utiliser Base64 pour les PDF.",
+ "settings.admin.documents.useBase64.label": "Utiliser Base64",
+ "settings.admin.documents.useLlm.description": "Utiliser un LLM pour améliorer l'extraction.",
"settings.admin.documents.useLlm.label": "Utiliser le LLM",
- "settings.admin.documents.version.description": "",
+ "settings.admin.documents.version.description": "Version du service de documents.",
"settings.admin.documents.version.label": "Version:",
"settings.admin.evaluations.addArenaModel.label": "Ajouter un modèle d'arène",
"settings.admin.evaluations.arenaModels.description": "L'évaluation des messages doit être activée pour pouvoir utiliser cette fonctionnalité",
"settings.admin.evaluations.arenaModels.label": "Modèles d'arène",
"settings.admin.evaluations.sections.models.title": "Modèles",
"settings.admin.evaluations.title": "Évaluations",
- "settings.admin.general.addBanner.label": "",
+ "settings.admin.general.addBanner.label": "Ajouter une bannière",
"settings.admin.general.automations.description": "Autoriser les utilisateurs à créer et exécuter des automatisations.",
"settings.admin.general.automations.label": "Automatisations",
"settings.admin.general.banners.label": "Bannières",
@@ -2382,9 +2392,9 @@
"settings.admin.general.channels.label": "Canaux",
"settings.admin.general.checkForUpdates.label": "Vérifier les mises à jour disponibles",
"settings.admin.general.communitySharing.description": "Autoriser les utilisateurs à partager des conversations avec la communauté Open WebUI.",
- "settings.admin.general.communitySharing.label": "",
- "settings.admin.general.events.events.label": "",
- "settings.admin.general.events.webhooks.description": "",
+ "settings.admin.general.communitySharing.label": "Partage communautaire",
+ "settings.admin.general.events.events.label": "Événements",
+ "settings.admin.general.events.webhooks.description": "Activer les webhooks pour les événements.",
"settings.admin.general.events.webhooks.label": "Webhooks",
"settings.admin.general.folderMaxFileCount.description": "Nombre maximum de fichiers autorisés par dossier.",
"settings.admin.general.folderMaxFileCount.label": "Nombre maximum de fichiers par dossier",
@@ -2395,79 +2405,79 @@
"settings.admin.general.license.label": "Licence",
"settings.admin.general.memories.description": "Autoriser les utilisateurs à enregistrer des souvenirs pour des réponses plus personnalisées.",
"settings.admin.general.memories.label": "Souvenirs",
- "settings.admin.general.memorySystemContext.description": "",
- "settings.admin.general.memorySystemContext.label": "",
- "settings.admin.general.messageRating.description": "",
- "settings.admin.general.messageRating.label": "",
- "settings.admin.general.modelResponseMode.description": "",
- "settings.admin.general.modelResponseMode.label": "",
+ "settings.admin.general.memorySystemContext.description": "Contexte système pour la mémoire.",
+ "settings.admin.general.memorySystemContext.label": "Contexte système de la mémoire",
+ "settings.admin.general.messageRating.description": "Activer l'évaluation des messages.",
+ "settings.admin.general.messageRating.label": "Évaluation des messages",
+ "settings.admin.general.modelResponseMode.description": "Mode de réponse du modèle.",
+ "settings.admin.general.modelResponseMode.label": "Mode de réponse",
"settings.admin.general.notes.description": "Autoriser les utilisateurs à créer et gérer des notes.",
"settings.admin.general.notes.label": "Notes",
- "settings.admin.general.responseWatermark.description": "",
+ "settings.admin.general.responseWatermark.description": "Filigrane pour les réponses.",
"settings.admin.general.responseWatermark.label": "Filigramme de la réponse",
"settings.admin.general.sections.features.title": "Fonctionnalités",
"settings.admin.general.sections.ui.title": "UI",
"settings.admin.general.seeWhatSNew.label": "Découvrez les nouvelles fonctionnalités",
"settings.admin.general.title": "Général",
- "settings.admin.general.translations.addTranslation.label": "",
- "settings.admin.general.translations.uiTranslations.label": "",
- "settings.admin.general.userStatus.description": "",
+ "settings.admin.general.translations.addTranslation.label": "Ajouter une traduction",
+ "settings.admin.general.translations.uiTranslations.label": "Traductions de l'interface",
+ "settings.admin.general.userStatus.description": "Activer le statut utilisateur.",
"settings.admin.general.userStatus.label": "Statut utilisateur",
"settings.admin.general.userWebhooks.description": "Autoriser les utilisateurs à configurer des webhooks depuis leur compte.",
"settings.admin.general.userWebhooks.label": "Webhooks utilisateur",
"settings.admin.general.version.label": "Version:",
"settings.admin.general.webuiUrl.description": "Entrez l'URL publique de votre WebUI. Cette URL sera utilisée pour générer des liens dans les notifications.",
"settings.admin.general.webuiUrl.label": "URL de WebUI",
- "settings.admin.images.apiAuthString.description": "",
- "settings.admin.images.apiAuthString.label": "",
- "settings.admin.images.automatic1111BaseUrl.description": "",
- "settings.admin.images.automatic1111BaseUrl.label": "",
- "settings.admin.images.automatic1111Params.description": "",
+ "settings.admin.images.apiAuthString.description": "Chaîne d'authentification pour l'API d'images.",
+ "settings.admin.images.apiAuthString.label": "Authentification API",
+ "settings.admin.images.automatic1111BaseUrl.description": "URL de base pour Automatic1111.",
+ "settings.admin.images.automatic1111BaseUrl.label": "URL Automatic1111",
+ "settings.admin.images.automatic1111Params.description": "Paramètres pour Automatic1111.",
"settings.admin.images.automatic1111Params.label": "Paramètres supplémentaires",
"settings.admin.images.clickHereToUploadAWorkflowJsonFile.label": "Cliquez ici pour téléverser un fichier workflow.json.",
- "settings.admin.images.comfyuiApiKey.description": "",
+ "settings.admin.images.comfyuiApiKey.description": "Clé API pour ComfyUI.",
"settings.admin.images.comfyuiApiKey.label": "Clé API",
- "settings.admin.images.comfyuiBaseUrl.description": "",
- "settings.admin.images.comfyuiBaseUrl.label": "",
- "settings.admin.images.comfyuiComfyuiWorkflow.description": "",
+ "settings.admin.images.comfyuiBaseUrl.description": "URL de base pour ComfyUI.",
+ "settings.admin.images.comfyuiBaseUrl.label": "URL ComfyUI",
+ "settings.admin.images.comfyuiComfyuiWorkflow.description": "Workflow ComfyUI pour la génération.",
"settings.admin.images.comfyuiComfyuiWorkflow.label": "Workflow ComfyUI",
- "settings.admin.images.editingWorkflowNodes.description": "",
+ "settings.admin.images.editingWorkflowNodes.description": "Nœuds du workflow pour l'édition d'images.",
"settings.admin.images.editingWorkflowNodes.label": "Noeuds du workflow ComfyUI",
"settings.admin.images.editWorkflowJsonContent.label": "Modifier le contenu de workflow.json",
- "settings.admin.images.geminiEndpointMethod.description": "",
+ "settings.admin.images.geminiEndpointMethod.description": "Méthode de point de terminaison pour Gemini.",
"settings.admin.images.geminiEndpointMethod.label": "Méthode de l'endpoint Gemini",
- "settings.admin.images.generationWorkflowNodes.description": "",
+ "settings.admin.images.generationWorkflowNodes.description": "Nœuds du workflow pour la génération d'images.",
"settings.admin.images.generationWorkflowNodes.label": "Noeuds du workflow ComfyUI",
"settings.admin.images.imageEdit.description": "Autoriser les utilisateurs à modifier des images existantes.",
"settings.admin.images.imageEdit.label": "Modification d'image",
- "settings.admin.images.imageEditEngine.description": "",
+ "settings.admin.images.imageEditEngine.description": "Moteur pour l'édition d'images.",
"settings.admin.images.imageEditEngine.label": "Moteur de modification d'image",
"settings.admin.images.imageEditModel.label": "Modèle",
"settings.admin.images.imageEditSize.label": "Taille de l'image",
"settings.admin.images.imageGeneration.description": "Autoriser les utilisateurs à générer des images à partir de prompts.",
"settings.admin.images.imageGeneration.label": "Génération d'image",
- "settings.admin.images.imageGenerationEngine.description": "",
+ "settings.admin.images.imageGenerationEngine.description": "Moteur pour la génération d'images.",
"settings.admin.images.imageGenerationEngine.label": "Moteur de génération d'image",
"settings.admin.images.imageGenerationModel.label": "Modèle",
- "settings.admin.images.imagePromptGeneration.description": "",
+ "settings.admin.images.imagePromptGeneration.description": "Activer la génération de prompts d'images.",
"settings.admin.images.imagePromptGeneration.label": "Génération de prompts d'images",
- "settings.admin.images.imagesEditComfyuiApiKey.description": "",
+ "settings.admin.images.imagesEditComfyuiApiKey.description": "Clé API pour l'édition d'images avec ComfyUI.",
"settings.admin.images.imagesEditComfyuiApiKey.label": "Clé API",
- "settings.admin.images.imagesEditComfyuiBaseUrl.description": "",
- "settings.admin.images.imagesEditComfyuiBaseUrl.label": "",
- "settings.admin.images.imagesEditGeminiApiBaseUrl.label": "",
+ "settings.admin.images.imagesEditComfyuiBaseUrl.description": "URL de base pour l'édition d'images avec ComfyUI.",
+ "settings.admin.images.imagesEditComfyuiBaseUrl.label": "URL édition ComfyUI",
+ "settings.admin.images.imagesEditGeminiApiBaseUrl.label": "URL de base Gemini pour l'édition",
"settings.admin.images.imagesEditGeminiApiKey.label": "Clé API",
"settings.admin.images.imagesEditOpenaiApiBaseUrl.label": "URL de base de l'API",
"settings.admin.images.imagesEditOpenaiApiKey.label": "Clé API",
"settings.admin.images.imagesEditOpenaiApiVersion.label": "Version de l'API",
- "settings.admin.images.imagesGeminiApiBaseUrl.description": "",
- "settings.admin.images.imagesGeminiApiBaseUrl.label": "",
- "settings.admin.images.imagesGeminiApiKey.description": "",
+ "settings.admin.images.imagesGeminiApiBaseUrl.description": "URL de base pour l'API Gemini.",
+ "settings.admin.images.imagesGeminiApiBaseUrl.label": "URL API Gemini",
+ "settings.admin.images.imagesGeminiApiKey.description": "Clé API pour Gemini.",
"settings.admin.images.imagesGeminiApiKey.label": "Clé API",
"settings.admin.images.imageSize.label": "Taille de l'image",
"settings.admin.images.imagesOpenaiApiBaseUrl.label": "URL de base de l'API",
"settings.admin.images.imagesOpenaiApiKey.label": "Clé API",
- "settings.admin.images.imagesOpenaiApiParams.description": "",
+ "settings.admin.images.imagesOpenaiApiParams.description": "Paramètres pour l'API OpenAI.",
"settings.admin.images.imagesOpenaiApiParams.label": "Paramètres supplémentaires",
"settings.admin.images.imagesOpenaiApiVersion.label": "Version de l'API",
"settings.admin.images.sections.createImage.title": "Création d'image",
@@ -2475,11 +2485,11 @@
"settings.admin.images.serverConnectionVerified.label": "Connexion au serveur vérifiée",
"settings.admin.images.steps.label": "Étapes",
"settings.admin.images.title": "Images",
- "settings.admin.images.verifyConnection.label": "",
+ "settings.admin.images.verifyConnection.label": "Vérifier la connexion",
"settings.admin.integrations.addConnection.label": "Ajouter une connexion",
"settings.admin.integrations.externalKnowledge.addConnection.label": "Ajouter une connexion",
- "settings.admin.integrations.externalKnowledge.title": "",
- "settings.admin.integrations.externalToolServers.label": "",
+ "settings.admin.integrations.externalKnowledge.title": "Connaissances externes",
+ "settings.admin.integrations.externalToolServers.label": "Serveurs d'outils externes",
"settings.admin.integrations.mcp.label": "MCP",
"settings.admin.integrations.openApi.label": "OpenAPI",
"settings.admin.integrations.openTerminal.label": "Ouvrir le terminal",
@@ -2487,65 +2497,65 @@
"settings.admin.integrations.sections.terminal.title": "Terminal",
"settings.admin.integrations.sections.tools.title": "Outils",
"settings.admin.integrations.title": "Intégrations",
- "settings.admin.interface.autocompleteGeneration.description": "",
+ "settings.admin.interface.autocompleteGeneration.description": "Activer la génération d'autocomplétion.",
"settings.admin.interface.autocompleteGeneration.label": "Génération des suggestions",
- "settings.admin.interface.autocompleteGenerationInputMaxLength.description": "",
+ "settings.admin.interface.autocompleteGenerationInputMaxLength.description": "Longueur maximale de l'entrée pour l'autocomplétion.",
"settings.admin.interface.autocompleteGenerationInputMaxLength.label": "Longueur maximale pour la génération des suggestions",
- "settings.admin.interface.autocompleteGenerationPrompt.description": "",
- "settings.admin.interface.autocompleteGenerationPrompt.label": "",
- "settings.admin.interface.availableVariables.label": "",
- "settings.admin.interface.contextCompaction.description": "",
- "settings.admin.interface.contextCompaction.label": "",
- "settings.admin.interface.contextCompactionModel.description": "",
- "settings.admin.interface.contextCompactionModel.label": "",
- "settings.admin.interface.contextCompactionPrompt.description": "",
- "settings.admin.interface.contextCompactionPrompt.label": "",
+ "settings.admin.interface.autocompleteGenerationPrompt.description": "Prompt pour la génération d'autocomplétion.",
+ "settings.admin.interface.autocompleteGenerationPrompt.label": "Prompt d'autocomplétion",
+ "settings.admin.interface.availableVariables.label": "Variables disponibles",
+ "settings.admin.interface.contextCompaction.description": "Activer la compaction du contexte.",
+ "settings.admin.interface.contextCompaction.label": "Compaction du contexte",
+ "settings.admin.interface.contextCompactionModel.description": "Modèle pour la compaction du contexte.",
+ "settings.admin.interface.contextCompactionModel.label": "Modèle de compaction",
+ "settings.admin.interface.contextCompactionPrompt.description": "Prompt pour la compaction du contexte.",
+ "settings.admin.interface.contextCompactionPrompt.label": "Prompt de compaction",
"settings.admin.interface.externalTaskModel.label": "Modèle de tâche externe",
- "settings.admin.interface.followUpGeneration.description": "",
+ "settings.admin.interface.followUpGeneration.description": "Activer la génération de questions de suivi.",
"settings.admin.interface.followUpGeneration.label": "Génération de questions de suivi",
- "settings.admin.interface.followUpGenerationPrompt.description": "",
+ "settings.admin.interface.followUpGenerationPrompt.description": "Prompt pour la génération de questions de suivi.",
"settings.admin.interface.followUpGenerationPrompt.label": "Prompt de génération de questions de suivi",
- "settings.admin.interface.imagePromptGenerationPrompt.description": "",
+ "settings.admin.interface.imagePromptGenerationPrompt.description": "Prompt pour la génération de prompts d'images.",
"settings.admin.interface.imagePromptGenerationPrompt.label": "Prompt de génération de prompts d'images",
"settings.admin.interface.localTaskModel.label": "Modèle de tâche local",
- "settings.admin.interface.promptTemplate.description": "",
- "settings.admin.interface.promptTemplate.label": "",
- "settings.admin.interface.queryGenerationPrompt.description": "",
+ "settings.admin.interface.promptTemplate.description": "Modèle pour les invites.",
+ "settings.admin.interface.promptTemplate.label": "Modèle d'invite",
+ "settings.admin.interface.queryGenerationPrompt.description": "Prompt pour la génération de requêtes.",
"settings.admin.interface.queryGenerationPrompt.label": "Prompt de génération de requête",
- "settings.admin.interface.retainedMessages.description": "",
- "settings.admin.interface.retainedMessages.label": "",
- "settings.admin.interface.retrievalQueryGeneration.description": "",
+ "settings.admin.interface.retainedMessages.description": "Messages conservés après compaction.",
+ "settings.admin.interface.retainedMessages.label": "Messages conservés",
+ "settings.admin.interface.retrievalQueryGeneration.description": "Activer la génération de requêtes de récupération.",
"settings.admin.interface.retrievalQueryGeneration.label": "Génération de requête de RAG",
"settings.admin.interface.sections.chat.title": "Conversation",
- "settings.admin.interface.sections.generation.title": "",
+ "settings.admin.interface.sections.generation.title": "Génération",
"settings.admin.interface.sections.tasks.title": "Tâches",
- "settings.admin.interface.tagsGeneration.description": "",
+ "settings.admin.interface.tagsGeneration.description": "Activer la génération automatique de tags.",
"settings.admin.interface.tagsGeneration.label": "Génération de tags",
- "settings.admin.interface.tagsGenerationPrompt.description": "",
+ "settings.admin.interface.tagsGenerationPrompt.description": "Prompt pour la génération de tags.",
"settings.admin.interface.tagsGenerationPrompt.label": "Prompt de génération de tags",
- "settings.admin.interface.taskModel.description": "",
+ "settings.admin.interface.taskModel.description": "Modèle pour les tâches.",
"settings.admin.interface.taskModel.label": "Modèle pour les tâches",
- "settings.admin.interface.taskModelParameters.label": "",
+ "settings.admin.interface.taskModelParameters.label": "Paramètres du modèle de tâche",
"settings.admin.interface.title": "Interface utilisateur",
"settings.admin.interface.titleGeneration.description": "Autoriser les noms automatiques pour les nouvelles conversations.",
"settings.admin.interface.titleGeneration.label": "Génération du Titre",
- "settings.admin.interface.titleGenerationPrompt.description": "",
+ "settings.admin.interface.titleGenerationPrompt.description": "Prompt pour la génération de titres.",
"settings.admin.interface.titleGenerationPrompt.label": "Prompt de génération de titre",
- "settings.admin.interface.tokenCap.description": "",
- "settings.admin.interface.tokenCap.label": "",
- "settings.admin.interface.tokenThreshold.description": "",
- "settings.admin.interface.tokenThreshold.label": "",
- "settings.admin.interface.toolPermissions.description": "",
- "settings.admin.interface.toolPermissions.label": "",
- "settings.admin.interface.toolsFunctionCallingPrompt.description": "",
+ "settings.admin.interface.tokenCap.description": "Plafond de tokens.",
+ "settings.admin.interface.tokenCap.label": "Plafond de tokens",
+ "settings.admin.interface.tokenThreshold.description": "Seuil de tokens.",
+ "settings.admin.interface.tokenThreshold.label": "Seuil de tokens",
+ "settings.admin.interface.toolPermissions.description": "Permissions pour les outils.",
+ "settings.admin.interface.toolPermissions.label": "Permissions des outils",
+ "settings.admin.interface.toolsFunctionCallingPrompt.description": "Prompt pour les appels de fonction des outils.",
"settings.admin.interface.toolsFunctionCallingPrompt.label": "Prompt pour les appels de fonction des outils",
- "settings.admin.interface.voiceModePrompt.description": "",
+ "settings.admin.interface.voiceModePrompt.description": "Prompt pour le mode vocal.",
"settings.admin.interface.voiceModePrompt.label": "Prompt du mode vocal",
- "settings.admin.interface.webSearchQueryGeneration.description": "",
+ "settings.admin.interface.webSearchQueryGeneration.description": "Activer la génération de requêtes de recherche Web.",
"settings.admin.interface.webSearchQueryGeneration.label": "Génération de requête de recherche Web",
"settings.admin.models.builtinTools.automations.description": "Créer et gérer des automatations planifiées",
"settings.admin.models.builtinTools.automations.label": "Automatisations",
- "settings.admin.models.builtinTools.calendar.description": "",
+ "settings.admin.models.builtinTools.calendar.description": "Activer les outils de calendrier.",
"settings.admin.models.builtinTools.calendar.label": "Calendrier",
"settings.admin.models.builtinTools.channels.description": "Rechercher des canaux et des messages dans ces canaux",
"settings.admin.models.builtinTools.channels.label": "Canaux",
@@ -2553,7 +2563,7 @@
"settings.admin.models.builtinTools.chats.label": "Historique des conversations",
"settings.admin.models.builtinTools.codeInterpreter.description": "Exécuter du code",
"settings.admin.models.builtinTools.codeInterpreter.label": "Interpréteur de code",
- "settings.admin.models.builtinTools.files.description": "",
+ "settings.admin.models.builtinTools.files.description": "Activer les outils de fichiers.",
"settings.admin.models.builtinTools.files.label": "Fichiers",
"settings.admin.models.builtinTools.imageGeneration.description": "Créer et modifier des images",
"settings.admin.models.builtinTools.imageGeneration.label": "Génération d'image",
@@ -2563,17 +2573,17 @@
"settings.admin.models.builtinTools.memory.label": "Mémoire",
"settings.admin.models.builtinTools.notes.description": "Rechercher, afficher et gérer les notes de l'utilisateur",
"settings.admin.models.builtinTools.notes.label": "Notes",
- "settings.admin.models.builtinTools.notifications.description": "",
+ "settings.admin.models.builtinTools.notifications.description": "Activer les outils de notifications.",
"settings.admin.models.builtinTools.notifications.label": "Notifications",
- "settings.admin.models.builtinTools.subagents.description": "",
- "settings.admin.models.builtinTools.subagents.label": "",
+ "settings.admin.models.builtinTools.subagents.description": "Activer les outils de sous-agents.",
+ "settings.admin.models.builtinTools.subagents.label": "Sous-agents",
"settings.admin.models.builtinTools.tasks.description": "Décomposer les demandes complexes en étapes traçables",
"settings.admin.models.builtinTools.tasks.label": "Gestion des tâches",
"settings.admin.models.builtinTools.time.description": "Récupérer la date/heure actuelle et effectuer des calculs associés",
"settings.admin.models.builtinTools.time.label": "Horodatage",
"settings.admin.models.builtinTools.title": "Outils intégrés",
- "settings.admin.models.builtinTools.userInput.description": "",
- "settings.admin.models.builtinTools.userInput.label": "",
+ "settings.admin.models.builtinTools.userInput.description": "Activer les outils d'entrée utilisateur.",
+ "settings.admin.models.builtinTools.userInput.label": "Entrée utilisateur",
"settings.admin.models.builtinTools.webSearch.description": "Rechercher sur le web et récupérer le contenu de sites web à partir d'une URL",
"settings.admin.models.builtinTools.webSearch.label": "Recherche Web",
"settings.admin.models.capabilities.builtinTools.description": "Injecte automatiquement les outils système en mode d'appel de fonctions natif (par ex. horodatage, mémoire, historique des conversations, notes, etc.)",
@@ -2588,7 +2598,7 @@
"settings.admin.models.capabilities.fileUpload.label": "Téléversement du fichier",
"settings.admin.models.capabilities.imageGeneration.description": "Le modèle peut générer des images à partir de prompts",
"settings.admin.models.capabilities.imageGeneration.label": "Génération d'image",
- "settings.admin.models.capabilities.memory.description": "",
+ "settings.admin.models.capabilities.memory.description": "Activer les capacités de mémoire.",
"settings.admin.models.capabilities.memory.label": "Mémoire",
"settings.admin.models.capabilities.statusUpdates.description": "Affiche les mises à jour du statut dans la réponse (par ex : la progression de la recherche sur le Web)",
"settings.admin.models.capabilities.statusUpdates.label": "Mises à jour de statut",
@@ -2609,7 +2619,7 @@
"settings.admin.models.defaultFeatures.webSearch.description": "Le modèle peut faire des recherches sur internet pour trouver des informations",
"settings.admin.models.defaultFeatures.webSearch.label": "Recherche Web",
"settings.admin.models.defaults.modelCapabilities.label": "Capacités du modèle",
- "settings.admin.models.defaults.modelDefaults.label": "",
+ "settings.admin.models.defaults.modelDefaults.label": "Valeurs par défaut du modèle",
"settings.admin.models.defaults.modelParameters.label": "Réglages du modèle",
"settings.admin.models.defaults.promptSuggestions.label": "Suggestions de prompts",
"settings.admin.models.disableAllModels.label": "Désactiver tout",
@@ -2621,51 +2631,51 @@
"settings.admin.models.resetModels.label": "Réinitialiser",
"settings.admin.models.showAllModels.label": "Afficher tout",
"settings.admin.models.title": "Modèles",
- "settings.admin.pipelines.githubUrl.label": "",
- "settings.admin.pipelines.install.label": "",
- "settings.admin.pipelines.installing.label": "",
- "settings.admin.pipelines.pipeline.description": "",
- "settings.admin.pipelines.pipeline.label": "",
- "settings.admin.pipelines.pipelineUrl.description": "",
- "settings.admin.pipelines.pipelineUrl.label": "",
+ "settings.admin.pipelines.githubUrl.label": "URL GitHub",
+ "settings.admin.pipelines.install.label": "Installer",
+ "settings.admin.pipelines.installing.label": "Installation en cours",
+ "settings.admin.pipelines.pipeline.description": "Pipeline à installer.",
+ "settings.admin.pipelines.pipeline.label": "Pipeline",
+ "settings.admin.pipelines.pipelineUrl.description": "URL du pipeline.",
+ "settings.admin.pipelines.pipelineUrl.label": "URL du pipeline",
"settings.admin.pipelines.sections.pipelines.title": "Pipelines",
"settings.admin.pipelines.sections.source.title": "Source",
"settings.admin.pipelines.sections.valves.title": "Vannes",
- "settings.admin.pipelines.selectAPyFile.label": "",
+ "settings.admin.pipelines.selectAPyFile.label": "Sélectionner un fichier .py",
"settings.admin.pipelines.title": "Pipelines",
- "settings.admin.pipelines.uploadPipeline.description": "",
+ "settings.admin.pipelines.uploadPipeline.description": "Téléverser un pipeline.",
"settings.admin.pipelines.uploadPipeline.label": "Pipeline de téléchargement",
"settings.admin.subagents.enableBackgroundSubAgents.description": "Autoriser les sous-agents délégués à poursuivre leur exécution pendant que la conversation parente se poursuit.",
- "settings.admin.subagents.enableBackgroundSubAgents.label": "",
- "settings.admin.subagents.enableSubAgents.label": "",
- "settings.admin.subagents.maxBackground.label": "",
- "settings.admin.subagents.maxConcurrent.label": "",
- "settings.admin.subagents.maxIterations.label": "",
- "settings.admin.subagents.maxOutput.label": "",
- "settings.admin.subagents.systemPrompt.description": "",
- "settings.admin.subagents.systemPrompt.label": "",
- "settings.admin.subagents.title": "",
+ "settings.admin.subagents.enableBackgroundSubAgents.label": "Activer les sous-agents en arrière-plan",
+ "settings.admin.subagents.enableSubAgents.label": "Activer les sous-agents",
+ "settings.admin.subagents.maxBackground.label": "Max en arrière-plan",
+ "settings.admin.subagents.maxConcurrent.label": "Max simultané",
+ "settings.admin.subagents.maxIterations.label": "Itérations maximales",
+ "settings.admin.subagents.maxOutput.label": "Sortie maximale",
+ "settings.admin.subagents.systemPrompt.description": "Prompt système pour les sous-agents.",
+ "settings.admin.subagents.systemPrompt.label": "Prompt système",
+ "settings.admin.subagents.title": "Sous-agents",
"settings.admin.web.bingSearchV7Endpoint.label": "Point de terminaison Bing Search V7",
"settings.admin.web.bingSearchV7SubscriptionKey.label": "Clé d'abonnement Bing Search V7",
"settings.admin.web.bochaSearchApiKey.label": "Clé API Bocha Search",
"settings.admin.web.braveSearchApiKey.label": "Clé API Brave Search",
- "settings.admin.web.bypassEmbeddingAndRetrieval.description": "",
+ "settings.admin.web.bypassEmbeddingAndRetrieval.description": "Ignorer l'embedding et la récupération pour le Web.",
"settings.admin.web.bypassEmbeddingAndRetrieval.label": "Ignorer l'Embedding et le Retrieval",
- "settings.admin.web.bypassWebLoader.description": "",
+ "settings.admin.web.bypassWebLoader.description": "Ignorer le chargeur Web.",
"settings.admin.web.bypassWebLoader.label": "Ignorer le chargeur Web",
- "settings.admin.web.concurrentRequests.description": "",
+ "settings.admin.web.concurrentRequests.description": "Nombre de requêtes simultanées.",
"settings.admin.web.concurrentRequests.label": "Demandes concurrentes",
"settings.admin.web.contextTokens.label": "Tokens de contexte",
"settings.admin.web.ddgsBackend.label": "DDGS Backend",
- "settings.admin.web.domainFilterList.description": "",
+ "settings.admin.web.domainFilterList.description": "Liste des domaines à filtrer.",
"settings.admin.web.domainFilterList.label": "Liste des domaines à filtrés",
"settings.admin.web.exaApiKey.label": "Clé API Exa",
"settings.admin.web.externalWebLoaderApiKey.label": "Clé API du chargeur Web externe",
"settings.admin.web.externalWebLoaderUrl.label": "URL du chargeur Web externe",
"settings.admin.web.externalWebSearchApiKey.label": "Clé API de la recherche Web externe",
"settings.admin.web.externalWebSearchUrl.label": "URL de la recherche Web externe",
- "settings.admin.web.fetchUrlContentLengthLimit.description": "",
- "settings.admin.web.fetchUrlContentLengthLimit.label": "",
+ "settings.admin.web.fetchUrlContentLengthLimit.description": "Limite de longueur du contenu de l'URL.",
+ "settings.admin.web.fetchUrlContentLengthLimit.label": "Limite de longueur",
"settings.admin.web.firecrawlApiBaseUrl.label": "Url de base de l'API Firecrawl",
"settings.admin.web.firecrawlApiKey.label": "Clé de l'API Firecrawl",
"settings.admin.web.firecrawlTimeoutS.label": "Délai d'expiration Firecrawl (s)",
@@ -2675,14 +2685,14 @@
"settings.admin.web.jinaApiKey.label": "Clé API Jina",
"settings.admin.web.kagiSearchApiKey.label": "Clé API Kagi Search",
"settings.admin.web.language.label": "Langue",
- "settings.admin.web.linkupApiKey.label": "",
- "settings.admin.web.maxContentLength.description": "",
- "settings.admin.web.maxContentLength.label": "",
- "settings.admin.web.microsoftWebIqApiBaseUrl.label": "",
- "settings.admin.web.microsoftWebIqApiKey.label": "",
+ "settings.admin.web.linkupApiKey.label": "Clé API Linkup",
+ "settings.admin.web.maxContentLength.description": "Longueur maximale du contenu.",
+ "settings.admin.web.maxContentLength.label": "Longueur max",
+ "settings.admin.web.microsoftWebIqApiBaseUrl.label": "URL de base Microsoft Web IQ",
+ "settings.admin.web.microsoftWebIqApiKey.label": "Clé API Microsoft Web IQ",
"settings.admin.web.mojeekSearchApiKey.label": "Clé API Mojeek",
"settings.admin.web.ollamaCloudApiKey.label": "Clé API Ollama Cloud",
- "settings.admin.web.openserpUrl.label": "",
+ "settings.admin.web.openserpUrl.label": "URL OpenSERP",
"settings.admin.web.parameters.label": "Réglages",
"settings.admin.web.perplexityApiKey.label": "Clé API Perplexity",
"settings.admin.web.perplexityModel.label": "Modèle de Perplexity",
@@ -2692,8 +2702,8 @@
"settings.admin.web.playwrightWebsocketUrl.label": "URL du websocket Playwright",
"settings.admin.web.searchapiApiKey.label": "Clé API SearchApi",
"settings.admin.web.searchapiEngine.label": "Moteur de recherche SearchApi",
- "settings.admin.web.searchLimits.description": "",
- "settings.admin.web.searchLimits.label": "",
+ "settings.admin.web.searchLimits.description": "Limites pour la recherche.",
+ "settings.admin.web.searchLimits.label": "Limites de recherche",
"settings.admin.web.searchResultCount.description": "Limite les requêtes de recherche simultanées. 0 = illimité (par défaut). Définir à 1 pour une exécution séquentielle (recommandé pour les API avec des limites de débit strictes comme Brave gratuit).",
"settings.admin.web.searchResultCount.label": "Nombre de résultats de recherche",
"settings.admin.web.searxngQueryUrl.label": "URL de recherche SearXNG",
@@ -2703,30 +2713,30 @@
"settings.admin.web.serpapiApiKey.label": "Clé API SerpApi",
"settings.admin.web.serpapiEngine.label": "Moteur SerpAPI",
"settings.admin.web.serperApiKey.label": "Clé API Serper",
- "settings.admin.web.serphouseApiKey.label": "",
- "settings.admin.web.serphouseDomain.label": "",
+ "settings.admin.web.serphouseApiKey.label": "Clé API SERPHouse",
+ "settings.admin.web.serphouseDomain.label": "Domaine SERPHouse",
"settings.admin.web.serplyApiKey.label": "Clé API Serply",
"settings.admin.web.serpstackApiKey.label": "Clé API Serpstack",
"settings.admin.web.sougouSearchApiSid.label": "Identifiant API Sougou Search (sID)",
"settings.admin.web.sougouSearchApiSk.label": "Clé secrète API Sougou Search (SK)",
"settings.admin.web.tavilyApiKey.label": "Clé API Tavily",
"settings.admin.web.tavilyExtractDepth.label": "Profondeur d'extraction Tavily",
- "settings.admin.web.timeout.description": "",
+ "settings.admin.web.timeout.description": "Délai d'expiration pour les requêtes Web.",
"settings.admin.web.timeout.label": "Délai d'expiration",
"settings.admin.web.title": "Recherche Web",
- "settings.admin.web.trustProxyEnvironment.description": "",
+ "settings.admin.web.trustProxyEnvironment.description": "Faire confiance à l'environnement proxy.",
"settings.admin.web.trustProxyEnvironment.label": "Faire confiance au proxy de l'environement",
- "settings.admin.web.verifySslCertificate.description": "",
+ "settings.admin.web.verifySslCertificate.description": "Vérifier les certificats SSL.",
"settings.admin.web.verifySslCertificate.label": "Vérifier le certificat SSL",
- "settings.admin.web.webLoaderEngine.description": "",
+ "settings.admin.web.webLoaderEngine.description": "Moteur pour le chargeur Web.",
"settings.admin.web.webLoaderEngine.label": "Moteur de chargement Web",
"settings.admin.web.webSearch.description": "Autoriser les utilisateurs à effectuer des recherches sur le Web depuis les conversations.",
"settings.admin.web.webSearch.label": "Recherche Web",
- "settings.admin.web.webSearchConfirmation.description": "",
- "settings.admin.web.webSearchConfirmation.label": "",
- "settings.admin.web.webSearchConfirmationContent.description": "",
- "settings.admin.web.webSearchConfirmationContent.label": "",
- "settings.admin.web.webSearchEngine.description": "",
+ "settings.admin.web.webSearchConfirmation.description": "Activer la confirmation pour la recherche Web.",
+ "settings.admin.web.webSearchConfirmation.label": "Confirmation de recherche Web",
+ "settings.admin.web.webSearchConfirmationContent.description": "Contenu de la confirmation pour la recherche Web.",
+ "settings.admin.web.webSearchConfirmationContent.label": "Contenu de confirmation",
+ "settings.admin.web.webSearchEngine.description": "Moteur pour la recherche Web.",
"settings.admin.web.webSearchEngine.label": "Moteur de recherche Web",
"settings.admin.web.yacyInstanceUrl.label": "URL de l'instance Yacy",
"settings.admin.web.yacyPassword.label": "Mot de passe Yacy",
@@ -2735,37 +2745,37 @@
"settings.admin.web.yandexWebSearchConfig.label": "Configuration de recherche web Yandex",
"settings.admin.web.yandexWebSearchUrl.label": "URL de recherche web Yandex",
"settings.admin.web.youComApiKey.label": "Clé API You.com",
- "settings.admin.web.youtubeLanguage.description": "",
+ "settings.admin.web.youtubeLanguage.description": "Langue pour YouTube.",
"settings.admin.web.youtubeLanguage.label": "Langue de YouTube",
- "settings.admin.web.youtubeProxyUrl.description": "",
+ "settings.admin.web.youtubeProxyUrl.description": "URL du proxy pour YouTube.",
"settings.admin.web.youtubeProxyUrl.label": "URL du proxy YouTube",
"settings.personal.about.checkForUpdates.label": "Vérifier les mises à jour disponibles",
- "settings.personal.about.sections.community.title": "",
+ "settings.personal.about.sections.community.title": "Communauté",
"settings.personal.about.sections.ollamaVersion.title": "Version d'Ollama",
"settings.personal.about.sections.version.title": "Version:",
- "settings.personal.about.seeWhatSNew.description": "",
+ "settings.personal.about.seeWhatSNew.description": "Voir les nouvelles fonctionnalités.",
"settings.personal.about.seeWhatSNew.label": "Découvrez les nouvelles fonctionnalités",
"settings.personal.about.title": "À propos",
- "settings.personal.account.apiKey.description": "",
+ "settings.personal.account.apiKey.description": "Clé API pour l'utilisateur.",
"settings.personal.account.apiKey.label": "Clé API",
- "settings.personal.account.bio.description": "",
+ "settings.personal.account.bio.description": "Biographie de l'utilisateur.",
"settings.personal.account.bio.label": "Bio",
- "settings.personal.account.birthDate.description": "",
+ "settings.personal.account.birthDate.description": "Date de naissance de l'utilisateur.",
"settings.personal.account.birthDate.label": "Date de naissance",
- "settings.personal.account.changePassword.description": "",
+ "settings.personal.account.changePassword.description": "Changer le mot de passe.",
"settings.personal.account.changePassword.label": "Changer le mot de passe",
"settings.personal.account.confirmPassword.label": "Confirmer le mot de passe",
"settings.personal.account.createNewSecretKey.label": "Créer une nouvelle clé secrète",
"settings.personal.account.currentPassword.label": "Mot de passe actuel",
- "settings.personal.account.gender.description": "",
+ "settings.personal.account.gender.description": "Genre de l'utilisateur.",
"settings.personal.account.gender.label": "Genre",
- "settings.personal.account.jwtToken.description": "",
+ "settings.personal.account.jwtToken.description": "Jeton JWT pour l'utilisateur.",
"settings.personal.account.jwtToken.label": "Jeton JWT",
- "settings.personal.account.name.description": "",
+ "settings.personal.account.name.description": "Nom de l'utilisateur.",
"settings.personal.account.name.label": "Nom d'utilisateur",
"settings.personal.account.newPassword.label": "Nouveau mot de passe",
- "settings.personal.account.secrets.description": "",
- "settings.personal.account.secrets.label": "",
+ "settings.personal.account.secrets.description": "Secrets de l'utilisateur.",
+ "settings.personal.account.secrets.label": "Secrets",
"settings.personal.account.sections.apiKeys.title": "Clés API",
"settings.personal.account.sections.password.title": "Mot de passe",
"settings.personal.account.sections.profile.title": "Profil",
@@ -2774,30 +2784,30 @@
"settings.personal.archivedChats.exportArchivedChats.label": "Exporter",
"settings.personal.archivedChats.title": "Conversations archivées",
"settings.personal.archivedChats.unarchiveAll.label": "Désarchiver tout",
- "settings.personal.audio.allowNonLocalVoices.description": "",
+ "settings.personal.audio.allowNonLocalVoices.description": "Autoriser les voix non locales.",
"settings.personal.audio.allowNonLocalVoices.label": "Autoriser les voix non locales",
- "settings.personal.audio.autoPlaybackResponse.description": "",
+ "settings.personal.audio.autoPlaybackResponse.description": "Lire automatiquement les réponses.",
"settings.personal.audio.autoPlaybackResponse.label": "Lire automatiquement la réponse",
- "settings.personal.audio.browserVoice.description": "",
+ "settings.personal.audio.browserVoice.description": "Voix du navigateur pour la synthèse vocale.",
"settings.personal.audio.browserVoice.label": "Choisir la voix",
- "settings.personal.audio.instantAutoSendAfterVoiceTranscription.description": "",
+ "settings.personal.audio.instantAutoSendAfterVoiceTranscription.description": "Envoyer automatiquement après la transcription vocale.",
"settings.personal.audio.instantAutoSendAfterVoiceTranscription.label": "Envoi automatique après la transcription",
- "settings.personal.audio.kokoroJsDtype.description": "",
+ "settings.personal.audio.kokoroJsDtype.description": "Type de données pour Kokoro.js.",
"settings.personal.audio.kokoroJsDtype.label": "Kokoro.js Dtype",
- "settings.personal.audio.kokoroVoice.description": "",
+ "settings.personal.audio.kokoroVoice.description": "Voix pour Kokoro.js.",
"settings.personal.audio.kokoroVoice.label": "Choisir la voix",
- "settings.personal.audio.language.description": "",
+ "settings.personal.audio.language.description": "Langue pour la synthèse vocale.",
"settings.personal.audio.language.label": "Langue",
"settings.personal.audio.sections.sttSettings.title": "Réglages de Speech-to-Text",
"settings.personal.audio.sections.ttsSettings.title": "Réglages de Text-to-Speech",
"settings.personal.audio.sections.voice.title": "Voix",
- "settings.personal.audio.serviceVoice.description": "",
+ "settings.personal.audio.serviceVoice.description": "Voix du service de synthèse vocale.",
"settings.personal.audio.serviceVoice.label": "Choisir la voix",
- "settings.personal.audio.speechPlaybackSpeed.description": "",
+ "settings.personal.audio.speechPlaybackSpeed.description": "Vitesse de lecture de la parole.",
"settings.personal.audio.speechPlaybackSpeed.label": "Vitesse de lecture de la parole",
- "settings.personal.audio.speechToTextEngine.description": "",
+ "settings.personal.audio.speechToTextEngine.description": "Moteur pour la reconnaissance vocale.",
"settings.personal.audio.speechToTextEngine.label": "Moteur de reconnaissance vocale",
- "settings.personal.audio.textToSpeechEngine.description": "",
+ "settings.personal.audio.textToSpeechEngine.description": "Moteur pour la synthèse vocale.",
"settings.personal.audio.textToSpeechEngine.label": "Moteur de Text-to-Speech",
"settings.personal.audio.title": "Audio",
"settings.personal.connections.addConnection.description": "Connectez-vous à vos points d'extension API compatibles OpenAI.",
@@ -2805,52 +2815,52 @@
"settings.personal.connections.sections.directConnections.title": "Direct connexions",
"settings.personal.connections.title": "Connexions",
"settings.personal.dataControls.archiveAll.label": "Tout archiver",
- "settings.personal.dataControls.archiveAllChats.description": "",
+ "settings.personal.dataControls.archiveAllChats.description": "Archiver toutes les conversations.",
"settings.personal.dataControls.archiveAllChats.label": "Archiver toutes les conversations",
- "settings.personal.dataControls.deleteAllChats.description": "",
+ "settings.personal.dataControls.deleteAllChats.description": "Supprimer toutes les conversations.",
"settings.personal.dataControls.deleteAllChats.label": "Supprimer toutes les conversations",
- "settings.personal.dataControls.exportChats.description": "",
+ "settings.personal.dataControls.exportChats.description": "Exporter les conversations.",
"settings.personal.dataControls.exportChats.label": "Exporter les conversations",
- "settings.personal.dataControls.importChats.description": "",
+ "settings.personal.dataControls.importChats.description": "Importer les conversations.",
"settings.personal.dataControls.importChats.label": "Importer les conversations",
- "settings.personal.dataControls.manageFiles.description": "",
+ "settings.personal.dataControls.manageFiles.description": "Gérer les fichiers.",
"settings.personal.dataControls.manageFiles.label": "Gérer les fichiers",
"settings.personal.dataControls.sections.chats.title": "Conversations",
"settings.personal.dataControls.sections.files.title": "Fichiers",
- "settings.personal.dataControls.sharedChats.description": "",
+ "settings.personal.dataControls.sharedChats.description": "Gérer les conversations partagées.",
"settings.personal.dataControls.sharedChats.label": "Conversations partagées",
"settings.personal.dataControls.title": "Contrôles des données",
- "settings.personal.general.language.description": "",
+ "settings.personal.general.language.description": "Langue de l'interface.",
"settings.personal.general.language.label": "Langue",
- "settings.personal.general.modelParameters.description": "",
- "settings.personal.general.modelParameters.label": "",
- "settings.personal.general.parameters.contextCompactionThreshold.description": "",
- "settings.personal.general.parameters.contextCompactionThreshold.label": "",
- "settings.personal.general.parameters.format.label": "",
- "settings.personal.general.parameters.frequencyPenalty.label": "",
- "settings.personal.general.parameters.functionCalling.description": "",
+ "settings.personal.general.modelParameters.description": "Paramètres du modèle.",
+ "settings.personal.general.modelParameters.label": "Paramètres du modèle",
+ "settings.personal.general.parameters.contextCompactionThreshold.description": "Seuil de compaction du contexte.",
+ "settings.personal.general.parameters.contextCompactionThreshold.label": "Seuil de compaction",
+ "settings.personal.general.parameters.format.label": "Format",
+ "settings.personal.general.parameters.frequencyPenalty.label": "Pénalité de fréquence",
+ "settings.personal.general.parameters.functionCalling.description": "Activer l'appel de fonction.",
"settings.personal.general.parameters.functionCalling.label": "Appel de fonction",
- "settings.personal.general.parameters.keepAlive.label": "",
- "settings.personal.general.parameters.logitBias.label": "",
- "settings.personal.general.parameters.maxTokens.label": "",
- "settings.personal.general.parameters.minP.label": "",
- "settings.personal.general.parameters.mirostat.label": "",
- "settings.personal.general.parameters.mirostatEta.label": "",
- "settings.personal.general.parameters.mirostatTau.label": "",
- "settings.personal.general.parameters.numBatch.label": "",
- "settings.personal.general.parameters.numCtx.label": "",
- "settings.personal.general.parameters.numGpu.label": "",
- "settings.personal.general.parameters.numKeep.label": "",
- "settings.personal.general.parameters.numThread.label": "",
+ "settings.personal.general.parameters.keepAlive.label": "Maintenir actif",
+ "settings.personal.general.parameters.logitBias.label": "Biais logit",
+ "settings.personal.general.parameters.maxTokens.label": "Tokens max",
+ "settings.personal.general.parameters.minP.label": "Min P",
+ "settings.personal.general.parameters.mirostat.label": "Mirostat",
+ "settings.personal.general.parameters.mirostatEta.label": "Mirostat Eta",
+ "settings.personal.general.parameters.mirostatTau.label": "Mirostat Tau",
+ "settings.personal.general.parameters.numBatch.label": "Taille du lot",
+ "settings.personal.general.parameters.numCtx.label": "Contexte num",
+ "settings.personal.general.parameters.numGpu.label": "GPU num",
+ "settings.personal.general.parameters.numKeep.label": "Conserver num",
+ "settings.personal.general.parameters.numThread.label": "Threads num",
"settings.personal.general.parameters.ollama.description": "Cette option active ou désactive l'utilisation de la fonctionnalité de raisonnement dans Ollama, qui permet au modèle de réfléchir avant de générer une réponse. Lorsqu'elle est activée, le modèle peut prendre un moment pour traiter le contexte de la conversation et générer une réponse plus réfléchie.",
"settings.personal.general.parameters.ollama.label": "Ollama",
- "settings.personal.general.parameters.presencePenalty.label": "",
+ "settings.personal.general.parameters.presencePenalty.label": "Pénalité de présence",
"settings.personal.general.parameters.reasoningEffort.description": "Contraint l'effort de raisonnement pour les modèles de raisonnement. Applicable uniquement aux modèles de raisonnement de certains fournisseurs qui prennent en charge l'effort de raisonnement.",
"settings.personal.general.parameters.reasoningEffort.label": "Effort de raisonnement",
"settings.personal.general.parameters.reasoningTags.description": "Activer, désactiver ou personnaliser les balises de raisonnement utilisées par le modèle. « Activé » utilise les balises par défaut, « Désactivé » désactive les balises de raisonnement, et « Sur mesure » permet de spécifier vos propres balises de début et de fin.",
"settings.personal.general.parameters.reasoningTags.label": "Balises de raisonnement",
- "settings.personal.general.parameters.repeatLastN.label": "",
- "settings.personal.general.parameters.repeatPenalty.label": "",
+ "settings.personal.general.parameters.repeatLastN.label": "Répéter dernier N",
+ "settings.personal.general.parameters.repeatPenalty.label": "Pénalité de répétition",
"settings.personal.general.parameters.seed.description": "Définit la graine du générateur aléatoire pour produire un résultat déterministe. Une même graine produira toujours la même sortie pour une invite donnée.",
"settings.personal.general.parameters.seed.label": "Seed",
"settings.personal.general.parameters.stopSequence.description": "Définit les séquences d'arrêt à utiliser. Lorsque ce motif est rencontré, le LLM cessera de générer du texte et retournera. Plusieurs motifs d'arrêt peuvent être définis en spécifiant plusieurs réglages d'arrêt distincts dans un fichier modèle.",
@@ -2861,110 +2871,110 @@
"settings.personal.general.parameters.streamDeltaChunkSize.label": "Taille des blocs delta du streaming",
"settings.personal.general.parameters.temperature.description": "La température du modèle. Une température plus élevée rend les réponses plus créatives.",
"settings.personal.general.parameters.temperature.label": "Température",
- "settings.personal.general.parameters.tfsZ.label": "",
- "settings.personal.general.parameters.think.label": "",
- "settings.personal.general.parameters.topK.label": "",
- "settings.personal.general.parameters.topP.label": "",
- "settings.personal.general.parameters.useMlock.label": "",
- "settings.personal.general.parameters.useMmap.label": "",
+ "settings.personal.general.parameters.tfsZ.label": "TFS Z",
+ "settings.personal.general.parameters.think.label": "Réfléchir",
+ "settings.personal.general.parameters.topK.label": "Top K",
+ "settings.personal.general.parameters.topP.label": "Top P",
+ "settings.personal.general.parameters.useMlock.label": "Utiliser mlock",
+ "settings.personal.general.parameters.useMmap.label": "Utiliser mmap",
"settings.personal.general.sections.advancedParameters.title": "Réglages avancés",
- "settings.personal.general.sections.systemPrompt.description": "",
+ "settings.personal.general.sections.systemPrompt.description": "Paramètres pour l'invite système.",
"settings.personal.general.sections.systemPrompt.title": "Prompt système",
"settings.personal.general.sections.webuiSettings.title": "Réglages de WebUI",
- "settings.personal.general.theme.description": "",
+ "settings.personal.general.theme.description": "Thème de l'interface.",
"settings.personal.general.theme.label": "Thème",
"settings.personal.general.title": "Général",
- "settings.personal.interface.accessibilityMode.description": "",
- "settings.personal.interface.accessibilityMode.label": "",
- "settings.personal.interface.allowUserLocation.description": "",
+ "settings.personal.interface.accessibilityMode.description": "Activer le mode accessibilité.",
+ "settings.personal.interface.accessibilityMode.label": "Mode accessibilité",
+ "settings.personal.interface.allowUserLocation.description": "Autoriser l'accès à la localisation.",
"settings.personal.interface.allowUserLocation.label": "Autoriser l'emplacement de l'utilisateur",
- "settings.personal.interface.allowVoiceInterruptionInCall.description": "",
+ "settings.personal.interface.allowVoiceInterruptionInCall.description": "Autoriser l'interruption vocale.",
"settings.personal.interface.allowVoiceInterruptionInCall.label": "Autoriser l'interruption vocale pendant un appel",
- "settings.personal.interface.alwaysCollapseCodeBlocks.description": "",
+ "settings.personal.interface.alwaysCollapseCodeBlocks.description": "Toujours réduire les blocs de code.",
"settings.personal.interface.alwaysCollapseCodeBlocks.label": "Toujours réduire les blocs de code",
- "settings.personal.interface.alwaysExpandDetails.description": "",
+ "settings.personal.interface.alwaysExpandDetails.description": "Toujours développer les détails.",
"settings.personal.interface.alwaysExpandDetails.label": "Toujours afficher les détails",
"settings.personal.interface.android.label": "Android",
- "settings.personal.interface.autoCopyResponseToClipboard.description": "",
+ "settings.personal.interface.autoCopyResponseToClipboard.description": "Copier automatiquement les réponses dans le presse-papiers.",
"settings.personal.interface.autoCopyResponseToClipboard.label": "Copie automatique de la réponse vers le presse-papiers",
- "settings.personal.interface.chatBackgroundImage.description": "",
+ "settings.personal.interface.chatBackgroundImage.description": "Image d'arrière-plan de la conversation.",
"settings.personal.interface.chatBackgroundImage.label": "Image d'arrière-plan de la fenêtre de la conversation",
- "settings.personal.interface.chatBubbleUi.description": "",
+ "settings.personal.interface.chatBubbleUi.description": "Utiliser l'interface à bulles.",
"settings.personal.interface.chatBubbleUi.label": "Bulles de conversation",
- "settings.personal.interface.chatDirection.description": "",
+ "settings.personal.interface.chatDirection.description": "Direction de la conversation.",
"settings.personal.interface.chatDirection.label": "Direction de la conversation",
- "settings.personal.interface.chatHoverPreviews.description": "",
- "settings.personal.interface.chatHoverPreviews.label": "",
- "settings.personal.interface.chatTagsAutoGeneration.description": "",
+ "settings.personal.interface.chatHoverPreviews.description": "Afficher les aperçus au survol.",
+ "settings.personal.interface.chatHoverPreviews.label": "Aperçus au survol",
+ "settings.personal.interface.chatTagsAutoGeneration.description": "Générer automatiquement les tags.",
"settings.personal.interface.chatTagsAutoGeneration.label": "Génération automatique des tags",
- "settings.personal.interface.compressImagesInChannels.description": "",
+ "settings.personal.interface.compressImagesInChannels.description": "Compresser les images dans les canaux.",
"settings.personal.interface.compressImagesInChannels.label": "Compresser les images dans les canaux",
- "settings.personal.interface.copyFormattedText.description": "",
+ "settings.personal.interface.copyFormattedText.description": "Copier le texte formaté.",
"settings.personal.interface.copyFormattedText.label": "Copier le texte en gardant le format",
"settings.personal.interface.decreaseUiScale.label": "Réduire la taille de l'interface",
- "settings.personal.interface.defaultUploadMode.description": "",
- "settings.personal.interface.defaultUploadMode.label": "",
- "settings.personal.interface.detectArtifactsAutomatically.description": "",
+ "settings.personal.interface.defaultUploadMode.description": "Mode de téléversement par défaut.",
+ "settings.personal.interface.defaultUploadMode.label": "Mode par défaut",
+ "settings.personal.interface.detectArtifactsAutomatically.description": "Détecter automatiquement les artefacts.",
"settings.personal.interface.detectArtifactsAutomatically.label": "Détection automatique des Artifacts",
- "settings.personal.interface.displayChatTitleInTab.description": "",
+ "settings.personal.interface.displayChatTitleInTab.description": "Afficher le titre de la conversation dans l'onglet.",
"settings.personal.interface.displayChatTitleInTab.label": "Afficher le nom de la conversation dans l'onglet",
- "settings.personal.interface.displayEmojiInCall.description": "",
+ "settings.personal.interface.displayEmojiInCall.description": "Afficher les emojis dans l'appel.",
"settings.personal.interface.displayEmojiInCall.label": "Afficher les emojis pendant l'appel",
- "settings.personal.interface.displayMultiModelResponsesInTabs.description": "",
+ "settings.personal.interface.displayMultiModelResponsesInTabs.description": "Afficher les réponses multi-modèles dans des onglets.",
"settings.personal.interface.displayMultiModelResponsesInTabs.label": "Afficher les réponses multi-modèles dans des onglets",
- "settings.personal.interface.displayTheUsernameInsteadOfYouInTheChat.description": "",
+ "settings.personal.interface.displayTheUsernameInsteadOfYouInTheChat.description": "Afficher le nom d'utilisateur au lieu de 'Vous'.",
"settings.personal.interface.displayTheUsernameInsteadOfYouInTheChat.label": "Afficher le nom d'utilisateur à la place de \"Vous\" dans la conversation",
- "settings.personal.interface.enableMessageQueue.description": "",
+ "settings.personal.interface.enableMessageQueue.description": "Activer la file d'attente des messages.",
"settings.personal.interface.enableMessageQueue.label": "Activer la mise en file d'attente de message",
- "settings.personal.interface.enterKeyBehavior.description": "",
+ "settings.personal.interface.enterKeyBehavior.description": "Comportement de la touche Entrée.",
"settings.personal.interface.enterKeyBehavior.label": "Comportement de la touche Entrée",
- "settings.personal.interface.fadeEffectForStreamingText.description": "",
+ "settings.personal.interface.fadeEffectForStreamingText.description": "Activer l'effet de fondu pour le texte en streaming.",
"settings.personal.interface.fadeEffectForStreamingText.label": "Effet de fondu pour le texte en streaming",
"settings.personal.interface.floatingQuickActions.label": "Actions rapides flottantes",
- "settings.personal.interface.followUpAutoGeneration.description": "",
+ "settings.personal.interface.followUpAutoGeneration.description": "Générer automatiquement les questions de suivi.",
"settings.personal.interface.followUpAutoGeneration.label": "Génération automatique de questions de suivi",
- "settings.personal.interface.fontFamily.description": "",
- "settings.personal.interface.fontFamily.label": "",
+ "settings.personal.interface.fontFamily.description": "Famille de polices pour l'interface.",
+ "settings.personal.interface.fontFamily.label": "Famille de polices",
"settings.personal.interface.hapticFeedback.label": "Retour haptique",
- "settings.personal.interface.iframeSandboxAllowDownloads.description": "",
- "settings.personal.interface.iframeSandboxAllowDownloads.label": "",
+ "settings.personal.interface.iframeSandboxAllowDownloads.description": "Autoriser les téléchargements dans les iframes.",
+ "settings.personal.interface.iframeSandboxAllowDownloads.label": "Téléchargements dans iframes",
"settings.personal.interface.iframeSandboxAllowForms.description": "Autoriser les formulaires dans les iframes sandbox des artéfacts.",
"settings.personal.interface.iframeSandboxAllowForms.label": "Autoriser les formulaires dans l'iframe sandbox",
"settings.personal.interface.iframeSandboxAllowSameOrigin.description": "Autoriser les artéfacts à accéder aux API du navigateur de même origine dans l'iframe sandbox.",
"settings.personal.interface.iframeSandboxAllowSameOrigin.label": "Autoriser même origine dans l'iframe sandbox",
- "settings.personal.interface.iframeSandboxAllowScripts.description": "",
- "settings.personal.interface.iframeSandboxAllowScripts.label": "",
+ "settings.personal.interface.iframeSandboxAllowScripts.description": "Autoriser les scripts dans les iframes.",
+ "settings.personal.interface.iframeSandboxAllowScripts.label": "Scripts dans iframes",
"settings.personal.interface.imageCompression.label": "Compression d'image",
"settings.personal.interface.increaseUiScale.label": "Augmenter la taille de l'interface",
- "settings.personal.interface.insertFollowUpPromptToInput.description": "",
+ "settings.personal.interface.insertFollowUpPromptToInput.description": "Insérer les questions de suivi dans la zone de saisie.",
"settings.personal.interface.insertFollowUpPromptToInput.label": "Insérer la question de suivi dans la zone de saisie",
- "settings.personal.interface.insertPromptAsRichText.description": "",
+ "settings.personal.interface.insertPromptAsRichText.description": "Insérer les invites en texte riche.",
"settings.personal.interface.insertPromptAsRichText.label": "Insérer le prompt en tant que texte enrichi",
- "settings.personal.interface.insertSuggestionPromptToInput.description": "",
+ "settings.personal.interface.insertSuggestionPromptToInput.description": "Insérer les invites suggérées dans la zone de saisie.",
"settings.personal.interface.insertSuggestionPromptToInput.label": "Insérer le prompt suggéré dans la zone de saisie",
- "settings.personal.interface.keepFollowUpPromptsInChat.description": "",
+ "settings.personal.interface.keepFollowUpPromptsInChat.description": "Conserver les questions de suivi dans la conversation.",
"settings.personal.interface.keepFollowUpPromptsInChat.label": "Conserver les questions de suivi précédentes dans la conversation",
- "settings.personal.interface.landingPageMode.description": "",
+ "settings.personal.interface.landingPageMode.description": "Mode de la page d'accueil.",
"settings.personal.interface.landingPageMode.label": "Mode de la page d'accueil",
"settings.personal.interface.openModalToManageFloatingQuickActions.label": "Ouvrir la fenêtre de gestion des actions rapides flottantes",
"settings.personal.interface.openModalToManageImageCompression.label": "Ouvrir la fenêtre de gestion de la compression d'images",
- "settings.personal.interface.pasteLargeTextAsFile.description": "",
+ "settings.personal.interface.pasteLargeTextAsFile.description": "Coller le texte long comme fichier.",
"settings.personal.interface.pasteLargeTextAsFile.label": "Coller un texte volumineux comme fichier",
- "settings.personal.interface.promptAutocompletion.description": "",
+ "settings.personal.interface.promptAutocompletion.description": "Activer l'autocomplétion des invites.",
"settings.personal.interface.promptAutocompletion.label": "Autocomplétion de prompt",
- "settings.personal.interface.regenerateMenu.description": "",
+ "settings.personal.interface.regenerateMenu.description": "Afficher le menu de régénération.",
"settings.personal.interface.regenerateMenu.label": "Menu Regénérer",
- "settings.personal.interface.renderMarkdownInAssistantMessages.description": "",
+ "settings.personal.interface.renderMarkdownInAssistantMessages.description": "Afficher le Markdown dans les messages de l'assistant.",
"settings.personal.interface.renderMarkdownInAssistantMessages.label": "Afficher le Markdown dans les messages de l'assistant",
- "settings.personal.interface.renderMarkdownInPreviews.description": "",
+ "settings.personal.interface.renderMarkdownInPreviews.description": "Afficher le Markdown dans les aperçus.",
"settings.personal.interface.renderMarkdownInPreviews.label": "Afficher le Markdown dans les aperçus",
- "settings.personal.interface.renderMarkdownInUserMessages.description": "",
+ "settings.personal.interface.renderMarkdownInUserMessages.description": "Afficher le Markdown dans les messages utilisateur.",
"settings.personal.interface.renderMarkdownInUserMessages.label": "Afficher le Markdown dans les messages de l'utilisateur",
- "settings.personal.interface.responseAutoScroll.description": "",
- "settings.personal.interface.responseAutoScroll.label": "",
- "settings.personal.interface.richTextInputForChat.description": "",
+ "settings.personal.interface.responseAutoScroll.description": "Défilement automatique des réponses.",
+ "settings.personal.interface.responseAutoScroll.label": "Défilement automatique",
+ "settings.personal.interface.richTextInputForChat.description": "Utiliser la saisie de texte riche.",
"settings.personal.interface.richTextInputForChat.label": "Saisie de texte enrichi pour la conversation",
- "settings.personal.interface.scrollOnBranchChange.description": "",
+ "settings.personal.interface.scrollOnBranchChange.description": "Faire défiler lors du changement de branche.",
"settings.personal.interface.scrollOnBranchChange.label": "Défilement lors du changement de branche",
"settings.personal.interface.sections.artifacts.title": "Artéfacts",
"settings.personal.interface.sections.chat.title": "Conversation",
@@ -2972,57 +2982,57 @@
"settings.personal.interface.sections.input.title": "Entrée",
"settings.personal.interface.sections.ui.title": "UI",
"settings.personal.interface.sections.voice.title": "Voix",
- "settings.personal.interface.showFilesOnTerminalSelect.description": "",
- "settings.personal.interface.showFilesOnTerminalSelect.label": "",
- "settings.personal.interface.showFormattingToolbar.description": "",
+ "settings.personal.interface.showFilesOnTerminalSelect.description": "Afficher les fichiers lors de la sélection du terminal.",
+ "settings.personal.interface.showFilesOnTerminalSelect.label": "Afficher les fichiers",
+ "settings.personal.interface.showFormattingToolbar.description": "Afficher la barre d'outils de formatage.",
"settings.personal.interface.showFormattingToolbar.label": "Afficher la barre d'outils de formatage",
- "settings.personal.interface.stylizedPdfExport.description": "",
+ "settings.personal.interface.stylizedPdfExport.description": "Exporter les PDF avec style.",
"settings.personal.interface.stylizedPdfExport.label": "Export de PDF stylisés",
- "settings.personal.interface.temporaryChatByDefault.description": "",
+ "settings.personal.interface.temporaryChatByDefault.description": "Utiliser des conversations temporaires par défaut.",
"settings.personal.interface.temporaryChatByDefault.label": "Conversation temporaire par défaut",
- "settings.personal.interface.terminalFileDisplay.description": "",
- "settings.personal.interface.terminalFileDisplay.label": "",
- "settings.personal.interface.terminalPreviewAllowSameOrigin.description": "",
- "settings.personal.interface.terminalPreviewAllowSameOrigin.label": "",
+ "settings.personal.interface.terminalFileDisplay.description": "Affichage des fichiers du terminal.",
+ "settings.personal.interface.terminalFileDisplay.label": "Affichage terminal",
+ "settings.personal.interface.terminalPreviewAllowSameOrigin.description": "Autoriser la même origine pour l'aperçu du terminal.",
+ "settings.personal.interface.terminalPreviewAllowSameOrigin.label": "Même origine pour l'aperçu",
"settings.personal.interface.title": "Interface utilisateur",
- "settings.personal.interface.titleAutoGeneration.description": "",
+ "settings.personal.interface.titleAutoGeneration.description": "Générer automatiquement les titres.",
"settings.personal.interface.titleAutoGeneration.label": "Génération automatique des titres",
- "settings.personal.interface.toastNotificationsForNewUpdates.description": "",
+ "settings.personal.interface.toastNotificationsForNewUpdates.description": "Afficher les notifications pour les nouvelles mises à jour.",
"settings.personal.interface.toastNotificationsForNewUpdates.label": "Notifications toast pour les nouvelles mises à jour",
"settings.personal.interface.uiScale.label": "Zoom de l'interface utilisateur",
- "settings.personal.interface.webSearchInChat.description": "",
+ "settings.personal.interface.webSearchInChat.description": "Activer la recherche Web dans la conversation.",
"settings.personal.interface.webSearchInChat.label": "Recherche web depuis la conversation",
- "settings.personal.interface.widescreenMode.description": "",
+ "settings.personal.interface.widescreenMode.description": "Mode grand écran.",
"settings.personal.interface.widescreenMode.label": "Mode grand écran",
- "settings.personal.notifications.addNotificationTarget.label": "",
- "settings.personal.notifications.browserNotifications.label": "",
+ "settings.personal.notifications.addNotificationTarget.label": "Ajouter une cible de notification",
+ "settings.personal.notifications.browserNotifications.label": "Notifications du navigateur",
"settings.personal.notifications.notificationSound.label": "Son de notification",
- "settings.personal.notifications.notificationTargets.label": "",
+ "settings.personal.notifications.notificationTargets.label": "Cibles de notification",
"settings.personal.notifications.title": "Notifications",
"settings.personal.personalization.clearMemory.label": "Effacer la mémoire",
"settings.personal.personalization.manageMemories.label": "Gérer",
"settings.personal.personalization.memory.description": "Vous pouvez personnaliser vos interactions avec les LLM en ajoutant des mémoires à l'aide du bouton « Gérer » ci-dessous, ce qui les rendra plus utiles et mieux adaptées à vos besoins.",
"settings.personal.personalization.memory.label": "Mémoire",
"settings.personal.personalization.noResultsFound.description": "Les souvenirs accessibles par les LLMs seront affichées ici.",
- "settings.personal.personalization.savedMemories.label": "",
+ "settings.personal.personalization.savedMemories.label": "Mémoires enregistrées",
"settings.personal.personalization.sections.memory.title": "Mémoire",
"settings.personal.personalization.title": "Personnalisation",
- "settings.personal.shortcuts.acceptAutocomplete.label": "",
+ "settings.personal.shortcuts.acceptAutocomplete.label": "Accepter l'autocomplétion",
"settings.personal.shortcuts.addPrompt.label": "Ajouter un prompt personnalisé",
- "settings.personal.shortcuts.allowToolCall.label": "",
+ "settings.personal.shortcuts.allowToolCall.label": "Autoriser l'appel d'outil",
"settings.personal.shortcuts.attachFile.label": "Joindre un fichier depuis les connaissances",
"settings.personal.shortcuts.closeModal.label": "Fermer la fenêtre",
"settings.personal.shortcuts.command.label": "Commande",
"settings.personal.shortcuts.copyLastCodeBlock.label": "Copier le dernier bloc de code",
"settings.personal.shortcuts.copyLastResponse.label": "Copier la dernière réponse",
"settings.personal.shortcuts.deleteChat.label": "Supprimer la Conversation",
- "settings.personal.shortcuts.denyToolCall.label": "",
- "settings.personal.shortcuts.enableKeyboardShortcuts.description": "",
- "settings.personal.shortcuts.enableKeyboardShortcuts.label": "",
+ "settings.personal.shortcuts.denyToolCall.label": "Refuser l'appel d'outil",
+ "settings.personal.shortcuts.enableKeyboardShortcuts.description": "Activer les raccourcis clavier.",
+ "settings.personal.shortcuts.enableKeyboardShortcuts.label": "Raccourcis clavier",
"settings.personal.shortcuts.focusInput.label": "Activer la zone de saisie",
"settings.personal.shortcuts.generateMessagePair.label": "Générer une paire de messages",
- "settings.personal.shortcuts.navigateChatDown.label": "",
- "settings.personal.shortcuts.navigateChatUp.label": "",
+ "settings.personal.shortcuts.navigateChatDown.label": "Naviguer vers le bas",
+ "settings.personal.shortcuts.navigateChatUp.label": "Naviguer vers le haut",
"settings.personal.shortcuts.navigatePromptHistoryUp.label": "Modifier le dernier message",
"settings.personal.shortcuts.newChat.label": "Nouvelle conversation",
"settings.personal.shortcuts.newTemporaryChat.label": "Nouvelle conversation temporaire",
@@ -3030,56 +3040,58 @@
"settings.personal.shortcuts.openSettings.label": "Ouvrir les réglages",
"settings.personal.shortcuts.preventFileCreation.label": "Empêcher la création de fichier",
"settings.personal.shortcuts.regenerateResponse.label": "Regénérer la réponse",
- "settings.personal.shortcuts.resetDefaults.label": "",
+ "settings.personal.shortcuts.resetDefaults.label": "Réinitialiser les valeurs par défaut",
"settings.personal.shortcuts.search.label": "Recherche",
"settings.personal.shortcuts.showShortcuts.label": "Afficher les raccourcis clavier",
"settings.personal.shortcuts.stopGenerating.label": "Arrêter la génération",
"settings.personal.shortcuts.talkToModel.label": "Parler au modèle",
- "settings.personal.shortcuts.title": "",
- "settings.personal.shortcuts.toggleControls.label": "",
+ "settings.personal.shortcuts.title": "Raccourcis",
+ "settings.personal.shortcuts.toggleControls.label": "Basculer les contrôles",
"settings.personal.shortcuts.toggleDictation.label": "Activer/Désactiver la dictée",
- "settings.personal.shortcuts.toggleMute.label": "",
+ "settings.personal.shortcuts.toggleMute.label": "Basculer le mode muet",
"settings.personal.shortcuts.toggleSidebar.label": "Afficher/Masquer la barre latérale",
"settings.personal.tools.addConnection.description": "Connectez-vous à vos serveurs d'outils externes.",
"settings.personal.tools.addConnection.label": "Ajouter une connexion",
"settings.personal.tools.openApi.label": "OpenAPI",
- "settings.personal.tools.sections.externalToolServers.title": "",
+ "settings.personal.tools.sections.externalToolServers.title": "Serveurs d'outils externes",
"settings.personal.tools.terminals.addConnection.description": "Connectez-vous à des instances Open Terminal pour parcourir les fichiers et les utiliser comme outils permanents. Une seule peut être active à la fois.",
"settings.personal.tools.terminals.addConnection.label": "Ajouter une connexion",
"settings.personal.tools.terminals.sections.openTerminal.title": "Ouvrir le terminal",
"settings.personal.tools.title": "Intégrations",
"settings.personal.usage.sections.activity.title": "Activité",
- "settings.personal.usage.sections.activityInsights.title": "",
- "settings.personal.usage.sections.mostUsedTools.title": "",
+ "settings.personal.usage.sections.activityInsights.title": "Analyse de l'activité",
+ "settings.personal.usage.sections.mostUsedTools.title": "Outils les plus utilisés",
"settings.personal.usage.sections.overview.title": "Aperçu",
- "settings.personal.usage.sections.topModels.title": "",
+ "settings.personal.usage.sections.topModels.title": "Meilleurs modèles",
"settings.personal.usage.title": "Consommation de tokens",
"Share": "Partager",
"Share Chat": "Partage de conversation",
"Share link copied to clipboard.": "Lien de partage copié dans le presse-papiers.",
"Share to Open WebUI Community": "Partager avec la communauté OpenWebUI",
"Share your background and interests": "Partagez votre parcours et vos intérêts",
- "Shared": "",
+ "Shared": "Partagé",
"Shared Chats": "Conversations partagées",
"Shared with you": "Partagé avec vous",
"Sharing Permissions": "Autorisation de partage",
- "Shell": "",
- "Shorten older messages so this chat can keep going.": "",
+ "Shell": "Terminal",
+ "Shorten older messages so this chat can keep going.": "Raccourcir les anciens messages pour que cette conversation puisse continuer.",
"Show": "Afficher",
"Show \"What's New\" Modal on Login": "Afficher la fenêtre modale \"Quoi de neuf\" lors de la connexion",
"Show All": "Afficher tout",
"Show all ({{COUNT}} characters)": "Tout afficher ({{COUNT}} caractères)",
"Show Files": "Afficher les fichiers",
- "Show Hidden Files": "",
+ "Show Hidden Files": "Afficher les fichiers cachés",
"Show image preview": "Afficher l'aperçu de l'image",
+ "Show me a code snippet": "Montrez-moi un extrait de code",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "Montrez-moi un extrait de code pour un en-tête collant de site web en CSS et JavaScript.",
"Show Model": "Afficher le modèle",
- "Show more": "",
- "Show or switch the current model.": "",
+ "Show more": "Afficher plus",
+ "Show or switch the current model.": "Afficher ou changer le modèle actuel.",
"Show Shortcuts": "Afficher les raccourcis clavier",
- "Show the floating quick-action toolbar in chat.": "",
+ "Show the floating quick-action toolbar in chat.": "Afficher la barre d'outils d'actions rapides flottante dans la conversation.",
"Show your support!": "Montrez votre soutien !",
"Showcased creativity": "Créativité mise en avant",
- "Sidebar": "",
+ "Sidebar": "Barre latérale",
"Sign in": "Connexion",
"Sign in to {{WEBUI_NAME}}": "Connectez-vous à {{WEBUI_NAME}}",
"Sign in to {{WEBUI_NAME}} with LDAP": "Connectez-vous à {{WEBUI_NAME}} avec LDAP",
@@ -3087,10 +3099,10 @@
"Sign up": "Inscrivez-vous",
"Sign up to {{WEBUI_NAME}}": "Inscrivez-vous à {{WEBUI_NAME}}",
"Signing in to {{WEBUI_NAME}}": "Connexion à {{WEBUI_NAME}}",
- "simultaneous sub-agents": "",
+ "simultaneous sub-agents": "sous-agents simultanés",
"Single": "Unique",
"Sink List": "Augmenter l'indentation",
- "Size": "",
+ "Size": "Taille",
"sk-1234": "sk-1234",
"Skill created successfully": "Skill créé avec succès",
"Skill deleted successfully": "Skill supprimé avec succès",
@@ -3098,16 +3110,16 @@
"Skill ID": "ID du skill",
"Skill imported successfully": "Skill importé avec succès",
"Skill Instructions": "Instructions du skill",
- "Skill Menu": "",
+ "Skill Menu": "Menu des compétences",
"Skill Name": "Nom du skill",
"Skill updated successfully": "Skill mis à jour avec succès",
"Skills": "Skills",
"Skills Access": "Accès aux skills",
"Skills Public Sharing": "Partage public des skills",
"Skills Sharing": "Partage des skills",
- "Skip to main content": "",
- "Slim requires external services for embeddings, vector storage, and document extraction. Basic text files can be read locally.": "",
- "Slim requires external speech providers. Local speech models and audio conversion are unavailable.": "",
+ "Skip to main content": "Aller au contenu principal",
+ "Slim requires external services for embeddings, vector storage, and document extraction. Basic text files can be read locally.": "Slim nécessite des services externes pour les embeddings, le stockage vectoriel et l'extraction de documents. Les fichiers texte de base peuvent être lus localement.",
+ "Slim requires external speech providers. Local speech models and audio conversion are unavailable.": "Slim nécessite des fournisseurs de parole externes. Les modèles de parole locaux et la conversion audio ne sont pas disponibles.",
"Something went wrong :/": "Quelque chose s'est mal passé :/",
"Sonar": "Sonar",
"Sonar Deep Research": "Sonar Deep Research",
@@ -3116,15 +3128,15 @@
"Sonar Reasoning Pro": "Sonar Reasoning Pro",
"Sort": "Trier",
"Source": "Source",
- "Specific users or groups": "",
+ "Specific users or groups": "Utilisateurs ou groupes spécifiques",
"Speech recognition error: {{error}}": "Erreur de reconnaissance vocale : {{error}}",
"Speech-to-Text Language": "Langue de reconnaissance vocale",
- "Sponsor on GitHub": "",
- "Staan API Key": "",
+ "Sponsor on GitHub": "Parrainer sur GitHub",
+ "Staan API Key": "Clé API Staan",
"Start a new conversation": "Démarrer une nouvelle conversation",
"Start of the channel": "Début du canal",
"Start Tag": "Balise de départ",
- "Start the chat to use this terminal.": "",
+ "Start the chat to use this terminal.": "Démarrez la conversation pour utiliser ce terminal.",
"Starting in {{count}} minutes_one": "Démarrage dans {{count}} minute",
"Starting in {{count}} minutes_many": "Démarrage dans {{count}} minutes",
"Starting in {{count}} minutes_other": "Démarrage dans {{count}} minutes",
@@ -3134,18 +3146,18 @@
"Status": "Statut",
"Status cleared successfully": "Statut effacé avec succès",
"Status updated successfully": "Statut mis à jour avec succès",
- "Status: check what is running in this chat.": "",
+ "Status: check what is running in this chat.": "Statut : vérifier ce qui s'exécute dans cette conversation.",
"STDOUT/STDERR": "STDOUT/STDERR",
"Stop": "Stop",
- "Stop before each tool call until you allow or deny it.": "",
- "Stop camera": "",
+ "Stop before each tool call until you allow or deny it.": "S'arrêter avant chaque appel d'outil jusqu'à ce que vous l'autorisiez ou le refusiez.",
+ "Stop camera": "Arrêter la caméra",
"Stop Download": "Arrêter le téléchargement",
"Stop Generating": "Arrêter la génération",
- "Storage": "",
+ "Storage": "Stockage",
"Streamable HTTP": "Streamable HTTP",
"Strikethrough": "Barré",
- "Su_day_of_week": "",
- "Submit answers": "",
+ "Su_day_of_week": "Dimanche",
+ "Submit answers": "Soumettre des réponses",
"Submit question": "Envoyer la question",
"Submit suggestion": "Soumettre la suggestion",
"Subtitle": "Sous-titre",
@@ -3153,17 +3165,17 @@
"Successfully imported {{userCount}} users.": "{{userCount}} utilisateurs importés avec succès.",
"Suggest a change": "Proposer un changement",
"Suggested": "Suggéré",
- "Suggested prompts": "",
- "Summarize this note.": "",
+ "Suggested prompts": "Invites suggérées",
+ "Summarize this note.": "Résumer cette note.",
"Support": "Supporter",
"Support this plugin:": "Supporter ce module",
- "Swap": "",
- "Switch camera": "",
+ "Swap": "Échanger",
+ "Switch camera": "Changer de caméra",
"Switch to JSON editor": "Passer à l'éditeur JSON",
"Switch to visual editor": "Passer à l'éditeur visuel",
"Sync": "Synchroniser",
- "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "",
- "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "",
+ "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "Synchroniser un répertoire local avec cette base de connaissances. Seuls les nouveaux fichiers et ceux modifiés seront téléversés. La structure des dossiers sera reproduite.",
+ "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "Synchronisation terminée : {{added}} ajoutés, {{modified}} modifiés, {{deleted}} supprimés, {{unmodified}} inchangés",
"Sync Complete!": "Synchronisation terminée !",
"Sync directory": "Synchroniser le répertoire",
"Sync Failed": "Échec de la synchronisation",
@@ -3172,36 +3184,38 @@
"Syncing...": "Synchronisation en cours...",
"Syncs only chats with updates after your last sync timestamp. Disable to re-sync all chats.": "Synchronise uniquement les conversations mises à jour depuis la dernière synchronisation. Désactivez pour re-synchroniser toutes les conversations.",
"System": "Système",
- "System events only": "",
+ "System events only": "Uniquement les événements système",
"System Instructions": "Instructions système",
"System Prompt": "Prompt système",
- "Table": "",
+ "Table": "Tableau",
"Tag": "Tag",
"Tags": "Tags",
"Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting.": "Le sampling sans queue est utilisé pour réduire l'impact des tokens moins probables dans la sortie. Une valeur plus élevée (par exemple, 2.0) réduira davantage l'impact, tandis qu'une valeur de 1.0 désactive ce réglage.",
"Talk to Model": "Parler au modèle",
"Tap to interrupt": "Appuyez pour interrompre",
- "Target ID": "",
- "Target ID for notify": "",
+ "Target ID": "ID cible",
+ "Target ID for notify": "ID cible pour la notification",
"Task List": "Liste pour les tâches",
"Tasks": "Tâches",
"tasks completed": "tâches terminées",
+ "Tell me a fun fact": "Dites-moi un fait amusant",
+ "Tell me a random fun fact about the Roman Empire": "Dites-moi un fait amusant aléatoire sur l'Empire romain",
"Tell us more:": "Dites-nous en plus à ce sujet : ",
- "Temporary": "",
+ "Temporary": "Temporaire",
"Temporary Chat": "conversation temporaire",
- "Temporary: toggle temporary chat for this new chat.": "",
+ "Temporary: toggle temporary chat for this new chat.": "Temporaire : activer/désactiver la conversation temporaire pour cette nouvelle conversation.",
"Terminal": "Terminal",
- "Terminal Contexts": "",
+ "Terminal Contexts": "Contextes du terminal",
"Terminal servers saved": "Serveurs de terminal sauvegardés",
- "Test": "",
- "Test must pass before a source is created.": "",
- "Test notification sent.": "",
- "Test Query": "",
- "Test returned no results.": "",
- "Test succeeded.": "",
- "Test the source before creating it.": "",
- "Test the source before saving it.": "",
- "Th_day_of_week": "",
+ "Test": "Test",
+ "Test must pass before a source is created.": "Le test doit réussir avant de créer une source.",
+ "Test notification sent.": "Notification de test envoyée.",
+ "Test Query": "Requête de test",
+ "Test returned no results.": "Le test n'a retourné aucun résultat.",
+ "Test succeeded.": "Test réussi.",
+ "Test the source before creating it.": "Tester la source avant de la créer.",
+ "Test the source before saving it.": "Tester la source avant de l'enregistrer.",
+ "Th_day_of_week": "Jeudi",
"Thanks for your feedback!": "Merci pour vos commentaires !",
"The Application Account DN you bind with for search": "Le DN du compte de l'application avec lequel vous vous liez pour la recherche",
"The base to search for users": "La base pour rechercher des utilisateurs",
@@ -3212,12 +3226,12 @@
"The language of the input audio. Supplying the input language in ISO-639-1 (e.g. en) format will improve accuracy and latency. Leave blank to automatically detect the language.": "La langue de l'audio d'entrée. Fournir la langue d'entrée au format ISO-639-1 (par ex. en) améliorera la précision et la latence. Laisser vide pour détecter automatiquement la langue.",
"The LDAP attribute that maps to the mail that users use to sign in.": "L'attribut LDAP qui correspond à l'adresse e-mail que les utilisateurs utilisent pour se connecter.",
"The LDAP attribute that maps to the username that users use to sign in.": "L'attribut LDAP qui correspond au nom d'utilisateur que les utilisateurs utilisent pour se connecter.",
- "The notify tool always sends to an enabled target, regardless of automatic event settings.": "",
+ "The notify tool always sends to an enabled target, regardless of automatic event settings.": "L'outil de notification envoie toujours vers une cible activée, indépendamment des paramètres d'événements automatiques.",
"The passwords you entered don't quite match. Please double-check and try again.": "Les mots de passe saisis ne correspondent pas exactement. Veuillez vérifier et réessayer.",
"The score should be a value between 0.0 (0%) and 1.0 (100%).": "Le score doit être une valeur comprise entre 0,0 (0%) et 1,0 (100%).",
"There was an error syncing your stats. Please try again.": "Une erreur est survenue lors de la synchronisation de vos statistiques. Veuillez réessayer.",
- "These settings are read from environment variables and cannot be edited here while {{ENV_VAR}} is disabled.": "",
- "thinking, output_config": "",
+ "These settings are read from environment variables and cannot be edited here while {{ENV_VAR}} is disabled.": "Ces paramètres sont lus depuis les variables d'environnement et ne peuvent pas être modifiés ici tant que {{ENV_VAR}} est désactivé.",
+ "thinking, output_config": "réflexion, config_sortie",
"Thinking...": "En train de réfléchir...",
"This action cannot be undone. Do you wish to continue?": "Cette action ne peut pas être annulée. Souhaitez-vous continuer ?",
"This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "Ce canal a été créé le {{createdAt}}. Voici le tout début du canal {{channelName}}.",
@@ -3225,36 +3239,36 @@
"This folder is empty": "Ce dossier est vide",
"This is a default user permission and will remain enabled.": "Ceci est une permission utilisateur par défaut et restera activée.",
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Il s'agit d'une fonctionnalité expérimentale, elle peut ne pas fonctionner comme prévu et est sujette à modification à tout moment.",
- "This knowledge base retrieves from a connected source. Open WebUI can query it, but cannot upload, sync, edit, delete, reset, or reindex its source data.": "",
+ "This knowledge base retrieves from a connected source. Open WebUI can query it, but cannot upload, sync, edit, delete, reset, or reindex its source data.": "Cette base de connaissances récupère les données depuis une source connectée. Open WebUI peut l'interroger, mais ne peut pas téléverser, synchroniser, modifier, supprimer, réinitialiser ou réindexer ses données source.",
"This model is not publicly available. Please select another model.": "Ce modèle n'est pas disponible au public. Veuillez sélectionner un autre modèle.",
"This option controls how long the model will stay loaded into memory following the request (default: 5m)": "Cette option détermine la durée pendant laquelle le modèle restera chargé en mémoire après la demande (par défaut : 5m).",
"This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Cette option détermine combien de Token sont conservés lors du rafraîchissement du contexte. Par exemple, avec une valeur de 2, les 2 derniers Token seront conservés. Cela aide à maintenir la continuité de la conversation, mais peut limiter la capacité à traiter de nouveaux sujets.",
"This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Cette option définit le nombre maximal de tokens que le modèle peut générer dans sa réponse. Une valeur plus élevée permet des réponses plus longues, mais peut aussi générer du contenu moins pertinent.",
"This response was generated by \"{{model}}\"": "Cette réponse a été générée par \"{{model}}\"",
- "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "",
+ "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "Ce modèle contient plusieurs espaces réservés de contexte ([context] ou {{CONTEXT}}). Le contexte sera injecté à chaque occurrence.",
"This will delete": "Cela supprimera",
"This will delete {{NAME}} and all its contents.": "Cela supprimera {{NAME}} et tout son contenu.",
"This will delete all models including custom models and cannot be undone.": "Cela supprimera tous les modèles, y compris les modèles personnalisés, et ne peut pas être annulé.",
- "This will delete the cached model and cannot be undone.": "",
- "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "",
- "This will remove all files and directories from this knowledge base. This action cannot be undone.": "",
- "This will revoke the current API key.": "",
+ "This will delete the cached model and cannot be undone.": "Cela supprimera le modèle mis en cache et ne pourra pas être annulé.",
+ "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "Cela supprimera définitivement le calendrier \"{{name}}\" et tous ses événements. Cette action ne peut pas être annulée.",
+ "This will remove all files and directories from this knowledge base. This action cannot be undone.": "Cela supprimera tous les fichiers et répertoires de cette base de connaissances. Cette action ne peut pas être annulée.",
+ "This will revoke the current API key.": "Cela révoquera la clé API actuelle.",
"Thorough explanation": "Explication approfondie",
"Thought": "Réflexion",
"Thought for {{DURATION}}": "Réflexion de {{DURATION}}",
"Thought for {{DURATION}} seconds": "Réflexion pendant {{DURATION}} secondes",
"Thought for less than a second": "Réflexion pendant moins d'une seconde",
"Thread": "Fil de discussion",
- "Through": "",
+ "Through": "Via",
"Thumbs up/down ratings from users on model responses": "Évaluations des utilisateurs (pouces vers le haut/bas) sur les réponses du modèle",
"Tika": "Tika",
- "Tika 3.x": "",
- "Tika 4.x": "",
+ "Tika 3.x": "Tika 3.x",
+ "Tika 4.x": "Tika 4.x",
"Tika Server URL required.": "URL du serveur Tika requise.",
"Tiktoken": "Tiktoken",
"Time": "Temps",
"Timeout": "Délai d'expiration",
- "Timer": "",
+ "Timer": "Minuteur",
"Title": "Titre",
"Title cannot be an empty string.": "Le titre ne peut pas être une chaîne de caractères vide.",
"Title is required": "Le titre est requis",
@@ -3263,202 +3277,205 @@
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Pour accéder à l'interface Web, veuillez contacter l'administrateur. Les administrateurs peuvent gérer les statuts des utilisateurs depuis le panneau d'administration.",
"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Pour attacher une base de connaissances ici, ajoutez-les d'abord à l'espace de travail « Connaissances ».",
"To learn more about available endpoints, visit our documentation.": "Pour en savoir plus sur les points de terminaison disponibles, consultez notre documentation.",
- "To learn more about SpeechT5,": "",
- "To see the available CMU Arctic speaker embeddings,": "",
- "To select actions here, add them to the \"Functions\" workspace first.": "",
- "To select default filters here, enable toggleable filters for this model first.": "",
- "To select filters here, add them to the \"Functions\" workspace first.": "",
+ "To learn more about SpeechT5,": "Pour en savoir plus sur SpeechT5,",
+ "To see the available CMU Arctic speaker embeddings,": "Pour voir les embeddings de locuteur CMU Arctic disponibles,",
+ "To select actions here, add them to the \"Functions\" workspace first.": "Pour sélectionner des actions ici, ajoutez-les d'abord à l'espace de travail \"Fonctions\".",
+ "To select default filters here, enable toggleable filters for this model first.": "Pour sélectionner des filtres par défaut ici, activez d'abord les filtres basculables pour ce modèle.",
+ "To select filters here, add them to the \"Functions\" workspace first.": "Pour sélectionner des filtres ici, ajoutez-les d'abord à l'espace de travail \"Fonctions\".",
"To select skills here, add them to the \"Skills\" workspace first.": "Pour sélectionner des skills ici, ajoutez-les d'abord à l'espace de travail « Skills ».",
- "To select toolkits here, add them to the \"Tools\" workspace or enable a tool server first.": "",
+ "To select toolkits here, add them to the \"Tools\" workspace or enable a tool server first.": "Pour sélectionner des kits d'outils ici, ajoutez-les d'abord à l'espace de travail \"Outils\" ou activez d'abord un serveur d'outils.",
"Today": "Aujourd'hui",
"Today at": "Aujourd'hui à",
"Toggle {{COUNT}} sources": "Afficher/masquer {{COUNT}} sources",
"Toggle 1 source": "Afficher/masquer 1 source",
- "Toggle Controls": "",
+ "Toggle Controls": "Basculer les contrôles",
"Toggle details": "Afficher/masquer les détails",
"Toggle Dictation": "Activer/Désactiver la dictée",
- "Toggle Mute": "",
+ "Toggle Mute": "Basculer le mode muet",
"Toggle Sidebar": "Afficher/Masquer la barre latérale",
"Toggle status history": "Afficher/masquer l'historique des statuts",
- "Toggle temporary chat for this new chat.": "",
+ "Toggle temporary chat for this new chat.": "Activer/Désactiver la conversation temporaire pour cette nouvelle conversation.",
"Toggle whether current connection is active.": "Afficher/masquer si la connection courante est active",
"Token": "Token",
- "Token activity": "",
+ "Token activity": "Activité des tokens",
"Token counts are estimates and may not reflect actual API usage": "Le nombre de tokens est une estimation et peut ne pas refléter l'utilisation réelle de l'API",
"tokens": "tokens",
"Tokens": "Tokens",
"Too verbose": "Trop détaillé",
- "tool": "",
+ "tool": "outil",
"Tool created successfully": "Outil créé avec succès",
"Tool deleted successfully": "Outil supprimé avec succès",
"Tool Description": "Description de l'outil",
"Tool ID": "ID de l'outil",
"Tool imported successfully": "Outil importé avec succès",
- "tool loops per sub-agent": "",
- "Tool Menu": "",
+ "tool loops per sub-agent": "boucles d'outil par sous-agent",
+ "Tool Menu": "Menu des outils",
"Tool Name": "Nom de l'outil",
- "Tool Permissions": "",
+ "Tool Permissions": "Permissions des outils",
"Tool Servers": "Serveurs d'outils",
"Tool updated successfully": "Outil mis à jour avec succès",
"Tools": "Outils",
"Tools Access": "Accès aux outils",
- "Tools can execute arbitrary code.": "",
+ "Tools can execute arbitrary code.": "Les outils peuvent exécuter du code arbitraire.",
"Tools have a function calling system that allows arbitrary code execution.": "Les outils ont un système d'appel de fonction qui permet l'exécution de code arbitraire.",
"Tools Public Sharing": "Partage public des outils",
"Tools Sharing": "Partage des outils",
"Top": "Meilleurs",
- "Total chats": "",
+ "Total chats": "Total des conversations",
"Transformers": "Transformers",
- "Translation key": "",
- "Trial License": "",
+ "Translation key": "Clé de traduction",
+ "Trial License": "Licence d'essai",
"Try adjusting your search or filter to find what you are looking for.": "Essayez d'ajuster votre recherche ou votre filtre.",
"Try Again": "Essayer à nouveau",
"TTS Voice": "Voix de Text-to-Speech",
- "Tu_day_of_week": "",
+ "Tu_day_of_week": "Mardi",
"Type": "Type",
- "Type a model ref": "",
+ "Type a model ref": "Tapez une référence de modèle",
"Type here...": "Entrez votre message ici...",
"Type Hugging Face Resolve (Download) URL": "Entrez l'URL de Téléchargement Hugging Face Resolve",
- "Type your answer": "",
+ "Type your answer": "Tapez votre réponse",
"Uh-oh! There was an issue with the response.": "Oh! Un problème est survenu avec la réponse.",
+ "Unarchive": "Désarchiver",
"Unarchive Chat": "Désarchiver la conversation",
- "Unassigned": "",
+ "Unassigned": "Non assigné",
"Underline": "Souligner",
- "unknown": "",
+ "unknown": "inconnu",
"Unknown": "Inconnu",
"Unknown User": "Utilisateur inconnu",
- "Unload Model": "",
+ "Unload Model": "Décharger le modèle",
"Unloads {{FROM_NOW}}": "Décharge {{FROM_NOW}}",
"Unmute": "Activer le son",
"Unpin": "Désépingler",
"Unpin from Sidebar": "Désépingler de la barre latérale",
- "Unread": "",
- "Unshare All": "",
- "Unshare All Shared Chats": "",
+ "Unread": "Non lu",
+ "Unshare All": "Tout désactiver le partage",
+ "Unshare All Shared Chats": "Désactiver le partage de toutes les conversations partagées",
"Unshare Chat": "Annuler le partage de la conversation",
"Unsupported file type.": "Type de fichier non pris en charge.",
"Untagged": "Pas de tag",
"Untitled": "Sans titre",
"Update": "Mise à jour",
- "Update All Models": "",
+ "Update All Models": "Mettre à jour tous les modèles",
"Update and Copy Link": "Mettre à jour et copier le lien",
"Update for the latest features and improvements.": "Mettez à jour pour bénéficier des dernières fonctionnalités et améliorations.",
"Update your status": "Mettre à jour votre statut",
"Updated": "Mis à jour",
"Updated at": "Mise à jour le",
"Updated At": "Mise à jour le",
- "Updating \"{{modelId}}\"": "",
+ "Updating \"{{modelId}}\"": "Mise à jour de \"{{modelId}}\"",
"Upgrade to a licensed plan for enhanced capabilities, including custom theming and branding, and dedicated support.": "Effectuez la mise à niveau vers le plan payant pour bénéficier de fonctionnalités améliorées, notamment les thèmes et le branding personnalisé, ainsi qu'un support dédié.",
"Upload": "Téléverser",
"Upload a GGUF model": "Téléverser un modèle GGUF",
"Upload Audio": "Téléverser un audio",
"Upload directory": "Téléverser un dossier",
- "Upload failed": "",
- "Upload failed for {{failed}} of {{total}} files.": "",
+ "Upload failed": "Échec du téléversement",
+ "Upload failed for {{failed}} of {{total}} files.": "Échec du téléversement pour {{failed}} des {{total}} fichiers.",
"Upload files": "Téléverser des fichiers",
"Upload Files": "Téléverser des fichiers",
- "Upload Folder": "",
+ "Upload Folder": "Téléverser un dossier",
"Upload Model": "Téléverser un modèle",
- "Upload Photo": "",
+ "Upload Photo": "Téléverser une photo",
"Upload profile image": "Téléverser une image de profil",
"Upload Progress": "Progression de l'envoi",
"Uploaded files or images": "Les fichiers ou images téléversés",
- "Uploading": "",
- "Uploading {{current}}/{{total}}: {{file}}": "",
+ "Uploading": "Téléversement en cours",
+ "Uploading {{current}}/{{total}}: {{file}}": "Téléversement {{current}}/{{total}} : {{file}}",
"Uploading...": "Téléversement en cours...",
"URL": "URL",
"URL is required": "L'URL est requise",
"URL Mode": "Mode d'URL",
"Use": "Utilisez",
- "Use a valid event name or pattern like user.*": "",
- "Use default": "",
- "Use device vibration feedback on supported Android devices.": "",
- "Use discovered scopes": "",
+ "Use a valid event name or pattern like user.*": "Utiliser un nom d'événement ou un motif valide comme user.*",
+ "Use default": "Utiliser par défaut",
+ "Use device vibration feedback on supported Android devices.": "Utiliser le retour haptique de l'appareil sur les appareils Android pris en charge.",
+ "Use discovered scopes": "Utiliser les portées découvertes",
"Use groups to organize your users and assign permissions.": "Utilisez les groupes pour organiser vos utilisateurs et attribuer des permissions.",
- "Use segmented retrieval for focused and relevant content extraction.": "",
- "Use segmented retrieval for focused and relevant context.": "",
- "Use segmented retrieval for focused context.": "",
- "Use these in model system prompts as {{example}}.": "",
- "Use Web Search?": "",
+ "Use segmented retrieval for focused and relevant content extraction.": "Utiliser la récupération segmentée pour une extraction de contenu ciblée et pertinente.",
+ "Use segmented retrieval for focused and relevant context.": "Utiliser la récupération segmentée pour un contexte ciblé et pertinent.",
+ "Use segmented retrieval for focused context.": "Utiliser la récupération segmentée pour un contexte ciblé.",
+ "Use these in model system prompts as {{example}}.": "Utilisez ceux-ci dans les invites système du modèle comme {{example}}.",
+ "Use Web Search?": "Utiliser la recherche Web ?",
"user": "utilisateur",
"User": "Utilisateur",
"User Activity": "Activité des utilisateurs",
- "User Count": "",
+ "User Count": "Nombre d'utilisateurs",
"User Groups": "Groupes d'utilisateurs",
"User location successfully retrieved.": "Emplacement de l'utilisateur récupéré avec succès.",
"User menu": "Menu utilisateur",
- "User messages": "",
- "User not found.": "",
- "User Preview": "",
+ "User messages": "Messages utilisateur",
+ "User not found.": "Utilisateur introuvable.",
+ "User Preview": "Aperçu utilisateur",
"User ratings (thumbs up/down)": "Évaluations des utilisateurs (pouces vers le haut/bas)",
- "User Variables": "",
+ "User Variables": "Variables utilisateur",
"User Webhooks": "Webhooks utilisateur",
"Username": "Nom d'utilisateur",
"users": "utilisateurs",
"Users": "Utilisateurs",
"Uses DefaultAzureCredential to authenticate": "Utilise DefaultAzureCredential pour s'authentifier",
- "Uses defaults": "",
+ "Uses defaults": "Utilise les valeurs par défaut",
"Uses OAuth 2.1 Dynamic Client Registration": "Utilise l'enregistrement dynamique de client OAuth 2.1",
"Using Entire Document": "Utilisation du document entier",
"Using Focused Retrieval": "Utilisation de la récupération ciblée",
"Using the default arena model with all models. Click the plus button to add custom models.": "Utilisation du modèle d'arène par défaut avec tous les modèles. Cliquez sur le bouton plus pour ajouter des modèles personnalisés.",
- "Value": "",
+ "Value": "Valeur",
"Valves": "Vannes",
"Valves updated": "Vannes mises à jour",
"Valves updated successfully": "Vannes mises à jour avec succès",
"variable": "variable",
- "Variable key": "",
- "Variable keys must be unique.": "",
- "Variable keys must use lowercase snake case.": "",
- "Variable value": "",
- "Vector Field": "",
+ "Variable key": "Clé de variable",
+ "Variable keys must be unique.": "Les clés de variable doivent être uniques.",
+ "Variable keys must use lowercase snake case.": "Les clés de variable doivent utiliser le format snake_case en minuscules.",
+ "Variable value": "Valeur de variable",
+ "Vector Field": "Champ vectoriel",
"Verify Connection": "Vérifier la connexion",
"Version {{selectedVersion}} of {{totalVersions}}": "Version {{selectedVersion}} de {{totalVersions}}",
"Version deleted": "Version supprimée",
- "Vertical Layout": "",
- "Video player": "",
- "View channel": "",
- "View chat": "",
+ "Vertical Layout": "Disposition verticale",
+ "Video player": "Lecteur vidéo",
+ "View channel": "Voir le canal",
+ "View chat": "Voir la conversation",
"View Replies": "Voir les réponses",
- "View Result from {{NAME}}": "",
+ "View Result from {{NAME}}": "Voir le résultat de {{NAME}}",
"View source: {{name}}": "Voir la source : {{name}}",
"View source: {{title}}": "Voir la source : {{title}}",
- "Viewport Pinned": "",
- "Viewport Unpinned": "",
+ "Viewport Pinned": "Vue épinglée",
+ "Viewport Unpinned": "Vue désépinglée",
"Visibility": "Visibilité",
"Visible": "Visible",
"Visible to all users": "Visible pour tous les utilisateurs",
"Visual": "Visuel",
+ "vocabulary for a college entrance exam": "vocabulaire pour un examen d'entrée à l'université",
"Voice": "Voix",
"Voice Input": "Saisie vocale",
"Voice mode": "Mode vocal",
- "Wait for the current response to finish before compacting.": "",
- "Wait for the current response to finish before forking.": "",
- "Waiting for upload": "",
+ "Wait for the current response to finish before compacting.": "Attendre la fin de la réponse actuelle avant de compacter.",
+ "Wait for the current response to finish before forking.": "Attendre la fin de la réponse actuelle avant de dupliquer.",
+ "Waiting for upload": "En attente du téléversement",
"Waiting for upload...": "En attente du téléversement...",
"Warning": "Avertissement",
"Warning:": "Avertissement :",
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "Avertissement : Activer cette option permettra aux utilisateurs d'exécuter automatiquement des prompts programmés.",
"Warning: Enabling this will allow users to upload arbitrary code on the server.": "Avertissement : Activer cette option permettra aux utilisateurs de télécharger du code arbitraire sur le serveur.",
"Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Avertissement : L'exécution Jupyter permet l'exécution de code arbitraire, ce qui présente des risques de sécurité importants. Procédez avec une extrême prudence.",
- "We_day_of_week": "",
+ "We_day_of_week": "Mercredi",
"Web": "Web",
"Web API": "API Web",
"Web Search": "Recherche Web",
- "Webhook": "",
- "Webhook deleted": "",
+ "Webhook": "Webhook",
+ "Webhook deleted": "Webhook supprimé",
"Webhook Name": "Nom du webhook",
- "Webhook saved": "",
+ "Webhook saved": "Webhook enregistré",
"Webhooks": "Webhooks",
"Webpage URLs": "URL des pages web",
"WebUI will make requests to \"{{url}}\"": "WebUI effectuera des requêtes vers \"{{url}}\"",
"WebUI will make requests to \"{{url}}/api/chat\"": "WebUI fera des requêtes à \"{{url}}/api/chat\"",
"WebUI will make requests to \"{{url}}/chat/completions\"": "WebUI fera des requêtes à \"{{url}}/chat/completions\"",
"Week": "Semaine",
- "Week of": "",
+ "Week of": "Semaine du",
"Weekly": "Hebdomadaire",
- "Weekly at": "",
- "Welcome to your AI home.": "",
+ "Weekly at": "Hebdomadaire à",
+ "Welcome to your AI home.": "Bienvenue dans votre espace IA.",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "Quelles sont 5 idées créatives pour utiliser les dessins de mes enfants ? Je ne veux pas les jeter, mais c'est aussi beaucoup de désordre.",
"What are you trying to achieve?": "Que cherchez-vous à accomplir ?",
"What are you working on?": "Sur quoi travaillez-vous ?",
"What is NOT shared:": "Ce qui n'est PAS partagé :",
@@ -3472,10 +3489,10 @@
"Width": "Largeur",
"Wikipedia": "Wikipedia",
"Won": "Victoires",
- "Working Directory": "",
+ "Working Directory": "Répertoire de travail",
"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.": "Fonctionne avec top-k. Une valeur élevée (par exemple, 0,95) conduira à un texte plus diversifié, tandis qu'une valeur plus faible (par exemple, 0,5) générera un texte plus ciblé et conservateur.",
"Workspace": "Espace de travail",
- "Workspace Models": "",
+ "Workspace Models": "Modèles de l'espace de travail",
"Workspace Permissions": "Autorisations de l'espace de travail",
"Write": "Écrire",
"Write a summary in 50 words that summarizes {{topic}}.": "Rédigez un résumé de 50 mots qui résume [sujet ou mot-clé].",
@@ -3483,10 +3500,10 @@
"Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Écrivez ici le contenu du system prompt de votre modèle\npar. ex. : Vous êtes Mario de Super Mario Bros et vous agissez comme assistant.",
"Yahoo": "Yahoo",
"Yandex": "Yandex",
- "Yearly": "",
+ "Yearly": "Annuel",
"Yesterday": "Hier",
"You": "Vous",
- "You are a sub-agent...": "",
+ "You are a sub-agent...": "Vous êtes un sous-agent...",
"You are currently using a trial license. Please contact support to upgrade your license.": "Vous utilisez actuellement une licence d'essai. Veuillez contacter le support pour mettre à niveau votre licence.",
"You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Vous ne pouvez discuter qu'avec un maximum de {{maxCount}} fichier(s) à la fois.",
"You cannot upload an empty file.": "Vous ne pouvez pas envoyer un fichier vide.",
@@ -3500,7 +3517,7 @@
"You do not have permission to upload files to this knowledge base.": "Vous n'êtes pas autorisé à téléverser des fichiers dans cette base de connaissances.",
"You do not have permission to upload files.": "Vous n'êtes pas autorisé à téléverser des fichiers.",
"You do not have permission to upload web content.": "Vous n'êtes pas autorisé à joindre une page web.",
- "You have more than 50 users, which often means this workspace is supporting organizational use. Open WebUI is free to use as-is, with no restrictions or hidden limits, and we want to keep it that way.": "",
+ "You have more than 50 users, which often means this workspace is supporting organizational use. Open WebUI is free to use as-is, with no restrictions or hidden limits, and we want to keep it that way.": "Vous avez plus de 50 utilisateurs, ce qui signifie souvent que cet espace de travail prend en charge une utilisation organisationnelle. Open WebUI est gratuit à utiliser tel quel, sans restrictions ni limites cachées, et nous souhaitons que cela reste ainsi.",
"You have no archived conversations.": "Vous n'avez aucune conversation archivée.",
"You have no shared conversations.": "Vous n'avez aucune conversation partagée.",
"You have shared this chat": "Vous avez partagé cette conversation.",
@@ -3511,10 +3528,10 @@
"Your browser does not support the video tag.": "Votre navigateur ne prend pas en charge la balise « video ».",
"Your entire contribution will go directly to the plugin developer; Open WebUI does not take any percentage. However, the chosen funding platform might have its own fees.": "L'intégralité de votre contribution ira directement au développeur du plugin ; Open WebUI ne prend aucun pourcentage. Cependant, la plateforme de financement choisie peut avoir ses propres frais.",
"Your message text or inputs": "Vos messages envoyés",
- "Your query will be sent to the configured web search provider.": "",
+ "Your query will be sent to the configured web search provider.": "Votre requête sera envoyée au fournisseur de recherche Web configuré.",
"Your usage stats have been successfully synced.": "Vos statistiques d'utilisation ont été synchronisées avec succès.",
"YouTube": "YouTube",
- "YouTube video player": "",
- "Zoom in": "",
- "Zoom out": ""
+ "YouTube video player": "Lecteur vidéo YouTube",
+ "Zoom in": "Zoom avant",
+ "Zoom out": "Zoom arrière"
}
diff --git a/src/lib/i18n/locales/gl-ES/translation.json b/src/lib/i18n/locales/gl-ES/translation.json
index 55af5a87a504..d972ad89e2d2 100644
--- a/src/lib/i18n/locales/gl-ES/translation.json
+++ b/src/lib/i18n/locales/gl-ES/translation.json
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Unha nova versión (v{{LATEST_VERSION}}) está disponible.",
"A private conversation between you and selected users": "",
"a user": "un usuario",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "",
"Access": "Acceso",
"Access Control": "Control de Acceso",
@@ -343,6 +344,7 @@
"Chat Menu": "",
"Chat moved successfully": "",
"Chat Permissions": "Permisos do Chat",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "",
"Chat Uploads": "",
"Chat Variables": "",
@@ -494,6 +496,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "Xerar",
@@ -596,7 +599,7 @@
"Delete Version": "",
"Deleted": "",
"Deleted {{deleteModelTag}}": "Se borró {{deleteModelTag}}",
- "Deleted {{name}}": "Eliminado {{nombre}}",
+ "Deleted {{name}}": "Eliminado {{name}}",
"Deleted {{ok}} of {{total}} items": "",
"Deleted User": "Usuario eliminado",
"Denied {{NAME}}": "",
@@ -919,6 +922,8 @@
"Experience": "",
"Experimental": "Experimental",
"Explain": "Explicar",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "",
"Exploring": "",
"Export": "Exportar",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "",
"Followed instructions perfectly": "Segiu as instruccions perfectamente",
"for placeholders": "",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "",
"Get started": "Empezar",
"Get started with {{WEBUI_NAME}}": "Empezar con {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Global",
"Good Response": "Buena Respuesta",
"Google": "",
@@ -1118,6 +1126,8 @@
"Height": "",
"Hello, {{name}}": "Hola, {{name}}",
"Help": "axuda",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "",
"Help us translate Open WebUI!": "",
"Hex Color": "Cor Hex",
@@ -1148,6 +1158,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "imaxen",
"Image Generation": "xeneración de imaxes",
"Image Max Compression Size": "Tamaño máximo de compresión de imaxen",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "",
"Input needed": "",
"Input Variables": "",
- "Insert": "",
"Insert into note": "",
"Instructions": "",
"Integrations": "",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Podense descargar un máximo de 3 modelos simultáneamente. Por favor, intenteo de novo mais tarde.",
"May": "Mayo",
"MBR": "",
- "MCP": "",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "",
"Medium": "",
"Member removed successfully": "",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "Octubre",
+ "of a website's sticky header": "",
"Off": "Desactivado",
"Okay, Let's Go!": "Bien, ¡Vamos!",
"OLED Dark": "OLED oscuro",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "Achave da API de OpenAI es requerida.",
"OpenAI API settings updated": "Configuración de OpenAI API actualizada",
"OpenAI URL/Key required.": "URL/chave de OpenAI es requerida.",
- "OpenAPI": "",
"OpenAPI Spec": "",
"openapi.json URL or Path": "",
"optional": "",
@@ -1610,6 +1619,7 @@
"out of": "",
"Output": "",
"OUTPUT": "SAIDA",
+ "Overcome procrastination": "",
"Overview": "Vista xeral",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -3056,6 +3066,8 @@
"Show Files": "",
"Show Hidden Files": "",
"Show image preview": "",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "",
"Show more": "",
"Show or switch the current model.": "",
@@ -3169,6 +3181,8 @@
"Task List": "",
"Tasks": "Tareas",
"tasks completed": "",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Dinos mais:",
"Temporary": "",
"Temporary Chat": "Chat temporal",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "Escriba la URL (Descarga) de Hugging Face Resolve",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "¡Ups! Hubo un problema con la respuesta.",
+ "Unarchive": "",
"Unarchive Chat": "Desarquivar chat",
"Unassigned": "",
"Underline": "",
@@ -3412,6 +3427,7 @@
"Visible": "",
"Visible to all users": "",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "Voz",
"Voice Input": "Entrada de voz",
"Voice mode": "",
@@ -3442,6 +3458,7 @@
"Weekly": "",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "¿Qué estás tratando de lograr?",
"What are you working on?": "¿En qué estás trabajando?",
"What is NOT shared:": "",
diff --git a/src/lib/i18n/locales/he-IL/translation.json b/src/lib/i18n/locales/he-IL/translation.json
index 9f6456e2d268..8f40732e9482 100644
--- a/src/lib/i18n/locales/he-IL/translation.json
+++ b/src/lib/i18n/locales/he-IL/translation.json
@@ -80,6 +80,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "",
"A private conversation between you and selected users": "",
"a user": "משתמש",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "",
"Access": "גישה",
"Access Control": "בקרת גישה",
@@ -352,6 +353,7 @@
"Chat Menu": "",
"Chat moved successfully": "",
"Chat Permissions": "",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "",
"Chat Uploads": "",
"Chat Variables": "",
@@ -504,6 +506,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "",
@@ -931,6 +934,8 @@
"Experience": "",
"Experimental": "ניסיוני",
"Explain": "",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "",
"Exploring": "",
"Export": "ייצא",
@@ -1058,6 +1063,7 @@
"Follow up: {{question}}": "",
"Followed instructions perfectly": "עקב אחר ההוראות במושלמות",
"for placeholders": "",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1105,6 +1111,8 @@
"Get information on {{name}} in the UI": "",
"Get started": "",
"Get started with {{WEBUI_NAME}}": "",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "גלובלי",
"Good Response": "תגובה טובה",
"Google": "",
@@ -1130,6 +1138,8 @@
"Height": "",
"Hello, {{name}}": "שלום, {{name}}",
"Help": "עזרה",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "",
"Help us translate Open WebUI!": "",
"Hex Color": "",
@@ -1160,6 +1170,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "תמונה",
"Image Generation": "",
"Image Max Compression Size": "",
@@ -1192,7 +1203,6 @@
"Input Key (e.g. text, unet_name, steps)": "",
"Input needed": "",
"Input Variables": "",
- "Insert": "",
"Insert into note": "",
"Instructions": "",
"Integrations": "",
@@ -1322,7 +1332,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "ניתן להוריד מקסימום 3 מודלים בו זמנית. אנא נסה שוב מאוחר יותר.",
"May": "מאי",
"MBR": "",
- "MCP": "",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "",
"Medium": "",
"Member removed successfully": "",
@@ -1561,6 +1570,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "אוקטובר",
+ "of a website's sticky header": "",
"Off": "כבוי",
"Okay, Let's Go!": "בסדר, בואו נתחיל!",
"OLED Dark": "OLED כהה",
@@ -1610,7 +1620,6 @@
"OpenAI API Key is required.": "נדרש מפתח API של OpenAI.",
"OpenAI API settings updated": "",
"OpenAI URL/Key required.": "נדרשת כתובת URL/מפתח של OpenAI.",
- "OpenAPI": "",
"OpenAPI Spec": "",
"openapi.json URL or Path": "",
"optional": "",
@@ -1623,6 +1632,7 @@
"out of": "",
"Output": "",
"OUTPUT": "",
+ "Overcome procrastination": "",
"Overview": "",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -3072,6 +3082,8 @@
"Show Files": "",
"Show Hidden Files": "",
"Show image preview": "",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "",
"Show more": "",
"Show or switch the current model.": "",
@@ -3186,6 +3198,8 @@
"Task List": "",
"Tasks": "",
"tasks completed": "",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "תרשמו יותר:",
"Temporary": "",
"Temporary Chat": "",
@@ -3321,6 +3335,7 @@
"Type Hugging Face Resolve (Download) URL": "הקלד כתובת URL של פתרון פנים מחבק (הורד)",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "",
+ "Unarchive": "",
"Unarchive Chat": "",
"Unassigned": "",
"Underline": "",
@@ -3429,6 +3444,7 @@
"Visible": "",
"Visible to all users": "",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "",
"Voice Input": "",
"Voice mode": "",
@@ -3459,6 +3475,7 @@
"Weekly": "",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "",
"What are you working on?": "",
"What is NOT shared:": "",
diff --git a/src/lib/i18n/locales/hi-IN/translation.json b/src/lib/i18n/locales/hi-IN/translation.json
index abe452c163bc..7b53192d7785 100644
--- a/src/lib/i18n/locales/hi-IN/translation.json
+++ b/src/lib/i18n/locales/hi-IN/translation.json
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "",
"A private conversation between you and selected users": "",
"a user": "एक उपयोगकर्ता",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "",
"Access": "",
"Access Control": "",
@@ -343,6 +344,7 @@
"Chat Menu": "",
"Chat moved successfully": "",
"Chat Permissions": "",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "",
"Chat Uploads": "",
"Chat Variables": "",
@@ -494,6 +496,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "",
@@ -919,6 +922,8 @@
"Experience": "",
"Experimental": "प्रयोगात्मक",
"Explain": "",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "",
"Exploring": "",
"Export": "निर्यात करें",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "",
"Followed instructions perfectly": "निर्देशों का पूर्णतः पालन किया",
"for placeholders": "",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "",
"Get started": "",
"Get started with {{WEBUI_NAME}}": "",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "",
"Good Response": "अच्छी प्रतिक्रिया",
"Google": "",
@@ -1118,6 +1126,8 @@
"Height": "",
"Hello, {{name}}": "नमस्ते, {{name}}",
"Help": "मदद",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "",
"Help us translate Open WebUI!": "",
"Hex Color": "",
@@ -1148,6 +1158,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "",
"Image Generation": "",
"Image Max Compression Size": "",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "",
"Input needed": "",
"Input Variables": "",
- "Insert": "",
"Insert into note": "",
"Instructions": "",
"Integrations": "",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "अधिकतम 3 मॉडल एक साथ डाउनलोड किये जा सकते हैं। कृपया बाद में पुन: प्रयास करें।",
"May": "मेई",
"MBR": "",
- "MCP": "",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "",
"Medium": "",
"Member removed successfully": "",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "अक्टूबर",
+ "of a website's sticky header": "",
"Off": "बंद",
"Okay, Let's Go!": "ठीक है, चलिए चलते हैं!",
"OLED Dark": "OLED डार्क",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "OpenAI API कुंजी आवश्यक है",
"OpenAI API settings updated": "",
"OpenAI URL/Key required.": "OpenAI URL/Key आवश्यक है।",
- "OpenAPI": "",
"OpenAPI Spec": "",
"openapi.json URL or Path": "",
"optional": "",
@@ -1610,6 +1619,7 @@
"out of": "",
"Output": "",
"OUTPUT": "",
+ "Overcome procrastination": "",
"Overview": "",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -3056,6 +3066,8 @@
"Show Files": "",
"Show Hidden Files": "",
"Show image preview": "",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "",
"Show more": "",
"Show or switch the current model.": "",
@@ -3169,6 +3181,8 @@
"Task List": "",
"Tasks": "",
"tasks completed": "",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "हमें और अधिक बताएँ:",
"Temporary": "",
"Temporary Chat": "",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "हगिंग फेस रिज़ॉल्व (डाउनलोड) यूआरएल टाइप करें",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "",
+ "Unarchive": "",
"Unarchive Chat": "",
"Unassigned": "",
"Underline": "",
@@ -3412,6 +3427,7 @@
"Visible": "",
"Visible to all users": "",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "",
"Voice Input": "",
"Voice mode": "",
@@ -3442,6 +3458,7 @@
"Weekly": "",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "",
"What are you working on?": "",
"What is NOT shared:": "",
diff --git a/src/lib/i18n/locales/hr-HR/translation.json b/src/lib/i18n/locales/hr-HR/translation.json
index 23f4c33743d6..ae20b74d086f 100644
--- a/src/lib/i18n/locales/hr-HR/translation.json
+++ b/src/lib/i18n/locales/hr-HR/translation.json
@@ -5,7 +5,7 @@
"[Last] dddd [at] h:mm A": "[Prošlog tjedna:] dddd [u] h:mm A",
"[Today at] h:mm A": "[Danas u] h:mm A",
"[Yesterday at] h:mm A": "[Jučer u] h:mm A",
- "{{ models }}": "{{ modeli }}",
+ "{{ models }}": "{{ models }}",
"{{count}} added lines_one": "",
"{{count}} added lines_few": "",
"{{count}} added lines_other": "",
@@ -80,6 +80,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Dostupna je nova verzija (v{{LATEST_VERSION}}).",
"A private conversation between you and selected users": "Privatan razgovor između vas i odabranih korisnika",
"a user": "korisnik",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Prihvati automatsku dopunu\nIdi na varijablu prompta",
"Access": "Pristup",
"Access Control": "Kontrola pristupa",
@@ -352,6 +353,7 @@
"Chat Menu": "Izbornik razgovora",
"Chat moved successfully": "Razgovor je uspješno premješten",
"Chat Permissions": "Dopuštenja za razgovor",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "Dijeljenje razgovora je uspješno prekinuto.",
"Chat Uploads": "Datoteke učitane u razgovor",
"Chat Variables": "Varijable razgovora",
@@ -504,6 +506,7 @@
"Could not check for updates": "Nije moguće provjeriti ažuriranja",
"Could not load release notes.": "Nije moguće učitati bilješke o izdanju.",
"Could not read file.": "Nije moguće pročitati datoteku.",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "Niste pronašli svoj jezik?",
"CPU": "CPU",
"Create": "Stvori",
@@ -931,6 +934,8 @@
"Experience": "Korisničko iskustvo",
"Experimental": "Eksperimentalno",
"Explain": "Objasni",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "Istraženo",
"Exploring": "Istraživanje",
"Export": "Izvoz",
@@ -1058,6 +1063,7 @@
"Follow up: {{question}}": "Dodatno pitanje: {{question}}",
"Followed instructions perfectly": "Savršeno slijedio upute",
"for placeholders": "za rezervirana mjesta",
+ "for what to do with my kids' art": "",
"Fork": "Razgranaj",
"Fork chat": "Razgranaj razgovor",
"Fork the current chat branch into a new chat.": "Izdvoji trenutnu granu razgovora u novi razgovor.",
@@ -1105,6 +1111,8 @@
"Get information on {{name}} in the UI": "Prikaži informacije o {{name}} u korisničkom sučelju",
"Get started": "Započni",
"Get started with {{WEBUI_NAME}}": "Počnite koristiti {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Globalno",
"Good Response": "Dobar odgovor",
"Google": "Google",
@@ -1130,6 +1138,8 @@
"Height": "Visina",
"Hello, {{name}}": "Bok, {{name}}",
"Help": "Pomoć",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "Pomozite zajednici da otkrije odlične modele",
"Help us translate Open WebUI!": "Pomozite nam prevesti Open WebUI!",
"Hex Color": "Heksadecimalna boja",
@@ -1160,6 +1170,7 @@
"Identity audit": "Revizija identiteta",
"Idle only": "Samo u mirovanju",
"Idle Timeout": "Vremensko ograničenje neaktivnosti",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Slika",
"Image Generation": "Generiranje slika",
"Image Max Compression Size": "Maksimalne dimenzije komprimirane slike",
@@ -1192,7 +1203,6 @@
"Input Key (e.g. text, unet_name, steps)": "Ulazni ključ (npr. text, unet_name, steps)",
"Input needed": "Potreban unos",
"Input Variables": "Ulazne varijable",
- "Insert": "Umetni",
"Insert into note": "Umetni u bilješku",
"Instructions": "Upute",
"Integrations": "Integracije",
@@ -1322,7 +1332,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Maksimalno 3 modela se mogu preuzeti istovremeno. Pokušajte ponovo kasnije.",
"May": "Svibanj",
"MBR": "ČLAN",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "Podrška za MCP je eksperimentalna i njegova se specifikacija često mijenja, što može dovesti do nekompatibilnosti. Podršku za OpenAPI specifikaciju izravno održava Open WebUI tim, pa je ona pouzdanija opcija za kompatibilnost.",
"Medium": "Srednje",
"Member removed successfully": "Član uspješno uklonjen",
@@ -1561,6 +1570,7 @@
"OAuth Server URL": "URL OAuth poslužitelja",
"OAuth session disconnected": "OAuth sesija je prekinuta",
"October": "Listopad",
+ "of a website's sticky header": "",
"Off": "Isključeno",
"Okay, Let's Go!": "U redu, idemo!",
"OLED Dark": "OLED Tamno",
@@ -1610,7 +1620,6 @@
"OpenAI API Key is required.": "Potreban je OpenAI API ključ.",
"OpenAI API settings updated": "Postavke OpenAI API-ja ažurirane",
"OpenAI URL/Key required.": "Potreban je OpenAI URL/ključ.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "OpenAPI specifikacija",
"openapi.json URL or Path": "URL ili putanja za openapi.json",
"optional": "neobavezno",
@@ -1623,6 +1632,7 @@
"out of": "od",
"Output": "Izlaz",
"OUTPUT": "IZLAZ",
+ "Overcome procrastination": "",
"Overview": "Pregled",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "Potreban je URL PaddleOCR-vl API-ja.",
@@ -3072,6 +3082,8 @@
"Show Files": "Prikaži datoteke",
"Show Hidden Files": "Prikaži skrivene datoteke",
"Show image preview": "Prikaži pregled slike",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Prikaži model",
"Show more": "Prikaži više",
"Show or switch the current model.": "Prikaži ili promijeni trenutni model.",
@@ -3186,6 +3198,8 @@
"Task List": "Popis zadataka",
"Tasks": "Zadaci",
"tasks completed": "— dovršeni zadaci",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Recite nam više:",
"Temporary": "Privremeno",
"Temporary Chat": "Privremeni razgovor",
@@ -3321,6 +3335,7 @@
"Type Hugging Face Resolve (Download) URL": "Upišite Hugging Face Resolve (Download) URL",
"Type your answer": "Unesite odgovor",
"Uh-oh! There was an issue with the response.": "Ups! Došlo je do problema s odgovorom.",
+ "Unarchive": "",
"Unarchive Chat": "Vrati razgovor iz arhive",
"Unassigned": "Nije dodijeljeno",
"Underline": "Podcrtano",
@@ -3429,6 +3444,7 @@
"Visible": "Vidljivo",
"Visible to all users": "Vidljivo svim korisnicima",
"Visual": "Vizualno",
+ "vocabulary for a college entrance exam": "",
"Voice": "Glas",
"Voice Input": "Glasovni unos",
"Voice mode": "Glasovni način",
@@ -3459,6 +3475,7 @@
"Weekly": "Tjedno",
"Weekly at": "Tjedno u",
"Welcome to your AI home.": "Dobro došli u svoj AI dom.",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "Što pokušavate postići?",
"What are you working on?": "Na čemu radite?",
"What is NOT shared:": "Što se NE dijeli:",
diff --git a/src/lib/i18n/locales/hu-HU/translation.json b/src/lib/i18n/locales/hu-HU/translation.json
index d684a4a41532..e52617ac5f90 100644
--- a/src/lib/i18n/locales/hu-HU/translation.json
+++ b/src/lib/i18n/locales/hu-HU/translation.json
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Új verzió (v{{LATEST_VERSION}}) érhető el.",
"A private conversation between you and selected users": "Privát beszélgetés közted és a kiválasztott felhasználók között",
"a user": "egy felhasználó",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Automatikus kiegészítés elfogadása\nUgrás a promptváltozóhoz",
"Access": "Hozzáférés",
"Access Control": "Hozzáférés-vezérlés",
@@ -343,6 +344,7 @@
"Chat Menu": "",
"Chat moved successfully": "Beszélgetés sikeresen áthelyezve",
"Chat Permissions": "Beszélgetési engedélyek",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "A beszélgetés megosztása sikeresen megszüntetve.",
"Chat Uploads": "",
"Chat Variables": "Beszélgetési változók",
@@ -494,6 +496,7 @@
"Could not check for updates": "",
"Could not load release notes.": "Nem sikerült betölteni a kiadási megjegyzéseket.",
"Could not read file.": "Nem sikerült beolvasni a fájlt.",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "CPU",
"Create": "Létrehozás",
@@ -919,6 +922,8 @@
"Experience": "",
"Experimental": "Kísérleti",
"Explain": "Magyarázat",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "Felderítve",
"Exploring": "Felderítés",
"Export": "Exportálás",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "Következő kérdés: {{question}}",
"Followed instructions perfectly": "Tökéletesen követte az utasításokat",
"for placeholders": "helyőrzőkhöz",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "Információk megtekintése a felületen erről: {{name}}",
"Get started": "Kezdj neki",
"Get started with {{WEBUI_NAME}}": "Kezdj neki a {{WEBUI_NAME}}-val",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Globális",
"Good Response": "Jó válasz",
"Google": "Google",
@@ -1118,6 +1126,8 @@
"Height": "Magasság",
"Hello, {{name}}": "Helló, {{name}}",
"Help": "Segítség",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "Segíts a közösségnek nagyszerű modelleket felfedezni",
"Help us translate Open WebUI!": "",
"Hex Color": "Hexa szín",
@@ -1148,6 +1158,7 @@
"Identity audit": "Identitás-ellenőrzés",
"Idle only": "Csak tétlen állapotban",
"Idle Timeout": "Tétlenségi időtúllépés",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Kép",
"Image Generation": "Képgenerálás",
"Image Max Compression Size": "Kép maximális tömörítési mérete",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "Bemeneti kulcs (pl. text, unet_name, steps)",
"Input needed": "",
"Input Variables": "Bemeneti változók",
- "Insert": "Beillesztés",
"Insert into note": "Beillesztés a jegyzetbe",
"Instructions": "Utasítások",
"Integrations": "Integrációk",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Maximum 3 modell tölthető le egyszerre. Kérjük, próbálja újra később.",
"May": "Május",
"MBR": "MBR",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "Az MCP-támogatás kísérleti, és a specifikációja gyakran változik, ami kompatibilitási problémákhoz vezethet. Az OpenAPI-specifikáció támogatását közvetlenül az Open WebUI csapata tartja karban, ezért kompatibilitás szempontjából megbízhatóbb választás.",
"Medium": "Közepes",
"Member removed successfully": "Tag sikeresen eltávolítva",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "OAuth-szerver URL-je",
"OAuth session disconnected": "OAuth-munkamenet leválasztva",
"October": "Október",
+ "of a website's sticky header": "",
"Off": "Ki",
"Okay, Let's Go!": "Rendben, kezdjük!",
"OLED Dark": "OLED sötét",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "OpenAI API kulcs szükséges.",
"OpenAI API settings updated": "OpenAI API beállítások frissítve",
"OpenAI URL/Key required.": "OpenAI URL/kulcs szükséges.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "OpenAPI-specifikáció",
"openapi.json URL or Path": "openapi.json URL vagy útvonal",
"optional": "opcionális",
@@ -1610,6 +1619,7 @@
"out of": "ennyiből",
"Output": "Kimenet",
"OUTPUT": "KIMENET",
+ "Overcome procrastination": "",
"Overview": "Áttekintés",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "A PaddleOCR-vl API URL-jének megadása kötelező.",
@@ -3056,6 +3066,8 @@
"Show Files": "Fájlok megjelenítése",
"Show Hidden Files": "",
"Show image preview": "Képelőnézet megjelenítése",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Modell megjelenítése",
"Show more": "Továbbiak megjelenítése",
"Show or switch the current model.": "",
@@ -3169,6 +3181,8 @@
"Task List": "Feladatlista",
"Tasks": "Feladatok",
"tasks completed": "feladat kész",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Mondjon többet:",
"Temporary": "",
"Temporary Chat": "Ideiglenes csevegés",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "Adja meg a Hugging Face Resolve (Letöltési) URL-t",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "Jaj! Probléma adódott a válasszal.",
+ "Unarchive": "",
"Unarchive Chat": "Csevegés visszaállítása",
"Unassigned": "Nincs hozzárendelve",
"Underline": "Aláhúzás",
@@ -3412,6 +3427,7 @@
"Visible": "Látható",
"Visible to all users": "Minden felhasználó számára látható",
"Visual": "Vizuális",
+ "vocabulary for a college entrance exam": "",
"Voice": "Hang",
"Voice Input": "Hangbevitel",
"Voice mode": "Hangmód",
@@ -3442,6 +3458,7 @@
"Weekly": "Hetente",
"Weekly at": "Hetente ekkor:",
"Welcome to your AI home.": "Üdvözöljük az AI-otthonában.",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "Mit próbálsz elérni?",
"What are you working on?": "Min dolgozol?",
"What is NOT shared:": "Ami NINCS megosztva:",
diff --git a/src/lib/i18n/locales/id-ID/translation.json b/src/lib/i18n/locales/id-ID/translation.json
index abeba371fdb2..a843242c37f6 100644
--- a/src/lib/i18n/locales/id-ID/translation.json
+++ b/src/lib/i18n/locales/id-ID/translation.json
@@ -1,633 +1,638 @@
{
- "-1 for no limit, or a positive integer for a specific limit": "",
+ "-1 for no limit, or a positive integer for a specific limit": "-1 untuk tanpa batas, atau bilangan bulat positif untuk batas tertentu",
"(latest)": "(terbaru)",
- "(leave blank for to use commercial endpoint)": "",
- "[Last] dddd [at] h:mm A": "",
- "[Today at] h:mm A": "",
- "[Yesterday at] h:mm A": "",
+ "(leave blank for to use commercial endpoint)": "(kosongkan untuk menggunakan endpoint komersial)",
+ "[Last] dddd [at] h:mm A": "[dddd lalu pukul] h:mm A",
+ "[Today at] h:mm A": "[Hari ini pukul] h:mm A",
+ "[Yesterday at] h:mm A": "[Kemarin pukul] h:mm A",
"{{ models }}": "{{ models }}",
- "{{count}} added lines_other": "",
- "{{COUNT}} Available Skills": "",
- "{{COUNT}} Available Tools": "",
- "{{COUNT}} characters": "",
- "{{COUNT}} document(s) selected.": "",
- "{{COUNT}} extracted lines": "",
+ "{{count}} added lines_one": "{{count}} baris ditambahkan",
+ "{{count}} added lines_other": "{{count}} baris ditambahkan",
+ "{{COUNT}} Available Skills": "{{COUNT}} Keterampilan Tersedia",
+ "{{COUNT}} Available Tools": "{{COUNT}} Alat Tersedia",
+ "{{COUNT}} characters": "{{COUNT}} karakter",
+ "{{COUNT}} document(s) selected.": "{{COUNT}} dokumen dipilih.",
+ "{{COUNT}} extracted lines": "{{COUNT}} baris diekstrak",
"{{count}} files_one": "{{count}} berkas",
- "{{count}} files_other": "",
- "{{COUNT}} files": "",
+ "{{count}} files_other": "{{count}} berkas",
+ "{{COUNT}} files": "{{COUNT}} berkas",
"{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "{{count}} berkas dipilih. Hanya berkas baru dan yang dimodifikasi yang akan diunggah. Berkas yang dihapus akan disingkirkan. Struktur folder akan disinkronkan. Lanjutkan?",
- "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "",
+ "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "{{count}} berkas dipilih. Hanya berkas baru dan yang dimodifikasi yang akan diunggah. Berkas yang dihapus akan disingkirkan. Struktur folder akan dicerminkan. Lanjutkan?",
"{{count}} filters_one": "{{count}} filter",
- "{{count}} filters_other": "",
+ "{{count}} filters_other": "{{count}} filter",
"{{count}} groups_one": "{{count}} grup",
- "{{count}} groups_other": "",
- "{{COUNT}} hidden lines": "",
- "{{COUNT}} members": "",
+ "{{count}} groups_other": "{{count}} grup",
+ "{{COUNT}} hidden lines": "{{COUNT}} baris tersembunyi",
+ "{{COUNT}} members": "{{COUNT}} anggota",
"{{count}} of {{total}} accessible_one": "{{count}} dari {{total}} dapat diakses",
- "{{count}} of {{total}} accessible_other": "",
- "{{COUNT}} pipeline(s) selected": "",
- "{{count}} removed lines_other": "",
- "{{COUNT}} Replies": "",
- "{{COUNT}} Rows": "",
+ "{{count}} of {{total}} accessible_other": "{{count}} dari {{total}} dapat diakses",
+ "{{COUNT}} pipeline(s) selected": "{{COUNT}} pipeline dipilih",
+ "{{count}} removed lines_one": "{{count}} baris dihapus",
+ "{{count}} removed lines_other": "{{count}} baris dihapus",
+ "{{COUNT}} Replies": "{{COUNT}} Balasan",
+ "{{COUNT}} Rows": "{{COUNT}} Baris",
"{{count}} selected_one": "{{count}} dipilih",
- "{{count}} selected_other": "",
- "{{COUNT}} Sources": "",
+ "{{count}} selected_other": "{{count}} dipilih",
+ "{{COUNT}} Sources": "{{COUNT}} Sumber",
"{{count}} users_one": "{{count}} pengguna",
- "{{count}} users_other": "",
- "{{COUNT}} words": "",
- "{{COUNT}}d_time_ago": "",
- "{{COUNT}}h_time_ago": "",
- "{{COUNT}}m_time_ago": "",
- "{{COUNT}}w_time_ago": "",
- "{{COUNT}}y_time_ago": "",
- "{{label}} contains invalid JSON": "",
- "{{label}} must be a JSON object": "",
- "{{model}} download has been canceled": "",
- "{{modelName}} profile image": "",
- "{{NAMES}} reacted with {{REACTION}}": "",
- "{{page}} / {{totalPages}} ({{rows}} rows)": "",
- "{{percent}}% full": "",
+ "{{count}} users_other": "{{count}} pengguna",
+ "{{COUNT}} words": "{{COUNT}} kata",
+ "{{COUNT}}d_time_ago": "{{COUNT}} hari lalu",
+ "{{COUNT}}h_time_ago": "{{COUNT}} jam lalu",
+ "{{COUNT}}m_time_ago": "{{COUNT}} menit lalu",
+ "{{COUNT}}w_time_ago": "{{COUNT}} minggu lalu",
+ "{{COUNT}}y_time_ago": "{{COUNT}} tahun lalu",
+ "{{label}} contains invalid JSON": "{{label}} berisi JSON tidak valid",
+ "{{label}} must be a JSON object": "{{label}} harus berupa objek JSON",
+ "{{model}} download has been canceled": "Pengunduhan {{model}} telah dibatalkan",
+ "{{modelName}} profile image": "Gambar profil {{modelName}}",
+ "{{NAMES}} reacted with {{REACTION}}": "{{NAMES}} bereaksi dengan {{REACTION}}",
+ "{{page}} / {{totalPages}} ({{rows}} rows)": "{{page}} / {{totalPages}} ({{rows}} baris)",
+ "{{percent}}% full": "{{percent}}% penuh",
"{{user}}'s Chats": "Obrolan {{user}}",
"{{webUIName}} Backend Required": "{{webUIName}} Diperlukan Backend",
- "* (all domains)": "",
- "*Prompt node ID(s) are required for image generation": "",
- "*required": "",
- "1 file": "",
- "1 group": "",
- "1 hour before": "",
- "1 Source": "",
- "1 user": "",
- "10 minutes before": "",
- "15 minutes before": "",
- "1m_time_ago": "",
- "30 minutes before": "",
- "5 minutes before": "",
- "A chat run failed.": "",
- "A chat run finished successfully.": "",
- "A collaboration channel where people join as members": "",
- "A discussion channel where access is controlled by groups and permissions": "",
- "A new version (v{{LATEST_VERSION}}) is now available.": "",
- "A private conversation between you and selected users": "",
+ "* (all domains)": "* (semua domain)",
+ "*Prompt node ID(s) are required for image generation": "*ID node prompt diperlukan untuk pembuatan gambar",
+ "*required": "*wajib diisi",
+ "1 file": "1 berkas",
+ "1 group": "1 grup",
+ "1 hour before": "1 jam sebelumnya",
+ "1 Source": "1 Sumber",
+ "1 user": "1 pengguna",
+ "10 minutes before": "10 menit sebelumnya",
+ "15 minutes before": "15 menit sebelumnya",
+ "1m_time_ago": "1 mnt lalu",
+ "30 minutes before": "30 menit sebelumnya",
+ "5 minutes before": "5 menit sebelumnya",
+ "A chat run failed.": "Proses obrolan gagal.",
+ "A chat run finished successfully.": "Proses obrolan berhasil selesai.",
+ "A collaboration channel where people join as members": "Saluran kolaborasi tempat pengguna bergabung sebagai anggota",
+ "A discussion channel where access is controlled by groups and permissions": "Saluran diskusi dengan akses yang dikontrol oleh grup dan izin",
+ "A new version (v{{LATEST_VERSION}}) is now available.": "Versi baru (v{{LATEST_VERSION}}) kini tersedia.",
+ "A private conversation between you and selected users": "Percakapan pribadi antara Anda dan pengguna yang dipilih",
"a user": "seorang pengguna",
- "Accept Autocomplete Generation\nJump to Prompt Variable": "",
- "Access": "",
- "Access Control": "",
- "Access Grants": "",
- "Access level": "",
- "Access List": "",
- "Access prohibited": "",
- "Access updated": "",
- "Accessible to all users": "",
+ "about the Roman Empire": "tentang Kekaisaran Romawi",
+ "Accept Autocomplete Generation\nJump to Prompt Variable": "Terima Pembuatan Pelengkapan Otomatis\nLompat ke Variabel Prompt",
+ "Access": "Akses",
+ "Access Control": "Kontrol Akses",
+ "Access Grants": "Izin Akses",
+ "Access level": "Tingkat akses",
+ "Access List": "Daftar Akses",
+ "Access prohibited": "Akses dilarang",
+ "Access updated": "Akses diperbarui",
+ "Accessible to all users": "Dapat diakses oleh semua pengguna",
"Account Activation Pending": "Aktivasi Akun Tertunda",
"Accurate information": "Informasi yang akurat",
- "Action": "",
- "Actions": "",
- "Activate this command by typing \"/{{COMMAND}}\" to chat input.": "",
+ "Action": "Tindakan",
+ "Actions": "Tindakan",
+ "Activate this command by typing \"/{{COMMAND}}\" to chat input.": "Aktifkan perintah ini dengan mengetik \"/{{COMMAND}}\" pada input obrolan.",
"Active": "Aktif",
"Active Users": "Pengguna Aktif",
- "Activity": "",
+ "Activity": "Aktivitas",
"Add": "Tambah",
- "Add a model ID": "",
- "Add a preference, fact, or instruction about you": "",
+ "Add a model ID": "Tambahkan ID model",
+ "Add a preference, fact, or instruction about you": "Tambahkan preferensi, fakta, atau instruksi tentang Anda",
"Add a short description about what this model does": "Tambahkan deskripsi singkat tentang apa yang dilakukan model ini",
"Add a tag": "Menambahkan tag",
- "Add a tag...": "",
- "Add Access": "",
- "Add Arena Model": "",
- "Add Connection": "",
- "Add Content": "",
- "Add content here": "",
- "Add Custom Parameter": "",
- "Add Custom Prompt": "",
- "Add description": "",
- "Add Details": "",
- "Add durable context for future chats": "",
+ "Add a tag...": "Tambahkan tag...",
+ "Add Access": "Tambah Akses",
+ "Add Arena Model": "Tambah Model Arena",
+ "Add Connection": "Tambah Koneksi",
+ "Add Content": "Tambah Konten",
+ "Add content here": "Tambahkan konten di sini",
+ "Add Custom Parameter": "Tambah Parameter Kustom",
+ "Add Custom Prompt": "Tambah Prompt Kustom",
+ "Add description": "Tambahkan deskripsi",
+ "Add Details": "Tambah Detail",
+ "Add durable context for future chats": "Tambahkan konteks permanen untuk obrolan mendatang",
"Add Files": "Menambahkan File",
- "Add Image": "",
- "Add Knowledge Connection": "",
- "Add location": "",
- "Add Member": "",
- "Add Members": "",
+ "Add Image": "Tambah Gambar",
+ "Add Knowledge Connection": "Tambah Koneksi Pengetahuan",
+ "Add location": "Tambahkan lokasi",
+ "Add Member": "Tambah Anggota",
+ "Add Members": "Tambah Anggota",
"Add Memory": "Menambahkan Memori",
- "Add prompt suggestion": "",
- "Add Reaction": "",
- "Add tag": "",
- "Add Tag": "",
- "Add Terminal": "",
- "Add Terminal Connection": "",
- "Add text content": "",
- "Add to favorites": "",
- "Add translation": "",
+ "Add prompt suggestion": "Tambahkan saran prompt",
+ "Add Reaction": "Tambah Reaksi",
+ "Add tag": "Tambahkan tag",
+ "Add Tag": "Tambah Tag",
+ "Add Terminal": "Tambah Terminal",
+ "Add Terminal Connection": "Tambah Koneksi Terminal",
+ "Add text content": "Tambahkan konten teks",
+ "Add to favorites": "Tambahkan ke favorit",
+ "Add translation": "Tambah terjemahan",
"Add User": "Tambah Pengguna",
- "Add User Group": "",
- "Add User Variable": "",
- "Add webhook": "",
- "Add webpage": "",
- "Add your Open Terminal URL and API key in Settings → Integrations.": "",
- "Additional configuration options for marker. This should be a JSON string with key-value pairs. For example, '{\"key\": \"value\"}'. Supported keys include: disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level": "",
- "Additional feedback comments": "",
+ "Add User Group": "Tambah Grup Pengguna",
+ "Add User Variable": "Tambah Variabel Pengguna",
+ "Add webhook": "Tambah webhook",
+ "Add webpage": "Tambah halaman web",
+ "Add your Open Terminal URL and API key in Settings → Integrations.": "Tambahkan URL Open Terminal dan kunci API Anda di Pengaturan → Integrasi.",
+ "Additional configuration options for marker. This should be a JSON string with key-value pairs. For example, '{\"key\": \"value\"}'. Supported keys include: disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level": "Opsi konfigurasi tambahan untuk marker. Ini harus berupa string JSON dengan pasangan kunci-nilai. Contoh: '{\"key\": \"value\"}'. Kunci yang didukung meliputi: disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level",
+ "Additional feedback comments": "Komentar masukan tambahan",
"admin": "admin",
"Admin": "Admin",
"Admin Panel": "Panel Admin",
- "Admin-managed service account": "",
+ "Admin-managed service account": "Akun layanan yang dikelola admin",
"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Admin memiliki akses ke semua alat setiap saat; pengguna memerlukan alat yang ditetapkan per model di ruang kerja.",
- "Advanced": "",
+ "Advanced": "Lanjutan",
"Advanced Params": "Parameter Lanjutan",
- "After changing the embedding model, reindex knowledge, knowledge search, and memory vectors for changes to take effect.": "",
- "AI": "",
- "All": "",
- "All chats have been unarchived.": "",
- "All day": "",
- "All events": "",
- "All models are now hidden": "",
- "All models are now visible": "",
- "All models deleted successfully": "",
- "All rights reserved.": "",
- "All shared chats have been unshared.": "",
- "All Sources": "",
- "All time": "",
- "All Users": "",
- "All users and system events": "",
- "Allow": "",
- "Allow {{NAME}}?": "",
- "Allow browser notifications for completed responses.": "",
- "Allow Call": "",
- "Allow Chat Controls": "",
- "Allow Chat Delete": "",
- "Allow Chat Edit": "",
- "Allow Chat Export": "",
- "Allow Chat Import": "",
- "Allow Chat Params": "",
- "Allow Chat Share": "",
- "Allow Chat System Prompt": "",
- "Allow Chat Valves": "",
- "Allow Continue Response": "",
- "Allow Delete Messages": "",
- "Allow File Upload": "",
- "Allow Multiple Models in Chat": "",
- "Allow public write access": "",
- "Allow Rate Response": "",
- "Allow Regenerate Response": "",
- "Allow Sharing With Groups": "",
- "Allow Sharing With Users": "",
- "Allow Speech to Text": "",
- "Allow Temporary Chat": "",
- "Allow Text to Speech": "",
- "Allow the AI to delegate tasks to sub-agents. Each sub-agent creates a real chat with full tool access. Uses additional LLM calls.": "",
- "Allow Tool Call": "",
- "Allow Web Upload": "",
+ "After changing the embedding model, reindex knowledge, knowledge search, and memory vectors for changes to take effect.": "Setelah mengubah model embedding, indeks ulang pengetahuan, pencarian pengetahuan, dan vektor memori agar perubahan diterapkan.",
+ "AI": "AI",
+ "All": "Semua",
+ "All chats have been unarchived.": "Semua obrolan telah batal diarsipkan.",
+ "All day": "Sepanjang hari",
+ "All events": "Semua peristiwa",
+ "All models are now hidden": "Semua model sekarang disembunyikan",
+ "All models are now visible": "Semua model sekarang terlihat",
+ "All models deleted successfully": "Semua model berhasil dihapus",
+ "All rights reserved.": "Hak cipta dilindungi undang-undang.",
+ "All shared chats have been unshared.": "Semua obrolan bersama telah dibatalkan pembagiannya.",
+ "All Sources": "Semua Sumber",
+ "All time": "Sepanjang waktu",
+ "All Users": "Semua Pengguna",
+ "All users and system events": "Semua pengguna dan peristiwa sistem",
+ "Allow": "Izinkan",
+ "Allow {{NAME}}?": "Izinkan {{NAME}}?",
+ "Allow browser notifications for completed responses.": "Izinkan notifikasi peramban untuk respons yang selesai.",
+ "Allow Call": "Izinkan Panggilan",
+ "Allow Chat Controls": "Izinkan Kontrol Obrolan",
+ "Allow Chat Delete": "Izinkan Hapus Obrolan",
+ "Allow Chat Edit": "Izinkan Edit Obrolan",
+ "Allow Chat Export": "Izinkan Ekspor Obrolan",
+ "Allow Chat Import": "Izinkan Impor Obrolan",
+ "Allow Chat Params": "Izinkan Parameter Obrolan",
+ "Allow Chat Share": "Izinkan Bagikan Obrolan",
+ "Allow Chat System Prompt": "Izinkan Prompt Sistem Obrolan",
+ "Allow Chat Valves": "Izinkan Valve Obrolan",
+ "Allow Continue Response": "Izinkan Lanjutkan Respons",
+ "Allow Delete Messages": "Izinkan Hapus Pesan",
+ "Allow File Upload": "Izinkan Unggah Berkas",
+ "Allow Multiple Models in Chat": "Izinkan Banyak Model dalam Obrolan",
+ "Allow public write access": "Izinkan akses tulis publik",
+ "Allow Rate Response": "Izinkan Beri Nilai Respons",
+ "Allow Regenerate Response": "Izinkan Buat Ulang Respons",
+ "Allow Sharing With Groups": "Izinkan Berbagi dengan Grup",
+ "Allow Sharing With Users": "Izinkan Berbagi dengan Pengguna",
+ "Allow Speech to Text": "Izinkan Ucapan ke Teks",
+ "Allow Temporary Chat": "Izinkan Obrolan Sementara",
+ "Allow Text to Speech": "Izinkan Teks ke Ucapan",
+ "Allow the AI to delegate tasks to sub-agents. Each sub-agent creates a real chat with full tool access. Uses additional LLM calls.": "Izinkan AI untuk mendelegasikan tugas ke sub-agen. Setiap sub-agen membuat obrolan nyata dengan akses alat penuh. Menggunakan panggilan LLM tambahan.",
+ "Allow Tool Call": "Izinkan Panggilan Alat",
+ "Allow Web Upload": "Izinkan Unggahan Web",
"Already have an account?": "Sudah memiliki akun?",
- "Also bound to {{action}}": "",
- "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.": "",
- "Always": "",
- "Amazing": "",
+ "Also bound to {{action}}": "Juga terikat ke {{action}}",
+ "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.": "Alternatif untuk top_p, dan bertujuan untuk memastikan keseimbangan antara kualitas dan variasi. Parameter p mewakili probabilitas minimum agar sebuah token dipertimbangkan, relatif terhadap probabilitas token yang paling mungkin. Misalnya, dengan p=0,05 dan token yang paling mungkin memiliki probabilitas 0,9, logit dengan nilai kurang dari 0,045 akan disaring.",
+ "Always": "Selalu",
+ "Amazing": "Luar biasa",
"an assistant": "asisten",
- "Analytics": "",
- "Analyzed": "",
- "Analyzing...": "",
- "and {{COUNT}} more": "",
+ "Analytics": "Analitik",
+ "Analyzed": "Dianalisis",
+ "Analyzing...": "Menganalisis...",
+ "and {{COUNT}} more": "dan {{COUNT}} lainnya",
"and create a new shared link.": "dan membuat tautan bersama baru.",
- "Anyone": "",
- "Anyone with the link can view": "",
+ "Anyone": "Siapa saja",
+ "Anyone with the link can view": "Siapa saja yang memiliki tautan dapat melihat",
"API Base URL": "URL Dasar API",
"API Key": "Kunci API",
- "API Key / Token": "",
+ "API Key / Token": "Kunci API / Token",
"API Key created.": "Kunci API dibuat.",
- "API Key deleted.": "",
- "API Keys": "",
- "API Type": "",
- "API Version": "",
- "API Version is required": "",
- "App navigation": "",
- "applies to all users with the \"user\" role": "",
+ "API Key deleted.": "Kunci API dihapus.",
+ "API Keys": "Kunci API",
+ "API Type": "Jenis API",
+ "API Version": "Versi API",
+ "API Version is required": "Versi API wajib diisi",
+ "App navigation": "Navigasi aplikasi",
+ "applies to all users with the \"user\" role": "berlaku untuk semua pengguna dengan peran \"user\"",
"April": "April",
"Archive": "Arsipkan",
- "archived-chat-export": "",
- "Are you sure you want to archive all chats? This action cannot be undone.": "",
- "Are you sure you want to clear all memories? This action cannot be undone.": "",
- "Are you sure you want to delete \"{{NAME}}\"?": "",
- "Are you sure you want to delete **{{modelName}}**?": "",
- "Are you sure you want to delete all chats? This action cannot be undone.": "",
- "Are you sure you want to delete this channel?": "",
- "Are you sure you want to delete this connection? This action cannot be undone.": "",
- "Are you sure you want to delete this directory?": "",
- "Are you sure you want to delete this memory? This action cannot be undone.": "",
- "Are you sure you want to delete this message?": "",
- "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "",
- "Are you sure you want to delete this webhook? This action cannot be undone.": "",
- "Are you sure you want to delete this?": "",
- "Are you sure you want to reset all permissions to their default values? You will still need to save to apply the changes.": "",
- "Are you sure you want to unarchive all archived chats?": "",
- "Are you sure you want to unshare all shared chats? This will remove all share links.": "",
- "Artifacts": "",
- "Asc": "",
- "Ask": "",
- "Ask a question": "",
- "Ask a test question": "",
- "Ask for approval": "",
- "Ask this knowledge source a test question": "",
- "Assistant": "",
- "Assistant messages": "",
- "at": "",
- "At time of event": "",
- "Attach File From Knowledge": "",
- "Attach Files": "",
- "Attach Knowledge": "",
- "Attach Notes": "",
- "Attach Webpage": "",
+ "archived-chat-export": "ekspor-obrolan-diarsipkan",
+ "Are you sure you want to archive all chats? This action cannot be undone.": "Apakah Anda yakin ingin mengarsipkan semua obrolan? Tindakan ini tidak dapat dibatalkan.",
+ "Are you sure you want to clear all memories? This action cannot be undone.": "Apakah Anda yakin ingin membersihkan semua memori? Tindakan ini tidak dapat dibatalkan.",
+ "Are you sure you want to delete \"{{NAME}}\"?": "Apakah Anda yakin ingin menghapus \"{{NAME}}\"?",
+ "Are you sure you want to delete **{{modelName}}**?": "Apakah Anda yakin ingin menghapus **{{modelName}}**?",
+ "Are you sure you want to delete all chats? This action cannot be undone.": "Apakah Anda yakin ingin menghapus semua obrolan? Tindakan ini tidak dapat dibatalkan.",
+ "Are you sure you want to delete this channel?": "Apakah Anda yakin ingin menghapus saluran ini?",
+ "Are you sure you want to delete this connection? This action cannot be undone.": "Apakah Anda yakin ingin menghapus koneksi ini? Tindakan ini tidak dapat dibatalkan.",
+ "Are you sure you want to delete this directory?": "Apakah Anda yakin ingin menghapus direktori ini?",
+ "Are you sure you want to delete this memory? This action cannot be undone.": "Apakah Anda yakin ingin menghapus memori ini? Tindakan ini tidak dapat dibatalkan.",
+ "Are you sure you want to delete this message?": "Apakah Anda yakin ingin menghapus pesan ini?",
+ "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "Apakah Anda yakin ingin menghapus versi ini? Versi turunan akan ditautkan kembali ke induk versi ini.",
+ "Are you sure you want to delete this webhook? This action cannot be undone.": "Apakah Anda yakin ingin menghapus webhook ini? Tindakan ini tidak dapat dibatalkan.",
+ "Are you sure you want to delete this?": "Apakah Anda yakin ingin menghapus ini?",
+ "Are you sure you want to reset all permissions to their default values? You will still need to save to apply the changes.": "Apakah Anda yakin ingin mengatur ulang semua izin ke nilai default? Anda masih perlu menyimpan untuk menerapkan perubahan.",
+ "Are you sure you want to unarchive all archived chats?": "Apakah Anda yakin ingin membatalkan pengarsipan semua obrolan yang diarsipkan?",
+ "Are you sure you want to unshare all shared chats? This will remove all share links.": "Apakah Anda yakin ingin membatalkan berbagi semua obrolan yang dibagikan? Ini akan menghapus semua tautan berbagi.",
+ "Artifacts": "Artefak",
+ "Asc": "Menaik",
+ "Ask": "Tanya",
+ "Ask a question": "Ajukan pertanyaan",
+ "Ask a test question": "Ajukan pertanyaan uji coba",
+ "Ask for approval": "Minta persetujuan",
+ "Ask this knowledge source a test question": "Ajukan pertanyaan uji coba ke sumber pengetahuan ini",
+ "Assistant": "Asisten",
+ "Assistant messages": "Pesan asisten",
+ "at": "pada",
+ "At time of event": "Pada saat kejadian",
+ "Attach File From Knowledge": "Lampirkan Berkas Dari Pengetahuan",
+ "Attach Files": "Lampirkan Berkas",
+ "Attach Knowledge": "Lampirkan Pengetahuan",
+ "Attach Notes": "Lampirkan Catatan",
+ "Attach Webpage": "Lampirkan Halaman Web",
"Attention to detail": "Perhatian terhadap detail",
- "Audio player": "",
+ "Audio player": "Pemutar audio",
"August": "Agustus",
- "Auth": "",
- "Auth Mode": "",
- "Auth required": "",
- "Authenticate": "",
- "Authorize OAuth": "",
- "Auto": "",
- "Auto (Random)": "",
- "Automatic": "",
- "Automatic Delivery": "",
- "Automatic Events": "",
- "Automatic1111": "",
+ "Auth": "Autentikasi",
+ "Auth Mode": "Mode Autentikasi",
+ "Auth required": "Autentikasi diperlukan",
+ "Authenticate": "Autentikasi",
+ "Authorize OAuth": "Otorisasi OAuth",
+ "Auto": "Otomatis",
+ "Auto (Random)": "Otomatis (Acak)",
+ "Automatic": "Otomatis",
+ "Automatic Delivery": "Pengiriman Otomatis",
+ "Automatic Events": "Peristiwa Otomatis",
+ "Automatic1111": "Automatic1111",
"AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 URL Dasar diperlukan.",
- "Automation": "",
- "Automation created": "",
- "Automation Menu": "",
- "Automation title": "",
- "Automation triggered": "",
- "Automation updated": "",
- "Automations": "",
- "Available list": "",
- "Available models": "",
- "Available Skills": "",
- "Available Tools": "",
- "Available variables": "",
+ "Automation": "Otomatisasi",
+ "Automation created": "Otomatisasi dibuat",
+ "Automation Menu": "Menu Otomatisasi",
+ "Automation title": "Judul otomatisasi",
+ "Automation triggered": "Otomatisasi dipicu",
+ "Automation updated": "Otomatisasi diperbarui",
+ "Automations": "Otomatisasi",
+ "Available list": "Daftar yang tersedia",
+ "Available models": "Model yang tersedia",
+ "Available Skills": "Keahlian yang Tersedia",
+ "Available Tools": "Alat yang Tersedia",
+ "Available variables": "Variabel yang tersedia",
"available!": "tersedia!",
- "Average messages per active day": "",
- "Average tokens per chat": "",
+ "Average messages per active day": "Rata-rata pesan per hari aktif",
+ "Average tokens per chat": "Rata-rata token per obrolan",
"Away": "Tidak di tempat",
- "Awful": "",
- "Azure AI Speech": "",
+ "Awful": "Sangat Buruk",
+ "Azure AI Speech": "Azure AI Speech",
"Azure OpenAI": "Azure OpenAI",
"Back": "Kembali",
- "Background Image": "",
- "Background image must be at most 25 megapixels.": "",
- "Background image must be at most 5 MiB.": "",
- "Background image must be PNG, JPEG, WebP, or GIF.": "",
- "Background image preview": "",
- "Background sub-agent finished": "",
- "background sub-agents": "",
+ "Background Image": "Gambar Latar Belakang",
+ "Background image must be at most 25 megapixels.": "Gambar latar belakang maksimal 25 megapiksel.",
+ "Background image must be at most 5 MiB.": "Gambar latar belakang maksimal 5 MiB.",
+ "Background image must be PNG, JPEG, WebP, or GIF.": "Gambar latar belakang harus berupa PNG, JPEG, WebP, atau GIF.",
+ "Background image preview": "Pratinjau gambar latar belakang",
+ "Background sub-agent finished": "Sub-agen latar belakang selesai",
+ "background sub-agents": "sub-agen latar belakang",
"Bad Response": "Respons Buruk",
"Base Model (From)": "Model Dasar (Dari)",
- "Base Model is required.": "",
- "Base Models": "",
- "Basic text only": "",
- "Basics": "",
- "Bearer": "",
+ "Base Model is required.": "Model Dasar wajib diisi.",
+ "Base Models": "Model Dasar",
+ "Basic text only": "Hanya teks dasar",
+ "Basics": "Dasar",
+ "Bearer": "Bearer",
"before": "sebelum",
"Being lazy": "Menjadi malas",
- "Bing": "",
- "Bold": "",
- "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "",
- "Brave": "",
- "Bullet List": "",
- "Button ID": "",
- "Button Label": "",
- "Button Prompt": "",
- "By": "",
- "by {{name}}": "",
- "By {{name}}": "",
- "By supporting the project through sponsorship or an enterprise license, you help us stay independent, ship new features faster, improve stability, and grow Open WebUI for the long haul.": "",
- "Calendar": "",
- "Calendar created": "",
- "Calendar deleted": "",
- "Calendar name": "",
- "Calendars": "",
- "Calendars Public Sharing": "",
+ "Bing": "Bing",
+ "Bold": "Tebal",
+ "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "Meningkatkan atau mengurangi bobot token tertentu untuk respons terbatas. Nilai bias akan dibatasi antara -100 dan 100 (inklusif). (Bawaan: tidak ada)",
+ "Brave": "Brave",
+ "Bullet List": "Daftar Poin",
+ "Button ID": "ID Tombol",
+ "Button Label": "Label Tombol",
+ "Button Prompt": "Prompt Tombol",
+ "By": "Oleh",
+ "by {{name}}": "oleh {{name}}",
+ "By {{name}}": "Oleh {{name}}",
+ "By supporting the project through sponsorship or an enterprise license, you help us stay independent, ship new features faster, improve stability, and grow Open WebUI for the long haul.": "Dengan mendukung proyek ini melalui sponsor atau lisensi enterprise, Anda membantu kami tetap mandiri, merilis fitur baru lebih cepat, meningkatkan stabilitas, dan mengembangkan Open WebUI untuk jangka panjang.",
+ "Calendar": "Kalender",
+ "Calendar created": "Kalender berhasil dibuat",
+ "Calendar deleted": "Kalender berhasil dihapus",
+ "Calendar name": "Nama kalender",
+ "Calendars": "Kalender",
+ "Calendars Public Sharing": "Berbagi Publik Kalender",
"Call": "Panggilan",
"Call feature is not supported when using Web STT engine": "Fitur panggilan tidak didukung saat menggunakan mesin Web STT",
"Camera": "Kamera",
"Cancel": "Batal",
- "Cancel download of {{model}}": "",
- "Cannot create an empty note.": "",
- "Cannot delete the production version": "",
- "Capture": "",
- "Capture Audio": "",
- "Change folder icon": "",
- "Change User Role": "",
- "Channel": "",
- "Channel deleted successfully": "",
- "Channel is required": "",
- "Channel Name": "",
- "Channel name cannot be empty.": "",
- "Channel name must be less than 128 characters": "",
- "Channel Type": "",
- "Channel updated successfully": "",
- "Channels": "",
- "Character": "",
+ "Cancel download of {{model}}": "Batalkan unduhan {{model}}",
+ "Cannot create an empty note.": "Tidak dapat membuat catatan kosong.",
+ "Cannot delete the production version": "Tidak dapat menghapus versi produksi",
+ "Capture": "Tangkap",
+ "Capture Audio": "Tangkap Audio",
+ "Change folder icon": "Ubah ikon folder",
+ "Change User Role": "Ubah Peran Pengguna",
+ "Channel": "Saluran",
+ "Channel deleted successfully": "Saluran berhasil dihapus",
+ "Channel is required": "Saluran wajib diisi",
+ "Channel Name": "Nama Saluran",
+ "Channel name cannot be empty.": "Nama saluran tidak boleh kosong.",
+ "Channel name must be less than 128 characters": "Nama saluran harus kurang dari 128 karakter",
+ "Channel Type": "Tipe Saluran",
+ "Channel updated successfully": "Saluran berhasil diperbarui",
+ "Channels": "Saluran",
+ "Character": "Karakter",
"Chat": "Obrolan",
- "Chat actions": "",
- "Chat archived.": "",
- "Chat Completions": "",
- "Chat Conversation": "",
- "Chat deleted.": "",
- "Chat exported successfully": "",
- "Chat failed": "",
- "Chat finished": "",
- "Chat forked": "",
- "Chat history": "",
- "Chat ID": "",
- "Chat is too short to compact": "",
- "Chat Menu": "",
- "Chat moved successfully": "",
- "Chat Permissions": "",
- "Chat unshared successfully.": "",
- "Chat Uploads": "",
- "Chat Variables": "",
- "Chat Variables have conflicting model definitions": "",
- "chats": "",
+ "Chat actions": "Tindakan obrolan",
+ "Chat archived.": "Obrolan diarsipkan.",
+ "Chat Completions": "Penyelesaian Obrolan",
+ "Chat Conversation": "Percakapan Obrolan",
+ "Chat deleted.": "Obrolan dihapus.",
+ "Chat exported successfully": "Obrolan berhasil diekspor",
+ "Chat failed": "Obrolan gagal",
+ "Chat finished": "Obrolan selesai",
+ "Chat forked": "Obrolan dicabangkan",
+ "Chat history": "Riwayat obrolan",
+ "Chat ID": "ID Obrolan",
+ "Chat is too short to compact": "Obrolan terlalu pendek untuk dipadatkan",
+ "Chat Menu": "Menu Obrolan",
+ "Chat moved successfully": "Obrolan berhasil dipindahkan",
+ "Chat Permissions": "Izin Obrolan",
+ "Chat unarchived.": "Obrolan batal diarsipkan.",
+ "Chat unshared successfully.": "Berbagi obrolan berhasil dibatalkan.",
+ "Chat Uploads": "Unggahan Obrolan",
+ "Chat Variables": "Variabel Obrolan",
+ "Chat Variables have conflicting model definitions": "Variabel Obrolan memiliki definisi model yang bertentangan",
+ "chats": "obrolan",
"Chats": "Obrolan",
- "Chats Open Sharing": "",
- "Chats Public Sharing": "",
+ "Chats Open Sharing": "Berbagi Obrolan Terbuka",
+ "Chats Public Sharing": "Berbagi Obrolan Publik",
"Check Again": "Periksa Lagi",
- "Check OAuth Discovery": "",
- "Check what is running in this chat.": "",
+ "Check OAuth Discovery": "Periksa Penemuan OAuth",
+ "Check what is running in this chat.": "Periksa apa yang sedang berjalan di obrolan ini.",
"Checking for updates...": "Memeriksa pembaruan...",
"Choose a model before saving...": "Pilih model sebelum menyimpan...",
- "Choose channel": "",
- "Choose folder": "",
+ "Choose channel": "Pilih saluran",
+ "Choose folder": "Pilih folder",
"Citation": "Kutipan",
- "Citations": "",
- "Clear": "",
- "Clear filters to reorder": "",
- "Clear Memory": "",
- "Clear search": "",
- "Clear status": "",
- "click here": "",
- "Click here for filter guides.": "",
+ "Citations": "Sitiran",
+ "Clear": "Bersihkan",
+ "Clear filters to reorder": "Bersihkan filter untuk mengurutkan ulang",
+ "Clear Memory": "Bersihkan Memori",
+ "Clear search": "Bersihkan pencarian",
+ "Clear status": "Bersihkan status",
+ "click here": "klik di sini",
+ "Click here for filter guides.": "Klik di sini untuk panduan filter.",
"Click here for help.": "Klik di sini untuk bantuan.",
"Click here to": "Klik di sini untuk",
"Click here to download user import template file.": "Klik di sini untuk mengunduh file templat impor pengguna.",
- "Click here to learn more about faster-whisper and see the available models.": "",
- "Click here to see available models.": "",
+ "Click here to learn more about faster-whisper and see the available models.": "Klik di sini untuk mempelajari lebih lanjut tentang faster-whisper dan melihat model yang tersedia.",
+ "Click here to see available models.": "Klik di sini untuk melihat model yang tersedia.",
"Click here to select": "Klik di sini untuk memilih",
"Click here to select a csv file.": "Klik di sini untuk memilih file csv.",
"click here.": "Klik di sini.",
"Click on the user role button to change a user's role.": "Klik tombol peran pengguna untuk mengubah peran pengguna.",
- "Click to connect": "",
- "Click to copy ID": "",
- "Click to rebind": "",
- "Client ID": "",
- "Client Secret": "",
+ "Click to connect": "Klik untuk menghubungkan",
+ "Click to copy ID": "Klik untuk menyalin ID",
+ "Click to rebind": "Klik untuk mengaitkan ulang",
+ "Client ID": "ID Klien",
+ "Client Secret": "Rahasia Klien",
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Izin menulis papan klip ditolak. Periksa pengaturan peramban Anda untuk memberikan akses yang diperlukan.",
"Clone": "Kloning",
- "Clone Chat": "",
- "Clone of {{TITLE}}": "",
+ "Clone Chat": "Duplikat Obrolan",
+ "Clone of {{TITLE}}": "Duplikat dari {{TITLE}}",
"Close": "Tutup",
- "Close Banner": "",
- "Close chat controls": "",
- "Close citation modal": "",
- "Close Configure Connection Modal": "",
- "Close embed": "",
- "Close feedback": "",
- "Close modal": "",
- "Close Modal": "",
- "Close Sidebar": "",
- "Close terminal": "",
- "cloud": "",
- "CMU ARCTIC speaker embedding name": "",
- "Code Block": "",
- "Code Editor": "",
- "Code execution": "",
+ "Close Banner": "Tutup Spanduk",
+ "Close chat controls": "Tutup kontrol obrolan",
+ "Close citation modal": "Tutup modal sitiran",
+ "Close Configure Connection Modal": "Tutup Modal Konfigurasi Koneksi",
+ "Close embed": "Tutup sematan",
+ "Close feedback": "Tutup umpan balik",
+ "Close modal": "Tutup modal",
+ "Close Modal": "Tutup Modal",
+ "Close Sidebar": "Tutup Bilah Sisi",
+ "Close terminal": "Tutup terminal",
+ "cloud": "cloud",
+ "CMU ARCTIC speaker embedding name": "Nama sematan pembicara CMU ARCTIC",
+ "Code Block": "Blok Kode",
+ "Code Editor": "Editor Kode",
+ "Code execution": "Eksekusi kode",
"Code formatted successfully": "Kode berhasil diformat",
- "Code Interpreter": "",
- "Collaboration channel where people join as members": "",
- "Collapse": "",
+ "Code Interpreter": "Interpreter Kode",
+ "Collaboration channel where people join as members": "Saluran kolaborasi tempat orang bergabung sebagai anggota",
+ "Collapse": "Ciutkan",
"Collection": "Koleksi",
- "Collection Field": "",
- "Collections": "",
- "Color": "",
+ "Collection Field": "Bidang Koleksi",
+ "Collections": "Koleksi",
+ "Color": "Warna",
"ComfyUI": "ComfyUI",
"ComfyUI Base URL is required.": "URL Dasar ComfyUI diperlukan.",
- "Comma separated Node Ids (e.g. 1 or 1,2)": "",
- "Comma-separated group names": "",
- "Comma-separated top-level request parameters this upstream may receive without translation. Use * to allow all captured passthrough params.": "",
- "command": "",
+ "Comma separated Node Ids (e.g. 1 or 1,2)": "ID Node dipisahkan koma (mis. 1 atau 1,2)",
+ "Comma-separated group names": "Nama grup dipisahkan koma",
+ "Comma-separated top-level request parameters this upstream may receive without translation. Use * to allow all captured passthrough params.": "Parameter permintaan tingkat atas yang dipisahkan koma yang dapat diterima upstream ini tanpa terjemahan. Gunakan * untuk mengizinkan semua parameter passthrough yang ditangkap.",
+ "command": "perintah",
"Command": "Perintah",
- "Commands": "",
- "Comment": "",
- "Commit Message": "",
- "Community Reviews": "",
- "Compact": "",
- "Compact: shorten older messages so this chat can keep going.": "",
- "Compacting context": "",
- "Compacting context...": "",
- "Compare": "",
- "Comparing with knowledge base...": "",
- "Completions": "",
- "Compress uploaded images before sending or storage.": "",
+ "Commands": "Perintah",
+ "Comment": "Komentar",
+ "Commit Message": "Pesan Commit",
+ "Community Reviews": "Ulasan Komunitas",
+ "Compact": "Padatkan",
+ "Compact: shorten older messages so this chat can keep going.": "Padatkan: persingkat pesan lama agar obrolan ini dapat terus berlanjut.",
+ "Compacting context": "Memadatkan konteks",
+ "Compacting context...": "Memadatkan konteks...",
+ "Compare": "Bandingkan",
+ "Comparing with knowledge base...": "Membandingkan dengan basis pengetahuan...",
+ "Completions": "Penyelesaian",
+ "Compress uploaded images before sending or storage.": "Kompres gambar yang diunggah sebelum dikirim atau disimpan.",
"Computing checksums ({{count}} files)_one": "Menghitung checksum ({{count}} berkas)",
- "Computing checksums ({{count}} files)_other": "",
- "Config imported successfully": "",
- "Configure": "",
+ "Computing checksums ({{count}} files)_other": "Menghitung checksum ({{count}} berkas)",
+ "Config imported successfully": "Konfigurasi berhasil diimpor",
+ "Configure": "Konfigurasikan",
"Confirm": "Konfirmasi",
"Confirm Password": "Konfirmasi Kata Sandi",
- "Confirm Prompt from Embed": "",
- "Confirm recording": "",
+ "Confirm Prompt from Embed": "Konfirmasi Prompt dari Sematan",
+ "Confirm recording": "Konfirmasi rekaman",
"Confirm your action": "Konfirmasi tindakan Anda",
- "Confirm your new password": "",
- "Confirm Your Password": "",
- "Connect to an AI provider to start chatting": "",
- "Connect to Open Terminal instances. Admins and users granted access can use file browsing and terminal tools through these servers.": "",
- "Connect to your own OpenAPI compatible external tool servers.": "",
- "Connected": "",
- "Connected ({{type}})": "",
- "Connection failed": "",
- "Connection lost. Reconnecting...": "",
- "Connection successful": "",
- "Connection Type": "",
- "Connections managed through the Admin Panel are recommended for everyday use. Direct connections provide convenient access to your own endpoints, but rely on your browser session to keep requests running, making them better suited to testing and temporary use.": "",
- "Connections saved successfully": "",
- "Connections settings updated": "",
+ "Confirm your new password": "Konfirmasikan kata sandi baru Anda",
+ "Confirm Your Password": "Konfirmasikan Kata Sandi Anda",
+ "Connect to an AI provider to start chatting": "Hubungkan ke penyedia AI untuk mulai mengobrol",
+ "Connect to Open Terminal instances. Admins and users granted access can use file browsing and terminal tools through these servers.": "Hubungkan ke instans Open Terminal. Admin dan pengguna yang diberi akses dapat menggunakan penjelajahan berkas dan alat terminal melalui server ini.",
+ "Connect to your own OpenAPI compatible external tool servers.": "Hubungkan ke server alat eksternal yang kompatibel dengan OpenAPI milik Anda.",
+ "Connected": "Terhubung",
+ "Connected ({{type}})": "Terhubung ({{type}})",
+ "Connection failed": "Koneksi gagal",
+ "Connection lost. Reconnecting...": "Koneksi terputus. Menghubungkan kembali...",
+ "Connection successful": "Koneksi berhasil",
+ "Connection Type": "Jenis Koneksi",
+ "Connections managed through the Admin Panel are recommended for everyday use. Direct connections provide convenient access to your own endpoints, but rely on your browser session to keep requests running, making them better suited to testing and temporary use.": "Koneksi yang dikelola melalui Panel Admin disarankan untuk penggunaan sehari-hari. Koneksi langsung menyediakan akses mudah ke titik akhir Anda sendiri, tetapi mengandalkan sesi peramban agar permintaan tetap berjalan, sehingga lebih cocok untuk pengujian dan penggunaan sementara.",
+ "Connections saved successfully": "Koneksi berhasil disimpan",
+ "Connections settings updated": "Pengaturan koneksi diperbarui",
"Contact Admin for WebUI Access": "Hubungi Admin untuk Akses WebUI",
"Content": "Konten",
- "Content Field": "",
- "Content lengths (character counts only)": "",
- "Content matches": "",
- "Context": "",
- "Context compacted": "",
- "Context compaction failed": "",
- "Context compaction is disabled": "",
- "Context usage": "",
- "Continue": "",
+ "Content Field": "Bidang Konten",
+ "Content lengths (character counts only)": "Panjang konten (hanya jumlah karakter)",
+ "Content matches": "Kecocokan konten",
+ "Context": "Konteks",
+ "Context compacted": "Konteks dipadatkan",
+ "Context compaction failed": "Pemadatan konteks gagal",
+ "Context compaction is disabled": "Pemadatan konteks dinonaktifkan",
+ "Context usage": "Penggunaan konteks",
+ "Continue": "Lanjutkan",
"Continue Response": "Lanjutkan Tanggapan",
"Continue with {{provider}}": "Lanjutkan dengan {{provider}}",
- "Continue with Email": "",
- "Continue with LDAP": "",
- "Control the repetition of token sequences in the generated text. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 1.1) will be more lenient. At 1, it is disabled.": "",
- "Controls": "",
- "Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text.": "",
- "Conversation saved successfully": "",
- "Copied": "",
- "Copied link to clipboard": "",
+ "Continue with Email": "Lanjutkan dengan Email",
+ "Continue with LDAP": "Lanjutkan dengan LDAP",
+ "Control the repetition of token sequences in the generated text. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 1.1) will be more lenient. At 1, it is disabled.": "Kendalikan pengulangan urutan token dalam teks yang dihasilkan. Nilai yang lebih tinggi (misalnya, 1.5) akan memberikan penalti pengulangan lebih ketat, sedangkan nilai yang lebih rendah (misalnya, 1.1) akan lebih longgar. Pada nilai 1, fitur dinonaktifkan.",
+ "Controls": "Kontrol",
+ "Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text.": "Mengontrol keseimbangan antara koherensi dan keberagaman hasil keluaran. Nilai yang lebih rendah akan menghasilkan teks yang lebih fokus dan koheren.",
+ "Conversation saved successfully": "Percakapan berhasil disimpan",
+ "Copied": "Disalin",
+ "Copied link to clipboard": "Tautan disalin ke papan klip",
"Copied shared chat URL to clipboard!": "Menyalin URL obrolan bersama ke papan klip!",
- "Copied to clipboard": "",
+ "Copied to clipboard": "Disalin ke papan klip",
"Copy": "Menyalin",
- "Copy API Key": "",
- "Copy content": "",
- "Copy default": "",
- "Copy Last Code Block": "",
- "Copy Last Response": "",
- "Copy link": "",
+ "Copy API Key": "Salin Kunci API",
+ "Copy content": "Salin konten",
+ "Copy default": "Salin bawaan",
+ "Copy Last Code Block": "Salin Blok Kode Terakhir",
+ "Copy Last Response": "Salin Respons Terakhir",
+ "Copy link": "Salin tautan",
"Copy Link": "Salin Tautan",
- "Copy Path": "",
- "Copy Prompt": "",
- "Copy Share Link": "",
- "Copy to clipboard": "",
- "Copy Token": "",
- "Copy URL": "",
+ "Copy Path": "Salin Jalur",
+ "Copy Prompt": "Salin Prompt",
+ "Copy Share Link": "Salin Tautan Berbagi",
+ "Copy to clipboard": "Salin ke papan klip",
+ "Copy Token": "Salin Token",
+ "Copy URL": "Salin URL",
"Copying to clipboard was successful!": "Penyalinan ke papan klip berhasil!",
- "Copyright (c)": "",
- "CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
- "Could not check for updates": "",
- "Could not load release notes.": "",
- "Could not read file.": "",
- "Couldn't find your language?": "",
- "CPU": "",
- "Create": "",
- "Create a knowledge base": "",
+ "Copyright (c)": "Hak Cipta (c)",
+ "CORS must be properly configured by the provider to allow requests from Open WebUI.": "CORS harus dikonfigurasi dengan benar oleh penyedia untuk mengizinkan permintaan dari Open WebUI.",
+ "Could not check for updates": "Tidak dapat memeriksa pembaruan",
+ "Could not load release notes.": "Tidak dapat memuat catatan rilis.",
+ "Could not read file.": "Tidak dapat membaca berkas.",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "Bisakah Anda mulai dengan menanyakan kapan saya paling sering menunda-nunda pekerjaan, lalu memberi saran untuk mengatasinya?",
+ "Couldn't find your language?": "Tidak menemukan bahasa Anda?",
+ "CPU": "CPU",
+ "Create": "Buat",
+ "Create a knowledge base": "Buat basis pengetahuan",
"Create a model": "Buat model",
- "Create a new note": "",
- "Create a reusable terminal skill from this chat.": "",
+ "Create a new note": "Buat catatan baru",
+ "Create a reusable terminal skill from this chat.": "Buat keahlian terminal yang dapat digunakan kembali dari obrolan ini.",
"Create Account": "Buat Akun",
- "Create Admin Account": "",
- "Create announcements shown to users in the app.": "",
- "Create Channel": "",
- "Create Folder": "",
- "Create Knowledge": "",
- "Create Model": "",
+ "Create Admin Account": "Buat Akun Admin",
+ "Create announcements shown to users in the app.": "Buat pengumuman yang ditampilkan kepada pengguna di aplikasi.",
+ "Create Channel": "Buat Saluran",
+ "Create Folder": "Buat Folder",
+ "Create Knowledge": "Buat Pengetahuan",
+ "Create Model": "Buat Model",
"Create new key": "Buat kunci baru",
- "Create Prompt": "",
- "Create scheduled prompts that run automatically on a recurring basis.": "",
- "Create skill": "",
- "Create skill: create a reusable terminal skill from this chat.": "",
- "Create your first note from the Create menu.": "",
- "Created": "",
+ "Create Prompt": "Buat Prompt",
+ "Create scheduled prompts that run automatically on a recurring basis.": "Buat prompt terjadwal yang berjalan secara otomatis berulang kali.",
+ "Create skill": "Buat keahlian",
+ "Create skill: create a reusable terminal skill from this chat.": "Buat keahlian: buat keahlian terminal yang dapat digunakan kembali dari obrolan ini.",
+ "Create your first note from the Create menu.": "Buat catatan pertama Anda dari menu Buat.",
+ "Created": "Dibuat",
"Created at": "Dibuat di",
"Created At": "Dibuat di",
"Created by": "Dibuat oleh",
- "Created by you": "",
- "Created on {{date}}": "",
+ "Created by you": "Dibuat oleh Anda",
+ "Created on {{date}}": "Dibuat pada {{date}}",
"CSV Import": "Impor CSV",
- "CSV: Name,Email": "",
- "Ctrl+Enter to Send": "",
- "Cumulative": "",
- "Current": "",
- "Current branch": "",
+ "CSV: Name,Email": "CSV: Nama,Email",
+ "Ctrl+Enter to Send": "Ctrl+Enter untuk Mengirim",
+ "Cumulative": "Kumulatif",
+ "Current": "Saat Ini",
+ "Current branch": "Cabang saat ini",
"Current Model": "Model Saat Ini",
- "Current streak": "",
+ "Current streak": "Runtunan saat ini",
"Custom": "Kustom",
- "Custom color": "",
- "Custom description enabled": "",
- "Custom Gender": "",
- "Custom Parameter Name": "",
- "Custom Parameter Value": "",
- "Custom permissions": "",
- "Custom range": "",
- "Daily": "",
- "Daily at": "",
- "Daily Messages": "",
+ "Custom color": "Warna kustom",
+ "Custom description enabled": "Deskripsi kustom diaktifkan",
+ "Custom Gender": "Jenis Kelamin Kustom",
+ "Custom Parameter Name": "Nama Parameter Kustom",
+ "Custom Parameter Value": "Nilai Parameter Kustom",
+ "Custom permissions": "Izin kustom",
+ "Custom range": "Rentang kustom",
+ "Daily": "Harian",
+ "Daily at": "Setiap hari pukul",
+ "Daily Messages": "Pesan Harian",
"Dark": "Gelap",
- "Data": "",
+ "Data": "Data",
"Database": "Basis data",
- "Datalab Marker API": "",
- "Date is required": "",
- "Date Modified": "",
- "Day": "",
- "DD/MM/YYYY": "",
+ "Datalab Marker API": "API Datalab Marker",
+ "Date is required": "Tanggal wajib diisi",
+ "Date Modified": "Tanggal Dimodifikasi",
+ "Day": "Hari",
+ "DD/MM/YYYY": "DD/MM/YYYY",
"December": "Desember",
- "Deepgram": "",
+ "Deepgram": "Deepgram",
"Default": "Default",
- "Default (Open AI)": "",
+ "Default (Open AI)": "Bawaan (Open AI)",
"Default (SentenceTransformers)": "Default (Pengubah Kalimat)",
- "Default action buttons will be used.": "",
- "Default description enabled": "",
- "Default Filters": "",
- "Default Interface Settings": "",
+ "Default action buttons will be used.": "Tombol tindakan bawaan akan digunakan.",
+ "Default description enabled": "Deskripsi bawaan diaktifkan",
+ "Default Filters": "Filter Bawaan",
+ "Default Interface Settings": "Pengaturan Antarmuka Bawaan",
"Default Model": "Model Default",
"Default model updated": "Model default diperbarui",
- "Default permissions": "",
- "Default permissions updated successfully": "",
+ "Default permissions": "Izin bawaan",
+ "Default permissions updated successfully": "Izin bawaan berhasil diperbarui",
"Default Prompt Suggestions": "Saran Permintaan Default",
- "Default to 389 or 636 if TLS is enabled": "",
- "Default to ALL": "",
- "Default to memberOf": "",
- "Default to segmented retrieval for focused and relevant content extraction, this is recommended for most cases.": "",
- "Default webhook": "",
+ "Default to 389 or 636 if TLS is enabled": "Bawaan ke 389 atau 636 jika TLS diaktifkan",
+ "Default to ALL": "Bawaan ke SEMUA",
+ "Default to memberOf": "Bawaan ke memberOf",
+ "Default to segmented retrieval for focused and relevant content extraction, this is recommended for most cases.": "Bawaan ke pengambilan tersegmentasi untuk ekstraksi konten yang fokus dan relevan, disarankan untuk sebagian besar kasus.",
+ "Default webhook": "Webhook bawaan",
"Delete": "Menghapus",
- "Delete {{name}}": "",
+ "Delete {{name}}": "Hapus {{name}}",
"Delete a model": "Menghapus model",
- "Delete All": "",
- "Delete all contents inside this directory": "",
- "Delete all contents inside this folder": "",
- "Delete API Key?": "",
- "Delete automation?": "",
- "Delete calendar": "",
- "Delete Calendar": "",
+ "Delete All": "Hapus Semua",
+ "Delete all contents inside this directory": "Hapus semua konten di dalam direktori ini",
+ "Delete all contents inside this folder": "Hapus semua konten di dalam folder ini",
+ "Delete API Key?": "Hapus Kunci API?",
+ "Delete automation?": "Hapus otomatisasi?",
+ "Delete calendar": "Hapus kalender",
+ "Delete Calendar": "Hapus Kalender",
"Delete Chat": "Menghapus Obrolan",
"Delete chat?": "Menghapus obrolan?",
- "Delete directory?": "",
- "Delete Event": "",
- "Delete File": "",
- "Delete folder?": "",
+ "Delete directory?": "Hapus direktori?",
+ "Delete Event": "Hapus Acara",
+ "Delete File": "Hapus Berkas",
+ "Delete folder?": "Hapus folder?",
"Delete function?": "Fungsi hapus?",
- "Delete Memory?": "",
- "Delete Message": "",
- "Delete message?": "",
- "Delete Model": "",
- "Delete note?": "",
+ "Delete Memory?": "Hapus Memori?",
+ "Delete Message": "Hapus Pesan",
+ "Delete message?": "Hapus pesan?",
+ "Delete Model": "Hapus Model",
+ "Delete note?": "Hapus catatan?",
"Delete prompt?": "Perintah hapus?",
- "Delete skill?": "",
+ "Delete skill?": "Hapus keahlian?",
"delete this link": "hapus tautan ini",
"Delete tool?": "Hapus alat?",
"Delete User": "Menghapus Pengguna",
- "Delete Version": "",
- "Deleted": "",
+ "Delete Version": "Hapus Versi",
+ "Deleted": "Dihapus",
"Deleted {{deleteModelTag}}": "Menghapus {{deleteModelTag}}",
"Deleted {{name}}": "Menghapus {{name}}",
- "Deleted {{ok}} of {{total}} items": "",
- "Deleted User": "",
- "Denied {{NAME}}": "",
- "Deny": "",
- "Deny Tool Call": "",
- "Deployment names are required for Azure OpenAI": "",
- "Desc": "",
- "Describe the edit...": "",
- "Describe the image...": "",
- "Describe what changed...": "",
- "Describe your knowledge base and objectives": "",
+ "Deleted {{ok}} of {{total}} items": "Dihapus {{ok}} dari {{total}} item",
+ "Deleted User": "Pengguna Dihapus",
+ "Denied {{NAME}}": "Ditolak {{NAME}}",
+ "Deny": "Tolak",
+ "Deny Tool Call": "Tolak Pemanggilan Alat",
+ "Deployment names are required for Azure OpenAI": "Nama deployment wajib diisi untuk Azure OpenAI",
+ "Desc": "Menurun",
+ "Describe the edit...": "Jelaskan pengeditan...",
+ "Describe the image...": "Jelaskan gambar...",
+ "Describe what changed...": "Jelaskan apa yang berubah...",
+ "Describe your knowledge base and objectives": "Jelaskan basis pengetahuan dan tujuan Anda",
"Description": "Deskripsi",
- "Description ({{language}})": "",
- "Deselect": "",
- "Destination": "",
- "Detected Variables": "",
- "Dictate": "",
+ "Description ({{language}})": "Deskripsi ({{language}})",
+ "Deselect": "Batal pilih",
+ "Destination": "Tujuan",
+ "Detected Variables": "Variabel Terdeteksi",
+ "Dictate": "Dikte",
"Didn't fully follow instructions": "Tidak sepenuhnya mengikuti instruksi",
- "Diff settings": "",
- "Direct": "",
- "Direct Message": "",
- "Direct Tool Servers": "",
- "Directory created.": "",
- "Directory deleted.": "",
- "Directory moved.": "",
- "Directory name": "",
- "Directory renamed.": "",
- "Directory selection was cancelled": "",
- "Disable all": "",
- "Disable All": "",
- "Disable Code Interpreter": "",
+ "Diff settings": "Pengaturan diff",
+ "Direct": "Langsung",
+ "Direct Message": "Pesan Langsung",
+ "Direct Tool Servers": "Server Alat Langsung",
+ "Directory created.": "Direktori dibuat.",
+ "Directory deleted.": "Direktori dihapus.",
+ "Directory moved.": "Direktori dipindahkan.",
+ "Directory name": "Nama direktori",
+ "Directory renamed.": "Direktori diganti nama.",
+ "Directory selection was cancelled": "Pemilihan direktori dibatalkan",
+ "Disable all": "Nonaktifkan semua",
+ "Disable All": "Nonaktifkan Semua",
+ "Disable Code Interpreter": "Nonaktifkan Code Interpreter",
"Disabled": "Dinonaktifkan",
- "Disconnect OAuth": "",
+ "Disconnect OAuth": "Putuskan OAuth",
"Discover a function": "Menemukan sebuah fungsi",
"Discover a model": "Menemukan sebuah model",
"Discover a prompt": "Temukan petunjuk",
@@ -636,2117 +641,2125 @@
"Discover, download, and explore custom prompts": "Temukan, unduh, dan jelajahi prompt khusus",
"Discover, download, and explore custom tools": "Menemukan, mengunduh, dan menjelajahi alat khusus",
"Discover, download, and explore model presets": "Menemukan, mengunduh, dan menjelajahi preset model",
- "Discussion channel where access is based on groups and permissions": "",
- "Dismiss": "",
- "Dismiss notification": "",
- "Display": "",
- "Do not install functions from sources you do not fully trust.": "",
- "Do not install tools from sources you do not fully trust.": "",
- "Do you want to sync your usage stats with Open WebUI Community?": "",
- "Docling": "",
- "Docling Parameters": "",
- "Docling Server URL required.": "",
+ "Discussion channel where access is based on groups and permissions": "Saluran diskusi tempat akses ditentukan berdasarkan grup dan izin",
+ "Dismiss": "Abaikan",
+ "Dismiss notification": "Abaikan notifikasi",
+ "Display": "Tampilan",
+ "Do not install functions from sources you do not fully trust.": "Jangan pasang fungsi dari sumber yang tidak Anda percayai sepenuhnya.",
+ "Do not install tools from sources you do not fully trust.": "Jangan pasang alat dari sumber yang tidak Anda percayai sepenuhnya.",
+ "Do you want to sync your usage stats with Open WebUI Community?": "Apakah Anda ingin menyinkronkan statistik penggunaan dengan Komunitas Open WebUI?",
+ "Docling": "Docling",
+ "Docling Parameters": "Parameter Docling",
+ "Docling Server URL required.": "URL Server Docling wajib diisi.",
"Document": "Dokumen",
- "Document ID Field": "",
- "Document Intelligence": "",
- "Document Intelligence endpoint required.": "",
+ "Document ID Field": "Kolom ID Dokumen",
+ "Document Intelligence": "Document Intelligence",
+ "Document Intelligence endpoint required.": "Endpoint Document Intelligence wajib diisi.",
"Documentation": "Dokumentasi",
"does not make any external connections, and your data stays securely on your locally hosted server.": "tidak membuat koneksi eksternal apa pun, dan data Anda tetap aman di server yang dihosting secara lokal.",
- "Don't fetch random pipelines from sources you don't trust.": "",
+ "Don't fetch random pipelines from sources you don't trust.": "Jangan mengambil pipeline acak dari sumber yang tidak Anda percayai.",
"Don't have an account?": "Tidak memiliki akun?",
"Don't like the style": "Tidak suka gayanya",
"Done": "Selesai",
"Download": "Unduh",
- "Download \"{{searchValue}}\"": "",
- "Download \"{{searchValue}}\" from {{provider}}": "",
- "Download as JSON": "",
- "Download as SVG": "",
+ "Download \"{{searchValue}}\"": "Unduh \"{{searchValue}}\"",
+ "Download \"{{searchValue}}\" from {{provider}}": "Unduh \"{{searchValue}}\" dari {{provider}}",
+ "Download as JSON": "Unduh sebagai JSON",
+ "Download as SVG": "Unduh sebagai SVG",
"Download canceled": "Unduh dibatalkan",
- "Download CSV Template": "",
- "Download failed": "",
- "Download Model": "",
- "Downloading \"{{name}}\"": "",
- "Downloading \"{{searchValue}}\"": "",
- "Downloading stats...": "",
- "Drag and Drop Container": "",
- "Drag to reorder": "",
- "Draw": "",
- "Drop any files here to upload": "",
- "Drop files here": "",
- "Drop to upload": "",
- "DuckDuckGo": "",
+ "Download CSV Template": "Unduh Templat CSV",
+ "Download failed": "Pengunduhan gagal",
+ "Download Model": "Unduh Model",
+ "Downloading \"{{name}}\"": "Mengunduh \"{{name}}\"",
+ "Downloading \"{{searchValue}}\"": "Mengunduh \"{{searchValue}}\"",
+ "Downloading stats...": "Mengunduh statistik...",
+ "Drag and Drop Container": "Wadah Seret dan Lepas",
+ "Drag to reorder": "Seret untuk mengurutkan ulang",
+ "Draw": "Gambar",
+ "Drop any files here to upload": "Lepaskan file apa pun di sini untuk mengunggah",
+ "Drop files here": "Lepaskan file di sini",
+ "Drop to upload": "Lepaskan untuk mengunggah",
+ "DuckDuckGo": "DuckDuckGo",
"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "misalnya '30-an', '10m'. Satuan waktu yang valid adalah 's', 'm', 'h'.",
- "e.g. 'low', 'medium', 'high'": "",
- "e.g. \"json\" or a JSON schema": "",
- "e.g. 60": "",
- "e.g. A filter to remove profanity from text": "",
- "e.g. about the Roman Empire": "",
- "e.g. alloy, echo, shimmer": "",
- "e.g. Code Review Guidelines": "",
- "e.g. code-review-guidelines": "",
- "e.g. en": "",
- "e.g. My Filter": "",
- "e.g. My Tools": "",
- "e.g. my_filter": "",
- "e.g. my_tools": "",
- "e.g. pdf, docx, txt": "",
- "e.g. Step-by-step instructions for code reviews": "",
- "e.g. Tell me a fun fact": "",
- "e.g. Tell me a fun fact about the Roman Empire": "",
- "e.g. Tools for performing various operations": "",
- "e.g., 3, 4, 5 (leave blank for default)": "",
- "e.g., audio/wav,audio/mpeg,video/* (leave blank for defaults)": "",
- "e.g., en-US,ja-JP (leave blank for auto-detect)": "",
- "e.g., westus (leave blank for eastus)": "",
+ "e.g. 'low', 'medium', 'high'": "mis. 'low', 'medium', 'high'",
+ "e.g. \"json\" or a JSON schema": "mis. \"json\" atau skema JSON",
+ "e.g. 60": "mis. 60",
+ "e.g. A filter to remove profanity from text": "mis. Filter untuk menghapus kata tidak senonoh dari teks",
+ "e.g. about the Roman Empire": "mis. tentang Kekaisaran Romawi",
+ "e.g. alloy, echo, shimmer": "mis. alloy, echo, shimmer",
+ "e.g. Code Review Guidelines": "mis. Panduan Tinjauan Kode",
+ "e.g. code-review-guidelines": "mis. code-review-guidelines",
+ "e.g. en": "mis. en",
+ "e.g. My Filter": "mis. Filter Saya",
+ "e.g. My Tools": "mis. Alat Saya",
+ "e.g. my_filter": "mis. my_filter",
+ "e.g. my_tools": "mis. my_tools",
+ "e.g. pdf, docx, txt": "mis. pdf, docx, txt",
+ "e.g. Step-by-step instructions for code reviews": "mis. Petunjuk langkah demi langkah untuk tinjauan kode",
+ "e.g. Tell me a fun fact": "mis. Beri tahu saya fakta menarik",
+ "e.g. Tell me a fun fact about the Roman Empire": "mis. Beri tahu saya fakta menarik tentang Kekaisaran Romawi",
+ "e.g. Tools for performing various operations": "mis. Alat untuk melakukan berbagai operasi",
+ "e.g., 3, 4, 5 (leave blank for default)": "mis., 3, 4, 5 (biarkan kosong untuk default)",
+ "e.g., audio/wav,audio/mpeg,video/* (leave blank for defaults)": "mis., audio/wav,audio/mpeg,video/* (biarkan kosong untuk default)",
+ "e.g., en-US,ja-JP (leave blank for auto-detect)": "mis., en-US,ja-JP (biarkan kosong untuk deteksi otomatis)",
+ "e.g., westus (leave blank for eastus)": "mis., westus (biarkan kosong untuk eastus)",
"Edit": "Edit",
- "Edit Arena Model": "",
- "Edit Channel": "",
- "Edit Connection": "",
- "Edit Default Permissions": "",
- "Edit Folder": "",
- "Edit Knowledge Connection": "",
- "Edit Last Message": "",
+ "Edit Arena Model": "Edit Model Arena",
+ "Edit Channel": "Edit Saluran",
+ "Edit Connection": "Edit Koneksi",
+ "Edit Default Permissions": "Edit Izin Default",
+ "Edit Folder": "Edit Folder",
+ "Edit Knowledge Connection": "Edit Koneksi Pengetahuan",
+ "Edit Last Message": "Edit Pesan Terakhir",
"Edit Memory": "Edit Memori",
- "Edit Prompt": "",
- "Edit Terminal Connection": "",
+ "Edit Prompt": "Edit Prompt",
+ "Edit Terminal Connection": "Edit Koneksi Terminal",
"Edit User": "Edit Pengguna",
- "Edit User Group": "",
- "Edit User Variable": "",
- "Edit webhook": "",
- "edited": "",
- "Editing language": "",
- "Eject": "",
- "Eject model": "",
- "ElevenLabs": "",
+ "Edit User Group": "Edit Grup Pengguna",
+ "Edit User Variable": "Edit Variabel Pengguna",
+ "Edit webhook": "Edit webhook",
+ "edited": "diedit",
+ "Editing language": "Bahasa pengeditan",
+ "Eject": "Keluarkan",
+ "Eject model": "Keluarkan model",
+ "ElevenLabs": "ElevenLabs",
"Email": "Email",
- "Embedded content": "",
- "Emoji": "",
- "Emoji graphics provided by": "",
- "Emojis": "",
- "Empty": "",
- "Empty message": "",
- "Enable All": "",
- "Enable all ({{COUNT}})": "",
- "Enable Code Interpreter": "",
- "Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
- "Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "",
- "Enable Mirostat sampling for controlling perplexity.": "",
+ "Embedded content": "Konten tersemat",
+ "Emoji": "Emoji",
+ "Emoji graphics provided by": "Grafik emoji disediakan oleh",
+ "Emojis": "Emoji",
+ "Empty": "Kosong",
+ "Empty message": "Pesan kosong",
+ "Enable All": "Aktifkan Semua",
+ "Enable all ({{COUNT}})": "Aktifkan semua ({{COUNT}})",
+ "Enable Code Interpreter": "Aktifkan Code Interpreter",
+ "Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Aktifkan Penguncian Memori (mlock) untuk mencegah data model dialihkan keluar dari RAM. Opsi ini mengunci halaman kerja model ke dalam RAM, memastikan bahwa data tidak akan dialihkan ke disk. Hal ini dapat membantu menjaga performa dengan menghindari page fault dan memastikan akses data yang cepat.",
+ "Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "Aktifkan Pemetaan Memori (mmap) untuk memuat data model. Opsi ini memungkinkan sistem menggunakan penyimpanan disk sebagai ekstensi RAM dengan memperlakukan berkas disk seolah-olah berada di RAM. Hal ini dapat meningkatkan performa model dengan mempercepat akses data. Namun, opsi ini mungkin tidak berfungsi dengan baik di semua sistem dan dapat menghabiskan ruang disk dalam jumlah yang signifikan.",
+ "Enable Mirostat sampling for controlling perplexity.": "Aktifkan pengambilan sampel Mirostat untuk mengontrol perplexity.",
"Enabled": "Diaktifkan",
- "End call": "",
- "End Tag": "",
- "Endpoint": "",
- "Enforce Temporary Chat": "",
- "Enhance": "",
- "Enhance this note and update it.": "",
+ "End call": "Akhiri panggilan",
+ "End Tag": "Tag Akhir",
+ "Endpoint": "Endpoint",
+ "Enforce Temporary Chat": "Wajibkan Obrolan Sementara",
+ "Enhance": "Tingkatkan",
+ "Enhance this note and update it.": "Tingkatkan catatan ini dan perbarui.",
"Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "Pastikan file CSV Anda menyertakan 4 kolom dengan urutan sebagai berikut: Nama, Email, Kata Sandi, Peran.",
"Enter {{role}} message here": "Masukkan pesan {{role}} di sini",
- "Enter a title for the pending user info overlay. Leave empty for default.": "",
- "Enter a watermark for the response. Leave empty for none.": "",
- "Enter additional headers in JSON format": "",
- "Enter additional headers in JSON format (e.g. {\"X-Custom-Header\": \"value\"}": "",
- "Enter additional parameters in JSON format": "",
+ "Enter a title for the pending user info overlay. Leave empty for default.": "Masukkan judul untuk hamparan info pengguna yang tertunda. Biarkan kosong untuk default.",
+ "Enter a watermark for the response. Leave empty for none.": "Masukkan tanda air untuk respons. Biarkan kosong jika tidak ada.",
+ "Enter additional headers in JSON format": "Masukkan header tambahan dalam format JSON",
+ "Enter additional headers in JSON format (e.g. {\"X-Custom-Header\": \"value\"}": "Masukkan header tambahan dalam format JSON (cth. {\"X-Custom-Header\": \"value\"}",
+ "Enter additional parameters in JSON format": "Masukkan parameter tambahan dalam format JSON",
"Enter api auth string (e.g. username:password)": "Masukkan string pengesahan API (misalnya nama pengguna: kata sandi)",
- "Enter Application DN": "",
- "Enter Application DN Password": "",
- "Enter Bing Search V7 Endpoint": "",
- "Enter Bing Search V7 Subscription Key": "",
- "Enter Bocha Search API Key": "",
+ "Enter Application DN": "Masukkan DN Aplikasi",
+ "Enter Application DN Password": "Masukkan Kata Sandi DN Aplikasi",
+ "Enter Bing Search V7 Endpoint": "Masukkan Endpoint Bing Search V7",
+ "Enter Bing Search V7 Subscription Key": "Masukkan Kunci Langganan Bing Search V7",
+ "Enter Bocha Search API Key": "Masukkan Kunci API Bocha Search",
"Enter Brave Search API Key": "Masukkan Kunci API Pencarian Berani",
- "Enter certificate path": "",
- "Enter Chunk Min Size Target": "",
+ "Enter certificate path": "Enter certificate path",
+ "Enter Chunk Min Size Target": "Masukkan Target Ukuran Minimum Potongan",
"Enter Chunk Overlap": "Masukkan Tumpang Tindih Chunk",
"Enter Chunk Size": "Masukkan Ukuran Potongan",
- "Enter Client ID": "",
- "Enter Client Secret": "",
- "Enter comma-separated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "",
- "Enter content for the pending user info overlay. Leave empty for default.": "",
- "Enter coordinates (e.g. 51.505, -0.09)": "",
- "Enter Datalab Marker API Base URL": "",
- "Enter Datalab Marker API Key": "",
- "Enter description": "",
- "Enter Docling API Key": "",
- "Enter Docling Server URL": "",
- "Enter Document Intelligence Endpoint": "",
- "Enter Document Intelligence Key": "",
- "Enter Document Intelligence Model": "",
- "Enter domains separated by commas (e.g., example.com,site.org,!excludedsite.com)": "",
- "Enter Exa API Key": "",
- "Enter External Document Loader API Key": "",
- "Enter External Document Loader URL": "",
- "Enter External Web Loader API Key": "",
- "Enter External Web Loader URL": "",
- "Enter External Web Search API Key": "",
- "Enter External Web Search URL": "",
- "Enter Firecrawl API Base URL": "",
- "Enter Firecrawl API Key": "",
- "Enter Firecrawl Timeout": "",
- "Enter folder name": "",
- "Enter function name filter list (e.g. func1, !func2)": "",
- "Enter GitHub Raw URL": "",
+ "Enter Client ID": "Masukkan ID Klien",
+ "Enter Client Secret": "Masukkan Rahasia Klien",
+ "Enter comma-separated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "Masukkan pasangan \"token:bias_value\" yang dipisahkan tanda koma (contoh: 5432:100, 413:-100)",
+ "Enter content for the pending user info overlay. Leave empty for default.": "Masukkan konten untuk hamparan info pengguna yang tertunda. Biarkan kosong untuk default.",
+ "Enter coordinates (e.g. 51.505, -0.09)": "Masukkan koordinat (cth. 51.505, -0.09)",
+ "Enter Datalab Marker API Base URL": "Masukkan URL Dasar API Datalab Marker",
+ "Enter Datalab Marker API Key": "Masukkan Kunci API Datalab Marker",
+ "Enter description": "Masukkan deskripsi",
+ "Enter Docling API Key": "Masukkan Kunci API Docling",
+ "Enter Docling Server URL": "Masukkan URL Server Docling",
+ "Enter Document Intelligence Endpoint": "Masukkan Endpoint Document Intelligence",
+ "Enter Document Intelligence Key": "Masukkan Kunci Document Intelligence",
+ "Enter Document Intelligence Model": "Masukkan Model Document Intelligence",
+ "Enter domains separated by commas (e.g., example.com,site.org,!excludedsite.com)": "Masukkan domain yang dipisahkan tanda koma (cth. example.com,site.org,!excludedsite.com)",
+ "Enter Exa API Key": "Masukkan Kunci API Exa",
+ "Enter External Document Loader API Key": "Masukkan Kunci API External Document Loader",
+ "Enter External Document Loader URL": "Masukkan URL External Document Loader",
+ "Enter External Web Loader API Key": "Masukkan Kunci API External Web Loader",
+ "Enter External Web Loader URL": "Masukkan URL External Web Loader",
+ "Enter External Web Search API Key": "Masukkan Kunci API External Web Search",
+ "Enter External Web Search URL": "Masukkan URL External Web Search",
+ "Enter Firecrawl API Base URL": "Masukkan URL Dasar API Firecrawl",
+ "Enter Firecrawl API Key": "Masukkan Kunci API Firecrawl",
+ "Enter Firecrawl Timeout": "Masukkan Batas Waktu Firecrawl",
+ "Enter folder name": "Masukkan nama folder",
+ "Enter function name filter list (e.g. func1, !func2)": "Masukkan daftar filter nama fungsi (cth. func1, !func2)",
+ "Enter GitHub Raw URL": "Masukkan URL Raw GitHub",
"Enter Google PSE API Key": "Masukkan Kunci API Google PSE",
"Enter Google PSE Engine Id": "Masukkan Id Mesin Google PSE",
- "Enter hex color (e.g. #FF0000)": "",
+ "Enter hex color (e.g. #FF0000)": "Masukkan kode warna hex (cth. #FF0000)",
"Enter Image Size (e.g. 512x512)": "Masukkan Ukuran Gambar (mis. 512x512)",
- "Enter Jina API Base URL": "",
- "Enter Jina API Key": "",
- "Enter JSON config (e.g., {\"disable_links\": true})": "",
- "Enter Jupyter Password": "",
- "Enter Jupyter Token": "",
- "Enter Jupyter URL": "",
- "Enter Kagi Search API Key": "",
- "Enter language": "",
+ "Enter Jina API Base URL": "Masukkan URL Dasar API Jina",
+ "Enter Jina API Key": "Masukkan Kunci API Jina",
+ "Enter JSON config (e.g., {\"disable_links\": true})": "Masukkan konfigurasi JSON (contoh: {\"disable_links\": true})",
+ "Enter Jupyter Password": "Masukkan Kata Sandi Jupyter",
+ "Enter Jupyter Token": "Masukkan Token Jupyter",
+ "Enter Jupyter URL": "Masukkan URL Jupyter",
+ "Enter Kagi Search API Key": "Masukkan Kunci API Kagi Search",
+ "Enter language": "Masukkan bahasa",
"Enter language codes": "Masukkan kode bahasa",
- "Enter Linkup API Key": "",
- "Enter Microsoft Web IQ API Base URL": "",
- "Enter Microsoft Web IQ API Key": "",
- "Enter MinerU API Key": "",
- "Enter Mistral API Base URL": "",
- "Enter Mistral API Key": "",
+ "Enter Linkup API Key": "Masukkan Kunci API Linkup",
+ "Enter Microsoft Web IQ API Base URL": "Masukkan URL Dasar API Microsoft Web IQ",
+ "Enter Microsoft Web IQ API Key": "Masukkan Kunci API Microsoft Web IQ",
+ "Enter MinerU API Key": "Masukkan Kunci API MinerU",
+ "Enter Mistral API Base URL": "Masukkan URL Dasar API Mistral",
+ "Enter Mistral API Key": "Masukkan Kunci API Mistral",
"Enter model tag (e.g. {{modelTag}})": "Masukkan tag model (misalnya {{modelTag}})",
- "Enter Mojeek Search API Key": "",
- "Enter name": "",
- "Enter New Password": "",
+ "Enter Mojeek Search API Key": "Masukkan Kunci API Mojeek Search",
+ "Enter name": "Masukkan nama",
+ "Enter New Password": "Masukkan Kata Sandi Baru",
"Enter Number of Steps (e.g. 50)": "Masukkan Jumlah Langkah (mis. 50)",
- "Enter Ollama Cloud API Key": "",
- "Enter OpenSERP Base URL": "",
- "Enter PaddleOCR-vl API Base URL": "",
- "Enter PaddleOCR-vl API Token": "",
- "Enter Perplexity API Key": "",
- "Enter Perplexity Search API URL": "",
- "Enter Playwright Timeout": "",
- "Enter Playwright WebSocket URL": "",
- "Enter prompt here.": "",
- "Enter proxy URL (e.g. https://user:password@host:port)": "",
- "Enter reasoning effort": "",
- "Enter Redirect URI": "",
+ "Enter Ollama Cloud API Key": "Masukkan Kunci API Ollama Cloud",
+ "Enter OpenSERP Base URL": "Masukkan URL Dasar OpenSERP",
+ "Enter PaddleOCR-vl API Base URL": "Masukkan URL Dasar API PaddleOCR-vl",
+ "Enter PaddleOCR-vl API Token": "Masukkan Token API PaddleOCR-vl",
+ "Enter Perplexity API Key": "Masukkan Kunci API Perplexity",
+ "Enter Perplexity Search API URL": "Masukkan URL API Perplexity Search",
+ "Enter Playwright Timeout": "Masukkan Batas Waktu Playwright",
+ "Enter Playwright WebSocket URL": "Masukkan URL WebSocket Playwright",
+ "Enter prompt here.": "Masukkan prompt di sini.",
+ "Enter proxy URL (e.g. https://user:password@host:port)": "Masukkan URL proksi (contoh: https://user:password@host:port)",
+ "Enter reasoning effort": "Masukkan tingkat upaya penalaran",
+ "Enter Redirect URI": "Masukkan URI Pengalihan",
"Enter Score": "Masukkan Skor",
- "Enter SearchApi API Key": "",
- "Enter SearchApi Engine": "",
+ "Enter SearchApi API Key": "Masukkan Kunci API SearchApi",
+ "Enter SearchApi Engine": "Masukkan Mesin SearchApi",
"Enter Searxng Query URL": "Masukkan URL Kueri Searxng",
- "Enter Searxng search language": "",
- "Enter Seed": "",
- "Enter SerpApi API Key": "",
- "Enter SerpApi Engine": "",
+ "Enter Searxng search language": "Masukkan bahasa pencarian Searxng",
+ "Enter Seed": "Masukkan Seed",
+ "Enter SerpApi API Key": "Masukkan Kunci API SerpApi",
+ "Enter SerpApi Engine": "Masukkan Mesin SerpApi",
"Enter Serper API Key": "Masukkan Kunci API Serper",
- "Enter SERPHouse API Key": "",
+ "Enter SERPHouse API Key": "Masukkan Kunci API SERPHouse",
"Enter Serply API Key": "Masukkan Kunci API Serply",
"Enter Serpstack API Key": "Masukkan Kunci API Serpstack",
- "Enter server host": "",
- "Enter server label": "",
- "Enter server port": "",
- "Enter skill instructions in markdown...": "",
- "Enter Sougou Search API sID": "",
- "Enter Sougou Search API SK": "",
- "Enter Staan API Key": "",
+ "Enter server host": "Masukkan host server",
+ "Enter server label": "Masukkan label server",
+ "Enter server port": "Masukkan port server",
+ "Enter skill instructions in markdown...": "Masukkan instruksi keahlian dalam markdown...",
+ "Enter Sougou Search API sID": "Masukkan sID API Sougou Search",
+ "Enter Sougou Search API SK": "Masukkan SK API Sougou Search",
+ "Enter Staan API Key": "Masukkan Kunci API Staan",
"Enter stop sequence": "Masukkan urutan berhenti",
- "Enter system prompt": "",
- "Enter system prompt here": "",
+ "Enter system prompt": "Masukkan prompt sistem",
+ "Enter system prompt here": "Masukkan prompt sistem di sini",
"Enter Tavily API Key": "Masukkan Kunci API Tavily",
- "Enter Tavily Extract Depth": "",
- "Enter the URL of the function to import": "",
- "Enter the URL to import": "",
- "Enter Tika Server URL": "",
- "Enter to Send": "",
- "Enter token threshold": "",
- "Enter Tokenizer Model": "",
+ "Enter Tavily Extract Depth": "Masukkan Kedalaman Ekstraksi Tavily",
+ "Enter the URL of the function to import": "Masukkan URL fungsi yang akan diimpor",
+ "Enter the URL to import": "Masukkan URL untuk diimpor",
+ "Enter Tika Server URL": "Masukkan URL Server Tika",
+ "Enter to Send": "Enter untuk Mengirim",
+ "Enter token threshold": "Masukkan ambang batas token",
+ "Enter Tokenizer Model": "Masukkan Model Tokenizer",
"Enter Top K": "Masukkan Top K",
- "Enter Top K Reranker": "",
+ "Enter Top K Reranker": "Masukkan Top K Reranker",
"Enter URL (e.g. http://127.0.0.1:7860/)": "Masukkan URL (mis. http://127.0.0.1:7860/)",
"Enter URL (e.g. http://localhost:11434)": "Masukkan URL (mis. http://localhost:11434)",
- "Enter value": "",
- "Enter value (true/false)": "",
- "Enter Yacy Password": "",
- "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "",
- "Enter Yacy Username": "",
- "Enter Yandex Web Search API Key": "",
- "Enter Yandex Web Search URL": "",
- "Enter You.com API Key": "",
+ "Enter value": "Masukkan nilai",
+ "Enter value (true/false)": "Masukkan nilai (true/false)",
+ "Enter Yacy Password": "Masukkan Kata Sandi Yacy",
+ "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "Masukkan URL Yacy (contoh: http://yacy.example.com:8090)",
+ "Enter Yacy Username": "Masukkan Nama Pengguna Yacy",
+ "Enter Yandex Web Search API Key": "Masukkan Kunci API Pencarian Web Yandex",
+ "Enter Yandex Web Search URL": "Masukkan URL Pencarian Web Yandex",
+ "Enter You.com API Key": "Masukkan Kunci API You.com",
"Enter your code here...": "Masukkan kode Anda di sini...",
- "Enter your current password": "",
+ "Enter your current password": "Masukkan kata sandi Anda saat ini",
"Enter Your Email": "Masukkan Email Anda",
"Enter Your Full Name": "Masukkan Nama Lengkap Anda",
- "Enter your gender": "",
- "Enter your message": "",
- "Enter your name": "",
- "Enter Your Name": "",
- "Enter your new password": "",
+ "Enter your gender": "Masukkan jenis kelamin Anda",
+ "Enter your message": "Masukkan pesan Anda",
+ "Enter your name": "Masukkan nama Anda",
+ "Enter Your Name": "Masukkan Nama Anda",
+ "Enter your new password": "Masukkan kata sandi baru Anda",
"Enter Your Password": "Masukkan Kata Sandi Anda",
"Enter Your Role": "Masukkan Peran Anda",
- "Enter Your Username": "",
- "Enterprise licenses also include dedicated support, customization options, and more, at a fraction of the cost of building and maintaining this stack internally.": "",
- "Enterprise licensing": "",
- "Entra ID": "",
- "Environment Variables": "",
- "Ephemeral": "",
+ "Enter Your Username": "Masukkan Nama Pengguna Anda",
+ "Enterprise licenses also include dedicated support, customization options, and more, at a fraction of the cost of building and maintaining this stack internally.": "Lisensi Enterprise juga mencakup dukungan khusus, opsi kustomisasi, dan lainnya, dengan sebagian kecil biaya dari membangun dan mengelola tumpukan ini secara internal.",
+ "Enterprise licensing": "Lisensi Enterprise",
+ "Entra ID": "Entra ID",
+ "Environment Variables": "Variabel Lingkungan",
+ "Ephemeral": "Sementara",
"Error": "Kesalahan",
- "ERROR": "",
- "Error accessing directory": "",
- "Error accessing Google Drive: {{error}}": "",
- "Error accessing media devices.": "",
- "Error deleting model: {{error}}": "",
- "Error previewing file: {{error}}": "",
- "Error starting recording.": "",
- "Error unloading model: {{error}}": "",
- "Error uploading file: {{error}}": "",
- "Error: A model with the ID '{{modelId}}' already exists. Please select a different ID to proceed.": "",
- "Error: Model ID cannot be empty. Please enter a valid ID to proceed.": "",
- "Evaluations": "",
- "Event": "",
- "Event created": "",
- "Event deleted": "",
- "Event names may change as Open WebUI evolves. Use broad patterns like user.* for integrations that should continue across new related events.": "",
- "Event title": "",
- "Event updated": "",
+ "ERROR": "GALAT",
+ "Error accessing directory": "Galat saat mengakses direktori",
+ "Error accessing Google Drive: {{error}}": "Galat saat mengakses Google Drive: {{error}}",
+ "Error accessing media devices.": "Galat saat mengakses perangkat media.",
+ "Error deleting model: {{error}}": "Galat saat menghapus model: {{error}}",
+ "Error previewing file: {{error}}": "Galat saat mempratinjau berkas: {{error}}",
+ "Error starting recording.": "Galat saat memulai perekaman.",
+ "Error unloading model: {{error}}": "Galat saat melepas model: {{error}}",
+ "Error uploading file: {{error}}": "Galat saat mengunggah berkas: {{error}}",
+ "Error: A model with the ID '{{modelId}}' already exists. Please select a different ID to proceed.": "Galat: Model dengan ID '{{modelId}}' sudah ada. Silakan pilih ID lain untuk melanjutkan.",
+ "Error: Model ID cannot be empty. Please enter a valid ID to proceed.": "Galat: ID model tidak boleh kosong. Silakan masukkan ID yang valid untuk melanjutkan.",
+ "Evaluations": "Evaluasi",
+ "Event": "Peristiwa",
+ "Event created": "Peristiwa dibuat",
+ "Event deleted": "Peristiwa dihapus",
+ "Event names may change as Open WebUI evolves. Use broad patterns like user.* for integrations that should continue across new related events.": "Nama peristiwa dapat berubah seiring perkembangan Open WebUI. Gunakan pola luas seperti user.* untuk integrasi yang harus tetap berjalan di berbagai peristiwa terkait yang baru.",
+ "Event title": "Judul peristiwa",
+ "Event updated": "Peristiwa diperbarui",
"Every {{count}} hours_one": "Setiap {{count}} jam",
- "Every {{count}} hours_other": "",
+ "Every {{count}} hours_other": "Setiap {{count}} jam",
"Every {{count}} minutes_one": "Setiap {{count}} menit",
- "Every {{count}} minutes_other": "",
- "Every minute": "",
- "Example": "",
- "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "",
- "Example: ALL": "",
- "Example: mail": "",
- "Example: ou=users,dc=foo,dc=example": "",
- "Example: sAMAccountName or uid or userPrincipalName": "",
- "Exceeded the number of seats in your license. Please contact support to increase the number of seats.": "",
- "Exclude": "",
- "Execute code for analysis": "",
- "Executing {{NAME}}...": "",
- "Expand": "",
- "Expand input": "",
- "Experience": "",
+ "Every {{count}} minutes_other": "Setiap {{count}} menit",
+ "Every minute": "Setiap menit",
+ "Example": "Contoh",
+ "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "Contoh: (&(objectClass=inetOrgPerson)(uid=%s))",
+ "Example: ALL": "Contoh: ALL",
+ "Example: mail": "Contoh: mail",
+ "Example: ou=users,dc=foo,dc=example": "Contoh: ou=users,dc=foo,dc=example",
+ "Example: sAMAccountName or uid or userPrincipalName": "Contoh: sAMAccountName atau uid atau userPrincipalName",
+ "Exceeded the number of seats in your license. Please contact support to increase the number of seats.": "Melebihi jumlah kursi pada lisensi Anda. Silakan hubungi dukungan untuk menambah jumlah kursi.",
+ "Exclude": "Kecualikan",
+ "Execute code for analysis": "Jalankan kode untuk analisis",
+ "Executing {{NAME}}...": "Menjalankan {{NAME}}...",
+ "Expand": "Perluas",
+ "Expand input": "Perluas input",
+ "Experience": "Pengalaman",
"Experimental": "Percobaan",
- "Explain": "",
- "Explored": "",
- "Exploring": "",
+ "Explain": "Jelaskan",
+ "Explain options trading": "Jelaskan perdagangan opsi",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "Jelaskan perdagangan opsi dengan istilah sederhana jika saya terbiasa dengan jual beli saham.",
+ "Explored": "Dijelajahi",
+ "Exploring": "Menjelajahi",
"Export": "Ekspor",
- "Export as CSV": "",
- "Export as JSON": "",
+ "Export as CSV": "Ekspor sebagai CSV",
+ "Export as JSON": "Ekspor sebagai JSON",
"Export chat (.json)": "Ekspor obrolan (.json)",
- "Export JSON": "",
- "Export Models": "",
- "Export Prompts": "",
- "Export Skills": "",
- "Export to CSV": "",
- "Export Tools": "",
- "External": "",
- "External connection not found.": "",
- "External Document Loader URL required.": "",
- "External Knowledge Source": "",
- "External vectors must be generated with the same embedding model configured in Open WebUI.": "",
- "Extract action items from this note.": "",
- "Extracted text lines": "",
- "Extracting text and comparing…": "",
- "Failed to add file.": "",
- "Failed to add members": "",
- "Failed to archive chat.": "",
- "Failed to clear status": "",
- "Failed to compare files.": "",
- "Failed to connect to {{URL}} OpenAPI tool server": "",
- "Failed to connect to {{URL}} terminal server": "",
- "Failed to copy link": "",
+ "Export JSON": "Ekspor JSON",
+ "Export Models": "Ekspor Model",
+ "Export Prompts": "Ekspor Prompt",
+ "Export Skills": "Ekspor Keahlian",
+ "Export to CSV": "Ekspor ke CSV",
+ "Export Tools": "Ekspor Alat",
+ "External": "Eksternal",
+ "External connection not found.": "Koneksi eksternal tidak ditemukan.",
+ "External Document Loader URL required.": "URL Pemuat Dokumen Eksternal diperlukan.",
+ "External Knowledge Source": "Sumber Pengetahuan Eksternal",
+ "External vectors must be generated with the same embedding model configured in Open WebUI.": "Vektor eksternal harus dibuat dengan model embedding yang sama yang dikonfigurasikan di Open WebUI.",
+ "Extract action items from this note.": "Ekstrak butir tindakan dari catatan ini.",
+ "Extracted text lines": "Baris teks yang diekstrak",
+ "Extracting text and comparing…": "Mengekstrak teks dan membandingkan…",
+ "Failed to add file.": "Gagal menambahkan berkas.",
+ "Failed to add members": "Gagal menambahkan anggota",
+ "Failed to archive chat.": "Gagal mengarsipkan obrolan.",
+ "Failed to clear status": "Gagal menghapus status",
+ "Failed to compare files.": "Gagal membandingkan berkas.",
+ "Failed to connect to {{URL}} OpenAPI tool server": "Gagal terhubung ke server alat OpenAPI {{URL}}",
+ "Failed to connect to {{URL}} terminal server": "Gagal terhubung ke server terminal {{URL}}",
+ "Failed to copy link": "Gagal menyalin tautan",
"Failed to create API Key.": "Gagal membuat API Key.",
- "Failed to create chat": "",
- "Failed to delete calendar": "",
- "Failed to delete note": "",
- "Failed to delete webhook": "",
- "Failed to disconnect": "",
- "Failed to download image": "",
- "Failed to extract content from the file: {{error}}": "",
- "Failed to extract content from the file.": "",
- "Failed to fetch models": "",
- "Failed to fork chat": "",
- "Failed to generate title": "",
- "Failed to import models": "",
- "Failed to load chat": "",
- "Failed to load chat preview": "",
- "Failed to load DOCX file. Please try downloading it instead.": "",
- "Failed to load Excel/CSV file. Please try downloading it instead.": "",
- "Failed to load file content.": "",
- "Failed to load folder": "",
- "Failed to load Interface settings": "",
- "Failed to load policy: {{error}}": "",
- "Failed to load PPTX file. Please try downloading it instead.": "",
- "Failed to load usage": "",
- "Failed to load valves": "",
- "Failed to move chat": "",
- "Failed to open database": "",
- "Failed to process URL: {{url}}": "",
+ "Failed to create chat": "Gagal membuat obrolan",
+ "Failed to delete calendar": "Gagal menghapus kalender",
+ "Failed to delete note": "Gagal menghapus catatan",
+ "Failed to delete webhook": "Gagal menghapus webhook",
+ "Failed to disconnect": "Gagal memutuskan koneksi",
+ "Failed to download image": "Gagal mengunduh gambar",
+ "Failed to extract content from the file: {{error}}": "Gagal mengekstrak konten dari berkas: {{error}}",
+ "Failed to extract content from the file.": "Gagal mengekstrak konten dari berkas.",
+ "Failed to fetch models": "Gagal mengambil model",
+ "Failed to fork chat": "Gagal mencabangkan obrolan",
+ "Failed to generate title": "Gagal membuat judul",
+ "Failed to import models": "Gagal mengimpor model",
+ "Failed to load chat": "Gagal memuat obrolan",
+ "Failed to load chat preview": "Gagal memuat pratinjau obrolan",
+ "Failed to load DOCX file. Please try downloading it instead.": "Gagal memuat berkas DOCX. Silakan coba unduh berkas.",
+ "Failed to load Excel/CSV file. Please try downloading it instead.": "Gagal memuat berkas Excel/CSV. Silakan coba unduh berkas.",
+ "Failed to load file content.": "Gagal memuat isi berkas.",
+ "Failed to load folder": "Gagal memuat folder",
+ "Failed to load Interface settings": "Gagal memuat pengaturan antarmuka",
+ "Failed to load policy: {{error}}": "Gagal memuat kebijakan: {{error}}",
+ "Failed to load PPTX file. Please try downloading it instead.": "Gagal memuat berkas PPTX. Silakan coba unduh sebagai gantinya.",
+ "Failed to load usage": "Gagal memuat penggunaan",
+ "Failed to load valves": "Gagal memuat katup",
+ "Failed to move chat": "Gagal memindahkan obrolan",
+ "Failed to open database": "Gagal membuka basis data",
+ "Failed to process URL: {{url}}": "Gagal memproses URL: {{url}}",
"Failed to read clipboard contents": "Gagal membaca konten papan klip",
- "Failed to refresh terminals: {{error}}": "",
- "Failed to remove member": "",
- "Failed to render diagram": "",
- "Failed to render visualization": "",
- "Failed to save chat variables": "",
- "Failed to save connections": "",
+ "Failed to refresh terminals: {{error}}": "Gagal menyegarkan terminal: {{error}}",
+ "Failed to remove member": "Gagal menghapus anggota",
+ "Failed to render diagram": "Gagal merender diagram",
+ "Failed to render visualization": "Gagal merender visualisasi",
+ "Failed to save chat variables": "Gagal menyimpan variabel obrolan",
+ "Failed to save connections": "Gagal menyimpan koneksi",
"Failed to save conversation": "Gagal menyimpan percakapan",
- "Failed to save model": "",
- "Failed to save models configuration": "",
- "Failed to save policy: {{error}}": "",
- "Failed to save terminal servers": "",
- "Failed to save webhook": "",
- "Failed to search files": "",
- "Failed to unshare chat.": "",
+ "Failed to save model": "Gagal menyimpan model",
+ "Failed to save models configuration": "Gagal menyimpan konfigurasi model",
+ "Failed to save policy: {{error}}": "Gagal menyimpan kebijakan: {{error}}",
+ "Failed to save terminal servers": "Gagal menyimpan server terminal",
+ "Failed to save webhook": "Gagal menyimpan webhook",
+ "Failed to search files": "Gagal mencari berkas",
+ "Failed to unshare chat.": "Gagal membatalkan pembagian obrolan.",
"Failed to update settings": "Gagal memperbarui pengaturan",
- "Failed to update status": "",
- "Failed to update webhook": "",
- "Failed to upload background image.": "",
- "Failed to upload file.": "",
- "Features Permissions": "",
+ "Failed to update status": "Gagal memperbarui status",
+ "Failed to update webhook": "Gagal memperbarui webhook",
+ "Failed to upload background image.": "Gagal mengunggah gambar latar belakang.",
+ "Failed to upload file.": "Gagal mengunggah berkas.",
+ "Features Permissions": "Izin Fitur",
"February": "Februari",
- "Feedback": "",
- "Feedback Activity": "",
- "Feedback deleted successfully": "",
- "Feedback Details": "",
+ "Feedback": "Umpan Balik",
+ "Feedback Activity": "Aktivitas Umpan Balik",
+ "Feedback deleted successfully": "Umpan balik berhasil dihapus",
+ "Feedback Details": "Detail Umpan Balik",
"Feel free to add specific details": "Jangan ragu untuk menambahkan detail spesifik",
- "Female": "",
- "Fetch page contents without proxy environment variables.": "",
+ "Female": "Perempuan",
+ "Fetch page contents without proxy environment variables.": "Ambil konten halaman tanpa variabel lingkungan proksi.",
"File": "Berkas",
- "File added successfully.": "",
- "File browser": "",
- "File content": "",
- "File content updated successfully.": "",
- "File deleted successfully.": "",
- "File differences": "",
+ "File added successfully.": "Berkas berhasil ditambahkan.",
+ "File browser": "Peramban berkas",
+ "File content": "Konten berkas",
+ "File content updated successfully.": "Konten berkas berhasil diperbarui.",
+ "File deleted successfully.": "Berkas berhasil dihapus.",
+ "File differences": "Perbedaan berkas",
"File Mode": "Mode File",
- "File moved.": "",
- "File name": "",
+ "File moved.": "Berkas berhasil dipindahkan.",
+ "File name": "Nama berkas",
"File not found.": "File tidak ditemukan.",
- "File removed successfully.": "",
- "File renamed.": "",
- "File size should not exceed {{maxSize}} MB.": "",
- "File uploaded successfully": "",
- "Filename": "",
- "Filename matches": "",
- "Files": "",
- "Filesystem": "",
- "Fill the required fields first.": "",
- "Fill the source fields and test query first.": "",
- "Filter": "",
+ "File removed successfully.": "Berkas berhasil dihapus.",
+ "File renamed.": "Nama berkas berhasil diubah.",
+ "File size should not exceed {{maxSize}} MB.": "Ukuran berkas tidak boleh melebihi {{maxSize}} MB.",
+ "File uploaded successfully": "Berkas berhasil diunggah",
+ "Filename": "Nama berkas",
+ "Filename matches": "Kecocokan nama berkas",
+ "Files": "Berkas",
+ "Filesystem": "Sistem berkas",
+ "Fill the required fields first.": "Isi kolom yang wajib diisi terlebih dahulu.",
+ "Fill the source fields and test query first.": "Isi kolom sumber dan kueri pengujian terlebih dahulu.",
+ "Filter": "Filter",
"Filter is now globally disabled": "Filter sekarang dinonaktifkan secara global",
"Filter is now globally enabled": "Filter sekarang diaktifkan secara global",
"Filters": "Filter",
"Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Pemalsuan sidik jari terdeteksi: Tidak dapat menggunakan inisial sebagai avatar. Default ke gambar profil default.",
- "Focus Chat Input": "",
- "Folder": "",
- "Folder Background Image": "",
- "Folder created successfully": "",
- "Folder deleted successfully": "",
- "Folder name": "",
- "Folder Name": "",
- "Folder name cannot be empty.": "",
- "Folder name updated successfully": "",
- "Folder options": "",
- "Folder updated successfully": "",
- "Folders": "",
- "Folders Sharing": "",
- "Follow up": "",
- "Follow up: {{question}}": "",
+ "Focus Chat Input": "Fokuskan Input Obrolan",
+ "Folder": "Folder",
+ "Folder Background Image": "Gambar Latar Belakang Folder",
+ "Folder created successfully": "Folder berhasil dibuat",
+ "Folder deleted successfully": "Folder berhasil dihapus",
+ "Folder name": "Nama folder",
+ "Folder Name": "Nama Folder",
+ "Folder name cannot be empty.": "Nama folder tidak boleh kosong.",
+ "Folder name updated successfully": "Nama folder berhasil diperbarui",
+ "Folder options": "Opsi folder",
+ "Folder updated successfully": "Folder berhasil diperbarui",
+ "Folders": "Folder",
+ "Folders Sharing": "Berbagi Folder",
+ "Follow up": "Tindak lanjut",
+ "Follow up: {{question}}": "Tindak lanjut: {{question}}",
"Followed instructions perfectly": "Mengikuti instruksi dengan sempurna",
- "for placeholders": "",
- "Fork": "",
- "Fork chat": "",
- "Fork the current chat branch into a new chat.": "",
- "Fork: fork the current chat branch into a new chat.": "",
- "Forking chat...": "",
+ "for placeholders": "untuk placeholder",
+ "for what to do with my kids' art": "tentang apa yang harus dilakukan dengan karya seni anak-anak saya",
+ "Fork": "Fork",
+ "Fork chat": "Fork obrolan",
+ "Fork the current chat branch into a new chat.": "Fork cabang obrolan saat ini ke obrolan baru.",
+ "Fork: fork the current chat branch into a new chat.": "Fork: fork cabang obrolan saat ini ke obrolan baru.",
+ "Forking chat...": "Membuat fork obrolan...",
"Form": "Formulir",
- "Format Markdown as you type and paste. Turn off to keep Markdown characters and paste plain text. Existing formatting is preserved.": "",
- "Formatting": "",
- "Formatting may be inconsistent from source.": "",
- "Forward": "",
- "Forward cookies": "",
- "Forward cookies from your Open WebUI request to this server.": "",
- "Forwards system user OAuth access token to authenticate": "",
- "Forwards system user session credentials to authenticate": "",
- "Fr_day_of_week": "",
- "from {{provider}}": "",
- "Full access": "",
+ "Format Markdown as you type and paste. Turn off to keep Markdown characters and paste plain text. Existing formatting is preserved.": "Format Markdown saat Anda mengetik dan menempel. Nonaktifkan untuk mempertahankan karakter Markdown dan menempel teks biasa. Pemformatan yang ada tetap dipertahankan.",
+ "Formatting": "Pemformatan",
+ "Formatting may be inconsistent from source.": "Pemformatan mungkin tidak konsisten dari sumber.",
+ "Forward": "Teruskan",
+ "Forward cookies": "Teruskan cookie",
+ "Forward cookies from your Open WebUI request to this server.": "Teruskan cookie dari permintaan Open WebUI Anda ke server ini.",
+ "Forwards system user OAuth access token to authenticate": "Meneruskan token akses OAuth pengguna sistem untuk mengautentikasi",
+ "Forwards system user session credentials to authenticate": "Meneruskan kredensial sesi pengguna sistem untuk mengautentikasi",
+ "Fr_day_of_week": "Jum",
+ "from {{provider}}": "dari {{provider}}",
+ "Full access": "Akses penuh",
"Function created successfully": "Fungsi berhasil dibuat",
"Function deleted successfully": "Fungsi berhasil dihapus",
- "Function Description": "",
- "Function ID": "",
- "Function imported successfully": "",
- "Function is now globally disabled": "",
- "Function is now globally enabled": "",
- "Function Menu": "",
- "Function Name": "",
- "Function Name Filter List": "",
- "Function starter": "",
+ "Function Description": "Deskripsi Fungsi",
+ "Function ID": "ID Fungsi",
+ "Function imported successfully": "Fungsi berhasil diimpor",
+ "Function is now globally disabled": "Fungsi sekarang dinonaktifkan secara global",
+ "Function is now globally enabled": "Fungsi sekarang diaktifkan secara global",
+ "Function Menu": "Menu Fungsi",
+ "Function Name": "Nama Fungsi",
+ "Function Name Filter List": "Daftar Filter Nama Fungsi",
+ "Function starter": "Starter fungsi",
"Function updated successfully": "Fungsi berhasil diperbarui",
"Functions": "Fungsi",
- "Functions allow arbitrary code execution.": "",
- "Functions can execute arbitrary code.": "",
+ "Functions allow arbitrary code execution.": "Fungsi memungkinkan eksekusi kode arbitrer.",
+ "Functions can execute arbitrary code.": "Fungsi dapat mengeksekusi kode arbitrer.",
"Functions imported successfully": "Fungsi berhasil diimpor",
- "Gemini": "",
- "Gemini API Key is required.": "",
+ "Gemini": "Gemini",
+ "Gemini API Key is required.": "Kunci API Gemini diperlukan.",
"General": "Umum",
- "Generate": "",
- "Generate an image": "",
- "Generate message pair": "",
- "Generate Message Pair": "",
- "Generated Image": "",
- "Generated images will appear here": "",
+ "Generate": "Hasilkan",
+ "Generate an image": "Buat gambar",
+ "Generate message pair": "Buat pasangan pesan",
+ "Generate Message Pair": "Buat Pasangan Pesan",
+ "Generated Image": "Gambar yang Dihasilkan",
+ "Generated images will appear here": "Gambar yang dibuat akan muncul di sini",
"Generating search query": "Membuat kueri penelusuran",
- "Generating...": "",
- "Get information on {{name}} in the UI": "",
- "Get started": "",
- "Get started with {{WEBUI_NAME}}": "",
+ "Generating...": "Membuat...",
+ "Get information on {{name}} in the UI": "Dapatkan informasi tentang {{name}} di UI",
+ "Get started": "Mulai",
+ "Get started with {{WEBUI_NAME}}": "Mulai dengan {{WEBUI_NAME}}",
+ "Give me ideas": "Beri saya ide",
+ "give me tips": "beri saya kiat",
"Global": "Global",
"Good Response": "Respons yang Baik",
- "Google": "",
- "Google Drive": "",
- "Gravatar": "",
- "Grid": "",
- "Grokipedia": "",
- "group": "",
- "Group": "",
- "Group Channel": "",
- "Group created successfully": "",
- "Group deleted successfully": "",
- "Group Description": "",
- "Group Name": "",
- "Group updated successfully": "",
- "groups": "",
- "Groups": "",
- "H1": "",
- "H2": "",
- "H3": "",
- "Headers": "",
- "Headers must be a valid JSON object": "",
- "Height": "",
+ "Google": "Google",
+ "Google Drive": "Google Drive",
+ "Gravatar": "Gravatar",
+ "Grid": "Kisi",
+ "Grokipedia": "Grokipedia",
+ "group": "grup",
+ "Group": "Grup",
+ "Group Channel": "Saluran Grup",
+ "Group created successfully": "Grup berhasil dibuat",
+ "Group deleted successfully": "Grup berhasil dihapus",
+ "Group Description": "Deskripsi Grup",
+ "Group Name": "Nama Grup",
+ "Group updated successfully": "Grup berhasil diperbarui",
+ "groups": "grup",
+ "Groups": "Grup",
+ "H1": "H1",
+ "H2": "H2",
+ "H3": "H3",
+ "Headers": "Header",
+ "Headers must be a valid JSON object": "Header harus berupa objek JSON yang valid",
+ "Height": "Tinggi",
"Hello, {{name}}": "Halo, {{name}}",
"Help": "Bantuan",
- "Help the community discover great models": "",
- "Help us translate Open WebUI!": "",
- "Hex Color": "",
- "Hex Color - Leave empty for default color": "",
- "Hidden": "",
+ "Help me study": "Bantu saya belajar",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "Bantu saya belajar kosakata: buat kalimat rumpang untuk saya lengkapi, dan saya akan mencoba memilih opsi yang tepat.",
+ "Help the community discover great models": "Bantu komunitas menemukan model hebat",
+ "Help us translate Open WebUI!": "Bantu kami menerjemahkan Open WebUI!",
+ "Hex Color": "Warna Hex",
+ "Hex Color - Leave empty for default color": "Warna Hex - Biarkan kosong untuk warna bawaan",
+ "Hidden": "Tersembunyi",
"Hide": "Sembunyikan",
- "Hide All": "",
- "Hide from Sidebar": "",
- "Hide Hidden Files": "",
- "Hide Model": "",
- "Hide whitespace": "",
- "High": "",
- "History": "",
- "Home": "",
- "Horizontal Layout": "",
- "Hourly": "",
- "Hourly Messages": "",
+ "Hide All": "Sembunyikan Semua",
+ "Hide from Sidebar": "Sembunyikan dari Bilah Sisi",
+ "Hide Hidden Files": "Sembunyikan Berkas Tersembunyi",
+ "Hide Model": "Sembunyikan Model",
+ "Hide whitespace": "Sembunyikan spasi kosong",
+ "High": "Tinggi",
+ "History": "Riwayat",
+ "Home": "Beranda",
+ "Horizontal Layout": "Tata Letak Horizontal",
+ "Hourly": "Per Jam",
+ "Hourly Messages": "Pesan Per Jam",
"How can I help you today?": "Ada yang bisa saya bantu hari ini?",
- "How would you rate this response?": "",
- "HTML": "",
- "HTML Preview": "",
- "http://localhost:8000": "",
- "https://mineru.net/api/v4": "",
- "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 cannot contain \":\" or \"|\" characters": "",
- "ID copied to clipboard": "",
- "Identity audit": "",
- "Idle only": "",
- "Idle Timeout": "",
- "Image": "",
- "Image Generation": "",
- "Image Max Compression Size": "",
- "Image Max Compression Size height": "",
- "Image Max Compression Size width": "",
- "Image unavailable": "",
- "image/*, video/*": "",
- "Images": "",
- "Import": "",
- "Import CSV": "",
- "Import From Link": "",
- "Import JSON": "",
- "Import Models": "",
- "Import Prompts": "",
- "Import Skills": "",
- "Import successful": "",
- "Import Tools": "",
- "Import txt/md": "",
- "Imported automations successfully": "",
- "Imported notes successfully": "",
- "Importing...": "",
- "Inactive": "",
- "Include": "",
- "Influences how quickly the algorithm responds to feedback from the generated text. A lower learning rate will result in slower adjustments, while a higher learning rate will make the algorithm more responsive.": "",
+ "How would you rate this response?": "Bagaimana Anda menilai respons ini?",
+ "HTML": "HTML",
+ "HTML Preview": "Pratinjau HTML",
+ "http://localhost:8000": "http://localhost:8000",
+ "https://mineru.net/api/v4": "https://mineru.net/api/v4",
+ "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.": "Saya menyatakan bahwa saya telah membaca dan memahami konsekuensi dari tindakan saya. Saya menyadari risiko yang terkait dengan mengeksekusi kode arbitrer dan telah memverifikasi keandalan sumbernya.",
+ "ID": "ID",
+ "ID cannot contain \":\" or \"|\" characters": "ID tidak boleh memuat karakter \":\" atau \"|\"",
+ "ID copied to clipboard": "ID disalin ke papan klip",
+ "Identity audit": "Audit identitas",
+ "Idle only": "Hanya saat tidak aktif",
+ "Idle Timeout": "Batas Waktu Tidak Aktif",
+ "if I'm familiar with buying and selling stocks": "jika saya terbiasa jual beli saham",
+ "Image": "Gambar",
+ "Image Generation": "Pembuatan Gambar",
+ "Image Max Compression Size": "Ukuran Kompresi Maksimum Gambar",
+ "Image Max Compression Size height": "Tinggi Ukuran Kompresi Maksimum Gambar",
+ "Image Max Compression Size width": "Lebar Ukuran Kompresi Maksimum Gambar",
+ "Image unavailable": "Gambar tidak tersedia",
+ "image/*, video/*": "image/*, video/*",
+ "Images": "Gambar",
+ "Import": "Impor",
+ "Import CSV": "Impor CSV",
+ "Import From Link": "Impor Dari Tautan",
+ "Import JSON": "Impor JSON",
+ "Import Models": "Impor Model",
+ "Import Prompts": "Impor Prompt",
+ "Import Skills": "Impor Keterampilan",
+ "Import successful": "Impor berhasil",
+ "Import Tools": "Impor Alat",
+ "Import txt/md": "Impor txt/md",
+ "Imported automations successfully": "Otomatisasi berhasil diimpor",
+ "Imported notes successfully": "Catatan berhasil diimpor",
+ "Importing...": "Mengimpor...",
+ "Inactive": "Tidak Aktif",
+ "Include": "Sertakan",
+ "Influences how quickly the algorithm responds to feedback from the generated text. A lower learning rate will result in slower adjustments, while a higher learning rate will make the algorithm more responsive.": "Memengaruhi seberapa cepat algoritma merespons umpan balik dari teks yang dihasilkan. Learning rate yang lebih rendah akan menghasilkan penyesuaian yang lebih lambat, sedangkan learning rate yang lebih tinggi membuat algoritma lebih responsif.",
"Info": "Info",
- "Initials": "",
- "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "",
- "Inline": "",
- "Input": "",
- "Input Key (e.g. text, unet_name, steps)": "",
- "Input needed": "",
- "Input Variables": "",
- "Insert": "",
- "Insert into note": "",
- "Instructions": "",
- "Integrations": "",
- "Interface Settings Access": "",
- "Invalid background image.": "",
- "Invalid file format.": "",
- "Invalid format.": "",
- "Invalid JSON": "",
- "Invalid JSON file": "",
- "Invalid JSON format": "",
- "Invalid JSON format for ComfyUI Edit Workflow.": "",
- "Invalid JSON format for ComfyUI Workflow.": "",
- "Invalid JSON format for Parameters": "",
- "Invalid JSON format in {{NAME}}": "",
- "Invalid JSON format in Additional Config": "",
- "Invalid JSON format in MinerU Parameters": "",
- "is typing...": "",
- "Italic": "",
+ "Initials": "Inisial",
+ "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "Sisipkan seluruh konten sebagai konteks untuk pemrosesan menyeluruh, ini disarankan untuk kueri kompleks.",
+ "Inline": "Inline",
+ "Input": "Input",
+ "Input Key (e.g. text, unet_name, steps)": "Kunci Input (cth. text, unet_name, steps)",
+ "Input needed": "Input diperlukan",
+ "Input Variables": "Variabel Input",
+ "Insert into note": "Sisipkan ke catatan",
+ "Instructions": "Instruksi",
+ "Integrations": "Integrasi",
+ "Interface Settings Access": "Akses Pengaturan Antarmuka",
+ "Invalid background image.": "Gambar latar tidak valid.",
+ "Invalid file format.": "Format berkas tidak valid.",
+ "Invalid format.": "Format tidak valid.",
+ "Invalid JSON": "JSON tidak valid",
+ "Invalid JSON file": "Berkas JSON tidak valid",
+ "Invalid JSON format": "Format JSON tidak valid",
+ "Invalid JSON format for ComfyUI Edit Workflow.": "Format JSON tidak valid untuk Alur Kerja Edit ComfyUI.",
+ "Invalid JSON format for ComfyUI Workflow.": "Format JSON tidak valid untuk Alur Kerja ComfyUI.",
+ "Invalid JSON format for Parameters": "Format JSON tidak valid untuk Parameter",
+ "Invalid JSON format in {{NAME}}": "Format JSON tidak valid pada {{NAME}}",
+ "Invalid JSON format in Additional Config": "Format JSON tidak valid pada Konfigurasi Tambahan",
+ "Invalid JSON format in MinerU Parameters": "Format JSON tidak valid pada Parameter MinerU",
+ "is typing...": "sedang mengetik...",
+ "Italic": "Miring",
"January": "Januari",
"join our Discord for help.": "bergabunglah dengan Discord kami untuk mendapatkan bantuan.",
"JSON": "JSON",
- "JSON Base64": "",
- "JSON parse error: {{error}}": "",
+ "JSON Base64": "JSON Base64",
+ "JSON parse error: {{error}}": "Kesalahan penguraian JSON: {{error}}",
"JSON Preview": "Pratinjau JSON",
- "JSON Spec": "",
+ "JSON Spec": "Spesifikasi JSON",
"July": "Juli",
"June": "Juni",
- "Keep current webhook URL": "",
- "Keep in Sidebar": "",
- "Key": "",
- "Key is required": "",
- "key_name": "",
- "Keyboard": "",
+ "Keep current webhook URL": "Pertahankan URL webhook saat ini",
+ "Keep in Sidebar": "Pertahankan di Bilah Sisi",
+ "Key": "Kunci",
+ "Key is required": "Kunci wajib diisi",
+ "key_name": "key_name",
+ "Keyboard": "Papan Ketik",
"Knowledge": "Pengetahuan",
- "Knowledge Access": "",
- "Knowledge Base": "",
- "Knowledge base has been reset": "",
- "Knowledge base not found.": "",
- "Knowledge created successfully.": "",
- "Knowledge deleted successfully.": "",
- "Knowledge Description": "",
- "Knowledge exported successfully": "",
- "Knowledge Name": "",
- "Knowledge Public Sharing": "",
- "Knowledge Sharing": "",
- "Knowledge source created.": "",
- "Knowledge source updated.": "",
- "Knowledge updated successfully": "",
- "Kokoro.js (Browser)": "",
- "Last 24 hours": "",
- "Last 30 days": "",
- "Last 7 days": "",
- "Last 90 days": "",
+ "Knowledge Access": "Akses Pengetahuan",
+ "Knowledge Base": "Basis Pengetahuan",
+ "Knowledge base has been reset": "Basis pengetahuan telah disetel ulang",
+ "Knowledge base not found.": "Basis pengetahuan tidak ditemukan.",
+ "Knowledge created successfully.": "Pengetahuan berhasil dibuat.",
+ "Knowledge deleted successfully.": "Pengetahuan berhasil dihapus.",
+ "Knowledge Description": "Deskripsi Pengetahuan",
+ "Knowledge exported successfully": "Pengetahuan berhasil diekspor",
+ "Knowledge Name": "Nama Pengetahuan",
+ "Knowledge Public Sharing": "Berbagi Pengetahuan Publik",
+ "Knowledge Sharing": "Berbagi Pengetahuan",
+ "Knowledge source created.": "Sumber pengetahuan dibuat.",
+ "Knowledge source updated.": "Sumber pengetahuan diperbarui.",
+ "Knowledge updated successfully": "Pengetahuan berhasil diperbarui",
+ "Kokoro.js (Browser)": "Kokoro.js (Peramban)",
+ "Last 24 hours": "24 jam terakhir",
+ "Last 30 days": "30 hari terakhir",
+ "Last 7 days": "7 hari terakhir",
+ "Last 90 days": "90 hari terakhir",
"Last Active": "Terakhir Aktif",
"Last Modified": "Terakhir Dimodifikasi",
- "Last reply": "",
- "Last run": "",
- "Leaderboard": "",
- "Learn More": "",
- "Learn more about Open Terminal": "",
- "Learn more about OpenAPI tool servers.": "",
- "Learn more about Voxtral transcription.": "",
- "Leave a public review for {{modelName}}": "",
- "Leave empty for no compression": "",
- "Leave empty for unlimited": "",
- "Leave empty to include all models from \"{{url}}\" endpoint": "",
- "Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
- "Leave empty to include all models from \"{{url}}/models\" endpoint": "",
- "Leave empty to include all models or select specific models": "",
- "Leave empty to use first admin user": "",
- "Leave empty to use the default config, or enter a valid json (see https://yandex.cloud/en/docs/search-api/api-ref/WebSearch/search#yandex.cloud.searchapi.v2.WebSearchRequest)": "",
- "Leave empty to use the default prompt, or enter a custom prompt": "",
- "Legacy": "",
- "lexical": "",
- "License Error": "",
- "license purchased by": "",
- "Lifecycle JSON": "",
- "Lifetime tokens": "",
- "Lift List": "",
+ "Last reply": "Balasan terakhir",
+ "Last run": "Terakhir dijalankan",
+ "Leaderboard": "Papan Peringkat",
+ "Learn More": "Pelajari Lebih Lanjut",
+ "Learn more about Open Terminal": "Pelajari lebih lanjut tentang Open Terminal",
+ "Learn more about OpenAPI tool servers.": "Pelajari lebih lanjut tentang server alat OpenAPI.",
+ "Learn more about Voxtral transcription.": "Pelajari lebih lanjut tentang transkripsi Voxtral.",
+ "Leave a public review for {{modelName}}": "Tinggalkan ulasan publik untuk {{modelName}}",
+ "Leave empty for no compression": "Biarkan kosong untuk tanpa kompresi",
+ "Leave empty for unlimited": "Biarkan kosong untuk tanpa batas",
+ "Leave empty to include all models from \"{{url}}\" endpoint": "Biarkan kosong untuk menyertakan semua model dari endpoint \"{{url}}\"",
+ "Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "Biarkan kosong untuk menyertakan semua model dari endpoint \"{{url}}/api/tags\"",
+ "Leave empty to include all models from \"{{url}}/models\" endpoint": "Biarkan kosong untuk menyertakan semua model dari endpoint \"{{url}}/models\"",
+ "Leave empty to include all models or select specific models": "Biarkan kosong untuk menyertakan semua model atau pilih model tertentu",
+ "Leave empty to use first admin user": "Biarkan kosong untuk menggunakan pengguna admin pertama",
+ "Leave empty to use the default config, or enter a valid json (see https://yandex.cloud/en/docs/search-api/api-ref/WebSearch/search#yandex.cloud.searchapi.v2.WebSearchRequest)": "Biarkan kosong untuk menggunakan konfigurasi default, atau masukkan JSON yang valid (lihat https://yandex.cloud/en/docs/search-api/api-ref/WebSearch/search#yandex.cloud.searchapi.v2.WebSearchRequest)",
+ "Leave empty to use the default prompt, or enter a custom prompt": "Biarkan kosong untuk menggunakan prompt default, atau masukkan prompt kustom",
+ "Legacy": "Warisan",
+ "lexical": "leksikal",
+ "License Error": "Kesalahan Lisensi",
+ "license purchased by": "lisensi dibeli oleh",
+ "Lifecycle JSON": "JSON Siklus Hidup",
+ "Lifetime tokens": "Token seumur hidup",
+ "Lift List": "Daftar Angkat",
"Light": "Cahaya",
- "List": "",
+ "List": "Daftar",
"Listening...": "Mendengarkan",
- "LiteLLM": "",
- "Live": "",
- "llama.cpp": "",
+ "LiteLLM": "LiteLLM",
+ "Live": "Langsung",
+ "llama.cpp": "llama.cpp",
"LLMs can make mistakes. Verify important information.": "LLM dapat membuat kesalahan. Verifikasi informasi penting.",
- "LM Studio": "",
- "Load Model": "",
- "Loaded": "",
- "Loading": "",
- "Loading Kokoro.js...": "",
- "Loading policy...": "",
- "Loading release notes...": "",
+ "LM Studio": "LM Studio",
+ "Load Model": "Muat Model",
+ "Loaded": "Dimuat",
+ "Loading": "Memuat",
+ "Loading Kokoro.js...": "Memuat Kokoro.js...",
+ "Loading policy...": "Memuat kebijakan...",
+ "Loading release notes...": "Memuat catatan rilis...",
"Loading...": "Memuat...",
- "local": "",
- "Local": "",
- "Location": "",
- "Location access not allowed": "",
- "Longest active chat": "",
- "Longest streak": "",
- "Lost": "",
- "Low": "",
+ "local": "lokal",
+ "Local": "Lokal",
+ "Location": "Lokasi",
+ "Location access not allowed": "Akses lokasi tidak diizinkan",
+ "Longest active chat": "Obrolan aktif terlama",
+ "Longest streak": "Runtutan terpanjang",
+ "Lost": "Hilang",
+ "Low": "Rendah",
"LTR": "LTR",
"Made by Open WebUI Community": "Dibuat oleh Komunitas OpenWebUI",
- "Make Default": "",
- "Make password visible in the user interface": "",
- "Make Private": "",
- "Make Public": "",
- "Male": "",
+ "Make Default": "Jadikan Default",
+ "Make password visible in the user interface": "Tampilkan kata sandi di antarmuka pengguna",
+ "Make Private": "Jadikan Pribadi",
+ "Make Public": "Jadikan Publik",
+ "Male": "Laki-laki",
"Manage": "Mengelola",
- "Manage Connections": "",
- "Manage Models": "",
- "Manage Ollama": "",
- "Mapped Source": "",
+ "Manage Connections": "Kelola Koneksi",
+ "Manage Models": "Kelola Model",
+ "Manage Ollama": "Kelola Ollama",
+ "Mapped Source": "Sumber yang Dipetakan",
"March": "Maret",
- "Mark all as read": "",
- "Mark as unread": "",
- "Markdown": "",
- "Market": "",
- "Matching tabs: {{count}}_other": "",
- "Max Snippets": "",
- "Max tokens to retrieve (1024-32768, default 8192)": "",
- "Maximum extra snippets returned per result. Set to 0 to disable them.": "",
- "Maximum number of files per folder is {{max}}.": "",
+ "Mark all as read": "Tandai semua sebagai dibaca",
+ "Mark as unread": "Tandai sebagai belum dibaca",
+ "Markdown": "Markdown",
+ "Market": "Pasar",
+ "Matching tabs: {{count}}_one": "Tab yang cocok: {{count}}",
+ "Matching tabs: {{count}}_other": "Tab yang cocok: {{count}}",
+ "Max Snippets": "Cuplikan Maksimum",
+ "Max tokens to retrieve (1024-32768, default 8192)": "Token maksimum untuk diambil (1024-32768, default 8192)",
+ "Maximum extra snippets returned per result. Set to 0 to disable them.": "Jumlah cuplikan tambahan maksimum yang dikembalikan per hasil. Atur ke 0 untuk menonaktifkannya.",
+ "Maximum number of files per folder is {{max}}.": "Jumlah berkas maksimum per folder adalah {{max}}.",
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Maksimal 3 model dapat diunduh secara bersamaan. Silakan coba lagi nanti.",
"May": "Mei",
- "MBR": "",
- "MCP": "",
- "MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "",
- "Medium": "",
- "Member removed successfully": "",
- "members": "",
- "Members": "",
- "Members added successfully": "",
- "Memories": "",
+ "MBR": "MBR",
+ "MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "Dukungan MCP bersifat eksperimental dan spesifikasinya sering berubah, yang dapat menyebabkan ketidakcocokan. Dukungan spesifikasi OpenAPI dikelola langsung oleh tim Open WebUI, menjadikannya opsi yang lebih andal untuk kompatibilitas.",
+ "Medium": "Sedang",
+ "Member removed successfully": "Anggota berhasil dihapus",
+ "members": "anggota",
+ "Members": "Anggota",
+ "Members added successfully": "Anggota berhasil ditambahkan",
+ "Memories": "Memori",
"Memory": "Memori",
"Memory added successfully": "Memori berhasil ditambahkan",
"Memory cleared successfully": "Memori berhasil dihapus",
"Memory deleted successfully": "Memori berhasil dihapus",
"Memory updated successfully": "Memori berhasil diperbarui",
- "Merge Responses": "",
+ "Merge Responses": "Gabungkan Respons",
"Merged Response": "Tanggapan yang Digabungkan",
- "Message": "",
- "Message counts and response timestamps": "",
- "Message counts are based on assistant responses.": "",
- "Message rating should be enabled to use this feature": "",
- "Message text...": "",
- "messages": "",
- "Messages": "",
+ "Message": "Pesan",
+ "Message counts and response timestamps": "Jumlah pesan dan stempel waktu respons",
+ "Message counts are based on assistant responses.": "Jumlah pesan didasarkan pada respons asisten.",
+ "Message rating should be enabled to use this feature": "Penilaian pesan harus diaktifkan untuk menggunakan fitur ini",
+ "Message text...": "Teks pesan...",
+ "messages": "pesan",
+ "Messages": "Pesan",
"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Pesan yang Anda kirim setelah membuat tautan tidak akan dibagikan. Pengguna yang memiliki URL tersebut akan dapat melihat obrolan yang dibagikan.",
- "Metadata Field": "",
- "Microsoft OneDrive": "",
- "Microsoft OneDrive (personal)": "",
- "Microsoft OneDrive (work/school)": "",
- "min": "",
- "MinerU": "",
- "MinerU API Key required for Cloud API mode.": "",
- "Mistral OCR": "",
- "Mistral OCR API Key required.": "",
- "MistralAI": "",
- "Mo_day_of_week": "",
- "Model": "",
+ "Metadata Field": "Kolom Metadata",
+ "Microsoft OneDrive": "Microsoft OneDrive",
+ "Microsoft OneDrive (personal)": "Microsoft OneDrive (pribadi)",
+ "Microsoft OneDrive (work/school)": "Microsoft OneDrive (kantor/sekolah)",
+ "min": "mnt",
+ "MinerU": "MinerU",
+ "MinerU API Key required for Cloud API mode.": "Kunci API MinerU diperlukan untuk mode Cloud API.",
+ "Mistral OCR": "Mistral OCR",
+ "Mistral OCR API Key required.": "Kunci API Mistral OCR diperlukan.",
+ "MistralAI": "MistralAI",
+ "Mo_day_of_week": "Sen",
+ "Model": "Model",
"Model '{{modelName}}' has been successfully downloaded.": "Model '{{modelName}}' telah berhasil diunduh.",
"Model '{{modelTag}}' is already in queue for downloading.": "Model '{{modelTag}}' sudah berada dalam antrean untuk diunduh.",
- "Model {{modelName}} deleted successfully": "",
+ "Model {{modelName}} deleted successfully": "Model {{modelName}} berhasil dihapus",
"Model {{modelName}} is not vision capable": "Model {{modelName}} tidak dapat dilihat",
"Model {{name}} is now {{status}}": "Model {{name}} sekarang menjadi {{status}}",
- "Model {{name}} is now hidden": "",
- "Model {{name}} is now visible": "",
- "Model added to pinned models": "",
- "Model added to selected models": "",
+ "Model {{name}} is now hidden": "Model {{name}} sekarang disembunyikan",
+ "Model {{name}} is now visible": "Model {{name}} sekarang terlihat",
+ "Model added to pinned models": "Model ditambahkan ke model yang disematkan",
+ "Model added to selected models": "Model ditambahkan ke model yang dipilih",
"Model created successfully!": "Model berhasil dibuat!",
- "Model deleted successfully": "",
- "Model download started": "",
+ "Model deleted successfully": "Model berhasil dihapus",
+ "Model download started": "Pengunduhan model dimulai",
"Model filesystem path detected. Model shortname is required for update, cannot continue.": "Jalur sistem berkas model terdeteksi. Nama pendek model diperlukan untuk pembaruan, tidak dapat dilanjutkan.",
- "Model Filtering": "",
+ "Model Filtering": "Penyaringan Model",
"Model ID": "ID Model",
- "Model ID cannot contain whitespace.": "",
- "Model ID is already added": "",
- "Model ID is required.": "",
- "Model IDs": "",
- "Model is now private": "",
- "Model is now public": "",
- "Model list refreshed": "",
- "Model loaded successfully": "",
- "Model Name": "",
- "Model name already exists, please choose a different one": "",
- "Model Name is required.": "",
- "Model names and usage frequency": "",
- "Model not found": "",
+ "Model ID cannot contain whitespace.": "ID Model tidak boleh mengandung spasi.",
+ "Model ID is already added": "ID Model sudah ditambahkan",
+ "Model ID is required.": "ID Model diperlukan.",
+ "Model IDs": "ID Model",
+ "Model is now private": "Model sekarang bersifat privat",
+ "Model is now public": "Model sekarang bersifat publik",
+ "Model list refreshed": "Daftar model diperbarui",
+ "Model loaded successfully": "Model berhasil dimuat",
+ "Model Name": "Nama Model",
+ "Model name already exists, please choose a different one": "Nama model sudah ada, silakan pilih nama lain",
+ "Model Name is required.": "Nama Model diperlukan.",
+ "Model names and usage frequency": "Nama model dan frekuensi penggunaan",
+ "Model not found": "Model tidak ditemukan",
"Model not selected": "Model tidak dipilih",
- "Model order saved successfully": "",
+ "Model order saved successfully": "Urutan model berhasil disimpan",
"Model Params": "Parameter Model",
- "Model Permissions": "",
- "model profile": "",
- "Model providers": "",
- "Model removed from pinned models": "",
- "Model removed from selected models": "",
- "Model responses or outputs": "",
- "Model unloaded successfully": "",
+ "Model Permissions": "Izin Model",
+ "model profile": "profil model",
+ "Model providers": "Penyedia model",
+ "Model removed from pinned models": "Model dihapus dari model yang disematkan",
+ "Model removed from selected models": "Model dihapus dari model yang dipilih",
+ "Model responses or outputs": "Respons atau keluaran model",
+ "Model unloaded successfully": "Model berhasil dilepas",
"Model updated successfully": "Model berhasil diperbarui",
- "Model Usage": "",
- "Model: show or switch the current model.": "",
- "Model(s) do not support file upload": "",
+ "Model Usage": "Penggunaan Model",
+ "Model: show or switch the current model.": "Model: tampilkan atau beralih model saat ini.",
+ "Model(s) do not support file upload": "Model tidak mendukung unggah berkas",
"Modelfile Content": "Konten File Model",
- "modelfile profile": "",
+ "modelfile profile": "profil modelfile",
"Models": "Model",
- "Models Access": "",
- "Models configuration saved successfully": "",
- "Models imported successfully": "",
- "Models Public Sharing": "",
- "Models Sharing": "",
- "Modified": "",
- "Mojeek": "",
- "Monday – Friday": "",
- "Month": "",
- "Monthly": "",
+ "Models Access": "Akses Model",
+ "Models configuration saved successfully": "Konfigurasi model berhasil disimpan",
+ "Models imported successfully": "Model berhasil diimpor",
+ "Models Public Sharing": "Berbagi Model Publik",
+ "Models Sharing": "Berbagi Model",
+ "Modified": "Diubah",
+ "Mojeek": "Mojeek",
+ "Monday – Friday": "Senin – Jumat",
+ "Month": "Bulan",
+ "Monthly": "Bulanan",
"More": "Lainnya",
- "More Concise": "",
- "More options": "",
- "More Options": "",
- "Move": "",
- "Moved {{name}}": "",
- "Multipart Upload": "",
- "Mute": "",
- "Muted": "",
- "My Terminal": "",
+ "More Concise": "Lebih Ringkas",
+ "More options": "Opsi lainnya",
+ "More Options": "Opsi Lainnya",
+ "Move": "Pindahkan",
+ "Moved {{name}}": "{{name}} dipindahkan",
+ "Multipart Upload": "Unggah Multipart",
+ "Mute": "Bisukan",
+ "Muted": "Dibisukan",
+ "My Terminal": "Terminal Saya",
"Name": "Nama",
- "Name and description are required": "",
- "Name and ID are required, please fill them out": "",
- "Name is required": "",
- "Name your knowledge base": "",
- "Name, prompt, and model are required": "",
- "Native": "",
- "Navigate to Next Chat": "",
- "Navigate to Previous Chat": "",
- "Never": "",
- "New": "",
- "New Button": "",
- "New calendar": "",
- "New Calendar": "",
- "New chat": "",
+ "Name and description are required": "Nama dan deskripsi wajib diisi",
+ "Name and ID are required, please fill them out": "Nama dan ID wajib diisi, silakan lengkapi",
+ "Name is required": "Nama wajib diisi",
+ "Name your knowledge base": "Beri nama basis pengetahuan Anda",
+ "Name, prompt, and model are required": "Nama, prompt, dan model wajib diisi",
+ "Native": "Bawaan",
+ "Navigate to Next Chat": "Beralih ke Obrolan Berikutnya",
+ "Navigate to Previous Chat": "Beralih ke Obrolan Sebelumnya",
+ "Never": "Tidak Pernah",
+ "New": "Baru",
+ "New Button": "Tombol Baru",
+ "New calendar": "Kalender baru",
+ "New Calendar": "Kalender Baru",
+ "New chat": "Obrolan baru",
"New Chat": "Obrolan Baru",
- "New directory": "",
- "New Directory": "",
- "New File": "",
- "New Folder": "",
- "New Function": "",
- "New Group": "",
- "New Note": "",
+ "New directory": "Direktori baru",
+ "New Directory": "Direktori Baru",
+ "New File": "Berkas Baru",
+ "New Folder": "Folder Baru",
+ "New Function": "Fungsi Baru",
+ "New Group": "Grup Baru",
+ "New Note": "Catatan Baru",
"New Password": "Kata Sandi Baru",
- "New Temporary Chat": "",
- "New Terminal": "",
- "New Tool": "",
- "New Webhook": "",
- "new-channel": "",
- "Next": "",
- "Next message": "",
- "Next month": "",
- "Next page": "",
- "Next run": "",
- "Next version": "",
- "No access grants. Private to you.": "",
- "No actions found": "",
- "No activity data": "",
- "No additional headers are sent unless configured.": "",
- "No authentication": "",
- "No automations found": "",
- "No channels": "",
- "No chat alerts": "",
- "No chat history": "",
- "No chat to compact": "",
- "No chat to fork": "",
- "No chats": "",
- "No chats found": "",
- "No chats found for this user.": "",
- "No chats found.": "",
- "No content": "",
- "No content available": "",
- "No content found": "",
+ "New Temporary Chat": "Obrolan Sementara Baru",
+ "New Terminal": "Terminal Baru",
+ "New Tool": "Alat Baru",
+ "New Webhook": "Webhook Baru",
+ "new-channel": "saluran-baru",
+ "Next": "Berikutnya",
+ "Next message": "Pesan berikutnya",
+ "Next month": "Bulan berikutnya",
+ "Next page": "Halaman berikutnya",
+ "Next run": "Eksekusi berikutnya",
+ "Next version": "Versi berikutnya",
+ "No access grants. Private to you.": "Tidak ada izin akses. Pribadi untuk Anda.",
+ "No actions found": "Tidak ada tindakan ditemukan",
+ "No activity data": "Tidak ada data aktivitas",
+ "No additional headers are sent unless configured.": "Tidak ada header tambahan yang dikirim kecuali dikonfigurasi.",
+ "No authentication": "Tanpa autentikasi",
+ "No automations found": "Tidak ada otomatisasi ditemukan",
+ "No channels": "Tidak ada saluran",
+ "No chat alerts": "Tidak ada pemberitahuan obrolan",
+ "No chat history": "Tidak ada riwayat obrolan",
+ "No chat to compact": "Tidak ada obrolan untuk dipadatkan",
+ "No chat to fork": "Tidak ada obrolan untuk dicabangkan",
+ "No chats": "Tidak ada obrolan",
+ "No chats found": "Tidak ada obrolan ditemukan",
+ "No chats found for this user.": "Tidak ada obrolan ditemukan untuk pengguna ini.",
+ "No chats found.": "Tidak ada obrolan ditemukan.",
+ "No content": "Tidak ada konten",
+ "No content available": "Tidak ada konten yang tersedia",
+ "No content found": "Tidak ada konten ditemukan",
"No content to speak": "Tidak ada konten untuk dibicarakan",
- "No conversation to save": "",
- "No data": "",
- "No description": "",
- "No distance available": "",
- "No event webhooks configured.": "",
- "No expiration can pose security risks.": "",
- "No external knowledge sources configured.": "",
- "No feedback found": "",
+ "No conversation to save": "Tidak ada percakapan untuk disimpan",
+ "No data": "Tidak ada data",
+ "No description": "Tidak ada deskripsi",
+ "No distance available": "Tidak ada jarak yang tersedia",
+ "No event webhooks configured.": "Tidak ada webhook acara yang dikonfigurasi.",
+ "No expiration can pose security risks.": "Tanpa kedaluwarsa dapat menimbulkan risiko keamanan.",
+ "No external knowledge sources configured.": "Tidak ada sumber pengetahuan eksternal yang dikonfigurasi.",
+ "No feedback found": "Tidak ada umpan balik ditemukan",
"No file selected": "Tidak ada file yang dipilih",
- "No files found": "",
- "No files in this knowledge base.": "",
- "No files yet. Upload files or run Python code to create them.": "",
- "No filters found": "",
- "No folders": "",
- "No functions found": "",
- "No groups found": "",
- "No history available": "",
- "No HTML, CSS, or JavaScript content found.": "",
- "No inference engine with management support found": "",
- "No kernel": "",
- "No knowledge bases accessible": "",
- "No knowledge bases found.": "",
- "No knowledge found": "",
- "No limit": "",
- "No matches": "",
- "No model data": "",
- "No model IDs": "",
- "No model usage found": "",
- "No models accessible": "",
- "No models available": "",
- "No models found": "",
- "No Notes": "",
- "No notes found": "",
- "No notification targets configured.": "",
- "No one": "",
- "No output items": "",
- "No pinned messages": "",
- "No prompts found": "",
- "No Repeat": "",
+ "No files found": "Tidak ada berkas ditemukan",
+ "No files in this knowledge base.": "Tidak ada berkas di basis pengetahuan ini.",
+ "No files yet. Upload files or run Python code to create them.": "Belum ada berkas. Unggah berkas atau jalankan kode Python untuk membuatnya.",
+ "No filters found": "Tidak ada filter ditemukan",
+ "No folders": "Tidak ada folder",
+ "No functions found": "Tidak ada fungsi ditemukan",
+ "No groups found": "Tidak ada grup ditemukan",
+ "No history available": "Tidak ada riwayat yang tersedia",
+ "No HTML, CSS, or JavaScript content found.": "Tidak ada konten HTML, CSS, atau JavaScript yang ditemukan.",
+ "No inference engine with management support found": "Tidak ada mesin inferensi dengan dukungan manajemen yang ditemukan",
+ "No kernel": "Tidak ada kernel",
+ "No knowledge bases accessible": "Tidak ada basis pengetahuan yang dapat diakses",
+ "No knowledge bases found.": "Basis pengetahuan tidak ditemukan.",
+ "No knowledge found": "Pengetahuan tidak ditemukan",
+ "No limit": "Tanpa batas",
+ "No matches": "Tidak ada kecocokan",
+ "No model data": "Tidak ada data model",
+ "No model IDs": "Tidak ada ID model",
+ "No model usage found": "Penggunaan model tidak ditemukan",
+ "No models accessible": "Tidak ada model yang dapat diakses",
+ "No models available": "Tidak ada model yang tersedia",
+ "No models found": "Model tidak ditemukan",
+ "No Notes": "Tidak Ada Catatan",
+ "No notes found": "Catatan tidak ditemukan",
+ "No notification targets configured.": "Tidak ada target notifikasi yang dikonfigurasi.",
+ "No one": "Tak seorang pun",
+ "No output items": "Tidak ada item keluaran",
+ "No pinned messages": "Tidak ada pesan tersemat",
+ "No prompts found": "Prompt tidak ditemukan",
+ "No Repeat": "Jangan Ulangi",
"No results": "Tidak ada hasil yang ditemukan",
"No results found": "Tidak ada hasil yang ditemukan",
- "No runs yet": "",
+ "No runs yet": "Belum ada eksekusi",
"No search query generated": "Tidak ada permintaan pencarian yang dibuat",
- "No servers detected": "",
- "No skills found": "",
+ "No servers detected": "Server tidak terdeteksi",
+ "No skills found": "Keahlian tidak ditemukan",
"No source available": "Tidak ada sumber yang tersedia",
- "No sources found": "",
+ "No sources found": "Sumber tidak ditemukan",
"No suggestion prompts": "Tidak ada prompt saran",
- "No Terminal connection configured.": "",
- "No terminal connections configured.": "",
- "No text differences": "",
- "No tool server connections configured.": "",
- "No tools accessible": "",
- "No tools found": "",
- "No usage data found": "",
- "No user variables configured.": "",
- "No users were found.": "",
- "No valves": "",
+ "No Terminal connection configured.": "Koneksi Terminal tidak dikonfigurasi.",
+ "No terminal connections configured.": "Koneksi terminal tidak dikonfigurasi.",
+ "No text differences": "Tidak ada perbedaan teks",
+ "No tool server connections configured.": "Koneksi server alat tidak dikonfigurasi.",
+ "No tools accessible": "Tidak ada alat yang dapat diakses",
+ "No tools found": "Alat tidak ditemukan",
+ "No usage data found": "Data penggunaan tidak ditemukan",
+ "No user variables configured.": "Variabel pengguna tidak dikonfigurasi.",
+ "No users were found.": "Pengguna tidak ditemukan.",
+ "No valves": "Tidak ada katup",
"No valves to update": "Tidak ada katup untuk diperbarui",
- "No webhooks yet": "",
- "Node Ids": "",
+ "No webhooks yet": "Belum ada webhook",
+ "Node Ids": "ID Node",
"None": "Tidak ada",
- "Not configured": "",
+ "Not configured": "Tidak dikonfigurasi",
"Not factually correct": "Tidak benar secara faktual",
- "Not helpful": "",
- "Not Registered": "",
- "Not scheduled": "",
- "Note": "",
- "Note deleted successfully": "",
- "Note Menu": "",
- "Notes": "",
- "Notes Public Sharing": "",
- "Notes Sharing": "",
- "Nothing to compact": "",
+ "Not helpful": "Tidak membantu",
+ "Not Registered": "Tidak Terdaftar",
+ "Not scheduled": "Tidak dijadwalkan",
+ "Note": "Catatan",
+ "Note deleted successfully": "Catatan berhasil dihapus",
+ "Note Menu": "Menu Catatan",
+ "Notes": "Catatan",
+ "Notes Public Sharing": "Berbagi Catatan Publik",
+ "Notes Sharing": "Berbagi Catatan",
+ "Nothing to compact": "Tidak ada yang perlu dipadatkan",
"November": "November",
- "OAuth": "",
- "OAuth 2.1": "",
- "OAuth 2.1 (Static)": "",
- "OAuth discovery successful": "",
+ "OAuth": "OAuth",
+ "OAuth 2.1": "OAuth 2.1",
+ "OAuth 2.1 (Static)": "OAuth 2.1 (Statis)",
+ "OAuth discovery successful": "Penemuan OAuth berhasil",
"OAuth ID": "ID OAuth",
- "OAuth Resource Parameter": "",
- "OAuth Scopes": "",
- "OAuth Server URL": "",
- "OAuth session disconnected": "",
+ "OAuth Resource Parameter": "Parameter Sumber Daya OAuth",
+ "OAuth Scopes": "Cakupan OAuth",
+ "OAuth Server URL": "URL Server OAuth",
+ "OAuth session disconnected": "Sesi OAuth terputus",
"October": "Oktober",
+ "of a website's sticky header": "dari header tetap situs web",
"Off": "Mati",
"Okay, Let's Go!": "Oke, Ayo Kita Pergi!",
"OLED Dark": "OLED Gelap",
"Ollama": "Ollama",
- "Ollama API settings updated": "",
- "Omit": "",
+ "Ollama API settings updated": "Pengaturan API Ollama diperbarui",
+ "Omit": "Abaikan",
"On": "Aktif",
- "Once": "",
- "Only active during Voice Mode.": "",
- "Only active when \"Paste Large Text as File\" setting is toggled on.": "",
- "Only active when a tool call is waiting for approval.": "",
- "Only active when the chat input is in focus and an LLM is generating a response.": "",
- "Only active when the chat input is in focus.": "",
- "Only alphanumeric characters and hyphens are allowed": "",
+ "Once": "Sekali",
+ "Only active during Voice Mode.": "Hanya aktif selama Mode Suara.",
+ "Only active when \"Paste Large Text as File\" setting is toggled on.": "Hanya aktif saat pengaturan \"Tempel Teks Panjang sebagai Berkas\" diaktifkan.",
+ "Only active when a tool call is waiting for approval.": "Hanya aktif saat panggilan alat menunggu persetujuan.",
+ "Only active when the chat input is in focus and an LLM is generating a response.": "Hanya aktif saat input obrolan fokus dan LLM sedang menghasilkan respons.",
+ "Only active when the chat input is in focus.": "Hanya aktif saat input obrolan sedang fokus.",
+ "Only alphanumeric characters and hyphens are allowed": "Hanya karakter alfanumerik dan tanda hubung yang diizinkan",
"Only alphanumeric characters and hyphens are allowed in the command string.": "Hanya karakter alfanumerik dan tanda hubung yang diizinkan dalam string perintah.",
- "Only can be triggered when the chat input is in focus.": "",
- "Only collections can be edited, create a new knowledge base to edit/add documents.": "",
- "Only install functions from sources you trust.": "",
- "Only install tools from sources you trust.": "",
- "Only invited users can access": "",
- "Only select users and groups with permission can access": "",
- "Only sync new/updated chats": "",
- "Only when away": "",
+ "Only can be triggered when the chat input is in focus.": "Hanya dapat dipicu saat input obrolan sedang fokus.",
+ "Only collections can be edited, create a new knowledge base to edit/add documents.": "Hanya koleksi yang dapat diedit, buat basis pengetahuan baru untuk mengedit/menambahkan dokumen.",
+ "Only install functions from sources you trust.": "Hanya pasang fungsi dari sumber yang Anda percayai.",
+ "Only install tools from sources you trust.": "Hanya pasang alat dari sumber yang Anda percayai.",
+ "Only invited users can access": "Hanya pengguna yang diundang yang dapat mengakses",
+ "Only select users and groups with permission can access": "Hanya pengguna dan grup terpilih dengan izin yang dapat mengakses",
+ "Only sync new/updated chats": "Hanya sinkronkan obrolan baru/yang diperbarui",
+ "Only when away": "Hanya saat tidak di tempat",
"Oops! Looks like the URL is invalid. Please double-check and try again.": "Ups! Sepertinya URL tidak valid. Mohon periksa ulang dan coba lagi.",
"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Ups! Anda menggunakan metode yang tidak didukung (hanya untuk frontend). Silakan sajikan WebUI dari backend.",
- "Open": "",
- "Open automation": "",
- "Open create menu": "",
- "Open file": "",
- "Open Folder": "",
- "Open in full screen": "",
- "Open in new tab": "",
- "Open link": "",
- "Open modal to configure connection": "",
- "Open Model Selector": "",
- "Open note": "",
- "Open Settings": "",
- "Open settings.": "",
- "Open Sidebar": "",
- "Open terminal": "",
- "Open the changelog modal after sign-in when enabled.": "",
- "Open User Profile Menu": "",
- "Open WebUI can use tools provided by any OpenAPI server.": "",
- "Open WebUI version": "",
- "Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",
+ "Open": "Buka",
+ "Open automation": "Buka otomatisasi",
+ "Open create menu": "Buka menu buat",
+ "Open file": "Buka berkas",
+ "Open Folder": "Buka Folder",
+ "Open in full screen": "Buka dalam layar penuh",
+ "Open in new tab": "Buka di tab baru",
+ "Open link": "Buka tautan",
+ "Open modal to configure connection": "Buka modal untuk mengonfigurasi koneksi",
+ "Open Model Selector": "Buka Pemilih Model",
+ "Open note": "Buka catatan",
+ "Open Settings": "Buka Pengaturan",
+ "Open settings.": "Buka pengaturan.",
+ "Open Sidebar": "Buka Bilah Sisi",
+ "Open terminal": "Buka terminal",
+ "Open the changelog modal after sign-in when enabled.": "Buka modal log perubahan setelah masuk jika diaktifkan.",
+ "Open User Profile Menu": "Buka Menu Profil Pengguna",
+ "Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI dapat menggunakan alat yang disediakan oleh server OpenAPI mana pun.",
+ "Open WebUI version": "Versi Open WebUI",
+ "Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Versi Open WebUI (v{{OPEN_WEBUI_VERSION}}) lebih rendah dari versi yang diperlukan (v{{REQUIRED_VERSION}})",
"OpenAI": "OpenAI",
"OpenAI API Key is required.": "Diperlukan Kunci API OpenAI.",
- "OpenAI API settings updated": "",
+ "OpenAI API settings updated": "Pengaturan API OpenAI diperbarui",
"OpenAI URL/Key required.": "Diperlukan URL/Kunci OpenAI.",
- "OpenAPI": "",
- "OpenAPI Spec": "",
- "openapi.json URL or Path": "",
- "optional": "",
- "Optional": "",
+ "OpenAPI Spec": "Spesifikasi OpenAPI",
+ "openapi.json URL or Path": "URL atau Jalur openapi.json",
+ "optional": "opsional",
+ "Optional": "Opsional",
"or": "atau",
- "Orchestrator": "",
- "Ordered List": "",
- "Original": "",
+ "Orchestrator": "Orkestrator",
+ "Ordered List": "Daftar Berurutan",
+ "Original": "Asli",
"Other": "Lainnya",
- "out of": "",
- "Output": "",
- "OUTPUT": "",
- "Overview": "",
- "PaddleOCR-vl": "",
- "PaddleOCR-vl API URL required.": "",
- "page": "",
- "Page": "",
- "Parameters": "",
- "Parent message not found": "",
- "Participate in community leaderboards and evaluations! Syncing aggregated usage stats helps drive research and improvements to Open WebUI. Your privacy is paramount: no message content is ever shared.": "",
- "Passthrough params": "",
+ "out of": "dari",
+ "Output": "Keluaran",
+ "OUTPUT": "KELUARAN",
+ "Overcome procrastination": "Atasi prokrastinasi",
+ "Overview": "Ikhtisar",
+ "PaddleOCR-vl": "PaddleOCR-vl",
+ "PaddleOCR-vl API URL required.": "URL API PaddleOCR-vl diperlukan.",
+ "page": "halaman",
+ "Page": "Halaman",
+ "Parameters": "Parameter",
+ "Parent message not found": "Pesan induk tidak ditemukan",
+ "Participate in community leaderboards and evaluations! Syncing aggregated usage stats helps drive research and improvements to Open WebUI. Your privacy is paramount: no message content is ever shared.": "Berpartisipasilah dalam papan peringkat dan evaluasi komunitas! Menyinkronkan statistik penggunaan agregat membantu mendorong penelitian dan penyempurnaan pada Open WebUI. Privasi Anda adalah yang utama: tidak ada konten pesan yang dibagikan.",
+ "Passthrough params": "Parameter passthrough",
"Password": "Kata sandi",
- "Password updated. Please sign in again.": "",
- "Passwords do not match.": "",
- "Path": "",
- "Path copied": "",
- "Paused": "",
+ "Password updated. Please sign in again.": "Kata sandi diperbarui. Silakan masuk kembali.",
+ "Passwords do not match.": "Kata sandi tidak cocok.",
+ "Path": "Jalur",
+ "Path copied": "Jalur disalin",
+ "Paused": "Dijeda",
"PDF document (.pdf)": "Dokumen PDF (.pdf)",
- "pdf, docx, pptx, xlsx": "",
- "Peak tokens": "",
+ "pdf, docx, pptx, xlsx": "pdf, docx, pptx, xlsx",
+ "Peak tokens": "Token puncak",
"pending": "tertunda",
- "Pending": "",
- "Per automation": "",
- "Per chat": "",
+ "Pending": "Tertunda",
+ "Per automation": "Per otomatisasi",
+ "Per chat": "Per obrolan",
"Permission denied when accessing media devices": "Izin ditolak saat mengakses perangkat media",
"Permission denied when accessing microphone": "Izin ditolak saat mengakses mikrofon",
"Permission denied when accessing microphone: {{error}}": "Izin ditolak saat mengakses mikrofon: {{error}}",
- "Permissions": "",
- "Permissions reset to defaults": "",
- "Persistent": "",
- "Personal": "",
- "Pin": "",
- "Pin to Sidebar": "",
- "Pinned": "",
- "Pinned Messages": "",
- "Pipe": "",
+ "Permissions": "Izin",
+ "Permissions reset to defaults": "Izin diatur ulang ke default",
+ "Persistent": "Persisten",
+ "Personal": "Pribadi",
+ "Pin": "Sematkan",
+ "Pin to Sidebar": "Sematkan ke Bilah Samping",
+ "Pinned": "Disematkan",
+ "Pinned Messages": "Pesan Tersemat",
+ "Pipe": "Pipe",
"Pipeline deleted successfully": "Pipeline berhasil dihapus",
"Pipeline downloaded successfully": "Saluran pipa berhasil diunduh",
- "Pipelines are a plugin system with arbitrary code execution.": "",
+ "Pipelines are a plugin system with arbitrary code execution.": "Pipelines adalah sistem plugin dengan eksekusi kode arbitrer.",
"Pipelines Not Detected": "Saluran Pipa Tidak Terdeteksi",
- "Plain text (.md)": "",
+ "Plain text (.md)": "Teks biasa (.md)",
"Plain text (.txt)": "Teks biasa (.txt)",
"Playground": "Taman bermain",
- "Playground Chat": "",
- "Please carefully review the following warnings:": "",
- "Please connect all required integrations before sending a message": "",
- "Please do not close the settings page while loading the model.": "",
- "Please enter a message or attach a file.": "",
- "Please enter a prompt": "",
- "Please enter a valid ID": "",
- "Please enter a valid JSON spec": "",
- "Please enter a valid path": "",
- "Please enter a valid URL": "",
- "Please enter a valid URL.": "",
- "Please enter Client ID and Client Secret": "",
- "Please fill in all fields.": "",
- "Please register the OAuth client": "",
- "Please save the connection before authorizing OAuth": "",
- "Please save the connection to persist the OAuth client information and do not change the ID": "",
- "Please select a model.": "",
- "Please select a reason": "",
- "Please select a valid JSON file": "",
- "Please select at least one user for Direct Message channel.": "",
- "Please wait until all files are uploaded.": "",
- "PNG, JPEG, WebP, or GIF. Up to 5 MiB and 25 megapixels.": "",
- "Policy changes apply to newly provisioned terminals. Refresh matching terminals to apply them to existing terminals.": "",
- "Policy ID": "",
- "Policy ID is required": "",
- "Policy is still loading": "",
- "Ports": "",
+ "Playground Chat": "Obrolan Playground",
+ "Please carefully review the following warnings:": "Harap tinjau peringatan berikut secara saksama:",
+ "Please connect all required integrations before sending a message": "Harap hubungkan semua integrasi yang diperlukan sebelum mengirim pesan",
+ "Please do not close the settings page while loading the model.": "Harap jangan tutup halaman pengaturan saat memuat model.",
+ "Please enter a message or attach a file.": "Harap masukkan pesan atau lampirkan file.",
+ "Please enter a prompt": "Harap masukkan prompt",
+ "Please enter a valid ID": "Harap masukkan ID yang valid",
+ "Please enter a valid JSON spec": "Harap masukkan spesifikasi JSON yang valid",
+ "Please enter a valid path": "Harap masukkan jalur yang valid",
+ "Please enter a valid URL": "Harap masukkan URL yang valid",
+ "Please enter a valid URL.": "Harap masukkan URL yang valid.",
+ "Please enter Client ID and Client Secret": "Harap masukkan Client ID dan Client Secret",
+ "Please fill in all fields.": "Harap isi semua kolom.",
+ "Please register the OAuth client": "Harap daftarkan klien OAuth",
+ "Please save the connection before authorizing OAuth": "Harap simpan koneksi sebelum mengotorisasi OAuth",
+ "Please save the connection to persist the OAuth client information and do not change the ID": "Silakan simpan koneksi untuk mempertahankan informasi klien OAuth dan jangan ubah ID",
+ "Please select a model.": "Silakan pilih model.",
+ "Please select a reason": "Silakan pilih alasan",
+ "Please select a valid JSON file": "Silakan pilih berkas JSON yang valid",
+ "Please select at least one user for Direct Message channel.": "Silakan pilih setidaknya satu pengguna untuk saluran Pesan Langsung.",
+ "Please wait until all files are uploaded.": "Harap tunggu hingga semua berkas terunggah.",
+ "PNG, JPEG, WebP, or GIF. Up to 5 MiB and 25 megapixels.": "PNG, JPEG, WebP, atau GIF. Hingga 5 MiB dan 25 megapiksel.",
+ "Policy changes apply to newly provisioned terminals. Refresh matching terminals to apply them to existing terminals.": "Perubahan kebijakan berlaku untuk terminal yang baru diprovisikan. Muat ulang terminal yang cocok untuk menerapkannya ke terminal yang ada.",
+ "Policy ID": "ID Kebijakan",
+ "Policy ID is required": "ID Kebijakan wajib diisi",
+ "Policy is still loading": "Kebijakan masih dimuat",
+ "Ports": "Port",
"Positive attitude": "Sikap positif",
- "Prefer not to say": "",
- "Preferences": "",
- "Prefix ID": "",
- "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "",
- "Preparing {{NAME}}...": "",
- "Preparing download...": "",
- "Press keys...": "",
- "Prevent File Creation": "",
- "Preview": "",
- "Preview Access": "",
- "Preview failed": "",
- "Previous": "",
+ "Prefer not to say": "Memilih untuk tidak menyebutkan",
+ "Preferences": "Preferensi",
+ "Prefix ID": "Prefiks ID",
+ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Prefiks ID digunakan untuk menghindari konflik dengan koneksi lain dengan menambahkan awalan ke ID model - biarkan kosong untuk menonaktifkan",
+ "Preparing {{NAME}}...": "Menyiapkan {{NAME}}...",
+ "Preparing download...": "Menyiapkan unduhan...",
+ "Press keys...": "Tekan tombol...",
+ "Prevent File Creation": "Cegah Pembuatan Berkas",
+ "Preview": "Pratinjau",
+ "Preview Access": "Akses Pratinjau",
+ "Preview failed": "Pratinjau gagal",
+ "Previous": "Sebelumnya",
"Previous 30 days": "30 hari sebelumnya",
"Previous 7 days": "7 hari sebelumnya",
- "Previous message": "",
- "Previous month": "",
- "Previous page": "",
- "Previous version": "",
- "Private": "",
- "Private conversation between selected users": "",
- "Production version updated": "",
+ "Previous message": "Pesan sebelumnya",
+ "Previous month": "Bulan sebelumnya",
+ "Previous page": "Halaman sebelumnya",
+ "Previous version": "Versi sebelumnya",
+ "Private": "Pribadi",
+ "Private conversation between selected users": "Percakapan pribadi antara pengguna yang dipilih",
+ "Production version updated": "Versi produksi diperbarui",
"Profile": "Profil",
- "Prompt": "",
+ "Prompt": "Prompt",
"Prompt Content": "Konten yang Diminta",
- "Prompt created successfully": "",
- "Prompt Menu": "",
- "Prompt Name": "",
- "Prompt updated successfully": "",
+ "Prompt created successfully": "Prompt berhasil dibuat",
+ "Prompt Menu": "Menu Prompt",
+ "Prompt Name": "Nama Prompt",
+ "Prompt updated successfully": "Prompt berhasil diperbarui",
"Prompts": "Prompt",
- "Prompts Access": "",
- "Prompts Public Sharing": "",
- "Prompts Sharing": "",
- "Provider": "",
- "Public": "",
+ "Prompts Access": "Akses Prompt",
+ "Prompts Public Sharing": "Berbagi Publik Prompt",
+ "Prompts Sharing": "Berbagi Prompt",
+ "Provider": "Penyedia",
+ "Public": "Publik",
"Pull \"{{searchValue}}\" from Ollama.com": "Tarik \"{{searchValue}}\" dari Ollama.com",
"Pull a model from Ollama.com": "Tarik model dari Ollama.com",
- "Pull Model": "",
- "Pyodide file browser": "",
- "Quality": "",
- "Query failed": "",
- "Querying": "",
- "Queued messages": "",
- "Quick Actions": "",
- "Ran {{COUNT}} analyses": "",
- "Ran {{COUNT}} analysis": "",
- "Rate {{rating}} out of 10": "",
- "Rating": "",
- "Read": "",
+ "Pull Model": "Tarik Model",
+ "Pyodide file browser": "Peramban berkas Pyodide",
+ "Quality": "Kualitas",
+ "Query failed": "Kueri gagal",
+ "Querying": "Mengueri",
+ "Queued messages": "Pesan dalam antrean",
+ "Quick Actions": "Tindakan Cepat",
+ "Ran {{COUNT}} analyses": "Menjalankan {{COUNT}} analisis",
+ "Ran {{COUNT}} analysis": "Menjalankan {{COUNT}} analisis",
+ "Rate {{rating}} out of 10": "Beri nilai {{rating}} dari 10",
+ "Rating": "Penilaian",
+ "Read": "Baca",
"Read Aloud": "Baca dengan Keras",
- "Read more →": "",
- "Read only": "",
- "Read Only": "",
- "Read the docs": "",
- "Read-only": "",
- "Read-Only Access": "",
- "Reason": "",
- "Reasoning text...": "",
- "Rebuild knowledge file, knowledge search, and memory vectors using the current embedding model.": "",
- "Receives matching events across the instance, including system/config events and events associated with any user.": "",
- "Receives matching events that are not associated with a user.": "",
- "Receives matching user-associated events only when the actor, user subject, or user data matches these users or current group members. System/config events are not sent.": "",
- "Recently Used": "",
- "Recommended": "",
- "Reconnected": "",
- "Record": "",
+ "Read more →": "Baca selengkapnya →",
+ "Read only": "Hanya baca",
+ "Read Only": "Hanya Baca",
+ "Read the docs": "Baca dokumentasi",
+ "Read-only": "Hanya-baca",
+ "Read-Only Access": "Akses Hanya-Baca",
+ "Reason": "Alasan",
+ "Reasoning text...": "Teks penalaran...",
+ "Rebuild knowledge file, knowledge search, and memory vectors using the current embedding model.": "Bangun ulang berkas pengetahuan, pencarian pengetahuan, dan vektor memori menggunakan model embedding saat ini.",
+ "Receives matching events across the instance, including system/config events and events associated with any user.": "Menerima peristiwa yang cocok di seluruh instans, termasuk peristiwa sistem/konfigurasi dan peristiwa yang terkait dengan pengguna mana pun.",
+ "Receives matching events that are not associated with a user.": "Menerima peristiwa yang cocok yang tidak terkait dengan pengguna.",
+ "Receives matching user-associated events only when the actor, user subject, or user data matches these users or current group members. System/config events are not sent.": "Menerima peristiwa terkait pengguna yang cocok hanya jika aktor, subjek pengguna, atau data pengguna cocok dengan pengguna ini atau anggota grup saat ini. Peristiwa sistem/konfigurasi tidak dikirim.",
+ "Recently Used": "Baru Saja Digunakan",
+ "Recommended": "Direkomendasikan",
+ "Reconnected": "Terhubung kembali",
+ "Record": "Rekam",
"Record voice": "Rekam suara",
"Redirecting you to Open WebUI Community": "Mengarahkan Anda ke Komunitas 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.": "",
- "Reference Chats": "",
- "Refresh": "",
+ "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.": "Mengurangi kemungkinan menghasilkan teks yang tidak masuk akal. Nilai yang lebih tinggi (misalnya 100) akan memberikan jawaban yang lebih beragam, sedangkan nilai yang lebih rendah (misalnya 10) akan lebih konservatif.",
+ "Reference Chats": "Obrolan Referensi",
+ "Refresh": "Segarkan",
"Refresh requested: {{count}} terminal(s)_one": "Permintaan muat ulang: {{count}} terminal",
- "Refresh requested: {{count}} terminal(s)_other": "",
- "Refresh Terminals": "",
- "Refreshing...": "",
+ "Refresh requested: {{count}} terminal(s)_other": "Penyegaran diminta: {{count}} terminal",
+ "Refresh Terminals": "Segarkan Terminal",
+ "Refreshing...": "Menyegarkan...",
"Refused when it shouldn't have": "Menolak ketika seharusnya tidak",
"Regenerate": "Regenerasi",
- "Regenerate Response": "",
- "Region and language of the search results, e.g. en-us.": "",
- "Register Again": "",
- "Register Client": "",
- "Registered": "",
- "registered to": "",
- "Registration failed": "",
- "Registration successful": "",
- "Reindex Embedding Data": "",
+ "Regenerate Response": "Buat Ulang Tanggapan",
+ "Region and language of the search results, e.g. en-us.": "Wilayah dan bahasa hasil pencarian, mis. en-us.",
+ "Register Again": "Daftar Lagi",
+ "Register Client": "Daftarkan Klien",
+ "Registered": "Terdaftar",
+ "registered to": "terdaftar untuk",
+ "Registration failed": "Pendaftaran gagal",
+ "Registration successful": "Pendaftaran berhasil",
+ "Reindex Embedding Data": "Indeks Ulang Data Embedding",
"Release Notes": "Catatan Rilis",
- "Releases": "",
- "Relevance": "",
- "Remember Dismissal": "",
- "Reminder": "",
+ "Releases": "Rilis",
+ "Relevance": "Relevansi",
+ "Remember Dismissal": "Ingat Pengabaian",
+ "Reminder": "Pengingat",
"Remove": "Hapus",
- "Remove {{MODELID}} from list.": "",
- "Remove action": "",
- "Remove file": "",
- "Remove File": "",
- "Remove from favorites": "",
- "Remove image": "",
- "Remove Pinned Model": "",
- "Remove prompt suggestion": "",
- "Remove Selected Model": "",
+ "Remove {{MODELID}} from list.": "Hapus {{MODELID}} dari daftar.",
+ "Remove action": "Hapus tindakan",
+ "Remove file": "Hapus berkas",
+ "Remove File": "Hapus Berkas",
+ "Remove from favorites": "Hapus dari favorit",
+ "Remove image": "Hapus gambar",
+ "Remove Pinned Model": "Hapus Model yang Disematkan",
+ "Remove prompt suggestion": "Hapus saran prompt",
+ "Remove Selected Model": "Hapus Model yang Dipilih",
"Removing {{count}} stale files..._one": "Menghapus {{count}} berkas usang...",
- "Removing {{count}} stale files..._other": "",
+ "Removing {{count}} stale files..._other": "Menghapus {{count}} berkas usang...",
"Rename": "Ganti nama",
- "Renamed to {{name}}": "",
- "Reorder": "",
- "Repeat": "",
- "Replace": "",
- "Reply": "",
- "Reply in Thread": "",
- "Reply to thread...": "",
- "Replying to {{NAME}}": "",
- "required": "",
- "Research Knowledge": "",
+ "Renamed to {{name}}": "Dinamai ulang menjadi {{name}}",
+ "Reorder": "Ubah Urutan",
+ "Repeat": "Ulangi",
+ "Replace": "Ganti",
+ "Reply": "Balas",
+ "Reply in Thread": "Balas di Utas",
+ "Reply to thread...": "Balas ke utas...",
+ "Replying to {{NAME}}": "Membalas {{NAME}}",
+ "required": "wajib",
+ "Research Knowledge": "Riset Pengetahuan",
"Reset": "Atur Ulang",
- "Reset All Models": "",
- "Reset all permissions to their initial configuration values": "",
- "Reset Defaults": "",
- "Reset group permissions to match the current default user permissions": "",
- "Reset knowledge base?": "",
- "Reset persisted files": "",
- "Reset to Defaults": "",
- "Reset view": "",
- "Reset zoom": "",
- "Resize panel": "",
- "Response": "",
+ "Reset All Models": "Atur Ulang Semua Model",
+ "Reset all permissions to their initial configuration values": "Atur ulang semua izin ke nilai konfigurasi awal",
+ "Reset Defaults": "Atur Ulang Default",
+ "Reset group permissions to match the current default user permissions": "Atur ulang izin grup agar sesuai dengan izin pengguna default saat ini",
+ "Reset knowledge base?": "Atur ulang basis pengetahuan?",
+ "Reset persisted files": "Atur ulang berkas tersimpan",
+ "Reset to Defaults": "Atur Ulang ke Default",
+ "Reset view": "Atur ulang tampilan",
+ "Reset zoom": "Atur ulang perbesaran",
+ "Resize panel": "Ubah ukuran panel",
+ "Response": "Respons",
"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Notifikasi respons tidak dapat diaktifkan karena izin situs web telah ditolak. Silakan kunjungi pengaturan browser Anda untuk memberikan akses yang diperlukan.",
- "Responses": "",
- "Restart": "",
- "Result": "",
+ "Responses": "Respons",
+ "Restart": "Mulai Ulang",
+ "Result": "Hasil",
"RESULT": "HASIL",
- "Retrieved {{count}} sources": "",
+ "Retrieved {{count}} sources": "Mengambil {{count}} sumber",
"Retrieved {{count}} sources_one": "Mengambil {{count}} sumber",
- "Retrieved {{count}} sources_other": "",
- "Retrieved 1 source": "",
- "Retry": "",
- "Rewrite the selected text.": "",
+ "Retrieved {{count}} sources_other": "Mengambil {{count}} sumber",
+ "Retrieved 1 source": "Mengambil 1 sumber",
+ "Retry": "Coba Lagi",
+ "Rewrite the selected text.": "Tulis ulang teks yang dipilih.",
"Role": "Peran",
"RTL": "RTL",
- "Run": "",
- "Run AI on your own terms. Connect any model, extend with code, and protect what matters without compromise. Your models, your data, your machine, wherever you open it.": "",
- "Run All": "",
- "Run cell (⌘+Enter)": "",
- "Run now": "",
- "Run Now": "",
- "Run tools without asking for approval.": "",
+ "Run": "Jalankan",
+ "Run AI on your own terms. Connect any model, extend with code, and protect what matters without compromise. Your models, your data, your machine, wherever you open it.": "Jalankan AI sesuai keinginan Anda. Hubungkan model apa pun, perluas dengan kode, dan lindungi hal penting tanpa kompromi. Model Anda, data Anda, mesin Anda, di mana pun Anda membukanya.",
+ "Run All": "Jalankan Semua",
+ "Run cell (⌘+Enter)": "Jalankan sel (⌘+Enter)",
+ "Run now": "Jalankan sekarang",
+ "Run Now": "Jalankan Sekarang",
+ "Run tools without asking for approval.": "Jalankan alat tanpa meminta persetujuan.",
"Running": "Berjalan",
- "Running Open WebUI for a team?": "",
+ "Running Open WebUI for a team?": "Menjalankan Open WebUI untuk tim?",
"Running...": "Berjalan...",
- "runs": "",
- "Runs": "",
- "Sa_day_of_week": "",
+ "runs": "eksekusi",
+ "Runs": "Eksekusi",
+ "Sa_day_of_week": "Sab",
"Save": "Simpan",
"Save & Create": "Simpan & Buat",
"Save & Update": "Simpan & Perbarui",
- "Save As Copy": "",
- "Save Chat": "",
- "Saved": "",
- "Saving...": "",
- "Schedule": "",
- "Scheduled time must be in the future": "",
- "Screen Share": "",
- "Scroll to bottom": "",
- "Scroll to Top": "",
+ "Save As Copy": "Simpan sebagai Salinan",
+ "Save Chat": "Simpan Obrolan",
+ "Saved": "Tersimpan",
+ "Saving...": "Menyimpan...",
+ "Schedule": "Jadwal",
+ "Scheduled time must be in the future": "Waktu terjadwal harus di masa mendatang",
+ "Screen Share": "Bagikan Layar",
+ "Scroll to bottom": "Gulir ke bawah",
+ "Scroll to Top": "Gulir ke Atas",
"Search": "Cari",
"Search a model": "Mencari model",
- "Search actions": "",
- "Search all emojis": "",
- "Search Automations": "",
- "Search channels": "",
+ "Search actions": "Cari tindakan",
+ "Search all emojis": "Cari semua emoji",
+ "Search Automations": "Cari Otomatisasi",
+ "Search channels": "Cari saluran",
"Search Chats": "Cari Obrolan",
- "Search Collection": "",
- "Search Files": "",
- "Search files and contents": "",
- "Search filters": "",
- "Search folders": "",
- "search for archived chats": "",
- "search for folders": "",
- "search for pinned chats": "",
- "search for shared chats": "",
- "search for tags": "",
+ "Search Collection": "Cari Koleksi",
+ "Search Files": "Cari Berkas",
+ "Search files and contents": "Cari berkas dan konten",
+ "Search filters": "Cari filter",
+ "Search folders": "Cari folder",
+ "search for archived chats": "cari obrolan terarsip",
+ "search for folders": "cari folder",
+ "search for pinned chats": "cari obrolan tersemat",
+ "search for shared chats": "cari obrolan yang dibagikan",
+ "search for tags": "cari tag",
"Search Functions": "Fungsi Pencarian",
- "Search Groups": "",
- "Search In Models": "",
- "Search Knowledge": "",
- "Search Memories": "",
+ "Search Groups": "Cari Grup",
+ "Search In Models": "Cari di Model",
+ "Search Knowledge": "Cari Pengetahuan",
+ "Search Memories": "Cari Memori",
"Search Models": "Cari Model",
- "Search Notes": "",
- "Search options": "",
- "Search or add pattern": "",
+ "Search Notes": "Cari Catatan",
+ "Search options": "Cari opsi",
+ "Search or add pattern": "Cari atau tambah pola",
"Search Prompts": "Perintah Pencarian",
- "Search skills": "",
- "Search Skills": "",
- "Search the internet": "",
- "Search tools": "",
+ "Search skills": "Cari keterampilan",
+ "Search Skills": "Cari Keterampilan",
+ "Search the internet": "Cari di internet",
+ "Search tools": "Cari alat",
"Search Tools": "Alat Pencarian",
- "Search translations": "",
- "Search users or groups": "",
- "Searched {{count}} sites": "",
- "Searching": "",
+ "Search translations": "Cari terjemahan",
+ "Search users or groups": "Cari pengguna atau grup",
+ "Searched {{count}} sites": "Menelusuri {{count}} situs",
+ "Searching": "Mencari",
"Searching \"{{searchQuery}}\"": "Mencari \"{{searchQuery}}\"",
- "Searching Knowledge for \"{{searchQuery}}\"": "",
- "Searching the web": "",
+ "Searching Knowledge for \"{{searchQuery}}\"": "Mencari Pengetahuan untuk \"{{searchQuery}}\"",
+ "Searching the web": "Mencari di web",
"See readme.md for instructions": "Lihat readme.md untuk instruksi",
- "Select": "",
- "Select {{modelName}} model": "",
- "Select {{name}}": "",
- "Select a base model (e.g. llama3, gpt-4o)": "",
- "Select a conversation to preview": "",
+ "Select": "Pilih",
+ "Select {{modelName}} model": "Pilih model {{modelName}}",
+ "Select {{name}}": "Pilih {{name}}",
+ "Select a base model (e.g. llama3, gpt-4o)": "Pilih model dasar (mis. llama3, gpt-4o)",
+ "Select a conversation to preview": "Pilih percakapan untuk pratinjau",
"Select a engine": "Pilih mesin",
"Select a function": "Memilih fungsi",
- "Select a group": "",
- "Select a language": "",
- "Select a mode": "",
+ "Select a group": "Pilih grup",
+ "Select a language": "Pilih bahasa",
+ "Select a mode": "Pilih mode",
"Select a model": "Pilih model",
- "Select a model (optional)": "",
+ "Select a model (optional)": "Pilih model (opsional)",
"Select a pipeline": "Pilih saluran pipa",
"Select a pipeline url": "Pilih url saluran pipa",
- "Select a reranking model engine": "",
- "Select a role": "",
- "Select a theme": "",
+ "Select a reranking model engine": "Pilih mesin model reranking",
+ "Select a role": "Pilih peran",
+ "Select a theme": "Pilih tema",
"Select a tool": "Pilih alat",
- "Select a voice": "",
- "Select Action": "",
- "Select All": "",
- "Select an auth method": "",
- "Select an embedding model engine": "",
- "Select an engine": "",
- "Select an instance": "",
- "Select an Ollama instance": "",
- "Select an option": "",
- "Select an output format": "",
- "Select dtype": "",
- "Select Engine": "",
- "Select Filter": "",
- "Select how to split message text for TTS requests": "",
- "Select Knowledge": "",
- "Select Method": "",
- "Select model": "",
+ "Select a voice": "Pilih suara",
+ "Select Action": "Pilih Tindakan",
+ "Select All": "Pilih Semua",
+ "Select an auth method": "Pilih metode autentikasi",
+ "Select an embedding model engine": "Pilih mesin model embedding",
+ "Select an engine": "Pilih mesin",
+ "Select an instance": "Pilih instans",
+ "Select an Ollama instance": "Pilih instans Ollama",
+ "Select an option": "Pilih opsi",
+ "Select an output format": "Pilih format keluaran",
+ "Select dtype": "Pilih dtype",
+ "Select Engine": "Pilih Mesin",
+ "Select Filter": "Pilih Filter",
+ "Select how to split message text for TTS requests": "Pilih cara memisahkan teks pesan untuk permintaan TTS",
+ "Select Knowledge": "Pilih Pengetahuan",
+ "Select Method": "Pilih Metode",
+ "Select model": "Pilih model",
"Select only one model to call": "Pilih hanya satu model untuk dipanggil",
- "Select options": "",
- "Select Skill": "",
- "Select Tool": "",
- "Select view": "",
- "Selected": "",
- "Selected model: {{modelName}}": "",
+ "Select options": "Pilih opsi",
+ "Select Skill": "Pilih Keterampilan",
+ "Select Tool": "Pilih Alat",
+ "Select view": "Pilih tampilan",
+ "Selected": "Dipilih",
+ "Selected model: {{modelName}}": "Model yang dipilih: {{modelName}}",
"Selected model(s) do not support image inputs": "Model yang dipilih tidak mendukung input gambar",
- "Selected models define incompatible Chat Variables.": "",
- "semantic": "",
+ "Selected models define incompatible Chat Variables.": "Model yang dipilih menentukan Variabel Obrolan yang tidak kompatibel.",
+ "semantic": "semantik",
"Send": "Kirim",
"Send a Message": "Kirim Pesan",
- "Send events for": "",
+ "Send events for": "Kirim peristiwa untuk",
"Send message": "Kirim pesan",
- "Send now": "",
- "Send Test": "",
+ "Send now": "Kirim sekarang",
+ "Send Test": "Kirim Uji Coba",
"September": "September",
- "Server connection failed": "",
+ "Server connection failed": "Koneksi server gagal",
"Server connection verified": "Koneksi server diverifikasi",
- "Service Account": "",
- "Services": "",
- "Session": "",
- "Session expired. Please sign in again.": "",
- "Set a local zoom level for the app interface.": "",
+ "Service Account": "Akun Layanan",
+ "Services": "Layanan",
+ "Session": "Sesi",
+ "Session expired. Please sign in again.": "Sesi telah kedaluwarsa. Silakan masuk kembali.",
+ "Set a local zoom level for the app interface.": "Atur tingkat perbesaran lokal untuk antarmuka aplikasi.",
"Set as default": "Ditetapkan sebagai default",
- "Set as Pinned Model": "",
- "Set as Production": "",
- "Set as Selected Model": "",
- "Set embedding model": "",
+ "Set as Pinned Model": "Tetapkan sebagai Model yang Disematkan",
+ "Set as Production": "Tetapkan sebagai Produksi",
+ "Set as Selected Model": "Tetapkan sebagai Model Terpilih",
+ "Set embedding model": "Atur model embedding",
"Set embedding model (e.g. {{model}})": "Tetapkan model penyematan (mis. {{model}})",
"Set reranking model (e.g. {{model}})": "Tetapkan model pemeringkatan ulang (mis. {{model}})",
- "Set system-wide interface defaults for every account. Personal settings override these defaults.": "",
- "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 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.": "",
- "Set whisper model": "",
- "Set your status": "",
- "Sets a flat bias against tokens that have appeared at least once. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. At 0, it is disabled.": "",
- "Sets a scaling bias against tokens to penalize repetitions, based on how many times they have appeared. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. At 0, it is disabled.": "",
- "Sets how far back for the model to look back to prevent repetition.": "",
- "Sets the size of the context window used to generate the next token.": "",
- "Setting": "",
+ "Set system-wide interface defaults for every account. Personal settings override these defaults.": "Atur default antarmuka seluruh sistem untuk setiap akun. Pengaturan pribadi akan menimpa default ini.",
+ "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.": "Atur jumlah layer yang akan dialihkan ke GPU. Meningkatkan nilai ini dapat meningkatkan performa secara signifikan untuk model yang dioptimalkan untuk akselerasi GPU, tetapi juga dapat menghabiskan lebih banyak daya dan sumber daya 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.": "Atur jumlah worker thread yang digunakan untuk komputasi. Opsi ini menentukan berapa banyak thread yang digunakan untuk memproses permintaan masuk secara bersamaan. Meningkatkan nilai ini dapat meningkatkan performa pada beban kerja konkurensi tinggi, tetapi juga dapat menghabiskan lebih banyak sumber daya CPU.",
+ "Set whisper model": "Atur model whisper",
+ "Set your status": "Atur status Anda",
+ "Sets a flat bias against tokens that have appeared at least once. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. At 0, it is disabled.": "Menetapkan bias tetap terhadap token yang telah muncul setidaknya sekali. Nilai yang lebih tinggi (misalnya, 1,5) akan memberikan penalti pengulangan yang lebih kuat, sedangkan nilai yang lebih rendah (misalnya, 0,9) akan lebih longgar. Pada nilai 0, fitur ini dinonaktifkan.",
+ "Sets a scaling bias against tokens to penalize repetitions, based on how many times they have appeared. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. At 0, it is disabled.": "Menetapkan bias berskala terhadap token untuk memberikan penalti pada pengulangan berdasarkan frekuensi kemunculannya. Nilai yang lebih tinggi (misalnya, 1,5) akan memberikan penalti pengulangan yang lebih kuat, sedangkan nilai yang lebih rendah (misalnya, 0,9) akan lebih longgar. Pada nilai 0, fitur ini dinonaktifkan.",
+ "Sets how far back for the model to look back to prevent repetition.": "Menetapkan seberapa jauh model melihat ke belakang untuk mencegah pengulangan.",
+ "Sets the size of the context window used to generate the next token.": "Menetapkan ukuran jendela konteks yang digunakan untuk menghasilkan token berikutnya.",
+ "Setting": "Pengaturan",
"Settings": "Pengaturan",
- "settings configured": "",
- "Settings Permissions": "",
+ "settings configured": "pengaturan dikonfigurasi",
+ "Settings Permissions": "Izin Pengaturan",
"Settings saved successfully!": "Pengaturan berhasil disimpan!",
- "Settings: open settings.": "",
- "settings.admin.analytics.title": "",
- "settings.admin.audio.additionalParameters.description": "",
- "settings.admin.audio.additionalParameters.label": "",
- "settings.admin.audio.languageLocales.label": "",
- "settings.admin.audio.maxSpeakers.label": "",
- "settings.admin.audio.mistralSttModel.description": "",
+ "Settings: open settings.": "Pengaturan: buka pengaturan.",
+ "settings.admin.analytics.title": "Analitik",
+ "settings.admin.audio.additionalParameters.description": "Masukkan parameter permintaan TTS tambahan yang kompatibel dengan OpenAI dalam bentuk JSON.",
+ "settings.admin.audio.additionalParameters.label": "Parameter Tambahan",
+ "settings.admin.audio.languageLocales.label": "Lokal Bahasa",
+ "settings.admin.audio.maxSpeakers.label": "Maksimal Pembicara",
+ "settings.admin.audio.mistralSttModel.description": "Biarkan kosong untuk menggunakan model default (voxtral-mini-latest).",
"settings.admin.audio.mistralSttModel.label": "Model STT",
- "settings.admin.audio.outputFormat.label": "",
- "settings.admin.audio.requestFormat.description": "",
- "settings.admin.audio.requestFormat.label": "",
- "settings.admin.audio.responseSplitting.description": "",
- "settings.admin.audio.responseSplitting.label": "",
- "settings.admin.audio.sections.speechToText.title": "",
- "settings.admin.audio.sections.textToSpeech.title": "",
- "settings.admin.audio.speechToTextEngine.description": "",
+ "settings.admin.audio.outputFormat.label": "Format output",
+ "settings.admin.audio.requestFormat.description": "Pilih bagaimana audio dikirim ke endpoint yang kompatibel dengan OpenAI.",
+ "settings.admin.audio.requestFormat.label": "Format Permintaan",
+ "settings.admin.audio.responseSplitting.description": "Atur cara pemisahan teks pesan untuk permintaan TTS. 'Tanda baca' memisahkan menjadi kalimat, 'paragraf' memisahkan menjadi paragraf, dan 'tidak ada' mempertahankan pesan sebagai satu teks utuh.",
+ "settings.admin.audio.responseSplitting.label": "Pemisahan Respons",
+ "settings.admin.audio.sections.speechToText.title": "Ucapan-ke-Teks",
+ "settings.admin.audio.sections.textToSpeech.title": "Teks-ke-Ucapan",
+ "settings.admin.audio.speechToTextEngine.description": "Pilih penyedia transkripsi yang digunakan untuk input audio.",
"settings.admin.audio.speechToTextEngine.label": "Mesin Pengenal Ucapan ke Teks",
"settings.admin.audio.sttAzureApiKey.label": "Kunci API",
- "settings.admin.audio.sttAzureBaseUrl.label": "",
- "settings.admin.audio.sttAzureRegion.label": "",
+ "settings.admin.audio.sttAzureBaseUrl.label": "URL Endpoint",
+ "settings.admin.audio.sttAzureRegion.label": "Wilayah Azure",
"settings.admin.audio.sttDeepgramApiKey.label": "Kunci API",
"settings.admin.audio.sttMistralApiBaseUrl.label": "URL Dasar API",
"settings.admin.audio.sttMistralApiKey.label": "Kunci API",
- "settings.admin.audio.sttModel.description": "",
+ "settings.admin.audio.sttModel.description": "Biarkan kolom model kosong untuk menggunakan model bawaan.",
"settings.admin.audio.sttModel.label": "Model STT",
"settings.admin.audio.sttOpenaiApiBaseUrl.label": "URL Dasar API",
"settings.admin.audio.sttOpenaiApiKey.label": "Kunci API",
- "settings.admin.audio.sttWhisperModel.description": "",
+ "settings.admin.audio.sttWhisperModel.description": "Open WebUI menggunakan faster-whisper secara internal.",
"settings.admin.audio.sttWhisperModel.label": "Model STT",
- "settings.admin.audio.supportedMimeTypes.description": "",
- "settings.admin.audio.supportedMimeTypes.label": "",
- "settings.admin.audio.textToSpeechEngine.description": "",
+ "settings.admin.audio.supportedMimeTypes.description": "Tipe MIME audio atau video yang dipisahkan dengan koma yang diterima untuk diunggah.",
+ "settings.admin.audio.supportedMimeTypes.label": "Tipe MIME yang Didukung",
+ "settings.admin.audio.textToSpeechEngine.description": "Pilih penyedia ucapan yang digunakan untuk output audio asisten.",
"settings.admin.audio.textToSpeechEngine.label": "Mesin Teks-ke-Suara",
"settings.admin.audio.title": "Audio",
"settings.admin.audio.ttsApiKey.label": "Kunci API",
- "settings.admin.audio.ttsAzureSpeechBaseUrl.label": "",
- "settings.admin.audio.ttsAzureSpeechRegion.label": "",
+ "settings.admin.audio.ttsAzureSpeechBaseUrl.label": "URL Endpoint",
+ "settings.admin.audio.ttsAzureSpeechRegion.label": "Wilayah Azure",
"settings.admin.audio.ttsMistralApiBaseUrl.label": "URL Dasar API",
"settings.admin.audio.ttsMistralApiKey.label": "Kunci API",
- "settings.admin.audio.ttsModel.description": "",
+ "settings.admin.audio.ttsModel.description": "Open WebUI menggunakan SpeechT5 dan embedding penutur CMU Arctic.",
"settings.admin.audio.ttsModel.label": "Model TTS",
"settings.admin.audio.ttsOpenaiApiBaseUrl.label": "URL Dasar API",
"settings.admin.audio.ttsOpenaiApiKey.label": "Kunci API",
"settings.admin.audio.ttsVoice.label": "Suara TTS",
- "settings.admin.audio.updateModel.label": "",
- "settings.admin.audio.useChatCompletionsApi.description": "",
- "settings.admin.audio.useChatCompletionsApi.label": "",
- "settings.admin.authentication.adminContactEmail.description": "",
- "settings.admin.authentication.adminContactEmail.label": "",
- "settings.admin.authentication.adminDetails.description": "",
- "settings.admin.authentication.adminDetails.label": "",
- "settings.admin.authentication.adminRoles.description": "",
- "settings.admin.authentication.adminRoles.label": "",
- "settings.admin.authentication.allowedDomains.description": "",
- "settings.admin.authentication.allowedDomains.label": "",
- "settings.admin.authentication.allowedEndpoints.description": "",
- "settings.admin.authentication.allowedEndpoints.label": "",
- "settings.admin.authentication.allowedRoles.description": "",
- "settings.admin.authentication.allowedRoles.label": "",
- "settings.admin.authentication.apiKeyEndpointRestrictions.description": "",
- "settings.admin.authentication.apiKeyEndpointRestrictions.label": "",
- "settings.admin.authentication.apiKeys.description": "",
- "settings.admin.authentication.apiKeys.label": "",
- "settings.admin.authentication.applicationDn.description": "",
- "settings.admin.authentication.applicationDn.label": "",
- "settings.admin.authentication.applicationDnPassword.description": "",
- "settings.admin.authentication.applicationDnPassword.label": "",
- "settings.admin.authentication.attributeForMail.description": "",
- "settings.admin.authentication.attributeForMail.label": "",
- "settings.admin.authentication.attributeForUsername.description": "",
- "settings.admin.authentication.attributeForUsername.label": "",
- "settings.admin.authentication.autoRedirect.description": "",
- "settings.admin.authentication.autoRedirect.label": "",
- "settings.admin.authentication.blockedGroups.description": "",
- "settings.admin.authentication.blockedGroups.label": "",
- "settings.admin.authentication.certificatePath.description": "",
- "settings.admin.authentication.certificatePath.label": "",
- "settings.admin.authentication.ciphers.description": "",
- "settings.admin.authentication.ciphers.label": "",
- "settings.admin.authentication.clientId.description": "",
- "settings.admin.authentication.clientId.label": "",
- "settings.admin.authentication.clientSecret.description": "",
- "settings.admin.authentication.clientSecret.label": "",
- "settings.admin.authentication.defaultGroup.description": "",
- "settings.admin.authentication.defaultGroup.label": "",
- "settings.admin.authentication.defaultUserRole.description": "",
+ "settings.admin.audio.updateModel.label": "Perbarui model",
+ "settings.admin.audio.useChatCompletionsApi.description": "Gunakan endpoint /v1/chat/completions alih-alih /v1/audio/transcriptions untuk akurasi yang berpotensi lebih baik.",
+ "settings.admin.audio.useChatCompletionsApi.label": "Gunakan API Chat Completions",
+ "settings.admin.authentication.adminContactEmail.description": "Email yang ditampilkan pada overlay akun yang tertunda.",
+ "settings.admin.authentication.adminContactEmail.label": "Email Kontak Admin",
+ "settings.admin.authentication.adminDetails.description": "Tampilkan detail kontak admin saat akun sedang menunggu persetujuan.",
+ "settings.admin.authentication.adminDetails.label": "Detail Admin",
+ "settings.admin.authentication.adminRoles.description": "Peran penyedia yang memberikan akses admin.",
+ "settings.admin.authentication.adminRoles.label": "Peran Admin",
+ "settings.admin.authentication.allowedDomains.description": "Domain email yang diizinkan untuk masuk dengan OAuth.",
+ "settings.admin.authentication.allowedDomains.label": "Domain yang Diizinkan",
+ "settings.admin.authentication.allowedEndpoints.description": "Jalur API yang dipisahkan dengan koma yang dapat diakses oleh kunci API.",
+ "settings.admin.authentication.allowedEndpoints.label": "Endpoint yang Diizinkan",
+ "settings.admin.authentication.allowedRoles.description": "Peran penyedia yang diizinkan untuk masuk.",
+ "settings.admin.authentication.allowedRoles.label": "Peran yang Diizinkan",
+ "settings.admin.authentication.apiKeyEndpointRestrictions.description": "Batasi kunci API hanya pada endpoint yang dikonfigurasi.",
+ "settings.admin.authentication.apiKeyEndpointRestrictions.label": "Pembatasan Endpoint Kunci API",
+ "settings.admin.authentication.apiKeys.description": "Izinkan pengguna membuat kunci API untuk akses terprogram.",
+ "settings.admin.authentication.apiKeys.label": "Kunci API",
+ "settings.admin.authentication.applicationDn.description": "Bind DN yang digunakan untuk pencarian direktori.",
+ "settings.admin.authentication.applicationDn.label": "DN Aplikasi",
+ "settings.admin.authentication.applicationDnPassword.description": "Kata sandi untuk bind DN.",
+ "settings.admin.authentication.applicationDnPassword.label": "Kata Sandi DN Aplikasi",
+ "settings.admin.authentication.attributeForMail.description": "Atribut LDAP yang digunakan sebagai alamat email pengguna.",
+ "settings.admin.authentication.attributeForMail.label": "Atribut untuk Email",
+ "settings.admin.authentication.attributeForUsername.description": "Atribut LDAP yang digunakan sebagai nama pengguna.",
+ "settings.admin.authentication.attributeForUsername.label": "Atribut untuk Nama Pengguna",
+ "settings.admin.authentication.autoRedirect.description": "Arahkan pengguna langsung ke penyedia OAuth dari halaman masuk.",
+ "settings.admin.authentication.autoRedirect.label": "Pengalihan Otomatis",
+ "settings.admin.authentication.blockedGroups.description": "Grup penyedia yang diblokir untuk masuk.",
+ "settings.admin.authentication.blockedGroups.label": "Grup yang Diblokir",
+ "settings.admin.authentication.certificatePath.description": "Berkas sertifikat yang digunakan untuk verifikasi TLS.",
+ "settings.admin.authentication.certificatePath.label": "Jalur Sertifikat",
+ "settings.admin.authentication.ciphers.description": "Daftar cipher TLS untuk koneksi LDAP.",
+ "settings.admin.authentication.ciphers.label": "Cipher",
+ "settings.admin.authentication.clientId.description": "Pengidentifikasi klien OAuth dari penyedia.",
+ "settings.admin.authentication.clientId.label": "ID Klien",
+ "settings.admin.authentication.clientSecret.description": "Rahasia klien OAuth dari penyedia.",
+ "settings.admin.authentication.clientSecret.label": "Rahasia Klien",
+ "settings.admin.authentication.defaultGroup.description": "Grup yang ditetapkan untuk pengguna baru secara bawaan.",
+ "settings.admin.authentication.defaultGroup.label": "Grup Bawaan",
+ "settings.admin.authentication.defaultUserRole.description": "Peran yang ditetapkan untuk pengguna baru saat membuat akun.",
"settings.admin.authentication.defaultUserRole.label": "Peran Pengguna Default",
- "settings.admin.authentication.emailClaim.description": "",
- "settings.admin.authentication.emailClaim.label": "",
- "settings.admin.authentication.enableGroupCreation.description": "",
- "settings.admin.authentication.enableGroupCreation.label": "",
- "settings.admin.authentication.enableGroupManagement.description": "",
- "settings.admin.authentication.enableGroupManagement.label": "",
- "settings.admin.authentication.enableOauthGroupCreation.description": "",
- "settings.admin.authentication.enableOauthGroupCreation.label": "",
- "settings.admin.authentication.enableOauthGroupManagement.description": "",
- "settings.admin.authentication.enableOauthGroupManagement.label": "",
- "settings.admin.authentication.groupAttribute.description": "",
- "settings.admin.authentication.groupAttribute.label": "",
- "settings.admin.authentication.groupClaim.description": "",
- "settings.admin.authentication.groupClaim.label": "",
- "settings.admin.authentication.host.description": "",
- "settings.admin.authentication.host.label": "",
- "settings.admin.authentication.jwtExpiration.description": "",
+ "settings.admin.authentication.emailClaim.description": "Klaim yang digunakan sebagai alamat email pengguna.",
+ "settings.admin.authentication.emailClaim.label": "Klaim Email",
+ "settings.admin.authentication.enableGroupCreation.description": "Buat grup yang belum ada dari grup LDAP.",
+ "settings.admin.authentication.enableGroupCreation.label": "Buat Grup Otomatis",
+ "settings.admin.authentication.enableGroupManagement.description": "Petakan grup LDAP ke grup Open WebUI.",
+ "settings.admin.authentication.enableGroupManagement.label": "Pemetaan Grup",
+ "settings.admin.authentication.enableOauthGroupCreation.description": "Buat grup yang belum ada dari klaim OAuth.",
+ "settings.admin.authentication.enableOauthGroupCreation.label": "Buat Grup Otomatis",
+ "settings.admin.authentication.enableOauthGroupManagement.description": "Petakan klaim OAuth ke grup Open WebUI.",
+ "settings.admin.authentication.enableOauthGroupManagement.label": "Pemetaan Grup",
+ "settings.admin.authentication.groupAttribute.description": "Atribut LDAP yang berisi keanggotaan grup pengguna.",
+ "settings.admin.authentication.groupAttribute.label": "Atribut Grup",
+ "settings.admin.authentication.groupClaim.description": "Klaim yang berisi grup penyedia.",
+ "settings.admin.authentication.groupClaim.label": "Klaim Grup",
+ "settings.admin.authentication.host.description": "Nama host atau alamat IP server LDAP.",
+ "settings.admin.authentication.host.label": "Host",
+ "settings.admin.authentication.jwtExpiration.description": "Satuan waktu yang valid: 's', 'm', 'h', 'd', 'w' atau '-1' untuk tanpa batas waktu.",
"settings.admin.authentication.jwtExpiration.label": "Kedaluwarsa JWT",
- "settings.admin.authentication.label.description": "",
- "settings.admin.authentication.label.label": "",
- "settings.admin.authentication.ldap.description": "",
- "settings.admin.authentication.ldap.label": "",
- "settings.admin.authentication.loginForm.description": "",
- "settings.admin.authentication.loginForm.label": "",
- "settings.admin.authentication.mergeAccountsByEmail.description": "",
- "settings.admin.authentication.mergeAccountsByEmail.label": "",
- "settings.admin.authentication.newSignUps.description": "",
- "settings.admin.authentication.newSignUps.label": "",
- "settings.admin.authentication.oauthOidc.description": "",
- "settings.admin.authentication.oauthOidc.label": "",
- "settings.admin.authentication.oauthSignup.description": "",
- "settings.admin.authentication.oauthSignup.label": "",
- "settings.admin.authentication.pendingUserOverlayContent.description": "",
- "settings.admin.authentication.pendingUserOverlayContent.label": "",
- "settings.admin.authentication.pendingUserOverlayTitle.description": "",
- "settings.admin.authentication.pendingUserOverlayTitle.label": "",
- "settings.admin.authentication.pictureClaim.description": "",
- "settings.admin.authentication.pictureClaim.label": "",
- "settings.admin.authentication.port.description": "",
- "settings.admin.authentication.port.label": "",
- "settings.admin.authentication.providerName.description": "",
- "settings.admin.authentication.providerName.label": "",
- "settings.admin.authentication.providerUrl.description": "",
- "settings.admin.authentication.providerUrl.label": "",
- "settings.admin.authentication.redirectUri.description": "",
- "settings.admin.authentication.redirectUri.label": "",
- "settings.admin.authentication.roleMapping.description": "",
- "settings.admin.authentication.roleMapping.label": "",
- "settings.admin.authentication.rolesClaim.description": "",
- "settings.admin.authentication.rolesClaim.label": "",
- "settings.admin.authentication.scopes.description": "",
- "settings.admin.authentication.scopes.label": "",
- "settings.admin.authentication.searchBase.description": "",
- "settings.admin.authentication.searchBase.label": "",
- "settings.admin.authentication.searchFilters.description": "",
- "settings.admin.authentication.searchFilters.label": "",
- "settings.admin.authentication.sections.ldap.title": "",
- "settings.admin.authentication.sections.oauthOidc.title": "",
- "settings.admin.authentication.sections.pendingAccounts.title": "",
- "settings.admin.authentication.sections.userAccess.title": "",
- "settings.admin.authentication.subClaim.description": "",
- "settings.admin.authentication.subClaim.label": "",
- "settings.admin.authentication.title": "",
- "settings.admin.authentication.tls.description": "",
- "settings.admin.authentication.tls.label": "",
- "settings.admin.authentication.updateEmail.description": "",
- "settings.admin.authentication.updateEmail.label": "",
- "settings.admin.authentication.updateName.description": "",
- "settings.admin.authentication.updateName.label": "",
- "settings.admin.authentication.updatePicture.description": "",
- "settings.admin.authentication.updatePicture.label": "",
- "settings.admin.authentication.usernameClaim.description": "",
- "settings.admin.authentication.usernameClaim.label": "",
- "settings.admin.authentication.validateCertificate.description": "",
- "settings.admin.authentication.validateCertificate.label": "",
- "settings.admin.codeExecution.codeExecutionEngine.description": "",
- "settings.admin.codeExecution.codeExecutionEngine.label": "",
- "settings.admin.codeExecution.codeExecutionJupyterAuth.description": "",
- "settings.admin.codeExecution.codeExecutionJupyterAuth.label": "",
- "settings.admin.codeExecution.codeExecutionJupyterAuthPassword.description": "",
- "settings.admin.codeExecution.codeExecutionJupyterAuthPassword.label": "",
- "settings.admin.codeExecution.codeExecutionJupyterAuthToken.label": "",
- "settings.admin.codeExecution.codeExecutionJupyterTimeout.description": "",
- "settings.admin.codeExecution.codeExecutionJupyterTimeout.label": "",
- "settings.admin.codeExecution.codeExecutionJupyterUrl.description": "",
- "settings.admin.codeExecution.codeExecutionJupyterUrl.label": "",
- "settings.admin.codeExecution.codeInterpreterEngine.description": "",
- "settings.admin.codeExecution.codeInterpreterEngine.label": "",
- "settings.admin.codeExecution.codeInterpreterJupyterAuth.description": "",
- "settings.admin.codeExecution.codeInterpreterJupyterAuth.label": "",
- "settings.admin.codeExecution.codeInterpreterJupyterAuthPassword.description": "",
- "settings.admin.codeExecution.codeInterpreterJupyterAuthPassword.label": "",
- "settings.admin.codeExecution.codeInterpreterJupyterAuthToken.label": "",
- "settings.admin.codeExecution.codeInterpreterJupyterTimeout.description": "",
- "settings.admin.codeExecution.codeInterpreterJupyterTimeout.label": "",
- "settings.admin.codeExecution.codeInterpreterJupyterUrl.description": "",
- "settings.admin.codeExecution.codeInterpreterJupyterUrl.label": "",
- "settings.admin.codeExecution.codeInterpreterPromptTemplate.description": "",
- "settings.admin.codeExecution.codeInterpreterPromptTemplate.label": "",
- "settings.admin.codeExecution.enableCodeExecution.description": "",
- "settings.admin.codeExecution.enableCodeExecution.label": "",
- "settings.admin.codeExecution.enableCodeInterpreter.description": "",
- "settings.admin.codeExecution.enableCodeInterpreter.label": "",
- "settings.admin.codeExecution.sections.codeExecution.title": "",
- "settings.admin.codeExecution.sections.codeInterpreter.title": "",
- "settings.admin.codeExecution.title": "",
- "settings.admin.connections.addConnection.label": "",
- "settings.admin.connections.cacheBaseModelList.description": "",
- "settings.admin.connections.cacheBaseModelList.label": "",
- "settings.admin.connections.directConnections.description": "",
- "settings.admin.connections.directConnections.label": "",
- "settings.admin.connections.directIntegrations.description": "",
- "settings.admin.connections.directIntegrations.label": "",
+ "settings.admin.authentication.label.description": "Nama tampilan untuk koneksi LDAP ini.",
+ "settings.admin.authentication.label.label": "Label",
+ "settings.admin.authentication.ldap.description": "Izinkan pengguna untuk mengautentikasi dengan direktori LDAP.",
+ "settings.admin.authentication.ldap.label": "LDAP",
+ "settings.admin.authentication.loginForm.description": "Tampilkan formulir masuk email dan kata sandi pada halaman masuk. Konfigurasikan SSO atau LDAP sebelum menonaktifkannya. Menonaktifkan ini juga memblokir pendaftaran lokal; akses API kata sandi tidak berubah.",
+ "settings.admin.authentication.loginForm.label": "Formulir Masuk",
+ "settings.admin.authentication.mergeAccountsByEmail.description": "Tautkan proses masuk OAuth ke akun yang sudah ada dengan email yang sama.",
+ "settings.admin.authentication.mergeAccountsByEmail.label": "Gabungkan Akun berdasarkan Email",
+ "settings.admin.authentication.newSignUps.description": "Izinkan pengguna baru untuk membuat akun.",
+ "settings.admin.authentication.newSignUps.label": "Pendaftaran Baru",
+ "settings.admin.authentication.oauthOidc.description": "Izinkan pengguna untuk mengautentikasi dengan penyedia OAuth / OIDC.",
+ "settings.admin.authentication.oauthOidc.label": "OAuth / OIDC",
+ "settings.admin.authentication.oauthSignup.description": "Izinkan pengguna membuat akun melalui OAuth.",
+ "settings.admin.authentication.oauthSignup.label": "Pendaftaran OAuth",
+ "settings.admin.authentication.pendingUserOverlayContent.description": "Pesan khusus yang ditampilkan saat akun menunggu persetujuan.",
+ "settings.admin.authentication.pendingUserOverlayContent.label": "Konten Hamparan Pengguna Tertunda",
+ "settings.admin.authentication.pendingUserOverlayTitle.description": "Judul khusus yang ditampilkan saat akun menunggu persetujuan.",
+ "settings.admin.authentication.pendingUserOverlayTitle.label": "Judul Hamparan Pengguna Tertunda",
+ "settings.admin.authentication.pictureClaim.description": "Klaim yang digunakan sebagai URL foto profil.",
+ "settings.admin.authentication.pictureClaim.label": "Klaim Foto Profil",
+ "settings.admin.authentication.port.description": "Port server LDAP.",
+ "settings.admin.authentication.port.label": "Port",
+ "settings.admin.authentication.providerName.description": "Nama tampilan yang ditampilkan untuk penyedia OAuth.",
+ "settings.admin.authentication.providerName.label": "Nama Penyedia",
+ "settings.admin.authentication.providerUrl.description": "URL penemuan OpenID untuk penyedia ini.",
+ "settings.admin.authentication.providerUrl.label": "URL Penyedia",
+ "settings.admin.authentication.redirectUri.description": "URI panggilan balik yang terdaftar pada penyedia.",
+ "settings.admin.authentication.redirectUri.label": "URI Pengalihan",
+ "settings.admin.authentication.roleMapping.description": "Petakan klaim OAuth ke peran Open WebUI.",
+ "settings.admin.authentication.roleMapping.label": "Pemetaan Peran",
+ "settings.admin.authentication.rolesClaim.description": "Klaim yang memuat peran penyedia.",
+ "settings.admin.authentication.rolesClaim.label": "Klaim Peran",
+ "settings.admin.authentication.scopes.description": "Cakupan OAuth yang diminta saat masuk.",
+ "settings.admin.authentication.scopes.label": "Cakupan",
+ "settings.admin.authentication.searchBase.description": "DN dasar yang digunakan saat mencari pengguna.",
+ "settings.admin.authentication.searchBase.label": "Basis Pencarian",
+ "settings.admin.authentication.searchFilters.description": "Filter LDAP yang digunakan untuk mencocokkan pengguna yang masuk.",
+ "settings.admin.authentication.searchFilters.label": "Filter Pencarian",
+ "settings.admin.authentication.sections.ldap.title": "LDAP",
+ "settings.admin.authentication.sections.oauthOidc.title": "OAuth / OIDC",
+ "settings.admin.authentication.sections.pendingAccounts.title": "Akun Tertunda",
+ "settings.admin.authentication.sections.userAccess.title": "Akses Pengguna",
+ "settings.admin.authentication.subClaim.description": "Klaim yang digunakan sebagai pengidentifikasi pengguna yang stabil.",
+ "settings.admin.authentication.subClaim.label": "Klaim Sub",
+ "settings.admin.authentication.title": "Autentikasi",
+ "settings.admin.authentication.tls.description": "Gunakan TLS saat menyambung ke server LDAP.",
+ "settings.admin.authentication.tls.label": "TLS",
+ "settings.admin.authentication.updateEmail.description": "Perbarui email akun dari OAuth saat masuk.",
+ "settings.admin.authentication.updateEmail.label": "Perbarui Email",
+ "settings.admin.authentication.updateName.description": "Perbarui nama akun dari OAuth saat masuk.",
+ "settings.admin.authentication.updateName.label": "Perbarui Nama",
+ "settings.admin.authentication.updatePicture.description": "Perbarui foto profil dari OAuth saat masuk.",
+ "settings.admin.authentication.updatePicture.label": "Perbarui Foto",
+ "settings.admin.authentication.usernameClaim.description": "Klaim yang digunakan sebagai nama tampilan.",
+ "settings.admin.authentication.usernameClaim.label": "Klaim Nama Pengguna",
+ "settings.admin.authentication.validateCertificate.description": "Verifikasi sertifikat server LDAP saat TLS diaktifkan.",
+ "settings.admin.authentication.validateCertificate.label": "Validasi Sertifikat",
+ "settings.admin.codeExecution.codeExecutionEngine.description": "Pilih runtime yang digunakan untuk blok kode yang dihasilkan.",
+ "settings.admin.codeExecution.codeExecutionEngine.label": "Mesin Eksekusi Kode",
+ "settings.admin.codeExecution.codeExecutionJupyterAuth.description": "Pilih cara Open WebUI mengautentikasi ke server Jupyter.",
+ "settings.admin.codeExecution.codeExecutionJupyterAuth.label": "Autentikasi Jupyter",
+ "settings.admin.codeExecution.codeExecutionJupyterAuthPassword.description": "Kredensial yang digunakan untuk autentikasi ke server Jupyter.",
+ "settings.admin.codeExecution.codeExecutionJupyterAuthPassword.label": "Kata Sandi Jupyter",
+ "settings.admin.codeExecution.codeExecutionJupyterAuthToken.label": "Token Jupyter",
+ "settings.admin.codeExecution.codeExecutionJupyterTimeout.description": "Waktu eksekusi maksimum dalam detik sebelum eksekusi dihentikan.",
+ "settings.admin.codeExecution.codeExecutionJupyterTimeout.label": "Batas Waktu Eksekusi Kode",
+ "settings.admin.codeExecution.codeExecutionJupyterUrl.description": "Hubungkan eksekusi kode ke titik akhir server Jupyter.",
+ "settings.admin.codeExecution.codeExecutionJupyterUrl.label": "URL Jupyter",
+ "settings.admin.codeExecution.codeInterpreterEngine.description": "Pilih runtime yang digunakan oleh alat penafsir kode.",
+ "settings.admin.codeExecution.codeInterpreterEngine.label": "Mesin Penafsir Kode",
+ "settings.admin.codeExecution.codeInterpreterJupyterAuth.description": "Pilih cara Open WebUI mengautentikasi ke server Jupyter.",
+ "settings.admin.codeExecution.codeInterpreterJupyterAuth.label": "Autentikasi Jupyter",
+ "settings.admin.codeExecution.codeInterpreterJupyterAuthPassword.description": "Kredensial yang digunakan untuk autentikasi ke server Jupyter.",
+ "settings.admin.codeExecution.codeInterpreterJupyterAuthPassword.label": "Kata Sandi Jupyter",
+ "settings.admin.codeExecution.codeInterpreterJupyterAuthToken.label": "Token Jupyter",
+ "settings.admin.codeExecution.codeInterpreterJupyterTimeout.description": "Waktu eksekusi maksimum dalam detik sebelum eksekusi dihentikan.",
+ "settings.admin.codeExecution.codeInterpreterJupyterTimeout.label": "Batas Waktu Eksekusi Kode",
+ "settings.admin.codeExecution.codeInterpreterJupyterUrl.description": "Hubungkan interpreter kode ke endpoint server Jupyter.",
+ "settings.admin.codeExecution.codeInterpreterJupyterUrl.label": "URL Jupyter",
+ "settings.admin.codeExecution.codeInterpreterPromptTemplate.description": "Biarkan kosong untuk menggunakan prompt bawaan, atau masukkan prompt kustom.",
+ "settings.admin.codeExecution.codeInterpreterPromptTemplate.label": "Templat Prompt Interpreter Kode",
+ "settings.admin.codeExecution.enableCodeExecution.description": "Izinkan model menjalankan kode yang dihasilkan dan mengembalikan hasil eksekusi.",
+ "settings.admin.codeExecution.enableCodeExecution.label": "Aktifkan Eksekusi Kode",
+ "settings.admin.codeExecution.enableCodeInterpreter.description": "Izinkan model menggunakan alat interpreter kode selama obrolan.",
+ "settings.admin.codeExecution.enableCodeInterpreter.label": "Aktifkan Interpreter Kode",
+ "settings.admin.codeExecution.sections.codeExecution.title": "Eksekusi Kode",
+ "settings.admin.codeExecution.sections.codeInterpreter.title": "Interpreter Kode",
+ "settings.admin.codeExecution.title": "Eksekusi Kode",
+ "settings.admin.connections.addConnection.label": "Tambah Koneksi",
+ "settings.admin.connections.cacheBaseModelList.description": "Tembolok Daftar Model Dasar mempercepat akses dengan hanya mengambil model dasar saat startup atau saat pengaturan disimpan—lebih cepat, tetapi mungkin tidak menampilkan perubahan model dasar terbaru.",
+ "settings.admin.connections.cacheBaseModelList.label": "Tembolokkan Daftar Model Dasar",
+ "settings.admin.connections.directConnections.description": "Koneksi Langsung memungkinkan pengguna terhubung ke endpoint API mereka sendiri yang kompatibel dengan OpenAI.",
+ "settings.admin.connections.directConnections.label": "Koneksi Langsung",
+ "settings.admin.connections.directIntegrations.description": "Tampilkan tab Integrasi untuk pengguna yang memiliki izin mengelola koneksi alat dan terminal mereka sendiri, termasuk admin. Menyembunyikannya tidak akan menonaktifkan koneksi yang ada.",
+ "settings.admin.connections.directIntegrations.label": "Integrasi Langsung",
"settings.admin.connections.manageOllamaApiConnections.description": "Kesulitan mengakses Ollama?",
- "settings.admin.connections.manageOllamaApiConnections.label": "",
- "settings.admin.connections.manageOpenaiApiConnections.label": "",
+ "settings.admin.connections.manageOllamaApiConnections.label": "Kelola Koneksi API Ollama",
+ "settings.admin.connections.manageOpenaiApiConnections.label": "Kelola Koneksi API OpenAI",
"settings.admin.connections.ollamaApi.label": "API Ollama",
"settings.admin.connections.openaiApi.label": "API OpenAI",
- "settings.admin.connections.refreshModels.label": "",
- "settings.admin.connections.sections.userConnections.title": "",
+ "settings.admin.connections.refreshModels.label": "Segarkan",
+ "settings.admin.connections.sections.userConnections.title": "Koneksi Pengguna",
"settings.admin.connections.title": "Koneksi",
- "settings.admin.db.allChats.description": "",
- "settings.admin.db.allChats.label": "",
- "settings.admin.db.database.description": "",
+ "settings.admin.db.allChats.description": "Unduh riwayat obrolan semua pengguna sebagai JSON.",
+ "settings.admin.db.allChats.label": "Semua Obrolan",
+ "settings.admin.db.database.description": "Unduh basis data aplikasi jika didukung.",
"settings.admin.db.database.label": "Basis data",
- "settings.admin.db.exportConfig.description": "",
- "settings.admin.db.exportConfig.label": "",
- "settings.admin.db.importConfig.description": "",
- "settings.admin.db.importConfig.label": "",
- "settings.admin.db.sections.config.title": "",
+ "settings.admin.db.exportConfig.description": "Unduh konfigurasi admin saat ini sebagai JSON.",
+ "settings.admin.db.exportConfig.label": "Ekspor Konfigurasi",
+ "settings.admin.db.importConfig.description": "Impor konfigurasi admin dari berkas ekspor JSON.",
+ "settings.admin.db.importConfig.label": "Impor Konfigurasi",
+ "settings.admin.db.sections.config.title": "Konfigurasi",
"settings.admin.db.sections.export.title": "Ekspor",
"settings.admin.db.title": "Basis data",
- "settings.admin.db.users.description": "",
+ "settings.admin.db.users.description": "Unduh semua pengguna sebagai CSV.",
"settings.admin.db.users.label": "Pengguna",
- "settings.admin.documents.additionalConfig.description": "",
- "settings.admin.documents.additionalConfig.label": "",
- "settings.admin.documents.allowedFileExtensions.description": "",
- "settings.admin.documents.allowedFileExtensions.label": "",
- "settings.admin.documents.apiMode.description": "",
- "settings.admin.documents.apiMode.label": "",
- "settings.admin.documents.apiTimeout.description": "",
- "settings.admin.documents.apiTimeout.label": "",
- "settings.admin.documents.apiToken.description": "",
- "settings.admin.documents.apiToken.label": "",
- "settings.admin.documents.apiUrl.description": "",
- "settings.admin.documents.apiUrl.label": "",
- "settings.admin.documents.asyncEmbeddingProcessing.description": "",
- "settings.admin.documents.asyncEmbeddingProcessing.label": "",
- "settings.admin.documents.azureopenaikey.description": "",
+ "settings.admin.documents.additionalConfig.description": "Opsi JSON yang diteruskan ke Marker untuk perilaku penguraian tingkat lanjut.",
+ "settings.admin.documents.additionalConfig.label": "Konfigurasi Tambahan",
+ "settings.admin.documents.allowedFileExtensions.description": "Ekstensi unggahan yang dipisahkan koma. Biarkan kosong untuk semua jenis berkas.",
+ "settings.admin.documents.allowedFileExtensions.label": "Ekstensi Berkas yang Diizinkan",
+ "settings.admin.documents.apiMode.description": "Pilih mode API MinerU lokal atau cloud.",
+ "settings.admin.documents.apiMode.label": "Mode API",
+ "settings.admin.documents.apiTimeout.description": "Waktu maksimum dalam detik untuk menunggu respons API MinerU.",
+ "settings.admin.documents.apiTimeout.label": "Batas Waktu API",
+ "settings.admin.documents.apiToken.description": "Token API yang dikirim ke PaddleOCR-vl.",
+ "settings.admin.documents.apiToken.label": "Token API",
+ "settings.admin.documents.apiUrl.description": "Endpoint API MinerU untuk mode yang dipilih.",
+ "settings.admin.documents.apiUrl.label": "URL API",
+ "settings.admin.documents.asyncEmbeddingProcessing.description": "Jalankan tugas embedding secara asinkron untuk mempercepat pemrosesan.",
+ "settings.admin.documents.asyncEmbeddingProcessing.label": "Pemrosesan Embedding Asinkron",
+ "settings.admin.documents.azureopenaikey.description": "Kunci API Azure OpenAI.",
"settings.admin.documents.azureopenaikey.label": "Kunci API",
- "settings.admin.documents.azureopenaiurl.description": "",
+ "settings.admin.documents.azureopenaiurl.description": "Endpoint Azure OpenAI yang digunakan untuk embedding.",
"settings.admin.documents.azureopenaiurl.label": "URL Dasar API",
- "settings.admin.documents.bm25Weight.description": "",
- "settings.admin.documents.bm25Weight.label": "",
- "settings.admin.documents.bypassEmbeddingAndRetrieval.description": "",
- "settings.admin.documents.bypassEmbeddingAndRetrieval.label": "",
- "settings.admin.documents.chunkMinSizeTarget.description": "",
- "settings.admin.documents.chunkMinSizeTarget.label": "",
- "settings.admin.documents.chunkOverlap.description": "",
+ "settings.admin.documents.bm25Weight.description": "Seimbangkan pembobotan semantik dan leksikal untuk pencarian hibrida.",
+ "settings.admin.documents.bm25Weight.label": "Bobot BM25",
+ "settings.admin.documents.bypassEmbeddingAndRetrieval.description": "Sisipkan seluruh konten sebagai konteks untuk pemrosesan menyeluruh.",
+ "settings.admin.documents.bypassEmbeddingAndRetrieval.label": "Lewati Embedding dan Pengambilan",
+ "settings.admin.documents.chunkMinSizeTarget.description": "Gabungkan potongan yang lebih kecil dari ambang batas ini jika memungkinkan. Atur ke 0 untuk menonaktifkan penggabungan.",
+ "settings.admin.documents.chunkMinSizeTarget.label": "Target Ukuran Minimum Potongan",
+ "settings.admin.documents.chunkOverlap.description": "Tumpang tindih yang dipertahankan antar potongan yang berdekatan.",
"settings.admin.documents.chunkOverlap.label": "Tumpang Tindih Potongan",
- "settings.admin.documents.chunkSize.description": "",
+ "settings.admin.documents.chunkSize.description": "Ukuran maksimum untuk setiap potongan teks.",
"settings.admin.documents.chunkSize.label": "Ukuran Potongan",
- "settings.admin.documents.contentExtractionEngine.description": "",
- "settings.admin.documents.contentExtractionEngine.label": "",
- "settings.admin.documents.datalabMarkerApiBaseUrl.description": "",
+ "settings.admin.documents.contentExtractionEngine.description": "Pilih cara penguraian dokumen yang diunggah sebelum pengindeksan.",
+ "settings.admin.documents.contentExtractionEngine.label": "Mesin Ekstraksi Konten",
+ "settings.admin.documents.datalabMarkerApiBaseUrl.description": "Endpoint layanan Datalab Marker yang digunakan untuk penguraian dokumen.",
"settings.admin.documents.datalabMarkerApiBaseUrl.label": "URL Dasar API",
- "settings.admin.documents.datalabMarkerApiKey.description": "",
+ "settings.admin.documents.datalabMarkerApiKey.description": "Kunci API yang digunakan untuk autentikasi dengan Datalab Marker.",
"settings.admin.documents.datalabMarkerApiKey.label": "Kunci API",
- "settings.admin.documents.disableImageExtraction.description": "",
- "settings.admin.documents.disableImageExtraction.label": "",
- "settings.admin.documents.doclingApiKey.description": "",
+ "settings.admin.documents.disableImageExtraction.description": "Jangan ekstrak gambar dari PDF selama pemrosesan Marker.",
+ "settings.admin.documents.disableImageExtraction.label": "Nonaktifkan Ekstraksi Gambar",
+ "settings.admin.documents.doclingApiKey.description": "Kunci API yang dikirim ke Docling.",
"settings.admin.documents.doclingApiKey.label": "Kunci API",
- "settings.admin.documents.doclingParams.description": "",
- "settings.admin.documents.doclingParams.label": "",
- "settings.admin.documents.doclingServerUrl.description": "",
- "settings.admin.documents.doclingServerUrl.label": "",
- "settings.admin.documents.documentIntelligenceKey.description": "",
- "settings.admin.documents.documentIntelligenceKey.label": "",
- "settings.admin.documents.documentIntelligenceModel.description": "",
- "settings.admin.documents.documentIntelligenceModel.label": "",
- "settings.admin.documents.documentLoaderUrl.description": "",
- "settings.admin.documents.documentLoaderUrl.label": "",
- "settings.admin.documents.embeddingBatchSize.description": "",
+ "settings.admin.documents.doclingParams.description": "Parameter Docling tambahan dalam format JSON.",
+ "settings.admin.documents.doclingParams.label": "Parameter",
+ "settings.admin.documents.doclingServerUrl.description": "Endpoint layanan Docling yang digunakan untuk penguraian.",
+ "settings.admin.documents.doclingServerUrl.label": "URL Server Docling",
+ "settings.admin.documents.documentIntelligenceKey.description": "Kredensial yang digunakan untuk Document Intelligence.",
+ "settings.admin.documents.documentIntelligenceKey.label": "Kunci",
+ "settings.admin.documents.documentIntelligenceModel.description": "Nama model yang digunakan oleh Document Intelligence.",
+ "settings.admin.documents.documentIntelligenceModel.label": "Model Document Intelligence",
+ "settings.admin.documents.documentLoaderUrl.description": "Endpoint layanan eksternal yang digunakan untuk memuat konten dokumen.",
+ "settings.admin.documents.documentLoaderUrl.label": "URL Pemuat Dokumen",
+ "settings.admin.documents.embeddingBatchSize.description": "Jumlah item yang diproses per batch embedding.",
"settings.admin.documents.embeddingBatchSize.label": "Menyematkan Ukuran Batch",
- "settings.admin.documents.embeddingConcurrentRequests.description": "",
- "settings.admin.documents.embeddingConcurrentRequests.label": "",
- "settings.admin.documents.embeddingModel.description": "",
+ "settings.admin.documents.embeddingConcurrentRequests.description": "Maksimum permintaan embedding bersamaan. Atur ke 0 untuk tanpa batas.",
+ "settings.admin.documents.embeddingConcurrentRequests.label": "Permintaan Embedding Bersamaan",
+ "settings.admin.documents.embeddingModel.description": "Model yang digunakan untuk menghasilkan embedding. Indeks ulang pengetahuan setelah mengubah ini.",
"settings.admin.documents.embeddingModel.label": "Model Penyematan",
- "settings.admin.documents.embeddingModelEngine.description": "",
+ "settings.admin.documents.embeddingModelEngine.description": "Penyedia yang digunakan untuk menghasilkan embedding dokumen.",
"settings.admin.documents.embeddingModelEngine.label": "Mesin Model Penyematan",
- "settings.admin.documents.endpoint.description": "",
- "settings.admin.documents.endpoint.label": "",
- "settings.admin.documents.enrichHybridSearchText.description": "",
- "settings.admin.documents.enrichHybridSearchText.label": "",
- "settings.admin.documents.externalDocumentLoaderApiKey.description": "",
+ "settings.admin.documents.endpoint.description": "Endpoint Document Intelligence yang digunakan untuk penguraian.",
+ "settings.admin.documents.endpoint.label": "Endpoint",
+ "settings.admin.documents.enrichHybridSearchText.description": "Tambahkan nama file, judul, bagian, dan cuplikan untuk meningkatkan pemanggilan leksikal.",
+ "settings.admin.documents.enrichHybridSearchText.label": "Perkaya Teks Pencarian Hibrida",
+ "settings.admin.documents.externalDocumentLoaderApiKey.description": "Kunci API yang dikirim ke pemuat dokumen eksternal.",
"settings.admin.documents.externalDocumentLoaderApiKey.label": "Kunci API",
- "settings.admin.documents.fileExtensions.description": "",
- "settings.admin.documents.fileExtensions.label": "",
- "settings.admin.documents.forceOcr.description": "",
- "settings.admin.documents.forceOcr.label": "",
- "settings.admin.documents.formatLines.description": "",
- "settings.admin.documents.formatLines.label": "",
- "settings.admin.documents.fullContextMode.description": "",
- "settings.admin.documents.fullContextMode.label": "",
- "settings.admin.documents.googleDrive.description": "",
- "settings.admin.documents.googleDrive.label": "",
- "settings.admin.documents.headers.description": "",
- "settings.admin.documents.headers.label": "",
- "settings.admin.documents.headerVariables.label": "",
- "settings.admin.documents.hybridSearch.description": "",
+ "settings.admin.documents.fileExtensions.description": "Ekstensi yang dipisahkan koma yang harus ditangani MinerU.",
+ "settings.admin.documents.fileExtensions.label": "Ekstensi File",
+ "settings.admin.documents.forceOcr.description": "Jalankan OCR pada semua halaman PDF, termasuk halaman dengan teks tersemat.",
+ "settings.admin.documents.forceOcr.label": "Paksa OCR",
+ "settings.admin.documents.formatLines.description": "Format baris untuk mendeteksi gaya dan rumus matematika sebaris.",
+ "settings.admin.documents.formatLines.label": "Format Baris",
+ "settings.admin.documents.fullContextMode.description": "Sisipkan seluruh dokumen sebagai konteks untuk pemrosesan menyeluruh.",
+ "settings.admin.documents.fullContextMode.label": "Mode Konteks Penuh",
+ "settings.admin.documents.googleDrive.description": "Izinkan Google Drive sebagai sumber dokumen.",
+ "settings.admin.documents.googleDrive.label": "Google Drive",
+ "settings.admin.documents.headers.description": "Header JSON tambahan yang dikirim ke pemuat dokumen eksternal.",
+ "settings.admin.documents.headers.label": "Header",
+ "settings.admin.documents.headerVariables.label": "Variabel header",
+ "settings.admin.documents.hybridSearch.description": "Gabungkan pengambilan semantik dan kata kunci.",
"settings.admin.documents.hybridSearch.label": "Pencarian Hibrida",
- "settings.admin.documents.imageCompressionHeight.description": "",
- "settings.admin.documents.imageCompressionHeight.label": "",
- "settings.admin.documents.imageCompressionWidth.description": "",
- "settings.admin.documents.imageCompressionWidth.label": "",
- "settings.admin.documents.markdownHeaderTextSplitter.description": "",
- "settings.admin.documents.markdownHeaderTextSplitter.label": "",
- "settings.admin.documents.maxUploadCount.description": "",
- "settings.admin.documents.maxUploadCount.label": "",
- "settings.admin.documents.maxUploadSize.description": "",
- "settings.admin.documents.maxUploadSize.label": "",
- "settings.admin.documents.mineruApiKey.description": "",
+ "settings.admin.documents.imageCompressionHeight.description": "Tinggi piksel untuk mengompresi gambar. Biarkan kosong jika tanpa kompresi.",
+ "settings.admin.documents.imageCompressionHeight.label": "Tinggi Kompresi Gambar",
+ "settings.admin.documents.imageCompressionWidth.description": "Lebar piksel untuk mengompresi gambar. Biarkan kosong jika tanpa kompresi.",
+ "settings.admin.documents.imageCompressionWidth.label": "Lebar Kompresi Gambar",
+ "settings.admin.documents.markdownHeaderTextSplitter.description": "Bagi dokumen berdasarkan tajuk markdown sebelum pemisahan karakter atau token.",
+ "settings.admin.documents.markdownHeaderTextSplitter.label": "Pemisah Teks Tajuk Markdown",
+ "settings.admin.documents.maxUploadCount.description": "Jumlah maksimum berkas yang dapat digunakan sekaligus dalam percakapan.",
+ "settings.admin.documents.maxUploadCount.label": "Jumlah Unggahan Maksimum",
+ "settings.admin.documents.maxUploadSize.description": "Ukuran berkas maksimum dalam MB. Kosongkan untuk tanpa batas.",
+ "settings.admin.documents.maxUploadSize.label": "Ukuran Unggahan Maksimum",
+ "settings.admin.documents.mineruApiKey.description": "Kunci API yang digunakan untuk mode cloud MinerU.",
"settings.admin.documents.mineruApiKey.label": "Kunci API",
- "settings.admin.documents.mineruParams.description": "",
- "settings.admin.documents.mineruParams.label": "",
- "settings.admin.documents.mistralOcrApiBaseUrl.description": "",
+ "settings.admin.documents.mineruParams.description": "Parameter penguraian lanjutan MinerU dalam format JSON.",
+ "settings.admin.documents.mineruParams.label": "Parameter",
+ "settings.admin.documents.mistralOcrApiBaseUrl.description": "Titik akhir layanan Mistral OCR.",
"settings.admin.documents.mistralOcrApiBaseUrl.label": "URL Dasar API",
- "settings.admin.documents.mistralOcrApiKey.description": "",
+ "settings.admin.documents.mistralOcrApiKey.description": "Kunci API yang dikirim ke Mistral OCR.",
"settings.admin.documents.mistralOcrApiKey.label": "Kunci API",
- "settings.admin.documents.ollamakey.description": "",
+ "settings.admin.documents.ollamakey.description": "Kunci API opsional untuk permintaan Ollama.",
"settings.admin.documents.ollamakey.label": "Kunci API",
- "settings.admin.documents.ollamaurl.description": "",
+ "settings.admin.documents.ollamaurl.description": "Titik akhir Ollama yang digunakan untuk embedding.",
"settings.admin.documents.ollamaurl.label": "URL Dasar API",
- "settings.admin.documents.onedrive.description": "",
- "settings.admin.documents.onedrive.label": "",
- "settings.admin.documents.openaikey.description": "",
+ "settings.admin.documents.onedrive.description": "Izinkan OneDrive sebagai sumber dokumen.",
+ "settings.admin.documents.onedrive.label": "OneDrive",
+ "settings.admin.documents.openaikey.description": "Kunci API untuk permintaan embedding.",
"settings.admin.documents.openaikey.label": "Kunci API",
- "settings.admin.documents.openaiurl.description": "",
+ "settings.admin.documents.openaiurl.description": "Titik akhir embedding yang kompatibel dengan OpenAI.",
"settings.admin.documents.openaiurl.label": "URL Dasar API",
- "settings.admin.documents.outputFormat.description": "",
- "settings.admin.documents.outputFormat.label": "",
- "settings.admin.documents.paddleocrVlBaseUrl.description": "",
+ "settings.admin.documents.outputFormat.description": "Format keluaran teks yang dihasilkan oleh Marker.",
+ "settings.admin.documents.outputFormat.label": "Format Keluaran",
+ "settings.admin.documents.paddleocrVlBaseUrl.description": "Titik akhir layanan PaddleOCR-vl.",
"settings.admin.documents.paddleocrVlBaseUrl.label": "URL Dasar API",
- "settings.admin.documents.paginate.description": "",
- "settings.admin.documents.paginate.label": "",
- "settings.admin.documents.pdfExtractImagesOcr.description": "",
+ "settings.admin.documents.paginate.description": "Pisahkan keluaran per halaman dengan penanda halaman.",
+ "settings.admin.documents.paginate.label": "Paginasi",
+ "settings.admin.documents.pdfExtractImagesOcr.description": "Ekstrak gambar dari PDF agar OCR dapat memproses halaman yang hanya berisi gambar.",
"settings.admin.documents.pdfExtractImagesOcr.label": "Ekstrak Gambar PDF (OCR)",
- "settings.admin.documents.pdfLoaderMode.description": "",
- "settings.admin.documents.pdfLoaderMode.label": "",
- "settings.admin.documents.ragExternalRerankerApiKey.description": "",
+ "settings.admin.documents.pdfLoaderMode.description": "Mode halaman membuat satu dokumen per halaman. Mode tunggal mempertahankan halaman tetap menyatu untuk pemotongan lintas batas.",
+ "settings.admin.documents.pdfLoaderMode.label": "Mode Pemuat PDF",
+ "settings.admin.documents.ragExternalRerankerApiKey.description": "Kunci API yang dikirim ke peringkat ulang eksternal.",
"settings.admin.documents.ragExternalRerankerApiKey.label": "Kunci API",
- "settings.admin.documents.ragExternalRerankerUrl.description": "",
+ "settings.admin.documents.ragExternalRerankerUrl.description": "Titik akhir peringkat ulang eksternal.",
"settings.admin.documents.ragExternalRerankerUrl.label": "URL Dasar API",
- "settings.admin.documents.ragTemplate.description": "",
+ "settings.admin.documents.ragTemplate.description": "Templat prompt yang digunakan saat konteks yang diambil disisipkan.",
"settings.admin.documents.ragTemplate.label": "Templat RAG",
- "settings.admin.documents.reindex.label": "",
- "settings.admin.documents.reindexKnowledgeAndMemoryVectors.description": "",
- "settings.admin.documents.reindexKnowledgeAndMemoryVectors.label": "",
- "settings.admin.documents.relevanceThreshold.description": "",
- "settings.admin.documents.relevanceThreshold.label": "",
- "settings.admin.documents.rerankingBatchSize.description": "",
- "settings.admin.documents.rerankingBatchSize.label": "",
- "settings.admin.documents.rerankingEngine.description": "",
- "settings.admin.documents.rerankingEngine.label": "",
- "settings.admin.documents.rerankingModel.description": "",
+ "settings.admin.documents.reindex.label": "Indeks Ulang",
+ "settings.admin.documents.reindexKnowledgeAndMemoryVectors.description": "Bangun ulang vektor untuk berkas pengetahuan, pencarian pengetahuan, dan memori yang ada.",
+ "settings.admin.documents.reindexKnowledgeAndMemoryVectors.label": "Indeks Ulang Vektor Pengetahuan dan Memori",
+ "settings.admin.documents.relevanceThreshold.description": "Hanya kembalikan dokumen dengan skor lebih besar dari atau sama dengan nilai ini.",
+ "settings.admin.documents.relevanceThreshold.label": "Ambang Relevansi",
+ "settings.admin.documents.rerankingBatchSize.description": "Jumlah hasil yang diproses per batch pemeringkatan ulang.",
+ "settings.admin.documents.rerankingBatchSize.label": "Ukuran Batch Pemeringkatan Ulang",
+ "settings.admin.documents.rerankingEngine.description": "Penyedia yang digunakan untuk memeringkat ulang hasil pencarian hibrida.",
+ "settings.admin.documents.rerankingEngine.label": "Mesin Pemeringkat Ulang",
+ "settings.admin.documents.rerankingModel.description": "Model yang digunakan untuk memeringkat ulang hasil yang diambil.",
"settings.admin.documents.rerankingModel.label": "Model Pemeringkatan Ulang",
- "settings.admin.documents.resetUploadDirectory.description": "",
+ "settings.admin.documents.resetUploadDirectory.description": "Hapus berkas yang diunggah dari direktori unggahan.",
"settings.admin.documents.resetUploadDirectory.label": "Setel Ulang Direktori Unggahan",
- "settings.admin.documents.resetVectorStorageKnowledge.description": "",
- "settings.admin.documents.resetVectorStorageKnowledge.label": "",
- "settings.admin.documents.sections.contentExtraction.title": "",
- "settings.admin.documents.sections.dangerZone.title": "",
- "settings.admin.documents.sections.embedding.title": "",
- "settings.admin.documents.sections.files.title": "",
- "settings.admin.documents.sections.integration.title": "",
- "settings.admin.documents.sections.retrieval.title": "",
- "settings.admin.documents.skipCache.description": "",
- "settings.admin.documents.skipCache.label": "",
- "settings.admin.documents.stripExistingOcr.description": "",
- "settings.admin.documents.stripExistingOcr.label": "",
- "settings.admin.documents.supportedMediaMimeTypes.description": "",
- "settings.admin.documents.supportedMediaMimeTypes.label": "",
- "settings.admin.documents.textSplitter.description": "",
- "settings.admin.documents.textSplitter.label": "",
- "settings.admin.documents.tikaServerUrl.description": "",
- "settings.admin.documents.tikaServerUrl.label": "",
- "settings.admin.documents.tikaServerVersion.description": "",
- "settings.admin.documents.tikaServerVersion.label": "",
- "settings.admin.documents.title": "",
- "settings.admin.documents.tokenizerModel.description": "",
- "settings.admin.documents.tokenizerModel.label": "",
- "settings.admin.documents.topK.description": "",
+ "settings.admin.documents.resetVectorStorageKnowledge.description": "Hapus penyimpanan vektor dan data pengindeksan pengetahuan.",
+ "settings.admin.documents.resetVectorStorageKnowledge.label": "Atur Ulang Penyimpanan Vektor/Pengetahuan",
+ "settings.admin.documents.sections.contentExtraction.title": "Ekstraksi Konten",
+ "settings.admin.documents.sections.dangerZone.title": "Zona Bahaya",
+ "settings.admin.documents.sections.embedding.title": "Embedding",
+ "settings.admin.documents.sections.files.title": "Berkas",
+ "settings.admin.documents.sections.integration.title": "Integrasi",
+ "settings.admin.documents.sections.retrieval.title": "Pengambilan",
+ "settings.admin.documents.skipCache.description": "Lewati hasil Marker yang disimpan dalam cache dan jalankan ulang inferensi.",
+ "settings.admin.documents.skipCache.label": "Lewati Cache",
+ "settings.admin.documents.stripExistingOcr.description": "Hapus teks OCR yang ada dan jalankan ulang OCR saat Paksa OCR nonaktif.",
+ "settings.admin.documents.stripExistingOcr.label": "Hapus OCR yang Ada",
+ "settings.admin.documents.supportedMediaMimeTypes.description": "Tipe MIME unggahan media yang dapat diproses oleh mesin ekstraksi konten.",
+ "settings.admin.documents.supportedMediaMimeTypes.label": "Tipe MIME Media yang Didukung",
+ "settings.admin.documents.textSplitter.description": "Pilih cara teks yang diekstraksi dibagi sebelum pengindeksan.",
+ "settings.admin.documents.textSplitter.label": "Pemisah Teks",
+ "settings.admin.documents.tikaServerUrl.description": "Titik akhir server Tika yang digunakan untuk ekstraksi konten.",
+ "settings.admin.documents.tikaServerUrl.label": "URL Server Tika",
+ "settings.admin.documents.tikaServerVersion.description": "Pilih versi API server Tika.",
+ "settings.admin.documents.tikaServerVersion.label": "Versi Server Tika",
+ "settings.admin.documents.title": "Dokumen",
+ "settings.admin.documents.tokenizerModel.description": "Model tokenizer yang digunakan untuk pemisahan token transformer.",
+ "settings.admin.documents.tokenizerModel.label": "Model Tokenizer",
+ "settings.admin.documents.topK.description": "Jumlah maksimum potongan yang diambil dan dikembalikan ke model.",
"settings.admin.documents.topK.label": "K atas",
- "settings.admin.documents.topKReranker.description": "",
- "settings.admin.documents.topKReranker.label": "",
- "settings.admin.documents.updateEmbeddingModel.label": "",
- "settings.admin.documents.useBase64.description": "",
- "settings.admin.documents.useBase64.label": "",
- "settings.admin.documents.useLlm.description": "",
- "settings.admin.documents.useLlm.label": "",
- "settings.admin.documents.version.description": "",
+ "settings.admin.documents.topKReranker.description": "Jumlah maksimum hasil hibrida yang dikirim ke reranker.",
+ "settings.admin.documents.topKReranker.label": "Top K Reranker",
+ "settings.admin.documents.updateEmbeddingModel.label": "Perbarui model embedding",
+ "settings.admin.documents.useBase64.description": "Kirim PDF sebagai data URL base64 alih-alih mengunggah terlebih dahulu.",
+ "settings.admin.documents.useBase64.label": "Gunakan Base64",
+ "settings.admin.documents.useLlm.description": "Gunakan LLM untuk meningkatkan deteksi tabel, formulir, matematika, dan tata letak.",
+ "settings.admin.documents.useLlm.label": "Gunakan LLM",
+ "settings.admin.documents.version.description": "Versi API Azure OpenAI.",
"settings.admin.documents.version.label": "Versi",
- "settings.admin.evaluations.addArenaModel.label": "",
- "settings.admin.evaluations.arenaModels.description": "",
- "settings.admin.evaluations.arenaModels.label": "",
+ "settings.admin.evaluations.addArenaModel.label": "Tambah Model Arena",
+ "settings.admin.evaluations.arenaModels.description": "Penilaian pesan harus diaktifkan untuk menggunakan fitur ini",
+ "settings.admin.evaluations.arenaModels.label": "Model Arena",
"settings.admin.evaluations.sections.models.title": "Model",
- "settings.admin.evaluations.title": "",
- "settings.admin.general.addBanner.label": "",
- "settings.admin.general.automations.description": "",
- "settings.admin.general.automations.label": "",
+ "settings.admin.evaluations.title": "Evaluasi",
+ "settings.admin.general.addBanner.label": "Tambah banner",
+ "settings.admin.general.automations.description": "Izinkan pengguna membuat dan menjalankan otomatisasi.",
+ "settings.admin.general.automations.label": "Otomatisasi",
"settings.admin.general.banners.label": "Spanduk",
- "settings.admin.general.calendar.description": "",
- "settings.admin.general.calendar.label": "",
- "settings.admin.general.channels.description": "",
- "settings.admin.general.channels.label": "",
+ "settings.admin.general.calendar.description": "Izinkan pengguna mengakses fitur kalender.",
+ "settings.admin.general.calendar.label": "Kalender",
+ "settings.admin.general.channels.description": "Izinkan pengguna menggunakan saluran untuk percakapan bersama.",
+ "settings.admin.general.channels.label": "Saluran",
"settings.admin.general.checkForUpdates.label": "Memeriksa pembaruan",
- "settings.admin.general.communitySharing.description": "",
- "settings.admin.general.communitySharing.label": "",
- "settings.admin.general.events.events.label": "",
- "settings.admin.general.events.webhooks.description": "",
- "settings.admin.general.events.webhooks.label": "",
- "settings.admin.general.folderMaxFileCount.description": "",
- "settings.admin.general.folderMaxFileCount.label": "",
- "settings.admin.general.folders.description": "",
- "settings.admin.general.folders.label": "",
- "settings.admin.general.help.description": "",
+ "settings.admin.general.communitySharing.description": "Izinkan pengguna membagikan obrolan dengan komunitas Open WebUI.",
+ "settings.admin.general.communitySharing.label": "Berbagi Komunitas",
+ "settings.admin.general.events.events.label": "Peristiwa",
+ "settings.admin.general.events.webhooks.description": "Kirim peristiwa produk sebagai JSON ke layanan eksternal. Tujuan obrolan menerima pesan yang dapat dibaca.",
+ "settings.admin.general.events.webhooks.label": "Webhook",
+ "settings.admin.general.folderMaxFileCount.description": "Jumlah maksimum berkas yang diizinkan per folder.",
+ "settings.admin.general.folderMaxFileCount.label": "Jumlah Berkas Maksimum Folder",
+ "settings.admin.general.folders.description": "Izinkan pengguna mengatur obrolan ke dalam folder.",
+ "settings.admin.general.folders.label": "Folder",
+ "settings.admin.general.help.description": "Pelajari cara menggunakan Open WebUI dan dapatkan dukungan dari komunitas.",
"settings.admin.general.help.label": "Bantuan",
- "settings.admin.general.license.label": "",
- "settings.admin.general.memories.description": "",
- "settings.admin.general.memories.label": "",
- "settings.admin.general.memorySystemContext.description": "",
- "settings.admin.general.memorySystemContext.label": "",
- "settings.admin.general.messageRating.description": "",
- "settings.admin.general.messageRating.label": "",
- "settings.admin.general.modelResponseMode.description": "",
- "settings.admin.general.modelResponseMode.label": "",
- "settings.admin.general.notes.description": "",
- "settings.admin.general.notes.label": "",
- "settings.admin.general.responseWatermark.description": "",
- "settings.admin.general.responseWatermark.label": "",
- "settings.admin.general.sections.features.title": "",
+ "settings.admin.general.license.label": "Lisensi",
+ "settings.admin.general.memories.description": "Izinkan pengguna menyimpan memori untuk respons yang lebih dipersonalisasi.",
+ "settings.admin.general.memories.label": "Memori",
+ "settings.admin.general.memorySystemContext.description": "Sertakan memori yang disimpan dalam konteks sistem.",
+ "settings.admin.general.memorySystemContext.label": "Konteks Sistem Memori",
+ "settings.admin.general.messageRating.description": "Izinkan pengguna menilai respons asisten.",
+ "settings.admin.general.messageRating.label": "Penilaian Pesan",
+ "settings.admin.general.modelResponseMode.description": "Pilih lokasi pengiriman respons model untuk sebutan di saluran tingkat root.",
+ "settings.admin.general.modelResponseMode.label": "Mode Respons Model",
+ "settings.admin.general.notes.description": "Izinkan pengguna membuat dan mengelola catatan.",
+ "settings.admin.general.notes.label": "Catatan",
+ "settings.admin.general.responseWatermark.description": "Tambahkan tanda air pada respons asisten jika dikonfigurasi.",
+ "settings.admin.general.responseWatermark.label": "Tanda Air Respons",
+ "settings.admin.general.sections.features.title": "Fitur",
"settings.admin.general.sections.ui.title": "UI",
"settings.admin.general.seeWhatSNew.label": "Lihat apa yang baru",
"settings.admin.general.title": "Umum",
- "settings.admin.general.translations.addTranslation.label": "",
- "settings.admin.general.translations.uiTranslations.label": "",
- "settings.admin.general.userStatus.description": "",
- "settings.admin.general.userStatus.label": "",
- "settings.admin.general.userWebhooks.description": "",
- "settings.admin.general.userWebhooks.label": "",
+ "settings.admin.general.translations.addTranslation.label": "Tambah terjemahan",
+ "settings.admin.general.translations.uiTranslations.label": "Terjemahan UI",
+ "settings.admin.general.userStatus.description": "Tampilkan informasi status pengguna di aplikasi.",
+ "settings.admin.general.userStatus.label": "Status Pengguna",
+ "settings.admin.general.userWebhooks.description": "Izinkan pengguna mengonfigurasi webhook dari akun mereka.",
+ "settings.admin.general.userWebhooks.label": "Webhook Pengguna",
"settings.admin.general.version.label": "Versi",
- "settings.admin.general.webuiUrl.description": "",
- "settings.admin.general.webuiUrl.label": "",
- "settings.admin.images.apiAuthString.description": "",
- "settings.admin.images.apiAuthString.label": "",
- "settings.admin.images.automatic1111BaseUrl.description": "",
- "settings.admin.images.automatic1111BaseUrl.label": "",
- "settings.admin.images.automatic1111Params.description": "",
- "settings.admin.images.automatic1111Params.label": "",
- "settings.admin.images.clickHereToUploadAWorkflowJsonFile.label": "",
- "settings.admin.images.comfyuiApiKey.description": "",
+ "settings.admin.general.webuiUrl.description": "Masukkan URL publik WebUI Anda. URL ini akan digunakan untuk menghasilkan tautan dalam notifikasi.",
+ "settings.admin.general.webuiUrl.label": "URL WebUI",
+ "settings.admin.images.apiAuthString.description": "Berikan nama pengguna dan kata sandi --api-auth jika diperlukan.",
+ "settings.admin.images.apiAuthString.label": "String Autentikasi API",
+ "settings.admin.images.automatic1111BaseUrl.description": "Hubungkan ke server stable-diffusion-webui yang berjalan dengan flag `--api`.",
+ "settings.admin.images.automatic1111BaseUrl.label": "URL Dasar",
+ "settings.admin.images.automatic1111Params.description": "Kirim parameter JSON tambahan pada setiap permintaan AUTOMATIC1111.",
+ "settings.admin.images.automatic1111Params.label": "Parameter Tambahan",
+ "settings.admin.images.clickHereToUploadAWorkflowJsonFile.label": "Klik di sini untuk mengunggah berkas workflow.json.",
+ "settings.admin.images.comfyuiApiKey.description": "Gunakan kunci API jika server ComfyUI Anda memerlukannya.",
"settings.admin.images.comfyuiApiKey.label": "Kunci API",
- "settings.admin.images.comfyuiBaseUrl.description": "",
- "settings.admin.images.comfyuiBaseUrl.label": "",
- "settings.admin.images.comfyuiComfyuiWorkflow.description": "",
- "settings.admin.images.comfyuiComfyuiWorkflow.label": "",
- "settings.admin.images.editingWorkflowNodes.description": "",
- "settings.admin.images.editingWorkflowNodes.label": "",
- "settings.admin.images.editWorkflowJsonContent.label": "",
- "settings.admin.images.geminiEndpointMethod.description": "",
- "settings.admin.images.geminiEndpointMethod.label": "",
- "settings.admin.images.generationWorkflowNodes.description": "",
- "settings.admin.images.generationWorkflowNodes.label": "",
- "settings.admin.images.imageEdit.description": "",
- "settings.admin.images.imageEdit.label": "",
- "settings.admin.images.imageEditEngine.description": "",
- "settings.admin.images.imageEditEngine.label": "",
- "settings.admin.images.imageEditModel.label": "",
- "settings.admin.images.imageEditSize.label": "",
- "settings.admin.images.imageGeneration.description": "",
- "settings.admin.images.imageGeneration.label": "",
- "settings.admin.images.imageGenerationEngine.description": "",
+ "settings.admin.images.comfyuiBaseUrl.description": "Hubungkan ke server ComfyUI yang digunakan untuk pembuatan gambar.",
+ "settings.admin.images.comfyuiBaseUrl.label": "URL Dasar",
+ "settings.admin.images.comfyuiComfyuiWorkflow.description": "Unggah berkas workflow.json yang diekspor dalam format API dari ComfyUI.",
+ "settings.admin.images.comfyuiComfyuiWorkflow.label": "Alur Kerja ComfyUI",
+ "settings.admin.images.editingWorkflowNodes.description": "Petakan input simpul alur kerja yang digunakan untuk pengeditan gambar.",
+ "settings.admin.images.editingWorkflowNodes.label": "Simpul Alur Kerja ComfyUI",
+ "settings.admin.images.editWorkflowJsonContent.label": "Edit konten workflow.json",
+ "settings.admin.images.geminiEndpointMethod.description": "Pilih metode endpoint Gemini yang akan dipanggil.",
+ "settings.admin.images.geminiEndpointMethod.label": "Metode Endpoint Gemini",
+ "settings.admin.images.generationWorkflowNodes.description": "Petakan input simpul alur kerja yang digunakan untuk pembuatan gambar.",
+ "settings.admin.images.generationWorkflowNodes.label": "Simpul Alur Kerja ComfyUI",
+ "settings.admin.images.imageEdit.description": "Izinkan pengguna mengedit gambar yang sudah ada.",
+ "settings.admin.images.imageEdit.label": "Edit Gambar",
+ "settings.admin.images.imageEditEngine.description": "Pilih penyedia yang digunakan untuk pengeditan gambar.",
+ "settings.admin.images.imageEditEngine.label": "Mesin Pengeditan Gambar",
+ "settings.admin.images.imageEditModel.label": "Model",
+ "settings.admin.images.imageEditSize.label": "Ukuran Gambar",
+ "settings.admin.images.imageGeneration.description": "Izinkan pengguna membuat gambar dari prompt.",
+ "settings.admin.images.imageGeneration.label": "Pembuatan Gambar",
+ "settings.admin.images.imageGenerationEngine.description": "Pilih penyedia yang digunakan untuk pembuatan gambar.",
"settings.admin.images.imageGenerationEngine.label": "Mesin Pembuat Gambar",
- "settings.admin.images.imageGenerationModel.label": "",
- "settings.admin.images.imagePromptGeneration.description": "",
- "settings.admin.images.imagePromptGeneration.label": "",
- "settings.admin.images.imagesEditComfyuiApiKey.description": "",
+ "settings.admin.images.imageGenerationModel.label": "Model",
+ "settings.admin.images.imagePromptGeneration.description": "Buat prompt gambar sebelum mengirim permintaan.",
+ "settings.admin.images.imagePromptGeneration.label": "Pembuatan Prompt Gambar",
+ "settings.admin.images.imagesEditComfyuiApiKey.description": "Gunakan kunci API jika server ComfyUI Anda memerlukannya.",
"settings.admin.images.imagesEditComfyuiApiKey.label": "Kunci API",
- "settings.admin.images.imagesEditComfyuiBaseUrl.description": "",
- "settings.admin.images.imagesEditComfyuiBaseUrl.label": "",
- "settings.admin.images.imagesEditGeminiApiBaseUrl.label": "",
+ "settings.admin.images.imagesEditComfyuiBaseUrl.description": "Hubungkan ke server ComfyUI yang digunakan untuk pengeditan gambar.",
+ "settings.admin.images.imagesEditComfyuiBaseUrl.label": "URL Dasar",
+ "settings.admin.images.imagesEditGeminiApiBaseUrl.label": "URL Dasar",
"settings.admin.images.imagesEditGeminiApiKey.label": "Kunci API",
"settings.admin.images.imagesEditOpenaiApiBaseUrl.label": "URL Dasar API",
"settings.admin.images.imagesEditOpenaiApiKey.label": "Kunci API",
- "settings.admin.images.imagesEditOpenaiApiVersion.label": "",
- "settings.admin.images.imagesGeminiApiBaseUrl.description": "",
- "settings.admin.images.imagesGeminiApiBaseUrl.label": "",
- "settings.admin.images.imagesGeminiApiKey.description": "",
+ "settings.admin.images.imagesEditOpenaiApiVersion.label": "Versi API",
+ "settings.admin.images.imagesGeminiApiBaseUrl.description": "Timpa endpoint pembuatan gambar Gemini.",
+ "settings.admin.images.imagesGeminiApiBaseUrl.label": "URL Dasar",
+ "settings.admin.images.imagesGeminiApiKey.description": "Gunakan kunci API Gemini untuk pembuatan gambar.",
"settings.admin.images.imagesGeminiApiKey.label": "Kunci API",
- "settings.admin.images.imageSize.label": "",
+ "settings.admin.images.imageSize.label": "Ukuran Gambar",
"settings.admin.images.imagesOpenaiApiBaseUrl.label": "URL Dasar API",
"settings.admin.images.imagesOpenaiApiKey.label": "Kunci API",
- "settings.admin.images.imagesOpenaiApiParams.description": "",
- "settings.admin.images.imagesOpenaiApiParams.label": "",
- "settings.admin.images.imagesOpenaiApiVersion.label": "",
- "settings.admin.images.sections.createImage.title": "",
- "settings.admin.images.sections.editImage.title": "",
+ "settings.admin.images.imagesOpenaiApiParams.description": "Kirim parameter JSON tambahan pada setiap permintaan pembuatan gambar.",
+ "settings.admin.images.imagesOpenaiApiParams.label": "Parameter Tambahan",
+ "settings.admin.images.imagesOpenaiApiVersion.label": "Versi API",
+ "settings.admin.images.sections.createImage.title": "Buat Gambar",
+ "settings.admin.images.sections.editImage.title": "Edit Gambar",
"settings.admin.images.serverConnectionVerified.label": "Koneksi server diverifikasi",
- "settings.admin.images.steps.label": "",
- "settings.admin.images.title": "",
- "settings.admin.images.verifyConnection.label": "",
- "settings.admin.integrations.addConnection.label": "",
- "settings.admin.integrations.externalKnowledge.addConnection.label": "",
- "settings.admin.integrations.externalKnowledge.title": "",
- "settings.admin.integrations.externalToolServers.label": "",
- "settings.admin.integrations.mcp.label": "",
- "settings.admin.integrations.openApi.label": "",
- "settings.admin.integrations.openTerminal.label": "",
+ "settings.admin.images.steps.label": "Langkah",
+ "settings.admin.images.title": "Gambar",
+ "settings.admin.images.verifyConnection.label": "verifikasi koneksi",
+ "settings.admin.integrations.addConnection.label": "Tambah Koneksi",
+ "settings.admin.integrations.externalKnowledge.addConnection.label": "Tambah Koneksi",
+ "settings.admin.integrations.externalKnowledge.title": "Sumber Pengetahuan Eksternal",
+ "settings.admin.integrations.externalToolServers.label": "Server Alat Eksternal",
+ "settings.admin.integrations.mcp.label": "MCP",
+ "settings.admin.integrations.openApi.label": "OpenAPI",
+ "settings.admin.integrations.openTerminal.label": "Buka Terminal",
"settings.admin.integrations.sections.knowledge.title": "Pengetahuan",
- "settings.admin.integrations.sections.terminal.title": "",
+ "settings.admin.integrations.sections.terminal.title": "Terminal",
"settings.admin.integrations.sections.tools.title": "Alat",
- "settings.admin.integrations.title": "",
- "settings.admin.interface.autocompleteGeneration.description": "",
- "settings.admin.interface.autocompleteGeneration.label": "",
- "settings.admin.interface.autocompleteGenerationInputMaxLength.description": "",
- "settings.admin.interface.autocompleteGenerationInputMaxLength.label": "",
- "settings.admin.interface.autocompleteGenerationPrompt.description": "",
- "settings.admin.interface.autocompleteGenerationPrompt.label": "",
- "settings.admin.interface.availableVariables.label": "",
- "settings.admin.interface.contextCompaction.description": "",
- "settings.admin.interface.contextCompaction.label": "",
- "settings.admin.interface.contextCompactionModel.description": "",
- "settings.admin.interface.contextCompactionModel.label": "",
- "settings.admin.interface.contextCompactionPrompt.description": "",
- "settings.admin.interface.contextCompactionPrompt.label": "",
- "settings.admin.interface.externalTaskModel.label": "",
- "settings.admin.interface.followUpGeneration.description": "",
- "settings.admin.interface.followUpGeneration.label": "",
- "settings.admin.interface.followUpGenerationPrompt.description": "",
- "settings.admin.interface.followUpGenerationPrompt.label": "",
- "settings.admin.interface.imagePromptGenerationPrompt.description": "",
- "settings.admin.interface.imagePromptGenerationPrompt.label": "",
- "settings.admin.interface.localTaskModel.label": "",
- "settings.admin.interface.promptTemplate.description": "",
- "settings.admin.interface.promptTemplate.label": "",
- "settings.admin.interface.queryGenerationPrompt.description": "",
- "settings.admin.interface.queryGenerationPrompt.label": "",
- "settings.admin.interface.retainedMessages.description": "",
- "settings.admin.interface.retainedMessages.label": "",
- "settings.admin.interface.retrievalQueryGeneration.description": "",
- "settings.admin.interface.retrievalQueryGeneration.label": "",
+ "settings.admin.integrations.title": "Integrasi",
+ "settings.admin.interface.autocompleteGeneration.description": "Sarankan pelengkapan saat pengguna mengetik pesan obrolan.",
+ "settings.admin.interface.autocompleteGeneration.label": "Pembuatan Pelengkapan Otomatis",
+ "settings.admin.interface.autocompleteGenerationInputMaxLength.description": "Batasi panjang teks draf yang dikirim untuk pembuatan saran.",
+ "settings.admin.interface.autocompleteGenerationInputMaxLength.label": "Panjang Maksimum Input Pelengkapan Otomatis",
+ "settings.admin.interface.autocompleteGenerationPrompt.description": "Memandu pelengkapan sebaris saat pengguna mengetik pesan.",
+ "settings.admin.interface.autocompleteGenerationPrompt.label": "Prompt Pembuatan Pelengkapan Otomatis",
+ "settings.admin.interface.availableVariables.label": "Variabel yang tersedia",
+ "settings.admin.interface.contextCompaction.description": "Ringkas riwayat obrolan lama saat konteks percakapan membesar.",
+ "settings.admin.interface.contextCompaction.label": "Pemadatan Konteks",
+ "settings.admin.interface.contextCompactionModel.description": "Pilih model khusus untuk ringkasan pemadatan konteks. Model Saat Ini mengikuti model obrolan yang aktif.",
+ "settings.admin.interface.contextCompactionModel.label": "Model Pemadatan Konteks",
+ "settings.admin.interface.contextCompactionPrompt.description": "Mengontrol bagaimana pesan lama ditulis ulang menjadi ringkasan yang berjalan.",
+ "settings.admin.interface.contextCompactionPrompt.label": "Prompt Pemadatan Konteks",
+ "settings.admin.interface.externalTaskModel.label": "Model Tugas Eksternal",
+ "settings.admin.interface.followUpGeneration.description": "Tampilkan saran pertanyaan lanjutan setelah respons asisten.",
+ "settings.admin.interface.followUpGeneration.label": "Pembuatan Pertanyaan Lanjutan",
+ "settings.admin.interface.followUpGenerationPrompt.description": "Memandu saran yang ditampilkan setelah respons asisten.",
+ "settings.admin.interface.followUpGenerationPrompt.label": "Prompt Pembuatan Pertanyaan Lanjutan",
+ "settings.admin.interface.imagePromptGenerationPrompt.description": "Menulis ulang maksud pengguna menjadi prompt pembuatan gambar.",
+ "settings.admin.interface.imagePromptGenerationPrompt.label": "Prompt Pembuatan Prompt Gambar",
+ "settings.admin.interface.localTaskModel.label": "Model Tugas Lokal",
+ "settings.admin.interface.promptTemplate.description": "Menentukan perilaku yang digunakan untuk percakapan lisan.",
+ "settings.admin.interface.promptTemplate.label": "Templat Prompt",
+ "settings.admin.interface.queryGenerationPrompt.description": "Prompt bersama untuk penulisan ulang kueri pengambilan dan pencarian web.",
+ "settings.admin.interface.queryGenerationPrompt.label": "Prompt Pembuatan Kueri",
+ "settings.admin.interface.retainedMessages.description": "Persentase pesan terbaru yang disimpan setelah pesan lama diringkas.",
+ "settings.admin.interface.retainedMessages.label": "Pesan yang Disimpan",
+ "settings.admin.interface.retrievalQueryGeneration.description": "Tulis ulang permintaan pengguna untuk pengambilan pengetahuan.",
+ "settings.admin.interface.retrievalQueryGeneration.label": "Pembuatan Kueri Pengambilan",
"settings.admin.interface.sections.chat.title": "Obrolan",
- "settings.admin.interface.sections.generation.title": "",
- "settings.admin.interface.sections.tasks.title": "",
- "settings.admin.interface.tagsGeneration.description": "",
- "settings.admin.interface.tagsGeneration.label": "",
- "settings.admin.interface.tagsGenerationPrompt.description": "",
- "settings.admin.interface.tagsGenerationPrompt.label": "",
- "settings.admin.interface.taskModel.description": "",
- "settings.admin.interface.taskModel.label": "",
- "settings.admin.interface.taskModelParameters.label": "",
+ "settings.admin.interface.sections.generation.title": "Generasi",
+ "settings.admin.interface.sections.tasks.title": "Tugas",
+ "settings.admin.interface.tagsGeneration.description": "Buat tag obrolan dari konten percakapan.",
+ "settings.admin.interface.tagsGeneration.label": "Pembuatan Tag",
+ "settings.admin.interface.tagsGenerationPrompt.description": "Mengontrol cara tag obrolan disimpulkan.",
+ "settings.admin.interface.tagsGenerationPrompt.label": "Prompt Pembuatan Tag",
+ "settings.admin.interface.taskModel.description": "Pilih model cadangan untuk tugas latar belakang. Model Saat Ini mengikuti model obrolan yang aktif.",
+ "settings.admin.interface.taskModel.label": "Model Tugas",
+ "settings.admin.interface.taskModelParameters.label": "Parameter Model Tugas",
"settings.admin.interface.title": "Antarmuka",
- "settings.admin.interface.titleGeneration.description": "",
- "settings.admin.interface.titleGeneration.label": "",
- "settings.admin.interface.titleGenerationPrompt.description": "",
+ "settings.admin.interface.titleGeneration.description": "Izinkan penamaan otomatis untuk obrolan baru.",
+ "settings.admin.interface.titleGeneration.label": "Pembuatan Judul",
+ "settings.admin.interface.titleGenerationPrompt.description": "Menentukan label singkat yang dihasilkan untuk setiap obrolan.",
"settings.admin.interface.titleGenerationPrompt.label": "Perintah Pembuatan Judul",
- "settings.admin.interface.tokenCap.description": "",
- "settings.admin.interface.tokenCap.label": "",
- "settings.admin.interface.tokenThreshold.description": "",
- "settings.admin.interface.tokenThreshold.label": "",
- "settings.admin.interface.toolPermissions.description": "",
- "settings.admin.interface.toolPermissions.label": "",
- "settings.admin.interface.toolsFunctionCallingPrompt.description": "",
- "settings.admin.interface.toolsFunctionCallingPrompt.label": "",
- "settings.admin.interface.voiceModePrompt.description": "",
- "settings.admin.interface.voiceModePrompt.label": "",
- "settings.admin.interface.webSearchQueryGeneration.description": "",
- "settings.admin.interface.webSearchQueryGeneration.label": "",
- "settings.admin.models.builtinTools.automations.description": "",
- "settings.admin.models.builtinTools.automations.label": "",
- "settings.admin.models.builtinTools.calendar.description": "",
- "settings.admin.models.builtinTools.calendar.label": "",
- "settings.admin.models.builtinTools.channels.description": "",
- "settings.admin.models.builtinTools.channels.label": "",
- "settings.admin.models.builtinTools.chats.description": "",
- "settings.admin.models.builtinTools.chats.label": "",
- "settings.admin.models.builtinTools.codeInterpreter.description": "",
- "settings.admin.models.builtinTools.codeInterpreter.label": "",
- "settings.admin.models.builtinTools.files.description": "",
- "settings.admin.models.builtinTools.files.label": "",
- "settings.admin.models.builtinTools.imageGeneration.description": "",
- "settings.admin.models.builtinTools.imageGeneration.label": "",
- "settings.admin.models.builtinTools.knowledge.description": "",
- "settings.admin.models.builtinTools.knowledge.label": "",
- "settings.admin.models.builtinTools.memory.description": "",
+ "settings.admin.interface.tokenCap.description": "Ambang batas pemadatan konteks khusus model tidak boleh melebihi batas token ini.",
+ "settings.admin.interface.tokenCap.label": "Batas Token",
+ "settings.admin.interface.tokenThreshold.description": "Pesan lama dirangkum ketika perkiraan konteks melebihi batas token ini.",
+ "settings.admin.interface.tokenThreshold.label": "Ambang Batas Token",
+ "settings.admin.interface.toolPermissions.description": "Tampilkan Akses penuh dan Minta persetujuan pada menu input obrolan.",
+ "settings.admin.interface.toolPermissions.label": "Izin Alat",
+ "settings.admin.interface.toolsFunctionCallingPrompt.description": "Memandu cara asisten memformat pemanggilan alat dan fungsi.",
+ "settings.admin.interface.toolsFunctionCallingPrompt.label": "Prompt Pemanggilan Fungsi Alat",
+ "settings.admin.interface.voiceModePrompt.description": "Terapkan instruksi khusus suara saat mode suara aktif.",
+ "settings.admin.interface.voiceModePrompt.label": "Prompt Mode Suara",
+ "settings.admin.interface.webSearchQueryGeneration.description": "Tulis ulang permintaan pengguna menjadi kueri pencarian web.",
+ "settings.admin.interface.webSearchQueryGeneration.label": "Pembuatan Kueri Pencarian Web",
+ "settings.admin.models.builtinTools.automations.description": "Buat dan kelola otomatisasi terjadwal",
+ "settings.admin.models.builtinTools.automations.label": "Otomatisasi",
+ "settings.admin.models.builtinTools.calendar.description": "Daftar kalender, cari, buat, perbarui, dan hapus acara kalender",
+ "settings.admin.models.builtinTools.calendar.label": "Kalender",
+ "settings.admin.models.builtinTools.channels.description": "Cari saluran dan pesan saluran",
+ "settings.admin.models.builtinTools.channels.label": "Saluran",
+ "settings.admin.models.builtinTools.chats.description": "Cari dan lihat riwayat obrolan pengguna",
+ "settings.admin.models.builtinTools.chats.label": "Riwayat Obrolan",
+ "settings.admin.models.builtinTools.codeInterpreter.description": "Jalankan kode",
+ "settings.admin.models.builtinTools.codeInterpreter.label": "Interpreter Kode",
+ "settings.admin.models.builtinTools.files.description": "Daftar, cari, dan baca berkas yang dilampirkan ke obrolan saat ini",
+ "settings.admin.models.builtinTools.files.label": "Berkas",
+ "settings.admin.models.builtinTools.imageGeneration.description": "Hasilkan dan edit gambar",
+ "settings.admin.models.builtinTools.imageGeneration.label": "Pembuatan Gambar",
+ "settings.admin.models.builtinTools.knowledge.description": "Jelajahi dan kueri basis pengetahuan",
+ "settings.admin.models.builtinTools.knowledge.label": "Basis Pengetahuan",
+ "settings.admin.models.builtinTools.memory.description": "Cari dan kelola memori pengguna",
"settings.admin.models.builtinTools.memory.label": "Memori",
- "settings.admin.models.builtinTools.notes.description": "",
- "settings.admin.models.builtinTools.notes.label": "",
- "settings.admin.models.builtinTools.notifications.description": "",
+ "settings.admin.models.builtinTools.notes.description": "Cari, lihat, dan kelola catatan pengguna",
+ "settings.admin.models.builtinTools.notes.label": "Catatan",
+ "settings.admin.models.builtinTools.notifications.description": "Kirim notifikasi ke target webhook yang dikonfigurasi",
"settings.admin.models.builtinTools.notifications.label": "Pemberitahuan",
- "settings.admin.models.builtinTools.subagents.description": "",
- "settings.admin.models.builtinTools.subagents.label": "",
- "settings.admin.models.builtinTools.tasks.description": "",
- "settings.admin.models.builtinTools.tasks.label": "",
- "settings.admin.models.builtinTools.time.description": "",
- "settings.admin.models.builtinTools.time.label": "",
- "settings.admin.models.builtinTools.title": "",
- "settings.admin.models.builtinTools.userInput.description": "",
- "settings.admin.models.builtinTools.userInput.label": "",
- "settings.admin.models.builtinTools.webSearch.description": "",
+ "settings.admin.models.builtinTools.subagents.description": "Delegasikan pekerjaan terfokus ke sub-agen paralel",
+ "settings.admin.models.builtinTools.subagents.label": "Sub-agen",
+ "settings.admin.models.builtinTools.tasks.description": "Pecah permintaan rumit menjadi langkah-langkah yang dapat dilacak",
+ "settings.admin.models.builtinTools.tasks.label": "Manajemen Tugas",
+ "settings.admin.models.builtinTools.time.description": "Dapatkan waktu saat ini dan lakukan perhitungan tanggal/waktu",
+ "settings.admin.models.builtinTools.time.label": "Waktu & Perhitungan",
+ "settings.admin.models.builtinTools.title": "Alat Bawaan",
+ "settings.admin.models.builtinTools.userInput.description": "Jeda respons untuk mengajukan pertanyaan klarifikasi kepada pengguna",
+ "settings.admin.models.builtinTools.userInput.label": "Tanya Pengguna",
+ "settings.admin.models.builtinTools.webSearch.description": "Cari di web dan ambil URL",
"settings.admin.models.builtinTools.webSearch.label": "Pencarian Web",
- "settings.admin.models.capabilities.builtinTools.description": "",
- "settings.admin.models.capabilities.builtinTools.label": "",
- "settings.admin.models.capabilities.citations.description": "",
- "settings.admin.models.capabilities.citations.label": "",
- "settings.admin.models.capabilities.codeInterpreter.description": "",
- "settings.admin.models.capabilities.codeInterpreter.label": "",
- "settings.admin.models.capabilities.fileContext.description": "",
- "settings.admin.models.capabilities.fileContext.label": "",
- "settings.admin.models.capabilities.fileUpload.description": "",
- "settings.admin.models.capabilities.fileUpload.label": "",
- "settings.admin.models.capabilities.imageGeneration.description": "",
- "settings.admin.models.capabilities.imageGeneration.label": "",
- "settings.admin.models.capabilities.memory.description": "",
+ "settings.admin.models.capabilities.builtinTools.description": "Suntikkan alat sistem secara otomatis dalam mode pemanggilan fungsi bawaan (cth., stempel waktu, memori, riwayat obrolan, catatan, dll.)",
+ "settings.admin.models.capabilities.builtinTools.label": "Alat Bawaan",
+ "settings.admin.models.capabilities.citations.description": "Menampilkan sitasi dalam respons",
+ "settings.admin.models.capabilities.citations.label": "Sitasi",
+ "settings.admin.models.capabilities.codeInterpreter.description": "Model dapat mengeksekusi kode dan melakukan perhitungan",
+ "settings.admin.models.capabilities.codeInterpreter.label": "Interpreter Kode",
+ "settings.admin.models.capabilities.fileContext.description": "Suntikkan konten berkas ke dalam konteks percakapan",
+ "settings.admin.models.capabilities.fileContext.label": "Konteks Berkas",
+ "settings.admin.models.capabilities.fileUpload.description": "Model menerima input berkas",
+ "settings.admin.models.capabilities.fileUpload.label": "Unggah Berkas",
+ "settings.admin.models.capabilities.imageGeneration.description": "Model dapat menghasilkan gambar berdasarkan prompt teks",
+ "settings.admin.models.capabilities.imageGeneration.label": "Pembuatan Gambar",
+ "settings.admin.models.capabilities.memory.description": "Suntikkan memori tersimpan ke dalam konteks percakapan",
"settings.admin.models.capabilities.memory.label": "Memori",
- "settings.admin.models.capabilities.statusUpdates.description": "",
- "settings.admin.models.capabilities.statusUpdates.label": "",
- "settings.admin.models.capabilities.terminal.description": "",
- "settings.admin.models.capabilities.terminal.label": "",
+ "settings.admin.models.capabilities.statusUpdates.description": "Menampilkan pembaruan status (cth., progres pencarian web) dalam respons",
+ "settings.admin.models.capabilities.statusUpdates.label": "Pembaruan Status",
+ "settings.admin.models.capabilities.terminal.description": "Model dapat mengakses Open Terminal untuk eksekusi perintah dan pengelolaan berkas",
+ "settings.admin.models.capabilities.terminal.label": "Terminal",
"settings.admin.models.capabilities.title": "Kemampuan",
- "settings.admin.models.capabilities.usage.description": "",
- "settings.admin.models.capabilities.usage.label": "",
- "settings.admin.models.capabilities.vision.description": "",
- "settings.admin.models.capabilities.vision.label": "",
- "settings.admin.models.capabilities.webSearch.description": "",
+ "settings.admin.models.capabilities.usage.description": "Mengirimkan `stream_options: { include_usage: true }` dalam permintaan.\nPenyedia yang didukung akan mengembalikan informasi penggunaan token dalam respons jika diatur.",
+ "settings.admin.models.capabilities.usage.label": "Penggunaan",
+ "settings.admin.models.capabilities.vision.description": "Model menerima input gambar",
+ "settings.admin.models.capabilities.vision.label": "Visi",
+ "settings.admin.models.capabilities.webSearch.description": "Model dapat mencari informasi di web",
"settings.admin.models.capabilities.webSearch.label": "Pencarian Web",
- "settings.admin.models.defaultFeatures.codeInterpreter.description": "",
- "settings.admin.models.defaultFeatures.codeInterpreter.label": "",
- "settings.admin.models.defaultFeatures.imageGeneration.description": "",
- "settings.admin.models.defaultFeatures.imageGeneration.label": "",
- "settings.admin.models.defaultFeatures.title": "",
- "settings.admin.models.defaultFeatures.webSearch.description": "",
+ "settings.admin.models.defaultFeatures.codeInterpreter.description": "Model dapat mengeksekusi kode dan melakukan perhitungan",
+ "settings.admin.models.defaultFeatures.codeInterpreter.label": "Interpreter Kode",
+ "settings.admin.models.defaultFeatures.imageGeneration.description": "Model dapat menghasilkan gambar berdasarkan prompt teks",
+ "settings.admin.models.defaultFeatures.imageGeneration.label": "Pembuatan Gambar",
+ "settings.admin.models.defaultFeatures.title": "Fitur Bawaan",
+ "settings.admin.models.defaultFeatures.webSearch.description": "Model dapat mencari informasi di web",
"settings.admin.models.defaultFeatures.webSearch.label": "Pencarian Web",
- "settings.admin.models.defaults.modelCapabilities.label": "",
- "settings.admin.models.defaults.modelDefaults.label": "",
- "settings.admin.models.defaults.modelParameters.label": "",
- "settings.admin.models.defaults.promptSuggestions.label": "",
- "settings.admin.models.disableAllModels.label": "",
- "settings.admin.models.enableAllModels.label": "",
+ "settings.admin.models.defaults.modelCapabilities.label": "Kemampuan Model",
+ "settings.admin.models.defaults.modelDefaults.label": "Setelan Bawaan Model",
+ "settings.admin.models.defaults.modelParameters.label": "Parameter Model",
+ "settings.admin.models.defaults.promptSuggestions.label": "Saran Prompt",
+ "settings.admin.models.disableAllModels.label": "Nonaktifkan Semua",
+ "settings.admin.models.enableAllModels.label": "Aktifkan Semua",
"settings.admin.models.exportModels.label": "Ekspor",
- "settings.admin.models.hideAllModels.label": "",
- "settings.admin.models.importModels.label": "",
+ "settings.admin.models.hideAllModels.label": "Sembunyikan Semua",
+ "settings.admin.models.importModels.label": "Impor",
"settings.admin.models.manageModels.label": "Mengelola",
"settings.admin.models.resetModels.label": "Atur Ulang",
- "settings.admin.models.showAllModels.label": "",
+ "settings.admin.models.showAllModels.label": "Tampilkan Semua",
"settings.admin.models.title": "Model",
- "settings.admin.pipelines.githubUrl.label": "",
- "settings.admin.pipelines.install.label": "",
- "settings.admin.pipelines.installing.label": "",
- "settings.admin.pipelines.pipeline.description": "",
- "settings.admin.pipelines.pipeline.label": "",
- "settings.admin.pipelines.pipelineUrl.description": "",
- "settings.admin.pipelines.pipelineUrl.label": "",
- "settings.admin.pipelines.sections.pipelines.title": "",
+ "settings.admin.pipelines.githubUrl.label": "URL GitHub",
+ "settings.admin.pipelines.install.label": "Instal",
+ "settings.admin.pipelines.installing.label": "Menginstal",
+ "settings.admin.pipelines.pipeline.description": "Pilih pipeline yang terpasang untuk dikonfigurasi atau dihapus.",
+ "settings.admin.pipelines.pipeline.label": "Pipeline",
+ "settings.admin.pipelines.pipelineUrl.description": "Pilih server Pipelines yang akan dikelola.",
+ "settings.admin.pipelines.pipelineUrl.label": "URL Pipeline",
+ "settings.admin.pipelines.sections.pipelines.title": "Pipelines",
"settings.admin.pipelines.sections.source.title": "Sumber",
"settings.admin.pipelines.sections.valves.title": "Katup",
- "settings.admin.pipelines.selectAPyFile.label": "",
- "settings.admin.pipelines.title": "",
- "settings.admin.pipelines.uploadPipeline.description": "",
+ "settings.admin.pipelines.selectAPyFile.label": "Pilih berkas .py",
+ "settings.admin.pipelines.title": "Pipeline",
+ "settings.admin.pipelines.uploadPipeline.description": "Unggah berkas pipeline Python lokal ke server yang dipilih.",
"settings.admin.pipelines.uploadPipeline.label": "Unggah Pipeline",
- "settings.admin.subagents.enableBackgroundSubAgents.description": "",
- "settings.admin.subagents.enableBackgroundSubAgents.label": "",
- "settings.admin.subagents.enableSubAgents.label": "",
- "settings.admin.subagents.maxBackground.label": "",
- "settings.admin.subagents.maxConcurrent.label": "",
- "settings.admin.subagents.maxIterations.label": "",
- "settings.admin.subagents.maxOutput.label": "",
- "settings.admin.subagents.systemPrompt.description": "",
- "settings.admin.subagents.systemPrompt.label": "",
- "settings.admin.subagents.title": "",
- "settings.admin.web.bingSearchV7Endpoint.label": "",
- "settings.admin.web.bingSearchV7SubscriptionKey.label": "",
- "settings.admin.web.bochaSearchApiKey.label": "",
+ "settings.admin.subagents.enableBackgroundSubAgents.description": "Izinkan sub-agen yang didelegasikan untuk terus berjalan saat obrolan utama berlanjut.",
+ "settings.admin.subagents.enableBackgroundSubAgents.label": "Aktifkan sub-agen latar belakang",
+ "settings.admin.subagents.enableSubAgents.label": "Aktifkan sub-agen",
+ "settings.admin.subagents.maxBackground.label": "Maksimum latar belakang",
+ "settings.admin.subagents.maxConcurrent.label": "Maksimum konkuren",
+ "settings.admin.subagents.maxIterations.label": "Maksimum iterasi",
+ "settings.admin.subagents.maxOutput.label": "Maksimum output",
+ "settings.admin.subagents.systemPrompt.description": "Biarkan kosong untuk bawaan sistem.",
+ "settings.admin.subagents.systemPrompt.label": "Prompt sistem",
+ "settings.admin.subagents.title": "Sub-agen",
+ "settings.admin.web.bingSearchV7Endpoint.label": "Endpoint Bing Search V7",
+ "settings.admin.web.bingSearchV7SubscriptionKey.label": "Kunci Langganan Bing Search V7",
+ "settings.admin.web.bochaSearchApiKey.label": "Kunci API Bocha Search",
"settings.admin.web.braveSearchApiKey.label": "Kunci API Pencarian Berani",
- "settings.admin.web.bypassEmbeddingAndRetrieval.description": "",
- "settings.admin.web.bypassEmbeddingAndRetrieval.label": "",
- "settings.admin.web.bypassWebLoader.description": "",
- "settings.admin.web.bypassWebLoader.label": "",
- "settings.admin.web.concurrentRequests.description": "",
+ "settings.admin.web.bypassEmbeddingAndRetrieval.description": "Masukkan seluruh konten sebagai konteks untuk pemrosesan menyeluruh.",
+ "settings.admin.web.bypassEmbeddingAndRetrieval.label": "Lewati Penyematan dan Pengambilan",
+ "settings.admin.web.bypassWebLoader.description": "Gunakan hasil pencarian tanpa mengambil konten halaman.",
+ "settings.admin.web.bypassWebLoader.label": "Lewati Web Loader",
+ "settings.admin.web.concurrentRequests.description": "Batasi permintaan web loader paralel.",
"settings.admin.web.concurrentRequests.label": "Permintaan Bersamaan",
- "settings.admin.web.contextTokens.label": "",
- "settings.admin.web.ddgsBackend.label": "",
- "settings.admin.web.domainFilterList.description": "",
- "settings.admin.web.domainFilterList.label": "",
- "settings.admin.web.exaApiKey.label": "",
- "settings.admin.web.externalWebLoaderApiKey.label": "",
- "settings.admin.web.externalWebLoaderUrl.label": "",
- "settings.admin.web.externalWebSearchApiKey.label": "",
- "settings.admin.web.externalWebSearchUrl.label": "",
- "settings.admin.web.fetchUrlContentLengthLimit.description": "",
- "settings.admin.web.fetchUrlContentLengthLimit.label": "",
- "settings.admin.web.firecrawlApiBaseUrl.label": "",
- "settings.admin.web.firecrawlApiKey.label": "",
- "settings.admin.web.firecrawlTimeoutS.label": "",
+ "settings.admin.web.contextTokens.label": "Token Konteks",
+ "settings.admin.web.ddgsBackend.label": "Backend DDGS",
+ "settings.admin.web.domainFilterList.description": "Batasi atau kecualikan domain menggunakan daftar yang dipisahkan koma.",
+ "settings.admin.web.domainFilterList.label": "Daftar Filter Domain",
+ "settings.admin.web.exaApiKey.label": "Kunci API Exa",
+ "settings.admin.web.externalWebLoaderApiKey.label": "Kunci API Web Loader Eksternal",
+ "settings.admin.web.externalWebLoaderUrl.label": "URL Web Loader Eksternal",
+ "settings.admin.web.externalWebSearchApiKey.label": "Kunci API Pencarian Web Eksternal",
+ "settings.admin.web.externalWebSearchUrl.label": "URL Pencarian Web Eksternal",
+ "settings.admin.web.fetchUrlContentLengthLimit.description": "Batas maksimum karakter yang dikembalikan dari URL yang diambil. Biarkan kosong tanpa batas.",
+ "settings.admin.web.fetchUrlContentLengthLimit.label": "Batas Panjang Konten Pengambilan URL",
+ "settings.admin.web.firecrawlApiBaseUrl.label": "URL Dasar API Firecrawl",
+ "settings.admin.web.firecrawlApiKey.label": "Kunci API Firecrawl",
+ "settings.admin.web.firecrawlTimeoutS.label": "Batas Waktu Firecrawl (detik)",
"settings.admin.web.googlePseApiKey.label": "Kunci API Google PSE",
"settings.admin.web.googlePseEngineId.label": "Id Mesin Google PSE",
- "settings.admin.web.jinaApiBaseUrl.label": "",
- "settings.admin.web.jinaApiKey.label": "",
- "settings.admin.web.kagiSearchApiKey.label": "",
+ "settings.admin.web.jinaApiBaseUrl.label": "URL Dasar API Jina",
+ "settings.admin.web.jinaApiKey.label": "Kunci API Jina",
+ "settings.admin.web.kagiSearchApiKey.label": "Kunci API Kagi Search",
"settings.admin.web.language.label": "Bahasa",
- "settings.admin.web.linkupApiKey.label": "",
- "settings.admin.web.maxContentLength.description": "",
- "settings.admin.web.maxContentLength.label": "",
- "settings.admin.web.microsoftWebIqApiBaseUrl.label": "",
- "settings.admin.web.microsoftWebIqApiKey.label": "",
- "settings.admin.web.mojeekSearchApiKey.label": "",
- "settings.admin.web.ollamaCloudApiKey.label": "",
- "settings.admin.web.openserpUrl.label": "",
- "settings.admin.web.parameters.label": "",
- "settings.admin.web.perplexityApiKey.label": "",
- "settings.admin.web.perplexityModel.label": "",
- "settings.admin.web.perplexitySearchApiUrl.label": "",
- "settings.admin.web.perplexitySearchContextUsage.label": "",
- "settings.admin.web.playwrightTimeoutMs.label": "",
- "settings.admin.web.playwrightWebsocketUrl.label": "",
- "settings.admin.web.searchapiApiKey.label": "",
- "settings.admin.web.searchapiEngine.label": "",
- "settings.admin.web.searchLimits.description": "",
- "settings.admin.web.searchLimits.label": "",
- "settings.admin.web.searchResultCount.description": "",
+ "settings.admin.web.linkupApiKey.label": "Kunci API Linkup",
+ "settings.admin.web.maxContentLength.description": "Batas maksimum karakter per hasil pencarian Exa. Biarkan kosong tanpa batas.",
+ "settings.admin.web.maxContentLength.label": "Panjang Konten Maksimum",
+ "settings.admin.web.microsoftWebIqApiBaseUrl.label": "URL Dasar API Microsoft Web IQ",
+ "settings.admin.web.microsoftWebIqApiKey.label": "Kunci API Microsoft Web IQ",
+ "settings.admin.web.mojeekSearchApiKey.label": "Kunci API Mojeek Search",
+ "settings.admin.web.ollamaCloudApiKey.label": "Kunci API Ollama Cloud",
+ "settings.admin.web.openserpUrl.label": "URL OpenSERP",
+ "settings.admin.web.parameters.label": "Parameter",
+ "settings.admin.web.perplexityApiKey.label": "Kunci API Perplexity",
+ "settings.admin.web.perplexityModel.label": "Model Perplexity",
+ "settings.admin.web.perplexitySearchApiUrl.label": "URL API Pencarian Perplexity",
+ "settings.admin.web.perplexitySearchContextUsage.label": "Penggunaan Konteks Pencarian Perplexity",
+ "settings.admin.web.playwrightTimeoutMs.label": "Batas Waktu Playwright (ms)",
+ "settings.admin.web.playwrightWebsocketUrl.label": "URL WebSocket Playwright",
+ "settings.admin.web.searchapiApiKey.label": "Kunci API SearchApi",
+ "settings.admin.web.searchapiEngine.label": "Mesin SearchApi",
+ "settings.admin.web.searchLimits.description": "Kontrol volume hasil dan permintaan pencarian paralel.",
+ "settings.admin.web.searchLimits.label": "Batas Pencarian",
+ "settings.admin.web.searchResultCount.description": "Batasi kueri pencarian bersamaan. 0 = tanpa batas (default). Atur ke 1 untuk eksekusi berurutan (disarankan untuk API dengan batas laju ketat seperti paket gratis Brave).",
"settings.admin.web.searchResultCount.label": "Jumlah Hasil Pencarian",
"settings.admin.web.searxngQueryUrl.label": "URL Kueri Pencarian Searxng",
- "settings.admin.web.searxngSearchLanguageAllEnEsDeFrEtc.label": "",
- "settings.admin.web.sections.loader.title": "",
+ "settings.admin.web.searxngSearchLanguageAllEnEsDeFrEtc.label": "Bahasa pencarian Searxng (all, en, es, de, fr, dll.)",
+ "settings.admin.web.sections.loader.title": "Pemuat",
"settings.admin.web.sections.search.title": "Cari",
- "settings.admin.web.serpapiApiKey.label": "",
- "settings.admin.web.serpapiEngine.label": "",
+ "settings.admin.web.serpapiApiKey.label": "Kunci API SerpApi",
+ "settings.admin.web.serpapiEngine.label": "Mesin SerpApi",
"settings.admin.web.serperApiKey.label": "Kunci API Serper",
- "settings.admin.web.serphouseApiKey.label": "",
- "settings.admin.web.serphouseDomain.label": "",
+ "settings.admin.web.serphouseApiKey.label": "Kunci API SERPHouse",
+ "settings.admin.web.serphouseDomain.label": "Domain SERPHouse",
"settings.admin.web.serplyApiKey.label": "Kunci API Serply",
"settings.admin.web.serpstackApiKey.label": "Kunci API Serpstack",
- "settings.admin.web.sougouSearchApiSid.label": "",
- "settings.admin.web.sougouSearchApiSk.label": "",
+ "settings.admin.web.sougouSearchApiSid.label": "sID API Sougou Search",
+ "settings.admin.web.sougouSearchApiSk.label": "SK API Sougou Search",
"settings.admin.web.tavilyApiKey.label": "Kunci API Tavily",
- "settings.admin.web.tavilyExtractDepth.label": "",
- "settings.admin.web.timeout.description": "",
- "settings.admin.web.timeout.label": "",
+ "settings.admin.web.tavilyExtractDepth.label": "Kedalaman Ekstraksi Tavily",
+ "settings.admin.web.timeout.description": "Waktu maksimum untuk menunggu saat memuat konten web.",
+ "settings.admin.web.timeout.label": "Batas Waktu",
"settings.admin.web.title": "Pencarian Web",
- "settings.admin.web.trustProxyEnvironment.description": "",
- "settings.admin.web.trustProxyEnvironment.label": "",
- "settings.admin.web.verifySslCertificate.description": "",
- "settings.admin.web.verifySslCertificate.label": "",
- "settings.admin.web.webLoaderEngine.description": "",
- "settings.admin.web.webLoaderEngine.label": "",
- "settings.admin.web.webSearch.description": "",
+ "settings.admin.web.trustProxyEnvironment.description": "Gunakan variabel lingkungan proksi untuk mengambil konten halaman.",
+ "settings.admin.web.trustProxyEnvironment.label": "Percayai Lingkungan Proksi",
+ "settings.admin.web.verifySslCertificate.description": "Validasi sertifikat SSL saat mengambil konten web.",
+ "settings.admin.web.verifySslCertificate.label": "Verifikasi Sertifikat SSL",
+ "settings.admin.web.webLoaderEngine.description": "Pilih cara halaman hasil web diambil dan dibaca.",
+ "settings.admin.web.webLoaderEngine.label": "Mesin Pemuat Web",
+ "settings.admin.web.webSearch.description": "Izinkan pengguna mencari di web dari obrolan.",
"settings.admin.web.webSearch.label": "Pencarian Web",
- "settings.admin.web.webSearchConfirmation.description": "",
- "settings.admin.web.webSearchConfirmation.label": "",
- "settings.admin.web.webSearchConfirmationContent.description": "",
- "settings.admin.web.webSearchConfirmationContent.label": "",
- "settings.admin.web.webSearchEngine.description": "",
+ "settings.admin.web.webSearchConfirmation.description": "Wajibkan pengguna mengonfirmasi sebelum menggunakan Pencarian Web.",
+ "settings.admin.web.webSearchConfirmation.label": "Konfirmasi Pencarian Web",
+ "settings.admin.web.webSearchConfirmationContent.description": "Pesan yang ditampilkan sebelum pencarian web dijalankan.",
+ "settings.admin.web.webSearchConfirmationContent.label": "Konten Konfirmasi Pencarian Web",
+ "settings.admin.web.webSearchEngine.description": "Pilih penyedia yang digunakan untuk kueri pencarian web.",
"settings.admin.web.webSearchEngine.label": "Mesin Pencari Web",
- "settings.admin.web.yacyInstanceUrl.label": "",
- "settings.admin.web.yacyPassword.label": "",
- "settings.admin.web.yacyUsername.label": "",
- "settings.admin.web.yandexWebSearchApiKey.label": "",
- "settings.admin.web.yandexWebSearchConfig.label": "",
- "settings.admin.web.yandexWebSearchUrl.label": "",
- "settings.admin.web.youComApiKey.label": "",
- "settings.admin.web.youtubeLanguage.description": "",
- "settings.admin.web.youtubeLanguage.label": "",
- "settings.admin.web.youtubeProxyUrl.description": "",
- "settings.admin.web.youtubeProxyUrl.label": "",
+ "settings.admin.web.yacyInstanceUrl.label": "URL Instans Yacy",
+ "settings.admin.web.yacyPassword.label": "Kata Sandi Yacy",
+ "settings.admin.web.yacyUsername.label": "Nama Pengguna Yacy",
+ "settings.admin.web.yandexWebSearchApiKey.label": "Kunci API Yandex Web Search",
+ "settings.admin.web.yandexWebSearchConfig.label": "Konfigurasi Yandex Web Search",
+ "settings.admin.web.yandexWebSearchUrl.label": "URL Yandex Web Search",
+ "settings.admin.web.youComApiKey.label": "Kunci API You.com",
+ "settings.admin.web.youtubeLanguage.description": "Kode bahasa transkrip pilihan, dipisahkan dengan koma.",
+ "settings.admin.web.youtubeLanguage.label": "Bahasa Youtube",
+ "settings.admin.web.youtubeProxyUrl.description": "URL proksi yang digunakan untuk permintaan pemuat Youtube.",
+ "settings.admin.web.youtubeProxyUrl.label": "URL Proksi Youtube",
"settings.personal.about.checkForUpdates.label": "Memeriksa pembaruan",
- "settings.personal.about.sections.community.title": "",
+ "settings.personal.about.sections.community.title": "Komunitas",
"settings.personal.about.sections.ollamaVersion.title": "Versi Ollama",
"settings.personal.about.sections.version.title": "Versi",
- "settings.personal.about.seeWhatSNew.description": "",
+ "settings.personal.about.seeWhatSNew.description": "Lihat versi terinstal dan periksa pembaruan rilis.",
"settings.personal.about.seeWhatSNew.label": "Lihat apa yang baru",
"settings.personal.about.title": "Tentang",
- "settings.personal.account.apiKey.description": "",
+ "settings.personal.account.apiKey.description": "Buat, salin, atau rotasi kunci API Anda.",
"settings.personal.account.apiKey.label": "Kunci API",
- "settings.personal.account.bio.description": "",
- "settings.personal.account.bio.label": "",
- "settings.personal.account.birthDate.description": "",
- "settings.personal.account.birthDate.label": "",
- "settings.personal.account.changePassword.description": "",
+ "settings.personal.account.bio.description": "Tambahkan konteks profil opsional yang terlihat di tempat profil ditampilkan.",
+ "settings.personal.account.bio.label": "Bio",
+ "settings.personal.account.birthDate.description": "Atur tanggal lahir yang disimpan pada profil Anda.",
+ "settings.personal.account.birthDate.label": "Tanggal Lahir",
+ "settings.personal.account.changePassword.description": "Perbarui kata sandi yang digunakan untuk masuk dengan email dan kata sandi.",
"settings.personal.account.changePassword.label": "Ubah Kata Sandi",
"settings.personal.account.confirmPassword.label": "Konfirmasi Kata Sandi",
"settings.personal.account.createNewSecretKey.label": "Buat kunci rahasia baru",
"settings.personal.account.currentPassword.label": "Kata Sandi Saat Ini",
- "settings.personal.account.gender.description": "",
- "settings.personal.account.gender.label": "",
- "settings.personal.account.jwtToken.description": "",
+ "settings.personal.account.gender.description": "Pilih jenis kelamin yang disimpan di profil Anda.",
+ "settings.personal.account.gender.label": "Jenis Kelamin",
+ "settings.personal.account.jwtToken.description": "Salin token sesi saat ini untuk permintaan terautentikasi.",
"settings.personal.account.jwtToken.label": "Token JWT",
- "settings.personal.account.name.description": "",
+ "settings.personal.account.name.description": "Atur nama tampilan yang muncul di seluruh akun Anda.",
"settings.personal.account.name.label": "Nama",
"settings.personal.account.newPassword.label": "Kata Sandi Baru",
- "settings.personal.account.secrets.description": "",
- "settings.personal.account.secrets.label": "",
+ "settings.personal.account.secrets.description": "Tampilkan atau sembunyikan rahasia akun yang sensitif.",
+ "settings.personal.account.secrets.label": "Rahasia",
"settings.personal.account.sections.apiKeys.title": "Kunci API",
"settings.personal.account.sections.password.title": "Kata sandi",
"settings.personal.account.sections.profile.title": "Profil",
@@ -2754,747 +2767,754 @@
"settings.personal.account.updatePassword.label": "Perbarui kata sandi",
"settings.personal.archivedChats.exportArchivedChats.label": "Ekspor",
"settings.personal.archivedChats.title": "Obrolan yang Diarsipkan",
- "settings.personal.archivedChats.unarchiveAll.label": "",
- "settings.personal.audio.allowNonLocalVoices.description": "",
+ "settings.personal.archivedChats.unarchiveAll.label": "Batalkan Arsip Semua",
+ "settings.personal.audio.allowNonLocalVoices.description": "Sertakan suara yang tidak disediakan oleh layanan ucapan lokal.",
"settings.personal.audio.allowNonLocalVoices.label": "Izinkan suara non-lokal",
- "settings.personal.audio.autoPlaybackResponse.description": "",
+ "settings.personal.audio.autoPlaybackResponse.description": "Putar respons asisten secara otomatis.",
"settings.personal.audio.autoPlaybackResponse.label": "Respons pemutaran otomatis",
- "settings.personal.audio.browserVoice.description": "",
+ "settings.personal.audio.browserVoice.description": "Pilih suara peramban yang digunakan untuk output suara.",
"settings.personal.audio.browserVoice.label": "Mengatur Suara",
- "settings.personal.audio.instantAutoSendAfterVoiceTranscription.description": "",
+ "settings.personal.audio.instantAutoSendAfterVoiceTranscription.description": "Kirim input suara tertranskripsi segera setelah pengenalan ucapan selesai.",
"settings.personal.audio.instantAutoSendAfterVoiceTranscription.label": "Kirim Otomatis Instan Setelah Transkripsi Suara",
- "settings.personal.audio.kokoroJsDtype.description": "",
- "settings.personal.audio.kokoroJsDtype.label": "",
- "settings.personal.audio.kokoroVoice.description": "",
+ "settings.personal.audio.kokoroJsDtype.description": "Pilih presisi model lokal yang digunakan oleh Kokoro.js.",
+ "settings.personal.audio.kokoroJsDtype.label": "Kokoro.js Dtype",
+ "settings.personal.audio.kokoroVoice.description": "Pilih suara Kokoro.js yang digunakan untuk output suara.",
"settings.personal.audio.kokoroVoice.label": "Mengatur Suara",
- "settings.personal.audio.language.description": "",
+ "settings.personal.audio.language.description": "Atur bahasa pengenalan ucapan atau biarkan kosong untuk mendeteksi secara otomatis.",
"settings.personal.audio.language.label": "Bahasa",
"settings.personal.audio.sections.sttSettings.title": "Pengaturan STT",
"settings.personal.audio.sections.ttsSettings.title": "Pengaturan TTS",
"settings.personal.audio.sections.voice.title": "Suara",
- "settings.personal.audio.serviceVoice.description": "",
+ "settings.personal.audio.serviceVoice.description": "Pilih suara layanan text-to-speech yang dikonfigurasi.",
"settings.personal.audio.serviceVoice.label": "Mengatur Suara",
- "settings.personal.audio.speechPlaybackSpeed.description": "",
- "settings.personal.audio.speechPlaybackSpeed.label": "",
- "settings.personal.audio.speechToTextEngine.description": "",
+ "settings.personal.audio.speechPlaybackSpeed.description": "Sesuaikan kecepatan pemutaran respons suara.",
+ "settings.personal.audio.speechPlaybackSpeed.label": "Kecepatan Pemutaran Suara",
+ "settings.personal.audio.speechToTextEngine.description": "Pilih mesin yang digunakan untuk mentranskripsikan input suara.",
"settings.personal.audio.speechToTextEngine.label": "Mesin Pengenal Ucapan ke Teks",
- "settings.personal.audio.textToSpeechEngine.description": "",
+ "settings.personal.audio.textToSpeechEngine.description": "Pilih mesin yang digunakan untuk membacakan respons asisten.",
"settings.personal.audio.textToSpeechEngine.label": "Mesin Teks-ke-Suara",
"settings.personal.audio.title": "Audio",
- "settings.personal.connections.addConnection.description": "",
- "settings.personal.connections.addConnection.label": "",
- "settings.personal.connections.sections.directConnections.title": "",
+ "settings.personal.connections.addConnection.description": "Hubungkan ke endpoint API kompatibel OpenAI milik Anda sendiri.",
+ "settings.personal.connections.addConnection.label": "Tambah Koneksi",
+ "settings.personal.connections.sections.directConnections.title": "Koneksi Langsung",
"settings.personal.connections.title": "Koneksi",
- "settings.personal.dataControls.archiveAll.label": "",
- "settings.personal.dataControls.archiveAllChats.description": "",
+ "settings.personal.dataControls.archiveAll.label": "Arsipkan Semua",
+ "settings.personal.dataControls.archiveAllChats.description": "Pindahkan setiap obrolan ke arsip setelah konfirmasi.",
"settings.personal.dataControls.archiveAllChats.label": "Arsipkan Semua Obrolan",
- "settings.personal.dataControls.deleteAllChats.description": "",
+ "settings.personal.dataControls.deleteAllChats.description": "Hapus permanen setiap obrolan setelah konfirmasi.",
"settings.personal.dataControls.deleteAllChats.label": "Menghapus Semua Obrolan",
- "settings.personal.dataControls.exportChats.description": "",
+ "settings.personal.dataControls.exportChats.description": "Unduh riwayat obrolan Anda sebagai ekspor JSON.",
"settings.personal.dataControls.exportChats.label": "Ekspor Obrolan",
- "settings.personal.dataControls.importChats.description": "",
+ "settings.personal.dataControls.importChats.description": "Impor riwayat obrolan dari file ekspor JSON.",
"settings.personal.dataControls.importChats.label": "Impor Obrolan",
- "settings.personal.dataControls.manageFiles.description": "",
- "settings.personal.dataControls.manageFiles.label": "",
+ "settings.personal.dataControls.manageFiles.description": "Buka pengelola file untuk file yang diunggah.",
+ "settings.personal.dataControls.manageFiles.label": "Kelola File",
"settings.personal.dataControls.sections.chats.title": "Obrolan",
- "settings.personal.dataControls.sections.files.title": "",
- "settings.personal.dataControls.sharedChats.description": "",
- "settings.personal.dataControls.sharedChats.label": "",
- "settings.personal.dataControls.title": "",
- "settings.personal.general.language.description": "",
+ "settings.personal.dataControls.sections.files.title": "File",
+ "settings.personal.dataControls.sharedChats.description": "Tinjau dan kelola obrolan yang telah Anda bagikan.",
+ "settings.personal.dataControls.sharedChats.label": "Obrolan yang Dibagikan",
+ "settings.personal.dataControls.title": "Kontrol Data",
+ "settings.personal.general.language.description": "Pilih bahasa yang digunakan untuk teks antarmuka.",
"settings.personal.general.language.label": "Bahasa",
- "settings.personal.general.modelParameters.description": "",
- "settings.personal.general.modelParameters.label": "",
- "settings.personal.general.parameters.contextCompactionThreshold.description": "",
- "settings.personal.general.parameters.contextCompactionThreshold.label": "",
- "settings.personal.general.parameters.format.label": "",
- "settings.personal.general.parameters.frequencyPenalty.label": "",
- "settings.personal.general.parameters.functionCalling.description": "",
- "settings.personal.general.parameters.functionCalling.label": "",
- "settings.personal.general.parameters.keepAlive.label": "",
- "settings.personal.general.parameters.logitBias.label": "",
- "settings.personal.general.parameters.maxTokens.label": "",
- "settings.personal.general.parameters.minP.label": "",
- "settings.personal.general.parameters.mirostat.label": "",
- "settings.personal.general.parameters.mirostatEta.label": "",
- "settings.personal.general.parameters.mirostatTau.label": "",
- "settings.personal.general.parameters.numBatch.label": "",
- "settings.personal.general.parameters.numCtx.label": "",
- "settings.personal.general.parameters.numGpu.label": "",
- "settings.personal.general.parameters.numKeep.label": "",
- "settings.personal.general.parameters.numThread.label": "",
- "settings.personal.general.parameters.ollama.description": "",
+ "settings.personal.general.modelParameters.description": "Tampilkan atau sembunyikan parameter generasi kustom.",
+ "settings.personal.general.modelParameters.label": "Parameter model",
+ "settings.personal.general.parameters.contextCompactionThreshold.description": "Tetapkan ambang batas token pemadatan konteks khusus model. Jika disetel, ini menimpa ambang batas global hingga batas maksimal global.",
+ "settings.personal.general.parameters.contextCompactionThreshold.label": "Ambang Batas Pemadatan Konteks",
+ "settings.personal.general.parameters.format.label": "format",
+ "settings.personal.general.parameters.frequencyPenalty.label": "frequency_penalty",
+ "settings.personal.general.parameters.functionCalling.description": "Mode native (default) memanfaatkan kemampuan pemanggilan alat bawaan model. Mode legacy bekerja dengan lebih banyak model dengan memanggil alat sekali sebelum eksekusi melalui injeksi prompt.",
+ "settings.personal.general.parameters.functionCalling.label": "Pemanggilan Fungsi",
+ "settings.personal.general.parameters.keepAlive.label": "keep_alive",
+ "settings.personal.general.parameters.logitBias.label": "logit_bias",
+ "settings.personal.general.parameters.maxTokens.label": "max_tokens",
+ "settings.personal.general.parameters.minP.label": "min_p",
+ "settings.personal.general.parameters.mirostat.label": "mirostat",
+ "settings.personal.general.parameters.mirostatEta.label": "mirostat_eta",
+ "settings.personal.general.parameters.mirostatTau.label": "mirostat_tau",
+ "settings.personal.general.parameters.numBatch.label": "num_batch",
+ "settings.personal.general.parameters.numCtx.label": "num_ctx",
+ "settings.personal.general.parameters.numGpu.label": "num_gpu",
+ "settings.personal.general.parameters.numKeep.label": "num_keep",
+ "settings.personal.general.parameters.numThread.label": "num_thread",
+ "settings.personal.general.parameters.ollama.description": "Opsi ini mengaktifkan atau menonaktifkan fitur penalaran di Ollama, yang memungkinkan model berpikir sebelum menghasilkan respons. Saat diaktifkan, model membutuhkan waktu sejenak untuk memproses konteks percakapan dan menghasilkan respons yang lebih matang.",
"settings.personal.general.parameters.ollama.label": "Ollama",
- "settings.personal.general.parameters.presencePenalty.label": "",
- "settings.personal.general.parameters.reasoningEffort.description": "",
- "settings.personal.general.parameters.reasoningEffort.label": "",
- "settings.personal.general.parameters.reasoningTags.description": "",
- "settings.personal.general.parameters.reasoningTags.label": "",
- "settings.personal.general.parameters.repeatLastN.label": "",
- "settings.personal.general.parameters.repeatPenalty.label": "",
- "settings.personal.general.parameters.seed.description": "",
+ "settings.personal.general.parameters.presencePenalty.label": "presence_penalty",
+ "settings.personal.general.parameters.reasoningEffort.description": "Membatasi upaya penalaran untuk model penalaran. Hanya berlaku untuk model penalaran dari penyedia tertentu yang mendukung fitur ini.",
+ "settings.personal.general.parameters.reasoningEffort.label": "Upaya Penalaran",
+ "settings.personal.general.parameters.reasoningTags.description": "Aktifkan, nonaktifkan, atau sesuaikan tag penalaran yang digunakan oleh model. \"Diaktifkan\" menggunakan tag default, \"Dinonaktifkan\" mematikan tag penalaran, dan \"Kustom\" memungkinkan Anda menentukan tag awal dan akhir sendiri.",
+ "settings.personal.general.parameters.reasoningTags.label": "Tag Penalaran",
+ "settings.personal.general.parameters.repeatLastN.label": "repeat_last_n",
+ "settings.personal.general.parameters.repeatPenalty.label": "repeat_penalty",
+ "settings.personal.general.parameters.seed.description": "Menetapkan seed angka acak untuk pembuatan respons. Mengaturnya ke angka tertentu akan membuat model menghasilkan teks yang sama untuk prompt yang sama.",
"settings.personal.general.parameters.seed.label": "Benih",
- "settings.personal.general.parameters.stopSequence.description": "",
+ "settings.personal.general.parameters.stopSequence.description": "Menetapkan urutan henti yang digunakan. Saat pola ini ditemukan, LLM akan berhenti menghasilkan teks. Beberapa pola henti dapat diatur dengan menentukan beberapa parameter stop terpisah dalam modelfile.",
"settings.personal.general.parameters.stopSequence.label": "Hentikan Urutan",
- "settings.personal.general.parameters.streamChatResponse.description": "",
- "settings.personal.general.parameters.streamChatResponse.label": "",
- "settings.personal.general.parameters.streamDeltaChunkSize.description": "",
- "settings.personal.general.parameters.streamDeltaChunkSize.label": "",
- "settings.personal.general.parameters.temperature.description": "",
+ "settings.personal.general.parameters.streamChatResponse.description": "Saat diaktifkan, model merespons setiap pesan obrolan secara real-time segera setelah pengguna mengirim pesan. Mode ini berguna untuk obrolan langsung, tetapi dapat memengaruhi performa pada perangkat keras yang lebih lambat.",
+ "settings.personal.general.parameters.streamChatResponse.label": "Streaming Respons Obrolan",
+ "settings.personal.general.parameters.streamDeltaChunkSize.description": "Ukuran potongan delta stream untuk model. Memperbesar ukuran potongan membuat model merespons dengan potongan teks yang lebih besar sekaligus.",
+ "settings.personal.general.parameters.streamDeltaChunkSize.label": "Ukuran Chunk Delta Stream",
+ "settings.personal.general.parameters.temperature.description": "Suhu model. Menaikkan suhu membuat jawaban model lebih kreatif.",
"settings.personal.general.parameters.temperature.label": "Suhu",
- "settings.personal.general.parameters.tfsZ.label": "",
- "settings.personal.general.parameters.think.label": "",
- "settings.personal.general.parameters.topK.label": "",
- "settings.personal.general.parameters.topP.label": "",
- "settings.personal.general.parameters.useMlock.label": "",
- "settings.personal.general.parameters.useMmap.label": "",
+ "settings.personal.general.parameters.tfsZ.label": "tfs_z",
+ "settings.personal.general.parameters.think.label": "think",
+ "settings.personal.general.parameters.topK.label": "top_k",
+ "settings.personal.general.parameters.topP.label": "top_p",
+ "settings.personal.general.parameters.useMlock.label": "use_mlock",
+ "settings.personal.general.parameters.useMmap.label": "use_mmap",
"settings.personal.general.sections.advancedParameters.title": "Parameter Lanjutan",
- "settings.personal.general.sections.systemPrompt.description": "",
+ "settings.personal.general.sections.systemPrompt.description": "Atur prompt sistem default untuk obrolan baru.",
"settings.personal.general.sections.systemPrompt.title": "Permintaan Sistem",
"settings.personal.general.sections.webuiSettings.title": "Pengaturan WebUI",
- "settings.personal.general.theme.description": "",
+ "settings.personal.general.theme.description": "Pilih tema warna yang digunakan antarmuka.",
"settings.personal.general.theme.label": "Tema",
"settings.personal.general.title": "Umum",
- "settings.personal.interface.accessibilityMode.description": "",
- "settings.personal.interface.accessibilityMode.label": "",
- "settings.personal.interface.allowUserLocation.description": "",
+ "settings.personal.interface.accessibilityMode.description": "Aktifkan peningkatan visual yang berfokus pada aksesibilitas.",
+ "settings.personal.interface.accessibilityMode.label": "Mode Aksesibilitas",
+ "settings.personal.interface.allowUserLocation.description": "Bagikan lokasi Anda saat ini dengan fitur yang membutuhkannya.",
"settings.personal.interface.allowUserLocation.label": "Izinkan Lokasi Pengguna",
- "settings.personal.interface.allowVoiceInterruptionInCall.description": "",
+ "settings.personal.interface.allowVoiceInterruptionInCall.description": "Izinkan suara memotong ucapan asisten selama panggilan suara.",
"settings.personal.interface.allowVoiceInterruptionInCall.label": "Izinkan Gangguan Suara dalam Panggilan",
- "settings.personal.interface.alwaysCollapseCodeBlocks.description": "",
- "settings.personal.interface.alwaysCollapseCodeBlocks.label": "",
- "settings.personal.interface.alwaysExpandDetails.description": "",
- "settings.personal.interface.alwaysExpandDetails.label": "",
- "settings.personal.interface.android.label": "",
- "settings.personal.interface.autoCopyResponseToClipboard.description": "",
+ "settings.personal.interface.alwaysCollapseCodeBlocks.description": "Ciutkan blok kode secara default.",
+ "settings.personal.interface.alwaysCollapseCodeBlocks.label": "Selalu Ciutkan Blok Kode",
+ "settings.personal.interface.alwaysExpandDetails.description": "Buka blok rincian secara default.",
+ "settings.personal.interface.alwaysExpandDetails.label": "Selalu Perluas Rincian",
+ "settings.personal.interface.android.label": "Android",
+ "settings.personal.interface.autoCopyResponseToClipboard.description": "Salin respons asisten terbaru ke papan klip secara otomatis setelah selesai.",
"settings.personal.interface.autoCopyResponseToClipboard.label": "Tanggapan Salin Otomatis ke Papan Klip",
- "settings.personal.interface.chatBackgroundImage.description": "",
+ "settings.personal.interface.chatBackgroundImage.description": "Unggah atau atur ulang gambar latar belakang konten obrolan.",
"settings.personal.interface.chatBackgroundImage.label": "Gambar Latar Belakang Obrolan",
- "settings.personal.interface.chatBubbleUi.description": "",
+ "settings.personal.interface.chatBubbleUi.description": "Tampilkan pesan dalam wadah gelembung yang ringkas.",
"settings.personal.interface.chatBubbleUi.label": "UI Gelembung Obrolan",
- "settings.personal.interface.chatDirection.description": "",
+ "settings.personal.interface.chatDirection.description": "Pilih arah teks: otomatis, kiri-ke-kanan, atau kanan-ke-kiri.",
"settings.personal.interface.chatDirection.label": "Arah obrolan",
- "settings.personal.interface.chatHoverPreviews.description": "",
- "settings.personal.interface.chatHoverPreviews.label": "",
- "settings.personal.interface.chatTagsAutoGeneration.description": "",
- "settings.personal.interface.chatTagsAutoGeneration.label": "",
- "settings.personal.interface.compressImagesInChannels.description": "",
- "settings.personal.interface.compressImagesInChannels.label": "",
- "settings.personal.interface.copyFormattedText.description": "",
- "settings.personal.interface.copyFormattedText.label": "",
- "settings.personal.interface.decreaseUiScale.label": "",
- "settings.personal.interface.defaultUploadMode.description": "",
- "settings.personal.interface.defaultUploadMode.label": "",
- "settings.personal.interface.detectArtifactsAutomatically.description": "",
- "settings.personal.interface.detectArtifactsAutomatically.label": "",
- "settings.personal.interface.displayChatTitleInTab.description": "",
- "settings.personal.interface.displayChatTitleInTab.label": "",
- "settings.personal.interface.displayEmojiInCall.description": "",
+ "settings.personal.interface.chatHoverPreviews.description": "Tampilkan pratinjau mengambang dari pesan terbaru saat mengarahkan kursor ke obrolan di bilah sisi.",
+ "settings.personal.interface.chatHoverPreviews.label": "Pratinjau Hover Obrolan",
+ "settings.personal.interface.chatTagsAutoGeneration.description": "Buat tag untuk obrolan secara otomatis.",
+ "settings.personal.interface.chatTagsAutoGeneration.label": "Pembuatan Tag Obrolan Otomatis",
+ "settings.personal.interface.compressImagesInChannels.description": "Terapkan kompresi gambar untuk unggahan di saluran juga.",
+ "settings.personal.interface.compressImagesInChannels.label": "Kompres Gambar di Saluran",
+ "settings.personal.interface.copyFormattedText.description": "Salin konten berformat kaya alih-alih teks biasa.",
+ "settings.personal.interface.copyFormattedText.label": "Salin Teks Berformat",
+ "settings.personal.interface.decreaseUiScale.label": "Perkecil Skala UI",
+ "settings.personal.interface.defaultUploadMode.description": "Lampirkan berkas dengan konten lengkap atau pengambilan terfokus secara bawaan.",
+ "settings.personal.interface.defaultUploadMode.label": "Mode Unggah Bawaan",
+ "settings.personal.interface.detectArtifactsAutomatically.description": "Deteksi artefak yang dihasilkan dan tampilkan di ruang kerja artefak.",
+ "settings.personal.interface.detectArtifactsAutomatically.label": "Deteksi Artefak Otomatis",
+ "settings.personal.interface.displayChatTitleInTab.description": "Gunakan judul obrolan aktif sebagai judul tab peramban.",
+ "settings.personal.interface.displayChatTitleInTab.label": "Tampilkan Judul Obrolan di Tab",
+ "settings.personal.interface.displayEmojiInCall.description": "Tampilkan umpan balik emoji di antarmuka panggilan.",
"settings.personal.interface.displayEmojiInCall.label": "Menampilkan Emoji dalam Panggilan",
- "settings.personal.interface.displayMultiModelResponsesInTabs.description": "",
- "settings.personal.interface.displayMultiModelResponsesInTabs.label": "",
- "settings.personal.interface.displayTheUsernameInsteadOfYouInTheChat.description": "",
+ "settings.personal.interface.displayMultiModelResponsesInTabs.description": "Kelompokkan respons multi-model ke dalam tab.",
+ "settings.personal.interface.displayMultiModelResponsesInTabs.label": "Tampilkan Respons Multi-model di Tab",
+ "settings.personal.interface.displayTheUsernameInsteadOfYouInTheChat.description": "Tampilkan label nama pengguna alih-alih Anda di gelembung obrolan.",
"settings.personal.interface.displayTheUsernameInsteadOfYouInTheChat.label": "Menampilkan nama pengguna, bukan Anda di Obrolan",
- "settings.personal.interface.enableMessageQueue.description": "",
- "settings.personal.interface.enableMessageQueue.label": "",
- "settings.personal.interface.enterKeyBehavior.description": "",
- "settings.personal.interface.enterKeyBehavior.label": "",
- "settings.personal.interface.fadeEffectForStreamingText.description": "",
- "settings.personal.interface.fadeEffectForStreamingText.label": "",
- "settings.personal.interface.floatingQuickActions.label": "",
- "settings.personal.interface.followUpAutoGeneration.description": "",
- "settings.personal.interface.followUpAutoGeneration.label": "",
- "settings.personal.interface.fontFamily.description": "",
- "settings.personal.interface.fontFamily.label": "",
- "settings.personal.interface.hapticFeedback.label": "",
- "settings.personal.interface.iframeSandboxAllowDownloads.description": "",
- "settings.personal.interface.iframeSandboxAllowDownloads.label": "",
- "settings.personal.interface.iframeSandboxAllowForms.description": "",
- "settings.personal.interface.iframeSandboxAllowForms.label": "",
- "settings.personal.interface.iframeSandboxAllowSameOrigin.description": "",
- "settings.personal.interface.iframeSandboxAllowSameOrigin.label": "",
- "settings.personal.interface.iframeSandboxAllowScripts.description": "",
- "settings.personal.interface.iframeSandboxAllowScripts.label": "",
- "settings.personal.interface.imageCompression.label": "",
- "settings.personal.interface.increaseUiScale.label": "",
- "settings.personal.interface.insertFollowUpPromptToInput.description": "",
- "settings.personal.interface.insertFollowUpPromptToInput.label": "",
- "settings.personal.interface.insertPromptAsRichText.description": "",
- "settings.personal.interface.insertPromptAsRichText.label": "",
- "settings.personal.interface.insertSuggestionPromptToInput.description": "",
- "settings.personal.interface.insertSuggestionPromptToInput.label": "",
- "settings.personal.interface.keepFollowUpPromptsInChat.description": "",
- "settings.personal.interface.keepFollowUpPromptsInChat.label": "",
- "settings.personal.interface.landingPageMode.description": "",
- "settings.personal.interface.landingPageMode.label": "",
- "settings.personal.interface.openModalToManageFloatingQuickActions.label": "",
- "settings.personal.interface.openModalToManageImageCompression.label": "",
- "settings.personal.interface.pasteLargeTextAsFile.description": "",
- "settings.personal.interface.pasteLargeTextAsFile.label": "",
- "settings.personal.interface.promptAutocompletion.description": "",
- "settings.personal.interface.promptAutocompletion.label": "",
- "settings.personal.interface.regenerateMenu.description": "",
- "settings.personal.interface.regenerateMenu.label": "",
- "settings.personal.interface.renderMarkdownInAssistantMessages.description": "",
- "settings.personal.interface.renderMarkdownInAssistantMessages.label": "",
- "settings.personal.interface.renderMarkdownInPreviews.description": "",
- "settings.personal.interface.renderMarkdownInPreviews.label": "",
- "settings.personal.interface.renderMarkdownInUserMessages.description": "",
- "settings.personal.interface.renderMarkdownInUserMessages.label": "",
- "settings.personal.interface.responseAutoScroll.description": "",
- "settings.personal.interface.responseAutoScroll.label": "",
- "settings.personal.interface.richTextInputForChat.description": "",
- "settings.personal.interface.richTextInputForChat.label": "",
- "settings.personal.interface.scrollOnBranchChange.description": "",
- "settings.personal.interface.scrollOnBranchChange.label": "",
- "settings.personal.interface.sections.artifacts.title": "",
+ "settings.personal.interface.enableMessageQueue.description": "Antrekan pesan keluar alih-alih memotong respons aktif.",
+ "settings.personal.interface.enableMessageQueue.label": "Aktifkan Antrean Pesan",
+ "settings.personal.interface.enterKeyBehavior.description": "Pilih apakah Enter langsung mengirim pesan atau menggunakan Ctrl+Enter.",
+ "settings.personal.interface.enterKeyBehavior.label": "Perilaku Tombol Enter",
+ "settings.personal.interface.fadeEffectForStreamingText.description": "Beri efek memudar pada teks streaming saat tiba.",
+ "settings.personal.interface.fadeEffectForStreamingText.label": "Efek Memudar untuk Teks Streaming",
+ "settings.personal.interface.floatingQuickActions.label": "Tindakan Cepat Melayang",
+ "settings.personal.interface.followUpAutoGeneration.description": "Hasilkan saran prompt lanjutan setelah respons.",
+ "settings.personal.interface.followUpAutoGeneration.label": "Pembuatan Otomatis Prompt Lanjutan",
+ "settings.personal.interface.fontFamily.description": "Gunakan keluarga font lokal untuk antarmuka aplikasi.",
+ "settings.personal.interface.fontFamily.label": "Keluarga Font",
+ "settings.personal.interface.hapticFeedback.label": "Umpan Balik Haptik",
+ "settings.personal.interface.iframeSandboxAllowDownloads.description": "Izinkan unduhan di dalam iframe sandbox.",
+ "settings.personal.interface.iframeSandboxAllowDownloads.label": "Sandbox iframe Izinkan Unduhan",
+ "settings.personal.interface.iframeSandboxAllowForms.description": "Izinkan formulir di dalam iframe artefak sandbox.",
+ "settings.personal.interface.iframeSandboxAllowForms.label": "Sandbox iframe Izinkan Formulir",
+ "settings.personal.interface.iframeSandboxAllowSameOrigin.description": "Izinkan artefak mengakses API peramban same-origin di dalam sandbox.",
+ "settings.personal.interface.iframeSandboxAllowSameOrigin.label": "Sandbox iframe Izinkan Same Origin",
+ "settings.personal.interface.iframeSandboxAllowScripts.description": "Izinkan skrip di dalam iframe sandbox.",
+ "settings.personal.interface.iframeSandboxAllowScripts.label": "Sandbox iframe Izinkan Skrip",
+ "settings.personal.interface.imageCompression.label": "Kompresi Gambar",
+ "settings.personal.interface.increaseUiScale.label": "Tingkatkan Skala UI",
+ "settings.personal.interface.insertFollowUpPromptToInput.description": "Sisipkan prompt lanjutan yang dipilih langsung ke kolom input.",
+ "settings.personal.interface.insertFollowUpPromptToInput.label": "Sisipkan Prompt Lanjutan ke Input",
+ "settings.personal.interface.insertPromptAsRichText.description": "Tempel prompt yang disisipkan sebagai teks kaya jika memungkinkan.",
+ "settings.personal.interface.insertPromptAsRichText.label": "Sisipkan Prompt sebagai Teks Kaya",
+ "settings.personal.interface.insertSuggestionPromptToInput.description": "Masukkan teks saran yang dipilih ke kolom input.",
+ "settings.personal.interface.insertSuggestionPromptToInput.label": "Sisipkan Prompt Saran ke Input",
+ "settings.personal.interface.keepFollowUpPromptsInChat.description": "Tetap tampilkan prompt lanjutan yang dihasilkan di dalam obrolan.",
+ "settings.personal.interface.keepFollowUpPromptsInChat.label": "Pertahankan Prompt Lanjutan di Obrolan",
+ "settings.personal.interface.landingPageMode.description": "Pilih apakah aplikasi terbuka ke tampilan beranda default atau obrolan.",
+ "settings.personal.interface.landingPageMode.label": "Mode Halaman Arahan",
+ "settings.personal.interface.openModalToManageFloatingQuickActions.label": "Buka Modal untuk Mengelola Tindakan Cepat Melayang",
+ "settings.personal.interface.openModalToManageImageCompression.label": "Buka Modal untuk Mengelola Kompresi Gambar",
+ "settings.personal.interface.pasteLargeTextAsFile.description": "Ubah teks panjang yang ditempel menjadi lampiran berkas.",
+ "settings.personal.interface.pasteLargeTextAsFile.label": "Tempel Teks Panjang sebagai Berkas",
+ "settings.personal.interface.promptAutocompletion.description": "Sarankan pelengkapan saat menyusun prompt.",
+ "settings.personal.interface.promptAutocompletion.label": "Pelengkapan Otomatis Prompt",
+ "settings.personal.interface.regenerateMenu.description": "Tampilkan menu tindakan buat ulang untuk respons asisten.",
+ "settings.personal.interface.regenerateMenu.label": "Menu Buat Ulang",
+ "settings.personal.interface.renderMarkdownInAssistantMessages.description": "Format sintaksis Markdown dalam respons asisten.",
+ "settings.personal.interface.renderMarkdownInAssistantMessages.label": "Render Markdown di Pesan Asisten",
+ "settings.personal.interface.renderMarkdownInPreviews.description": "Format Markdown dalam pratinjau dan antarmuka konten ringkas.",
+ "settings.personal.interface.renderMarkdownInPreviews.label": "Render Markdown di Pratinjau",
+ "settings.personal.interface.renderMarkdownInUserMessages.description": "Format sintaksis Markdown dalam pesan Anda.",
+ "settings.personal.interface.renderMarkdownInUserMessages.label": "Render Markdown di Pesan Pengguna",
+ "settings.personal.interface.responseAutoScroll.description": "Ikuti respons asisten saat dibuat.",
+ "settings.personal.interface.responseAutoScroll.label": "Gulir Otomatis Respons",
+ "settings.personal.interface.richTextInputForChat.description": "Gunakan penyusun teks kaya alih-alih area teks biasa.",
+ "settings.personal.interface.richTextInputForChat.label": "Input Teks Kaya untuk Obrolan",
+ "settings.personal.interface.scrollOnBranchChange.description": "Gulir ke cabang aktif saat beralih cabang respons.",
+ "settings.personal.interface.scrollOnBranchChange.label": "Gulir Saat Penggantian Cabang",
+ "settings.personal.interface.sections.artifacts.title": "Artefak",
"settings.personal.interface.sections.chat.title": "Obrolan",
"settings.personal.interface.sections.file.title": "Berkas",
- "settings.personal.interface.sections.input.title": "",
+ "settings.personal.interface.sections.input.title": "Input",
"settings.personal.interface.sections.ui.title": "UI",
"settings.personal.interface.sections.voice.title": "Suara",
- "settings.personal.interface.showFilesOnTerminalSelect.description": "",
- "settings.personal.interface.showFilesOnTerminalSelect.label": "",
- "settings.personal.interface.showFormattingToolbar.description": "",
- "settings.personal.interface.showFormattingToolbar.label": "",
- "settings.personal.interface.stylizedPdfExport.description": "",
- "settings.personal.interface.stylizedPdfExport.label": "",
- "settings.personal.interface.temporaryChatByDefault.description": "",
- "settings.personal.interface.temporaryChatByDefault.label": "",
- "settings.personal.interface.terminalFileDisplay.description": "",
- "settings.personal.interface.terminalFileDisplay.label": "",
- "settings.personal.interface.terminalPreviewAllowSameOrigin.description": "",
- "settings.personal.interface.terminalPreviewAllowSameOrigin.label": "",
+ "settings.personal.interface.showFilesOnTerminalSelect.description": "Buka penjelajah berkas setelah memilih terminal.",
+ "settings.personal.interface.showFilesOnTerminalSelect.label": "Tampilkan Berkas saat Terminal Dipilih",
+ "settings.personal.interface.showFormattingToolbar.description": "Tampilkan bilah pemformatan pada penyusun teks kaya.",
+ "settings.personal.interface.showFormattingToolbar.label": "Tampilkan Bilah Alat Pemformatan",
+ "settings.personal.interface.stylizedPdfExport.description": "Gunakan pemformatan bergaya saat mengekspor obrolan ke PDF.",
+ "settings.personal.interface.stylizedPdfExport.label": "Ekspor PDF Bergaya",
+ "settings.personal.interface.temporaryChatByDefault.description": "Mulai obrolan baru sebagai obrolan sementara secara default.",
+ "settings.personal.interface.temporaryChatByDefault.label": "Obrolan Sementara secara Default",
+ "settings.personal.interface.terminalFileDisplay.description": "Pilih lokasi default kemunculan hasil display_file terminal.",
+ "settings.personal.interface.terminalFileDisplay.label": "Tampilan Berkas Terminal",
+ "settings.personal.interface.terminalPreviewAllowSameOrigin.description": "Izinkan pratinjau terminal mengakses API browser same-origin.",
+ "settings.personal.interface.terminalPreviewAllowSameOrigin.label": "Izinkan Same-Origin pada Pratinjau Terminal",
"settings.personal.interface.title": "Antarmuka",
- "settings.personal.interface.titleAutoGeneration.description": "",
+ "settings.personal.interface.titleAutoGeneration.description": "Hasilkan judul obrolan secara otomatis dari konten percakapan.",
"settings.personal.interface.titleAutoGeneration.label": "Pembuatan Judul Secara Otomatis",
- "settings.personal.interface.toastNotificationsForNewUpdates.description": "",
- "settings.personal.interface.toastNotificationsForNewUpdates.label": "",
- "settings.personal.interface.uiScale.label": "",
- "settings.personal.interface.webSearchInChat.description": "",
- "settings.personal.interface.webSearchInChat.label": "",
- "settings.personal.interface.widescreenMode.description": "",
+ "settings.personal.interface.toastNotificationsForNewUpdates.description": "Tampilkan notifikasi toast pembaruan kepada admin saat versi baru tersedia.",
+ "settings.personal.interface.toastNotificationsForNewUpdates.label": "Notifikasi Toast untuk Pembaruan Baru",
+ "settings.personal.interface.uiScale.label": "Skala UI",
+ "settings.personal.interface.webSearchInChat.description": "Atur ketersediaan pencarian web untuk obrolan baru.",
+ "settings.personal.interface.webSearchInChat.label": "Pencarian Web di Obrolan",
+ "settings.personal.interface.widescreenMode.description": "Gunakan tata letak obrolan yang lebih lebar pada layar besar.",
"settings.personal.interface.widescreenMode.label": "Mode Layar Lebar",
- "settings.personal.notifications.addNotificationTarget.label": "",
- "settings.personal.notifications.browserNotifications.label": "",
- "settings.personal.notifications.notificationSound.label": "",
- "settings.personal.notifications.notificationTargets.label": "",
+ "settings.personal.notifications.addNotificationTarget.label": "Tambah Target Notifikasi",
+ "settings.personal.notifications.browserNotifications.label": "Notifikasi Browser",
+ "settings.personal.notifications.notificationSound.label": "Suara Notifikasi",
+ "settings.personal.notifications.notificationTargets.label": "Target Notifikasi",
"settings.personal.notifications.title": "Pemberitahuan",
"settings.personal.personalization.clearMemory.label": "Menghapus memori",
"settings.personal.personalization.manageMemories.label": "Mengelola",
"settings.personal.personalization.memory.description": "Anda dapat mempersonalisasi interaksi Anda dengan LLM dengan menambahkan kenangan melalui tombol 'Kelola' di bawah ini, sehingga lebih bermanfaat dan disesuaikan untuk Anda.",
"settings.personal.personalization.memory.label": "Memori",
"settings.personal.personalization.noResultsFound.description": "Memori yang dapat diakses oleh LLM akan ditampilkan di sini.",
- "settings.personal.personalization.savedMemories.label": "",
+ "settings.personal.personalization.savedMemories.label": "Memori Tersimpan",
"settings.personal.personalization.sections.memory.title": "Memori",
"settings.personal.personalization.title": "Personalisasi",
- "settings.personal.shortcuts.acceptAutocomplete.label": "",
- "settings.personal.shortcuts.addPrompt.label": "",
- "settings.personal.shortcuts.allowToolCall.label": "",
- "settings.personal.shortcuts.attachFile.label": "",
- "settings.personal.shortcuts.closeModal.label": "",
+ "settings.personal.shortcuts.acceptAutocomplete.label": "Terima Pembuatan Pelengkapan Otomatis\\nLompat ke Variabel Prompt",
+ "settings.personal.shortcuts.addPrompt.label": "Tambah Prompt Kustom",
+ "settings.personal.shortcuts.allowToolCall.label": "Izinkan Panggilan Alat",
+ "settings.personal.shortcuts.attachFile.label": "Lampirkan Berkas dari Pengetahuan",
+ "settings.personal.shortcuts.closeModal.label": "Tutup Modal",
"settings.personal.shortcuts.command.label": "Perintah",
- "settings.personal.shortcuts.copyLastCodeBlock.label": "",
- "settings.personal.shortcuts.copyLastResponse.label": "",
+ "settings.personal.shortcuts.copyLastCodeBlock.label": "Salin Blok Kode Terakhir",
+ "settings.personal.shortcuts.copyLastResponse.label": "Salin Respons Terakhir",
"settings.personal.shortcuts.deleteChat.label": "Menghapus Obrolan",
- "settings.personal.shortcuts.denyToolCall.label": "",
- "settings.personal.shortcuts.enableKeyboardShortcuts.description": "",
- "settings.personal.shortcuts.enableKeyboardShortcuts.label": "",
- "settings.personal.shortcuts.focusInput.label": "",
- "settings.personal.shortcuts.generateMessagePair.label": "",
- "settings.personal.shortcuts.navigateChatDown.label": "",
- "settings.personal.shortcuts.navigateChatUp.label": "",
- "settings.personal.shortcuts.navigatePromptHistoryUp.label": "",
+ "settings.personal.shortcuts.denyToolCall.label": "Tolak Panggilan Alat",
+ "settings.personal.shortcuts.enableKeyboardShortcuts.description": "Saat dinonaktifkan, pintasan keyboard tidak akan memicu aksi apa pun.",
+ "settings.personal.shortcuts.enableKeyboardShortcuts.label": "Aktifkan Pintasan Keyboard",
+ "settings.personal.shortcuts.focusInput.label": "Fokuskan Input Obrolan",
+ "settings.personal.shortcuts.generateMessagePair.label": "Hasilkan Pasangan Pesan",
+ "settings.personal.shortcuts.navigateChatDown.label": "Beralih ke Obrolan Berikutnya",
+ "settings.personal.shortcuts.navigateChatUp.label": "Beralih ke Obrolan Sebelumnya",
+ "settings.personal.shortcuts.navigatePromptHistoryUp.label": "Sunting Pesan Terakhir",
"settings.personal.shortcuts.newChat.label": "Obrolan Baru",
- "settings.personal.shortcuts.newTemporaryChat.label": "",
- "settings.personal.shortcuts.openModelSelector.label": "",
- "settings.personal.shortcuts.openSettings.label": "",
- "settings.personal.shortcuts.preventFileCreation.label": "",
- "settings.personal.shortcuts.regenerateResponse.label": "",
- "settings.personal.shortcuts.resetDefaults.label": "",
+ "settings.personal.shortcuts.newTemporaryChat.label": "Obrolan Sementara Baru",
+ "settings.personal.shortcuts.openModelSelector.label": "Buka Pemilih Model",
+ "settings.personal.shortcuts.openSettings.label": "Buka Pengaturan",
+ "settings.personal.shortcuts.preventFileCreation.label": "Cegah Pembuatan Berkas",
+ "settings.personal.shortcuts.regenerateResponse.label": "Buat Ulang Respons",
+ "settings.personal.shortcuts.resetDefaults.label": "Setel Ulang ke Default",
"settings.personal.shortcuts.search.label": "Cari",
- "settings.personal.shortcuts.showShortcuts.label": "",
- "settings.personal.shortcuts.stopGenerating.label": "",
- "settings.personal.shortcuts.talkToModel.label": "",
- "settings.personal.shortcuts.title": "",
- "settings.personal.shortcuts.toggleControls.label": "",
- "settings.personal.shortcuts.toggleDictation.label": "",
- "settings.personal.shortcuts.toggleMute.label": "",
- "settings.personal.shortcuts.toggleSidebar.label": "",
- "settings.personal.tools.addConnection.description": "",
- "settings.personal.tools.addConnection.label": "",
- "settings.personal.tools.openApi.label": "",
- "settings.personal.tools.sections.externalToolServers.title": "",
- "settings.personal.tools.terminals.addConnection.description": "",
- "settings.personal.tools.terminals.addConnection.label": "",
- "settings.personal.tools.terminals.sections.openTerminal.title": "",
- "settings.personal.tools.title": "",
- "settings.personal.usage.sections.activity.title": "",
- "settings.personal.usage.sections.activityInsights.title": "",
- "settings.personal.usage.sections.mostUsedTools.title": "",
- "settings.personal.usage.sections.overview.title": "",
- "settings.personal.usage.sections.topModels.title": "",
- "settings.personal.usage.title": "",
+ "settings.personal.shortcuts.showShortcuts.label": "Tampilkan Pintasan",
+ "settings.personal.shortcuts.stopGenerating.label": "Hentikan Pembuatan",
+ "settings.personal.shortcuts.talkToModel.label": "Bicara dengan Model",
+ "settings.personal.shortcuts.title": "Papan Ketik",
+ "settings.personal.shortcuts.toggleControls.label": "Alihkan Kontrol",
+ "settings.personal.shortcuts.toggleDictation.label": "Alihkan Dikte",
+ "settings.personal.shortcuts.toggleMute.label": "Alihkan Senyap",
+ "settings.personal.shortcuts.toggleSidebar.label": "Alihkan Bilah Sisi",
+ "settings.personal.tools.addConnection.description": "Hubungkan ke server alat eksternal yang kompatibel dengan OpenAPI milik Anda.",
+ "settings.personal.tools.addConnection.label": "Tambah Koneksi",
+ "settings.personal.tools.openApi.label": "OpenAPI",
+ "settings.personal.tools.sections.externalToolServers.title": "Server Alat Eksternal",
+ "settings.personal.tools.terminals.addConnection.description": "Hubungkan ke instans Open Terminal untuk menelusuri berkas dan menggunakannya sebagai alat yang selalu aktif. Hanya satu yang dapat aktif dalam satu waktu.",
+ "settings.personal.tools.terminals.addConnection.label": "Tambah Koneksi",
+ "settings.personal.tools.terminals.sections.openTerminal.title": "Open Terminal",
+ "settings.personal.tools.title": "Integrasi",
+ "settings.personal.usage.sections.activity.title": "Aktivitas",
+ "settings.personal.usage.sections.activityInsights.title": "Wawasan aktivitas",
+ "settings.personal.usage.sections.mostUsedTools.title": "Alat paling sering digunakan",
+ "settings.personal.usage.sections.overview.title": "Ringkasan",
+ "settings.personal.usage.sections.topModels.title": "Model teratas",
+ "settings.personal.usage.title": "Penggunaan",
"Share": "Berbagi",
"Share Chat": "Bagikan Obrolan",
- "Share link copied to clipboard.": "",
+ "Share link copied to clipboard.": "Tautan bagikan disalin ke papan klip.",
"Share to Open WebUI Community": "Bagikan ke Komunitas OpenWebUI",
- "Share your background and interests": "",
- "Shared": "",
- "Shared Chats": "",
- "Shared with you": "",
- "Sharing Permissions": "",
- "Shell": "",
- "Shorten older messages so this chat can keep going.": "",
+ "Share your background and interests": "Bagikan latar belakang dan minat Anda",
+ "Shared": "Dibagikan",
+ "Shared Chats": "Obrolan Dibagikan",
+ "Shared with you": "Dibagikan kepada Anda",
+ "Sharing Permissions": "Izin Berbagi",
+ "Shell": "Shell",
+ "Shorten older messages so this chat can keep going.": "Perpendek pesan lama agar obrolan ini dapat terus berlanjut.",
"Show": "Tampilkan",
- "Show \"What's New\" Modal on Login": "",
- "Show All": "",
- "Show all ({{COUNT}} characters)": "",
- "Show Files": "",
- "Show Hidden Files": "",
- "Show image preview": "",
- "Show Model": "",
- "Show more": "",
- "Show or switch the current model.": "",
- "Show Shortcuts": "",
- "Show the floating quick-action toolbar in chat.": "",
+ "Show \"What's New\" Modal on Login": "Tampilkan Modal \"Apa yang Baru\" saat Masuk",
+ "Show All": "Tampilkan Semua",
+ "Show all ({{COUNT}} characters)": "Tampilkan semua ({{COUNT}} karakter)",
+ "Show Files": "Tampilkan Berkas",
+ "Show Hidden Files": "Tampilkan Berkas Tersembunyi",
+ "Show image preview": "Tampilkan pratinjau gambar",
+ "Show me a code snippet": "Tunjukkan cuplikan kode",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "Tunjukkan cuplikan kode sticky header situs web dalam CSS dan JavaScript.",
+ "Show Model": "Tampilkan Model",
+ "Show more": "Tampilkan lebih banyak",
+ "Show or switch the current model.": "Tampilkan atau beralih model saat ini.",
+ "Show Shortcuts": "Tampilkan Pintasan",
+ "Show the floating quick-action toolbar in chat.": "Tampilkan bilah alat tindakan cepat mengambang di obrolan.",
"Show your support!": "Tunjukkan dukungan Anda!",
"Showcased creativity": "Menampilkan kreativitas",
- "Sidebar": "",
+ "Sidebar": "Bilah Samping",
"Sign in": "Masuk",
- "Sign in to {{WEBUI_NAME}}": "",
- "Sign in to {{WEBUI_NAME}} with LDAP": "",
+ "Sign in to {{WEBUI_NAME}}": "Masuk ke {{WEBUI_NAME}}",
+ "Sign in to {{WEBUI_NAME}} with LDAP": "Masuk ke {{WEBUI_NAME}} dengan LDAP",
"Sign Out": "Keluar",
"Sign up": "Daftar",
- "Sign up to {{WEBUI_NAME}}": "",
- "Signing in to {{WEBUI_NAME}}": "",
- "simultaneous sub-agents": "",
- "Single": "",
- "Sink List": "",
- "Size": "",
- "sk-1234": "",
- "Skill created successfully": "",
- "Skill deleted successfully": "",
- "Skill Description": "",
- "Skill ID": "",
- "Skill imported successfully": "",
- "Skill Instructions": "",
- "Skill Menu": "",
- "Skill Name": "",
- "Skill updated successfully": "",
- "Skills": "",
- "Skills Access": "",
- "Skills Public Sharing": "",
- "Skills Sharing": "",
- "Skip to main content": "",
- "Slim requires external services for embeddings, vector storage, and document extraction. Basic text files can be read locally.": "",
- "Slim requires external speech providers. Local speech models and audio conversion are unavailable.": "",
- "Something went wrong :/": "",
- "Sonar": "",
- "Sonar Deep Research": "",
- "Sonar Pro": "",
- "Sonar Reasoning": "",
- "Sonar Reasoning Pro": "",
- "Sort": "",
+ "Sign up to {{WEBUI_NAME}}": "Daftar ke {{WEBUI_NAME}}",
+ "Signing in to {{WEBUI_NAME}}": "Sedang masuk ke {{WEBUI_NAME}}",
+ "simultaneous sub-agents": "sub-agen simultan",
+ "Single": "Tunggal",
+ "Sink List": "Daftar Sink",
+ "Size": "Ukuran",
+ "sk-1234": "sk-1234",
+ "Skill created successfully": "Keahlian berhasil dibuat",
+ "Skill deleted successfully": "Keahlian berhasil dihapus",
+ "Skill Description": "Deskripsi Keahlian",
+ "Skill ID": "ID Keahlian",
+ "Skill imported successfully": "Keahlian berhasil diimpor",
+ "Skill Instructions": "Instruksi Keahlian",
+ "Skill Menu": "Menu Keahlian",
+ "Skill Name": "Nama Keahlian",
+ "Skill updated successfully": "Keahlian berhasil diperbarui",
+ "Skills": "Keahlian",
+ "Skills Access": "Akses Keahlian",
+ "Skills Public Sharing": "Berbagi Publik Keahlian",
+ "Skills Sharing": "Berbagi Keahlian",
+ "Skip to main content": "Lewati ke konten utama",
+ "Slim requires external services for embeddings, vector storage, and document extraction. Basic text files can be read locally.": "Slim memerlukan layanan eksternal untuk embedding, penyimpanan vektor, dan ekstraksi dokumen. Berkas teks dasar dapat dibaca secara lokal.",
+ "Slim requires external speech providers. Local speech models and audio conversion are unavailable.": "Slim memerlukan penyedia wicara eksternal. Model wicara lokal dan konversi audio tidak tersedia.",
+ "Something went wrong :/": "Terjadi kesalahan :/",
+ "Sonar": "Sonar",
+ "Sonar Deep Research": "Sonar Deep Research",
+ "Sonar Pro": "Sonar Pro",
+ "Sonar Reasoning": "Sonar Reasoning",
+ "Sonar Reasoning Pro": "Sonar Reasoning Pro",
+ "Sort": "Urutkan",
"Source": "Sumber",
- "Specific users or groups": "",
+ "Specific users or groups": "Pengguna atau grup tertentu",
"Speech recognition error: {{error}}": "Kesalahan pengenalan suara: {{error}}",
- "Speech-to-Text Language": "",
- "Sponsor on GitHub": "",
- "Staan API Key": "",
- "Start a new conversation": "",
+ "Speech-to-Text Language": "Bahasa Ucapan-ke-Teks",
+ "Sponsor on GitHub": "Sponsori di GitHub",
+ "Staan API Key": "Kunci API Staan",
+ "Start a new conversation": "Mulai percakapan baru",
"Start of the channel": "Awal saluran",
- "Start Tag": "",
- "Start the chat to use this terminal.": "",
+ "Start Tag": "Tag Awal",
+ "Start the chat to use this terminal.": "Mulai obrolan untuk menggunakan terminal ini.",
"Starting in {{count}} minutes_one": "Mulai dalam {{count}} menit",
- "Starting in {{count}} minutes_other": "",
- "Starting in 1 minute": "",
- "Starting kernel...": "",
- "Starting now": "",
- "Status": "",
- "Status cleared successfully": "",
- "Status updated successfully": "",
- "Status: check what is running in this chat.": "",
+ "Starting in {{count}} minutes_other": "Dimulai dalam {{count}} menit",
+ "Starting in 1 minute": "Dimulai dalam 1 menit",
+ "Starting kernel...": "Memulai kernel...",
+ "Starting now": "Mulai sekarang",
+ "Status": "Status",
+ "Status cleared successfully": "Status berhasil dibersihkan",
+ "Status updated successfully": "Status berhasil diperbarui",
+ "Status: check what is running in this chat.": "Status: periksa apa yang sedang berjalan di obrolan ini.",
"STDOUT/STDERR": "STDOUT/STDERR",
- "Stop": "",
- "Stop before each tool call until you allow or deny it.": "",
- "Stop camera": "",
- "Stop Download": "",
- "Stop Generating": "",
- "Storage": "",
- "Streamable HTTP": "",
- "Strikethrough": "",
- "Su_day_of_week": "",
- "Submit answers": "",
- "Submit question": "",
- "Submit suggestion": "",
- "Subtitle": "",
+ "Stop": "Berhenti",
+ "Stop before each tool call until you allow or deny it.": "Berhenti sebelum setiap pemanggilan alat sampai Anda mengizinkan atau menolaknya.",
+ "Stop camera": "Hentikan kamera",
+ "Stop Download": "Hentikan Unduhan",
+ "Stop Generating": "Hentikan Pembuatan",
+ "Storage": "Penyimpanan",
+ "Streamable HTTP": "HTTP Dapat Dialirkan",
+ "Strikethrough": "Coretan",
+ "Su_day_of_week": "Min",
+ "Submit answers": "Kirim jawaban",
+ "Submit question": "Kirim pertanyaan",
+ "Submit suggestion": "Kirim saran",
+ "Subtitle": "Subjudul",
"Success": "Berhasil",
- "Successfully imported {{userCount}} users.": "",
- "Suggest a change": "",
+ "Successfully imported {{userCount}} users.": "Berhasil mengimpor {{userCount}} pengguna.",
+ "Suggest a change": "Sarankan perubahan",
"Suggested": "Disarankan",
- "Suggested prompts": "",
- "Summarize this note.": "",
- "Support": "",
- "Support this plugin:": "",
- "Swap": "",
- "Switch camera": "",
- "Switch to JSON editor": "",
- "Switch to visual editor": "",
- "Sync": "",
- "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "",
- "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "",
- "Sync Complete!": "",
- "Sync directory": "",
- "Sync Failed": "",
- "Sync Usage Stats": "",
- "Syncing stats...": "",
- "Syncing...": "",
- "Syncs only chats with updates after your last sync timestamp. Disable to re-sync all chats.": "",
+ "Suggested prompts": "Prompt yang disarankan",
+ "Summarize this note.": "Ringkas catatan ini.",
+ "Support": "Dukungan",
+ "Support this plugin:": "Dukung plugin ini:",
+ "Swap": "Tukar",
+ "Switch camera": "Ganti kamera",
+ "Switch to JSON editor": "Beralih ke editor JSON",
+ "Switch to visual editor": "Beralih ke editor visual",
+ "Sync": "Sinkronisasi",
+ "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "Sinkronkan direktori lokal dengan basis pengetahuan ini. Hanya berkas baru dan yang dimodifikasi yang akan diunggah. Struktur direktori akan dicerminkan.",
+ "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "Sinkronisasi selesai: {{added}} ditambahkan, {{modified}} diubah, {{deleted}} dihapus, {{unmodified}} tidak diubah",
+ "Sync Complete!": "Sinkronisasi Selesai!",
+ "Sync directory": "Sinkronkan direktori",
+ "Sync Failed": "Sinkronisasi Gagal",
+ "Sync Usage Stats": "Sinkronkan Statistik Penggunaan",
+ "Syncing stats...": "Menyinkronkan statistik...",
+ "Syncing...": "Menyinkronkan...",
+ "Syncs only chats with updates after your last sync timestamp. Disable to re-sync all chats.": "Hanya menyinkronkan obrolan yang memiliki pembaruan setelah tanda waktu sinkronisasi terakhir Anda. Nonaktifkan untuk menyinkronkan ulang semua obrolan.",
"System": "Sistem",
- "System events only": "",
- "System Instructions": "",
+ "System events only": "Hanya peristiwa sistem",
+ "System Instructions": "Instruksi Sistem",
"System Prompt": "Permintaan Sistem",
- "Table": "",
- "Tag": "",
- "Tags": "",
- "Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting.": "",
- "Talk to Model": "",
+ "Table": "Tabel",
+ "Tag": "Tag",
+ "Tags": "Tag",
+ "Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting.": "Tail free sampling digunakan untuk mengurangi dampak token dengan probabilitas lebih rendah dari keluaran. Nilai yang lebih tinggi (misal: 2.0) akan mengurangi dampak lebih banyak, sedangkan nilai 1.0 menonaktifkan pengaturan ini.",
+ "Talk to Model": "Bicara dengan Model",
"Tap to interrupt": "Ketuk untuk menyela",
- "Target ID": "",
- "Target ID for notify": "",
- "Task List": "",
- "Tasks": "",
- "tasks completed": "",
+ "Target ID": "ID Target",
+ "Target ID for notify": "ID Target untuk notifikasi",
+ "Task List": "Daftar Tugas",
+ "Tasks": "Tugas",
+ "tasks completed": "tugas selesai",
+ "Tell me a fun fact": "Beri tahu saya fakta menarik",
+ "Tell me a random fun fact about the Roman Empire": "Beri tahu saya fakta menarik acak tentang Kekaisaran Romawi",
"Tell us more:": "Beri tahu kami lebih lanjut:",
- "Temporary": "",
- "Temporary Chat": "",
- "Temporary: toggle temporary chat for this new chat.": "",
- "Terminal": "",
- "Terminal Contexts": "",
- "Terminal servers saved": "",
- "Test": "",
- "Test must pass before a source is created.": "",
- "Test notification sent.": "",
- "Test Query": "",
- "Test returned no results.": "",
- "Test succeeded.": "",
- "Test the source before creating it.": "",
- "Test the source before saving it.": "",
- "Th_day_of_week": "",
+ "Temporary": "Sementara",
+ "Temporary Chat": "Obrolan Sementara",
+ "Temporary: toggle temporary chat for this new chat.": "Sementara: beralih ke obrolan sementara untuk obrolan baru ini.",
+ "Terminal": "Terminal",
+ "Terminal Contexts": "Konteks Terminal",
+ "Terminal servers saved": "Server terminal disimpan",
+ "Test": "Uji",
+ "Test must pass before a source is created.": "Pengujian harus berhasil sebelum sumber dibuat.",
+ "Test notification sent.": "Notifikasi uji terkirim.",
+ "Test Query": "Uji Kueri",
+ "Test returned no results.": "Pengujian tidak mengembalikan hasil.",
+ "Test succeeded.": "Pengujian berhasil.",
+ "Test the source before creating it.": "Uji sumber sebelum membuatnya.",
+ "Test the source before saving it.": "Uji sumber sebelum menyimpannya.",
+ "Th_day_of_week": "Hari_ke_dalam_minggu",
"Thanks for your feedback!": "Terima kasih atas umpan balik Anda!",
- "The Application Account DN you bind with for search": "",
- "The base to search for users": "",
- "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.": "",
- "The developers behind this plugin are passionate volunteers from the community. If you find this plugin helpful, please consider contributing to its development.": "",
- "The evaluation leaderboard is based on the Elo rating system and is updated in real-time.": "",
- "The format to return a response in. Format can be json or a JSON schema.": "",
- "The language of the input audio. Supplying the input language in ISO-639-1 (e.g. en) format will improve accuracy and latency. Leave blank to automatically detect the language.": "",
- "The LDAP attribute that maps to the mail that users use to sign in.": "",
- "The LDAP attribute that maps to the username that users use to sign in.": "",
- "The notify tool always sends to an enabled target, regardless of automatic event settings.": "",
- "The passwords you entered don't quite match. Please double-check and try again.": "",
+ "The Application Account DN you bind with for search": "DN Akun Aplikasi yang Anda kaitkan untuk pencarian",
+ "The base to search for users": "Basis untuk mencari pengguna",
+ "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.": "Ukuran batch menentukan berapa banyak permintaan teks yang diproses bersamaan sekaligus. Ukuran batch yang lebih besar dapat meningkatkan performa dan kecepatan model, tetapi juga membutuhkan lebih banyak memori.",
+ "The developers behind this plugin are passionate volunteers from the community. If you find this plugin helpful, please consider contributing to its development.": "Pengembang di balik plugin ini adalah sukarelawan yang berdedikasi dari komunitas. Jika Anda merasa plugin ini bermanfaat, pertimbangkan untuk berkontribusi pada pengembangannya.",
+ "The evaluation leaderboard is based on the Elo rating system and is updated in real-time.": "Papan peringkat evaluasi didasarkan pada sistem peringkat Elo dan diperbarui secara real-time.",
+ "The format to return a response in. Format can be json or a JSON schema.": "Format untuk mengembalikan respons. Format dapat berupa json atau skema JSON.",
+ "The language of the input audio. Supplying the input language in ISO-639-1 (e.g. en) format will improve accuracy and latency. Leave blank to automatically detect the language.": "Bahasa audio input. Memberikan bahasa input dalam format ISO-639-1 (misalnya en) akan meningkatkan akurasi dan latensi. Biarkan kosong untuk mendeteksi bahasa secara otomatis.",
+ "The LDAP attribute that maps to the mail that users use to sign in.": "Atribut LDAP yang memetakan email yang digunakan pengguna untuk masuk.",
+ "The LDAP attribute that maps to the username that users use to sign in.": "Atribut LDAP yang memetakan nama pengguna yang digunakan pengguna untuk masuk.",
+ "The notify tool always sends to an enabled target, regardless of automatic event settings.": "Alat notifikasi selalu mengirim ke target yang diaktifkan, terlepas dari pengaturan peristiwa otomatis.",
+ "The passwords you entered don't quite match. Please double-check and try again.": "Kata sandi yang Anda masukkan tidak cocok. Silakan periksa kembali dan coba lagi.",
"The score should be a value between 0.0 (0%) and 1.0 (100%).": "Nilai yang diberikan haruslah nilai antara 0,0 (0%) dan 1,0 (100%).",
- "There was an error syncing your stats. Please try again.": "",
- "These settings are read from environment variables and cannot be edited here while {{ENV_VAR}} is disabled.": "",
- "thinking, output_config": "",
+ "There was an error syncing your stats. Please try again.": "Terjadi kesalahan saat menyinkronkan statistik Anda. Silakan coba lagi.",
+ "These settings are read from environment variables and cannot be edited here while {{ENV_VAR}} is disabled.": "Pengaturan ini dibaca dari variabel lingkungan dan tidak dapat diedit di sini selama {{ENV_VAR}} dinonaktifkan.",
+ "thinking, output_config": "thinking, output_config",
"Thinking...": "Berpikir",
"This action cannot be undone. Do you wish to continue?": "Tindakan ini tidak dapat dibatalkan. Apakah Anda ingin melanjutkan?",
- "This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "",
- "This chat won't appear in history and your messages will not be saved.": "",
- "This folder is empty": "",
- "This is a default user permission and will remain enabled.": "",
+ "This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "Saluran ini dibuat pada {{createdAt}}. Ini adalah awal mula dari saluran {{channelName}}.",
+ "This chat won't appear in history and your messages will not be saved.": "Obrolan ini tidak akan muncul di riwayat dan pesan Anda tidak akan disimpan.",
+ "This folder is empty": "Folder ini kosong",
+ "This is a default user permission and will remain enabled.": "Ini adalah izin pengguna bawaan dan akan tetap aktif.",
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Ini adalah fitur eksperimental, mungkin tidak berfungsi seperti yang diharapkan dan dapat berubah sewaktu-waktu.",
- "This knowledge base retrieves from a connected source. Open WebUI can query it, but cannot upload, sync, edit, delete, reset, or reindex its source data.": "",
- "This model is not publicly available. Please select another model.": "",
- "This option controls how long the model will stay loaded into memory following the request (default: 5m)": "",
- "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "",
- "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "",
- "This response was generated by \"{{model}}\"": "",
- "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "",
+ "This knowledge base retrieves from a connected source. Open WebUI can query it, but cannot upload, sync, edit, delete, reset, or reindex its source data.": "Basis pengetahuan ini mengambil data dari sumber yang terhubung. Open WebUI dapat membuat kueri ke dalamnya, tetapi tidak dapat mengunggah, menyinkronkan, mengedit, menghapus, mengatur ulang, atau mengindeks ulang data sumbernya.",
+ "This model is not publicly available. Please select another model.": "Model ini tidak tersedia untuk publik. Silakan pilih model lain.",
+ "This option controls how long the model will stay loaded into memory following the request (default: 5m)": "Opsi ini mengontrol berapa lama model akan tetap dimuat ke dalam memori setelah permintaan (default: 5m)",
+ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Opsi ini mengontrol berapa banyak token yang dipertahankan saat memperbarui konteks. Misalnya, jika diatur ke 2, 2 token terakhir dari konteks percakapan akan dipertahankan. Mempertahankan konteks dapat membantu menjaga kesinambungan percakapan, tetapi dapat mengurangi kemampuan untuk merespons topik baru.",
+ "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Opsi ini menetapkan jumlah token maksimum yang dapat dihasilkan model dalam responsnya. Meningkatkan batas ini memungkinkan model memberikan jawaban yang lebih panjang, tetapi juga dapat meningkatkan kemungkinan dihasilkannya konten yang tidak membantu atau tidak relevan.",
+ "This response was generated by \"{{model}}\"": "Respons ini dibuat oleh \"{{model}}\"",
+ "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "Templat ini berisi beberapa placeholder konteks ([context] atau {{CONTEXT}}). Konteks akan disisipkan pada setiap kemunculan.",
"This will delete": "Ini akan menghapus",
- "This will delete {{NAME}} and all its contents.": "",
- "This will delete all models including custom models and cannot be undone.": "",
- "This will delete the cached model and cannot be undone.": "",
- "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "",
- "This will remove all files and directories from this knowledge base. This action cannot be undone.": "",
- "This will revoke the current API key.": "",
+ "This will delete {{NAME}} and all its contents.": "Ini akan menghapus {{NAME}} dan seluruh isinya.",
+ "This will delete all models including custom models and cannot be undone.": "Ini akan menghapus semua model termasuk model kustom dan tidak dapat dibatalkan.",
+ "This will delete the cached model and cannot be undone.": "Ini akan menghapus model dalam cache dan tidak dapat dibatalkan.",
+ "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "Ini akan menghapus kalender \"{{name}}\" dan semua acaranya secara permanen. Tindakan ini tidak dapat dibatalkan.",
+ "This will remove all files and directories from this knowledge base. This action cannot be undone.": "Ini akan menghapus semua file dan direktori dari basis pengetahuan ini. Tindakan ini tidak dapat dibatalkan.",
+ "This will revoke the current API key.": "Ini akan mencabut kunci API saat ini.",
"Thorough explanation": "Penjelasan menyeluruh",
- "Thought": "",
- "Thought for {{DURATION}}": "",
- "Thought for {{DURATION}} seconds": "",
- "Thought for less than a second": "",
+ "Thought": "Berpikir",
+ "Thought for {{DURATION}}": "Berpikir selama {{DURATION}}",
+ "Thought for {{DURATION}} seconds": "Berpikir selama {{DURATION}} detik",
+ "Thought for less than a second": "Berpikir kurang dari satu detik",
"Thread": "Utas",
- "Through": "",
- "Thumbs up/down ratings from users on model responses": "",
- "Tika": "",
- "Tika 3.x": "",
- "Tika 4.x": "",
- "Tika Server URL required.": "",
- "Tiktoken": "",
- "Time": "",
- "Timeout": "",
- "Timer": "",
+ "Through": "Melalui",
+ "Thumbs up/down ratings from users on model responses": "Penilaian suka/tidak suka dari pengguna terhadap respons model",
+ "Tika": "Tika",
+ "Tika 3.x": "Tika 3.x",
+ "Tika 4.x": "Tika 4.x",
+ "Tika Server URL required.": "URL Server Tika wajib diisi.",
+ "Tiktoken": "Tiktoken",
+ "Time": "Waktu",
+ "Timeout": "Batas Waktu",
+ "Timer": "Timer",
"Title": "Judul",
"Title cannot be an empty string.": "Judul tidak boleh berupa string kosong.",
- "Title is required": "",
+ "Title is required": "Judul wajib diisi",
"To access the available model names for downloading,": "Untuk mengakses nama model yang tersedia untuk diunduh,",
"To access the GGUF models available for downloading,": "Untuk mengakses model GGUF yang tersedia untuk diunduh,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Untuk mengakses WebUI, hubungi administrator. Admin dapat mengelola status pengguna dari Panel Admin.",
- "To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
- "To learn more about available endpoints, visit our documentation.": "",
- "To learn more about SpeechT5,": "",
- "To see the available CMU Arctic speaker embeddings,": "",
- "To select actions here, add them to the \"Functions\" workspace first.": "",
- "To select default filters here, enable toggleable filters for this model first.": "",
- "To select filters here, add them to the \"Functions\" workspace first.": "",
- "To select skills here, add them to the \"Skills\" workspace first.": "",
- "To select toolkits here, add them to the \"Tools\" workspace or enable a tool server first.": "",
+ "To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Untuk melampirkan basis pengetahuan di sini, tambahkan ke ruang kerja \"Pengetahuan\" terlebih dahulu.",
+ "To learn more about available endpoints, visit our documentation.": "Untuk mempelajari lebih lanjut tentang endpoint yang tersedia, kunjungi dokumentasi kami.",
+ "To learn more about SpeechT5,": "Untuk mempelajari lebih lanjut tentang SpeechT5,",
+ "To see the available CMU Arctic speaker embeddings,": "Untuk melihat embedding penutur CMU Arctic yang tersedia,",
+ "To select actions here, add them to the \"Functions\" workspace first.": "Untuk memilih tindakan di sini, tambahkan ke ruang kerja \"Fungsi\" terlebih dahulu.",
+ "To select default filters here, enable toggleable filters for this model first.": "Untuk memilih filter default di sini, aktifkan filter yang dapat dialihkan untuk model ini terlebih dahulu.",
+ "To select filters here, add them to the \"Functions\" workspace first.": "Untuk memilih filter di sini, tambahkan ke ruang kerja \"Fungsi\" terlebih dahulu.",
+ "To select skills here, add them to the \"Skills\" workspace first.": "Untuk memilih keterampilan di sini, tambahkan ke ruang kerja \"Keterampilan\" terlebih dahulu.",
+ "To select toolkits here, add them to the \"Tools\" workspace or enable a tool server first.": "Untuk memilih toolkit di sini, tambahkan ke ruang kerja \"Alat\" atau aktifkan server alat terlebih dahulu.",
"Today": "Hari ini",
- "Today at": "",
- "Toggle {{COUNT}} sources": "",
- "Toggle 1 source": "",
- "Toggle Controls": "",
- "Toggle details": "",
- "Toggle Dictation": "",
- "Toggle Mute": "",
- "Toggle Sidebar": "",
- "Toggle status history": "",
- "Toggle temporary chat for this new chat.": "",
- "Toggle whether current connection is active.": "",
- "Token": "",
- "Token activity": "",
- "Token counts are estimates and may not reflect actual API usage": "",
- "tokens": "",
- "Tokens": "",
- "Too verbose": "",
- "tool": "",
+ "Today at": "Hari ini pukul",
+ "Toggle {{COUNT}} sources": "Alihkan {{COUNT}} sumber",
+ "Toggle 1 source": "Alihkan 1 sumber",
+ "Toggle Controls": "Alihkan Kontrol",
+ "Toggle details": "Alihkan detail",
+ "Toggle Dictation": "Alihkan Dikte",
+ "Toggle Mute": "Alihkan Senyap",
+ "Toggle Sidebar": "Alihkan Bilah Sisi",
+ "Toggle status history": "Alihkan riwayat status",
+ "Toggle temporary chat for this new chat.": "Alihkan obrolan sementara untuk obrolan baru ini.",
+ "Toggle whether current connection is active.": "Alihkan apakah koneksi saat ini aktif.",
+ "Token": "Token",
+ "Token activity": "Aktivitas token",
+ "Token counts are estimates and may not reflect actual API usage": "Jumlah token adalah perkiraan dan mungkin tidak mencerminkan penggunaan API sebenarnya",
+ "tokens": "token",
+ "Tokens": "Token",
+ "Too verbose": "Terlalu panjang",
+ "tool": "alat",
"Tool created successfully": "Alat berhasil dibuat",
"Tool deleted successfully": "Alat berhasil dihapus",
- "Tool Description": "",
- "Tool ID": "",
+ "Tool Description": "Deskripsi Alat",
+ "Tool ID": "ID Alat",
"Tool imported successfully": "Alat berhasil diimpor",
- "tool loops per sub-agent": "",
- "Tool Menu": "",
- "Tool Name": "",
- "Tool Permissions": "",
- "Tool Servers": "",
+ "tool loops per sub-agent": "perulangan alat per sub-agen",
+ "Tool Menu": "Menu Alat",
+ "Tool Name": "Nama Alat",
+ "Tool Permissions": "Izin Alat",
+ "Tool Servers": "Server Alat",
"Tool updated successfully": "Alat berhasil diperbarui",
"Tools": "Alat",
- "Tools Access": "",
- "Tools can execute arbitrary code.": "",
- "Tools have a function calling system that allows arbitrary code execution.": "",
- "Tools Public Sharing": "",
- "Tools Sharing": "",
- "Top": "",
- "Total chats": "",
- "Transformers": "",
- "Translation key": "",
- "Trial License": "",
- "Try adjusting your search or filter to find what you are looking for.": "",
- "Try Again": "",
+ "Tools Access": "Akses Alat",
+ "Tools can execute arbitrary code.": "Alat dapat mengeksekusi kode arbitrer.",
+ "Tools have a function calling system that allows arbitrary code execution.": "Alat memiliki sistem pemanggilan fungsi yang memungkinkan eksekusi kode arbitrer.",
+ "Tools Public Sharing": "Berbagi Publik Alat",
+ "Tools Sharing": "Berbagi Alat",
+ "Top": "Atas",
+ "Total chats": "Total obrolan",
+ "Transformers": "Transformers",
+ "Translation key": "Kunci terjemahan",
+ "Trial License": "Lisensi Uji Coba",
+ "Try adjusting your search or filter to find what you are looking for.": "Coba sesuaikan pencarian atau filter Anda untuk menemukan yang Anda cari.",
+ "Try Again": "Coba Lagi",
"TTS Voice": "Suara TTS",
- "Tu_day_of_week": "",
+ "Tu_day_of_week": "Sel",
"Type": "Ketik",
- "Type a model ref": "",
- "Type here...": "",
+ "Type a model ref": "Ketik referensi model",
+ "Type here...": "Ketik di sini...",
"Type Hugging Face Resolve (Download) URL": "Ketik Hugging Face Resolve (Unduh) URL",
- "Type your answer": "",
- "Uh-oh! There was an issue with the response.": "",
- "Unarchive Chat": "",
- "Unassigned": "",
- "Underline": "",
- "unknown": "",
- "Unknown": "",
- "Unknown User": "",
- "Unload Model": "",
- "Unloads {{FROM_NOW}}": "",
- "Unmute": "",
- "Unpin": "",
- "Unpin from Sidebar": "",
- "Unread": "",
- "Unshare All": "",
- "Unshare All Shared Chats": "",
- "Unshare Chat": "",
- "Unsupported file type.": "",
- "Untagged": "",
- "Untitled": "",
+ "Type your answer": "Ketik jawaban Anda",
+ "Uh-oh! There was an issue with the response.": "Ups! Terjadi masalah dengan respons.",
+ "Unarchive": "Batal Arsipkan",
+ "Unarchive Chat": "Batal Arsipkan Obrolan",
+ "Unassigned": "Tidak Ditetapkan",
+ "Underline": "Garis Bawah",
+ "unknown": "tidak diketahui",
+ "Unknown": "Tidak Diketahui",
+ "Unknown User": "Pengguna Tidak Dikenal",
+ "Unload Model": "Lepas Model",
+ "Unloads {{FROM_NOW}}": "Dilepas {{FROM_NOW}}",
+ "Unmute": "Batal Bisukan",
+ "Unpin": "Lepas Sematan",
+ "Unpin from Sidebar": "Lepas Sematan dari Bilah Sisi",
+ "Unread": "Belum Dibaca",
+ "Unshare All": "Batalkan Semua Berbagi",
+ "Unshare All Shared Chats": "Batalkan Berbagi Semua Obrolan",
+ "Unshare Chat": "Batalkan Berbagi Obrolan",
+ "Unsupported file type.": "Jenis berkas tidak didukung.",
+ "Untagged": "Tanpa Tag",
+ "Untitled": "Tanpa Judul",
"Update": "Memperbarui",
- "Update All Models": "",
+ "Update All Models": "Perbarui Semua Model",
"Update and Copy Link": "Perbarui dan Salin Tautan",
- "Update for the latest features and improvements.": "",
- "Update your status": "",
- "Updated": "",
+ "Update for the latest features and improvements.": "Perbarui untuk fitur dan peningkatan terbaru.",
+ "Update your status": "Perbarui status Anda",
+ "Updated": "Diperbarui",
"Updated at": "Diperbarui di",
- "Updated At": "",
- "Updating \"{{modelId}}\"": "",
- "Upgrade to a licensed plan for enhanced capabilities, including custom theming and branding, and dedicated support.": "",
+ "Updated At": "Diperbarui Pada",
+ "Updating \"{{modelId}}\"": "Memperbarui \"{{modelId}}\"",
+ "Upgrade to a licensed plan for enhanced capabilities, including custom theming and branding, and dedicated support.": "Tingkatkan ke paket berlisensi untuk kemampuan lebih lanjut, termasuk tema dan merek kustom, serta dukungan khusus.",
"Upload": "Unggah",
"Upload a GGUF model": "Unggah model GGUF",
- "Upload Audio": "",
- "Upload directory": "",
- "Upload failed": "",
- "Upload failed for {{failed}} of {{total}} files.": "",
- "Upload files": "",
+ "Upload Audio": "Unggah Audio",
+ "Upload directory": "Unggah direktori",
+ "Upload failed": "Unggahan gagal",
+ "Upload failed for {{failed}} of {{total}} files.": "Unggahan gagal untuk {{failed}} dari {{total}} berkas.",
+ "Upload files": "Unggah berkas",
"Upload Files": "Unggah File",
- "Upload Folder": "",
- "Upload Model": "",
- "Upload Photo": "",
- "Upload profile image": "",
+ "Upload Folder": "Unggah Folder",
+ "Upload Model": "Unggah Model",
+ "Upload Photo": "Unggah Foto",
+ "Upload profile image": "Unggah gambar profil",
"Upload Progress": "Kemajuan Unggah",
- "Uploaded files or images": "",
- "Uploading": "",
- "Uploading {{current}}/{{total}}: {{file}}": "",
- "Uploading...": "",
- "URL": "",
- "URL is required": "",
+ "Uploaded files or images": "Berkas atau gambar yang diunggah",
+ "Uploading": "Mengunggah",
+ "Uploading {{current}}/{{total}}: {{file}}": "Mengunggah {{current}}/{{total}}: {{file}}",
+ "Uploading...": "Mengunggah...",
+ "URL": "URL",
+ "URL is required": "URL wajib diisi",
"URL Mode": "Mode URL",
- "Use": "",
- "Use a valid event name or pattern like user.*": "",
- "Use default": "",
- "Use device vibration feedback on supported Android devices.": "",
- "Use discovered scopes": "",
- "Use groups to organize your users and assign permissions.": "",
- "Use segmented retrieval for focused and relevant content extraction.": "",
- "Use segmented retrieval for focused and relevant context.": "",
- "Use segmented retrieval for focused context.": "",
- "Use these in model system prompts as {{example}}.": "",
- "Use Web Search?": "",
+ "Use": "Gunakan",
+ "Use a valid event name or pattern like user.*": "Gunakan nama event atau pola yang valid seperti user.*",
+ "Use default": "Gunakan bawaan",
+ "Use device vibration feedback on supported Android devices.": "Gunakan umpan balik getaran perangkat pada perangkat Android yang didukung.",
+ "Use discovered scopes": "Gunakan cakupan yang ditemukan",
+ "Use groups to organize your users and assign permissions.": "Gunakan grup untuk mengatur pengguna dan menetapkan izin.",
+ "Use segmented retrieval for focused and relevant content extraction.": "Gunakan pengambilan tersegmentasi untuk ekstraksi konten yang terfokus dan relevan.",
+ "Use segmented retrieval for focused and relevant context.": "Gunakan pengambilan tersegmentasi untuk konteks yang terfokus dan relevan.",
+ "Use segmented retrieval for focused context.": "Gunakan pengambilan tersegmentasi untuk konteks yang terfokus.",
+ "Use these in model system prompts as {{example}}.": "Gunakan ini dalam prompt sistem model sebagai {{example}}.",
+ "Use Web Search?": "Gunakan Pencarian Web?",
"user": "pengguna",
- "User": "",
- "User Activity": "",
- "User Count": "",
- "User Groups": "",
+ "User": "Pengguna",
+ "User Activity": "Aktivitas Pengguna",
+ "User Count": "Jumlah Pengguna",
+ "User Groups": "Grup Pengguna",
"User location successfully retrieved.": "Lokasi pengguna berhasil diambil.",
- "User menu": "",
- "User messages": "",
- "User not found.": "",
- "User Preview": "",
- "User ratings (thumbs up/down)": "",
- "User Variables": "",
- "User Webhooks": "",
- "Username": "",
- "users": "",
+ "User menu": "Menu pengguna",
+ "User messages": "Pesan pengguna",
+ "User not found.": "Pengguna tidak ditemukan.",
+ "User Preview": "Pratinjau Pengguna",
+ "User ratings (thumbs up/down)": "Penilaian pengguna (jempol ke atas/bawah)",
+ "User Variables": "Variabel Pengguna",
+ "User Webhooks": "Webhook Pengguna",
+ "Username": "Nama Pengguna",
+ "users": "pengguna",
"Users": "Pengguna",
- "Uses DefaultAzureCredential to authenticate": "",
- "Uses defaults": "",
- "Uses OAuth 2.1 Dynamic Client Registration": "",
- "Using Entire Document": "",
- "Using Focused Retrieval": "",
- "Using the default arena model with all models. Click the plus button to add custom models.": "",
- "Value": "",
+ "Uses DefaultAzureCredential to authenticate": "Menggunakan DefaultAzureCredential untuk autentikasi",
+ "Uses defaults": "Menggunakan bawaan",
+ "Uses OAuth 2.1 Dynamic Client Registration": "Menggunakan Registrasi Klien Dinamis OAuth 2.1",
+ "Using Entire Document": "Menggunakan Seluruh Dokumen",
+ "Using Focused Retrieval": "Menggunakan Pengambilan Terfokus",
+ "Using the default arena model with all models. Click the plus button to add custom models.": "Menggunakan model arena bawaan dengan semua model. Klik tombol tambah untuk menambahkan model kustom.",
+ "Value": "Nilai",
"Valves": "Katup",
"Valves updated": "Katup diperbarui",
"Valves updated successfully": "Katup berhasil diperbarui",
"variable": "variabel",
- "Variable key": "",
- "Variable keys must be unique.": "",
- "Variable keys must use lowercase snake case.": "",
- "Variable value": "",
- "Vector Field": "",
- "Verify Connection": "",
- "Version {{selectedVersion}} of {{totalVersions}}": "",
- "Version deleted": "",
- "Vertical Layout": "",
- "Video player": "",
- "View channel": "",
- "View chat": "",
- "View Replies": "",
- "View Result from {{NAME}}": "",
- "View source: {{name}}": "",
- "View source: {{title}}": "",
- "Viewport Pinned": "",
- "Viewport Unpinned": "",
- "Visibility": "",
- "Visible": "",
- "Visible to all users": "",
- "Visual": "",
+ "Variable key": "Kunci variabel",
+ "Variable keys must be unique.": "Kunci variabel harus unik.",
+ "Variable keys must use lowercase snake case.": "Kunci variabel harus menggunakan snake case huruf kecil.",
+ "Variable value": "Nilai variabel",
+ "Vector Field": "Bidang Vektor",
+ "Verify Connection": "Verifikasi Koneksi",
+ "Version {{selectedVersion}} of {{totalVersions}}": "Versi {{selectedVersion}} dari {{totalVersions}}",
+ "Version deleted": "Versi dihapus",
+ "Vertical Layout": "Tata Letak Vertikal",
+ "Video player": "Pemutar video",
+ "View channel": "Lihat saluran",
+ "View chat": "Lihat obrolan",
+ "View Replies": "Lihat Balasan",
+ "View Result from {{NAME}}": "Lihat Hasil dari {{NAME}}",
+ "View source: {{name}}": "Lihat sumber: {{name}}",
+ "View source: {{title}}": "Lihat sumber: {{title}}",
+ "Viewport Pinned": "Viewport Disematkan",
+ "Viewport Unpinned": "Penyematan Viewport Dilepas",
+ "Visibility": "Visibilitas",
+ "Visible": "Terlihat",
+ "Visible to all users": "Terlihat untuk semua pengguna",
+ "Visual": "Visual",
+ "vocabulary for a college entrance exam": "kosakata untuk ujian masuk perguruan tinggi",
"Voice": "Suara",
- "Voice Input": "",
- "Voice mode": "",
- "Wait for the current response to finish before compacting.": "",
- "Wait for the current response to finish before forking.": "",
- "Waiting for upload": "",
- "Waiting for upload...": "",
+ "Voice Input": "Input Suara",
+ "Voice mode": "Mode suara",
+ "Wait for the current response to finish before compacting.": "Tunggu respons saat ini selesai sebelum memadatkan.",
+ "Wait for the current response to finish before forking.": "Tunggu respons saat ini selesai sebelum mencabangkan.",
+ "Waiting for upload": "Menunggu unggahan",
+ "Waiting for upload...": "Menunggu unggahan...",
"Warning": "Peringatan",
"Warning:": "Peringatan:",
- "Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
- "Warning: Enabling this will allow users to upload arbitrary code on the server.": "",
- "Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "",
- "We_day_of_week": "",
+ "Warning: Enabling this will allow users to run scheduled prompts automatically.": "Peringatan: Mengaktifkan ini akan memungkinkan pengguna menjalankan perintah terjadwal secara otomatis.",
+ "Warning: Enabling this will allow users to upload arbitrary code on the server.": "Peringatan: Mengaktifkan ini akan mengizinkan pengguna mengunggah kode arbitrer ke server.",
+ "Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "Peringatan: Eksekusi Jupyter mengaktifkan eksekusi kode arbitrer, menimbulkan risiko keamanan yang parah—lanjutkan dengan sangat hati-hati.",
+ "We_day_of_week": "Rab",
"Web": "Web",
"Web API": "API Web",
"Web Search": "Pencarian Web",
- "Webhook": "",
- "Webhook deleted": "",
- "Webhook Name": "",
- "Webhook saved": "",
- "Webhooks": "",
- "Webpage URLs": "",
- "WebUI will make requests to \"{{url}}\"": "",
- "WebUI will make requests to \"{{url}}/api/chat\"": "",
- "WebUI will make requests to \"{{url}}/chat/completions\"": "",
- "Week": "",
- "Week of": "",
- "Weekly": "",
- "Weekly at": "",
- "Welcome to your AI home.": "",
- "What are you trying to achieve?": "",
- "What are you working on?": "",
- "What is NOT shared:": "",
- "What is shared:": "",
+ "Webhook": "Webhook",
+ "Webhook deleted": "Webhook dihapus",
+ "Webhook Name": "Nama Webhook",
+ "Webhook saved": "Webhook disimpan",
+ "Webhooks": "Webhook",
+ "Webpage URLs": "URL Halaman Web",
+ "WebUI will make requests to \"{{url}}\"": "WebUI akan membuat permintaan ke \"{{url}}\"",
+ "WebUI will make requests to \"{{url}}/api/chat\"": "WebUI akan membuat permintaan ke \"{{url}}/api/chat\"",
+ "WebUI will make requests to \"{{url}}/chat/completions\"": "WebUI akan membuat permintaan ke \"{{url}}/chat/completions\"",
+ "Week": "Minggu",
+ "Week of": "Minggu dari",
+ "Weekly": "Mingguan",
+ "Weekly at": "Mingguan pada",
+ "Welcome to your AI home.": "Selamat datang di beranda AI Anda.",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "Apa 5 ide kreatif yang bisa saya lakukan dengan karya seni anak-anak saya? Saya tidak ingin membuangnya, tetapi barang-barang ini membuat sangat berantakan.",
+ "What are you trying to achieve?": "Apa yang ingin Anda capai?",
+ "What are you working on?": "Apa yang sedang Anda kerjakan?",
+ "What is NOT shared:": "Yang TIDAK dibagikan:",
+ "What is shared:": "Yang dibagikan:",
"What's New in": "Apa yang Baru di",
- "What's on your mind?": "",
- "When": "",
+ "What's on your mind?": "Apa yang Anda pikirkan?",
+ "When": "Kapan",
"Whisper (Local)": "Bisikan (Lokal)",
- "Who can share to this group": "",
- "Why?": "",
- "Width": "",
- "Wikipedia": "",
- "Won": "",
- "Working Directory": "",
- "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.": "",
+ "Who can share to this group": "Siapa yang dapat membagikan ke grup ini",
+ "Why?": "Mengapa?",
+ "Width": "Lebar",
+ "Wikipedia": "Wikipedia",
+ "Won": "Won",
+ "Working Directory": "Direktori Kerja",
+ "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.": "Bekerja bersama dengan top-k. Nilai yang lebih tinggi (misalnya, 0.95) akan menghasilkan teks yang lebih beragam, sedangkan nilai yang lebih rendah (misalnya, 0.5) akan menghasilkan teks yang lebih fokus dan konservatif.",
"Workspace": "Ruang Kerja",
- "Workspace Models": "",
- "Workspace Permissions": "",
- "Write": "",
- "Write a summary in 50 words that summarizes {{topic}}.": "Tulis ringkasan dalam 50 kata yang merangkum [topik atau kata kunci].",
- "Write something...": "",
+ "Workspace Models": "Model Ruang Kerja",
+ "Workspace Permissions": "Izin Ruang Kerja",
+ "Write": "Tulis",
+ "Write a summary in 50 words that summarizes {{topic}}.": "Tulis ringkasan dalam 50 kata yang merangkum {{topic}}.",
+ "Write something...": "Tulis sesuatu...",
"Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "Tulis konten system prompt model Anda di sini\nmis.: Anda adalah Mario dari Super Mario Bros dan bertindak sebagai asisten.",
- "Yahoo": "",
- "Yandex": "",
- "Yearly": "",
+ "Yahoo": "Yahoo",
+ "Yandex": "Yandex",
+ "Yearly": "Tahunan",
"Yesterday": "Kemarin",
"You": "Anda",
- "You are a sub-agent...": "",
- "You are currently using a trial license. Please contact support to upgrade your license.": "",
- "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "",
- "You cannot upload an empty file.": "",
- "You do not have permission to edit this model": "",
- "You do not have permission to edit this prompt.": "",
- "You do not have permission to edit this skill.": "",
- "You do not have permission to edit this tool": "",
- "You do not have permission to make this public": "",
- "You do not have permission to send messages in this channel.": "",
- "You do not have permission to send messages in this thread.": "",
- "You do not have permission to upload files to this knowledge base.": "",
- "You do not have permission to upload files.": "",
- "You do not have permission to upload web content.": "",
- "You have more than 50 users, which often means this workspace is supporting organizational use. Open WebUI is free to use as-is, with no restrictions or hidden limits, and we want to keep it that way.": "",
+ "You are a sub-agent...": "Anda adalah sub-agen...",
+ "You are currently using a trial license. Please contact support to upgrade your license.": "Anda sedang menggunakan lisensi uji coba. Silakan hubungi dukungan untuk meningkatkan lisensi Anda.",
+ "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Anda hanya dapat mengobrol dengan maksimal {{maxCount}} berkas sekaligus.",
+ "You cannot upload an empty file.": "Anda tidak dapat mengunggah berkas kosong.",
+ "You do not have permission to edit this model": "Anda tidak memiliki izin untuk mengedit model ini",
+ "You do not have permission to edit this prompt.": "Anda tidak memiliki izin untuk mengedit prompt ini.",
+ "You do not have permission to edit this skill.": "Anda tidak memiliki izin untuk mengedit keahlian ini.",
+ "You do not have permission to edit this tool": "Anda tidak memiliki izin untuk mengedit alat ini",
+ "You do not have permission to make this public": "Anda tidak memiliki izin untuk mempublikasikan ini",
+ "You do not have permission to send messages in this channel.": "Anda tidak memiliki izin untuk mengirim pesan di saluran ini.",
+ "You do not have permission to send messages in this thread.": "Anda tidak memiliki izin untuk mengirim pesan di utas ini.",
+ "You do not have permission to upload files to this knowledge base.": "Anda tidak memiliki izin untuk mengunggah berkas ke basis pengetahuan ini.",
+ "You do not have permission to upload files.": "Anda tidak memiliki izin untuk mengunggah berkas.",
+ "You do not have permission to upload web content.": "Anda tidak memiliki izin untuk mengunggah konten web.",
+ "You have more than 50 users, which often means this workspace is supporting organizational use. Open WebUI is free to use as-is, with no restrictions or hidden limits, and we want to keep it that way.": "Anda memiliki lebih dari 50 pengguna, yang biasanya berarti ruang kerja ini mendukung penggunaan organisasi. Open WebUI bebas digunakan apa adanya, tanpa batasan atau limit tersembunyi, dan kami ingin tetap mempertahankannya seperti itu.",
"You have no archived conversations.": "Anda tidak memiliki percakapan yang diarsipkan.",
- "You have no shared conversations.": "",
+ "You have no shared conversations.": "Anda tidak memiliki percakapan yang dibagikan.",
"You have shared this chat": "Anda telah membagikan obrolan ini",
"You're a helpful assistant.": "Anda adalah asisten yang membantu.",
"You're now logged in.": "Anda sekarang sudah masuk.",
"Your account status is currently pending activation.": "Status akun Anda saat ini sedang menunggu aktivasi.",
- "Your browser does not support the audio tag.": "",
- "Your browser does not support the video tag.": "",
- "Your entire contribution will go directly to the plugin developer; Open WebUI does not take any percentage. However, the chosen funding platform might have its own fees.": "",
- "Your message text or inputs": "",
- "Your query will be sent to the configured web search provider.": "",
- "Your usage stats have been successfully synced.": "",
+ "Your browser does not support the audio tag.": "Peramban Anda tidak mendukung tag audio.",
+ "Your browser does not support the video tag.": "Peramban Anda tidak mendukung tag video.",
+ "Your entire contribution will go directly to the plugin developer; Open WebUI does not take any percentage. However, the chosen funding platform might have its own fees.": "Seluruh kontribusi Anda akan langsung disalurkan ke pengembang plugin; Open WebUI tidak memotong persentase apa pun. Namun, platform pendanaan yang dipilih mungkin memiliki biaya tersendiri.",
+ "Your message text or inputs": "Teks pesan atau masukan Anda",
+ "Your query will be sent to the configured web search provider.": "Kueri Anda akan dikirim ke penyedia pencarian web yang telah dikonfigurasi.",
+ "Your usage stats have been successfully synced.": "Statistik penggunaan Anda telah berhasil disinkronkan.",
"YouTube": "Youtube",
- "YouTube video player": "",
- "Zoom in": "",
- "Zoom out": ""
+ "YouTube video player": "Pemutar video YouTube",
+ "Zoom in": "Perbesar",
+ "Zoom out": "Perkecil"
}
diff --git a/src/lib/i18n/locales/ie-GA/translation.json b/src/lib/i18n/locales/ie-GA/translation.json
index d4e0b5b435c3..252c30136495 100644
--- a/src/lib/i18n/locales/ie-GA/translation.json
+++ b/src/lib/i18n/locales/ie-GA/translation.json
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Tá leagan nua (v {{LATEST_VERSION}}) ar fáil anois.",
"A private conversation between you and selected users": "Comhrá príobháideach idir tú féin agus úsáideoirí roghnaithe",
"a user": "úsáideoir",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Glac le Giniúint Uathchríochnaithe\nLéim go dtí Athróg na Treorach",
"Access": "Rochtain",
"Access Control": "Rialaithe Rochtana",
@@ -343,6 +344,7 @@
"Chat Menu": "",
"Chat moved successfully": "Bogadh an comhrá go rathúil",
"Chat Permissions": "Ceadanna Comhrá",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "Comhrá díroinnte go rathúil.",
"Chat Uploads": "Uaslódálacha Comhrá",
"Chat Variables": "Athróga Comhrá",
@@ -494,6 +496,7 @@
"Could not check for updates": "",
"Could not load release notes.": "Níorbh fhéidir nótaí scaoilte a lódáil.",
"Could not read file.": "Níorbh fhéidir an comhad a léamh.",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "LAP",
"Create": "Cruthaigh",
@@ -919,6 +922,8 @@
"Experience": "",
"Experimental": "Turgnamhach",
"Explain": "Mínigh",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "Iniúchadh",
"Exploring": "Ag iniúchadh",
"Export": "Easpórtáil",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "Leanúint suas: {{question}}",
"Followed instructions perfectly": "Lean treoracha go foirfe",
"for placeholders": "do shealbhóirí áite",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "Faigh eolas faoi {{name}} sa chomhéadan úsáideora",
"Get started": "Cuir tús leis",
"Get started with {{WEBUI_NAME}}": "Cuir tús le {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Domhanda",
"Good Response": "Freagra Mhaith",
"Google": "Google",
@@ -1118,6 +1126,8 @@
"Height": "Airde",
"Hello, {{name}}": "Dia duit, {{name}}",
"Help": "Cabhair",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "Cabhraigh leis an bpobal samhlacha iontacha a aimsiú",
"Help us translate Open WebUI!": "",
"Hex Color": "Dath Heics",
@@ -1148,6 +1158,7 @@
"Identity audit": "Iniúchadh aitheantais",
"Idle only": "Díomhaoin amháin",
"Idle Timeout": "Am Teorann Díomhaoin",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Íomhá",
"Image Generation": "Giniúint Íomhá",
"Image Max Compression Size": "Íomhá Méid Comhbhrú Max",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "Eochair Ionchuir (m.sh. téacs, unet_name, céimeanna)",
"Input needed": "Ionchur ag teastáil",
"Input Variables": "Athróga Ionchuir",
- "Insert": "Cuir isteach",
"Insert into note": "Cuir isteach sa nóta",
"Instructions": "Treoracha",
"Integrations": "Comhtháthúcháin",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Is féidir uasmhéid de 3 samhail a íoslódáil ag an am Bain triail as arís níos déanaí.",
"May": "Bealtaine",
"MBR": "MBR",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "Is turgnamhach tacaíocht MCP agus athraítear a shonraíocht go minic, rud a d’fhéadfadh neamh-chomhoiriúnachtaí a bheith mar thoradh air. Déanann foireann Open WebUI cothabháil dhíreach ar thacaíocht sonraíochta OpenAPI, rud a fhágann gurb é an rogha is iontaofa é le haghaidh comhoiriúnachta.",
"Medium": "Meánach",
"Member removed successfully": "Baineadh an ball go rathúil",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "URL Freastalaí OAuth",
"OAuth session disconnected": "Seisiún OAuth dícheangailte",
"October": "Deireadh Fómhair",
+ "of a website's sticky header": "",
"Off": "As",
"Okay, Let's Go!": "Ceart go leor, Déanaimis Téigh!",
"OLED Dark": "OLED Dorcha",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "Tá Eochair API OpenAI ag teastáil.",
"OpenAI API settings updated": "Nuashonraíodh socruithe OpenAI API",
"OpenAI URL/Key required.": "Teastaíonn URL/eochair OpenAI.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "Sonraíocht OpenAPI",
"openapi.json URL or Path": "openapi.json URL nó Cosán",
"optional": "roghnach",
@@ -1610,6 +1619,7 @@
"out of": "as",
"Output": "Aschur",
"OUTPUT": "ASCHUR",
+ "Overcome procrastination": "",
"Overview": "Forbhreathnú",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "URL API PaddleOCR-vl ag teastáil.",
@@ -3056,6 +3066,8 @@
"Show Files": "Taispeáin Comhaid",
"Show Hidden Files": "Taispeáin Comhaid Fholaithe",
"Show image preview": "Taispeáin réamhamharc íomhá",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Taispeáin Samhail",
"Show more": "Taispeáin níos mó",
"Show or switch the current model.": "",
@@ -3169,6 +3181,8 @@
"Task List": "Liosta Tascanna",
"Tasks": "Tascanna",
"tasks completed": "tascanna críochnaithe",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Inis dúinn níos mó:",
"Temporary": "",
"Temporary Chat": "Comhrá Sealadach",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "Cineál Hugging Face Resolve (Íoslódáil) URL",
"Type your answer": "Clóscríobh do fhreagra",
"Uh-oh! There was an issue with the response.": "Uh-ó! Bhí fadhb leis an bhfreagra.",
+ "Unarchive": "",
"Unarchive Chat": "Comhrá a dhíchartlannú",
"Unassigned": "Gan sannadh",
"Underline": "Folínigh",
@@ -3412,6 +3427,7 @@
"Visible": "Infheicthe",
"Visible to all users": "Infheicthe ag gach úsáideoir",
"Visual": "Amhairc",
+ "vocabulary for a college entrance exam": "",
"Voice": "Guth",
"Voice Input": "Ionchur Gutha",
"Voice mode": "Mod Gutha",
@@ -3442,6 +3458,7 @@
"Weekly": "Seachtainiúil",
"Weekly at": "Seachtainiúil ag",
"Welcome to your AI home.": "Fáilte go dtí do theach AI.",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "Cad atá tú ag iarraidh a bhaint amach?",
"What are you working on?": "Cad air a bhfuil tú ag obair?",
"What is NOT shared:": "Cad NACH roinntear:",
diff --git a/src/lib/i18n/locales/it-IT/translation.json b/src/lib/i18n/locales/it-IT/translation.json
index ff30bc873b54..e455c5444d29 100644
--- a/src/lib/i18n/locales/it-IT/translation.json
+++ b/src/lib/i18n/locales/it-IT/translation.json
@@ -2,119 +2,120 @@
"-1 for no limit, or a positive integer for a specific limit": "-1 per nessun limite, o un numero intero positivo per un limite specifico",
"(latest)": "(ultima)",
"(leave blank for to use commercial endpoint)": "(lascia vuoto per utilizzare l'endpoint commerciale)",
- "[Last] dddd [at] h:mm A": "",
- "[Today at] h:mm A": "",
- "[Yesterday at] h:mm A": "",
- "{{ models }}": "{{ modelli }}",
- "{{count}} added lines_one": "",
- "{{count}} added lines_many": "",
- "{{count}} added lines_other": "",
- "{{COUNT}} Available Skills": "",
- "{{COUNT}} Available Tools": "{{COUNT}} Strumenti Disponibili",
- "{{COUNT}} characters": "",
- "{{COUNT}} document(s) selected.": "",
- "{{COUNT}} extracted lines": "",
- "{{count}} files_one": "",
- "{{count}} files_many": "",
- "{{count}} files_other": "",
- "{{COUNT}} files": "",
+ "[Last] dddd [at] h:mm A": "[Ultimo] dddd [alle] h:mm A",
+ "[Today at] h:mm A": "[Oggi alle] h:mm A",
+ "[Yesterday at] h:mm A": "[Ieri alle] h:mm A",
+ "{{ models }}": "{{ models }}",
+ "{{count}} added lines_one": "{{count}} righe aggiunte",
+ "{{count}} added lines_many": "{{count}} righe aggiunte",
+ "{{count}} added lines_other": "{{count}} righe aggiunte",
+ "{{COUNT}} Available Skills": "{{COUNT}} abilità disponibili",
+ "{{COUNT}} Available Tools": "{{COUNT}} strumenti disponibili",
+ "{{COUNT}} characters": "{{COUNT}} caratteri",
+ "{{COUNT}} document(s) selected.": "{{COUNT}} documento(i) selezionato(i).",
+ "{{COUNT}} extracted lines": "{{COUNT}} righe estratte",
+ "{{count}} files_one": "{{count}} file",
+ "{{count}} files_many": "{{count}} file",
+ "{{count}} files_other": "{{count}} file",
+ "{{COUNT}} files": "{{COUNT}} file",
"{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "",
"{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_many": "",
"{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "",
- "{{count}} filters_one": "",
- "{{count}} filters_many": "",
- "{{count}} filters_other": "",
- "{{count}} groups_one": "",
- "{{count}} groups_many": "",
- "{{count}} groups_other": "",
+ "{{count}} filters_one": "{{count}} filtro",
+ "{{count}} filters_many": "{{count}} filtri",
+ "{{count}} filters_other": "{{count}} filtri",
+ "{{count}} groups_one": "{{count}} gruppo",
+ "{{count}} groups_many": "{{count}} gruppi",
+ "{{count}} groups_other": "{{count}} gruppi",
"{{COUNT}} hidden lines": "{{COUNT}} righe nascoste",
- "{{COUNT}} members": "",
- "{{count}} of {{total}} accessible_one": "",
- "{{count}} of {{total}} accessible_many": "",
- "{{count}} of {{total}} accessible_other": "",
- "{{COUNT}} pipeline(s) selected": "",
- "{{count}} removed lines_one": "",
- "{{count}} removed lines_many": "",
- "{{count}} removed lines_other": "",
- "{{COUNT}} Replies": "{{COUNT}} Risposte",
- "{{COUNT}} Rows": "",
- "{{count}} selected_one": "",
- "{{count}} selected_many": "",
- "{{count}} selected_other": "",
- "{{COUNT}} Sources": "",
- "{{count}} users_one": "",
- "{{count}} users_many": "",
- "{{count}} users_other": "",
- "{{COUNT}} words": "",
+ "{{COUNT}} members": "{{COUNT}} membri",
+ "{{count}} of {{total}} accessible_one": "{{count}} di {{total}} accessibile",
+ "{{count}} of {{total}} accessible_many": "{{count}} di {{total}} accessibili",
+ "{{count}} of {{total}} accessible_other": "{{count}} di {{total}} accessibili",
+ "{{COUNT}} pipeline(s) selected": "{{COUNT}} pipeline selezionate",
+ "{{count}} removed lines_one": "{{count}} riga rimossa",
+ "{{count}} removed lines_many": "{{count}} righe rimosse",
+ "{{count}} removed lines_other": "{{count}} righe rimosse",
+ "{{COUNT}} Replies": "{{COUNT}} risposte",
+ "{{COUNT}} Rows": "{{COUNT}} righe",
+ "{{count}} selected_one": "{{count}} selezionato",
+ "{{count}} selected_many": "{{count}} selezionati",
+ "{{count}} selected_other": "{{count}} selezionati",
+ "{{COUNT}} Sources": "{{COUNT}} fonti",
+ "{{count}} users_one": "{{count}} utente",
+ "{{count}} users_many": "{{count}} utenti",
+ "{{count}} users_other": "{{count}} utenti",
+ "{{COUNT}} words": "{{COUNT}} parole",
"{{COUNT}}d_time_ago": "",
"{{COUNT}}h_time_ago": "",
"{{COUNT}}m_time_ago": "",
"{{COUNT}}w_time_ago": "",
"{{COUNT}}y_time_ago": "",
- "{{label}} contains invalid JSON": "",
- "{{label}} must be a JSON object": "",
- "{{model}} download has been canceled": "",
- "{{modelName}} profile image": "",
- "{{NAMES}} reacted with {{REACTION}}": "",
- "{{page}} / {{totalPages}} ({{rows}} rows)": "",
- "{{percent}}% full": "",
- "{{user}}'s Chats": "{{user}} Chat",
+ "{{label}} contains invalid JSON": "{{label}} contiene JSON non valido",
+ "{{label}} must be a JSON object": "{{label}} deve essere un oggetto JSON",
+ "{{model}} download has been canceled": "download di {{model}} annullato",
+ "{{modelName}} profile image": "Immagine del profilo di {{modelName}}",
+ "{{NAMES}} reacted with {{REACTION}}": "{{NAMES}} ha reagito con {{REACTION}}",
+ "{{page}} / {{totalPages}} ({{rows}} rows)": "{{page}} / {{totalPages}} ({{rows}} righe)",
+ "{{percent}}% full": "{{percent}}% totale",
+ "{{user}}'s Chats": "Chat di {{user}}",
"{{webUIName}} Backend Required": "{{webUIName}} Richiesta Backend",
- "* (all domains)": "",
+ "* (all domains)": "* (tutti i domini)",
"*Prompt node ID(s) are required for image generation": "*ID nodo prompt sono necessari per la generazione di immagini",
- "*required": "",
- "1 file": "",
- "1 group": "",
- "1 hour before": "",
- "1 Source": "",
- "1 user": "",
- "10 minutes before": "",
- "15 minutes before": "",
+ "*required": "*obbligatorio",
+ "1 file": "1 file",
+ "1 group": "1 gruppo",
+ "1 hour before": "1 ora prima",
+ "1 Source": "1 fonte",
+ "1 user": "1 utente",
+ "10 minutes before": "10 minuti prima",
+ "15 minutes before": "15 minuti prima",
"1m_time_ago": "",
- "30 minutes before": "",
- "5 minutes before": "",
- "A chat run failed.": "",
- "A chat run finished successfully.": "",
- "A collaboration channel where people join as members": "",
- "A discussion channel where access is controlled by groups and permissions": "",
+ "30 minutes before": "30 minuti prima",
+ "5 minutes before": "5 minuti prima",
+ "A chat run failed.": "Un'esecuzione della chat è fallita.",
+ "A chat run finished successfully.": "Un'esecuzione della chat è terminata con successo.",
+ "A collaboration channel where people join as members": "Un canale di collaborazione dove le persone si uniscono come membri",
+ "A discussion channel where access is controlled by groups and permissions": "Un canale di discussione dove l'accesso è controllato da gruppi e permessi",
"A new version (v{{LATEST_VERSION}}) is now available.": "Una nuova versione (v{{LATEST_VERSION}}) è ora disponibile.",
- "A private conversation between you and selected users": "",
+ "A private conversation between you and selected users": "Una conversazione privata tra te e gli utenti selezionati",
"a user": "un utente",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "",
"Access": "Accesso",
"Access Control": "Controllo accessi",
- "Access Grants": "",
- "Access level": "",
- "Access List": "",
- "Access prohibited": "",
- "Access updated": "",
+ "Access Grants": "Permessi di accesso",
+ "Access level": "Livello di accesso",
+ "Access List": "Lista accessi",
+ "Access prohibited": "Accesso vietato",
+ "Access updated": "Accesso aggiornato",
"Accessible to all users": "Accessibile a tutti gli utenti",
"Account Activation Pending": "Account in attesa di attivazione",
"Accurate information": "Informazioni accurate",
- "Action": "",
+ "Action": "Azione",
"Actions": "Azioni",
"Activate this command by typing \"/{{COMMAND}}\" to chat input.": "Attiva questo comando digitando \"/{{COMMAND}}\" nell'input della chat.",
"Active": "Attivo",
"Active Users": "Utenti attivi",
- "Activity": "",
+ "Activity": "Attività",
"Add": "Aggiungi",
"Add a model ID": "Aggiungi un ID modello",
"Add a preference, fact, or instruction about you": "",
"Add a short description about what this model does": "Aggiungi una breve descrizione di quello che fa questo modello",
"Add a tag": "Aggiungi un tag",
- "Add a tag...": "",
- "Add Access": "",
+ "Add a tag...": "Aggiungi un tag...",
+ "Add Access": "Aggiungi accesso",
"Add Arena Model": "Aggiungi modello Arena",
"Add Connection": "Aggiungi connessione",
"Add Content": "Aggiungi contenuto",
"Add content here": "Aggiungi un contenuto qui",
- "Add Custom Parameter": "Aggiungi Parametri Personalizzati",
+ "Add Custom Parameter": "Aggiungi parametri personalizzati",
"Add Custom Prompt": "",
"Add description": "",
"Add Details": "",
"Add durable context for future chats": "",
"Add Files": "Aggiungi dei file",
- "Add Image": "",
+ "Add Image": "Aggiungi immagine",
"Add Knowledge Connection": "",
"Add location": "",
"Add Member": "",
@@ -122,8 +123,8 @@
"Add Memory": "Aggiungi memoria",
"Add prompt suggestion": "",
"Add Reaction": "Aggiungi una reazione",
- "Add tag": "",
- "Add Tag": "Aggiungi un tag",
+ "Add tag": "Aggiungi tag",
+ "Add Tag": "Aggiungi tag",
"Add Terminal": "",
"Add Terminal Connection": "",
"Add text content": "Aggiungi contenuto di testo",
@@ -242,10 +243,10 @@
"at": "",
"At time of event": "",
"Attach File From Knowledge": "",
- "Attach Files": "",
- "Attach Knowledge": "",
+ "Attach Files": "Allega file",
+ "Attach Knowledge": "Allega conoscenza",
"Attach Notes": "",
- "Attach Webpage": "",
+ "Attach Webpage": "Allega pagina web",
"Attention to detail": "Attenzione ai dettagli",
"Audio player": "",
"August": "Agosto",
@@ -352,6 +353,7 @@
"Chat Menu": "",
"Chat moved successfully": "",
"Chat Permissions": "Permessi chat",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "",
"Chat Uploads": "",
"Chat Variables": "",
@@ -391,9 +393,9 @@
"Client ID": "",
"Client Secret": "",
"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Autorizzazione di scrittura negli appunti negata. Controlla le impostazioni del browser per concedere l'accesso necessario.",
- "Clone": "Clone",
- "Clone Chat": "Clona Chat",
- "Clone of {{TITLE}}": "Clone di {{TITLE}}",
+ "Clone": "Duplica",
+ "Clone Chat": "Duplica chat",
+ "Clone of {{TITLE}}": "Copia di {{TITLE}}",
"Close": "Chiudi",
"Close Banner": "",
"Close chat controls": "",
@@ -449,7 +451,7 @@
"Confirm your action": "Conferma la tua azione",
"Confirm your new password": "Conferma la tua nuova password",
"Confirm Your Password": "",
- "Connect to an AI provider to start chatting": "",
+ "Connect to an AI provider to start chatting": "Connettiti a un provider di AI per iniziare a chattare",
"Connect to Open Terminal instances. Admins and users granted access can use file browsing and terminal tools through these servers.": "",
"Connect to your own OpenAPI compatible external tool servers.": "Connettiti ai tuoi server di tool esterni compatibili con OpenAPI.",
"Connected": "",
@@ -504,6 +506,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "Crea",
@@ -515,7 +518,7 @@
"Create Admin Account": "Crea account amministratore",
"Create announcements shown to users in the app.": "",
"Create Channel": "Crea canale",
- "Create Folder": "",
+ "Create Folder": "Crea cartella",
"Create Knowledge": "Crea conoscenza",
"Create Model": "",
"Create new key": "Crea nuova chiave",
@@ -669,16 +672,16 @@
"Don't like the style": "Non ti piace lo stile",
"Done": "Fatto",
"Download": "Scarica",
- "Download \"{{searchValue}}\"": "",
- "Download \"{{searchValue}}\" from {{provider}}": "",
- "Download as JSON": "",
+ "Download \"{{searchValue}}\"": "Scarica \"{{searchValue}}\"",
+ "Download \"{{searchValue}}\" from {{provider}}": "Scarica \"{{searchValue}}\" da {{provider}}",
+ "Download as JSON": "Scarica come JSON",
"Download as SVG": "Scarica come SVG",
"Download canceled": "Scaricamento annullato",
"Download CSV Template": "",
"Download failed": "",
- "Download Model": "",
- "Downloading \"{{name}}\"": "",
- "Downloading \"{{searchValue}}\"": "",
+ "Download Model": "Scarica modello",
+ "Downloading \"{{name}}\"": "Scaricamento di \"{{name}}\"",
+ "Downloading \"{{searchValue}}\"": "Scaricamento di \"{{searchValue}}\"",
"Downloading stats...": "",
"Drag and Drop Container": "",
"Drag to reorder": "",
@@ -792,7 +795,7 @@
"Enter Firecrawl API Base URL": "Inserisci l'URL base dell'API Firecrawl",
"Enter Firecrawl API Key": "Inserisci Chiave API Firecrawl",
"Enter Firecrawl Timeout": "",
- "Enter folder name": "",
+ "Enter folder name": "Inserisci nome cartella",
"Enter function name filter list (e.g. func1, !func2)": "",
"Enter GitHub Raw URL": "",
"Enter Google PSE API Key": "Inserisci Chiave API per Google PSE",
@@ -931,8 +934,10 @@
"Experience": "",
"Experimental": "Sperimentale",
"Explain": "Spiega",
- "Explored": "",
- "Exploring": "",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
+ "Explored": "Utilizzato",
+ "Exploring": "Utilizzo",
"Export": "Esportazione",
"Export as CSV": "",
"Export as JSON": "",
@@ -1042,22 +1047,23 @@
"Filters": "Filtri",
"Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Rilevato spoofing delle impronte digitali: impossibile utilizzare le iniziali come avatar. Ripristino all'immagine del profilo predefinita.",
"Focus Chat Input": "",
- "Folder": "",
- "Folder Background Image": "",
- "Folder created successfully": "",
+ "Folder": "Cartella",
+ "Folder Background Image": "Immagine di sfondo della cartella",
+ "Folder created successfully": "Cartella creata con successo",
"Folder deleted successfully": "Cartella rimossa con successo",
- "Folder name": "",
- "Folder Name": "",
+ "Folder name": "Nome cartella",
+ "Folder Name": "Nome cartella",
"Folder name cannot be empty.": "Il nome della cartella non può essere vuoto.",
"Folder name updated successfully": "Nome cartella aggiornato con successo",
"Folder options": "",
- "Folder updated successfully": "",
- "Folders": "",
+ "Folder updated successfully": "Cartella aggiornata con successo",
+ "Folders": "Cartelle",
"Folders Sharing": "",
"Follow up": "Follow up",
"Follow up: {{question}}": "",
"Followed instructions perfectly": "Ha seguito le istruzioni alla perfezione",
"for placeholders": "",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1066,7 +1072,7 @@
"Form": "Modulo",
"Format Markdown as you type and paste. Turn off to keep Markdown characters and paste plain text. Existing formatting is preserved.": "",
"Formatting": "",
- "Formatting may be inconsistent from source.": "",
+ "Formatting may be inconsistent from source.": "La formattazione potrebbe essere incoerente rispetto alla fonte.",
"Forward": "",
"Forward cookies": "",
"Forward cookies from your Open WebUI request to this server.": "",
@@ -1105,6 +1111,8 @@
"Get information on {{name}} in the UI": "",
"Get started": "Inizia",
"Get started with {{WEBUI_NAME}}": "Inizia con {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Globale",
"Good Response": "Buona Risposta",
"Google": "",
@@ -1130,6 +1138,8 @@
"Height": "",
"Hello, {{name}}": "Ciao, {{name}}",
"Help": "Aiuto",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "",
"Help us translate Open WebUI!": "",
"Hex Color": "Colore Esadecimale",
@@ -1144,7 +1154,7 @@
"High": "",
"History": "",
"Home": "Home",
- "Horizontal Layout": "",
+ "Horizontal Layout": "Layout Orizzontale",
"Hourly": "",
"Hourly Messages": "",
"How can I help you today?": "Come posso aiutarti oggi?",
@@ -1160,6 +1170,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Immagine",
"Image Generation": "Generazione Immagini",
"Image Max Compression Size": "Dimensione Massima Compressione Immagine",
@@ -1192,10 +1203,9 @@
"Input Key (e.g. text, unet_name, steps)": "",
"Input needed": "",
"Input Variables": "",
- "Insert": "",
"Insert into note": "",
"Instructions": "",
- "Integrations": "",
+ "Integrations": "Integrazioni",
"Interface Settings Access": "",
"Invalid background image.": "",
"Invalid file format.": "Formato file non valido.",
@@ -1303,13 +1313,13 @@
"Make Public": "",
"Male": "",
"Manage": "Gestisci",
- "Manage Connections": "",
- "Manage Models": "Gestisci Modelli",
+ "Manage Connections": "Gestisci connessioni",
+ "Manage Models": "Gestisci modelli",
"Manage Ollama": "Gestisci Ollama",
"Mapped Source": "",
"March": "Marzo",
- "Mark all as read": "",
- "Mark as unread": "",
+ "Mark all as read": "Segna tutto come letto",
+ "Mark as unread": "Segna come non letto",
"Markdown": "",
"Market": "",
"Matching tabs: {{count}}_one": "",
@@ -1322,7 +1332,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "È possibile scaricare un massimo di 3 modelli contemporaneamente. Riprova più tardi.",
"May": "Maggio",
"MBR": "",
- "MCP": "",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "",
"Medium": "",
"Member removed successfully": "",
@@ -1469,7 +1478,7 @@
"No chat to compact": "",
"No chat to fork": "",
"No chats": "",
- "No chats found": "",
+ "No chats found": "Nessuna chat trovata",
"No chats found for this user.": "Nessuna chat trovata per questo utente.",
"No chats found.": "Nessuna chat trovata.",
"No content": "Nessun contenuto",
@@ -1485,7 +1494,7 @@
"No external knowledge sources configured.": "",
"No feedback found": "",
"No file selected": "Nessun file selezionato",
- "No files found": "",
+ "No files found": "Nessun file trovato",
"No files in this knowledge base.": "",
"No files yet. Upload files or run Python code to create them.": "",
"No filters found": "",
@@ -1497,7 +1506,7 @@
"No inference engine with management support found": "Nessun motore di inferenza con supporto per la gestione trovato",
"No kernel": "",
"No knowledge bases accessible": "",
- "No knowledge bases found.": "",
+ "No knowledge bases found.": "Nessuna base di conoscenza trovata.",
"No knowledge found": "Nessuna conoscenza trovata",
"No limit": "",
"No matches": "",
@@ -1505,7 +1514,7 @@
"No model IDs": "Nessun ID modello",
"No model usage found": "",
"No models accessible": "",
- "No models available": "",
+ "No models available": "Nessun modello disponibile",
"No models found": "Nessun modello trovato",
"No Notes": "Nessuna nota",
"No notes found": "",
@@ -1529,7 +1538,7 @@
"No text differences": "",
"No tool server connections configured.": "",
"No tools accessible": "",
- "No tools found": "",
+ "No tools found": "Nessuno strumento trovato",
"No usage data found": "",
"No user variables configured.": "",
"No users were found.": "Nessun utente trovato.",
@@ -1561,6 +1570,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "Ottobre",
+ "of a website's sticky header": "",
"Off": "Disattivato",
"Okay, Let's Go!": "Ok, andiamo!",
"OLED Dark": "OLED scuro",
@@ -1610,7 +1620,6 @@
"OpenAI API Key is required.": "La Chiave API OpenAI è obbligatoria.",
"OpenAI API settings updated": "Impostazioni API OpenAI aggiornate",
"OpenAI URL/Key required.": "URL/Chiave OpenAI obbligatori.",
- "OpenAPI": "",
"OpenAPI Spec": "",
"openapi.json URL or Path": "URL openapi.json o il percorso",
"optional": "",
@@ -1623,6 +1632,7 @@
"out of": "",
"Output": "",
"OUTPUT": "OUTPUT",
+ "Overcome procrastination": "",
"Overview": "Panoramica",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -1652,10 +1662,10 @@
"Permissions reset to defaults": "",
"Persistent": "",
"Personal": "",
- "Pin": "Appunta",
- "Pin to Sidebar": "",
- "Pinned": "Appuntato",
- "Pinned Messages": "",
+ "Pin": "Fissa",
+ "Pin to Sidebar": "Fissa nella barra laterale",
+ "Pinned": "Fissato",
+ "Pinned Messages": "Messaggi fissati",
"Pipe": "",
"Pipeline deleted successfully": "Pipeline rimossa con successo",
"Pipeline downloaded successfully": "Pipeline scaricata con successo",
@@ -1732,7 +1742,7 @@
"Pyodide file browser": "",
"Quality": "",
"Query failed": "",
- "Querying": "",
+ "Querying": "Consultazione",
"Queued messages": "",
"Quick Actions": "",
"Ran {{COUNT}} analyses": "",
@@ -1740,7 +1750,7 @@
"Rate {{rating}} out of 10": "",
"Rating": "Valutazione",
"Read": "Leggi",
- "Read Aloud": "Leggi ad Alta Voce",
+ "Read Aloud": "Leggi ad alta voce",
"Read more →": "",
"Read only": "",
"Read Only": "",
@@ -1760,7 +1770,7 @@
"Record voice": "Registra voce",
"Redirecting you to Open WebUI Community": "Reindirizzamento alla comunità 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.": "Riduce la probabilità di generare sciocchezze. Un valore più alto (ad esempio 100) darà risposte più varie, mentre un valore più basso (ad esempio 10) sarà più conservativo.",
- "Reference Chats": "",
+ "Reference Chats": "Riferimenti chat",
"Refresh": "",
"Refresh requested: {{count}} terminal(s)_one": "",
"Refresh requested: {{count}} terminal(s)_many": "",
@@ -1824,11 +1834,11 @@
"Restart": "",
"Result": "Risultato",
"RESULT": "Risultato",
- "Retrieved {{count}} sources": "",
- "Retrieved {{count}} sources_one": "",
- "Retrieved {{count}} sources_many": "",
- "Retrieved {{count}} sources_other": "",
- "Retrieved 1 source": "",
+ "Retrieved {{count}} sources": "Recuperate {{count}} fonti",
+ "Retrieved {{count}} sources_one": "Recuperata 1 fonte",
+ "Retrieved {{count}} sources_many": "Recuperate {{count}} fonti",
+ "Retrieved {{count}} sources_other": "Recuperate {{count}} fonti",
+ "Retrieved 1 source": "Recuperata 1 fonte",
"Retry": "",
"Rewrite the selected text.": "",
"Role": "Ruolo",
@@ -1866,7 +1876,7 @@
"Search channels": "",
"Search Chats": "Cerca nelle chat",
"Search Collection": "Cerca collezione",
- "Search Files": "",
+ "Search Files": "Cerca file",
"Search files and contents": "",
"Search filters": "",
"Search folders": "",
@@ -1888,8 +1898,8 @@
"Search skills": "",
"Search Skills": "",
"Search the internet": "Cerca su Internet",
- "Search tools": "",
- "Search Tools": "Cerca Strumenti",
+ "Search tools": "Cerca strumenti",
+ "Search Tools": "Cerca strumenti",
"Search translations": "",
"Search users or groups": "",
"Searched {{count}} sites": "Cercati {{count}} siti",
@@ -1903,23 +1913,23 @@
"Select {{name}}": "",
"Select a base model (e.g. llama3, gpt-4o)": "",
"Select a conversation to preview": "",
- "Select a engine": "Seleziona un motore",
- "Select a function": "Seleziona una funzione",
- "Select a group": "Seleziona un gruppo",
+ "Select a engine": "Seleziona motore",
+ "Select a function": "Seleziona funzione",
+ "Select a group": "Seleziona gruppo",
"Select a language": "",
"Select a mode": "",
- "Select a model": "Seleziona un modello",
+ "Select a model": "Seleziona modello",
"Select a model (optional)": "",
- "Select a pipeline": "Selezionare una pipeline",
+ "Select a pipeline": "Selezionare pipeline",
"Select a pipeline url": "Selezionare l'URL di una pipeline",
"Select a reranking model engine": "",
"Select a role": "",
"Select a theme": "",
- "Select a tool": "Seleziona uno strumento",
+ "Select a tool": "Seleziona strumento",
"Select a voice": "",
"Select Action": "",
"Select All": "",
- "Select an auth method": "Seleziona un metodo di autenticazione",
+ "Select an auth method": "Seleziona metodo di autenticazione",
"Select an embedding model engine": "",
"Select an engine": "",
"Select an instance": "",
@@ -3059,27 +3069,29 @@
"Share link copied to clipboard.": "",
"Share to Open WebUI Community": "Condividi con la comunità OpenWebUI",
"Share your background and interests": "",
- "Shared": "",
- "Shared Chats": "",
- "Shared with you": "",
+ "Shared": "Condiviso",
+ "Shared Chats": "Chat condivise",
+ "Shared with you": "Condiviso con te",
"Sharing Permissions": "Condivisione dei permessi",
"Shell": "",
- "Shorten older messages so this chat can keep going.": "",
+ "Shorten older messages so this chat can keep going.": "Riduci i messaggi più vecchi in modo che questa chat possa continuare.",
"Show": "Mostra",
"Show \"What's New\" Modal on Login": "Mostra il modulo \"Novità\" al login",
- "Show All": "",
- "Show all ({{COUNT}} characters)": "",
- "Show Files": "",
- "Show Hidden Files": "",
- "Show image preview": "",
+ "Show All": "Mostra tutto",
+ "Show all ({{COUNT}} characters)": "Mostra tutto ({{COUNT}} caratteri)",
+ "Show Files": "Mostra file",
+ "Show Hidden Files": "Mostra file nascosti",
+ "Show image preview": "Mostra anteprima immagine",
+ "Show me a code snippet": "Mostrami un frammento di codice",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "Mostrami un frammento di codice di un header fisso di un sito web in CSS e JavaScript.",
"Show Model": "Mostra Modello",
- "Show more": "",
- "Show or switch the current model.": "",
- "Show Shortcuts": "",
- "Show the floating quick-action toolbar in chat.": "",
+ "Show more": "Mostra altro",
+ "Show or switch the current model.": "Mostra o passa al modello corrente",
+ "Show Shortcuts": "Mostra scorciatoie",
+ "Show the floating quick-action toolbar in chat.": "Mostra la barra degli strumenti a comparsa nelle chat",
"Show your support!": "Mostra il tuo supporto!",
"Showcased creativity": "Creatività messa in mostra",
- "Sidebar": "",
+ "Sidebar": "Barra laterale",
"Sign in": "Accedi",
"Sign in to {{WEBUI_NAME}}": "Accedi a {{WEBUI_NAME}}",
"Sign in to {{WEBUI_NAME}} with LDAP": "Accedi a {{WEBUI_NAME}} con LDAP",
@@ -3088,9 +3100,9 @@
"Sign up to {{WEBUI_NAME}}": "Registrati a {{WEBUI_NAME}}",
"Signing in to {{WEBUI_NAME}}": "Accedi a {{WEBUI_NAME}}",
"simultaneous sub-agents": "",
- "Single": "",
+ "Single": "Singolo",
"Sink List": "",
- "Size": "",
+ "Size": "Dimensione",
"sk-1234": "sk-1234",
"Skill created successfully": "",
"Skill deleted successfully": "",
@@ -3101,7 +3113,7 @@
"Skill Menu": "",
"Skill Name": "",
"Skill updated successfully": "",
- "Skills": "",
+ "Skills": "Competenze",
"Skills Access": "",
"Skills Public Sharing": "",
"Skills Sharing": "",
@@ -3114,7 +3126,7 @@
"Sonar Pro": "",
"Sonar Reasoning": "",
"Sonar Reasoning Pro": "",
- "Sort": "",
+ "Sort": "Ordina",
"Source": "Fonte",
"Specific users or groups": "",
"Speech recognition error: {{error}}": "Errore di riconoscimento vocale: {{error}}",
@@ -3131,7 +3143,7 @@
"Starting in 1 minute": "",
"Starting kernel...": "",
"Starting now": "",
- "Status": "",
+ "Status": "Stato",
"Status cleared successfully": "",
"Status updated successfully": "",
"Status: check what is running in this chat.": "",
@@ -3141,64 +3153,66 @@
"Stop camera": "",
"Stop Download": "",
"Stop Generating": "",
- "Storage": "",
+ "Storage": "Archiviazione",
"Streamable HTTP": "",
"Strikethrough": "",
"Su_day_of_week": "",
"Submit answers": "",
"Submit question": "",
"Submit suggestion": "",
- "Subtitle": "",
+ "Subtitle": "Sottotitolo",
"Success": "Successo",
"Successfully imported {{userCount}} users.": "",
- "Suggest a change": "",
+ "Suggest a change": "Suggerisci modifica",
"Suggested": "Suggerito",
- "Suggested prompts": "",
- "Summarize this note.": "",
+ "Suggested prompts": "Prompt suggeriti",
+ "Summarize this note.": "Riassumi questa nota.",
"Support": "Supporto",
"Support this plugin:": "Supporta questo plugin:",
"Swap": "",
"Switch camera": "",
"Switch to JSON editor": "",
"Switch to visual editor": "",
- "Sync": "",
+ "Sync": "Sincronizzazione",
"Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "",
"Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "",
- "Sync Complete!": "",
+ "Sync Complete!": "Sincronizzazione completata!",
"Sync directory": "Sincronizza directory",
- "Sync Failed": "",
- "Sync Usage Stats": "",
- "Syncing stats...": "",
- "Syncing...": "",
+ "Sync Failed": "Sincronizzazione fallita",
+ "Sync Usage Stats": "Sincronizza statistiche di utilizzo",
+ "Syncing stats...": "Sincronizzazione statistiche...",
+ "Syncing...": "Sincronizzazione...",
"Syncs only chats with updates after your last sync timestamp. Disable to re-sync all chats.": "",
"System": "Sistema",
- "System events only": "",
+ "System events only": "Solo eventi di sistema",
"System Instructions": "Istruzioni di sistema",
"System Prompt": "Prompt di sistema",
- "Table": "",
- "Tag": "",
+ "Table": "Tabella",
+ "Tag": "Tag",
"Tags": "Tag",
"Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting.": "Il campionamento tail free viene utilizzato per ridurre l'impatto di token meno probabili dall'output. Un valore più alto (ad esempio, 2.0) ridurrà maggiormente l'impatto, mentre un valore di 1.0 disabilita questa impostazione.",
- "Talk to Model": "",
+ "Talk to Model": "Parla con il modello",
"Tap to interrupt": "Tocca per interrompere",
"Target ID": "",
"Target ID for notify": "",
- "Task List": "",
+ "Task List": "Lista attività",
"Tasks": "Attività",
- "tasks completed": "",
+ "tasks completed": "attività completate",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Raccontaci di più:",
- "Temporary": "",
+ "Temporary": "Temporaneo",
"Temporary Chat": "Chat temporanea",
- "Temporary: toggle temporary chat for this new chat.": "",
- "Terminal": "",
- "Terminal Contexts": "",
- "Terminal servers saved": "",
+ "Temporary: toggle temporary chat for this new chat.": "Temporanea: attiva/disattiva la chat temporanea per questa nuova chat.",
+ "Terminal": "Terminale",
+ "Terminal Contexts": "Contesti terminale",
+ "Terminal servers saved": "Server terminale salvati",
"Test": "",
"Test must pass before a source is created.": "",
"Test notification sent.": "",
"Test Query": "",
"Test returned no results.": "",
- "Test succeeded.": "",
+ "Test succeeded.": "Test superato.",
"Test the source before creating it.": "",
"Test the source before saving it.": "",
"Th_day_of_week": "",
@@ -3218,11 +3232,11 @@
"There was an error syncing your stats. Please try again.": "",
"These settings are read from environment variables and cannot be edited here while {{ENV_VAR}} is disabled.": "",
"thinking, output_config": "",
- "Thinking...": "Sto pensando...",
+ "Thinking...": "Ragionamento...",
"This action cannot be undone. Do you wish to continue?": "Questa azione non può essere annullata. Vuoi continuare?",
"This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "Questo canale è stato creato il {{createdAt}}. Questo è l'inizio del canale {{channelName}}.",
"This chat won't appear in history and your messages will not be saved.": "Questa chat non apparirà nella cronologia e i tuoi messaggi non verranno salvati.",
- "This folder is empty": "",
+ "This folder is empty": "Questa cartella è vuota",
"This is a default user permission and will remain enabled.": "",
"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Questa è una funzionalità sperimentale, potrebbe non funzionare come previsto ed è soggetta a modifiche in qualsiasi momento.",
"This knowledge base retrieves from a connected source. Open WebUI can query it, but cannot upload, sync, edit, delete, reset, or reindex its source data.": "",
@@ -3240,24 +3254,24 @@
"This will remove all files and directories from this knowledge base. This action cannot be undone.": "",
"This will revoke the current API key.": "",
"Thorough explanation": "Spiegazione dettagliata",
- "Thought": "",
- "Thought for {{DURATION}}": "Pensiero per {{DURATION}}",
- "Thought for {{DURATION}} seconds": "Pensiero per {{DURATION}} secondi",
- "Thought for less than a second": "",
+ "Thought": "Ragionamento",
+ "Thought for {{DURATION}}": "Ragionamento per {{DURATION}}",
+ "Thought for {{DURATION}} seconds": "Ragionamento per {{DURATION}} secondi",
+ "Thought for less than a second": "Ragionamento per meno di un secondo",
"Thread": "Discussione",
- "Through": "",
- "Thumbs up/down ratings from users on model responses": "",
+ "Through": "Attraverso",
+ "Thumbs up/down ratings from users on model responses": "Valutazioni pollici su/giù dagli utenti sulle risposte del modello",
"Tika": "Tika",
"Tika 3.x": "",
"Tika 4.x": "",
"Tika Server URL required.": "L'URL del server Tika è obbligatorio.",
"Tiktoken": "Tiktoken",
- "Time": "",
- "Timeout": "",
- "Timer": "",
+ "Time": "Tempo",
+ "Timeout": "Timeout",
+ "Timer": "Timer",
"Title": "Titolo",
"Title cannot be an empty string.": "Il titolo non può essere una stringa vuota.",
- "Title is required": "",
+ "Title is required": "Il titolo è obbligatorio",
"To access the available model names for downloading,": "Per accedere ai nomi dei modelli disponibili per il download,",
"To access the GGUF models available for downloading,": "Per accedere ai modelli GGUF disponibili per il download,",
"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Per accedere a WebUI, contatta l'amministratore. Gli amministratori possono gestire gli stati degli utenti dal pannello di amministrazione.",
@@ -3271,7 +3285,7 @@
"To select skills here, add them to the \"Skills\" workspace first.": "",
"To select toolkits here, add them to the \"Tools\" workspace or enable a tool server first.": "",
"Today": "Oggi",
- "Today at": "",
+ "Today at": "Oggi alle",
"Toggle {{COUNT}} sources": "",
"Toggle 1 source": "",
"Toggle Controls": "",
@@ -3285,65 +3299,66 @@
"Token": "Token",
"Token activity": "",
"Token counts are estimates and may not reflect actual API usage": "",
- "tokens": "",
- "Tokens": "",
+ "tokens": "token",
+ "Tokens": "Token",
"Too verbose": "Troppo prolisso",
- "tool": "",
+ "tool": "strumento",
"Tool created successfully": "Strumento creato con successo",
"Tool deleted successfully": "Strumento eliminato con successo",
- "Tool Description": "Descrizione dello Strumento",
+ "Tool Description": "Descrizione dello strumento",
"Tool ID": "ID Strumento",
"Tool imported successfully": "Strumento importato con successo",
"tool loops per sub-agent": "",
- "Tool Menu": "",
- "Tool Name": "Nome dello Strumento",
- "Tool Permissions": "",
- "Tool Servers": "Server degli Strumento",
+ "Tool Menu": "Menu strumento",
+ "Tool Name": "Nome dello strumento",
+ "Tool Permissions": "Permessi dello strumento",
+ "Tool Servers": "Server degli strumenti",
"Tool updated successfully": "Strumento aggiornato con successo",
"Tools": "Strumenti",
- "Tools Access": "Accesso agli Strumento",
- "Tools can execute arbitrary code.": "",
+ "Tools Access": "Accesso agli strumenti",
+ "Tools can execute arbitrary code.": "Gli strumenti possono eseguire codice arbitrario.",
"Tools have a function calling system that allows arbitrary code execution.": "Gli strumenti hanno un sistema di chiamata di funzione che consente l'esecuzione di codice arbitrario.",
- "Tools Public Sharing": "Condivisione Pubblica degli strumenti",
- "Tools Sharing": "",
+ "Tools Public Sharing": "Condivisione pubblica degli strumenti",
+ "Tools Sharing": "Condivisione strumenti",
"Top": "",
- "Total chats": "",
+ "Total chats": "Chat totali",
"Transformers": "Transformer",
"Translation key": "",
"Trial License": "",
- "Try adjusting your search or filter to find what you are looking for.": "",
- "Try Again": "",
+ "Try adjusting your search or filter to find what you are looking for.": "Prova a regolare la tua ricerca o il filtro per ottenere risultati.",
+ "Try Again": "Riprova",
"TTS Voice": "Voce TTS",
"Tu_day_of_week": "",
"Type": "Digitare",
"Type a model ref": "",
- "Type here...": "",
+ "Type here...": "Digita qui...",
"Type Hugging Face Resolve (Download) URL": "Digita URL di Risoluzione (Download) di Hugging Face",
- "Type your answer": "",
+ "Type your answer": "Digita la tua risposta",
"Uh-oh! There was an issue with the response.": "Oh-oh! C'è stato un problema con la risposta.",
- "Unarchive Chat": "Disarchivia Chat",
- "Unassigned": "",
- "Underline": "",
- "unknown": "",
- "Unknown": "",
- "Unknown User": "",
- "Unload Model": "",
+ "Unarchive": "Disarchivia",
+ "Unarchive Chat": "Disarchivia chat",
+ "Unassigned": "Non assegnato",
+ "Underline": "Sottolineato",
+ "unknown": "sconosciuto",
+ "Unknown": "Sconosciuto",
+ "Unknown User": "Utente sconosciuto",
+ "Unload Model": "Scarica modello",
"Unloads {{FROM_NOW}}": "Scarica {{FROM_NOW}}",
- "Unmute": "",
+ "Unmute": "Rimuovi muto",
"Unpin": "Rimuovi fissato",
- "Unpin from Sidebar": "",
- "Unread": "",
- "Unshare All": "",
- "Unshare All Shared Chats": "",
- "Unshare Chat": "",
- "Unsupported file type.": "",
+ "Unpin from Sidebar": "Rimuovi dalla barra laterale",
+ "Unread": "Non letto",
+ "Unshare All": "Rimuovi condivisione di tutto",
+ "Unshare All Shared Chats": "Rimuovi condivisione di tutte le chat condivise",
+ "Unshare Chat": "Rimuovi condivisione chat",
+ "Unsupported file type.": "Tipo di file non supportato.",
"Untagged": "Non taggato",
"Untitled": "Senza titolo",
"Update": "Aggiorna",
- "Update All Models": "",
+ "Update All Models": "Aggiorna tutti i modelli",
"Update and Copy Link": "Aggiorna e Copia Link",
"Update for the latest features and improvements.": "Aggiorna per le ultime funzionalità e miglioramenti.",
- "Update your status": "",
+ "Update your status": "Aggiorna il tuo stato",
"Updated": "Aggiornato",
"Updated at": "Aggiornato il",
"Updated At": "Aggiornato Il",
@@ -3353,89 +3368,90 @@
"Upload a GGUF model": "Carica un modello GGUF",
"Upload Audio": "Carica Audio",
"Upload directory": "Carica cartella",
- "Upload failed": "",
- "Upload failed for {{failed}} of {{total}} files.": "",
+ "Upload failed": "Caricamento fallito",
+ "Upload failed for {{failed}} of {{total}} files.": "Caricamento fallito per {{failed}} di {{total}} file.",
"Upload files": "Carica file",
- "Upload Files": "Carica File",
- "Upload Folder": "",
- "Upload Model": "",
- "Upload Photo": "",
- "Upload profile image": "",
- "Upload Progress": "Avanzamento Caricamento",
- "Uploaded files or images": "",
- "Uploading": "",
- "Uploading {{current}}/{{total}}: {{file}}": "",
- "Uploading...": "",
+ "Upload Files": "Carica file",
+ "Upload Folder": "Carica cartella",
+ "Upload Model": "Carica modello",
+ "Upload Photo": "Carica foto",
+ "Upload profile image": "Carica immagine profilo",
+ "Upload Progress": "Avanzamento caricamento",
+ "Uploaded files or images": "File o immagini caricati",
+ "Uploading": "Caricamento",
+ "Uploading {{current}}/{{total}}: {{file}}": "Caricamento {{current}}/{{total}}: {{file}}",
+ "Uploading...": "Caricamento...",
"URL": "URL",
- "URL is required": "",
+ "URL is required": "L'URL è richiesto",
"URL Mode": "Modalità URL",
- "Use": "",
- "Use a valid event name or pattern like user.*": "",
- "Use default": "",
+ "Use": "Utilizza",
+ "Use a valid event name or pattern like user.*": "Utilizza un nome evento valido o un pattern come user.*",
+ "Use default": "Utilizza predefinito",
"Use device vibration feedback on supported Android devices.": "",
"Use discovered scopes": "",
"Use groups to organize your users and assign permissions.": "",
"Use segmented retrieval for focused and relevant content extraction.": "",
"Use segmented retrieval for focused and relevant context.": "",
"Use segmented retrieval for focused context.": "",
- "Use these in model system prompts as {{example}}.": "",
- "Use Web Search?": "",
+ "Use these in model system prompts as {{example}}.": "Usali nei prompt di sistema del modello come {{example}}.",
+ "Use Web Search?": "Utilizzare la ricerca web?",
"user": "utente",
"User": "Utente",
- "User Activity": "",
- "User Count": "",
- "User Groups": "",
+ "User Activity": "Attività utente",
+ "User Count": "Conteggio utenti",
+ "User Groups": "Gruppi utente",
"User location successfully retrieved.": "Posizione utente recuperata con successo.",
- "User menu": "",
- "User messages": "",
- "User not found.": "",
- "User Preview": "",
- "User ratings (thumbs up/down)": "",
- "User Variables": "",
+ "User menu": "Menu utente",
+ "User messages": "Messaggi utente",
+ "User not found.": "Utente non trovato.",
+ "User Preview": "Anteprima utente",
+ "User ratings (thumbs up/down)": "Valutazioni degli utenti (pollice su/giù)",
+ "User Variables": "Variabili utente",
"User Webhooks": "Webhook Utente",
"Username": "Nome Utente",
- "users": "",
+ "users": "utenti",
"Users": "Utenti",
"Uses DefaultAzureCredential to authenticate": "",
- "Uses defaults": "",
+ "Uses defaults": "Utilizza i valori predefiniti",
"Uses OAuth 2.1 Dynamic Client Registration": "",
- "Using Entire Document": "",
- "Using Focused Retrieval": "",
+ "Using Entire Document": "Usando l'intero documento",
+ "Using Focused Retrieval": "Usando il recupero mirato",
"Using the default arena model with all models. Click the plus button to add custom models.": "Utilizzando il modello di arena predefinito con tutti i modelli. Fai clic sul pulsante più per aggiungere modelli personalizzati.",
- "Value": "",
- "Valves": "Valvole",
- "Valves updated": "Valvole aggiornate",
- "Valves updated successfully": "Valvole aggiornate con successo",
+ "Value": "Valore",
+ "Valves": "Abilitazioni",
+ "Valves updated": "Abilitazioni aggiornate",
+ "Valves updated successfully": "Abilitazioni aggiornate con successo",
"variable": "variabile",
- "Variable key": "",
- "Variable keys must be unique.": "",
- "Variable keys must use lowercase snake case.": "",
- "Variable value": "",
- "Vector Field": "",
+ "Variable key": "Chiave variabile",
+ "Variable keys must be unique.": "Le chiavi variabili devono essere uniche.",
+ "Variable keys must use lowercase snake case.": "Le chiavi variabili devono utilizzare il formato snake case in minuscolo.",
+ "Variable value": "Valore variabile",
+ "Vector Field": "Campo vettoriale",
"Verify Connection": "Verifica connessione",
"Version {{selectedVersion}} of {{totalVersions}}": "Versione {{selectedVersion}} di {{totalVersions}}",
- "Version deleted": "",
- "Vertical Layout": "",
- "Video player": "",
- "View channel": "",
- "View chat": "",
- "View Replies": "Visualizza Risposte",
- "View Result from {{NAME}}": "",
- "View source: {{name}}": "",
- "View source: {{title}}": "",
- "Viewport Pinned": "",
- "Viewport Unpinned": "",
+ "Version deleted": "Versione eliminata",
+ "Vertical Layout": "Layout verticale",
+ "Video player": "Player video",
+ "View channel": "Vedi canale",
+ "View chat": "Vedi chat",
+ "View Replies": "Visualizza risposte",
+ "View Result from {{NAME}}": "Risultato di {{NAME}}",
+ "View source: {{name}}": "Vedi fonte: {{name}}",
+ "View source: {{title}}": "Vedi fonte: {{title}}",
+ "Viewport Pinned": "Blocca finestra",
+ "Viewport Unpinned": "Sblocca finestra",
"Visibility": "Visibilità",
- "Visible": "",
- "Visible to all users": "",
- "Visual": "",
+ "Visible": "Visibile",
+ "Visible to all users": "Visibile a tutti gli utenti",
+ "Visual": "Visuale",
+ "vocabulary for a college entrance exam": "",
"Voice": "Voce",
"Voice Input": "Input vocale",
"Voice mode": "Modalità vocale",
"Wait for the current response to finish before compacting.": "",
"Wait for the current response to finish before forking.": "",
- "Waiting for upload": "",
- "Waiting for upload...": "",
+ "Waiting for upload": "Attesa del caricamento",
+ "Waiting for upload...": "Attesa del caricamento...",
"Warning": "Attenzione",
"Warning:": "Attenzione:",
"Warning: Enabling this will allow users to run scheduled prompts automatically.": "",
@@ -3446,30 +3462,31 @@
"Web API": "API Web",
"Web Search": "Ricerca sul Web",
"Webhook": "",
- "Webhook deleted": "",
- "Webhook Name": "",
- "Webhook saved": "",
- "Webhooks": "",
- "Webpage URLs": "",
+ "Webhook deleted": "Webhook eliminato",
+ "Webhook Name": "Nome webhook",
+ "Webhook saved": "Webhook salvato",
+ "Webhooks": "Webhook",
+ "Webpage URLs": "URL delle pagine web",
"WebUI will make requests to \"{{url}}\"": "WebUI farà richieste a \"{{url}}\"",
"WebUI will make requests to \"{{url}}/api/chat\"": "WebUI farà richieste a \"{{url}}/api/chat\"",
"WebUI will make requests to \"{{url}}/chat/completions\"": "WebUI farà richieste a \"{{url}}/chat/completions\"",
- "Week": "",
- "Week of": "",
- "Weekly": "",
- "Weekly at": "",
- "Welcome to your AI home.": "",
+ "Week": "Settimana",
+ "Week of": "Settimana di",
+ "Weekly": "Settimanale",
+ "Weekly at": "Settimanale alle",
+ "Welcome to your AI home.": "Benvenuto nella tua AI.",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "Cosa stai cercando di ottenere?",
"What are you working on?": "Su cosa stai lavorando?",
- "What is NOT shared:": "",
- "What is shared:": "",
+ "What is NOT shared:": "Cosa NON è condiviso:",
+ "What is shared:": "Cosa è condiviso:",
"What's New in": "Novità in",
"What's on your mind?": "",
- "When": "",
+ "When": "Quando",
"Whisper (Local)": "Whisper (Locale)",
"Who can share to this group": "",
"Why?": "Perché?",
- "Width": "",
+ "Width": "Larghezza",
"Wikipedia": "",
"Won": "Vinto",
"Working Directory": "",
@@ -3515,6 +3532,6 @@
"Your usage stats have been successfully synced.": "",
"YouTube": "Youtube",
"YouTube video player": "",
- "Zoom in": "",
- "Zoom out": ""
+ "Zoom in": "Ingrandisci",
+ "Zoom out": "Riduci"
}
diff --git a/src/lib/i18n/locales/ja-JP/translation.json b/src/lib/i18n/locales/ja-JP/translation.json
index c4399874d7c9..57276b0cdcb2 100644
--- a/src/lib/i18n/locales/ja-JP/translation.json
+++ b/src/lib/i18n/locales/ja-JP/translation.json
@@ -62,6 +62,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "新しいバージョン (v{{LATEST_VERSION}}) が利用可能です。",
"A private conversation between you and selected users": "あなたと選択したユーザーの間でのプライベートな会話",
"a user": "ユーザー",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "オートコンプリートの提案を受け入れる\nプロンプト変数へ移動",
"Access": "アクセス権",
"Access Control": "アクセス権制御",
@@ -334,6 +335,7 @@
"Chat Menu": "チャットメニュー",
"Chat moved successfully": "チャットの移動に成功しました",
"Chat Permissions": "チャットの権限",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "チャットの共有を正常に解除しました。",
"Chat Uploads": "チャットのアップロード",
"Chat Variables": "チャット変数",
@@ -484,6 +486,7 @@
"Could not check for updates": "更新を確認できませんでした",
"Could not load release notes.": "リリースノートを読み込めませんでした。",
"Could not read file.": "ファイルを読み取ることができませんでした",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "お使いの言語が見つかりませんか?",
"CPU": "CPU",
"Create": "作成",
@@ -907,6 +910,8 @@
"Experience": "表示・音声・画像",
"Experimental": "実験的",
"Explain": "説明",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "調査済み",
"Exploring": "調査中",
"Export": "エクスポート",
@@ -1034,6 +1039,7 @@
"Follow up: {{question}}": "追加の質問: {{question}}",
"Followed instructions perfectly": "指示に完璧に従った",
"for placeholders": "プレースホルダー用",
+ "for what to do with my kids' art": "",
"Fork": "新しいチャットに分岐",
"Fork chat": "新しいチャットに分岐",
"Fork the current chat branch into a new chat.": "現在選択している会話の流れを引き継いで、新しいチャットを作成します。",
@@ -1081,6 +1087,8 @@
"Get information on {{name}} in the UI": "UIで{{name}}の情報を得る",
"Get started": "はじめる",
"Get started with {{WEBUI_NAME}}": "{{WEBUI_NAME}}をはじめる",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "グローバル",
"Good Response": "良い応答",
"Google": "Google",
@@ -1106,6 +1114,8 @@
"Height": "高さ",
"Hello, {{name}}": "こんにちは、{{name}} さん",
"Help": "ヘルプ",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "優れたモデルをコミュニティに紹介しましょう",
"Help us translate Open WebUI!": "Open WebUIの翻訳にご協力ください!",
"Hex Color": "16進数の色",
@@ -1136,6 +1146,7 @@
"Identity audit": "ユーザー識別情報の監査",
"Idle only": "アイドル時のみ",
"Idle Timeout": "アイドルタイムアウト",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "画像",
"Image Generation": "画像生成",
"Image Max Compression Size": "画像最大圧縮サイズ",
@@ -1168,7 +1179,6 @@
"Input Key (e.g. text, unet_name, steps)": "入力キー",
"Input needed": "入力が必要です",
"Input Variables": "入力 変数",
- "Insert": "挿入",
"Insert into note": "ノートに挿入",
"Instructions": "指示",
"Integrations": "連携",
@@ -1296,7 +1306,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "同時にダウンロードできるモデルは最大 3 つです。後でもう一度お試しください。",
"May": "5月",
"MBR": "MBR",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "MCPへの対応は実験的で、仕様が頻繁に変わるため、互換性の問題が生じる場合があります。OpenAPI仕様への対応はOpen WebUIチームが直接保守しており、互換性の面でより信頼できる選択肢です。",
"Medium": "中",
"Member removed successfully": "メンバーを正常に削除しました",
@@ -1535,6 +1544,7 @@
"OAuth Server URL": "OAuthサーバーのURL",
"OAuth session disconnected": "OAuthセッションの接続を解除しました",
"October": "10月",
+ "of a website's sticky header": "",
"Off": "オフ",
"Okay, Let's Go!": "OK、始めましょう!",
"OLED Dark": "OLED ダーク",
@@ -1584,7 +1594,6 @@
"OpenAI API Key is required.": "OpenAI API キーが必要です。",
"OpenAI API settings updated": "OpenAI API設定が更新されました",
"OpenAI URL/Key required.": "OpenAI URL/Key が必要です。",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "OpenAPI仕様",
"openapi.json URL or Path": "openapi.json のURLまたはパス",
"optional": "任意",
@@ -1597,6 +1606,7 @@
"out of": "/",
"Output": "出力",
"OUTPUT": "出力",
+ "Overcome procrastination": "",
"Overview": "概要",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "PaddleOCR-vl APIのURLが必要です。",
@@ -3040,6 +3050,8 @@
"Show Files": "ファイルを表示",
"Show Hidden Files": "隠しファイルを表示",
"Show image preview": "画像のプレビューを表示",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "モデルを表示",
"Show more": "さらに表示",
"Show or switch the current model.": "現在のモデルを表示または切り替えます。",
@@ -3152,6 +3164,8 @@
"Task List": "タスクリスト",
"Tasks": "タスク",
"tasks completed": "タスク完了",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "もっと話してください:",
"Temporary": "一時的",
"Temporary Chat": "一時的なチャット",
@@ -3287,6 +3301,7 @@
"Type Hugging Face Resolve (Download) URL": "Hugging Face Resolve (ダウンロード) URL を入力してください",
"Type your answer": "回答を入力",
"Uh-oh! There was an issue with the response.": "レスポンスに問題がありました。",
+ "Unarchive": "",
"Unarchive Chat": "チャットのアーカイブを解除",
"Unassigned": "未割り当て",
"Underline": "下線",
@@ -3395,6 +3410,7 @@
"Visible": "表示",
"Visible to all users": "全ユーザーに表示",
"Visual": "ビジュアル",
+ "vocabulary for a college entrance exam": "",
"Voice": "ボイス",
"Voice Input": "音声入力",
"Voice mode": "音声モード",
@@ -3425,6 +3441,7 @@
"Weekly": "毎週",
"Weekly at": "毎週",
"Welcome to your AI home.": "あなたのAIホームへようこそ。",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "何を達成したいですか?",
"What are you working on?": "何に取り組んでいますか?",
"What is NOT shared:": "共有されないもの:",
diff --git a/src/lib/i18n/locales/ka-GE/translation.json b/src/lib/i18n/locales/ka-GE/translation.json
index f0c45e44609c..405a0840f98b 100644
--- a/src/lib/i18n/locales/ka-GE/translation.json
+++ b/src/lib/i18n/locales/ka-GE/translation.json
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "ხელმისაწვდომია ახალი ვერსია (v{{LATEST_VERSION}}).",
"A private conversation between you and selected users": "",
"a user": "მომხმარებელი",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "",
"Access": "წვდომა",
"Access Control": "წვდომის კონტროლი",
@@ -343,6 +344,7 @@
"Chat Menu": "",
"Chat moved successfully": "ჩატის გადატანა წარმატებულია",
"Chat Permissions": "ჩატის ნებართვები",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "",
"Chat Uploads": "",
"Chat Variables": "",
@@ -494,6 +496,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "შექმნა",
@@ -919,6 +922,8 @@
"Experience": "",
"Experimental": "ექსპერიმენტული",
"Explain": "ახსნა",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "",
"Exploring": "",
"Export": "გატანა",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "",
"Followed instructions perfectly": "ინსტრუქციების ზუსტად მიჰყევით",
"for placeholders": "",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "",
"Get started": "დაიწყეთ",
"Get started with {{WEBUI_NAME}}": "",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "გლობალური",
"Good Response": "კარგი პასუხი",
"Google": "",
@@ -1118,6 +1126,8 @@
"Height": "სიმაღლე",
"Hello, {{name}}": "გამარჯობა, {{name}}",
"Help": "დახმარება",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "",
"Help us translate Open WebUI!": "",
"Hex Color": "თექვსმეტობითი ფერი",
@@ -1148,6 +1158,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "გამოსახულება",
"Image Generation": "გამოსახულების გენერაცია",
"Image Max Compression Size": "სურათის მაქსიმალური შეკუმშვის ზომა",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "",
"Input needed": "",
"Input Variables": "შეყვანის ცვლადები",
- "Insert": "ჩასმა",
"Insert into note": "",
"Instructions": "",
"Integrations": "ინტეგრაციები",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "ერთდროულად მაქსიმუმ 3 მოდელის ჩამოტვირთვაა შესაძლებელია. მოგვიანებით სცადეთ.",
"May": "მაისი",
"MBR": "",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "",
"Medium": "საშუალო",
"Member removed successfully": "",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "ოქტომბერი",
+ "of a website's sticky header": "",
"Off": "გამორთ",
"Okay, Let's Go!": "აბა, წავედით!",
"OLED Dark": "OLED მუქი",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "OpenAI API გასაღები აუცილებელია.",
"OpenAI API settings updated": "OpenAI API-ის პარამეტრები განახლდა",
"OpenAI URL/Key required.": "OpenAI URL/Key აუცილებელია.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "OpenAPI-ის სპეციფიკაცია",
"openapi.json URL or Path": "openapi.json-ის URL ან ბილიკი",
"optional": "",
@@ -1610,6 +1619,7 @@
"out of": "",
"Output": "",
"OUTPUT": "გამოტანა",
+ "Overcome procrastination": "",
"Overview": "მიმოხილვა",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -3056,6 +3066,8 @@
"Show Files": "",
"Show Hidden Files": "",
"Show image preview": "გამოსახულების გადახედვის ჩვენება",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "მოდელის ჩვენება",
"Show more": "",
"Show or switch the current model.": "",
@@ -3169,6 +3181,8 @@
"Task List": "ამოცანების სია",
"Tasks": "ამოცანები",
"tasks completed": "",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "გვითხარით მეტი:",
"Temporary": "",
"Temporary Chat": "დროებითი ჩატი",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "აკრიფეთ HuggingFace-ის ამოხსნის (გადმოწერის) URL",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "",
+ "Unarchive": "",
"Unarchive Chat": "ჩატის ამოარქივება",
"Unassigned": "",
"Underline": "ხაზგასმული",
@@ -3412,6 +3427,7 @@
"Visible": "",
"Visible to all users": "",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "ხმა",
"Voice Input": "ხმოვანი შეყვანა",
"Voice mode": "ხმის რეჟიმი",
@@ -3442,6 +3458,7 @@
"Weekly": "",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "რას ცდილობთ, მიაღწიოთ?",
"What are you working on?": "რაზე მუშაობთ?",
"What is NOT shared:": "",
diff --git a/src/lib/i18n/locales/kab-DZ/translation.json b/src/lib/i18n/locales/kab-DZ/translation.json
index 83afed3fd409..1be43e693237 100644
--- a/src/lib/i18n/locales/kab-DZ/translation.json
+++ b/src/lib/i18n/locales/kab-DZ/translation.json
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Lqem amaynut n (v{{LATEST_VERSION}}), yella akka tura.",
"A private conversation between you and selected users": "",
"a user": "aseqdac",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "",
"Access": "Addaf",
"Access Control": "Asenqed n unekcum",
@@ -84,7 +85,7 @@
"Accurate information": "Talɣut tusdidt",
"Action": "Tigawt",
"Actions": "Tigawin",
- "Activate this command by typing \"/{{COMMAND}}\" to chat input.": "Xdem lameṛ-a s tira n \"/{COMMAND}}\" akken ad tqeṣṣreḍ asekcem.",
+ "Activate this command by typing \"/{{COMMAND}}\" to chat input.": "Xdem lameṛ-a s tira n \"/{{COMMAND}}\" akken ad tqeṣṣreḍ asekcem.",
"Active": "Urmid",
"Active Users": "Iseqdacen urmiden",
"Activity": "",
@@ -343,6 +344,7 @@
"Chat Menu": "",
"Chat moved successfully": "Yettwankez udiwenni akken iwata",
"Chat Permissions": "Isumar n yidiwenniyen",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "",
"Chat Uploads": "",
"Chat Variables": "",
@@ -494,6 +496,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "Snulfu-d",
@@ -919,6 +922,8 @@
"Experience": "",
"Experimental": "Armitan",
"Explain": "Segzi",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "",
"Exploring": "",
"Export": "Asifeḍ",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "",
"Followed instructions perfectly": "Yeḍfeṛ iwellihen akken iwatan",
"for placeholders": "",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "Awi-d tilɣa ɣef {{name}} deg UI",
"Get started": "Aha bdu tura",
"Get started with {{WEBUI_NAME}}": "Bdu s {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Amatu",
"Good Response": "Tiririt yelhan",
"Google": "",
@@ -1118,6 +1126,8 @@
"Height": "Teɣzi",
"Hello, {{name}}": "Azul a {{name}}",
"Help": "Tallalt",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "",
"Help us translate Open WebUI!": "",
"Hex Color": "Ini Hex",
@@ -1148,6 +1158,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Tugna",
"Image Generation": "Asirew n tugniwin",
"Image Max Compression Size": "Teɣzi n tugna Max Compression",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "",
"Input needed": "",
"Input Variables": "Timuttiyin n unekcum",
- "Insert": "Ger",
"Insert into note": "",
"Instructions": "",
"Integrations": "Timsidaf",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Maximum n 3 n tmudmin yezmer ad d-yettwasider seg-a ɣer da. Ttxil-k, ɛreḍ tikkelt niḍen ticki.",
"May": "Mayyu",
"MBR": "",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "",
"Medium": "",
"Member removed successfully": "",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "Tubeṛ",
+ "of a website's sticky header": "",
"Off": "Yensa",
"Okay, Let's Go!": "Yerbaḥ, aha yya!",
"OLED Dark": "Aberkan OLED",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "Tasarut API n OpenAI tettwasra.",
"OpenAI API settings updated": "Iɣewwaṛen n API OpenAI",
"OpenAI URL/Key required.": "URL/Tasarut OpenAI tettwasra.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "",
"openapi.json URL or Path": "URL n openapi.json neɣ abrid-is",
"optional": "",
@@ -1610,6 +1619,7 @@
"out of": "",
"Output": "",
"OUTPUT": "TUFFƔA",
+ "Overcome procrastination": "",
"Overview": "Tamuɣli s umata",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -3056,6 +3066,8 @@
"Show Files": "",
"Show Hidden Files": "",
"Show image preview": "Sken taskant n tugna",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Sken-d tamudemt",
"Show more": "",
"Show or switch the current model.": "",
@@ -3169,6 +3181,8 @@
"Task List": "Tabdart n temsekra",
"Tasks": "Timsekra",
"tasks completed": "",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Ini-aɣ-d ugar:",
"Temporary": "",
"Temporary Chat": "Asqerdec akudan",
@@ -3213,10 +3227,10 @@
"This option controls how long the model will stay loaded into memory following the request (default: 5m)": "",
"This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "",
"This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "",
- "This response was generated by \"{{model}}\"": "Tiririt-a teslal-itt-id \"{model}}\"",
+ "This response was generated by \"{{model}}\"": "Tiririt-a teslal-itt-id \"{{model}}\"",
"This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "",
"This will delete": "Aya ad yekkes",
- "This will delete {{NAME}} and all its contents.": "Aya ad yekkes {NAME}} akked akk ayen yellan deg-s.",
+ "This will delete {{NAME}} and all its contents.": "Aya ad yekkes {{NAME}} akked akk ayen yellan deg-s.",
"This will delete all models including custom models and cannot be undone.": "Aya ad yekkes akk timudmin gar-asent timudmin tudmawanin yerna ur yezmir yiwen ad tent-id-yerr.",
"This will delete the cached model and cannot be undone.": "",
"This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "Anaw n usefres n wudem amezwer (Download) URL",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "Uh! Tella-d tuccḍa akked tririt-nni.",
+ "Unarchive": "",
"Unarchive Chat": "",
"Unassigned": "",
"Underline": "Derrer",
@@ -3412,6 +3427,7 @@
"Visible": "",
"Visible to all users": "",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "Taɣect",
"Voice Input": "Anekcam s taɣect",
"Voice mode": "Askar n taɣect",
@@ -3434,14 +3450,15 @@
"Webhook saved": "",
"Webhooks": "",
"Webpage URLs": "",
- "WebUI will make requests to \"{{url}}\"": "WebUI ad ssutreɣ \"{url}}\"",
- "WebUI will make requests to \"{{url}}/api/chat\"": "WebUI ad ssutreɣ i \"{url}}/api/chat\"",
- "WebUI will make requests to \"{{url}}/chat/completions\"": "WebUI ad ssutreɣ i \"{url}}/chat/completions\"",
+ "WebUI will make requests to \"{{url}}\"": "WebUI ad ssutreɣ \"{{url}}\"",
+ "WebUI will make requests to \"{{url}}/api/chat\"": "WebUI ad ssutreɣ i \"{{url}}/api/chat\"",
+ "WebUI will make requests to \"{{url}}/chat/completions\"": "WebUI ad ssutreɣ i \"{{url}}/chat/completions\"",
"Week": "",
"Week of": "",
"Weekly": "",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "Sanda ay tettarmed ad tessiwḍed?",
"What are you working on?": "Ɣef wacu ay la tettmahaled?",
"What is NOT shared:": "",
diff --git a/src/lib/i18n/locales/ko-KR/translation.json b/src/lib/i18n/locales/ko-KR/translation.json
index 5782c2525f14..b04d1f2c79cd 100644
--- a/src/lib/i18n/locales/ko-KR/translation.json
+++ b/src/lib/i18n/locales/ko-KR/translation.json
@@ -63,6 +63,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "새로운 버전 (v{{LATEST_VERSION}})을 사용할 수 있습니다.",
"A private conversation between you and selected users": "나와 선택한 사용자 간의 비공개 대화",
"a user": "사용자",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "자동완성 생성 수락\n프롬프트 변수로 이동",
"Access": "접근",
"Access Control": "접근 제어",
@@ -335,6 +336,7 @@
"Chat Menu": "",
"Chat moved successfully": "채팅 이동 성공",
"Chat Permissions": "채팅 권한",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "채팅 공유 해제 성공",
"Chat Uploads": "",
"Chat Variables": "",
@@ -485,6 +487,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "파일을 읽을 수 없습니다.",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "CPU",
"Create": "생성",
@@ -908,6 +911,8 @@
"Experience": "",
"Experimental": "실험적",
"Explain": "설명",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "탐색 완료",
"Exploring": "탐색 중",
"Export": "내보내기",
@@ -1035,6 +1040,7 @@
"Follow up: {{question}}": "후속 질문: {{question}}",
"Followed instructions perfectly": "지시를 완벽히 수행함",
"for placeholders": "플레이스홀더용",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1082,6 +1088,8 @@
"Get information on {{name}} in the UI": "UI에서 {{name}} 정보 확인",
"Get started": "시작하기",
"Get started with {{WEBUI_NAME}}": "{{WEBUI_NAME}} 시작하기",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "글로벌",
"Good Response": "좋은 응답",
"Google": "Google",
@@ -1107,6 +1115,8 @@
"Height": "높이",
"Hello, {{name}}": "안녕하세요, {{name}}",
"Help": "도움말",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "커뮤니티가 훌륭한 모델을 발견하도록 도와주세요",
"Help us translate Open WebUI!": "",
"Hex Color": "Hex 색상",
@@ -1137,6 +1147,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "Idle 시간 초과",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "이미지",
"Image Generation": "이미지 생성",
"Image Max Compression Size": "이미지 최대 압축 크기",
@@ -1169,7 +1180,6 @@
"Input Key (e.g. text, unet_name, steps)": "입력 키 (예: text, unet_name, steps)",
"Input needed": "",
"Input Variables": "변수 입력",
- "Insert": "삽입",
"Insert into note": "",
"Instructions": "지침",
"Integrations": "통합",
@@ -1297,7 +1307,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "최대 3개의 모델을 동시에 다운로드할 수 있습니다. 나중에 다시 시도하세요.",
"May": "5월",
"MBR": "MBR",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "MCP 지원은 실험적이며 명세가 자주 변경되므로, 호환성 문제가 발생할 수 있습니다. Open WebUI 팀이 OpenAPI 명세 지원을 직접 유지·관리하고 있어, 호환성 측면에서는 더 신뢰할 수 있는 선택입니다.",
"Medium": "중간",
"Member removed successfully": "멤버 삭제에 성공했습니다",
@@ -1536,6 +1545,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "10월",
+ "of a website's sticky header": "",
"Off": "끄기",
"Okay, Let's Go!": "좋아요, 시작합시다!",
"OLED Dark": "OLED 다크",
@@ -1585,7 +1595,6 @@
"OpenAI API Key is required.": "OpenAI API 키가 필요합니다.",
"OpenAI API settings updated": "OpenAI API 설정이 업데이트되었습니다.",
"OpenAI URL/Key required.": "OpenAI URL/키가 필요합니다.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "OpenAPI 사양",
"openapi.json URL or Path": "openapi.json URL 또는 경로",
"optional": "선택 사항",
@@ -1598,6 +1607,7 @@
"out of": "의",
"Output": "출력",
"OUTPUT": "출력",
+ "Overcome procrastination": "",
"Overview": "개요",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -3042,6 +3052,8 @@
"Show Files": "파일 보기",
"Show Hidden Files": "",
"Show image preview": "이미지 미리보기",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "모델 보기",
"Show more": "더 보기",
"Show or switch the current model.": "",
@@ -3155,6 +3167,8 @@
"Task List": "작업 목록",
"Tasks": "작업",
"tasks completed": "작업 완료",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "더 알려주세요:",
"Temporary": "",
"Temporary Chat": "임시 채팅",
@@ -3290,6 +3304,7 @@
"Type Hugging Face Resolve (Download) URL": "Hugging Face Resolve (다운로드) URL 입력",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "이런! 응답에 문제가 발생했습니다.",
+ "Unarchive": "",
"Unarchive Chat": "채팅 보관 해제",
"Unassigned": "",
"Underline": "밑줄",
@@ -3398,6 +3413,7 @@
"Visible": "공개",
"Visible to all users": "모든 사용자에게 공개",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "음성",
"Voice Input": "음성 입력",
"Voice mode": "음성 모드 사용",
@@ -3428,6 +3444,7 @@
"Weekly": "주간",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "무엇을 성취하고 싶으신가요?",
"What are you working on?": "어떤 작업을 하고 계신가요?",
"What is NOT shared:": "공유되지 않는 것:",
diff --git a/src/lib/i18n/locales/lt-LT/translation.json b/src/lib/i18n/locales/lt-LT/translation.json
index 492b353c5a56..a8bc2c5d5736 100644
--- a/src/lib/i18n/locales/lt-LT/translation.json
+++ b/src/lib/i18n/locales/lt-LT/translation.json
@@ -89,6 +89,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "",
"A private conversation between you and selected users": "",
"a user": "naudotojas",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "",
"Access": "",
"Access Control": "",
@@ -361,6 +362,7 @@
"Chat Menu": "",
"Chat moved successfully": "",
"Chat Permissions": "",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "",
"Chat Uploads": "",
"Chat Variables": "",
@@ -514,6 +516,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "",
@@ -943,6 +946,8 @@
"Experience": "",
"Experimental": "Eksperimentinis",
"Explain": "",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "",
"Exploring": "",
"Export": "Eksportuoti",
@@ -1070,6 +1075,7 @@
"Follow up: {{question}}": "",
"Followed instructions perfectly": "Tobulai sekė instrukcijas",
"for placeholders": "",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1117,6 +1123,8 @@
"Get information on {{name}} in the UI": "",
"Get started": "",
"Get started with {{WEBUI_NAME}}": "",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Globalu",
"Good Response": "Geras atsakymas",
"Google": "",
@@ -1142,6 +1150,8 @@
"Height": "",
"Hello, {{name}}": "Sveiki, {{name}}",
"Help": "Pagalba",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "",
"Help us translate Open WebUI!": "",
"Hex Color": "",
@@ -1172,6 +1182,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "",
"Image Generation": "",
"Image Max Compression Size": "",
@@ -1204,7 +1215,6 @@
"Input Key (e.g. text, unet_name, steps)": "",
"Input needed": "",
"Input Variables": "",
- "Insert": "",
"Insert into note": "",
"Instructions": "",
"Integrations": "",
@@ -1335,7 +1345,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Daugiausiai trys modeliai gali būti parsisiunčiami vienu metu.",
"May": "gegužė",
"MBR": "",
- "MCP": "",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "",
"Medium": "",
"Member removed successfully": "",
@@ -1574,6 +1583,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "spalis",
+ "of a website's sticky header": "",
"Off": "Išjungta",
"Okay, Let's Go!": "Gerai, važiuojam!",
"OLED Dark": "OLED tamsus",
@@ -1623,7 +1633,6 @@
"OpenAI API Key is required.": "OpenAI API raktas būtinas.",
"OpenAI API settings updated": "",
"OpenAI URL/Key required.": "OpenAI API nuoroda ir raktas būtini",
- "OpenAPI": "",
"OpenAPI Spec": "",
"openapi.json URL or Path": "",
"optional": "",
@@ -1636,6 +1645,7 @@
"out of": "",
"Output": "",
"OUTPUT": "",
+ "Overcome procrastination": "",
"Overview": "",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -3088,6 +3098,8 @@
"Show Files": "",
"Show Hidden Files": "",
"Show image preview": "",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "",
"Show more": "",
"Show or switch the current model.": "",
@@ -3203,6 +3215,8 @@
"Task List": "",
"Tasks": "",
"tasks completed": "",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Papasakokite daugiau",
"Temporary": "",
"Temporary Chat": "",
@@ -3338,6 +3352,7 @@
"Type Hugging Face Resolve (Download) URL": "Įveskite Hugging Face Resolve nuorodą",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "",
+ "Unarchive": "",
"Unarchive Chat": "",
"Unassigned": "",
"Underline": "",
@@ -3446,6 +3461,7 @@
"Visible": "",
"Visible to all users": "",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "Balsas",
"Voice Input": "",
"Voice mode": "",
@@ -3476,6 +3492,7 @@
"Weekly": "",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "",
"What are you working on?": "",
"What is NOT shared:": "",
diff --git a/src/lib/i18n/locales/lv-LV/translation.json b/src/lib/i18n/locales/lv-LV/translation.json
index 4fce7f993cb7..28ddfe71ff7d 100644
--- a/src/lib/i18n/locales/lv-LV/translation.json
+++ b/src/lib/i18n/locales/lv-LV/translation.json
@@ -80,6 +80,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Ir pieejama jauna versija (v{{LATEST_VERSION}}).",
"A private conversation between you and selected users": "Privāta saruna starp jums un izvēlētajiem lietotājiem",
"a user": "lietotājs",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Pieņemt automātisko pabeigšanu\nPāriet uz uzvednes mainīgo",
"Access": "Piekļuve",
"Access Control": "Piekļuves kontrole",
@@ -352,6 +353,7 @@
"Chat Menu": "",
"Chat moved successfully": "Tērzēšana veiksmīgi pārvietota",
"Chat Permissions": "Tērzēšanas atļaujas",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "",
"Chat Uploads": "",
"Chat Variables": "",
@@ -504,6 +506,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "Izveidot",
@@ -931,6 +934,8 @@
"Experience": "",
"Experimental": "Eksperimentāls",
"Explain": "Paskaidrot",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "",
"Exploring": "",
"Export": "Eksportēt",
@@ -1058,6 +1063,7 @@
"Follow up: {{question}}": "",
"Followed instructions perfectly": "Pilnīgi ievēroja norādījumus",
"for placeholders": "",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1105,6 +1111,8 @@
"Get information on {{name}} in the UI": "Iegūt informāciju par {{name}} saskarnē",
"Get started": "Sākt darbu",
"Get started with {{WEBUI_NAME}}": "Sāciet ar {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Globāls",
"Good Response": "Laba atbilde",
"Google": "Google",
@@ -1130,6 +1138,8 @@
"Height": "Augstums",
"Hello, {{name}}": "Sveiki, {{name}}",
"Help": "Palīdzība",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "",
"Help us translate Open WebUI!": "",
"Hex Color": "Hex krāsa",
@@ -1160,6 +1170,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Attēls",
"Image Generation": "Attēlu ģenerēšana",
"Image Max Compression Size": "Attēla maksimālais saspiešanas izmērs",
@@ -1192,7 +1203,6 @@
"Input Key (e.g. text, unet_name, steps)": "Ievades atslēga (piem., text, unet_name, steps)",
"Input needed": "",
"Input Variables": "Ievades mainīgie",
- "Insert": "Ievietot",
"Insert into note": "",
"Instructions": "",
"Integrations": "Integrācijas",
@@ -1322,7 +1332,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Vienlaicīgi var lejupielādēt ne vairāk kā 3 modeļus. Lūdzu, mēģiniet vēlāk.",
"May": "Maijs",
"MBR": "MBR",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "MCP atbalsts ir eksperimentāls un tā specifikācija bieži mainās, kas var novest pie nesaderības. OpenAPI specifikācijas atbalstu tieši uztur Open WebUI komanda, padarot to par uzticamāku opciju saderībai.",
"Medium": "Vidējs",
"Member removed successfully": "Dalībnieks veiksmīgi noņemts",
@@ -1561,6 +1570,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "Oktobris",
+ "of a website's sticky header": "",
"Off": "Izslēgts",
"Okay, Let's Go!": "Labi, ejam!",
"OLED Dark": "OLED tumšs",
@@ -1610,7 +1620,6 @@
"OpenAI API Key is required.": "OpenAI API atslēga ir nepieciešama.",
"OpenAI API settings updated": "OpenAI API iestatījumi atjaunināti",
"OpenAI URL/Key required.": "Nepieciešams OpenAI URL/atslēga.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "OpenAPI specifikācija",
"openapi.json URL or Path": "openapi.json URL vai ceļš",
"optional": "",
@@ -1623,6 +1632,7 @@
"out of": "",
"Output": "",
"OUTPUT": "IZVADE",
+ "Overcome procrastination": "",
"Overview": "Pārskats",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -3072,6 +3082,8 @@
"Show Files": "Rādīt failus",
"Show Hidden Files": "",
"Show image preview": "Rādīt attēla priekšskatījumu",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Rādīt modeli",
"Show more": "",
"Show or switch the current model.": "",
@@ -3186,6 +3198,8 @@
"Task List": "Uzdevumu saraksts",
"Tasks": "Uzdevumi",
"tasks completed": "",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Pastāstiet vairāk:",
"Temporary": "",
"Temporary Chat": "Pagaidu tērzēšana",
@@ -3321,6 +3335,7 @@
"Type Hugging Face Resolve (Download) URL": "Ievadiet Hugging Face Resolve (lejupielādes) URL",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "Ak vai! Radās problēma ar atbildi.",
+ "Unarchive": "",
"Unarchive Chat": "Atarhivēt tērzēšanu",
"Unassigned": "",
"Underline": "Pasvītrojums",
@@ -3429,6 +3444,7 @@
"Visible": "",
"Visible to all users": "Redzams visiem lietotājiem",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "Balss",
"Voice Input": "Balss ievade",
"Voice mode": "Balss režīms",
@@ -3459,6 +3475,7 @@
"Weekly": "",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "Ko jūs mēģināt sasniegt?",
"What are you working on?": "Pie kā jūs strādājat?",
"What is NOT shared:": "Kas NETIEK kopīgots:",
diff --git a/src/lib/i18n/locales/ms-MY/translation.json b/src/lib/i18n/locales/ms-MY/translation.json
index 8e996b72b91c..45302adc7ec5 100644
--- a/src/lib/i18n/locales/ms-MY/translation.json
+++ b/src/lib/i18n/locales/ms-MY/translation.json
@@ -62,6 +62,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Versi baharu (v{{LATEST_VERSION}}) kini tersedia.",
"A private conversation between you and selected users": "Perbualan peribadi antara anda dan pengguna terpilih",
"a user": "seorang pengguna",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Terima Penjanaan Autolengkap",
"Access": "Akses",
"Access Control": "Kawalan Akses",
@@ -334,6 +335,7 @@
"Chat Menu": "",
"Chat moved successfully": "Perbualan telah dipindahkan dengan berjaya",
"Chat Permissions": "Kebenaran Perbualan",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "Perbualan berjaya dinyahkongsi.",
"Chat Uploads": "",
"Chat Variables": "",
@@ -484,6 +486,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "Tidak dapat membaca fail.",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "CPU",
"Create": "Buat",
@@ -907,6 +910,8 @@
"Experience": "",
"Experimental": "Percubaan",
"Explain": "Jelaskan",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "Sudah diterokai",
"Exploring": "Sedang meneroka",
"Export": "Eksport",
@@ -1034,6 +1039,7 @@
"Follow up: {{question}}": "Susulan: {{question}}",
"Followed instructions perfectly": "Mengikut arahan dengan sempurna",
"for placeholders": "untuk pemegang tempat",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1081,6 +1087,8 @@
"Get information on {{name}} in the UI": "Dapatkan maklumat tentang {{name}} dalam UI",
"Get started": "Mula",
"Get started with {{WEBUI_NAME}}": "Mula dengan {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Global",
"Good Response": "Respons Baik",
"Google": "Google",
@@ -1106,6 +1114,8 @@
"Height": "Ketinggian",
"Hello, {{name}}": "Hello, {{name}}",
"Help": "Bantuan",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "Bantu komuniti menemui model-model hebat",
"Help us translate Open WebUI!": "",
"Hex Color": "Warna Heks",
@@ -1136,6 +1146,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "Masa Tamat Melahu",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Imej",
"Image Generation": "Penjanaan Imej",
"Image Max Compression Size": "Saiz Mampatan Imej Maksimum",
@@ -1168,7 +1179,6 @@
"Input Key (e.g. text, unet_name, steps)": "Kunci Input (cth: text, unet_name, steps)",
"Input needed": "",
"Input Variables": "Pembolehubah Input",
- "Insert": "Sisipkan",
"Insert into note": "",
"Instructions": "Arahan",
"Integrations": "Integrasi",
@@ -1296,7 +1306,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Maksimum 3 model boleh dimuat turun serentak. Sila cuba sebentar lagi.",
"May": "Mei",
"MBR": "MBR",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "Sokongan MCP adalah eksperimental dan spesifikasinya kerap berubah, yang boleh menyebabkan ketidakserasian. Sokongan spesifikasi OpenAPI dikekalkan secara langsung oleh pasukan Open WebUI, menjadikannya pilihan yang lebih boleh dipercayai untuk keserasian.",
"Medium": "Sederhana",
"Member removed successfully": "Ahli telah dikeluarkan dengan berjaya",
@@ -1535,6 +1544,7 @@
"OAuth Server URL": "URL Pelayan OAuth",
"OAuth session disconnected": "Sesi OAuth diputuskan",
"October": "Oktober",
+ "of a website's sticky header": "",
"Off": "Mati",
"Okay, Let's Go!": "Baiklah, Jom!",
"OLED Dark": "OLED Gelap",
@@ -1584,7 +1594,6 @@
"OpenAI API Key is required.": "Kekunci API OpenAI diperlukan",
"OpenAI API settings updated": "Tetapan API OpenAI telah dikemas kini",
"OpenAI URL/Key required.": "URL/Kekunci OpenAI diperlukan",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "Spesifikasi OpenAPI",
"openapi.json URL or Path": "URL atau Laluan openapi.json",
"optional": "pilihan",
@@ -1597,6 +1606,7 @@
"out of": "daripada",
"Output": "Output",
"OUTPUT": "OUTPUT",
+ "Overcome procrastination": "",
"Overview": "Gambaran Keseluruhan",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "URL API PaddleOCR-vl diperlukan.",
@@ -3040,6 +3050,8 @@
"Show Files": "Paparkan Fail",
"Show Hidden Files": "",
"Show image preview": "Tunjukkan pratonton imej",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Tunjukkan Model",
"Show more": "",
"Show or switch the current model.": "",
@@ -3152,6 +3164,8 @@
"Task List": "Senarai Tugas",
"Tasks": "Tugas",
"tasks completed": "tugas selesai",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Beritahu kami lebih lanjut",
"Temporary": "",
"Temporary Chat": "Perbualan Sementara",
@@ -3287,6 +3301,7 @@
"Type Hugging Face Resolve (Download) URL": "Taip URL 'Hugging Face Resolve (Download)'",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "Alamak! Ada masalah dengan respons.",
+ "Unarchive": "",
"Unarchive Chat": "Nyaharkibkan Perbualan",
"Unassigned": "",
"Underline": "Garis Bawah",
@@ -3395,6 +3410,7 @@
"Visible": "Boleh Dilihat",
"Visible to all users": "Kelihatan kepada semua pengguna",
"Visual": "Visual",
+ "vocabulary for a college entrance exam": "",
"Voice": "Suara",
"Voice Input": "Input Suara",
"Voice mode": "Mod Suara",
@@ -3425,6 +3441,7 @@
"Weekly": "Mingguan",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "Apa yang ingin anda capai?",
"What are you working on?": "Apa yang sedang anda kerjakan?",
"What is NOT shared:": "Apa yang TIDAK dikongsi:",
diff --git a/src/lib/i18n/locales/nb-NO/translation.json b/src/lib/i18n/locales/nb-NO/translation.json
index 6086f50090ce..adafd83a86d0 100644
--- a/src/lib/i18n/locales/nb-NO/translation.json
+++ b/src/lib/i18n/locales/nb-NO/translation.json
@@ -5,7 +5,7 @@
"[Last] dddd [at] h:mm A": "",
"[Today at] h:mm A": "",
"[Yesterday at] h:mm A": "",
- "{{ models }}": "{{ modeller }}",
+ "{{ models }}": "{{ models }}",
"{{count}} added lines_one": "",
"{{count}} added lines_other": "",
"{{COUNT}} Available Skills": "",
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "En ny versjon (v{{LATEST_VERSION}}) er nå tilgjengelig.",
"A private conversation between you and selected users": "",
"a user": "en bruker",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "",
"Access": "Tilgang",
"Access Control": "Tilgangskontroll",
@@ -343,6 +344,7 @@
"Chat Menu": "",
"Chat moved successfully": "",
"Chat Permissions": "Tillatelser for chat",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "",
"Chat Uploads": "",
"Chat Variables": "",
@@ -494,6 +496,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "Opprett",
@@ -919,6 +922,8 @@
"Experience": "",
"Experimental": "Eksperimentell",
"Explain": "",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "",
"Exploring": "",
"Export": "Eksporter",
@@ -1016,7 +1021,7 @@
"File not found.": "Finner ikke filen.",
"File removed successfully.": "Filen er fjernet.",
"File renamed.": "",
- "File size should not exceed {{maxSize}} MB.": "Filstørrelser kan ikke være på mer enn {{maxSize} MB",
+ "File size should not exceed {{maxSize}} MB.": "Filstørrelser kan ikke være på mer enn {{maxSize}} MB",
"File uploaded successfully": "Filen er lastet opp",
"Filename": "",
"Filename matches": "",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "",
"Followed instructions perfectly": "Fulgte instruksjonene perfekt",
"for placeholders": "",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "",
"Get started": "Kom i gang",
"Get started with {{WEBUI_NAME}}": "Kom i gang med {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Globalt",
"Good Response": "Godt svar",
"Google": "",
@@ -1118,6 +1126,8 @@
"Height": "",
"Hello, {{name}}": "Hei, {{name}}!",
"Help": "Hjelp",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "",
"Help us translate Open WebUI!": "",
"Hex Color": "Hex-farge",
@@ -1148,6 +1158,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Bilde",
"Image Generation": "Bildegenering",
"Image Max Compression Size": "Maks komprimeringsstørrelse for bilder",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "",
"Input needed": "",
"Input Variables": "",
- "Insert": "",
"Insert into note": "",
"Instructions": "",
"Integrations": "",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Maksimalt tre modeller kan lastes ned samtidig. Prøv igjen senere.",
"May": "mai",
"MBR": "",
- "MCP": "",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "",
"Medium": "",
"Member removed successfully": "",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "oktober",
+ "of a website's sticky header": "",
"Off": "Av",
"Okay, Let's Go!": "OK, kjør på!",
"OLED Dark": "OLED mørk",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "API-nøkkel for OpenAI kreves.",
"OpenAI API settings updated": "API-innstillinger for OpenAI er oppdatert",
"OpenAI URL/Key required.": "URL/nøkkel for OpenAI kreves.",
- "OpenAPI": "",
"OpenAPI Spec": "",
"openapi.json URL or Path": "",
"optional": "",
@@ -1610,6 +1619,7 @@
"out of": "",
"Output": "",
"OUTPUT": "UTDATA",
+ "Overcome procrastination": "",
"Overview": "Oversikt",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -3056,6 +3066,8 @@
"Show Files": "",
"Show Hidden Files": "",
"Show image preview": "",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "",
"Show more": "",
"Show or switch the current model.": "",
@@ -3169,6 +3181,8 @@
"Task List": "",
"Tasks": "Oppgaver",
"tasks completed": "",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Fortell oss mer:",
"Temporary": "",
"Temporary Chat": "Midlertidig chat",
@@ -3213,7 +3227,7 @@
"This option controls how long the model will stay loaded into memory following the request (default: 5m)": "",
"This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "",
"This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "",
- "This response was generated by \"{{model}}\"": "Dette svaret er generert av \"{{modell}}\"",
+ "This response was generated by \"{{model}}\"": "Dette svaret er generert av \"{{model}}\"",
"This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "",
"This will delete": "Dette sletter",
"This will delete {{NAME}} and all its contents.": "Dette sletter {{NAME}} og alt innholdet.",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "Angi nedlastings-Resolve-URL for Hugging Face",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "Oi! Det oppstod et problem med svaret.",
+ "Unarchive": "",
"Unarchive Chat": "Opphev arkivering av chat",
"Unassigned": "",
"Underline": "",
@@ -3412,6 +3427,7 @@
"Visible": "",
"Visible to all users": "",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "Stemme",
"Voice Input": "Taleinndata",
"Voice mode": "",
@@ -3442,6 +3458,7 @@
"Weekly": "",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "Hva prøver du å oppnå?",
"What are you working on?": "Hva jobber du på nå?",
"What is NOT shared:": "",
diff --git a/src/lib/i18n/locales/nl-NL/translation.json b/src/lib/i18n/locales/nl-NL/translation.json
index b08388821d02..50453e089f6b 100644
--- a/src/lib/i18n/locales/nl-NL/translation.json
+++ b/src/lib/i18n/locales/nl-NL/translation.json
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Een nieuwe versie (v{{LATEST_VERSION}}) is nu beschikbaar",
"A private conversation between you and selected users": "Een privégesprek tussen jou en geselecteerde gebruikers",
"a user": "een gebruiker",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Accepteer automatische aanvulling\nGa naar promptvariabele",
"Access": "Toegang",
"Access Control": "Toegangsbeheer",
@@ -343,6 +344,7 @@
"Chat Menu": "Chatmenu",
"Chat moved successfully": "Chat succesvol verplaatst",
"Chat Permissions": "Chattoestemmingen",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "Chatdeling succesvol opgeheven.",
"Chat Uploads": "Bestanden geüpload naar de chat",
"Chat Variables": "Chatvariabelen",
@@ -494,6 +496,7 @@
"Could not check for updates": "Kon niet op updates controleren",
"Could not load release notes.": "Kon de release-opmerkingen niet laden.",
"Could not read file.": "Kon bestand niet lezen.",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "Kun je jouw taal niet vinden?",
"CPU": "CPU",
"Create": "Aanmaken",
@@ -919,6 +922,8 @@
"Experience": "Gebruikerservaring",
"Experimental": "Experimenteel",
"Explain": "Leg uit",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "Verkend",
"Exploring": "Verkennen",
"Export": "Exporteren",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "Vervolg: {{question}}",
"Followed instructions perfectly": "Volgde instructies perfect",
"for placeholders": "voor placeholders",
+ "for what to do with my kids' art": "",
"Fork": "Vertakken",
"Fork chat": "Chat vertakken",
"Fork the current chat branch into a new chat.": "Een nieuwe chat maken vanuit de huidige chattak.",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "Haal informatie op over {{name}} in de UI",
"Get started": "Begin",
"Get started with {{WEBUI_NAME}}": "Begin met {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Globaal",
"Good Response": "Goed antwoord",
"Google": "Google",
@@ -1118,6 +1126,8 @@
"Height": "Hoogte",
"Hello, {{name}}": "Hallo, {{name}}",
"Help": "Help",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "Help de community geweldige modellen te ontdekken",
"Help us translate Open WebUI!": "Help ons Open WebUI te vertalen!",
"Hex Color": "Hex-kleur",
@@ -1148,6 +1158,7 @@
"Identity audit": "Identiteitscontrole",
"Idle only": "Alleen bij inactiviteit",
"Idle Timeout": "Inactiviteitstime-out",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Afbeelding",
"Image Generation": "Afbeeldingsgeneratie",
"Image Max Compression Size": "Maximale afbeeldingscompressiegrootte",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "Invoersleutel (bijv. text, unet_name, steps)",
"Input needed": "Invoer vereist",
"Input Variables": "Invoervariabelen",
- "Insert": "Invoegen",
"Insert into note": "Invoegen in aantekening",
"Instructions": "Instructies",
"Integrations": "Integraties",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Maximaal 3 modellen kunnen tegelijkertijd worden gedownload. Probeer het later opnieuw.",
"May": "Mei",
"MBR": "MBR",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "MCP-ondersteuning is experimenteel en de specificatie verandert vaak, wat tot incompatibiliteiten kan leiden. Ondersteuning voor de OpenAPI-specificatie wordt direct onderhouden door het Open WebUI-team, waardoor dit de betrouwbaardere optie voor compatibiliteit is.",
"Medium": "Gemiddeld",
"Member removed successfully": "Lid succesvol verwijderd",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "OAuth-server-URL",
"OAuth session disconnected": "OAuth-sessie verbroken",
"October": "oktober",
+ "of a website's sticky header": "",
"Off": "Uit",
"Okay, Let's Go!": "Oké, laten we gaan!",
"OLED Dark": "OLED Donker",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "OpenAI API-sleutel is verplicht",
"OpenAI API settings updated": "OpenAI API-instellingen bijgewerkt",
"OpenAI URL/Key required.": "OpenAI URL/Sleutel vereist.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "OpenAPI-specificatie",
"openapi.json URL or Path": "openapi.json-URL of pad",
"optional": "optioneel",
@@ -1610,6 +1619,7 @@
"out of": "van de",
"Output": "Uitvoer",
"OUTPUT": "UITVOER",
+ "Overcome procrastination": "",
"Overview": "Overzicht",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "API-URL voor PaddleOCR-vl is verplicht.",
@@ -3056,6 +3066,8 @@
"Show Files": "Bestanden tonen",
"Show Hidden Files": "Verborgen bestanden tonen",
"Show image preview": "Afbeeldingsvoorvertoning tonen",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Toon model",
"Show more": "Meer tonen",
"Show or switch the current model.": "Toon het huidige model of schakel over naar een ander model.",
@@ -3169,6 +3181,8 @@
"Task List": "Takenlijst",
"Tasks": "Taken",
"tasks completed": "taken voltooid",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Vertel ons meer:",
"Temporary": "Tijdelijk",
"Temporary Chat": "Tijdelijke chat",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "Type Hugging Face Resolve (Download) URL",
"Type your answer": "Typ je antwoord",
"Uh-oh! There was an issue with the response.": "Oh-oh! Er was een probleem met het antwoord.",
+ "Unarchive": "",
"Unarchive Chat": "Onarchiveer chat",
"Unassigned": "Niet toegewezen",
"Underline": "Onderstrepen",
@@ -3412,6 +3427,7 @@
"Visible": "Zichtbaar",
"Visible to all users": "Zichtbaar voor alle gebruikers",
"Visual": "Visueel",
+ "vocabulary for a college entrance exam": "",
"Voice": "Stem",
"Voice Input": "Steminvoer",
"Voice mode": "Spraakmodus",
@@ -3442,6 +3458,7 @@
"Weekly": "Wekelijks",
"Weekly at": "Wekelijks om",
"Welcome to your AI home.": "Welkom in je AI-thuis.",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "Wat probeer je te bereiken?",
"What are you working on?": "Waar werk je aan?",
"What is NOT shared:": "Wat NIET wordt gedeeld:",
diff --git a/src/lib/i18n/locales/pa-IN/translation.json b/src/lib/i18n/locales/pa-IN/translation.json
index bdc9819d25c2..9e613bea98a1 100644
--- a/src/lib/i18n/locales/pa-IN/translation.json
+++ b/src/lib/i18n/locales/pa-IN/translation.json
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "",
"A private conversation between you and selected users": "",
"a user": "ਇੱਕ ਉਪਭੋਗਤਾ",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "",
"Access": "",
"Access Control": "",
@@ -343,6 +344,7 @@
"Chat Menu": "",
"Chat moved successfully": "",
"Chat Permissions": "",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "",
"Chat Uploads": "",
"Chat Variables": "",
@@ -494,6 +496,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "",
@@ -919,6 +922,8 @@
"Experience": "",
"Experimental": "ਪਰਮਾਣੂਕ੍ਰਿਤ",
"Explain": "",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "",
"Exploring": "",
"Export": "ਨਿਰਯਾਤ",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "",
"Followed instructions perfectly": "ਹਦਾਇਤਾਂ ਨੂੰ ਬਿਲਕੁਲ ਫਾਲੋ ਕੀਤਾ",
"for placeholders": "",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "",
"Get started": "",
"Get started with {{WEBUI_NAME}}": "",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "",
"Good Response": "ਵਧੀਆ ਜਵਾਬ",
"Google": "",
@@ -1118,6 +1126,8 @@
"Height": "",
"Hello, {{name}}": "ਸਤ ਸ੍ਰੀ ਅਕਾਲ, {{name}}",
"Help": "ਮਦਦ",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "",
"Help us translate Open WebUI!": "",
"Hex Color": "",
@@ -1148,6 +1158,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "",
"Image Generation": "",
"Image Max Compression Size": "",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "",
"Input needed": "",
"Input Variables": "",
- "Insert": "",
"Insert into note": "",
"Instructions": "",
"Integrations": "",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "ਇੱਕ ਸਮੇਂ ਵਿੱਚ ਵੱਧ ਤੋਂ ਵੱਧ 3 ਮਾਡਲ ਡਾਊਨਲੋਡ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ। ਕਿਰਪਾ ਕਰਕੇ ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।",
"May": "ਮਈ",
"MBR": "",
- "MCP": "",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "",
"Medium": "",
"Member removed successfully": "",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "ਅਕਤੂਬਰ",
+ "of a website's sticky header": "",
"Off": "ਬੰਦ",
"Okay, Let's Go!": "ਠੀਕ ਹੈ, ਚੱਲੋ ਚੱਲੀਏ!",
"OLED Dark": "OLED ਗੂੜ੍ਹਾ",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "ਓਪਨਏਆਈ API ਕੁੰਜੀ ਦੀ ਲੋੜ ਹੈ।",
"OpenAI API settings updated": "",
"OpenAI URL/Key required.": "ਓਪਨਏਆਈ URL/ਕੁੰਜੀ ਦੀ ਲੋੜ ਹੈ।",
- "OpenAPI": "",
"OpenAPI Spec": "",
"openapi.json URL or Path": "",
"optional": "",
@@ -1610,6 +1619,7 @@
"out of": "",
"Output": "",
"OUTPUT": "",
+ "Overcome procrastination": "",
"Overview": "",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -3056,6 +3066,8 @@
"Show Files": "",
"Show Hidden Files": "",
"Show image preview": "",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "",
"Show more": "",
"Show or switch the current model.": "",
@@ -3169,6 +3181,8 @@
"Task List": "",
"Tasks": "",
"tasks completed": "",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "ਸਾਨੂੰ ਹੋਰ ਦੱਸੋ:",
"Temporary": "",
"Temporary Chat": "",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "Hugging Face Resolve (ਡਾਊਨਲੋਡ) URL ਟਾਈਪ ਕਰੋ",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "",
+ "Unarchive": "",
"Unarchive Chat": "",
"Unassigned": "",
"Underline": "",
@@ -3412,6 +3427,7 @@
"Visible": "",
"Visible to all users": "",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "",
"Voice Input": "",
"Voice mode": "",
@@ -3442,6 +3458,7 @@
"Weekly": "",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "",
"What are you working on?": "",
"What is NOT shared:": "",
diff --git a/src/lib/i18n/locales/pl-PL/translation.json b/src/lib/i18n/locales/pl-PL/translation.json
index 50f26d94c5e0..46c848c3120e 100644
--- a/src/lib/i18n/locales/pl-PL/translation.json
+++ b/src/lib/i18n/locales/pl-PL/translation.json
@@ -89,6 +89,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Dostępna jest nowa wersja (v{{LATEST_VERSION}}).",
"A private conversation between you and selected users": "Prywatna rozmowa między Tobą a wybranymi użytkownikami",
"a user": "użytkownik",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Zaakceptuj autouzupełnianie\nPrzejdź do zmiennej promptu",
"Access": "Dostęp",
"Access Control": "Kontrola dostępu",
@@ -361,6 +362,7 @@
"Chat Menu": "",
"Chat moved successfully": "Czat przeniesiony pomyślnie",
"Chat Permissions": "Uprawnienia czatu",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "Udostępnianie czatu cofnięte.",
"Chat Uploads": "Przesyłanie plików na czacie",
"Chat Variables": "Zmienne czatu",
@@ -514,6 +516,7 @@
"Could not check for updates": "",
"Could not load release notes.": "Nie udało się wczytać informacji o wydaniu.",
"Could not read file.": "Nie można odczytać pliku.",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "CPU",
"Create": "Utwórz",
@@ -943,6 +946,8 @@
"Experience": "",
"Experimental": "Eksperymentalne",
"Explain": "Wyjaśnij",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "Zbadano",
"Exploring": "Badanie",
"Export": "Eksportuj",
@@ -1070,6 +1075,7 @@
"Follow up: {{question}}": "Pytanie dodatkowe: {{question}}",
"Followed instructions perfectly": "Instrukcje wykonane idealnie",
"for placeholders": "dla symboli zastępczych",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1117,6 +1123,8 @@
"Get information on {{name}} in the UI": "Uzyskaj informacje o {{name}} w interfejsie",
"Get started": "Rozpocznij",
"Get started with {{WEBUI_NAME}}": "Rozpocznij z {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Globalne",
"Good Response": "Dobra odpowiedź",
"Google": "Google",
@@ -1142,6 +1150,8 @@
"Height": "Wysokość",
"Hello, {{name}}": "Witaj, {{name}}",
"Help": "Pomoc",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "Pomóż społeczności odkrywać świetne modele",
"Help us translate Open WebUI!": "",
"Hex Color": "Kolor Hex",
@@ -1172,6 +1182,7 @@
"Identity audit": "Audyt tożsamości",
"Idle only": "Tylko bezczynność",
"Idle Timeout": "Limit czasu bezczynności",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Obraz",
"Image Generation": "Generowanie obrazu",
"Image Max Compression Size": "Maksymalny rozmiar kompresji",
@@ -1204,7 +1215,6 @@
"Input Key (e.g. text, unet_name, steps)": "Klucz wejściowy (np. text, unet_name, steps)",
"Input needed": "Wymagane dane wejściowe",
"Input Variables": "Zmienne wejściowe",
- "Insert": "Wstaw",
"Insert into note": "Wstaw do notatki",
"Instructions": "Instrukcje",
"Integrations": "Integracje",
@@ -1335,7 +1345,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Maksymalnie 3 modele mogą być pobierane jednocześnie. Spróbuj ponownie później.",
"May": "Maj",
"MBR": "MBR",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "Wsparcie MCP jest eksperymentalne i może powodować niekompatybilność. Wsparcie OpenAPI jest utrzymywane przez zespół Open WebUI i jest bardziej niezawodne.",
"Medium": "Średni",
"Member removed successfully": "Członek usunięty pomyślnie",
@@ -1574,6 +1583,7 @@
"OAuth Server URL": "URL serwera OAuth",
"OAuth session disconnected": "Sesja OAuth rozłączona",
"October": "Październik",
+ "of a website's sticky header": "",
"Off": "Wył.",
"Okay, Let's Go!": "OK, Jedziemy!",
"OLED Dark": "Ciemny (OLED)",
@@ -1623,7 +1633,6 @@
"OpenAI API Key is required.": "Klucz API OpenAI jest wymagany.",
"OpenAI API settings updated": "Zaktualizowano ustawienia API OpenAI",
"OpenAI URL/Key required.": "Wymagany URL/Klucz OpenAI.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "Specyfikacja OpenAPI",
"openapi.json URL or Path": "URL lub ścieżka openapi.json",
"optional": "opcjonalnie",
@@ -1636,6 +1645,7 @@
"out of": "z",
"Output": "Wynik",
"OUTPUT": "WYNIK",
+ "Overcome procrastination": "",
"Overview": "Przegląd",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "Wymagany URL API PaddleOCR-vl.",
@@ -3088,6 +3098,8 @@
"Show Files": "Pokaż pliki",
"Show Hidden Files": "Pokaż pliki ukryte",
"Show image preview": "Pokaż podgląd obrazu",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Pokaż model",
"Show more": "Pokaż więcej",
"Show or switch the current model.": "",
@@ -3203,6 +3215,8 @@
"Task List": "Lista zadań",
"Tasks": "Zadania",
"tasks completed": "zadań ukończonych",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Powiedz nam więcej:",
"Temporary": "",
"Temporary Chat": "Czat tymczasowy",
@@ -3338,6 +3352,7 @@
"Type Hugging Face Resolve (Download) URL": "Wpisz URL Hugging Face Resolve (Pobieranie)",
"Type your answer": "Wpisz swoją odpowiedź",
"Uh-oh! There was an issue with the response.": "O nie! Wystąpił problem z odpowiedzią.",
+ "Unarchive": "",
"Unarchive Chat": "Przywróć czat",
"Unassigned": "Nieprzypisane",
"Underline": "Podkreślenie",
@@ -3446,6 +3461,7 @@
"Visible": "Widoczny",
"Visible to all users": "Widoczne dla wszystkich",
"Visual": "Wizualny",
+ "vocabulary for a college entrance exam": "",
"Voice": "Głos",
"Voice Input": "Wprowadzanie głosowe",
"Voice mode": "Tryb głosowy",
@@ -3476,6 +3492,7 @@
"Weekly": "Tygodniowo",
"Weekly at": "Co tydzień o",
"Welcome to your AI home.": "Witaj w swoim domu AI.",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "Co chcesz osiągnąć?",
"What are you working on?": "Nad czym pracujesz?",
"What is NOT shared:": "Co NIE jest udostępniane:",
diff --git a/src/lib/i18n/locales/pt-BR/translation.json b/src/lib/i18n/locales/pt-BR/translation.json
index 708c68bd210e..6efccd2c716e 100644
--- a/src/lib/i18n/locales/pt-BR/translation.json
+++ b/src/lib/i18n/locales/pt-BR/translation.json
@@ -80,6 +80,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Uma nova versão (v{{LATEST_VERSION}}) está disponível.",
"A private conversation between you and selected users": "Uma conversa privada entre você e usuários selecionados.",
"a user": "um usuário",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Aceitar geração de autocompletar\nIr para a variável de prompt",
"Access": "Acesso",
"Access Control": "Controle de Acesso",
@@ -352,6 +353,7 @@
"Chat Menu": "Menu do Chat",
"Chat moved successfully": "Chat movido com sucesso",
"Chat Permissions": "Permissões de Chat",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "Compartilhamento do chat removido com sucesso.",
"Chat Uploads": "Uploads do Chat",
"Chat Variables": "Variáveis de Chat",
@@ -504,6 +506,7 @@
"Could not check for updates": "Não foi possível verificar atualizações",
"Could not load release notes.": "Não foi possível carregar as notas da versão.",
"Could not read file.": "Não foi possível ler o arquivo.",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "Não encontrou seu idioma?",
"CPU": "CPU",
"Create": "Criar",
@@ -931,6 +934,8 @@
"Experience": "Experiência",
"Experimental": "Experimental",
"Explain": "Explicar",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "Explorado",
"Exploring": "Explorando",
"Export": "Exportar",
@@ -1058,6 +1063,7 @@
"Follow up: {{question}}": "Acompanhamento: {{question}}",
"Followed instructions perfectly": "Seguiu as instruções perfeitamente",
"for placeholders": "para espaços reservados",
+ "for what to do with my kids' art": "",
"Fork": "Bifurcar",
"Fork chat": "Bifurcar chat",
"Fork the current chat branch into a new chat.": "Bifurque a ramificação atual do chat em um novo chat.",
@@ -1105,6 +1111,8 @@
"Get information on {{name}} in the UI": "Obtenha informações sobre {{name}} na interface",
"Get started": "Iniciar",
"Get started with {{WEBUI_NAME}}": "Iniciar com {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Global",
"Good Response": "Boa Resposta",
"Google": "Google",
@@ -1130,6 +1138,8 @@
"Height": "Altura",
"Hello, {{name}}": "Olá, {{name}}",
"Help": "Ajuda",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "Ajude a comunidade a descobrir ótimos modelos.",
"Help us translate Open WebUI!": "Ajude-nos a traduzir o Open WebUI!",
"Hex Color": "Cor hexadecimal",
@@ -1160,6 +1170,7 @@
"Identity audit": "Auditoria de identidade",
"Idle only": "Apenas inativo",
"Idle Timeout": "Tempo Limite de Inatividade",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Imagem",
"Image Generation": "Geração de Imagens",
"Image Max Compression Size": "Tamanho máximo de compressão da imagem",
@@ -1192,7 +1203,6 @@
"Input Key (e.g. text, unet_name, steps)": "Chave de entrada (por exemplo, text, unet_name, steps)",
"Input needed": "Entrada necessária",
"Input Variables": "Variáveis de entrada",
- "Insert": "Inserir",
"Insert into note": "Inserir na nota",
"Instructions": "Instruções",
"Integrations": "Integrações",
@@ -1322,7 +1332,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Máximo de 3 modelos podem ser baixados simultaneamente. Por favor, tente novamente mais tarde.",
"May": "Maio",
"MBR": "MBR",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "O suporte ao MCP é experimental e suas especificações mudam com frequência, o que pode levar a incompatibilidades. O suporte à especificação OpenAPI é mantido diretamente pela equipe do Open WebUI, tornando-o a opção mais confiável para compatibilidade.",
"Medium": "Médio",
"Member removed successfully": "Membro removido com sucesso",
@@ -1561,6 +1570,7 @@
"OAuth Server URL": "URL do Servidor OAuth",
"OAuth session disconnected": "Sessão OAuth desconectada",
"October": "Outubro",
+ "of a website's sticky header": "",
"Off": "Desligado",
"Okay, Let's Go!": "Ok, Vamos Lá!",
"OLED Dark": "OLED Escuro",
@@ -1610,7 +1620,6 @@
"OpenAI API Key is required.": "Chave API OpenAI é necessária.",
"OpenAI API settings updated": "Configurações OpenAI atualizadas",
"OpenAI URL/Key required.": "URL/Chave OpenAI necessária.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "Especificação OpenAPI",
"openapi.json URL or Path": "URL ou caminho do openapi.json",
"optional": "opcional",
@@ -1623,6 +1632,7 @@
"out of": "de",
"Output": "Saída",
"OUTPUT": "SAÍDA",
+ "Overcome procrastination": "",
"Overview": "Visão Geral",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "URL da API PaddleOCR-vl é obrigatória.",
@@ -3072,6 +3082,8 @@
"Show Files": "Mostrar arquivos",
"Show Hidden Files": "Mostrar Arquivos Ocultos",
"Show image preview": "Mostrar pré-visualização da imagem",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Mostrar modelo",
"Show more": "Exibir mais",
"Show or switch the current model.": "Mostre ou troque o modelo atual.",
@@ -3186,6 +3198,8 @@
"Task List": "Lista de tarefas",
"Tasks": "Tarefas",
"tasks completed": "tarefas concluídas",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Conte-nos mais:",
"Temporary": "Temporário",
"Temporary Chat": "Chat temporário",
@@ -3321,6 +3335,7 @@
"Type Hugging Face Resolve (Download) URL": "Digite o URL de download do Hugging Face",
"Type your answer": "Digite sua resposta",
"Uh-oh! There was an issue with the response.": "Opa! Houve um problema com a resposta.",
+ "Unarchive": "",
"Unarchive Chat": "Desarquivar Chat",
"Unassigned": "Não atribuído",
"Underline": "Sublinhado",
@@ -3429,6 +3444,7 @@
"Visible": "Visível",
"Visible to all users": "Visível para todos os usuários",
"Visual": "Visual",
+ "vocabulary for a college entrance exam": "",
"Voice": "Voz",
"Voice Input": "Entrada de voz",
"Voice mode": "Modo de voz",
@@ -3459,6 +3475,7 @@
"Weekly": "Semanal",
"Weekly at": "Semanalmente às",
"Welcome to your AI home.": "Boas-vindas à sua central de IA.",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "O que está tentando alcançar?",
"What are you working on?": "No que está trabalhando?",
"What is NOT shared:": "O que NÃO é compartilhado:",
diff --git a/src/lib/i18n/locales/pt-PT/translation.json b/src/lib/i18n/locales/pt-PT/translation.json
index 9e3aafc31726..fa8e8048b8d7 100644
--- a/src/lib/i18n/locales/pt-PT/translation.json
+++ b/src/lib/i18n/locales/pt-PT/translation.json
@@ -5,7 +5,7 @@
"[Last] dddd [at] h:mm A": "",
"[Today at] h:mm A": "",
"[Yesterday at] h:mm A": "",
- "{{ models }}": "{{ modelos }}",
+ "{{ models }}": "{{ models }}",
"{{count}} added lines_one": "",
"{{count}} added lines_many": "",
"{{count}} added lines_other": "",
@@ -80,6 +80,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Uma nova versão (v{{LATEST_VERSION}}) está agora disponível.",
"A private conversation between you and selected users": "Uma conversa privada entre si e os utilizadores selecionados",
"a user": "um utilizador",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Aceitar Geração do Preenchimento Automático\nIr para Variável de Prompt",
"Access": "Acesso",
"Access Control": "Controlo de Acesso",
@@ -352,6 +353,7 @@
"Chat Menu": "",
"Chat moved successfully": "Conversa movida com sucesso",
"Chat Permissions": "Permissões da Conversa",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "Conversa não partilhada com sucesso.",
"Chat Uploads": "",
"Chat Variables": "",
@@ -504,6 +506,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "Não conseguiu ler o ficheiro",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "Criar",
@@ -931,6 +934,8 @@
"Experience": "",
"Experimental": "Experimental",
"Explain": "Explicar",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "",
"Exploring": "",
"Export": "Exportar",
@@ -1058,6 +1063,7 @@
"Follow up: {{question}}": "Acompanhamento: {{question}}",
"Followed instructions perfectly": "Seguiu instruções perfeitamente",
"for placeholders": "para espaços reservados",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1105,6 +1111,8 @@
"Get information on {{name}} in the UI": "Obter informações sobre {{name}} na interface",
"Get started": "Começar",
"Get started with {{WEBUI_NAME}}": "Começar com {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Global",
"Good Response": "Boa Resposta",
"Google": "Google",
@@ -1130,6 +1138,8 @@
"Height": "Altura",
"Hello, {{name}}": "Olá, {{name}}",
"Help": "Ajuda",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "Ajude a comunidade a descobrir ótimos modelos",
"Help us translate Open WebUI!": "",
"Hex Color": "Cor Hexadecimal",
@@ -1160,6 +1170,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Imagem",
"Image Generation": "Geração de Imagem",
"Image Max Compression Size": "Tamanho Máximo de Compressão de Imagem",
@@ -1192,7 +1203,6 @@
"Input Key (e.g. text, unet_name, steps)": "Chave de Entrada (por exemplo, texto, unet_name, passos)",
"Input needed": "",
"Input Variables": "Variáveis de Entrada",
- "Insert": "Inserir",
"Insert into note": "",
"Instructions": "",
"Integrations": "Integrações",
@@ -1322,7 +1332,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "O máximo de 3 modelos podem ser descarregados simultaneamente. Tente novamente mais tarde.",
"May": "Maio",
"MBR": "MBR",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "O suporte MCP é experimental e a sua especificação muda frequentemente, o que pode levar a incompatibilidades. O suporte à especificação OpenAPI é mantido diretamente pela equipa Open WebUI, tornando-o a opção mais confiável para compatibilidade.",
"Medium": "Médio",
"Member removed successfully": "Membro removido com sucesso",
@@ -1561,6 +1570,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "Outubro",
+ "of a website's sticky header": "",
"Off": "Desligado",
"Okay, Let's Go!": "Ok, Vamos Lá!",
"OLED Dark": "OLED Escuro",
@@ -1610,7 +1620,6 @@
"OpenAI API Key is required.": "A Chave da API OpenAI é obrigatória.",
"OpenAI API settings updated": "Definições da API OpenAI atualizadas",
"OpenAI URL/Key required.": "URL/Chave da API OpenAI é necessária.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "Especificação OpenAPI",
"openapi.json URL or Path": "URL ou Caminho do openapi.json",
"optional": "opcional",
@@ -1623,6 +1632,7 @@
"out of": "",
"Output": "Saída",
"OUTPUT": "SAÍDA",
+ "Overcome procrastination": "",
"Overview": "Visão Geral",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -3072,6 +3082,8 @@
"Show Files": "Mostrar Ficheiros",
"Show Hidden Files": "",
"Show image preview": "Mostrar pré-visualização de imagem",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Mostrar Modelo",
"Show more": "",
"Show or switch the current model.": "",
@@ -3186,6 +3198,8 @@
"Task List": "Lista de Tarefas",
"Tasks": "Tarefas",
"tasks completed": "",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Diga-nos mais:",
"Temporary": "",
"Temporary Chat": "Conversa Temporária",
@@ -3321,6 +3335,7 @@
"Type Hugging Face Resolve (Download) URL": "Escreva o URL do Hugging Face Resolve (Descarregar)",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "Opá! Houve um problema com a resposta.",
+ "Unarchive": "",
"Unarchive Chat": "Desarquivar Conversa",
"Unassigned": "",
"Underline": "Sublinhar",
@@ -3429,6 +3444,7 @@
"Visible": "Visível",
"Visible to all users": "Visível para todos os utilizadores",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "Voz",
"Voice Input": "Entrada de Voz",
"Voice mode": "Modo de Voz",
@@ -3459,6 +3475,7 @@
"Weekly": "",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "O que está a tentar alcançar?",
"What are you working on?": "Em que está a trabalhar?",
"What is NOT shared:": "O que NÃO é partilhado:",
diff --git a/src/lib/i18n/locales/ro-RO/translation.json b/src/lib/i18n/locales/ro-RO/translation.json
index f4615229471c..d37a5bd75896 100644
--- a/src/lib/i18n/locales/ro-RO/translation.json
+++ b/src/lib/i18n/locales/ro-RO/translation.json
@@ -5,7 +5,7 @@
"[Last] dddd [at] h:mm A": "",
"[Today at] h:mm A": "",
"[Yesterday at] h:mm A": "",
- "{{ models }}": "{{ modele }}",
+ "{{ models }}": "{{ models }}",
"{{count}} added lines_one": "",
"{{count}} added lines_few": "",
"{{count}} added lines_other": "",
@@ -80,6 +80,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "O nouă versiune (v{{LATEST_VERSION}}) este acum disponibilă.",
"A private conversation between you and selected users": "",
"a user": "un utilizator",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "",
"Access": "Acces",
"Access Control": "Controlul accesului",
@@ -352,6 +353,7 @@
"Chat Menu": "",
"Chat moved successfully": "",
"Chat Permissions": "",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "",
"Chat Uploads": "",
"Chat Variables": "",
@@ -504,6 +506,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "Creează",
@@ -931,6 +934,8 @@
"Experience": "",
"Experimental": "Experimental",
"Explain": "",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "",
"Exploring": "",
"Export": "Exportă",
@@ -1058,6 +1063,7 @@
"Follow up: {{question}}": "",
"Followed instructions perfectly": "A urmat instrucțiunile perfect",
"for placeholders": "",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1105,6 +1111,8 @@
"Get information on {{name}} in the UI": "",
"Get started": "",
"Get started with {{WEBUI_NAME}}": "",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Global",
"Good Response": "Răspuns Bun",
"Google": "",
@@ -1130,6 +1138,8 @@
"Height": "",
"Hello, {{name}}": "Salut, {{name}}",
"Help": "Ajutor",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "",
"Help us translate Open WebUI!": "",
"Hex Color": "",
@@ -1160,6 +1170,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "",
"Image Generation": "",
"Image Max Compression Size": "",
@@ -1192,7 +1203,6 @@
"Input Key (e.g. text, unet_name, steps)": "",
"Input needed": "",
"Input Variables": "",
- "Insert": "",
"Insert into note": "",
"Instructions": "",
"Integrations": "",
@@ -1322,7 +1332,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Maxim 3 modele pot fi descărcate simultan. Vă rugăm să încercați din nou mai târziu.",
"May": "Mai",
"MBR": "",
- "MCP": "",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "",
"Medium": "",
"Member removed successfully": "",
@@ -1561,6 +1570,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "Octombrie",
+ "of a website's sticky header": "",
"Off": "Dezactivat",
"Okay, Let's Go!": "Ok, Să Începem!",
"OLED Dark": "Întunecat OLED",
@@ -1610,7 +1620,6 @@
"OpenAI API Key is required.": "Este necesară cheia API OpenAI.",
"OpenAI API settings updated": "",
"OpenAI URL/Key required.": "Este necesar URL-ul/Cheia OpenAI.",
- "OpenAPI": "",
"OpenAPI Spec": "",
"openapi.json URL or Path": "",
"optional": "",
@@ -1623,6 +1632,7 @@
"out of": "",
"Output": "",
"OUTPUT": "Output rezultatat",
+ "Overcome procrastination": "",
"Overview": "Privire de ansamblu",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -3072,6 +3082,8 @@
"Show Files": "",
"Show Hidden Files": "",
"Show image preview": "",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "",
"Show more": "",
"Show or switch the current model.": "",
@@ -3186,6 +3198,8 @@
"Task List": "",
"Tasks": "",
"tasks completed": "",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Spune-ne mai multe:",
"Temporary": "",
"Temporary Chat": "Chat Temporar",
@@ -3321,6 +3335,7 @@
"Type Hugging Face Resolve (Download) URL": "Introduceți URL-ul de Rezolvare (Descărcare) Hugging Face",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "Oh, nu! A apărut o problemă cu răspunsul.",
+ "Unarchive": "",
"Unarchive Chat": "Dezarhivează conversația",
"Unassigned": "",
"Underline": "",
@@ -3429,6 +3444,7 @@
"Visible": "",
"Visible to all users": "",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "Voce",
"Voice Input": "Intrare vocală",
"Voice mode": "",
@@ -3459,6 +3475,7 @@
"Weekly": "",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "",
"What are you working on?": "",
"What is NOT shared:": "",
diff --git a/src/lib/i18n/locales/ru-RU/translation.json b/src/lib/i18n/locales/ru-RU/translation.json
index d8badb05e076..c529f5dd0d15 100644
--- a/src/lib/i18n/locales/ru-RU/translation.json
+++ b/src/lib/i18n/locales/ru-RU/translation.json
@@ -89,6 +89,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Новая версия (v{{LATEST_VERSION}}) теперь доступна.",
"A private conversation between you and selected users": "Приватный чат между вами и выбранными пользователями",
"a user": "пользователь",
+ "about the Roman Empire": "о Римской империи",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Доступ к автозаполнению\nПерейти к переменной запроса",
"Access": "Доступ",
"Access Control": "Контроль доступа",
@@ -361,6 +362,7 @@
"Chat Menu": "Меню чата",
"Chat moved successfully": "Чат успешно перемещён",
"Chat Permissions": "Разрешения для чата",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "Общий доступ к чату отключен.",
"Chat Uploads": "Загрузки в чат",
"Chat Variables": "Переменные чата",
@@ -514,6 +516,7 @@
"Could not check for updates": "Не удалось проверить наличие обновлений",
"Could not load release notes.": "Не удалось загрузить примечания к выпуску.",
"Could not read file.": "Не удалось прочитать файл.",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "Сначала расспроси меня, в каких ситуациях я прокрастинирую больше всего, а затем дай советы, как с этим справиться.",
"Couldn't find your language?": "Не нашли свой язык?",
"CPU": "ЦП",
"Create": "Создать",
@@ -943,6 +946,8 @@
"Experience": "Оформление",
"Experimental": "Экспериментальное",
"Explain": "Объяснить",
+ "Explain options trading": "Объясни торговлю опционами",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "Объясни торговлю опционами простыми словами. Я уже знаком с покупкой и продажей акций.",
"Explored": "Изучено",
"Exploring": "Изучение",
"Export": "Экспорт",
@@ -1070,6 +1075,7 @@
"Follow up: {{question}}": "Продолжение: {{question}}",
"Followed instructions perfectly": "В точности следовал инструкциям",
"for placeholders": "для подстановок",
+ "for what to do with my kids' art": "что делать с рисунками моих детей",
"Fork": "Разветвить",
"Fork chat": "Разветвить чат",
"Fork the current chat branch into a new chat.": "Создать новый чат из текущей ветки чата.",
@@ -1117,6 +1123,8 @@
"Get information on {{name}} in the UI": "Получить информацию о {{name}} в UI",
"Get started": "Давайте начнём",
"Get started with {{WEBUI_NAME}}": "Давайте начнём с {{WEBUI_NAME}}",
+ "Give me ideas": "Подскажи идеи",
+ "give me tips": "дай мне советы",
"Global": "Глобально",
"Good Response": "Хороший ответ",
"Google": "Google",
@@ -1142,6 +1150,8 @@
"Height": "Высота",
"Hello, {{name}}": "Привет, {{name}}",
"Help": "Помощь",
+ "Help me study": "Помоги мне подготовиться",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "Помоги мне выучить слова: напиши предложение с пропуском, а я попробую выбрать правильный вариант.",
"Help the community discover great models": "Помогите сообществу находить лучшие модели",
"Help us translate Open WebUI!": "Помогите нам перевести Open WebUI!",
"Hex Color": "Цвет Hex",
@@ -1172,6 +1182,7 @@
"Identity audit": "Аудит идентификации",
"Idle only": "Только при простое",
"Idle Timeout": "Тайм-аут простоя",
+ "if I'm familiar with buying and selling stocks": "если я знаком с покупкой и продажей акций",
"Image": "Изображение",
"Image Generation": "Генерация изображений",
"Image Max Compression Size": "Максимальный размер сжатия изображения",
@@ -1204,7 +1215,6 @@
"Input Key (e.g. text, unet_name, steps)": "Введите ключ (например, text, unet_name, steps)",
"Input needed": "Требуется ввод",
"Input Variables": "Переменные ввода",
- "Insert": "Вставить",
"Insert into note": "Вставить в заметку",
"Instructions": "Инструкции",
"Integrations": "Интеграции",
@@ -1335,7 +1345,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Максимальное количество моделей для загрузки одновременно - 3. Пожалуйста, попробуйте позже.",
"May": "Май",
"MBR": "Уч.",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "Поддержка MCP является экспериментальной, а частые изменения спецификации могут приводить к несовместимостям. Поддержка OpenAPI напрямую обеспечивается командой Open WebUI, что делает её более надёжным вариантом.",
"Medium": "Средний",
"Member removed successfully": "Участник успешно удалён",
@@ -1574,6 +1583,7 @@
"OAuth Server URL": "URL сервера OAuth",
"OAuth session disconnected": "Сеанс OAuth отключен",
"October": "Октябрь",
+ "of a website's sticky header": "закреплённой шапки сайта",
"Off": "Выключено",
"Okay, Let's Go!": "Давайте начнём!",
"OLED Dark": "OLED темная",
@@ -1623,7 +1633,6 @@
"OpenAI API Key is required.": "Требуется ключ API OpenAI.",
"OpenAI API settings updated": "Настройки OpenAI API обновлены",
"OpenAI URL/Key required.": "Требуется URL-адрес API OpenAI или ключ API.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "Спецификация OpenAPI",
"openapi.json URL or Path": "URL-адрес или путь к файлу openapi.json",
"optional": "необязательно",
@@ -1636,6 +1645,7 @@
"out of": "из",
"Output": "Вывод",
"OUTPUT": "ВЫВОД",
+ "Overcome procrastination": "Победить прокрастинацию",
"Overview": "Обзор",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "Требуется URL API PaddleOCR-vl.",
@@ -3088,6 +3098,8 @@
"Show Files": "Показать файлы",
"Show Hidden Files": "Показывать скрытые файлы",
"Show image preview": "Показать предварительный просмотр изображения",
+ "Show me a code snippet": "Покажи пример кода",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "Покажи пример кода закреплённой шапки сайта на CSS и JavaScript.",
"Show Model": "Показать модель",
"Show more": "Показать больше",
"Show or switch the current model.": "Показать или сменить текущую модель.",
@@ -3203,6 +3215,8 @@
"Task List": "Список задач",
"Tasks": "Задачи",
"tasks completed": "задач выполнено",
+ "Tell me a fun fact": "Расскажи интересный факт",
+ "Tell me a random fun fact about the Roman Empire": "Расскажи случайный интересный факт о Римской империи",
"Tell us more:": "Пожалуйста, расскажите нам больше:",
"Temporary": "Временный чат",
"Temporary Chat": "Временный чат",
@@ -3338,6 +3352,7 @@
"Type Hugging Face Resolve (Download) URL": "Введите URL-адрес Hugging Face Resolve (загрузки)",
"Type your answer": "Введите ваш ответ",
"Uh-oh! There was an issue with the response.": "Ошибка генерации ответа.",
+ "Unarchive": "",
"Unarchive Chat": "Разархивировать чат",
"Unassigned": "Не назначено",
"Underline": "Подчёркнутый",
@@ -3446,6 +3461,7 @@
"Visible": "Видимо",
"Visible to all users": "Видимо всем пользователям",
"Visual": "Визуальный",
+ "vocabulary for a college entrance exam": "к словарной части вступительного экзамена",
"Voice": "Голос",
"Voice Input": "Ввод голоса",
"Voice mode": "Режим голоса",
@@ -3476,6 +3492,7 @@
"Weekly": "Еженедельно",
"Weekly at": "Еженедельно в",
"Welcome to your AI home.": "Добро пожаловать в ваш дом для ИИ.",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "Какие 5 творческих вещей можно сделать с рисунками моих детей? Выбрасывать жалко, но они занимают слишком много места.",
"What are you trying to achieve?": "Чего вы пытаетесь достичь?",
"What are you working on?": "Над чем вы работаете?",
"What is NOT shared:": "Что НЕ передаётся:",
diff --git a/src/lib/i18n/locales/sk-SK/translation.json b/src/lib/i18n/locales/sk-SK/translation.json
index 165f486ecd56..61a4fcd647c3 100644
--- a/src/lib/i18n/locales/sk-SK/translation.json
+++ b/src/lib/i18n/locales/sk-SK/translation.json
@@ -89,6 +89,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Nová verzia (v{{LATEST_VERSION}}) je teraz k dispozícii.",
"A private conversation between you and selected users": "",
"a user": "užívateľ",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "",
"Access": "Prístup",
"Access Control": "",
@@ -361,6 +362,7 @@
"Chat Menu": "",
"Chat moved successfully": "",
"Chat Permissions": "",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "",
"Chat Uploads": "",
"Chat Variables": "",
@@ -514,6 +516,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "Vytvoriť",
@@ -943,6 +946,8 @@
"Experience": "",
"Experimental": "Experimentálne",
"Explain": "",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "",
"Exploring": "",
"Export": "Exportovať",
@@ -1070,6 +1075,7 @@
"Follow up: {{question}}": "",
"Followed instructions perfectly": "Dodržal pokyny dokonale.",
"for placeholders": "",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1117,6 +1123,8 @@
"Get information on {{name}} in the UI": "",
"Get started": "",
"Get started with {{WEBUI_NAME}}": "",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Globálne",
"Good Response": "Dobrá odozva",
"Google": "",
@@ -1142,6 +1150,8 @@
"Height": "",
"Hello, {{name}}": "Ahoj, {{name}}",
"Help": "Pomoc",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "",
"Help us translate Open WebUI!": "",
"Hex Color": "",
@@ -1172,6 +1182,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Obrázok",
"Image Generation": "",
"Image Max Compression Size": "",
@@ -1204,7 +1215,6 @@
"Input Key (e.g. text, unet_name, steps)": "",
"Input needed": "",
"Input Variables": "",
- "Insert": "",
"Insert into note": "",
"Instructions": "",
"Integrations": "",
@@ -1335,7 +1345,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Maximálne 3 modely môžu byť stiahnuté súčasne. Prosím skúste to znova neskôr.",
"May": "Máj",
"MBR": "",
- "MCP": "",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "",
"Medium": "",
"Member removed successfully": "",
@@ -1574,6 +1583,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "Október",
+ "of a website's sticky header": "",
"Off": "Vypnuté",
"Okay, Let's Go!": "Dobre, poďme na to!",
"OLED Dark": "OLED Dark",
@@ -1623,7 +1633,6 @@
"OpenAI API Key is required.": "Je vyžadovaný kľúč OpenAI API.",
"OpenAI API settings updated": "",
"OpenAI URL/Key required.": "Je vyžadovaný odkaz/adresa URL alebo kľúč OpenAI.",
- "OpenAPI": "",
"OpenAPI Spec": "",
"openapi.json URL or Path": "",
"optional": "",
@@ -1636,6 +1645,7 @@
"out of": "",
"Output": "",
"OUTPUT": "VÝSTUP",
+ "Overcome procrastination": "",
"Overview": "Prehľad",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -3088,6 +3098,8 @@
"Show Files": "",
"Show Hidden Files": "",
"Show image preview": "",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "",
"Show more": "",
"Show or switch the current model.": "",
@@ -3203,6 +3215,8 @@
"Task List": "",
"Tasks": "",
"tasks completed": "",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Povedzte nám viac.",
"Temporary": "",
"Temporary Chat": "Dočasný chat",
@@ -3338,6 +3352,7 @@
"Type Hugging Face Resolve (Download) URL": "Zadajte URL na úspešné stiahnutie z Hugging Face.",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "",
+ "Unarchive": "",
"Unarchive Chat": "",
"Unassigned": "",
"Underline": "",
@@ -3446,6 +3461,7 @@
"Visible": "",
"Visible to all users": "",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "Hlas",
"Voice Input": "Hlasový vstup",
"Voice mode": "Hlasový režim",
@@ -3476,6 +3492,7 @@
"Weekly": "",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "Čo sa snažíte dosiahnuť?",
"What are you working on?": "Na čom pracujete?",
"What is NOT shared:": "",
diff --git a/src/lib/i18n/locales/sl-SI/translation.json b/src/lib/i18n/locales/sl-SI/translation.json
index 861b69302585..04f77433ca0c 100644
--- a/src/lib/i18n/locales/sl-SI/translation.json
+++ b/src/lib/i18n/locales/sl-SI/translation.json
@@ -89,6 +89,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "A new version (v{{LATEST_VERSION}}) is now available.",
"A private conversation between you and selected users": "A private conversation between you and selected users",
"a user": "a user",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Sprejmi samodejno dopolnitev\nSkoči na spremenljivko poziva",
"Access": "Dostop",
"Access Control": "Nadzor dostopa",
@@ -361,6 +362,7 @@
"Chat Menu": "",
"Chat moved successfully": "Pogovor je uspešno premaknjen",
"Chat Permissions": "Dovoljenja za pogovor",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "Deljenje pogovora je uspešno preklicano.",
"Chat Uploads": "",
"Chat Variables": "Spremenljivke pogovora",
@@ -514,6 +516,7 @@
"Could not check for updates": "",
"Could not load release notes.": "Opomb o izdaji ni bilo mogoče naložiti.",
"Could not read file.": "Could not read file.",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "CPU",
"Create": "Ustvari",
@@ -943,6 +946,8 @@
"Experience": "",
"Experimental": "Eksperimentalno",
"Explain": "Pojasni",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "Explored",
"Exploring": "Exploring",
"Export": "Izvozi",
@@ -1070,6 +1075,7 @@
"Follow up: {{question}}": "Nadaljnje vprašanje: {{question}}",
"Followed instructions perfectly": "Popolnoma je sledil navodilom",
"for placeholders": "for placeholders",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1117,6 +1123,8 @@
"Get information on {{name}} in the UI": "Get information on {{name}} in the UI",
"Get started": "Začni",
"Get started with {{WEBUI_NAME}}": "Get started with {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Globalno",
"Good Response": "Dober odgovor",
"Google": "Google",
@@ -1142,6 +1150,8 @@
"Height": "Višina",
"Hello, {{name}}": "Pozdravljeni, {{name}}",
"Help": "Pomoč",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "Help the community discover great models",
"Help us translate Open WebUI!": "",
"Hex Color": "Šestnajstiška barva",
@@ -1172,6 +1182,7 @@
"Identity audit": "Identity audit",
"Idle only": "Samo v mirovanju",
"Idle Timeout": "Časovna omejitev mirovanja",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Slika",
"Image Generation": "Ustvarjanje slik",
"Image Max Compression Size": "Največja velikost stiskanja slike",
@@ -1204,7 +1215,6 @@
"Input Key (e.g. text, unet_name, steps)": "Input Key (e.g. text, unet_name, steps)",
"Input needed": "",
"Input Variables": "Vhodne spremenljivke",
- "Insert": "Vstavi",
"Insert into note": "Vstavi v zapisek",
"Instructions": "Navodila",
"Integrations": "Integracije",
@@ -1335,7 +1345,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Maximum of 3 models can be downloaded simultaneously. Please try again later.",
"May": "maj",
"MBR": "MBR",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.",
"Medium": "Srednje",
"Member removed successfully": "Član je uspešno odstranjen",
@@ -1574,6 +1583,7 @@
"OAuth Server URL": "OAuth Server URL",
"OAuth session disconnected": "Seja OAuth je prekinjena",
"October": "oktober",
+ "of a website's sticky header": "",
"Off": "Izklopljeno",
"Okay, Let's Go!": "V redu, začnimo!",
"OLED Dark": "OLED temno",
@@ -1623,7 +1633,6 @@
"OpenAI API Key is required.": "OpenAI API ključ je obvezno.",
"OpenAI API settings updated": "OpenAI API settings updated",
"OpenAI URL/Key required.": "OpenAI URL/Key required.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "OpenAPI Spec",
"openapi.json URL or Path": "openapi.json URL or Path",
"optional": "neobvezno",
@@ -1636,6 +1645,7 @@
"out of": "od",
"Output": "Izhod",
"OUTPUT": "IZHOD",
+ "Overcome procrastination": "",
"Overview": "Pregled",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "PaddleOCR-vl API URL required.",
@@ -3088,6 +3098,8 @@
"Show Files": "Prikaži datoteke",
"Show Hidden Files": "",
"Show image preview": "Prikaži image preview",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Prikaži model",
"Show more": "Prikaži več",
"Show or switch the current model.": "",
@@ -3203,6 +3215,8 @@
"Task List": "Task List",
"Tasks": "Naloge",
"tasks completed": "tasks completed",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Tell us more:",
"Temporary": "",
"Temporary Chat": "Začasni pogovor",
@@ -3338,6 +3352,7 @@
"Type Hugging Face Resolve (Download) URL": "Type Hugging Face Resolve (Download) URL",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "Uh-oh! There was an issue with the response.",
+ "Unarchive": "",
"Unarchive Chat": "Odstrani iz arhiva pogovor",
"Unassigned": "Nedodeljeno",
"Underline": "Underline",
@@ -3446,6 +3461,7 @@
"Visible": "Visible",
"Visible to all users": "Visible to all users",
"Visual": "Visual",
+ "vocabulary for a college entrance exam": "",
"Voice": "Glas",
"Voice Input": "Glasovni vnos",
"Voice mode": "Voice mode",
@@ -3476,6 +3492,7 @@
"Weekly": "Tedensko",
"Weekly at": "Tedensko ob",
"Welcome to your AI home.": "Dobrodošli v vašem AI domu.",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "What are you trying to achieve?",
"What are you working on?": "What are you working on?",
"What is NOT shared:": "What is NOT shared:",
diff --git a/src/lib/i18n/locales/sr-RS/translation.json b/src/lib/i18n/locales/sr-RS/translation.json
index 8bbac8e1d44a..a84a20fddd26 100644
--- a/src/lib/i18n/locales/sr-RS/translation.json
+++ b/src/lib/i18n/locales/sr-RS/translation.json
@@ -80,6 +80,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "",
"A private conversation between you and selected users": "",
"a user": "корисник",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "",
"Access": "Приступ",
"Access Control": "Контрола приступа",
@@ -352,6 +353,7 @@
"Chat Menu": "",
"Chat moved successfully": "",
"Chat Permissions": "Дозволе ћаскања",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "",
"Chat Uploads": "",
"Chat Variables": "",
@@ -504,6 +506,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "Направи",
@@ -931,6 +934,8 @@
"Experience": "",
"Experimental": "Експериментално",
"Explain": "",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "",
"Exploring": "",
"Export": "Извоз",
@@ -1058,6 +1063,7 @@
"Follow up: {{question}}": "",
"Followed instructions perfectly": "Упутства су савршено праћена",
"for placeholders": "",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1105,6 +1111,8 @@
"Get information on {{name}} in the UI": "",
"Get started": "",
"Get started with {{WEBUI_NAME}}": "",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "",
"Good Response": "Добар одговор",
"Google": "",
@@ -1130,6 +1138,8 @@
"Height": "",
"Hello, {{name}}": "Здраво, {{name}}",
"Help": "Помоћ",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "",
"Help us translate Open WebUI!": "",
"Hex Color": "Хекс боја",
@@ -1160,6 +1170,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Слика",
"Image Generation": "Стварање слике",
"Image Max Compression Size": "",
@@ -1192,7 +1203,6 @@
"Input Key (e.g. text, unet_name, steps)": "",
"Input needed": "",
"Input Variables": "",
- "Insert": "",
"Insert into note": "",
"Instructions": "",
"Integrations": "",
@@ -1322,7 +1332,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Највише 3 модела могу бити преузета истовремено. Покушајте поново касније.",
"May": "Мај",
"MBR": "",
- "MCP": "",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "",
"Medium": "",
"Member removed successfully": "",
@@ -1561,6 +1570,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "Октобар",
+ "of a website's sticky header": "",
"Off": "Искључено",
"Okay, Let's Go!": "У реду, хајде да кренемо!",
"OLED Dark": "OLED тамна",
@@ -1610,7 +1620,6 @@
"OpenAI API Key is required.": "Потребан је OpenAI API кључ.",
"OpenAI API settings updated": "",
"OpenAI URL/Key required.": "Потребан је OpenAI URL/кључ.",
- "OpenAPI": "",
"OpenAPI Spec": "",
"openapi.json URL or Path": "",
"optional": "",
@@ -1623,6 +1632,7 @@
"out of": "",
"Output": "",
"OUTPUT": "ИЗЛАЗ",
+ "Overcome procrastination": "",
"Overview": "Преглед",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -3072,6 +3082,8 @@
"Show Files": "",
"Show Hidden Files": "",
"Show image preview": "",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "",
"Show more": "",
"Show or switch the current model.": "",
@@ -3186,6 +3198,8 @@
"Task List": "",
"Tasks": "",
"tasks completed": "",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Реците нам више:",
"Temporary": "",
"Temporary Chat": "Привремено ћаскање",
@@ -3321,6 +3335,7 @@
"Type Hugging Face Resolve (Download) URL": "Унесите Hugging Face Resolve (Download) адресу",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "",
+ "Unarchive": "",
"Unarchive Chat": "Деархивирај ћаскање",
"Unassigned": "",
"Underline": "",
@@ -3429,6 +3444,7 @@
"Visible": "",
"Visible to all users": "",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "Глас",
"Voice Input": "Гласовни унос",
"Voice mode": "",
@@ -3459,6 +3475,7 @@
"Weekly": "",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "",
"What are you working on?": "",
"What is NOT shared:": "",
diff --git a/src/lib/i18n/locales/sv-SE/translation.json b/src/lib/i18n/locales/sv-SE/translation.json
index 3903226b82e2..3b8b750ac6a2 100644
--- a/src/lib/i18n/locales/sv-SE/translation.json
+++ b/src/lib/i18n/locales/sv-SE/translation.json
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "En ny version (v{{LATEST_VERSION}}) är nu tillgänglig.",
"A private conversation between you and selected users": "En privat konversation mellan dig och utvalda användare",
"a user": "en användare",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Acceptera autokomplettering\nHoppa till promptvariabel",
"Access": "Åtkomst",
"Access Control": "Åtkomstkontroll",
@@ -343,6 +344,7 @@
"Chat Menu": "",
"Chat moved successfully": "Chatten flyttad",
"Chat Permissions": "Chattbehörigheter",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "Chatta odelat framgångsrikt.",
"Chat Uploads": "",
"Chat Variables": "",
@@ -494,6 +496,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "Kunde inte läsa filen.",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "CPU",
"Create": "Skapa",
@@ -919,6 +922,8 @@
"Experience": "",
"Experimental": "Experimentell",
"Explain": "Förklara",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "Utforskad",
"Exploring": "Utforska",
"Export": "Export",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "Uppföljning: {{question}}",
"Followed instructions perfectly": "Följde instruktionerna perfekt",
"for placeholders": "för platshållare",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "Få information om {{name}} i gränssnittet",
"Get started": "Kom igång",
"Get started with {{WEBUI_NAME}}": "Kom igång med {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Global",
"Good Response": "Bra svar",
"Google": "Google",
@@ -1118,6 +1126,8 @@
"Height": "Höjd",
"Hello, {{name}}": "Hej, {{name}}",
"Help": "Hjälp",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "Hjälp samhället att upptäcka bra modeller",
"Help us translate Open WebUI!": "",
"Hex Color": "Hexfärg",
@@ -1148,6 +1158,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "Timeout för inaktivitet",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Bild",
"Image Generation": "Bildgenerering",
"Image Max Compression Size": "Maximal bildkomprimeringsstorlek",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "Inputnyckel (t.ex. text, unet_name, steps)",
"Input needed": "",
"Input Variables": "Inputvariabler",
- "Insert": "Infoga",
"Insert into note": "",
"Instructions": "Instruktioner",
"Integrations": "Integrationer",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Högst 3 modeller kan laddas ner samtidigt. försök igen senare.",
"May": "maj",
"MBR": "MBR",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "MCP-stödet är experimentellt och dess specifikation ändras ofta, vilket kan leda till inkompatibilitet. OpenAPI-specifikationen underhålls direkt av Open WebUI-teamet, vilket gör det till det mer tillförlitliga alternativet för kompatibilitet.",
"Medium": "Medium",
"Member removed successfully": "Medlem borttagen framgångsrikt",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "OAuth-server-URL",
"OAuth session disconnected": "OAuth-session frånkopplad",
"October": "oktober",
+ "of a website's sticky header": "",
"Off": "Av",
"Okay, Let's Go!": "Okej, nu kör vi!",
"OLED Dark": "Mörk (OLED)",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "OpenAI API-nyckel krävs.",
"OpenAI API settings updated": "OpenAI API-inställningar uppdaterade",
"OpenAI URL/Key required.": "OpenAI-URL/nyckel krävs.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "OpenAPI-specifikation",
"openapi.json URL or Path": "openapi.json URL eller sökväg",
"optional": "valfri",
@@ -1610,6 +1619,7 @@
"out of": "av",
"Output": "Utgång",
"OUTPUT": "UTDATA",
+ "Overcome procrastination": "",
"Overview": "Översikt",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "API-URL för PaddleOCR-vl krävs.",
@@ -3056,6 +3066,8 @@
"Show Files": "Visa filer",
"Show Hidden Files": "",
"Show image preview": "Visa förhandsvisning av bild",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Visa modell",
"Show more": "",
"Show or switch the current model.": "",
@@ -3169,6 +3181,8 @@
"Task List": "Uppgiftslista",
"Tasks": "Uppgifter",
"tasks completed": "uppgifter slutförda",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Berätta mer:",
"Temporary": "",
"Temporary Chat": "Tillfällig chatt",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "Ange Hugging Face Resolve (Download) URL",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "Oj då! Det uppstod ett problem med svaret",
+ "Unarchive": "",
"Unarchive Chat": "Avarkivera chatt",
"Unassigned": "",
"Underline": "Understruken",
@@ -3412,6 +3427,7 @@
"Visible": "Synlig",
"Visible to all users": "Synlig för alla användare",
"Visual": "Visuell",
+ "vocabulary for a college entrance exam": "",
"Voice": "Röst",
"Voice Input": "Röstinmatning",
"Voice mode": "Röstläge",
@@ -3442,6 +3458,7 @@
"Weekly": "Veckovis",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "Vad försöker du uppnå?",
"What are you working on?": "Var arbetar du med?",
"What is NOT shared:": "Vad som INTE delas:",
diff --git a/src/lib/i18n/locales/ta-IN/translation.json b/src/lib/i18n/locales/ta-IN/translation.json
index 46fe05458b77..ef17cd33f232 100644
--- a/src/lib/i18n/locales/ta-IN/translation.json
+++ b/src/lib/i18n/locales/ta-IN/translation.json
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "புதிய பதிப்பு (v{{LATEST_VERSION}}) இப்போது கிடைக்கிறது.",
"A private conversation between you and selected users": "உங்களுக்கும் தேர்ந்தெடுக்கப்பட்ட பயனர்களுக்கும் இடையிலான தனிப்பட்ட உரையாடல்",
"a user": "ஒரு பயனர்",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "தன்னியக்க உருவாக்கத்தை ஏற்கவும்\nப்ராம்ட் மாறிக்கு செல்லவும்",
"Access": "அணுகல்",
"Access Control": "அணுகல் கட்டுப்பாடு",
@@ -343,6 +344,7 @@
"Chat Menu": "",
"Chat moved successfully": "அரட்டை வெற்றிகரமாக நகர்த்தப்பட்டது",
"Chat Permissions": "அரட்டை அனுமதிகள்",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "அரட்டை வெற்றிகரமாக பகிரப்பட்டது.",
"Chat Uploads": "",
"Chat Variables": "",
@@ -494,6 +496,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "கோப்பைப் படிக்க முடியவில்லை.",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "CPU",
"Create": "உருவாக்கு",
@@ -919,6 +922,8 @@
"Experience": "",
"Experimental": "பரிசோதனை",
"Explain": "விளக்கவும்",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "ஆராயப்பட்டது",
"Exploring": "ஆராய்கிறது",
"Export": "ஏற்றுமதி",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "பின்தொடர்தல்: {{question}}",
"Followed instructions perfectly": "வழிமுறைகளை சரியாகப் பின்பற்றினார்",
"for placeholders": "ஒதுக்கிடங்களுக்கு",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "UI இல் {{name}} பற்றிய தகவலைப் பெறவும்",
"Get started": "தொடங்குங்கள்",
"Get started with {{WEBUI_NAME}}": "{{WEBUI_NAME}} உடன் தொடங்கவும்",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "உலகளாவிய",
"Good Response": "நல்ல பதில்",
"Google": "கூகுள்",
@@ -1118,6 +1126,8 @@
"Height": "உயரம்",
"Hello, {{name}}": "வணக்கம், {{name}}",
"Help": "உதவி",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "சிறந்த மாதிரிகளைக் கண்டறிய சமூகத்திற்கு உதவுங்கள்",
"Help us translate Open WebUI!": "",
"Hex Color": "ஹெக்ஸ் கலர்",
@@ -1148,6 +1158,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "செயலற்ற நேரம் முடிந்தது",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "படம்",
"Image Generation": "பட உருவாக்கம்",
"Image Max Compression Size": "படத்தின் அதிகபட்ச சுருக்க அளவு",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "உள்ளீட்டு விசை (எ.கா. உரை, unet_name, படிகள்)",
"Input needed": "",
"Input Variables": "உள்ளீட்டு மாறிகள்",
- "Insert": "செருகு",
"Insert into note": "",
"Instructions": "வழிமுறைகள்",
"Integrations": "ஒருங்கிணைப்புகள்",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "அதிகபட்சமாக 3 மாடல்களை ஒரே நேரத்தில் பதிவிறக்கம் செய்யலாம். பிறகு முயற்சிக்கவும்.",
"May": "மே",
"MBR": "MBR",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "MCP ஆதரவு சோதனையானது மற்றும் அதன் விவரக்குறிப்பு அடிக்கடி மாறுகிறது, இது இணக்கமின்மைக்கு வழிவகுக்கும். OpenAPI விவரக்குறிப்பு ஆதரவு நேரடியாக Open WebUI குழுவால் பராமரிக்கப்படுகிறது, இது இணக்கத்திற்கான மிகவும் நம்பகமான விருப்பமாக அமைகிறது.",
"Medium": "நடுத்தர",
"Member removed successfully": "உறுப்பினர் வெற்றிகரமாக நீக்கப்பட்டார்",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "அக்டோபர்",
+ "of a website's sticky header": "",
"Off": "ஆஃப்",
"Okay, Let's Go!": "சரி, போகலாம்!",
"OLED Dark": "OLED இருண்ட",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "OpenAI API விசை தேவை.",
"OpenAI API settings updated": "OpenAI API அமைப்புகள் புதுப்பிக்கப்பட்டன",
"OpenAI URL/Key required.": "OpenAI URL/விசை தேவை.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "OpenAPI விவரக்குறிப்பு",
"openapi.json URL or Path": "openapi.json URL அல்லது பாதை",
"optional": "விருப்பமானது",
@@ -1610,6 +1619,7 @@
"out of": "இல்",
"Output": "வெளியீடு",
"OUTPUT": "வெளியீடு",
+ "Overcome procrastination": "",
"Overview": "கண்ணோட்டம்",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -3056,6 +3066,8 @@
"Show Files": "கோப்புகளைக் காட்டு",
"Show Hidden Files": "",
"Show image preview": "படத்தின் முன்னோட்டத்தைக் காட்டு",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "மாதிரியைக் காட்டு",
"Show more": "",
"Show or switch the current model.": "",
@@ -3169,6 +3181,8 @@
"Task List": "பணி பட்டியல்",
"Tasks": "பணிகள்",
"tasks completed": "பணிகள் நிறைவடைந்தன",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "மேலும் எங்களிடம் கூறுங்கள்:",
"Temporary": "",
"Temporary Chat": "தற்காலிக அரட்டை",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "கட்டிப்பிடிக்கும் முகம் தீர்வு (பதிவிறக்கம்) URL",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "அட ஓ! பதிலில் சிக்கல் ஏற்பட்டது.",
+ "Unarchive": "",
"Unarchive Chat": "அரட்டையை மீட்டெடுக்கவும்",
"Unassigned": "",
"Underline": "அடிக்கோடு",
@@ -3412,6 +3427,7 @@
"Visible": "தெரியும்",
"Visible to all users": "அனைத்து பயனர்களுக்கும் தெரியும்",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "குரல்",
"Voice Input": "குரல் உள்ளீடு",
"Voice mode": "குரல் முறை",
@@ -3442,6 +3458,7 @@
"Weekly": "",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "நீங்கள் எதை அடைய முயற்சிக்கிறீர்கள்?",
"What are you working on?": "நீங்கள் என்ன வேலை செய்கிறீர்கள்?",
"What is NOT shared:": "NOT என்பது என்ன பகிரப்பட்டது:",
diff --git a/src/lib/i18n/locales/th-TH/translation.json b/src/lib/i18n/locales/th-TH/translation.json
index 8db790c3592c..2875aa1eed42 100644
--- a/src/lib/i18n/locales/th-TH/translation.json
+++ b/src/lib/i18n/locales/th-TH/translation.json
@@ -62,6 +62,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "เวอร์ชันใหม่ (v{{LATEST_VERSION}}) พร้อมให้ใช้งานแล้ว",
"A private conversation between you and selected users": "การสนทนาส่วนตัวระหว่างคุณและผู้ใช้ที่เลือก",
"a user": "ผู้ใช้",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "ยอมรับการสร้างอัตโนมัติ\nข้ามไปยังตัวแปรพรอมต์",
"Access": "การเข้าถึง",
"Access Control": "การควบคุมการเข้าถึง",
@@ -334,6 +335,7 @@
"Chat Menu": "",
"Chat moved successfully": "ย้ายแชทสำเร็จแล้ว",
"Chat Permissions": "สิทธิ์การแชท",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "",
"Chat Uploads": "",
"Chat Variables": "",
@@ -484,6 +486,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "สร้าง",
@@ -907,6 +910,8 @@
"Experience": "",
"Experimental": "การทดลอง",
"Explain": "อธิบาย",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "",
"Exploring": "",
"Export": "ส่งออก",
@@ -1034,6 +1039,7 @@
"Follow up: {{question}}": "",
"Followed instructions perfectly": "ปฏิบัติตามคำแนะนำอย่างสมบูรณ์แบบ",
"for placeholders": "",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1081,6 +1087,8 @@
"Get information on {{name}} in the UI": "ดูข้อมูลเกี่ยวกับ {{name}} ใน UI",
"Get started": "เริ่มต้น",
"Get started with {{WEBUI_NAME}}": "เริ่มต้นใช้งาน {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "ทั้งหมด",
"Good Response": "การตอบกลับที่ดี",
"Google": "",
@@ -1106,6 +1114,8 @@
"Height": "ความสูง",
"Hello, {{name}}": "สวัสดี {{name}}",
"Help": "ช่วยเหลือ",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "",
"Help us translate Open WebUI!": "",
"Hex Color": "ค่าสี Hex",
@@ -1136,6 +1146,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "รูปภาพ",
"Image Generation": "การสร้างภาพ",
"Image Max Compression Size": "ขนาดบีบอัดรูปภาพสูงสุด",
@@ -1168,7 +1179,6 @@
"Input Key (e.g. text, unet_name, steps)": "คีย์อินพุต (เช่น text, unet_name, steps)",
"Input needed": "",
"Input Variables": "ตัวแปรอินพุต",
- "Insert": "แทรก",
"Insert into note": "",
"Instructions": "",
"Integrations": "การเชื่อมต่อระบบ",
@@ -1296,7 +1306,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "สามารถดาวน์โหลดโมเดลได้สูงสุด 3 โมเดลในเวลาเดียวกัน โปรดลองอีกครั้งในภายหลัง",
"May": "พฤษภาคม",
"MBR": "",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "การรองรับ MCP ยังเป็นแบบทดลองและมีการเปลี่ยนแปลงสเปกบ่อยครั้ง ซึ่งอาจทำให้เกิดปัญหาความไม่เข้ากันได้ การรองรับสเปก OpenAPI นั้นดูแลโดยทีม Open WebUI โดยตรง จึงเป็นตัวเลือกที่เชื่อถือได้มากกว่าในด้านความเข้ากันได้",
"Medium": "ปานกลาง",
"Member removed successfully": "",
@@ -1535,6 +1544,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "ตุลาคม",
+ "of a website's sticky header": "",
"Off": "ปิด",
"Okay, Let's Go!": "ตกลง ไปกันเลย!",
"OLED Dark": "โหมดมืด OLED",
@@ -1584,7 +1594,6 @@
"OpenAI API Key is required.": "จำเป็นต้องใช้ OpenAI API Key",
"OpenAI API settings updated": "อัปเดตการตั้งค่า OpenAI API แล้ว",
"OpenAI URL/Key required.": "จำเป็นต้องระบุ URL/คีย์ OpenAI",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "สเปก OpenAPI",
"openapi.json URL or Path": "URL หรือพาธของ openapi.json",
"optional": "",
@@ -1597,6 +1606,7 @@
"out of": "",
"Output": "",
"OUTPUT": "เอาต์พุต",
+ "Overcome procrastination": "",
"Overview": "ภาพรวม",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -3040,6 +3050,8 @@
"Show Files": "",
"Show Hidden Files": "",
"Show image preview": "แสดงตัวอย่างรูปภาพ",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "แสดงโมเดล",
"Show more": "",
"Show or switch the current model.": "",
@@ -3152,6 +3164,8 @@
"Task List": "รายการงาน",
"Tasks": "งาน",
"tasks completed": "",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "เล่าให้เราฟังเพิ่มเติม:",
"Temporary": "",
"Temporary Chat": "การแชทชั่วคราว",
@@ -3287,6 +3301,7 @@
"Type Hugging Face Resolve (Download) URL": "พิมพ์ URL Hugging Face Resolve (ดาวน์โหลด)",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "โอ๊ะ! มีปัญหากับการตอบกลับ",
+ "Unarchive": "",
"Unarchive Chat": "ยกเลิกการเก็บถาวรแชท",
"Unassigned": "",
"Underline": "ขีดเส้นใต้",
@@ -3395,6 +3410,7 @@
"Visible": "",
"Visible to all users": "",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "เสียง",
"Voice Input": "การป้อนเสียง",
"Voice mode": "โหมดเสียง",
@@ -3425,6 +3441,7 @@
"Weekly": "",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "คุณพยายามจะทำอะไร?",
"What are you working on?": "คุณกำลังทำอะไรอยู่?",
"What is NOT shared:": "",
diff --git a/src/lib/i18n/locales/tk-TM/translation.json b/src/lib/i18n/locales/tk-TM/translation.json
index f498d7825728..e2283529648d 100644
--- a/src/lib/i18n/locales/tk-TM/translation.json
+++ b/src/lib/i18n/locales/tk-TM/translation.json
@@ -5,7 +5,7 @@
"[Last] dddd [at] h:mm A": "",
"[Today at] h:mm A": "",
"[Yesterday at] h:mm A": "",
- "{{ models }}": "{{ modeller }}",
+ "{{ models }}": "{{ models }}",
"{{count}} added lines_one": "",
"{{count}} added lines_other": "",
"{{COUNT}} Available Skills": "",
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "",
"A private conversation between you and selected users": "",
"a user": "ulanyjy",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "",
"Access": "",
"Access Control": "",
@@ -343,6 +344,7 @@
"Chat Menu": "",
"Chat moved successfully": "",
"Chat Permissions": "",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "",
"Chat Uploads": "",
"Chat Variables": "",
@@ -494,6 +496,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "",
@@ -919,6 +922,8 @@
"Experience": "",
"Experimental": "",
"Explain": "",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "",
"Exploring": "",
"Export": "Eksport",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "",
"Followed instructions perfectly": "",
"for placeholders": "",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "",
"Get started": "",
"Get started with {{WEBUI_NAME}}": "",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "",
"Good Response": "",
"Google": "",
@@ -1118,6 +1126,8 @@
"Height": "",
"Hello, {{name}}": "",
"Help": "Kömek",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "",
"Help us translate Open WebUI!": "",
"Hex Color": "",
@@ -1148,6 +1158,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Surat",
"Image Generation": "Surat Döretme",
"Image Max Compression Size": "",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "",
"Input needed": "",
"Input Variables": "",
- "Insert": "",
"Insert into note": "",
"Instructions": "",
"Integrations": "",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "",
"May": "Maý",
"MBR": "",
- "MCP": "",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "",
"Medium": "",
"Member removed successfully": "",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "Oktýabr",
+ "of a website's sticky header": "",
"Off": "",
"Okay, Let's Go!": "",
"OLED Dark": "",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "",
"OpenAI API settings updated": "",
"OpenAI URL/Key required.": "",
- "OpenAPI": "",
"OpenAPI Spec": "",
"openapi.json URL or Path": "",
"optional": "",
@@ -1610,6 +1619,7 @@
"out of": "",
"Output": "",
"OUTPUT": "",
+ "Overcome procrastination": "",
"Overview": "",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -3056,6 +3066,8 @@
"Show Files": "",
"Show Hidden Files": "",
"Show image preview": "",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Modeli Görkez",
"Show more": "",
"Show or switch the current model.": "",
@@ -3169,6 +3181,8 @@
"Task List": "",
"Tasks": "",
"tasks completed": "",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "",
"Temporary": "",
"Temporary Chat": "",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "",
+ "Unarchive": "",
"Unarchive Chat": "",
"Unassigned": "",
"Underline": "",
@@ -3412,6 +3427,7 @@
"Visible": "",
"Visible to all users": "",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "",
"Voice Input": "Ses Girdi",
"Voice mode": "",
@@ -3442,6 +3458,7 @@
"Weekly": "",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "",
"What are you working on?": "",
"What is NOT shared:": "",
diff --git a/src/lib/i18n/locales/tr-TR/translation.json b/src/lib/i18n/locales/tr-TR/translation.json
index 6b73121a9224..38e727119abb 100644
--- a/src/lib/i18n/locales/tr-TR/translation.json
+++ b/src/lib/i18n/locales/tr-TR/translation.json
@@ -6,8 +6,8 @@
"[Today at] h:mm A": "[Bugün saat] HH:mm",
"[Yesterday at] h:mm A": "[Dün saat] HH:mm",
"{{ models }}": "{{ models }}",
- "{{count}} added lines_one": "",
- "{{count}} added lines_other": "",
+ "{{count}} added lines_one": "{{count}} eklenen satır",
+ "{{count}} added lines_other": "{{count}} eklenen satır",
"{{COUNT}} Available Skills": "{{COUNT}} Yetenek Mevcut",
"{{COUNT}} Available Tools": "{{COUNT}} Kullanılabilir Araç",
"{{COUNT}} characters": "{{COUNT}} karakter",
@@ -27,8 +27,8 @@
"{{count}} of {{total}} accessible_one": "Erişilebilir: {{total}} / {{count}}",
"{{count}} of {{total}} accessible_other": "Erişilebilir: {{total}} / {{count}}",
"{{COUNT}} pipeline(s) selected": "{{COUNT}} pipeline seçildi",
- "{{count}} removed lines_one": "",
- "{{count}} removed lines_other": "",
+ "{{count}} removed lines_one": "{{count}} silinen satır",
+ "{{count}} removed lines_other": "{{count}} silinen satır",
"{{COUNT}} Replies": "{{COUNT}} Yanıt",
"{{COUNT}} Rows": "{{COUNT}} satır",
"{{count}} selected_one": "{{count}} seçildi",
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Yeni bir sürüm (v{{LATEST_VERSION}}) artık mevcut.",
"A private conversation between you and selected users": "Sizinle seçili kullanıcılar arasında özel bir konuşma",
"a user": "bir kullanıcı",
+ "about the Roman Empire": "Roma İmparatorluğu hakkında",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Otomatik Tamamlama Oluşturmayı Kabul Et\nPrompt Değişkenine Git",
"Access": "Erişim",
"Access Control": "Erişim Kontrolü",
@@ -238,6 +239,7 @@
"Attach Notes": "Not Ekle",
"Attach Webpage": "Web sayfası ekle",
"Attention to detail": "Ayrıntılara dikkat",
+ "Audio playback failed": "Ses oynatma başarısız oldu",
"Audio player": "Ses oynatıcı",
"August": "Ağustos",
"Auth": "Yetki",
@@ -272,11 +274,11 @@
"Azure AI Speech": "Azure AI Konuşma",
"Azure OpenAI": "Azure OpenAI",
"Back": "Geri",
- "Background Image": "",
- "Background image must be at most 25 megapixels.": "",
- "Background image must be at most 5 MiB.": "",
- "Background image must be PNG, JPEG, WebP, or GIF.": "",
- "Background image preview": "",
+ "Background Image": "Arka Plan Görseli",
+ "Background image must be at most 25 megapixels.": "Arka plan görseli en fazla 25 megapiksel olabilir.",
+ "Background image must be at most 5 MiB.": "Arka plan görseli en fazla 5 MiB olabilir.",
+ "Background image must be PNG, JPEG, WebP, or GIF.": "Arka plan görseli PNG, JPEG, WebP veya GIF formatında olmalıdır.",
+ "Background image preview": "Arka plan görseli önizlemesi",
"Background sub-agent finished": "Arka plan alt ajanı tamamlandı",
"background sub-agents": "arka plan alt ajanları",
"Bad Response": "Kötü Yanıt",
@@ -343,6 +345,7 @@
"Chat Menu": "Sohbet Menüsü",
"Chat moved successfully": "Sohbet başarıyla taşındı",
"Chat Permissions": "Sohbet İzinleri",
+ "Chat unarchived.": "Sohbet arşivden çıkarıldı.",
"Chat unshared successfully.": "Sohbet paylaşımı başarıyla kaldırıldı.",
"Chat Uploads": "Sohbet Yüklemeleri",
"Chat Variables": "Sohbet Değişkenleri",
@@ -361,7 +364,6 @@
"Citation": "Alıntı",
"Citations": "Alıntılar",
"Clear": "Temizle",
- "Clear filters to reorder": "Yeniden sıralamak için filtreleri temizle",
"Clear Memory": "Belleği Temizle",
"Clear search": "Aramayı temizle",
"Clear status": "Durumu temizle",
@@ -448,7 +450,7 @@
"Connection lost. Reconnecting...": "Bağlantı kesildi. Yeniden bağlanılıyor...",
"Connection successful": "Bağlantı başarılı",
"Connection Type": "Bağlantı Tipi",
- "Connections managed through the Admin Panel are recommended for everyday use. Direct connections provide convenient access to your own endpoints, but rely on your browser session to keep requests running, making them better suited to testing and temporary use.": "",
+ "Connections managed through the Admin Panel are recommended for everyday use. Direct connections provide convenient access to your own endpoints, but rely on your browser session to keep requests running, making them better suited to testing and temporary use.": "Yönetim Paneli üzerinden yönetilen bağlantılar günlük kullanım için önerilir. Doğrudan bağlantılar kendi uç noktalarınıza kolay erişim sağlar, ancak isteklerin çalışmaya devam etmesi tarayıcı oturumunuza bağlıdır; bu yüzden test ve geçici kullanım için daha uygundur.",
"Connections saved successfully": "Bağlantılar başarıyla kaydedildi",
"Connections settings updated": "Bağlantı ayarları güncellendi",
"Contact Admin for WebUI Access": "WebUI Erişimi için Yöneticiyle İletişime Geçin",
@@ -494,13 +496,14 @@
"Could not check for updates": "Güncellemeler kontrol edilemedi",
"Could not load release notes.": "Sürüm notları yüklenemedi.",
"Could not read file.": "Dosya okunamadı.",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "En çok hangi durumlarda erteleme yaptığımı sorarak başlar mısın, sonra bunu aşmam için bana bazı öneriler verir misin?",
"Couldn't find your language?": "Dilinizi bulamadınız mı?",
"CPU": "İşlemci",
"Create": "Oluştur",
"Create a knowledge base": "Bir bilgi tabanı oluştur",
"Create a model": "Bir model oluştur",
"Create a new note": "Yeni bir not oluştur",
- "Create a reusable terminal skill from this chat.": "",
+ "Create a reusable terminal skill from this chat.": "Bu sohbetten yeniden kullanılabilir bir terminal becerisi oluştur.",
"Create Account": "Hesap Oluştur",
"Create Admin Account": "Yönetici Hesabı Oluştur",
"Create announcements shown to users in the app.": "Uygulamada kullanıcılara gösterilecek duyurular oluşturun.",
@@ -511,8 +514,8 @@
"Create new key": "Yeni anahtar oluştur",
"Create Prompt": "Prompt Oluştur",
"Create scheduled prompts that run automatically on a recurring basis.": "Yinelenen şekilde otomatik olarak çalışan zamanlanmış istemler oluşturun.",
- "Create skill": "",
- "Create skill: create a reusable terminal skill from this chat.": "",
+ "Create skill": "Beceri oluştur",
+ "Create skill: create a reusable terminal skill from this chat.": "Beceri oluştur: bu sohbetten yeniden kullanılabilir bir terminal becerisi oluştur.",
"Create your first note from the Create menu.": "Oluştur menüsünden ilk notunuzu oluşturun.",
"Created": "Oluşturuldu",
"Created at": "Oluşturulma tarihi",
@@ -615,7 +618,7 @@
"Detected Variables": "Algılanan Değişkenler",
"Dictate": "Dikte Et",
"Didn't fully follow instructions": "Talimatları tam olarak takip etmedi",
- "Diff settings": "",
+ "Diff settings": "Fark ayarları",
"Direct": "Doğrudan",
"Direct Message": "Doğrudan Mesaj",
"Direct Tool Servers": "Doğrudan Araç Sunucuları",
@@ -839,7 +842,7 @@
"Enter skill instructions in markdown...": "Yetenek talimatlarını Markdown olarak girin...",
"Enter Sougou Search API sID": "Sougou Search API sID'sini Girin",
"Enter Sougou Search API SK": "Sougou Search API SK'sini Girin",
- "Enter Staan API Key": "",
+ "Enter Staan API Key": "Staan API Anahtarını Girin",
"Enter stop sequence": "Durdurma dizisini girin",
"Enter system prompt": "Sistem promptunu girin",
"Enter system prompt here": "Sistem promptunu buraya girin.",
@@ -919,6 +922,8 @@
"Experience": "Deneyim",
"Experimental": "Deneysel",
"Explain": "Açıkla",
+ "Explain options trading": "Opsiyon ticaretini açıkla",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "Hisse alıp satmaya aşinaysam, opsiyon ticaretini basit terimlerle açıklar mısın?",
"Explored": "Keşfedildi",
"Exploring": "Keşfediliyor",
"Export": "Dışa Aktar",
@@ -937,8 +942,8 @@
"External Knowledge Source": "Harici Bilgi Kaynağı",
"External vectors must be generated with the same embedding model configured in Open WebUI.": "Harici vektörler, Open WebUI'da yapılandırılan aynı gömme modeliyle oluşturulmalıdır.",
"Extract action items from this note.": "Bu nottan eylem maddelerini çıkar.",
- "Extracted text lines": "",
- "Extracting text and comparing…": "",
+ "Extracted text lines": "Çıkarılan metin satırları",
+ "Extracting text and comparing…": "Metin çıkarılıyor ve karşılaştırılıyor…",
"Failed to add file.": "Dosya eklenemedi.",
"Failed to add members": "Üyeler eklenemedi",
"Failed to archive chat.": "Sohbet arşivlenemedi.",
@@ -982,7 +987,7 @@
"Failed to save chat variables": "Sohbet değişkenleri kaydedilemedi",
"Failed to save connections": "Bağlantılar kaydedilemedi",
"Failed to save conversation": "Sohbet kaydedilemedi",
- "Failed to save model": "",
+ "Failed to save model": "Model kaydedilemedi",
"Failed to save models configuration": "Modeller yapılandırması kaydedilemedi",
"Failed to save policy: {{error}}": "İlke kaydedilemedi: {{error}}",
"Failed to save terminal servers": "Terminal sunucuları kaydedilemedi",
@@ -992,7 +997,7 @@
"Failed to update settings": "Ayarlar güncellenemedi",
"Failed to update status": "Durum güncellenemedi",
"Failed to update webhook": "Webhook güncellenemedi",
- "Failed to upload background image.": "",
+ "Failed to upload background image.": "Arka plan görseli yüklenemedi.",
"Failed to upload file.": "Dosya yüklenemedi.",
"Features Permissions": "Özellik Yetkileri",
"February": "Şubat",
@@ -1009,7 +1014,7 @@
"File content": "Dosya içeriği",
"File content updated successfully.": "Dosya içeriği başarıyla güncellendi.",
"File deleted successfully.": "Dosya başarıyla silindi.",
- "File differences": "",
+ "File differences": "Dosya farkları",
"File Mode": "Dosya Modu",
"File moved.": "Dosya taşındı.",
"File name": "Dosya adı",
@@ -1046,14 +1051,15 @@
"Follow up: {{question}}": "Takip sorusu: {{question}}",
"Followed instructions perfectly": "Talimatları mükemmel şekilde takip etti",
"for placeholders": "yer tutucular için",
+ "for what to do with my kids' art": "çocuklarımın sanat eserleriyle ne yapacağıma dair",
"Fork": "Dallandır",
"Fork chat": "Sohbeti dallandır",
"Fork the current chat branch into a new chat.": "Mevcut sohbet dalını yeni bir sohbete dallandırın.",
"Fork: fork the current chat branch into a new chat.": "Dallandır: Mevcut sohbet dalını yeni bir sohbete dallandırın.",
"Forking chat...": "Sohbet dallandırılıyor...",
"Form": "Form",
- "Format Markdown as you type and paste. Turn off to keep Markdown characters and paste plain text. Existing formatting is preserved.": "",
- "Formatting": "",
+ "Format Markdown as you type and paste. Turn off to keep Markdown characters and paste plain text. Existing formatting is preserved.": "Yazarken ve yapıştırırken Markdown'ı biçimlendirir. Markdown karakterlerini korumak ve düz metin yapıştırmak için kapatın. Mevcut biçimlendirme korunur.",
+ "Formatting": "Biçimlendirme",
"Formatting may be inconsistent from source.": "Biçimlendirme kaynaktan tutarsız olabilir.",
"Forward": "İlet",
"Forward cookies": "Çerezleri ilet",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "{{name}} hakkında arayüzde bilgi alın",
"Get started": "Başlayın",
"Get started with {{WEBUI_NAME}}": "{{WEBUI_NAME}} ile başlayın",
+ "Give me ideas": "Fikir ver",
+ "give me tips": "ipucu ver",
"Global": "Evrensel",
"Good Response": "İyi Yanıt",
"Google": "Google",
@@ -1118,6 +1126,8 @@
"Height": "Yükseklik",
"Hello, {{name}}": "Merhaba, {{name}}",
"Help": "Yardım",
+ "Help me study": "Çalışmama yardım et",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "Kelime çalışmama yardım et: boşluğu doldurmam için bir cümle yaz, ben de doğru seçeneği bulmaya çalışayım.",
"Help the community discover great models": "Topluluğun harika modelleri keşfetmesine yardımcı olun",
"Help us translate Open WebUI!": "Open WebUI'ı çevirmemize yardım edin!",
"Hex Color": "Onaltılık Renk",
@@ -1128,7 +1138,7 @@
"Hide from Sidebar": "Kenar Çubuğundan Gizle",
"Hide Hidden Files": "Gizli Dosyaları Gizle",
"Hide Model": "Modeli Gizle",
- "Hide whitespace": "",
+ "Hide whitespace": "Boşlukları gizle",
"High": "Yüksek",
"History": "Geçmiş",
"Home": "Ana Sayfa",
@@ -1148,6 +1158,7 @@
"Identity audit": "Kimlik denetimi",
"Idle only": "Yalnızca boşta",
"Idle Timeout": "Boşta Kalma Zaman Aşımı",
+ "if I'm familiar with buying and selling stocks": "hisse senedi alım satımına aşinaysam",
"Image": "Görsel",
"Image Generation": "Görüntü Oluşturma",
"Image Max Compression Size": "Görüntü Maksimum Sıkıştırma Boyutu",
@@ -1180,12 +1191,11 @@
"Input Key (e.g. text, unet_name, steps)": "Giriş Anahtarı (örn. text, unet_name, steps)",
"Input needed": "Girdi gerekiyor",
"Input Variables": "Giriş Değişkenleri",
- "Insert": "Ekle",
"Insert into note": "Nota ekle",
"Instructions": "Talimatlar",
"Integrations": "Entegrasyonlar",
"Interface Settings Access": "Arayüz Ayarlarına Erişim",
- "Invalid background image.": "",
+ "Invalid background image.": "Geçersiz arka plan görseli.",
"Invalid file format.": "Geçersiz dosya biçimi.",
"Invalid format.": "Geçersiz biçim.",
"Invalid JSON": "Geçersiz JSON",
@@ -1300,16 +1310,15 @@
"Mark as unread": "Okunmadı olarak işaretle",
"Markdown": "Markdown",
"Market": "",
- "Matching tabs: {{count}}_one": "",
- "Matching tabs: {{count}}_other": "",
- "Max Snippets": "",
+ "Matching tabs: {{count}}_one": "Eşleşen sekme: {{count}}",
+ "Matching tabs: {{count}}_other": "Eşleşen sekmeler: {{count}}",
+ "Max Snippets": "Maksimum Parça Sayısı",
"Max tokens to retrieve (1024-32768, default 8192)": "Getirilecek maksimum token (1024-32768, varsayılan 8192)",
- "Maximum extra snippets returned per result. Set to 0 to disable them.": "",
+ "Maximum extra snippets returned per result. Set to 0 to disable them.": "Her sonuç için döndürülen maksimum ek parça sayısı. Bunları devre dışı bırakmak için 0 olarak ayarlayın.",
"Maximum number of files per folder is {{max}}.": "Klasör başına maksimum dosya sayısı {{max}}.",
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Aynı anda en fazla 3 model indirilebilir. Lütfen daha sonra tekrar deneyin.",
"May": "Mayıs",
"MBR": "MBR",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "MCP desteği deneyseldir ve belirtimi sık sık değiştiği için uyumsuzluklara yol açabilir. OpenAPI belirtim desteği doğrudan Open WebUI ekibi tarafından sürdürülür ve bu da onu uyumluluk açısından daha güvenilir seçenek yapar.",
"Medium": "Orta",
"Member removed successfully": "Üye başarıyla kaldırıldı",
@@ -1359,7 +1368,7 @@
"Model filesystem path detected. Model shortname is required for update, cannot continue.": "Model dosya sistemi yolu algılandı. Güncelleme için model kısa adı gerekli, devam edilemiyor.",
"Model Filtering": "Model Filtreleme",
"Model ID": "Model ID",
- "Model ID cannot contain whitespace.": "",
+ "Model ID cannot contain whitespace.": "Model ID boşluk içeremez.",
"Model ID is already added": "Model kimliği zaten eklenmiş",
"Model ID is required.": "Model ID'si gereklidir.",
"Model IDs": "Model ID'leri",
@@ -1513,7 +1522,7 @@
"No suggestion prompts": "Önerilen prompt yok",
"No Terminal connection configured.": "Yapılandırılmış Terminal bağlantısı yok.",
"No terminal connections configured.": "Yapılandırılmış terminal bağlantısı yok.",
- "No text differences": "",
+ "No text differences": "Metin farkı yok",
"No tool server connections configured.": "Yapılandırılmış araç sunucusu bağlantısı yok.",
"No tools accessible": "Erişilebilir araç yok",
"No tools found": "Araç bulunamadı",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "OAuth Sunucu URL'si",
"OAuth session disconnected": "OAuth oturumu bağlantısı kesildi",
"October": "Ekim",
+ "of a website's sticky header": "bir web sitesinin yapışık başlığı için",
"Off": "Kapalı",
"Okay, Let's Go!": "Tamam, Hadi Başlayalım!",
"OLED Dark": "OLED Koyu",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "OpenAI API Anahtarı gereklidir.",
"OpenAI API settings updated": "OpenAI API ayarları güncellendi",
"OpenAI URL/Key required.": "OpenAI URL/Anahtar gereklidir.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "OpenAPI Belirtimi",
"openapi.json URL or Path": "openapi.json URL'si veya Yolu",
"optional": "isteğe bağlı",
@@ -1610,6 +1619,7 @@
"out of": "/",
"Output": "Çıktı",
"OUTPUT": "ÇIKTI",
+ "Overcome procrastination": "Erteleme alışkanlığını aş",
"Overview": "Genel Bakış",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "PaddleOCR-vl API URL'si gereklidir.",
@@ -1672,7 +1682,7 @@
"Please select a valid JSON file": "Lütfen geçerli bir JSON dosyası seçin",
"Please select at least one user for Direct Message channel.": "Doğrudan Mesaj kanalı için lütfen en az bir kullanıcı seçin.",
"Please wait until all files are uploaded.": "Lütfen tüm dosyalar yüklenene kadar bekleyin.",
- "PNG, JPEG, WebP, or GIF. Up to 5 MiB and 25 megapixels.": "",
+ "PNG, JPEG, WebP, or GIF. Up to 5 MiB and 25 megapixels.": "PNG, JPEG, WebP veya GIF. En fazla 5 MiB ve 25 megapiksel.",
"Policy changes apply to newly provisioned terminals. Refresh matching terminals to apply them to existing terminals.": "Politika değişiklikleri yeni sağlanan terminallere uygulanır. Mevcut terminallere uygulamak için eşleşen terminalleri yenileyin.",
"Policy ID": "İlke Kimliği",
"Policy ID is required": "Politika Kimliği gereklidir",
@@ -1756,7 +1766,7 @@
"Refused when it shouldn't have": "Reddedilmemesi gerekirken reddedildi",
"Regenerate": "Tekrar Oluştur",
"Regenerate Response": "Yanıtı Yeniden Oluştur",
- "Region and language of the search results, e.g. en-us.": "",
+ "Region and language of the search results, e.g. en-us.": "Arama sonuçlarının bölge ve dili, örn. en-us.",
"Register Again": "Yeniden Kaydet",
"Register Client": "İstemciyi Kaydet",
"Registered": "Kayıtlı",
@@ -1785,7 +1795,7 @@
"Renamed to {{name}}": "{{name}} olarak yeniden adlandırıldı",
"Reorder": "Yeniden Sırala",
"Repeat": "Tekrarla",
- "Replace": "",
+ "Replace": "Değiştir",
"Reply": "Yanıtla",
"Reply in Thread": "Konuya Yanıtla",
"Reply to thread...": "Konuya yanıt ver...",
@@ -1884,7 +1894,7 @@
"See readme.md for instructions": "Yönergeler için readme.md dosyasına bakın",
"Select": "Seç",
"Select {{modelName}} model": "{{modelName}} modelini seç",
- "Select {{name}}": "",
+ "Select {{name}}": "{{name}} seç",
"Select a base model (e.g. llama3, gpt-4o)": "Bir temel model seçin (örn. llama3, gpt-4o)",
"Select a conversation to preview": "Bir sohbeti önizlemek için seç",
"Select a engine": "Bir motor seç",
@@ -2160,8 +2170,8 @@
"settings.admin.connections.cacheBaseModelList.label": "Temel Model Listesini Önbelleğe Al",
"settings.admin.connections.directConnections.description": "Doğrudan Bağlantılar, kullanıcıların kendi OpenAI uyumlu API uç noktalarına bağlanmasına olanak tanır.",
"settings.admin.connections.directConnections.label": "Doğrudan Bağlantılar",
- "settings.admin.connections.directIntegrations.description": "",
- "settings.admin.connections.directIntegrations.label": "",
+ "settings.admin.connections.directIntegrations.description": "Yöneticiler dahil, kendi araç ve terminal bağlantılarını yönetme izni olan kullanıcılar için Entegrasyonlar sekmesini gösterir. Sekmeyi gizlemek mevcut bağlantıları devre dışı bırakmaz.",
+ "settings.admin.connections.directIntegrations.label": "Doğrudan Entegrasyonlar",
"settings.admin.connections.manageOllamaApiConnections.description": "Ollama'ya erişmede sorun mu yaşıyorsunuz?",
"settings.admin.connections.manageOllamaApiConnections.label": "Ollama API Bağlantılarını Yönet",
"settings.admin.connections.manageOpenaiApiConnections.label": "OpenAI API Bağlantılarını Yönet",
@@ -2660,8 +2670,8 @@
"settings.admin.web.kagiSearchApiKey.label": "Kagi Arama API Anahtarı",
"settings.admin.web.language.label": "Dil",
"settings.admin.web.linkupApiKey.label": "Linkup API Anahtarı",
- "settings.admin.web.maxContentLength.description": "",
- "settings.admin.web.maxContentLength.label": "",
+ "settings.admin.web.maxContentLength.description": "Her Exa arama sonucu için maksimum karakter sayısı. Sınır yoksa boş bırakın.",
+ "settings.admin.web.maxContentLength.label": "Maksimum İçerik Uzunluğu",
"settings.admin.web.microsoftWebIqApiBaseUrl.label": "Microsoft Web IQ API Temel URL'si",
"settings.admin.web.microsoftWebIqApiKey.label": "Microsoft Web IQ API Anahtarı",
"settings.admin.web.mojeekSearchApiKey.label": "Mojeek Search API Anahtarı",
@@ -2991,7 +3001,7 @@
"settings.personal.personalization.savedMemories.label": "Kaydedilen Hafızalar",
"settings.personal.personalization.sections.memory.title": "Bellek",
"settings.personal.personalization.title": "Kişiselleştirme",
- "settings.personal.shortcuts.acceptAutocomplete.label": "",
+ "settings.personal.shortcuts.acceptAutocomplete.label": "Otomatik Tamamlamayı Kabul Et\\nPrompt Değişkenine Git",
"settings.personal.shortcuts.addPrompt.label": "Özel Prompt Ekle",
"settings.personal.shortcuts.allowToolCall.label": "Araç Çağrısına İzin Ver",
"settings.personal.shortcuts.attachFile.label": "Bilgi Tabanından Dosya Ekle",
@@ -3056,6 +3066,8 @@
"Show Files": "Dosyaları Göster",
"Show Hidden Files": "Gizli Dosyaları Göster",
"Show image preview": "Görsel önizlemesini göster",
+ "Show me a code snippet": "Bir kod parçacığı göster",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "Bir web sitesinin yapışık başlığı için CSS ve JavaScript kod parçacığı göster.",
"Show Model": "Modeli Göster",
"Show more": "Daha fazla göster",
"Show or switch the current model.": "Mevcut modeli göster veya değiştir.",
@@ -3104,7 +3116,7 @@
"Speech recognition error: {{error}}": "Konuşma tanıma hatası: {{error}}",
"Speech-to-Text Language": "Konuşmadan Metne Dili",
"Sponsor on GitHub": "GitHub'da Destek Ol",
- "Staan API Key": "",
+ "Staan API Key": "Staan API Anahtarı",
"Start a new conversation": "Yeni bir konuşma başlat",
"Start of the channel": "Kanalın başlangıcı",
"Start Tag": "Başlangıç Etiketi",
@@ -3140,7 +3152,7 @@
"Summarize this note.": "Bu notu özetle.",
"Support": "Destek",
"Support this plugin:": "Bu eklentiyi destekleyin:",
- "Swap": "",
+ "Swap": "Yer değiştir",
"Switch camera": "Kamerayı değiştir",
"Switch to JSON editor": "JSON düzenleyiciye geç",
"Switch to visual editor": "Görsel düzenleyiciye geç",
@@ -3169,6 +3181,8 @@
"Task List": "Görev Listesi",
"Tasks": "Görevler",
"tasks completed": "görev tamamlandı",
+ "Tell me a fun fact": "Bana eğlenceli bir bilgi söyle",
+ "Tell me a random fun fact about the Roman Empire": "Bana Roma İmparatorluğu hakkında rastgele eğlenceli bir bilgi söyle",
"Tell us more:": "Bize daha fazlasını anlat:",
"Temporary": "Geçici",
"Temporary Chat": "Geçici Sohbet",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "HuggingFace Çözümleme (İndirme) URL'sini Yazın",
"Type your answer": "Cevabınızı yazın",
"Uh-oh! There was an issue with the response.": "Opps! Yanıtla ilgili bir sorun oluştu",
+ "Unarchive": "Arşivden Çıkar",
"Unarchive Chat": "Sohbeti Arşivden Çıkar",
"Unassigned": "Atanmamış",
"Underline": "Altı Çizili",
@@ -3340,7 +3355,7 @@
"Upload failed for {{failed}} of {{total}} files.": "{{total}} dosyadan {{failed}} tanesinin yüklenmesi başarısız oldu.",
"Upload files": "Dosyaları yükle",
"Upload Files": "Dosyaları Yükle",
- "Upload Folder": "",
+ "Upload Folder": "Klasör Yükle",
"Upload Model": "Model Yükle",
"Upload Photo": "Fotoğraf Yükle",
"Upload profile image": "Profil resmi yükle",
@@ -3412,6 +3427,7 @@
"Visible": "Görünür",
"Visible to all users": "Tüm kullanıcılara görünür",
"Visual": "Görsel",
+ "vocabulary for a college entrance exam": "üniversite sınavı için kelime çalışması",
"Voice": "Ses",
"Voice Input": "Ses Girişi",
"Voice mode": "Sesli mod",
@@ -3442,6 +3458,7 @@
"Weekly": "Haftalık",
"Weekly at": "Haftalık:",
"Welcome to your AI home.": "Yapay zeka merkezinize hoş geldiniz.",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "Çocuklarımın sanat eserleriyle yapabileceğim 5 yaratıcı şey neler? Onları atmak istemiyorum, ama aynı zamanda çok dağınık oluyor.",
"What are you trying to achieve?": "Ne yapmaya çalışıyorsunuz?",
"What are you working on?": "Üzerinde çalıştığınız nedir?",
"What is NOT shared:": "PaylaşılMAYANlar:",
diff --git a/src/lib/i18n/locales/ug-CN/translation.json b/src/lib/i18n/locales/ug-CN/translation.json
index 62de1fbe9c75..222cf11ba4cb 100644
--- a/src/lib/i18n/locales/ug-CN/translation.json
+++ b/src/lib/i18n/locales/ug-CN/translation.json
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "يېڭى نەشرى (v{{LATEST_VERSION}}) مەۋجۇت.",
"A private conversation between you and selected users": "",
"a user": "ئىشلەتكۈچى",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "",
"Access": "زىيارەت",
"Access Control": "زىيارەت باشقۇرۇش",
@@ -343,6 +344,7 @@
"Chat Menu": "",
"Chat moved successfully": "",
"Chat Permissions": "سۆھبەت ھوقۇقلىرى",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "",
"Chat Uploads": "",
"Chat Variables": "",
@@ -494,6 +496,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "قۇرۇش",
@@ -919,6 +922,8 @@
"Experience": "",
"Experimental": "تەجىربىلىك",
"Explain": "چۈشەندۈرۈش",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "",
"Exploring": "",
"Export": "چىقىرىش",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "",
"Followed instructions perfectly": "يول كۆرسىتىشگە تولۇق ئەمەل قىلىندى",
"for placeholders": "",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "",
"Get started": "باشلاڭ",
"Get started with {{WEBUI_NAME}}": "{{WEBUI_NAME}} بىلەن باشلاڭ",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "ئۇمۇمىي",
"Good Response": "ياخشى ئىنكاس",
"Google": "",
@@ -1118,6 +1126,8 @@
"Height": "",
"Hello, {{name}}": "ياخشىمۇسىز، {{name}}",
"Help": "ياردەم",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "",
"Help us translate Open WebUI!": "",
"Hex Color": "Hex رەڭ",
@@ -1148,6 +1158,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "رەسىم",
"Image Generation": "رەسىم ھاسىل قىلىش",
"Image Max Compression Size": "رەسىم ئەڭ چوڭ پرىسلاش چوڭلۇقى",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "",
"Input needed": "",
"Input Variables": "",
- "Insert": "",
"Insert into note": "",
"Instructions": "",
"Integrations": "",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "بىر ۋاقىتتا ئەڭ كۆپ 3 مودېل چۈشۈرۈلىدۇ. كىيىنچە قايتا سىناڭ.",
"May": "ماي",
"MBR": "",
- "MCP": "",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "",
"Medium": "",
"Member removed successfully": "",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "ئۆكتەبىر",
+ "of a website's sticky header": "",
"Off": "تاقالغان",
"Okay, Let's Go!": "ماقۇل، باشلايلى!",
"OLED Dark": "OLED قاراڭغۇ",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "OpenAI API ئاچقۇچى زۆرۈر.",
"OpenAI API settings updated": "OpenAI API تەڭشەكلىرى يېڭىلاندى",
"OpenAI URL/Key required.": "OpenAI URL/ئاچقۇچى زۆرۈر.",
- "OpenAPI": "",
"OpenAPI Spec": "",
"openapi.json URL or Path": "openapi.json URL ياكى يولى",
"optional": "",
@@ -1610,6 +1619,7 @@
"out of": "",
"Output": "",
"OUTPUT": "چىقىرىش",
+ "Overcome procrastination": "",
"Overview": "قىسقىچە تونۇشتۇرۇش",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -3056,6 +3066,8 @@
"Show Files": "",
"Show Hidden Files": "",
"Show image preview": "",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "مودېل كۆرسىتىش",
"Show more": "",
"Show or switch the current model.": "",
@@ -3169,6 +3181,8 @@
"Task List": "",
"Tasks": "ۋەزىپىلەر",
"tasks completed": "",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "تېخىمۇ كۆپ ئۇچۇر بېرىڭ:",
"Temporary": "",
"Temporary Chat": "ۋاقىتلىق سۆھبەت",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "Hugging Face چۈشۈرۈش URL كىرگۈزۈڭ",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "ئىنكاستا مەسىلە كۆرۈلدى.",
+ "Unarchive": "",
"Unarchive Chat": "سۆھبەتنى قايتا ئەسلىگە كەلتۈرۈش",
"Unassigned": "",
"Underline": "",
@@ -3412,6 +3427,7 @@
"Visible": "",
"Visible to all users": "",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "ئاۋاز",
"Voice Input": "ئاۋاز كىرگۈزۈش",
"Voice mode": "ئاۋاز ھالىتى",
@@ -3442,6 +3458,7 @@
"Weekly": "",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "نېمىگە ئېرىشمىكچىسىز؟",
"What are you working on?": "نېمە ئىش قىلىۋاتىسىز؟",
"What is NOT shared:": "",
diff --git a/src/lib/i18n/locales/uk-UA/translation.json b/src/lib/i18n/locales/uk-UA/translation.json
index 97723434fd04..d222ab031adb 100644
--- a/src/lib/i18n/locales/uk-UA/translation.json
+++ b/src/lib/i18n/locales/uk-UA/translation.json
@@ -89,6 +89,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Нова версія (v{{LATEST_VERSION}}) зараз доступна.",
"A private conversation between you and selected users": "Приватна розмова між вами та вибраними користувачами",
"a user": "користувача",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "Прийняти згенероване автозаповнення\nПерейти до змінної промту",
"Access": "Доступ",
"Access Control": "Контроль доступу",
@@ -361,6 +362,7 @@
"Chat Menu": "Меню чату",
"Chat moved successfully": "Чат успішно переміщено",
"Chat Permissions": "Дозволи чату",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "Спільний доступ до чату успішно скасовано.",
"Chat Uploads": "Завантаження в чаті",
"Chat Variables": "Змінні чату",
@@ -514,6 +516,7 @@
"Could not check for updates": "Не вдалося перевірити наявність оновлень",
"Could not load release notes.": "Не вдалося завантажити нотатки до випуску.",
"Could not read file.": "Не вдалося прочитати файл.",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "Не знайшли своєї мови?",
"CPU": "CPU",
"Create": "Створити",
@@ -943,6 +946,8 @@
"Experience": "Оформлення",
"Experimental": "Експериментальне",
"Explain": "Пояснити",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "Досліджено",
"Exploring": "Дослідження",
"Export": "Експорт",
@@ -1070,6 +1075,7 @@
"Follow up: {{question}}": "Уточнення: {{question}}",
"Followed instructions perfectly": "Бездоганно дотримувався інструкцій",
"for placeholders": "для заповнювачів",
+ "for what to do with my kids' art": "",
"Fork": "Розгалузити",
"Fork chat": "Розгалузити чат",
"Fork the current chat branch into a new chat.": "Створити новий чат із поточної гілки чату.",
@@ -1117,6 +1123,8 @@
"Get information on {{name}} in the UI": "Отримати інформацію про {{name}} в інтерфейсі",
"Get started": "Почати",
"Get started with {{WEBUI_NAME}}": "Почати з {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Глоб.",
"Good Response": "Гарна відповідь",
"Google": "Google",
@@ -1142,6 +1150,8 @@
"Height": "Висота",
"Hello, {{name}}": "Привіт, {{name}}",
"Help": "Допоможіть",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "Допоможіть спільноті знайти чудові моделі",
"Help us translate Open WebUI!": "Допоможіть нам перекласти Open WebUI!",
"Hex Color": "Шістнадцятковий колір",
@@ -1172,6 +1182,7 @@
"Identity audit": "Аудит ідентичності",
"Idle only": "Лише в режимі очікування",
"Idle Timeout": "Тайм-аут бездіяльності",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Зображення",
"Image Generation": "Генерація зображень",
"Image Max Compression Size": "Максимальний розмір стиснення зображення",
@@ -1204,7 +1215,6 @@
"Input Key (e.g. text, unet_name, steps)": "Ключ введення (напр., text, unet_name, steps)",
"Input needed": "Потрібне введення",
"Input Variables": "Вхідні змінні",
- "Insert": "Вставити",
"Insert into note": "Вставити в примітку",
"Instructions": "Інструкції",
"Integrations": "Інтеграції",
@@ -1335,7 +1345,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Максимум 3 моделі можна завантажити одночасно. Будь ласка, спробуйте пізніше.",
"May": "Травень",
"MBR": "MBR",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "Підтримка MCP є експериментальною, а її специфікація часто змінюється, що може призводити до несумісності. Підтримку специфікації OpenAPI безпосередньо супроводжує команда Open WebUI, тому це надійніший варіант щодо сумісності.",
"Medium": "Середній",
"Member removed successfully": "Учасника успішно видалено",
@@ -1574,6 +1583,7 @@
"OAuth Server URL": "URL-адреса сервера OAuth",
"OAuth session disconnected": "Сеанс OAuth від'єднано",
"October": "Жовтень",
+ "of a website's sticky header": "",
"Off": "Вимк",
"Okay, Let's Go!": "Гаразд, давайте почнемо!",
"OLED Dark": "Темний OLED",
@@ -1623,7 +1633,6 @@
"OpenAI API Key is required.": "Потрібен ключ OpenAI API.",
"OpenAI API settings updated": "Налаштування OpenAI API оновлено",
"OpenAI URL/Key required.": "Потрібен OpenAI URL/ключ.",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "Специфікація OpenAPI",
"openapi.json URL or Path": "URL-адреса або шлях до openapi.json",
"optional": "необов'язково",
@@ -1636,6 +1645,7 @@
"out of": "з",
"Output": "Вивід",
"OUTPUT": "ВИВІД",
+ "Overcome procrastination": "",
"Overview": "Огляд",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "Потрібна URL-адреса API PaddleOCR-vl.",
@@ -3088,6 +3098,8 @@
"Show Files": "Показати файли",
"Show Hidden Files": "Показати сховані файли",
"Show image preview": "Показати попередній перегляд зображення",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Показати модель",
"Show more": "Показати більше",
"Show or switch the current model.": "Показати або змінити поточну модель.",
@@ -3203,6 +3215,8 @@
"Task List": "Список завдань",
"Tasks": "Завдання",
"tasks completed": "завдань виконано",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Розкажи нам більше:",
"Temporary": "Тимчасовий чат",
"Temporary Chat": "Тимчасовий чат",
@@ -3338,6 +3352,7 @@
"Type Hugging Face Resolve (Download) URL": "Введіть URL ресурсу Hugging Face Resolve (завантаження)",
"Type your answer": "Введіть свою відповідь",
"Uh-oh! There was an issue with the response.": "Ой-ой! Сталася проблема з відповіддю.",
+ "Unarchive": "",
"Unarchive Chat": "Розархівувати чат",
"Unassigned": "Не призначено",
"Underline": "Підкреслений",
@@ -3446,6 +3461,7 @@
"Visible": "Видимо",
"Visible to all users": "Видимо всім користувачам",
"Visual": "Візуальний",
+ "vocabulary for a college entrance exam": "",
"Voice": "Голос",
"Voice Input": "Голосове введення",
"Voice mode": "Голосовий режим",
@@ -3476,6 +3492,7 @@
"Weekly": "Щотижня",
"Weekly at": "Щотижня о",
"Welcome to your AI home.": "Ласкаво просимо до вашого дому ШІ.",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "Чого ви прагнете досягти?",
"What are you working on?": "Над чим ти працюєш?",
"What is NOT shared:": "Що НЕ передається:",
diff --git a/src/lib/i18n/locales/ur-PK/translation.json b/src/lib/i18n/locales/ur-PK/translation.json
index c903bb2be4d7..7e725cccc593 100644
--- a/src/lib/i18n/locales/ur-PK/translation.json
+++ b/src/lib/i18n/locales/ur-PK/translation.json
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "نیا ورژن (v{{LATEST_VERSION}}) اب دستیاب ہے",
"A private conversation between you and selected users": "",
"a user": "ایک صارف",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "",
"Access": "",
"Access Control": "",
@@ -343,6 +344,7 @@
"Chat Menu": "",
"Chat moved successfully": "",
"Chat Permissions": "",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "",
"Chat Uploads": "",
"Chat Variables": "",
@@ -494,6 +496,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "",
@@ -919,6 +922,8 @@
"Experience": "",
"Experimental": "تجرباتی",
"Explain": "",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "",
"Exploring": "",
"Export": "برآمد کریں",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "",
"Followed instructions perfectly": "ہدایتوں کی مکمل پیروی کی گئی",
"for placeholders": "",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "",
"Get started": "",
"Get started with {{WEBUI_NAME}}": "",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "عالمی",
"Good Response": "اچھا جواب",
"Google": "",
@@ -1118,6 +1126,8 @@
"Height": "",
"Hello, {{name}}": "ہیلو، {{name}}",
"Help": "مدد",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "",
"Help us translate Open WebUI!": "",
"Hex Color": "",
@@ -1148,6 +1158,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "",
"Image Generation": "",
"Image Max Compression Size": "",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "",
"Input needed": "",
"Input Variables": "",
- "Insert": "",
"Insert into note": "",
"Instructions": "",
"Integrations": "",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "بیک وقت زیادہ سے زیادہ 3 ماڈل ڈاؤن لوڈ کیے جا سکتے ہیں براہ کرم بعد میں دوبارہ کوشش کریں",
"May": "مئی",
"MBR": "",
- "MCP": "",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "",
"Medium": "",
"Member removed successfully": "",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "اکتوبر",
+ "of a website's sticky header": "",
"Off": "بند",
"Okay, Let's Go!": "ٹھیک ہے، چلیں!",
"OLED Dark": "او ایل ای ڈی ڈارک",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "اوپن اے آئی API کلید درکار ہے",
"OpenAI API settings updated": "",
"OpenAI URL/Key required.": "اوپن اے آئی یو آر ایل/کلید درکار ہے",
- "OpenAPI": "",
"OpenAPI Spec": "",
"openapi.json URL or Path": "",
"optional": "",
@@ -1610,6 +1619,7 @@
"out of": "",
"Output": "",
"OUTPUT": "آؤٹ پٹ",
+ "Overcome procrastination": "",
"Overview": "جائزہ",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -3056,6 +3066,8 @@
"Show Files": "",
"Show Hidden Files": "",
"Show image preview": "",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "",
"Show more": "",
"Show or switch the current model.": "",
@@ -3169,6 +3181,8 @@
"Task List": "",
"Tasks": "",
"tasks completed": "",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "ہمیں مزید بتائیں:",
"Temporary": "",
"Temporary Chat": "عارضی چیٹ",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "قسم ہگنگ فیس ری زولو (ڈاؤن لوڈ) یو آر ایل",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "",
+ "Unarchive": "",
"Unarchive Chat": "",
"Unassigned": "",
"Underline": "",
@@ -3412,6 +3427,7 @@
"Visible": "",
"Visible to all users": "",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "آواز",
"Voice Input": "آواز داخل کریں",
"Voice mode": "",
@@ -3442,6 +3458,7 @@
"Weekly": "",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "",
"What are you working on?": "",
"What is NOT shared:": "",
diff --git a/src/lib/i18n/locales/uz-Cyrl-UZ/translation.json b/src/lib/i18n/locales/uz-Cyrl-UZ/translation.json
index 139c039ed2e9..9535c626a755 100644
--- a/src/lib/i18n/locales/uz-Cyrl-UZ/translation.json
+++ b/src/lib/i18n/locales/uz-Cyrl-UZ/translation.json
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Энди янги версия (v{{LATEST_VERSION}}) мавжуд.",
"A private conversation between you and selected users": "",
"a user": "фойдаланувчи",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "",
"Access": "Кириш",
"Access Control": "Кириш назорати",
@@ -343,6 +344,7 @@
"Chat Menu": "",
"Chat moved successfully": "",
"Chat Permissions": "Чат рухсатномалари",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "",
"Chat Uploads": "",
"Chat Variables": "",
@@ -494,6 +496,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "Яратиш",
@@ -919,6 +922,8 @@
"Experience": "",
"Experimental": "Экспериментал",
"Explain": "Тушунтириш",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "",
"Exploring": "",
"Export": "Экспорт",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "",
"Followed instructions perfectly": "Кўрсатмаларга мукаммал амал қилди",
"for placeholders": "",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "",
"Get started": "Бошлаш",
"Get started with {{WEBUI_NAME}}": "{{WEBUI_NAME}} билан бошланг",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Глобал",
"Good Response": "Яхши жавоб",
"Google": "",
@@ -1118,6 +1126,8 @@
"Height": "",
"Hello, {{name}}": "Салом, {{name}}",
"Help": "Ёрдам",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "",
"Help us translate Open WebUI!": "",
"Hex Color": "Олти бурчакли ранг",
@@ -1148,6 +1158,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Расм",
"Image Generation": "Тасвир яратиш",
"Image Max Compression Size": "Тасвирнинг максимал сиқиш ҳажми",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "",
"Input needed": "",
"Input Variables": "",
- "Insert": "",
"Insert into note": "",
"Instructions": "",
"Integrations": "",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Бир вақтнинг ўзида максимал 3 та моделни юклаб олиш мумкин. Кейинроқ қайта уриниб кўринг.",
"May": "май",
"MBR": "",
- "MCP": "",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "",
"Medium": "",
"Member removed successfully": "",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "октябр",
+ "of a website's sticky header": "",
"Off": "Ўчирилган",
"Okay, Let's Go!": "Майли, кетайлик!",
"OLED Dark": "ОЛЕД қоронғи",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "OpenAI АПИ калити талаб қилинади.",
"OpenAI API settings updated": "OpenAI АПИ созламалари янгиланди",
"OpenAI URL/Key required.": "OpenAI УРЛ/Калит талаб қилинади.",
- "OpenAPI": "",
"OpenAPI Spec": "",
"openapi.json URL or Path": "openapi.json УРЛ ёки йўл",
"optional": "",
@@ -1610,6 +1619,7 @@
"out of": "",
"Output": "",
"OUTPUT": "Чиқиш",
+ "Overcome procrastination": "",
"Overview": "Умумий кўриниш",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -3056,6 +3066,8 @@
"Show Files": "",
"Show Hidden Files": "",
"Show image preview": "",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Моделни кўрсатиш",
"Show more": "",
"Show or switch the current model.": "",
@@ -3169,6 +3181,8 @@
"Task List": "",
"Tasks": "Вазифалар",
"tasks completed": "",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Бизга кўпроқ маълумот беринг:",
"Temporary": "",
"Temporary Chat": "Вақтинчалик суҳбат",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "Hugging Face Resolve (юклаб олиш) URL манзилини киритинг",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "Диққат! Жавобда муаммо юз берди.",
+ "Unarchive": "",
"Unarchive Chat": "Чатни архивдан чиқариш",
"Unassigned": "",
"Underline": "",
@@ -3412,6 +3427,7 @@
"Visible": "",
"Visible to all users": "",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "Овоз",
"Voice Input": "Овозли киритиш",
"Voice mode": "Овоз режими",
@@ -3442,6 +3458,7 @@
"Weekly": "",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "Нимага эришмоқчисиз?",
"What are you working on?": "Нима устида ишлаяпсиз?",
"What is NOT shared:": "",
diff --git a/src/lib/i18n/locales/uz-Latn-UZ/translation.json b/src/lib/i18n/locales/uz-Latn-UZ/translation.json
index 56d562b43418..ceacf1b34c28 100644
--- a/src/lib/i18n/locales/uz-Latn-UZ/translation.json
+++ b/src/lib/i18n/locales/uz-Latn-UZ/translation.json
@@ -71,6 +71,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Endi yangi versiya (v{{LATEST_VERSION}}) mavjud.",
"A private conversation between you and selected users": "",
"a user": "foydalanuvchi",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "",
"Access": "Kirish",
"Access Control": "Kirish nazorati",
@@ -343,6 +344,7 @@
"Chat Menu": "",
"Chat moved successfully": "",
"Chat Permissions": "Chat ruxsatnomalari",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "",
"Chat Uploads": "",
"Chat Variables": "",
@@ -494,6 +496,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "Yaratish",
@@ -919,6 +922,8 @@
"Experience": "",
"Experimental": "Eksperimental",
"Explain": "Tushuntirish",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "",
"Exploring": "",
"Export": "Eksport",
@@ -1046,6 +1051,7 @@
"Follow up: {{question}}": "",
"Followed instructions perfectly": "Ko'rsatmalarga mukammal amal qildi",
"for placeholders": "",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1093,6 +1099,8 @@
"Get information on {{name}} in the UI": "",
"Get started": "Boshlash",
"Get started with {{WEBUI_NAME}}": "{{WEBUI_NAME}} bilan boshlang",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Global",
"Good Response": "Yaxshi javob",
"Google": "",
@@ -1118,6 +1126,8 @@
"Height": "",
"Hello, {{name}}": "Salom, {{name}}",
"Help": "Yordam",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "",
"Help us translate Open WebUI!": "",
"Hex Color": "Olti burchakli rang",
@@ -1148,6 +1158,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Rasm",
"Image Generation": "Tasvir yaratish",
"Image Max Compression Size": "Tasvirning maksimal siqish hajmi",
@@ -1180,7 +1191,6 @@
"Input Key (e.g. text, unet_name, steps)": "",
"Input needed": "",
"Input Variables": "",
- "Insert": "",
"Insert into note": "",
"Instructions": "",
"Integrations": "",
@@ -1309,7 +1319,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Bir vaqtning o'zida maksimal 3 ta modelni yuklab olish mumkin. Keyinroq qayta urinib ko‘ring.",
"May": "may",
"MBR": "",
- "MCP": "",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "",
"Medium": "",
"Member removed successfully": "",
@@ -1548,6 +1557,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "oktyabr",
+ "of a website's sticky header": "",
"Off": "Oʻchirilgan",
"Okay, Let's Go!": "Mayli, ketaylik!",
"OLED Dark": "OLED qorong'i",
@@ -1597,7 +1607,6 @@
"OpenAI API Key is required.": "OpenAI API kaliti talab qilinadi.",
"OpenAI API settings updated": "OpenAI API sozlamalari yangilandi",
"OpenAI URL/Key required.": "OpenAI URL/Kalit talab qilinadi.",
- "OpenAPI": "",
"OpenAPI Spec": "",
"openapi.json URL or Path": "openapi.json URL yoki yoʻl",
"optional": "",
@@ -1610,6 +1619,7 @@
"out of": "",
"Output": "",
"OUTPUT": "Chiqish",
+ "Overcome procrastination": "",
"Overview": "Umumiy koʻrinish",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -3056,6 +3066,8 @@
"Show Files": "",
"Show Hidden Files": "",
"Show image preview": "",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Modelni ko'rsatish",
"Show more": "",
"Show or switch the current model.": "",
@@ -3169,6 +3181,8 @@
"Task List": "",
"Tasks": "Vazifalar",
"tasks completed": "",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Bizga ko'proq ma'lumot bering:",
"Temporary": "",
"Temporary Chat": "Vaqtinchalik suhbat",
@@ -3304,6 +3318,7 @@
"Type Hugging Face Resolve (Download) URL": "Hugging Face Resolve (Yuklab olish) URL manzilini kiriting",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "Uh-oh! Javobda muammo yuzaga keldi.",
+ "Unarchive": "",
"Unarchive Chat": "Chatni arxivdan chiqarish",
"Unassigned": "",
"Underline": "",
@@ -3412,6 +3427,7 @@
"Visible": "",
"Visible to all users": "",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "Ovoz",
"Voice Input": "Ovozli kiritish",
"Voice mode": "Ovoz rejimi",
@@ -3442,6 +3458,7 @@
"Weekly": "",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "Nimaga erishmoqchisiz?",
"What are you working on?": "Nima ustida ishlayapsiz?",
"What is NOT shared:": "",
diff --git a/src/lib/i18n/locales/vi-VN/translation.json b/src/lib/i18n/locales/vi-VN/translation.json
index 1ff7126c10e7..e2685e218c61 100644
--- a/src/lib/i18n/locales/vi-VN/translation.json
+++ b/src/lib/i18n/locales/vi-VN/translation.json
@@ -62,6 +62,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "Một phiên bản mới (v{{LATEST_VERSION}}) đã có sẵn.",
"A private conversation between you and selected users": "",
"a user": "người sử dụng",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "",
"Access": "Truy cập",
"Access Control": "Kiểm soát truy cập",
@@ -334,6 +335,7 @@
"Chat Menu": "",
"Chat moved successfully": "",
"Chat Permissions": "Quyền Chat",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "",
"Chat Uploads": "",
"Chat Variables": "",
@@ -484,6 +486,7 @@
"Could not check for updates": "",
"Could not load release notes.": "",
"Could not read file.": "",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "",
"Create": "Tạo",
@@ -907,6 +910,8 @@
"Experience": "",
"Experimental": "Thử nghiệm",
"Explain": "Giải thích",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "",
"Exploring": "",
"Export": "Xuất khẩu",
@@ -1034,6 +1039,7 @@
"Follow up: {{question}}": "",
"Followed instructions perfectly": "Tuân theo chỉ dẫn một cách hoàn hảo",
"for placeholders": "",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1081,6 +1087,8 @@
"Get information on {{name}} in the UI": "",
"Get started": "Bắt đầu",
"Get started with {{WEBUI_NAME}}": "Bắt đầu với {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "Toàn hệ thống",
"Good Response": "Trả lời tốt",
"Google": "",
@@ -1106,6 +1114,8 @@
"Height": "",
"Hello, {{name}}": "Xin chào {{name}}",
"Help": "Trợ giúp",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "",
"Help us translate Open WebUI!": "",
"Hex Color": "Màu Hex",
@@ -1136,6 +1146,7 @@
"Identity audit": "",
"Idle only": "",
"Idle Timeout": "",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "Ảnh",
"Image Generation": "Tạo Ảnh",
"Image Max Compression Size": "Kích thước Nén Ảnh Tối đa",
@@ -1168,7 +1179,6 @@
"Input Key (e.g. text, unet_name, steps)": "",
"Input needed": "",
"Input Variables": "",
- "Insert": "",
"Insert into note": "",
"Instructions": "",
"Integrations": "",
@@ -1296,7 +1306,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Tối đa 3 mô hình có thể được tải xuống cùng lúc. Vui lòng thử lại sau.",
"May": "Tháng 5",
"MBR": "",
- "MCP": "",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "",
"Medium": "",
"Member removed successfully": "",
@@ -1535,6 +1544,7 @@
"OAuth Server URL": "",
"OAuth session disconnected": "",
"October": "Tháng 10",
+ "of a website's sticky header": "",
"Off": "Tắt",
"Okay, Let's Go!": "Được rồi, Bắt đầu thôi!",
"OLED Dark": "OLED Dark",
@@ -1584,7 +1594,6 @@
"OpenAI API Key is required.": "Bắt buộc nhập API OpenAI Key.",
"OpenAI API settings updated": "Đã cập nhật cài đặt API OpenAI",
"OpenAI URL/Key required.": "Yêu cầu URL/Key API OpenAI.",
- "OpenAPI": "",
"OpenAPI Spec": "",
"openapi.json URL or Path": "",
"optional": "",
@@ -1597,6 +1606,7 @@
"out of": "",
"Output": "",
"OUTPUT": "ĐẦU RA",
+ "Overcome procrastination": "",
"Overview": "Tổng quan",
"PaddleOCR-vl": "",
"PaddleOCR-vl API URL required.": "",
@@ -3040,6 +3050,8 @@
"Show Files": "",
"Show Hidden Files": "",
"Show image preview": "",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "Hiển thị Mô hình",
"Show more": "",
"Show or switch the current model.": "",
@@ -3152,6 +3164,8 @@
"Task List": "",
"Tasks": "Tác vụ",
"tasks completed": "",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "Hãy cho chúng tôi hiểu thêm về chất lượng của câu trả lời:",
"Temporary": "",
"Temporary Chat": "Chat nháp",
@@ -3287,6 +3301,7 @@
"Type Hugging Face Resolve (Download) URL": "Nhập URL Hugging Face Resolve (Tải xuống)",
"Type your answer": "",
"Uh-oh! There was an issue with the response.": "Ôi! Đã có sự cố với phản hồi.",
+ "Unarchive": "",
"Unarchive Chat": "Bỏ lưu trữ Chat",
"Unassigned": "",
"Underline": "",
@@ -3395,6 +3410,7 @@
"Visible": "",
"Visible to all users": "",
"Visual": "",
+ "vocabulary for a college entrance exam": "",
"Voice": "Giọng nói",
"Voice Input": "Nhập liệu bằng Giọng nói",
"Voice mode": "",
@@ -3425,6 +3441,7 @@
"Weekly": "",
"Weekly at": "",
"Welcome to your AI home.": "",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "Bạn đang cố gắng đạt được điều gì?",
"What are you working on?": "Bạn đang làm gì vậy?",
"What is NOT shared:": "",
diff --git a/src/lib/i18n/locales/zh-CN/translation.json b/src/lib/i18n/locales/zh-CN/translation.json
index 960bed9281b0..453fa135daa5 100644
--- a/src/lib/i18n/locales/zh-CN/translation.json
+++ b/src/lib/i18n/locales/zh-CN/translation.json
@@ -69,6 +69,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "新版本(v{{LATEST_VERSION}})现已发布",
"A private conversation between you and selected users": "您与选定用户之间的私人对话",
"a user": "用户",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "接受自动补全\n跳转提示词变量",
"Access": "访问",
"Access Control": "访问控制",
@@ -341,6 +342,7 @@
"Chat Menu": "",
"Chat moved successfully": "移动对话成功",
"Chat Permissions": "对话权限",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "已成功取消分享对话。",
"Chat Uploads": "对话上传",
"Chat Variables": "对话变量",
@@ -492,6 +494,7 @@
"Could not check for updates": "",
"Could not load release notes.": "无法加载更新日志。",
"Could not read file.": "读取文件失败。",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "",
"CPU": "CPU",
"Create": "创建",
@@ -917,6 +920,8 @@
"Experience": "",
"Experimental": "实验性",
"Explain": "解释",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "已分析",
"Exploring": "分析中",
"Export": "导出",
@@ -1044,6 +1049,7 @@
"Follow up: {{question}}": "追问:{{question}}",
"Followed instructions perfectly": "完全遵循指令",
"for placeholders": "用于占位符",
+ "for what to do with my kids' art": "",
"Fork": "",
"Fork chat": "",
"Fork the current chat branch into a new chat.": "",
@@ -1091,6 +1097,8 @@
"Get information on {{name}} in the UI": "在界面中获取 {{name}} 的信息",
"Get started": "开始使用",
"Get started with {{WEBUI_NAME}}": "开始使用 {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "全局",
"Good Response": "点赞此回答",
"Google": "谷歌",
@@ -1116,6 +1124,8 @@
"Height": "高度",
"Hello, {{name}}": "您好,{{name}}",
"Help": "帮助",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "帮助社区发现优质模型",
"Help us translate Open WebUI!": "",
"Hex Color": "十六进制颜色代码",
@@ -1146,6 +1156,7 @@
"Identity audit": "身份审计",
"Idle only": "仅闲置时",
"Idle Timeout": "无操作超时时间",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "图像生成",
"Image Generation": "图像生成",
"Image Max Compression Size": "压缩图像后最大分辨率",
@@ -1178,7 +1189,6 @@
"Input Key (e.g. text, unet_name, steps)": "输入键名(例如:text, unet_name, steps)",
"Input needed": "需要输入",
"Input Variables": "插入变量",
- "Insert": "插入",
"Insert into note": "插入到笔记",
"Instructions": "提示词指令",
"Integrations": "扩展功能",
@@ -1306,7 +1316,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "最多可同时下载 3 个模型,请稍后重试。",
"May": "五月",
"MBR": "成员",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "MCP 支持仍处于实验阶段,因其规范变化频繁,可能会出现不兼容的情况。而 OpenAPI 规范由 Open WebUI 团队维护,在兼容性方面更加可靠。",
"Medium": "中",
"Member removed successfully": "成员移除成功",
@@ -1545,6 +1554,7 @@
"OAuth Server URL": "OAuth 服务器地址",
"OAuth session disconnected": "OAuth 会话已断开",
"October": "十月",
+ "of a website's sticky header": "",
"Off": "关闭",
"Okay, Let's Go!": "确认,开始使用!",
"OLED Dark": "漆黑",
@@ -1594,7 +1604,6 @@
"OpenAI API Key is required.": "OpenAI 接口密钥是必填项。",
"OpenAI API settings updated": "OpenAI 接口设置已更新",
"OpenAI URL/Key required.": "OpenAI 接口地址和密钥是必填项。",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "OpenAPI 接口规范",
"openapi.json URL or Path": "openapi.json 地址或路径",
"optional": "选填",
@@ -1607,6 +1616,7 @@
"out of": "中的",
"Output": "输出",
"OUTPUT": "输出",
+ "Overcome procrastination": "",
"Overview": "概述",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "PaddleOCR-vl 接口地址是必填项。",
@@ -3053,6 +3063,8 @@
"Show Files": "显示文件",
"Show Hidden Files": "显示隐藏文件",
"Show image preview": "显示图像预览",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "显示模型",
"Show more": "显示更多",
"Show or switch the current model.": "",
@@ -3166,6 +3178,8 @@
"Task List": "任务列表",
"Tasks": "任务",
"tasks completed": "项任务已完成",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "请告诉我们更多细节",
"Temporary": "",
"Temporary Chat": "临时对话",
@@ -3301,6 +3315,7 @@
"Type Hugging Face Resolve (Download) URL": "输入 Hugging Face 模型解析(下载)地址",
"Type your answer": "输入您的答案",
"Uh-oh! There was an issue with the response.": "抱歉,模型回答失败,请重试。",
+ "Unarchive": "",
"Unarchive Chat": "取消存档当前对话",
"Unassigned": "未分配",
"Underline": "下划线",
@@ -3409,6 +3424,7 @@
"Visible": "可见",
"Visible to all users": "对所有用户可见",
"Visual": "可视化",
+ "vocabulary for a college entrance exam": "",
"Voice": "语音",
"Voice Input": "语音输入",
"Voice mode": "语音模式",
@@ -3439,6 +3455,7 @@
"Weekly": "每周",
"Weekly at": "每周于",
"Welcome to your AI home.": "欢迎来到您的 AI 主页。",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "您想要达到什么目标?",
"What are you working on?": "您在忙于什么?",
"What is NOT shared:": "不共享的内容:",
diff --git a/src/lib/i18n/locales/zh-TW/translation.json b/src/lib/i18n/locales/zh-TW/translation.json
index e56c420517f4..874f8ee6fdf1 100644
--- a/src/lib/i18n/locales/zh-TW/translation.json
+++ b/src/lib/i18n/locales/zh-TW/translation.json
@@ -62,6 +62,7 @@
"A new version (v{{LATEST_VERSION}}) is now available.": "新版本 (v{{LATEST_VERSION}}) 已釋出。",
"A private conversation between you and selected users": "您與特定使用者之間的私人對話",
"a user": "使用者",
+ "about the Roman Empire": "",
"Accept Autocomplete Generation\nJump to Prompt Variable": "接受自動完成\n跳至提示詞變數",
"Access": "存取",
"Access Control": "存取控制",
@@ -334,6 +335,7 @@
"Chat Menu": "對話選單",
"Chat moved successfully": "對話已移動",
"Chat Permissions": "對話權限",
+ "Chat unarchived.": "",
"Chat unshared successfully.": "已成功取消分享對話。",
"Chat Uploads": "對話上傳檔案",
"Chat Variables": "對話變數",
@@ -484,6 +486,7 @@
"Could not check for updates": "無法檢查更新",
"Could not load release notes.": "無法載入版本資訊。",
"Could not read file.": "無法讀取檔案。",
+ "Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?": "",
"Couldn't find your language?": "找不到您的語言嗎?",
"CPU": "CPU",
"Create": "建立",
@@ -907,6 +910,8 @@
"Experience": "體驗",
"Experimental": "實驗性功能",
"Explain": "解釋",
+ "Explain options trading": "",
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks.": "",
"Explored": "已分析",
"Exploring": "分析中",
"Export": "匯出",
@@ -1034,6 +1039,7 @@
"Follow up: {{question}}": "追問:{{question}}",
"Followed instructions perfectly": "完全遵循指示",
"for placeholders": "用於佔位符",
+ "for what to do with my kids' art": "",
"Fork": "分支",
"Fork chat": "分支對話",
"Fork the current chat branch into a new chat.": "將目前的對話分支另存為新對話。",
@@ -1081,6 +1087,8 @@
"Get information on {{name}} in the UI": "在介面中取得 {{name}} 的資訊",
"Get started": "開始使用",
"Get started with {{WEBUI_NAME}}": "開始使用 {{WEBUI_NAME}}",
+ "Give me ideas": "",
+ "give me tips": "",
"Global": "全域",
"Good Response": "回應良好",
"Google": "Google",
@@ -1106,6 +1114,8 @@
"Height": "高度",
"Hello, {{name}}": "您好,{{name}}",
"Help": "說明",
+ "Help me study": "",
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option.": "",
"Help the community discover great models": "協助社群發現優質模型",
"Help us translate Open WebUI!": "協助我們翻譯 Open WebUI!",
"Hex Color": "Hex 顏色",
@@ -1136,6 +1146,7 @@
"Identity audit": "身分稽核",
"Idle only": "僅在閒置時",
"Idle Timeout": "閒置逾時時間",
+ "if I'm familiar with buying and selling stocks": "",
"Image": "圖片",
"Image Generation": "圖片生成",
"Image Max Compression Size": "圖片最大壓縮大小",
@@ -1168,7 +1179,6 @@
"Input Key (e.g. text, unet_name, steps)": "輸入鍵名(例如:text, unet_name, steps)",
"Input needed": "需要輸入",
"Input Variables": "插入變數",
- "Insert": "插入",
"Insert into note": "插入至筆記",
"Instructions": "說明",
"Integrations": "外掛功能",
@@ -1296,7 +1306,6 @@
"Maximum of 3 models can be downloaded simultaneously. Please try again later.": "最多同時下載 3 個模型。請稍後再試。",
"May": "5 月",
"MBR": "成員",
- "MCP": "MCP",
"MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "MCP 支援為實驗性功能,其規範經常變更,可能導致不相容問題。OpenAPI 規範支援直接由 Open WebUI 團隊維護,是相容性更可靠的選擇。",
"Medium": "中",
"Member removed successfully": "成功移除成員",
@@ -1535,6 +1544,7 @@
"OAuth Server URL": "OAuth 伺服器 URL",
"OAuth session disconnected": "OAuth 工作階段已中斷",
"October": "10 月",
+ "of a website's sticky header": "",
"Off": "關閉",
"Okay, Let's Go!": "好的,我們開始吧!",
"OLED Dark": "OLED 深色",
@@ -1584,7 +1594,6 @@
"OpenAI API Key is required.": "需要提供 OpenAI API 金鑰。",
"OpenAI API settings updated": "OpenAI API 設定已更新",
"OpenAI URL/Key required.": "需要提供 OpenAI URL 或金鑰。",
- "OpenAPI": "OpenAPI",
"OpenAPI Spec": "OpenAPI 介面規範",
"openapi.json URL or Path": "openapi.json URL 或路徑",
"optional": "選填",
@@ -1597,6 +1606,7 @@
"out of": "共",
"Output": "輸出",
"OUTPUT": "輸出",
+ "Overcome procrastination": "",
"Overview": "概覽",
"PaddleOCR-vl": "PaddleOCR-vl",
"PaddleOCR-vl API URL required.": "需要提供 PaddleOCR-vl API URL。",
@@ -3040,6 +3050,8 @@
"Show Files": "顯示檔案",
"Show Hidden Files": "顯示隱藏檔案",
"Show image preview": "顯示圖片預覽",
+ "Show me a code snippet": "",
+ "Show me a code snippet of a website's sticky header in CSS and JavaScript.": "",
"Show Model": "顯示模型",
"Show more": "顯示更多",
"Show or switch the current model.": "顯示或切換目前模型。",
@@ -3152,6 +3164,8 @@
"Task List": "工作清單",
"Tasks": "任務",
"tasks completed": "項任務已完成",
+ "Tell me a fun fact": "",
+ "Tell me a random fun fact about the Roman Empire": "",
"Tell us more:": "告訴我們更多:",
"Temporary": "暫時",
"Temporary Chat": "臨時對話",
@@ -3287,6 +3301,7 @@
"Type Hugging Face Resolve (Download) URL": "輸入 Hugging Face 的解析(下載)URL",
"Type your answer": "輸入您的回答",
"Uh-oh! There was an issue with the response.": "哎呀!回應出了點問題。",
+ "Unarchive": "",
"Unarchive Chat": "解除封存對話",
"Unassigned": "未指派",
"Underline": "底線",
@@ -3395,6 +3410,7 @@
"Visible": "可見",
"Visible to all users": "對所有使用者可見",
"Visual": "視覺化",
+ "vocabulary for a college entrance exam": "",
"Voice": "語音",
"Voice Input": "語音輸入",
"Voice mode": "語音模式",
@@ -3425,6 +3441,7 @@
"Weekly": "每週",
"Weekly at": "每週於",
"Welcome to your AI home.": "歡迎來到您的 AI 首頁。",
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter.": "",
"What are you trying to achieve?": "您正在試圖完成什麼?",
"What are you working on?": "您現在的工作是什麼?",
"What is NOT shared:": "不會分享的內容:",
diff --git a/src/lib/pyodide/pyodideSandboxHost.ts b/src/lib/pyodide/pyodideSandboxHost.ts
index 2ba1ca2b27ef..b99ac0fc71fd 100644
--- a/src/lib/pyodide/pyodideSandboxHost.ts
+++ b/src/lib/pyodide/pyodideSandboxHost.ts
@@ -134,7 +134,7 @@ const sandboxScript = String.raw`
let result = null;
if (files && files.length > 0) upload(files);
try {
- if (code.includes('matplotlib')) await patchMatplotlib();
+ if (code.includes('matplotlib') && 'matplotlib' in pyodide.loadedPackages) await patchMatplotlib();
result = clean(await pyodide.runPythonAsync(code));
} catch (error) {
stderr = error && error.message ? error.message : String(error);
diff --git a/src/lib/stores/index.ts b/src/lib/stores/index.ts
index 00fb0d887ff7..42ad30bb5ad7 100644
--- a/src/lib/stores/index.ts
+++ b/src/lib/stores/index.ts
@@ -337,7 +337,7 @@ type Config = {
i18n?: I18nOverrides;
default_models: string;
default_pinned_models?: string | null;
- default_prompt_suggestions: PromptSuggestion[];
+ default_prompt_suggestions: PromptSuggestion[] | null;
default_prompt_suggestions_i18n?: Record;
features: {
slim?: boolean;
diff --git a/src/lib/utils/audio.ts b/src/lib/utils/audio.ts
index de36c9f9f2a1..238b61c3f2df 100644
--- a/src/lib/utils/audio.ts
+++ b/src/lib/utils/audio.ts
@@ -1,10 +1,13 @@
-type AudioQueueEvent = 'stop' | 'empty-queue' | 'id-change';
+type AudioQueueEvent = 'stop' | 'empty-queue' | 'id-change' | 'error';
interface AudioQueueStopDetail {
event: AudioQueueEvent;
id: string | null;
}
+const SILENT_WAV =
+ 'data:audio/wav;base64,UklGRsQAAABXQVZFZm10IBAAAAABAAEAQB8AAIA+AAACABAAZGF0YaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA';
+
export type OnStoppedCallback = (detail: AudioQueueStopDetail) => void;
export class AudioQueue {
@@ -12,6 +15,7 @@ export class AudioQueue {
private queue: string[] = [];
private current: string | null = null;
private readonly _onEnded = () => this.next();
+ private readonly _onGesture = () => this.#unlock();
id: string | null = null;
onStopped: OnStoppedCallback | null = null;
@@ -19,6 +23,8 @@ export class AudioQueue {
constructor(audioElement: HTMLAudioElement) {
this.audio = audioElement;
this.audio.addEventListener('ended', this._onEnded);
+ document.addEventListener('pointerdown', this._onGesture, true);
+ document.addEventListener('keydown', this._onGesture, true);
}
setId(newId: string) {
@@ -50,12 +56,36 @@ export class AudioQueue {
}
}
+ /** Play silence inside the first user gesture so WebKit allows later programmatic playback. */
+ #unlock() {
+ if (this.current || !this.audio.paused) return;
+
+ this.audio.src = SILENT_WAV;
+ this.audio
+ .play()
+ .then(() => this.#removeGestureListeners())
+ .catch(() => {})
+ .finally(() => {
+ if (this.current) return;
+
+ this.audio.pause();
+ if (this.queue.length) this.next();
+ });
+ }
+
next() {
this.current = this.queue.shift() ?? null;
if (this.current) {
- this.audio.src = this.current;
- this.audio.play();
+ const url = this.current;
+ this.audio.src = url;
+ this.audio.play().catch((error) => {
+ if (this.current !== url) return;
+
+ console.error(error);
+ this.#halt();
+ this.onStopped?.({ event: 'error', id: this.id });
+ });
} else {
this.#halt();
this.onStopped?.({ event: 'empty-queue', id: this.id });
@@ -69,10 +99,16 @@ export class AudioQueue {
destroy() {
this.audio.removeEventListener('ended', this._onEnded);
+ this.#removeGestureListeners();
this.#halt();
this.onStopped = null;
}
+ #removeGestureListeners() {
+ document.removeEventListener('pointerdown', this._onGesture, true);
+ document.removeEventListener('keydown', this._onGesture, true);
+ }
+
/**
* Pause audio and clear queue without firing onStopped.
* Callers that need the callback should invoke it themselves.
diff --git a/src/lib/utils/editorJson.ts b/src/lib/utils/editorJson.ts
new file mode 100644
index 000000000000..56bc71065261
--- /dev/null
+++ b/src/lib/utils/editorJson.ts
@@ -0,0 +1,31 @@
+// Editor JSON can contain ProseMirror's null-prototype attributes, which fast-deep-equal
+// cannot compare. Keep this scoped to JSON data, with reference checks and early exits.
+export function equalEditorJSON(a: unknown, b: unknown): boolean {
+ if (a === b) return true;
+ if (!a || !b || typeof a !== 'object' || typeof b !== 'object') return false;
+
+ if (Array.isArray(a)) {
+ if (!Array.isArray(b) || a.length !== b.length) return false;
+ for (let i = 0; i < a.length; i++) {
+ if (!equalEditorJSON(a[i], b[i])) return false;
+ }
+ return true;
+ }
+
+ if (Array.isArray(b)) return false;
+
+ const left = a as Record;
+ const right = b as Record;
+ const keys = Object.keys(left);
+ if (keys.length !== Object.keys(right).length) return false;
+
+ for (const key of keys) {
+ if (
+ !Object.prototype.hasOwnProperty.call(right, key) ||
+ !equalEditorJSON(left[key], right[key])
+ ) {
+ return false;
+ }
+ }
+ return true;
+}
diff --git a/src/lib/utils/index.ts b/src/lib/utils/index.ts
index fdf3bf744299..dd25bb5dc8ec 100644
--- a/src/lib/utils/index.ts
+++ b/src/lib/utils/index.ts
@@ -1,7 +1,7 @@
import type { Writable } from 'svelte/store';
import { v4 as uuidv4 } from 'uuid';
import sha256 from 'js-sha256';
-import DOMPurify from 'dompurify';
+import DOMPurify, { type UponSanitizeAttributeHookEvent } from 'dompurify';
import { WEBUI_BASE_URL } from '$lib/constants';
import type { FileNavOpenRequest } from '$lib/stores';
import { normalizeDocumentTargetPage } from '$lib/utils/documentPreview';
@@ -2133,7 +2133,8 @@ export const initMermaid = async () => {
startOnLoad: false, // Should be false when using render API
theme: document.documentElement.classList.contains('dark') ? 'dark' : 'default',
securityLevel: 'loose',
- htmlLabels: false
+ htmlLabels: false,
+ secure: ['htmlLabels']
});
return mermaid;
};
@@ -2148,43 +2149,133 @@ const cleanupMermaidTempElements = (id: string) => {
document.getElementById(`i${id}`)?.remove();
};
+const isLocalResourceUrl = (url: string): boolean => {
+ try {
+ const resolved = new URL(url, document.baseURI);
+ return resolved.protocol === 'data:' || resolved.origin === location.origin;
+ } catch {
+ return false;
+ }
+};
+
+// Escapes and image-set() read as a plain url() to a browser, so match the parsed CSS, not the text.
+const CSS_URL_SYNTAX = /url\(|image-set\(|@import|\\/i;
+
+const cssRules = (css: string): string[] => {
+ const parsed = new DOMParser().parseFromString(``, 'text/html');
+ return [...(parsed.querySelector('style')?.sheet?.cssRules ?? [])].map((rule) => rule.cssText);
+};
+
+const referencesExternalCss = (css: string): boolean => {
+ if (!CSS_URL_SYNTAX.test(css)) {
+ return false;
+ }
+
+ // A value arrives as a stylesheet, a declaration list or a bare presentation value.
+ return [css, `a{${css}}`, `a{background-image:${css}}`].some((stylesheet) => {
+ const urls = cssRules(stylesheet)
+ .join('')
+ .matchAll(/url\(["']?([^"')]*)/g);
+ return [...urls].some(([, url]) => !isLocalResourceUrl(url));
+ });
+};
+
+const dropExternalResourceRefs = (node: Node, data: UponSanitizeAttributeHookEvent) => {
+ const tagName = node.nodeName.toLowerCase();
+ const isImageRef =
+ (tagName === 'image' || tagName === 'feimage') &&
+ (data.attrName === 'href' || data.attrName === 'xlink:href');
+
+ if (isImageRef && !isLocalResourceUrl(data.attrValue)) {
+ data.keepAttr = false;
+ }
+ if (!isImageRef && referencesExternalCss(data.attrValue)) {
+ data.keepAttr = false;
+ }
+};
+
+// use hrefs point at defs inside the same document (#id) or fetch another file, keep only the former.
+const dropExternalUseRefs = (node: Node, data: UponSanitizeAttributeHookEvent) => {
+ if (node.nodeName.toLowerCase() !== 'use') {
+ return;
+ }
+ if (data.attrName !== 'href' && data.attrName !== 'xlink:href') {
+ return;
+ }
+ if (!data.attrValue.trim().startsWith('#')) {
+ data.keepAttr = false;
+ }
+};
+
+const dropExternalStyleRules = (node: Node) => {
+ if (node.nodeName.toLowerCase() !== 'style') {
+ return;
+ }
+
+ const css = node.textContent ?? '';
+ if (!referencesExternalCss(css)) {
+ return;
+ }
+
+ node.textContent = cssRules(css)
+ .filter((rule) => !referencesExternalCss(rule))
+ .join('');
+};
+
// Mermaid runs with securityLevel:'loose', which emits unsanitized SVG (raw javascript: hrefs,
// HTML labels); strip active content before it reaches any innerHTML/{@html} sink.
-export const sanitizeSvg = (svg: string): string =>
- DOMPurify.sanitize(svg, {
- USE_PROFILES: { svg: true, svgFilters: true },
- WHOLE_DOCUMENT: false,
- ADD_TAGS: ['style', 'foreignObject'],
- ADD_ATTR: [
- 'class',
- 'style',
- 'id',
- 'data-*',
- 'viewBox',
- 'preserveAspectRatio',
- 'markerWidth',
- 'markerHeight',
- 'markerUnits',
- 'refX',
- 'refY',
- 'orient',
- 'href',
- 'xlink:href',
- 'dominant-baseline',
- 'text-anchor',
- 'clipPathUnits',
- 'filterUnits',
- 'patternUnits',
- 'patternContentUnits',
- 'maskUnits',
- 'role',
- 'aria-label',
- 'aria-labelledby',
- 'aria-hidden',
- 'tabindex'
- ],
- SANITIZE_DOM: true
- });
+export const sanitizeSvg = (svg: string): string => {
+ DOMPurify.addHook('uponSanitizeAttribute', dropExternalResourceRefs);
+ DOMPurify.addHook('uponSanitizeElement', dropExternalStyleRules);
+ DOMPurify.addHook('uponSanitizeAttribute', dropExternalUseRefs);
+ try {
+ return DOMPurify.sanitize(svg, {
+ USE_PROFILES: { svg: true, svgFilters: true },
+ WHOLE_DOCUMENT: false,
+ ADD_TAGS: ['style', 'foreignObject', 'use'],
+ ADD_ATTR: [
+ 'class',
+ 'style',
+ 'id',
+ 'data-*',
+ 'viewBox',
+ 'preserveAspectRatio',
+ 'markerWidth',
+ 'markerHeight',
+ 'markerUnits',
+ 'refX',
+ 'refY',
+ 'orient',
+ 'href',
+ 'xlink:href',
+ 'dominant-baseline',
+ 'text-anchor',
+ 'clipPathUnits',
+ 'filterUnits',
+ 'patternUnits',
+ 'patternContentUnits',
+ 'maskUnits',
+ 'role',
+ 'aria-label',
+ 'aria-labelledby',
+ 'aria-hidden',
+ 'tabindex'
+ ],
+ SANITIZE_DOM: true
+ });
+ } finally {
+ DOMPurify.removeHook('uponSanitizeAttribute', dropExternalResourceRefs);
+ DOMPurify.removeHook('uponSanitizeElement', dropExternalStyleRules);
+ DOMPurify.removeHook('uponSanitizeAttribute', dropExternalUseRefs);
+ }
+};
+
+const configStrings = (value: any): string[] => {
+ if (typeof value === 'string') {
+ return [value];
+ }
+ return value && typeof value === 'object' ? Object.values(value).flatMap(configStrings) : [];
+};
export const renderMermaidDiagram = async (
mermaid: typeof import('mermaid').default,
@@ -2193,12 +2284,28 @@ export const renderMermaidDiagram = async (
) => {
const id = renderId ?? `mermaid-${uuidv4()}`;
try {
- const parseResult = await mermaid.parse(code, { suppressErrors: false });
- if (parseResult) {
- const { svg } = await mermaid.render(id, code);
- return sanitizeSvg(svg);
+ // Mermaid renders into a live document, so its own fetches have to be ruled out beforehand.
+ const { config } = (await mermaid.parse(code, { suppressErrors: false })) as any;
+ const diagram: any = await mermaid.mermaidAPI.getDiagramFromText(code);
+ const imageUrls = [
+ ...[...(diagram.db.getVertices?.() ?? []).values()].map((vertex: any) => vertex.img),
+ ...[...(diagram.db.getActors?.() ?? []).values()].map((actor: any) => actor.properties?.icon)
+ ];
+ const classStyles = [...(diagram.db.getClasses?.() ?? []).values()].flatMap((classDef: any) => [
+ ...(classDef.styles ?? []),
+ ...(classDef.textStyles ?? [])
+ ]);
+
+ if (
+ imageUrls.some((url) => url && !isLocalResourceUrl(url)) ||
+ classStyles.some(referencesExternalCss) ||
+ configStrings(config).some(referencesExternalCss)
+ ) {
+ throw new Error('External resource loading is disabled for rendered diagrams');
}
- return '';
+
+ const { svg } = await mermaid.render(id, code);
+ return sanitizeSvg(svg);
} finally {
// Mermaid can leave temporary d*/i* wrappers on error paths.
cleanupMermaidTempElements(id);
diff --git a/src/lib/utils/localizedContent.ts b/src/lib/utils/localizedContent.ts
index cf59d4fd2e4f..917eb134beb8 100644
--- a/src/lib/utils/localizedContent.ts
+++ b/src/lib/utils/localizedContent.ts
@@ -131,14 +131,50 @@ export const resolveLocalizedModelDescription = (model: any, locale?: string | n
export const resolveLocalizedPromptSuggestions = (
fallback: PromptSuggestion[] | null | undefined,
i18n: LocalizedMap | null | undefined,
- locale?: string | null
+ locale?: string | null,
+ t: (key: string) => string = (key) => key
) => {
for (const candidate of getLocaleCandidates(locale)) {
const prompts = i18n?.[candidate]?.suggestion_prompts ?? i18n?.[candidate];
if (Array.isArray(prompts)) return prompts;
}
- return fallback ?? [];
+ return (
+ fallback ?? [
+ {
+ title: [t('Help me study'), t('vocabulary for a college entrance exam')],
+ content: t(
+ "Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option."
+ )
+ },
+ {
+ title: [t('Give me ideas'), t("for what to do with my kids' art")],
+ content: t(
+ "What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter."
+ )
+ },
+ {
+ title: [t('Tell me a fun fact'), t('about the Roman Empire')],
+ content: t('Tell me a random fun fact about the Roman Empire')
+ },
+ {
+ title: [t('Show me a code snippet'), t("of a website's sticky header")],
+ content: t("Show me a code snippet of a website's sticky header in CSS and JavaScript.")
+ },
+ {
+ title: [t('Explain options trading'), t("if I'm familiar with buying and selling stocks")],
+ content: t(
+ "Explain options trading in simple terms if I'm familiar with buying and selling stocks."
+ )
+ },
+ {
+ title: [t('Overcome procrastination'), t('give me tips')],
+ content: t(
+ 'Could you start by asking me about instances when I procrastinate the most and then give me some suggestions to overcome it?'
+ )
+ }
+ ]
+ );
};
export const resolveLocalizedModelPromptSuggestions = (model: any, locale?: string | null) => {
diff --git a/src/lib/workers/pyodide.worker.ts b/src/lib/workers/pyodide.worker.ts
index cdbd9006ec7c..4eb3ee7a31f1 100644
--- a/src/lib/workers/pyodide.worker.ts
+++ b/src/lib/workers/pyodide.worker.ts
@@ -191,7 +191,7 @@ async function executeCode(
try {
// check if matplotlib is imported in the code
- if (code.includes('matplotlib')) {
+ if (code.includes('matplotlib') && 'matplotlib' in self.pyodide.loadedPackages) {
// Override plt.show() to return base64 image
await self.pyodide.runPythonAsync(`import base64
import os
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index 69bc84986da3..1e8919a5c990 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -81,6 +81,7 @@
import { getUserSettings } from '$lib/apis/users';
import dayjs from 'dayjs';
import { getChannels } from '$lib/apis/channels';
+ import { resolveTerminalConnection, terminalRequest } from '$lib/apis/terminal';
const unregisterServiceWorkers = async () => {
if ('serviceWorker' in navigator) {
@@ -313,7 +314,9 @@
/\bimport\s+tiktoken\b|\bfrom\s+tiktoken\b/.test(code) ? 'tiktoken' : null,
/\bimport\s+pytz\b|\bfrom\s+pytz\b/.test(code) ? 'pytz' : null,
/\bimport\s+openpyxl\b|\bfrom\s+openpyxl\b/.test(code) ? 'openpyxl' : null,
- /\.(read|to)_excel\(|\.Excel(Writer|File)\(/.test(code) ? 'openpyxl' : null
+ /\.(read|to)_excel\(|\.Excel(Writer|File)\(/.test(code) ? 'openpyxl' : null,
+ /\bimport\s+pptx\b|\bfrom\s+pptx\b/.test(code) ? 'python-pptx' : null,
+ /\bimport\s+docx\b|\bfrom\s+docx\b/.test(code) ? 'python-docx' : null
].filter(Boolean);
const worker = getOrCreateWorker();
@@ -643,6 +646,21 @@
console.log('execute:tool', data);
executeTool(data, cb, event.chat_id);
return;
+ } else if (type === 'request:terminal') {
+ try {
+ const connection = resolveTerminalConnection(
+ data.terminal_id,
+ [],
+ $settings?.terminalServers ?? [],
+ localStorage.token
+ );
+ if (!connection) throw new Error('Terminal Not Found');
+ const result = await terminalRequest(connection, event.chat_id, data.path);
+ cb?.({ data: result });
+ } catch (error) {
+ cb?.({ error: `${error}` });
+ }
+ return;
} else if (type === 'request:chat:completion') {
console.log(data, $socket.id);
const { session_id, channel, form_data, model } = data;
diff --git a/static/pyodide/pyodide-lock.json b/static/pyodide/pyodide-lock.json
index 25dc86aa673e..4c363247c144 100644
--- a/static/pyodide/pyodide-lock.json
+++ b/static/pyodide/pyodide-lock.json
@@ -5203,6 +5203,50 @@
"numpy",
"pandas"
]
+ },
+ "python-pptx": {
+ "name": "python-pptx",
+ "version": "1.0.2",
+ "file_name": "python_pptx-1.0.2-py3-none-any.whl",
+ "install_dir": "site",
+ "sha256": "160838e0b8565a8b1f67947675886e9fea18aa5e795db7ae531606d68e785cba",
+ "package_type": "package",
+ "imports": [
+ "python_pptx"
+ ],
+ "depends": [
+ "lxml",
+ "pillow",
+ "xlsxwriter",
+ "typing-extensions"
+ ]
+ },
+ "python-docx": {
+ "name": "python-docx",
+ "version": "1.2.0",
+ "file_name": "python_docx-1.2.0-py3-none-any.whl",
+ "install_dir": "site",
+ "sha256": "3fd478f3250fbbbfd3b94fe1e985955737c145627498896a8a6bf81f4baf66c7",
+ "package_type": "package",
+ "imports": [
+ "python_docx"
+ ],
+ "depends": [
+ "lxml",
+ "typing-extensions"
+ ]
+ },
+ "xlsxwriter": {
+ "name": "xlsxwriter",
+ "version": "3.2.9",
+ "file_name": "xlsxwriter-3.2.9-py3-none-any.whl",
+ "install_dir": "site",
+ "sha256": "9a5db42bc5dff014806c58a20b9eae7322a134abb6fce3c92c181bfb275ec5b3",
+ "package_type": "package",
+ "imports": [
+ "xlsxwriter"
+ ],
+ "depends": []
}
}
}
\ No newline at end of file
diff --git a/uv.lock b/uv.lock
index 2dc90195939d..5ce2b3e15b77 100644
--- a/uv.lock
+++ b/uv.lock
@@ -1,5 +1,5 @@
version = 1
-revision = 2
+revision = 3
requires-python = ">=3.11, <3.13.0"
resolution-markers = [
"python_full_version >= '3.12' and sys_platform == 'win32'",
@@ -69,7 +69,7 @@ wheels = [
[[package]]
name = "aiohttp"
-version = "3.13.5"
+version = "3.14.3"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "aiohappyeyeballs" },
@@ -78,44 +78,47 @@ dependencies = [
{ name = "frozenlist" },
{ name = "multidict" },
{ name = "propcache" },
+ { name = "typing-extensions" },
{ name = "yarl" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/77/9a/152096d4808df8e4268befa55fba462f440f14beab85e8ad9bf990516918/aiohttp-3.13.5.tar.gz", hash = "sha256:9d98cc980ecc96be6eb4c1994ce35d28d8b1f5e5208a23b421187d1209dbb7d1", size = 7858271, upload-time = "2026-03-31T22:01:03.343Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/d6/f5/a20c4ac64aeaef1679e25c9983573618ff765d7aa829fa2b84ae7573169e/aiohttp-3.13.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7ab7229b6f9b5c1ba4910d6c41a9eb11f543eadb3f384df1b4c293f4e73d44d6", size = 757513, upload-time = "2026-03-31T21:57:02.146Z" },
- { url = "https://files.pythonhosted.org/packages/75/0a/39fa6c6b179b53fcb3e4b3d2b6d6cad0180854eda17060c7218540102bef/aiohttp-3.13.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8f14c50708bb156b3a3ca7230b3d820199d56a48e3af76fa21c2d6087190fe3d", size = 506748, upload-time = "2026-03-31T21:57:04.275Z" },
- { url = "https://files.pythonhosted.org/packages/87/ec/e38ce072e724fd7add6243613f8d1810da084f54175353d25ccf9f9c7e5a/aiohttp-3.13.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e7d2f8616f0ff60bd332022279011776c3ac0faa0f1b463f7bb12326fbc97a1c", size = 501673, upload-time = "2026-03-31T21:57:06.208Z" },
- { url = "https://files.pythonhosted.org/packages/ba/ba/3bc7525d7e2beaa11b309a70d48b0d3cfc3c2089ec6a7d0820d59c657053/aiohttp-3.13.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a2567b72e1ffc3ab25510db43f355b29eeada56c0a622e58dcdb19530eb0a3cb", size = 1763757, upload-time = "2026-03-31T21:57:07.882Z" },
- { url = "https://files.pythonhosted.org/packages/5e/ab/e87744cf18f1bd78263aba24924d4953b41086bd3a31d22452378e9028a0/aiohttp-3.13.5-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:fb0540c854ac9c0c5ad495908fdfd3e332d553ec731698c0e29b1877ba0d2ec6", size = 1720152, upload-time = "2026-03-31T21:57:09.946Z" },
- { url = "https://files.pythonhosted.org/packages/6b/f3/ed17a6f2d742af17b50bae2d152315ed1b164b07a5fd5cc1754d99e4dfa5/aiohttp-3.13.5-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c9883051c6972f58bfc4ebb2116345ee2aa151178e99c3f2b2bbe2af712abd13", size = 1818010, upload-time = "2026-03-31T21:57:12.157Z" },
- { url = "https://files.pythonhosted.org/packages/53/06/ecbc63dc937192e2a5cb46df4d3edb21deb8225535818802f210a6ea5816/aiohttp-3.13.5-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2294172ce08a82fb7c7273485895de1fa1186cc8294cfeb6aef4af42ad261174", size = 1907251, upload-time = "2026-03-31T21:57:14.023Z" },
- { url = "https://files.pythonhosted.org/packages/7e/a5/0521aa32c1ddf3aa1e71dcc466be0b7db2771907a13f18cddaa45967d97b/aiohttp-3.13.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3a807cabd5115fb55af198b98178997a5e0e57dead43eb74a93d9c07d6d4a7dc", size = 1759969, upload-time = "2026-03-31T21:57:16.146Z" },
- { url = "https://files.pythonhosted.org/packages/f6/78/a38f8c9105199dd3b9706745865a8a59d0041b6be0ca0cc4b2ccf1bab374/aiohttp-3.13.5-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:aa6d0d932e0f39c02b80744273cd5c388a2d9bc07760a03164f229c8e02662f6", size = 1616871, upload-time = "2026-03-31T21:57:17.856Z" },
- { url = "https://files.pythonhosted.org/packages/6f/41/27392a61ead8ab38072105c71aa44ff891e71653fe53d576a7067da2b4e8/aiohttp-3.13.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:60869c7ac4aaabe7110f26499f3e6e5696eae98144735b12a9c3d9eae2b51a49", size = 1739844, upload-time = "2026-03-31T21:57:19.679Z" },
- { url = "https://files.pythonhosted.org/packages/6e/55/5564e7ae26d94f3214250009a0b1c65a0c6af4bf88924ccb6fdab901de28/aiohttp-3.13.5-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:26d2f8546f1dfa75efa50c3488215a903c0168d253b75fba4210f57ab77a0fb8", size = 1731969, upload-time = "2026-03-31T21:57:22.006Z" },
- { url = "https://files.pythonhosted.org/packages/6d/c5/705a3929149865fc941bcbdd1047b238e4a72bcb215a9b16b9d7a2e8d992/aiohttp-3.13.5-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1162a1492032c82f14271e831c8f4b49f2b6078f4f5fc74de2c912fa225d51d", size = 1795193, upload-time = "2026-03-31T21:57:24.256Z" },
- { url = "https://files.pythonhosted.org/packages/a6/19/edabed62f718d02cff7231ca0db4ef1c72504235bc467f7b67adb1679f48/aiohttp-3.13.5-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:8b14eb3262fad0dc2f89c1a43b13727e709504972186ff6a99a3ecaa77102b6c", size = 1606477, upload-time = "2026-03-31T21:57:26.364Z" },
- { url = "https://files.pythonhosted.org/packages/de/fc/76f80ef008675637d88d0b21584596dc27410a990b0918cb1e5776545b5b/aiohttp-3.13.5-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:ca9ac61ac6db4eb6c2a0cd1d0f7e1357647b638ccc92f7e9d8d133e71ed3c6ac", size = 1813198, upload-time = "2026-03-31T21:57:28.316Z" },
- { url = "https://files.pythonhosted.org/packages/e5/67/5b3ac26b80adb20ea541c487f73730dc8fa107d632c998f25bbbab98fcda/aiohttp-3.13.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7996023b2ed59489ae4762256c8516df9820f751cf2c5da8ed2fb20ee50abab3", size = 1752321, upload-time = "2026-03-31T21:57:30.549Z" },
- { url = "https://files.pythonhosted.org/packages/88/06/e4a2e49255ea23fa4feeb5ab092d90240d927c15e47b5b5c48dff5a9ce29/aiohttp-3.13.5-cp311-cp311-win32.whl", hash = "sha256:77dfa48c9f8013271011e51c00f8ada19851f013cde2c48fca1ba5e0caf5bb06", size = 439069, upload-time = "2026-03-31T21:57:32.388Z" },
- { url = "https://files.pythonhosted.org/packages/c0/43/8c7163a596dab4f8be12c190cf467a1e07e4734cf90eebb39f7f5d53fc6a/aiohttp-3.13.5-cp311-cp311-win_amd64.whl", hash = "sha256:d3a4834f221061624b8887090637db9ad4f61752001eae37d56c52fddade2dc8", size = 462859, upload-time = "2026-03-31T21:57:34.455Z" },
- { url = "https://files.pythonhosted.org/packages/be/6f/353954c29e7dcce7cf00280a02c75f30e133c00793c7a2ed3776d7b2f426/aiohttp-3.13.5-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:023ecba036ddd840b0b19bf195bfae970083fd7024ce1ac22e9bba90464620e9", size = 748876, upload-time = "2026-03-31T21:57:36.319Z" },
- { url = "https://files.pythonhosted.org/packages/f5/1b/428a7c64687b3b2e9cd293186695affc0e1e54a445d0361743b231f11066/aiohttp-3.13.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:15c933ad7920b7d9a20de151efcd05a6e38302cbf0e10c9b2acb9a42210a2416", size = 499557, upload-time = "2026-03-31T21:57:38.236Z" },
- { url = "https://files.pythonhosted.org/packages/29/47/7be41556bfbb6917069d6a6634bb7dd5e163ba445b783a90d40f5ac7e3a7/aiohttp-3.13.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ab2899f9fa2f9f741896ebb6fa07c4c883bfa5c7f2ddd8cf2aafa86fa981b2d2", size = 500258, upload-time = "2026-03-31T21:57:39.923Z" },
- { url = "https://files.pythonhosted.org/packages/67/84/c9ecc5828cb0b3695856c07c0a6817a99d51e2473400f705275a2b3d9239/aiohttp-3.13.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a60eaa2d440cd4707696b52e40ed3e2b0f73f65be07fd0ef23b6b539c9c0b0b4", size = 1749199, upload-time = "2026-03-31T21:57:41.938Z" },
- { url = "https://files.pythonhosted.org/packages/f0/d3/3c6d610e66b495657622edb6ae7c7fd31b2e9086b4ec50b47897ad6042a9/aiohttp-3.13.5-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:55b3bdd3292283295774ab585160c4004f4f2f203946997f49aac032c84649e9", size = 1721013, upload-time = "2026-03-31T21:57:43.904Z" },
- { url = "https://files.pythonhosted.org/packages/49/a0/24409c12217456df0bae7babe3b014e460b0b38a8e60753d6cb339f6556d/aiohttp-3.13.5-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c2b2355dc094e5f7d45a7bb262fe7207aa0460b37a0d87027dcf21b5d890e7d5", size = 1781501, upload-time = "2026-03-31T21:57:46.285Z" },
- { url = "https://files.pythonhosted.org/packages/98/9d/b65ec649adc5bccc008b0957a9a9c691070aeac4e41cea18559fef49958b/aiohttp-3.13.5-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b38765950832f7d728297689ad78f5f2cf79ff82487131c4d26fe6ceecdc5f8e", size = 1878981, upload-time = "2026-03-31T21:57:48.734Z" },
- { url = "https://files.pythonhosted.org/packages/57/d8/8d44036d7eb7b6a8ec4c5494ea0c8c8b94fbc0ed3991c1a7adf230df03bf/aiohttp-3.13.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b18f31b80d5a33661e08c89e202edabf1986e9b49c42b4504371daeaa11b47c1", size = 1767934, upload-time = "2026-03-31T21:57:51.171Z" },
- { url = "https://files.pythonhosted.org/packages/31/04/d3f8211f273356f158e3464e9e45484d3fb8c4ce5eb2f6fe9405c3273983/aiohttp-3.13.5-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:33add2463dde55c4f2d9635c6ab33ce154e5ecf322bd26d09af95c5f81cfa286", size = 1566671, upload-time = "2026-03-31T21:57:53.326Z" },
- { url = "https://files.pythonhosted.org/packages/41/db/073e4ebe00b78e2dfcacff734291651729a62953b48933d765dc513bf798/aiohttp-3.13.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:327cc432fdf1356fb4fbc6fe833ad4e9f6aacb71a8acaa5f1855e4b25910e4a9", size = 1705219, upload-time = "2026-03-31T21:57:55.385Z" },
- { url = "https://files.pythonhosted.org/packages/48/45/7dfba71a2f9fd97b15c95c06819de7eb38113d2cdb6319669195a7d64270/aiohttp-3.13.5-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:7c35b0bf0b48a70b4cb4fc5d7bed9b932532728e124874355de1a0af8ec4bc88", size = 1743049, upload-time = "2026-03-31T21:57:57.341Z" },
- { url = "https://files.pythonhosted.org/packages/18/71/901db0061e0f717d226386a7f471bb59b19566f2cae5f0d93874b017271f/aiohttp-3.13.5-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:df23d57718f24badef8656c49743e11a89fd6f5358fa8a7b96e728fda2abf7d3", size = 1749557, upload-time = "2026-03-31T21:57:59.626Z" },
- { url = "https://files.pythonhosted.org/packages/08/d5/41eebd16066e59cd43728fe74bce953d7402f2b4ddfdfef2c0e9f17ca274/aiohttp-3.13.5-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:02e048037a6501a5ec1f6fc9736135aec6eb8a004ce48838cb951c515f32c80b", size = 1558931, upload-time = "2026-03-31T21:58:01.972Z" },
- { url = "https://files.pythonhosted.org/packages/30/e6/4a799798bf05740e66c3a1161079bda7a3dd8e22ca392481d7a7f9af82a6/aiohttp-3.13.5-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:31cebae8b26f8a615d2b546fee45d5ffb76852ae6450e2a03f42c9102260d6fe", size = 1774125, upload-time = "2026-03-31T21:58:04.007Z" },
- { url = "https://files.pythonhosted.org/packages/84/63/7749337c90f92bc2cb18f9560d67aa6258c7060d1397d21529b8004fcf6f/aiohttp-3.13.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:888e78eb5ca55a615d285c3c09a7a91b42e9dd6fc699b166ebd5dee87c9ccf14", size = 1732427, upload-time = "2026-03-31T21:58:06.337Z" },
- { url = "https://files.pythonhosted.org/packages/98/de/cf2f44ff98d307e72fb97d5f5bbae3bfcb442f0ea9790c0bf5c5c2331404/aiohttp-3.13.5-cp312-cp312-win32.whl", hash = "sha256:8bd3ec6376e68a41f9f95f5ed170e2fcf22d4eb27a1f8cb361d0508f6e0557f3", size = 433534, upload-time = "2026-03-31T21:58:08.712Z" },
- { url = "https://files.pythonhosted.org/packages/aa/ca/eadf6f9c8fa5e31d40993e3db153fb5ed0b11008ad5d9de98a95045bed84/aiohttp-3.13.5-cp312-cp312-win_amd64.whl", hash = "sha256:110e448e02c729bcebb18c60b9214a87ba33bac4a9fa5e9a5f139938b56c6cb1", size = 460446, upload-time = "2026-03-31T21:58:10.945Z" },
+sdist = { url = "https://files.pythonhosted.org/packages/58/d9/22ce5786ac0c1653ae8b6c23bded02c1686d11f0dbb45b31ce128e0df985/aiohttp-3.14.3.tar.gz", hash = "sha256:9491196535a88924a60afd5b5f434b5b203b6cc616250878dbdb223a8f7844bc", size = 7971213, upload-time = "2026-07-23T01:57:27.037Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/f8/5c/b3e4ff8ad43a8afef9602c5e90285936da1beaea8b029016b793891f03c3/aiohttp-3.14.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e568e14940c09955aa51f4e645b6daa18a581c5dcfcd73744dcc86a856e3ced3", size = 764250, upload-time = "2026-07-23T01:52:48.525Z" },
+ { url = "https://files.pythonhosted.org/packages/0e/da/f1b384465e51449d844056b75070461da03a9a23e6c1747003695bf4172a/aiohttp-3.14.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:54cfcdee2770dac994417cbb0ee1f3eb0e7cb6b30c79bf44f2c02ff79ec5124a", size = 516281, upload-time = "2026-07-23T01:52:51.047Z" },
+ { url = "https://files.pythonhosted.org/packages/b9/3f/01264f820ee2e3712a827892b1cd6ff80f3300c1fcbffbb45714a915d47a/aiohttp-3.14.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:21c016079415ed3fd676963e9793700a566d85dbbd6bfc564b9b2d209147dcc8", size = 514742, upload-time = "2026-07-23T01:52:53.779Z" },
+ { url = "https://files.pythonhosted.org/packages/9e/8d/a71c6f2db52ac1ed142b133f7feddaa6b70539c3f4de24d7e226c95b794c/aiohttp-3.14.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d6088ec9894113802bddb3c09e974929aed2c7b3a8c456219b8aab4481f1a239", size = 1780613, upload-time = "2026-07-23T01:52:56.948Z" },
+ { url = "https://files.pythonhosted.org/packages/a5/11/3dd9b3fb3a170f6ec9011b5291d876a6fab4086714c9e158600edf01b4fd/aiohttp-3.14.3-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:16ea7e24c309fb7c0bbd505d149abe4fe4dccfb8db911db7dbec0921bc889a6f", size = 1737688, upload-time = "2026-07-23T01:52:59.294Z" },
+ { url = "https://files.pythonhosted.org/packages/6d/3e/834c26918be7d88068822b40e0db30fca50b5f4fe79104aa16a93f1d74e6/aiohttp-3.14.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:56f355e79f71aef2a85c80305cc915f894b170dba76de5fe84f6351939b83c06", size = 1845742, upload-time = "2026-07-23T01:53:01.641Z" },
+ { url = "https://files.pythonhosted.org/packages/cc/c9/49ab8572df7d66bc13d11e31f781292badb04180dd87ba98733066c6aed7/aiohttp-3.14.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:18c441d0a8fca6de8d1f546849b9f0ab20d435993e2c5b59562b2fae6be2f929", size = 1928412, upload-time = "2026-07-23T01:53:04.018Z" },
+ { url = "https://files.pythonhosted.org/packages/a5/b9/2b8f0c0ce09c87a1daf80fd483431b56b1435d3f62789bc86f572e1245de/aiohttp-3.14.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:53e7b4ce82b54a8bcc71b3b67a5cbd177ca1d7f592cbc92cd38b7349f73482db", size = 1786220, upload-time = "2026-07-23T01:53:06.481Z" },
+ { url = "https://files.pythonhosted.org/packages/85/00/9c45f81de11710460edfa1dc81317b6e882703b160926c879a9d20da9fcc/aiohttp-3.14.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f55119f7bf25f49ed210f6096090715da24f2943c62102448915fde3c62877ce", size = 1637231, upload-time = "2026-07-23T01:53:10.258Z" },
+ { url = "https://files.pythonhosted.org/packages/19/ce/967d628e910756f3539c6107cb7844a1b69440dcb3029a5ee7871b09ab63/aiohttp-3.14.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9aa6e61fdf20105c4144e755bd586008ff450791d67b1c8146fdc15959c4d51c", size = 1753161, upload-time = "2026-07-23T01:53:13.817Z" },
+ { url = "https://files.pythonhosted.org/packages/11/b2/0c3d4114f0aee4f580f5b3b4eb71b24d7a23b834ea506a4dfebe76513f35/aiohttp-3.14.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:ccd4893707b3e2a13e39c90d43cf80edf2e4d0457935bcc103bf2346214c3f15", size = 1756356, upload-time = "2026-07-23T01:53:16.211Z" },
+ { url = "https://files.pythonhosted.org/packages/63/5d/99e7d91c82f1399d1ae2a854e080bd1493fbc31e5e959dbc4ec33dac3bec/aiohttp-3.14.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:b2466434105a4e03113c36ec775cc2ebe6676b62eae326fa670bb607ef788c1c", size = 1819846, upload-time = "2026-07-23T01:53:18.289Z" },
+ { url = "https://files.pythonhosted.org/packages/ad/05/d5e1cb6480eeffd3f901d40a2c5e2d1e7effdc797837da3b490272699f13/aiohttp-3.14.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:ba59d59aba08ac02fc03b0c8983ccd5ee39a199d0552ce9e6d2b4845b34d59ae", size = 1628531, upload-time = "2026-07-23T01:53:23.86Z" },
+ { url = "https://files.pythonhosted.org/packages/c9/90/b934682bcaefae18a9e04f3dff5b68522ba810906358ae5029b68110ea3b/aiohttp-3.14.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:ed099d105449c4f9e84f24af203cd131349d4761d8813fa7e02c32e7128cd910", size = 1832712, upload-time = "2026-07-23T01:53:27.551Z" },
+ { url = "https://files.pythonhosted.org/packages/21/df/6061679faaf81fac746e7307c7adb71e858071a5d34c27583afefc64f543/aiohttp-3.14.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:152516815ef926786a0b6ae2b8f1fd2e0c71582dee0b435636865316fd4891b7", size = 1775014, upload-time = "2026-07-23T01:53:30.223Z" },
+ { url = "https://files.pythonhosted.org/packages/8a/1d/f854878bbc69b88faefe924b619a34a6f59ec05fd387c77690667eaa75eb/aiohttp-3.14.3-cp311-cp311-win32.whl", hash = "sha256:a4af35c443e0b1a1bd6a8af3f3485d7fda15c142751a00f3ff8090f0b93346fa", size = 456006, upload-time = "2026-07-23T01:53:34.97Z" },
+ { url = "https://files.pythonhosted.org/packages/73/0c/2af9d1674baccd1dbd47282a93d660a22e57ef6167c856deb24b4214fbab/aiohttp-3.14.3-cp311-cp311-win_amd64.whl", hash = "sha256:e1e74298bab6ee0d6e749ed4fd1901c7e604bdda32c03d787a2cc71c46d0433d", size = 481069, upload-time = "2026-07-23T01:53:39.673Z" },
+ { url = "https://files.pythonhosted.org/packages/8e/76/88401ff3fc95e85c5fc38d588f36f55e61ecb64343b2bc8d69326f453cc0/aiohttp-3.14.3-cp311-cp311-win_arm64.whl", hash = "sha256:03cd2bde3d7f085b64e549c985f4bb928cad7e8ecf5323bfca320db548d81b39", size = 453021, upload-time = "2026-07-23T01:53:43.749Z" },
+ { url = "https://files.pythonhosted.org/packages/18/d4/eb96299230e20acf2efae207cb8d69051f1f68e357e5ea5e479bf6fb097a/aiohttp-3.14.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:39aded8c7f3b935b54aab1d8d73c70ec0ee2d3ec3b943e0e86611bc150ba47f5", size = 754690, upload-time = "2026-07-23T01:53:47.332Z" },
+ { url = "https://files.pythonhosted.org/packages/88/11/e7a70a209eb9a067c0d3212b518a0134e3484f5178c7533878b6b514d469/aiohttp-3.14.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5bcb6ff3fdab1258a192679ff1a05d44f59626430aa05cd1a9d2447423599228", size = 509484, upload-time = "2026-07-23T01:53:51.159Z" },
+ { url = "https://files.pythonhosted.org/packages/30/07/4bbc222cc8dbe31d4c3e8a5baad2286e4d42026ac0c570027b89afce6344/aiohttp-3.14.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:617105e2c3018ee38d0c8ce5ee3c84f621a6d8b9f723202aacaff28449ca91ee", size = 511949, upload-time = "2026-07-23T01:53:55.083Z" },
+ { url = "https://files.pythonhosted.org/packages/54/b9/42e74c46b7b7c794b995bbc1f573fb48950c38b19d8600c62a6804ee2d67/aiohttp-3.14.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f631fe87a6f30df5fbe6d79640b25e4cffb38c31c7fb6f10871517b84b0f8c1a", size = 1765282, upload-time = "2026-07-23T01:53:59.662Z" },
+ { url = "https://files.pythonhosted.org/packages/6b/ed/62bc4d74363ad346d518e0720363a949f63e2e23439a79eb5813d4d29bb3/aiohttp-3.14.3-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a94dbaae5ae27bd849c93570669bff91e0510f33a80805738e3de72a7be0447b", size = 1741511, upload-time = "2026-07-23T01:54:04.063Z" },
+ { url = "https://files.pythonhosted.org/packages/d0/9f/181e8a8bc79e47d13c7fc4540bd7a3b729d9505609c61f392a8dd2fbfe55/aiohttp-3.14.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8f2f1c4c032c7cedd7d8da6f54c97b70266c6570c3108d3fdffee7188bb70529", size = 1810680, upload-time = "2026-07-23T01:54:09.882Z" },
+ { url = "https://files.pythonhosted.org/packages/5c/9a/dec94d6ad694552fe3424e3f1928d7a606a5d9d9433a04e7ecdd9d38ae7f/aiohttp-3.14.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ea05e1f97ceea523942d9b2a7d7c0359d781d683d6b043f5943a602b14da4787", size = 1905646, upload-time = "2026-07-23T01:54:13.475Z" },
+ { url = "https://files.pythonhosted.org/packages/52/b7/7cd31f29d6055bd711ae6e669367fba6f5ae9de463910a793e30556a8db7/aiohttp-3.14.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:543906c127fb1d929b95076db19b83fa2d46751006ff1e23b093aa5ac4d8db42", size = 1792122, upload-time = "2026-07-23T01:54:15.752Z" },
+ { url = "https://files.pythonhosted.org/packages/66/73/10b1ef93afa61f4963c746257b70ced619cf31a4798671de5fdb2608501d/aiohttp-3.14.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0a5ff2dfbb9ce645fa5b8ef3e02c6c0b9cc3f6030ff863d0c51fffc50cb5541b", size = 1591127, upload-time = "2026-07-23T01:54:19.489Z" },
+ { url = "https://files.pythonhosted.org/packages/49/ed/3b203fa6de1b338c14acdc06bf6ca9b043b7944f005966958c2ced932cde/aiohttp-3.14.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:041badb8f84396357c4d3ad26de6afd7a32b112f43d3c63045c0c8278cfd2043", size = 1725210, upload-time = "2026-07-23T01:54:24.129Z" },
+ { url = "https://files.pythonhosted.org/packages/28/b7/1c2aab8c706436dcc28598452488ac9cd7c409da815237c28c27d58993e6/aiohttp-3.14.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:530125ee1163c4219af35dc3aa1206e541e7b31b6efc1a3f93b70a136f65d427", size = 1764848, upload-time = "2026-07-23T01:54:27.973Z" },
+ { url = "https://files.pythonhosted.org/packages/54/50/94c28f08b131c4bf10984ea2c7a536c9920608bb2d6e7f95642c30cc87b7/aiohttp-3.14.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c8653fd547c93a61aadc612007790f5555cdd18946fa48cf45e26d8ea4ea473d", size = 1777102, upload-time = "2026-07-23T01:54:31.775Z" },
+ { url = "https://files.pythonhosted.org/packages/13/d4/e7d09ba7d345fb2d74440fd2fa033c5e079fac05552927705986f41a364f/aiohttp-3.14.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:89176250f686cb9853c0fb7ead90e639e915b84a6f43eedc2a4e7ec21f1037f0", size = 1580205, upload-time = "2026-07-23T01:54:34.518Z" },
+ { url = "https://files.pythonhosted.org/packages/a3/84/072a91d68e1e1eb587985b54baab94221277f877e8ef274fc213a0ceae28/aiohttp-3.14.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:3a26434dafe408229ff3403458ca58de24fb51936504decac49ce6755f77e59d", size = 1797219, upload-time = "2026-07-23T01:54:36.995Z" },
+ { url = "https://files.pythonhosted.org/packages/e0/eb/aad34e897e668424d6e995da5dff8a4a09af93363d3392488772957a63aa/aiohttp-3.14.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d1558173930a5a8d3069cee5c92fc91c87c4dbcb099debbb3622053717145a19", size = 1768629, upload-time = "2026-07-23T01:54:40.103Z" },
+ { url = "https://files.pythonhosted.org/packages/b6/2b/6bb88ddba0fecd9122aa3ebcad25996cf6c083a4a7040dbb3a4f97972af6/aiohttp-3.14.3-cp312-cp312-win32.whl", hash = "sha256:16100ad3ab8d649fdfbee87602d9d2dcdca9df0b9eda8a1b5fdc0d41f96da559", size = 451481, upload-time = "2026-07-23T01:54:42.547Z" },
+ { url = "https://files.pythonhosted.org/packages/76/9b/f2f8f108da17ecef2cc3efc424e8b7ad3782b1a8360f7b8eae8ced84f6ea/aiohttp-3.14.3-cp312-cp312-win_amd64.whl", hash = "sha256:33a2d7c28d33797a2e99923dffa63f83d908a19b6bf26cfe80fa790aa5e1a75a", size = 476845, upload-time = "2026-07-23T01:54:44.853Z" },
+ { url = "https://files.pythonhosted.org/packages/3e/44/28dac80a8941b604f4da10ce21097614ca1bf905ce93dca28d8d7de9c1e7/aiohttp-3.14.3-cp312-cp312-win_arm64.whl", hash = "sha256:362a3fd481769cac1a824514bcd86fda51c65e8fe6e051099e008fddde6db17c", size = 448050, upload-time = "2026-07-23T01:54:47.087Z" },
]
[[package]]
@@ -1442,6 +1445,36 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/9c/97/7d75fe37a7a6ed171a2cf17117177e7aab7e6e0d115858741b41e9dd4254/google_crc32c-1.8.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f639065ea2042d5c034bf258a9f085eaa7af0cd250667c0635a3118e8f92c69c", size = 28800, upload-time = "2025-12-16T00:40:30.322Z" },
]
+[[package]]
+name = "google-re2"
+version = "1.1.20251105"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/6b/60/805c654ba53d685513df955ee745f71920fe8e6a284faf0f9b9dc19b659c/google_re2-1.1.20251105.tar.gz", hash = "sha256:1db14a292ee8303b91e91e7c37e05ac17d3c467f29416c79ac70a78be3e65bda", size = 11676, upload-time = "2025-11-05T14:58:07.324Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/8d/4d/203a08dab1bdb5c83b46dd424c01a789ecb5a37dbc80f33d016bd116a9d7/google_re2-1.1.20251105-1-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:329efa209ea7baa44f0facf0402fa34e655dc97fdeb10d0b83fc06354f5575fd", size = 483717, upload-time = "2025-11-05T14:57:04.808Z" },
+ { url = "https://files.pythonhosted.org/packages/78/88/466026b43ff5c7d740f5ede090992ec63b60d1810ab14fe35dfc00677e0a/google_re2-1.1.20251105-1-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:aa2ad5f6f48921ec137a7b7f1b1da903ddef8627a2dc30bc878a9a69d9925719", size = 515547, upload-time = "2025-11-05T14:57:06.013Z" },
+ { url = "https://files.pythonhosted.org/packages/f3/6a/c6c9fdb00c98990e4f7a6cd650e209d7b5d2754ca0404b72c69ac9909a69/google_re2-1.1.20251105-1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:ac1cb2526cc88f050a0661fc7245ad009ee454bddc541b2e653f1d007585000d", size = 485396, upload-time = "2025-11-05T14:57:07.592Z" },
+ { url = "https://files.pythonhosted.org/packages/a2/f6/529c44f607c47f96cfa29c1fe3a690fe75b2fdb48e9b0d6b54e5f0a75e59/google_re2-1.1.20251105-1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:50c7205182ad66c23c07abe8072f720ca2f7d595b61e28fd9b63623614f9afd6", size = 517150, upload-time = "2025-11-05T14:57:09.376Z" },
+ { url = "https://files.pythonhosted.org/packages/df/d2/ccc07860e31ab81965c63f9ed4eb69ea0d3449a9b4e1610f71883694bbe8/google_re2-1.1.20251105-1-cp311-cp311-macosx_15_0_arm64.whl", hash = "sha256:4cb5acee61e35772503b8b1db3c592a46b8e6a9bc0ab54d7d6233654ea2bf93d", size = 482807, upload-time = "2025-11-05T14:57:11.057Z" },
+ { url = "https://files.pythonhosted.org/packages/bd/43/5fb20d16664457f61670bdd95f39039d43ee8b7732511c688e2f322a4317/google_re2-1.1.20251105-1-cp311-cp311-macosx_15_0_x86_64.whl", hash = "sha256:1617097d63620c2d46bdfc0e48f24f66cd341664fc75718636d234f67473fe7f", size = 508839, upload-time = "2025-11-05T14:57:12.338Z" },
+ { url = "https://files.pythonhosted.org/packages/0e/f2/6e470338271e164dd3c5e508876f99aec3ed23bf419c7d54a5672fd5b05f/google_re2-1.1.20251105-1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:18a5610b26742b90cb1d64ead2b16fe0e3bd7e67add03fd3779cd1b85e401661", size = 573718, upload-time = "2025-11-05T14:57:13.635Z" },
+ { url = "https://files.pythonhosted.org/packages/91/21/4566fc344c21cf3c49082d13ddab785994b5e3b8b7fd4631242538f698a2/google_re2-1.1.20251105-1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:03156291269f145eccddff63118f2df02d395792f51fc039f09955818943815a", size = 590749, upload-time = "2025-11-05T14:57:14.864Z" },
+ { url = "https://files.pythonhosted.org/packages/94/19/5981fb798bb8d08933b815b1fd9e55d179c380b9d8c21a49197b9b7c5967/google_re2-1.1.20251105-1-cp311-cp311-win32.whl", hash = "sha256:54f51762b51dc238eceddf49b56cc2b64594fe72d9328c1c39d615aa990e1f87", size = 434066, upload-time = "2025-11-05T14:57:16.22Z" },
+ { url = "https://files.pythonhosted.org/packages/49/e5/f83053a36cfc4762d843748e4f7a9c1141937dcf74cd6fc3f4598292dda3/google_re2-1.1.20251105-1-cp311-cp311-win_amd64.whl", hash = "sha256:f5f856ff5036a8f22b3bad57f376d4e3b97b59b64f311bdb1f83c8dabded2492", size = 491025, upload-time = "2025-11-05T14:57:17.746Z" },
+ { url = "https://files.pythonhosted.org/packages/56/be/4315c3b38f42f9a2888fa76260545c98547502f1c35aa63a672d39011b2e/google_re2-1.1.20251105-1-cp311-cp311-win_arm64.whl", hash = "sha256:913864f97de4151eaa8bb7746ca230fd193656501e07fb658ce2cd46d4f6efcc", size = 642194, upload-time = "2025-11-05T14:57:19.374Z" },
+ { url = "https://files.pythonhosted.org/packages/67/20/73b487538e9107c2fd96aed737e3f3890dfce3e292622e4ffb2f9c810ee5/google_re2-1.1.20251105-1-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:b30f09b4d63249c72e65ccae4cbf6b331b48c22fc7cb439f1d85f347b9d07ceb", size = 485591, upload-time = "2025-11-05T14:57:20.961Z" },
+ { url = "https://files.pythonhosted.org/packages/b9/9a/ca3a993bdb5dc6d5b2616b9657b2872a83d1827f8bd3ab50cd629eb751c7/google_re2-1.1.20251105-1-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:9a77892c524b8bdf3d47d7cad1cc2ac3a0108bdd65007ef4c02888fa46baf8ee", size = 518780, upload-time = "2025-11-05T14:57:22.18Z" },
+ { url = "https://files.pythonhosted.org/packages/df/37/b2e367987371514253ec9e514637f457deaacb7acc1c900814f3a6421e0f/google_re2-1.1.20251105-1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a3ac51b28cbf25c100dfd8849212d878d7005d1d4a7e129a10789043c56b6021", size = 486966, upload-time = "2025-11-05T14:57:24.575Z" },
+ { url = "https://files.pythonhosted.org/packages/d9/69/1db6742943c0ac254bfb7d8a37a5d3f73f016a65cfa1f84fe3a0451820f6/google_re2-1.1.20251105-1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:9f7158afc9825ac2654c6561aea94a1f7edb5b5b88e6e3639bb80bb817d102ac", size = 520225, upload-time = "2025-11-05T14:57:26.039Z" },
+ { url = "https://files.pythonhosted.org/packages/f4/0a/0747c92dbebe2c09a26bd7386d372b5c5a9926236b4f3d69bb8f15db05cb/google_re2-1.1.20251105-1-cp312-cp312-macosx_15_0_arm64.whl", hash = "sha256:5320da07dc3b7ac7f407514f42ac17d67e771ac7c7562d449571185e6fb601b2", size = 482943, upload-time = "2025-11-05T14:57:27.353Z" },
+ { url = "https://files.pythonhosted.org/packages/7f/14/6bfc6838bb6cb561824ac03deeab2bd11d5d9a93505f536c8fa2f6bd46c4/google_re2-1.1.20251105-1-cp312-cp312-macosx_15_0_x86_64.whl", hash = "sha256:5a4e5785bc30d52ce655d805b07ad2d8a4905429a5f690ae9c2f1caa76665709", size = 510384, upload-time = "2025-11-05T14:57:29.139Z" },
+ { url = "https://files.pythonhosted.org/packages/8a/0a/6add090c917ee39f6f0be753037cafceb3bad904b424efc155fb38082635/google_re2-1.1.20251105-1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2b7a3b90f747130310d4b3b8e19ebb845d0d97c1deb63b36f76c7242dacbd736", size = 572446, upload-time = "2025-11-05T14:57:30.495Z" },
+ { url = "https://files.pythonhosted.org/packages/0d/1c/8b1ccbeade96a21435d55b5185cd6d9b2ceab5a9af998a4d9099e0540759/google_re2-1.1.20251105-1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:809c5fa5d08279413b29c2e2c5c528e85cd94a0e0fd897db595a0c09eeee2782", size = 591348, upload-time = "2025-11-05T14:57:31.808Z" },
+ { url = "https://files.pythonhosted.org/packages/62/cf/7bdd7a1ae7828b613011da808eafec4da3132f43c3be6af5e0bd670ebe8b/google_re2-1.1.20251105-1-cp312-cp312-win32.whl", hash = "sha256:d8424e63a9ec0fe5bde03d97876b2431f8a746af33eb475fa1ae39144bd05b2a", size = 433787, upload-time = "2025-11-05T14:57:33.071Z" },
+ { url = "https://files.pythonhosted.org/packages/31/e9/5dd951c35acaabfe87c67228b9af2cdcd7779d9167edbe6b9094b8a8e529/google_re2-1.1.20251105-1-cp312-cp312-win_amd64.whl", hash = "sha256:062313c309f93dfeb6966372f4c446580e98879133ec155522eea8aaf568a5cd", size = 491726, upload-time = "2025-11-05T14:57:34.39Z" },
+ { url = "https://files.pythonhosted.org/packages/60/8d/c1afd29fc2cb475fd4c634f3d3c8099c0efb662362c10b27a9eaf11c9357/google_re2-1.1.20251105-1-cp312-cp312-win_arm64.whl", hash = "sha256:558f144b26a9555ae4e9467cc3aa3299a8ce13217f328b21ae326ca0633be19b", size = 642673, upload-time = "2025-11-05T14:57:35.693Z" },
+]
+
[[package]]
name = "google-resumable-media"
version = "2.10.0"
@@ -1454,36 +1487,6 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/b0/d8/00c6854ac1512bb9eaf13bd3f8f28222f7674947fc510a4ff7616f2efc80/google_resumable_media-2.10.0-py3-none-any.whl", hash = "sha256:88152884bee37b2bf36a0ab81ad8c7fd12212c9803dd981d77c1b35b02d34e7c", size = 81533, upload-time = "2026-06-03T16:13:12.51Z" },
]
-[[package]]
-name = "google-re2"
-version = "1.1.20251105"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/6b/60/805c654ba53d685513df955ee745f71920fe8e6a284faf0f9b9dc19b659c/google_re2-1.1.20251105.tar.gz", hash = "sha256:1db14a292ee8303b91e91e7c37e05ac17d3c467f29416c79ac70a78be3e65bda", size = 11676 }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/8d/4d/203a08dab1bdb5c83b46dd424c01a789ecb5a37dbc80f33d016bd116a9d7/google_re2-1.1.20251105-1-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:329efa209ea7baa44f0facf0402fa34e655dc97fdeb10d0b83fc06354f5575fd", size = 483717 },
- { url = "https://files.pythonhosted.org/packages/78/88/466026b43ff5c7d740f5ede090992ec63b60d1810ab14fe35dfc00677e0a/google_re2-1.1.20251105-1-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:aa2ad5f6f48921ec137a7b7f1b1da903ddef8627a2dc30bc878a9a69d9925719", size = 515547 },
- { url = "https://files.pythonhosted.org/packages/f3/6a/c6c9fdb00c98990e4f7a6cd650e209d7b5d2754ca0404b72c69ac9909a69/google_re2-1.1.20251105-1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:ac1cb2526cc88f050a0661fc7245ad009ee454bddc541b2e653f1d007585000d", size = 485396 },
- { url = "https://files.pythonhosted.org/packages/a2/f6/529c44f607c47f96cfa29c1fe3a690fe75b2fdb48e9b0d6b54e5f0a75e59/google_re2-1.1.20251105-1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:50c7205182ad66c23c07abe8072f720ca2f7d595b61e28fd9b63623614f9afd6", size = 517150 },
- { url = "https://files.pythonhosted.org/packages/df/d2/ccc07860e31ab81965c63f9ed4eb69ea0d3449a9b4e1610f71883694bbe8/google_re2-1.1.20251105-1-cp311-cp311-macosx_15_0_arm64.whl", hash = "sha256:4cb5acee61e35772503b8b1db3c592a46b8e6a9bc0ab54d7d6233654ea2bf93d", size = 482807 },
- { url = "https://files.pythonhosted.org/packages/bd/43/5fb20d16664457f61670bdd95f39039d43ee8b7732511c688e2f322a4317/google_re2-1.1.20251105-1-cp311-cp311-macosx_15_0_x86_64.whl", hash = "sha256:1617097d63620c2d46bdfc0e48f24f66cd341664fc75718636d234f67473fe7f", size = 508839 },
- { url = "https://files.pythonhosted.org/packages/0e/f2/6e470338271e164dd3c5e508876f99aec3ed23bf419c7d54a5672fd5b05f/google_re2-1.1.20251105-1-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:18a5610b26742b90cb1d64ead2b16fe0e3bd7e67add03fd3779cd1b85e401661", size = 573718 },
- { url = "https://files.pythonhosted.org/packages/91/21/4566fc344c21cf3c49082d13ddab785994b5e3b8b7fd4631242538f698a2/google_re2-1.1.20251105-1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:03156291269f145eccddff63118f2df02d395792f51fc039f09955818943815a", size = 590749 },
- { url = "https://files.pythonhosted.org/packages/94/19/5981fb798bb8d08933b815b1fd9e55d179c380b9d8c21a49197b9b7c5967/google_re2-1.1.20251105-1-cp311-cp311-win32.whl", hash = "sha256:54f51762b51dc238eceddf49b56cc2b64594fe72d9328c1c39d615aa990e1f87", size = 434066 },
- { url = "https://files.pythonhosted.org/packages/49/e5/f83053a36cfc4762d843748e4f7a9c1141937dcf74cd6fc3f4598292dda3/google_re2-1.1.20251105-1-cp311-cp311-win_amd64.whl", hash = "sha256:f5f856ff5036a8f22b3bad57f376d4e3b97b59b64f311bdb1f83c8dabded2492", size = 491025 },
- { url = "https://files.pythonhosted.org/packages/56/be/4315c3b38f42f9a2888fa76260545c98547502f1c35aa63a672d39011b2e/google_re2-1.1.20251105-1-cp311-cp311-win_arm64.whl", hash = "sha256:913864f97de4151eaa8bb7746ca230fd193656501e07fb658ce2cd46d4f6efcc", size = 642194 },
- { url = "https://files.pythonhosted.org/packages/67/20/73b487538e9107c2fd96aed737e3f3890dfce3e292622e4ffb2f9c810ee5/google_re2-1.1.20251105-1-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:b30f09b4d63249c72e65ccae4cbf6b331b48c22fc7cb439f1d85f347b9d07ceb", size = 485591 },
- { url = "https://files.pythonhosted.org/packages/b9/9a/ca3a993bdb5dc6d5b2616b9657b2872a83d1827f8bd3ab50cd629eb751c7/google_re2-1.1.20251105-1-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:9a77892c524b8bdf3d47d7cad1cc2ac3a0108bdd65007ef4c02888fa46baf8ee", size = 518780 },
- { url = "https://files.pythonhosted.org/packages/df/37/b2e367987371514253ec9e514637f457deaacb7acc1c900814f3a6421e0f/google_re2-1.1.20251105-1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a3ac51b28cbf25c100dfd8849212d878d7005d1d4a7e129a10789043c56b6021", size = 486966 },
- { url = "https://files.pythonhosted.org/packages/d9/69/1db6742943c0ac254bfb7d8a37a5d3f73f016a65cfa1f84fe3a0451820f6/google_re2-1.1.20251105-1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:9f7158afc9825ac2654c6561aea94a1f7edb5b5b88e6e3639bb80bb817d102ac", size = 520225 },
- { url = "https://files.pythonhosted.org/packages/f4/0a/0747c92dbebe2c09a26bd7386d372b5c5a9926236b4f3d69bb8f15db05cb/google_re2-1.1.20251105-1-cp312-cp312-macosx_15_0_arm64.whl", hash = "sha256:5320da07dc3b7ac7f407514f42ac17d67e771ac7c7562d449571185e6fb601b2", size = 482943 },
- { url = "https://files.pythonhosted.org/packages/7f/14/6bfc6838bb6cb561824ac03deeab2bd11d5d9a93505f536c8fa2f6bd46c4/google_re2-1.1.20251105-1-cp312-cp312-macosx_15_0_x86_64.whl", hash = "sha256:5a4e5785bc30d52ce655d805b07ad2d8a4905429a5f690ae9c2f1caa76665709", size = 510384 },
- { url = "https://files.pythonhosted.org/packages/8a/0a/6add090c917ee39f6f0be753037cafceb3bad904b424efc155fb38082635/google_re2-1.1.20251105-1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2b7a3b90f747130310d4b3b8e19ebb845d0d97c1deb63b36f76c7242dacbd736", size = 572446 },
- { url = "https://files.pythonhosted.org/packages/0d/1c/8b1ccbeade96a21435d55b5185cd6d9b2ceab5a9af998a4d9099e0540759/google_re2-1.1.20251105-1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:809c5fa5d08279413b29c2e2c5c528e85cd94a0e0fd897db595a0c09eeee2782", size = 591348 },
- { url = "https://files.pythonhosted.org/packages/62/cf/7bdd7a1ae7828b613011da808eafec4da3132f43c3be6af5e0bd670ebe8b/google_re2-1.1.20251105-1-cp312-cp312-win32.whl", hash = "sha256:d8424e63a9ec0fe5bde03d97876b2431f8a746af33eb475fa1ae39144bd05b2a", size = 433787 },
- { url = "https://files.pythonhosted.org/packages/31/e9/5dd951c35acaabfe87c67228b9af2cdcd7779d9167edbe6b9094b8a8e529/google_re2-1.1.20251105-1-cp312-cp312-win_amd64.whl", hash = "sha256:062313c309f93dfeb6966372f4c446580e98879133ec155522eea8aaf568a5cd", size = 491726 },
- { url = "https://files.pythonhosted.org/packages/60/8d/c1afd29fc2cb475fd4c634f3d3c8099c0efb662362c10b27a9eaf11c9357/google_re2-1.1.20251105-1-cp312-cp312-win_arm64.whl", hash = "sha256:558f144b26a9555ae4e9467cc3aa3299a8ce13217f328b21ae326ca0633be19b", size = 642673 },
-]
-
[[package]]
name = "googleapis-common-protos"
version = "1.75.0"
@@ -1595,38 +1598,38 @@ wheels = [
[[package]]
name = "hiredis"
-version = "3.4.0"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/1f/e2/1654d65851f39fd94e91a77a5655d09d4b64901fdc594020d8348db697b2/hiredis-3.4.0.tar.gz", hash = "sha256:da19331354433af6a2c54c21f2d70ba084933c0d7d2c43578ec5c5b446674ad5", size = 137169, upload-time = "2026-06-03T16:23:46.226Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/92/d1/09d7323c76d097ff3f6530228d2422c19817b6052716f9a652ecd6e2f68e/hiredis-3.4.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:7f7fc1535f6e1a190089eae46dee25f0c6b72bb221d377be07092803b8208733", size = 138467, upload-time = "2026-06-03T16:22:04.09Z" },
- { url = "https://files.pythonhosted.org/packages/ed/27/c4ebeb0f7ecc8a23d4356efd3ef2b6243ed74d24584d86ff8065fa14a350/hiredis-3.4.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:ed1dba2695f6de009c67d63b39ff978cb43b8a79362f697acedffb7743e50d21", size = 74504, upload-time = "2026-06-03T16:22:04.998Z" },
- { url = "https://files.pythonhosted.org/packages/ae/d7/4f456f36f5c5224bc11a2fad964116a3cc37259d09dd840628aea5fdbf28/hiredis-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3796094f616f72976ff51e4dc1a016e753c0f9af5393b2df96920b6bae1e19b", size = 70080, upload-time = "2026-06-03T16:22:05.76Z" },
- { url = "https://files.pythonhosted.org/packages/04/ba/a16d44b2bd71e72a10673faa94d07cc4e9de90240b65ce2511af0cce065b/hiredis-3.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ccc5c660e31d788ca534a20f2ccb7a80b946b960e18ed4e1db950fcac122b405", size = 304968, upload-time = "2026-06-03T16:22:06.614Z" },
- { url = "https://files.pythonhosted.org/packages/4a/3a/78ca23fe899f8da7ee2caf9c502ac1a63da15d521f33a3fc617a7adbf2e0/hiredis-3.4.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f3c67f39b112dc35f68d5b59ee111db6121f037d1a60cf3840ecffbb2ec5686b", size = 337465, upload-time = "2026-06-03T16:22:07.622Z" },
- { url = "https://files.pythonhosted.org/packages/ba/11/2df9a12f170e9d61739e7df5f06712141414b2dce2cf385fc1fb6f31a46b/hiredis-3.4.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:bca175f02a2b0150ffe7f5dc8bf49c798f34d2c7024d17ace0ec97a7583560e3", size = 348293, upload-time = "2026-06-03T16:22:08.677Z" },
- { url = "https://files.pythonhosted.org/packages/88/07/716ffeb049377d92da6261c5563e554b82336ce3eafb11eb4510c5558be7/hiredis-3.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43004b0b48abc628dda1ac3ac4871e1326c126f8cd9f11164d61934d827d7a3b", size = 310697, upload-time = "2026-06-03T16:22:09.661Z" },
- { url = "https://files.pythonhosted.org/packages/5d/03/ef3697bdee359b4521101bdc16e8e4965a5ebd8634b605fc7cf9c01b6b82/hiredis-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8aaaab18314fd25453b5cf59c8cdca4110e419455bcb4c0737d19d4151513e75", size = 299377, upload-time = "2026-06-03T16:22:10.777Z" },
- { url = "https://files.pythonhosted.org/packages/bc/a7/2a12a2f828c2d611b74dcf2229998c4d2570fe6ed6b4903d6a4c3add84af/hiredis-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:5359caad5b57da0bce11d2880f22617ba3710f0866121a924745447848448034", size = 329008, upload-time = "2026-06-03T16:22:11.82Z" },
- { url = "https://files.pythonhosted.org/packages/66/a9/cdfda214af93eeb9f93a83a099d06f26ae5569f188209ddc8a7c977ed446/hiredis-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:44660a91e0fbc803c29b337c1a9194c8d7b4cd3a3868d28f747cbec2df165483", size = 330103, upload-time = "2026-06-03T16:22:12.935Z" },
- { url = "https://files.pythonhosted.org/packages/87/05/cdc7e2e07b56c716426db4644b917b260a4f6fdc8d16cc3bbac4b27d0a17/hiredis-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a315009b441a0105a373a9a780ebb1c6f7d9ead88ac6ea5f2a15791353c6f590", size = 309582, upload-time = "2026-06-03T16:22:14.157Z" },
- { url = "https://files.pythonhosted.org/packages/f2/36/304a0e029cb6e44add3b0d664315de25c483f6e8f8e1d413c68de969a3d0/hiredis-3.4.0-cp311-cp311-win32.whl", hash = "sha256:282c4310af72afbe18b07d416459f4febeaeb805a067a7df790136e0e550fcb2", size = 38823, upload-time = "2026-06-03T16:22:15.14Z" },
- { url = "https://files.pythonhosted.org/packages/f0/19/7ea1fdbee1c42cbac140005e66e60a1198548eea04456e17dab5c285e31b/hiredis-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:bb44efa4fa3e3ed7779ad0ade3c08ed5d75ca7a6336893e9a4f2722093b4168a", size = 40040, upload-time = "2026-06-03T16:22:15.886Z" },
- { url = "https://files.pythonhosted.org/packages/20/e4/2122980b75a3fa8980540e2265028c757564ecc4d813b40298d29dd876ea/hiredis-3.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:4404c557fd49bcfe24dff41f1209e4221c76d1607df2fb2dfd39474b5b086dcb", size = 36851, upload-time = "2026-06-03T16:22:16.644Z" },
- { url = "https://files.pythonhosted.org/packages/d2/84/f74deb132d238a0d5a3eb1618bf7558c65230b279421f909a9753231c516/hiredis-3.4.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:9e88048a66dfffec7a3f578f2a2a0fd907c75b5bd85b3c9184f76f0149ea399f", size = 138679, upload-time = "2026-06-03T16:22:17.598Z" },
- { url = "https://files.pythonhosted.org/packages/a2/13/399fe51d399b8d4f5717aa68cb1dafcb8c244b19b1b9b0afaaa526c1be94/hiredis-3.4.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:8b3f1d03046765c0a83558bf1756811101e3947649c7ca22a71d9dc3c92929d1", size = 74657, upload-time = "2026-06-03T16:22:18.819Z" },
- { url = "https://files.pythonhosted.org/packages/a4/cf/6a0bcf454b1642997c4dd007bd89beada43f38b22781afdf475060e427ac/hiredis-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:24751054bb11353016d242d09a4a902ecf8f25e3b56fe396cccb6f056fdda016", size = 70115, upload-time = "2026-06-03T16:22:19.649Z" },
- { url = "https://files.pythonhosted.org/packages/98/99/62340215f80e59680c79ae5080c5422311da105870c57bbefc5d87487025/hiredis-3.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:258f820cdd6ee6be39ae6a8ea94a76b8856d34113de6604f63bc81327ef06240", size = 306481, upload-time = "2026-06-03T16:22:20.608Z" },
- { url = "https://files.pythonhosted.org/packages/f1/be/97f349e5bb0dcab0ef28b15523443d9bbe81f8ccbd3dadff56594dfa82fe/hiredis-3.4.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:3774461209688790734b5db8934400a4456493fc1a172fb5298cc5d72201aceb", size = 339560, upload-time = "2026-06-03T16:22:21.861Z" },
- { url = "https://files.pythonhosted.org/packages/1e/3f/eb6a9632bcc13a3fbefce5de90090052fb1ae1cd3d57faf687f20149d592/hiredis-3.4.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ccdb63363c82ea9cea2d48126bc8e9241437b8b3b36413e967647a17add59643", size = 351549, upload-time = "2026-06-03T16:22:22.969Z" },
- { url = "https://files.pythonhosted.org/packages/1e/8c/440369f727dcb856f3eeda238d6e67781b180feaa831bd28997d8af10c3b/hiredis-3.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:452cff764acb30c106d1e33f1bdf03fa9d4a9b0a9c995d722d4d39c998b40582", size = 313066, upload-time = "2026-06-03T16:22:23.987Z" },
- { url = "https://files.pythonhosted.org/packages/ec/d1/3d76c4d5c46cd2e7b38641f7c8b325e0cab7d49d565ea573256eb3837d0c/hiredis-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1fb0a139cd52535f3e5a532816b5c36b3aea95817410fbf28ca4a676026347a5", size = 300827, upload-time = "2026-06-03T16:22:25.287Z" },
- { url = "https://files.pythonhosted.org/packages/c5/bc/d112dd9704ae47243a515fb021ec4d0b5a1b8d83a7a3eff3284c0248412d/hiredis-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:163d8c43e2706d23490532ea0de8736fc1493cfa52f0ee65f85b0f074f2fe017", size = 331284, upload-time = "2026-06-03T16:22:26.385Z" },
- { url = "https://files.pythonhosted.org/packages/e9/7b/8a4dc0a15e4658c81a9e79b2c167fbfbf750e0c1c7ef13e00e69d4273ced/hiredis-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4b8f52844cd260d7805eca55c834e3e06b4c0d5b53a4178143b92242c2517c0d", size = 332962, upload-time = "2026-06-03T16:22:27.392Z" },
- { url = "https://files.pythonhosted.org/packages/1d/52/d3d0bb234de8deb4cbd432cdc63d001a6cad1f9c05fe07d2fa652f8cf412/hiredis-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:03374d663b0e025e4039757ef5fad02e3ff714f7a01e5b34c88de2a9c91359dc", size = 311698, upload-time = "2026-06-03T16:22:28.442Z" },
- { url = "https://files.pythonhosted.org/packages/04/5b/54a052eccaf901703b57d7c28509e74341fa0da08d770f485345397ea1e5/hiredis-3.4.0-cp312-cp312-win32.whl", hash = "sha256:696e0a2118e1df5ccacf8ecf8abe528cf0c4f1f1d867f64c34579bef77778cdb", size = 38921, upload-time = "2026-06-03T16:22:29.39Z" },
- { url = "https://files.pythonhosted.org/packages/a7/64/6508236eda66765fbe873d1d0a0722e38059302e96dc9915b162ff17b35a/hiredis-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:ee6b4beb79a71df67af15a8451366babc2687fcac674d5c6eacec4197e4ce8c1", size = 40090, upload-time = "2026-06-03T16:22:30.204Z" },
- { url = "https://files.pythonhosted.org/packages/fb/1c/7333aba1b4b7cef2591b244140aec0f1aad903397bbaa31c1858722b2fe4/hiredis-3.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:14524fdc751e3960d78d848872576b5442b40baae3cac14fbab1ba7ac523891f", size = 36875, upload-time = "2026-06-03T16:22:31.087Z" },
+version = "3.4.2"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/38/da/41b341ebed1eb6f1074112936af98bb52880724737887ae9bade9d7ce107/hiredis-3.4.2.tar.gz", hash = "sha256:9a566dc70e9dd84be3550babc56a8e109bb65cafcac635aea027fa425196a7d7", size = 138058, upload-time = "2026-09-22T12:39:20.363Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/f8/c4/0170f76b9f22d22f58a08f1379f637f9f6ec24ecfb6e3e07adf100e1dbe7/hiredis-3.4.2-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:01a71476d6e43aa7c1f4fbb8a90acc1b850bd0a86391adf4c2fca8c11b57e7c4", size = 140478, upload-time = "2026-09-22T12:37:33.765Z" },
+ { url = "https://files.pythonhosted.org/packages/5f/e3/2b43b9e3301b01f0e9c2249cc1a7a202f1c6ddc8ef592aebe68498ffe541/hiredis-3.4.2-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:be3cb13b3b69371e0ed298ea045b3ceb88ab3aa188049d892933c6119a2847c6", size = 74936, upload-time = "2026-09-22T12:37:34.634Z" },
+ { url = "https://files.pythonhosted.org/packages/02/fa/97b2c2ff7dc8ad892931d8a7b3f541dded542abea42da3541ca1f7e5d0e7/hiredis-3.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c5808e4319d5a15621b7dbd64853de5c0fb4e14a18104633d27c9c10d1903aab", size = 71835, upload-time = "2026-09-22T12:37:35.601Z" },
+ { url = "https://files.pythonhosted.org/packages/0c/b9/9eed5ffd6c07ca46dcd21ad0ba685d9d67f689bac926eeaffd947a989878/hiredis-3.4.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bc7275bb05bcb18805fede5838e653511b78962bc773ba2ffaa0af6171f43350", size = 305651, upload-time = "2026-09-22T12:37:36.505Z" },
+ { url = "https://files.pythonhosted.org/packages/ef/b8/1486948f578d4703448e43de3e42c01c4dbc043371699502e8527c28cc7c/hiredis-3.4.2-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:eb027b6a9b362840af05713f1d6c33969d106d93a8677398b35034c9f9c18c76", size = 338045, upload-time = "2026-09-22T12:37:37.527Z" },
+ { url = "https://files.pythonhosted.org/packages/e9/5c/983d46f0b17ad4808b217e6e644630cb0f975197677e5621e1e6a8653072/hiredis-3.4.2-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ccff5bb35017adab43a8aeb29183e29e044762fe544b17d86144102527073ae5", size = 348877, upload-time = "2026-09-22T12:37:38.505Z" },
+ { url = "https://files.pythonhosted.org/packages/f9/48/0ce8b35726201626967d862693624ed8a9b250f480bf0a921b927daedacc/hiredis-3.4.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a1805792e7d7ee0751f2b44653714d214ae53b46be35b0e17b31e8031eef8f43", size = 310927, upload-time = "2026-09-22T12:37:39.48Z" },
+ { url = "https://files.pythonhosted.org/packages/e3/88/6b77a6a00d943587a9a8afa23a627d2a772f48ac577ba2c0c2c41484f486/hiredis-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:513df8c538e1fce9b4d4acacdbc869303a3ff107790db50abe305269ec084046", size = 300061, upload-time = "2026-09-22T12:37:40.407Z" },
+ { url = "https://files.pythonhosted.org/packages/3c/bc/cce4c248bddf29533888fb6930a2b28417eb00fb1a2a0d903b4793ca9cb1/hiredis-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bdf6f55350eef61f9e55a3e25cfbad5e1652ab5201f9437fd6bc4cbba3d68324", size = 329689, upload-time = "2026-09-22T12:37:41.871Z" },
+ { url = "https://files.pythonhosted.org/packages/a4/26/2663c23ab3ffeedbc29194fb475f390c93deccd9124b00db10d2806a029a/hiredis-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:b0d4c9aaeaadcc0c20bd58ac194657acb00f730384717c7bfbdd1cee30f13cad", size = 330604, upload-time = "2026-09-22T12:37:42.924Z" },
+ { url = "https://files.pythonhosted.org/packages/c8/b6/7dce7f57e98cf35930536ecdd918fd7dbd332ae6476b64414a37245897ef/hiredis-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2d88b2e8c7cf63b52fe67d95a02660312add872697ad7ec2ad994a78ca2fe086", size = 309897, upload-time = "2026-09-22T12:37:44.152Z" },
+ { url = "https://files.pythonhosted.org/packages/30/55/1e6e5262993ede40e98743bf2169d3e0b87f5a66ffd87695de43a48042cc/hiredis-3.4.2-cp311-cp311-win32.whl", hash = "sha256:b26e282e82a9f350c6a5858bf54380419d5bfe2a11553f7f235ee18318d49326", size = 38736, upload-time = "2026-09-22T12:37:45.23Z" },
+ { url = "https://files.pythonhosted.org/packages/a9/7c/c001696159859de8270c6dea9925a9d57cadff3385f7771906930ed181ab/hiredis-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:2fde1d857f5a88353083bc73e5e1911d2a9a8fb369ac3f8d3bb86d9fe7f9d5e2", size = 40506, upload-time = "2026-09-22T12:37:46.058Z" },
+ { url = "https://files.pythonhosted.org/packages/09/9e/397a43a2254be70ec7baeff63fb115477b0a0fb40b3161d5de2f13666573/hiredis-3.4.2-cp311-cp311-win_arm64.whl", hash = "sha256:99977c00ba4c1df76325a11281ceac8b4f6f736235d01344242728835b07cff4", size = 36904, upload-time = "2026-09-22T12:37:47.502Z" },
+ { url = "https://files.pythonhosted.org/packages/f4/fb/aee5f09ba3b483700b0fb4556f9c09e752791d255bb677310485e76a3e37/hiredis-3.4.2-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:eb98b46a781a960bc9044050cc166e38c19b327a7a8c62afee9c78d72d80dd18", size = 140912, upload-time = "2026-09-22T12:37:48.554Z" },
+ { url = "https://files.pythonhosted.org/packages/41/0c/d29b76ac581200ebf0e0194edda8c7aef51dd497079d556aabfd44336de7/hiredis-3.4.2-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:05d06f3edcdeb484aa47610fd520c07d637a763d4ab1cd7793550829afe27ccb", size = 75186, upload-time = "2026-09-22T12:37:50.066Z" },
+ { url = "https://files.pythonhosted.org/packages/d5/6f/9092acfd69d9a76fecce4723bba624a36d321447f92e88f80296038dfaee/hiredis-3.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ddfdd5006d1cbe2ee961852b90f89d676b44dd8e0eb2f032dc2383c16a54bfc9", size = 71987, upload-time = "2026-09-22T12:37:51.09Z" },
+ { url = "https://files.pythonhosted.org/packages/3c/29/65e823bc79be70322dfab5b7bf46bdbac2d029b848950fed9621adac7445/hiredis-3.4.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4cf7924e86c5f9d4e212d9643a99e607008628941e771df015c72cd6dc4d15e", size = 307130, upload-time = "2026-09-22T12:37:52.538Z" },
+ { url = "https://files.pythonhosted.org/packages/69/51/f8b21afd788b8da4be6368cec3777b44151c166b054d3b6dd38349b4323b/hiredis-3.4.2-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:258741a87fb551e58e5e008ffc989e1bc980b26e2156be365a12b7088b2c48c9", size = 340169, upload-time = "2026-09-22T12:37:54.192Z" },
+ { url = "https://files.pythonhosted.org/packages/cc/2c/0f535418703886f755fb8edba8c4ae174e02663ec61b1029d248afa7d835/hiredis-3.4.2-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:aa9fef272956109d72a46016f2ca8431d8af36fcf9cd155da53aeba642d201e7", size = 351929, upload-time = "2026-09-22T12:37:55.735Z" },
+ { url = "https://files.pythonhosted.org/packages/b1/4c/d4d16acb0c9d4d4741d4d8c8bd72e7b7e881c9a41867a6b7d24748099a57/hiredis-3.4.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:018fdee902038f74b21e18a6d2fe7819bb63bdaec878d9d5f27280005b778ad7", size = 313508, upload-time = "2026-09-22T12:37:56.879Z" },
+ { url = "https://files.pythonhosted.org/packages/98/b7/b7ceb4f6975a91e8100da63d53b41ff075a706472f095e442c8e998bd521/hiredis-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2d7282fba5602013d11c068c0f6218c28b67c4c80064f0b3882ffaf0290bbfa9", size = 301438, upload-time = "2026-09-22T12:37:57.994Z" },
+ { url = "https://files.pythonhosted.org/packages/00/dc/1ae6dca5684631595685482a8478179503e54d3be40097b3e345f2aa4e93/hiredis-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:254c880fbd087527c326ec7672562dde4ac9dfe1c38b2ce923a387858c7a2618", size = 331982, upload-time = "2026-09-22T12:37:59.266Z" },
+ { url = "https://files.pythonhosted.org/packages/da/7c/767f89bdded81ba7be1a185f0718d8662b8e8eee1009ab88e9e1decc6bb4/hiredis-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:12f05180d1dbc11647a11c967984873dd8baa7f4cdfc4f1b3eff42983fa80d4a", size = 333346, upload-time = "2026-09-22T12:38:00.337Z" },
+ { url = "https://files.pythonhosted.org/packages/3c/38/5715f89fa8d6ca724ae073d92474628525c9751864eda7a3811033a846fa/hiredis-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fc446964ce1ae16ca7689b27991dfb769094531e69f3972e2eaaf03f19037a1e", size = 312252, upload-time = "2026-09-22T12:38:01.518Z" },
+ { url = "https://files.pythonhosted.org/packages/0c/c0/3f1f58df82e59f740d3b3eb76c14144917e9cc7345695b184e88669a60a6/hiredis-3.4.2-cp312-cp312-win32.whl", hash = "sha256:cdd19191555763455d34d63697becfe480a5bb907a33fe90e5505fadfd7bc9ae", size = 38728, upload-time = "2026-09-22T12:38:02.697Z" },
+ { url = "https://files.pythonhosted.org/packages/0b/e2/de4c556ca70124b3f45396ffe2f339a35d80639e1595abc67c3aa09fba4c/hiredis-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:51add939c00482b855b9ef6ea1354d4ea942f0c281f32aec514a94f07c3e2148", size = 40530, upload-time = "2026-09-22T12:38:03.656Z" },
+ { url = "https://files.pythonhosted.org/packages/83/c2/cd2deae4d071718303449c376e29ca3b5000489ca7c6e19d1230e4c7c641/hiredis-3.4.2-cp312-cp312-win_arm64.whl", hash = "sha256:9f298b8a2c2af3166a7381c3d9b6a80c3bf2cf38785dbe06bf030882584eb4f8", size = 36929, upload-time = "2026-09-22T12:38:04.553Z" },
]
[[package]]
@@ -2883,7 +2886,7 @@ requires-dist = [
{ name = "aiocache", specifier = "==0.12.3" },
{ name = "aiodns", specifier = "==3.6.1" },
{ name = "aiofiles", specifier = "==25.1.0" },
- { name = "aiohttp", specifier = "==3.13.5" },
+ { name = "aiohttp", specifier = "==3.14.3" },
{ name = "aiosqlite", specifier = "==0.22.1" },
{ name = "alembic", specifier = "==1.18.4" },
{ name = "anthropic", specifier = "==0.86.0" },
@@ -2915,7 +2918,7 @@ requires-dist = [
{ name = "google-cloud-storage", specifier = "==3.9.0" },
{ name = "google-re2", specifier = "==1.1.20251105" },
{ name = "googleapis-common-protos", specifier = "==1.75.0" },
- { name = "hiredis", specifier = "==3.4.0" },
+ { name = "hiredis", specifier = "==3.4.2" },
{ name = "httpx", extras = ["brotli", "cli", "http2", "socks", "zstd"], specifier = "==0.28.1" },
{ name = "itsdangerous", specifier = "==2.2.0" },
{ name = "joserfc", specifier = "==1.7.4" },
@@ -2939,7 +2942,7 @@ requires-dist = [
{ name = "pandas", specifier = "==3.0.3" },
{ name = "pgvector", marker = "extra == 'all'", specifier = "==0.4.2" },
{ name = "pgvector", marker = "extra == 'postgres'", specifier = "==0.4.2" },
- { name = "pillow", specifier = "==12.2.0" },
+ { name = "pillow", specifier = "==12.3.0" },
{ name = "pinecone", marker = "extra == 'all'", specifier = "==6.0.2" },
{ name = "playwright", marker = "extra == 'all'", specifier = "==1.60.0" },
{ name = "psutil", specifier = "==7.2.2" },
@@ -3299,39 +3302,33 @@ wheels = [
[[package]]
name = "pillow"
-version = "12.2.0"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/8c/21/c2bcdd5906101a30244eaffc1b6e6ce71a31bd0742a01eb89e660ebfac2d/pillow-12.2.0.tar.gz", hash = "sha256:a830b1a40919539d07806aa58e1b114df53ddd43213d9c8b75847eee6c0182b5", size = 46987819, upload-time = "2026-04-01T14:46:17.687Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/68/e1/748f5663efe6edcfc4e74b2b93edfb9b8b99b67f21a854c3ae416500a2d9/pillow-12.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:8be29e59487a79f173507c30ddf57e733a357f67881430449bb32614075a40ab", size = 5354347, upload-time = "2026-04-01T14:42:44.255Z" },
- { url = "https://files.pythonhosted.org/packages/47/a1/d5ff69e747374c33a3b53b9f98cca7889fce1fd03d79cdc4e1bccc6c5a87/pillow-12.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:71cde9a1e1551df7d34a25462fc60325e8a11a82cc2e2f54578e5e9a1e153d65", size = 4695873, upload-time = "2026-04-01T14:42:46.452Z" },
- { url = "https://files.pythonhosted.org/packages/df/21/e3fbdf54408a973c7f7f89a23b2cb97a7ef30c61ab4142af31eee6aebc88/pillow-12.2.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f490f9368b6fc026f021db16d7ec2fbf7d89e2edb42e8ec09d2c60505f5729c7", size = 6280168, upload-time = "2026-04-01T14:42:49.228Z" },
- { url = "https://files.pythonhosted.org/packages/d3/f1/00b7278c7dd52b17ad4329153748f87b6756ec195ff786c2bdf12518337d/pillow-12.2.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8bd7903a5f2a4545f6fd5935c90058b89d30045568985a71c79f5fd6edf9b91e", size = 8088188, upload-time = "2026-04-01T14:42:51.735Z" },
- { url = "https://files.pythonhosted.org/packages/ad/cf/220a5994ef1b10e70e85748b75649d77d506499352be135a4989c957b701/pillow-12.2.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3997232e10d2920a68d25191392e3a4487d8183039e1c74c2297f00ed1c50705", size = 6394401, upload-time = "2026-04-01T14:42:54.343Z" },
- { url = "https://files.pythonhosted.org/packages/e9/bd/e51a61b1054f09437acfbc2ff9106c30d1eb76bc1453d428399946781253/pillow-12.2.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e74473c875d78b8e9d5da2a70f7099549f9eb37ded4e2f6a463e60125bccd176", size = 7079655, upload-time = "2026-04-01T14:42:56.954Z" },
- { url = "https://files.pythonhosted.org/packages/6b/3d/45132c57d5fb4b5744567c3817026480ac7fc3ce5d4c47902bc0e7f6f853/pillow-12.2.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:56a3f9c60a13133a98ecff6197af34d7824de9b7b38c3654861a725c970c197b", size = 6503105, upload-time = "2026-04-01T14:42:59.847Z" },
- { url = "https://files.pythonhosted.org/packages/7d/2e/9df2fc1e82097b1df3dce58dc43286aa01068e918c07574711fcc53e6fb4/pillow-12.2.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:90e6f81de50ad6b534cab6e5aef77ff6e37722b2f5d908686f4a5c9eba17a909", size = 7203402, upload-time = "2026-04-01T14:43:02.664Z" },
- { url = "https://files.pythonhosted.org/packages/bd/2e/2941e42858ebb67e50ae741473de81c2984e6eff7b397017623c676e2e8d/pillow-12.2.0-cp311-cp311-win32.whl", hash = "sha256:8c984051042858021a54926eb597d6ee3012393ce9c181814115df4c60b9a808", size = 6378149, upload-time = "2026-04-01T14:43:05.274Z" },
- { url = "https://files.pythonhosted.org/packages/69/42/836b6f3cd7f3e5fa10a1f1a5420447c17966044c8fbf589cc0452d5502db/pillow-12.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:6e6b2a0c538fc200b38ff9eb6628228b77908c319a005815f2dde585a0664b60", size = 7082626, upload-time = "2026-04-01T14:43:08.557Z" },
- { url = "https://files.pythonhosted.org/packages/c2/88/549194b5d6f1f494b485e493edc6693c0a16f4ada488e5bd974ed1f42fad/pillow-12.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:9a8a34cc89c67a65ea7437ce257cea81a9dad65b29805f3ecee8c8fe8ff25ffe", size = 2463531, upload-time = "2026-04-01T14:43:10.743Z" },
- { url = "https://files.pythonhosted.org/packages/58/be/7482c8a5ebebbc6470b3eb791812fff7d5e0216c2be3827b30b8bb6603ed/pillow-12.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2d192a155bbcec180f8564f693e6fd9bccff5a7af9b32e2e4bf8c9c69dbad6b5", size = 5308279, upload-time = "2026-04-01T14:43:13.246Z" },
- { url = "https://files.pythonhosted.org/packages/d8/95/0a351b9289c2b5cbde0bacd4a83ebc44023e835490a727b2a3bd60ddc0f4/pillow-12.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f3f40b3c5a968281fd507d519e444c35f0ff171237f4fdde090dd60699458421", size = 4695490, upload-time = "2026-04-01T14:43:15.584Z" },
- { url = "https://files.pythonhosted.org/packages/de/af/4e8e6869cbed569d43c416fad3dc4ecb944cb5d9492defaed89ddd6fe871/pillow-12.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:03e7e372d5240cc23e9f07deca4d775c0817bffc641b01e9c3af208dbd300987", size = 6284462, upload-time = "2026-04-01T14:43:18.268Z" },
- { url = "https://files.pythonhosted.org/packages/e9/9e/c05e19657fd57841e476be1ab46c4d501bffbadbafdc31a6d665f8b737b6/pillow-12.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b86024e52a1b269467a802258c25521e6d742349d760728092e1bc2d135b4d76", size = 8094744, upload-time = "2026-04-01T14:43:20.716Z" },
- { url = "https://files.pythonhosted.org/packages/2b/54/1789c455ed10176066b6e7e6da1b01e50e36f94ba584dc68d9eebfe9156d/pillow-12.2.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7371b48c4fa448d20d2714c9a1f775a81155050d383333e0a6c15b1123dda005", size = 6398371, upload-time = "2026-04-01T14:43:23.443Z" },
- { url = "https://files.pythonhosted.org/packages/43/e3/fdc657359e919462369869f1c9f0e973f353f9a9ee295a39b1fea8ee1a77/pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:62f5409336adb0663b7caa0da5c7d9e7bdbaae9ce761d34669420c2a801b2780", size = 7087215, upload-time = "2026-04-01T14:43:26.758Z" },
- { url = "https://files.pythonhosted.org/packages/8b/f8/2f6825e441d5b1959d2ca5adec984210f1ec086435b0ed5f52c19b3b8a6e/pillow-12.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:01afa7cf67f74f09523699b4e88c73fb55c13346d212a59a2db1f86b0a63e8c5", size = 6509783, upload-time = "2026-04-01T14:43:29.56Z" },
- { url = "https://files.pythonhosted.org/packages/67/f9/029a27095ad20f854f9dba026b3ea6428548316e057e6fc3545409e86651/pillow-12.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fc3d34d4a8fbec3e88a79b92e5465e0f9b842b628675850d860b8bd300b159f5", size = 7212112, upload-time = "2026-04-01T14:43:32.091Z" },
- { url = "https://files.pythonhosted.org/packages/be/42/025cfe05d1be22dbfdb4f264fe9de1ccda83f66e4fc3aac94748e784af04/pillow-12.2.0-cp312-cp312-win32.whl", hash = "sha256:58f62cc0f00fd29e64b29f4fd923ffdb3859c9f9e6105bfc37ba1d08994e8940", size = 6378489, upload-time = "2026-04-01T14:43:34.601Z" },
- { url = "https://files.pythonhosted.org/packages/5d/7b/25a221d2c761c6a8ae21bfa3874988ff2583e19cf8a27bf2fee358df7942/pillow-12.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:7f84204dee22a783350679a0333981df803dac21a0190d706a50475e361c93f5", size = 7084129, upload-time = "2026-04-01T14:43:37.213Z" },
- { url = "https://files.pythonhosted.org/packages/10/e1/542a474affab20fd4a0f1836cb234e8493519da6b76899e30bcc5d990b8b/pillow-12.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:af73337013e0b3b46f175e79492d96845b16126ddf79c438d7ea7ff27783a414", size = 2463612, upload-time = "2026-04-01T14:43:39.421Z" },
- { url = "https://files.pythonhosted.org/packages/4e/b7/2437044fb910f499610356d1352e3423753c98e34f915252aafecc64889f/pillow-12.2.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0538bd5e05efec03ae613fd89c4ce0368ecd2ba239cc25b9f9be7ed426b0af1f", size = 5273969, upload-time = "2026-04-01T14:45:55.538Z" },
- { url = "https://files.pythonhosted.org/packages/f6/f4/8316e31de11b780f4ac08ef3654a75555e624a98db1056ecb2122d008d5a/pillow-12.2.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:394167b21da716608eac917c60aa9b969421b5dcbbe02ae7f013e7b85811c69d", size = 4659674, upload-time = "2026-04-01T14:45:58.093Z" },
- { url = "https://files.pythonhosted.org/packages/d4/37/664fca7201f8bb2aa1d20e2c3d5564a62e6ae5111741966c8319ca802361/pillow-12.2.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5d04bfa02cc2d23b497d1e90a0f927070043f6cbf303e738300532379a4b4e0f", size = 5288479, upload-time = "2026-04-01T14:46:01.141Z" },
- { url = "https://files.pythonhosted.org/packages/49/62/5b0ed78fce87346be7a5cfcfaaad91f6a1f98c26f86bdbafa2066c647ef6/pillow-12.2.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0c838a5125cee37e68edec915651521191cef1e6aa336b855f495766e77a366e", size = 7032230, upload-time = "2026-04-01T14:46:03.874Z" },
- { url = "https://files.pythonhosted.org/packages/c3/28/ec0fc38107fc32536908034e990c47914c57cd7c5a3ece4d8d8f7ffd7e27/pillow-12.2.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4a6c9fa44005fa37a91ebfc95d081e8079757d2e904b27103f4f5fa6f0bf78c0", size = 5355404, upload-time = "2026-04-01T14:46:06.33Z" },
- { url = "https://files.pythonhosted.org/packages/5e/8b/51b0eddcfa2180d60e41f06bd6d0a62202b20b59c68f5a132e615b75aecf/pillow-12.2.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:25373b66e0dd5905ed63fa3cae13c82fbddf3079f2c8bf15c6fb6a35586324c1", size = 6002215, upload-time = "2026-04-01T14:46:08.83Z" },
- { url = "https://files.pythonhosted.org/packages/bc/60/5382c03e1970de634027cee8e1b7d39776b778b81812aaf45b694dfe9e28/pillow-12.2.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:bfa9c230d2fe991bed5318a5f119bd6780cda2915cca595393649fc118ab895e", size = 7080946, upload-time = "2026-04-01T14:46:11.734Z" },
+version = "12.3.0"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/1c/3d/bb7fca845737cf9d7dbde16ed1843984665ff2e0a518f5db43e77ec540b9/pillow-12.3.0.tar.gz", hash = "sha256:3b8182a766685eaa002637e28b4ec8d6b18819a0c71f579bf0dbaa5830297cce", size = 47025035, upload-time = "2026-07-01T11:56:38.965Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/fb/c8/0a78b0e02d7ac54bc03e5321c9220da52f0c2ea83b21f7c40e7f3169c502/pillow-12.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:00808c5e14ef63ac5161091d242999076604ff74b883423a11e5d7bbb38bf756", size = 5392415, upload-time = "2026-07-01T11:53:47.162Z" },
+ { url = "https://files.pythonhosted.org/packages/b2/5b/a02d30018abd97ced9f5a6c63d28597694a00d066516b9c1c6de45859fc9/pillow-12.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:37d6d0a00072fd2948eb22bce7e1475f34569d90c87c59f7a2ec59541b77f7a6", size = 4785266, upload-time = "2026-07-01T11:53:49.079Z" },
+ { url = "https://files.pythonhosted.org/packages/c8/98/766667a4be768150a202836acd9fad19c06824ca86c4286d3cf6b274964e/pillow-12.3.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bcb46e2f9feff8d06323983bd83ed00c201fdcab3d74973e7072a889b3979fcd", size = 6263814, upload-time = "2026-07-01T11:53:51.32Z" },
+ { url = "https://files.pythonhosted.org/packages/3b/2d/ede717bc1144f63886c21fd349bb95860b0d1a21149ff16f2bb362b612b6/pillow-12.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:23d27a3e0307ec2244cc51e7287b919aa68d097504ebe19df4e76a98a3eea5bd", size = 6934408, upload-time = "2026-07-01T11:53:53.487Z" },
+ { url = "https://files.pythonhosted.org/packages/a3/48/9c58b685e69d49c31af6c8eb9012055fab7e665785165c84796e2c73ce72/pillow-12.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4f883547d4b7f0495ebe7056b0cc2aea76094e7a4abc8e933540f3271df27d9c", size = 6337160, upload-time = "2026-07-01T11:53:55.457Z" },
+ { url = "https://files.pythonhosted.org/packages/ff/fa/dc2a5c0ba6df93f67c31d34b808b7ce440b40cdbf96f0b81cde1d1e6fa93/pillow-12.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:236ff70b9312fb68943c703aa842ca6a758abfa45ac187a5e7c1452e96ef72b5", size = 7045172, upload-time = "2026-07-01T11:53:57.736Z" },
+ { url = "https://files.pythonhosted.org/packages/86/a5/444817a4d4c4c2417df00513086ca196f388d8f9ef40c2e4ccd1ad1af54b/pillow-12.3.0-cp311-cp311-win32.whl", hash = "sha256:10e41f0fbf1eec8cfd234b8fe17a4caac7c9d0db4c204d3c173a8f9f6ef3232b", size = 6472232, upload-time = "2026-07-01T11:53:59.767Z" },
+ { url = "https://files.pythonhosted.org/packages/63/c6/4bad1b18d132a50b27e1365e1ab163616f7a5bb56d330f66f9d1d9d4f9d4/pillow-12.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:8e95e1385e4998ae9694eeaa4730ba5457ff61185b3a55e2e7bea0880aef452a", size = 7233653, upload-time = "2026-07-01T11:54:02.066Z" },
+ { url = "https://files.pythonhosted.org/packages/fd/16/00f91ab7760dc842f5aad55217e80fc4a7067a0604535249bc8a2d6d9870/pillow-12.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:ebaea975e03d3141d9d3a507df75c9b3ec90fa9d2ffd07567b3a978d9d790b26", size = 2568195, upload-time = "2026-07-01T11:54:04.622Z" },
+ { url = "https://files.pythonhosted.org/packages/37/bf/fb3ebff8ddcb76aac5a01389251bbbb9519922a9b520d8247c1ca864a25d/pillow-12.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ba09209fbe443b4acccebe845d8a138b89a8f4fbaeedd44953490b5315d5e965", size = 5345969, upload-time = "2026-07-01T11:54:06.397Z" },
+ { url = "https://files.pythonhosted.org/packages/d8/66/9a386a92561f402389a4fc70c18838bf6d35eb5eb5c6850b4b2dc64f5048/pillow-12.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ffd0c5368496f41b0944be820fcb7a838aa6e623d250b01acf2643939c3f99d7", size = 4780323, upload-time = "2026-07-01T11:54:09.351Z" },
+ { url = "https://files.pythonhosted.org/packages/25/27/ac8f99618ffd3dde21db0f4d4b1d2ab00c0880595bfd17df103f7f39fd0c/pillow-12.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d9c7f76c0673154f044e9d78c8655fb4213f6ca31a836df48b40fe5d187717b9", size = 6266838, upload-time = "2026-07-01T11:54:11.71Z" },
+ { url = "https://files.pythonhosted.org/packages/84/21/a35af28dcc61f37ed850a2d64c65c701321dfbf25085e469d5559360cbbf/pillow-12.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:78cb2c6865a35ab8ff8b75fd122f6033b92a62c82801110e48ddd6c936a45d91", size = 6940830, upload-time = "2026-07-01T11:54:13.732Z" },
+ { url = "https://files.pythonhosted.org/packages/eb/51/8b08617af3ad95e33ce6d7dd2c99ed6c8298f7fb131636303956be022e25/pillow-12.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e491916b378fba47242221bb9ead245211b70d504f495d105d17b14a24b4907c", size = 6344383, upload-time = "2026-07-01T11:54:15.756Z" },
+ { url = "https://files.pythonhosted.org/packages/1d/72/cf78ac9780bb93c28328f408973845a309d4d145041665f734572ced1b52/pillow-12.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0dd2064cbc55aaec028ef5fbb60fa47bb6c3e7918e07ff17935284b227a9d2df", size = 7052934, upload-time = "2026-07-01T11:54:17.721Z" },
+ { url = "https://files.pythonhosted.org/packages/20/20/25e0f4dc178a6bc0696793720055519a0de89e7661dae886992decbd2f81/pillow-12.3.0-cp312-cp312-win32.whl", hash = "sha256:dbce0b29841537a2fa4a214c2bbf14de3587c9680caa9b4e217568472490b28f", size = 6472684, upload-time = "2026-07-01T11:54:19.839Z" },
+ { url = "https://files.pythonhosted.org/packages/45/89/da2f7971a317f83d807fdd4065c0af40208e59e692cc43d315a71a0e96d1/pillow-12.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:a2b55dd6b2a4c4b7d87ffa56bdb33fdc5fdb9a462173861a7bc097f17d91cb09", size = 7227137, upload-time = "2026-07-01T11:54:22.025Z" },
+ { url = "https://files.pythonhosted.org/packages/de/47/4845a0a6c0dbf1db8456bd9fc791f13c5ced7ced20606d08a0aacfd25b49/pillow-12.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:331b624368d4f1d069149002f25f44bc61c8919ce8ddb3c45bdad8f6e2d89510", size = 2568267, upload-time = "2026-07-01T11:54:24.051Z" },
+ { url = "https://files.pythonhosted.org/packages/75/18/2e8b40223153ccbc60df07f9e8928dc0c76202aa4e55ae9f53962b6510d6/pillow-12.3.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:b3c777e849237620b022f7f297dd67705f9f5cf1685f09f02e46f93e92725468", size = 5302510, upload-time = "2026-07-01T11:56:25.736Z" },
+ { url = "https://files.pythonhosted.org/packages/46/3e/51fabf59d5ab801ceab709453d3ab6b180083496579549de4c45ced6528a/pillow-12.3.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:b343699e8308bdc51978310e1c959c584e7869cc8c40780058c87da7781a1e94", size = 4736058, upload-time = "2026-07-01T11:56:28.041Z" },
+ { url = "https://files.pythonhosted.org/packages/bf/20/22fe9384b7949e25fb1293bcfc84fb82590ff4ea6b37c95b24d26d793d86/pillow-12.3.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fbd139c8447d25dd750ab79ee274cc5e1fe80fc56340ab10b18a195e1b6eca3e", size = 5237776, upload-time = "2026-07-01T11:56:30.263Z" },
+ { url = "https://files.pythonhosted.org/packages/08/14/f6ba68107680ffa74b39985f3f30884e41318fbc4250caa423c79b4788bb/pillow-12.3.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e7e480451b9fa137494bccd3a7d69adbe8ac65a87d97be61e11f1b1050a5bac3", size = 5860358, upload-time = "2026-07-01T11:56:32.68Z" },
+ { url = "https://files.pythonhosted.org/packages/36/54/0169bc772ec491108b62f644f8ecf1fe5d8ae5ebafde2ee2142210166903/pillow-12.3.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:04f01d28a6aaff387bf842a13be313df23ba0597a44f1a976c9feb3c6ff4711a", size = 7231786, upload-time = "2026-07-01T11:56:35.046Z" },
]
[[package]]