@meith/i18n 0.21.2 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meith/i18n",
3
- "version": "0.21.2",
3
+ "version": "0.23.0",
4
4
  "description": "The message catalog and the locale-aware formatters: ICU messages, plural categories, locale negotiation, and the registry themes and plugins add their own catalogs to.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -3,6 +3,11 @@
3
3
  "accountForm.activity.detail": "{at} · {device} · {address}",
4
4
  "accountForm.activity.none": "Nothing recorded yet.",
5
5
  "accountForm.activity.title": "Recent security activity",
6
+ "accountForm.announcements.blurb": "You can turn this off again here, or from the link at the foot of any announcement. Nothing else the board sends you depends on it.",
7
+ "accountForm.announcements.description": "Occasional e-mails written by the board’s organisers and sent to everybody who has asked for them — a change of venue, a closure, something every member needs to know. Off unless you turn it on.",
8
+ "accountForm.announcements.legend": "Announcements from the organisers",
9
+ "accountForm.announcements.submit": "Save announcements",
10
+ "accountForm.announcements.title": "E-mail me the board’s announcements",
6
11
  "accountForm.avatar.choose": "Choose an image",
7
12
  "accountForm.avatar.failed": "That image could not be processed.",
8
13
  "accountForm.avatar.hint": "PNG or JPEG, up to {max} MB. It is scaled to fit {width}×{height} and re-encoded, which removes any metadata it carries — including where the photograph was taken.",
@@ -213,6 +218,26 @@
213
218
  "adminAttachments.ready": "Ready",
214
219
  "adminAttachments.status": "Status",
215
220
  "adminAttachments.stored": "Stored",
221
+ "adminBanFilter.addFilter": "Add filter",
222
+ "adminBanFilter.added": "Filter added.",
223
+ "adminBanFilter.note": "Note",
224
+ "adminBanFilter.noteHint": "Optional, and only ever seen here. Why the filter exists, so the next administrator knows whether it still needs to.",
225
+ "adminBanFilter.pattern": "Pattern",
226
+ "adminBanFilter.patternHint": "* matches any run of characters and ? matches one. Everything else, a full stop included, matches itself.",
227
+ "adminBanFilter.patternPlaceholder": "*@example.com",
228
+ "adminBanFilter.removeFilter": "Remove {pattern}",
229
+ "adminBanFilter.type": "Matches on",
230
+ "adminBanFilter.typeHint": "Which of the three things a would-be member offers is compared against the pattern.",
231
+ "adminBanFilters.add": "Add a filter",
232
+ "adminBanFilters.addedBy": "Added by {author} on {date}",
233
+ "adminBanFilters.addedOn": "Added on {date}",
234
+ "adminBanFilters.globNote": "Patterns are globs, not regular expressions. * stands for any run of characters and ? for a single one; every other character, including a full stop, matches itself. So .* matches the two characters .* and almost nothing else — the pattern for every address at a domain is *@example.com. Matching ignores case.",
235
+ "adminBanFilters.held": "Filters",
236
+ "adminBanFilters.lede": "A ban filter turns somebody away before an account exists, so a filtered person never reaches the member list. Every registration and every sign-in is checked against these patterns.",
237
+ "adminBanFilters.none": "No filter is held, so nobody is turned away before registering.",
238
+ "adminBanFilters.type.email": "E-mail address",
239
+ "adminBanFilters.type.ip": "Address the request came from",
240
+ "adminBanFilters.type.username": "Username",
216
241
  "adminContent.add": "Add",
217
242
  "adminContent.added": "Added.",
218
243
  "adminContent.announcement.from": "From",
@@ -525,6 +550,7 @@
525
550
  "adminNav.admin-system.title": "System",
526
551
  "adminNav.admin-themes.blurb": "Installed themes, their tokens, and this board’s overrides.",
527
552
  "adminNav.admin-themes.title": "Themes",
553
+ "adminNav.admin-users-ban-filters.title": "Ban filters",
528
554
  "adminNav.admin-users-mail.title": "Mass mail",
529
555
  "adminNav.admin-users-prune.title": "Prune members",
530
556
  "adminNav.admin-users.blurb": "Find an account, change it, merge or prune, or mail the board.",
