Baka-proofing OpenRouter OAuth flow
| @@ -337,6 +337,8 @@ | |||
| 337 | "koboldcpp API key (optional)": "مفتاح koboldcpp API (اختياري)", | 337 | "koboldcpp API key (optional)": "مفتاح koboldcpp API (اختياري)", |
| 338 | "Example: http://127.0.0.1:5001": "مثال: http://127.0.0.1:5001", | 338 | "Example: http://127.0.0.1:5001": "مثال: http://127.0.0.1:5001", |
| 339 | "Authorize": "تفويض", | 339 | "Authorize": "تفويض", |
| 340 | "OpenRouter API key already exists": "مفتاح API OpenRouter موجود بالفعل", | ||
| 341 | "Do you really wish to create a new OpenRouter key? Your existing key will not be deleted.": "هل تريد حقاً إنشاء مفتاح OpenRouter جديد؟ لن يتم حذف مفتاحك الموجود.", | ||
| 340 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "احصل على رمز واجهة برمجة التطبيقات الخاص بك لموزع الاتصالات باستخدام تدفق OAuth. سيتم توجيهك إلى openrouter.ai", | 342 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "احصل على رمز واجهة برمجة التطبيقات الخاص بك لموزع الاتصالات باستخدام تدفق OAuth. سيتم توجيهك إلى openrouter.ai", |
| 341 | "Bypass status check": "تجاوز فحص الحالة", | 343 | "Bypass status check": "تجاوز فحص الحالة", |
| 342 | "Chat Completion Source": "مصدر استكمال الدردشة", | 344 | "Chat Completion Source": "مصدر استكمال الدردشة", |
| @@ -337,6 +337,8 @@ | |||
| 337 | "koboldcpp API key (optional)": "koboldcpp API-Schlüssel (optional)", | 337 | "koboldcpp API key (optional)": "koboldcpp API-Schlüssel (optional)", |
| 338 | "Example: http://127.0.0.1:5001": "Beispiel: http://127.0.0.1:5001", | 338 | "Example: http://127.0.0.1:5001": "Beispiel: http://127.0.0.1:5001", |
| 339 | "Authorize": "Autorisieren", | 339 | "Authorize": "Autorisieren", |
| 340 | "OpenRouter API key already exists": "OpenRouter API-Schlüssel existiert bereits", | ||
| 341 | "Do you really wish to create a new OpenRouter key? Your existing key will not be deleted.": "Möchten Sie wirklich einen neuen OpenRouter API-Schlüssel erstellen? Ihr vorhandener Schlüssel wird nicht gelöscht.", | ||
| 340 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Hole dein OpenRouter-API-Token mit OAuth-Fluss. Du wirst zu openrouter.ai weitergeleitet", | 342 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Hole dein OpenRouter-API-Token mit OAuth-Fluss. Du wirst zu openrouter.ai weitergeleitet", |
| 341 | "Bypass status check": "Umgehe Statusüberprüfung", | 343 | "Bypass status check": "Umgehe Statusüberprüfung", |
| 342 | "Chat Completion Source": "Quelle für Chat-Vervollständigung", | 344 | "Chat Completion Source": "Quelle für Chat-Vervollständigung", |
| @@ -337,6 +337,8 @@ | |||
| 337 | "koboldcpp API key (optional)": "Clave API de koboldcpp (opcional)", | 337 | "koboldcpp API key (optional)": "Clave API de koboldcpp (opcional)", |
| 338 | "Example: http://127.0.0.1:5001": "Ejemplo: http://127.0.0.1:5001", | 338 | "Example: http://127.0.0.1:5001": "Ejemplo: http://127.0.0.1:5001", |
| 339 | "Authorize": "Autorizar", | 339 | "Authorize": "Autorizar", |
| 340 | "OpenRouter API key already exists": "La clave de API de OpenRouter ya existe", | ||
| 341 | "Do you really wish to create a new OpenRouter key? Your existing key will not be deleted.": "¿Realmente deseas crear una nueva clave de API de OpenRouter? Tu clave existente no será eliminada.", | ||
| 340 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Obtenga su token de API de OpenRouter utilizando el flujo OAuth. Será redirigido a openrouter.ai", | 342 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Obtenga su token de API de OpenRouter utilizando el flujo OAuth. Será redirigido a openrouter.ai", |
| 341 | "Bypass status check": "Saltar la verificación del estado", | 343 | "Bypass status check": "Saltar la verificación del estado", |
| 342 | "Chat Completion Source": "Fuente de Completado de Chat", | 344 | "Chat Completion Source": "Fuente de Completado de Chat", |
| @@ -320,6 +320,8 @@ | |||
| 320 | "koboldcpp API key (optional)": "Clé API koboldcpp (facultatif)", | 320 | "koboldcpp API key (optional)": "Clé API koboldcpp (facultatif)", |
| 321 | "Example: http://127.0.0.1:5001": "Exemple : http://127.0.0.1:5001", | 321 | "Example: http://127.0.0.1:5001": "Exemple : http://127.0.0.1:5001", |
| 322 | "Authorize": "Autoriser", | 322 | "Authorize": "Autoriser", |
| 323 | "OpenRouter API key already exists": "La clé API OpenRouter existe déjà", | ||
| 324 | "Do you really wish to create a new OpenRouter key? Your existing key will not be deleted.": "Voulez-vous vraiment créer une nouvelle clé OpenRouter ? Votre clé existante ne sera pas supprimée.", | ||
| 323 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Obtenez votre jeton API OpenRouter en utilisant le flux OAuth. Vous serez redirigé vers openrouter.ai", | 325 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Obtenez votre jeton API OpenRouter en utilisant le flux OAuth. Vous serez redirigé vers openrouter.ai", |
| 324 | "Bypass status check": "Contourner la vérification de l'état", | 326 | "Bypass status check": "Contourner la vérification de l'état", |
| 325 | "Chat Completion Source": "Source de complétion de chat", | 327 | "Chat Completion Source": "Source de complétion de chat", |
| @@ -335,6 +335,8 @@ | |||
| 335 | "koboldcpp API key (optional)": "koboldcpp API lykill (valfrjálst)", | 335 | "koboldcpp API key (optional)": "koboldcpp API lykill (valfrjálst)", |
| 336 | "Example: http://127.0.0.1:5001": "Dæmi: http://127.0.0.1:5001", | 336 | "Example: http://127.0.0.1:5001": "Dæmi: http://127.0.0.1:5001", |
| 337 | "Authorize": "Heimild", | 337 | "Authorize": "Heimild", |
| 338 | "OpenRouter API key already exists": "OpenRouter API lykill er þegar til", | ||
| 339 | "Do you really wish to create a new OpenRouter key? Your existing key will not be deleted.": "Viltu virkilega búa til nýjan OpenRouter lykil? Núverandi lykill þinn verður ekki eytt.", | ||
| 338 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Fáðu API lykilinn þinn fyrir OpenRouter með því að nota OAuth strauminn. Þú verður endurvísað(ð/ur) á openrouter.ai", | 340 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Fáðu API lykilinn þinn fyrir OpenRouter með því að nota OAuth strauminn. Þú verður endurvísað(ð/ur) á openrouter.ai", |
| 339 | "Bypass status check": "Hlaupa framhjá stöðutík", | 341 | "Bypass status check": "Hlaupa framhjá stöðutík", |
| 340 | "Chat Completion Source": "Heimild að fullvirkni spjalls", | 342 | "Chat Completion Source": "Heimild að fullvirkni spjalls", |
| @@ -337,6 +337,8 @@ | |||
| 337 | "koboldcpp API key (optional)": "Chiave API koboldcpp (opzionale)", | 337 | "koboldcpp API key (optional)": "Chiave API koboldcpp (opzionale)", |
| 338 | "Example: http://127.0.0.1:5001": "Esempio: http://127.0.0.1:5001", | 338 | "Example: http://127.0.0.1:5001": "Esempio: http://127.0.0.1:5001", |
| 339 | "Authorize": "Autorizzare", | 339 | "Authorize": "Autorizzare", |
| 340 | "OpenRouter API key already exists": "La chiave API di OpenRouter esiste già", | ||
| 341 | "Do you really wish to create a new OpenRouter key? Your existing key will not be deleted.": "Desideri veramente creare una nuova chiave API di OpenRouter? La tua chiave esistente non verrà eliminata.", | ||
| 340 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Ottieni il tuo token API di OpenRouter utilizzando il flusso OAuth. Sarai reindirizzato su openrouter.ai", | 342 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Ottieni il tuo token API di OpenRouter utilizzando il flusso OAuth. Sarai reindirizzato su openrouter.ai", |
| 341 | "Bypass status check": "Ignora controllo stato", | 343 | "Bypass status check": "Ignora controllo stato", |
| 342 | "Chat Completion Source": "Fonte di Completamento della Chat", | 344 | "Chat Completion Source": "Fonte di Completamento della Chat", |
| @@ -337,6 +337,8 @@ | |||
| 337 | "koboldcpp API key (optional)": "koboldcpp API キー (オプション)", | 337 | "koboldcpp API key (optional)": "koboldcpp API キー (オプション)", |
| 338 | "Example: http://127.0.0.1:5001": "例: http://127.0.0.1:5001", | 338 | "Example: http://127.0.0.1:5001": "例: http://127.0.0.1:5001", |
| 339 | "Authorize": "承認", | 339 | "Authorize": "承認", |
| 340 | "OpenRouter API key already exists": "OpenRouter API キーは既に存在します", | ||
| 341 | "Do you really wish to create a new OpenRouter key? Your existing key will not be deleted.": "新しい OpenRouter キーを作成してもよろしいですか?既存のキーは削除されません。", | ||
| 340 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "OAuthフローを使用してOpenRouter APIトークンを取得します。 openrouter.aiにリダイレクトされます", | 342 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "OAuthフローを使用してOpenRouter APIトークンを取得します。 openrouter.aiにリダイレクトされます", |
| 341 | "Bypass status check": "ステータスのチェックをバイパスする", | 343 | "Bypass status check": "ステータスのチェックをバイパスする", |
| 342 | "Chat Completion Source": "チャット補完ソース", | 344 | "Chat Completion Source": "チャット補完ソース", |
| @@ -337,6 +337,8 @@ | |||
| 337 | "koboldcpp API key (optional)": "koboldcpp API 키(선택사항)", | 337 | "koboldcpp API key (optional)": "koboldcpp API 키(선택사항)", |
| 338 | "Example: http://127.0.0.1:5001": "예: http://127.0.0.1:5001", | 338 | "Example: http://127.0.0.1:5001": "예: http://127.0.0.1:5001", |
| 339 | "Authorize": "승인하기", | 339 | "Authorize": "승인하기", |
| 340 | "OpenRouter API key already exists": "OpenRouter API 키가 이미 존재합니다", | ||
| 341 | "Do you really wish to create a new OpenRouter key? Your existing key will not be deleted.": "정말 새로운 OpenRouter 키를 만들기를 원하십니까? 기존 키는 삭제되지 않습니다.", | ||
| 340 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "OAuth 플로우를 사용하여 OpenRouter API 토큰을 가져옵니다. openrouter.ai로 리디렉션됩니다.", | 342 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "OAuth 플로우를 사용하여 OpenRouter API 토큰을 가져옵니다. openrouter.ai로 리디렉션됩니다.", |
| 341 | "Legacy API (pre-OAI, no streaming)": "레거시 API (OAI 이전, 스트리밍 없음)", | 343 | "Legacy API (pre-OAI, no streaming)": "레거시 API (OAI 이전, 스트리밍 없음)", |
| 342 | "Bypass status check": "상태 확인 우회", | 344 | "Bypass status check": "상태 확인 우회", |
| @@ -333,6 +333,8 @@ | |||
| 333 | "koboldcpp API key (optional)": "koboldcpp API-sleutel (optioneel)", | 333 | "koboldcpp API key (optional)": "koboldcpp API-sleutel (optioneel)", |
| 334 | "Example: http://127.0.0.1:5001": "Voorbeeld: http://127.0.0.1:5001", | 334 | "Example: http://127.0.0.1:5001": "Voorbeeld: http://127.0.0.1:5001", |
| 335 | "Authorize": "Toestemming geven", | 335 | "Authorize": "Toestemming geven", |
| 336 | "OpenRouter API key already exists": "OpenRouter API-sleutel bestaat al", | ||
| 337 | "Do you really wish to create a new OpenRouter key? Your existing key will not be deleted.": "Wilt u echt een nieuwe OpenRouter API-sleutel maken? Uw bestaande sleutel wordt niet verwijderd.", | ||
| 336 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Haal uw OpenRouter API-token op met behulp van OAuth-flow. U wordt doorgestuurd naar openrouter.ai", | 338 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Haal uw OpenRouter API-token op met behulp van OAuth-flow. U wordt doorgestuurd naar openrouter.ai", |
| 337 | "Bypass status check": "Omzeil statuscontrole", | 339 | "Bypass status check": "Omzeil statuscontrole", |
| 338 | "Chat Completion Source": "Bron voor Chatvoltooiing", | 340 | "Chat Completion Source": "Bron voor Chatvoltooiing", |
| @@ -335,6 +335,8 @@ | |||
| 335 | "koboldcpp API key (optional)": "Chave API koboldcpp (opcional)", | 335 | "koboldcpp API key (optional)": "Chave API koboldcpp (opcional)", |
| 336 | "Example: http://127.0.0.1:5001": "Exemplo: http://127.0.0.1:5001", | 336 | "Example: http://127.0.0.1:5001": "Exemplo: http://127.0.0.1:5001", |
| 337 | "Authorize": "Autorizar", | 337 | "Authorize": "Autorizar", |
| 338 | "OpenRouter API key already exists": "A chave de API do OpenRouter já existe", | ||
| 339 | "Do you really wish to create a new OpenRouter key? Your existing key will not be deleted.": "Você realmente deseja criar uma nova chave OpenRouter? Sua chave existente não será excluída.", | ||
| 338 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Obtenha seu token da API do OpenRouter usando o fluxo OAuth. Você será redirecionado para openrouter.ai", | 340 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Obtenha seu token da API do OpenRouter usando o fluxo OAuth. Você será redirecionado para openrouter.ai", |
| 339 | "Bypass status check": "Ignorar verificação de status", | 341 | "Bypass status check": "Ignorar verificação de status", |
| 340 | "Chat Completion Source": "Fonte de conclusão de chat", | 342 | "Chat Completion Source": "Fonte de conclusão de chat", |
| @@ -758,6 +758,8 @@ | |||
| 758 | "Doesn't work? Try adding": "Не работает? Попробуйте добавить в конце", | 758 | "Doesn't work? Try adding": "Не работает? Попробуйте добавить в конце", |
| 759 | "at the end!": "!", | 759 | "at the end!": "!", |
| 760 | "Authorize": "Авторизоваться", | 760 | "Authorize": "Авторизоваться", |
| 761 | "OpenRouter API key already exists": "Ключ API OpenRouter уже существует", | ||
| 762 | "Do you really wish to create a new OpenRouter key? Your existing key will not be deleted.": "Вы действительно хотите создать новый ключ OpenRouter? Ваш существующий ключ не будет удален.", | ||
| 761 | "No persona description": "[Нет описания]", | 763 | "No persona description": "[Нет описания]", |
| 762 | "Not connected to API!": "Нет соединения с API!", | 764 | "Not connected to API!": "Нет соединения с API!", |
| 763 | "Type a message, or /? for help": "Введите сообщение, или /? для получения справки", | 765 | "Type a message, or /? for help": "Введите сообщение, или /? для получения справки", |
| @@ -339,6 +339,8 @@ | |||
| 339 | "koboldcpp API key (optional)": "คีย์ API ของ koboldcpp (เพิ่มเติม)", | 339 | "koboldcpp API key (optional)": "คีย์ API ของ koboldcpp (เพิ่มเติม)", |
| 340 | "Example: http://127.0.0.1:5001": "ตัวอย่าง: http://127.0.0.1:5001", | 340 | "Example: http://127.0.0.1:5001": "ตัวอย่าง: http://127.0.0.1:5001", |
| 341 | "Authorize": "อนุญาต", | 341 | "Authorize": "อนุญาต", |
| 342 | "OpenRouter API key already exists": "คีย์ API ของ OpenRouter มีอยู่แล้ว", | ||
| 343 | "Do you really wish to create a new OpenRouter key? Your existing key will not be deleted.": "คุณต้องการสร้างคีย์ OpenRouter ใหม่จริง ๆ หรือไม่ คีย์ที่มีอยู่ของคุณจะไม่ถูกลบ", | ||
| 342 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "โปรดเข้าสู่ระบบเพื่อรับ OpenRouter API Token โดยใช้ OAuth Flow จากนั้นคุณจะถูกเปลี่ยนเส้นทางไปยังเว็บไซต์ของ openrouter.ai", | 344 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "โปรดเข้าสู่ระบบเพื่อรับ OpenRouter API Token โดยใช้ OAuth Flow จากนั้นคุณจะถูกเปลี่ยนเส้นทางไปยังเว็บไซต์ของ openrouter.ai", |
| 343 | "Bypass status check": "ข้ามการตรวจสอบสถานะ", | 345 | "Bypass status check": "ข้ามการตรวจสอบสถานะ", |
| 344 | "Chat Completion Source": "แหล่งที่มาของ Chat Completion", | 346 | "Chat Completion Source": "แหล่งที่มาของ Chat Completion", |
| @@ -335,6 +335,8 @@ | |||
| 335 | "koboldcpp API key (optional)": "API-ключ koboldcpp (необов’язково)", | 335 | "koboldcpp API key (optional)": "API-ключ koboldcpp (необов’язково)", |
| 336 | "Example: http://127.0.0.1:5001": "Приклад: http://127.0.0.1:5001", | 336 | "Example: http://127.0.0.1:5001": "Приклад: http://127.0.0.1:5001", |
| 337 | "Authorize": "Авторизувати", | 337 | "Authorize": "Авторизувати", |
| 338 | "OpenRouter API key already exists": "API ключ OpenRouter вже існує", | ||
| 339 | "Do you really wish to create a new OpenRouter key? Your existing key will not be deleted.": "Ви дійсно бажаєте створити новий ключ OpenRouter API? Ваш існуючий ключ не буде видалено.", | ||
| 338 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Отримайте свій токен API OpenRouter за допомогою OAuth. Вас буде перенаправлено на openrouter.ai", | 340 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Отримайте свій токен API OpenRouter за допомогою OAuth. Вас буде перенаправлено на openrouter.ai", |
| 339 | "Bypass status check": "Обійти перевірку статусу", | 341 | "Bypass status check": "Обійти перевірку статусу", |
| 340 | "Chat Completion Source": "Джерело Chat Completion", | 342 | "Chat Completion Source": "Джерело Chat Completion", |
| @@ -335,6 +335,8 @@ | |||
| 335 | "koboldcpp API key (optional)": "Key API koboldcpp (tùy chọn)", | 335 | "koboldcpp API key (optional)": "Key API koboldcpp (tùy chọn)", |
| 336 | "Example: http://127.0.0.1:5001": "Ví dụ: http://127.0.0.1:5001", | 336 | "Example: http://127.0.0.1:5001": "Ví dụ: http://127.0.0.1:5001", |
| 337 | "Cho phép": "Ủy quyền", | 337 | "Cho phép": "Ủy quyền", |
| 338 | "OpenRouter API key already exists": "Key API OpenRouter đã tồn tại", | ||
| 339 | "Do you really wish to create a new OpenRouter key? Your existing key will not be deleted.": "Bạn có thực sự muốn tạo khóa OpenRouter mới không? Khóa hiện có của bạn sẽ không bị xóa.", | ||
| 338 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Nhận mã thông báo API OpenRouter của bạn bằng cách sử dụng luồng OAuth. Bạn sẽ được chuyển hướng đến openrouter.ai", | 340 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Nhận mã thông báo API OpenRouter của bạn bằng cách sử dụng luồng OAuth. Bạn sẽ được chuyển hướng đến openrouter.ai", |
| 339 | "Bypass status check": "Bỏ qua check trạng thái", | 341 | "Bypass status check": "Bỏ qua check trạng thái", |
| 340 | "Chat Completion Source": "Nguồn cho Chat Completion", | 342 | "Chat Completion Source": "Nguồn cho Chat Completion", |
| @@ -427,6 +427,8 @@ | |||
| 427 | "Bypass status check": "跳过状态检查", | 427 | "Bypass status check": "跳过状态检查", |
| 428 | "Derive context size from backend": "从后端获取上下文长度", | 428 | "Derive context size from backend": "从后端获取上下文长度", |
| 429 | "Authorize": "授权", | 429 | "Authorize": "授权", |
| 430 | "OpenRouter API key already exists": "OpenRouter API 密钥已存在", | ||
| 431 | "Do you really wish to create a new OpenRouter key? Your existing key will not be deleted.": "您确定要创建新的 OpenRouter API 密钥吗?您现有的密钥不会被删除。", | ||
| 430 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "使用 OAuth 流程获取您的 OpenRouter API 令牌。您将被重定向到 openrouter.ai", | 432 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "使用 OAuth 流程获取您的 OpenRouter API 令牌。您将被重定向到 openrouter.ai", |
| 431 | "Chat Completion Source": "聊天补全来源", | 433 | "Chat Completion Source": "聊天补全来源", |
| 432 | "Custom (OpenAI-compatible)": "自定义(兼容 OpenAI)", | 434 | "Custom (OpenAI-compatible)": "自定义(兼容 OpenAI)", |
| @@ -334,6 +334,8 @@ | |||
| 334 | "koboldcpp API key (optional)": "KoboldCpp API 金鑰(可選)", | 334 | "koboldcpp API key (optional)": "KoboldCpp API 金鑰(可選)", |
| 335 | "Example: http://127.0.0.1:5001": "範例:http://127.0.0.1:5001", | 335 | "Example: http://127.0.0.1:5001": "範例:http://127.0.0.1:5001", |
| 336 | "Authorize": "授權", | 336 | "Authorize": "授權", |
| 337 | "OpenRouter API key already exists": "OpenRouter API 密鑰已存在", | ||
| 338 | "Do you really wish to create a new OpenRouter key? Your existing key will not be deleted.": "您確定要建立新的 OpenRouter API 金鑰嗎?您現有的金鑰不會被刪除。", | ||
| 337 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "使用 OAuth 流程取得您的 OpenRouter API 符元。您將被重新導向到 openrouter.ai", | 339 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "使用 OAuth 流程取得您的 OpenRouter API 符元。您將被重新導向到 openrouter.ai", |
| 338 | "Bypass status check": "繞過狀態檢查", | 340 | "Bypass status check": "繞過狀態檢查", |
| 339 | "Chat Completion Source": "聊天補全來源", | 341 | "Chat Completion Source": "聊天補全來源", |
| @@ -474,7 +474,14 @@ export async function renameSecret(key, id, label) { | |||
| 474 | /** | 474 | /** |
| 475 | * Redirects the user to authorize OpenRouter. | 475 | * Redirects the user to authorize OpenRouter. |
| 476 | */ | 476 | */ |
| 477 | function authorizeOpenRouter() { | 477 | async function authorizeOpenRouter() { |
| 478 | if (secret_state[SECRET_KEYS.OPENROUTER]) { | ||
| 479 | const confirmed = await Popup.show.confirm(t`OpenRouter API key already exists`, t`Do you really wish to create a new OpenRouter key? Your existing key will not be deleted.`); | ||
| 480 | if (!confirmed) { | ||
| 481 | return; | ||
| 482 | } | ||
| 483 | } | ||
| 484 | |||
| 478 | const redirectUrl = new URL('/callback/openrouter', window.location.origin); | 485 | const redirectUrl = new URL('/callback/openrouter', window.location.origin); |
| 479 | const openRouterUrl = `https://openrouter.ai/auth?callback_url=${encodeURIComponent(redirectUrl.toString())}`; | 486 | const openRouterUrl = `https://openrouter.ai/auth?callback_url=${encodeURIComponent(redirectUrl.toString())}`; |
| 480 | location.href = openRouterUrl; | 487 | location.href = openRouterUrl; |