This commit is contained in:
2026-03-09 17:34:08 +08:00
parent c1ace5f53e
commit 0af7428353
55 changed files with 1630 additions and 665 deletions

View File

@@ -76,15 +76,19 @@
// 法律文档 URL。
// 若未配置线上地址,主 App 会自动回退到内置 HTML 页面,避免出现空入口。
#ifndef KB_TERMS_OF_SERVICE_URL
#define KB_TERMS_OF_SERVICE_URL @""
#define KB_TERMS_OF_SERVICE_URL @"https://loveamorkey.com/agreement/user"
#endif
#ifndef KB_PRIVACY_POLICY_URL
#define KB_PRIVACY_POLICY_URL @""
#define KB_PRIVACY_POLICY_URL @"https://loveamorkey.com/agreement/privacy"
#endif
#ifndef KB_MEMBERSHIP_AGREEMENT_URL
#define KB_MEMBERSHIP_AGREEMENT_URL @""
#define KB_MEMBERSHIP_AGREEMENT_URL @"https://loveamorkey.com/agreement/vip"
#endif
#ifndef KB_AUTO_RENEWAL_AGREEMENT_URL
#define KB_AUTO_RENEWAL_AGREEMENT_URL @"https://loveamorkey.com/agreement/aotu"
#endif
#endif /* KBConfig_h */

View File

@@ -9,9 +9,7 @@
#if DEBUG
#define KB_MAI_POINT_BASE_URL @"http://192.168.2.21:35310/api"
#else
/// Release 默认关闭埋点上报(避免内网地址/HTTP 出现在上架包里)。
/// 线上如需开启,请在 Build SettingsPreprocessor Macros中覆盖该宏为 HTTPS 地址。
#define KB_MAI_POINT_BASE_URL @""
#define KB_MAI_POINT_BASE_URL @"https://track.loveamorkey.com/api"
#endif
#endif

View File

@@ -1,3 +1,3 @@
"NSMicrophoneUsageDescription" = "Microphone access is required for voice input.";
"NSMicrophoneUsageDescription" = "Microphone access is required for voice input and speech transcription.";
"NSPhotoLibraryUsageDescription" = "Photo library access is required to change your avatar.";
"NSPhotoLibraryAddUsageDescription" = "Photo library write access is required to save images.";

View File

