@meith/i18n 0.7.0 → 0.9.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 +1 -1
- package/src/catalogs/en.json +84 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meith/i18n",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.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": "LGPL-3.0-or-later",
|
|
6
6
|
"repository": {
|
package/src/catalogs/en.json
CHANGED
|
@@ -464,6 +464,7 @@
|
|
|
464
464
|
"adminNav.admin-api-tokens.title": "API tokens",
|
|
465
465
|
"adminNav.admin-content-announcements.title": "Announcements",
|
|
466
466
|
"adminNav.admin-content-attachments.title": "Attachments",
|
|
467
|
+
"adminNav.admin-content-navigation.title": "Navigation",
|
|
467
468
|
"adminNav.admin-content.blurb": "Announcements, attachments, and the housekeeping around them.",
|
|
468
469
|
"adminNav.admin-content.title": "Content",
|
|
469
470
|
"adminNav.admin-forums.blurb": "The tree, each forum’s options, and the permission matrix.",
|
|
@@ -491,6 +492,43 @@
|
|
|
491
492
|
"adminNav.admin.blurb": "What is waiting, the board at a glance, and the latest activity.",
|
|
492
493
|
"adminNav.admin.title": "Overview",
|
|
493
494
|
"adminNav.plugin.blurb": "Every screen {name} adds to the panel.",
|
|
495
|
+
"adminNavigation.address": "Address",
|
|
496
|
+
"adminNavigation.addressHint": "A path on this board — /rules — or a full web address — https://example.com.",
|
|
497
|
+
"adminNavigation.audience": "Shown to",
|
|
498
|
+
"adminNavigation.audience.all": "Everyone",
|
|
499
|
+
"adminNavigation.audience.guests": "Signed-out visitors",
|
|
500
|
+
"adminNavigation.audience.members": "Signed-in members",
|
|
501
|
+
"adminNavigation.audience.staff": "Staff",
|
|
502
|
+
"adminNavigation.builtIn": "from the board",
|
|
503
|
+
"adminNavigation.custom": "added here",
|
|
504
|
+
"adminNavigation.groups": "Groups",
|
|
505
|
+
"adminNavigation.groupsHint": "Tick none to show the item to everyone the audience above admits. Tick some and only members of those groups see it.",
|
|
506
|
+
"adminNavigation.hidden": "hidden",
|
|
507
|
+
"adminNavigation.inside": "Inside",
|
|
508
|
+
"adminNavigation.label": "Label",
|
|
509
|
+
"adminNavigation.labelHint": "Left empty on one of the board’s own items, the item keeps its translated name.",
|
|
510
|
+
"adminNavigation.lede": "The menu across the top of every board page. The six items a new board starts with are ordinary rows here: rename them, reorder them, hide them, or delete them, and add links of your own beside them — to a chat server, a wiki, a shop, or anywhere else.",
|
|
511
|
+
"adminNavigation.newItem": "New menu item",
|
|
512
|
+
"adminNavigation.newTab": "Open in a new tab",
|
|
513
|
+
"adminNavigation.none": "None. The board renders no navigation menu at all.",
|
|
514
|
+
"adminNavigation.removeThis": "Remove this item",
|
|
515
|
+
"adminNavigation.shown": "Shown in the menu",
|
|
516
|
+
"adminNavigation.topLevel": "The top level",
|
|
517
|
+
"adminNavigation.tree.arrowsHint": "Use the arrows to move an item.",
|
|
518
|
+
"adminNavigation.tree.dragHint": "Drag an item by its handle, or use the arrows.",
|
|
519
|
+
"adminNavigation.tree.edit": "Edit {name}",
|
|
520
|
+
"adminNavigation.tree.heading": "The menu",
|
|
521
|
+
"adminNavigation.tree.help": "Dragging an item to the right puts it under the item above, where it becomes a sub-menu that opens when a reader hovers or tabs onto the parent. Sub-menus go one level deep.",
|
|
522
|
+
"adminNavigation.tree.moveHandle": "Move {name}",
|
|
523
|
+
"adminNavigation.tree.nudge.down": "Move {name} down",
|
|
524
|
+
"adminNavigation.tree.nudge.in": "Move {name} under the item above it",
|
|
525
|
+
"adminNavigation.tree.nudge.out": "Move {name} back to the top level",
|
|
526
|
+
"adminNavigation.tree.nudge.up": "Move {name} up",
|
|
527
|
+
"adminNavigation.tree.order.after": "after {after}",
|
|
528
|
+
"adminNavigation.tree.order.first": "first",
|
|
529
|
+
"adminNavigation.tree.placed": "{name} placed {where}, {order}.",
|
|
530
|
+
"adminNavigation.tree.where.topLevel": "at the top level",
|
|
531
|
+
"adminNavigation.tree.where.under": "under {parent}",
|
|
494
532
|
"adminPanel.badge.formats": "PNG, JPEG, WebP or SVG, up to {maxKib} KiB. The contents decide the format, not the file name.",
|
|
495
533
|
"adminPanel.badge.labelSr": "{label} badge",
|
|
496
534
|
"adminPanel.badge.noBadge": "No badge",
|
|
@@ -675,6 +713,8 @@
|
|
|
675
713
|
"adminSystem.searchIndexPending": "{count} not yet searchable",
|
|
676
714
|
"adminSystem.task.attachmentsSweep.description": "Deletes objects in the file store that nothing owns, and fails uploads whose re-encoding never finished. An object key is recorded before its bytes are written and forgotten when a row takes ownership, so what this collects is exactly what a crash between those two steps left behind — a question that is an indexed query here and a full bucket listing anywhere else. Purely subtractive, and bounded by a grace period, so an upload in flight is never collected out from under itself.",
|
|
677
715
|
"adminSystem.task.attachmentsSweep.title": "Collect abandoned attachment files",
|
|
716
|
+
"adminSystem.task.authEventsPrune.description": "Drops sign-in activity older than the retention the board is set to keep. Does nothing at all while that setting is 0, which is the default: the log is an audit trail, and one that expires without being asked to is worse than one that grows.",
|
|
717
|
+
"adminSystem.task.authEventsPrune.title": "Prune sign-in activity",
|
|
678
718
|
"adminSystem.task.avatarsSweep.description": "Marks avatar uploads whose re-encode never finished, so the member is told to try again rather than left looking at a spinner that is not there. Separate from the attachment sweep because it acts on users rather than on the object ledger, and because an operator asking why an avatar is stuck should not have to read a task about attachments. Purely corrective, and safe to run twice.",
|
|
679
719
|
"adminSystem.task.avatarsSweep.title": "Fail unfinished avatar uploads",
|
|
680
720
|
"adminSystem.task.bansExpire.description": "Lifts bans whose expiry has passed, restoring each user to the group they held when banned. Acts on outstanding state rather than on what expired since the last run, so a skipped day costs a delay and nothing else, and a doubled tick lifts nothing twice.",
|
|
@@ -895,6 +935,7 @@
|
|
|
895
935
|
"adminUser.banMember": "Ban this member",
|
|
896
936
|
"adminUser.banPasswordNote": "You will be asked for your password again. This revokes their sessions immediately.",
|
|
897
937
|
"adminUser.banned": "Banned. Their sessions have been revoked.",
|
|
938
|
+
"adminUser.clearSecondFactor": "Clear the second factor",
|
|
898
939
|
"adminUser.displayGroup": "Display group",
|
|
899
940
|
"adminUser.displayGroupHint": "Decides only the badge beside their name.",
|
|
900
941
|
"adminUser.email": "Email",
|
|
@@ -928,6 +969,11 @@
|
|
|
928
969
|
"adminUser.saveAccount": "Save account",
|
|
929
970
|
"adminUser.saveGroups": "Save groups",
|
|
930
971
|
"adminUser.saveState": "Save state",
|
|
972
|
+
"adminUser.secondFactor": "Second factor",
|
|
973
|
+
"adminUser.secondFactorCleared": "Cleared.",
|
|
974
|
+
"adminUser.secondFactorHeld": "This member signs in with an authenticator app as well as their password.",
|
|
975
|
+
"adminUser.secondFactorNotHeld": "This member has not set up an authenticator app.",
|
|
976
|
+
"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.",
|
|
931
977
|
"adminUser.sendTo": "Send to",
|
|
932
978
|
"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.",
|
|
933
979
|
"adminUser.staffNote": "Staff note",
|
|
@@ -1026,6 +1072,7 @@
|
|
|
1026
1072
|
"authEvent.password_reset": "Password reset",
|
|
1027
1073
|
"authEvent.recovery_code_used": "A recovery code was used to sign in",
|
|
1028
1074
|
"authEvent.recovery_codes_replaced": "Recovery codes replaced",
|
|
1075
|
+
"authEvent.second_factor_cleared": "Second factor cleared by staff",
|
|
1029
1076
|
"authEvent.second_factor_disabled": "Two-factor authentication turned off",
|
|
1030
1077
|
"authEvent.second_factor_enabled": "Two-factor authentication turned on",
|
|
1031
1078
|
"authEvent.second_factor_failed": "A wrong two-factor code was given",
|
|
@@ -1079,14 +1126,14 @@
|
|
|
1079
1126
|
"authMail.greeting": "Hello {username},",
|
|
1080
1127
|
"authMail.linkHours": "The link is valid for {hours} hours and can be used once.",
|
|
1081
1128
|
"authMail.linkMinutes": "The link is valid for {minutes} minutes and can be used once.",
|
|
1129
|
+
"authMail.reset.action": "Reset your password",
|
|
1082
1130
|
"authMail.reset.ignore": "If this was not you, ignore this message. Your password has not changed, and nothing happens until the link is used.",
|
|
1083
1131
|
"authMail.reset.intro": "Somebody — we hope you — asked to reset the password for your account on {board}.",
|
|
1084
|
-
"authMail.reset.link": "Reset your password: {link}",
|
|
1085
1132
|
"authMail.reset.noLink": "Open {board} and use the “forgot your password” form again once the board has its address configured; the link in this message could not be built.",
|
|
1086
1133
|
"authMail.reset.subject": "Reset your password",
|
|
1134
|
+
"authMail.verify.action": "Confirm your address",
|
|
1087
1135
|
"authMail.verify.ignore": "If you did not create this account, ignore this message. An unconfirmed account cannot be used.",
|
|
1088
1136
|
"authMail.verify.intro": "An account was created for this address on {board}. It cannot be used until the address is confirmed.",
|
|
1089
|
-
"authMail.verify.link": "Confirm your address: {link}",
|
|
1090
1137
|
"authMail.verify.noLink": "Open {board} and use the “resend confirmation” link on the sign-in page to get a working link.",
|
|
1091
1138
|
"authMail.verify.subject": "Confirm your account",
|
|
1092
1139
|
"authNotice.activated": "Your address is confirmed. You can sign in now.",
|
|
@@ -1413,6 +1460,8 @@
|
|
|
1413
1460
|
"error.accounts.address-already-using": "That is the address you are already using.",
|
|
1414
1461
|
"error.accounts.ban-expire-past": "A ban cannot expire in the past.",
|
|
1415
1462
|
"error.accounts.ban-filter-needs-pattern": "A ban filter needs a pattern.",
|
|
1463
|
+
"error.accounts.ban-filter-pattern-long": "A ban filter pattern may be at most {max} characters.",
|
|
1464
|
+
"error.accounts.ban-filter-too-many-wildcards": "A ban filter pattern may use at most {max} wildcards.",
|
|
1416
1465
|
"error.accounts.bio-length": "About me may be at most {max} characters.",
|
|
1417
1466
|
"error.accounts.board-asks-its-staff-for": "This board asks its staff for a code, so this cannot be turned off while you hold that access.",
|
|
1418
1467
|
"error.accounts.board-read-secret-behind-authenticator": "This board cannot read the secret behind your authenticator app. Its AUTH_SECRET has changed, so two-factor authentication must be set up again.",
|
|
@@ -1478,6 +1527,7 @@
|
|
|
1478
1527
|
"error.app.board-keeps-signatures": "This board keeps no signatures.",
|
|
1479
1528
|
"error.app.board-manages-sign-ins-for-its": "This board manages sign-ins for its members.",
|
|
1480
1529
|
"error.app.board-offer-two-factor-authentication": "This board does not offer two-factor authentication.",
|
|
1530
|
+
"error.app.board-running-in-memory-navigation": "This board is running on in-memory sample data, so the navigation cannot be edited.",
|
|
1481
1531
|
"error.app.board-running-in-memory-sample-data": "This board is running on in-memory sample data, so it keeps no reputation.",
|
|
1482
1532
|
"error.app.board-running-in-memory-sample-data-10": "This board is running on in-memory sample data, so it has no signatures to save.",
|
|
1483
1533
|
"error.app.board-running-in-memory-sample-data-11": "This board is running on in-memory sample data, which is not indexed for search.",
|
|
@@ -1557,6 +1607,9 @@
|
|
|
1557
1607
|
"error.app.must-logged-report-anything": "You must be logged in to report anything.",
|
|
1558
1608
|
"error.app.must-logged-vote": "You must be logged in to vote.",
|
|
1559
1609
|
"error.app.name-member-choose-group-both": "Name a member or choose a group, not both.",
|
|
1610
|
+
"error.app.navigation-address-path-or-web-address": "Give a path on this board, starting with /, or a full http(s) web address.",
|
|
1611
|
+
"error.app.navigation-audience-unknown": "Choose who the item is shown to.",
|
|
1612
|
+
"error.app.navigation-item-go-further-direction": "That item cannot go any further in that direction.",
|
|
1560
1613
|
"error.app.password-right": "That password is not right.",
|
|
1561
1614
|
"error.app.poll-exist": "That poll does not exist.",
|
|
1562
1615
|
"error.app.post-exist": "That post does not exist.",
|
|
@@ -1623,6 +1676,10 @@
|
|
|
1623
1676
|
"error.db.members-moved-into-group-being": "Members cannot be moved into the group being deleted.",
|
|
1624
1677
|
"error.db.message-needs-body": "A message needs a body.",
|
|
1625
1678
|
"error.db.message-needs-subject": "A message needs a subject.",
|
|
1679
|
+
"error.db.navigation-item-needs-address": "A menu item needs an address.",
|
|
1680
|
+
"error.db.navigation-item-needs-label": "A menu item needs a label.",
|
|
1681
|
+
"error.db.navigation-item-parent-top-level": "A menu item can only sit under a top-level item.",
|
|
1682
|
+
"error.db.navigation-item-with-items-under": "An item with items under it cannot itself go under one.",
|
|
1626
1683
|
"error.db.one-these-accounts-banned-lift": "One of these accounts is banned. Lift the ban before merging.",
|
|
1627
1684
|
"error.db.prefix-needs-label": "A prefix needs a label.",
|
|
1628
1685
|
"error.db.question-needs-asked": "A question needs to be asked.",
|
|
@@ -1636,6 +1693,7 @@
|
|
|
1636
1693
|
"error.db.such-member": "No such member.",
|
|
1637
1694
|
"error.db.such-member-member-under-ban": "No such member, or the member is under a ban. Lift the ban first.",
|
|
1638
1695
|
"error.db.such-message": "No such message.",
|
|
1696
|
+
"error.db.such-navigation-item": "No such menu item.",
|
|
1639
1697
|
"error.db.such-promotion-rule": "No such promotion rule.",
|
|
1640
1698
|
"error.db.such-question": "No such question.",
|
|
1641
1699
|
"error.db.such-smiley": "No such smiley.",
|
|
@@ -1842,6 +1900,8 @@
|
|
|
1842
1900
|
"install.outcome.passwords": "Passwords are never sent back to this page, so any you typed are empty again — retype them.",
|
|
1843
1901
|
"install.password.hint": "At least 12 characters. Nothing on this board can reset it until mail works.",
|
|
1844
1902
|
"install.password.label": "Your password",
|
|
1903
|
+
"install.raced.inFlight": "Another install is already running against this database. Wait for it to finish, then reload this page.",
|
|
1904
|
+
"install.raced.sealed": "Another install sealed the board while this one was running. Nothing here was kept.",
|
|
1845
1905
|
"install.step.admin.detail": "Argon2id, the same registration path a member uses, then promoted.",
|
|
1846
1906
|
"install.step.admin.title": "Create the administrator",
|
|
1847
1907
|
"install.step.forum.detail": "A category and one forum inside it, so the index is not empty.",
|
|
@@ -1930,6 +1990,14 @@
|
|
|
1930
1990
|
"legal.page.privacy.title": "Privacy policy",
|
|
1931
1991
|
"legal.page.terms.footer": "Terms",
|
|
1932
1992
|
"legal.page.terms.title": "Terms of service",
|
|
1993
|
+
"mail.action.fallback": "If the button does not work, open this address in your browser:",
|
|
1994
|
+
"mail.boardFallback": "the forum",
|
|
1995
|
+
"mail.footer.account": "You are receiving this because you have an account on {board}.",
|
|
1996
|
+
"mail.footer.preferences": "Change which e-mails you receive",
|
|
1997
|
+
"mail.footer.preferencesNoLink": "Change which e-mails you receive from your notification preferences.",
|
|
1998
|
+
"mail.footer.sentBy": "Sent by {board}.",
|
|
1999
|
+
"mail.footer.unsubscribe": "Unsubscribe without signing in",
|
|
2000
|
+
"mail.notification.action": "View it on {board}",
|
|
1933
2001
|
"mailTest.action.failed": "The message could not be sent. {error} (Sent through: {configuration}.)",
|
|
1934
2002
|
"mailTest.action.sent": "A test message is on its way to {email}. If it does not arrive within a minute or two, check the spam folder and then the provider’s own log — the board has done everything it can see.",
|
|
1935
2003
|
"mailTest.boardFallback": "your board",
|
|
@@ -2258,6 +2326,7 @@
|
|
|
2258
2326
|
"page.moderator-log": "Moderator log",
|
|
2259
2327
|
"page.moderator-will-look-at-this": "A moderator will look at this. Your report is private.",
|
|
2260
2328
|
"page.my-forums": "My forums",
|
|
2329
|
+
"page.navigation": "Navigation",
|
|
2261
2330
|
"page.never-warned": "Never warned",
|
|
2262
2331
|
"page.new-announcement": "New announcement",
|
|
2263
2332
|
"page.new-thread": "New thread",
|
|
@@ -2621,6 +2690,8 @@
|
|
|
2621
2690
|
"setting.search.flood_seconds.label": "Search flood interval",
|
|
2622
2691
|
"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.",
|
|
2623
2692
|
"setting.search.min_word_length.label": "Shortest word a search may rest on",
|
|
2693
|
+
"setting.security.auth_event_retention_days.description": "How long the sign-in activity log holds an entry before the hourly prune drops it. 0 keeps every entry forever, which is the default: an audit trail that deletes itself without being asked is one you cannot rely on. Set a number of days where a retention policy says you must.",
|
|
2694
|
+
"setting.security.auth_event_retention_days.label": "Days of sign-in activity to keep",
|
|
2624
2695
|
"setting.security.lockout_minutes.description": "How long an account stays locked after too many failures. The window the counts above are measured over, and the one the per-address limit on the anti-spam screen shares.",
|
|
2625
2696
|
"setting.security.lockout_minutes.label": "Lockout duration (minutes)",
|
|
2626
2697
|
"setting.security.max_account_login_attempts.description": "The same count for one account across every address at once, which is what a guess spread over a botnet meets. Keep it well above the per-address number — it locks the real owner out too, which is the cost of it working at all. 0 disables it.",
|
|
@@ -2826,12 +2897,22 @@
|
|
|
2826
2897
|
"usercp.linkInvalid": "That confirmation link is no longer valid — it may have been used already, expired, or the address may have been taken in the meantime.",
|
|
2827
2898
|
"usercp.passwordChanged": "Your password has been changed. You are still signed in here; every other device has been signed out.",
|
|
2828
2899
|
"usercp.saved": "Saved.",
|
|
2900
|
+
"usercpMail.action": "Confirm the change",
|
|
2829
2901
|
"usercpMail.boardFallback": "the forum",
|
|
2830
2902
|
"usercpMail.greeting": "Hello,",
|
|
2831
2903
|
"usercpMail.ignore": "If this was not you, ignore this message. Nothing changes until the link is used.",
|
|
2832
2904
|
"usercpMail.intro": "Somebody — we hope you — asked to use this address for their account on {board}.",
|
|
2833
|
-
"usercpMail.link": "Confirm the change: {link}",
|
|
2834
2905
|
"usercpMail.noLink": "Open your user control panel on the board and follow the confirmation link there.",
|
|
2906
|
+
"usercpMail.notice.adopted": "The account on {board} that used this address now uses {email}.",
|
|
2907
|
+
"usercpMail.notice.adoptedAction": "Open {board}",
|
|
2908
|
+
"usercpMail.notice.adoptedSecure": "If this was not you, this address can no longer reset the account’s password. Ask the board’s staff to help you recover it.",
|
|
2909
|
+
"usercpMail.notice.adoptedSubject": "Your e-mail address was changed",
|
|
2910
|
+
"usercpMail.notice.nothingToDo": "If you made this change yourself, there is nothing to do. This message asks nothing of you.",
|
|
2911
|
+
"usercpMail.notice.requested": "Somebody — we hope you — asked to move the account on {board} that uses this address to {email}. Nothing changes until that address confirms it.",
|
|
2912
|
+
"usercpMail.notice.requestedAction": "Reset your password",
|
|
2913
|
+
"usercpMail.notice.requestedSecure": "If this was not you, somebody may be signed in to your account. Resetting the password ends every session on it.",
|
|
2914
|
+
"usercpMail.notice.requestedSecureNoLink": "If this was not you, somebody may be signed in to your account. Open the board and use the “forgot your password” form; resetting the password ends every session on it.",
|
|
2915
|
+
"usercpMail.notice.requestedSubject": "Your e-mail address is being changed",
|
|
2835
2916
|
"usercpMail.subject": "Confirm your new e-mail address",
|
|
2836
2917
|
"usercpMail.ttl": "The link is valid for one hour and can be used once.",
|
|
2837
2918
|
"warning.issued": "Warning issued. They are now on {points, plural, one {# point} other {# points}}.",
|