Files
pl_mail/translations/messages.en_PI.yaml
T
Paul LütznerandClaude Opus 5 ea43b1fe30 fix(compose): the schedule that went nowhere, and eight other things a person hit
Scheduled send did nothing when a time was picked by hand, and it did it
silently. ScheduledSendResolver refuses anything closer than MIN_SECONDS (60s);
the picker only checked whether a time had PASSED, so the entire band between
now and a minute from now sailed through the browser. The server then reported
the refusal with $form->addError() — a ROOT error — and _window.html.twig
rendered only form.toAddresses's errors, so the message went nowhere at all.
Turbo replaced the compose frame with a re-render identical to what was already
on screen: menu closed, composer unchanged, no toast, one request in the
profiler, console clean.

Which is exactly the click a person makes to test the feature — they type the
next whole minute. Every green test used a PRESET; the custom picker appeared
in one test that drives it to a refusal, so "pick a time and have it actually
schedule" was asserted nowhere.

  * the picker mirrors MIN_SECONDS and refuses below it, locally and in words
    that are true of the time chosen ("past" and "too soon" are now two
    different things to be told, in three catalogues)
  * root-level form errors have somewhere to render, so no refusal from
    schedule() can be swallowed again
  * the spec drives the custom picker to a real schedule, all the way to a
    persisted badge in Drafts — and pins the floor case as a local refusal
    with no round trip at all

And the rest of the pass:

  * the signature no longer eats the first paragraph. Clicking the empty space
    BELOW it put the caret at the end of the sign-off, so typing welded onto
    it; those clicks now land in the writing space above. The emptiness check
    counted the signature as not-the-user's-writing unconditionally, so text
    that had landed inside it was subtracted before the count and Send claimed
    a visibly full message had none — the block is skipped only while it is
    untouched.
  * the subject/body confirmations are the in-app panel the plain-text switch
    already uses, not window.confirm(), which froze a test session three times.
    Both reasons are one question asked once, and the retry goes back through
    the same submitter so a scheduled send stays scheduled.
  * the To field: the refusal clears when a recipient is added, names the
    invalid address rather than blaming the count, and keeps what was typed
    (Tom Select wiped the box on blur before submit ever saw it). The
    suggestion panel no longer reopens over the Subject row on every focus.
  * aria-invalid and aria-describedby tie the refusal to the input; the From
    select and the Tom Select original are named; the picker's refusal is a
    role="alert".
  * a subject typed on its own is worth autosaving — the threshold counted the
    body alone, so "TEST-RELOAD halbfertig" was lost on reload with no warning
    and nothing in Drafts. Below the threshold, beforeunload interrupts.
  * the emoji panel is capped against the compose WINDOW rather than the
    viewport (its top edge sat 33px outside it), the grid's scrollbar is thin
    rather than a 15px native bar with arrows, and the skin-tone button is off
    the panel outline.
  * vergrößern, Schriftgröße, groß — the compose labels were the only corner
    of the UI spelling it the Swiss way, and a spec was asserting it.

phpunit OK (3427 tests, 8849 assertions); composer stan [OK] No errors;
120 compose e2e passed, plus 48 adjacent.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-13 12:56:29 +02:00