@@ -85,7 +85,7 @@
// Network
"Network unavailable" = "Network unavailable";
"Network disabled (Full Access may be off)" = "Network disabled (Full Access may be off)";
"Network disabled (Full Access may be off)" = "Network-based keyboard features are unavailable (Full Access may be off)";
"Invalid URL" = "Invalid URL";
"Invalid response" = "Invalid response";
"No data" = "No data";
@@ -117,7 +117,7 @@
"Rank" = "Rank";
"Recharge Now" = "Recharge Now";
"By clicking Pay, you indicate your agreement to the" = "By clicking Pay, you indicate your agreement to the";
"《Embership Agreement》" = "《Embership Agreement";
"《Embership Agreement》" = "Membership Agreement";
// Mine
"Settings" = "Settings";
@@ -262,9 +262,16 @@
"AI Assistant" = "AI Assistant";
"AI Chat" = "AI Chat";
"Membership Agreement" = "《Embership Agreement";
"Membership Agreement" = "Membership Agreement";
"Download information missing" = "Download information missing";
"Download failed" = "Download failed";
"Theme resource preparation failed, please try again later" = "Theme resource preparation failed, please try again later";
"Theme updated, try it now" = "Theme updated, try it now";
"This app does not allow the keyboard to open the main app directly. Please return to the Home screen and open the app manually to recharge" = "This app does not allow the keyboard to open the main app directly. Please return to the Home screen and open the app manually to recharge";
"Content is empty" = "Content is empty";
"audioId is empty" = "audioId is empty";
"Polling failed after %ld retries" = "Polling failed after %ld retries";
"URL is empty" = "URL is empty";
"Theme information missing" = "Theme information missing";
"Delete failed, please try again" = "Delete failed, please try again";
"Processing..." = "Processing...";
@@ -292,8 +299,14 @@
"Voice-to-text failed, please try again" = "Voice-to-text failed, please try again";
"Please sign in before using AI features" = "Please sign in before using AI features";
"Please return to the Home screen and open the app to sign in" = "Please return to the Home screen and open the app to sign in";
"Please enable Full Access to continue" = "Please enable Full Access to continue";
"Please enable Full Access to continue" = "Please enable Full Access to use network-based keyboard features";
"Request failed" = "Request failed";
"Invalid data format" = "Invalid data format";
"Comment content cannot be empty" = "Comment content cannot be empty";
"Chat response is empty" = "Chat response is empty";
"Delete This Record" = "Delete This Record";
"Deleted" = "Deleted";
"Are you sure to delete?" = "Are you sure to delete?";
"Please enter content" = "Please enter content";
"Purchase failed" = "Purchase failed";
"Remote skin" = "Remote skin";
@@ -363,3 +376,26 @@
"I highly recommend this app." = "I highly recommend this app.";
"Allow log in with Apple ID?" = "Allow log in with Apple ID?";
"Continue" = "Continue";
"Me" = "Me";
"No comments yet" = "No comments yet";
"Be the first to comment" = "Be the first to comment";
"Load failed" = "Load failed";
"Tap to retry" = "Tap to retry";
"%.1fw comments" = "%.1fw comments";
"%ld comments" = "%ld comments";
"Reply to @%@" = "Reply to @%@";
"Say something..." = "Say something...";
"Hold To Start Talking" = "Hold To Start Talking";
"Hold To Speak" = "Hold To Speak";
"Release To Finish" = "Release To Finish";
"Send A Message To Her" = "Send A Message To Her";
"Like" = "Like";
"Reply" = "Reply";
"View %ld replies" = "View %ld replies";
"View more replies (%ld)" = "View more replies (%ld)";
"Collapse" = "Collapse";
"Just now" = "Just now";
"%.0f minutes ago" = "%.0f minutes ago";
"%.0f hours ago" = "%.0f hours ago";
"%.0f days ago" = "%.0f days ago";
"Yesterday" = "Yesterday";

View File

@@ -1,3 +1,3 @@
"NSMicrophoneUsageDescription" = "Se requiere acceso al micrófono para la entrada por voz.";
"NSMicrophoneUsageDescription" = "Se requiere acceso al micrófono para la entrada por voz y la transcripción del habla.";
"NSPhotoLibraryUsageDescription" = "Se requiere acceso a la fototeca para cambiar tu avatar.";
"NSPhotoLibraryAddUsageDescription" = "Se requiere permiso de escritura en la fototeca para guardar imágenes.";

View File

