@@ -154,6 +180,15 @@ export function ChannelsPrimaryButtons() {
...
@@ -154,6 +180,15 @@ export function ChannelsPrimaryButtons() {
{/* Mobile-only: toggle switches */}
{/* Mobile-only: toggle switches */}
<DropdownMenuCheckboxItem
<DropdownMenuCheckboxItem
className='sm:hidden'
className='sm:hidden'
checked={batchMode}
onCheckedChange={handleBatchModeToggle}
>
<ListChecksclassName='mr-2 h-4 w-4'/>
{t('Batch Operations')}
</DropdownMenuCheckboxItem>
<DropdownMenuCheckboxItem
className='sm:hidden'
checked={enableTagMode}
checked={enableTagMode}
onCheckedChange={handleTagModeToggle}
onCheckedChange={handleTagModeToggle}
>
>
...
@@ -219,14 +254,12 @@ export function ChannelsPrimaryButtons() {
...
@@ -219,14 +254,12 @@ export function ChannelsPrimaryButtons() {
<DropdownMenuSeparator/>
<DropdownMenuSeparator/>
<DropdownMenuItem
<DropdownMenuItem
onClick={()=>{
onSelect={(e)=>{
handleFixAbilities(queryClient,(_result)=>{
e.preventDefault()
// eslint-disable-next-line no-console
setShowConsistencyDialog(true)
console.log('Fix abilities result:',_result)
})
}}
}}
>
>
{t('Fix Abilities')}
{t('Repair Channel Consistency')}
<DropdownMenuShortcut>
<DropdownMenuShortcut>
<Settings2className='h-4 w-4'/>
<Settings2className='h-4 w-4'/>
</DropdownMenuShortcut>
</DropdownMenuShortcut>
...
@@ -269,6 +302,29 @@ export function ChannelsPrimaryButtons() {
...
@@ -269,6 +302,29 @@ export function ChannelsPrimaryButtons() {
setShowDeleteDialog(false)
setShowDeleteDialog(false)
}}
}}
/>
/>
<ConfirmDialog
open={showConsistencyDialog}
onOpenChange={setShowConsistencyDialog}
title={t('Repair channel consistency?')}
desc={t(
'This will rebuild the channel routing index from every channel configuration, including supported models, groups, priorities, and weights. Routing may be briefly incomplete while the rebuild is running. Continue?'
"Batch edit all channels with this tag. Leave fields empty to keep current values.":"Batch edit all channels with this tag. Leave fields empty to keep current values.",
"Batch edit all channels with this tag. Leave fields empty to keep current values.":"Batch edit all channels with this tag. Leave fields empty to keep current values.",
"Batch set tag for {{count}} channels":"Batch set tag for {{count}} channels",
"Batch set tag for {{count}} channels":"Batch set tag for {{count}} channels",
"Batch test completed: {{count}} succeeded":"Batch test completed: {{count}} succeeded",
"Batch test completed: {{count}} succeeded":"Batch test completed: {{count}} succeeded",
...
@@ -711,6 +712,7 @@
...
@@ -711,6 +712,7 @@
"Channel Affinity":"Channel Affinity",
"Channel Affinity":"Channel Affinity",
"Channel affinity reuses the last successful channel based on keys extracted from the request context or JSON body.":"Channel affinity reuses the last successful channel based on keys extracted from the request context or JSON body.",
"Channel affinity reuses the last successful channel based on keys extracted from the request context or JSON body.":"Channel affinity reuses the last successful channel based on keys extracted from the request context or JSON body.",
"Repeat the administrator password":"Repeat the administrator password",
"Repeat the administrator password":"Repeat the administrator password",
"Replace":"Replace",
"Replace":"Replace",
"Replace all existing keys":"Replace all existing keys",
"Replace all existing keys":"Replace all existing keys",
...
@@ -4369,6 +4375,7 @@
...
@@ -4369,6 +4375,7 @@
"This will permanently delete user":"This will permanently delete user",
"This will permanently delete user":"This will permanently delete user",
"This will permanently remove all log entries created before {{date}}.":"This will permanently remove all log entries created before {{date}}.",
"This will permanently remove all log entries created before {{date}}.":"This will permanently remove all log entries created before {{date}}.",
"This will permanently remove log entries before the selected timestamp.":"This will permanently remove log entries before the selected timestamp.",
"This will permanently remove log entries before the selected timestamp.":"This will permanently remove log entries before the selected timestamp.",
"This will rebuild the channel routing index from every channel configuration, including supported models, groups, priorities, and weights. Routing may be briefly incomplete while the rebuild is running. Continue?":"This will rebuild the channel routing index from every channel configuration, including supported models, groups, priorities, and weights. Routing may be briefly incomplete while the rebuild is running. Continue?",
"This will update the priority to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?":"This will update the priority to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?",
"This will update the priority to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?":"This will update the priority to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?",
"This will update the weight to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?":"This will update the weight to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?",
"This will update the weight to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?":"This will update the weight to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?",
"Batch edit all channels with this tag. Leave fields empty to keep current values.":"Modifiez par lot tous les canaux avec ce tag. Laissez les champs vides pour conserver les valeurs actuelles.",
"Batch edit all channels with this tag. Leave fields empty to keep current values.":"Modifiez par lot tous les canaux avec ce tag. Laissez les champs vides pour conserver les valeurs actuelles.",
"Batch Edit by Tag":"Modification par lot par tag",
"Batch Edit by Tag":"Modification par lot par tag",
"Batch enable failed":"Échec de l'activation par lots",
"Batch enable failed":"Échec de l'activation par lots",
"Batch Operations":"Opérations par lots",
"Batch processing failed":"Échec du traitement par lot",
"Batch processing failed":"Échec du traitement par lot",
"Batch set tag for {{count}} channels":"Étiquette définie par lot pour {{count}} canaux",
"Batch set tag for {{count}} channels":"Étiquette définie par lot pour {{count}} canaux",
"Batch test completed: {{count}} succeeded":"Test par lots terminé : {{count}} réussi(s)",
"Batch test completed: {{count}} succeeded":"Test par lots terminé : {{count}} réussi(s)",
...
@@ -711,6 +712,7 @@
...
@@ -711,6 +712,7 @@
"Channel Affinity":"Affinité de canal",
"Channel Affinity":"Affinité de canal",
"Channel affinity reuses the last successful channel based on keys extracted from the request context or JSON body.":"L'affinité de canal réutilise le dernier canal ayant réussi, en se basant sur les clés extraites du contexte de la requête ou du corps JSON.",
"Channel affinity reuses the last successful channel based on keys extracted from the request context or JSON body.":"L'affinité de canal réutilise le dernier canal ayant réussi, en se basant sur les clés extraites du contexte de la requête ou du corps JSON.",
"Channel Affinity: Upstream Cache Hit":"Affinité de canal : hit de cache en amont",
"Channel Affinity: Upstream Cache Hit":"Affinité de canal : hit de cache en amont",
"Repair Channel Consistency":"Réparer la cohérence des canaux",
"Repair channel consistency?":"Réparer la cohérence des canaux ?",
"Repeat the administrator password":"Répéter le mot de passe administrateur",
"Repeat the administrator password":"Répéter le mot de passe administrateur",
"Replace":"Remplacer",
"Replace":"Remplacer",
"Replace all existing keys":"Remplacer toutes les clés existantes",
"Replace all existing keys":"Remplacer toutes les clés existantes",
...
@@ -4369,6 +4375,7 @@
...
@@ -4369,6 +4375,7 @@
"This will permanently delete user":"Cela supprimera définitivement l'utilisateur",
"This will permanently delete user":"Cela supprimera définitivement l'utilisateur",
"This will permanently remove all log entries created before {{date}}.":"Cela supprimera définitivement toutes les entrées de journal créées avant le {{date}}.",
"This will permanently remove all log entries created before {{date}}.":"Cela supprimera définitivement toutes les entrées de journal créées avant le {{date}}.",
"This will permanently remove log entries before the selected timestamp.":"Cela supprimera définitivement les entrées de journal antérieures à l'horodatage sélectionné.",
"This will permanently remove log entries before the selected timestamp.":"Cela supprimera définitivement les entrées de journal antérieures à l'horodatage sélectionné.",
"This will rebuild the channel routing index from every channel configuration, including supported models, groups, priorities, and weights. Routing may be briefly incomplete while the rebuild is running. Continue?":"Cette action reconstruit l’index de routage des canaux à partir de toutes les configurations, y compris les modèles pris en charge, les groupes, les priorités et les poids. Le routage peut être brièvement incomplet pendant la reconstruction. Continuer ?",
"This will update the priority to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?":"La priorité de tous les {{count}} canaux avec le tag \"{{tag}}\" sera mise à jour à {{value}}. Continuer ?",
"This will update the priority to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?":"La priorité de tous les {{count}} canaux avec le tag \"{{tag}}\" sera mise à jour à {{value}}. Continuer ?",
"This will update the weight to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?":"Le poids de tous les {{count}} canaux avec le tag \"{{tag}}\" sera mis à jour à {{value}}. Continuer ?",
"This will update the weight to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?":"Le poids de tous les {{count}} canaux avec le tag \"{{tag}}\" sera mis à jour à {{value}}. Continuer ?",
"Batch edit all channels with this tag. Leave fields empty to keep current values.":"このタグを持つすべてのチャネルを一括編集します。現在の値を維持するには、フィールドを空のままにしてください。",
"Batch edit all channels with this tag. Leave fields empty to keep current values.":"このタグを持つすべてのチャネルを一括編集します。現在の値を維持するには、フィールドを空のままにしてください。",
"Batch Edit by Tag":"タグによる一括編集",
"Batch Edit by Tag":"タグによる一括編集",
"Batch enable failed":"一括有効化に失敗しました",
"Batch enable failed":"一括有効化に失敗しました",
"Batch Operations":"一括操作",
"Batch processing failed":"一括処理に失敗しました",
"Batch processing failed":"一括処理に失敗しました",
"Batch set tag for {{count}} channels":"{{count}} 件のチャネルにタグを一括設定しました",
"Batch set tag for {{count}} channels":"{{count}} 件のチャネルにタグを一括設定しました",
"Batch test completed: {{count}} succeeded":"バッチテストが完了しました: {{count}} 件成功",
"Batch test completed: {{count}} succeeded":"バッチテストが完了しました: {{count}} 件成功",
...
@@ -711,6 +712,7 @@
...
@@ -711,6 +712,7 @@
"Channel Affinity":"チャネルアフィニティ",
"Channel Affinity":"チャネルアフィニティ",
"Channel affinity reuses the last successful channel based on keys extracted from the request context or JSON body.":"チャネルアフィニティは、リクエストコンテキストまたは JSON Body から抽出したキーに基づいて、前回成功したチャネルを優先的に再利用します。",
"Channel affinity reuses the last successful channel based on keys extracted from the request context or JSON body.":"チャネルアフィニティは、リクエストコンテキストまたは JSON Body から抽出したキーに基づいて、前回成功したチャネルを優先的に再利用します。",
"Repeat the administrator password":"管理者パスワードの再入力",
"Repeat the administrator password":"管理者パスワードの再入力",
"Replace":"置換",
"Replace":"置換",
"Replace all existing keys":"既存のすべてのキーを置き換える",
"Replace all existing keys":"既存のすべてのキーを置き換える",
...
@@ -4369,6 +4375,7 @@
...
@@ -4369,6 +4375,7 @@
"This will permanently delete user":"これによりユーザーが完全に削除されます",
"This will permanently delete user":"これによりユーザーが完全に削除されます",
"This will permanently remove all log entries created before {{date}}.":"{{date}} より前に作成されたすべてのログエントリが完全に削除されます。",
"This will permanently remove all log entries created before {{date}}.":"{{date}} より前に作成されたすべてのログエントリが完全に削除されます。",
"This will permanently remove log entries before the selected timestamp.":"選択したタイムスタンプより前のログエントリが完全に削除されます。",
"This will permanently remove log entries before the selected timestamp.":"選択したタイムスタンプより前のログエントリが完全に削除されます。",
"This will rebuild the channel routing index from every channel configuration, including supported models, groups, priorities, and weights. Routing may be briefly incomplete while the rebuild is running. Continue?":"すべてのチャネル設定からルーティングインデックスを再構築します。対応モデル、グループ、優先度、重みが含まれます。再構築中はルーティングが一時的に不完全になる可能性があります。続行しますか?",
"This will update the priority to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?":"タグ \"{{tag}}\" の {{count}} 件すべてのチャネルの優先度を {{value}} に更新します。続行しますか?",
"This will update the priority to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?":"タグ \"{{tag}}\" の {{count}} 件すべてのチャネルの優先度を {{value}} に更新します。続行しますか?",
"This will update the weight to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?":"タグ \"{{tag}}\" の {{count}} 件すべてのチャネルの重みを {{value}} に更新します。続行しますか?",
"This will update the weight to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?":"タグ \"{{tag}}\" の {{count}} 件すべてのチャネルの重みを {{value}} に更新します。続行しますか?",
"Batch edit all channels with this tag. Leave fields empty to keep current values.":"Пакетно редактировать все каналы с этим тегом. Оставьте поля пустыми, чтобы сохранить текущие значения.",
"Batch edit all channels with this tag. Leave fields empty to keep current values.":"Пакетно редактировать все каналы с этим тегом. Оставьте поля пустыми, чтобы сохранить текущие значения.",
"Batch Edit by Tag":"Пакетное редактирование по тегу",
"Batch Edit by Tag":"Пакетное редактирование по тегу",
"Batch enable failed":"Пакетное включение не удалось",
"Batch enable failed":"Пакетное включение не удалось",
"Batch Operations":"Пакетные операции",
"Batch processing failed":"Пакетная обработка не удалась",
"Batch processing failed":"Пакетная обработка не удалась",
"Batch set tag for {{count}} channels":"Тег пакетно задан для {{count}} каналов",
"Batch set tag for {{count}} channels":"Тег пакетно задан для {{count}} каналов",
"Batch test completed: {{count}} succeeded":"Пакетный тест завершен: {{count}} успешно",
"Batch test completed: {{count}} succeeded":"Пакетный тест завершен: {{count}} успешно",
...
@@ -711,6 +712,7 @@
...
@@ -711,6 +712,7 @@
"Channel Affinity":"Привязка к каналу",
"Channel Affinity":"Привязка к каналу",
"Channel affinity reuses the last successful channel based on keys extracted from the request context or JSON body.":"Привязка к каналу повторно использует последний успешный канал на основе ключей, извлечённых из контекста запроса или тела JSON.",
"Channel affinity reuses the last successful channel based on keys extracted from the request context or JSON body.":"Привязка к каналу повторно использует последний успешный канал на основе ключей, извлечённых из контекста запроса или тела JSON.",
"Channel Affinity: Upstream Cache Hit":"Привязка к каналу: попадание в кэш upstream",
"Channel Affinity: Upstream Cache Hit":"Привязка к каналу: попадание в кэш upstream",
"Repeat the administrator password":"Повторите пароль администратора",
"Repeat the administrator password":"Повторите пароль администратора",
"Replace":"Заменить",
"Replace":"Заменить",
"Replace all existing keys":"Заменить все существующие ключи",
"Replace all existing keys":"Заменить все существующие ключи",
...
@@ -4369,6 +4375,7 @@
...
@@ -4369,6 +4375,7 @@
"This will permanently delete user":"Это безвозвратно удалит пользователя",
"This will permanently delete user":"Это безвозвратно удалит пользователя",
"This will permanently remove all log entries created before {{date}}.":"Это безвозвратно удалит все записи журнала, созданные до {{date}}.",
"This will permanently remove all log entries created before {{date}}.":"Это безвозвратно удалит все записи журнала, созданные до {{date}}.",
"This will permanently remove log entries before the selected timestamp.":"Это безвозвратно удалит записи журнала до выбранной временной метки.",
"This will permanently remove log entries before the selected timestamp.":"Это безвозвратно удалит записи журнала до выбранной временной метки.",
"This will rebuild the channel routing index from every channel configuration, including supported models, groups, priorities, and weights. Routing may be briefly incomplete while the rebuild is running. Continue?":"Будет заново построен индекс маршрутизации каналов на основе всех конфигураций каналов, включая поддерживаемые модели, группы, приоритеты и веса. Во время перестроения маршрутизация может кратковременно быть неполной. Продолжить?",
"This will update the priority to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?":"Приоритет всех каналов ({{count}}) с тегом \"{{tag}}\" будет изменен на {{value}}. Продолжить?",
"This will update the priority to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?":"Приоритет всех каналов ({{count}}) с тегом \"{{tag}}\" будет изменен на {{value}}. Продолжить?",
"This will update the weight to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?":"Вес всех каналов ({{count}}) с тегом \"{{tag}}\" будет изменен на {{value}}. Продолжить?",
"This will update the weight to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?":"Вес всех каналов ({{count}}) с тегом \"{{tag}}\" будет изменен на {{value}}. Продолжить?",
"Batch edit all channels with this tag. Leave fields empty to keep current values.":"Chỉnh sửa hàng loạt tất cả các kênh có gắn thẻ này. Để trống các trường để giữ nguyên giá trị hiện tại.",
"Batch edit all channels with this tag. Leave fields empty to keep current values.":"Chỉnh sửa hàng loạt tất cả các kênh có gắn thẻ này. Để trống các trường để giữ nguyên giá trị hiện tại.",
"Batch Edit by Tag":"Chỉnh sửa hàng loạt theo Thẻ",
"Batch Edit by Tag":"Chỉnh sửa hàng loạt theo Thẻ",
"Batch enable failed":"Kích hoạt hàng loạt thất bại",
"Batch enable failed":"Kích hoạt hàng loạt thất bại",
"Batch Operations":"Thao tác hàng loạt",
"Batch processing failed":"Xử lý hàng loạt thất bại",
"Batch processing failed":"Xử lý hàng loạt thất bại",
"Batch set tag for {{count}} channels":"Đã đặt thẻ hàng loạt cho {{count}} kênh",
"Batch set tag for {{count}} channels":"Đã đặt thẻ hàng loạt cho {{count}} kênh",
"Batch test completed: {{count}} succeeded":"Kiểm thử hàng loạt hoàn tất: {{count}} thành công",
"Batch test completed: {{count}} succeeded":"Kiểm thử hàng loạt hoàn tất: {{count}} thành công",
...
@@ -711,6 +712,7 @@
...
@@ -711,6 +712,7 @@
"Channel Affinity":"Ưu tiên kênh",
"Channel Affinity":"Ưu tiên kênh",
"Channel affinity reuses the last successful channel based on keys extracted from the request context or JSON body.":"Ưu tiên kênh sẽ sử dụng lại kênh thành công gần nhất dựa trên các khóa được trích xuất từ ngữ cảnh yêu cầu hoặc JSON body.",
"Channel affinity reuses the last successful channel based on keys extracted from the request context or JSON body.":"Ưu tiên kênh sẽ sử dụng lại kênh thành công gần nhất dựa trên các khóa được trích xuất từ ngữ cảnh yêu cầu hoặc JSON body.",
"Channel Affinity: Upstream Cache Hit":"Ưu tiên kênh: Cache hit từ upstream",
"Channel Affinity: Upstream Cache Hit":"Ưu tiên kênh: Cache hit từ upstream",
"Channel consistency repaired: {{success}} succeeded, {{fails}} failed":"Đã sửa tính nhất quán kênh: {{success}} thành công, {{fails}} thất bại",
"Channel copied successfully":"Sao chép kênh thành công",
"Channel copied successfully":"Sao chép kênh thành công",
"Channel created successfully":"Tạo kênh thành công",
"Channel created successfully":"Tạo kênh thành công",
"Channel deleted successfully":"Xóa kênh thành công",
"Channel deleted successfully":"Xóa kênh thành công",
...
@@ -1772,7 +1774,7 @@
...
@@ -1772,7 +1774,7 @@
"Failed to fetch upstream ratios":"Không thể lấy tỷ lệ upstream",
"Failed to fetch upstream ratios":"Không thể lấy tỷ lệ upstream",
"Failed to fetch usage":"Không lấy được mức sử dụng",
"Failed to fetch usage":"Không lấy được mức sử dụng",
"Failed to fetch user information":"Không lấy được thông tin người dùng",
"Failed to fetch user information":"Không lấy được thông tin người dùng",
"Failed to fix abilities":"Không thể khắc phục các khả năng",
"Failed to fix abilities":"Không thể sửa tính nhất quán kênh",
"Failed to generate token":"Không thể tạo token",
"Failed to generate token":"Không thể tạo token",
"Failed to initialize OAuth":"Không thể khởi tạo OAuth",
"Failed to initialize OAuth":"Không thể khởi tạo OAuth",
"Failed to initialize system":"Không thể khởi tạo hệ thống",
"Failed to initialize system":"Không thể khởi tạo hệ thống",
...
@@ -1800,6 +1802,7 @@
...
@@ -1800,6 +1802,7 @@
"Failed to regenerate backup codes":"Không thể tạo lại mã sao lưu",
"Failed to regenerate backup codes":"Không thể tạo lại mã sao lưu",
"Failed to register Passkey":"Không thể đăng ký Passkey",
"Failed to register Passkey":"Không thể đăng ký Passkey",
"Failed to remove Passkey":"Không thể xóa Passkey",
"Failed to remove Passkey":"Không thể xóa Passkey",
"Failed to repair channel consistency":"Không thể sửa tính nhất quán kênh",
"Failed to reset 2FA":"Không thể đặt lại 2FA",
"Failed to reset 2FA":"Không thể đặt lại 2FA",
"Failed to reset model ratios":"Không thể đặt lại tỷ lệ mô hình",
"Failed to reset model ratios":"Không thể đặt lại tỷ lệ mô hình",
"Failed to reset Passkey":"Không thể đặt lại Passkey",
"Failed to reset Passkey":"Không thể đặt lại Passkey",
...
@@ -1919,8 +1922,8 @@
...
@@ -1919,8 +1922,8 @@
"Finish Time":"Thời gian hoàn thành",
"Finish Time":"Thời gian hoàn thành",
"First API request":"Yêu cầu API đầu tiên",
"First API request":"Yêu cầu API đầu tiên",
"First/Last Frame to Video":"Khung đầu/cuối sang video",
"First/Last Frame to Video":"Khung đầu/cuối sang video",
"Fixed abilities: {{success}} succeeded, {{fails}} failed":"Đã sửa tính nhất quán kênh: {{success}} thành công, {{fails}} thất bại",
"Fixed price":"Giá cố định",
"Fixed price":"Giá cố định",
"Fixed price (USD)":"Giá cố định (USD)",
"Fixed price (USD)":"Giá cố định (USD)",
"Fixed request price":"Giá cố định theo yêu cầu",
"Fixed request price":"Giá cố định theo yêu cầu",
...
@@ -3584,6 +3587,9 @@
...
@@ -3584,6 +3587,9 @@
"Rename deployment":"Đổi tên deployment",
"Rename deployment":"Đổi tên deployment",
"Rename failed":"Đổi tên thất bại",
"Rename failed":"Đổi tên thất bại",
"Renamed successfully":"Đổi tên thành công",
"Renamed successfully":"Đổi tên thành công",
"Repair":"Sửa",
"Repair Channel Consistency":"Sửa tính nhất quán kênh",
"Repair channel consistency?":"Sửa tính nhất quán kênh?",
"Repeat the administrator password":"Nhập lại mật khẩu quản trị viên",
"Repeat the administrator password":"Nhập lại mật khẩu quản trị viên",
"Replace":"Thay thế",
"Replace":"Thay thế",
"Replace all existing keys":"Thay thế tất cả các khóa hiện có",
"Replace all existing keys":"Thay thế tất cả các khóa hiện có",
...
@@ -4369,6 +4375,7 @@
...
@@ -4369,6 +4375,7 @@
"This will permanently delete user":"Thao tác này sẽ xóa vĩnh viễn người dùng",
"This will permanently delete user":"Thao tác này sẽ xóa vĩnh viễn người dùng",
"This will permanently remove all log entries created before {{date}}.":"Thao tác này sẽ xóa vĩnh viễn tất cả các mục nhật ký được tạo trước {{date}}.",
"This will permanently remove all log entries created before {{date}}.":"Thao tác này sẽ xóa vĩnh viễn tất cả các mục nhật ký được tạo trước {{date}}.",
"This will permanently remove log entries before the selected timestamp.":"Thao tác này sẽ xóa vĩnh viễn các mục nhật ký trước mốc thời gian đã chọn.",
"This will permanently remove log entries before the selected timestamp.":"Thao tác này sẽ xóa vĩnh viễn các mục nhật ký trước mốc thời gian đã chọn.",
"This will rebuild the channel routing index from every channel configuration, including supported models, groups, priorities, and weights. Routing may be briefly incomplete while the rebuild is running. Continue?":"Thao tác này sẽ xây dựng lại chỉ mục định tuyến kênh từ toàn bộ cấu hình kênh, bao gồm mô hình được hỗ trợ, nhóm, độ ưu tiên và trọng số. Định tuyến có thể tạm thời chưa đầy đủ trong khi xây dựng lại. Tiếp tục?",
"This will update the priority to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?":"Thao tác này sẽ cập nhật mức ưu tiên thành {{value}} cho tất cả {{count}} kênh có thẻ \"{{tag}}\". Tiếp tục?",
"This will update the priority to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?":"Thao tác này sẽ cập nhật mức ưu tiên thành {{value}} cho tất cả {{count}} kênh có thẻ \"{{tag}}\". Tiếp tục?",
"This will update the weight to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?":"Thao tác này sẽ cập nhật trọng số thành {{value}} cho tất cả {{count}} kênh có thẻ \"{{tag}}\". Tiếp tục?",
"This will update the weight to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?":"Thao tác này sẽ cập nhật trọng số thành {{value}} cho tất cả {{count}} kênh có thẻ \"{{tag}}\". Tiếp tục?",
"Batch edit all channels with this tag. Leave fields empty to keep current values.":"批量编辑带有此标签的所有渠道。留空字段以保留当前值。",
"Batch edit all channels with this tag. Leave fields empty to keep current values.":"批量编辑带有此标签的所有渠道。留空字段以保留当前值。",
"Batch Edit by Tag":"按标签批量编辑",
"Batch Edit by Tag":"按标签批量编辑",
"Batch enable failed":"批量启用失败",
"Batch enable failed":"批量启用失败",
"Batch Operations":"批量操作",
"Batch processing failed":"批量处理失败",
"Batch processing failed":"批量处理失败",
"Batch set tag for {{count}} channels":"批量为 {{count}} 个渠道设置标签",
"Batch set tag for {{count}} channels":"批量为 {{count}} 个渠道设置标签",
"Batch test completed: {{count}} succeeded":"批量测试完成:{{count}} 个成功",
"Batch test completed: {{count}} succeeded":"批量测试完成:{{count}} 个成功",
...
@@ -711,6 +712,7 @@
...
@@ -711,6 +712,7 @@
"Channel Affinity":"渠道亲和性",
"Channel Affinity":"渠道亲和性",
"Channel affinity reuses the last successful channel based on keys extracted from the request context or JSON body.":"渠道亲和性会基于从请求上下文或 JSON Body 提取的 Key,优先复用上一次成功的渠道。",
"Channel affinity reuses the last successful channel based on keys extracted from the request context or JSON body.":"渠道亲和性会基于从请求上下文或 JSON Body 提取的 Key,优先复用上一次成功的渠道。",
"This will permanently remove all log entries created before {{date}}.":"这将永久删除 {{date}} 之前创建的所有日志条目。",
"This will permanently remove all log entries created before {{date}}.":"这将永久删除 {{date}} 之前创建的所有日志条目。",
"This will permanently remove log entries before the selected timestamp.":"这将永久删除所选时间戳之前的日志条目。",
"This will permanently remove log entries before the selected timestamp.":"这将永久删除所选时间戳之前的日志条目。",
"This will rebuild the channel routing index from every channel configuration, including supported models, groups, priorities, and weights. Routing may be briefly incomplete while the rebuild is running. Continue?":"这会根据所有渠道配置重建渠道路由索引,包括支持模型、分组、优先级和权重。重建期间路由可能短暂不完整。是否继续?",
"This will update the priority to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?":"这会将标签 \"{{tag}}\" 下所有 {{count}} 个渠道的优先级更新为 {{value}}。继续吗?",
"This will update the priority to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?":"这会将标签 \"{{tag}}\" 下所有 {{count}} 个渠道的优先级更新为 {{value}}。继续吗?",
"This will update the weight to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?":"这会将标签 \"{{tag}}\" 下所有 {{count}} 个渠道的权重更新为 {{value}}。继续吗?",
"This will update the weight to {{value}} for all {{count}} channel(s) with tag \"{{tag}}\". Continue?":"这会将标签 \"{{tag}}\" 下所有 {{count}} 个渠道的权重更新为 {{value}}。继续吗?",