@@ -989,7 +1015,7 @@
989
1015
  "adminUser.displayGroupHint": "Decides only the badge beside their name.",
990
1016
  "adminUser.email": "Email",
991
1017
  "adminUser.emailHint": "Changing this does not re-verify it, and does not tell the member.",
992
- "adminUser.everyMember": "Every member with a verified address ({audience})",
1018
+ "adminUser.everyMember": "Every member who has asked for announcements ({audience})",
993
1019
  "adminUser.liftBan": "Lift this ban",
994
1020
  "adminUser.lifted": "Lifted. They are back in the group they held when they were banned.",
995
1021
  "adminUser.mailPasswordNote": "You will be asked for your password again. An email cannot be unsent, and a mistake reaches everybody at once.",
@@ -1000,7 +1026,7 @@
1000
1026
  "adminUser.mergeNote": "You will be asked for your password again. There is no undo: everything this account ever posted becomes {username}’s, its sessions are destroyed, and the account is closed.",
1001
1027
  "adminUser.merged": "Merged. Everything now belongs to {username}, and this account has been closed.",
1002
1028
  "adminUser.message": "Message",
1003
- "adminUser.messageHint": "Plain text. It is sent as written — there is no template and no unsubscribe link, so keep it to things every member needs to know.",
1029
+ "adminUser.messageHint": "Plain text. It is sent as written — there is no template under a footer carrying the unsubscribe link every announcement has to have.",
1004
1030
  "adminUser.moveNextBatch": "Move the next batch",
1005
1031
  "adminUser.primaryGroup": "Primary group",
1006
1032
  "adminUser.primaryGroupHint": "Decides what they may do.",
@@ -1024,7 +1050,7 @@
1024
1050
  "adminUser.secondFactorNotHeld": "This member has not set up an authenticator app.",
1025
1051
  "adminUser.secondFactorNote": "For a member who has lost both their authenticator app and their recovery codes. Clearing it signs every one of their sessions out and leaves the account on its password alone, so satisfy yourself that you are talking to the member first. Asks for your password and your own code.",
1026
1052
  "adminUser.sendTo": "Send to",
1027
- "adminUser.sendToHint": "A group means members who hold it as their primary group or as an additional one. The number beside each audience is how many members it would reach right now.",
1053
+ "adminUser.sendToHint": "A group means members who hold it as their primary group or as an additional one. The number beside each audience counts only its members who have asked for announcements, so it is how many would hear from you right now.",
1028
1054
  "adminUser.staffNote": "Staff note",
1029
1055
  "adminUser.staffNoteHint": "Never shown to them. This is where the reasoning goes.",
1030
1056
  "adminUser.state.active": "Active",
@@ -1072,8 +1098,8 @@
1072
1098
  "adminUsers.lastSeenFrom": ", last seen from {address}",
1073
1099
  "adminUsers.lede": "Every criterion is combined, and every one is optional — an empty search is everybody. The filter is in the address bar, so this page can be bookmarked or handed to somebody else.",
1074
1100
  "adminUsers.massMailContinues": "A campaign that stops half way is continued, never restarted — restarting would mail everybody a second time.",
1075
- "adminUsers.massMailLede": "Sends one message to every member of a group. It goes only to addresses the board has verified — an unverified address is as often a typo, or somebody else’s mailbox, as it is the member’s.",
1076
- "adminUsers.massMailNoUnsubscribe": "There is no unsubscribe link and no per-member opt-out, so this is for things every member needs to know rather than for anything promotional.",
1101
+ "adminUsers.massMailLede": "Sends one message to every member of a group who has asked for the board’s announcements. It goes only to addresses the board has verified — an unverified address is as often a typo, or somebody else’s mailbox, as it is the member’s.",
1102
+ "adminUsers.massMailOptIn": "It reaches only members who asked for announcements, nobody else. Every message carries an unsubscribe link, and a member who uses it is out of every campaign that follows.",
1077
1103
  "adminUsers.massMailQueued": "Nothing is sent immediately. Messages are queued and go out as the scheduled tick drains them.",
1078
1104
  "adminUsers.memberLede": "#{id} · registered {registered}{lastSeen}{deleted}",
1079
1105
  "adminUsers.memberMeta": "{posts} · {threads} · {reputation} reputation · {warnings} · {email}",
