From 25152ddb61a89ea3ea29d3aef5de13343429d32a Mon Sep 17 00:00:00 2001 From: Christophe Besson Date: Fri, 9 Oct 2026 18:23:52 +0200 Subject: feat: back up the phone's photos to a group, once a day on Wi-Fi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Android application sends the photos taken on the phone to one folder of one group chosen by the member (docs/MESHBAY_DESIGN.md §9.12). The phone lists MediaStore, keeps a ledger of what was sent and hands each photo's bytes to the page by an opaque token on the packaged origin; the page decides when a run is due and uploads through the existing path, one photo at a time under a slot. - Once a day from the last finished run, on an unmetered network only; "Back up now" asks first on mobile data. Leaving Wi-Fi stops after the file in flight. - Photos already on the phone are sent by default, newest first, under /YYYY/MM; edits are sent beside the original as -edited-. - Additive by construction: nothing is ever deleted, renamed or replaced on the node, and a photo deleted on the node is not sent again. - A confirmation names the group, owner, members, folder and size when the destination or starting point changes; a lasting refusal (disk full, folder read-only or gone, no longer a member) is said once and retried a day later. - No ACCESS_MEDIA_LOCATION, so the platform redacts photo locations. - A dataSync foreground service keeps a run going with the screen off. HEIC/HEIF photos are sent but not shown in Photos yet (§15.2). Co-Authored-By: Claude Opus 5.5 --- .../src/meshbay_hub/static/locales/ja.js | 45 ++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js') diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js index edf134d..0522f4c 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/ja.js @@ -1274,4 +1274,49 @@ export default { 'native.node_account_confirm': 'このコンピューターの node は {current} 用に設定されています。代わりに {next} 用に設定しますか?{current} のためにホストしているグループは提供されなくなります。', 'native.browser_access_confirm': 'ブラウザーからのサインインを許可しますか?アプリは、利用中のすべての node にあなたの ID を残します。これは、パスフレーズと hub のアカウントの両方がそろった場合にのみ開けるよう封印されます。', 'native.declined': 'キャンセルしました。何も変更されていません。', + + // Photo backup, Android only (photo-sync.js, photo-sync-settings.js). + 'photosync.heading': "写真のバックアップ", + 'photosync.intro': "この電話で撮った写真を、1 日 1 回 Wi-Fi で、グループのいずれかのフォルダーに送ります。電話から削除した写真はグループに残ります。", + 'photosync.setup': "設定する", + 'photosync.change': "変更", + 'photosync.turn_off': "オフにする", + 'photosync.now': "今すぐバックアップ", + 'photosync.permission_needed': "MeshBay がこの電話の写真にアクセスする必要があります。", + 'photosync.permission_allow': "アクセスを許可", + 'photosync.permission_partial': "アクセスは選択した写真に限られています。すべての写真へのアクセスを許可するまで、新しい写真はバックアップされません。", + 'photosync.group': "グループ", + 'photosync.choose_group': "グループを選択", + 'photosync.checking_group': "グループのフォルダーを確認しています…", + 'photosync.group_offline': "このグループをホストしている node は現在オンラインではありません。オンラインになってから再度お試しください。", + 'photosync.no_folder': "このグループには、アップロードでき、かつ写真タブに表示されるフォルダーがありません。", + 'photosync.folder': "フォルダー", + 'photosync.albums': "この電話のアルバム", + 'photosync.album_camera': "カメラ", + 'photosync.album_count': "{n} 枚 · {size}", + 'photosync.scope_existing': "この電話にすでにある写真と、これからの写真", + 'photosync.scope_new': "これから撮る写真のみ", + 'photosync.start': "バックアップを開始", + 'photosync.confirm': "写真は {group}(ホスト: @{owner}、メンバー {members} 人)のフォルダー {folder} に送られます。このグループのメンバー全員が写真を見てダウンロードできます。\n\n{count} 枚({size})を送信し、その後は新しい写真を 1 日 1 回送信します。\n\n送信したものは後で削除できますが、他の人がすでにダウンロードしたコピーは削除できません。", + 'photosync.confirm_new': "写真は {group}(ホスト: @{owner}、メンバー {members} 人)のフォルダー {folder} に送られます。このグループのメンバー全員が写真を見てダウンロードできます。\n\n新しい写真を 1 日 1 回送信します。\n\n送信したものは後で削除できますが、他の人がすでにダウンロードしたコピーは削除できません。", + 'photosync.metered_confirm': "モバイルデータ通信中です — {count} 枚、{size}。それでも送信しますか?", + 'photosync.summary': "{group} (@{owner}) → {folder}", + 'photosync.other_account': "@{account} 用に設定されています。続けるには @{account} でサインインするか、ここで設定し直してください。", + 'photosync.sent_total': "送信済みの写真: {n}", + 'photosync.last_run': "前回のバックアップ: {when}", + 'photosync.never': "まだバックアップしていません", + 'photosync.state_waiting_wifi': "Wi-Fi を待っています", + 'photosync.state_connecting': "グループに接続しています…", + 'photosync.state_sending': "送信中 {done} / {total}", + 'photosync.state_offline': "グループの node がオンラインではありません。後で再試行します", + 'photosync.state_interrupted': "中断しました — 次の機会に続行します", + 'photosync.state_up_to_date': "最新です", + 'photosync.notif_progress': "写真をバックアップ中 — {done} / {total}", + 'photosync.fail_disk_full': "写真のバックアップを停止しました: node のディスクがいっぱいです。", + 'photosync.fail_read_only': "写真のバックアップを停止しました: フォルダーがアップロードを受け付けなくなりました。", + 'photosync.fail_no_folder': "写真のバックアップを停止しました: フォルダーがグループに存在しなくなりました。", + 'photosync.fail_unavailable': "写真のバックアップを停止しました: フォルダーのドライブが node に接続されていません。", + 'photosync.fail_not_member': "写真のバックアップを停止しました: このグループのメンバーではなくなりました。", + 'photosync.fail_permission': "写真のバックアップを停止しました: MeshBay が写真にアクセスできなくなりました。", + 'photosync.fail_other': "写真のバックアップを停止しました。", }; -- cgit v1.2.3