@@ -85,7 +85,7 @@
// Network
"Network unavailable" = "Red no disponible";
"Network disabled (Full Access may be off)" = "Red desactivada (el acceso total puede estar desactivado)";
"Network disabled (Full Access may be off)" = "Las funciones de red del teclado no están disponibles (el acceso total puede estar desactivado)";
"Invalid URL" = "URL no válida";
"Invalid response" = "Respuesta no válida";
"No data" = "Sin datos";
@@ -273,9 +273,16 @@
"AI Chat" = "AI Chat";
"Membership Agreement" = "《Acuerdo de membresía》";
"Download information missing" = "Download information missing";
"Download failed" = "Download failed";
"Download failed" = "Error al descargar";
"Theme resource preparation failed, please try again later" = "No se pudieron preparar los recursos del tema. Inténtalo de nuevo más tarde";
"Theme updated, try it now" = "Tema actualizado. Pruébalo ahora";
"This app does not allow the keyboard to open the main app directly. Please return to the Home screen and open the app manually to recharge" = "Esta app no permite que el teclado abra la app principal directamente. Vuelve a la pantalla de inicio y abre la app manualmente para recargar";
"Content is empty" = "El contenido está vacío";
"audioId is empty" = "audioId está vacío";
"Polling failed after %ld retries" = "La consulta falló tras %ld reintentos";
"URL is empty" = "La URL está vacía";
"Theme information missing" = "Theme information missing";
"Delete failed, please try again" = "Delete failed, please try again";
"Delete failed, please try again" = "La eliminación falló, inténtalo de nuevo";
"Processing..." = "Processing...";
"Copied" = "Copied";
"Default keyboard skin restored" = "Default keyboard skin restored";
@@ -301,8 +308,14 @@
"Voice-to-text failed, please try again" = "Voice-to-text failed, please try again";
"Please sign in before using AI features" = "Please sign in before using AI features";
"Please return to the Home screen and open the app to sign in" = "Please return to the Home screen and open the app to sign in";
"Please enable Full Access to continue" = "Please enable Full Access to continue";
"Request failed" = "Request failed";
"Please enable Full Access to continue" = "Activa \"Permitir acceso total\" para usar las funciones de red del teclado";
"Request failed" = "La solicitud falló";
"Invalid data format" = "Formato de datos no válido";
"Comment content cannot be empty" = "El contenido del comentario no puede estar vacío";
"Chat response is empty" = "La respuesta del chat está vacía";
"Delete This Record" = "Eliminar este registro";
"Deleted" = "Eliminado";
"Are you sure to delete?" = "¿Seguro que quieres eliminarlo?";
"Please enter content" = "Please enter content";
"Purchase failed" = "Purchase failed";
"Remote skin" = "Remote skin";
@@ -372,3 +385,26 @@
"I highly recommend this app." = "Recomiendo mucho esta aplicación.";
"Allow log in with Apple ID?" = "¿Permitir iniciar sesión con Apple ID?";
"Continue" = "Continuar";
"Me" = "Yo";
"No comments yet" = "Aún no hay comentarios";
"Be the first to comment" = "Sé el primero en comentar";
"Load failed" = "Error al cargar";
"Tap to retry" = "Toca para reintentar";
"%.1fw comments" = "%.1fw comentarios";
"%ld comments" = "%ld comentarios";
"Reply to @%@" = "Responder a @%@";
"Say something..." = "Escribe algo...";
"Hold To Start Talking" = "Mantén pulsado para empezar a hablar";
"Hold To Speak" = "Mantén pulsado para hablar";
"Release To Finish" = "Suelta para terminar";
"Send A Message To Her" = "Enviarle un mensaje";
"Like" = "Me gusta";
"Reply" = "Responder";
"View %ld replies" = "Ver %ld respuestas";
"View more replies (%ld)" = "Ver más respuestas (%ld)";
"Collapse" = "Ocultar";
"Just now" = "Justo ahora";
"%.0f minutes ago" = "Hace %.0f minutos";
"%.0f hours ago" = "Hace %.0f horas";
"%.0f days ago" = "Hace %.0f días";
"Yesterday" = "Ayer";

View File

@@ -1,3 +1,3 @@
"NSMicrophoneUsageDescription" = "Akses mikrofon diperlukan untuk input suara.";
"NSMicrophoneUsageDescription" = "Akses mikrofon diperlukan untuk input suara dan transkripsi ucapan.";
"NSPhotoLibraryUsageDescription" = "Akses galeri foto diperlukan untuk mengganti avatar Anda.";
"NSPhotoLibraryAddUsageDescription" = "Izin menulis ke galeri foto diperlukan untuk menyimpan gambar.";

View File

