Files
multica/packages/views/locales/ja/common.json
Naiyuan Qing c6783efd88 feat(views): unify avatar upload with crop editing (#5074)
* feat(views): unify avatar upload with crop editing across web/desktop

Add a shared AvatarUploadControl + AvatarCropDialog used by the user,
workspace, agent, and squad avatar entry points. Cropping (pan/zoom, fixed
1:1) and compression run client-side on canvas; the existing /api/upload-file
+ avatar_url chain is reused unchanged (no backend/API/DB changes). This
collapses four hand-rolled upload buttons into one control and removes
AvatarPicker.

Also make the shared display avatar treat all non-human actors (agent, squad,
system) as rounded squares — completing the "circles are for humans"
convention the editors already assumed, so display and editors agree.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>

* feat(views): rebuild avatar cropper to the "Edit avatar" reference form

Replace the hand-rolled canvas cropper with react-easy-crop to match the
requested design: full-bleed image with a dimmed overlay outside a bright
crop window, a rotate control, a zoom slider flanked by −/+, and a
Reset / Cancel / Save footer. Round window for people, rounded-square for
non-human actors; output stays a 512px square (webp, jpeg fallback) through
the same upload/avatar_url chain.

avatar-crop.ts keeps the encode pipeline and gains rotation-aware
getCroppedAvatarBlob; the interactive geometry now lives in react-easy-crop.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>

* fix(views): round square avatar crop frame

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-07-09 20:27:33 +08:00

64 lines
4.4 KiB
JSON

{
"avatar_upload": {
"change": "アバターを変更",
"remove": "削除",
"select_image": "画像ファイルを選択してください。",
"updated": "アバターを更新しました",
"failed": "アバターのアップロードに失敗しました"
},
"avatar_crop": {
"title": "アバターを編集",
"zoom": "ズーム",
"zoom_in": "拡大",
"zoom_out": "縮小",
"rotate": "回転",
"reset": "リセット",
"cancel": "キャンセル",
"apply": "保存",
"uploading": "アップロード中…",
"loading": "読み込み中…",
"load_failed": "画像を読み込めませんでした"
},
"save": "保存",
"cancel": "キャンセル",
"delete": "削除",
"confirm": "確認",
"loading": "読み込み中...",
"time": {
"just_now": "たった今",
"minutes_ago": "{{count}}分前",
"hours_ago": "{{count}}時間前",
"days_ago": "{{count}}日前"
},
"lark_bind": {
"page_title": "Lark アカウントを連携",
"redeeming": "バインディングトークンを使用しています…",
"needs_auth_description": "連携を完了するには Multica にログインしてください。リンク内のトークンが Lark アカウントを現在の Multica ユーザーに紐付けるため、先にログインが必要です。",
"sign_in": "ログイン",
"done_title": "連携が完了しました。",
"done_description": "次回 Lark でボットに送ったメッセージは、そのままエージェントに届きます。このタブは閉じても問題ありません。",
"error_title": "連携を完了できませんでした",
"error_admin_hint": "問題が続く場合は、ワークスペース管理者に Lark から連携リンクを再送してもらってください。",
"error_missing_token": "リンクにバインディングトークンが含まれていません。Lark のボットに新しいリンクを送ってもらってください。",
"error_expired": "この連携リンクは無効か期限切れです(有効期間は 15 分)。ボットに新しいリンクを送ってもらってください。",
"error_already_bound": "この Lark アカウントはすでに別の Multica ユーザーに連携されています。アカウントを移すには、まず明示的に連携を解除する必要があります。",
"error_not_member": "現在ログイン中の Multica アカウントは、このワークスペースのメンバーではありません。",
"error_unknown": "問題が発生しました。もう一度試し、それでも解決しない場合はワークスペース管理者にお問い合わせください。"
},
"slack_bind": {
"page_title": "Slack アカウントを連携",
"redeeming": "アカウントを連携しています…",
"needs_auth_description": "連携を完了するには Multica にサインインしてください。リンク内のトークンが、あなたの Slack アカウントをこの Multica ユーザーに紐付けるため、先にログインが必要です。",
"sign_in": "サインイン",
"done_title": "連携が完了しました。",
"done_description": "次に Slack でボットへ送るメッセージは、そのままエージェントに届きます。このタブは閉じて構いません。",
"error_title": "連携を完了できませんでした",
"error_admin_hint": "繰り返し発生する場合は、Slack でボットにもう一度メッセージを送って新しいリンクを取得してください。",
"error_missing_token": "リンクにトークンがありません。Slack でボットにもう一度メッセージを送って新しいリンクを取得してください。",
"error_expired": "このリンクは無効か期限切れです(有効期限は 15 分)。ボットにもう一度メッセージを送って新しいリンクを取得してください。",
"error_already_bound": "この Slack アカウントは別の Multica ユーザーに連携済みです。移行するにはまず明示的に解除する必要があります。",
"error_not_member": "サインインしている Multica アカウントはこのワークスペースのメンバーではありません。",
"error_unknown": "問題が発生しました。もう一度試し、それでも解決しない場合はワークスペース管理者にお問い合わせください。"
}
}