2225 lines
95 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
account:
add_title: Sign on a new crew member
added: Crew member signed on, arr!
disabled: Ship's papers revoked
enabled: Ship's papers restored
form:
email: Parrot address
encryption: Cipher
imap:
heading: Incomin' — IMAP
host: Port o' call
password: Secret word
port: Berth number
preset:
label: Harbourmaster
placeholder: Pick yer harbour…
smtp:
heading: Outgoin' — SMTP
host: Port o' call
username: Name ye go by
oauth:
google: Sail on with Google
info: Sign on with yer harbourmaster — no secret word be kept aboard.
microsoft: Sail on with Microsoft
removed: Crew member put ashore
tabs:
imap: IMAP / SMTP
oauth: OAuth
test:
button: Test the riggin'
imap: IMAP
smtp: SMTP
updated: Ship's papers amended
admin:
accounts:
account: 'Crew member'
heading: 'Th'' crew'
last_activity: 'Last sighted'
messages: 'Bottles'
threads: 'Yarns'
ago: 'ago'
db:
active:
empty: 'No queries afoot right now.'
heading: 'Live doings'
cache_hit: 'Cache booty'
col:
calls: 'Hails'
hit: 'Cache'
max: 'Worst ms'
mean: 'Middlin'' ms'
query: 'Query'
rows: 'Rows'
total: 'All told'
connections: 'Grapplin'' lines'
deadlocks: 'Standoffs'
extension_missing: 'pg_stat_statements ain''t hoisted — sluggish-query tallies be unavailable. Hoist it once:'
extension_enable: "Hoist it now"
extension_enable_hint: "Statistics start when th' extension be created, so earlier queries won't appear."
extension_enable_failed: "Could not hoist th' extension - th' database role not be allowed t' create it."
heavy_total:
heading: 'Heaviest queries (by total time)'
hint: 'All the hours across every hail — where th'' database squanders its watch.'
reset: 'Scuttle the tally'
reset_confirm: 'Scuttle every query tally ye have gathered?'
rollback_ratio: 'Comin''-about ratio'
slow_mean:
empty: 'No queries above the waterline yet.'
heading: 'Slowest queries (by middlin'' time)'
hint: 'Queries averagin'' ≥ 5ms, this here database.'
failed:
delete: 'Feed to the fishes'
delete_confirm: 'Send this lost bottle to Davy Jones for good?'
empty: 'The wreck hold be empty. 🎉'
heading: 'Bottles lost at sea'
purge: 'Sink the lot'
purge_confirm: 'Send every lost bottle to Davy Jones? There be no haulin'' them back.'
retry: 'Try again'
retry_all: 'Try the lot again'
retry_all_confirm: 'Cast every lost bottle back out to sea?'
integrations:
base_url_per_user: 'Every hand names their own port.'
base_url_pinned: 'set fast for all hands'
clear_secret: 'Throw the stored secret overboard'
configure: 'Set the rigging'
connected_users: '%count% hands moored'
connected_users_one: '1 hand moored'
copy_redirect_uri: 'Copy th'' return bearing'
inherit_toggle: 'Use these keys for th'' cargo holds an'' all'
inherit_toggle_help: 'One Google charter covers Drive an'' Photos; one Microsoft charter covers OneDrive. Leave it set an'' there be nothin'' more to rig for them.'
field:
base_url: 'Port address'
base_url_help_saas: 'Leave it empty. This port never moves.'
base_url_help_selfhosted: 'Optional. Set it to moor every hand at one port; leave it empty and each names their own.'
client_id: 'Client ID'
client_secret: 'Client secret'
enabled: 'Offer this port to th'' crew'
enabled_help: 'Struck down, none may moor there and it stays hidden from th'' writin'' desk and th'' stowin'' menus.'
push_token: 'Push watchword'
push_token_help: 'Shared watchword Google sends with every Pub/Sub call; th'' webhook turns away any without it. Leave empty to fall back to GMAIL_PUBSUB_VERIFICATION_TOKEN.'
pubsub_topic: 'Pub/Sub topic'
pubsub_topic_help: 'Full topic name Gmail cries changes into. Without it, crew stay on the lookout instead o'' bein'' hailed. Leave empty to fall back to GMAIL_PUBSUB_TOPIC.'
redirect_uri: 'Return bearing'
tenant: 'Tenant'
tenant_help: 'common for private and company hands, organizations for company only, or a tenant ID to keep it to yer own. Must match th'' app registration''s supported account types.'
redirect_uri_help: 'Paste this into th'' harbourmaster''s ledger exactly as writ. Change it later and every moored line snaps.'
inherit: 'Reuse %name% papers'
inherit_help: 'Copies th'' client ID and secret below decks — th'' secret be never shown. It grants no extra passage; add that at th'' harbourmaster as th'' riggin'' steps say.'
inherited: 'Papers copied'
mail:
calendar_heading: 'The almanacs sail under this same charter'
calendar_google: >-
Naught to rig here. Hoist the Google Calendar API for this
project an' add the .../auth/calendar scope to the consent
screen — the crew's almanacs then come aboard with the same
boardin' they already use for mail. Without it, mail sails on
an' the almanacs simply never appear.
calendar_microsoft: >-
Naught to rig here. Add the Calendars.ReadWrite delegated
permission to this app registration — the crew's almanacs then
come aboard with the same boardin' they already use for mail.
Without it, mail sails on an' the almanacs simply never appear.
env_note: 'Leave these empty and GOOGLE_OAUTH_* / MICROSOFT_OAUTH_* from th'' environment take over, so a ship already rigged that way sails on.'
from_env: 'From th'' environment'
google: 'Gmail boardin'''
heading: 'Mail boardin'''
intro: 'Th'' OAuth app hands board through when addin'' a mail account. Google and Microsoft cargo ports may reuse th'' same papers.'
microsoft: 'Microsoft mail boardin'''
saved: 'Mail boardin'' stowed'
intro: 'Ports th'' crew may haul cargo from and stow cargo to. Every port be listed here, even them plMail cannot yet hail.'
not_set: 'Not set'
saved: 'Port settings stowed'
secret_none: 'No secret stored'
secret_stored: 'Stored'
secret_unchanged: 'Leave blank to keep th'' stored secret'
status:
disabled: 'Struck down'
enabled: 'Open'
incomplete: 'Wants papers'
unimplemented: 'Not yet charted'
tutorial:
caldav:
intro: 'CalDAV signs on with a ship''s key per hand, against each hand''s own port — there be naught to register here.'
not_for_cloud_mail: 'Gmail an'' Outlook almanacs come not this way. They ride the parrot sign-in above, an'' want only the almanac right ticked on them papers.'
security: 'Hands should cut a ship''s key rather than hand over their boardin'' word: a ship''s key can be struck on its own an'' works with the two-lock. iCloud an'' Fastmail take naught else.'
step_app_password: 'Each hand cuts a ship''s key aboard their own port — Nextcloud under Settin''s → Security, iCloud at appleid.apple.com, Fastmail under Settings → Password & Security — an'' pastes it into their own almanac settin''s.'
step_base_url: 'Ye may pin the port''s address, say https://cloud.example.com, if every hand here uses the same one.'
step_enable: 'Hoist "Offer this service to users" above.'
step_url: 'The address wanted be the CalDAV one, not the front door: Nextcloud shows it under Calendar → Settings → "Copy primary CalDAV address", an'' it mostly ends in /remote.php/dav. A bare domain serves too — plMail hails it an'' asks where the almanacs be moored.'
dropbox:
intro: 'Dropbox wants an app registered in th'' Dropbox developer console.'
refresh_note: 'Choose th'' scoped access app type and ask for offline access, or th'' line parts after a few hours.'
step_app: 'Create an app at dropbox.com/developers/apps with scoped access to th'' full Dropbox.'
step_paste: 'Copy th'' app key and app secret into th'' fields above.'
step_permissions: 'Under Permissions, hoist files.metadata.read, files.content.read and files.content.write.'
step_redirect: 'Under Settings, add th'' return bearing above to th'' OAuth 2 redirect URIs.'
google:
separate_from_gmail: 'These papers be separate from th'' Gmail ones in yer environment file. Same Cloud project be fine, but th'' consent screen must list th'' extra scopes.'
step_consent: 'Rig th'' OAuth consent screen and add th'' scopes listed below.'
step_credentials: 'Create an OAuth 2.0 Client ID of type Web application.'
step_paste: 'Copy th'' client ID and client secret into th'' fields above.'
step_project: 'Open console.cloud.google.com and pick or create a project.'
step_redirect: 'Add th'' return bearing above to th'' authorised redirect URIs.'
google_drive:
intro: 'Google Drive sails under OAuth, so plMail must be registered with Google afore any hand may moor.'
scopes: 'Scope needed: th'' full drive scope. drive.file be narrower but sees only what plMail itself made, so th'' hold would look empty — and sharin'' lines need write passage to th'' file. It be a restricted scope: Google wants th'' app inspected afore strangers may consent.'
step_api: 'Hoist th'' Google Drive API for th'' project.'
google_photos:
intro: 'Google Photos sails under OAuth with its own API, separate from Drive.'
scope_warning: 'Google battened down th'' Photos readin'' scopes in March 2025. A freshly registered app gets only appcreateddata and sees naught but what plMail hauled up itself — browsin'' an existin'' hold wants photoslibrary.readonly, granted case by case. Stowin'' cargo to Photos works regardless.'
step_api: 'Hoist th'' Photos Library API for th'' project.'
immich:
intro: 'Immich checks papers with a key per hand, so there be nothin'' to register here.'
no_share_links: 'Immich cannot cut a public line for a single picture — only whole albums. Pictures over th'' cargo limit therefore cannot be hauled aboard at all.'
step_base_url: 'Optionally set th'' port address fast, say https://photos.example.com.'
step_enable: 'Hoist "Offer this port to th'' crew" above.'
step_key: 'Every hand mints a key in Immich under Account Settings → API Keys and stows it in their own port settings.'
nextcloud:
intro: 'Nextcloud checks papers with an app password per hand, so there be nothin'' to register here.'
security: 'Hands should mint an app password, not hand over their login password: app passwords be revoked one at a time and sail fine with two-factor.'
step_base_url: 'Optionally set th'' port address fast, say https://cloud.example.com.'
step_enable: 'Hoist "Offer this port to th'' crew" above.'
step_user: 'Every hand mints an app password in Nextcloud under Settings → Security → Devices & sessions and stows it in their own port settings.'
one_drive:
intro: 'OneDrive rides Microsoft Graph, th'' same API as Microsoft mail, but wants Files papers th'' mail registration never granted.'
step_paste: 'Copy th'' application (client) ID and th'' secret value into th'' fields above.'
step_permissions: 'Under API permissions, add th'' delegated Microsoft Graph permissions Files.ReadWrite and offline_access.'
step_redirect: 'Under Authentication, add th'' return bearing above as a Web platform redirect.'
step_register: 'Open th'' Azure portal and register an application under Microsoft Entra ID → App registrations.'
step_secret: 'Under Certificates & secrets, mint a client secret and copy its value at once — it be shown but once.'
tenant_note: 'Use th'' common tenant for personal Microsoft accounts, or yer tenant ID to keep it to yer own crew.'
tutorial_heading: 'Riggin'''
unimplemented_notice: 'plMail cannot hail this port yet. Stow th'' papers now — they be used th'' moment passage opens.'
loading: 'Haulin'' aboard…'
maintenance:
heading: Shipkeepin'
heartbeats_help: 'Sweeps out the marks of crew that went overboard without callin'' out.'
heartbeats_prune: 'Sweep old marks'
heartbeats_title: 'Stale crew marks'
restart: 'Rouse the crew'
restart_confirm: 'Rouse the crew, the timekeeper and the IMAP bosun? They finish the task in hand first.'
restart_help: 'Sends the crew, the timekeeper and the IMAP bosun below so they be signed on afresh. Long-servin'' hands memorise the ship''s charts for their whole watch, so they need this after ye redraw them.'
restart_pending: 'Rousin'' called %seconds%s past — the crew finish the task in hand, then muster back here within a minute or two.'
restart_title: 'Rouse the long-servin'' hands'
run_help: 'Put to the crew, not done here on the spot. Same rounds the timekeeper makes on its own.'
run_title: 'Make the rounds now'
task:
mail_sync: 'Fetch the post'
monitoring_prune: 'Sweep the watch log'
prune_blobs: 'Sweep the hold'
push_renew: 'Renew the parrot pacts'
logs:
all_channels: 'All channels'
clear: 'Scuttle'
clear_confirm: 'Send the %count% entries matchin'' this filter to Davy Jones?'
copied: 'Stowed'
copy: 'Copy th'' entry'
copy_failed: 'Th'' browser be blockin'' it'
empty: 'Naught scribbled at this depth.'
entries: 'entries'
heading: 'Ship''s log'
newer: 'Fresher'
older: 'Saltier'
page: 'Page'
refresh: 'Refresh'
nav:
database: Database
integrations: 'Friendly ports'
logs: Ship's log
system: Ship
users: Th' crew roster
processes:
empty: 'No heartbeats yet — hands report here after their first beat.'
heading: 'Hands on deck'
key: 'Post'
last_beat: 'Last heartbeat'
pid: 'PID'
type: 'Rank'
push:
calendar_domain_verification: >-
Google opens no watch channel 'til the callback domain be verified in
the Cloud project that owns the OAuth client: verify her in Search
Console, then enter her under Domain verification in the Cloud
console. Microsoft asks no such thing.
calendar_routes: >-
Almanac push comes ashore separately, at %google% an' %graph%, an'
wants no Pub/Sub topic.
calendar_without_public_address: >-
With no public HTTPS address, moored almanacs simply bide by the
quarter-hour sweep.
queues:
due_in: 'due in %duration%'
empty: 'No bottles waitin''.'
filter_placeholder: 'Sift the whole hold — handler, cargo, queue name'
heading: 'Messenger queues'
in_flight: 'Bein'' worked now'
loading: 'Haulin'' aboard…'
showing: '%shown% o'' %total%'
next_up: 'Waitin'''
none_running: 'No deckhand be holdin'' a bottle right now.'
oldest: 'Longest waitin'''
pending: 'Waitin'''
queue: 'Queue'
queued_for: 'in the hold %duration%'
retries: 'try %count%'
running: 'Bein'' worked'
running_for: 'for %duration%'
waiting_since: 'Waitin'' since'
refresh_hint: 'Live panels be redrawn every 10s'
summary:
accounts: '%count% crews'
active: '%count% astir'
armed: '%active%/%total% armed'
down: '%count% keeled over'
failed: '%count% sunk'
failing: '%count% listin'''
healthy: '%count% hale'
idle: 'becalmed'
none: 'none'
ok: '%count% hale'
queries: '%count% askings'
queue: '%running% bein'' worked · %waiting% waitin'''
tables: '%count% tables'
tables:
heading: 'Table sizes'
title: 'Cap''n''s quarters'
tokens:
empty: 'No token refreshes writ down yet.'
heading: 'OAuth token health'
webhooks:
armed: 'Primed'
delivery:
endpoint: 'Cannon berth'
endpoint_hint: >-
The Cloud Pub/Sub push subscription must fire at exactly this
URL, token an'' all. A mismatch be answered with 403 and shows
below.
heading: 'The powder trail'
info_logs_off: >-
Shots that land be logged at info level and not kept. Set
APP_DB_LOG_LEVEL=info to spy them here.
no_public_url: >-
APP_PUBLIC_URL be no https:// berth, so Pub/Sub cannot reach
this ship.
no_token: >-
GMAIL_PUBSUB_VERIFICATION_TOKEN be not set. The berth bars all
comers, so every shot be turned away with 403.
topic: 'Pub/Sub topic'
empty: 'No Gmail crew keepin'' watch.'
health: 'Condition'
health_state:
active: 'firin'' true'
degraded: 'primed, but silent'
inactive: 'stowed'
heading: 'Gmail webhooks'
history_id: 'History ID'
last_push: 'Last cannon shot'
never: 'never'
none: 'not on the roster'
resource: 'Resource'
state:
account_active: 'crew aboard'
account_inactive: 'crew ashore'
push_off: 'cannon stowed'
push_on: 'cannon primed'
watch_expiry: 'Watch ends'
users:
add: Sign on a hand
console_note: 'Secret words and second-factor rescues are done from th'' ship''s console, not here. A quartermaster who could change either would be a second way into every hold aboard.'
delete: Put ashore
delete_confirm: 'Put %name% ashore? Their post stays in th'' hold, but they''ll board no more.'
edit: Edit hand
field:
email: Bottle address
is_admin: Quartermaster
is_admin_help: 'Reaches this cabin, signs on hands and sets up friendly ports. Reads nobody else''s post.'
name_first: Given name
name_last: Family name
password: First secret word
password_help: 'Set once, when th'' hand signs on. Changed later by th'' hand, or reset from th'' console.'
heading: Th' crew roster
last_login: 'Last sighted %when%'
never_signed_in: Never came aboard
no_password_edit: 'Secret words cannot be changed here. Setting another hand''s word would make a quartermaster''s session a way into their hold — same reason pulling a second factor is a console affair.'
none: No hands aboard yet.
password_too_short: 'Twelve characters at least — ye''re choosing this for somebody else.'
role:
admin: Quartermaster
search: Search th' roster…
two_factor_on: Second factor is set
two_factor_short: 2FA
version:
hint: The build this ship be sailin' — the release, an' the commit she were built from.
alias:
added: 'Address added, arr!'
deleted: 'Address struck from the roster.'
duplicate: 'That address already sails with this crew member.'
invalid: 'That don''t look like a proper parrot address.'
primary_set: 'Flagship address changed.'
refreshed: 'Fetched anew from the harbourmaster.'
status_blocked: 'The flagship address can''t be struck — name another flagship first.'
status_set: 'Address amended.'
app:
name: Mail
calendar:
default_name: Cap'n's own
alert:
mail:
subject: 'A nudge: %title%'
untitled: A reckonin' with no name
booking:
action:
delete: 'Scuttle the boarding notice "%name%"'
disable: 'Strike the boarding notice "%name%"'
edit: 'Change the boarding notice "%name%"'
enable: 'Hoist the boarding notice "%name%"'
regenerate: 'Give the boarding notice "%name%" a fresh berth'
badge: Booked through yer boarding notice
booked:
body: 'Yer %name% be written in the log.'
mail: A confirmation wi a chart be sailing to ye.
title: Booked, matey
confirm: Seal the booking
count: '{0}No boarding notices|{1}1 boarding notice|]1,Inf[ %count% boarding notices'
day_none: Naught free
delete_confirm: 'Scuttle "%name%"? Every appointment already booked goes down wi it.'
disabled: Struck
duration: '{1} 1 minute|]1,Inf[ %count% minutes'
empty_list: No boarding notices yet, matey.
error:
no_calendar: Pick a log that takes changes, so bookings have somewhere to land.
taken: That hour be claimed already. Pick another.
too_many: >-
That be a great many bookings from one berth. Bide a while afore
ye try again.
form:
add: New boarding notice
buffer_help: Quiet water left either side o what be already in the log.
buffer_minutes: Quiet water (minutes)
busy: Check these logs for collisions
busy_help: >-
An hour be offered only when naught in these logs crosses it. The
log bookings land in be always checked, ticked or no.
calendar: Bookings land in
calendar_help: >-
Where the appointment be written. If that log sails elsewhere, the
booking sails wi it.
day_end: Until
day_start: From
description: What this be about
edit: Change boarding notice
horizon_days: Bookable up to (days ahead)
name: What the appointment be called
name_help: >-
Shown to whoever opens the berth, and used as the title in yer
log.
notice_minutes: Shortest warning (minutes)
slot_minutes: Appointment length (minutes)
time_zone: Yer hours be in
time_zone_help: >-
The hours above be bell-time in this zone, so 09:00 stays nine in
the morning when the clocks turn.
weekdays: Days ye be boardable
lands_on: 'lands in %calendar%'
no_slots: No free hours at present. Come back later, matey.
no_slots_this_week: No free hours this week. Try the week fore or aft.
note: Aught else? (optional)
pick_a_time: Pick an hour
toast:
created: Boarding notice raised. Copy the berth now — it be not shown again.
deleted: Boarding notice scuttled.
disabled: Boarding notice struck.
enabled: Boarding notice hoisted.
regenerated: Fresh berth. The old one be sunk.
updated: Boarding notice changed.
weekday:
1: Mon
2: Tue
3: Wed
4: Thu
5: Fri
6: Sat
7: Sun
your_email: Yer letter address
your_email_help: The confirmation and the chart go here.
your_name: Yer name
zone: 'Hours shown in %zone%'
chip:
on_calendars: 'Upon %calendars%'
delete_confirm: 'Scuttle "%name%" an'' every reckonin'' upon it? There be no haulin'' them back.'
empty: Naught on the horizon
error:
instance_create: >-
One lone reckonin' cannot be shipped to an almanac on its own. Pick
"Every reckonin'" to lay this meetin' in another almanac.
invalid_times: 'Them bells be wrong — the end must come after the start.'
no_copies: 'Naught was picked, so naught was changed. Mark at least one almanac.'
read_only: >-
This reckonin' sits only in almanacs that take no changes, so it be
left where it lay.
event:
alert:
action:
display: A shout on deck
email: A parrot
amount:
days: '{1} 1 day|]1,Inf[ %count% days'
hours: '{1} 1 bell|]1,Inf[ %count% bells'
minutes: '{1} 1 minute|]1,Inf[ %count% minutes'
at_absolute: 'Upon %when%'
at_time: The very moment it starts
custom: Somethin'' else, in minutes
custom_action: How the extra nudge shall reach ye
day_1: 1 day afore
hour_1: 1 bell afore
legend: Nudges
minutes_10: 10 minutes afore
minutes_30: 30 minutes afore
minutes_5: 5 minutes afore
relation:
after_end: '%amount% after the end'
after_start: '%amount% after the start'
before_end: '%amount% afore the end'
before_start: '%amount% afore the start'
series_note: >-
Nudges belong to the whole reckonin'', so the choice below has
no say over them.
unreadable: A nudge set in some other port
all_day: All the day long
cancel: Belay that
copies:
help: >-
Marked almanacs get this reckonin' an' every change ye stow to
it. Unmarkin' one throws naught overboard: that almanac keeps the
copy it holds now an' takes no more news, so it shall sail as its
own entry once the two no longer match.
legend: Almanacs
read_only: This almanac takes no changes
delete: Scuttle it
description: The tale of it
dismiss: No reckonin' at all
dismiss_confirm: >-
Cast this one overboard an' keep it there? Later parrots about the
same booking shall not write it back into the almanac.
ends: Ends
error:
end_before_start: The end must come after the start.
summary: This reckonin' could not be stowed.
title_required: Give this reckonin' a name.
extracted_note: >-
This reckonin' was found in a parrot. Amend it and later messages
about the same booking shall not paint over yer hand.
location: Where
new: A new reckonin'
new_on: A new reckonin' on %date%
repeat: Comes round again
save: Stow it
scope:
instance: This here reckonin'
instance_note: >-
"This here reckonin'" changes only the one ye opened, so it
cannot lay the meetin' in an almanac it be not in yet.
legend: Apply it to
series: Every reckonin'
starts: Starts
title: What it be called
form:
add: A new almanac
color: Colours
edit: Amend the almanac
name: What it be called
time_zone: Which bell
time_zone_help: >-
The bell this almanac be read by — and the one a reckonin' with no
bell of its own be shown in.
grid:
all_day: All the day long
continues_after: Sails on into the next day
continues_before: Set off the day afore
keyboard_hint: >-
Hold Alt an' steer with the arrow keys to shift this reckonin'; add
Shift to change how long it runs. Enter stows it, Escape puts it
back.
pending: >-
Shifted to %start% – %end%. Press Enter to stow it, or Escape to put
it back.
read_only: This almanac takes no changes, so this reckonin' cannot be shifted.
reverted: Left where it lay.
ics:
error:
no_calendar: Pick an almanac to stow the dates in.
no_file: >-
Pick an .ics scroll. If ye did pick one, it may be fatter than
plMail will swallow.
no_url: Write the bearin' where the almanac be posted.
export:
calendar: Haul "%name%" ashore as an almanac scroll
calendar_title: Haul down as .ics
event: Haul down .ics
import:
calendar: Stow 'em in
dedup_note: >-
A date already in this almanac be mended rather than written
twice, and one already in another o' yer almanacs — from a
summons, or from an almanac ye mirror — be left where it lies.
file: Almanac scroll
file_help: An .ics scroll, up to %size% MB.
intro: >-
Reads an .ics scroll — a copy from another almanac, or a summons
somebody sent ye — into one o' yer almanacs.
no_calendars: >-
None o' yer almanacs takes new dates. A mirrored almanac be a
look-but-don't-touch copy; make one o' yer own first.
submit: Bring aboard
title: Bring an almanac scroll aboard
subscribe:
address: Almanac bearin'
address_help: >-
The bearin' an almanac be posted at, endin' in .ics. A webcal://
link sails too — 'tis the same bearin' under another flag.
connect: Follow a bearin'
intro: >-
Follow an almanac somebody posts: feast days, a fixture list, or
the secret bearin' yer own Google or Outlook almanac offers.
plMail reads it again in the bilges and shows it beside yer own.
name: Name
name_help: What to call it here. Left empty, the almanac names itself.
read_only_note: >-
A followed almanac be look-but-don't-touch — 'tis a copy o' a
posted scroll, so changes made here could never reach it. Anyone
holdin' this bearin' can read the almanac, so treat a secret one
like a secret word.
submit: Follow it
title: Follow an almanac bearin'
toast:
import_empty: >-
That scroll holds no dates plMail can read. Check 'tis an
almanac copy and not somethin' else.
import_nothing_new: >-
Naught to add — every date in that scroll be already in yer
almanacs.
imported: '%added% added, %updated% mended, %skipped% passed over.'
subscribed: >-
Followed — the almanac fills in within the minute.
invite:
action:
accepted: Aye
declined: Nay
needs_action: No word yet
tentative: Belike
attendees: '%count% called aboard'
cancelled: This gatherin' has been called off.
organiser: Called by %name%
organiser_tag: called it
reply:
body: '%name% answered %status% to this summons.'
status:
accepted: Aye
declined: Nay
needs_action: No word yet
tentative: Belike
toast:
not_sent: >-
Yer answer be stowed here, but the parrot never reached the one
who called the gatherin'.
sent: Yer answer flew to the one who called it.
kind:
call: A hailin'
delivery: Cargo
dining: A table held
event: A doin'
flight: A crossin'
lodging: A berth
meeting: A gatherin'
order: Goods ordered
rental: A hired rig
ticket: A pass
train: An iron road
more_count: '%count% more'
nav:
next: Onward
previous: Back
pane:
mode:
calendar: Give the almanac the whole deck
mail: Show the letters
split: Set the almanac alongside the letters
resize: Shift the almanac's width
proposal:
action:
add: Write it in the almanac
dismiss: No reckonin' at all
explain: >-
Spied in this parrot — naught be written in the almanac yet.
toast:
added: Written into the almanac.
dismissed: >-
Cast overboard — that day shall not be put to ye again, however
often this parrot be read.
no_calendar: >-
There be no almanac to write this into, so naught was stowed.
untitled: (no subject)
repeat:
daily: Every day
monthly: Every month
none: Comes but once
weekly: Every week
yearly: Every year
share:
action:
delete: 'Scuttle the berth "%name%"'
edit: 'Change the berth "%name%"'
regenerate: 'Give the berth "%name%" a fresh address'
revoke: 'Revoke the berth "%name%"'
all_day: All the day long
busy: Occupied
busy_free_only: This berth shows when the log be occupied, an naught else.
count: '{0}No shared berths|{1}1 shared berth|]1,Inf[ %count% shared berths'
covers: '{0}no logs|{1}1 log|]1,Inf[ %count% logs'
day_free: Naught this day.
delete_confirm: 'Scuttle "%name%"? Whoever still holds the address loses it.'
detail:
description: The account of it
location: Where
participants: Who be coming
title: Titles
empty: Naught in this stretch.
empty_list: No shared berths yet, matey.
footer: Shared log
form:
add: New shared berth
calendars: Which logs
days: days ahead
edit: Change shared berth
ends_on: Last day
name: What ye call it
name_help: >-
Only ye see this. It be how ye find the berth again to change or
revoke it.
reveals: What this berth gives away
reveals_help: >-
Wi none o these ticked, the berth shows only when the log be
occupied. Each box adds one thing atop. A matter marked private
stays a plain occupied block whatever be ticked here.
rolling_days: Days ahead
starts_on: First day
token_note: >-
The address be shown once, when it be made. It be not stored, so
it cannot be shown again — lose it, an give the berth a fresh one.
window: How far it reaches
heading: Shared log
minted:
heading: The address for this berth
once: >-
Copy it now. It be stored nowhere, so this be the only time it can
be shown.
not_shared: Beyond the stretch
outside_window: Days beyond the shared stretch
page_title: Shared log
reveals: 'Gives away %details%'
reveals_busy_free: Occupied/free only
revoked: Revoked
subscribe: Add to yer own log
toast:
created: Berth made. Copy the address now — it be not shown again.
deleted: Berth scuttled.
regenerated: Fresh address. The old one be sunk.
revoked: Berth revoked.
updated: Berth changed.
window:
fixed: Between two dates
rolling: A rolling stretch from today
window_label: '%from% – %to%'
zone: 'Hours shown in %zone%'
soon:
empty: Naught on the horizon
empty_hint: >-
Doin's in yer almanac, and the passages, cargo, tables held and
tickets spied in yer letters, be posted here for the next
fortnight.
from: 'Out o'' %subject%'
open: 'What be comin'' soon'
title: 'Comin'' soon'
untitled: (no subject)
title: Almanac
toast:
created: Almanac drawn up
default_set: New reckonin's land here now
deleted: Almanac scuttled
disconnected: Line cut to the port
disconnected_kept: >-
Line cut — %count% reckonin(s) that came off a parrot an' not off an
almanac were rowed over to yer own almanac.
hidden: Almanac stowed below
shown: Almanac brought on deck
subscriptions_saved: Yer choosin' be stowed
subscriptions_saved_kept: >-
Yer choosin' be stowed — %count% reckonin(s) that came off a parrot
an' not off the almanac were rowed over to yer own almanac.
subscriptions_unchanged: Naught changed
sync_queued: Haulin' now — this almanac comes about in a moment.
updated: Almanac amended
today: This day
upcoming:
imminent: Within the hour
later: Later this day
soon: In a few hours
view:
agenda: The list
day: Day
month: Month
week: Week
clipboard:
copied: Pocketed
copy_failed: Pocketin' failed
compose:
no_account:
body: Hitch up a mailbag first, an' ye can write from it straight away.
cta: Hitch up a mailbag
heading: No mailbag aboard yet
font_family:
label: Hand o' writin'
monospace: Ledger hand
sans: Plain hand
serif: Scrivener's hand
font_size:
huge: Mountainous
label: Size o' the lettering
large: Grand
normal: Fair
small: Wee
align:
center: Amidships
left: Hard to port
right: Hard to starboard
confirm:
no_body: This scroll be blank.
no_subject: This scroll bears no heading.
send_anyway: Cast it off regardless?
plain_text: "Strikin' to plain text scrubs every flourish from this scroll. Carry on?"
emoji:
activities: Sport and mischief
animals_nature: Beasts and the wilds
categories: Lockers
custom: Yer own daubs
favorites: Oft-daubed
flags: Colours
food_drink: Vittles and grog
loading: "Haulin' 'em up…"
network_error: The wee faces would not come aboard.
objects: Odds and ends
people_body: Souls and limbs
region: The face locker
search: Search the locker
search_description: When the finds appear, steer up or down to pick one and strike enter to take it.
search_results: What the search turned up
skin_tone: "Choose a hide (presently {skinTone})"
skin_tone_description: When it be open, steer up or down to pick one and strike enter to take it.
skin_tones: Hides
smileys_emotion: Grins and grimaces
symbols: Marks and sigils
tone_dark: Deep tanned
tone_default: As it comes
tone_light: Pale as a sail
tone_medium: Fair weathered
tone_medium_dark: Well weathered
tone_medium_light: Lightly weathered
travel_places: Voyages and ports
unsupported: This spyglass shows no coloured faces.
list:
ordered: Numbered manifest
unordered: Bulleted manifest
priority:
high: "Hoist th' red flag"
label: Urgency
low: "No great hurry"
none: "No word on it"
normal: "Ordinary sailin'"
quote:
hide: stow the quoted words
show: unfurl the quoted words
schedule:
cancel: "Belay that castin' off"
confirm: "Set th' hour"
custom: "Name th' day and th' hour"
error:
past: That hour be already astern.
too_far: "No scroll be held longer than %days% days."
too_soon: Name an hour a minute or more ahead, matey.
unreadable: That be no day nor hour I can read.
heading: Cast off later
monday_morning: Monday at first light
scheduled_for: Due to cast off
timezone_hint: "All hours be reckoned in %zone%."
toast: "Castin' off %when%"
toast_cancel: Belay it
tomorrow_afternoon: "On th' morrow, afternoon"
tomorrow_morning: "On th' morrow at first light"
when: '%date%, %time%'
status:
pending_many: "%count% more marks afore stowin'"
pending_one: one more mark afore stowin'
save_failed: Could not stow the scroll
saved: Scroll stowed
saving: "Stowin'…"
uploading: "Haulin' aboard…"
upload:
failed: The haulin' aboard went awry
images_only: Only likenesses may be pasted into the scroll itself
over_limit: "Too heavy by far (max %limit% MB)"
post_too_large: That load be too heavy
too_large: Too heavy by far
add_bcc: Add shadow crew
add_cc: Add copied crew
attach: Lash on some cargo
attach_failed: Could not lash it on
attach_remove_failed: Could not heave the cargo overboard
attach_too_large: "%name% be heavier than %limit% MB"
bcc: Bcc
bold: Stout
cc: Cc
click_to_cancel: click to belay it
continue_editing: Keep scribblin'
discard: Burn this scroll
empty_draft: (blank scroll)
encrypt: Seal it in cipher
encrypt_unavailable: "No cipher aboard yet — this seal be locked."
expand: Throw open the hatches
formatting: Fancy lettering
forward: Pass it along
from: From
image: Paste in a likeness
image_insert_failed: Could not paste the likeness into the scroll
indent: Shove it inboard
insert_emoji: Daub on a face
insert_link: Splice in a link
invalid_address: "“%address%” be no proper address"
italic: Aslant
link:
add: Splice in a link
apply: Make it so
cancel: Belay that
change: Recut it
dialog: Link
edit: Recut this link
heading: Link
invalid: Name a port on the web.
open: Set sail for it
remove: Cut the line
text_label: Words to show
text_placeholder: The words that carry the line
unsafe: "Only web, post an' telephone berths may be linked."
url_label: Web berth
url_placeholder: "example.com"
minimize: Batten down
more_options: More riggin'
new_message: A Fresh Scroll
no_recipients: Nobody to send it to
outdent: Shove it outboard
plain_text: "Plain hand, no flourishes"
plain_warning:
cancel: "Keep the flourishes"
continue: "Aye, carry on"
title: "Strip the flourishes?"
pop_out: Open in its own cabin
send_warning:
cancel: "Belay, keep writin'"
continue: "Cast off regardless"
title: "Cast this scroll off?"
read_receipt: "Beg word it were read"
recipient_required: Name at least one soul afore ye cast off.
redo: Do it over again
reply: Answer
reply_all: Answer the whole crew
reply_placeholder: "Answer %name%"
save_and_close: Stow the scroll and close
send: Cast off
send_options: Castin'-off orders
sending: "Castin' off…"
signature: Make yer mark
signature_none: "This name bears no mark yet"
subject_label: Head
subject_placeholder: Headin'
text_color: Ink colour
to: To
underline: Underscored
undo: Belay that
body_placeholder: "Scrawl yer message…"
attachment_remove: Heave the cargo overboard
drafts:
empty: No scrolls in the works.
heading: Scrolls in the works
errors:
access_denied: Ye have no leave to enter here.
not_found: That be nowhere on the charts.
page:
back: Back to yer mail
not_found:
body: The page ye hailed be not here. Happen the link be mistyped, or what it pointed at were moved or scuttled.
heading: Naught at these coordinates
title: Page be lost at sea
server:
body: Somethin' went wrong on our deck, not yours. The fault be in the log; another go in a moment most often sails.
heading: Somethin' went wrong
title: The ship be takin' water
form:
file:
choose: Choose a likeness…
hint: PNG, JPEG, GIF or WebP
select:
no_results: Nary a match in these waters
cancel: Belay that
submit: Stow it
header:
labels:
add: Hoist a new flag
heading: Flags
none: No flags yet
search:
placeholder: Search the hold…
user_menu:
account_attention: "%count% things about yer crew be needin' an eye"
admin: Cap'n's quarters
label: Crew menu for %email%
profile: Yer colours
rerun_setup: Rig her up again
unseen_logs:
danger: '%count% fresh disasters in the log'
warn: '%count% fresh grumbles in the log'
settings: Riggin'
sign_out: Go ashore
signed_in_as: Aboard as
inbox:
empty: No bottles in this here tab.
integration:
save_failed: 'Could not stow: %reason%'
saved_to: 'Stowed to %name%'
destination:
album_name: 'Album name'
choose_album: 'Pick an album fer %file%'
choose_folder: 'Pick a hold fer %file%'
create: Make
folder_name: 'Hold name'
library: 'Whole library (no album)'
new_album: 'New album'
new_folder: 'New hold'
no_albums: 'No albums yet, matey.'
no_subfolders: 'No holds here.'
save_here: 'Stow here'
start_over: 'Start afresh'
picker:
attach: 'Haul aboard'
attach_from: 'Haul from %name%'
attach_from_service: 'Haul from a port'
copy: Copy
empty: 'This hold be empty.'
link: Link
more: 'Show more'
no_results: 'Naught found for “%query%”.'
search: Search
search_placeholder:
dropbox: 'Search Dropbox'
googleDrive: 'Search Drive'
googlePhotos: 'Search Photos'
immich: 'Describe a picture, say beach at sundown'
nextcloud: 'Search Nextcloud'
oneDrive: 'Search OneDrive'
timeline: 'Jump to a date'
too_big: 'Too heavy to haul'
label:
color:
amber: Amber
blue: Blue
gray: Gray
green: Green
orange: Orange
pink: Pink
red: Red
teal: Teal
violet: Violet
empty: No yarns flyin' this flag.
created: Flag hoisted.
delete_confirm: 'Strike the flag "%name%"? Yarns keep their other flags and be not thrown overboard.'
delete_confirm_children: 'Strike "%name%" and the %count% flag(s) beneath it? No yarns be thrown overboard.'
deleted: Flag struck.
error:
duplicate: A flag by that name already flies here.
form:
account: Crew member
color: Colour
delete: Strike this flag
edit_title: Mend this flag
name: Name
no_color: '— none —'
no_parent: '— top o'' the mast —'
parent: Fly beneath
menu:
create: Hoist a new one
empty: No flags yet.
updated: Flag mended.
visibility:
hidden: That flag be lowered.
shown: That flag flies again.
list:
sort:
newest: Freshest catch
oldest: Oldest catch
login:
form:
email: Parrot address
forgot_password: Forgot yer secret word?
forgot_password_hint: 'Only th'' quartermaster can mint ye a new one, from th'' ship''s console.'
password: Secret word
remember_me: Keep me aboard
submit: Come aboard
page_title: Come aboard
register:
coming_soon: Signin' on be comin' soon.
link: Sign the articles
prompt: Not yet on the roster?
tagline: Come aboard yer own ship
message:
actions:
archive: Stow in the hold
delete: Send this bottle to Davy Jones
expand: Unfurl or furl this bottle
mark_unread: Mark as unread
more: More
print: Print
show_original: Show the original scroll
star: Mark with an X
unstar: Rub out the X
attachments: Cargo
back: Back
body_frame: The bottle's contents
details:
categorised:
correspondent: 'ye have written to this one'
default: 'naught marked it as bilge'
forum: 'a crew-list header: '
gmail: 'Gmail swore it: '
promotion: 'a bulk-cargo header: '
social: 'the sender port '
update: 'a sign of an unmanned sender: '
category: rank
bcc: bcc
cc: cc
copy_address: 'Pocket the address %address%'
copy_headers: Pocket the headers
date: date
from: from
hide_all_headers: Furl all headers
label: Particulars
mailed_by: carried by
me: me
reply_to: answer to
show_all_headers: Unfurl all headers
signed_by: sealed by
subject: subject
to: "to %name%"
to_label: to
undisclosed: hands unnamed
draft: "Scroll"
images:
always: 'Always show the pictures from %sender%'
blocked: '{1}1 picture was held back so none may spy yer reading|]1,Inf[ %count% pictures were held back so none may spy yer reading'
show_once: Show the pictures
stop_trusting: Hold them back again
trusted: 'Pictures from %sender% are always shown'
original:
copied: Copied
copy: Copy to the slate
heading: The original scroll
quote:
hide: Stow the quoted words
show: Unfurl the quoted words
read_receipt:
dismiss: 'Nay, send nothin'''
mdn:
body: "Yer bottle to %recipient% bearin' the mark “%subject%” were unfurled on %date%. That be no oath any soul read it, nor understood a word of it."
subject: 'Unfurled: %subject%'
mismatch: 'The word back were asked to sail to %notifyTo%, which be not the port this bottle were cast off from (%sender%).'
read_at: 'Unfurled at %datetime%'
requested: '%sender% begs word when ye unfurl this bottle.'
send: 'Send word back'
save_to: 'Stow to'
security:
mismatch:
brand_in_name: "The name flies “%claimed%”, but this bottle was cast off from %actual%."
domain_in_name: "The name claims %claimed%, but this bottle was cast off from %actual%."
title: "The sender flies false colours"
spam:
body: "This bottle was fished from the bilge. Its links and pictures be treacherous — treat aught it asks of ye as a stranger's demand."
title: This bottle sits in the bilge
modal:
close: Batten it down
loading: Haulin' aboard…
oauth:
error:
generic: We couldn't tie up that crew member. Try again, matey.
microsoft:
admin_consent_required: >-
Yer fleet requires an admiral to approve plMail afore ye can tie
up this crew member. Ask yer Microsoft admiral for leave.
app_not_found: >-
plMail ain't on the roster of yer Microsoft fleet.
bad_credentials: >-
plMail's Microsoft papers be forged or expired. That be trouble
below decks, not somethin' ye can mend.
blocked_by_policy: >-
A standin' order in yer fleet blocked this boardin'.
consent_declined: >-
Boardin' called off — plMail were granted no leave.
tenant_mismatch: >-
That kind o' crew member can't board plMail as she be rigged
now. Check the MICROSOFT_OAUTH_TENANT settin'.
onboarding:
action:
back: Back astern
finish: Done an' dusted
next: Onward
skip: Sail past this one
skip_all: Skip the whole riggin'
done:
body: >-
Whatever ye sailed past be waitin' in the Settings, an' ye can run this
again from the crew menu whenever the mood takes ye.
cta: To me parrots
heading: Yer ship be rigged
aside:
account:
body: >-
plMail wants the addresses for incomin' (IMAP) an' outgoin' (SMTP) post.
Yer provider's help charts list 'em under "IMAP settings".
heading: Where be these writ?
oauth: >-
For Gmail an' Outlook, use the sign-aboard buttons under Riggin' → Mailbags
instead — no addresses needed.
admin_integrations:
body: Register yer ship with the port, then paste the keys it hands ye.
heading: Riggin' this up
admin_mail:
google:
heading: Riggin' Gmail sign-aboard
step1: Make sail for console.cloud.google.com an' start a project, or take one ye already hold.
step2: 'Under APIs an'' Services → Library, hoist th'' Gmail API.'
step3: 'Under OAuth consent screen, pick Internal if ye sail with Workspace, else External, an'' name yer ship.'
step4: 'Under Credentials, cut an OAuth client ID o'' th'' "Web application" sort.'
step5: Paste th' return bearing below into its "Authorised redirect URIs", then stow it.
step6: Copy th' client ID an' secret it shows ye into th' fields to port.
microsoft:
heading: Riggin' Microsoft sign-aboard
step1: 'Make for portal.azure.com an'' steer to Microsoft Entra ID → App registrations → New registration.'
step2: 'Choose who may come aboard. "Any organizational directory an'' personal Microsoft accounts" matches th'' tenant settin'' o'' "common".'
step3: 'Set th'' redirect kind to Web an'' paste th'' bearing below into it.'
step4: 'Once registered, copy th'' Application (client) ID into th'' field to port.'
step5: 'Under Certificates an'' secrets, cut a new client secret an'' copy its Value — not its ID — at once; it be shown but once.'
step6: 'Under API permissions, add th'' delegated Microsoft Graph rights: Mail.ReadWrite, Mail.Send, MailboxSettings.ReadWrite, Calendars.ReadWrite, User.Read an'' offline_access. Leave out MailboxSettings.ReadWrite or Calendars.ReadWrite an'' crew still board — they just get no categories an'' no calendar, an'' a token already issued be never upgraded later.'
profile:
body: This be what them on the other end read in the From line.
heading: Where this flies
security:
body: >-
Think what befalls ye if some scallywag gets yer secret word. He
don't just read yer parrots — he calls for a new secret word at yer
bank, yer harbourmaster an' yer storehouse, an' collects the letters
as they land.
body_two: >-
A second lock be a countersign on yer spyglass that turns over every
30 seconds. A pinched secret word stops bein' enough.
heading: Why this prize above all
account:
add: Hitch up this mailbag
or_manual: 'Or rig it by hand:'
sign_in_with: 'Sign aboard with %provider%'
add_another: Hitch up another mailbag
cancel: Belay that
integrations:
cancel: Belay that
connect: Hitch up
connected: Hitched
progress: 'Stop %index% o'' %total%'
security:
body: >-
Yer parrot cage be the key to every other prize ye hold, for that be
where the letters for a new secret word land. A countersign from yer
spyglass means a pinched secret word be not enough on its own.
done_body: >-
Ye'll be hailed for a countersign from yer spyglass when ye come aboard.
Stow the spare tokens where ye can reach 'em without it.
done_heading: The second lock be set
skip_hint: Ye can rig this later under Riggin' → The ship's lock.
switch_blocked: Naught was switched — mend the fields below first, an' what ye wrote stays put.
step:
account:
lead: Hitch up the mailbag ye actually read, an' plMail starts haulin' it in.
title: Mailbag
admin-integrations:
lead: Keys for the ports every soul aboard can load cargo from.
title: Port keys
admin-mail:
lead: Keys for Gmail an' Outlook, cut once for the whole ship.
title: Parrot ports
appearance:
lead: How yer ship looks. Nothin' here be carved in stone.
title: Riggin' an' colours
integrations:
lead: Hitch up the ports where ye stow yer charts an' portraits.
title: Yer ports
profile:
lead: The name that flies on the parrots ye send.
title: About ye
security:
lead: The one prize worth lockin' proper. Takes about a minute.
title: Guard yer berth
title: Rig up plMail
profile:
avatar_current: Yer likeness at present
avatar_from:
empty: Naught to show from that port.
heading: Or take one from a port ye've hitched up
avatar_wrong_type: Use a PNG, JPEG, GIF or WebP likeness.
field:
avatar: Yer likeness
avatar_help: PNG, JPEG, GIF or WebP, up to 4 MB.
avatar_remove: Strike the current likeness
name_first: First name
name_last: Family name
search:
empty:
or_keyword: or just bellow a keyword.
title: Scour yer mail
try: Give
heading:
results: Plunder found for
no_results:
hint: Try other words, or cut some filters loose.
title: Nary a thing for "%query%"
pill:
after: After
attachment: cargo
before: Before
cc: Cc
from: From
has: Carries
in: In
is: Be
label: Flag
read: read
starred: starred
subject: Subject
to: To
unread: unread
results:
count: '%count% spoils'
count_one: 1 spoil
sort:
label: Sort by
recent: Freshest catch
relevance: Closest to the mark
title: Scourin'
title_query: 'Scourin'' for: %query%'
sent:
empty: No bottles cast off.
heading: Cast off
setup:
install:
field:
email: Parrot address
email_help: This be the address ye sign aboard with.
public_url: Yer flag on the open sea
public_url_help: >-
Where the world finds yer plMail. Gmail an' Outlook holler back to it
with their tidings, so it must be reachable from the open sea, an'
best be https. Ye can change it later.
locale: Tongue
name_first: First name
name_last: Family name
password: Secret word
password_repeat: Say the secret word again
footnote: Ye can hoist yer mailbags, an' all else, once yer aboard.
heading: Claim yer berth
lead: This be the first soul aboard this plMail, so ye get the cap'n's keys.
page_title: Rig up plMail
submit: Claim it an' come aboard
tagline: Nary a soul aboard yet — let's mend that
settings:
accounts:
delete: Put this crew member ashore
delete_confirm: 'Put %account% ashore? Every bottle hauled aboard for this crew member goes to Davy Jones for good, and there be no gettin'' them back.'
disable: Revoke the papers
edit: Amend the papers
empty: No crew yet. Sign one on to start haulin' mail aboard.
enable: Restore the papers
heading: Th' crew
password_help: Leave it blank to keep the secret word ye have.
primary: Flagship
push:
degraded_hint:
gmail: >-
The cannon be loaded but naught has been heard lately. The
Pub/Sub push subscription in Google Cloud may be missin' or
aimed elsewhere. Mail still comes aboard on the watch bell.
microsoft: >-
The push subscription has run out and naught be arrivin'.
Load the cannon again to bring word back. Mail still comes
aboard on the watch bell.
failed:
gmail: >-
The cannon couldn't be readied — Google turned away the
watch. See that GMAIL_PUBSUB_TOPIC names a Pub/Sub topic
that truly exists, and that the topic grants
gmail-api-push@system.gserviceaccount.com the Pub/Sub Publisher
role. Mail still comes aboard on the watch bell.
microsoft: >-
The cannon couldn't be readied — Microsoft must reach this
ship over HTTPS. Check yer reverse proxy and APP_PUBLIC_URL.
Mail still comes aboard on the watch bell.
health:
active: Cannon
degraded: Cannon (misfirin')
inactive: On the bell
mode_pull: On the bell
mode_push: Cannon
not_configured: >-
No cannon on this ship — she needs a public HTTPS berth and, for
Gmail, a Cloud Pub/Sub topic.
off_hint: Mail comes aboard on the watch bell. Load the cannon for word the moment it lands.
on_hint:
gmail: New mail lands the instant Gmail fires the cannon.
microsoft: New mail lands the instant Microsoft fires the cannon.
renews: Yer watch be renewed afore %date%.
reregister: Load the cannon again
title: Word the moment it lands
reorder: Drag to reorder the line
status:
active: Sailin'
disabled: Beached
subheading: Sign on, amend, restore or put ashore the crew ye sail with.
type:
imap: IMAP
oauth: '%provider% (OAuth)'
aliases:
add: 'Add'
add_placeholder: 'Add another address…'
delete: 'Strike it'
disable: 'Furl it'
empty: 'No addresses yet.'
enable: 'Unfurl it'
heading: 'Parrot addresses'
make_primary: 'Make it the flagship'
ms_sender_hint: 'Outlook always sails under yer crew member''s flagship alias, whatever ye pick here — change it in yer'
ms_sender_hint_link: 'Microsoft account settings'
primary: 'Flagship'
refresh: 'Fetch from the harbourmaster'
subheading: 'Addresses this crew member sends and receives under.'
system: 'ship''s own'
clock:
heading: Th' glass
subheading: Whether th' hours be writ in twelves or in four-and-twenty. Naught be stored different — only th' figures change.
label: Th' glass
follow_language: 'Follow yer tongue (%sample%)'
option:
'12': 'Twelve hours (%sample%)'
'24': 'Four-and-twenty hours (%sample%)'
device_pairing:
pair_device: "Sign on a spyglass"
scan_title: "Point th' plMail app at this"
scan_hint: "Th' mark works once and fades in two minutes. It carries no spare key — th' app trades it for a fresh one."
qr_alt: "Pairing mark"
expires: "Fades at %time%."
open_in_app: "Open it in th' app"
app_passwords:
copy: Copy
copy_now: Here be yer new spare key
copy_now_hint: >-
Copy it now — it be kept nowhere and shown never again. Lose it and
ye must scuttle it and cut another.
empty: No spare keys yet. Cut one to tie up a mail app.
generate: Cut a key
heading: Spare keys
last_used: 'Last turned %date%'
name_placeholder: 'What be it for? e.g. iPhone — Sterna'
never_used: Never turned
revoke: Scuttle it
revoke_confirm: 'Scuttle "%name%"? Any app usin'' it be thrown overboard at once.'
setup_heading: Tyin' up an app
setup_hint: >-
Use yer parrot address as the name ye go by and the spare key as the
secret word. If the app asks for a ship or JMAP URL, give it this
one — not the /jmap/api berth, which takes naught but POST.
subheading: >-
Board third-party mail apps that speak JMAP. Every app gets its own
key ye can scuttle on its own.
appearance:
accent:
heading: Accent colour
background:
heading: Backdrop
theme: Theme default
upload: Hoist an image
density:
comfortable: Roomy
compact: Cramped
cosy: Snug
heading: Quarters
export: Export theme
glass:
heading: Spyglass
paneAlpha: Opacity
paneBlur: Sea fog
radius: Corner radius
scrimAlpha: Backdrop dimmin'
subheading: How much o' the backdrop shows through yer panels.
import: Import theme
layout:
boxed: Crates
flat: Flat as a calm sea
heading: Riggin'
subheading: How the deck be framed. Crates float every panel like cargo; flat lays the top rail an' side riggin' straight on the backdrop an' leaves only the main deck boxed.
main:
default: Theme default
heading: Main deck
matchGlass: Match the spyglass
subheading: Tint and opacity for the main deck, apart from the sidebar.
tint: Backdrop tint
reset: Back to how she came
text:
autoDerive: Work it out for me
color: Text colour
default: Theme default
faint: Faint
heading: Text
muted: Muted
subheading: Adjust text colour so it reads against yer backdrop.
theme:
dark: Dark
dusk: Dusk
heading: Theme
light: Light
nord: Nord
solar: Solar
subheading: Colour scheme for the whole ship.
system: Ship's own
back: Back to the hold
compose_defaults:
heading: 'Standin'' orders fer writin'''
invalid: 'That order could not be set down.'
read_receipt:
for_alias: 'Word back fer %alias%'
hint: 'When a sender begs word that ye have unfurled their bottle.'
inherit: 'Ship''s own order (%mode%)'
label: 'Word back'
mode:
always: 'Always send word'
ask: 'Ask me each time'
never: 'Never send word'
saved: 'Set down.'
subheading: 'What each o'' yer names does by default, sendin'' and receivin''.'
filters:
account: Account
action:
applyLabel: Fly the flag
archive: Skip the hold
markRead: Mark as read
markSpam: Call it bilge
removeLabel: Strike the flag
saveToIntegration: Stow cargo to
star: Mark it
trash: Over the side
add: New sieve
add_action: Add an order
add_condition: Add a test
add_group: Add a bundle
all_accounts: All crew
count: '%count% sieves'
count_capped: 'Catches %count%+ yarns already aboard'
count_error: Not a workable sieve yet
count_exact: 'Catches %count% yarn already aboard|Catches %count% yarns already aboard'
delete: Scuttle the sieve "%name%"
delete_confirm: 'Scuttle the sieve "%name%"? Yarns it already sorted stay put.'
delete_title: Scuttle sieve
deleted: Sieve scuttled.
disable: Stow the sieve
disabled: Stowed
edit: 'Mend the sieve "%name%"'
edit_title: Mend sieve
empty: No sieves yet
empty_hint: Sieves sort yarns as they come aboard — flag them, skip the hold, mark them, or send them over the side.
enable: Set the sieve
error:
action_required: Add at least one order, else the sieve does nothin.
name_required: Name the sieve.
field:
after: Aboard after
bcc: Bcc carries
before: Aboard before
body: Yarn carries
cc: Cc carries
filename: Cargo named
from: From carries
hasAttachment: Carries cargo
hasKeyword: Be
hasLabel: Flies flag
listId: Crew list be
maxSize: Lighter than (bytes)
minSize: Heavier than (bytes)
notKeyword: Be not
notLabel: Flies not flag
subject: Heading carries
text: Anywhere in the yarn
to: To carries
heading: Sieves
join:
and: and
none: 'none o: %list%'
or: or
keyword:
answered: answered
draft: a rough draft
flagged: marked
seen: read
integration_missing: '(cast-off port)'
label_missing: '(struck flag)'
move_down: 'Send "%name%" astern'
move_up: 'Send "%name%" forrard'
name: Name
name_placeholder: e.g. Dues from Acme
new_title: New sieve
no: Nay
no_actions: No orders yet
no_integrations: 'No ports moored — make fast to one in Friendly ports first.'
of_the_following: o the followin
op:
all: All
any: Any
none: None
placeholder:
date: Pick a day
number: 0
text: Type a value…
already_running: That sieve be already workin'.
queued: Put to the crew — runnin' over the yarns aboard.
ran: Sieve run over the yarns aboard.
remove_action: Remove order
empty_group: 'This band be empty — it catches naught till ye add a test.'
no_conditions: 'No tests: this rule takes every bottle in its waters.'
remove_condition: Remove test
remove_group: Remove bundle
reorder: Haul to reorder
run: Run over yarns aboard
run_state:
completed: 'Run over %count% yarns'
failed: 'Run ran aground — %count% yarns were done'
queued: 'Awaitin'' the crew…'
running: 'Workin''… %count% so far'
run_confirm: 'Run "%name%" over the yarns already aboard? It can shift and re-flag a great many at once.'
saved: Sieve saved.
stop: Stop after this sieve
stop_help: Later sieves be skipped for any yarn this one catches.
subheading: Sort yarns automatic-like as they come aboard.
summary:
every_message: 'it be any bottle at all'
every_message_in: 'it be any bottle at all in %account%'
in_account: '%conditions%, aboard %account%'
full: 'If %conditions% → %actions%'
no_actions: 'If %conditions% → (no orders yet)'
then: Then
when: When
yes: Aye
health:
awaiting:
calendar_resync: >-
Th'' sync be under way. Awaitin'' word back — this card''ll tell
ye what came of it th'' moment it hears.
confirm:
destructive: >-
This heaves th'' waitin'' work overboard fer good. Naught be
tried again, an'' naught comes back up. Carry on?
flash:
calendar_resync: >-
%calendar% be signed up fer a sync. She''s runnin'' below decks
now, and th'' card below will say how she fared.
queue_discarded: 'Heaved %count% abandoned tasks overboard.'
queue_retried: 'Put %count% abandoned tasks back in th'' queue.'
heading: 'State o'' yer crew'
healthy:
body: >-
Yer crew be signed on, yer almanacs be sailin'' true, an''
naught waits on ye. Should th'' post ever stop comin'' in,
this be th'' page that says why.
title: 'All hands healthy'
issue:
account_reconnect:
body: >-
No fresh post be comin'' in fer this one, an'' neither be
aught that hangs off it — th'' almanac, th'' sieves that
run on arrival, nor sendin'' from this address. Th'' post
ye already hauled aboard be safe an'' still here. This
happens when a secret word be changed, when th'' two-key
lock be thrown, or when th'' harbourmaster tears up yer
papers.
title: '%account% must sign on again'
calendar_sync_failing:
body: >-
This almanac has stopped takin'' on changes, so she shows
what she knew th'' last time she sailed. Aught added or
shifted elsewhere since then be not aboard, an'' yer own
changes be not gettin'' out.
title: '%calendar% has stopped sailin'''
integration_reconnect:
body: >-
Stowin'' cargo at %connection% an'' haulin'' it back will
not work till she be joined again. Yer post be untouched —
this be only th'' rope t'' that port. Naught stowed there
has been disturbed.
title: '%connection% needs joinin'' again'
push_degraded:
body: >-
Yer post still arrives, only not th'' instant it be sent —
this one has fallen back t'' checkin'' on th'' bell, so
fresh letters can take some minutes t'' show. Naught be
lost, an'' there be no hurry.
title: 'Instant delivery be off fer %account%'
queue_work_abandoned:
body: >-
%count% below-decks tasks tried, failed again an'' again,
an'' were set aside so they''d stop hammerin'' away. Most
times this be th'' wake o'' one o'' th'' troubles above
rather than a fault o'' its own — mend that first, then put
these back in th'' queue.
title: '%count% below-decks tasks were given up on'
outcome:
calendar_failed_again: >-
She''s gone and failed again. What she hollered this time be
below — th'' sync ran, it just didn''t hold.
calendar_still_waiting: >-
Th'' sync were started, but nary a word has come back. Try again,
or reload th'' page t'' see where she got to.
calendar_synced: 'Synced! This here calendar be up t'' date again.'
pending:
calendar_resync: 'Startin'' th'' sync…'
push_resubscribe: 'Switchin'' her back on…'
queue_discard: 'Castin'' ''em overboard…'
queue_retry: 'Puttin'' ''em back…'
reconnect: 'Settin'' course fer %provider%…'
reconnect_generic: 'Settin'' course fer th'' sign-in…'
repair:
calendar_resync:
label: 'Try sailin'' now'
promise: >-
Bids this almanac sail again straight away, an'' puts her
back on th'' usual bell. Naught aboard her be thrown out.
integration_reconnect:
label: 'Join again'
promise: >-
Sends ye t'' sign on again, then restores th'' rope ye
already had. Yer sieves an'' stowin'' places keep workin''.
push_resubscribe:
label: 'Set instant delivery back on'
promise: >-
Signs this one up fer instant delivery again. Yer post
keeps arrivin'' either way while it be sorted.
queue_discard:
label: 'Heave ''em overboard'
promise: >-
Throws th'' abandoned tasks away without runnin'' them.
There be no haulin'' them back, an'' what they left undone
stays undone.
queue_retry:
label: 'Put ''em back in th'' queue'
promise: >-
Tries th'' abandoned tasks once more. Safe t'' press — any
that fail again just wash back up here.
reconnect:
label: 'Sign this one on again'
promise: >-
Takes ye t'' sign on again, then sets th'' fresh papers on
this very same crew member. Yer post, yer holds, yer flags,
yer sieves, yer almanacs an'' yer riggin'' all stay exactly
as they be — naught be hauled down twice an'' naught be
thrown out. Ye must sign on as %account%; pick a different
address an'' it be refused, not swapped in.
reconnect:
done: '%account% be signed on again. Post an'' almanacs will catch up over th'' next few minutes.'
wrong_account: >-
That signed ye on as %actual%, but this one be %expected%.
Naught has been changed. Go ashore from %actual% with that
harbourmaster, then try again — swappin'' th'' address would
have mixed a stranger''s post in with yer own.
subheading: >-
Aught that has stopped workin'', what it means fer yer post, an''
th'' smallest thing that mends it.
technical_detail: 'Th'' fine print'
integrations:
ask_admin: 'Th'' quartermaster has not opened this port.'
auth:
appPassword: 'app password'
oauth2: 'boardin'' papers'
available_heading: 'Moor at a port'
badge:
ask_admin: 'not opened'
soon: 'soon'
checked: 'sounded %date%'
connect: Moor
disabled: 'Line slackened'
disconnect: 'Cast off'
disconnect_confirm: 'Cast off from %name%? Cargo already hauled aboard stays put.'
disconnected: 'Cast off'
edit: Edit
empty: 'No ports moored yet.'
enabled: 'Line hauled taut'
field:
base_url: 'Port address'
base_url_fixed: 'Sailin'' to %url%, set by th'' quartermaster.'
name: Name
name_help: 'Only ye see it, to tell two moorings apart.'
secret:
dropbox: 'Access token'
googleDrive: 'Access token'
googlePhotos: 'Access token'
immich: 'API key'
nextcloud: 'App password'
oneDrive: 'Access token'
secret_help:
dropbox: ''
googleDrive: ''
googlePhotos: ''
immich: 'Mint one in Immich under Account Settings → API Keys.'
nextcloud: 'Mint one in Nextcloud under Settings → Security → Devices & sessions. Never hand over yer login password.'
oneDrive: ''
permissions:
immich: 'asset.read — sight yer pictures and moving pictures|asset.download — haul the original aboard|asset.view — show previews in th'' dialog|asset.upload — stow cargo into Immich|album.read — list and browse yer albums|albumAsset.create — file stowed cargo under an album'
permissions_heading: 'Papers this key needs'
permissions_note: 'A key with all papers works too, and be simpler than tickin'' boxes.'
secret_unchanged: 'Leave blank to keep th'' stored papers'
username: Username
heading: 'Friendly ports'
not_implemented: 'plMail cannot hail this port yet.'
oauth_no_code: 'Th'' port sent back no boardin'' code. Try again.'
oauth_state_mismatch: 'That boardin'' could not be vouched for. Start afresh.'
not_oauth: 'This port does not use that manner o'' boardin''.'
pause: Slacken
paused: slackened
resume: 'Haul taut'
save_tests: 'Stowin'' sounds th'' passage at once.'
saved: Moored
saved_with_error: 'Stowed, but th'' soundin'' came back foul'
subheading: 'Haul cargo aboard from other ports, and stow cargo to them.'
test: Sound
test_failed: 'Soundin'' came back foul'
test_ok: 'Passage be clear'
unavailable_heading: 'No passage from here'
calendars:
account_hint: Where reckonin's found in parrots from %address% be filed.
caldav:
connect: Make fast to a CalDAV port
disconnect: Cut the line to "%name%"
disconnect_confirm: >-
Cut the line to "%name%"? Every almanac kept in step with it be
struck from this deck. Aught on 'em that came off yer parrots an'
not off an almanac be rowed to yer own almanac first.
disconnect_title: Cut the line to this port
field:
address: The port's address
address_help: >-
The CalDAV address yer port shows ye, or just its domain —
plMail hails the domain an' asks where its almanacs be moored
afore it gives up.
name: What it be called
name_help: What to call this line in yer settin's.
reuse: Use the word from one o' me parrot accounts
reuse_account: Which account's word
reuse_account_none: Pick an account…
reuse_help: >-
Off unless ye say so, an' best left off: most ports want a
ship's key of their own, an' a tick here sends a word ye
gave plMail for yer parrots off to the address above.
secret: Ship's key
secret_help: >-
Cut one aboard yer own port instead o' handin' over yer
boardin' word — iCloud an' Fastmail take naught else.
username: Yer name aboard
username_help: The name yer port knows ye by.
intro: >-
Any CalDAV port at all: Nextcloud, Radicale, Baïkal, Fastmail,
iCloud, a crate in a cupboard. Gmail an' Outlook almanacs come
not this way — they sail in with the parrot account.
submit: Make fast an' find the almanacs
title: Make fast to a CalDAV port
count: '%count% almanacs'
default: The one in use
delete: Scuttle the almanac "%name%"
delete_title: Scuttle the almanac
edit: Amend the almanac "%name%"
empty: No almanacs yet.
from: Off %name%
heading: Almanacs
hide: Stow this almanac below
last_synced: 'Last hauled %when%'
make_default: Make "%name%" the almanac new reckonin's land on
make_default_title: Set as the one in use
mirrored: Kept in step
mirrored_hint: Kept in step with %name%.
never_synced: Not hauled yet
read_only: Look, don't touch
read_only_hint: This almanac takes no amendin' from this here deck.
show: Bring this almanac on deck
sources:
empty: >-
No account nor line here carries almanacs yet. Gmail an' Outlook
accounts do; for aught else, make fast to a CalDAV port.
find: Find the almanacs on %name%
heading: Where almanacs come from
why_admin: >-
Yer quartermaster may not have given the papers plMail signs in
with any almanac rights. Parrots sail without 'em; almanacs do
not.
why_consent: >-
Google's askin' screen lets ye untick almanac access while
lettin' the parrots through. Sign the account on again an' leave
that box ticked.
why_empty: No almanacs turnin' up?
why_none: Belike there be no almanacs on that account at all.
subheading: >-
Name, colours an' bell, which almanacs the views show, an' where a
new reckonin' lands.
subscribe:
default_locked: >-
New reckonin's land here, so this one stays. Make another
almanac the one in use first.
empty: There be no almanacs on %name%.
intro: >-
Tick the almanacs on %name% for plMail to keep in step with.
Reckonin's turn up within the minute.
mirrored: Already kept in step
primary: The main one
save: Stow the choosin'
title: Find me almanacs
unsubscribe_note: >-
Untickin' an almanac scuttles the copy held here. Aught on it
that came off yer parrots an' not off the almanac be rowed to
yer own almanac first.
sync_now: Haul "%name%" now
sync_now_title: Haul now
labels:
count: '%count% flags'
delete: Strike the flag "%name%"
edit: Mend the flag "%name%"
empty: No flags yet — hoist one, or they turn up after the first haul.
heading: Flags
hide: Lower this flag
show: Fly this flag
subheading: Hoist, rename and order yer flags, and choose which fly in the sidebar.
system: Ship's own
profile:
heading: Yer colours
save: Stow yer colours
subheading: The name an' likeness that fly on the parrots ye send.
language:
heading: Tongue
subheading: The tongue plMail speaks to ye in. Yer bottles be left as they were writ.
nav:
sharing: Sharing
accounts: Th' crew
aliases: Aliases
app_passwords: Spare keys
appearance: Look o' the ship
calendars: Almanacs
general: General
group:
access: "Boardin' rights"
calendar: "Th' almanac"
mail: "Th' post"
personal: Yerself
health: "State o' yer crew"
profile: Yer colours
filters: Sieves
integrations: 'Friendly ports'
labels: Flags
notifications: Word from the crow's nest
security: The ship's lock
signature: Yer marks
notifications:
heading: Word from the crow's nest
ios_hint: >-
On iPhone and iPad, the lookout only calls once plMail be added to
the Home Screen: open her in Safari, tap Share, then "Add to Home
Screen", and allow the callin' from there.
state_denied: >-
Barred in yer browser settin's. Allow the lookout to call for this
site, then try again.
state_error: Somethin' went sideways. Try again.
state_off: 'Off — this here device gets no word.'
state_on: On — this here device gets word o' new mail.
state_pending: Waitin' on this device to answer the hail…
state_unconfigured: No cannon rigged on this ship.
state_unknown: Takin' a look…
state_unsupported: >-
This browser can't hear the lookout. On iPhone and iPad, add plMail
to the Home Screen first.
state_working: Workin' the riggin'…
subheading: >-
Get word o' new mail on this here device, even when plMail be
battened down.
this_device: This here device
toggle: Send up the lookout
toggle_off: Call down the lookout
unconfigured: >-
No cannon rigged on this ship — no VAPID keys be set. Run
"bin/console app:push:generate-vapid-keys".
security:
codes:
copy: Copy the tokens
copy_now: Stow yer spare tokens now
copy_now_hint: >-
This be the only time ye lay eyes on 'em. Keep 'em where ye can
reach without yer spyglass — a keyring, or paper in a locker. Each
one works but once.
heading: Spare tokens
hint: >-
Spare tokens get ye back aboard when yer spyglass goes overboard. A
fresh set replaces the old, so what ye wrote down before be worth
naught.
regenerate: Strike new tokens
remaining: '%count% unspent'
confirm_with_code: Countersign from yer spyglass
devices:
empty: No ship be remembered. Ye'll be hailed for a countersign every time.
expires: 'Runs dry %date%'
heading: Remembered ships
hint: >-
Ships that skip the hail for 30 days. Strikin' one takes hold at
once — she'll be hailed on her very next page.
last_used: 'Last aboard %date% from %ip%'
revoke: Strike
revoke_all: Strike every remembered ship
revoke_all_confirm: >-
Every remembered ship gets hailed next time, this one included.
Carry on?
revoke_confirm: 'Stop trustin'' %name%? She''ll be hailed next time.'
this_device: this here ship
disable:
confirm: Yer berth be guarded by yer secret word alone. Carry on?
heading: Strike the second lock
hint: This scuttles yer spare tokens and stops trustin' every remembered ship.
submit: Strike it
enable: Rig the second lock
enrol:
cancel: Belay that
heading: Rig the second lock
manual_copy: Copy the riggin' key
manual_toggle: Can't read the mark? Take the key instead
qr_alt: The mark for riggin' yer spyglass
step_app: >-
Ship a spyglass if ye have none — Google Authenticator, Aegis,
1Password an' Bitwarden all sail fine.
step_confirm: Give the six figures yer spyglass be showin' now.
step_scan: Read this mark with the spyglass.
submit: Aye, that's it
heading: The second lock
pitch: >-
Yer berth be the prize worth guardin' most: whoever reaches it can
call for a new secret word on everythin' else ye own, for yer parrot
cage be where them letters land. A second lock means a pinched secret
word be not enough on its own.
status:
off: The second lock be struck
on: The second lock be set
on_since: 'Set %date%'
subheading: How ye prove ye be ye when comin' aboard.
sharing:
heading: Sharing
subheading: >-
Berths that show part o yer log to someone wi no account, an notices
that let em board an hour o it.
signature:
for_alias: 'Yer mark fer %alias%'
heading: Yer marks
hint: 'Set at the foot o'' every new scroll, above the quoted words.'
label: 'Yer mark'
overriding: 'That name carries a mark o'' its own now — carve it below.'
per_address:
count: 'Names carryin'' a mark o'' their own: %number%'
disclosure: 'Carry a different mark on some o'' yer names'
inherits: 'Carries the ship''s own mark.'
override: 'Carry a different one'
override_for: 'Give %alias% a mark o'' its own'
revert: 'Use the ship''s own mark'
revert_for: 'Back to the ship''s own mark fer %alias%'
signs_with_nothing: 'Bare — this name sails unmarked.'
placeholder: 'No mark yet'
reverted: 'Back to the ship''s own mark.'
save: 'Set down yer mark'
saved: 'Set down.'
subheading: 'What be carved at the foot o'' the scrolls ye write.'
timezone:
heading: Ship's bells
subheading: The clock yer times be told by. Naught be rewrit — the same moment, read off yer own glass.
label: Ship's bells
follow_default: 'Th'' harbour''s own (%timezone%)'
current_time: 'It be %time% in these waters.'
title: Riggin'
sidebar:
accounts:
add: Sign on a crew member
heading: Th' crew
loading: Haulin' aboard…
none: No crew yet
open: 'Board %account%'
toggle: 'Open or close the lockers in %account%'
compose: Scribble
labels:
add: Hoist a new flag
heading: Flags
none: No flags yet
new_mail_here: 'Fresh bottles washed up in %where%'
nav:
calendar: Almanac
archive: The hold
drafts: Scrolls in the works
inbox: Bottles washed ashore
more: More
sent: Cast off
snoozed: Kept below deck
spam: Bilge
starred: Marked with an X
trash: Davy Jones' locker
toggle: Raise or lower th' side riggin'
snooze:
later_today: Later this watch
next_week: Next se'nnight
pick_date: Name th' day and th' hour
this_weekend: Come th' weekend
tomorrow: On th' morrow
unsnooze: Haul it back up
snoozed:
empty: Naught kept below deck.
heading: Kept below deck
until: Surfaces %when%
starred:
empty: Naught marked with an X.
heading: Marked with an X
tabs:
forums: Taverns
primary: Main deck
promotions: Peddlers
social: Shipmates
updates: Dispatches
thread:
no_subject: (no subject)
thread_row:
account: 'Hauled aboard %account%'
actions:
archive: Stow in the hold
cancel_schedule: Belay the castin' off
delete: Feed to the fishes
mark_read: Mark as read
mark_unread: Mark as unread
snooze: Let it drift
has_attachment: Carries cargo
me: me
message_count: "({ count })"
new: Never yet laid eyes on
new_badge: Fresh
no_recipient: (bound for nowhere)
no_subject: (no subject)
scheduled: 'Due %when%'
select: Pick it
star: Mark this bottle with an X
to: 'Bound for: %recipients%'
unread: Unread by any soul
unstar: Rub out the X
toast:
dismiss: Away with ye
schedule_cancelled: The castin' off be belayed.
send_cancelled: Castin' off belayed — back to yer scroll.
undo: Belay that
error:
no_archive_mailbox: There be no hold on this ship.
toolbar:
actions:
archive: Stow in the hold
delete: Feed to the fishes
label: Fly a flag
mark_read: Mark as read
mark_unread: Mark as unread
snooze: Let it drift
pagination:
next: Saltier
of: of
prev: Fresher
select:
all: All hands
none: None
read: Read
starred: Marked
unread: Unread
select_all: Pick every yarn
select_menu: More ways to pick
spam:
empty: No bilge aboard.
heading: Bilge
trash:
empty: Naught fed to the fishes.
heading: Davy Jones' locker
two_factor:
cancel: Come aboard as another soul
flash:
code_rejected: That countersign be wrong. Check yer spyglass an' try again.
codes_regenerated: New spare tokens struck. The old ones be worth naught.
device_revoked: That ship be hailed next time.
devices_revoked: No ship be remembered any more.
disabled: The second lock be struck.
enabled: The second lock be set.
form:
code: Countersign
code_hint: >-
The six figures from yer spyglass, or one o' yer spare tokens.
submit: Carry on
submitting: "Checkin' th' countersign…"
trust_device: Don't hail this ship again
trust_device_hint: For 30 days. Ye can strike it any time from Riggin' → The ship's lock.
page_title: The second lock
recovery_hint: >-
Spyglass overboard? Use one o' the spare tokens ye stowed when ye rigged
this.
tagline: One more turn o' the capstan