@@ -85,7 +85,7 @@
// Network
"Network unavailable" = "Jaringan tidak tersedia";
"Network disabled (Full Access may be off)" = "Jaringan dinonaktifkan (Akses Penuh mungkin nonaktif)";
"Network disabled (Full Access may be off)" = "Fitur keyboard berbasis jaringan tidak tersedia (Akses Penuh mungkin nonaktif)";
"Invalid URL" = "URL tidak valid";
"Invalid response" = "Respons tidak valid";
"No data" = "Tidak ada data";
@@ -274,9 +274,16 @@
"AI Chat" = "AI Chat";
"Membership Agreement" = "《Perjanjian Keanggotaan》";
"Download information missing" = "Download information missing";
"Download failed" = "Download failed";
"Download failed" = "Gagal mengunduh";
"Theme resource preparation failed, please try again later" = "Persiapan sumber daya tema gagal, silakan coba lagi nanti";
"Theme updated, try it now" = "Tema diperbarui, coba sekarang";
"This app does not allow the keyboard to open the main app directly. Please return to the Home screen and open the app manually to recharge" = "Aplikasi ini tidak mengizinkan keyboard membuka aplikasi utama secara langsung. Silakan kembali ke layar utama dan buka aplikasi secara manual untuk mengisi ulang";
"Content is empty" = "Konten kosong";
"audioId is empty" = "audioId kosong";
"Polling failed after %ld retries" = "Polling gagal setelah %ld kali percobaan ulang";
"URL is empty" = "URL kosong";
"Theme information missing" = "Theme information missing";
"Delete failed, please try again" = "Delete failed, please try again";
"Delete failed, please try again" = "Gagal menghapus, silakan coba lagi";
"Processing..." = "Processing...";
"Copied" = "Copied";
"Default keyboard skin restored" = "Default keyboard skin restored";
@@ -302,8 +309,14 @@
"Voice-to-text failed, please try again" = "Voice-to-text failed, please try again";
"Please sign in before using AI features" = "Please sign in before using AI features";
"Please return to the Home screen and open the app to sign in" = "Please return to the Home screen and open the app to sign in";
"Please enable Full Access to continue" = "Please enable Full Access to continue";
"Request failed" = "Request failed";
"Please enable Full Access to continue" = "Aktifkan Akses Penuh untuk menggunakan fitur keyboard berbasis jaringan";
"Request failed" = "Permintaan gagal";
"Invalid data format" = "Format data tidak valid";
"Comment content cannot be empty" = "Konten komentar tidak boleh kosong";
"Chat response is empty" = "Respons chat kosong";
"Delete This Record" = "Hapus riwayat ini";
"Deleted" = "Berhasil dihapus";
"Are you sure to delete?" = "Yakin ingin menghapus?";
"Please enter content" = "Please enter content";
"Purchase failed" = "Purchase failed";
"Remote skin" = "Remote skin";
@@ -373,3 +386,26 @@
"I highly recommend this app." = "Saya sangat merekomendasikan aplikasi ini.";
"Allow log in with Apple ID?" = "Izinkan masuk dengan Apple ID?";
"Continue" = "Lanjutkan";
"Me" = "Saya";
"No comments yet" = "Belum ada komentar";
"Be the first to comment" = "Jadilah yang pertama berkomentar";
"Load failed" = "Gagal memuat";
"Tap to retry" = "Ketuk untuk mencoba lagi";
"%.1fw comments" = "%.1fw komentar";
"%ld comments" = "%ld komentar";
"Reply to @%@" = "Balas @%@";
"Say something..." = "Tulis sesuatu...";
"Hold To Start Talking" = "Tahan untuk mulai berbicara";
"Hold To Speak" = "Tahan untuk berbicara";
"Release To Finish" = "Lepas untuk selesai";
"Send A Message To Her" = "Kirim pesan kepadanya";
"Like" = "Suka";
"Reply" = "Balas";
"View %ld replies" = "Lihat %ld balasan";
"View more replies (%ld)" = "Lihat lebih banyak balasan (%ld)";
"Collapse" = "Ciutkan";
"Just now" = "Baru saja";
"%.0f minutes ago" = "%.0f menit yang lalu";
"%.0f hours ago" = "%.0f jam yang lalu";
"%.0f days ago" = "%.0f hari yang lalu";
"Yesterday" = "Kemarin";

View File

@@ -1,3 +1,3 @@
"NSMicrophoneUsageDescription" = "O acesso ao microfone é necessário para entrada por voz.";
"NSMicrophoneUsageDescription" = "O acesso ao microfone é necessário para entrada por voz e transcrição de voz.";
"NSPhotoLibraryUsageDescription" = "O acesso à fototeca é necessário para alterar o seu avatar.";
"NSPhotoLibraryAddUsageDescription" = "A permissão de escrita na fototeca é necessária para guardar imagens.";

View File