@@ -1156,6 +1182,8 @@
1156
1182
  "authForm.passkey.signIn": "Sign in with a passkey",
1157
1183
  "authForm.passkey.waiting": "Waiting for your device…",
1158
1184
  "authForm.passwordHint": "{min, plural, one {At least # character.} other {At least # characters.}}",
1185
+ "authForm.register.announcements": "E-mail me the board’s announcements",
1186
+ "authForm.register.announcementsHint": "Optional, and off unless you tick it. Occasional e-mails from the organisers to everybody who asked for them. You can stop them at any time.",
1159
1187
  "authForm.register.challengeHint": "A question set by this board, to show you are not a script.",
1160
1188
  "authForm.register.honeypot": "Leave this field empty",
1161
1189
  "authForm.register.password": "Password",
@@ -1577,6 +1605,7 @@
1577
1605
  "error.accounts.address-already-use-board": "That address is already in use on this board.",
1578
1606
  "error.accounts.address-already-using": "That is the address you are already using.",
1579
1607
  "error.accounts.ban-expire-past": "A ban cannot expire in the past.",
1608
+ "error.accounts.ban-filter-already-held": "This board already holds that filter.",
1580
1609
  "error.accounts.ban-filter-needs-pattern": "A ban filter needs a pattern.",
1581
1610
  "error.accounts.ban-filter-pattern-long": "A ban filter pattern may be at most {max} characters.",
1582
1611
  "error.accounts.ban-filter-too-many-wildcards": "A ban filter pattern may use at most {max} wildcards.",
@@ -1698,6 +1727,7 @@
1698
1727
  "error.app.exist": "That does not exist.",
1699
1728
  "error.app.expires-days-must-whole-number": "Expires in (days) must be a whole number of days above zero. Leave it empty for a token that never expires.",
1700
1729
  "error.app.file-png-jpeg-webp-svg": "That file is not a PNG, JPEG, WebP or SVG. The name is not what decides this — the contents are.",
1730
+ "error.app.filter-match-you-lock-out": "That pattern matches your own account, and saving it would lock you out with no way back through this screen. Narrow it.",
1701
1731
  "error.app.form-submitted-settings": "That form submitted no settings.",
1702
1732
  "error.app.forum-accept-file-attachments": "This forum does not accept file attachments.",
1703
1733
  "error.app.forum-exist": "That forum does not exist.",
@@ -1710,6 +1740,7 @@
1710
1740
  "error.app.group-needs-title": "A group needs a title.",
1711
1741
  "error.app.inactivity-date-date": "That inactivity date is not a date.",
1712
1742
  "error.app.key-contain-lower-case-letters-numbers": "A key may contain lower-case letters, numbers and underscores, and must start with a letter.",
1743
+ "error.app.kind-ban-filter": "That is not a kind of ban filter.",
1713
1744
  "error.app.list": "That is not a list.",
1714
1745
  "error.app.lost-track-where-run-had": "Lost track of where the run had got to. Start again.",
1715
1746
  "error.app.moderate-any-forums": "You do not moderate any forums.",
@@ -1744,6 +1775,7 @@
1744
1775
  "error.app.staff-group-granted-by-plugins": "A staff group cannot be granted by plugins — staff is appointed, not sold.",
1745
1776
  "error.app.such-appointment": "No such appointment.",
1746
1777
  "error.app.such-badge": "No such badge.",
1778
+ "error.app.such-ban-filter": "No such ban filter.",
1747
1779
  "error.app.such-display-group": "No such display group.",
1748
1780
  "error.app.such-forum": "No such forum.",
1749
1781
  "error.app.such-forum-follow": "No such forum to follow.",
@@ -2126,6 +2158,9 @@
2126
2158
  "mail.action.fallback": "If the button does not work, open this address in your browser:",
2127
2159
  "mail.boardFallback": "the forum",
2128
2160
  "mail.footer.account": "You are receiving this because you have an account on {board}.",
2161
+ "mail.footer.announcementsConsent": "You are receiving this because you asked the board for its announcements.",
2162
+ "mail.footer.announcementsNoLink": "Stop these announcements from your notification preferences.",
2163
+ "mail.footer.announcementsStop": "Stop these announcements",
2129
2164
  "mail.footer.preferences": "Change which e-mails you receive",
