feat(design): the Copy rule — names, verbs, dates and units (E28 S3g)
The owner's picks (all the recommended options) become DESIGN.md's Copy chapter and a sweep of both languages (742 values, no key drift): - One name per feature: the rail's label, which may shorten it (Alerts -> Notifications, Fiókok -> Felhasználók, Download Center -> Downloads, Channel manager -> Channels); one "sync from YouTube" verb. - Four verbs, four meanings (Delete / Remove / Dismiss / Discard, and their Hungarian pairs), checked against what each action does. - Sentence case, the app's places capitalised; "…" on a command that asks first (a popover or form title got its own key without it); one-sentence messages without a stop or a tick, "Couldn't …"; curly quotes. - Dates only from lib/format.ts, in the UI language: formatDateTime names the month and stops at the minute (it printed "9/27/2026, 8:30:14 AM"), formatDateTimeSec for the log, the audit and the recorder; ui/RelativeTime pairs "3d ago" with the exact minute on hover. local/date-format refuses toLocale*String and Intl date formatters elsewhere. - Units from Intl, short (formatUnit): runtimes, totals, the Scheduler countdown, the stats range, the player's tap skip. "2h 13m" was English in both languages. - src/i18n/copyRule.test.ts holds the machine-readable part (quotes, "...", ticks, bare unit letters).
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"actionsLabel": "Catalog actions",
|
||||
"syncSubscriptions": "Read subscriptions from YouTube",
|
||||
"syncSubscriptions": "Sync subscriptions from YouTube",
|
||||
"syncSubscriptionsHint": "Re-import your subscription list from YouTube — adds channels you've newly followed and drops ones you've unfollowed. The videos themselves keep syncing automatically in the background; this does not re-fetch them.",
|
||||
"backfillEverything": "Backfill everything",
|
||||
"backfillEverythingHint": "Request full back-catalog backfill for every channel you're subscribed to. Older videos and search become complete as the shared daily quota allows — this can take a while.",
|
||||
@@ -31,8 +31,8 @@
|
||||
"needWriteHint": "Enable playlist editing in Settings to subscribe on YouTube.",
|
||||
"subscribedTitle": "Subscribed on YouTube",
|
||||
"subscribedBody": "You're now following {{name}} — its new uploads will start arriving in your Feed.",
|
||||
"subscribeFailed": "Subscribe failed",
|
||||
"confirmSubscribe": "Subscribe to \"{{name}}\" on YouTube? This changes your real YouTube account and spends a little API quota.",
|
||||
"subscribeFailed": "Couldn't subscribe",
|
||||
"confirmSubscribe": "Subscribe to “{{name}}” on YouTube? This changes your real YouTube account and spends a little API quota.",
|
||||
"cols": {
|
||||
"totalVideos": "Videos",
|
||||
"inPlaylists": "In playlists",
|
||||
@@ -54,8 +54,8 @@
|
||||
"noneYet": "No tags yet — create one below.",
|
||||
"create": "Create tag",
|
||||
"createPlaceholder": "New tag…",
|
||||
"createFailed": "Could not create the tag.",
|
||||
"updateFailed": "Could not update the tag.",
|
||||
"createFailed": "Couldn't create the tag",
|
||||
"updateFailed": "Couldn't update the tag",
|
||||
"noTag": "No tag",
|
||||
"moreCount_one": "{{count}} more tag",
|
||||
"moreCount_other": "{{count}} more tags",
|
||||
@@ -102,7 +102,7 @@
|
||||
},
|
||||
"row": {
|
||||
"openOnYouTube": "Open on YouTube",
|
||||
"editTags": "Edit tags",
|
||||
"editTags": "Edit tags…",
|
||||
"filterFeedByTag": "Filter the Feed by “{{name}}”",
|
||||
"priorityHint": "Your ranking for this channel. Sort the Feed by “Channel priority” to bring higher-priority channels to the top.",
|
||||
"fullHint": "Full history fetched.",
|
||||
@@ -126,20 +126,20 @@
|
||||
},
|
||||
"notify": {
|
||||
"synced": "Synced {{count}} subscriptions",
|
||||
"syncFailed": "Subscription sync failed",
|
||||
"syncFailed": "Couldn't sync subscriptions",
|
||||
"unsubscribed": "Unsubscribed from {{name}} on YouTube",
|
||||
"unsubscribeFailed": "Unsubscribe failed",
|
||||
"unsubscribeFailed": "Couldn't unsubscribe",
|
||||
"fullHistoryRequested": "Full history requested for {{count}} channels",
|
||||
"fullHistoryFailed": "Couldn't request full history",
|
||||
"needYouTube": "Connect your YouTube account to do this.",
|
||||
"needYouTube": "Connect your YouTube account to do this",
|
||||
"connect": "Connect",
|
||||
"filteredByTag": "Feed filtered by tag: {{name}}",
|
||||
"resetDone": "{{name}} reset — re-fetching now",
|
||||
"resetFailed": "Couldn't reset this channel",
|
||||
"hidden": "“{{name}}” hidden from your Feed"
|
||||
},
|
||||
"confirmUnsubscribe": "Unsubscribe from \"{{name}}\" on YouTube? This changes your real YouTube account. To just remove it from your Feed, hide it instead.",
|
||||
"confirmReset": "Re-fetch \"{{name}}\" from scratch? This re-runs its backfill (recent + full history) and spends some API quota.",
|
||||
"confirmUnsubscribe": "Unsubscribe from “{{name}}” on YouTube? This changes your real YouTube account. To just remove it from your Feed, hide it instead.",
|
||||
"confirmReset": "Re-fetch “{{name}}” from scratch? This re-runs its backfill (recent + full history) and spends some API quota.",
|
||||
"searchPlaceholder": "Search channels…",
|
||||
"blocked": {
|
||||
"title": "Blocked channels",
|
||||
|
||||
Reference in New Issue
Block a user