@@ -85,7 +85,7 @@
// Network
"Network unavailable" = "Rede indisponível";
"Network disabled (Full Access may be off)" = "Rede desativada (o Acesso Total pode estar desativado)";
"Network disabled (Full Access may be off)" = "As funcionalidades de rede do teclado não estão disponíveis (o Acesso Total pode estar desativado)";
"Invalid URL" = "URL inválido";
"Invalid response" = "Resposta inválida";
"No data" = "Sem dados";
@@ -274,9 +274,16 @@
"AI Chat" = "AI Chat";
"Membership Agreement" = "《Acordo de Associação》";
"Download information missing" = "Download information missing";
"Download failed" = "Download failed";
"Download failed" = "Falha ao transferir";
"Theme resource preparation failed, please try again later" = "Falha ao preparar os recursos do tema. Tente novamente mais tarde";
"Theme updated, try it now" = "Tema atualizado. Experimente agora";
"This app does not allow the keyboard to open the main app directly. Please return to the Home screen and open the app manually to recharge" = "Esta app não permite que o teclado abra diretamente a app principal. Volte ao ecrã principal e abra a app manualmente para recarregar";
"Content is empty" = "O conteúdo está vazio";
"audioId is empty" = "O audioId está vazio";
"Polling failed after %ld retries" = "A sondagem falhou após %ld tentativas";
"URL is empty" = "O URL está vazio";
"Theme information missing" = "Theme information missing";
"Delete failed, please try again" = "Delete failed, please try again";
"Delete failed, please try again" = "Falha ao eliminar, tente novamente";
"Processing..." = "Processing...";
"Copied" = "Copied";
"Default keyboard skin restored" = "Default keyboard skin restored";
@@ -302,8 +309,14 @@
"Voice-to-text failed, please try again" = "Voice-to-text failed, please try again";
"Please sign in before using AI features" = "Please sign in before using AI features";
"Please return to the Home screen and open the app to sign in" = "Please return to the Home screen and open the app to sign in";
"Please enable Full Access to continue" = "Please enable Full Access to continue";
"Request failed" = "Request failed";
"Please enable Full Access to continue" = "Ative o Acesso Total para usar as funcionalidades de rede do teclado";
"Request failed" = "O pedido falhou";
"Invalid data format" = "Formato de dados inválido";
"Comment content cannot be empty" = "O conteúdo do comentário não pode estar vazio";
"Chat response is empty" = "A resposta do chat está vazia";
"Delete This Record" = "Eliminar este registo";
"Deleted" = "Eliminado";
"Are you sure to delete?" = "Tem a certeza de que quer eliminar?";
"Please enter content" = "Please enter content";
"Purchase failed" = "Purchase failed";
"Remote skin" = "Remote skin";
@@ -373,3 +386,26 @@
"I highly recommend this app." = "Recomendo muito esta aplicação.";
"Allow log in with Apple ID?" = "Permitir iniciar sessão com o Apple ID?";
"Continue" = "Continuar";
"Me" = "Eu";
"No comments yet" = "Ainda não há comentários";
"Be the first to comment" = "Seja o primeiro a comentar";
"Load failed" = "Falha ao carregar";
"Tap to retry" = "Toque para tentar novamente";
"%.1fw comments" = "%.1fw comentários";
"%ld comments" = "%ld comentários";
"Reply to @%@" = "Responder a @%@";
"Say something..." = "Diga algo...";
"Hold To Start Talking" = "Mantenha premido para começar a falar";
"Hold To Speak" = "Mantenha premido para falar";
"Release To Finish" = "Solte para terminar";
"Send A Message To Her" = "Enviar-lhe uma mensagem";
"Like" = "Gosto";
"Reply" = "Responder";
"View %ld replies" = "Ver %ld respostas";
"View more replies (%ld)" = "Ver mais respostas (%ld)";
"Collapse" = "Recolher";
"Just now" = "Agora mesmo";
"%.0f minutes ago" = "Há %.0f minutos";
"%.0f hours ago" = "Há %.0f horas";
"%.0f days ago" = "Há %.0f dias";
"Yesterday" = "Ontem";

View File

