refactor(web): 统一日志详情与界面术语
This commit is contained in:
23 files changed
+512
-516
No files matched your search
@@ -435,6 +435,7 @@ function toggleAttemptErrorMessage(sequence: number): void {
|
||||
:channel-id="log.channel_id"
|
||||
:channel="finalChannel()"
|
||||
:credential-id="log.credential_id"
|
||||
appearance="plain"
|
||||
/>
|
||||
</dd>
|
||||
</div>
|
||||
@@ -537,6 +538,12 @@ function toggleAttemptErrorMessage(sequence: number): void {
|
||||
<PricingModeIndicator :mode="log.pricing_mode" />
|
||||
</dd>
|
||||
</div>
|
||||
<div v-if="!selfScoped && receipt">
|
||||
<dt>{{ t('monitor.logs.receipt.identity') }}</dt>
|
||||
<dd>
|
||||
<code>{{ pricingIdentity }}</code>
|
||||
</dd>
|
||||
</div>
|
||||
<div
|
||||
v-if="
|
||||
!selfScoped &&
|
||||
@@ -552,16 +559,6 @@ function toggleAttemptErrorMessage(sequence: number): void {
|
||||
<span>{{ t('monitor.logs.receipt.output') }} = {{ formula.output }}</span>
|
||||
</dd>
|
||||
</div>
|
||||
<div v-if="!selfScoped && receipt">
|
||||
<dt>{{ t('monitor.logs.receipt.schema') }}</dt>
|
||||
<dd>v{{ receipt.schema_version }}</dd>
|
||||
</div>
|
||||
<div v-if="!selfScoped && receipt">
|
||||
<dt>{{ t('monitor.logs.receipt.identity') }}</dt>
|
||||
<dd>
|
||||
<code>{{ pricingIdentity }}</code>
|
||||
</dd>
|
||||
</div>
|
||||
</dl>
|
||||
</section>
|
||||
|
||||
@@ -590,6 +587,7 @@ function toggleAttemptErrorMessage(sequence: number): void {
|
||||
:channel-id="attempt.channel_id"
|
||||
:channel="channelDefinition(attempt.channel_id)"
|
||||
:credential-id="attempt.credential_id"
|
||||
appearance="plain"
|
||||
/>
|
||||
</dd>
|
||||
</div>
|
||||
@@ -791,24 +789,6 @@ function toggleAttemptErrorMessage(sequence: number): void {
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.log-detail__protocol {
|
||||
display: flex;
|
||||
min-width: 0;
|
||||
align-items: center;
|
||||
gap: 7px;
|
||||
}
|
||||
|
||||
.log-detail__route-identity {
|
||||
display: flex;
|
||||
min-width: 0;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
}
|
||||
|
||||
.log-detail__route-identity > :first-child {
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.log-detail__wide {
|
||||
grid-column: 1 / -1;
|
||||
}
|
||||
|
||||
@@ -6,13 +6,21 @@ import type { ChannelDto } from '@/app/resources/channels'
|
||||
import ChannelIcon from '@/components/brand/ChannelIcon.vue'
|
||||
import AppTooltip from '@/components/ui/AppTooltip.vue'
|
||||
|
||||
const props = defineProps<{
|
||||
groupId: number | null
|
||||
groupName?: string | null
|
||||
channelId: string | null
|
||||
channel?: Pick<ChannelDto, 'name' | 'icon' | 'mark'> | null
|
||||
credentialId: number | null
|
||||
}>()
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
groupId: number | null
|
||||
groupName?: string | null
|
||||
channelId: string | null
|
||||
channel?: Pick<ChannelDto, 'name' | 'icon' | 'mark'> | null
|
||||
credentialId: number | null
|
||||
appearance?: 'compact' | 'plain'
|
||||
}>(),
|
||||
{
|
||||
groupName: undefined,
|
||||
channel: undefined,
|
||||
appearance: 'compact',
|
||||
},
|
||||
)
|
||||
|
||||
const { t } = useI18n()
|
||||
|
||||
@@ -58,6 +66,7 @@ const tooltip = computed(() => {
|
||||
<AppTooltip :content="tooltip" :disabled="tooltip.length === 0" side="top" align="start">
|
||||
<span
|
||||
class="log-route-identity"
|
||||
:class="{ 'log-route-identity--plain': props.appearance === 'plain' }"
|
||||
:tabindex="tooltip ? 0 : undefined"
|
||||
:aria-label="tooltip || undefined"
|
||||
>
|
||||
@@ -99,4 +108,14 @@ const tooltip = computed(() => {
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.log-route-identity--plain .log-route-identity__icon,
|
||||
.log-route-identity--plain .log-route-identity__label {
|
||||
font-size: inherit;
|
||||
}
|
||||
|
||||
.log-route-identity--plain .log-route-identity__label {
|
||||
color: inherit;
|
||||
font-family: inherit;
|
||||
}
|
||||
</style>
|
||||
@@ -3,27 +3,27 @@ export default {
|
||||
title: 'Access keys',
|
||||
description: 'Issue and manage plaintext-sensitive credentials for data-plane clients.',
|
||||
loginNotice: {
|
||||
title: 'AccessKeys can also sign in',
|
||||
title: 'Access keys can also sign in',
|
||||
description:
|
||||
"When distributing an AccessKey, tell its holder to enter it on this instance's sign-in page. It can view its Home, available models, usage, and redacted request history, but cannot change configuration.",
|
||||
"When distributing an access key, tell its holder to enter it on this instance's sign-in page. It can view its Home, available models, usage, and redacted request history, but cannot change configuration.",
|
||||
},
|
||||
create: 'Create AccessKey',
|
||||
copy: 'Copy AccessKey',
|
||||
create: 'Create access key',
|
||||
copy: 'Copy access key',
|
||||
toast: {
|
||||
created: 'AccessKey “{name}” created',
|
||||
updated: 'AccessKey “{name}” updated',
|
||||
deleted: 'AccessKey “{name}” deleted',
|
||||
enabled: 'AccessKey “{name}” enabled',
|
||||
disabled: 'AccessKey “{name}” disabled',
|
||||
created: 'Access key “{name}” created',
|
||||
updated: 'Access key “{name}” updated',
|
||||
deleted: 'Access key “{name}” deleted',
|
||||
enabled: 'Access key “{name}” enabled',
|
||||
disabled: 'Access key “{name}” disabled',
|
||||
},
|
||||
loading: 'Loading AccessKeys…',
|
||||
loadFailed: 'Unable to load AccessKeys.',
|
||||
stale: 'AccessKey data may be stale because the background refresh failed.',
|
||||
loading: 'Loading access keys…',
|
||||
loadFailed: 'Unable to load access keys.',
|
||||
stale: 'Access key data may be stale because the background refresh failed.',
|
||||
groupsStale: 'Group filter names may be stale because Groups could not be refreshed.',
|
||||
emptyTitle: 'No AccessKeys',
|
||||
emptyDescription: 'Create an AccessKey before connecting a data-plane client.',
|
||||
caption: 'AccessKeys and their routing filters',
|
||||
scrollHint: 'Scroll horizontally to inspect every AccessKey column.',
|
||||
emptyTitle: 'No access keys',
|
||||
emptyDescription: 'Create an access key before connecting a data-plane client.',
|
||||
caption: 'Access keys and their routing filters',
|
||||
scrollHint: 'Scroll horizontally to inspect every access key column.',
|
||||
details: 'Scope and metadata',
|
||||
createdAt: 'Created',
|
||||
updatedAt: 'Updated',
|
||||
@@ -35,12 +35,12 @@ export default {
|
||||
filterProtocols: 'Protocols',
|
||||
filterModels: 'Models',
|
||||
collection: {
|
||||
loading: 'Loading AccessKeys',
|
||||
errorTitle: 'AccessKeys are unavailable',
|
||||
loading: 'Loading access keys',
|
||||
errorTitle: 'Access keys are unavailable',
|
||||
errorDescription: 'Check the connection or service status, then try again.',
|
||||
summary: {
|
||||
region: 'AccessKey status overview',
|
||||
current: 'Current AccessKeys',
|
||||
region: 'Access key status overview',
|
||||
current: 'Current access keys',
|
||||
},
|
||||
status: {
|
||||
all: 'All',
|
||||
@@ -48,27 +48,27 @@ export default {
|
||||
disabled: 'Disabled',
|
||||
},
|
||||
filters: {
|
||||
region: 'Filter AccessKeys',
|
||||
region: 'Filter access keys',
|
||||
searchLabel: 'Search',
|
||||
searchPlaceholder: 'Name or final 4 key characters',
|
||||
clearSearch: 'Clear search',
|
||||
reset: 'Reset filters',
|
||||
},
|
||||
result: 'Showing {shown} / {total} AccessKeys',
|
||||
result: 'Showing {shown} / {total} access keys',
|
||||
neverRequested: 'No requests yet',
|
||||
noResultsTitle: 'No matching AccessKeys',
|
||||
noResultsTitle: 'No matching access keys',
|
||||
noResultsDescription: 'Try a different search or status filter.',
|
||||
tableLabel: 'AccessKey list',
|
||||
openDetailsFor: 'Open details for AccessKey “{name}”',
|
||||
tableLabel: 'Access key list',
|
||||
openDetailsFor: 'Open details for access key “{name}”',
|
||||
},
|
||||
operation: {
|
||||
indeterminate:
|
||||
'The AccessKey create outcome is unknown. Reconcile it before starting another create.',
|
||||
reconciling: 'The AccessKey was committed and runtime recovery is still in progress.',
|
||||
'The access key create outcome is unknown. Reconcile it before starting another create.',
|
||||
reconciling: 'The access key was committed and runtime recovery is still in progress.',
|
||||
editIndeterminate:
|
||||
'The update to AccessKey “{name}” has an unknown outcome. Check current metadata before editing another AccessKey.',
|
||||
'The update to access key “{name}” has an unknown outcome. Check current metadata before editing another access key.',
|
||||
editReconciling:
|
||||
'The update to AccessKey “{name}” was committed and still needs metadata reconciliation.',
|
||||
'The update to access key “{name}” was committed and still needs metadata reconciliation.',
|
||||
checkResult: 'Check result',
|
||||
},
|
||||
status: {
|
||||
@@ -77,7 +77,7 @@ export default {
|
||||
},
|
||||
columns: {
|
||||
name: 'Name',
|
||||
key: 'AccessKey',
|
||||
key: 'Access key',
|
||||
status: 'Status',
|
||||
filters: 'Filters',
|
||||
scope: 'Scope',
|
||||
@@ -88,16 +88,16 @@ export default {
|
||||
actions: {
|
||||
enable: 'Enable',
|
||||
disable: 'Disable',
|
||||
updateFailed: 'Unable to update the AccessKey status.',
|
||||
updateFailed: 'Unable to update the access key status.',
|
||||
},
|
||||
drawer: {
|
||||
createTitle: 'Create AccessKey',
|
||||
editTitle: 'Edit AccessKey',
|
||||
createTitle: 'Create access key',
|
||||
editTitle: 'Edit access key',
|
||||
createDescription: 'Permissions can be narrowed later; expanding them requires confirmation.',
|
||||
editDescription: 'Adjust the name, status, rate limit, and permission scope.',
|
||||
description:
|
||||
'Edit routing filters and the RPM limit. Plaintext is masked unless explicitly revealed.',
|
||||
close: 'Close AccessKey editor',
|
||||
close: 'Close access key editor',
|
||||
basicInformation: 'Basic information',
|
||||
basicInformationDescription:
|
||||
'The name identifies the client and is not used for authentication.',
|
||||
@@ -155,41 +155,41 @@ export default {
|
||||
allModelsAllowed: 'Currently allows every model routable by the target Groups',
|
||||
scopeExpansionWarning:
|
||||
'Changing Specified to All expands client permissions. Confirm that the current scope is intended.',
|
||||
save: 'Save AccessKey',
|
||||
save: 'Save access key',
|
||||
createKey: 'Create key',
|
||||
saveChanges: 'Save changes',
|
||||
checkResult: 'Check result',
|
||||
saveFailed: 'Unable to save the AccessKey. Your input is unchanged.',
|
||||
saveFailed: 'Unable to save the access key. Your input is unchanged.',
|
||||
editNotApplied:
|
||||
'The latest AccessKey metadata is unchanged. Review the draft and retry when ready.',
|
||||
'The latest access key metadata is unchanged. Review the draft and retry when ready.',
|
||||
editIndeterminate:
|
||||
'The update request outcome is unknown. Check current metadata; this action does not resend the update.',
|
||||
editReconciling:
|
||||
'The update was committed, but current AccessKey metadata must be checked before continuing.',
|
||||
'The update was committed, but current access key metadata must be checked before continuing.',
|
||||
saveIndeterminate:
|
||||
'The request outcome is unknown. Check the result with this same operation before retrying.',
|
||||
saveReconciling: 'The AccessKey was committed and runtime recovery is still in progress.',
|
||||
saveReconciling: 'The access key was committed and runtime recovery is still in progress.',
|
||||
scopeIncomplete: 'Select at least one value for every restricted scope.',
|
||||
groupScopeUnavailable:
|
||||
'Group scope cannot be changed until the Group catalog is available again.',
|
||||
staleGroupScopeInvalid:
|
||||
'Stale Group data can only retain or remove Groups already authorized by this AccessKey.',
|
||||
'Stale Group data can only retain or remove Groups already authorized by this access key.',
|
||||
},
|
||||
delete: {
|
||||
open: 'Delete',
|
||||
title: 'Delete this AccessKey?',
|
||||
title: 'Delete this access key?',
|
||||
description: 'Delete “{name}”. This action cannot be undone.',
|
||||
close: 'Close AccessKey deletion confirmation',
|
||||
close: 'Close access key deletion confirmation',
|
||||
lastWarning:
|
||||
'This is the last AccessKey. Deleting it leaves data-plane clients without an issued credential.',
|
||||
'This is the last access key. Deleting it leaves data-plane clients without an issued credential.',
|
||||
name: 'Name',
|
||||
key: 'AccessKey',
|
||||
key: 'Access key',
|
||||
impact:
|
||||
'After deletion, data-plane requests using this AccessKey will immediately fail authentication.',
|
||||
'After deletion, data-plane requests using this access key will immediately fail authentication.',
|
||||
typeName: 'Type {name} to confirm',
|
||||
confirm: 'Delete AccessKey',
|
||||
failed: 'Unable to delete the AccessKey.',
|
||||
deletedAnnouncement: 'Deleted AccessKey “{name}”.',
|
||||
confirm: 'Delete access key',
|
||||
failed: 'Unable to delete the access key.',
|
||||
deletedAnnouncement: 'Deleted access key “{name}”.',
|
||||
},
|
||||
},
|
||||
} as const
|
||||
@@ -78,7 +78,7 @@ export default {
|
||||
auth: {
|
||||
eyebrow: 'GPT-Load 2.0',
|
||||
headline: 'One sign-in, clearly separated access',
|
||||
lead: 'Use AUTH_KEY to manage the gateway, or an AccessKey to view its Home, models, requests, and usage. The server identifies the credential automatically',
|
||||
lead: 'Use AUTH_KEY to manage the gateway, or an access key to view its Home, models, requests, and usage. The server identifies the credential automatically',
|
||||
capabilities: {
|
||||
1: {
|
||||
title: 'Manage channel credentials centrally',
|
||||
@@ -94,9 +94,9 @@ export default {
|
||||
},
|
||||
},
|
||||
loginTitle: 'Sign in to GPT-Load',
|
||||
loginDescription: 'Enter an AUTH_KEY or AccessKey; the server will identify its access',
|
||||
loginDescription: 'Enter an AUTH_KEY or access key; the server will identify its access',
|
||||
keyLabel: 'Sign-in key',
|
||||
keyPlaceholder: 'Enter an AUTH_KEY or AccessKey',
|
||||
keyPlaceholder: 'Enter an AUTH_KEY or access key',
|
||||
reveal: 'Show sign-in key',
|
||||
conceal: 'Hide sign-in key',
|
||||
submit: 'Sign in',
|
||||
@@ -112,9 +112,9 @@ export default {
|
||||
sessionNoteSuffix: ' and cleared on sign-out or authentication failure',
|
||||
help: {
|
||||
title: 'Which key can I use?',
|
||||
accessKeyTitle: 'AccessKey',
|
||||
accessKeyTitle: 'Access key',
|
||||
accessKeyDescription:
|
||||
'Use a distributed data-plane AccessKey to view only its Home, profile, available models, request history, and usage. It cannot change any configuration',
|
||||
'Use a distributed data-plane access key to view only its Home, profile, available models, request history, and usage. It cannot change any configuration',
|
||||
environmentTitle: 'Environment variable first',
|
||||
environmentDescription:
|
||||
'If the instance was started with {key}, use the protected value from your deployment system',
|
||||
@@ -144,9 +144,9 @@ export default {
|
||||
groupDetail: 'Group details',
|
||||
menu: 'Menu and preferences',
|
||||
preferences: 'Preferences',
|
||||
accessKeyReadOnly: 'AccessKey · Read-only',
|
||||
accessKeyReadOnly: 'Access key · Read-only',
|
||||
accessKeyReadOnlyDescription:
|
||||
'Signed in with an AccessKey. Pages and data are limited to this key, and system configuration is read-only.',
|
||||
'Signed in with an access key. Pages and data are limited to this key, and system configuration is read-only.',
|
||||
language: 'Language',
|
||||
theme: 'Theme',
|
||||
localeZh: '简体中文',
|
||||
@@ -205,7 +205,7 @@ export default {
|
||||
eyebrow: 'Current sign-in identity',
|
||||
active: 'Active',
|
||||
readOnly:
|
||||
'This is an AccessKey read-only view. All data is scoped to this key, and system configuration cannot be changed.',
|
||||
'This is an access key read-only view. All data is scoped to this key, and system configuration cannot be changed.',
|
||||
rpm: 'RPM limit',
|
||||
rpmValue: '{count} RPM',
|
||||
unlimited: 'Unlimited',
|
||||
@@ -251,18 +251,18 @@ export default {
|
||||
keyCopyFailed: 'Unable to copy the access key.',
|
||||
configurationCopied: 'Configuration copied',
|
||||
configurationCopyFailed: 'Unable to copy the configuration.',
|
||||
noAccessKey: 'Create an AccessKey before connecting a client',
|
||||
createAccessKey: 'Create AccessKey',
|
||||
noAccessKey: 'Create an access key before connecting a client',
|
||||
createAccessKey: 'Create access key',
|
||||
openNextChat: 'Import in one click',
|
||||
nextChatOpened: 'Opened NextChat',
|
||||
nextChatFailed: 'Unable to open NextChat.',
|
||||
popupBlocked: 'The browser blocked the NextChat window.',
|
||||
nextChatConfirmTitle: 'Open NextChat',
|
||||
nextChatConfirmDescription:
|
||||
'Your gateway address and AccessKey will be sent to NextChat in this browser',
|
||||
'Your gateway address and access key will be sent to NextChat in this browser',
|
||||
disableFastLink:
|
||||
'Known limitation: NextChat silently ignores this setting when disableFastLink is enabled',
|
||||
protocolUnavailable: '{client} requires {protocol} for this AccessKey',
|
||||
protocolUnavailable: '{client} requires {protocol} for this access key',
|
||||
clients: {
|
||||
label: 'Client',
|
||||
nextchat: 'NextChat',
|
||||
|
||||
@@ -247,9 +247,9 @@ export default {
|
||||
cancel: 'Cancel',
|
||||
confirm: 'Delete Group permanently',
|
||||
failed: 'Unable to delete the Group.',
|
||||
inUseTitle: 'This Group is referenced by AccessKeys.',
|
||||
inUseTitle: 'This Group is referenced by access keys.',
|
||||
inUseDescription: 'Remove these explicit Group references before deleting it:',
|
||||
manageAccessKeys: 'Manage AccessKeys',
|
||||
manageAccessKeys: 'Manage access keys',
|
||||
},
|
||||
},
|
||||
tabs: {
|
||||
|
||||
@@ -209,7 +209,7 @@ export default {
|
||||
empty: 'Empty lines',
|
||||
duplicates: 'Duplicates',
|
||||
},
|
||||
accessKeyWarning: '{count} lines look like GPT-Load AccessKeys; verify before continuing',
|
||||
accessKeyWarning: '{count} lines look like GPT-Load access keys; verify before continuing',
|
||||
tooMany: 'At most 1,000 non-empty keys can be submitted',
|
||||
required: 'Enter at least one credential first',
|
||||
channelCredentialNotice:
|
||||
|
||||
@@ -60,7 +60,7 @@ export default {
|
||||
open: 'View details and pricing for upstream model {model}',
|
||||
upstreamCount: '{count} upstreams',
|
||||
protocolRestricted: 'Protocol restricted',
|
||||
protocolRestrictedHelp: 'This AccessKey can use only these protocols:\n{protocols}',
|
||||
protocolRestrictedHelp: 'This access key can use only these protocols:\n{protocols}',
|
||||
pricingIdentityHelp:
|
||||
'Pricing identity\nChannel: {channel} ({channelId})\nUpstream model: {model}',
|
||||
tierCount: '{count} tiers',
|
||||
|
||||
@@ -53,7 +53,7 @@ export default {
|
||||
groups: {
|
||||
title: 'Group health',
|
||||
description:
|
||||
'Shows current available credentials only; it does not guarantee routability for a particular AccessKey, protocol, or model.',
|
||||
'Shows current available credentials only; it does not guarantee routability for a particular access key, protocol, or model.',
|
||||
empty: 'No Groups are configured.',
|
||||
disabled: 'Disabled',
|
||||
emptyCredentials: 'No credentials',
|
||||
@@ -364,7 +364,7 @@ export default {
|
||||
inspector: {
|
||||
title: 'Route inspector',
|
||||
description:
|
||||
'Inspect candidate Groups and credentials by protocol, operation, capabilities, model, and AccessKey.',
|
||||
'Inspect candidate Groups and credentials by protocol, operation, capabilities, model, and access key.',
|
||||
boundary:
|
||||
'Select the operation and capabilities required by the real request. Read-only; no upstream request or token usage.',
|
||||
routeModes: {
|
||||
@@ -396,9 +396,9 @@ export default {
|
||||
optional: 'Optional',
|
||||
modelPlaceholder: 'Enter a client model',
|
||||
modelOptional: 'Optional for protocol-only resource requests.',
|
||||
accessKey: 'AccessKey',
|
||||
accessKey: 'Access key',
|
||||
accessKeyOption: '{name} · #{id} · {status}',
|
||||
missingAccessKeyOption: 'Missing AccessKey · #{id}',
|
||||
missingAccessKeyOption: 'Missing access key · #{id}',
|
||||
submit: 'Inspect current route',
|
||||
},
|
||||
accessKeyStatus: {
|
||||
@@ -406,16 +406,16 @@ export default {
|
||||
disabled: 'Disabled',
|
||||
},
|
||||
options: {
|
||||
loading: 'Loading AccessKey options…',
|
||||
failed: 'Unable to load AccessKey options.',
|
||||
loading: 'Loading access key options…',
|
||||
failed: 'Unable to load access key options.',
|
||||
},
|
||||
errors: {
|
||||
protocol: 'Select a valid protocol.',
|
||||
operation: 'Select an operation supported by the protocol.',
|
||||
model: 'Enter a valid model when required; resource operations do not accept one.',
|
||||
accessKey: 'Reselect an existing AccessKey.',
|
||||
accessKey: 'Reselect an existing access key.',
|
||||
missingDeepLinkAccessKey:
|
||||
'The linked AccessKey #{id} no longer exists. Reselect an AccessKey.',
|
||||
'The linked access key #{id} no longer exists. Reselect an access key.',
|
||||
summary: 'Route inspector inputs are invalid.',
|
||||
},
|
||||
request: {
|
||||
@@ -439,8 +439,8 @@ export default {
|
||||
protocol: 'Protocol',
|
||||
externalModel: 'Client model',
|
||||
modelNotSpecified: 'Not specified',
|
||||
accessKey: 'AccessKey',
|
||||
accessKeyStatus: 'AccessKey status',
|
||||
accessKey: 'Access key',
|
||||
accessKeyStatus: 'Access key status',
|
||||
candidateGroups: 'Candidate Groups',
|
||||
availableCredentials: 'Available credentials',
|
||||
reason: 'Reason',
|
||||
@@ -511,15 +511,15 @@ export default {
|
||||
},
|
||||
reasons: {
|
||||
none: 'No exclusion reason',
|
||||
access_key_disabled: 'AccessKey is disabled',
|
||||
protocol_filtered: 'AccessKey filters exclude this protocol',
|
||||
model_filtered: 'AccessKey filters exclude this model',
|
||||
model_required_by_filter: 'A model is required by the AccessKey model filter',
|
||||
access_key_disabled: 'Access key is disabled',
|
||||
protocol_filtered: 'Access key filters exclude this protocol',
|
||||
model_filtered: 'Access key filters exclude this model',
|
||||
model_required_by_filter: 'A model is required by the access key model filter',
|
||||
operation_unsupported: 'The channel does not support this protocol operation',
|
||||
native_route_required: 'This request requires a native route',
|
||||
no_route_target: 'No route target matches this model and protocol',
|
||||
group_disabled: 'Group is disabled',
|
||||
group_filtered: 'AccessKey filters exclude this Group',
|
||||
group_filtered: 'Access key filters exclude this Group',
|
||||
no_available_group: 'No candidate Group is currently routable',
|
||||
no_credentials: 'Group has no runtime credentials',
|
||||
group_weight_zero: 'Group effective weight is zero',
|
||||
@@ -550,7 +550,7 @@ export default {
|
||||
},
|
||||
options: {
|
||||
groupsFailed: 'Unable to load Group filter options. The log list is unaffected.',
|
||||
accessKeysFailed: 'Unable to load AccessKey filter options. The log list is unaffected.',
|
||||
accessKeysFailed: 'Unable to load Access key filter options. The log list is unaffected.',
|
||||
partialFailed: 'Some filter options are unavailable. Log queries remain available.',
|
||||
},
|
||||
filters: {
|
||||
@@ -574,8 +574,8 @@ export default {
|
||||
model: 'Client model',
|
||||
clientModel: 'Client model',
|
||||
upstreamModel: 'Any-attempt upstream model',
|
||||
accessKey: 'AccessKey',
|
||||
anyAccessKey: 'Any AccessKey',
|
||||
accessKey: 'Access key',
|
||||
anyAccessKey: 'Any access key',
|
||||
protocol: 'Protocol',
|
||||
anyProtocol: 'Any protocol',
|
||||
stream: 'Streaming request',
|
||||
@@ -608,7 +608,7 @@ export default {
|
||||
appliedModel: 'Client model {value}',
|
||||
appliedClientModel: 'Client model {value}',
|
||||
appliedUpstreamModel: 'Attempt upstream model {value}',
|
||||
appliedAccessKey: 'AccessKey {value}',
|
||||
appliedAccessKey: 'Access key {value}',
|
||||
appliedChannel: 'Channel {value}',
|
||||
appliedCredential: 'Credential #{value}',
|
||||
appliedStatus: 'Status {value}',
|
||||
@@ -744,17 +744,17 @@ export default {
|
||||
drawer: {
|
||||
title: 'Request log details',
|
||||
description: 'Review the final result and redacted upstream attempt chain.',
|
||||
descriptionSelfScoped: 'Review requests, results, and usage for the current AccessKey.',
|
||||
descriptionSelfScoped: 'Review requests, results, and usage for the current access key.',
|
||||
close: 'Close request log details',
|
||||
loading: 'Loading request log details…',
|
||||
loadFailed: 'Unable to load request log details.',
|
||||
summary: 'Final result',
|
||||
summary: 'Request outcome',
|
||||
requestId: 'Request ID',
|
||||
copyRequestId: 'Copy request ID',
|
||||
completedAt: 'Completed',
|
||||
status: 'Status',
|
||||
protocol: 'Protocol',
|
||||
accessKey: 'AccessKey',
|
||||
accessKey: 'Access key',
|
||||
clientModel: 'Client model',
|
||||
upstreamModel: 'Upstream model',
|
||||
modelNotSpecified: 'Not specified',
|
||||
@@ -773,9 +773,9 @@ export default {
|
||||
outputRate: 'Output rate',
|
||||
attemptCount: 'Attempts',
|
||||
request: 'Client request',
|
||||
finalExecution: 'Final execution',
|
||||
finalExecution: 'Upstream execution',
|
||||
route: 'Request and final route',
|
||||
routeIdentity: 'Final route identity',
|
||||
routeIdentity: 'Route identity',
|
||||
upstreamProtocol: 'Upstream protocol',
|
||||
affinity: 'Affinity hit',
|
||||
errorCode: 'Error code',
|
||||
@@ -805,7 +805,7 @@ export default {
|
||||
requestedModel: 'Upstream requested model',
|
||||
reportedModel: 'Upstream reported model',
|
||||
usage: {
|
||||
title: 'Usage and estimated cost',
|
||||
title: 'Usage & cost',
|
||||
description:
|
||||
'Final persisted usage fields. Cost is always an estimate and unknown values are not free.',
|
||||
finalGroup: 'Final Group',
|
||||
@@ -855,7 +855,7 @@ export default {
|
||||
completedAt: 'Completed',
|
||||
requestId: 'Request ID',
|
||||
route: 'Route',
|
||||
accessKey: 'AccessKey',
|
||||
accessKey: 'Access key',
|
||||
result: 'Final status',
|
||||
timing: 'First / total',
|
||||
actions: 'Actions',
|
||||
@@ -902,7 +902,6 @@ export default {
|
||||
formula: 'Cost calculation',
|
||||
input: 'Input',
|
||||
output: 'Output',
|
||||
schema: 'Pricing receipt version',
|
||||
identity: 'Pricing identity',
|
||||
historicalSchema1: 'Historical scope',
|
||||
historicalSchema2: 'Historical global price',
|
||||
|
||||
@@ -1,46 +1,46 @@
|
||||
export default {
|
||||
accessKeys: {
|
||||
title: 'AccessKey',
|
||||
title: 'アクセスキー',
|
||||
description: 'データプレーンクライアント向けの平文機密資格情報を発行・管理します。',
|
||||
loginNotice: {
|
||||
title: 'AccessKey でもログインできます',
|
||||
title: 'アクセスキーでもログインできます',
|
||||
description:
|
||||
'AccessKey を配布する際は、このインスタンスのログインページで入力できることも利用者に伝えてください。ログイン後は、自身のホーム、利用可能なモデル、使用量、秘匿情報を除いたリクエスト履歴だけを確認でき、設定は変更できません。',
|
||||
'アクセスキーを配布する際は、このインスタンスのログインページで入力できることも利用者に伝えてください。ログイン後は、自身のホーム、利用可能なモデル、使用量、秘匿情報を除いたリクエスト履歴だけを確認でき、設定は変更できません。',
|
||||
},
|
||||
create: 'AccessKey を作成',
|
||||
copy: 'AccessKey をコピー',
|
||||
create: 'アクセスキーを作成',
|
||||
copy: 'アクセスキーをコピー',
|
||||
toast: {
|
||||
created: 'AccessKey「{name}」を作成しました',
|
||||
updated: 'AccessKey「{name}」を更新しました',
|
||||
deleted: 'AccessKey「{name}」を削除しました',
|
||||
enabled: 'AccessKey「{name}」を有効にしました',
|
||||
disabled: 'AccessKey「{name}」を無効にしました',
|
||||
created: 'アクセスキー「{name}」を作成しました',
|
||||
updated: 'アクセスキー「{name}」を更新しました',
|
||||
deleted: 'アクセスキー「{name}」を削除しました',
|
||||
enabled: 'アクセスキー「{name}」を有効にしました',
|
||||
disabled: 'アクセスキー「{name}」を無効にしました',
|
||||
},
|
||||
loading: 'AccessKey を読み込み中…',
|
||||
loadFailed: 'AccessKey を読み込めません。',
|
||||
stale: 'バックグラウンド更新に失敗したため、AccessKey データが古い可能性があります。',
|
||||
groupsStale: 'Group の更新に失敗したため、フィルターの Group 名が古い可能性があります。',
|
||||
emptyTitle: 'AccessKey がありません',
|
||||
emptyDescription: 'データプレーンクライアントを接続する前に AccessKey を作成してください。',
|
||||
caption: 'AccessKey とルーティングフィルター',
|
||||
scrollHint: '横方向にスクロールすると AccessKey のすべての列を確認できます。',
|
||||
loading: 'アクセスキーを読み込み中…',
|
||||
loadFailed: 'アクセスキーを読み込めません。',
|
||||
stale: 'バックグラウンド更新に失敗したため、アクセスキーデータが古い可能性があります。',
|
||||
groupsStale: 'グループの更新に失敗したため、フィルターのグループ名が古い可能性があります。',
|
||||
emptyTitle: 'アクセスキーがありません',
|
||||
emptyDescription: 'データプレーンクライアントを接続する前にアクセスキーを作成してください。',
|
||||
caption: 'アクセスキーとルーティングフィルター',
|
||||
scrollHint: '横方向にスクロールするとアクセスキーのすべての列を確認できます。',
|
||||
details: 'スコープとメタデータ',
|
||||
createdAt: '作成日時',
|
||||
updatedAt: '更新日時',
|
||||
allGroups: 'すべての Group',
|
||||
allGroups: 'すべてのグループ',
|
||||
allProtocols: 'すべてのプロトコル',
|
||||
allModels: 'すべてのモデル',
|
||||
unlimited: '無制限',
|
||||
filterGroups: 'Group',
|
||||
filterGroups: 'グループ',
|
||||
filterProtocols: 'プロトコル',
|
||||
filterModels: 'モデル',
|
||||
collection: {
|
||||
loading: 'AccessKey を読み込み中',
|
||||
errorTitle: 'AccessKey を読み込めません',
|
||||
loading: 'アクセスキーを読み込み中',
|
||||
errorTitle: 'アクセスキーを読み込めません',
|
||||
errorDescription: '接続またはサービスの状態を確認してから再試行してください。',
|
||||
summary: {
|
||||
region: 'AccessKey の状態概要',
|
||||
current: '現在の AccessKey',
|
||||
region: 'アクセスキーの状態概要',
|
||||
current: '現在のアクセスキー',
|
||||
},
|
||||
status: {
|
||||
all: 'すべて',
|
||||
@@ -48,27 +48,27 @@ export default {
|
||||
disabled: '無効',
|
||||
},
|
||||
filters: {
|
||||
region: 'AccessKey を絞り込む',
|
||||
region: 'アクセスキーを絞り込む',
|
||||
searchLabel: '検索',
|
||||
searchPlaceholder: '名前またはキー末尾 4 文字',
|
||||
clearSearch: '検索をクリア',
|
||||
reset: '条件をリセット',
|
||||
},
|
||||
result: '{shown} / {total} 件の AccessKey を表示',
|
||||
result: '{shown} / {total} 件のアクセスキーを表示',
|
||||
neverRequested: 'リクエストなし',
|
||||
noResultsTitle: '一致する AccessKey がありません',
|
||||
noResultsTitle: '一致するアクセスキーがありません',
|
||||
noResultsDescription: '検索または状態フィルターを調整してください。',
|
||||
tableLabel: 'AccessKey リスト',
|
||||
openDetailsFor: 'AccessKey「{name}」の詳細を開く',
|
||||
tableLabel: 'アクセスキーリスト',
|
||||
openDetailsFor: 'アクセスキー「{name}」の詳細を開く',
|
||||
},
|
||||
operation: {
|
||||
indeterminate:
|
||||
'AccessKey の作成結果は不明です。新しい作成を始める前に、この操作の結果を確認してください。',
|
||||
reconciling: 'AccessKey は確定しましたが、ランタイムの復旧処理が続いています。',
|
||||
'アクセスキーの作成結果は不明です。新しい作成を始める前に、この操作の結果を確認してください。',
|
||||
reconciling: 'アクセスキーは確定しましたが、ランタイムの復旧処理が続いています。',
|
||||
editIndeterminate:
|
||||
'AccessKey「{name}」の更新結果は不明です。別の AccessKey を編集する前に現在のメタデータを確認してください。',
|
||||
'アクセスキー「{name}」の更新結果は不明です。別のアクセスキーを編集する前に現在のメタデータを確認してください。',
|
||||
editReconciling:
|
||||
'AccessKey「{name}」の更新は確定しましたが、現在のメタデータを確認する必要があります。',
|
||||
'アクセスキー「{name}」の更新は確定しましたが、現在のメタデータを確認する必要があります。',
|
||||
checkResult: '結果を確認',
|
||||
},
|
||||
status: {
|
||||
@@ -77,7 +77,7 @@ export default {
|
||||
},
|
||||
columns: {
|
||||
name: '名前',
|
||||
key: 'AccessKey',
|
||||
key: 'アクセスキー',
|
||||
status: '状態',
|
||||
filters: 'フィルター',
|
||||
scope: '範囲',
|
||||
@@ -88,22 +88,22 @@ export default {
|
||||
actions: {
|
||||
enable: '有効化',
|
||||
disable: '無効化',
|
||||
updateFailed: 'AccessKey の状態を更新できません。',
|
||||
updateFailed: 'アクセスキーの状態を更新できません。',
|
||||
},
|
||||
drawer: {
|
||||
createTitle: 'AccessKey を作成',
|
||||
editTitle: 'AccessKey を編集',
|
||||
createTitle: 'アクセスキーを作成',
|
||||
editTitle: 'アクセスキーを編集',
|
||||
createDescription: '権限は後から縮小できます。拡大には明示的な確認が必要です。',
|
||||
editDescription: '名前、状態、レート制限、権限範囲を調整できます。',
|
||||
description:
|
||||
'ルーティングフィルターと RPM 上限を編集します。平文は明示的に表示するまでマスクされます。',
|
||||
close: 'AccessKey エディターを閉じる',
|
||||
close: 'アクセスキーエディターを閉じる',
|
||||
basicInformation: '基本情報',
|
||||
basicInformationDescription: '名前は呼び出し元の識別用で、認証には使用されません。',
|
||||
permissionScope: '権限範囲',
|
||||
permissionScopeDescription: '同じ次元内は OR、3 つの次元間は AND で判定します。',
|
||||
scopeLogic: '権限ロジック',
|
||||
scopeLogicGroups: 'Group A または B',
|
||||
scopeLogicGroups: 'グループ A または B',
|
||||
scopeLogicProtocols: 'プロトコル A または B',
|
||||
scopeLogicModels: 'モデル A または B',
|
||||
name: '名前',
|
||||
@@ -111,8 +111,8 @@ export default {
|
||||
enabled: 'キーを有効化',
|
||||
enabledDescription: '無効にすると、新しい認証要求は直ちに拒否されます。',
|
||||
optional: '任意',
|
||||
groups: 'Group',
|
||||
groupsDescription: 'クライアントがルーティングできる Group',
|
||||
groups: 'グループ',
|
||||
groupsDescription: 'クライアントがルーティングできるグループ',
|
||||
protocols: 'プロトコル',
|
||||
protocolsDescription: '正規プロトコル機能で制限',
|
||||
models: 'モデル',
|
||||
@@ -120,26 +120,26 @@ export default {
|
||||
scopeMode: '範囲',
|
||||
scopeAll: 'すべて',
|
||||
scopeRestricted: '指定',
|
||||
unknownGroup: '不明な Group',
|
||||
groupSelectorLabel: 'Group を選択',
|
||||
addGroup: 'Group を追加',
|
||||
unknownGroup: '不明なグループ',
|
||||
groupSelectorLabel: 'グループを選択',
|
||||
addGroup: 'グループを追加',
|
||||
protocolSelectorLabel: 'プロトコルを選択',
|
||||
addProtocol: 'プロトコルを追加',
|
||||
noProtocolOptions: '選択可能なプロトコルがありません。',
|
||||
modelSelectorLabel: 'モデルを選択',
|
||||
searchGroups: 'Group を検索',
|
||||
searchGroups: 'グループを検索',
|
||||
searchGroupsPlaceholder: '名前で検索',
|
||||
searchModels: 'モデルを検索',
|
||||
searchModelsPlaceholder: 'モデル ID またはエイリアスで検索',
|
||||
noGroupOptions: '一致する Group はありません。',
|
||||
noGroupOptions: '一致するグループはありません。',
|
||||
noModelOptions: '一致するモデルはありません。',
|
||||
groupOptionsLoading: 'Group カタログを読み込み中…',
|
||||
groupOptionsLoading: 'グループカタログを読み込み中…',
|
||||
selectedCount: '{count} 件を選択',
|
||||
clearSelected: '選択を解除',
|
||||
removeSelection: '{label} を削除',
|
||||
groupProtocolMismatch: '選択した Group とプロトコルにルーティング可能な重複がありません。',
|
||||
groupProtocolMismatch: '選択したグループとプロトコルにルーティング可能な重複がありません。',
|
||||
modelRouteRisk:
|
||||
'選択したモデルは現在の Group カタログにないため、リクエストのルーティングに失敗する可能性があります。',
|
||||
'選択したモデルは現在のグループカタログにないため、リクエストのルーティングに失敗する可能性があります。',
|
||||
modelCustomUnavailable: 'カスタムまたは現在利用不可',
|
||||
emptyMeansAll: '未選択はすべてを意味します。',
|
||||
modelsDescription: '既知のモデルを選ぶか、有効なモデル文字列を入力できます。',
|
||||
@@ -149,43 +149,44 @@ export default {
|
||||
rpm: '1 分あたりのリクエスト数',
|
||||
rpmPlaceholder: '空欄は無制限',
|
||||
rpmDescription: '0 以上の整数を入力してください。0 は無制限です。',
|
||||
allGroupsAllowed: '現在はすべての Group へのルーティングを許可',
|
||||
allGroupsAllowed: '現在はすべてのグループへのルーティングを許可',
|
||||
allProtocolsAllowed: '現在は 4 つの正規プロトコルをすべて許可',
|
||||
allModelsAllowed: '現在は対象 Group がルーティングできるすべてのモデルを許可',
|
||||
allModelsAllowed: '現在は対象グループがルーティングできるすべてのモデルを許可',
|
||||
scopeExpansionWarning:
|
||||
'「指定」から「すべて」への変更はクライアント権限を拡大します。現在の範囲が意図どおりか確認してください。',
|
||||
save: 'AccessKey を保存',
|
||||
save: 'アクセスキーを保存',
|
||||
createKey: 'キーを作成',
|
||||
saveChanges: '変更を保存',
|
||||
checkResult: '結果を確認',
|
||||
saveFailed: 'AccessKey を保存できません。入力内容は保持されています。',
|
||||
saveFailed: 'アクセスキーを保存できません。入力内容は保持されています。',
|
||||
editNotApplied:
|
||||
'最新の AccessKey メタデータは変更されていません。下書きを確認してから再試行してください。',
|
||||
'最新のアクセスキーメタデータは変更されていません。下書きを確認してから再試行してください。',
|
||||
editIndeterminate:
|
||||
'更新リクエストの結果は不明です。現在のメタデータを確認してください。この操作で更新は再送されません。',
|
||||
editReconciling:
|
||||
'更新は確定しましたが、続行する前に現在の AccessKey メタデータを確認する必要があります。',
|
||||
'更新は確定しましたが、続行する前に現在のアクセスキーメタデータを確認する必要があります。',
|
||||
saveIndeterminate: 'リクエスト結果は不明です。再試行前に同じ操作で結果を確認してください。',
|
||||
saveReconciling: 'AccessKey は確定しましたが、ランタイムの復旧処理が続いています。',
|
||||
saveReconciling: 'アクセスキーは確定しましたが、ランタイムの復旧処理が続いています。',
|
||||
scopeIncomplete: '制限された各範囲には、1 つ以上の値を選択してください。',
|
||||
groupScopeUnavailable: 'Group カタログが再び利用可能になるまで Group 範囲は変更できません。',
|
||||
groupScopeUnavailable:
|
||||
'グループカタログが再び利用可能になるまでグループ範囲は変更できません。',
|
||||
staleGroupScopeInvalid:
|
||||
'古い Group データでは、この AccessKey が既に許可している Group の保持または削除のみ可能です。',
|
||||
'古いグループデータでは、このアクセスキーが既に許可しているグループの保持または削除のみ可能です。',
|
||||
},
|
||||
delete: {
|
||||
open: '削除',
|
||||
title: 'この AccessKey を削除しますか?',
|
||||
title: 'このアクセスキーを削除しますか?',
|
||||
description: '「{name}」を削除します。この操作は元に戻せません。',
|
||||
close: 'AccessKey の削除確認を閉じる',
|
||||
close: 'アクセスキーの削除確認を閉じる',
|
||||
lastWarning:
|
||||
'これは最後の AccessKey です。削除すると、データプレーンクライアントに発行済み資格情報がなくなります。',
|
||||
'これは最後のアクセスキーです。削除すると、データプレーンクライアントに発行済み資格情報がなくなります。',
|
||||
name: '名前',
|
||||
key: 'AccessKey',
|
||||
impact: '削除後、この AccessKey を使用するデータプレーン要求は直ちに認証に失敗します。',
|
||||
key: 'アクセスキー',
|
||||
impact: '削除後、このアクセスキーを使用するデータプレーン要求は直ちに認証に失敗します。',
|
||||
typeName: '確認のため {name} と入力',
|
||||
confirm: 'AccessKey を削除',
|
||||
failed: 'AccessKey を削除できません。',
|
||||
deletedAnnouncement: 'AccessKey「{name}」を削除しました。',
|
||||
confirm: 'アクセスキーを削除',
|
||||
failed: 'アクセスキーを削除できません。',
|
||||
deletedAnnouncement: 'アクセスキー「{name}」を削除しました。',
|
||||
},
|
||||
},
|
||||
} as const
|
||||
@@ -34,7 +34,7 @@ export default {
|
||||
stageExpired: '一時アカウントの期限が切れました。再度認証またはインポートしてください',
|
||||
stageConsumed: 'この一時アカウントは保存済みです。再度認証してください',
|
||||
stageMismatch: '一時アカウントが現在の対象と一致しません',
|
||||
duplicateAccount: 'このサブスクリプションアカウントは Group に既に存在します',
|
||||
duplicateAccount: 'このサブスクリプションアカウントはグループに既に存在します',
|
||||
reauthorizationRequired: 'このサブスクリプションアカウントは再認証が必要です',
|
||||
outcomeUnknown: '認証情報の結果を確認できません。先にアカウント状態を再読み込みしてください',
|
||||
versionConflict: '認証が別の操作で更新されました。再読み込みしてから再試行してください',
|
||||
@@ -77,11 +77,11 @@ export default {
|
||||
auth: {
|
||||
eyebrow: 'GPT-Load 2.0',
|
||||
headline: '1 つのログイン入口で、権限を明確に分離',
|
||||
lead: 'AUTH_KEY ではゲートウェイを管理し、AccessKey では自身のホーム、モデル、リクエスト、使用量だけを確認できます。サーバーが認証情報を自動判定します',
|
||||
lead: 'AUTH_KEY ではゲートウェイを管理し、アクセスキーでは自身のホーム、モデル、リクエスト、使用量だけを確認できます。サーバーが認証情報を自動判定します',
|
||||
capabilities: {
|
||||
1: {
|
||||
title: 'チャネル認証情報を一元管理',
|
||||
description: 'Group、モデル、利用可能状況をまとめて管理します',
|
||||
description: 'グループ、モデル、利用可能状況をまとめて管理します',
|
||||
},
|
||||
2: {
|
||||
title: 'ネイティブプロトコルを維持',
|
||||
@@ -93,9 +93,9 @@ export default {
|
||||
},
|
||||
},
|
||||
loginTitle: 'GPT-Load にログイン',
|
||||
loginDescription: 'AUTH_KEY または AccessKey を入力すると、サーバーが権限を自動判定します',
|
||||
loginDescription: 'AUTH_KEY またはアクセスキーを入力すると、サーバーが権限を自動判定します',
|
||||
keyLabel: 'ログインキー',
|
||||
keyPlaceholder: 'AUTH_KEY または AccessKey を入力',
|
||||
keyPlaceholder: 'AUTH_KEY またはアクセスキーを入力',
|
||||
reveal: 'ログインキーを表示',
|
||||
conceal: 'ログインキーを隠す',
|
||||
submit: 'ログイン',
|
||||
@@ -111,9 +111,9 @@ export default {
|
||||
sessionNoteSuffix: ' に保存され、ログアウトまたは認証失敗時に削除されます',
|
||||
help: {
|
||||
title: 'どのキーを使用できますか?',
|
||||
accessKeyTitle: 'AccessKey',
|
||||
accessKeyTitle: 'アクセスキー',
|
||||
accessKeyDescription:
|
||||
'配布されたデータプレーン用 AccessKey でログインすると、自身のホーム、情報、利用可能なモデル、リクエスト履歴、使用量だけを確認できます。設定は変更できません',
|
||||
'配布されたデータプレーン用アクセスキーでログインすると、自身のホーム、情報、利用可能なモデル、リクエスト履歴、使用量だけを確認できます。設定は変更できません',
|
||||
environmentTitle: '環境変数を優先',
|
||||
environmentDescription:
|
||||
'インスタンス起動時に {key} を設定した場合は、デプロイ環境で保護された値を使用してください',
|
||||
@@ -139,12 +139,12 @@ export default {
|
||||
models: 'モデル',
|
||||
settings: '設定',
|
||||
import: 'チャネル認証情報をインポート',
|
||||
groupDetail: 'Group 詳細',
|
||||
groupDetail: 'グループ詳細',
|
||||
menu: 'メニューと環境設定',
|
||||
preferences: '環境設定',
|
||||
accessKeyReadOnly: 'AccessKey · 読み取り専用',
|
||||
accessKeyReadOnly: 'アクセスキー · 読み取り専用',
|
||||
accessKeyReadOnlyDescription:
|
||||
'AccessKey でログイン中です。ページとデータはこのキーに限定され、システム設定は変更できません。',
|
||||
'アクセスキーでログイン中です。ページとデータはこのキーに限定され、システム設定は変更できません。',
|
||||
language: '言語',
|
||||
theme: 'テーマ',
|
||||
localeZh: '简体中文',
|
||||
@@ -177,7 +177,7 @@ export default {
|
||||
title: 'ホーム',
|
||||
loading: 'ホームを読み込み中…',
|
||||
baseError: 'ホームの基本情報を読み込めないため、設定状態を判断できません。',
|
||||
factGroups: '個の Group',
|
||||
factGroups: '個のグループ',
|
||||
factAvailableCredentials: '個の認証情報が利用可能',
|
||||
factModels: '個のモデル',
|
||||
updated: '更新',
|
||||
@@ -186,12 +186,12 @@ export default {
|
||||
tokens: '{count} tokens',
|
||||
welcomeTitle: 'GPT-Load へようこそ',
|
||||
importCredentials: 'チャネル認証情報をインポート',
|
||||
welcomeDescription: 'チャネルを選び、対応する API キーをインポートして Group を作成します',
|
||||
welcomeDescription: 'チャネルを選び、対応する API キーをインポートしてグループを作成します',
|
||||
welcomeGuideTitle: '初回接続を 3 ステップで完了',
|
||||
welcomeEstimatedTime: '所要 1~2 分',
|
||||
welcomeStep1Title: 'チャネルを選択',
|
||||
welcomeStep1Description: '組み込みの公式チャネルと互換チャネルを名前で検索できます',
|
||||
welcomeStep2Title: 'Group 情報を確認',
|
||||
welcomeStep2Title: 'グループ情報を確認',
|
||||
welcomeStep2Description: 'モデルは任意で、互換チャネルのみベース URL の入力が必要です',
|
||||
welcomeStep3Title: '認証情報を 1 つ以上インポート',
|
||||
welcomeStep3Description:
|
||||
@@ -202,14 +202,14 @@ export default {
|
||||
eyebrow: '現在のログイン情報',
|
||||
active: '有効',
|
||||
readOnly:
|
||||
'AccessKey の読み取り専用ビューです。すべてのデータはこのキーに限定され、システム設定は変更できません。',
|
||||
'アクセスキーの読み取り専用ビューです。すべてのデータはこのキーに限定され、システム設定は変更できません。',
|
||||
rpm: 'RPM 制限',
|
||||
rpmValue: '{count} RPM',
|
||||
unlimited: '無制限',
|
||||
protocols: '利用可能なプロトコル',
|
||||
allProtocols: 'すべてのプロトコル',
|
||||
groups: 'Group 範囲',
|
||||
allGroups: 'すべての Group',
|
||||
groups: 'グループ範囲',
|
||||
allGroups: 'すべてのグループ',
|
||||
models: 'モデル範囲',
|
||||
allModels: 'すべてのモデル',
|
||||
lastRequest: '直近のリクエスト',
|
||||
|
||||
@@ -2,14 +2,14 @@ export default {
|
||||
groups: {
|
||||
title: 'グループ',
|
||||
collection: {
|
||||
loading: 'Group を読み込み中',
|
||||
errorTitle: 'Group を一時的に読み込めません',
|
||||
loading: 'グループを読み込み中',
|
||||
errorTitle: 'グループを一時的に読み込めません',
|
||||
errorDescription: 'ネットワーク接続またはサービス状態を確認して再試行してください',
|
||||
retry: '再読み込み',
|
||||
stale: '最新の更新に失敗したため、前回取得したデータを表示しています',
|
||||
summary: {
|
||||
region: 'Group ステータス概要',
|
||||
current: '現在の Group',
|
||||
region: 'グループステータス概要',
|
||||
current: '現在のグループ',
|
||||
},
|
||||
status: {
|
||||
all: 'すべて',
|
||||
@@ -18,7 +18,7 @@ export default {
|
||||
disabled: '無効',
|
||||
},
|
||||
filters: {
|
||||
region: 'Group を絞り込む',
|
||||
region: 'グループを絞り込む',
|
||||
searchLabel: '検索',
|
||||
searchPlaceholder: '名前またはチャネル',
|
||||
clearSearch: '検索をクリア',
|
||||
@@ -31,15 +31,15 @@ export default {
|
||||
credentials: '認証情報数',
|
||||
created: '作成日の新しい順',
|
||||
},
|
||||
result: '{shown} / {total} 件の Group を表示',
|
||||
emptyTitle: '最初のチャネル Group を作成',
|
||||
result: '{shown} / {total} 件のグループを表示',
|
||||
emptyTitle: '最初のチャネルグループを作成',
|
||||
emptyDescription: 'チャネルを選択して API キーをインポートすると利用を開始できます',
|
||||
importCredentials: 'チャネル認証情報をインポート',
|
||||
noResultsTitle: '条件に一致する Group がありません',
|
||||
noResultsTitle: '条件に一致するグループがありません',
|
||||
noResultsDescription: '検索内容またはステータス条件を変更して再試行してください',
|
||||
tableLabel: 'Group 一覧',
|
||||
tableLabel: 'グループ一覧',
|
||||
columns: {
|
||||
group: 'Group',
|
||||
group: 'グループ',
|
||||
status: 'ステータス',
|
||||
channel: 'チャネル',
|
||||
models: 'モデル数',
|
||||
@@ -57,11 +57,11 @@ export default {
|
||||
},
|
||||
},
|
||||
group: {
|
||||
invalidTitle: 'Group アドレスが無効です',
|
||||
invalidDescription: 'Group ID は正の安全な整数である必要があります。',
|
||||
loading: 'Group 詳細を読み込み中…',
|
||||
loadFailed: 'Group 詳細を読み込めません。',
|
||||
stale: 'バックグラウンド更新に失敗したため、Group 詳細が古い可能性があります。',
|
||||
invalidTitle: 'グループアドレスが無効です',
|
||||
invalidDescription: 'グループ ID は正の安全な整数である必要があります。',
|
||||
loading: 'グループ詳細を読み込み中…',
|
||||
loadFailed: 'グループ詳細を読み込めません。',
|
||||
stale: 'バックグラウンド更新に失敗したため、グループ詳細が古い可能性があります。',
|
||||
backToGroups: 'グループ一覧に戻る',
|
||||
importCredentials: 'チャネル認証情報をインポート',
|
||||
copyUpstreamUrl: 'アップストリームアドレス {url} をコピー',
|
||||
@@ -89,7 +89,7 @@ export default {
|
||||
searchClear: '検索をクリア',
|
||||
total: '{count} 件のモデル',
|
||||
summary: '{count} 件のモデル · 価格未設定 {pending} 件',
|
||||
tableLabel: '現在の Group モデル',
|
||||
tableLabel: '現在のグループモデル',
|
||||
id: 'モデル ID',
|
||||
alias: 'クライアント別名',
|
||||
pricing: '価格設定',
|
||||
@@ -135,25 +135,25 @@ export default {
|
||||
empty: '追加できるモデルが返されませんでした',
|
||||
confirm: '現在の一覧に追加',
|
||||
},
|
||||
saveFailed: 'Group のモデル一覧を置き換えられません。',
|
||||
saveFailed: 'グループのモデル一覧を置き換えられません。',
|
||||
noActiveCredential: {
|
||||
title: '検出に使用できる有効なチャネル認証情報がありません。',
|
||||
},
|
||||
emptyConfirm: {
|
||||
title: 'すべてのモデルを削除しますか?',
|
||||
description:
|
||||
'空の一覧を保存すると、この Group のモデルルーティングが無効になり、保存済み一覧全体が置き換えられます。',
|
||||
'空の一覧を保存すると、このグループのモデルルーティングが無効になり、保存済み一覧全体が置き換えられます。',
|
||||
close: '空モデルの確認を閉じる',
|
||||
cancel: 'キャンセル',
|
||||
confirm: '空の一覧に置き換える',
|
||||
},
|
||||
},
|
||||
settings: {
|
||||
title: 'Group 設定',
|
||||
description: 'Group の識別情報、ルーティング項目、疎なランタイム上書きを編集します。',
|
||||
title: 'グループ設定',
|
||||
description: 'グループの識別情報、ルーティング項目、疎なランタイム上書きを編集します。',
|
||||
save: '設定を保存',
|
||||
loading: 'Group 設定を読み込み中',
|
||||
loadFailed: 'Group 設定を読み込めません',
|
||||
loading: 'グループ設定を読み込み中',
|
||||
loadFailed: 'グループ設定を読み込めません',
|
||||
saved: '設定を保存しました',
|
||||
unsaved: '未保存の変更があります',
|
||||
saving: '保存中',
|
||||
@@ -179,39 +179,39 @@ export default {
|
||||
description: 'ルールは既定で折りたたまれ、編集すると HeaderRules 全体を置き換えます',
|
||||
},
|
||||
dangerDescription: '元に戻せない操作を通常の設定から明確に分離します。',
|
||||
saveFailed: 'Group 設定を更新できませんでした。',
|
||||
saveFailed: 'グループ設定を更新できませんでした。',
|
||||
base: {
|
||||
description: '名前、チャネルパラメータ、有効状態は Group 全体に適用されます。',
|
||||
description: '名前、チャネルパラメータ、有効状態はグループ全体に適用されます。',
|
||||
channel: 'チャネル',
|
||||
channelHelp: 'チャネルは Group 作成時に確定し、後から変更できません。',
|
||||
channelHelp: 'チャネルはグループ作成時に確定し、後から変更できません。',
|
||||
channelCatalogUnavailable:
|
||||
'チャネル一覧を読み込めないため、チャネルパラメータをロックしました。他の設定は編集できます。',
|
||||
name: '名前',
|
||||
nameError: 'Group 名を入力してください。',
|
||||
nameError: 'グループ名を入力してください。',
|
||||
upstreamUrl: 'アップストリーム URL',
|
||||
upstreamUrlError: '有効な HTTP または HTTPS の Base URL を入力してください。',
|
||||
urlWarning: 'Base URL を変更すると、今後の Group リクエストの送信先が変わります。',
|
||||
urlWarning: 'Base URL を変更すると、今後のグループリクエストの送信先が変わります。',
|
||||
customUrl: 'カスタム上流 URL',
|
||||
customUrlHelp: '既定ではチャネル設定または SDK 公式アドレスを使用します。',
|
||||
paramRequired: '{field} を入力してください。',
|
||||
validationModel: '検証モデル(任意)',
|
||||
weight: 'Group 手動ウェイト',
|
||||
weight: 'グループ手動ウェイト',
|
||||
auto: '自動',
|
||||
manual: '手動',
|
||||
weightError: '1~100 の整数を入力してください',
|
||||
enabled: 'Group を有効化',
|
||||
enabledHelp: '無効にすると新しいリクエストではこの Group を選択しません',
|
||||
enabled: 'グループを有効化',
|
||||
enabledHelp: '無効にすると新しいリクエストではこのグループを選択しません',
|
||||
},
|
||||
runtime: {
|
||||
title: 'ランタイム上書き',
|
||||
description: '継承値はグローバル設定に従い、Group 上書きは疎なまま保持されます。',
|
||||
description: '継承値はグローバル設定に従い、グループ上書きは疎なまま保持されます。',
|
||||
first_byte_timeout: 'ネイティブ応答 / ストリーム初回イベントのタイムアウト',
|
||||
request_timeout: 'リクエストタイムアウト',
|
||||
stream_idle_timeout: 'ストリームアイドルタイムアウト',
|
||||
effective: '{value} 秒',
|
||||
currentValue: '現在の有効値',
|
||||
seconds: '秒',
|
||||
override: 'この Group で上書き',
|
||||
override: 'このグループで上書き',
|
||||
inherited: 'グローバル設定を継承',
|
||||
useOverride: '上書きに変更',
|
||||
useInherited: '継承に変更',
|
||||
@@ -226,34 +226,34 @@ export default {
|
||||
'通常の HeaderRules は Secret ストレージではありません。認証情報には',
|
||||
headerStorageNoticeEnd: 'を使用してください。',
|
||||
headerReplacementWarning:
|
||||
'この Group 上書きはグローバル HeaderRules 全体を置き換えます。今後のグローバル変更はマージされません。',
|
||||
'このグループ上書きはグローバル HeaderRules 全体を置き換えます。今後のグローバル変更はマージされません。',
|
||||
inject_usage_options: '使用量オプションを注入',
|
||||
injectUsageHelp: 'この上書きは openai-completions でのみ利用できます',
|
||||
affinity_enabled: 'リクエストアフィニティ',
|
||||
affinityHelp:
|
||||
'通常の重み、スケジューリング、再試行を変えず、この Group がアフィニティ対象を学習または再利用するかを制御します。',
|
||||
'通常の重み、スケジューリング、再試行を変えず、このグループがアフィニティ対象を学習または再利用するかを制御します。',
|
||||
affinityInherit: 'グローバルを継承',
|
||||
affinityEnable: '有効',
|
||||
affinityDisable: '無効',
|
||||
},
|
||||
delete: {
|
||||
sectionDescription:
|
||||
'Group を削除するとすべてのチャネル認証情報も削除され、元に戻せません。',
|
||||
open: 'Group を削除',
|
||||
title: 'この Group を削除しますか?',
|
||||
description: '完全に削除するには Group 名「{name}」を正確に入力してください。',
|
||||
close: 'Group 削除の確認を閉じる',
|
||||
'グループを削除するとすべてのチャネル認証情報も削除され、元に戻せません。',
|
||||
open: 'グループを削除',
|
||||
title: 'このグループを削除しますか?',
|
||||
description: '完全に削除するにはグループ名「{name}」を正確に入力してください。',
|
||||
close: 'グループ削除の確認を閉じる',
|
||||
typeName: '確認のため {name} と入力',
|
||||
cancel: 'キャンセル',
|
||||
confirm: 'Group を完全に削除',
|
||||
failed: 'Group を削除できませんでした。',
|
||||
inUseTitle: 'この Group は AccessKey から参照されています。',
|
||||
inUseDescription: '削除する前に次の明示的な Group 参照を外してください:',
|
||||
manageAccessKeys: 'AccessKey を管理',
|
||||
confirm: 'グループを完全に削除',
|
||||
failed: 'グループを削除できませんでした。',
|
||||
inUseTitle: 'このグループはアクセスキーから参照されています。',
|
||||
inUseDescription: '削除する前に次の明示的なグループ参照を外してください:',
|
||||
manageAccessKeys: 'アクセスキーを管理',
|
||||
},
|
||||
},
|
||||
tabs: {
|
||||
label: 'Group 詳細セクション',
|
||||
label: 'グループ詳細セクション',
|
||||
credentials: '認証情報',
|
||||
models: 'モデルとエイリアス',
|
||||
settings: '設定',
|
||||
@@ -340,7 +340,7 @@ export default {
|
||||
confirmDelete: '認証情報を削除',
|
||||
closeDialog: '削除確認を閉じる',
|
||||
deleteTitle: 'チャネル認証情報を削除しますか?',
|
||||
deleteDescription: '{mask} をこの Group から削除します。この操作は元に戻せません',
|
||||
deleteDescription: '{mask} をこのグループから削除します。この操作は元に戻せません',
|
||||
columns: {
|
||||
credential: 'キー',
|
||||
status: 'ステータス',
|
||||
|
||||
@@ -16,8 +16,8 @@ export default {
|
||||
},
|
||||
mode: {
|
||||
label: 'インポート先',
|
||||
new: '新しい Group',
|
||||
existing: '既存 Group',
|
||||
new: '新しいグループ',
|
||||
existing: '既存グループ',
|
||||
},
|
||||
steps: {
|
||||
channel: {
|
||||
@@ -46,12 +46,12 @@ export default {
|
||||
},
|
||||
create: {
|
||||
incomplete: '必須項目を完了してください',
|
||||
creating: 'Group を作成中',
|
||||
creating: 'グループを作成中',
|
||||
creatingDescription: '認証情報と設定を安全に保存しています',
|
||||
checking: '前回の操作を確認中',
|
||||
checkingDescription: '上の状態操作から結果を確認してください',
|
||||
readyDescription: '「{name}」を作成します。名前は後から変更できます',
|
||||
unnamedGroup: '名前未設定の Group',
|
||||
unnamedGroup: '名前未設定のグループ',
|
||||
},
|
||||
},
|
||||
operation: {
|
||||
@@ -66,30 +66,30 @@ export default {
|
||||
abandon: 'この操作を放棄',
|
||||
},
|
||||
existing: {
|
||||
title: '対象 Group',
|
||||
title: '対象グループ',
|
||||
description:
|
||||
'この入口は API キー Group への認証情報追加専用です。モデルや設定は変更しません。サブスクリプションは Codex Group の認証情報ページから接続してください。',
|
||||
groupsLoading: 'Group を読み込み中…',
|
||||
groupsFailed: 'Group を読み込めません',
|
||||
groupsStale: 'Group の更新に失敗したため、キャッシュ結果を表示しています',
|
||||
groupsEmpty: '選択できる Group がありません',
|
||||
groupLabel: 'Group',
|
||||
groupPlaceholder: 'Group を選択',
|
||||
'この入口は API キーグループへの認証情報追加専用です。モデルや設定は変更しません。サブスクリプションは Codex グループの認証情報ページから接続してください。',
|
||||
groupsLoading: 'グループを読み込み中…',
|
||||
groupsFailed: 'グループを読み込めません',
|
||||
groupsStale: 'グループの更新に失敗したため、キャッシュ結果を表示しています',
|
||||
groupsEmpty: '選択できるグループがありません',
|
||||
groupLabel: 'グループ',
|
||||
groupPlaceholder: 'グループを選択',
|
||||
groupOption: '#{id} · {name}',
|
||||
groupCount: 'Group {count} 件',
|
||||
groupCount: 'グループ {count} 件',
|
||||
groupMeta: '#{id} · 公開モデル {models} 件',
|
||||
groupUnchanged: 'その他の設定は変更しません',
|
||||
groupNotFound: 'Group #{id} が見つかりません',
|
||||
groupNotFound: 'グループ #{id} が見つかりません',
|
||||
actionSummary: '{name} に認証情報を追加',
|
||||
actionSelectTarget: '先に追加先 Group を選択してください',
|
||||
actionSelectTarget: '先に追加先グループを選択してください',
|
||||
actionHelp: 'モデルや設定を変更せず、チャネル認証情報のみを追加します',
|
||||
credentialStorageNotice: '送信後、サーバーが実際の追加数と既存の重複数を返します',
|
||||
batchDuplicates: 'このバッチ内の重複',
|
||||
submit: '認証情報を追加',
|
||||
importFailed: '選択した Group に認証情報をインポートできません',
|
||||
importFailed: '選択したグループに認証情報をインポートできません',
|
||||
},
|
||||
connection: {
|
||||
name: 'Group 名',
|
||||
name: 'グループ名',
|
||||
namePlaceholder: '空欄の場合はチャネルの既定名を使用します',
|
||||
url: 'アップストリームのベース URL',
|
||||
urlDescription: 'アップストリームサービスが要求する Base URL を入力してください',
|
||||
@@ -205,7 +205,7 @@ export default {
|
||||
empty: '空行',
|
||||
duplicates: '重複',
|
||||
},
|
||||
accessKeyWarning: '{count} 行が GPT-Load AccessKey のようです — 続行前に確認してください',
|
||||
accessKeyWarning: '{count} 行が GPT-Load アクセスキーのようです — 続行前に確認してください',
|
||||
tooMany: '空でないキーは最大 1,000 件です',
|
||||
required: '先に認証情報を 1 件以上入力してください',
|
||||
channelCredentialNotice:
|
||||
@@ -227,7 +227,7 @@ export default {
|
||||
title: 'モデルとエイリアス',
|
||||
description: 'モデルは常に任意です — 有効なエイリアスが公開モデル名になります',
|
||||
descriptionSubscription:
|
||||
'空のままでも Group を作成できます。アカウントを接続すると上流のモデル一覧を取得できます。',
|
||||
'空のままでもグループを作成できます。アカウントを接続すると上流のモデル一覧を取得できます。',
|
||||
tableLabel: '公開予定モデル',
|
||||
id: 'モデル ID',
|
||||
alias: '公開モデル名',
|
||||
@@ -240,7 +240,7 @@ export default {
|
||||
aliasPlaceholder: '公開モデル名を入力',
|
||||
aliasRequired: 'エイリアスを有効にした場合は公開モデル名が必要です',
|
||||
removeFor: 'モデル {id} を削除',
|
||||
empty: 'モデルは未追加です — このまま Group を作成できます',
|
||||
empty: 'モデルは未追加です — このままグループを作成できます',
|
||||
noMatches: '一致するモデルはありません',
|
||||
resolveErrors: 'モデル設定の問題を修正してください',
|
||||
conflictSummary: '公開モデル名に完全一致の重複があります',
|
||||
@@ -282,24 +282,25 @@ export default {
|
||||
},
|
||||
},
|
||||
discover: '上流モデルを取得',
|
||||
create: 'Group を作成',
|
||||
create: 'グループを作成',
|
||||
summary: '認証情報 {credentials} 件 · モデル {models} 件',
|
||||
summaryOptional: '認証情報 {credentials} 件 · モデルは任意',
|
||||
summaryAccounts: 'アカウント {accounts} 件 · モデル {models} 件',
|
||||
summaryAccountsOptional: 'アカウント {accounts} 件 · モデルは任意',
|
||||
createFailed: 'Group を作成できません',
|
||||
appendFailed: '選択した Group に認証情報をインポートできません',
|
||||
createFailed: 'グループを作成できません',
|
||||
appendFailed: '選択したグループに認証情報をインポートできません',
|
||||
conflict: {
|
||||
title: 'このチャネル接続先は既に存在します',
|
||||
titleSubscription: 'Codex の Group は既に存在します',
|
||||
description: '既存 Group に認証情報を追加するか、別の Group を作成してください',
|
||||
descriptionSubscription: '既存 Group にアカウントを追加するか、別の Group を作成してください',
|
||||
titleSubscription: 'Codex のグループは既に存在します',
|
||||
description: '既存グループに認証情報を追加するか、別のグループを作成してください',
|
||||
descriptionSubscription:
|
||||
'既存グループにアカウントを追加するか、別のグループを作成してください',
|
||||
close: 'URL 競合を閉じる',
|
||||
append: 'ここに認証情報をインポート',
|
||||
appendSubscription: 'ここにアカウントを追加',
|
||||
appendHelp: '推奨 · 現在の認証情報だけを追加し、既存の設定は変更しません',
|
||||
appendHelpSubscription: '推奨 · 現在のアカウントだけを追加し、既存の設定は変更しません',
|
||||
separate: '別の Group を作成',
|
||||
separate: '別のグループを作成',
|
||||
edit: '編集に戻る',
|
||||
},
|
||||
},
|
||||
|
||||
@@ -68,7 +68,7 @@ export default {
|
||||
failed: '価格レコードを削除できません',
|
||||
},
|
||||
errors: {
|
||||
referenced: 'この価格は {groups} Group から {entries} 件参照されています',
|
||||
referenced: 'この価格は {groups} グループから {entries} 件参照されています',
|
||||
automaticDeleteForbidden: '自動価格は削除できません。先に手動価格へ変更してください',
|
||||
},
|
||||
},
|
||||
|
||||
@@ -9,7 +9,7 @@ export default {
|
||||
result: '{total} 件中 {shown} 件のクライアントモデルを表示',
|
||||
actions: {
|
||||
sync: 'カタログと自動価格を同期',
|
||||
configureGroups: 'Group でモデルを追加',
|
||||
configureGroups: 'グループでモデルを追加',
|
||||
},
|
||||
sync: {
|
||||
succeeded: 'モデルカタログと自動価格を同期しました',
|
||||
@@ -31,14 +31,14 @@ export default {
|
||||
filters: {
|
||||
region: 'モデルを絞り込む',
|
||||
searchLabel: '検索',
|
||||
searchPlaceholder: 'クライアントモデル、上流モデル、Group',
|
||||
searchPlaceholder: 'クライアントモデル、上流モデル、グループ',
|
||||
clearSearch: '検索をクリア',
|
||||
groupStatusLabel: 'Group の状態',
|
||||
groupStatusLabel: 'グループの状態',
|
||||
pricingStatusLabel: '価格状態',
|
||||
reset: '条件をリセット',
|
||||
groupStatus: {
|
||||
enabled: '有効な Group',
|
||||
all: 'すべての Group',
|
||||
enabled: '有効なグループ',
|
||||
all: 'すべてのグループ',
|
||||
},
|
||||
pricingStatus: {
|
||||
all: 'すべての価格',
|
||||
@@ -49,9 +49,9 @@ export default {
|
||||
empty: {
|
||||
title: '表示できるモデルがありません',
|
||||
description:
|
||||
'有効な Group に設定されたモデルはありません。先に Group でモデルを追加してください。',
|
||||
'有効なグループに設定されたモデルはありません。先にグループでモデルを追加してください。',
|
||||
noResultsTitle: '条件に一致するモデルがありません',
|
||||
noResultsDescription: '検索、Group の状態、価格状態を変更して再度お試しください',
|
||||
noResultsDescription: '検索、グループの状態、価格状態を変更して再度お試しください',
|
||||
},
|
||||
tree: {
|
||||
label: 'クライアントモデルと上流価格の一覧',
|
||||
@@ -61,7 +61,7 @@ export default {
|
||||
open: '上流モデル {model} の詳細と価格を表示',
|
||||
upstreamCount: '上流 {count} 件',
|
||||
protocolRestricted: 'プロトコル制限あり',
|
||||
protocolRestrictedHelp: 'この AccessKey で利用できるプロトコル:\n{protocols}',
|
||||
protocolRestrictedHelp: 'このアクセスキーで利用できるプロトコル:\n{protocols}',
|
||||
pricingIdentityHelp: '価格識別子\nチャネル:{channel} ({channelId})\n上流モデル:{model}',
|
||||
tierCount: '{count} 段',
|
||||
noPrice: '—',
|
||||
@@ -78,20 +78,20 @@ export default {
|
||||
drawer: {
|
||||
title: '上流モデルの詳細',
|
||||
description: '関連情報を確認し、価格を編集します',
|
||||
impact: 'クライアントモデル {clients} 件 · Group {groups} 件',
|
||||
impact: 'クライアントモデル {clients} 件 · グループ {groups} 件',
|
||||
specs: '仕様',
|
||||
loading: '読み込み中…',
|
||||
loadFailed: '上流モデルの詳細を読み込めません',
|
||||
sharedImpact:
|
||||
'同じ価格識別子は {references} 件のモデル設定から参照され、クライアントモデル {clients} 件、Group {groups} 件に影響します。保存内容はすべてに反映されます。',
|
||||
'同じ価格識別子は {references} 件のモデル設定から参照され、クライアントモデル {clients} 件、グループ {groups} 件に影響します。保存内容はすべてに反映されます。',
|
||||
relationships: '関連',
|
||||
relationshipsHelp: '{count} 件の参照をクライアントモデルと Group ごとに表示します',
|
||||
relationshipsHelp: '{count} 件の参照をクライアントモデルとグループごとに表示します',
|
||||
pricingChannel: '価格チャネル',
|
||||
upstreamModel: '上流モデル',
|
||||
standardPrices: '標準料金',
|
||||
fastPrices: 'Fast モード料金',
|
||||
fastPricesSource: 'Models.dev · 読み取り専用',
|
||||
group: 'Group',
|
||||
group: 'グループ',
|
||||
aliasMapping: 'クライアントモデル {client} から上流モデル {upstream} へのマッピング',
|
||||
directMapping: 'クライアントモデル {model} は同名の上流モデルを直接使用',
|
||||
updatedAt: '更新',
|
||||
|
||||
@@ -51,19 +51,19 @@ export default {
|
||||
disabled: '無効 {disabled}',
|
||||
},
|
||||
groups: {
|
||||
title: 'Group ヘルス',
|
||||
title: 'グループヘルス',
|
||||
description:
|
||||
'現在利用可能な認証情報だけを示し、特定の AccessKey、プロトコル、モデルのルート可否は保証しません。',
|
||||
empty: 'Group がありません。',
|
||||
'現在利用可能な認証情報だけを示し、特定のアクセスキー、プロトコル、モデルのルート可否は保証しません。',
|
||||
empty: 'グループがありません。',
|
||||
disabled: '無効',
|
||||
emptyCredentials: '認証情報なし',
|
||||
unavailable: '利用不可',
|
||||
attention: '要確認',
|
||||
limited: '容量制限',
|
||||
available: '利用可能',
|
||||
tableLabel: 'Group ヘルス一覧',
|
||||
tableLabel: 'グループヘルス一覧',
|
||||
columns: {
|
||||
group: 'Group',
|
||||
group: 'グループ',
|
||||
status: 'スケジュール',
|
||||
credentialHealth: '認証情報の構成',
|
||||
exceptions: '現在の例外',
|
||||
@@ -75,9 +75,9 @@ export default {
|
||||
blacklistedCount: 'ブラックリスト {count}',
|
||||
none: 'なし',
|
||||
viewLogsFor: '{name} のリクエストログを表示',
|
||||
viewGroup: 'Group {name} を表示',
|
||||
showAll: '全 {count} Group を表示',
|
||||
collapse: 'Group を折りたたむ',
|
||||
viewGroup: 'グループ {name} を表示',
|
||||
showAll: '全 {count} グループを表示',
|
||||
collapse: 'グループを折りたたむ',
|
||||
},
|
||||
problems: {
|
||||
title: '確認が必要な認証情報',
|
||||
@@ -90,7 +90,7 @@ export default {
|
||||
emptyHint: '問題が発生した認証情報はスケジュールへの影響順にここへ表示されます。',
|
||||
inactiveTitle: 'ランタイム認証情報の例外はありません',
|
||||
inactiveDescription:
|
||||
'クールダウン中またはブラックリストの認証情報はありません。利用可否の設定は概要と Group ヘルスで確認してください。',
|
||||
'クールダウン中またはブラックリストの認証情報はありません。利用可否の設定は概要とグループヘルスで確認してください。',
|
||||
noneForStatus: 'この状態の認証情報はありません。',
|
||||
cooldown: 'クールダウン中',
|
||||
blacklisted: 'ブラックリスト',
|
||||
@@ -98,7 +98,7 @@ export default {
|
||||
credentialMeta: '{group}',
|
||||
tableLabel: '確認が必要な認証情報一覧',
|
||||
columns: {
|
||||
identity: '認証情報 / Group',
|
||||
identity: '認証情報 / グループ',
|
||||
status: '状態',
|
||||
window: '現在の期間',
|
||||
recovery: '回復',
|
||||
@@ -115,7 +115,7 @@ export default {
|
||||
configurationRecovery: '検証設定が必要',
|
||||
configurationHint: '自動回復には検証モデルの設定が必要です',
|
||||
viewLogs: '認証情報 {credential} のリクエストログを表示',
|
||||
viewGroup: 'Group {group} を表示',
|
||||
viewGroup: 'グループ {group} を表示',
|
||||
},
|
||||
details: {
|
||||
failureCount: '累計失敗',
|
||||
@@ -183,15 +183,15 @@ export default {
|
||||
stale: 'バックグラウンド更新に失敗したため、使用量データが古い可能性があります。',
|
||||
options: {
|
||||
groupsFailed:
|
||||
'Group 名を読み込めません。代わりに正の Group ID を入力できます。使用量レポートには影響しません。',
|
||||
'グループ名を読み込めません。代わりに正のグループ ID を入力できます。使用量レポートには影響しません。',
|
||||
partialFailed:
|
||||
'一部の Group またはチャネル候補を読み込めません。使用量クエリは引き続き利用できます。',
|
||||
'一部のグループまたはチャネル候補を読み込めません。使用量クエリは引き続き利用できます。',
|
||||
},
|
||||
filters: {
|
||||
label: '使用量レポートのフィルター',
|
||||
title: '使用量とコストを絞り込む',
|
||||
description:
|
||||
'Group、チャネル、クレデンシャル、アップストリームモデルで現在の集計範囲を絞り込みます。',
|
||||
'グループ、チャネル、クレデンシャル、アップストリームモデルで現在の集計範囲を絞り込みます。',
|
||||
close: '使用量とコストのフィルターを閉じる',
|
||||
button: 'フィルター',
|
||||
range: '期間',
|
||||
@@ -205,10 +205,10 @@ export default {
|
||||
'15d': '15 日',
|
||||
'30d': '30 日',
|
||||
},
|
||||
group: 'Group',
|
||||
groupHelp: '任意の完全一致 Group スコープです。',
|
||||
groupIdHelp: 'Group 名の読み込みに失敗しました。正の Group ID を入力できます。',
|
||||
anyGroup: 'すべての Group',
|
||||
group: 'グループ',
|
||||
groupHelp: '任意の完全一致グループスコープです。',
|
||||
groupIdHelp: 'グループ名の読み込みに失敗しました。正のグループ ID を入力できます。',
|
||||
anyGroup: 'すべてのグループ',
|
||||
channel: 'チャネル',
|
||||
anyChannel: 'すべてのチャネル',
|
||||
credential: 'クレデンシャル ID',
|
||||
@@ -226,7 +226,7 @@ export default {
|
||||
refreshedAt: '最終更新時刻',
|
||||
},
|
||||
errors: {
|
||||
positiveId: '有効な正の Group ID を入力してください。',
|
||||
positiveId: '有効な正のグループ ID を入力してください。',
|
||||
channelId: '有効なチャネル ID を選択または入力してください。',
|
||||
credentialId: '有効な正のクレデンシャル ID を入力してください。',
|
||||
model: 'アップストリームモデルの前後に空白や制御文字を含めることはできません。',
|
||||
@@ -239,7 +239,7 @@ export default {
|
||||
empty: {
|
||||
title: '一致する使用量データがありません',
|
||||
description:
|
||||
'期間を変更するか、Group、チャネル、クレデンシャル、アップストリームモデルのフィルターをリセットしてください。',
|
||||
'期間を変更するか、グループ、チャネル、クレデンシャル、アップストリームモデルのフィルターをリセットしてください。',
|
||||
},
|
||||
kpi: {
|
||||
title: '使用量サマリー',
|
||||
@@ -364,7 +364,7 @@ export default {
|
||||
inspector: {
|
||||
title: 'ルート検査',
|
||||
description:
|
||||
'プロトコル、操作、必要機能、モデル、AccessKey から候補 Group と認証情報を確認します。',
|
||||
'プロトコル、操作、必要機能、モデル、アクセスキーから候補グループと認証情報を確認します。',
|
||||
boundary:
|
||||
'実際のリクエストに必要な操作と機能を選択してください。読み取り専用で、上流送信や Token 消費はありません。',
|
||||
routeModes: {
|
||||
@@ -396,9 +396,9 @@ export default {
|
||||
optional: '任意',
|
||||
modelPlaceholder: 'クライアントモデルを入力',
|
||||
modelOptional: 'プロトコルのみで扱うリソースリクエストでは省略できます。',
|
||||
accessKey: 'AccessKey',
|
||||
accessKey: 'アクセスキー',
|
||||
accessKeyOption: '{name} · #{id} · {status}',
|
||||
missingAccessKeyOption: '存在しない AccessKey · #{id}',
|
||||
missingAccessKeyOption: '存在しないアクセスキー · #{id}',
|
||||
submit: '現在のルートを検査',
|
||||
},
|
||||
accessKeyStatus: {
|
||||
@@ -406,16 +406,16 @@ export default {
|
||||
disabled: '無効',
|
||||
},
|
||||
options: {
|
||||
loading: 'AccessKey の選択肢を読み込み中…',
|
||||
failed: 'AccessKey の選択肢を読み込めません。',
|
||||
loading: 'アクセスキーの選択肢を読み込み中…',
|
||||
failed: 'アクセスキーの選択肢を読み込めません。',
|
||||
},
|
||||
errors: {
|
||||
protocol: '有効なプロトコルを選択してください。',
|
||||
operation: 'プロトコルに対応する操作を選択してください。',
|
||||
model: '必要な操作では有効なモデルを入力し、リソース操作では空にしてください。',
|
||||
accessKey: '存在する AccessKey を選び直してください。',
|
||||
accessKey: '存在するアクセスキーを選び直してください。',
|
||||
missingDeepLinkAccessKey:
|
||||
'リンクで指定された AccessKey #{id} は存在しません。選び直してください。',
|
||||
'リンクで指定されたアクセスキー #{id} は存在しません。選び直してください。',
|
||||
summary: 'ルート検査の入力が無効です。',
|
||||
},
|
||||
request: {
|
||||
@@ -425,7 +425,7 @@ export default {
|
||||
empty: {
|
||||
title: '条件を入力して現在のルートを検査',
|
||||
description:
|
||||
'現在の設定スナップショットにある候補 Group、認証情報の状態、除外理由を説明します。',
|
||||
'現在の設定スナップショットにある候補グループ、認証情報の状態、除外理由を説明します。',
|
||||
},
|
||||
result: {
|
||||
title: '現在のランタイム観測',
|
||||
@@ -439,22 +439,22 @@ export default {
|
||||
protocol: 'プロトコル',
|
||||
externalModel: 'クライアントモデル',
|
||||
modelNotSpecified: '未指定',
|
||||
accessKey: 'AccessKey',
|
||||
accessKeyStatus: 'AccessKey の状態',
|
||||
candidateGroups: '候補 Group',
|
||||
accessKey: 'アクセスキー',
|
||||
accessKeyStatus: 'アクセスキーの状態',
|
||||
candidateGroups: '候補グループ',
|
||||
availableCredentials: '現在利用可能な認証情報',
|
||||
reason: '理由',
|
||||
inputChanged: '入力が変更されました。以下は最後に送信した入力に対する観測結果です。',
|
||||
stale: '最新の検査に失敗しました。以下は表示された観測時刻の古い結果です。',
|
||||
},
|
||||
groups: {
|
||||
title: '候補 Group',
|
||||
title: '候補グループ',
|
||||
description:
|
||||
'ネイティブルートを優先し、シェアは現在競合しているルート階層内だけで計算します。',
|
||||
count: '{count} 件',
|
||||
tableLabel: '候補 Group のルート説明',
|
||||
tableLabel: '候補グループのルート説明',
|
||||
completeEmpty:
|
||||
'候補 Group は返されませんでした。これは空状態ではなく、この入力に対する完全な現在ランタイムの説明です。',
|
||||
'候補グループは返されませんでした。これは空状態ではなく、この入力に対する完全な現在ランタイムの説明です。',
|
||||
included: '候補に含まれる',
|
||||
excluded: '候補から除外',
|
||||
standby: '待機階層',
|
||||
@@ -462,9 +462,9 @@ export default {
|
||||
availableTotal: '利用可能 / 合計',
|
||||
currentTotal: '現在の合計',
|
||||
shareLabel: '{name} の有効ウェイト比率は {share}',
|
||||
viewGroup: 'Group を表示',
|
||||
viewGroup: 'グループを表示',
|
||||
columns: {
|
||||
group: 'Group',
|
||||
group: 'グループ',
|
||||
status: '状態',
|
||||
credentials: '認証情報',
|
||||
weight: '有効ウェイト',
|
||||
@@ -479,7 +479,7 @@ export default {
|
||||
unavailable: '利用不可',
|
||||
summary: '利用可能 {available} · 利用不可 {unavailable}',
|
||||
tableLabel: '{name} の認証情報ルート説明',
|
||||
noneReturned: 'この Group には認証情報候補が返されませんでした。',
|
||||
noneReturned: 'このグループには認証情報候補が返されませんでした。',
|
||||
cooldownUntil: 'クールダウン期限',
|
||||
none: 'なし',
|
||||
columns: {
|
||||
@@ -497,30 +497,30 @@ export default {
|
||||
effective: '生の有効ウェイト',
|
||||
null: 'null',
|
||||
none: '—',
|
||||
groupManual: 'Group 手動ウェイト {value}',
|
||||
groupManual: 'グループ手動ウェイト {value}',
|
||||
},
|
||||
excluded: {
|
||||
title: '除外 Group',
|
||||
title: '除外グループ',
|
||||
description:
|
||||
'Group 単位の除外結果のみを表示します。候補 Group を展開すると認証情報単位の理由を確認できます。',
|
||||
empty: '現在の入力で除外された Group はありません。',
|
||||
tableLabel: '除外 Group のルート説明',
|
||||
'グループ単位の除外結果のみを表示します。候補グループを展開すると認証情報単位の理由を確認できます。',
|
||||
empty: '現在の入力で除外されたグループはありません。',
|
||||
tableLabel: '除外グループのルート説明',
|
||||
reasonCode: '理由コード',
|
||||
},
|
||||
reasons: {
|
||||
none: '除外理由なし',
|
||||
access_key_disabled: 'AccessKey は無効です',
|
||||
protocol_filtered: 'AccessKey フィルターがこのプロトコルを除外しました',
|
||||
model_filtered: 'AccessKey フィルターがこのモデルを除外しました',
|
||||
model_required_by_filter: 'AccessKey のモデルフィルターによりモデルの指定が必要です',
|
||||
access_key_disabled: 'アクセスキーは無効です',
|
||||
protocol_filtered: 'アクセスキーフィルターがこのプロトコルを除外しました',
|
||||
model_filtered: 'アクセスキーフィルターがこのモデルを除外しました',
|
||||
model_required_by_filter: 'アクセスキーのモデルフィルターによりモデルの指定が必要です',
|
||||
operation_unsupported: 'チャネルはこのプロトコル操作をサポートしていません',
|
||||
native_route_required: 'このリクエストにはネイティブルートが必要です',
|
||||
no_route_target: 'このモデルとプロトコルに一致するルート先がありません',
|
||||
group_disabled: 'Group は無効です',
|
||||
group_filtered: 'AccessKey フィルターがこの Group を除外しました',
|
||||
no_available_group: '現在ルート可能な候補 Group がありません',
|
||||
no_credentials: 'Group にランタイム認証情報がありません',
|
||||
group_weight_zero: 'Group の有効ウェイトがゼロです',
|
||||
group_disabled: 'グループは無効です',
|
||||
group_filtered: 'アクセスキーフィルターがこのグループを除外しました',
|
||||
no_available_group: '現在ルート可能な候補グループがありません',
|
||||
no_credentials: 'グループにランタイム認証情報がありません',
|
||||
group_weight_zero: 'グループの有効ウェイトがゼロです',
|
||||
credential_disabled: '認証情報は無効です',
|
||||
credential_blacklisted: '認証情報はブラックリストに登録されています',
|
||||
credential_cooldown: '認証情報はクールダウン中です',
|
||||
@@ -528,7 +528,7 @@ export default {
|
||||
'サブスクリプション枠を使い切ったため、回復まで自動的に除外されます',
|
||||
credential_weight_zero: '認証情報の有効ウェイトがゼロです',
|
||||
credential_not_allowed: 'このリクエストから認証情報が除外されました',
|
||||
no_available_credential: 'Group に現在利用可能な認証情報がありません',
|
||||
no_available_credential: 'グループに現在利用可能な認証情報がありません',
|
||||
unknown: '不明なルート理由',
|
||||
},
|
||||
},
|
||||
@@ -548,9 +548,9 @@ export default {
|
||||
filteredDescription: 'フィルターを調整またはリセットして、再試行してください。',
|
||||
},
|
||||
options: {
|
||||
groupsFailed: 'Group フィルターの選択肢を読み込めません。ログ一覧には影響しません。',
|
||||
groupsFailed: 'グループフィルターの選択肢を読み込めません。ログ一覧には影響しません。',
|
||||
accessKeysFailed:
|
||||
'AccessKey フィルターの選択肢を読み込めません。ログ一覧には影響しません。',
|
||||
'アクセスキーフィルターの選択肢を読み込めません。ログ一覧には影響しません。',
|
||||
partialFailed: '一部のフィルター選択肢を読み込めませんが、ログ検索は使用できます。',
|
||||
},
|
||||
filters: {
|
||||
@@ -568,14 +568,14 @@ export default {
|
||||
'30d': '30d',
|
||||
},
|
||||
any: 'すべて',
|
||||
group: 'いずれかの試行の Group',
|
||||
groupHelp: 'いずれかの試行で使用された Group に一致します。',
|
||||
anyGroup: 'すべての試行 Group',
|
||||
group: 'いずれかの試行のグループ',
|
||||
groupHelp: 'いずれかの試行で使用されたグループに一致します。',
|
||||
anyGroup: 'すべての試行グループ',
|
||||
model: 'クライアントモデル',
|
||||
clientModel: 'クライアントモデル',
|
||||
upstreamModel: 'いずれかの試行のアップストリームモデル',
|
||||
accessKey: 'AccessKey',
|
||||
anyAccessKey: 'すべての AccessKey',
|
||||
accessKey: 'アクセスキー',
|
||||
anyAccessKey: 'すべてのアクセスキー',
|
||||
protocol: 'プロトコル',
|
||||
anyProtocol: 'すべてのプロトコル',
|
||||
stream: 'ストリーミング',
|
||||
@@ -604,11 +604,11 @@ export default {
|
||||
noneApplied: 'フィルターなし',
|
||||
appliedFrom: '開始 {value}',
|
||||
appliedTo: '終了 {value}',
|
||||
appliedGroup: '試行 Group {value}',
|
||||
appliedGroup: '試行グループ {value}',
|
||||
appliedModel: 'クライアントモデル {value}',
|
||||
appliedClientModel: 'クライアントモデル {value}',
|
||||
appliedUpstreamModel: '試行アップストリームモデル {value}',
|
||||
appliedAccessKey: 'AccessKey {value}',
|
||||
appliedAccessKey: 'アクセスキー {value}',
|
||||
appliedChannel: 'チャネル {value}',
|
||||
appliedCredential: 'クレデンシャル #{value}',
|
||||
appliedStatus: '状態 {value}',
|
||||
@@ -690,7 +690,7 @@ export default {
|
||||
notRecorded: '未記録',
|
||||
},
|
||||
routeIdentity: {
|
||||
group: 'Group:{name}(G{id})',
|
||||
group: 'グループ:{name}(G{id})',
|
||||
channel: 'チャネル:{name}({id})',
|
||||
credential: 'クレデンシャル:K{id}',
|
||||
},
|
||||
@@ -712,7 +712,7 @@ export default {
|
||||
retry: '再試行',
|
||||
cooldown_credential: 'クレデンシャルをクールダウン',
|
||||
fail_credential: '認証情報の失敗を記録',
|
||||
skip_group: 'Group をスキップ',
|
||||
skip_group: 'グループをスキップ',
|
||||
unknown: '不明なアクション',
|
||||
},
|
||||
operation: {
|
||||
@@ -744,17 +744,17 @@ export default {
|
||||
drawer: {
|
||||
title: 'リクエストログ詳細',
|
||||
description: '最終結果と秘匿化されたアップストリーム試行チェーンを確認します。',
|
||||
descriptionSelfScoped: '現在の AccessKey に属するリクエスト、結果、使用量を確認します。',
|
||||
descriptionSelfScoped: '現在のアクセスキーに属するリクエスト、結果、使用量を確認します。',
|
||||
close: 'リクエストログ詳細を閉じる',
|
||||
loading: 'リクエストログ詳細を読み込み中…',
|
||||
loadFailed: 'リクエストログ詳細を読み込めません。',
|
||||
summary: '最終結果',
|
||||
summary: 'リクエスト結果',
|
||||
requestId: 'リクエスト ID',
|
||||
copyRequestId: 'リクエスト ID をコピー',
|
||||
completedAt: '完了時刻',
|
||||
status: '状態',
|
||||
protocol: 'プロトコル',
|
||||
accessKey: 'AccessKey',
|
||||
accessKey: 'アクセスキー',
|
||||
clientModel: 'クライアントモデル',
|
||||
upstreamModel: 'アップストリームモデル',
|
||||
modelNotSpecified: '未指定',
|
||||
@@ -773,9 +773,9 @@ export default {
|
||||
outputRate: '出力速度',
|
||||
attemptCount: '試行回数',
|
||||
request: 'クライアントリクエスト',
|
||||
finalExecution: '最終実行',
|
||||
finalExecution: 'アップストリーム実行',
|
||||
route: 'リクエストと最終ルート',
|
||||
routeIdentity: '最終ルート識別子',
|
||||
routeIdentity: 'ルート識別子',
|
||||
upstreamProtocol: 'アップストリームプロトコル',
|
||||
affinity: 'アフィニティ一致',
|
||||
errorCode: 'エラーコード',
|
||||
@@ -789,7 +789,7 @@ export default {
|
||||
clientStreamState: 'クライアントストリーム状態',
|
||||
clientStreamStarted: 'クライアントへの出力開始済み',
|
||||
clientStreamNotStarted: 'クライアントへの出力なし',
|
||||
group: '履歴 Group',
|
||||
group: '履歴グループ',
|
||||
channel: '履歴チャネル',
|
||||
credential: '履歴クレデンシャル',
|
||||
operation: '操作',
|
||||
@@ -805,11 +805,11 @@ export default {
|
||||
requestedModel: 'アップストリーム要求モデル',
|
||||
reportedModel: 'アップストリーム応答モデル',
|
||||
usage: {
|
||||
title: '使用量と推定コスト',
|
||||
title: '使用量・コスト',
|
||||
description:
|
||||
'最終的に永続化された使用量フィールドです。コストは常に推定値で、不明は無料を意味しません。',
|
||||
finalGroup: '最終 Group',
|
||||
groupId: 'Group #{id}',
|
||||
finalGroup: '最終グループ',
|
||||
groupId: 'グループ #{id}',
|
||||
usageStateLabel: '使用量状態',
|
||||
costStateLabel: 'コスト状態',
|
||||
estimatedCost: '推定コスト',
|
||||
@@ -854,7 +854,7 @@ export default {
|
||||
completedAt: '完了時刻',
|
||||
requestId: 'リクエスト ID',
|
||||
route: 'ルート',
|
||||
accessKey: 'AccessKey',
|
||||
accessKey: 'アクセスキー',
|
||||
result: '最終状態',
|
||||
timing: '初回 / 合計',
|
||||
actions: '操作',
|
||||
@@ -901,7 +901,6 @@ export default {
|
||||
formula: 'コスト計算',
|
||||
input: '入力',
|
||||
output: '出力',
|
||||
schema: '価格レシートバージョン',
|
||||
identity: '価格識別情報',
|
||||
historicalSchema1: '履歴スコープ',
|
||||
historicalSchema2: '履歴グローバル価格',
|
||||
|
||||
@@ -89,10 +89,10 @@ export default {
|
||||
affinity: {
|
||||
title: 'リクエストアフィニティ',
|
||||
description:
|
||||
'自動ソフトアフィニティのグローバル既定値を制御します。Group ごとに継承、有効、無効を選択できます。',
|
||||
'自動ソフトアフィニティのグローバル既定値を制御します。グループごとに継承、有効、無効を選択できます。',
|
||||
affinity_enabled: 'リクエストアフィニティを有効化',
|
||||
enabledHelp:
|
||||
'無効の場合、明示的に有効化した Group のみアフィニティ対象を学習して再利用できます。',
|
||||
'無効の場合、明示的に有効化したグループのみアフィニティ対象を学習して再利用できます。',
|
||||
affinity_ttl: '既定の有効期間',
|
||||
affinity_ttlEffective: '{value} 秒',
|
||||
affinity_ttlError: '9,223,372,036 以下の正の安全な整数を入力してください。',
|
||||
@@ -115,7 +115,7 @@ export default {
|
||||
resetPending:
|
||||
'現在公開中の明示ルールを表示しています。保存後に現在のバージョンの既定値へ戻ります。',
|
||||
replacementWarning:
|
||||
'Group Header Rules の上書きはグローバルオブジェクト全体を置き換え、個別のルールをマージしません。',
|
||||
'グループのヘッダールール上書きはグローバルオブジェクト全体を置き換え、個別のルールをマージしません。',
|
||||
securityNotice:
|
||||
'固定 Header 値は通常の設定です。長期認証情報を保存しないでください。認証 Header はリテラルの {template} テンプレートを使用する必要があります。',
|
||||
conflict:
|
||||
|
||||
@@ -3,9 +3,9 @@ export default {
|
||||
title: '访问密钥',
|
||||
description: '签发并管理用于数据面客户端的明文敏感凭据。',
|
||||
loginNotice: {
|
||||
title: 'AccessKey 也可以登录',
|
||||
title: '访问密钥也可以登录',
|
||||
description:
|
||||
'分发 AccessKey 时,可同时告知使用者在当前实例登录页输入该密钥;登录后只能查看自身的首页、可用模型、用量和脱敏请求记录,不能修改配置。',
|
||||
'分发访问密钥时,可同时告知使用者在当前实例登录页输入该密钥;登录后只能查看自身的首页、可用模型、用量和脱敏请求记录,不能修改配置。',
|
||||
},
|
||||
create: '创建访问密钥',
|
||||
copy: '复制访问密钥',
|
||||
@@ -16,31 +16,31 @@ export default {
|
||||
enabled: '访问密钥“{name}”已启用',
|
||||
disabled: '访问密钥“{name}”已停用',
|
||||
},
|
||||
loading: '正在加载 AccessKey…',
|
||||
loadFailed: '无法加载 AccessKey。',
|
||||
stale: 'AccessKey 数据可能已过期;后台刷新失败。',
|
||||
groupsStale: 'Group 刷新失败,过滤条件中的 Group 名称可能已过期。',
|
||||
emptyTitle: '暂无 AccessKey',
|
||||
emptyDescription: '连接数据面客户端前,请先创建 AccessKey。',
|
||||
caption: 'AccessKey 及其路由过滤条件',
|
||||
scrollHint: '可横向滚动查看 AccessKey 的全部列。',
|
||||
loading: '正在加载访问密钥…',
|
||||
loadFailed: '无法加载访问密钥。',
|
||||
stale: '访问密钥数据可能已过期;后台刷新失败。',
|
||||
groupsStale: '分组刷新失败,过滤条件中的分组名称可能已过期。',
|
||||
emptyTitle: '暂无访问密钥',
|
||||
emptyDescription: '连接数据面客户端前,请先创建访问密钥。',
|
||||
caption: '访问密钥及其路由过滤条件',
|
||||
scrollHint: '可横向滚动查看访问密钥的全部列。',
|
||||
details: '范围与元数据',
|
||||
createdAt: '创建时间',
|
||||
updatedAt: '更新时间',
|
||||
allGroups: '全部 Group',
|
||||
allGroups: '全部分组',
|
||||
allProtocols: '全部协议',
|
||||
allModels: '全部模型',
|
||||
unlimited: '不限',
|
||||
filterGroups: 'Group',
|
||||
filterGroups: '分组',
|
||||
filterProtocols: '协议',
|
||||
filterModels: '模型',
|
||||
collection: {
|
||||
loading: '正在加载 AccessKey',
|
||||
errorTitle: '暂时无法加载 AccessKey',
|
||||
loading: '正在加载访问密钥',
|
||||
errorTitle: '暂时无法加载访问密钥',
|
||||
errorDescription: '请检查网络连接或服务状态后重试',
|
||||
summary: {
|
||||
region: 'AccessKey 状态概览',
|
||||
current: '当前 AccessKey',
|
||||
region: '访问密钥状态概览',
|
||||
current: '当前访问密钥',
|
||||
},
|
||||
status: {
|
||||
all: '全部',
|
||||
@@ -48,25 +48,24 @@ export default {
|
||||
disabled: '已停用',
|
||||
},
|
||||
filters: {
|
||||
region: '筛选 AccessKey',
|
||||
region: '筛选访问密钥',
|
||||
searchLabel: '搜索',
|
||||
searchPlaceholder: '名称或密钥末 4 位',
|
||||
clearSearch: '清空搜索',
|
||||
reset: '重置条件',
|
||||
},
|
||||
result: '显示 {shown} / {total} 个 AccessKey',
|
||||
result: '显示 {shown} / {total} 个访问密钥',
|
||||
neverRequested: '暂无请求',
|
||||
noResultsTitle: '没有符合条件的 AccessKey',
|
||||
noResultsTitle: '没有符合条件的访问密钥',
|
||||
noResultsDescription: '调整搜索内容或状态筛选后再试',
|
||||
tableLabel: 'AccessKey 列表',
|
||||
tableLabel: '访问密钥列表',
|
||||
openDetailsFor: '打开访问密钥“{name}”的详情',
|
||||
},
|
||||
operation: {
|
||||
indeterminate: 'AccessKey 创建结果未知;开始新的创建前,请先核对本次操作。',
|
||||
reconciling: 'AccessKey 已提交,运行时仍在恢复。',
|
||||
editIndeterminate:
|
||||
'AccessKey“{name}”的更新结果未知;编辑其他 AccessKey 前请先核对当前元数据。',
|
||||
editReconciling: 'AccessKey“{name}”的更新已提交,仍需核对当前元数据。',
|
||||
indeterminate: '访问密钥创建结果未知;开始新的创建前,请先核对本次操作。',
|
||||
reconciling: '访问密钥已提交,运行时仍在恢复。',
|
||||
editIndeterminate: '访问密钥“{name}”的更新结果未知;编辑其他访问密钥前请先核对当前元数据。',
|
||||
editReconciling: '访问密钥“{name}”的更新已提交,仍需核对当前元数据。',
|
||||
checkResult: '核对结果',
|
||||
},
|
||||
status: {
|
||||
@@ -75,7 +74,7 @@ export default {
|
||||
},
|
||||
columns: {
|
||||
name: '名称',
|
||||
key: 'AccessKey',
|
||||
key: '访问密钥',
|
||||
status: '状态',
|
||||
filters: '过滤条件',
|
||||
scope: '范围',
|
||||
@@ -94,7 +93,7 @@ export default {
|
||||
createDescription: '创建后可随时收紧权限;放宽权限需要显式确认。',
|
||||
editDescription: '可调整名称、状态、限流和权限范围。',
|
||||
description: '编辑路由过滤条件和 RPM 限制;明文仅在显式操作后显示。',
|
||||
close: '关闭 AccessKey 编辑器',
|
||||
close: '关闭访问密钥编辑器',
|
||||
basicInformation: '基本信息',
|
||||
basicInformationDescription: '名称用于识别调用方,不会参与认证。',
|
||||
permissionScope: '权限范围',
|
||||
@@ -117,25 +116,25 @@ export default {
|
||||
scopeMode: '范围',
|
||||
scopeAll: '全部',
|
||||
scopeRestricted: '指定',
|
||||
unknownGroup: '未知 Group',
|
||||
groupSelectorLabel: '选择 Group',
|
||||
unknownGroup: '未知分组',
|
||||
groupSelectorLabel: '选择分组',
|
||||
addGroup: '添加分组',
|
||||
protocolSelectorLabel: '选择协议',
|
||||
addProtocol: '添加协议',
|
||||
noProtocolOptions: '暂无可选协议。',
|
||||
modelSelectorLabel: '选择模型',
|
||||
searchGroups: '搜索 Group',
|
||||
searchGroups: '搜索分组',
|
||||
searchGroupsPlaceholder: '按名称搜索',
|
||||
searchModels: '搜索模型',
|
||||
searchModelsPlaceholder: '按模型 ID 或别名搜索',
|
||||
noGroupOptions: '没有匹配的 Group。',
|
||||
noGroupOptions: '没有匹配的分组。',
|
||||
noModelOptions: '没有匹配的模型。',
|
||||
groupOptionsLoading: '正在加载 Group 目录…',
|
||||
groupOptionsLoading: '正在加载分组目录…',
|
||||
selectedCount: '已选择 {count} 项',
|
||||
clearSelected: '清除所选',
|
||||
removeSelection: '移除 {label}',
|
||||
groupProtocolMismatch: '所选 Group 与协议没有可路由的交集。',
|
||||
modelRouteRisk: '所选模型不在当前 Group 的模型目录中,路由请求可能失败。',
|
||||
groupProtocolMismatch: '所选分组与协议没有可路由的交集。',
|
||||
modelRouteRisk: '所选模型不在当前分组的模型目录中,路由请求可能失败。',
|
||||
modelCustomUnavailable: '自定义或当前不可用',
|
||||
emptyMeansAll: '不选择表示全部。',
|
||||
modelsDescription: '可选择已知模型,也可输入任意有效模型字符串。',
|
||||
@@ -149,33 +148,33 @@ export default {
|
||||
allProtocolsAllowed: '当前允许全部 4 种规范协议',
|
||||
allModelsAllowed: '当前允许目标分组可路由的全部模型',
|
||||
scopeExpansionWarning: '把“指定”改为“全部”会扩大客户端权限,请确认当前范围符合预期。',
|
||||
save: '保存 AccessKey',
|
||||
save: '保存访问密钥',
|
||||
createKey: '创建密钥',
|
||||
saveChanges: '保存修改',
|
||||
checkResult: '核对结果',
|
||||
saveFailed: '无法保存 AccessKey,输入内容已保留。',
|
||||
editNotApplied: '最新 AccessKey 元数据仍未改变;请检查草稿后再重试。',
|
||||
saveFailed: '无法保存访问密钥,输入内容已保留。',
|
||||
editNotApplied: '最新访问密钥元数据仍未改变;请检查草稿后再重试。',
|
||||
editIndeterminate: '更新请求结果未知;请核对当前元数据,此操作不会重新发送更新。',
|
||||
editReconciling: '更新已提交,但继续前仍需核对当前 AccessKey 元数据。',
|
||||
editReconciling: '更新已提交,但继续前仍需核对当前访问密钥元数据。',
|
||||
saveIndeterminate: '请求结果未知;重试前请使用同一操作核对结果。',
|
||||
saveReconciling: 'AccessKey 已提交,运行时仍在恢复。',
|
||||
saveReconciling: '访问密钥已提交,运行时仍在恢复。',
|
||||
scopeIncomplete: '每个受限范围都必须至少选择一个值。',
|
||||
groupScopeUnavailable: 'Group 目录恢复可用前,不能修改 Group 范围。',
|
||||
staleGroupScopeInvalid: 'Group 数据已过期,只能保留或移除此 AccessKey 已授权的 Group。',
|
||||
groupScopeUnavailable: '分组目录恢复可用前,不能修改分组范围。',
|
||||
staleGroupScopeInvalid: '分组数据已过期,只能保留或移除此访问密钥已授权的分组。',
|
||||
},
|
||||
delete: {
|
||||
open: '删除',
|
||||
title: '删除此 AccessKey?',
|
||||
title: '删除此访问密钥?',
|
||||
description: '删除“{name}”。此操作无法撤销。',
|
||||
close: '关闭 AccessKey 删除确认',
|
||||
lastWarning: '这是最后一个 AccessKey。删除后,数据面客户端将没有已签发凭据。',
|
||||
close: '关闭访问密钥删除确认',
|
||||
lastWarning: '这是最后一个访问密钥。删除后,数据面客户端将没有已签发凭据。',
|
||||
name: '名称',
|
||||
key: 'AccessKey',
|
||||
impact: '删除后,使用此 AccessKey 的数据面请求将立即无法通过认证。',
|
||||
key: '访问密钥',
|
||||
impact: '删除后,使用此访问密钥的数据面请求将立即无法通过认证。',
|
||||
typeName: '输入 {name} 以确认',
|
||||
confirm: '删除 AccessKey',
|
||||
failed: '无法删除 AccessKey。',
|
||||
deletedAnnouncement: '已删除 AccessKey“{name}”。',
|
||||
confirm: '删除访问密钥',
|
||||
failed: '无法删除访问密钥。',
|
||||
deletedAnnouncement: '已删除访问密钥“{name}”。',
|
||||
},
|
||||
},
|
||||
} as const
|
||||
@@ -75,7 +75,7 @@ export default {
|
||||
auth: {
|
||||
eyebrow: 'GPT-Load 2.0',
|
||||
headline: '一个登录入口,权限清晰分离',
|
||||
lead: '使用 AUTH_KEY 管理网关;使用 AccessKey 查看该密钥自己的首页、模型、请求与用量。身份由服务端自动识别',
|
||||
lead: '使用 AUTH_KEY 管理网关;使用访问密钥查看该密钥自己的首页、模型、请求与用量。身份由服务端自动识别',
|
||||
capabilities: {
|
||||
1: {
|
||||
title: '集中管理渠道凭据',
|
||||
@@ -91,9 +91,9 @@ export default {
|
||||
},
|
||||
},
|
||||
loginTitle: '登录 GPT-Load',
|
||||
loginDescription: '输入 AUTH_KEY 或 AccessKey,服务端会自动识别权限',
|
||||
loginDescription: '输入 AUTH_KEY 或访问密钥,服务端会自动识别权限',
|
||||
keyLabel: '登录密钥',
|
||||
keyPlaceholder: '请输入 AUTH_KEY 或 AccessKey',
|
||||
keyPlaceholder: '请输入 AUTH_KEY 或访问密钥',
|
||||
reveal: '显示登录密钥',
|
||||
conceal: '隐藏登录密钥',
|
||||
submit: '登录',
|
||||
@@ -109,9 +109,9 @@ export default {
|
||||
sessionNoteSuffix: ' 中,退出登录或认证失效时清除',
|
||||
help: {
|
||||
title: '可以使用哪种密钥?',
|
||||
accessKeyTitle: 'AccessKey',
|
||||
accessKeyTitle: '访问密钥',
|
||||
accessKeyDescription:
|
||||
'使用已分发的数据面 AccessKey 登录,只能查看这个密钥自己的首页、可用模型、请求记录和用量,不能修改任何配置',
|
||||
'使用已分发的数据面访问密钥登录,只能查看这个密钥自己的首页、可用模型、请求记录和用量,不能修改任何配置',
|
||||
environmentTitle: '环境变量优先',
|
||||
environmentDescription: '如果启动实例时设置了 {key},请使用部署系统中受保护的值',
|
||||
fileTitle: '受管密钥文件',
|
||||
@@ -135,12 +135,11 @@ export default {
|
||||
models: '模型',
|
||||
settings: '设置',
|
||||
import: '导入渠道凭据',
|
||||
groupDetail: 'Group 详情',
|
||||
groupDetail: '分组详情',
|
||||
menu: '菜单与偏好设置',
|
||||
preferences: '偏好设置',
|
||||
accessKeyReadOnly: 'AccessKey · 只读',
|
||||
accessKeyReadOnlyDescription:
|
||||
'当前使用 AccessKey 登录;页面和数据仅限此密钥,不能修改系统配置。',
|
||||
accessKeyReadOnly: '访问密钥 · 只读',
|
||||
accessKeyReadOnlyDescription: '当前使用访问密钥登录;页面和数据仅限此密钥,不能修改系统配置。',
|
||||
language: '语言',
|
||||
theme: '主题',
|
||||
localeZh: '简体中文',
|
||||
@@ -182,12 +181,12 @@ export default {
|
||||
tokens: '{count} tokens',
|
||||
welcomeTitle: '欢迎使用 GPT-Load',
|
||||
importCredentials: '导入渠道凭据',
|
||||
welcomeDescription: '选择渠道并导入对应 API key,即可创建 Group 并开始转发请求',
|
||||
welcomeDescription: '选择渠道并导入对应 API key,即可创建分组并开始转发请求',
|
||||
welcomeGuideTitle: '三步完成首次接入',
|
||||
welcomeEstimatedTime: '预计 1–2 分钟',
|
||||
welcomeStep1Title: '选择渠道',
|
||||
welcomeStep1Description: '可按名称搜索内置的官方渠道和兼容渠道',
|
||||
welcomeStep2Title: '确认 Group 信息',
|
||||
welcomeStep2Title: '确认分组信息',
|
||||
welcomeStep2Description: '模型可选;只有兼容渠道需要填写基础 URL',
|
||||
welcomeStep3Title: '导入一个或多个凭据',
|
||||
welcomeStep3Description: '粘贴渠道 API key 并确认,系统会立即开始管理可用性',
|
||||
@@ -195,7 +194,7 @@ export default {
|
||||
currentAccessKey: {
|
||||
eyebrow: '当前登录身份',
|
||||
active: '已启用',
|
||||
readOnly: '当前为 AccessKey 只读视图;所有数据均限定为此密钥,不能修改系统配置。',
|
||||
readOnly: '当前为访问密钥只读视图;所有数据均限定为此密钥,不能修改系统配置。',
|
||||
rpm: 'RPM 限制',
|
||||
rpmValue: '{count} RPM',
|
||||
unlimited: '不限',
|
||||
|
||||
@@ -57,11 +57,11 @@ export default {
|
||||
},
|
||||
},
|
||||
group: {
|
||||
invalidTitle: 'Group 地址无效',
|
||||
invalidDescription: 'Group ID 必须是正的安全整数。',
|
||||
loading: '正在加载 Group 详情…',
|
||||
loadFailed: '无法加载 Group 详情。',
|
||||
stale: 'Group 详情可能已过期;后台刷新失败。',
|
||||
invalidTitle: '分组地址无效',
|
||||
invalidDescription: '分组 ID 必须是正的安全整数。',
|
||||
loading: '正在加载分组详情…',
|
||||
loadFailed: '无法加载分组详情。',
|
||||
stale: '分组详情可能已过期;后台刷新失败。',
|
||||
backToGroups: '返回分组列表',
|
||||
importCredentials: '导入渠道凭据',
|
||||
copyUpstreamUrl: '复制上游地址 {url}',
|
||||
@@ -88,7 +88,7 @@ export default {
|
||||
searchClear: '清空搜索',
|
||||
total: '{count} 个模型',
|
||||
summary: '{count} 个模型 · {pending} 个待配置价格',
|
||||
tableLabel: '当前 Group 模型',
|
||||
tableLabel: '当前分组模型',
|
||||
id: '模型 ID',
|
||||
alias: '对外别名',
|
||||
pricing: '定价',
|
||||
@@ -134,13 +134,13 @@ export default {
|
||||
empty: '上游未返回可添加模型',
|
||||
confirm: '添加到当前列表',
|
||||
},
|
||||
saveFailed: '无法替换 Group 模型列表。',
|
||||
saveFailed: '无法替换分组模型列表。',
|
||||
noActiveCredential: {
|
||||
title: '没有可用于发现的活跃渠道凭据。',
|
||||
},
|
||||
emptyConfirm: {
|
||||
title: '移除全部模型?',
|
||||
description: '保存空列表将停用此 Group 的模型路由,并完整替换当前已保存列表。',
|
||||
description: '保存空列表将停用此分组的模型路由,并完整替换当前已保存列表。',
|
||||
close: '关闭空模型确认',
|
||||
cancel: '取消',
|
||||
confirm: '替换为空列表',
|
||||
@@ -148,10 +148,10 @@ export default {
|
||||
},
|
||||
settings: {
|
||||
title: '分组设置',
|
||||
description: '编辑 Group 标识、路由字段与稀疏运行时覆盖。',
|
||||
description: '编辑分组标识、路由字段与稀疏运行时覆盖。',
|
||||
save: '保存设置',
|
||||
loading: '正在加载 Group 设置',
|
||||
loadFailed: '无法加载 Group 设置',
|
||||
loading: '正在加载分组设置',
|
||||
loadFailed: '无法加载分组设置',
|
||||
saved: '设置已保存',
|
||||
unsaved: '有未保存的修改',
|
||||
saving: '正在保存',
|
||||
@@ -175,14 +175,14 @@ export default {
|
||||
},
|
||||
headers: { description: '规则默认折叠;展开后编辑将完整替换全局 HeaderRules。' },
|
||||
dangerDescription: '不可逆操作与常规设置保持明确距离。',
|
||||
saveFailed: '无法更新 Group 设置。',
|
||||
saveFailed: '无法更新分组设置。',
|
||||
base: {
|
||||
description: '名称、渠道参数与启用状态影响整个分组。',
|
||||
channel: '渠道',
|
||||
channelHelp: '渠道由创建分组时确定,后续不可切换。',
|
||||
channelCatalogUnavailable: '无法加载渠道目录,渠道参数已锁定;其他设置仍可编辑。',
|
||||
name: '分组名称',
|
||||
nameError: '请输入 Group 名称。',
|
||||
nameError: '请输入分组名称。',
|
||||
upstreamUrl: '上游地址',
|
||||
upstreamUrlError: '请输入有效的 HTTP 或 HTTPS Base URL。',
|
||||
urlWarning: '修改 Base URL 会影响此分组后续请求的发送位置。',
|
||||
@@ -220,7 +220,7 @@ export default {
|
||||
headerStorageNoticeStart: '普通 HeaderRules 不是 Secret 存储;凭据值请使用',
|
||||
headerStorageNoticeEnd: '。',
|
||||
headerReplacementWarning:
|
||||
'此 Group 覆盖会完整替换全局 HeaderRules;后续全局更改不会合并到这里。',
|
||||
'此分组覆盖会完整替换全局 HeaderRules;后续全局更改不会合并到这里。',
|
||||
inject_usage_options: '注入用量选项',
|
||||
injectUsageHelp: '仅 openai-completions 支持此覆盖',
|
||||
affinity_enabled: '请求亲和',
|
||||
@@ -230,22 +230,22 @@ export default {
|
||||
affinityDisable: '关闭',
|
||||
},
|
||||
delete: {
|
||||
sectionDescription: '删除 Group 会同时删除其全部渠道凭据,且无法撤销。',
|
||||
open: '删除 Group',
|
||||
title: '删除此 Group?',
|
||||
description: '输入准确的 Group 名称“{name}”以确认永久删除。',
|
||||
close: '关闭 Group 删除确认',
|
||||
sectionDescription: '删除分组会同时删除其全部渠道凭据,且无法撤销。',
|
||||
open: '删除分组',
|
||||
title: '删除此分组?',
|
||||
description: '输入准确的分组名称“{name}”以确认永久删除。',
|
||||
close: '关闭分组删除确认',
|
||||
typeName: '输入 {name} 以确认',
|
||||
cancel: '取消',
|
||||
confirm: '永久删除 Group',
|
||||
failed: '无法删除 Group。',
|
||||
inUseTitle: '此 Group 正被 AccessKey 引用。',
|
||||
inUseDescription: '请先移除以下明确的 Group 引用:',
|
||||
manageAccessKeys: '管理 AccessKey',
|
||||
confirm: '永久删除分组',
|
||||
failed: '无法删除分组。',
|
||||
inUseTitle: '此分组正被访问密钥引用。',
|
||||
inUseDescription: '请先移除以下明确的分组引用:',
|
||||
manageAccessKeys: '管理访问密钥',
|
||||
},
|
||||
},
|
||||
tabs: {
|
||||
label: 'Group 详情分区',
|
||||
label: '分组详情分区',
|
||||
credentials: '凭据',
|
||||
models: '模型与别名',
|
||||
settings: '设置',
|
||||
@@ -331,7 +331,7 @@ export default {
|
||||
confirmDelete: '删除凭据',
|
||||
closeDialog: '关闭删除确认',
|
||||
deleteTitle: '删除渠道凭据?',
|
||||
deleteDescription: '从此 Group 删除 {mask}。此操作无法撤销',
|
||||
deleteDescription: '从此分组删除 {mask}。此操作无法撤销',
|
||||
columns: {
|
||||
credential: '密钥',
|
||||
status: '状态',
|
||||
|
||||
@@ -193,7 +193,7 @@ export default {
|
||||
empty: '空行',
|
||||
duplicates: '重复项',
|
||||
},
|
||||
accessKeyWarning: '{count} 行看起来像 GPT-Load AccessKey,请确认后继续',
|
||||
accessKeyWarning: '{count} 行看起来像 GPT-Load 访问密钥,请确认后继续',
|
||||
tooMany: '最多可提交 1,000 个非空密钥',
|
||||
required: '请先填写至少一条凭据',
|
||||
channelCredentialNotice: '这里导入的是渠道 API 密钥;客户端凭证请在“访问密钥”页面创建',
|
||||
|
||||
@@ -59,7 +59,7 @@ export default {
|
||||
open: '查看上游模型 {model} 的详情与价格',
|
||||
upstreamCount: '{count} 个上游',
|
||||
protocolRestricted: '协议受限',
|
||||
protocolRestrictedHelp: '此 AccessKey 仅可使用以下协议:\n{protocols}',
|
||||
protocolRestrictedHelp: '此访问密钥仅可使用以下协议:\n{protocols}',
|
||||
pricingIdentityHelp: '计价身份\n渠道:{channel} ({channelId})\n上游模型:{model}',
|
||||
tierCount: '{count} 档',
|
||||
noPrice: '—',
|
||||
|
||||
@@ -52,7 +52,7 @@ export default {
|
||||
},
|
||||
groups: {
|
||||
title: '分组健康',
|
||||
description: '仅反映分组当前可用凭据,不对具体 AccessKey、协议或模型作“可路由”承诺。',
|
||||
description: '仅反映分组当前可用凭据,不对具体访问密钥、协议或模型作“可路由”承诺。',
|
||||
empty: '当前没有分组。',
|
||||
disabled: '已停用',
|
||||
emptyCredentials: '无凭据',
|
||||
@@ -348,7 +348,7 @@ export default {
|
||||
},
|
||||
inspector: {
|
||||
title: '路由检查',
|
||||
description: '按协议、操作、能力、模型与 AccessKey 检查当前候选 Group 与凭据。',
|
||||
description: '按协议、操作、能力、模型与访问密钥检查当前候选分组与凭据。',
|
||||
boundary: '请按真实请求选择操作和所需能力;只读,不会发送上游请求或消耗 Token。',
|
||||
routeModes: {
|
||||
native: '原生',
|
||||
@@ -379,9 +379,9 @@ export default {
|
||||
optional: '可选',
|
||||
modelPlaceholder: '输入客户端模型',
|
||||
modelOptional: '资源类协议请求可不填写。',
|
||||
accessKey: 'AccessKey',
|
||||
accessKey: '访问密钥',
|
||||
accessKeyOption: '{name} · #{id} · {status}',
|
||||
missingAccessKeyOption: '缺失的 AccessKey · #{id}',
|
||||
missingAccessKeyOption: '缺失的访问密钥 · #{id}',
|
||||
submit: '检查当前路由',
|
||||
},
|
||||
accessKeyStatus: {
|
||||
@@ -389,15 +389,15 @@ export default {
|
||||
disabled: '停用',
|
||||
},
|
||||
options: {
|
||||
loading: '正在加载 AccessKey 选项…',
|
||||
failed: '无法加载 AccessKey 选项。',
|
||||
loading: '正在加载访问密钥选项…',
|
||||
failed: '无法加载访问密钥选项。',
|
||||
},
|
||||
errors: {
|
||||
protocol: '请选择有效协议。',
|
||||
operation: '请选择与协议匹配的操作。',
|
||||
model: '请按所选操作填写有效模型;资源操作不接受模型。',
|
||||
accessKey: '请重新选择现有 AccessKey。',
|
||||
missingDeepLinkAccessKey: '链接中的 AccessKey #{id} 已不存在,请重新选择。',
|
||||
accessKey: '请重新选择现有访问密钥。',
|
||||
missingDeepLinkAccessKey: '链接中的访问密钥 #{id} 已不存在,请重新选择。',
|
||||
summary: '路由检查输入无效。',
|
||||
},
|
||||
request: {
|
||||
@@ -406,7 +406,7 @@ export default {
|
||||
},
|
||||
empty: {
|
||||
title: '填写条件后检查当前路由',
|
||||
description: '检查结果会解释当前配置快照中的候选 Group、凭据状态与排除原因。',
|
||||
description: '检查结果会解释当前配置快照中的候选分组、凭据状态与排除原因。',
|
||||
},
|
||||
result: {
|
||||
title: '当前运行时观测',
|
||||
@@ -420,20 +420,20 @@ export default {
|
||||
protocol: '协议',
|
||||
externalModel: '客户端模型',
|
||||
modelNotSpecified: '未指定',
|
||||
accessKey: 'AccessKey',
|
||||
accessKeyStatus: 'AccessKey 状态',
|
||||
candidateGroups: '候选 Group',
|
||||
accessKey: '访问密钥',
|
||||
accessKeyStatus: '访问密钥状态',
|
||||
candidateGroups: '候选分组',
|
||||
availableCredentials: '当前可用凭据',
|
||||
reason: '原因',
|
||||
inputChanged: '输入已更改;下方仍显示上一次已提交输入的观测结果。',
|
||||
stale: '最近一次检查失败;下方是观测时间所示的较早结果。',
|
||||
},
|
||||
groups: {
|
||||
title: '候选 Group',
|
||||
title: '候选分组',
|
||||
description: '原生优先;份额只在当前实际参与竞争的路由层级内计算。',
|
||||
count: '{count} 个',
|
||||
tableLabel: '候选 Group 路由解释',
|
||||
completeEmpty: '未返回候选 Group;这是该输入的完整当前运行时解释,并非空态。',
|
||||
tableLabel: '候选分组路由解释',
|
||||
completeEmpty: '未返回候选分组;这是该输入的完整当前运行时解释,并非空态。',
|
||||
included: '已纳入候选',
|
||||
excluded: '未纳入候选',
|
||||
standby: '后备层级',
|
||||
@@ -441,9 +441,9 @@ export default {
|
||||
availableTotal: '可用 / 总数',
|
||||
currentTotal: '当前合计',
|
||||
shareLabel: '{name} 的有效权重占比为 {share}',
|
||||
viewGroup: '查看 Group',
|
||||
viewGroup: '查看分组',
|
||||
columns: {
|
||||
group: 'Group',
|
||||
group: '分组',
|
||||
status: '状态',
|
||||
credentials: '凭据',
|
||||
weight: '有效权重',
|
||||
@@ -458,7 +458,7 @@ export default {
|
||||
unavailable: '不可用',
|
||||
summary: '{available} 可用 · {unavailable} 不可用',
|
||||
tableLabel: '{name} 的凭据路由解释',
|
||||
noneReturned: '此 Group 未返回凭据候选。',
|
||||
noneReturned: '此分组未返回凭据候选。',
|
||||
cooldownUntil: '冷却到期时间',
|
||||
none: '无',
|
||||
columns: {
|
||||
@@ -476,36 +476,36 @@ export default {
|
||||
effective: '原始有效权重',
|
||||
null: 'null',
|
||||
none: '—',
|
||||
groupManual: 'Group 手动权重 {value}',
|
||||
groupManual: '分组手动权重 {value}',
|
||||
},
|
||||
excluded: {
|
||||
title: '排除 Group',
|
||||
description: '仅展示 Group 级排除结论;候选 Group 的凭据级原因可按需展开。',
|
||||
empty: '当前没有被排除的 Group。',
|
||||
tableLabel: '排除 Group 路由解释',
|
||||
title: '排除分组',
|
||||
description: '仅展示分组级排除结论;候选分组的凭据级原因可按需展开。',
|
||||
empty: '当前没有被排除的分组。',
|
||||
tableLabel: '排除分组路由解释',
|
||||
reasonCode: '原因代码',
|
||||
},
|
||||
reasons: {
|
||||
none: '无排除原因',
|
||||
access_key_disabled: 'AccessKey 已停用',
|
||||
protocol_filtered: 'AccessKey 筛选排除了该协议',
|
||||
model_filtered: 'AccessKey 筛选排除了该模型',
|
||||
model_required_by_filter: 'AccessKey 模型筛选要求请求提供模型',
|
||||
access_key_disabled: '访问密钥已停用',
|
||||
protocol_filtered: '访问密钥筛选排除了该协议',
|
||||
model_filtered: '访问密钥筛选排除了该模型',
|
||||
model_required_by_filter: '访问密钥模型筛选要求请求提供模型',
|
||||
operation_unsupported: '渠道不支持该协议操作',
|
||||
native_route_required: '该请求必须使用原生路由',
|
||||
no_route_target: '没有匹配该模型与协议的路由目标',
|
||||
group_disabled: 'Group 已停用',
|
||||
group_filtered: 'AccessKey 筛选排除了该 Group',
|
||||
no_available_group: '当前没有可路由的候选 Group',
|
||||
no_credentials: 'Group 没有运行时凭据',
|
||||
group_weight_zero: 'Group 有效权重为零',
|
||||
group_disabled: '分组已停用',
|
||||
group_filtered: '访问密钥筛选排除了该分组',
|
||||
no_available_group: '当前没有可路由的候选分组',
|
||||
no_credentials: '分组没有运行时凭据',
|
||||
group_weight_zero: '分组有效权重为零',
|
||||
credential_disabled: '凭据已停用',
|
||||
credential_blacklisted: '凭据已拉黑',
|
||||
credential_cooldown: '凭据正在冷却',
|
||||
credential_quota_exhausted: '订阅账号额度已用尽,恢复前自动跳过',
|
||||
credential_weight_zero: '凭据有效权重为零',
|
||||
credential_not_allowed: '该请求排除了此凭据',
|
||||
no_available_credential: 'Group 当前没有可用凭据',
|
||||
no_available_credential: '分组当前没有可用凭据',
|
||||
unknown: '未知路由原因',
|
||||
},
|
||||
},
|
||||
@@ -525,8 +525,8 @@ export default {
|
||||
filteredDescription: '调整或重置筛选条件后重试。',
|
||||
},
|
||||
options: {
|
||||
groupsFailed: '无法加载 Group 筛选选项;日志列表不受影响。',
|
||||
accessKeysFailed: '无法加载 AccessKey 筛选选项;日志列表不受影响。',
|
||||
groupsFailed: '无法加载分组筛选选项;日志列表不受影响。',
|
||||
accessKeysFailed: '无法加载访问密钥筛选选项;日志列表不受影响。',
|
||||
partialFailed: '部分筛选选项暂时无法加载,日志查询仍可正常使用。',
|
||||
},
|
||||
filters: {
|
||||
@@ -544,14 +544,14 @@ export default {
|
||||
'30d': '30d',
|
||||
},
|
||||
any: '全部',
|
||||
group: '任一尝试 Group',
|
||||
groupHelp: '匹配任一尝试使用过的 Group。',
|
||||
anyGroup: '全部尝试 Group',
|
||||
group: '任一尝试分组',
|
||||
groupHelp: '匹配任一尝试使用过的分组。',
|
||||
anyGroup: '全部尝试分组',
|
||||
model: '客户端模型',
|
||||
clientModel: '客户端模型',
|
||||
upstreamModel: '任一尝试上游模型',
|
||||
accessKey: 'AccessKey',
|
||||
anyAccessKey: '全部 AccessKey',
|
||||
accessKey: '访问密钥',
|
||||
anyAccessKey: '全部访问密钥',
|
||||
protocol: '协议',
|
||||
anyProtocol: '全部协议',
|
||||
stream: '流式请求',
|
||||
@@ -580,11 +580,11 @@ export default {
|
||||
noneApplied: '无筛选条件',
|
||||
appliedFrom: '开始 {value}',
|
||||
appliedTo: '结束 {value}',
|
||||
appliedGroup: '尝试 Group {value}',
|
||||
appliedGroup: '尝试分组 {value}',
|
||||
appliedModel: '客户端模型 {value}',
|
||||
appliedClientModel: '客户端模型 {value}',
|
||||
appliedUpstreamModel: '尝试上游模型 {value}',
|
||||
appliedAccessKey: 'AccessKey {value}',
|
||||
appliedAccessKey: '访问密钥 {value}',
|
||||
appliedChannel: '渠道 {value}',
|
||||
appliedCredential: '凭据 #{value}',
|
||||
appliedStatus: '状态 {value}',
|
||||
@@ -669,7 +669,7 @@ export default {
|
||||
notRecorded: '未记录',
|
||||
},
|
||||
routeIdentity: {
|
||||
group: 'Group:{name}(G{id})',
|
||||
group: '分组:{name}(G{id})',
|
||||
channel: '渠道:{name}({id})',
|
||||
credential: '凭据:K{id}',
|
||||
},
|
||||
@@ -691,7 +691,7 @@ export default {
|
||||
retry: '重试',
|
||||
cooldown_credential: '冷却凭据',
|
||||
fail_credential: '记录凭据失败',
|
||||
skip_group: '跳过 Group',
|
||||
skip_group: '跳过分组',
|
||||
unknown: '未知动作',
|
||||
},
|
||||
operation: {
|
||||
@@ -723,17 +723,17 @@ export default {
|
||||
drawer: {
|
||||
title: '请求日志详情',
|
||||
description: '查看最终结果和脱敏的上游尝试链。',
|
||||
descriptionSelfScoped: '查看当前 AccessKey 的请求、结果与用量。',
|
||||
descriptionSelfScoped: '查看当前访问密钥的请求、结果与用量。',
|
||||
close: '关闭请求日志详情',
|
||||
loading: '正在加载请求日志详情…',
|
||||
loadFailed: '无法加载请求日志详情。',
|
||||
summary: '最终结果',
|
||||
summary: '请求结果',
|
||||
requestId: '请求 ID',
|
||||
copyRequestId: '复制请求 ID',
|
||||
completedAt: '完成时间',
|
||||
status: '状态',
|
||||
protocol: '协议',
|
||||
accessKey: 'AccessKey',
|
||||
accessKey: '访问密钥',
|
||||
clientModel: '客户端模型',
|
||||
upstreamModel: '上游模型',
|
||||
modelNotSpecified: '未指定',
|
||||
@@ -752,9 +752,9 @@ export default {
|
||||
outputRate: '输出速率',
|
||||
attemptCount: '尝试次数',
|
||||
request: '客户端请求',
|
||||
finalExecution: '最终执行',
|
||||
finalExecution: '上游执行',
|
||||
route: '请求与最终路由',
|
||||
routeIdentity: '最终路由标识',
|
||||
routeIdentity: '路由标识',
|
||||
upstreamProtocol: '上游协议',
|
||||
affinity: '亲和命中',
|
||||
errorCode: '错误码',
|
||||
@@ -768,7 +768,7 @@ export default {
|
||||
clientStreamState: '客户端流状态',
|
||||
clientStreamStarted: '已开始向客户端输出',
|
||||
clientStreamNotStarted: '尚未向客户端输出',
|
||||
group: '历史 Group',
|
||||
group: '历史分组',
|
||||
channel: '历史渠道',
|
||||
credential: '历史凭据',
|
||||
operation: '操作类型',
|
||||
@@ -784,10 +784,10 @@ export default {
|
||||
requestedModel: '上游请求模型',
|
||||
reportedModel: '上游返回模型',
|
||||
usage: {
|
||||
title: '用量与预估成本',
|
||||
title: '用量成本',
|
||||
description: '最终持久化的用量字段。成本始终为预估值,未知不代表免费。',
|
||||
finalGroup: '最终 Group',
|
||||
groupId: 'Group #{id}',
|
||||
finalGroup: '最终分组',
|
||||
groupId: '分组 #{id}',
|
||||
usageStateLabel: '用量状态',
|
||||
costStateLabel: '成本状态',
|
||||
estimatedCost: '预估成本',
|
||||
@@ -831,7 +831,7 @@ export default {
|
||||
completedAt: '完成时间',
|
||||
requestId: '请求 ID',
|
||||
route: '路由',
|
||||
accessKey: 'AccessKey',
|
||||
accessKey: '访问密钥',
|
||||
result: '最终状态',
|
||||
timing: '首响/耗时',
|
||||
actions: '操作',
|
||||
@@ -877,7 +877,6 @@ export default {
|
||||
formula: '成本计算',
|
||||
input: '输入',
|
||||
output: '输出',
|
||||
schema: '价格凭证版本',
|
||||
identity: '计价身份',
|
||||
historicalSchema1: '历史作用域',
|
||||
historicalSchema2: '历史全局价格',
|
||||
|
||||
@@ -104,7 +104,7 @@ export default {
|
||||
restoreDefault: '恢复默认',
|
||||
inherited: '当前展示的是有效的内置规则;启用覆盖后才可编辑。',
|
||||
resetPending: '当前仍显示已发布的显式规则;保存后才会恢复当前版本默认。',
|
||||
replacementWarning: 'Group Header Rules 覆盖会替换整个全局对象,不会逐项合并。',
|
||||
replacementWarning: '分组请求头规则覆盖会替换整个全局对象,不会逐项合并。',
|
||||
securityNotice:
|
||||
'固定 Header 值属于普通配置;不要保存长期凭证。凭证 Header 必须使用字面量模板 {template}。',
|
||||
conflict: '全局 Header Rules 存在并发修改,请选择保留的版本。',
|
||||
|
||||
Reference in new issue
Block a user