feat(mobile): mobile app navigation rework and beta-feedback closeout (#2561)
Navigation model rebuilt around two full-width drawers and a minimal header (sessions / title-switcher / usage ring / workspace): - Left sessions drawer: cross-project tree with live status indicators, swipe actions on sessions (rename/archive/delete) and on group headers (project edit / two-step close, worktree delete), reorder-only edit mode with collapsible project cards and draggable worktrees, app-level footer (connected instance, settings, pending web update). - Right workspace drawer: Changes / Files / Terminal / Notes / MCP as pill tabs (inactive tabs icon-only); panes stay mounted once visited. The full desktop file editor serves the Files tab; read/skill tool taps in chat open the file there at the requested line. - Header session switcher on title tap: 10 cross-project recents with live busy/attention indicators and project · branch metadata; the usage ring opens a metadata overlay with an explicit loading state. - The overflow menu is gone on phones (its destinations moved into the drawers); iPad keeps it until its dedicated layout pass. Correctness and continuity: - /auth/session answers bearer-first, so a stale WebView cookie can no longer mask a revoked device token; cold launches classify failures fast and land on an explicit connect screen. - Authoritative session snapshots raise frozen ordering baselines and stale live ranks — recents stay truthful after the app slept. - Cold launches reopen the last active session per instance (persisted pointer, confirmed against a sessions snapshot; a user-opened draft clears it), with a logo hold instead of a draft flash. Also: collapsed pill composer gains the stop control; chat tool rows share one 36px rhythm; Task subtool rows truncate; larger bottom safe area so the composer clears big-screen corner radii; Capacitor build hides About/Update (store updates apply there); widgets link to the sessions drawer with a list icon; MobileApp split into focused modules; five mobile-surface detectors unified; translucent borders normalized to 70%; all new strings translated across the 10 locales. iPad and foldable layouts are intentionally untouched - separate next version PR.
This commit is contained in:
committed by
GitHub
parent
ea8cc5d7b0
commit
86ef96302d
@@ -52,6 +52,9 @@ export const dict = {
|
||||
'mobile.connect.unlockButton': 'Unlock and connect',
|
||||
'mobile.connect.cancelPassword': 'Use another server',
|
||||
'mobile.connect.connecting': 'Connecting...',
|
||||
'mobile.connect.notice.unreachable': 'Couldn\'t reach {label}. Check that the server is running.',
|
||||
'mobile.connect.notice.authExpired': 'Access to {label} has expired or was revoked. Sign in again.',
|
||||
'mobile.connect.recovery.description': 'Could not connect to the saved server. Check that it is running, or pick another instance.',
|
||||
'mobile.connect.scanQr': 'Scan QR code',
|
||||
'mobile.connect.welcome.scanHint': 'On your computer, open «Add a device» to show a QR code, then scan it here.',
|
||||
'mobile.connect.advanced': 'Advanced',
|
||||
@@ -88,9 +91,9 @@ export const dict = {
|
||||
'mobile.nav.settings': 'Settings',
|
||||
'mobile.surface.closeAria': 'Close',
|
||||
'mobile.header.openMenuAria': 'Open menu',
|
||||
'mobile.header.openWorkspaceAria': 'Open workspace panel',
|
||||
'mobile.header.openMetadataAria': 'Open session metadata',
|
||||
'mobile.header.metadata.context': 'Context',
|
||||
'mobile.header.metadata.branch': 'Branch',
|
||||
'mobile.header.metadata.usage': 'Usage',
|
||||
'mobile.menu.titleAria': 'Workspace tools',
|
||||
'mobile.menu.files': 'Files',
|
||||
@@ -122,18 +125,20 @@ export const dict = {
|
||||
'mobile.sessions.newChat': 'New chat',
|
||||
'mobile.sessions.editOrder': 'Reorder projects',
|
||||
'mobile.sessions.doneEditing': 'Done',
|
||||
'mobile.sessions.editOrderHint': 'Drag the handle to reorder projects. Tap the check to finish.',
|
||||
'mobile.sessions.editOrderHint': 'Drag the handle to reorder projects. Tap a project to show its worktrees and drag those too. Tap the check to finish.',
|
||||
'mobile.sessions.editProjectAria': 'Edit {label}',
|
||||
'mobile.sessions.dragHandleAria': 'Drag {label} to reorder',
|
||||
'mobile.sessions.moveUpAria': 'Move {label} up',
|
||||
'mobile.sessions.moveDownAria': 'Move {label} down',
|
||||
'mobile.sessions.removeProjectAria': 'Remove {label}',
|
||||
'mobile.sessions.cancelRemoveProjectAria': 'Cancel removing {label}',
|
||||
'mobile.sessions.confirmRemoveProject': 'Close',
|
||||
'mobile.sessions.confirmRemoveProjectAria': 'Confirm removing {label}',
|
||||
'mobile.sessions.toast.projectRemoved': 'Removed {label}',
|
||||
'mobile.sessions.archiveSessionAria': 'Archive {title}',
|
||||
'mobile.sessions.cancelArchiveAria': 'Cancel archiving {title}',
|
||||
'mobile.sessions.renameSessionAria': 'Rename {title}',
|
||||
'mobile.sessions.renameError': 'Failed to rename session',
|
||||
'mobile.sessions.deleteSessionAria': 'Delete {title}',
|
||||
'mobile.sessions.confirmDeleteSessionAria': 'Confirm deleting {title}',
|
||||
'mobile.projectEdit.worktreesTitle': 'Worktrees',
|
||||
'mobile.projectEdit.worktreesEmpty': 'No worktrees in this project yet.',
|
||||
'mobile.projectEdit.reorderHint': 'Drag to reorder worktrees.',
|
||||
@@ -179,6 +184,8 @@ export const dict = {
|
||||
'mobile.files.copyPathAria': 'Copy file path',
|
||||
'mobile.files.copyContent': 'Copy content',
|
||||
'mobile.files.copyContentAria': 'Copy file content',
|
||||
'mobile.files.editAria': 'Edit file',
|
||||
'mobile.files.doneEditingAria': 'Done editing',
|
||||
'mobile.files.toast.pathCopied': 'Path copied',
|
||||
'mobile.files.toast.contentCopied': 'Content copied',
|
||||
'mobile.files.toast.copyFailed': 'Copy failed',
|
||||
@@ -2074,21 +2081,6 @@ export const dict = {
|
||||
'chat.chatInput.drop.insertMention': 'Drop to insert as mention',
|
||||
'chat.chatInput.drop.attachFiles': 'Drop files here to attach',
|
||||
'chat.chatInput.fileFallback': 'file',
|
||||
'chat.mobileStatus.editProjects.title': 'Edit Projects',
|
||||
'chat.mobileStatus.editProjects.footer': 'Drag items to reorder, or use arrows to move. Tap edit to change details.',
|
||||
'chat.mobileStatus.editProjects.empty': 'No projects to edit',
|
||||
'chat.mobileStatus.projects.empty': 'No projects',
|
||||
'chat.mobileStatus.projects.addAria': 'Add project',
|
||||
'chat.mobileStatus.projects.removeTitle': 'Remove Project',
|
||||
'chat.mobileStatus.projects.removeDescriptionPrefix': 'Are you sure you want to remove',
|
||||
'chat.mobileStatus.projects.cancel': 'Cancel',
|
||||
'chat.mobileStatus.projects.remove': 'Remove',
|
||||
'chat.mobileStatus.new': 'New',
|
||||
'chat.mobileStatus.noSessionsInProject': 'No sessions in this project',
|
||||
'chat.mobileStatus.swipeHint': '← Swipe here to open sidebars →',
|
||||
'chat.mobileStatus.toast.addProjectFailed': 'Failed to add project',
|
||||
'chat.mobileStatus.toast.selectValidDirectory': 'Please select a valid directory.',
|
||||
'chat.mobileStatus.toast.selectDirectoryFailed': 'Failed to select directory',
|
||||
'chat.toolOutputDialog.image.previousAria': 'Previous image',
|
||||
'chat.toolOutputDialog.image.nextAria': 'Next image',
|
||||
'chat.toolOutputDialog.image.closeAria': 'Close image preview',
|
||||
|
||||
@@ -53,6 +53,9 @@ export const dict: Record<I18nKey, string> = {
|
||||
"mobile.connect.unlockButton": "Desbloquear y conectar",
|
||||
"mobile.connect.cancelPassword": "Usar otro servidor",
|
||||
"mobile.connect.connecting": "Conectando...",
|
||||
"mobile.connect.notice.unreachable": "No se pudo conectar con {label}. Comprueba que el servidor esté en marcha.",
|
||||
"mobile.connect.notice.authExpired": "El acceso a {label} caducó o fue revocado. Inicia sesión de nuevo.",
|
||||
"mobile.connect.recovery.description": "No se pudo conectar con el servidor guardado. Comprueba que esté en marcha o elige otra instancia.",
|
||||
"mobile.connect.scanQr": "Escanear código QR",
|
||||
"mobile.connect.welcome.scanHint": "En tu ordenador, abre «Añadir un dispositivo» para mostrar un código QR y escanéalo aquí.",
|
||||
"mobile.connect.advanced": "Avanzado",
|
||||
@@ -89,9 +92,9 @@ export const dict: Record<I18nKey, string> = {
|
||||
"mobile.nav.settings": "Ajustes",
|
||||
"mobile.surface.closeAria": "Cerrar",
|
||||
"mobile.header.openMenuAria": "Abrir menú",
|
||||
"mobile.header.openWorkspaceAria": "Abrir panel de trabajo",
|
||||
"mobile.header.openMetadataAria": "Abrir metadatos de la sesión",
|
||||
"mobile.header.metadata.context": "Contexto",
|
||||
"mobile.header.metadata.branch": "Rama",
|
||||
"mobile.header.metadata.usage": "Uso",
|
||||
"mobile.menu.titleAria": "Herramientas del espacio de trabajo",
|
||||
"mobile.menu.files": "Archivos",
|
||||
@@ -123,17 +126,19 @@ export const dict: Record<I18nKey, string> = {
|
||||
"mobile.sessions.newChat": "Nuevo chat",
|
||||
"mobile.sessions.editOrder": "Reordenar proyectos",
|
||||
"mobile.sessions.doneEditing": "Listo",
|
||||
"mobile.sessions.editOrderHint": "Arrastra el asa o usa las flechas para reordenar los proyectos. Toca la marca para finalizar.",
|
||||
"mobile.sessions.editOrderHint": "Arrastra el asa para reordenar los proyectos. Toca un proyecto para mostrar sus worktrees y arrástralos también. Toca la marca para terminar.",
|
||||
"mobile.sessions.dragHandleAria": "Arrastra {label} para reordenar",
|
||||
"mobile.sessions.moveUpAria": "Mover {label} arriba",
|
||||
"mobile.sessions.moveDownAria": "Mover {label} abajo",
|
||||
"mobile.sessions.removeProjectAria": "Eliminar {label}",
|
||||
"mobile.sessions.cancelRemoveProjectAria": "Cancelar eliminación de {label}",
|
||||
"mobile.sessions.confirmRemoveProject": "Cerrar",
|
||||
"mobile.sessions.confirmRemoveProjectAria": "Confirmar eliminación de {label}",
|
||||
"mobile.sessions.toast.projectRemoved": "Se eliminó {label}",
|
||||
"mobile.sessions.archiveSessionAria": "Archivar {title}",
|
||||
"mobile.sessions.cancelArchiveAria": "Cancelar archivar {title}",
|
||||
"mobile.sessions.renameSessionAria": "Renombrar {title}",
|
||||
"mobile.sessions.renameError": "No se pudo renombrar la sesión",
|
||||
"mobile.sessions.deleteSessionAria": "Eliminar {title}",
|
||||
"mobile.sessions.confirmDeleteSessionAria": "Confirmar eliminación de {title}",
|
||||
"mobile.sessions.editProjectAria": "Editar {label}",
|
||||
"mobile.projectEdit.worktreesTitle": "Worktrees",
|
||||
"mobile.projectEdit.worktreesEmpty": "Este proyecto aún no tiene worktrees.",
|
||||
@@ -180,6 +185,8 @@ export const dict: Record<I18nKey, string> = {
|
||||
"mobile.files.copyPathAria": "Copiar ruta del archivo",
|
||||
"mobile.files.copyContent": "Copiar contenido",
|
||||
"mobile.files.copyContentAria": "Copiar contenido del archivo",
|
||||
"mobile.files.editAria": "Editar archivo",
|
||||
"mobile.files.doneEditingAria": "Terminar edición",
|
||||
"mobile.files.toast.pathCopied": "Ruta copiada",
|
||||
"mobile.files.toast.contentCopied": "Contenido copiado",
|
||||
"mobile.files.toast.copyFailed": "No se pudo copiar",
|
||||
@@ -2040,21 +2047,6 @@ export const dict: Record<I18nKey, string> = {
|
||||
"chat.chatInput.drop.insertMention": "Suelta para insertar como mención",
|
||||
"chat.chatInput.drop.attachFiles": "Suelta archivos aquí para adjuntar",
|
||||
"chat.chatInput.fileFallback": "archivo",
|
||||
"chat.mobileStatus.editProjects.title": "Editar proyectos",
|
||||
"chat.mobileStatus.editProjects.footer": "Arrastra los elementos para reordenar, o use flechas para mover. Toca editar para cambiar los detalles.",
|
||||
"chat.mobileStatus.editProjects.empty": "No hay proyectos para editar",
|
||||
"chat.mobileStatus.projects.empty": "No hay proyectos",
|
||||
"chat.mobileStatus.projects.addAria": "Añadir proyecto",
|
||||
"chat.mobileStatus.projects.removeTitle": "Eliminar proyecto",
|
||||
"chat.mobileStatus.projects.removeDescriptionPrefix": "¿Estás seguro de que quieres eliminar",
|
||||
"chat.mobileStatus.projects.cancel": "Cancelar",
|
||||
"chat.mobileStatus.projects.remove": "Eliminar",
|
||||
"chat.mobileStatus.new": "Nuevo",
|
||||
"chat.mobileStatus.noSessionsInProject": "No hay sesiones en este proyecto",
|
||||
"chat.mobileStatus.swipeHint": "← Desliza aquí para abrir los paneles laterales →",
|
||||
"chat.mobileStatus.toast.addProjectFailed": "No se pudo añadir el proyecto",
|
||||
"chat.mobileStatus.toast.selectValidDirectory": "Selecciona un directorio válido.",
|
||||
"chat.mobileStatus.toast.selectDirectoryFailed": "No se pudo seleccionar el directorio",
|
||||
"chat.toolOutputDialog.image.previousAria": "Imagen anterior",
|
||||
"chat.toolOutputDialog.image.nextAria": "Imagen siguiente",
|
||||
"chat.toolOutputDialog.image.closeAria": "Cerrar vista previa de imagen",
|
||||
|
||||
@@ -1848,21 +1848,6 @@ export const dict = {
|
||||
'chat.chatInput.drop.insertMention': 'Déposer pour insérer comme mention',
|
||||
'chat.chatInput.drop.attachFiles': 'Déposez les fichiers ici pour les joindre',
|
||||
'chat.chatInput.fileFallback': 'déposer',
|
||||
'chat.mobileStatus.editProjects.title': 'Modifier des projets',
|
||||
'chat.mobileStatus.editProjects.footer': 'Faites glisser les éléments pour les réorganiser ou utilisez les flèches pour les déplacer. Appuyez sur modifier pour modifier les détails.',
|
||||
'chat.mobileStatus.editProjects.empty': 'Aucun projet à modifier',
|
||||
'chat.mobileStatus.projects.empty': 'Aucun projet',
|
||||
'chat.mobileStatus.projects.addAria': 'Ajouter un projet',
|
||||
'chat.mobileStatus.projects.removeTitle': 'Supprimer le projet',
|
||||
'chat.mobileStatus.projects.removeDescriptionPrefix': 'Etes-vous sûr de vouloir supprimer',
|
||||
'chat.mobileStatus.projects.cancel': 'Annuler',
|
||||
'chat.mobileStatus.projects.remove': 'Retirer',
|
||||
'chat.mobileStatus.new': 'Nouveau',
|
||||
'chat.mobileStatus.noSessionsInProject': 'Aucune session dans ce projet',
|
||||
'chat.mobileStatus.swipeHint': '← Glissez ici pour ouvrir les barres latérales →',
|
||||
'chat.mobileStatus.toast.addProjectFailed': 'Échec de l\'ajout du projet',
|
||||
'chat.mobileStatus.toast.selectValidDirectory': 'Veuillez sélectionner un répertoire valide.',
|
||||
'chat.mobileStatus.toast.selectDirectoryFailed': 'Échec de la sélection du répertoire',
|
||||
'chat.toolOutputDialog.image.previousAria': 'Image précédente',
|
||||
'chat.toolOutputDialog.image.nextAria': 'Image suivante',
|
||||
'chat.toolOutputDialog.image.closeAria': 'Fermer l\'aperçu de l\'image',
|
||||
@@ -2626,6 +2611,9 @@ export const dict = {
|
||||
'mobile.connect.unlockButton': 'Déverrouiller et se connecter',
|
||||
'mobile.connect.cancelPassword': 'Utiliser un autre serveur',
|
||||
'mobile.connect.connecting': 'Connexion...',
|
||||
'mobile.connect.notice.unreachable': 'Impossible de joindre {label}. Vérifiez que le serveur est en marche.',
|
||||
'mobile.connect.notice.authExpired': 'L\'accès à {label} a expiré ou a été révoqué. Reconnectez-vous.',
|
||||
'mobile.connect.recovery.description': 'Connexion au serveur enregistré impossible. Vérifiez qu\'il est en marche ou choisissez une autre instance.',
|
||||
'mobile.connect.scanQr': 'Scanner le code QR',
|
||||
'mobile.connect.welcome.scanHint': 'Sur votre ordinateur, ouvrez « Ajouter un appareil » pour afficher un code QR, puis scannez-le ici.',
|
||||
'mobile.connect.advanced': 'Avancé',
|
||||
@@ -2662,9 +2650,9 @@ export const dict = {
|
||||
'mobile.nav.settings': 'Paramètres',
|
||||
'mobile.surface.closeAria': 'Fermer',
|
||||
'mobile.header.openMenuAria': 'Ouvrir le menu',
|
||||
'mobile.header.openWorkspaceAria': 'Ouvrir le panneau de travail',
|
||||
'mobile.header.openMetadataAria': 'Ouvrir les métadonnées de session',
|
||||
'mobile.header.metadata.context': 'Contexte',
|
||||
'mobile.header.metadata.branch': 'Branche',
|
||||
'mobile.header.metadata.usage': 'Utilisation',
|
||||
'mobile.menu.titleAria': 'Outils de l’espace de travail',
|
||||
'mobile.menu.files': 'Fichiers',
|
||||
@@ -2696,18 +2684,20 @@ export const dict = {
|
||||
'mobile.sessions.newChat': 'Nouveau chat',
|
||||
'mobile.sessions.editOrder': 'Réordonner les projets',
|
||||
'mobile.sessions.doneEditing': 'Terminé',
|
||||
'mobile.sessions.editOrderHint': 'Faites glisser la poignée pour réordonner les projets. Touchez la coche pour terminer.',
|
||||
'mobile.sessions.editOrderHint': 'Faites glisser la poignée pour réorganiser les projets. Touchez un projet pour afficher ses worktrees et les faire glisser aussi. Touchez la coche pour terminer.',
|
||||
'mobile.sessions.editProjectAria': 'Modifier {label}',
|
||||
'mobile.sessions.dragHandleAria': 'Faire glisser {label} pour réordonner',
|
||||
'mobile.sessions.moveUpAria': 'Déplacer {label} vers le haut',
|
||||
'mobile.sessions.moveDownAria': 'Déplacer {label} vers le bas',
|
||||
'mobile.sessions.removeProjectAria': 'Supprimer {label}',
|
||||
'mobile.sessions.cancelRemoveProjectAria': 'Annuler la suppression de {label}',
|
||||
'mobile.sessions.confirmRemoveProject': 'Fermer',
|
||||
'mobile.sessions.confirmRemoveProjectAria': 'Confirmer la suppression de {label}',
|
||||
'mobile.sessions.toast.projectRemoved': '{label} supprimé',
|
||||
'mobile.sessions.archiveSessionAria': 'Archiver {title}',
|
||||
'mobile.sessions.cancelArchiveAria': 'Annuler l’archivage de {title}',
|
||||
'mobile.sessions.renameSessionAria': 'Renommer {title}',
|
||||
'mobile.sessions.renameError': 'Échec du renommage de la session',
|
||||
'mobile.sessions.deleteSessionAria': 'Supprimer {title}',
|
||||
'mobile.sessions.confirmDeleteSessionAria': 'Confirmer la suppression de {title}',
|
||||
'mobile.projectEdit.worktreesTitle': 'Worktrees',
|
||||
'mobile.projectEdit.worktreesEmpty': 'Aucun worktree dans ce projet pour le moment.',
|
||||
'mobile.projectEdit.reorderHint': 'Faites glisser pour réordonner les worktrees.',
|
||||
@@ -2753,6 +2743,8 @@ export const dict = {
|
||||
'mobile.files.copyPathAria': 'Copier le chemin du fichier',
|
||||
'mobile.files.copyContent': 'Copier le contenu',
|
||||
'mobile.files.copyContentAria': 'Copier le contenu du fichier',
|
||||
'mobile.files.editAria': 'Modifier le fichier',
|
||||
'mobile.files.doneEditingAria': 'Terminer la modification',
|
||||
'mobile.files.toast.pathCopied': 'Chemin copié',
|
||||
'mobile.files.toast.contentCopied': 'Contenu copié',
|
||||
'mobile.files.toast.copyFailed': 'Échec de la copie',
|
||||
|
||||
@@ -56,6 +56,9 @@ export const dict: Record<I18nKey, string> = {
|
||||
'mobile.connect.token.hint': 'サーバーがパスワードの代わりにトークンを必要とする場合のみ必要です。',
|
||||
'mobile.connect.connectButton': '接続',
|
||||
'mobile.connect.connecting': '接続中...',
|
||||
'mobile.connect.notice.unreachable': '{label}に接続できませんでした。サーバーが起動しているか確認してください。',
|
||||
'mobile.connect.notice.authExpired': '{label}へのアクセスは期限切れか取り消されました。再度サインインしてください。',
|
||||
'mobile.connect.recovery.description': '保存済みサーバーに接続できませんでした。サーバーが起動しているか確認するか、別のインスタンスを選んでください。',
|
||||
'mobile.connect.password.label': 'パスワード',
|
||||
'mobile.connect.password.placeholder': 'OpenChamber のパスワード',
|
||||
'mobile.connect.unlockButton': 'ロックを解除して接続',
|
||||
@@ -90,9 +93,9 @@ export const dict: Record<I18nKey, string> = {
|
||||
'mobile.instances.cancelDeleteAria': '{label} を残す',
|
||||
'mobile.surface.closeAria': '閉じる',
|
||||
'mobile.header.openMenuAria': 'メニューを開く',
|
||||
'mobile.header.openWorkspaceAria': 'ワークスペースパネルを開く',
|
||||
'mobile.header.openMetadataAria': 'セッションメタデータを開く',
|
||||
'mobile.header.metadata.context': 'コンテキスト',
|
||||
'mobile.header.metadata.branch': 'ブランチ',
|
||||
'mobile.header.metadata.usage': '使用量',
|
||||
'mobile.menu.titleAria': 'ワークスペースツール',
|
||||
'mobile.menu.files': 'ファイル',
|
||||
@@ -123,18 +126,20 @@ export const dict: Record<I18nKey, string> = {
|
||||
'mobile.sessions.newChat': '新しいチャット',
|
||||
'mobile.sessions.editOrder': 'プロジェクトの並び替え',
|
||||
'mobile.sessions.doneEditing': '完了',
|
||||
'mobile.sessions.editOrderHint': 'ハンドルをドラッグしてプロジェクトを並び替えます。チェックをタップして完了します。',
|
||||
'mobile.sessions.editOrderHint': 'ハンドルをドラッグしてプロジェクトを並べ替えます。プロジェクトをタップするとワークツリーが表示され、同様にドラッグできます。チェックをタップして完了します。',
|
||||
'mobile.sessions.editProjectAria': '{label}を編集',
|
||||
'mobile.sessions.dragHandleAria': '{label}をドラッグして並び替え',
|
||||
'mobile.sessions.moveUpAria': '{label}を上に移動',
|
||||
'mobile.sessions.moveDownAria': '{label}を下に移動',
|
||||
'mobile.sessions.removeProjectAria': '{label}を削除',
|
||||
'mobile.sessions.cancelRemoveProjectAria': '{label}の削除をキャンセル',
|
||||
'mobile.sessions.confirmRemoveProject': '閉じる',
|
||||
'mobile.sessions.confirmRemoveProjectAria': '{label}の削除を確認',
|
||||
'mobile.sessions.toast.projectRemoved': '{label}を削除しました',
|
||||
'mobile.sessions.archiveSessionAria': '{title}をアーカイブ',
|
||||
'mobile.sessions.cancelArchiveAria': '{title}のアーカイブをキャンセル',
|
||||
'mobile.sessions.renameSessionAria': '{title}の名前を変更',
|
||||
'mobile.sessions.renameError': 'セッション名の変更に失敗しました',
|
||||
'mobile.sessions.deleteSessionAria': '{title}を削除',
|
||||
'mobile.sessions.confirmDeleteSessionAria': '{title}の削除を確認',
|
||||
'mobile.projectEdit.worktreesTitle': 'ワークツリー',
|
||||
'mobile.projectEdit.worktreesEmpty': 'このプロジェクトにはまだワークツリーがありません。',
|
||||
'mobile.projectEdit.reorderHint': 'ドラッグしてワークツリーを並び替え。',
|
||||
@@ -180,6 +185,8 @@ export const dict: Record<I18nKey, string> = {
|
||||
'mobile.files.copyPathAria': 'ファイルパスをコピー',
|
||||
'mobile.files.copyContent': '内容をコピー',
|
||||
'mobile.files.copyContentAria': 'ファイル内容をコピー',
|
||||
'mobile.files.editAria': 'ファイルを編集',
|
||||
'mobile.files.doneEditingAria': '編集を終了',
|
||||
'mobile.files.toast.pathCopied': 'パスをコピーしました',
|
||||
'mobile.files.toast.contentCopied': '内容をコピーしました',
|
||||
'mobile.files.toast.copyFailed': 'コピーに失敗しました',
|
||||
@@ -2073,21 +2080,6 @@ export const dict: Record<I18nKey, string> = {
|
||||
'chat.chatInput.drop.insertMention': 'ドロップしてメンションとして挿入',
|
||||
'chat.chatInput.drop.attachFiles': 'ここにファイルをドロップして添付',
|
||||
'chat.chatInput.fileFallback': 'ファイル',
|
||||
'chat.mobileStatus.editProjects.title': 'プロジェクトを編集',
|
||||
'chat.mobileStatus.editProjects.footer': '項目をドラッグして並び替え、または矢印で移動。編集をタップして詳細を変更します。',
|
||||
'chat.mobileStatus.editProjects.empty': '編集するプロジェクトがありません',
|
||||
'chat.mobileStatus.projects.empty': 'プロジェクトがありません',
|
||||
'chat.mobileStatus.projects.addAria': 'プロジェクトを追加',
|
||||
'chat.mobileStatus.projects.removeTitle': 'プロジェクトを削除',
|
||||
'chat.mobileStatus.projects.removeDescriptionPrefix': '本当に削除しますか?',
|
||||
'chat.mobileStatus.projects.cancel': 'キャンセル',
|
||||
'chat.mobileStatus.projects.remove': '削除',
|
||||
'chat.mobileStatus.new': '新規',
|
||||
'chat.mobileStatus.noSessionsInProject': 'このプロジェクトにセッションはありません',
|
||||
'chat.mobileStatus.swipeHint': '← ここをスワイプでサイドバーを開く →',
|
||||
'chat.mobileStatus.toast.addProjectFailed': 'プロジェクトの追加に失敗しました',
|
||||
'chat.mobileStatus.toast.selectValidDirectory': '有効なディレクトリを選択してください。',
|
||||
'chat.mobileStatus.toast.selectDirectoryFailed': 'ディレクトリの選択に失敗しました',
|
||||
'chat.toolOutputDialog.image.previousAria': '前の画像',
|
||||
'chat.toolOutputDialog.image.nextAria': '次の画像',
|
||||
'chat.toolOutputDialog.image.closeAria': '画像プレビューを閉じる',
|
||||
|
||||
@@ -53,6 +53,9 @@ export const dict: Record<I18nKey, string> = {
|
||||
'mobile.connect.unlockButton': '잠금 해제 후 연결',
|
||||
'mobile.connect.cancelPassword': '다른 서버 사용',
|
||||
'mobile.connect.connecting': '연결 중...',
|
||||
'mobile.connect.notice.unreachable': '{label}에 연결할 수 없습니다. 서버가 실행 중인지 확인하세요.',
|
||||
'mobile.connect.notice.authExpired': '{label} 액세스가 만료되었거나 취소되었습니다. 다시 로그인하세요.',
|
||||
'mobile.connect.recovery.description': '저장된 서버에 연결할 수 없습니다. 서버가 실행 중인지 확인하거나 다른 인스턴스를 선택하세요.',
|
||||
'mobile.connect.scanQr': 'QR 코드 스캔',
|
||||
'mobile.connect.welcome.scanHint': '컴퓨터에서 「기기 추가」를 열어 QR 코드를 표시한 뒤 여기에서 스캔하세요.',
|
||||
'mobile.connect.advanced': '고급',
|
||||
@@ -89,9 +92,9 @@ export const dict: Record<I18nKey, string> = {
|
||||
'mobile.nav.settings': '설정',
|
||||
'mobile.surface.closeAria': '닫기',
|
||||
'mobile.header.openMenuAria': '메뉴 열기',
|
||||
'mobile.header.openWorkspaceAria': '작업 공간 패널 열기',
|
||||
'mobile.header.openMetadataAria': '세션 메타데이터 열기',
|
||||
'mobile.header.metadata.context': '컨텍스트',
|
||||
'mobile.header.metadata.branch': '브랜치',
|
||||
'mobile.header.metadata.usage': '사용량',
|
||||
'mobile.menu.titleAria': '작업 공간 도구',
|
||||
'mobile.menu.files': '파일',
|
||||
@@ -123,17 +126,19 @@ export const dict: Record<I18nKey, string> = {
|
||||
'mobile.sessions.newChat': '새 채팅',
|
||||
'mobile.sessions.editOrder': '프로젝트 순서 변경',
|
||||
'mobile.sessions.doneEditing': '완료',
|
||||
'mobile.sessions.editOrderHint': '핸들을 드래그하거나 화살표로 프로젝트 순서를 변경하세요. 완료하려면 체크를 누르세요.',
|
||||
'mobile.sessions.editOrderHint': '핸들을 드래그하여 프로젝트 순서를 변경하세요. 프로젝트를 탭하면 워크트리가 표시되며 같은 방식으로 드래그할 수 있습니다. 체크를 탭하면 완료됩니다.',
|
||||
'mobile.sessions.dragHandleAria': '{label} 드래그하여 순서 변경',
|
||||
'mobile.sessions.moveUpAria': '{label} 위로 이동',
|
||||
'mobile.sessions.moveDownAria': '{label} 아래로 이동',
|
||||
'mobile.sessions.removeProjectAria': '{label} 제거',
|
||||
'mobile.sessions.cancelRemoveProjectAria': '{label} 제거 취소',
|
||||
'mobile.sessions.confirmRemoveProject': '닫기',
|
||||
'mobile.sessions.confirmRemoveProjectAria': '{label} 제거 확인',
|
||||
'mobile.sessions.toast.projectRemoved': '{label} 제거됨',
|
||||
'mobile.sessions.archiveSessionAria': '{title} 보관',
|
||||
'mobile.sessions.cancelArchiveAria': '{title} 보관 취소',
|
||||
'mobile.sessions.renameSessionAria': '{title} 이름 바꾸기',
|
||||
'mobile.sessions.renameError': '세션 이름 변경에 실패했습니다',
|
||||
'mobile.sessions.deleteSessionAria': '{title} 삭제',
|
||||
'mobile.sessions.confirmDeleteSessionAria': '{title} 삭제 확인',
|
||||
'mobile.sessions.editProjectAria': '{label} 편집',
|
||||
'mobile.projectEdit.worktreesTitle': '워크트리',
|
||||
'mobile.projectEdit.worktreesEmpty': '이 프로젝트에는 아직 워크트리가 없습니다.',
|
||||
@@ -180,6 +185,8 @@ export const dict: Record<I18nKey, string> = {
|
||||
'mobile.files.copyPathAria': '파일 경로 복사',
|
||||
'mobile.files.copyContent': '내용 복사',
|
||||
'mobile.files.copyContentAria': '파일 내용 복사',
|
||||
'mobile.files.editAria': '파일 편집',
|
||||
'mobile.files.doneEditingAria': '편집 완료',
|
||||
'mobile.files.toast.pathCopied': '경로가 복사되었습니다',
|
||||
'mobile.files.toast.contentCopied': '내용이 복사되었습니다',
|
||||
'mobile.files.toast.copyFailed': '복사하지 못했습니다',
|
||||
@@ -2074,21 +2081,6 @@ export const dict: Record<I18nKey, string> = {
|
||||
'chat.chatInput.drop.insertMention': '여기에 놓아 멘션으로 추가',
|
||||
'chat.chatInput.drop.attachFiles': '여기에 놓아 파일 첨부',
|
||||
'chat.chatInput.fileFallback': '파일',
|
||||
'chat.mobileStatus.editProjects.title': '편집 프로젝트',
|
||||
'chat.mobileStatus.editProjects.footer': '항목을 드래그하여 순서를 바꾸거나 화살표로 이동하세요. 세부 정보는 편집을 탭해 변경하세요.',
|
||||
'chat.mobileStatus.editProjects.empty': '편집할 프로젝트 없음',
|
||||
'chat.mobileStatus.projects.empty': '프로젝트 없음',
|
||||
'chat.mobileStatus.projects.addAria': '프로젝트 추가',
|
||||
'chat.mobileStatus.projects.removeTitle': '프로젝트 제거',
|
||||
'chat.mobileStatus.projects.removeDescriptionPrefix': '다음을 제거하시겠습니까:',
|
||||
'chat.mobileStatus.projects.cancel': '취소',
|
||||
'chat.mobileStatus.projects.remove': '제거',
|
||||
'chat.mobileStatus.new': '새로 만들기',
|
||||
'chat.mobileStatus.noSessionsInProject': '이 프로젝트에 세션 없음',
|
||||
'chat.mobileStatus.swipeHint': '← 여기서 스와이프해 사이드바 열기 →',
|
||||
'chat.mobileStatus.toast.addProjectFailed': '프로젝트 추가 실패',
|
||||
'chat.mobileStatus.toast.selectValidDirectory': '유효한 디렉터리를 선택하세요.',
|
||||
'chat.mobileStatus.toast.selectDirectoryFailed': '디렉터리 선택 실패',
|
||||
'chat.toolOutputDialog.image.previousAria': '이전 이미지',
|
||||
'chat.toolOutputDialog.image.nextAria': '다음 이미지',
|
||||
'chat.toolOutputDialog.image.closeAria': '이미지 미리보기 닫기',
|
||||
|
||||
@@ -54,6 +54,9 @@ export const dict: Record<I18nKey, string> = {
|
||||
'mobile.connect.unlockButton': 'Odblokuj i połącz',
|
||||
'mobile.connect.cancelPassword': 'Użyj innego serwera',
|
||||
'mobile.connect.connecting': 'Łączenie...',
|
||||
'mobile.connect.notice.unreachable': 'Nie udało się połączyć z {label}. Sprawdź, czy serwer działa.',
|
||||
'mobile.connect.notice.authExpired': 'Dostęp do {label} wygasł lub został cofnięty. Zaloguj się ponownie.',
|
||||
'mobile.connect.recovery.description': 'Nie udało się połączyć z zapisanym serwerem. Sprawdź, czy działa, albo wybierz inną instancję.',
|
||||
'mobile.connect.scanQr': 'Skanuj kod QR',
|
||||
'mobile.connect.welcome.scanHint': 'Na komputerze otwórz «Dodaj urządzenie», aby wyświetlić kod QR, i zeskanuj go tutaj.',
|
||||
'mobile.connect.advanced': 'Zaawansowane',
|
||||
@@ -90,9 +93,9 @@ export const dict: Record<I18nKey, string> = {
|
||||
'mobile.nav.settings': 'Ustawienia',
|
||||
'mobile.surface.closeAria': 'Zamknij',
|
||||
'mobile.header.openMenuAria': 'Otwórz menu',
|
||||
'mobile.header.openWorkspaceAria': 'Otwórz panel roboczy',
|
||||
'mobile.header.openMetadataAria': 'Otwórz metadane sesji',
|
||||
'mobile.header.metadata.context': 'Kontekst',
|
||||
'mobile.header.metadata.branch': 'Gałąź',
|
||||
'mobile.header.metadata.usage': 'Użycie',
|
||||
'mobile.menu.titleAria': 'Narzędzia obszaru roboczego',
|
||||
'mobile.menu.files': 'Pliki',
|
||||
@@ -124,17 +127,19 @@ export const dict: Record<I18nKey, string> = {
|
||||
'mobile.sessions.newChat': 'Nowy czat',
|
||||
'mobile.sessions.editOrder': 'Zmień kolejność projektów',
|
||||
'mobile.sessions.doneEditing': 'Gotowe',
|
||||
'mobile.sessions.editOrderHint': 'Przeciągnij uchwyt lub użyj strzałek, aby zmienić kolejność. Naciśnij znacznik, aby zakończyć.',
|
||||
'mobile.sessions.editOrderHint': 'Przeciągnij uchwyt, aby zmienić kolejność projektów. Stuknij projekt, aby pokazać jego worktree i również je przeciągać. Stuknij znacznik, aby zakończyć.',
|
||||
'mobile.sessions.dragHandleAria': 'Przeciągnij {label}, aby zmienić kolejność',
|
||||
'mobile.sessions.moveUpAria': 'Przenieś {label} w górę',
|
||||
'mobile.sessions.moveDownAria': 'Przenieś {label} w dół',
|
||||
'mobile.sessions.removeProjectAria': 'Usuń {label}',
|
||||
'mobile.sessions.cancelRemoveProjectAria': 'Anuluj usuwanie {label}',
|
||||
'mobile.sessions.confirmRemoveProject': 'Zamknij',
|
||||
'mobile.sessions.confirmRemoveProjectAria': 'Potwierdź usunięcie {label}',
|
||||
'mobile.sessions.toast.projectRemoved': 'Usunięto {label}',
|
||||
'mobile.sessions.archiveSessionAria': 'Zarchiwizuj {title}',
|
||||
'mobile.sessions.cancelArchiveAria': 'Anuluj archiwizację {title}',
|
||||
'mobile.sessions.renameSessionAria': 'Zmień nazwę {title}',
|
||||
'mobile.sessions.renameError': 'Nie udało się zmienić nazwy sesji',
|
||||
'mobile.sessions.deleteSessionAria': 'Usuń {title}',
|
||||
'mobile.sessions.confirmDeleteSessionAria': 'Potwierdź usunięcie {title}',
|
||||
'mobile.sessions.editProjectAria': 'Edytuj {label}',
|
||||
'mobile.projectEdit.worktreesTitle': 'Worktree',
|
||||
'mobile.projectEdit.worktreesEmpty': 'Ten projekt nie ma jeszcze worktree.',
|
||||
@@ -181,6 +186,8 @@ export const dict: Record<I18nKey, string> = {
|
||||
'mobile.files.copyPathAria': 'Kopiuj ścieżkę pliku',
|
||||
'mobile.files.copyContent': 'Kopiuj zawartość',
|
||||
'mobile.files.copyContentAria': 'Kopiuj zawartość pliku',
|
||||
'mobile.files.editAria': 'Edytuj plik',
|
||||
'mobile.files.doneEditingAria': 'Zakończ edycję',
|
||||
'mobile.files.toast.pathCopied': 'Ścieżka skopiowana',
|
||||
'mobile.files.toast.contentCopied': 'Zawartość skopiowana',
|
||||
'mobile.files.toast.copyFailed': 'Kopiowanie nie powiodło się',
|
||||
@@ -1238,21 +1245,6 @@ export const dict: Record<I18nKey, string> = {
|
||||
'chat.reasoningTrace.expandAria': 'Rozwiń ślad rozumowania',
|
||||
'chat.reasoningTrace.collapseAria': 'Zwiń ślad rozumowania',
|
||||
'chat.reasoningTrace.thought': 'Przemyślał',
|
||||
'chat.mobileStatus.editProjects.empty': 'Brak projektów do edycji',
|
||||
'chat.mobileStatus.editProjects.footer': 'Przeciągnij elementy, aby zmienić kolejność, lub użyj strzałek do przesuwania. Dotknij „edytuj”, aby zmienić szczegóły.',
|
||||
'chat.mobileStatus.editProjects.title': 'Edytuj projekty',
|
||||
'chat.mobileStatus.new': 'Nowy',
|
||||
'chat.mobileStatus.noSessionsInProject': 'Brak sesji w tym projekcie',
|
||||
'chat.mobileStatus.projects.addAria': 'Dodaj projekt',
|
||||
'chat.mobileStatus.projects.cancel': 'Anuluj',
|
||||
'chat.mobileStatus.projects.empty': 'Brak projektów',
|
||||
'chat.mobileStatus.projects.remove': 'Usuń',
|
||||
'chat.mobileStatus.projects.removeDescriptionPrefix': 'Czy na pewno chcesz usunąć',
|
||||
'chat.mobileStatus.projects.removeTitle': 'Usuń projekt',
|
||||
'chat.mobileStatus.swipeHint': '← Przesuń tutaj, aby otworzyć paski boczne →',
|
||||
'chat.mobileStatus.toast.addProjectFailed': 'Nie udało się dodać projektu',
|
||||
'chat.mobileStatus.toast.selectDirectoryFailed': 'Nie udało się wybrać katalogu',
|
||||
'chat.mobileStatus.toast.selectValidDirectory': 'Wybierz prawidłowy katalog.',
|
||||
'chat.modelControls.addNewProvider': 'Dodaj nowego dostawcę',
|
||||
'chat.modelControls.addToFavorites': 'Dodaj do ulubionych',
|
||||
'chat.modelControls.bash': 'Bash',
|
||||
|
||||
@@ -53,6 +53,9 @@ export const dict: Record<I18nKey, string> = {
|
||||
"mobile.connect.unlockButton": "Desbloquear e conectar",
|
||||
"mobile.connect.cancelPassword": "Usar outro servidor",
|
||||
"mobile.connect.connecting": "Conectando...",
|
||||
"mobile.connect.notice.unreachable": "Não foi possível conectar a {label}. Verifique se o servidor está em execução.",
|
||||
"mobile.connect.notice.authExpired": "O acesso a {label} expirou ou foi revogado. Entre novamente.",
|
||||
"mobile.connect.recovery.description": "Não foi possível conectar ao servidor salvo. Verifique se ele está em execução ou escolha outra instância.",
|
||||
"mobile.connect.scanQr": "Ler código QR",
|
||||
"mobile.connect.welcome.scanHint": "No seu computador, abra «Adicionar um dispositivo» para mostrar um código QR e escaneie aqui.",
|
||||
"mobile.connect.advanced": "Avançado",
|
||||
@@ -89,9 +92,9 @@ export const dict: Record<I18nKey, string> = {
|
||||
"mobile.nav.settings": "Configurações",
|
||||
"mobile.surface.closeAria": "Fechar",
|
||||
"mobile.header.openMenuAria": "Abrir menu",
|
||||
"mobile.header.openWorkspaceAria": "Abrir painel de trabalho",
|
||||
"mobile.header.openMetadataAria": "Abrir metadados da sessão",
|
||||
"mobile.header.metadata.context": "Contexto",
|
||||
"mobile.header.metadata.branch": "Branch",
|
||||
"mobile.header.metadata.usage": "Uso",
|
||||
"mobile.menu.titleAria": "Ferramentas do espaço de trabalho",
|
||||
"mobile.menu.files": "Arquivos",
|
||||
@@ -123,17 +126,19 @@ export const dict: Record<I18nKey, string> = {
|
||||
"mobile.sessions.newChat": "Novo chat",
|
||||
"mobile.sessions.editOrder": "Reordenar projetos",
|
||||
"mobile.sessions.doneEditing": "Concluído",
|
||||
"mobile.sessions.editOrderHint": "Arraste a alça ou use as setas para reordenar os projetos. Toque na marca para finalizar.",
|
||||
"mobile.sessions.editOrderHint": "Arraste a alça para reordenar os projetos. Toque em um projeto para mostrar seus worktrees e arraste-os também. Toque na marca para concluir.",
|
||||
"mobile.sessions.dragHandleAria": "Arrastar {label} para reordenar",
|
||||
"mobile.sessions.moveUpAria": "Mover {label} para cima",
|
||||
"mobile.sessions.moveDownAria": "Mover {label} para baixo",
|
||||
"mobile.sessions.removeProjectAria": "Remover {label}",
|
||||
"mobile.sessions.cancelRemoveProjectAria": "Cancelar remoção de {label}",
|
||||
"mobile.sessions.confirmRemoveProject": "Fechar",
|
||||
"mobile.sessions.confirmRemoveProjectAria": "Confirmar remoção de {label}",
|
||||
"mobile.sessions.toast.projectRemoved": "Removido {label}",
|
||||
"mobile.sessions.archiveSessionAria": "Arquivar {title}",
|
||||
"mobile.sessions.cancelArchiveAria": "Cancelar arquivamento de {title}",
|
||||
"mobile.sessions.renameSessionAria": "Renomear {title}",
|
||||
"mobile.sessions.renameError": "Falha ao renomear a sessão",
|
||||
"mobile.sessions.deleteSessionAria": "Excluir {title}",
|
||||
"mobile.sessions.confirmDeleteSessionAria": "Confirmar exclusão de {title}",
|
||||
"mobile.sessions.editProjectAria": "Editar {label}",
|
||||
"mobile.projectEdit.worktreesTitle": "Worktrees",
|
||||
"mobile.projectEdit.worktreesEmpty": "Este projeto ainda não tem worktrees.",
|
||||
@@ -180,6 +185,8 @@ export const dict: Record<I18nKey, string> = {
|
||||
"mobile.files.copyPathAria": "Copiar caminho do arquivo",
|
||||
"mobile.files.copyContent": "Copiar conteúdo",
|
||||
"mobile.files.copyContentAria": "Copiar conteúdo do arquivo",
|
||||
"mobile.files.editAria": "Editar arquivo",
|
||||
"mobile.files.doneEditingAria": "Concluir edição",
|
||||
"mobile.files.toast.pathCopied": "Caminho copiado",
|
||||
"mobile.files.toast.contentCopied": "Conteúdo copiado",
|
||||
"mobile.files.toast.copyFailed": "Falha ao copiar",
|
||||
@@ -2040,21 +2047,6 @@ export const dict: Record<I18nKey, string> = {
|
||||
"chat.chatInput.drop.insertMention": "Solte para inserir como menção",
|
||||
"chat.chatInput.drop.attachFiles": "Solte arquivos aqui para anexar",
|
||||
"chat.chatInput.fileFallback": "arquivo",
|
||||
"chat.mobileStatus.editProjects.title": "Editar projetos",
|
||||
"chat.mobileStatus.editProjects.footer": "Arraste os itens para reordenar ou use as setas para mover. Toque em editar para alterar os detalhes.",
|
||||
"chat.mobileStatus.editProjects.empty": "Não há projetos para editar",
|
||||
"chat.mobileStatus.projects.empty": "Não há projetos",
|
||||
"chat.mobileStatus.projects.addAria": "Adicionar projeto",
|
||||
"chat.mobileStatus.projects.removeTitle": "Excluir projeto",
|
||||
"chat.mobileStatus.projects.removeDescriptionPrefix": "Tem certeza de que deseja excluir",
|
||||
"chat.mobileStatus.projects.cancel": "Cancelar",
|
||||
"chat.mobileStatus.projects.remove": "Excluir",
|
||||
"chat.mobileStatus.new": "Novo",
|
||||
"chat.mobileStatus.noSessionsInProject": "Não há sessões neste projeto",
|
||||
"chat.mobileStatus.swipeHint": "← Deslize aqui para abrir os painéis laterais →",
|
||||
"chat.mobileStatus.toast.addProjectFailed": "Não foi possível adicionar o projeto",
|
||||
"chat.mobileStatus.toast.selectValidDirectory": "Selecione um diretório válido.",
|
||||
"chat.mobileStatus.toast.selectDirectoryFailed": "Não foi possível selecionar o diretório",
|
||||
"chat.toolOutputDialog.image.previousAria": "Imagem anterior",
|
||||
"chat.toolOutputDialog.image.nextAria": "Próxima imagem",
|
||||
"chat.toolOutputDialog.image.closeAria": "Fechar prévia de imagem",
|
||||
|
||||
@@ -53,6 +53,9 @@ export const dict: Record<I18nKey, string> = {
|
||||
"mobile.connect.unlockButton": "Розблокувати і підключити",
|
||||
"mobile.connect.cancelPassword": "Інший сервер",
|
||||
"mobile.connect.connecting": "Підключення...",
|
||||
"mobile.connect.notice.unreachable": "Не вдалося з'єднатися з {label}. Перевірте, що сервер запущено.",
|
||||
"mobile.connect.notice.authExpired": "Доступ до {label} протух або був відкликаний. Увійдіть знову.",
|
||||
"mobile.connect.recovery.description": "Не вдалося з'єднатися зі збереженим сервером. Перевірте, що він запущений, або оберіть інший інстанс.",
|
||||
"mobile.connect.scanQr": "Сканувати QR-код",
|
||||
"mobile.connect.welcome.scanHint": "На компʼютері відкрийте «Додати пристрій», щоб показати QR-код, і відскануйте його тут.",
|
||||
"mobile.connect.advanced": "Додатково",
|
||||
@@ -89,9 +92,9 @@ export const dict: Record<I18nKey, string> = {
|
||||
"mobile.nav.settings": "Налаштування",
|
||||
"mobile.surface.closeAria": "Закрити",
|
||||
"mobile.header.openMenuAria": "Відкрити меню",
|
||||
"mobile.header.openWorkspaceAria": "Відкрити робочу панель",
|
||||
"mobile.header.openMetadataAria": "Відкрити метадані сесії",
|
||||
"mobile.header.metadata.context": "Контекст",
|
||||
"mobile.header.metadata.branch": "Гілка",
|
||||
"mobile.header.metadata.usage": "Використання",
|
||||
"mobile.menu.titleAria": "Інструменти робочого простору",
|
||||
"mobile.menu.files": "Файли",
|
||||
@@ -123,17 +126,19 @@ export const dict: Record<I18nKey, string> = {
|
||||
"mobile.sessions.newChat": "Новий чат",
|
||||
"mobile.sessions.editOrder": "Змінити порядок проєктів",
|
||||
"mobile.sessions.doneEditing": "Готово",
|
||||
"mobile.sessions.editOrderHint": "Перетягни ручку або скористайся стрілками, щоб змінити порядок проєктів. Натисни галочку щоб завершити.",
|
||||
"mobile.sessions.editOrderHint": "Перетягни ручку, щоб змінити порядок проєктів. Торкнись проєкту, щоб показати його worktree, і перетягуй їх так само. Натисни галочку, щоб завершити.",
|
||||
"mobile.sessions.dragHandleAria": "Перетягни {label}, щоб змінити порядок",
|
||||
"mobile.sessions.moveUpAria": "Перемістити {label} вгору",
|
||||
"mobile.sessions.moveDownAria": "Перемістити {label} вниз",
|
||||
"mobile.sessions.removeProjectAria": "Видалити {label}",
|
||||
"mobile.sessions.cancelRemoveProjectAria": "Скасувати видалення {label}",
|
||||
"mobile.sessions.confirmRemoveProject": "Закрити",
|
||||
"mobile.sessions.confirmRemoveProjectAria": "Підтвердити видалення {label}",
|
||||
"mobile.sessions.toast.projectRemoved": "Видалено {label}",
|
||||
"mobile.sessions.archiveSessionAria": "Архівувати {title}",
|
||||
"mobile.sessions.cancelArchiveAria": "Скасувати архівування {title}",
|
||||
"mobile.sessions.renameSessionAria": "Перейменувати {title}",
|
||||
"mobile.sessions.renameError": "Не вдалося перейменувати сесію",
|
||||
"mobile.sessions.deleteSessionAria": "Видалити {title}",
|
||||
"mobile.sessions.confirmDeleteSessionAria": "Підтвердити видалення {title}",
|
||||
"mobile.sessions.editProjectAria": "Редагувати {label}",
|
||||
"mobile.projectEdit.worktreesTitle": "Ворктрі",
|
||||
"mobile.projectEdit.worktreesEmpty": "У цьому проєкті ще немає ворктрі.",
|
||||
@@ -180,6 +185,8 @@ export const dict: Record<I18nKey, string> = {
|
||||
"mobile.files.copyPathAria": "Скопіювати шлях до файлу",
|
||||
"mobile.files.copyContent": "Скопіювати вміст",
|
||||
"mobile.files.copyContentAria": "Скопіювати вміст файлу",
|
||||
"mobile.files.editAria": "Редагувати файл",
|
||||
"mobile.files.doneEditingAria": "Завершити редагування",
|
||||
"mobile.files.toast.pathCopied": "Шлях скопійовано",
|
||||
"mobile.files.toast.contentCopied": "Вміст скопійовано",
|
||||
"mobile.files.toast.copyFailed": "Не вдалося скопіювати",
|
||||
@@ -2040,21 +2047,6 @@ export const dict: Record<I18nKey, string> = {
|
||||
"chat.chatInput.drop.insertMention": "Відпустіть, щоб вставити як згадку",
|
||||
"chat.chatInput.drop.attachFiles": "Перетягніть файли сюди, щоб прикріпити",
|
||||
"chat.chatInput.fileFallback": "файл",
|
||||
"chat.mobileStatus.editProjects.title": "Редагувати проєкти",
|
||||
"chat.mobileStatus.editProjects.footer": "Перетягніть елементи, щоб змінити порядок, або використовуйте стрілки, щоб перемістити. Натисніть «Редагувати», щоб змінити деталі.",
|
||||
"chat.mobileStatus.editProjects.empty": "Немає проєктів для редагування",
|
||||
"chat.mobileStatus.projects.empty": "Жодних проєктів",
|
||||
"chat.mobileStatus.projects.addAria": "Додати проєкт",
|
||||
"chat.mobileStatus.projects.removeTitle": "Видалити проєкт",
|
||||
"chat.mobileStatus.projects.removeDescriptionPrefix": "Ви впевнені, що хочете видалити",
|
||||
"chat.mobileStatus.projects.cancel": "Скасувати",
|
||||
"chat.mobileStatus.projects.remove": "Видалити",
|
||||
"chat.mobileStatus.new": "Новий",
|
||||
"chat.mobileStatus.noSessionsInProject": "У цьому проєкті немає сесій",
|
||||
"chat.mobileStatus.swipeHint": "← Проведіть пальцем тут, щоб відкрити бічні панелі →",
|
||||
"chat.mobileStatus.toast.addProjectFailed": "Не вдалося додати проєкт",
|
||||
"chat.mobileStatus.toast.selectValidDirectory": "Виберіть правильний каталог.",
|
||||
"chat.mobileStatus.toast.selectDirectoryFailed": "Не вдалося вибрати каталог",
|
||||
"chat.toolOutputDialog.image.previousAria": "Попереднє зображення",
|
||||
"chat.toolOutputDialog.image.nextAria": "Наступне зображення",
|
||||
"chat.toolOutputDialog.image.closeAria": "Закрити попередній перегляд зображення",
|
||||
|
||||
@@ -53,6 +53,9 @@ export const dict: Record<I18nKey, string> = {
|
||||
'mobile.connect.unlockButton': '解锁并连接',
|
||||
'mobile.connect.cancelPassword': '使用其他服务器',
|
||||
'mobile.connect.connecting': '连接中...',
|
||||
'mobile.connect.notice.unreachable': '无法连接到 {label}。请确认服务器正在运行。',
|
||||
'mobile.connect.notice.authExpired': '对 {label} 的访问已过期或被撤销。请重新登录。',
|
||||
'mobile.connect.recovery.description': '无法连接到已保存的服务器。请确认它正在运行,或选择其他实例。',
|
||||
'mobile.connect.scanQr': '扫描二维码',
|
||||
'mobile.connect.welcome.scanHint': '在电脑上打开「添加设备」显示二维码,然后在这里扫描。',
|
||||
'mobile.connect.advanced': '高级',
|
||||
@@ -89,9 +92,9 @@ export const dict: Record<I18nKey, string> = {
|
||||
'mobile.nav.settings': '设置',
|
||||
'mobile.surface.closeAria': '关闭',
|
||||
'mobile.header.openMenuAria': '打开菜单',
|
||||
'mobile.header.openWorkspaceAria': '打开工作区面板',
|
||||
'mobile.header.openMetadataAria': '打开会话元数据',
|
||||
'mobile.header.metadata.context': '上下文',
|
||||
'mobile.header.metadata.branch': '分支',
|
||||
'mobile.header.metadata.usage': '用量',
|
||||
'mobile.menu.titleAria': '工作区工具',
|
||||
'mobile.menu.files': '文件',
|
||||
@@ -123,17 +126,19 @@ export const dict: Record<I18nKey, string> = {
|
||||
'mobile.sessions.newChat': '新会话',
|
||||
'mobile.sessions.editOrder': '重新排序项目',
|
||||
'mobile.sessions.doneEditing': '完成',
|
||||
'mobile.sessions.editOrderHint': '拖动手柄或使用箭头重新排序。点击对勾以完成。',
|
||||
'mobile.sessions.editOrderHint': '拖动手柄以重新排序项目。点按项目可显示其工作树并同样拖动排序。点按对勾完成。',
|
||||
'mobile.sessions.dragHandleAria': '拖动 {label} 以重新排序',
|
||||
'mobile.sessions.moveUpAria': '将 {label} 上移',
|
||||
'mobile.sessions.moveDownAria': '将 {label} 下移',
|
||||
'mobile.sessions.removeProjectAria': '移除 {label}',
|
||||
'mobile.sessions.cancelRemoveProjectAria': '取消移除 {label}',
|
||||
'mobile.sessions.confirmRemoveProject': '关闭',
|
||||
'mobile.sessions.confirmRemoveProjectAria': '确认移除 {label}',
|
||||
'mobile.sessions.toast.projectRemoved': '已移除 {label}',
|
||||
'mobile.sessions.archiveSessionAria': '归档 {title}',
|
||||
'mobile.sessions.cancelArchiveAria': '取消归档 {title}',
|
||||
'mobile.sessions.renameSessionAria': '重命名 {title}',
|
||||
'mobile.sessions.renameError': '重命名会话失败',
|
||||
'mobile.sessions.deleteSessionAria': '删除 {title}',
|
||||
'mobile.sessions.confirmDeleteSessionAria': '确认删除 {title}',
|
||||
'mobile.sessions.editProjectAria': '编辑 {label}',
|
||||
'mobile.projectEdit.worktreesTitle': '工作树',
|
||||
'mobile.projectEdit.worktreesEmpty': '此项目还没有工作树。',
|
||||
@@ -180,6 +185,8 @@ export const dict: Record<I18nKey, string> = {
|
||||
'mobile.files.copyPathAria': '复制文件路径',
|
||||
'mobile.files.copyContent': '复制内容',
|
||||
'mobile.files.copyContentAria': '复制文件内容',
|
||||
'mobile.files.editAria': '编辑文件',
|
||||
'mobile.files.doneEditingAria': '完成编辑',
|
||||
'mobile.files.toast.pathCopied': '路径已复制',
|
||||
'mobile.files.toast.contentCopied': '内容已复制',
|
||||
'mobile.files.toast.copyFailed': '复制失败',
|
||||
@@ -2040,21 +2047,6 @@ export const dict: Record<I18nKey, string> = {
|
||||
'chat.chatInput.drop.insertMention': '释放以插入为提及',
|
||||
'chat.chatInput.drop.attachFiles': '将文件拖放到此处以附加',
|
||||
'chat.chatInput.fileFallback': '文件',
|
||||
'chat.mobileStatus.editProjects.title': '编辑项目',
|
||||
'chat.mobileStatus.editProjects.footer': '拖动可重新排序,或使用箭头移动。点击编辑可修改详情。',
|
||||
'chat.mobileStatus.editProjects.empty': '没有可编辑的项目',
|
||||
'chat.mobileStatus.projects.empty': '没有项目',
|
||||
'chat.mobileStatus.projects.addAria': '添加项目',
|
||||
'chat.mobileStatus.projects.removeTitle': '移除项目',
|
||||
'chat.mobileStatus.projects.removeDescriptionPrefix': '确定要移除',
|
||||
'chat.mobileStatus.projects.cancel': '取消',
|
||||
'chat.mobileStatus.projects.remove': '移除',
|
||||
'chat.mobileStatus.new': '新建',
|
||||
'chat.mobileStatus.noSessionsInProject': '该项目中没有会话',
|
||||
'chat.mobileStatus.swipeHint': '← 在此滑动以打开侧边栏 →',
|
||||
'chat.mobileStatus.toast.addProjectFailed': '添加项目失败',
|
||||
'chat.mobileStatus.toast.selectValidDirectory': '请选择有效目录。',
|
||||
'chat.mobileStatus.toast.selectDirectoryFailed': '选择目录失败',
|
||||
'chat.toolOutputDialog.image.previousAria': '上一张图片',
|
||||
'chat.toolOutputDialog.image.nextAria': '下一张图片',
|
||||
'chat.toolOutputDialog.image.closeAria': '关闭图片预览',
|
||||
|
||||
@@ -53,6 +53,9 @@ export const dict: Record<I18nKey, string> = {
|
||||
'mobile.connect.unlockButton': '解鎖並連線',
|
||||
'mobile.connect.cancelPassword': '使用其他伺服器',
|
||||
'mobile.connect.connecting': '連線中...',
|
||||
'mobile.connect.notice.unreachable': '無法連線至 {label}。請確認伺服器正在執行。',
|
||||
'mobile.connect.notice.authExpired': '對 {label} 的存取已過期或被撤銷。請重新登入。',
|
||||
'mobile.connect.recovery.description': '無法連線至已儲存的伺服器。請確認它正在執行,或選擇其他執行個體。',
|
||||
'mobile.connect.scanQr': '掃描 QR code',
|
||||
'mobile.connect.welcome.scanHint': '在電腦上開啟「新增裝置」顯示 QR 代碼,然後在這裡掃描。',
|
||||
'mobile.connect.advanced': '進階',
|
||||
@@ -89,9 +92,9 @@ export const dict: Record<I18nKey, string> = {
|
||||
'mobile.nav.settings': '設定',
|
||||
'mobile.surface.closeAria': '關閉',
|
||||
'mobile.header.openMenuAria': '開啟選單',
|
||||
'mobile.header.openWorkspaceAria': '開啟工作區面板',
|
||||
'mobile.header.openMetadataAria': '開啟工作階段中繼資料',
|
||||
'mobile.header.metadata.context': '上下文',
|
||||
'mobile.header.metadata.branch': '分支',
|
||||
'mobile.header.metadata.usage': '用量',
|
||||
'mobile.menu.titleAria': '工作區工具',
|
||||
'mobile.menu.files': '檔案',
|
||||
@@ -123,17 +126,19 @@ export const dict: Record<I18nKey, string> = {
|
||||
'mobile.sessions.newChat': '新聊天',
|
||||
'mobile.sessions.editOrder': '重新排序專案',
|
||||
'mobile.sessions.doneEditing': '完成',
|
||||
'mobile.sessions.editOrderHint': '拖曳把手或使用箭頭重新排序專案。點選勾號完成。',
|
||||
'mobile.sessions.editOrderHint': '拖曳手柄以重新排序專案。點按專案可顯示其工作樹並同樣拖曳排序。點按勾號完成。',
|
||||
'mobile.sessions.dragHandleAria': '拖曳 {label} 以重新排序',
|
||||
'mobile.sessions.moveUpAria': '將 {label} 上移',
|
||||
'mobile.sessions.moveDownAria': '將 {label} 下移',
|
||||
'mobile.sessions.removeProjectAria': '移除 {label}',
|
||||
'mobile.sessions.cancelRemoveProjectAria': '取消移除 {label}',
|
||||
'mobile.sessions.confirmRemoveProject': '關閉',
|
||||
'mobile.sessions.confirmRemoveProjectAria': '確認移除 {label}',
|
||||
'mobile.sessions.toast.projectRemoved': '已移除 {label}',
|
||||
'mobile.sessions.archiveSessionAria': '封存 {title}',
|
||||
'mobile.sessions.cancelArchiveAria': '取消封存 {title}',
|
||||
'mobile.sessions.renameSessionAria': '重新命名 {title}',
|
||||
'mobile.sessions.renameError': '重新命名工作階段失敗',
|
||||
'mobile.sessions.deleteSessionAria': '刪除 {title}',
|
||||
'mobile.sessions.confirmDeleteSessionAria': '確認刪除 {title}',
|
||||
'mobile.sessions.editProjectAria': '編輯 {label}',
|
||||
'mobile.projectEdit.worktreesTitle': '工作樹',
|
||||
'mobile.projectEdit.worktreesEmpty': '此專案還沒有工作樹。',
|
||||
@@ -180,6 +185,8 @@ export const dict: Record<I18nKey, string> = {
|
||||
'mobile.files.copyPathAria': '複製檔案路徑',
|
||||
'mobile.files.copyContent': '複製內容',
|
||||
'mobile.files.copyContentAria': '複製檔案內容',
|
||||
'mobile.files.editAria': '編輯檔案',
|
||||
'mobile.files.doneEditingAria': '完成編輯',
|
||||
'mobile.files.toast.pathCopied': '路徑已複製',
|
||||
'mobile.files.toast.contentCopied': '內容已複製',
|
||||
'mobile.files.toast.copyFailed': '複製失敗',
|
||||
@@ -2044,21 +2051,6 @@ export const dict: Record<I18nKey, string> = {
|
||||
'chat.chatInput.drop.insertMention': '放開以插入為提及',
|
||||
'chat.chatInput.drop.attachFiles': '將檔案拖放至此處以附加',
|
||||
'chat.chatInput.fileFallback': '檔案',
|
||||
'chat.mobileStatus.editProjects.title': '編輯專案',
|
||||
'chat.mobileStatus.editProjects.footer': '拖曳可重新排序,或使用箭頭移動。點擊編輯可修改詳情。',
|
||||
'chat.mobileStatus.editProjects.empty': '沒有可編輯的專案',
|
||||
'chat.mobileStatus.projects.empty': '沒有專案',
|
||||
'chat.mobileStatus.projects.addAria': '新增專案',
|
||||
'chat.mobileStatus.projects.removeTitle': '移除專案',
|
||||
'chat.mobileStatus.projects.removeDescriptionPrefix': '確定要移除',
|
||||
'chat.mobileStatus.projects.cancel': '取消',
|
||||
'chat.mobileStatus.projects.remove': '移除',
|
||||
'chat.mobileStatus.new': '新增',
|
||||
'chat.mobileStatus.noSessionsInProject': '該專案中沒有會話',
|
||||
'chat.mobileStatus.swipeHint': '← 在此滑動以開啟側邊欄 →',
|
||||
'chat.mobileStatus.toast.addProjectFailed': '新增專案失敗',
|
||||
'chat.mobileStatus.toast.selectValidDirectory': '請選擇有效目錄。',
|
||||
'chat.mobileStatus.toast.selectDirectoryFailed': '選擇目錄失敗',
|
||||
'chat.toolOutputDialog.image.previousAria': '上一張圖片',
|
||||
'chat.toolOutputDialog.image.nextAria': '下一張圖片',
|
||||
'chat.toolOutputDialog.image.closeAria': '關閉圖片預覽',
|
||||
|
||||
Reference in New Issue
Block a user