@@ -1,3 +1,3 @@
"NSMicrophoneUsageDescription" = "需要使用麥克風進行語音輸入。";
"NSMicrophoneUsageDescription" = "需要使用麥克風進行語音輸入與語音轉寫。";
"NSPhotoLibraryUsageDescription" = "更換頭像需要存取你的相簿。";
"NSPhotoLibraryAddUsageDescription" = "儲存圖片需要寫入你的相簿。";

View File

@@ -85,7 +85,7 @@
// Network
"Network unavailable" = "網路不可用";
"Network disabled (Full Access may be off)" = "網路未啟用(可能未開啟完整存取)";
"Network disabled (Full Access may be off)" = "鍵盤的網路功能無法使用(可能未開啟完整存取)";
"Invalid URL" = "無效的 URL";
"Invalid response" = "無效的回應";
"No data" = "暫無資料";
@@ -273,9 +273,16 @@
"AI Chat" = "AI Chat";
"Membership Agreement" = "《會員協議》";
"Download information missing" = "Download information missing";
"Download failed" = "Download failed";
"Download failed" = "下載失敗";
"Theme resource preparation failed, please try again later" = "主題資源準備失敗,請稍後再試";
"Theme updated, try it now" = "主題已更新,立即體驗吧";
"This app does not allow the keyboard to open the main app directly. Please return to the Home screen and open the app manually to recharge" = "目前這個 App 不允許鍵盤直接喚起主 App請回到主畫面手動開啟 App 進行儲值";
"Content is empty" = "內容為空";
"audioId is empty" = "audioId 為空";
"Polling failed after %ld retries" = "輪詢失敗,已重試 %ld 次";
"URL is empty" = "URL 為空";
"Theme information missing" = "Theme information missing";
"Delete failed, please try again" = "Delete failed, please try again";
"Delete failed, please try again" = "刪除失敗,請稍後再試";
"Processing..." = "Processing...";
"Copied" = "Copied";
"Default keyboard skin restored" = "Default keyboard skin restored";
@@ -301,8 +308,14 @@
"Voice-to-text failed, please try again" = "Voice-to-text failed, please try again";
"Please sign in before using AI features" = "Please sign in before using AI features";
"Please return to the Home screen and open the app to sign in" = "Please return to the Home screen and open the app to sign in";
"Please enable Full Access to continue" = "Please enable Full Access to continue";
"Request failed" = "Request failed";
"Please enable Full Access to continue" = "請先開啟完整存取,以使用鍵盤的網路功能";
"Request failed" = "請求失敗";
"Invalid data format" = "資料格式錯誤";
"Comment content cannot be empty" = "評論內容不能為空";
"Chat response is empty" = "聊天回應為空";
"Delete This Record" = "刪除此記錄";
"Deleted" = "已刪除";
"Are you sure to delete?" = "確定要刪除嗎?";
"Please enter content" = "Please enter content";
"Purchase failed" = "Purchase failed";
"Remote skin" = "Remote skin";
@@ -372,3 +385,26 @@
"I highly recommend this app." = "我非常推薦這個 App。";
"Allow log in with Apple ID?" = "允許使用 Apple ID 登入嗎?";
"Continue" = "繼續";
"Me" = "我";
"No comments yet" = "暫無評論";
"Be the first to comment" = "快來搶沙發";
"Load failed" = "載入失敗";
"Tap to retry" = "點擊重試";
"%.1fw comments" = "%.1f萬則評論";
"%ld comments" = "%ld則評論";
"Reply to @%@" = "回覆 @%@";
"Say something..." = "說點什麼...";
"Hold To Start Talking" = "按住開始說話";
"Hold To Speak" = "按住說話";
"Release To Finish" = "鬆開結束";
"Send A Message To Her" = "發送訊息給她";
"Like" = "讚";
"Reply" = "回覆";
"View %ld replies" = "展開%ld則回覆";
"View more replies (%ld)" = "展開更多回覆(%ld則";
"Collapse" = "收起";
"Just now" = "剛剛";
"%.0f minutes ago" = "%.0f分鐘前";
"%.0f hours ago" = "%.0f小時前";
"%.0f days ago" = "%.0f天前";
"Yesterday" = "昨天";