2130
2165
  "mail.footer.preferencesNoLink": "Change which e-mails you receive from your notification preferences.",
2131
2166
  "mail.footer.sentBy": "Sent by {board}.",
@@ -2257,6 +2292,7 @@
2257
2292
  "nav.unanswered": "Unanswered",
2258
2293
  "nav.userCp": "Your control panel",
2259
2294
  "notice.allRead": "All notifications marked as read.",
2295
+ "notice.announcementsSaved": "Saved — the board will e-mail you its announcements only while you ask for them.",
2260
2296
  "notice.app.account-e-mail-address-send-test": "Your account has no e-mail address to send a test to.",
2261
2297
  "notice.app.board-database-api": "This board has no database, so it has no API.",
2262
2298
  "notice.app.board-offering-web-push": "This board is not offering web push.",
@@ -2397,6 +2433,7 @@
2397
2433
  "page.awaiting-activation": "Awaiting activation",
2398
2434
  "page.awaiting-processing": "Awaiting processing",
2399
2435
  "page.back-their-profile": "Back to their profile",
2436
+ "page.ban-filters": "Ban filters",
2400
2437
  "page.before-installing": "Before installing",
2401
2438
  "page.before-press-it": "Before you press it:",
2402
2439
  "page.board": "The board",
@@ -2608,6 +2645,7 @@
2608
2645
  "page.totals-rolled-up-by-scheduled": "The totals are rolled up by a scheduled task, and it has not run.",
2609
2646
  "page.unsubscribe": "Unsubscribe",
2610
2647
  "page.unsubscribe.emailScope": "This will stop subscription e-mails. What you follow stays as it is, and new posts will still appear in your notifications on the board.",
2648
+ "page.unsubscribe.massMailScope": "This will stop the board’s announcements. Nothing else changes: you will still be notified about what you follow, and your account stays as it is.",
2611
2649
  "page.unsubscribe.targetScope": "This will stop notifications about the thread or forum this message was about. Everything else you follow stays as it is.",
2612
2650
  "page.upgrade-pending": "Upgrade pending.",
2613
2651
  "page.username-contains": "Username contains",
@@ -2882,7 +2920,7 @@
2882
2920
  "setting.reputation.min_posts_to_give.label": "Posts required before rating",
2883
2921
  "setting.search.enabled.description": "Off takes the Search link out of the board navigation, replaces /search and any results page still linked to with a line saying so, and answers GET /api/v1/search with a 403. The index is kept and goes on being maintained, so switching it back on needs no reindex.",
2884
2922
  "setting.search.enabled.label": "Enable search",
2885
- "setting.search.flood_seconds.description": "Minimum seconds between searches per user. Replaces the per-group searchfloodtime permission, which could not obey the numeric combination rule — see docs/mybb-parity.md.",
2923
+ "setting.search.flood_seconds.description": "Minimum seconds between searches per user. Replaces the per-group searchfloodtime permission, which could not obey the numeric combination rule — see docs/reference/mybb-parity.md.",
2886
2924
  "setting.search.flood_seconds.label": "Search flood interval",
2887
2925
  "setting.search.min_word_length.description": "A search is refused unless at least one of its words is this long, so at 3 \"a good post\" runs and \"a b c\" does not. The short words are not dropped — they are still sent to the index, which drops the ones carrying no meaning on its own. Raise it if short words are what your expensive searches turn out to be.",
2888
2926
  "setting.search.min_word_length.label": "Shortest word a search may rest on",
@@ -2914,6 +2952,7 @@
2914
2952
  "stats.posts": "{count, plural, one {# post} other {# posts}}",
2915
2953
  "stats.replies": "{count, plural, one {# reply} other {# replies}}",
2916
2954
  "stats.views": "{count, plural, one {# view} other {# views}}",
2955
+ "subscription.announcementsOff": "Done — the board’s announcements are off. Nothing else has changed, and you can ask for them again from your notification preferences.",
2917
2956
  "subscription.doneOne": "Done — you will not be notified about that any more.",
2918
2957
  "subscription.emailsOff": "Done — subscription e-mails are off. Your subscriptions are unchanged, and you will still see them in your notifications.",
2919
2958
  "subscription.followed": "Saved. You are following this.",