@meith/i18n 0.26.1 → 0.28.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.26.1",
3
+ "version": "0.28.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": {
@@ -378,6 +378,7 @@
378
378
  "adminForum.tree.type.link": "link",
379
379
  "adminForum.tree.where.inside": "inside {parent}",
380
380
  "adminForum.tree.where.topLevel": "at the top level",
381
+ "adminForum.unsavedChanges": "Unsaved changes",
381
382
  "adminForum.usernamePlaceholder": "Username",
382
383
  "adminForums.all": "All forums",
383
384
  "adminForums.copyPreview": "This would change {changes, plural, one {# setting} other {# settings}} across {forums, plural, one {# forum} other {# forums}}{unchanged, plural, =0 {} other {, leaving # unchanged}}.",
@@ -638,6 +639,7 @@
638
639
  "adminPanel.setting.saved": "Saved, and the caches those settings declare have been cleared.",
639
640
  "adminPanel.setting.unchanged": "Nothing was different, so nothing was written.",
640
641
  "adminPanel.setting.unchangedPlaceholder": "Unchanged",
642
+ "adminPanel.system.applyMigrations": "Apply pending migrations",
641
643
  "adminPanel.system.clearForumTree": "Clear the forum tree",
642
644
  "adminPanel.system.clearNote": "The forum tree is the only thing the board caches globally under a name this screen can reach. Everything else is either resolved per request or cleared by the write that changed it.",
643
645
  "adminPanel.system.cleared": "Cleared {tag}.",
@@ -655,6 +657,7 @@
655
657
  "adminPanel.system.retry": "Retry",
656
658
  "adminPanel.system.sessionsRemoved": "{removed} session rows removed.",
657
659
  "adminPanel.system.tokensRemoved": "{removed} token rows removed.",
660
+ "adminPanel.system.upgradeApplied": "Applied {core, plural, =0 {no core migrations} one {# core migration} other {# core migrations}}. Plugins updated: {plugins}.",
658
661
  "adminPanel.title": "Control panel",
659
662
  "adminPanel.token.copyNow": "Copy this now — it is not shown again and cannot be recovered.",
660
663
  "adminPanel.token.expiresHint": "A whole number of days. Leave it empty for a token that never expires — anything else is refused rather than read as never.",
@@ -680,13 +683,13 @@
680
683
  "adminPluginDetail.hooks": "Hooks",
681
684
  "adminPluginDetail.lastFailure": "Last failure in {hook}: {message}",
682
685
  "adminPluginDetail.migrations": "Migrations",
683
- "adminPluginDetail.migrationsHint": "Applied by community upgrade, in one transaction each, recorded as they run. There is no button here on purpose: schema changes belong to the deploy that shipped the code expecting them, and a panel that could run them out of band is a panel that can put a board’s schema ahead of its code.",
686
+ "adminPluginDetail.migrationsHint": "Applied by meith upgrade, in one transaction each, recorded as they run. There is no button here on purpose: schema changes belong to the deploy that shipped the code expecting them, and a panel that could run them out of band is a panel that can put a board’s schema ahead of its code.",
684
687
  "adminPluginDetail.notApplied": "not applied",
685
688
  "adminPluginDetail.pluginPageError": "This page failed to render. The plugin’s error is in the server log, and the rest of the panel is unaffected.",
686
689
  "adminPluginDetail.pluginPageMetaAfter": "plugin.",
687
690
  "adminPluginDetail.pluginPageMetaBefore": "Rendered by the",
688
691
  "adminPluginDetail.regions": "Regions",
689
- "adminPluginDetail.runUpgrade": "Run community upgrade before relying on this plugin — until then its code is running against a schema that does not have what it expects.",
692
+ "adminPluginDetail.runUpgrade": "Run meith upgrade before relying on this plugin — until then its code is running against a schema that does not have what it expects.",
690
693
  "adminPluginDetail.runningNo": "no",
691
694
  "adminPluginDetail.runningNoDisabled": "no — an administrator turned it off",
692
695
  "adminPluginDetail.runningRegisteredDisabled": "registered, but disabled in meith.config.ts",
@@ -703,14 +706,14 @@
703
706
  "adminPlugins.details": "Details",
704
707
  "adminPlugins.duplicateHint": "A duplicate key is refused when the configuration loads rather than at first use, so a board that boots has a registry that makes sense.",
705
708
  "adminPlugins.hooksHint": "Only hooks something is listening on. The full list of every extension point is in the generated reference, and reproducing all ninety-one here would bury these. Plugins are listed in the order they run — priority first, then key — so where two of them change the same value, the last one named has the final say.",
706
- "adminPlugins.installingHint": "A plugin is code, so it has to be in the build before it can run: pnpm add the package, add it to the plugins array in meith.config.ts, and redeploy. The same three steps a theme takes, and for the same reason a serverless bundle contains only what the bundler saw.",
709
+ "adminPlugins.installingHint": "A plugin is code, so it has to be in the build before it can run: it is a change to your board's repository its package and board.plugins.json — committed and redeployed, not something installed into the running board. This page lists what the build already carries; the installing-plugins-and-themes guide has the steps.",
707
710
  "adminPlugins.ledeAfter": "so the bundler can see it and the compiler can check it. Nothing is discovered by scanning a directory at request time.",
708
711
  "adminPlugins.ledeBefore": "Everything installable is named in",
709
712
  "adminPlugins.migrationsUnknown": "This board could not be asked which plugin migrations have run, so the rows above do not say. On a board running on sample data there is no such table; on a real one, that is worth looking into.",
710
- "adminPlugins.pendingMigrations": "{count, plural, one {# migration not applied — run community upgrade.} other {# migrations not applied — run community upgrade.}}",
713
+ "adminPlugins.pendingMigrations": "{count, plural, one {# migration not applied — run meith upgrade.} other {# migrations not applied — run meith upgrade.}}",
711
714
  "adminPlugins.recordedFailures": "{count, plural, one {# recorded failure across every instance of this board.} other {# recorded failures across every instance of this board.}}",
712
715
  "adminPlugins.serverDisabled": "Switched off after repeated failures, and it stays off until an operator clears the record: {reason}",
713
- "adminPlugins.uninstallHint": "There is no uninstall button, and that is deliberate: removing a plugin is pnpm remove, a line out of that file, and a redeploy. Run community plugin:purge first if its data should go too that has to happen while the code is still installed, because it runs the plugin’s own onUninstall. A button that dropped a plugin’s rows and left its code running would leave the board in a state neither installing nor removing produces.",
716
+ "adminPlugins.uninstallHint": "There is no uninstall button, and that is deliberate: removing a plugin is a change to your board's repository — out of board.plugins.json and its package — then a redeploy. Run meith plugin:purge first if its data should go too: that runs the plugin’s own onUninstall while the code is still installed. A button that dropped a plugin’s rows and left its code running would leave the board in a state neither installing nor removing produces.",
714
717
  "adminSecurity.everything": "Everything",
715
718
  "adminSecurity.filter": "Filter",
716
719
  "adminSecurity.kind": "Kind",
@@ -734,7 +737,7 @@
734
737
  "adminSettings.matchCount": "{count, plural, one {# match} other {# matches}} for “{query}”, across every group.",
735
738
  "adminSettings.noAddress": "Every link the board sends is built from it, so password resets and confirmations arrive carrying no link at all — they are polite and useless. Feeds and canonical URLs fall back to a localhost address. Set “Board address” below.",
736
739
  "adminSettings.pushNoContact": "A push service is told who to contact about the traffic it carries, and this board has nobody to give it: the contact box below is empty, no mail-from address is set, and the board’s own address is not an https one. Fill in any of the three.",
737
- "adminSettings.pushNoKeys": "This board has no usable VAPID key pair, so no push service will accept anything from it. Generate one with `community push:keys`, or paste a pair into the two boxes below. Nothing is pushed until you do, and members see no subscribe button.",
740
+ "adminSettings.pushNoKeys": "This board has no usable VAPID key pair, so no push service will accept anything from it. Generate one with `meith push:keys`, or paste a pair into the two boxes below. Nothing is pushed until you do, and members see no subscribe button.",
738
741
  "adminSettings.pushNotLive": "Web push is on and nothing is being pushed",
739
742
  "adminSettings.searchPlaceholder": "Search every group by name or description",
740
743
  "adminSettings.settingCount": "{count, plural, one {# setting} other {# settings}} in {group}.",
@@ -762,6 +765,9 @@
762
765
  "adminSystem.maintenance": "Maintenance",
763
766
  "adminSystem.maintenanceHint": "Each of these is bounded to one batch. Nothing here destroys anything an operator would want back: expired sessions no longer authenticate anybody, expired tokens can no longer be used, and a cleared cache is a copy of data that still exists.",
764
767
  "adminSystem.members": "{count, plural, one {# member} other {# members}}",
768
+ "adminSystem.migrations": "Version & migrations",
769
+ "adminSystem.migrationsHint": "This applies the pending schema and plugin migrations, the same as running meith upgrade over SSH — so a deploy that needs them is finished from here. You will be asked for your password.",
770
+ "adminSystem.migrationsUpToDate": "The database matches this version. There is nothing to apply.",
765
771
  "adminSystem.neverRun": "never run",
766
772
  "adminSystem.noTasks": "No tasks are registered. A build registers a task only when it has a worker that can genuinely do the work, so an absent one means the feature behind it is not wired up on this deployment.",
767
773
  "adminSystem.posts": "{count, plural, one {# post} other {# posts}}",
@@ -769,6 +775,7 @@
769
775
  "adminSystem.recount": "Recount & rebuild",
770
776
  "adminSystem.recountHint": "Counters are denormalised, so they can drift. The recount walks the content and corrects them in bounded batches, keeping its phase and cursor in the database — so it resumes where it stopped rather than starting over, which is what makes it finish at all on a large board.",
771
777
  "adminSystem.recountProgress": "{id}: phase {phase}, cursor {cursor}, {passes, plural, one {# complete pass} other {# complete passes}}, {corrected} corrected",
778
+ "adminSystem.runningVersion": "This board is running",
772
779
  "adminSystem.sample": "This board is running on in-memory sample data, so it has no scheduler and nothing to maintain.",
773
780
  "adminSystem.schedulerStopped": "Nothing is broken and nothing is lost — the tasks are written to catch up, so they will work through the backlog once it runs again. Check that whatever invokes the scheduled endpoint is still configured and still authorised.",
774
781
  "adminSystem.schedulerStoppedAfter": ", digests and notification emails are not sent, counters drift, uploads that failed to process are not retried, and queued mail sits in the queue.",
@@ -1662,6 +1669,7 @@
1662
1669
  "error.app.board-accept-avatar-uploads": "This board cannot accept avatar uploads.",
1663
1670
  "error.app.board-accept-file-attachments": "This board cannot accept file attachments.",
1664
1671
  "error.app.board-accept-posts": "This board cannot accept posts.",
1672
+ "error.app.board-cannot-be-upgraded": "This board cannot be upgraded.",
1665
1673
  "error.app.board-database-so-api": "This board has no database, so it has no API.",
1666
1674
  "error.app.board-keeps-avatars": "This board keeps no avatars.",
1667
1675
  "error.app.board-keeps-signatures": "This board keeps no signatures.",
@@ -2057,7 +2065,7 @@
2057
2065
  "install.password.label": "Your password",
2058
2066
  "install.raced.inFlight": "Another install is already running against this database. Wait for it to finish, then reload this page.",
2059
2067
  "install.raced.sealed": "Another install sealed the board while this one was running. Nothing here was kept.",
2060
- "install.schema.missing": "The database does not have every table this board needs. Migrations run before the board serves anything — as `community migrate` in the deploy build command, or from the container entrypoint. Run that against this database and reload this page.",
2068
+ "install.schema.missing": "The database does not have every table this board needs. Migrations run before the board serves anything — as `meith migrate` in the deploy build command, or from the container entrypoint. Run that against this database and reload this page.",
2061
2069
  "install.step.admin.detail": "Argon2id, the same registration path a member uses, then promoted.",
2062
2070
  "install.step.admin.title": "Create the administrator",
2063
2071
  "install.step.forum.detail": "A category and one forum inside it, so the index is not empty.",
@@ -2845,7 +2853,6 @@
2845
2853
  "setting.group.federation": "Sign-in providers",
2846
2854
  "setting.group.legal": "Legal",
2847
2855
  "setting.group.mail": "Mail",
2848
- "setting.group.marketplace": "Marketplace",
2849
2856
  "setting.group.posting": "Posting",
2850
2857
  "setting.group.push": "Push",
2851
2858
  "setting.group.registration": "Registration",
@@ -2894,9 +2901,9 @@
2894
2901
  "setting.push.enabled.label": "Offer web push",
2895
2902
  "setting.push.vapid_private_key.description": "The other half of the pair, and the half that signs. Stored on the board. Leave the box empty to keep the key already saved.",
2896
2903
  "setting.push.vapid_private_key.label": "VAPID private key",
2897
- "setting.push.vapid_public_key.description": "The board identifies itself to a push service with this key, and every browser stores it when it subscribes. Generate the pair with `community push:keys`. Replacing it invalidates every subscription already stored, because the browsers hold the old one.",
2904
+ "setting.push.vapid_public_key.description": "The board identifies itself to a push service with this key, and every browser stores it when it subscribes. Generate the pair with `meith push:keys`. Replacing it invalidates every subscription already stored, because the browsers hold the old one.",
2898
2905
  "setting.push.vapid_public_key.label": "VAPID public key",
2899
- "setting.registration.enabled.description": "Off closes the board to new members: the Register link goes, /register says so instead of offering a form, and the action behind it refuses a submission sent straight to it. Existing members sign in as before, the installer still creates the first administrator, and \"community user:create\" still works — closing the door is not the same as locking yourself out.",
2906
+ "setting.registration.enabled.description": "Off closes the board to new members: the Register link goes, /register says so instead of offering a form, and the action behind it refuses a submission sent straight to it. Existing members sign in as before, the installer still creates the first administrator, and \"meith user:create\" still works — closing the door is not the same as locking yourself out.",
2900
2907
  "setting.registration.enabled.label": "Allow new registrations",
2901
2908
  "setting.registration.method.description": "\"none\" logs the user straight in. \"email\" requires a link. \"admin\" queues the account for manual approval. \"both\" requires e-mail then admin.",
2902
2909
  "setting.registration.method.label": "Activation method",