mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-08-10 21:48:48 +08:00
feat(core): improve byok editing (#15427)
fix #14287 fix #15359 fix #15424 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Redesigned workspace AI provider settings with connection testing, storage options, model selection, capability management, ordering, and custom endpoints. * AI chat model choices now adapt to the selected workspace and conversation route. * Added support for image-based AI requests. * **Bug Fixes** * Improved handling of unavailable or outdated model selections. * App configuration updates now reject overlapping paths and load deterministically. * **Tests** * Expanded coverage for provider models, AI chat scoping, image requests, and configuration validation. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
@@ -1,28 +1,28 @@
|
||||
{
|
||||
"ar": 92,
|
||||
"ca": 89,
|
||||
"da": 4,
|
||||
"ar": 90,
|
||||
"ca": 88,
|
||||
"da": 3,
|
||||
"de": 98,
|
||||
"el-GR": 88,
|
||||
"el-GR": 86,
|
||||
"en": 100,
|
||||
"es-AR": 88,
|
||||
"es-CL": 89,
|
||||
"es": 88,
|
||||
"fa": 88,
|
||||
"fr": 92,
|
||||
"es-AR": 87,
|
||||
"es-CL": 88,
|
||||
"es": 86,
|
||||
"fa": 86,
|
||||
"fr": 90,
|
||||
"hi": 1,
|
||||
"it": 89,
|
||||
"ja": 88,
|
||||
"kk": 96,
|
||||
"ko": 89,
|
||||
"nb-NO": 44,
|
||||
"pl": 89,
|
||||
"pt-BR": 88,
|
||||
"ru": 90,
|
||||
"sv-SE": 88,
|
||||
"tr": 96,
|
||||
"uk": 88,
|
||||
"ur": 96,
|
||||
"zh-Hans": 100,
|
||||
"zh-Hant": 90
|
||||
"it": 88,
|
||||
"ja": 86,
|
||||
"kk": 93,
|
||||
"ko": 87,
|
||||
"nb-NO": 43,
|
||||
"pl": 88,
|
||||
"pt-BR": 86,
|
||||
"ru": 88,
|
||||
"sv-SE": 87,
|
||||
"tr": 93,
|
||||
"uk": 86,
|
||||
"ur": 93,
|
||||
"zh-Hans": 97,
|
||||
"zh-Hant": 88
|
||||
}
|
||||
|
||||
@@ -5925,10 +5925,6 @@ export function useAFFiNEI18N(): {
|
||||
/**
|
||||
* `AI BYOK (Beta)`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.title-beta"](): string;
|
||||
/**
|
||||
* `AI BYOK`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.title"](): string;
|
||||
/**
|
||||
* `Loading provider keys.`
|
||||
@@ -5950,14 +5946,6 @@ export function useAFFiNEI18N(): {
|
||||
* `Upgrade this workspace to add provider keys and route AFFiNE AI through your own OpenAI, Anthropic, Gemini, or FAL account.`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.locked.description"](): string;
|
||||
/**
|
||||
* `AI plan stays available`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.notice.title"](): string;
|
||||
/**
|
||||
* `Local keys on this device are tried first. Workspace server keys follow, then AFFiNE AI plan routes when quota is available.`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.notice.description"](): string;
|
||||
/**
|
||||
* `Provider keys`
|
||||
*/
|
||||
@@ -5983,13 +5971,25 @@ export function useAFFiNEI18N(): {
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.storage.server"](): string;
|
||||
/**
|
||||
* `Local (this device)`
|
||||
* `Available to workspace members.`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.storage.local-this-device"](): string;
|
||||
["com.affine.settings.workspace.byok.storage.server.description"](): string;
|
||||
/**
|
||||
* `Local (Desktop only)`
|
||||
* `Kept in this desktop device’s secure storage.`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.storage.local-desktop-only"](): string;
|
||||
["com.affine.settings.workspace.byok.storage.local.description"](): string;
|
||||
/**
|
||||
* `Available in the AFFiNE desktop app.`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.storage.local.desktop-only"](): string;
|
||||
/**
|
||||
* `Secure local storage is not available on this device.`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.storage.local.unavailable"](): string;
|
||||
/**
|
||||
* `Testing sends this key to the workspace server for this request only; it is not stored there.`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.storage.local.test-disclosure"](): string;
|
||||
/**
|
||||
* `Disabled after failure`
|
||||
*/
|
||||
@@ -5998,10 +5998,6 @@ export function useAFFiNEI18N(): {
|
||||
* `Key verified`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.status.key-verified"](): string;
|
||||
/**
|
||||
* `Key test failed`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.status.key-test-failed"](): string;
|
||||
/**
|
||||
* `Text`
|
||||
*/
|
||||
@@ -6032,16 +6028,6 @@ export function useAFFiNEI18N(): {
|
||||
["com.affine.settings.workspace.byok.row.activity.failed"](options: {
|
||||
readonly date: string;
|
||||
}): string;
|
||||
/**
|
||||
* `used {{date}}`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.row.activity.used"](options: {
|
||||
readonly date: string;
|
||||
}): string;
|
||||
/**
|
||||
* `used today`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.row.activity.used-today"](): string;
|
||||
/**
|
||||
* `not used yet`
|
||||
*/
|
||||
@@ -6113,17 +6099,69 @@ export function useAFFiNEI18N(): {
|
||||
readonly count: string;
|
||||
}): string;
|
||||
/**
|
||||
* `Add provider key`
|
||||
* `Connect AI provider`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.modal.add-title"](): string;
|
||||
["com.affine.settings.workspace.byok.modal.connect-title"](): string;
|
||||
/**
|
||||
* `Edit provider key`
|
||||
* `Manage provider`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.modal.edit-title"](): string;
|
||||
["com.affine.settings.workspace.byok.modal.manage-title"](): string;
|
||||
/**
|
||||
* `Re-enter the API key and test it before saving changes.`
|
||||
* `Choose where the key is stored, then select the models AFFiNE may use.`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.modal.description"](): string;
|
||||
["com.affine.settings.workspace.byok.modal.connect-description"](): string;
|
||||
/**
|
||||
* `Add models`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.modal.add-model-title"](): string;
|
||||
/**
|
||||
* `Add custom model`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.modal.add-custom-model-title"](): string;
|
||||
/**
|
||||
* `Edit model`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.modal.edit-model-title"](): string;
|
||||
/**
|
||||
* `Choose one or more models this key may use.`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.modal.catalog-model-description"](): string;
|
||||
/**
|
||||
* `Enter the endpoint model ID and choose its uses.`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.modal.custom-model-description"](): string;
|
||||
/**
|
||||
* `Connection`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.section.connection"](): string;
|
||||
/**
|
||||
* `Models`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.section.models"](): string;
|
||||
/**
|
||||
* `Advanced details`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.section.advanced"](): string;
|
||||
/**
|
||||
* `Models this key may use.`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.models.description.selected"](): string;
|
||||
/**
|
||||
* `Among compatible models, enabled models are tried from top to bottom.`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.models.description.order"](): string;
|
||||
/**
|
||||
* `No models added yet.`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.models.empty"](): string;
|
||||
/**
|
||||
* `All available models have been added.`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.models.all-added"](): string;
|
||||
/**
|
||||
* `No matching models.`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.models.no-search-results"](): string;
|
||||
/**
|
||||
* `Provider`
|
||||
*/
|
||||
@@ -6137,9 +6175,9 @@ export function useAFFiNEI18N(): {
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.field.description"](): string;
|
||||
/**
|
||||
* `Key storage`
|
||||
* `Provider enabled`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.field.storage"](): string;
|
||||
["com.affine.settings.workspace.byok.field.provider-enabled"](): string;
|
||||
/**
|
||||
* `API key`
|
||||
*/
|
||||
@@ -6148,6 +6186,10 @@ export function useAFFiNEI18N(): {
|
||||
* `Endpoint`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.field.endpoint"](): string;
|
||||
/**
|
||||
* `Model ID`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.field.model-id"](): string;
|
||||
/**
|
||||
* `Custom endpoints are disabled by the server administrator. In Self-hosted Admin, enable copilot.byok.allowCustomEndpoint.`
|
||||
*/
|
||||
@@ -6157,29 +6199,176 @@ export function useAFFiNEI18N(): {
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.endpoint.private-disabled"](): string;
|
||||
/**
|
||||
* `Primary`
|
||||
* `Leave blank to keep the current key`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.placeholder.key-name"](): string;
|
||||
["com.affine.settings.workspace.byok.placeholder.keep-current-key"](): string;
|
||||
/**
|
||||
* `Workspace fallback key`
|
||||
* `Model ID`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.placeholder.description"](): string;
|
||||
["com.affine.settings.workspace.byok.placeholder.model-id"](): string;
|
||||
/**
|
||||
* `Search models…`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.placeholder.search-models"](): string;
|
||||
/**
|
||||
* `Use a custom API-compatible endpoint`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.endpoint.use-custom"](): string;
|
||||
/**
|
||||
* `Include an image generation request when testing (provider charges may apply)`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.probe.include-image"](): string;
|
||||
/**
|
||||
* `Connection verified`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.probe.verified"](): string;
|
||||
/**
|
||||
* `Connection failed`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.probe.failed"](): string;
|
||||
/**
|
||||
* `Recommended`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.model.recommended"](): string;
|
||||
/**
|
||||
* `This model has already been added.`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.model.duplicate-id"](): string;
|
||||
/**
|
||||
* `Not tested`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.model.status.not-tested"](): string;
|
||||
/**
|
||||
* `Verified`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.model.status.verified"](): string;
|
||||
/**
|
||||
* `Failed`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.model.status.failed"](): string;
|
||||
/**
|
||||
* `Partially verified · {{verified}} of {{total}}`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.model.status.partially-verified"](options: Readonly<{
|
||||
verified: string;
|
||||
total: string;
|
||||
}>): string;
|
||||
/**
|
||||
* `Disabled`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.model.status.disabled"](): string;
|
||||
/**
|
||||
* `Use this model for`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.model.use-this-for"](): string;
|
||||
/**
|
||||
* `Chat & writing`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.model.use.chat"](): string;
|
||||
/**
|
||||
* `Actions`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.model.use.actions"](): string;
|
||||
/**
|
||||
* `Structured output`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.model.use.structured"](): string;
|
||||
/**
|
||||
* `Image understanding`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.model.use.vision"](): string;
|
||||
/**
|
||||
* `Image generation`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.model.use.image"](): string;
|
||||
/**
|
||||
* `Transcription`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.model.use.transcript"](): string;
|
||||
/**
|
||||
* `Workspace indexing`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.model.use.embedding"](): string;
|
||||
/**
|
||||
* `Search reranking`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.model.use.rerank"](): string;
|
||||
/**
|
||||
* `Add key`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.action.add-key"](): string;
|
||||
/**
|
||||
* `Test key`
|
||||
* `Test connection`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.action.test-key"](): string;
|
||||
["com.affine.settings.workspace.byok.action.test-connection"](): string;
|
||||
/**
|
||||
* `Test`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.action.test"](): string;
|
||||
/**
|
||||
* `Testing…`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.action.testing"](): string;
|
||||
/**
|
||||
* `Cancel`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.action.cancel"](): string;
|
||||
/**
|
||||
* `Save key`
|
||||
* `Connect`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.action.save-key"](): string;
|
||||
["com.affine.settings.workspace.byok.action.connect"](): string;
|
||||
/**
|
||||
* `Connecting…`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.action.connecting"](): string;
|
||||
/**
|
||||
* `Save changes`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.action.save-changes"](): string;
|
||||
/**
|
||||
* `Add model`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.action.add-model"](): string;
|
||||
/**
|
||||
* `Add {{count}} models`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.action.add-selected-models"](options: {
|
||||
readonly count: string;
|
||||
}): string;
|
||||
/**
|
||||
* `Save model`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.action.save-model"](): string;
|
||||
/**
|
||||
* `Enable {{model}}`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.action.enable-model"](options: {
|
||||
readonly model: string;
|
||||
}): string;
|
||||
/**
|
||||
* `Disable {{model}}`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.action.disable-model"](options: {
|
||||
readonly model: string;
|
||||
}): string;
|
||||
/**
|
||||
* `Options for {{model}}`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.action.model-options"](options: {
|
||||
readonly model: string;
|
||||
}): string;
|
||||
/**
|
||||
* `Move up`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.action.move-up"](): string;
|
||||
/**
|
||||
* `Move down`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.action.move-down"](): string;
|
||||
/**
|
||||
* `Remove`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.action.remove"](): string;
|
||||
/**
|
||||
* `Clear all BYOK keys`
|
||||
*/
|
||||
@@ -6228,6 +6417,14 @@ export function useAFFiNEI18N(): {
|
||||
* `BYOK keys not cleared`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.notify.clear-failed.title"](): string;
|
||||
/**
|
||||
* `BYOK settings changed`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.notify.reload-required.title"](): string;
|
||||
/**
|
||||
* `Reload the settings and try again.`
|
||||
*/
|
||||
["com.affine.settings.workspace.byok.notify.reload-required.message"](): string;
|
||||
/**
|
||||
* `Please try again.`
|
||||
*/
|
||||
|
||||
@@ -1480,25 +1480,19 @@
|
||||
"com.affine.settings.workspace": "Workspace",
|
||||
"com.affine.settings.workspace.description": "Hier kannst du die Informationen zum aktuellen Workspace anzeigen.",
|
||||
"com.affine.settings.workspace.byok.title-beta": "AI BYOK (Beta)",
|
||||
"com.affine.settings.workspace.byok.title": "AI BYOK",
|
||||
"com.affine.settings.workspace.byok.loading": "Provider-Schlüssel werden geladen.",
|
||||
"com.affine.settings.workspace.byok.subtitle": "Benutze deine eigenen Provider-Schlüssel für diesen Workspace.",
|
||||
"com.affine.settings.workspace.byok.header": "Benutze die Workspace-Provider-Schlüssel vor der Verwendung des AFFiNE AI Plans.",
|
||||
"com.affine.settings.workspace.byok.locked.title": "Für BYOK ist die Pro-, Team- oder Believer-Version erforderlich",
|
||||
"com.affine.settings.workspace.byok.locked.description": "Upgrade diesen Workspace, um Provider-Schlüssel hinzuzufügen und AFFiNE AI über dein eigenes OpenAI-, Anthropic-, Gemini- oder FAL-Konto zu routen.",
|
||||
"com.affine.settings.workspace.byok.notice.title": "Der AI-Plan bleibt verfügbar",
|
||||
"com.affine.settings.workspace.byok.notice.description": "Zunächst werden lokale Schlüssel auf diesem Gerät geprüft. Anschließend folgen die Schlüssel des Workspace-Servers und schließlich die Routen des AFFiNE AI-Plans, sofern Kontingent verfügbar ist.",
|
||||
"com.affine.settings.workspace.byok.keys.title": "Provider-Schlüssel",
|
||||
"com.affine.settings.workspace.byok.keys.description": "Die Reihenfolge in der Liste bestimmt die Fallback-Reihenfolge innerhalb jeder Speichergruppe.",
|
||||
"com.affine.settings.workspace.byok.empty.title": "Keine Provider-Schlüssel",
|
||||
"com.affine.settings.workspace.byok.empty.description": "Füge einen Schlüssel hinzu, um die erste Route für diesen Workspace zu erstellen. Die Zeilen des Providers werden erst angezeigt, wenn ein Schlüssel vorhanden ist.",
|
||||
"com.affine.settings.workspace.byok.storage.local": "Lokal",
|
||||
"com.affine.settings.workspace.byok.storage.server": "Server",
|
||||
"com.affine.settings.workspace.byok.storage.local-this-device": "Lokal (dieses Gerät)",
|
||||
"com.affine.settings.workspace.byok.storage.local-desktop-only": "Lokal (nur Desktop)",
|
||||
"com.affine.settings.workspace.byok.status.disabled-after-failure": "Nach Fehler deaktiviert",
|
||||
"com.affine.settings.workspace.byok.status.key-verified": "Schlüssel verifiziert",
|
||||
"com.affine.settings.workspace.byok.status.key-test-failed": "Schlüssel-Test fehlgeschlagen",
|
||||
"com.affine.settings.workspace.byok.capability.text": "Text",
|
||||
"com.affine.settings.workspace.byok.capability.image-input": "Bildeingabe",
|
||||
"com.affine.settings.workspace.byok.capability.actions": "Aktionen",
|
||||
@@ -1506,8 +1500,6 @@
|
||||
"com.affine.settings.workspace.byok.capability.transcript": "Transkript",
|
||||
"com.affine.settings.workspace.byok.capability.indexing": "Indizierung",
|
||||
"com.affine.settings.workspace.byok.row.activity.failed": "fehlgeschlagen {{date}}",
|
||||
"com.affine.settings.workspace.byok.row.activity.used": "verwendet {{date}}",
|
||||
"com.affine.settings.workspace.byok.row.activity.used-today": "heute verwendet",
|
||||
"com.affine.settings.workspace.byok.row.activity.unused": "noch nicht verwendet",
|
||||
"com.affine.settings.workspace.byok.coverage.title": "Feature-Abdeckung",
|
||||
"com.affine.settings.workspace.byok.feature.chat.title": "Schreiben und Chatten",
|
||||
@@ -1525,23 +1517,15 @@
|
||||
"com.affine.settings.workspace.byok.usage.title": "BYOK-Nutzung",
|
||||
"com.affine.settings.workspace.byok.usage.period": "Letzte 30 Tage",
|
||||
"com.affine.settings.workspace.byok.usage.tokens": "{{count}} Token",
|
||||
"com.affine.settings.workspace.byok.modal.add-title": "Provider-Schlüssel hinzufügen",
|
||||
"com.affine.settings.workspace.byok.modal.edit-title": "Provider-Schlüssel bearbeiten",
|
||||
"com.affine.settings.workspace.byok.modal.description": "Den API-Key erneut eingeben und vor dem Speichern der Änderungen testen.",
|
||||
"com.affine.settings.workspace.byok.field.provider": "Provider",
|
||||
"com.affine.settings.workspace.byok.field.key-name": "Schlüsselname",
|
||||
"com.affine.settings.workspace.byok.field.description": "Beschreibung",
|
||||
"com.affine.settings.workspace.byok.field.storage": "Schlüssel-Speicher",
|
||||
"com.affine.settings.workspace.byok.field.api-key": "API-Key",
|
||||
"com.affine.settings.workspace.byok.field.endpoint": "Endpunkt",
|
||||
"com.affine.settings.workspace.byok.endpoint.custom-disabled": "Benutzerdefinierte Endpunkte wurden vom Serveradministrator deaktiviert. Aktiviere in Self-hosted Admin die Einstellung copilot.byok.allowCustomEndpoint.",
|
||||
"com.affine.settings.workspace.byok.endpoint.private-disabled": "Für Endpunkte in privaten Netzwerken muss der Serveradministrator zusätzlich die Einstellung copilot.byok.allowPrivateEndpoint aktivieren.",
|
||||
"com.affine.settings.workspace.byok.placeholder.key-name": "Primär",
|
||||
"com.affine.settings.workspace.byok.placeholder.description": "Workspace-Fallback-Schlüssel",
|
||||
"com.affine.settings.workspace.byok.action.add-key": "Schlüssel hinzufügen",
|
||||
"com.affine.settings.workspace.byok.action.test-key": "Schlüssel testen",
|
||||
"com.affine.settings.workspace.byok.action.cancel": "Abbrechen",
|
||||
"com.affine.settings.workspace.byok.action.save-key": "Schlüssel speichern",
|
||||
"com.affine.settings.workspace.byok.action.clear-all": "Alle BYOK-Schlüssel löschen",
|
||||
"com.affine.settings.workspace.byok.action.reorder": "Umsortieren",
|
||||
"com.affine.settings.workspace.byok.action.edit": "Bearbeiten",
|
||||
|
||||
@@ -1479,26 +1479,25 @@
|
||||
"com.affine.settings.meetings.record.permission-modal.open-setting": "Open System Settings",
|
||||
"com.affine.settings.workspace": "Workspace",
|
||||
"com.affine.settings.workspace.description": "You can view current workspace's information here.",
|
||||
"com.affine.settings.workspace.byok.title-beta": "AI BYOK (Beta)",
|
||||
"com.affine.settings.workspace.byok.title": "AI BYOK",
|
||||
"com.affine.settings.workspace.byok.title": "AI BYOK (Beta)",
|
||||
"com.affine.settings.workspace.byok.loading": "Loading provider keys.",
|
||||
"com.affine.settings.workspace.byok.subtitle": "Use your own provider keys for this workspace.",
|
||||
"com.affine.settings.workspace.byok.header": "Use workspace provider keys before AFFiNE AI plan routes.",
|
||||
"com.affine.settings.workspace.byok.locked.title": "BYOK requires Pro, Team, or Believer",
|
||||
"com.affine.settings.workspace.byok.locked.description": "Upgrade this workspace to add provider keys and route AFFiNE AI through your own OpenAI, Anthropic, Gemini, or FAL account.",
|
||||
"com.affine.settings.workspace.byok.notice.title": "AI plan stays available",
|
||||
"com.affine.settings.workspace.byok.notice.description": "Local keys on this device are tried first. Workspace server keys follow, then AFFiNE AI plan routes when quota is available.",
|
||||
"com.affine.settings.workspace.byok.keys.title": "Provider keys",
|
||||
"com.affine.settings.workspace.byok.keys.description": "List order controls fallback within each storage group.",
|
||||
"com.affine.settings.workspace.byok.empty.title": "No provider keys",
|
||||
"com.affine.settings.workspace.byok.empty.description": "Add a key to create the first route for this workspace. Provider rows are not shown until a key exists.",
|
||||
"com.affine.settings.workspace.byok.storage.local": "Local",
|
||||
"com.affine.settings.workspace.byok.storage.server": "Server",
|
||||
"com.affine.settings.workspace.byok.storage.local-this-device": "Local (this device)",
|
||||
"com.affine.settings.workspace.byok.storage.local-desktop-only": "Local (Desktop only)",
|
||||
"com.affine.settings.workspace.byok.storage.server.description": "Available to workspace members.",
|
||||
"com.affine.settings.workspace.byok.storage.local.description": "Kept in this desktop device’s secure storage.",
|
||||
"com.affine.settings.workspace.byok.storage.local.desktop-only": "Available in the AFFiNE desktop app.",
|
||||
"com.affine.settings.workspace.byok.storage.local.unavailable": "Secure local storage is not available on this device.",
|
||||
"com.affine.settings.workspace.byok.storage.local.test-disclosure": "Testing sends this key to the workspace server for this request only; it is not stored there.",
|
||||
"com.affine.settings.workspace.byok.status.disabled-after-failure": "Disabled after failure",
|
||||
"com.affine.settings.workspace.byok.status.key-verified": "Key verified",
|
||||
"com.affine.settings.workspace.byok.status.key-test-failed": "Key test failed",
|
||||
"com.affine.settings.workspace.byok.capability.text": "Text",
|
||||
"com.affine.settings.workspace.byok.capability.image-input": "Image input",
|
||||
"com.affine.settings.workspace.byok.capability.actions": "Actions",
|
||||
@@ -1506,8 +1505,6 @@
|
||||
"com.affine.settings.workspace.byok.capability.transcript": "Transcript",
|
||||
"com.affine.settings.workspace.byok.capability.indexing": "Indexing",
|
||||
"com.affine.settings.workspace.byok.row.activity.failed": "failed {{date}}",
|
||||
"com.affine.settings.workspace.byok.row.activity.used": "used {{date}}",
|
||||
"com.affine.settings.workspace.byok.row.activity.used-today": "used today",
|
||||
"com.affine.settings.workspace.byok.row.activity.unused": "not used yet",
|
||||
"com.affine.settings.workspace.byok.coverage.title": "Feature coverage",
|
||||
"com.affine.settings.workspace.byok.feature.chat.title": "Writing and chat",
|
||||
@@ -1525,23 +1522,71 @@
|
||||
"com.affine.settings.workspace.byok.usage.title": "BYOK usage",
|
||||
"com.affine.settings.workspace.byok.usage.period": "Last 30 days",
|
||||
"com.affine.settings.workspace.byok.usage.tokens": "{{count}} tokens",
|
||||
"com.affine.settings.workspace.byok.modal.add-title": "Add provider key",
|
||||
"com.affine.settings.workspace.byok.modal.edit-title": "Edit provider key",
|
||||
"com.affine.settings.workspace.byok.modal.description": "Re-enter the API key and test it before saving changes.",
|
||||
"com.affine.settings.workspace.byok.modal.connect-title": "Connect AI provider",
|
||||
"com.affine.settings.workspace.byok.modal.manage-title": "Manage provider",
|
||||
"com.affine.settings.workspace.byok.modal.connect-description": "Choose where the key is stored, then select the models AFFiNE may use.",
|
||||
"com.affine.settings.workspace.byok.modal.add-model-title": "Add models",
|
||||
"com.affine.settings.workspace.byok.modal.add-custom-model-title": "Add custom model",
|
||||
"com.affine.settings.workspace.byok.modal.edit-model-title": "Edit model",
|
||||
"com.affine.settings.workspace.byok.modal.catalog-model-description": "Choose one or more models this key may use.",
|
||||
"com.affine.settings.workspace.byok.modal.custom-model-description": "Enter the endpoint model ID and choose its uses.",
|
||||
"com.affine.settings.workspace.byok.section.connection": "Connection",
|
||||
"com.affine.settings.workspace.byok.section.models": "Models",
|
||||
"com.affine.settings.workspace.byok.section.advanced": "Advanced details",
|
||||
"com.affine.settings.workspace.byok.models.description.selected": "Models this key may use.",
|
||||
"com.affine.settings.workspace.byok.models.description.order": "Among compatible models, enabled models are tried from top to bottom.",
|
||||
"com.affine.settings.workspace.byok.models.empty": "No models added yet.",
|
||||
"com.affine.settings.workspace.byok.models.all-added": "All available models have been added.",
|
||||
"com.affine.settings.workspace.byok.models.no-search-results": "No matching models.",
|
||||
"com.affine.settings.workspace.byok.field.provider": "Provider",
|
||||
"com.affine.settings.workspace.byok.field.key-name": "Key name",
|
||||
"com.affine.settings.workspace.byok.field.description": "Description",
|
||||
"com.affine.settings.workspace.byok.field.storage": "Key storage",
|
||||
"com.affine.settings.workspace.byok.field.provider-enabled": "Provider enabled",
|
||||
"com.affine.settings.workspace.byok.field.api-key": "API key",
|
||||
"com.affine.settings.workspace.byok.field.endpoint": "Endpoint",
|
||||
"com.affine.settings.workspace.byok.field.model-id": "Model ID",
|
||||
"com.affine.settings.workspace.byok.endpoint.custom-disabled": "Custom endpoints are disabled by the server administrator. In Self-hosted Admin, enable copilot.byok.allowCustomEndpoint.",
|
||||
"com.affine.settings.workspace.byok.endpoint.private-disabled": "Private network endpoints additionally require the server administrator to enable copilot.byok.allowPrivateEndpoint.",
|
||||
"com.affine.settings.workspace.byok.placeholder.key-name": "Primary",
|
||||
"com.affine.settings.workspace.byok.placeholder.description": "Workspace fallback key",
|
||||
"com.affine.settings.workspace.byok.placeholder.keep-current-key": "Leave blank to keep the current key",
|
||||
"com.affine.settings.workspace.byok.placeholder.model-id": "Model ID",
|
||||
"com.affine.settings.workspace.byok.placeholder.search-models": "Search models…",
|
||||
"com.affine.settings.workspace.byok.endpoint.use-custom": "Use a custom API-compatible endpoint",
|
||||
"com.affine.settings.workspace.byok.probe.include-image": "Include an image generation request when testing (provider charges may apply)",
|
||||
"com.affine.settings.workspace.byok.probe.verified": "Connection verified",
|
||||
"com.affine.settings.workspace.byok.probe.failed": "Connection failed",
|
||||
"com.affine.settings.workspace.byok.model.recommended": "Recommended",
|
||||
"com.affine.settings.workspace.byok.model.duplicate-id": "This model has already been added.",
|
||||
"com.affine.settings.workspace.byok.model.status.not-tested": "Not tested",
|
||||
"com.affine.settings.workspace.byok.model.status.verified": "Verified",
|
||||
"com.affine.settings.workspace.byok.model.status.failed": "Failed",
|
||||
"com.affine.settings.workspace.byok.model.status.partially-verified": "Partially verified · {{verified}} of {{total}}",
|
||||
"com.affine.settings.workspace.byok.model.status.disabled": "Disabled",
|
||||
"com.affine.settings.workspace.byok.model.use-this-for": "Use this model for",
|
||||
"com.affine.settings.workspace.byok.model.use.chat": "Chat & writing",
|
||||
"com.affine.settings.workspace.byok.model.use.actions": "Actions",
|
||||
"com.affine.settings.workspace.byok.model.use.structured": "Structured output",
|
||||
"com.affine.settings.workspace.byok.model.use.vision": "Image understanding",
|
||||
"com.affine.settings.workspace.byok.model.use.image": "Image generation",
|
||||
"com.affine.settings.workspace.byok.model.use.transcript": "Transcription",
|
||||
"com.affine.settings.workspace.byok.model.use.embedding": "Workspace indexing",
|
||||
"com.affine.settings.workspace.byok.model.use.rerank": "Search reranking",
|
||||
"com.affine.settings.workspace.byok.action.add-key": "Add key",
|
||||
"com.affine.settings.workspace.byok.action.test-key": "Test key",
|
||||
"com.affine.settings.workspace.byok.action.test-connection": "Test connection",
|
||||
"com.affine.settings.workspace.byok.action.test": "Test",
|
||||
"com.affine.settings.workspace.byok.action.testing": "Testing…",
|
||||
"com.affine.settings.workspace.byok.action.cancel": "Cancel",
|
||||
"com.affine.settings.workspace.byok.action.save-key": "Save key",
|
||||
"com.affine.settings.workspace.byok.action.connect": "Connect",
|
||||
"com.affine.settings.workspace.byok.action.connecting": "Connecting…",
|
||||
"com.affine.settings.workspace.byok.action.save-changes": "Save changes",
|
||||
"com.affine.settings.workspace.byok.action.add-model": "Add model",
|
||||
"com.affine.settings.workspace.byok.action.add-selected-models": "Add {{count}} models",
|
||||
"com.affine.settings.workspace.byok.action.save-model": "Save model",
|
||||
"com.affine.settings.workspace.byok.action.enable-model": "Enable {{model}}",
|
||||
"com.affine.settings.workspace.byok.action.disable-model": "Disable {{model}}",
|
||||
"com.affine.settings.workspace.byok.action.model-options": "Options for {{model}}",
|
||||
"com.affine.settings.workspace.byok.action.move-up": "Move up",
|
||||
"com.affine.settings.workspace.byok.action.move-down": "Move down",
|
||||
"com.affine.settings.workspace.byok.action.remove": "Remove",
|
||||
"com.affine.settings.workspace.byok.action.clear-all": "Clear all BYOK keys",
|
||||
"com.affine.settings.workspace.byok.action.reorder": "Reorder",
|
||||
"com.affine.settings.workspace.byok.action.edit": "Edit",
|
||||
@@ -1554,6 +1599,8 @@
|
||||
"com.affine.settings.workspace.byok.notify.delete-failed.title": "BYOK key not deleted",
|
||||
"com.affine.settings.workspace.byok.notify.reorder-failed.title": "BYOK keys not reordered",
|
||||
"com.affine.settings.workspace.byok.notify.clear-failed.title": "BYOK keys not cleared",
|
||||
"com.affine.settings.workspace.byok.notify.reload-required.title": "BYOK settings changed",
|
||||
"com.affine.settings.workspace.byok.notify.reload-required.message": "Reload the settings and try again.",
|
||||
"com.affine.settings.workspace.byok.notify.operation-failed.message": "Please try again.",
|
||||
"com.affine.settings.workspace.byok.notify.cross-storage-reorder.title": "Cannot reorder across storage",
|
||||
"com.affine.settings.workspace.byok.notify.cross-storage-reorder.message": "Local keys and server keys keep separate fallback order.",
|
||||
|
||||
@@ -1439,25 +1439,19 @@
|
||||
"com.affine.settings.workspace": "Жұмыс кеңістігі",
|
||||
"com.affine.settings.workspace.description": "Ағымдағы жұмыс кеңістігінің ақпаратын осы жерден көре аласың.",
|
||||
"com.affine.settings.workspace.byok.title-beta": "AI BYOK (Бета)",
|
||||
"com.affine.settings.workspace.byok.title": "AI BYOK",
|
||||
"com.affine.settings.workspace.byok.loading": "Провайдер кілттері жүктелуде.",
|
||||
"com.affine.settings.workspace.byok.subtitle": "Бұл жұмыс кеңістігі үшін өз провайдер кілттеріңді пайдалан.",
|
||||
"com.affine.settings.workspace.byok.header": "AFFiNE AI жоспар бағыттарына дейін жұмыс кеңістігінің провайдер кілттерін пайдалан.",
|
||||
"com.affine.settings.workspace.byok.locked.title": "BYOK үшін Pro, Team немесе Believer қажет",
|
||||
"com.affine.settings.workspace.byok.locked.description": "Провайдер кілттерін қосу және AFFiNE AI-ды өзіңнің OpenAI, Anthropic, Gemini немесе FAL аккаунтың арқылы бағыттау үшін осы жұмыс кеңістігін жаңарт.",
|
||||
"com.affine.settings.workspace.byok.notice.title": "AI жоспары қолжетімді болып қалады",
|
||||
"com.affine.settings.workspace.byok.notice.description": "Алдымен осы құрылғыдағы жергілікті кілттер сыналады. Одан кейін жұмыс кеңістігінің сервер кілттері, сосын квота болған кезде AFFiNE AI жоспар бағыттары пайдаланылады.",
|
||||
"com.affine.settings.workspace.byok.keys.title": "Провайдер кілттері",
|
||||
"com.affine.settings.workspace.byok.keys.description": "Тізім реті әр сақтау тобы ішінде резервтік ретті басқарады.",
|
||||
"com.affine.settings.workspace.byok.empty.title": "Провайдер кілттері жоқ",
|
||||
"com.affine.settings.workspace.byok.empty.description": "Осы жұмыс кеңістігі үшін бірінші бағытты жасау үшін кілт қос. Кілт болмайынша провайдер жолдары көрсетілмейді.",
|
||||
"com.affine.settings.workspace.byok.storage.local": "Жергілікті",
|
||||
"com.affine.settings.workspace.byok.storage.server": "Сервер",
|
||||
"com.affine.settings.workspace.byok.storage.local-this-device": "Жергілікті (осы құрылғыда)",
|
||||
"com.affine.settings.workspace.byok.storage.local-desktop-only": "Жергілікті (тек десктопта)",
|
||||
"com.affine.settings.workspace.byok.status.disabled-after-failure": "Сәтсіздіктен кейін өшірілді",
|
||||
"com.affine.settings.workspace.byok.status.key-verified": "Кілт расталды",
|
||||
"com.affine.settings.workspace.byok.status.key-test-failed": "Кілтті тексеру сәтсіз аяқталды",
|
||||
"com.affine.settings.workspace.byok.capability.text": "Мәтін",
|
||||
"com.affine.settings.workspace.byok.capability.image-input": "Сурет енгізу",
|
||||
"com.affine.settings.workspace.byok.capability.actions": "Әрекеттер",
|
||||
@@ -1465,8 +1459,6 @@
|
||||
"com.affine.settings.workspace.byok.capability.transcript": "Транскрипт",
|
||||
"com.affine.settings.workspace.byok.capability.indexing": "Индекстеу",
|
||||
"com.affine.settings.workspace.byok.row.activity.failed": "{{date}} күні сәтсіз аяқталды",
|
||||
"com.affine.settings.workspace.byok.row.activity.used": "{{date}} күні қолданылды",
|
||||
"com.affine.settings.workspace.byok.row.activity.used-today": "бүгін қолданылды",
|
||||
"com.affine.settings.workspace.byok.row.activity.unused": "әлі қолданылмаған",
|
||||
"com.affine.settings.workspace.byok.coverage.title": "Функцияларды қамту",
|
||||
"com.affine.settings.workspace.byok.feature.chat.title": "Жазу және чат",
|
||||
@@ -1484,21 +1476,13 @@
|
||||
"com.affine.settings.workspace.byok.usage.title": "BYOK қолданылуы",
|
||||
"com.affine.settings.workspace.byok.usage.period": "Соңғы 30 күн",
|
||||
"com.affine.settings.workspace.byok.usage.tokens": "{{count}} токен",
|
||||
"com.affine.settings.workspace.byok.modal.add-title": "Провайдер кілтін қос",
|
||||
"com.affine.settings.workspace.byok.modal.edit-title": "Провайдер кілтін өңде",
|
||||
"com.affine.settings.workspace.byok.modal.description": "API кілтін қайта енгіз және өзгерістерді сақтамас бұрын оны тексер.",
|
||||
"com.affine.settings.workspace.byok.field.provider": "Провайдер",
|
||||
"com.affine.settings.workspace.byok.field.key-name": "Кілт атауы",
|
||||
"com.affine.settings.workspace.byok.field.description": "Сипаттама",
|
||||
"com.affine.settings.workspace.byok.field.storage": "Кілт сақтау орны",
|
||||
"com.affine.settings.workspace.byok.field.api-key": "API кілті",
|
||||
"com.affine.settings.workspace.byok.field.endpoint": "Эндпойнт",
|
||||
"com.affine.settings.workspace.byok.placeholder.key-name": "Негізгі",
|
||||
"com.affine.settings.workspace.byok.placeholder.description": "Жұмыс кеңістігінің резервтік кілті",
|
||||
"com.affine.settings.workspace.byok.action.add-key": "Кілтті қос",
|
||||
"com.affine.settings.workspace.byok.action.test-key": "Кілтті тексер",
|
||||
"com.affine.settings.workspace.byok.action.cancel": "Бас тарт",
|
||||
"com.affine.settings.workspace.byok.action.save-key": "Кілтті сақта",
|
||||
"com.affine.settings.workspace.byok.action.clear-all": "Барлық BYOK кілттерін тазарт",
|
||||
"com.affine.settings.workspace.byok.action.reorder": "Ретін өзгерт",
|
||||
"com.affine.settings.workspace.byok.action.edit": "Өңде",
|
||||
|
||||
@@ -1439,25 +1439,19 @@
|
||||
"com.affine.settings.workspace": "Çalışma alanı",
|
||||
"com.affine.settings.workspace.description": "Mevcut çalışma alanının bilgilerini burada görüntüleyebilirsiniz.",
|
||||
"com.affine.settings.workspace.byok.title-beta": "AI BYOK (Beta)",
|
||||
"com.affine.settings.workspace.byok.title": "AI BYOK",
|
||||
"com.affine.settings.workspace.byok.loading": "Sağlayıcı anahtarları yükleniyor.",
|
||||
"com.affine.settings.workspace.byok.subtitle": "Bu çalışma alanı için kendi sağlayıcı anahtarlarınızı kullanın.",
|
||||
"com.affine.settings.workspace.byok.header": "AFFiNE AI plan rotalarından önce çalışma alanı sağlayıcı anahtarlarını kullanın.",
|
||||
"com.affine.settings.workspace.byok.locked.title": "BYOK için Pro, Team veya Believer gerekir",
|
||||
"com.affine.settings.workspace.byok.locked.description": "Sağlayıcı anahtarları eklemek ve AFFiNE AI'yi kendi OpenAI, Anthropic, Gemini veya FAL hesabınız üzerinden yönlendirmek için bu çalışma alanını yükseltin.",
|
||||
"com.affine.settings.workspace.byok.notice.title": "Yapay zeka planı kullanılabilir durumda kalacak",
|
||||
"com.affine.settings.workspace.byok.notice.description": "Önce bu cihazdaki yerel anahtarlar denenir. Çalışma alanı sunucusu anahtarları takip eder ve ardından kota mevcut olduğunda AFFiNE AI rotaları planlar.",
|
||||
"com.affine.settings.workspace.byok.keys.title": "Sağlayıcı anahtarları",
|
||||
"com.affine.settings.workspace.byok.keys.description": "Her depolama grubunda yedek (fallback) sırasını liste sırası belirler.",
|
||||
"com.affine.settings.workspace.byok.empty.title": "Sağlayıcı anahtarı yok",
|
||||
"com.affine.settings.workspace.byok.empty.description": "Bu çalışma alanı için ilk rotayı oluşturmak üzere bir anahtar ekleyin. Sağlayıcı satırları bir anahtar mevcut olana kadar gösterilmez.",
|
||||
"com.affine.settings.workspace.byok.storage.local": "Yerel",
|
||||
"com.affine.settings.workspace.byok.storage.server": "Sunucu",
|
||||
"com.affine.settings.workspace.byok.storage.local-this-device": "Yerel (bu cihaz)",
|
||||
"com.affine.settings.workspace.byok.storage.local-desktop-only": "Yerel (Yalnızca masaüstü)",
|
||||
"com.affine.settings.workspace.byok.status.disabled-after-failure": "Arızadan sonra devre dışı bırakıldı",
|
||||
"com.affine.settings.workspace.byok.status.key-verified": "Anahtar doğrulandı",
|
||||
"com.affine.settings.workspace.byok.status.key-test-failed": "Anahtar testi başarısız oldu",
|
||||
"com.affine.settings.workspace.byok.capability.text": "Metin",
|
||||
"com.affine.settings.workspace.byok.capability.image-input": "Görüntü girişi",
|
||||
"com.affine.settings.workspace.byok.capability.actions": "Eylemler",
|
||||
@@ -1465,8 +1459,6 @@
|
||||
"com.affine.settings.workspace.byok.capability.transcript": "Deşifre metni",
|
||||
"com.affine.settings.workspace.byok.capability.indexing": "İndeksleme",
|
||||
"com.affine.settings.workspace.byok.row.activity.failed": "başarısız oldu {{date}}",
|
||||
"com.affine.settings.workspace.byok.row.activity.used": "{{date}} kullanıldı",
|
||||
"com.affine.settings.workspace.byok.row.activity.used-today": "Bugün kullanıldı",
|
||||
"com.affine.settings.workspace.byok.row.activity.unused": "henüz kullanılmadı",
|
||||
"com.affine.settings.workspace.byok.coverage.title": "Özellik kapsamı",
|
||||
"com.affine.settings.workspace.byok.feature.chat.title": "Yazma ve sohbet",
|
||||
@@ -1484,21 +1476,13 @@
|
||||
"com.affine.settings.workspace.byok.usage.title": "BYOK kullanımı",
|
||||
"com.affine.settings.workspace.byok.usage.period": "Son 30 gün",
|
||||
"com.affine.settings.workspace.byok.usage.tokens": "{{count}} jeton",
|
||||
"com.affine.settings.workspace.byok.modal.add-title": "Sağlayıcı anahtarı ekle",
|
||||
"com.affine.settings.workspace.byok.modal.edit-title": "Sağlayıcı anahtarını düzenle",
|
||||
"com.affine.settings.workspace.byok.modal.description": "Değişiklikleri kaydetmeden önce API anahtarını tekrar girin ve test edin.",
|
||||
"com.affine.settings.workspace.byok.field.provider": "Sağlayıcı",
|
||||
"com.affine.settings.workspace.byok.field.key-name": "Anahtar adı",
|
||||
"com.affine.settings.workspace.byok.field.description": "Tanım",
|
||||
"com.affine.settings.workspace.byok.field.storage": "Anahtar saklama",
|
||||
"com.affine.settings.workspace.byok.field.api-key": "API anahtarı",
|
||||
"com.affine.settings.workspace.byok.field.endpoint": "Uç nokta",
|
||||
"com.affine.settings.workspace.byok.placeholder.key-name": "Birincil",
|
||||
"com.affine.settings.workspace.byok.placeholder.description": "Çalışma alanı yedek anahtarı",
|
||||
"com.affine.settings.workspace.byok.action.add-key": "Anahtar ekle",
|
||||
"com.affine.settings.workspace.byok.action.test-key": "Test anahtarı",
|
||||
"com.affine.settings.workspace.byok.action.cancel": "İptal",
|
||||
"com.affine.settings.workspace.byok.action.save-key": "Anahtarı kaydet",
|
||||
"com.affine.settings.workspace.byok.action.clear-all": "Tüm BYOK anahtarlarını temizle",
|
||||
"com.affine.settings.workspace.byok.action.reorder": "Yeniden sırala",
|
||||
"com.affine.settings.workspace.byok.action.edit": "Düzenle",
|
||||
|
||||
@@ -1735,8 +1735,6 @@
|
||||
"com.affine.settings.workspace.byok.action.delete": "حذف کریں۔",
|
||||
"com.affine.settings.workspace.byok.action.edit": "ترمیم کریں۔",
|
||||
"com.affine.settings.workspace.byok.action.reorder": "دوبارہ ترتیب دیں۔",
|
||||
"com.affine.settings.workspace.byok.action.save-key": "کلید محفوظ کریں۔",
|
||||
"com.affine.settings.workspace.byok.action.test-key": "ٹیسٹ کلید",
|
||||
"com.affine.settings.workspace.byok.capability.actions": "اعمال",
|
||||
"com.affine.settings.workspace.byok.capability.image-generate": "تصویر بنائیں",
|
||||
"com.affine.settings.workspace.byok.capability.image-input": "امیج ان پٹ",
|
||||
@@ -1761,18 +1759,12 @@
|
||||
"com.affine.settings.workspace.byok.field.endpoint": "اختتامی نقطہ",
|
||||
"com.affine.settings.workspace.byok.field.key-name": "کلیدی نام",
|
||||
"com.affine.settings.workspace.byok.field.provider": "فراہم کرنے والا",
|
||||
"com.affine.settings.workspace.byok.field.storage": "کلیدی ذخیرہ",
|
||||
"com.affine.settings.workspace.byok.header": "AFFiNE AI پلان کے راستوں سے پہلے ورک اسپیس فراہم کنندہ کیز استعمال کریں۔",
|
||||
"com.affine.settings.workspace.byok.keys.description": "فہرست آرڈر کنٹرولز فال بیک ہر اسٹوریج گروپ کے اندر۔",
|
||||
"com.affine.settings.workspace.byok.keys.title": "فراہم کنندہ کی چابیاں",
|
||||
"com.affine.settings.workspace.byok.loading": "فراہم کنندہ کی چابیاں لوڈ ہو رہی ہیں۔",
|
||||
"com.affine.settings.workspace.byok.locked.description": "فراہم کنندہ کیز شامل کرنے کے لیے اس ورک اسپیس کو اپ گریڈ کریں اور AFFiNE AI کو اپنے OpenAI، Anthropic، Gemini، یا FAL اکاؤنٹ کے ذریعے روٹ کریں۔",
|
||||
"com.affine.settings.workspace.byok.locked.title": "BYOK کو پرو، ٹیم، یا مومن درکار ہے۔",
|
||||
"com.affine.settings.workspace.byok.modal.add-title": "فراہم کنندہ کلید شامل کریں۔",
|
||||
"com.affine.settings.workspace.byok.modal.description": "API کلید دوبارہ درج کریں اور تبدیلیاں محفوظ کرنے سے پہلے اس کی جانچ کریں۔",
|
||||
"com.affine.settings.workspace.byok.modal.edit-title": "فراہم کنندہ کلید میں ترمیم کریں۔",
|
||||
"com.affine.settings.workspace.byok.notice.description": "اس آلہ پر مقامی کلیدیں پہلے آزمائی جاتی ہیں۔ ورک اسپیس سرور کیز فالو کرتی ہیں، پھر کوٹہ دستیاب ہونے پر AFFiNE AI پلان روٹس۔",
|
||||
"com.affine.settings.workspace.byok.notice.title": "AI پلان دستیاب رہتا ہے۔",
|
||||
"com.affine.settings.workspace.byok.notify.clear-failed.title": "BYOK کیز صاف نہیں ہوئیں",
|
||||
"com.affine.settings.workspace.byok.notify.cross-storage-reorder.message": "لوکل کیز اور سرور کیز الگ الگ فال بیک آرڈر رکھتی ہیں۔",
|
||||
"com.affine.settings.workspace.byok.notify.cross-storage-reorder.title": "پورے اسٹوریج میں دوبارہ ترتیب نہیں دی جا سکتی",
|
||||
@@ -1784,21 +1776,13 @@
|
||||
"com.affine.settings.workspace.byok.notify.reorder-failed.title": "BYOK کیز دوبارہ ترتیب نہیں دی گئیں۔",
|
||||
"com.affine.settings.workspace.byok.notify.save-failed.title": "BYOK کلید محفوظ نہیں ہے۔",
|
||||
"com.affine.settings.workspace.byok.notify.test-failed.title": "کلیدی ٹیسٹ ناکام ہو گیا۔",
|
||||
"com.affine.settings.workspace.byok.placeholder.description": "ورک اسپیس فال بیک کلید",
|
||||
"com.affine.settings.workspace.byok.placeholder.key-name": "پرائمری",
|
||||
"com.affine.settings.workspace.byok.row.activity.failed": "ناکام {{date}}",
|
||||
"com.affine.settings.workspace.byok.row.activity.unused": "ابھی تک استعمال نہیں کیا",
|
||||
"com.affine.settings.workspace.byok.row.activity.used": "استعمال شدہ {{date}}",
|
||||
"com.affine.settings.workspace.byok.row.activity.used-today": "آج استعمال کیا جاتا ہے",
|
||||
"com.affine.settings.workspace.byok.status.disabled-after-failure": "ناکامی کے بعد معذور",
|
||||
"com.affine.settings.workspace.byok.status.key-test-failed": "کلیدی ٹیسٹ ناکام ہو گیا۔",
|
||||
"com.affine.settings.workspace.byok.status.key-verified": "کلید کی تصدیق ہو گئی۔",
|
||||
"com.affine.settings.workspace.byok.storage.local": "مقامی",
|
||||
"com.affine.settings.workspace.byok.storage.local-desktop-only": "مقامی (صرف ڈیسک ٹاپ)",
|
||||
"com.affine.settings.workspace.byok.storage.local-this-device": "مقامی (یہ آلہ)",
|
||||
"com.affine.settings.workspace.byok.storage.server": "سرور",
|
||||
"com.affine.settings.workspace.byok.subtitle": "اس ورک اسپیس کے لیے اپنی فراہم کنندہ کیز استعمال کریں۔",
|
||||
"com.affine.settings.workspace.byok.title": "AI BYOK",
|
||||
"com.affine.settings.workspace.byok.title-beta": "AI BYOK (بیٹا)",
|
||||
"com.affine.settings.workspace.byok.usage.period": "آخری 30 دن",
|
||||
"com.affine.settings.workspace.byok.usage.title": "BYOK کا استعمال",
|
||||
|
||||
@@ -1478,25 +1478,19 @@
|
||||
"com.affine.settings.workspace": "工作区",
|
||||
"com.affine.settings.workspace.description": "您可以在此处自定义您的工作区。",
|
||||
"com.affine.settings.workspace.byok.title-beta": "AI BYOK(Beta)",
|
||||
"com.affine.settings.workspace.byok.title": "AI BYOK",
|
||||
"com.affine.settings.workspace.byok.loading": "正在加载服务商密钥。",
|
||||
"com.affine.settings.workspace.byok.subtitle": "为此工作区使用您自己的服务商密钥。",
|
||||
"com.affine.settings.workspace.byok.header": "优先使用工作区服务商密钥,再回退到 AFFiNE AI 套餐通道。",
|
||||
"com.affine.settings.workspace.byok.locked.title": "BYOK 需要 Pro、Team 或 Believer",
|
||||
"com.affine.settings.workspace.byok.locked.description": "升级此工作区后,可添加服务商密钥,并通过您自己的 OpenAI、Anthropic、Gemini 或 FAL 账号路由 AFFiNE AI。",
|
||||
"com.affine.settings.workspace.byok.notice.title": "AI 套餐仍可用",
|
||||
"com.affine.settings.workspace.byok.notice.description": "会先尝试此设备上的本地密钥,然后使用工作区服务端密钥,最后在额度可用时回退到 AFFiNE AI 套餐通道。",
|
||||
"com.affine.settings.workspace.byok.keys.title": "服务商密钥",
|
||||
"com.affine.settings.workspace.byok.keys.description": "列表顺序控制每个存储分组内的回退顺序。",
|
||||
"com.affine.settings.workspace.byok.empty.title": "暂无服务商密钥",
|
||||
"com.affine.settings.workspace.byok.empty.description": "添加密钥后,将为此工作区创建第一条路由。创建前不会显示服务商行。",
|
||||
"com.affine.settings.workspace.byok.storage.local": "本地",
|
||||
"com.affine.settings.workspace.byok.storage.server": "服务端",
|
||||
"com.affine.settings.workspace.byok.storage.local-this-device": "本地(此设备)",
|
||||
"com.affine.settings.workspace.byok.storage.local-desktop-only": "本地(仅桌面端)",
|
||||
"com.affine.settings.workspace.byok.status.disabled-after-failure": "失败后已禁用",
|
||||
"com.affine.settings.workspace.byok.status.key-verified": "密钥已验证",
|
||||
"com.affine.settings.workspace.byok.status.key-test-failed": "密钥测试失败",
|
||||
"com.affine.settings.workspace.byok.capability.text": "文本",
|
||||
"com.affine.settings.workspace.byok.capability.image-input": "图片输入",
|
||||
"com.affine.settings.workspace.byok.capability.actions": "动作",
|
||||
@@ -1504,8 +1498,6 @@
|
||||
"com.affine.settings.workspace.byok.capability.transcript": "转录",
|
||||
"com.affine.settings.workspace.byok.capability.indexing": "索引",
|
||||
"com.affine.settings.workspace.byok.row.activity.failed": "{{date}} 失败",
|
||||
"com.affine.settings.workspace.byok.row.activity.used": "{{date}} 使用",
|
||||
"com.affine.settings.workspace.byok.row.activity.used-today": "今天使用",
|
||||
"com.affine.settings.workspace.byok.row.activity.unused": "尚未使用",
|
||||
"com.affine.settings.workspace.byok.coverage.title": "功能覆盖",
|
||||
"com.affine.settings.workspace.byok.feature.chat.title": "写作与聊天",
|
||||
@@ -1523,23 +1515,17 @@
|
||||
"com.affine.settings.workspace.byok.usage.title": "BYOK 用量",
|
||||
"com.affine.settings.workspace.byok.usage.period": "最近 30 天",
|
||||
"com.affine.settings.workspace.byok.usage.tokens": "{{count}} tokens",
|
||||
"com.affine.settings.workspace.byok.modal.add-title": "添加服务商密钥",
|
||||
"com.affine.settings.workspace.byok.modal.edit-title": "编辑服务商密钥",
|
||||
"com.affine.settings.workspace.byok.modal.description": "重新输入 API key 并测试通过后才能保存更改。",
|
||||
"com.affine.settings.workspace.byok.field.provider": "服务商",
|
||||
"com.affine.settings.workspace.byok.field.key-name": "密钥名称",
|
||||
"com.affine.settings.workspace.byok.field.description": "描述",
|
||||
"com.affine.settings.workspace.byok.field.storage": "密钥存储",
|
||||
"com.affine.settings.workspace.byok.field.api-key": "API key",
|
||||
"com.affine.settings.workspace.byok.field.endpoint": "Endpoint",
|
||||
"com.affine.settings.workspace.byok.endpoint.custom-disabled": "服务器管理员已禁用自定义端点。请在自托管管理后台启用 copilot.byok.allowCustomEndpoint。",
|
||||
"com.affine.settings.workspace.byok.endpoint.private-disabled": "私有网络端点还需要服务器管理员启用 copilot.byok.allowPrivateEndpoint。",
|
||||
"com.affine.settings.workspace.byok.placeholder.key-name": "Primary",
|
||||
"com.affine.settings.workspace.byok.placeholder.description": "工作区回退密钥",
|
||||
"com.affine.settings.workspace.byok.action.add-key": "添加密钥",
|
||||
"com.affine.settings.workspace.byok.action.test-key": "测试密钥",
|
||||
"com.affine.settings.workspace.byok.action.test": "测试",
|
||||
"com.affine.settings.workspace.byok.action.testing": "测试中…",
|
||||
"com.affine.settings.workspace.byok.action.cancel": "取消",
|
||||
"com.affine.settings.workspace.byok.action.save-key": "保存密钥",
|
||||
"com.affine.settings.workspace.byok.action.clear-all": "清空所有 BYOK 密钥",
|
||||
"com.affine.settings.workspace.byok.action.reorder": "重新排序",
|
||||
"com.affine.settings.workspace.byok.action.edit": "编辑",
|
||||
@@ -1552,6 +1538,8 @@
|
||||
"com.affine.settings.workspace.byok.notify.delete-failed.title": "BYOK 密钥未删除",
|
||||
"com.affine.settings.workspace.byok.notify.reorder-failed.title": "BYOK 密钥未重新排序",
|
||||
"com.affine.settings.workspace.byok.notify.clear-failed.title": "BYOK 密钥未清空",
|
||||
"com.affine.settings.workspace.byok.notify.reload-required.title": "BYOK 设置已变化",
|
||||
"com.affine.settings.workspace.byok.notify.reload-required.message": "请重新加载设置后再试。",
|
||||
"com.affine.settings.workspace.byok.notify.operation-failed.message": "请稍后重试。",
|
||||
"com.affine.settings.workspace.byok.notify.cross-storage-reorder.title": "不能跨存储排序",
|
||||
"com.affine.settings.workspace.byok.notify.cross-storage-reorder.message": "本地密钥和服务端密钥会保留各自独立的回退顺序。",
|
||||
|
||||
Reference in New Issue
Block a user