mirror of
https://github.com/svemagie/indiekit-endpoint-activitypub.git
synced 2026-04-02 15:44:58 +02:00
Users can favorite instances (with local or federated scope) as persistent columns in a multi-column deck view. Each column streams its own public timeline with independent infinite scroll. Includes two-tab explore UI (Search + Decks), deck CRUD API with CSRF/SSRF protection, 8-deck limit, responsive CSS Grid layout, and scope badges.
291 lines
12 KiB
JSON
291 lines
12 KiB
JSON
{
|
|
"activitypub": {
|
|
"title": "ActivityPub",
|
|
"followers": "Followers",
|
|
"following": "Following",
|
|
"activities": "Activity log",
|
|
"featured": "Pinned Posts",
|
|
"featuredTags": "Featured Tags",
|
|
"recentActivity": "Recent activity",
|
|
"noActivity": "No activity yet. Once your actor is federated, interactions will appear here.",
|
|
"noFollowers": "No followers yet.",
|
|
"noFollowing": "Not following anyone yet.",
|
|
"followerCount": "%d follower",
|
|
"followerCount_plural": "%d followers",
|
|
"followingCount": "%d following",
|
|
"followedAt": "Followed",
|
|
"source": "Source",
|
|
"sourceImport": "Mastodon import",
|
|
"sourceManual": "Manual",
|
|
"sourceFederation": "Federation",
|
|
"sourceRefollowPending": "Re-follow pending",
|
|
"sourceRefollowFailed": "Re-follow failed",
|
|
"direction": "Direction",
|
|
"directionInbound": "Received",
|
|
"directionOutbound": "Sent",
|
|
"profile": {
|
|
"title": "Profile",
|
|
"intro": "Edit how your actor appears to other fediverse users. Changes take effect immediately.",
|
|
"nameLabel": "Display name",
|
|
"nameHint": "Your name as shown on your fediverse profile",
|
|
"summaryLabel": "Bio",
|
|
"summaryHint": "A short description of yourself. HTML is allowed.",
|
|
"urlLabel": "Website URL",
|
|
"urlHint": "Your website address, shown as a link on your profile",
|
|
"iconLabel": "Avatar URL",
|
|
"iconHint": "URL to your profile picture (square, at least 400x400px recommended)",
|
|
"imageLabel": "Header image URL",
|
|
"imageHint": "URL to a banner image shown at the top of your profile",
|
|
"manualApprovalLabel": "Manually approve followers",
|
|
"manualApprovalHint": "When enabled, follow requests require your approval before they take effect",
|
|
"actorTypeLabel": "Actor type",
|
|
"actorTypeHint": "How your account appears in the fediverse. Person for individuals, Service for bots or automated accounts, Organization for groups or companies.",
|
|
"linksLabel": "Profile links",
|
|
"linksHint": "Links shown on your fediverse profile. Add your website, social accounts, or other URLs. Pages that link back with rel=\"me\" will show as verified on Mastodon.",
|
|
"linkNameLabel": "Label",
|
|
"linkValueLabel": "URL",
|
|
"addLink": "Add link",
|
|
"removeLink": "Remove",
|
|
"authorizedFetchLabel": "Require authorized fetch (secure mode)",
|
|
"authorizedFetchHint": "When enabled, only servers with valid HTTP Signatures can fetch your actor and collections. This improves privacy but may reduce compatibility with some clients.",
|
|
"save": "Save profile",
|
|
"saved": "Profile saved. Changes are now visible to the fediverse.",
|
|
"public": {
|
|
"followPrompt": "Follow me on the fediverse",
|
|
"copyHandle": "Copy handle",
|
|
"copied": "Copied!",
|
|
"pinnedPosts": "Pinned posts",
|
|
"recentPosts": "Recent posts",
|
|
"joinedDate": "Joined",
|
|
"posts": "Posts",
|
|
"followers": "Followers",
|
|
"following": "Following",
|
|
"viewOnSite": "View on site"
|
|
},
|
|
"remote": {
|
|
"follow": "Follow",
|
|
"unfollow": "Unfollow",
|
|
"viewOn": "View on",
|
|
"postsTitle": "Posts",
|
|
"noPosts": "No posts from this account yet.",
|
|
"followToSee": "Follow this account to see their posts in your timeline.",
|
|
"notFound": "Could not find this account. It may have been deleted or the server may be unavailable."
|
|
}
|
|
},
|
|
"migrate": {
|
|
"title": "Mastodon migration",
|
|
"intro": "This guide walks you through moving your Mastodon identity to your IndieWeb site. Complete each step in order — your existing followers will be notified and can re-follow you automatically.",
|
|
"step1Title": "Step 1 — Link your old account",
|
|
"step1Desc": "Tell the fediverse that your old Mastodon account and this site belong to the same person. This sets the <code>alsoKnownAs</code> property on your ActivityPub actor, which Mastodon checks before allowing a Move.",
|
|
"aliasLabel": "Old Mastodon account URL",
|
|
"aliasHint": "The full URL of your Mastodon profile, e.g. https://mstdn.social/users/rmdes",
|
|
"aliasSave": "Save alias",
|
|
"aliasCurrent": "Current alias",
|
|
"aliasNone": "No alias configured yet.",
|
|
"step2Title": "Step 2 — Import your social graph",
|
|
"step2Desc": "Upload the CSV files from your Mastodon data export to bring over your connections. Go to your Mastodon instance → Preferences → Import and export → Data export to download them.",
|
|
"importLegend": "What to import",
|
|
"fileLabel": "CSV file",
|
|
"fileHint": "Select a CSV file from your Mastodon data export (e.g. following_accounts.csv or followers.csv)",
|
|
"importButton": "Import",
|
|
"importFollowing": "Following list",
|
|
"importFollowingHint": "Accounts you follow — they will appear in your Following list immediately",
|
|
"importFollowers": "Followers list",
|
|
"importFollowersHint": "Your current followers — they will be recorded as pending until they re-follow you after the Move in step 3",
|
|
"step3Title": "Step 3 — Move your account",
|
|
"step3Desc": "Once you have saved your alias and imported your data, go to your Mastodon instance → Preferences → Account → <strong>Move to a different account</strong>. Enter your new fediverse handle and confirm. Mastodon will notify all your followers, and those whose servers support it will automatically re-follow you here. This step is irreversible — your old account will become a redirect.",
|
|
"errorNoFile": "Please select a CSV file before importing.",
|
|
"success": "Imported %d following, %d followers (%d failed).",
|
|
"failedList": "Could not resolve: %s",
|
|
"failedListSummary": "Failed handles",
|
|
"aliasSuccess": "Alias saved — your actor document now includes this account as alsoKnownAs."
|
|
},
|
|
"refollow": {
|
|
"title": "Batch re-follow",
|
|
"progress": "Re-follow progress",
|
|
"remaining": "Remaining",
|
|
"awaitingAccept": "Awaiting accept",
|
|
"accepted": "Accepted",
|
|
"failed": "Failed",
|
|
"pause": "Pause",
|
|
"resume": "Resume",
|
|
"status": {
|
|
"idle": "Idle",
|
|
"running": "Running",
|
|
"paused": "Paused",
|
|
"completed": "Completed"
|
|
}
|
|
},
|
|
"moderation": {
|
|
"title": "Moderation",
|
|
"blockedTitle": "Blocked accounts",
|
|
"mutedActorsTitle": "Muted accounts",
|
|
"mutedKeywordsTitle": "Muted keywords",
|
|
"noBlocked": "No blocked accounts.",
|
|
"noMutedActors": "No muted accounts.",
|
|
"noMutedKeywords": "No muted keywords.",
|
|
"unblock": "Unblock",
|
|
"unmute": "Unmute",
|
|
"addKeywordTitle": "Add muted keyword",
|
|
"keywordPlaceholder": "Enter keyword or phrase…",
|
|
"addKeyword": "Add",
|
|
"muteActor": "Mute",
|
|
"blockActor": "Block",
|
|
"filterModeTitle": "Filter mode",
|
|
"filterModeHint": "Choose how muted content is handled in your timeline. Blocked accounts are always hidden.",
|
|
"filterModeHide": "Hide — remove from timeline",
|
|
"filterModeWarn": "Warn — show behind content warning",
|
|
"cwMutedAccount": "Muted account",
|
|
"cwMutedKeyword": "Muted keyword:",
|
|
"cwFiltered": "Filtered content"
|
|
},
|
|
"compose": {
|
|
"title": "Compose reply",
|
|
"modeLabel": "Reply mode",
|
|
"modeMicropub": "Post as blog reply",
|
|
"modeMicropubHint": "Creates a permanent post on your blog, syndicated to the fediverse",
|
|
"modeQuick": "Quick reply",
|
|
"modeQuickHint": "Sends a reply directly to the fediverse (no blog post created)",
|
|
"placeholder": "Write your reply…",
|
|
"syndicateLabel": "Syndicate to",
|
|
"submitMicropub": "Post reply",
|
|
"submitQuick": "Send reply",
|
|
"cancel": "Cancel",
|
|
"errorEmpty": "Reply content cannot be empty"
|
|
},
|
|
"notifications": {
|
|
"title": "Notifications",
|
|
"empty": "No notifications yet. Interactions from other fediverse users will appear here.",
|
|
"liked": "liked your post",
|
|
"boostedPost": "boosted your post",
|
|
"followedYou": "followed you",
|
|
"repliedTo": "replied to your post",
|
|
"mentionedYou": "mentioned you",
|
|
"markAllRead": "Mark all read",
|
|
"clearAll": "Clear all",
|
|
"clearConfirm": "Delete all notifications? This cannot be undone.",
|
|
"dismiss": "Dismiss",
|
|
"viewThread": "View thread",
|
|
"tabs": {
|
|
"all": "All",
|
|
"replies": "Replies",
|
|
"likes": "Likes",
|
|
"boosts": "Boosts",
|
|
"follows": "Follows"
|
|
},
|
|
"emptyTab": "No %s notifications yet."
|
|
},
|
|
"reader": {
|
|
"title": "Reader",
|
|
"tabs": {
|
|
"all": "All",
|
|
"notes": "Notes",
|
|
"articles": "Articles",
|
|
"replies": "Replies",
|
|
"boosts": "Boosts",
|
|
"media": "Media"
|
|
},
|
|
"empty": "Your timeline is empty. Follow some accounts to see their posts here.",
|
|
"boosted": "boosted",
|
|
"replyingTo": "Replying to",
|
|
"showContent": "Show content",
|
|
"hideContent": "Hide content",
|
|
"sensitiveContent": "Sensitive content",
|
|
"videoNotSupported": "Your browser does not support the video element.",
|
|
"audioNotSupported": "Your browser does not support the audio element.",
|
|
"actions": {
|
|
"reply": "Reply",
|
|
"boost": "Boost",
|
|
"unboost": "Undo boost",
|
|
"like": "Like",
|
|
"unlike": "Unlike",
|
|
"viewOriginal": "View original",
|
|
"liked": "Liked",
|
|
"boosted": "Boosted",
|
|
"likeError": "Could not like this post",
|
|
"boostError": "Could not boost this post"
|
|
},
|
|
"post": {
|
|
"title": "Post Detail",
|
|
"notFound": "Post not found or no longer available.",
|
|
"openExternal": "Open on original instance",
|
|
"parentPosts": "Thread",
|
|
"replies": "Replies",
|
|
"back": "Back to timeline",
|
|
"loadingThread": "Loading thread...",
|
|
"threadError": "Could not load full thread"
|
|
},
|
|
"resolve": {
|
|
"placeholder": "Paste a fediverse URL or @user@domain handle…",
|
|
"label": "Look up a fediverse post or account",
|
|
"button": "Look up",
|
|
"notFoundTitle": "Not found",
|
|
"notFound": "Could not find this post or account. The URL may be invalid, the server may be unavailable, or the content may have been deleted.",
|
|
"followersLabel": "followers"
|
|
},
|
|
"linkPreview": {
|
|
"label": "Link preview"
|
|
},
|
|
"explore": {
|
|
"title": "Explore",
|
|
"description": "Browse public timelines from remote Mastodon-compatible instances.",
|
|
"instancePlaceholder": "Enter an instance hostname, e.g. mastodon.social",
|
|
"browse": "Browse",
|
|
"local": "Local",
|
|
"federated": "Federated",
|
|
"loadError": "Could not load timeline from this instance. It may be unavailable or not support the Mastodon API.",
|
|
"timeout": "Request timed out. The instance may be slow or unavailable.",
|
|
"noResults": "No posts found on this instance's public timeline.",
|
|
"invalidInstance": "Invalid instance hostname. Please enter a valid domain name.",
|
|
"mauLabel": "MAU",
|
|
"timelineSupported": "Public timeline available",
|
|
"timelineUnsupported": "Public timeline not available",
|
|
"tabs": {
|
|
"search": "Search",
|
|
"decks": "Decks"
|
|
},
|
|
"deck": {
|
|
"addToDeck": "Add to deck",
|
|
"removeFromDeck": "Remove from deck",
|
|
"inDeck": "In deck",
|
|
"deckLimitReached": "Maximum of 8 decks reached",
|
|
"localBadge": "Local",
|
|
"federatedBadge": "Federated",
|
|
"removeColumn": "Remove column",
|
|
"retry": "Retry",
|
|
"loadError": "Could not load timeline from this instance.",
|
|
"emptyState": "No decks yet. Browse an instance in the Search tab and click the star to add it.",
|
|
"emptyStateLink": "Go to Search"
|
|
}
|
|
},
|
|
"tagTimeline": {
|
|
"postsTagged": "%d posts",
|
|
"postsTagged_plural": "%d posts",
|
|
"noPosts": "No posts found with #%s in your timeline.",
|
|
"followTag": "Follow hashtag",
|
|
"unfollowTag": "Unfollow hashtag",
|
|
"following": "Following"
|
|
},
|
|
"pagination": {
|
|
"newer": "← Newer",
|
|
"older": "Older →",
|
|
"loadMore": "Load more",
|
|
"loading": "Loading…",
|
|
"noMore": "You're all caught up."
|
|
}
|
|
},
|
|
"myProfile": {
|
|
"title": "My Profile",
|
|
"posts": "posts",
|
|
"editProfile": "Edit profile",
|
|
"empty": "Nothing here yet.",
|
|
"tabs": {
|
|
"posts": "Posts",
|
|
"replies": "Replies",
|
|
"likes": "Likes",
|
|
"boosts": "Boosts"
|
|
}
|
|
}
|
|
}
|
|
}
|