Compare commits

...
13 Commits
Author SHA1 Message Date
Linus Rath 724c3b80ee chore: update version number to 0.1.67 2026-09-27 10:15:08 +02:00
Linus Rath a27d014c59 fix: ask before a sign-in link from another app signs in
Any web page (one tap) or installed app (no tap) could fire a
`bulwarkmail://pair` link at the app, which then silently added the
sender's mailbox and switched to it, so the user might send or save mail
into an attacker's account. A `connect` link likewise opened any
server's sign-in page.

- Links that arrive from outside the app now ask first, naming the
  webmail's host and whether the link adds an account. Cancel discards
  the link for good; a link delivered again while the question is open
  is dropped. Codes scanned or pasted inside the app still go straight
  through.
- With the account registry full, a link shows the limit instead of
  opening "Add account".
- A pairing link for a plain-http webmail says the connection would be
  unencrypted instead of "That code isn't a Bulwark sign-in code", or
  nothing at all for a tapped link.
2026-09-27 05:11:07 +02:00
Linus Rath 26bb947940 fix: keep the account limit from leaving the app signed in as the wrong account
Signing in connects the shared client to the new account and stores its
credentials before the account registry takes it. With ten accounts the
registry refused, but nothing undid the connect: every request then went
out as the new account while the app still showed the old one. A
sign-in link made this easy to reach, since it opened "Add account"
without the limit check the menus have.

- A failed registration now restores the previous connection and drops
  credentials the registry never took.
- Adding an account to a full registry is refused before a sign-in code
  is spent or a browser sign-in starts, with "Remove an account in
  Settings to add another one."
2026-09-27 05:10:50 +02:00
Linus Rath 1131073323 feat: open sign-in links from the camera app and paste them into the app
The webmail's QR encodes a `bulwarkmail://pair?...` link, but nothing
registered that scheme: scanning it with the system camera or Google
Lens did nothing, and without a camera there was no way in at all.

- `bulwarkmail` is registered in `app.config.js` (iOS) and the committed
  AndroidManifest. Links are parked in a small store and picked up by
  the sign-in screen, or by "Add account" when already signed in, once
  per launch.
- "Paste sign-in link" on the sign-in screen (and next to the server
  step's scan hint) takes a link copied from the webmail.
- While pairing, the waiting screen names the webmail being paired with.
2026-09-27 04:23:01 +02:00
Linus Rath 59cfe50793 fix: say why a sign-in code failed and accept password pairing from the webmail
Every failed redeem read "That code has expired": a code already used,
a webmail without pairing (404), a rate limit, a server error and a
network failure all looked the same, and a non-JSON answer surfaced as a
raw parse error. The app now reads the webmail's `invalid_code`,
`expired_code` and `used_code` answers (webmail 1.11's catch-all 400
reads as "expired or already used"), gives up after 15 s, and names the
host involved; a failure after the code was redeemed says the phone was
signed in but could not reach the mail server.

- `loginViaPairing` accepts `flow: 'password'` bundles (an app password,
  or the account password from servers without OAuth) in normal and
  add-account mode, and never redeems the same code twice.
- A `pair` link must point at an https webmail (loopback http for
  development); `pair/?` is accepted too.
- A token refresh that answers 200 with a non-JSON body keeps the
  account instead of signing it out.
2026-09-27 04:22:33 +02:00
Linus Rath db07acc37c chore: update version number to 0.1.66 2026-09-27 00:34:53 +02:00
Linus Rath 39628d84dc fix: keep widget corners and border even when the launcher crops the widget 2026-09-27 00:34:29 +02:00
Linus Rath 78901f2375 chore: update version number to 0.1.65 2026-09-26 20:30:38 +02:00
Linus Rath a4985a63a8 fix: open replies over the message so widget links work offline 2026-09-26 20:25:21 +02:00
Linus Rath f7ec09942d chore: update version number to 0.1.64 2026-09-26 18:53:38 +02:00
Linus Rath c165fef588 feat: add android home-screen widgets for mail, calendar, tasks and files 2026-09-26 18:53:25 +02:00
Linus Rath 4052523ba9 ci: read the apk signer from newer apksigner output in the release check 2026-09-24 22:45:52 +02:00
Linus Rath e30749a50e ci: stop the android release failing on the runner's new sdk tools 2026-09-24 22:31:01 +02:00
191 changed files with 12050 additions and 257 deletions
+9 -1
View File
@@ -57,7 +57,12 @@ jobs:
java-version: 17
cache: gradle
# The action installs the legacy `tools` package by default, which the
# runner's cmdline-tools 16 no longer carries ("Failed to find package
# 'tools'"). Gradle fetches the platforms and build-tools it needs.
- uses: android-actions/setup-android@v3
with:
packages: platform-tools
- name: Cache Android NDK / CMake
uses: actions/cache@v4
@@ -205,9 +210,12 @@ jobs:
set -euo pipefail
APK=android/app/build/outputs/apk/release/app-release.apk
apksigner verify --verbose --print-certs "$APK"
# build-tools 36 prints "Signer #1 certificate SHA-256 digest: …",
# 37 prints "V3.0 Signer: certificate …" and "V2 Signer: …".
signers() {
apksigner verify --print-certs "$@" "$APK" \
| sed -n 's/^Signer #[0-9]* certificate SHA-256 digest: //p'
| sed -n -E 's/^(Signer #[0-9]+|V[0-9.]+ Signer:) certificate SHA-256 digest: //p' \
| sort -u
}
MODERN=$(signers --min-sdk-version 28)
LEGACY=$(signers --max-sdk-version 27)
+89 -5
View File
@@ -58,10 +58,11 @@ import { useCalendarStore } from './src/stores/calendar-store';
import { useContactsStore } from './src/stores/contacts-store';
import { useEmailStore, viewerParamsForRow } from './src/stores/email-store';
import { mailboxAccountId } from './src/lib/mailbox-tree';
import { prefetchMessage } from './src/lib/email-detail-cache';
import { loadDetail, prefetchMessage } from './src/lib/email-detail-cache';
import { useHasCalendar, useHasContacts, useHasFiles } from './src/lib/capabilities';
import { useSettingsStore } from './src/stores/settings-store';
import { useLocaleStore } from './src/stores/locale-store';
import { toast } from './src/stores/toast-store';
import { useNetworkStore } from './src/stores/network-store';
import { useUpdatesStore } from './src/stores/updates-store';
import { UpdateBanner } from './src/components/UpdateBanner';
@@ -70,7 +71,18 @@ import { ToastHost } from './src/components/ToastHost';
import { UndoSnackbar } from './src/components/UndoSnackbar';
import { AppIconBadge } from './src/components/AppIconBadge';
import { getEmails } from './src/api/email';
import { handleDeepLink, parseDeepLink, shareToDeepLink, type DeepLink } from './src/navigation/linking';
import { signOutWidgets, startWidgetSync } from './src/widgets/sync';
import { draftContextFromEmail } from './src/lib/draft-context';
import {
acceptSignInLink,
handleDeepLink,
parseDeepLink,
routeParkedSignInLink,
shareToDeepLink,
type DeepLink,
} from './src/navigation/linking';
import { usePendingSignInLinkStore } from './src/navigation/pending-sign-in-link';
import { MAX_ACCOUNTS } from './src/lib/account-utils';
import { addShareListener, getInitialShare, shareAttachments } from './src/lib/share-intent';
import { OfflineCacheBanner } from './src/components/OfflineCacheBanner';
import { useOfflineCacheStore } from './src/stores/offline-cache-store';
@@ -83,6 +95,10 @@ const Stack = createNativeStackNavigator<RootStackParamList>();
const Tab = createBottomTabNavigator<MainTabsParamList>();
const navigationRef = createNavigationContainerRef<RootStackParamList>();
// The launch URL is read once per process: Android hands the same intent back
// on every getInitialURL(), and a sign-in link must not run twice.
let initialSignInLinkRead = false;
async function navigateToNotificationTap(payload: NotificationTapPayload): Promise<void> {
if (!navigationRef.isReady()) return;
@@ -131,16 +147,27 @@ async function openCalendarReminder(target: CalendarReminderTarget): Promise<voi
// Deep links (bulwarkmobile://, webmail https permalinks, mailto:) and
// Android share-sheet payloads all end up here once the navigator is ready.
async function openDeepLink(link: DeepLink): Promise<void> {
await handleDeepLink(link, {
const opened = await handleDeepLink(link, {
navigation: navigationRef,
resolveThreadId: async (emailId) => {
resolveThreadId: async (emailId, jmapAccountId) => {
try {
const [email] = await getEmails([emailId]);
const [email] = await getEmails([emailId], jmapAccountId);
return email?.threadId ?? null;
} catch {
return null;
}
},
openDraft: async (emailId, jmapAccountId) => {
try {
// Cache first, so a draft read before still opens offline.
const draft = draftContextFromEmail(await loadDetail(emailId, jmapAccountId), jmapAccountId);
if (!navigationRef.isReady()) return false;
navigationRef.navigate('Compose', { draft });
return true;
} catch {
return false;
}
},
switchAccount: async (accountId) => {
const auth = useAuthStore.getState();
if (auth.activeAccountId === accountId) return true;
@@ -149,6 +176,9 @@ async function openDeepLink(link: DeepLink): Promise<void> {
return useAuthStore.getState().activeAccountId === accountId;
},
});
// A widget or a link elsewhere brought the app up for this; say it failed
// rather than leave the user wondering why the app just opened.
if (!opened) toast.error(useLocaleStore.getState().t('deep_link.open_failed', "Couldn't open this"));
}
// Toasts and the undo bar show on whichever stack screen is up, so a failure
@@ -385,6 +415,14 @@ export default function App() {
return useNetworkStore.getState().init();
}, []);
// Home-screen widgets follow the signed-in data; once the last account is
// gone they are wiped so no mail stays visible on the launcher.
React.useEffect(() => {
if (isAuthenticated) return startWidgetSync();
if (hasRestoredSession) void signOutWidgets();
return undefined;
}, [isAuthenticated, hasRestoredSession]);
// When the network flips back on while we're authenticated-but-offline
// (no live JMAP session), retry the session so the user lands back on
// live data without needing to relaunch.
@@ -541,6 +579,52 @@ export default function App() {
};
}, [isAuthenticated]);
// Sign-in links (`bulwarkmail://pair?…` from the webmail's Link Mobile App,
// `bulwarkmail://connect?…`) work signed out too, so unlike the links above
// they are listened for from launch. They are parked for the login screen
// (the signed-out one takes them as it mounts), marked as coming from
// outside the app: any page or app can fire one, so the login screen asks
// before it redeems or opens anything.
React.useEffect(() => {
if (!initialSignInLinkRead) {
initialSignInLinkRead = true;
void Linking.getInitialURL().then((url) => { acceptSignInLink(url); }).catch(() => undefined);
}
const subscription = Linking.addEventListener('url', ({ url }) => { acceptSignInLink(url); });
return () => subscription.remove();
}, []);
// Signed in, a sign-in link adds an account: open Add account, whose login
// screen takes the parked link (or says why a refused one won't be used).
// On a cold start the navigator mounts right after the auth gate flips, so
// wait for it like a reminder tap does.
const signInLinkPending = usePendingSignInLinkStore((s) => s.pending !== null || s.refusal !== null);
const addAccountForLink = isAuthenticated && signInLinkPending;
React.useEffect(() => {
if (!addAccountForLink) return;
let cancelled = false;
void (async () => {
for (let attempt = 0; attempt < 50 && !navigationRef.isReady(); attempt++) {
await new Promise((resolve) => setTimeout(resolve, 100));
if (cancelled) return;
}
if (cancelled || !navigationRef.isReady()) return;
const route = routeParkedSignInLink(useAccountStore.getState().accounts.length);
if (route === 'account-limit') {
// Said like the Add account buttons say it, instead of opening a
// screen whose sign-in can only fail.
const t = useLocaleStore.getState().t;
toast.error(
t('settings.account.accounts.limit', 'Maximum of {count} accounts reached.', { count: MAX_ACCOUNTS }),
t('login.mobile.err_account_limit_detail', 'Remove an account in Settings to add another one.'),
);
return;
}
if (route === 'add-account') navigationRef.navigate('AddAccount');
})();
return () => { cancelled = true; };
}, [addAccountForLink]);
// Re-register the device with the configured relay once authenticated,
// and whenever the FCM token rotates. Honours the user's notification
// preference - flipping it off tears down THIS account's subscription so
+1 -1
View File
@@ -1 +1 @@
0.1.63
0.1.67
+234
View File
@@ -28,6 +28,13 @@
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="bulwarkmobile"/>
</intent-filter>
<!-- Sign-in links from the webmail (bulwarkmail://pair?..., bulwarkmail://connect?...). -->
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="bulwarkmail"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<action android:name="android.intent.action.SENDTO"/>
@@ -66,5 +73,232 @@
</intent-filter>
</service>
<meta-data android:name="com.google.firebase.messaging.default_notification_channel_id" android:value="bulwark_mail"/>
<!-- BEGIN WIDGETS: generated by scripts/sync-android-widgets.mjs, do not edit by hand -->
<service android:name="com.reactnativeandroidwidget.RNWidgetCollectionService" android:permission="android.permission.BIND_REMOTEVIEWS"/>
<receiver android:name=".widget.InboxWidget" android:exported="false" android:label="@string/widgetprovider_inboxwidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_inboxwidget"/>
</receiver>
<receiver android:name=".widget.TriageWidget" android:exported="false" android:label="@string/widgetprovider_triagewidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_triagewidget"/>
</receiver>
<receiver android:name=".widget.UnreadCountWidget" android:exported="false" android:label="@string/widgetprovider_unreadcountwidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_unreadcountwidget"/>
</receiver>
<receiver android:name=".widget.LatestMessageWidget" android:exported="false" android:label="@string/widgetprovider_latestmessagewidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_latestmessagewidget"/>
</receiver>
<receiver android:name=".widget.FolderCountsWidget" android:exported="false" android:label="@string/widgetprovider_foldercountswidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_foldercountswidget"/>
</receiver>
<receiver android:name=".widget.MailShortcutsWidget" android:exported="false" android:label="@string/widgetprovider_mailshortcutswidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_mailshortcutswidget"/>
</receiver>
<receiver android:name=".widget.AllAccountsWidget" android:exported="false" android:label="@string/widgetprovider_allaccountswidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_allaccountswidget"/>
</receiver>
<receiver android:name=".widget.StarredWidget" android:exported="false" android:label="@string/widgetprovider_starredwidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_starredwidget"/>
</receiver>
<receiver android:name=".widget.FavouritePeopleWidget" android:exported="false" android:label="@string/widgetprovider_favouritepeoplewidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_favouritepeoplewidget"/>
</receiver>
<receiver android:name=".widget.MailSearchWidget" android:exported="false" android:label="@string/widgetprovider_mailsearchwidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_mailsearchwidget"/>
</receiver>
<receiver android:name=".widget.OutboxWidget" android:exported="false" android:label="@string/widgetprovider_outboxwidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_outboxwidget"/>
</receiver>
<receiver android:name=".widget.TagWidget" android:exported="false" android:label="@string/widgetprovider_tagwidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_tagwidget"/>
</receiver>
<receiver android:name=".widget.LastDraftWidget" android:exported="false" android:label="@string/widgetprovider_lastdraftwidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_lastdraftwidget"/>
</receiver>
<receiver android:name=".widget.AgendaWidget" android:exported="false" android:label="@string/widgetprovider_agendawidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_agendawidget"/>
</receiver>
<receiver android:name=".widget.WeekWidget" android:exported="false" android:label="@string/widgetprovider_weekwidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_weekwidget"/>
</receiver>
<receiver android:name=".widget.MonthWidget" android:exported="false" android:label="@string/widgetprovider_monthwidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_monthwidget"/>
</receiver>
<receiver android:name=".widget.TodayEventsWidget" android:exported="false" android:label="@string/widgetprovider_todayeventswidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_todayeventswidget"/>
</receiver>
<receiver android:name=".widget.NextEventWidget" android:exported="false" android:label="@string/widgetprovider_nexteventwidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_nexteventwidget"/>
</receiver>
<receiver android:name=".widget.DateNextWidget" android:exported="false" android:label="@string/widgetprovider_datenextwidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_datenextwidget"/>
</receiver>
<receiver android:name=".widget.UpNextWidget" android:exported="false" android:label="@string/widgetprovider_upnextwidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_upnextwidget"/>
</receiver>
<receiver android:name=".widget.InvitationsWidget" android:exported="false" android:label="@string/widgetprovider_invitationswidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_invitationswidget"/>
</receiver>
<receiver android:name=".widget.FreeTimeWidget" android:exported="false" android:label="@string/widgetprovider_freetimewidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_freetimewidget"/>
</receiver>
<receiver android:name=".widget.TasksWidget" android:exported="false" android:label="@string/widgetprovider_taskswidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_taskswidget"/>
</receiver>
<receiver android:name=".widget.TaskProgressWidget" android:exported="false" android:label="@string/widgetprovider_taskprogresswidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_taskprogresswidget"/>
</receiver>
<receiver android:name=".widget.CountdownWidget" android:exported="false" android:label="@string/widgetprovider_countdownwidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_countdownwidget"/>
</receiver>
<receiver android:name=".widget.BirthdaysWidget" android:exported="false" android:label="@string/widgetprovider_birthdayswidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_birthdayswidget"/>
</receiver>
<receiver android:name=".widget.TodayHubWidget" android:exported="false" android:label="@string/widgetprovider_todayhubwidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_todayhubwidget"/>
</receiver>
<receiver android:name=".widget.MailAndNextWidget" android:exported="false" android:label="@string/widgetprovider_mailandnextwidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_mailandnextwidget"/>
</receiver>
<receiver android:name=".widget.RecentFilesWidget" android:exported="false" android:label="@string/widgetprovider_recentfileswidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_recentfileswidget"/>
</receiver>
<receiver android:name=".widget.AttachmentsWidget" android:exported="false" android:label="@string/widgetprovider_attachmentswidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_attachmentswidget"/>
</receiver>
<receiver android:name=".widget.VacationWidget" android:exported="false" android:label="@string/widgetprovider_vacationwidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_vacationwidget"/>
</receiver>
<receiver android:name=".widget.StorageWidget" android:exported="false" android:label="@string/widgetprovider_storagewidget_label">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.anonymous.bulwarkmobile.WIDGET_CLICK"/>
</intent-filter>
<meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetprovider_storagewidget"/>
</receiver>
<!-- END WIDGETS -->
</application>
</manifest>
@@ -0,0 +1,40 @@
// Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json.
// react-native-android-widget names a widget after its provider class, so each
// widget needs its own subclass; the JS side (src/widgets/task-handler.tsx)
// renders by that name.
package com.anonymous.bulwarkmobile.widget
import com.reactnativeandroidwidget.RNWidgetProvider
class InboxWidget : RNWidgetProvider()
class TriageWidget : RNWidgetProvider()
class UnreadCountWidget : RNWidgetProvider()
class LatestMessageWidget : RNWidgetProvider()
class FolderCountsWidget : RNWidgetProvider()
class MailShortcutsWidget : RNWidgetProvider()
class AllAccountsWidget : RNWidgetProvider()
class StarredWidget : RNWidgetProvider()
class FavouritePeopleWidget : RNWidgetProvider()
class MailSearchWidget : RNWidgetProvider()
class OutboxWidget : RNWidgetProvider()
class TagWidget : RNWidgetProvider()
class LastDraftWidget : RNWidgetProvider()
class AgendaWidget : RNWidgetProvider()
class WeekWidget : RNWidgetProvider()
class MonthWidget : RNWidgetProvider()
class TodayEventsWidget : RNWidgetProvider()
class NextEventWidget : RNWidgetProvider()
class DateNextWidget : RNWidgetProvider()
class UpNextWidget : RNWidgetProvider()
class InvitationsWidget : RNWidgetProvider()
class FreeTimeWidget : RNWidgetProvider()
class TasksWidget : RNWidgetProvider()
class TaskProgressWidget : RNWidgetProvider()
class CountdownWidget : RNWidgetProvider()
class BirthdaysWidget : RNWidgetProvider()
class TodayHubWidget : RNWidgetProvider()
class MailAndNextWidget : RNWidgetProvider()
class RecentFilesWidget : RNWidgetProvider()
class AttachmentsWidget : RNWidgetProvider()
class VacationWidget : RNWidgetProvider()
class StorageWidget : RNWidgetProvider()
Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Home-screen widget edge, drawn over the widget by layout/rn_widget.xml. -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:width="1dp"
android:color="@color/widget_frame" />
<corners android:radius="@dimen/widget_radius" />
</shape>
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Home-screen widget root (layout/rn_widget.xml): its rounded outline is what the widget clips to. -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/widget_surface" />
<corners android:radius="@dimen/widget_radius" />
</shape>
@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Night twin of layout/rn_widget.xml, which explains the override. -->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@android:id/background"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/widget_surface"
android:clipToOutline="true"
android:foreground="@drawable/widget_frame"
tools:targetApi="31">
<ImageView
android:id="@+id/rn_widget_image_light"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent"
android:scaleType="matrix"
android:visibility="gone" />
<ImageView
android:id="@+id/rn_widget_image_dark"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent"
android:scaleType="matrix"
android:visibility="visible" />
<FrameLayout
android:id="@+id/rn_widget_clickable_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<FrameLayout
android:id="@+id/rn_widget_collection_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Overrides react-native-android-widget's rn_widget.xml (same ids and children;
layout-night/rn_widget.xml is its night twin).
The library draws each widget into one bitmap sized from the size the
launcher reports, and pins it to the top left without scaling. When the real
frame is smaller (after a rotation, or on a launcher that over-reports), the
bitmap's bottom edge is cut off and takes the rounded corners and the border
with it, so the bottom corners fall back to whatever the launcher clips to.
This root always has the real size, so it owns the shape instead: it clips to
a rounded outline (Android 12+; the launcher then leaves the corners to us),
fills in where the bitmap falls short, and draws the frame on top.
-->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@android:id/background"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/widget_surface"
android:clipToOutline="true"
android:foreground="@drawable/widget_frame"
tools:targetApi="31">
<ImageView
android:id="@+id/rn_widget_image_light"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent"
android:scaleType="matrix"
android:visibility="visible" />
<ImageView
android:id="@+id/rn_widget_image_dark"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent"
android:scaleType="matrix"
android:visibility="gone" />
<FrameLayout
android:id="@+id/rn_widget_clickable_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<FrameLayout
android:id="@+id/rn_widget_collection_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
@@ -3,4 +3,6 @@
<color name="splashscreen_background">#09090b</color>
<!-- Matches the dark palette background (src/theme/tokens.ts). -->
<color name="window_background">#09090b</color>
<!-- DARK.bg in src/widgets/theme.ts. -->
<color name="widget_surface">#0a0a0a</color>
</resources>
@@ -6,4 +6,8 @@
<color name="colorPrimaryDark">#09090b</color>
<!-- Behind the React root until the first frame; matches the light palette background (src/theme/tokens.ts). -->
<color name="window_background">#ffffff</color>
<!-- Home-screen widget surface (LIGHT.bg in src/widgets/theme.ts); it only shows where the drawn widget falls short of the launcher's frame. -->
<color name="widget_surface">#ffffff</color>
<!-- Home-screen widget edge, one colour for both schemes: the app can force a theme the launcher's night mode doesn't know about. -->
<color name="widget_frame">#4d808080</color>
</resources>
@@ -0,0 +1,4 @@
<resources>
<!-- Home-screen widget corners; WIDGET_RADIUS in src/widgets/primitives.tsx. -->
<dimen name="widget_radius">22dp</dimen>
</resources>
@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<resources>
<string name="widgetprovider_inboxwidget_label">Inbox</string>
<string name="widgetprovider_inboxwidget_description">Newest messages with sender, time and subject. Taller sizes add avatars and a line of preview.</string>
<string name="widgetprovider_triagewidget_label">Triage</string>
<string name="widgetprovider_triagewidget_description">One unread message at a time with archive, delete and reply buttons.</string>
<string name="widgetprovider_unreadcountwidget_label">Unread count</string>
<string name="widgetprovider_unreadcountwidget_description">Unread count for the inbox, with the latest senders.</string>
<string name="widgetprovider_latestmessagewidget_label">Latest message</string>
<string name="widgetprovider_latestmessagewidget_description">Only the newest unread message.</string>
<string name="widgetprovider_foldercountswidget_label">Folder counts</string>
<string name="widgetprovider_foldercountswidget_description">Unread counts for up to four folders.</string>
<string name="widgetprovider_mailshortcutswidget_label">Shortcuts</string>
<string name="widgetprovider_mailshortcutswidget_description">Compose, calendar, contacts and files.</string>
<string name="widgetprovider_allaccountswidget_label">All accounts</string>
<string name="widgetprovider_allaccountswidget_description">The unified inbox across every signed-in account.</string>
<string name="widgetprovider_starredwidget_label">Starred</string>
<string name="widgetprovider_starredwidget_description">Starred messages, newest first.</string>
<string name="widgetprovider_favouritepeoplewidget_label">Favourite people</string>
<string name="widgetprovider_favouritepeoplewidget_description">The people you hear from most, with their unread count.</string>
<string name="widgetprovider_mailsearchwidget_label">Search mail</string>
<string name="widgetprovider_mailsearchwidget_description">Search bar with your recent searches.</string>
<string name="widgetprovider_outboxwidget_label">Scheduled and outbox</string>
<string name="widgetprovider_outboxwidget_description">Scheduled messages and anything waiting in the outbox.</string>
<string name="widgetprovider_tagwidget_label">Tag</string>
<string name="widgetprovider_tagwidget_description">Unread count for your busiest tag.</string>
<string name="widgetprovider_lastdraftwidget_label">Last draft</string>
<string name="widgetprovider_lastdraftwidget_description">Back into the draft you left.</string>
<string name="widgetprovider_agendawidget_label">Agenda</string>
<string name="widgetprovider_agendawidget_description">Upcoming events by day with time, colour and place.</string>
<string name="widgetprovider_weekwidget_label">This week</string>
<string name="widgetprovider_weekwidget_description">The week at a glance from 8:00 to 18:00.</string>
<string name="widgetprovider_monthwidget_label">Month</string>
<string name="widgetprovider_monthwidget_description">Month grid with a dot per calendar and the next two events.</string>
<string name="widgetprovider_todayeventswidget_label">Today</string>
<string name="widgetprovider_todayeventswidget_description">Today\'s date with the rest of today and tomorrow.</string>
<string name="widgetprovider_nexteventwidget_label">Next event</string>
<string name="widgetprovider_nexteventwidget_description">What\'s next, when and where.</string>
<string name="widgetprovider_datenextwidget_label">Date and next two</string>
<string name="widgetprovider_datenextwidget_description">Today\'s date with the next two events.</string>
<string name="widgetprovider_upnextwidget_label">Up next</string>
<string name="widgetprovider_upnextwidget_description">Countdown to the next event with join and running-late buttons.</string>
<string name="widgetprovider_invitationswidget_label">Invitations</string>
<string name="widgetprovider_invitationswidget_description">Pending invitations with accept, maybe and decline.</string>
<string name="widgetprovider_freetimewidget_label">Free time</string>
<string name="widgetprovider_freetimewidget_description">When you\'re free this week.</string>
<string name="widgetprovider_taskswidget_label">Tasks</string>
<string name="widgetprovider_taskswidget_description">Open tasks with tick boxes that work from the home screen.</string>
<string name="widgetprovider_taskprogresswidget_label">Task progress</string>
<string name="widgetprovider_taskprogresswidget_description">How many tasks are done.</string>
<string name="widgetprovider_countdownwidget_label">Countdown</string>
<string name="widgetprovider_countdownwidget_description">Days until your next all-day event.</string>
<string name="widgetprovider_birthdayswidget_label">Birthdays</string>
<string name="widgetprovider_birthdayswidget_description">Upcoming birthdays from your contacts.</string>
<string name="widgetprovider_todayhubwidget_label">Today overview</string>
<string name="widgetprovider_todayhubwidget_description">Next event, newest unread mail and tasks due, in one widget.</string>
<string name="widgetprovider_mailandnextwidget_label">Mail and next event</string>
<string name="widgetprovider_mailandnextwidget_description">Unread mail on one side, the next event on the other.</string>
<string name="widgetprovider_recentfileswidget_label">Recent files</string>
<string name="widgetprovider_recentfileswidget_description">Recently changed items in Files.</string>
<string name="widgetprovider_attachmentswidget_label">Recent attachments</string>
<string name="widgetprovider_attachmentswidget_description">The newest attachments from your mail.</string>
<string name="widgetprovider_vacationwidget_label">Vacation responder</string>
<string name="widgetprovider_vacationwidget_description">Vacation responder status with an on/off switch.</string>
<string name="widgetprovider_storagewidget_label">Storage</string>
<string name="widgetprovider_storagewidget_description">How much of your mailbox quota is used.</string>
</resources>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="250dp"
android:minHeight="250dp"
android:minResizeWidth="180dp"
android:minResizeHeight="110dp"
android:targetCellWidth="4"
android:targetCellHeight="4"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_agendawidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/agendawidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="250dp"
android:minHeight="110dp"
android:minResizeWidth="180dp"
android:minResizeHeight="110dp"
android:targetCellWidth="4"
android:targetCellHeight="2"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_allaccountswidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/allaccountswidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="250dp"
android:minHeight="110dp"
android:minResizeWidth="180dp"
android:minResizeHeight="110dp"
android:targetCellWidth="4"
android:targetCellHeight="2"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_attachmentswidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/attachmentswidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="250dp"
android:minHeight="110dp"
android:minResizeWidth="180dp"
android:minResizeHeight="110dp"
android:targetCellWidth="4"
android:targetCellHeight="2"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_birthdayswidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/birthdayswidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="110dp"
android:minHeight="110dp"
android:minResizeWidth="110dp"
android:minResizeHeight="110dp"
android:targetCellWidth="2"
android:targetCellHeight="2"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_countdownwidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/countdownwidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="110dp"
android:minHeight="110dp"
android:minResizeWidth="110dp"
android:minResizeHeight="110dp"
android:targetCellWidth="2"
android:targetCellHeight="2"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_datenextwidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/datenextwidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="250dp"
android:minHeight="110dp"
android:minResizeWidth="180dp"
android:minResizeHeight="110dp"
android:targetCellWidth="4"
android:targetCellHeight="2"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_favouritepeoplewidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/favouritepeoplewidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="110dp"
android:minHeight="110dp"
android:minResizeWidth="110dp"
android:minResizeHeight="110dp"
android:targetCellWidth="2"
android:targetCellHeight="2"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_foldercountswidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/foldercountswidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="250dp"
android:minHeight="110dp"
android:minResizeWidth="180dp"
android:minResizeHeight="110dp"
android:targetCellWidth="4"
android:targetCellHeight="2"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_freetimewidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/freetimewidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="250dp"
android:minHeight="110dp"
android:minResizeWidth="110dp"
android:minResizeHeight="110dp"
android:targetCellWidth="4"
android:targetCellHeight="2"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_inboxwidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/inboxwidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="250dp"
android:minHeight="110dp"
android:minResizeWidth="180dp"
android:minResizeHeight="110dp"
android:targetCellWidth="4"
android:targetCellHeight="2"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_invitationswidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/invitationswidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="110dp"
android:minHeight="110dp"
android:minResizeWidth="110dp"
android:minResizeHeight="110dp"
android:targetCellWidth="2"
android:targetCellHeight="2"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_lastdraftwidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/lastdraftwidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="110dp"
android:minHeight="110dp"
android:minResizeWidth="110dp"
android:minResizeHeight="110dp"
android:targetCellWidth="2"
android:targetCellHeight="2"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_latestmessagewidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/latestmessagewidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="250dp"
android:minHeight="110dp"
android:minResizeWidth="180dp"
android:minResizeHeight="110dp"
android:targetCellWidth="4"
android:targetCellHeight="2"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_mailandnextwidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/mailandnextwidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="250dp"
android:minHeight="110dp"
android:minResizeWidth="180dp"
android:minResizeHeight="40dp"
android:targetCellWidth="4"
android:targetCellHeight="2"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_mailsearchwidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/mailsearchwidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="110dp"
android:minHeight="110dp"
android:minResizeWidth="110dp"
android:minResizeHeight="110dp"
android:targetCellWidth="2"
android:targetCellHeight="2"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_mailshortcutswidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/mailshortcutswidget_preview"
android:updatePeriodMillis="0"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="250dp"
android:minHeight="250dp"
android:minResizeWidth="180dp"
android:minResizeHeight="180dp"
android:targetCellWidth="4"
android:targetCellHeight="4"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_monthwidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/monthwidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="110dp"
android:minHeight="110dp"
android:minResizeWidth="110dp"
android:minResizeHeight="110dp"
android:targetCellWidth="2"
android:targetCellHeight="2"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_nexteventwidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/nexteventwidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="250dp"
android:minHeight="110dp"
android:minResizeWidth="180dp"
android:minResizeHeight="110dp"
android:targetCellWidth="4"
android:targetCellHeight="2"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_outboxwidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/outboxwidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="250dp"
android:minHeight="110dp"
android:minResizeWidth="180dp"
android:minResizeHeight="110dp"
android:targetCellWidth="4"
android:targetCellHeight="2"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_recentfileswidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/recentfileswidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="250dp"
android:minHeight="110dp"
android:minResizeWidth="180dp"
android:minResizeHeight="110dp"
android:targetCellWidth="4"
android:targetCellHeight="2"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_starredwidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/starredwidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="110dp"
android:minHeight="110dp"
android:minResizeWidth="110dp"
android:minResizeHeight="110dp"
android:targetCellWidth="2"
android:targetCellHeight="2"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_storagewidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/storagewidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="110dp"
android:minHeight="110dp"
android:minResizeWidth="110dp"
android:minResizeHeight="110dp"
android:targetCellWidth="2"
android:targetCellHeight="2"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_tagwidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/tagwidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="110dp"
android:minHeight="110dp"
android:minResizeWidth="110dp"
android:minResizeHeight="110dp"
android:targetCellWidth="2"
android:targetCellHeight="2"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_taskprogresswidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/taskprogresswidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="250dp"
android:minHeight="250dp"
android:minResizeWidth="180dp"
android:minResizeHeight="110dp"
android:targetCellWidth="4"
android:targetCellHeight="4"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_taskswidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/taskswidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="250dp"
android:minHeight="110dp"
android:minResizeWidth="180dp"
android:minResizeHeight="110dp"
android:targetCellWidth="4"
android:targetCellHeight="2"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_todayeventswidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/todayeventswidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="250dp"
android:minHeight="250dp"
android:minResizeWidth="180dp"
android:minResizeHeight="180dp"
android:targetCellWidth="4"
android:targetCellHeight="4"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_todayhubwidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/todayhubwidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="250dp"
android:minHeight="110dp"
android:minResizeWidth="180dp"
android:minResizeHeight="110dp"
android:targetCellWidth="4"
android:targetCellHeight="2"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_triagewidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/triagewidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="110dp"
android:minHeight="110dp"
android:minResizeWidth="110dp"
android:minResizeHeight="110dp"
android:targetCellWidth="2"
android:targetCellHeight="2"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_unreadcountwidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/unreadcountwidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="250dp"
android:minHeight="110dp"
android:minResizeWidth="180dp"
android:minResizeHeight="110dp"
android:targetCellWidth="4"
android:targetCellHeight="2"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_upnextwidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/upnextwidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="110dp"
android:minHeight="110dp"
android:minResizeWidth="110dp"
android:minResizeHeight="110dp"
android:targetCellWidth="2"
android:targetCellHeight="2"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_vacationwidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/vacationwidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generated by scripts/sync-android-widgets.mjs from src/widgets/catalog.json. -->
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="250dp"
android:minHeight="110dp"
android:minResizeWidth="250dp"
android:minResizeHeight="110dp"
android:targetCellWidth="4"
android:targetCellHeight="2"
android:resizeMode="horizontal|vertical"
android:description="@string/widgetprovider_weekwidget_description"
android:initialLayout="@layout/rn_widget"
android:previewImage="@drawable/weekwidget_preview"
android:updatePeriodMillis="1800000"
android:widgetCategory="home_screen">
</appwidget-provider>
+4 -2
View File
@@ -26,8 +26,10 @@ module.exports = {
expo: {
name: 'Bulwark Mobile',
slug: 'bulwark-mobile',
// mailto: lets Android/iOS offer the app for mail links in other apps.
scheme: ['bulwarkmobile', 'mailto'],
// mailto: lets Android/iOS offer the app for mail links in other apps;
// bulwarkmail: is the webmail's sign-in link (bulwarkmail://pair?...).
// Android's manifest is maintained by hand and lists the same schemes.
scheme: ['bulwarkmobile', 'bulwarkmail', 'mailto'],
version: VERSION,
orientation: 'portrait',
icon: './assets/icon.png',
+11 -2
View File
@@ -1,13 +1,22 @@
import { createElement } from 'react';
import { AppRegistry } from 'react-native';
import { registerRootComponent } from 'expo';
import { registerWidgetTaskHandler } from 'react-native-android-widget';
import { pushBackgroundTask } from './src/lib/push-background-task';
import { widgetTaskHandler } from './src/widgets/task-handler';
import { refreshWidgetsInBackground } from './src/widgets/sync';
// Runs in a fresh headless JS runtime when BulwarkPushTaskService is started
// from BulwarkMessagingService on an FCM data message. Must be registered
// before the native service tries to invoke the task.
AppRegistry.registerHeadlessTask('BulwarkPushTask', () => pushBackgroundTask);
// before the native service tries to invoke the task. New mail also refreshes
// any home-screen widgets (a no-op when none are placed).
AppRegistry.registerHeadlessTask('BulwarkPushTask', () => async (data: Parameters<typeof pushBackgroundTask>[0]) => {
await Promise.allSettled([pushBackgroundTask(data), refreshWidgetsInBackground()]);
});
// Home-screen widgets (Android): every widget event runs this headless task.
registerWidgetTaskHandler(widgetTaskHandler);
// A headless push task evaluates this file too, so App is required when the
// UI first renders instead of imported above: importing it here would load
+32 -1
View File
@@ -460,12 +460,19 @@
"email_step_title": "ما عنوان بريدك الإلكتروني؟",
"email_step_title_add": "ما العنوان الآخر؟",
"email_title": "استخدام عنوان بريدي الإلكتروني",
"err_account_limit_detail": "أزِل حسابًا من الإعدادات لإضافة حساب آخر.",
"err_bad_detail": "تحقق من بريدك الإلكتروني وكلمة المرور. إذا كان حسابك يستخدم تسجيل الدخول بخطوتين، فأنشئ كلمة مرور تطبيق في بريد الويب واستخدمها هنا.",
"err_bad_title": "لم ينجح ذلك",
"err_cert_detail": "تم رفض شهادة الأمان الخاصة بالخادم. إذا كان هذا خادمك الخاص، فتحقق من أن الشهادة صالحة وغير منتهية الصلاحية.",
"err_cert_title": "تعذّر التحقق من {host}",
"err_code_expired_detail": "رموز تسجيل الدخول صالحة لبضع دقائق فقط. أنشئ رمزًا جديدًا في بريد الويب وامسحه مجددًا.",
"err_code_expired_detail": "رموز تسجيل الدخول صالحة لمدة دقيقتين. اعرض رمزًا جديدًا في بريد الويب وامسحه مجددًا.",
"err_code_expired_or_used_detail": "اعرض رمزًا جديدًا في بريد الويب وامسحه مجددًا.",
"err_code_expired_or_used_title": "انتهت صلاحية هذا الرمز أو تم استخدامه من قبل",
"err_code_expired_title": "انتهت صلاحية هذا الرمز",
"err_code_invalid_detail": "اعرض رمزًا جديدًا في بريد الويب (الإعدادات ← الأمان ← ربط تطبيق الجوال) وامسحه.",
"err_code_invalid_title": "هذا الرمز غير صالح",
"err_code_used_detail": "كل رمز يعمل مرة واحدة فقط. اعرض رمزًا جديدًا في بريد الويب وامسحه مجددًا.",
"err_code_used_title": "تم استخدام هذا الرمز من قبل",
"err_generic_detail": "حدث خطأ ما. حاول مرة أخرى.",
"err_generic_title": "فشل تسجيل الدخول",
"err_interrupted_detail": "لم تتطابق الاستجابة مع الطلب الذي بدأناه. حاول تسجيل الدخول مرة أخرى.",
@@ -474,6 +481,17 @@
"err_no_server_title": "لا يوجد خادم بريد على {host}",
"err_no_webmail_detail": "لا يحتوي هذا الخادم على بريد ويب Bulwark ولا على تسجيل دخول عبر OAuth. استخدم كلمة مرور (أو كلمة مرور تطبيق) بدلًا من ذلك.",
"err_no_webmail_title": "لا توجد صفحة تسجيل دخول على {host}",
"err_pair_connect_detail": "اعرض رمزًا جديدًا على حاسوبك وامسحه مجددًا.",
"err_pair_connect_title": "تم تسجيل الدخول، لكن تعذّر الاتصال بـ {host}",
"err_pair_insecure_detail": "يريد {host} استخدام اتصال غير مشفّر.",
"err_pair_network_detail": "تحقق من اتصالك ومن أن هاتفك يستطيع الوصول إلى بريد الويب، ثم حاول مرة أخرى.",
"err_pair_rate_detail": "انتظر دقيقة، ثم حاول مرة أخرى.",
"err_pair_server_detail": "حاول مرة أخرى باستخدام رمز جديد. إذا استمر الفشل، فاتصل بالمسؤول.",
"err_pair_server_title": "تعذّر على بريد الويب إكمال تسجيل الدخول",
"err_pair_unsupported_detail": "لا يدعم {host} رموز تسجيل الدخول. قد يحتاج إلى تحديث، أو أن الرابط يشير إلى عنوان خاطئ.",
"err_pair_unsupported_title": "لا يمكن لبريد الويب هذا ربط الأجهزة",
"err_pair_untrusted_detail": "أرسل {host} بيانات تسجيل دخول لخادم لا يستطيع التطبيق التحقق منه.",
"err_pair_untrusted_title": "لا يمكن الوثوق بعملية تسجيل الدخول هذه",
"err_rate_detail": "طلب منا الخادم الانتظار قليلًا. حاول مجددًا بعد قليل.",
"err_rate_detail_seconds": "طلب منا الخادم الانتظار. حاول مجددًا بعد نحو {seconds} ث.",
"err_rate_title": "محاولات كثيرة جدًا",
@@ -487,6 +505,12 @@
"know_server": "أعرف عنوان خادمي",
"known_server_desc": "نعرف هذا الخادم بالفعل، لذا لا حاجة إلى إعداد",
"known_server_title": "حساب آخر على {host}",
"link_confirm_connect": "يطلب رابط تسجيل الدخول في هذه الصفحة. لا تتابع إلا إذا كنت تستخدم {host} لبريدك.",
"link_confirm_connect_add": "يطلب رابط إضافة حساب بتسجيل الدخول في هذه الصفحة. لا تتابع إلا إذا كنت تستخدم {host} لبريدك.",
"link_confirm_connect_title": "فتح صفحة تسجيل الدخول في {host}؟",
"link_confirm_pair": "يسجّل هذا الرابط الدخول إلى حساب من {host}. لا تتابع إلا إذا كنت قد عرضت للتو رمز تسجيل دخول على حاسوبك.",
"link_confirm_pair_add": "يضيف هذا الرابط حسابًا من {host} وينقل التطبيق إليه. لا تتابع إلا إذا كنت قد عرضت للتو رمز تسجيل دخول على حاسوبك.",
"link_confirm_title": "تسجيل الدخول برابط؟",
"looking_up": "جارٍ البحث عن خادمك…",
"manual": "إدخال تفاصيل الخادم يدويًا",
"notice_bad_qr": "هذا الرمز ليس رمز تسجيل دخول Bulwark",
@@ -505,6 +529,12 @@
"pairing_detail": "جارٍ إقران هذا الجهاز مع {host}…",
"password_subtitle": "تُرسَل كلمة مرورك إلى هذا الخادم فقط، وتُخزَّن في سلسلة مفاتيح الجهاز.",
"password_title": "تسجيل الدخول إلى {host}",
"paste_button": "لصق",
"paste_clipboard_empty": "لا يوجد شيء للصق. انسخ الرابط في بريد الويب أولًا.",
"paste_hint": "في بريد الويب، افتح الإعدادات ← الأمان ← ربط تطبيق الجوال، وانسخ رابط تسجيل الدخول والصقه هنا.",
"paste_invalid": "هذا ليس رابط تسجيل دخول Bulwark",
"paste_label": "رابط تسجيل الدخول",
"paste_title": "لصق رابط تسجيل الدخول",
"provider_detail": "ستكتبها في صفحتهم. لا يخزّن Bulwark سوى رمز تسجيل دخول يمكنك إبطاله في أي وقت.",
"provider_title": "تبقى كلمة مرورك لدى مزوّد خدمتك",
"qr_hint": "يعرض قسم الإعدادات ← الأمان ← ربط تطبيق الجوال رمزًا. وجّه الكاميرا نحوه.",
@@ -515,6 +545,7 @@
"server_hint": "العنوان نفسه الذي تكتبه في المتصفح. سنضيف https:// نيابةً عنك.",
"server_label": "عنوان الخادم",
"server_not_found": "لم نتمكن من العثور على خادم للنطاق {domain}. إذا كنت تستضيف خادمك بنفسك، فالعنوان هو الذي تستخدمه لبريد الويب.",
"server_paste_hint": "هل لديك رابط تسجيل دخول بدلًا من ذلك؟ الصقه هنا.",
"server_scan_hint": "إذا لم تكن متأكدًا، فامسح رمز تسجيل الدخول بدلًا من ذلك، فهو يتضمن عنوان الخادم.",
"server_subtitle": "أدخل العنوان الذي تستخدمه للوصول إلى بريد الويب.",
"server_title": "ما عنوان خادمك؟",
+32 -1
View File
@@ -460,12 +460,19 @@
"email_step_title": "Quina és la vostra adreça electrònica?",
"email_step_title_add": "Quina és l'altra adreça?",
"email_title": "Utilitza la meva adreça electrònica",
"err_account_limit_detail": "Suprimiu un compte a la configuració per afegir-ne un altre.",
"err_bad_detail": "Comproveu el correu electrònic i la contrasenya. Si el vostre compte utilitza l'autenticació de dos factors, creeu una contrasenya d'aplicació al webmail i utilitzeu-la aquí.",
"err_bad_title": "No ha funcionat",
"err_cert_detail": "S'ha rebutjat el certificat de seguretat del servidor. Si és el vostre propi servidor, comproveu que el certificat sigui vàlid i no hagi caducat.",
"err_cert_title": "No s'ha pogut verificar {host}",
"err_code_expired_detail": "Els codis d'inici de sessió són vàlids durant uns minuts. Genereu-ne un de nou al webmail i torneu-lo a escanejar.",
"err_code_expired_detail": "Els codis d'inici de sessió són vàlids durant dos minuts. Mostreu-ne un de nou al webmail i torneu-lo a escanejar.",
"err_code_expired_or_used_detail": "Mostreu-ne un de nou al webmail i torneu-lo a escanejar.",
"err_code_expired_or_used_title": "Aquest codi ha caducat o ja s'ha utilitzat",
"err_code_expired_title": "Aquest codi ha caducat",
"err_code_invalid_detail": "Mostreu un codi nou al webmail (Configuració → Seguretat → Enllaça l'aplicació mòbil) i escanegeu-lo.",
"err_code_invalid_title": "Aquest codi no és vàlid",
"err_code_used_detail": "Cada codi només funciona una vegada. Mostreu-ne un de nou al webmail i torneu-lo a escanejar.",
"err_code_used_title": "Aquest codi ja s'ha utilitzat",
"err_generic_detail": "Alguna cosa ha anat malament. Torneu-ho a provar.",
"err_generic_title": "Ha fallat l'inici de sessió",
"err_interrupted_detail": "La resposta no coincideix amb la sol·licitud que vam iniciar. Torneu a iniciar la sessió.",
@@ -474,6 +481,17 @@
"err_no_server_title": "No hi ha cap servidor de correu a {host}",
"err_no_webmail_detail": "Aquest servidor no té webmail del Bulwark ni inici de sessió OAuth. Utilitzeu una contrasenya (o una contrasenya d'aplicació).",
"err_no_webmail_title": "No hi ha cap pàgina d'inici de sessió a {host}",
"err_pair_connect_detail": "Mostreu un codi nou a l'ordinador i torneu-lo a escanejar.",
"err_pair_connect_title": "Sessió iniciada, però no s'ha pogut connectar a {host}",
"err_pair_insecure_detail": "{host} vol utilitzar una connexió sense xifrar.",
"err_pair_network_detail": "Comproveu la connexió i que el telèfon pugui accedir al webmail, i torneu-ho a provar.",
"err_pair_rate_detail": "Espereu un minut i torneu-ho a provar.",
"err_pair_server_detail": "Torneu-ho a provar amb un codi nou. Si continua fallant, consulteu l'administrador.",
"err_pair_server_title": "El webmail no ha pogut completar l'inici de sessió",
"err_pair_unsupported_detail": "{host} no admet codis d'inici de sessió. Potser necessita una actualització, o l'enllaç apunta a una adreça incorrecta.",
"err_pair_unsupported_title": "Aquest webmail no pot enllaçar dispositius",
"err_pair_untrusted_detail": "{host} ha enviat dades d'inici de sessió per a un servidor que l'aplicació no pot verificar.",
"err_pair_untrusted_title": "No es pot confiar en aquest inici de sessió",
"err_rate_detail": "El servidor ens ha demanat que esperem un moment. Torneu-ho a provar d'aquí a poc.",
"err_rate_detail_seconds": "El servidor ens ha demanat que esperem. Torneu-ho a provar d'aquí a uns {seconds} segons.",
"err_rate_title": "Massa intents",
@@ -487,6 +505,12 @@
"know_server": "Conec l'adreça del meu servidor",
"known_server_desc": "Ja coneixem aquest servidor, així que no cal configurar res",
"known_server_title": "Un altre compte a {host}",
"link_confirm_connect": "Un enllaç demana iniciar la sessió en aquesta pàgina. Continueu només si utilitzeu {host} per al correu.",
"link_confirm_connect_add": "Un enllaç demana afegir un compte iniciant la sessió en aquesta pàgina. Continueu només si utilitzeu {host} per al correu.",
"link_confirm_connect_title": "Voleu obrir la pàgina d'inici de sessió de {host}?",
"link_confirm_pair": "Aquest enllaç inicia la sessió en un compte de {host}. Continueu només si acabeu de mostrar un codi d'inici de sessió a l'ordinador.",
"link_confirm_pair_add": "Aquest enllaç afegeix un compte de {host} i hi canvia l'aplicació. Continueu només si acabeu de mostrar un codi d'inici de sessió a l'ordinador.",
"link_confirm_title": "Voleu iniciar la sessió amb un enllaç?",
"looking_up": "S'està cercant el vostre servidor…",
"manual": "Introdueix les dades del servidor manualment",
"notice_bad_qr": "Aquest codi no és un codi d'inici de sessió del Bulwark",
@@ -505,6 +529,12 @@
"pairing_detail": "S'està aparellant aquest dispositiu amb {host}…",
"password_subtitle": "La contrasenya només s'envia a aquest servidor i es desa al magatzem segur del dispositiu.",
"password_title": "Inicia la sessió a {host}",
"paste_button": "Enganxa",
"paste_clipboard_empty": "No hi ha res per enganxar. Primer copieu l'enllaç al webmail.",
"paste_hint": "Al webmail, obriu Configuració → Seguretat → Enllaça l'aplicació mòbil, copieu l'enllaç d'inici de sessió i enganxeu-lo aquí.",
"paste_invalid": "Això no és un enllaç d'inici de sessió del Bulwark",
"paste_label": "Enllaç d'inici de sessió",
"paste_title": "Enganxa l'enllaç d'inici de sessió",
"provider_detail": "L'escriureu a la seva pàgina. El Bulwark només desa un testimoni d'inici de sessió, que podeu revocar en qualsevol moment.",
"provider_title": "La contrasenya es queda amb el vostre proveïdor",
"qr_hint": "Configuració → Seguretat → Enllaça l'aplicació mòbil mostra un codi. Apunteu-hi la càmera.",
@@ -515,6 +545,7 @@
"server_hint": "La mateixa adreça que escriviu al navegador. Hi afegirem https://.",
"server_label": "Adreça del servidor",
"server_not_found": "No hem trobat cap servidor per a {domain}. Si l'allotgeu vosaltres, l'adreça és la que utilitzeu per al webmail.",
"server_paste_hint": "Teniu un enllaç d'inici de sessió? Enganxeu-lo aquí.",
"server_scan_hint": "Si no n'esteu segur, escanegeu un codi d'inici de sessió. Inclou l'adreça del servidor.",
"server_subtitle": "Introduïu l'adreça que utilitzeu per accedir al webmail.",
"server_title": "Quina és l'adreça del vostre servidor?",
+32 -1
View File
@@ -460,12 +460,19 @@
"email_step_title": "Jaká je vaše e-mailová adresa?",
"email_step_title_add": "Jaká je ta druhá adresa?",
"email_title": "Použít moji e-mailovou adresu",
"err_account_limit_detail": "Chcete-li přidat další účet, odeberte některý v Nastavení.",
"err_bad_detail": "Zkontrolujte e-mail a heslo. Pokud váš účet používá dvoufázové přihlášení, vytvořte ve webmailu heslo aplikace a použijte ho zde.",
"err_bad_title": "To nevyšlo",
"err_cert_detail": "Bezpečnostní certifikát serveru byl odmítnut. Pokud jde o váš vlastní server, zkontrolujte, zda je certifikát platný a nevypršel.",
"err_cert_title": "{host} nelze ověřit",
"err_code_expired_detail": "Přihlašovací kódy platí několik minut. Vygenerujte ve webmailu nový a naskenujte ho znovu.",
"err_code_expired_detail": "Přihlašovací kódy platí dvě minuty. Zobrazte ve webmailu nový a naskenujte ho znovu.",
"err_code_expired_or_used_detail": "Zobrazte ve webmailu nový a naskenujte ho znovu.",
"err_code_expired_or_used_title": "Platnost kódu vypršela nebo už byl použit",
"err_code_expired_title": "Platnost kódu vypršela",
"err_code_invalid_detail": "Zobrazte ve webmailu nový kód (Nastavení → Zabezpečení → Propojit mobilní aplikaci) a naskenujte ho.",
"err_code_invalid_title": "Tento kód není platný",
"err_code_used_detail": "Každý kód funguje jen jednou. Zobrazte ve webmailu nový a naskenujte ho znovu.",
"err_code_used_title": "Tento kód už byl použit",
"err_generic_detail": "Něco se pokazilo. Zkuste to znovu.",
"err_generic_title": "Přihlášení selhalo",
"err_interrupted_detail": "Odpověď neodpovídala zahájenému požadavku. Zkuste se přihlásit znovu.",
@@ -474,6 +481,17 @@
"err_no_server_title": "Poštovní server nenalezen: {host}",
"err_no_webmail_detail": "Tento server nemá webmail Bulwark ani přihlášení přes OAuth. Použijte heslo (nebo heslo aplikace).",
"err_no_webmail_title": "Přihlašovací stránka nenalezena: {host}",
"err_pair_connect_detail": "Zobrazte na počítači nový kód a naskenujte ho znovu.",
"err_pair_connect_title": "Přihlášeno, ale nelze se připojit k {host}",
"err_pair_insecure_detail": "{host} chce použít nešifrované spojení.",
"err_pair_network_detail": "Zkontrolujte připojení a zda se telefon dostane k webmailu, a zkuste to znovu.",
"err_pair_rate_detail": "Počkejte minutu a zkuste to znovu.",
"err_pair_server_detail": "Zkuste to znovu s novým kódem. Pokud to stále selhává, obraťte se na správce.",
"err_pair_server_title": "Webmail nemohl dokončit přihlášení",
"err_pair_unsupported_detail": "{host} nepodporuje přihlašovací kódy. Možná potřebuje aktualizaci, nebo odkaz vede na špatnou adresu.",
"err_pair_unsupported_title": "Tento webmail neumí propojovat zařízení",
"err_pair_untrusted_detail": "{host} poslal přihlašovací údaje pro server, který aplikace nemůže ověřit.",
"err_pair_untrusted_title": "Tomuto přihlášení nelze důvěřovat",
"err_rate_detail": "Server nás požádal o chvíli strpení. Zkuste to brzy znovu.",
"err_rate_detail_seconds": "Server nás požádal o strpení. Zkuste to znovu přibližně za {seconds} s.",
"err_rate_title": "Příliš mnoho pokusů",
@@ -487,6 +505,12 @@
"know_server": "Znám adresu svého serveru",
"known_server_desc": "Tento server už známe, takže není třeba nic nastavovat",
"known_server_title": "Další účet na {host}",
"link_confirm_connect": "Odkaz žádá o přihlášení na této stránce. Pokračujte, jen pokud {host} používáte pro svůj e-mail.",
"link_confirm_connect_add": "Odkaz žádá o přidání účtu přihlášením na této stránce. Pokračujte, jen pokud {host} používáte pro svůj e-mail.",
"link_confirm_connect_title": "Otevřít přihlašovací stránku {host}?",
"link_confirm_pair": "Tento odkaz vás přihlásí k účtu z {host}. Pokračujte, jen pokud jste právě na počítači zobrazili přihlašovací kód.",
"link_confirm_pair_add": "Tento odkaz přidá účet z {host} a přepne na něj aplikaci. Pokračujte, jen pokud jste právě na počítači zobrazili přihlašovací kód.",
"link_confirm_title": "Přihlásit se pomocí odkazu?",
"looking_up": "Hledání vašeho serveru…",
"manual": "Zadat údaje serveru ručně",
"notice_bad_qr": "Toto není přihlašovací kód Bulwark",
@@ -505,6 +529,12 @@
"pairing_detail": "Párování tohoto zařízení: {host}…",
"password_subtitle": "Heslo se odešle pouze tomuto serveru a uloží se do úložiště klíčů v zařízení.",
"password_title": "Přihlásit se k {host}",
"paste_button": "Vložit",
"paste_clipboard_empty": "Není co vložit. Nejprve zkopírujte odkaz ve webmailu.",
"paste_hint": "Ve webmailu otevřete Nastavení → Zabezpečení → Propojit mobilní aplikaci, zkopírujte přihlašovací odkaz a vložte ho sem.",
"paste_invalid": "Toto není přihlašovací odkaz Bulwark",
"paste_label": "Přihlašovací odkaz",
"paste_title": "Vložit přihlašovací odkaz",
"provider_detail": "Zadáte ho na jeho stránce. Bulwark ukládá pouze přihlašovací token, který můžete kdykoli odvolat.",
"provider_title": "Vaše heslo zůstává u poskytovatele",
"qr_hint": "V Nastavení → Zabezpečení → Propojit mobilní aplikaci se zobrazí kód. Namiřte na něj fotoaparát.",
@@ -515,6 +545,7 @@
"server_hint": "Stejná adresa, jakou zadáváte v prohlížeči. https:// doplníme za vás.",
"server_label": "Adresa serveru",
"server_not_found": "Pro {domain} jsme nenašli žádný server. Pokud provozujete vlastní server, zadejte adresu, kterou používáte pro webmail.",
"server_paste_hint": "Máte místo toho přihlašovací odkaz? Vložte ho sem.",
"server_scan_hint": "Pokud si nejste jisti, naskenujte raději přihlašovací kód. Obsahuje adresu serveru.",
"server_subtitle": "Zadejte adresu, přes kterou otevíráte webmail.",
"server_title": "Jaká je adresa vašeho serveru?",
+32 -1
View File
@@ -460,12 +460,19 @@
"email_step_title": "Hvad er din e-mailadresse?",
"email_step_title_add": "Hvad er den anden adresse?",
"email_title": "Brug min e-mailadresse",
"err_account_limit_detail": "Fjern en konto i Indstillinger for at tilføje en ny.",
"err_bad_detail": "Tjek din e-mail og adgangskode. Hvis din konto bruger to-faktor-godkendelse, så opret en app-adgangskode i webmailen, og brug den her.",
"err_bad_title": "Det virkede ikke",
"err_cert_detail": "Serverens sikkerhedscertifikat blev afvist. Hvis det er din egen server, så tjek, at certifikatet er gyldigt og ikke udløbet.",
"err_cert_title": "Kunne ikke verificere {host}",
"err_code_expired_detail": "Loginkoder er kun gyldige i nogle få minutter. Generér en ny i webmailen, og scan igen.",
"err_code_expired_detail": "Loginkoder er gyldige i to minutter. Vis en ny i webmailen, og scan igen.",
"err_code_expired_or_used_detail": "Vis en ny i webmailen, og scan igen.",
"err_code_expired_or_used_title": "Den kode er udløbet eller allerede brugt",
"err_code_expired_title": "Koden er udløbet",
"err_code_invalid_detail": "Vis en ny kode i webmailen (Indstillinger → Sikkerhed → Tilknyt mobilapp), og scan den.",
"err_code_invalid_title": "Den kode er ikke gyldig",
"err_code_used_detail": "Hver kode virker kun én gang. Vis en ny i webmailen, og scan igen.",
"err_code_used_title": "Den kode er allerede brugt",
"err_generic_detail": "Noget gik galt. Prøv igen.",
"err_generic_title": "Login mislykkedes",
"err_interrupted_detail": "Svaret matchede ikke den anmodning, vi startede. Prøv at logge ind igen.",
@@ -474,6 +481,17 @@
"err_no_server_title": "Ingen mailserver på {host}",
"err_no_webmail_detail": "Denne server har hverken Bulwark-webmail eller OAuth-login. Brug i stedet en adgangskode (eller en app-adgangskode).",
"err_no_webmail_title": "Ingen login-side på {host}",
"err_pair_connect_detail": "Vis en ny kode på din computer, og scan igen.",
"err_pair_connect_title": "Logget ind, men kunne ikke oprette forbindelse til {host}",
"err_pair_insecure_detail": "{host} vil bruge en ukrypteret forbindelse.",
"err_pair_network_detail": "Tjek din forbindelse, og at din telefon kan nå webmailen, og prøv så igen.",
"err_pair_rate_detail": "Vent et minut, og prøv så igen.",
"err_pair_server_detail": "Prøv igen med en ny kode. Hvis det bliver ved med at mislykkes, så kontakt din administrator.",
"err_pair_server_title": "Webmailen kunne ikke gennemføre login",
"err_pair_unsupported_detail": "{host} understøtter ikke loginkoder. Den skal måske opdateres, eller linket peger på den forkerte adresse.",
"err_pair_unsupported_title": "Denne webmail kan ikke tilknytte enheder",
"err_pair_untrusted_detail": "{host} sendte loginoplysninger til en server, som appen ikke kan bekræfte.",
"err_pair_untrusted_title": "Dette login kan ikke betros",
"err_rate_detail": "Serveren bad os vente et øjeblik. Prøv igen om lidt.",
"err_rate_detail_seconds": "Serveren bad os vente. Prøv igen om cirka {seconds} sekunder.",
"err_rate_title": "For mange forsøg",
@@ -487,6 +505,12 @@
"know_server": "Jeg kender min serveradresse",
"known_server_desc": "Vi kender allerede denne server, så der skal ikke konfigureres noget",
"known_server_title": "En anden konto på {host}",
"link_confirm_connect": "Et link beder om at logge ind på denne side. Fortsæt kun, hvis du bruger {host} til din mail.",
"link_confirm_connect_add": "Et link beder om at tilføje en konto ved at logge ind på denne side. Fortsæt kun, hvis du bruger {host} til din mail.",
"link_confirm_connect_title": "Åbn login-siden for {host}?",
"link_confirm_pair": "Dette link logger ind på en konto fra {host}. Fortsæt kun, hvis du lige har vist en loginkode på din computer.",
"link_confirm_pair_add": "Dette link tilføjer en konto fra {host} og skifter appen til den. Fortsæt kun, hvis du lige har vist en loginkode på din computer.",
"link_confirm_title": "Log ind med et link?",
"looking_up": "Slår din server op…",
"manual": "Indtast serveroplysninger manuelt",
"notice_bad_qr": "Den kode er ikke en Bulwark-loginkode",
@@ -505,6 +529,12 @@
"pairing_detail": "Parrer denne enhed med {host}…",
"password_subtitle": "Din adgangskode sendes kun til denne server og gemmes i enhedens nøglering.",
"password_title": "Log ind på {host}",
"paste_button": "Indsæt",
"paste_clipboard_empty": "Der er intet at indsætte. Kopiér først linket i webmailen.",
"paste_hint": "Åbn Indstillinger → Sikkerhed → Tilknyt mobilapp i webmailen, kopiér loginlinket, og indsæt det her.",
"paste_invalid": "Det er ikke et Bulwark-loginlink",
"paste_label": "Loginlink",
"paste_title": "Indsæt loginlink",
"provider_detail": "Du indtaster den på deres side. Bulwark gemmer kun et login-token, som du til enhver tid kan tilbagekalde.",
"provider_title": "Din adgangskode bliver hos din udbyder",
"qr_hint": "Indstillinger → Sikkerhed → Tilknyt mobilapp viser en kode. Ret kameraet mod den.",
@@ -515,6 +545,7 @@
"server_hint": "Samme adresse, som du skriver i browseren. Vi tilføjer https:// for dig.",
"server_label": "Serveradresse",
"server_not_found": "Vi kunne ikke finde en server for {domain}. Hvis du selv hoster, er det den adresse, du bruger til webmail.",
"server_paste_hint": "Har du i stedet et loginlink? Indsæt det her.",
"server_scan_hint": "Hvis du er i tvivl, så scan i stedet en loginkode. Den indeholder serveradressen.",
"server_subtitle": "Indtast den adresse, du bruger til at nå din webmail.",
"server_title": "Hvad er din serveradresse?",
+32 -1
View File
@@ -460,12 +460,19 @@
"email_step_title": "Wie lautet Ihre E-Mail-Adresse?",
"email_step_title_add": "Wie lautet die andere Adresse?",
"email_title": "Meine E-Mail-Adresse verwenden",
"err_account_limit_detail": "Entfernen Sie in den Einstellungen ein Konto, um ein weiteres hinzuzufügen.",
"err_bad_detail": "Prüfen Sie E-Mail-Adresse und Passwort. Wenn Ihr Konto die Zwei-Faktor-Anmeldung nutzt, erstellen Sie im Webmail ein App-Passwort und verwenden Sie es hier.",
"err_bad_title": "Das hat nicht funktioniert",
"err_cert_detail": "Das Sicherheitszertifikat des Servers wurde abgelehnt. Wenn dies Ihr eigener Server ist, prüfen Sie, ob das Zertifikat gültig und nicht abgelaufen ist.",
"err_cert_title": "Überprüfung von {host} fehlgeschlagen",
"err_code_expired_detail": "Anmeldecodes sind nur wenige Minuten gültig. Erzeugen Sie im Webmail einen neuen und scannen Sie erneut.",
"err_code_expired_detail": "Anmeldecodes sind zwei Minuten gültig. Zeigen Sie im Webmail einen neuen an und scannen Sie erneut.",
"err_code_expired_or_used_detail": "Zeigen Sie im Webmail einen neuen an und scannen Sie erneut.",
"err_code_expired_or_used_title": "Dieser Code ist abgelaufen oder wurde bereits verwendet",
"err_code_expired_title": "Dieser Code ist abgelaufen",
"err_code_invalid_detail": "Zeigen Sie im Webmail einen neuen Code an (Einstellungen → Sicherheit → Mobile App verknüpfen) und scannen Sie ihn.",
"err_code_invalid_title": "Dieser Code ist ungültig",
"err_code_used_detail": "Jeder Code funktioniert nur einmal. Zeigen Sie im Webmail einen neuen an und scannen Sie erneut.",
"err_code_used_title": "Dieser Code wurde bereits verwendet",
"err_generic_detail": "Etwas ist schiefgelaufen. Versuchen Sie es erneut.",
"err_generic_title": "Anmeldung fehlgeschlagen",
"err_interrupted_detail": "Die Antwort passte nicht zur gestarteten Anfrage. Melden Sie sich erneut an.",
@@ -474,6 +481,17 @@
"err_no_server_title": "Kein Mailserver bei {host}",
"err_no_webmail_detail": "Dieser Server hat weder ein Bulwark-Webmail noch eine OAuth-Anmeldung. Verwenden Sie stattdessen ein Passwort (oder ein App-Passwort).",
"err_no_webmail_title": "Keine Anmeldeseite bei {host}",
"err_pair_connect_detail": "Zeigen Sie auf Ihrem Computer einen neuen Code an und scannen Sie erneut.",
"err_pair_connect_title": "Angemeldet, aber keine Verbindung zu {host}",
"err_pair_insecure_detail": "{host} möchte eine unverschlüsselte Verbindung verwenden.",
"err_pair_network_detail": "Prüfen Sie Ihre Verbindung und ob Ihr Telefon das Webmail erreichen kann, und versuchen Sie es dann erneut.",
"err_pair_rate_detail": "Warten Sie eine Minute und versuchen Sie es dann erneut.",
"err_pair_server_detail": "Versuchen Sie es mit einem neuen Code erneut. Wenn es weiterhin fehlschlägt, wenden Sie sich an Ihren Administrator.",
"err_pair_server_title": "Das Webmail konnte die Anmeldung nicht abschließen",
"err_pair_unsupported_detail": "{host} unterstützt keine Anmeldecodes. Eventuell ist ein Update nötig, oder der Link verweist auf die falsche Adresse.",
"err_pair_unsupported_title": "Dieses Webmail kann keine Geräte verknüpfen",
"err_pair_untrusted_detail": "{host} hat Anmeldedaten für einen Server gesendet, den die App nicht überprüfen kann.",
"err_pair_untrusted_title": "Dieser Anmeldung kann nicht vertraut werden",
"err_rate_detail": "Der Server hat uns gebeten, kurz zu warten. Versuchen Sie es gleich noch einmal.",
"err_rate_detail_seconds": "Der Server hat uns gebeten zu warten. Versuchen Sie es in etwa {seconds} Sekunden erneut.",
"err_rate_title": "Zu viele Versuche",
@@ -487,6 +505,12 @@
"know_server": "Ich kenne meine Serveradresse",
"known_server_desc": "Diesen Server kennen wir bereits, daher ist keine Einrichtung nötig",
"known_server_title": "Weiteres Konto auf {host}",
"link_confirm_connect": "Ein Link möchte Sie auf dieser Seite anmelden. Fahren Sie nur fort, wenn Sie {host} für Ihre E-Mails verwenden.",
"link_confirm_connect_add": "Ein Link möchte über die Anmeldung auf dieser Seite ein Konto hinzufügen. Fahren Sie nur fort, wenn Sie {host} für Ihre E-Mails verwenden.",
"link_confirm_connect_title": "Anmeldeseite von {host} öffnen?",
"link_confirm_pair": "Dieser Link meldet Sie bei einem Konto von {host} an. Fahren Sie nur fort, wenn Sie gerade auf Ihrem Computer einen Anmeldecode angezeigt haben.",
"link_confirm_pair_add": "Dieser Link fügt ein Konto von {host} hinzu und wechselt die App zu diesem Konto. Fahren Sie nur fort, wenn Sie gerade auf Ihrem Computer einen Anmeldecode angezeigt haben.",
"link_confirm_title": "Mit einem Link anmelden?",
"looking_up": "Ihr Server wird gesucht…",
"manual": "Serverdaten manuell eingeben",
"notice_bad_qr": "Das ist kein Bulwark-Anmeldecode",
@@ -505,6 +529,12 @@
"pairing_detail": "Dieses Gerät wird mit {host} gekoppelt…",
"password_subtitle": "Ihr Passwort wird nur an diesen Server gesendet und im Schlüsselbund des Geräts gespeichert.",
"password_title": "Bei {host} anmelden",
"paste_button": "Einfügen",
"paste_clipboard_empty": "Nichts zum Einfügen. Kopieren Sie zuerst den Link im Webmail.",
"paste_hint": "Öffnen Sie im Webmail Einstellungen → Sicherheit → Mobile App verknüpfen, kopieren Sie den Anmeldelink und fügen Sie ihn hier ein.",
"paste_invalid": "Das ist kein Bulwark-Anmeldelink",
"paste_label": "Anmeldelink",
"paste_title": "Anmeldelink einfügen",
"provider_detail": "Sie geben es auf dessen Seite ein. Bulwark speichert nur ein Anmeldetoken, das Sie jederzeit widerrufen können.",
"provider_title": "Ihr Passwort bleibt bei Ihrem Anbieter",
"qr_hint": "Einstellungen → Sicherheit → Mobile App verknüpfen zeigt einen Code an. Richten Sie die Kamera darauf.",
@@ -515,6 +545,7 @@
"server_hint": "Dieselbe Adresse, die Sie im Browser eingeben. https:// ergänzen wir für Sie.",
"server_label": "Serveradresse",
"server_not_found": "Für {domain} wurde kein Server gefunden. Wenn Sie selbst hosten, ist es die Adresse, die Sie für das Webmail verwenden.",
"server_paste_hint": "Haben Sie stattdessen einen Anmeldelink? Fügen Sie ihn hier ein.",
"server_scan_hint": "Wenn Sie unsicher sind, scannen Sie stattdessen einen Anmeldecode. Er enthält die Serveradresse.",
"server_subtitle": "Geben Sie die Adresse ein, unter der Sie Ihr Webmail erreichen.",
"server_title": "Wie lautet Ihre Serveradresse?",
+218 -1
View File
@@ -249,6 +249,9 @@
"color_tag": "Tag",
"remove_color": "Remove tag"
},
"deep_link": {
"open_failed": "Couldn't open this"
},
"email_composer": {
"attach_camera": "Camera",
"attachment_reminder_body": "Your message mentions \"{keyword}\" but no file is attached. Send anyway?",
@@ -467,12 +470,19 @@
"email_step_title": "What's your email address?",
"email_step_title_add": "What's the other address?",
"email_title": "Use my email address",
"err_account_limit_detail": "Remove an account in Settings to add another one.",
"err_bad_detail": "Check your email and password. If your account uses two-factor sign-in, create an app password in the webmail and use that here.",
"err_bad_title": "That didn't work",
"err_cert_detail": "The server's security certificate was rejected. If this is your own server, check the certificate is valid and not expired.",
"err_cert_title": "Couldn't verify {host}",
"err_code_expired_detail": "Sign-in codes are good for a few minutes. Generate a fresh one in the webmail and scan again.",
"err_code_expired_detail": "Sign-in codes are good for two minutes. Show a new one in the webmail and scan again.",
"err_code_expired_or_used_detail": "Show a new one in the webmail and scan again.",
"err_code_expired_or_used_title": "That code has expired or was already used",
"err_code_expired_title": "That code has expired",
"err_code_invalid_detail": "Show a new code in the webmail (Settings → Security → Link Mobile App) and scan it.",
"err_code_invalid_title": "That code isn't valid",
"err_code_used_detail": "Each code works once. Show a new one in the webmail and scan again.",
"err_code_used_title": "That code was already used",
"err_generic_detail": "Something went wrong. Try again.",
"err_generic_title": "Sign-in failed",
"err_interrupted_detail": "The response didn't match the request we started. Try signing in again.",
@@ -481,6 +491,17 @@
"err_no_server_title": "No mail server at {host}",
"err_no_webmail_detail": "This server has no Bulwark webmail and no OAuth sign-in. Use a password (or an app password) instead.",
"err_no_webmail_title": "No sign-in page at {host}",
"err_pair_connect_detail": "Show a new code on your computer and scan again.",
"err_pair_connect_title": "Signed in, but couldn't connect to {host}",
"err_pair_insecure_detail": "{host} wants to use an unencrypted connection.",
"err_pair_network_detail": "Check your connection and that your phone can reach the webmail, then try again.",
"err_pair_rate_detail": "Wait a minute, then try again.",
"err_pair_server_detail": "Try again with a new code. If it keeps failing, ask your administrator.",
"err_pair_server_title": "The webmail couldn't complete the sign-in",
"err_pair_unsupported_detail": "{host} doesn't support sign-in codes. It may need an update, or the link points to the wrong address.",
"err_pair_unsupported_title": "This webmail can't link devices",
"err_pair_untrusted_detail": "{host} sent sign-in details for a server the app can't verify.",
"err_pair_untrusted_title": "This sign-in can't be trusted",
"err_rate_detail": "The server asked us to wait a moment. Try again shortly.",
"err_rate_detail_seconds": "The server asked us to wait. Try again in about {seconds} seconds.",
"err_rate_title": "Too many attempts",
@@ -494,6 +515,12 @@
"know_server": "I know my server address",
"known_server_desc": "We already know this server, so there's no setup",
"known_server_title": "Another account on {host}",
"link_confirm_connect": "A link asks to sign in on this page. Only continue if you use {host} for your mail.",
"link_confirm_connect_add": "A link asks to add an account by signing in on this page. Only continue if you use {host} for your mail.",
"link_confirm_connect_title": "Open the sign-in page of {host}?",
"link_confirm_pair": "This link signs in to an account from {host}. Only continue if you just showed a sign-in code on your computer.",
"link_confirm_pair_add": "This link adds an account from {host} and switches the app to it. Only continue if you just showed a sign-in code on your computer.",
"link_confirm_title": "Sign in with a link?",
"looking_up": "Looking up your server…",
"manual": "Enter server details manually",
"notice_bad_qr": "That code isn't a Bulwark sign-in code",
@@ -512,6 +539,12 @@
"pairing_detail": "Pairing this device with {host}…",
"password_subtitle": "Your password is sent to this server only, and stored in the device keychain.",
"password_title": "Sign in to {host}",
"paste_button": "Paste",
"paste_clipboard_empty": "Nothing to paste. Copy the link in the webmail first.",
"paste_hint": "In the webmail, open Settings → Security → Link Mobile App, copy the sign-in link and paste it here.",
"paste_invalid": "That isn't a Bulwark sign-in link",
"paste_label": "Sign-in link",
"paste_title": "Paste sign-in link",
"provider_detail": "You'll type it on their page. Bulwark only stores a sign-in token, which you can revoke at any time.",
"provider_title": "Your password stays with your provider",
"qr_hint": "Settings → Security → Link Mobile App shows a code. Point the camera at it.",
@@ -522,6 +555,7 @@
"server_hint": "Same address you type in the browser. We'll add https:// for you.",
"server_label": "Server address",
"server_not_found": "We couldn't find a server for {domain}. If you self-host, the address is the one you use for webmail.",
"server_paste_hint": "Have a sign-in link instead? Paste it here.",
"server_scan_hint": "If you're not sure, scan a sign-in code instead. It carries the server address.",
"server_subtitle": "Enter the address you use to reach your webmail.",
"server_title": "What's your server address?",
@@ -1038,5 +1072,188 @@
"severity_deprecated": "Required",
"severity_security": "Security",
"title": "App updates"
},
"widgets": {
"attachments": {
"empty": "No recent attachments",
"from_mail": "from mail",
"title": "Attachments",
"unknown_sender": "Unknown sender"
},
"birthdays": {
"empty": "No birthdays coming up",
"empty_body": "Birthdays come from your contacts.",
"in_days": "{count, plural, one {in # day} other {in # days}}",
"send_wishes": "Send wishes",
"title": "Birthdays",
"wishes_subject": "Happy birthday!"
},
"calendar": {
"agenda": "Agenda",
"agenda_more": "{day}: {events}",
"all_day": "All day",
"join": "Join",
"join_named": "Join {name}",
"more_this_week": "{count, plural, one {# more this week} other {# more this week}}",
"no_more_today": "No more events today",
"nothing_planned": "Nothing on the calendar",
"now": "Now",
"open": "Open",
"running_late": "Running late",
"running_late_body": "I'm running a few minutes late for {title}.",
"running_late_subject": "Running late: {title}",
"today": "Today",
"tomorrow": "Tomorrow",
"unit_days": "{count, plural, one {day} other {days}}",
"unit_hours": "{count, plural, one {hour} other {hours}}",
"unit_minutes": "{count, plural, one {min} other {min}}",
"unsupported": "Calendar isn't available on this server",
"untitled": "(no title)",
"video_call": "Video call"
},
"countdown": {
"days": "{count, plural, one {day} other {days}}",
"empty": "No upcoming events"
},
"draft": {
"edited_at": "Edited {when}",
"edited_minutes": "{count, plural, one {Edited # min ago} other {Edited # min ago}}",
"edited_now": "Edited just now",
"empty": "No drafts",
"empty_body": "Messages you start and do not send wait here.",
"keep_writing": "Keep writing",
"title": "Drafts"
},
"files": {
"empty": "No files yet",
"recent": "Recently changed",
"unsupported": "Files aren't available on this server"
},
"free": {
"busy_until": "Busy until {time}",
"free_rest": "Free for the rest of the day",
"free_until": "Free until {time}",
"mail": "Mail my free times",
"mail_subject": "My free times this week",
"no_calendar": "No calendar on this account",
"then": "then {title}",
"then_free": "then free"
},
"hub": {
"all_clear": "You're all caught up",
"mail_unread": "Mail · {count} unread",
"next": "Next",
"next_on": "Next · {day}",
"no_events": "No upcoming events",
"now": "Now",
"tasks_due": "Tasks · {count} due"
},
"invites": {
"accept": "Accept",
"decline": "Decline",
"empty": "No invitations waiting",
"label": "Invitation · {name}",
"label_plain": "Invitation",
"maybe": "Maybe",
"position": "{index} of {count}"
},
"mail": {
"all_accounts": "All accounts",
"all_caught_up": "All caught up",
"archive": "Archive",
"delete": "Delete",
"empty_all_accounts": "Your inboxes are empty",
"empty_inbox": "Your inbox is empty",
"folders": "Folders",
"in_outbox": "{count, plural, one {# change waiting} other {# changes waiting}}",
"in_outbox_short": "{count} waiting",
"inbox": "Inbox",
"more_unread": "+{count} more unread",
"no_starred": "No starred mail",
"no_starred_body": "Star a message to keep it here.",
"no_subject": "(no subject)",
"no_unread": "No unread messages in your inbox.",
"position": "{index} of {count}",
"reply": "Reply",
"scheduled": "Scheduled",
"starred": "Starred",
"unread": "unread"
},
"people": {
"empty": "No favourites yet",
"empty_body": "The people you hear from most show up here.",
"favourites": "Favourites"
},
"relative": {
"days": "{count, plural, one {in # day} other {in # days}}",
"hours": "in {count} h",
"minutes": "in {count} min",
"now": "now"
},
"scheduled": {
"day_at": "{day}, {time}",
"empty": "Nothing scheduled",
"empty_body": "Messages you schedule to send later show up here.",
"no_recipient": "(no recipient)",
"sending": "Sending now",
"to": "To: {name}",
"today_at": "Today, {time}",
"tomorrow_at": "Tomorrow, {time}",
"waiting": "Waiting for network",
"waiting_body": "Changes you made offline go out when you are back online."
},
"search": {
"no_recent": "Your recent searches show up here.",
"placeholder": "Search mail…",
"recent": "Recent searches"
},
"shortcuts": {
"calendar": "Calendar",
"compose": "Compose",
"contacts": "Contacts",
"files": "Files"
},
"state": {
"error": "Couldn't show this widget",
"loading": "Loading…",
"open_app": "Open the app once if this stays empty.",
"open_to_load": "Open Bulwark to load this",
"signed_out": "Sign in to Bulwark"
},
"storage": {
"no_limit": "No storage limit",
"title": "Storage",
"unavailable": "No quota information",
"used_of": "{used} of {total}"
},
"tag": {
"empty": "No tags yet",
"empty_body": "Tags you add in the app show up here.",
"messages": "{count, plural, one {message} other {messages}}",
"total": "{count, plural, one {# message} other {# messages}}"
},
"tasks": {
"all_done": "All done",
"empty": "No open tasks",
"mark_complete": "Mark as done",
"mark_incomplete": "Mark as not done",
"no_title": "(no title)",
"off": "Tasks are off",
"off_body": "Turn on tasks in the app's calendar settings",
"open_count": "{count} open",
"overdue": "Overdue",
"still_open": "{count} still open",
"title": "Tasks",
"today": "Today",
"tomorrow": "Tomorrow"
},
"vacation": {
"active": "Active",
"inactive": "Inactive",
"subject": "Subject: {subject}",
"title": "Vacation Responder",
"unsupported": "Vacation replies aren't available",
"until": "Until {date}"
}
}
}
+32 -1
View File
@@ -460,12 +460,19 @@
"email_step_title": "¿Cuál es tu dirección de correo?",
"email_step_title_add": "¿Cuál es la otra dirección?",
"email_title": "Usar mi dirección de correo",
"err_account_limit_detail": "Elimina una cuenta en Ajustes para añadir otra.",
"err_bad_detail": "Comprueba tu correo y tu contraseña. Si tu cuenta usa autenticación de dos factores, crea una contraseña de aplicación en el webmail y úsala aquí.",
"err_bad_title": "No ha funcionado",
"err_cert_detail": "Se rechazó el certificado de seguridad del servidor. Si es tu propio servidor, comprueba que el certificado sea válido y no haya caducado.",
"err_cert_title": "No se pudo verificar {host}",
"err_code_expired_detail": "Los códigos de inicio de sesión son válidos durante unos minutos. Genera uno nuevo en el webmail y vuelve a escanearlo.",
"err_code_expired_detail": "Los códigos de inicio de sesión son válidos durante dos minutos. Muestra uno nuevo en el webmail y vuelve a escanearlo.",
"err_code_expired_or_used_detail": "Muestra uno nuevo en el webmail y vuelve a escanearlo.",
"err_code_expired_or_used_title": "Ese código ha caducado o ya se ha usado",
"err_code_expired_title": "Ese código ha caducado",
"err_code_invalid_detail": "Muestra un código nuevo en el webmail (Configuración → Seguridad → Vincular aplicación móvil) y escanéalo.",
"err_code_invalid_title": "Ese código no es válido",
"err_code_used_detail": "Cada código funciona una sola vez. Muestra uno nuevo en el webmail y vuelve a escanearlo.",
"err_code_used_title": "Ese código ya se ha usado",
"err_generic_detail": "Algo salió mal. Inténtalo de nuevo.",
"err_generic_title": "Error al iniciar sesión",
"err_interrupted_detail": "La respuesta no coincide con la solicitud que iniciamos. Vuelve a iniciar sesión.",
@@ -474,6 +481,17 @@
"err_no_server_title": "No hay ningún servidor de correo en {host}",
"err_no_webmail_detail": "Este servidor no tiene webmail de Bulwark ni inicio de sesión OAuth. Usa una contraseña (o una contraseña de aplicación).",
"err_no_webmail_title": "No hay página de inicio de sesión en {host}",
"err_pair_connect_detail": "Muestra un código nuevo en tu ordenador y vuelve a escanearlo.",
"err_pair_connect_title": "Sesión iniciada, pero no se pudo conectar con {host}",
"err_pair_insecure_detail": "{host} quiere usar una conexión sin cifrar.",
"err_pair_network_detail": "Comprueba tu conexión y que tu teléfono pueda acceder al webmail, y vuelve a intentarlo.",
"err_pair_rate_detail": "Espera un minuto y vuelve a intentarlo.",
"err_pair_server_detail": "Vuelve a intentarlo con un código nuevo. Si sigue fallando, consulta a tu administrador.",
"err_pair_server_title": "El webmail no ha podido completar el inicio de sesión",
"err_pair_unsupported_detail": "{host} no admite códigos de inicio de sesión. Puede que necesite una actualización o que el enlace apunte a una dirección incorrecta.",
"err_pair_unsupported_title": "Este webmail no puede vincular dispositivos",
"err_pair_untrusted_detail": "{host} ha enviado datos de inicio de sesión para un servidor que la aplicación no puede verificar.",
"err_pair_untrusted_title": "No se puede confiar en este inicio de sesión",
"err_rate_detail": "El servidor nos pidió esperar un momento. Inténtalo de nuevo en breve.",
"err_rate_detail_seconds": "El servidor nos pidió esperar. Inténtalo de nuevo en unos {seconds} segundos.",
"err_rate_title": "Demasiados intentos",
@@ -487,6 +505,12 @@
"know_server": "Conozco la dirección de mi servidor",
"known_server_desc": "Ya conocemos este servidor, así que no hay nada que configurar",
"known_server_title": "Otra cuenta en {host}",
"link_confirm_connect": "Un enlace pide iniciar sesión en esta página. Continúa solo si usas {host} para tu correo.",
"link_confirm_connect_add": "Un enlace pide añadir una cuenta iniciando sesión en esta página. Continúa solo si usas {host} para tu correo.",
"link_confirm_connect_title": "¿Abrir la página de inicio de sesión de {host}?",
"link_confirm_pair": "Este enlace inicia sesión en una cuenta de {host}. Continúa solo si acabas de mostrar un código de inicio de sesión en tu ordenador.",
"link_confirm_pair_add": "Este enlace añade una cuenta de {host} y cambia la aplicación a ella. Continúa solo si acabas de mostrar un código de inicio de sesión en tu ordenador.",
"link_confirm_title": "¿Iniciar sesión con un enlace?",
"looking_up": "Buscando tu servidor…",
"manual": "Introducir los datos del servidor manualmente",
"notice_bad_qr": "Ese código no es un código de inicio de sesión de Bulwark",
@@ -505,6 +529,12 @@
"pairing_detail": "Vinculando este dispositivo con {host}…",
"password_subtitle": "Tu contraseña solo se envía a este servidor y se guarda en el almacén seguro del dispositivo.",
"password_title": "Iniciar sesión en {host}",
"paste_button": "Pegar",
"paste_clipboard_empty": "No hay nada que pegar. Copia primero el enlace en el webmail.",
"paste_hint": "En el webmail, abre Configuración → Seguridad → Vincular aplicación móvil, copia el enlace de inicio de sesión y pégalo aquí.",
"paste_invalid": "Eso no es un enlace de inicio de sesión de Bulwark",
"paste_label": "Enlace de inicio de sesión",
"paste_title": "Pegar enlace de inicio de sesión",
"provider_detail": "La escribirás en su página. Bulwark solo guarda un token de inicio de sesión, que puedes revocar en cualquier momento.",
"provider_title": "Tu contraseña se queda con tu proveedor",
"qr_hint": "Configuración → Seguridad → Vincular aplicación móvil muestra un código. Apunta la cámara hacia él.",
@@ -515,6 +545,7 @@
"server_hint": "La misma dirección que escribes en el navegador. Añadiremos https:// por ti.",
"server_label": "Dirección del servidor",
"server_not_found": "No encontramos ningún servidor para {domain}. Si lo alojas tú, la dirección es la que usas para el webmail.",
"server_paste_hint": "¿Tienes un enlace de inicio de sesión? Pégalo aquí.",
"server_scan_hint": "Si no estás seguro, escanea un código de inicio de sesión. Incluye la dirección del servidor.",
"server_subtitle": "Introduce la dirección que usas para acceder a tu webmail.",
"server_title": "¿Cuál es la dirección de tu servidor?",
+32 -1
View File
@@ -460,12 +460,19 @@
"email_step_title": "نشانی ایمیل شما چیست؟",
"email_step_title_add": "نشانی دیگر چیست؟",
"email_title": "استفاده از نشانی ایمیل من",
"err_account_limit_detail": "برای افزودن حساب دیگر، یکی از حساب‌ها را در تنظیمات حذف کنید.",
"err_bad_detail": "ایمیل و رمز عبور خود را بررسی کنید. اگر حساب شما از ورود دو مرحله‌ای استفاده می‌کند، در ایمیل تحت وب یک رمز برنامه بسازید و آن را اینجا وارد کنید.",
"err_bad_title": "موفق نشد",
"err_cert_detail": "گواهی امنیتی سرور رد شد. اگر این سرور خودتان است، بررسی کنید گواهی معتبر باشد و منقضی نشده باشد.",
"err_cert_title": "تأیید {host} ممکن نشد",
"err_code_expired_detail": "کدهای ورود فقط چند دقیقه اعتبار دارند. در ایمیل تحت وب کد تازه‌ای بسازید و دوباره اسکن کنید.",
"err_code_expired_detail": "کدهای ورود دو دقیقه اعتبار دارند. در ایمیل تحت وب کد تازه‌ای نمایش دهید و دوباره اسکن کنید.",
"err_code_expired_or_used_detail": "در ایمیل تحت وب کد تازه‌ای نمایش دهید و دوباره اسکن کنید.",
"err_code_expired_or_used_title": "این کد منقضی شده یا قبلاً استفاده شده است",
"err_code_expired_title": "این کد منقضی شده است",
"err_code_invalid_detail": "در ایمیل تحت وب کد تازه‌ای نمایش دهید (تنظیمات ← امنیت ← اتصال موبایل) و آن را اسکن کنید.",
"err_code_invalid_title": "این کد معتبر نیست",
"err_code_used_detail": "هر کد فقط یک بار کار می‌کند. در ایمیل تحت وب کد تازه‌ای نمایش دهید و دوباره اسکن کنید.",
"err_code_used_title": "این کد قبلاً استفاده شده است",
"err_generic_detail": "مشکلی پیش آمد. دوباره امتحان کنید.",
"err_generic_title": "ورود ناموفق بود",
"err_interrupted_detail": "پاسخ با درخواستی که آغاز کردیم مطابقت نداشت. دوباره وارد شوید.",
@@ -474,6 +481,17 @@
"err_no_server_title": "سرور ایمیلی در {host} نیست",
"err_no_webmail_detail": "این سرور نه ایمیل تحت وب Bulwark دارد و نه ورود با OAuth. به‌جای آن از رمز عبور (یا رمز برنامه) استفاده کنید.",
"err_no_webmail_title": "صفحه ورودی در {host} نیست",
"err_pair_connect_detail": "روی رایانه‌تان کد تازه‌ای نمایش دهید و دوباره اسکن کنید.",
"err_pair_connect_title": "وارد شدید، اما اتصال به {host} ممکن نشد",
"err_pair_insecure_detail": "{host} می‌خواهد از اتصال رمزگذاری‌نشده استفاده کند.",
"err_pair_network_detail": "اتصال خود را بررسی کنید و مطمئن شوید تلفنتان به ایمیل تحت وب دسترسی دارد، سپس دوباره امتحان کنید.",
"err_pair_rate_detail": "یک دقیقه صبر کنید، سپس دوباره امتحان کنید.",
"err_pair_server_detail": "با یک کد تازه دوباره امتحان کنید. اگر باز هم ناموفق بود، با مدیر سیستم تماس بگیرید.",
"err_pair_server_title": "ایمیل تحت وب نتوانست ورود را کامل کند",
"err_pair_unsupported_detail": "{host} از کدهای ورود پشتیبانی نمی‌کند. شاید نیاز به به‌روزرسانی داشته باشد، یا پیوند به نشانی اشتباهی اشاره می‌کند.",
"err_pair_unsupported_title": "این ایمیل تحت وب نمی‌تواند دستگاه‌ها را متصل کند",
"err_pair_untrusted_detail": "{host} اطلاعات ورود را برای سروری فرستاده که برنامه نمی‌تواند آن را تأیید کند.",
"err_pair_untrusted_title": "به این ورود نمی‌توان اعتماد کرد",
"err_rate_detail": "سرور از ما خواست کمی صبر کنیم. کمی بعد دوباره امتحان کنید.",
"err_rate_detail_seconds": "سرور از ما خواست صبر کنیم. حدود {seconds} ثانیه دیگر دوباره امتحان کنید.",
"err_rate_title": "تلاش‌های بیش از حد",
@@ -487,6 +505,12 @@
"know_server": "نشانی سرورم را می‌دانم",
"known_server_desc": "این سرور را از قبل می‌شناسیم، پس نیازی به راه‌اندازی نیست",
"known_server_title": "حسابی دیگر در {host}",
"link_confirm_connect": "یک پیوند می‌خواهد در این صفحه وارد شوید. فقط اگر برای ایمیل‌تان از {host} استفاده می‌کنید ادامه دهید.",
"link_confirm_connect_add": "یک پیوند می‌خواهد با ورود در این صفحه حسابی اضافه کنید. فقط اگر برای ایمیل‌تان از {host} استفاده می‌کنید ادامه دهید.",
"link_confirm_connect_title": "صفحه ورود {host} باز شود؟",
"link_confirm_pair": "این پیوند شما را به حسابی از {host} وارد می‌کند. فقط اگر همین حالا روی رایانه‌تان کد ورود نمایش داده‌اید ادامه دهید.",
"link_confirm_pair_add": "این پیوند حسابی از {host} را اضافه می‌کند و برنامه را به آن حساب می‌برد. فقط اگر همین حالا روی رایانه‌تان کد ورود نمایش داده‌اید ادامه دهید.",
"link_confirm_title": "با پیوند وارد می‌شوید؟",
"looking_up": "در حال جستجوی سرور شما…",
"manual": "وارد کردن دستی مشخصات سرور",
"notice_bad_qr": "این کد، کد ورود Bulwark نیست",
@@ -505,6 +529,12 @@
"pairing_detail": "در حال جفت کردن این دستگاه با {host}…",
"password_subtitle": "رمز عبور شما فقط به این سرور فرستاده می‌شود و در انبار امن دستگاه ذخیره می‌شود.",
"password_title": "ورود به {host}",
"paste_button": "چسباندن",
"paste_clipboard_empty": "چیزی برای چسباندن نیست. ابتدا پیوند را در ایمیل تحت وب کپی کنید.",
"paste_hint": "در ایمیل تحت وب، تنظیمات ← امنیت ← اتصال موبایل را باز کنید، پیوند ورود را کپی کنید و اینجا بچسبانید.",
"paste_invalid": "این پیوند ورود Bulwark نیست",
"paste_label": "پیوند ورود",
"paste_title": "چسباندن پیوند ورود",
"provider_detail": "آن را در صفحه آن‌ها وارد می‌کنید. Bulwark فقط یک توکن ورود نگه می‌دارد که هر زمان بخواهید می‌توانید باطلش کنید.",
"provider_title": "رمز عبور شما نزد ارائه‌دهنده‌تان می‌ماند",
"qr_hint": "در تنظیمات ← امنیت ← اتصال موبایل یک کد نمایش داده می‌شود. دوربین را به سمت آن بگیرید.",
@@ -515,6 +545,7 @@
"server_hint": "همان نشانی‌ای که در مرورگر تایپ می‌کنید. https:// را خودمان اضافه می‌کنیم.",
"server_label": "نشانی سرور",
"server_not_found": "سروری برای {domain} پیدا نکردیم. اگر سرور خودتان را میزبانی می‌کنید، نشانی همان است که برای ایمیل تحت وب استفاده می‌کنید.",
"server_paste_hint": "به‌جای آن پیوند ورود دارید؟ اینجا بچسبانید.",
"server_scan_hint": "اگر مطمئن نیستید، به‌جای آن کد ورود را اسکن کنید. نشانی سرور در آن هست.",
"server_subtitle": "نشانی‌ای را که با آن به ایمیل تحت وب دسترسی دارید وارد کنید.",
"server_title": "نشانی سرور شما چیست؟",
+32 -1
View File
@@ -460,12 +460,19 @@
"email_step_title": "Quelle est votre adresse e-mail ?",
"email_step_title_add": "Quelle est l'autre adresse ?",
"email_title": "Utiliser mon adresse e-mail",
"err_account_limit_detail": "Supprimez un compte dans les Paramètres pour en ajouter un autre.",
"err_bad_detail": "Vérifiez votre adresse e-mail et votre mot de passe. Si votre compte utilise l'authentification à deux facteurs, créez un mot de passe d'application dans le webmail et utilisez-le ici.",
"err_bad_title": "Cela n'a pas fonctionné",
"err_cert_detail": "Le certificat de sécurité du serveur a été refusé. S'il s'agit de votre propre serveur, vérifiez que le certificat est valide et n'a pas expiré.",
"err_cert_title": "Impossible de vérifier {host}",
"err_code_expired_detail": "Les codes de connexion ne sont valables que quelques minutes. Générez-en un nouveau dans le webmail et scannez-le à nouveau.",
"err_code_expired_detail": "Les codes de connexion sont valables deux minutes. Affichez-en un nouveau dans le webmail et scannez-le à nouveau.",
"err_code_expired_or_used_detail": "Affichez-en un nouveau dans le webmail et scannez-le à nouveau.",
"err_code_expired_or_used_title": "Ce code a expiré ou a déjà été utilisé",
"err_code_expired_title": "Ce code a expiré",
"err_code_invalid_detail": "Affichez un nouveau code dans le webmail (Paramètres → Sécurité → Associer l'application mobile) et scannez-le.",
"err_code_invalid_title": "Ce code n'est pas valide",
"err_code_used_detail": "Chaque code ne fonctionne qu'une fois. Affichez-en un nouveau dans le webmail et scannez-le à nouveau.",
"err_code_used_title": "Ce code a déjà été utilisé",
"err_generic_detail": "Un problème est survenu. Réessayez.",
"err_generic_title": "Échec de la connexion",
"err_interrupted_detail": "La réponse ne correspondait pas à la requête que nous avions lancée. Essayez de vous reconnecter.",
@@ -474,6 +481,17 @@
"err_no_server_title": "Aucun serveur de messagerie sur {host}",
"err_no_webmail_detail": "Ce serveur n'a ni webmail Bulwark ni connexion OAuth. Utilisez plutôt un mot de passe (ou un mot de passe d'application).",
"err_no_webmail_title": "Aucune page de connexion sur {host}",
"err_pair_connect_detail": "Affichez un nouveau code sur votre ordinateur et scannez-le à nouveau.",
"err_pair_connect_title": "Connecté, mais impossible de joindre {host}",
"err_pair_insecure_detail": "{host} veut utiliser une connexion non chiffrée.",
"err_pair_network_detail": "Vérifiez votre connexion et que votre téléphone peut accéder au webmail, puis réessayez.",
"err_pair_rate_detail": "Patientez une minute, puis réessayez.",
"err_pair_server_detail": "Réessayez avec un nouveau code. Si le problème persiste, contactez votre administrateur.",
"err_pair_server_title": "Le webmail n'a pas pu terminer la connexion",
"err_pair_unsupported_detail": "{host} ne prend pas en charge les codes de connexion. Il a peut-être besoin d'une mise à jour, ou le lien pointe vers la mauvaise adresse.",
"err_pair_unsupported_title": "Ce webmail ne peut pas associer d'appareils",
"err_pair_untrusted_detail": "{host} a envoyé des informations de connexion pour un serveur que l'application ne peut pas vérifier.",
"err_pair_untrusted_title": "Cette connexion n'est pas fiable",
"err_rate_detail": "Le serveur nous a demandé de patienter un instant. Réessayez dans un moment.",
"err_rate_detail_seconds": "Le serveur nous a demandé de patienter. Réessayez dans environ {seconds} secondes.",
"err_rate_title": "Trop de tentatives",
@@ -487,6 +505,12 @@
"know_server": "Je connais l'adresse de mon serveur",
"known_server_desc": "Nous connaissons déjà ce serveur, aucune configuration n'est donc nécessaire",
"known_server_title": "Un autre compte sur {host}",
"link_confirm_connect": "Un lien demande à vous connecter sur cette page. Ne continuez que si vous utilisez {host} pour vos e-mails.",
"link_confirm_connect_add": "Un lien demande à ajouter un compte en vous connectant sur cette page. Ne continuez que si vous utilisez {host} pour vos e-mails.",
"link_confirm_connect_title": "Ouvrir la page de connexion de {host} ?",
"link_confirm_pair": "Ce lien vous connecte à un compte de {host}. Ne continuez que si vous venez d'afficher un code de connexion sur votre ordinateur.",
"link_confirm_pair_add": "Ce lien ajoute un compte de {host} et fait basculer l'application sur ce compte. Ne continuez que si vous venez d'afficher un code de connexion sur votre ordinateur.",
"link_confirm_title": "Se connecter avec un lien ?",
"looking_up": "Recherche de votre serveur…",
"manual": "Saisir les informations du serveur manuellement",
"notice_bad_qr": "Ce code n'est pas un code de connexion Bulwark",
@@ -505,6 +529,12 @@
"pairing_detail": "Association de cet appareil avec {host}…",
"password_subtitle": "Votre mot de passe n'est envoyé qu'à ce serveur et est stocké dans le trousseau de l'appareil.",
"password_title": "Se connecter à {host}",
"paste_button": "Coller",
"paste_clipboard_empty": "Rien à coller. Copiez d'abord le lien dans le webmail.",
"paste_hint": "Dans le webmail, ouvrez Paramètres → Sécurité → Associer l'application mobile, copiez le lien de connexion et collez-le ici.",
"paste_invalid": "Ce n'est pas un lien de connexion Bulwark",
"paste_label": "Lien de connexion",
"paste_title": "Coller le lien de connexion",
"provider_detail": "Vous le saisirez sur leur page. Bulwark ne stocke qu'un jeton de connexion, que vous pouvez révoquer à tout moment.",
"provider_title": "Votre mot de passe reste chez votre fournisseur",
"qr_hint": "Paramètres → Sécurité → Associer l'application mobile affiche un code. Pointez l'appareil photo dessus.",
@@ -515,6 +545,7 @@
"server_hint": "La même adresse que celle saisie dans le navigateur. Nous ajoutons https:// pour vous.",
"server_label": "Adresse du serveur",
"server_not_found": "Aucun serveur trouvé pour {domain}. Si vous l'hébergez vous-même, l'adresse est celle que vous utilisez pour le webmail.",
"server_paste_hint": "Vous avez plutôt un lien de connexion ? Collez-le ici.",
"server_scan_hint": "En cas de doute, scannez plutôt un code de connexion. Il contient l'adresse du serveur.",
"server_subtitle": "Saisissez l'adresse que vous utilisez pour accéder à votre webmail.",
"server_title": "Quelle est l'adresse de votre serveur ?",
+32 -1
View File
@@ -460,12 +460,19 @@
"email_step_title": "מה כתובת האימייל שלך?",
"email_step_title_add": "מה הכתובת האחרת?",
"email_title": "השתמש בכתובת האימייל שלי",
"err_account_limit_detail": "הסר חשבון בהגדרות כדי להוסיף חשבון נוסף.",
"err_bad_detail": "בדוק את האימייל והסיסמה. אם החשבון שלך משתמש באימות דו-שלבי, צור סיסמת אפליקציה בדואר האינטרנט והשתמש בה כאן.",
"err_bad_title": "זה לא עבד",
"err_cert_detail": "תעודת האבטחה של השרת נדחתה. אם זה השרת שלך, ודא שהתעודה תקפה ושתוקפה לא פג.",
"err_cert_title": "לא ניתן לאמת את {host}",
"err_code_expired_detail": "קודי התחברות תקפים לכמה דקות בלבד. צור קוד חדש בדואר האינטרנט וסרוק שוב.",
"err_code_expired_detail": "קודי התחברות תקפים לשתי דקות. הצג קוד חדש בדואר האינטרנט וסרוק שוב.",
"err_code_expired_or_used_detail": "הצג קוד חדש בדואר האינטרנט וסרוק שוב.",
"err_code_expired_or_used_title": "תוקף הקוד פג או שהוא כבר נוצל",
"err_code_expired_title": "תוקף הקוד פג",
"err_code_invalid_detail": "הצג קוד חדש בדואר האינטרנט (הגדרות ← אבטחה ← הקשר יישום נייד) וסרוק אותו.",
"err_code_invalid_title": "הקוד הזה אינו תקף",
"err_code_used_detail": "כל קוד עובד פעם אחת בלבד. הצג קוד חדש בדואר האינטרנט וסרוק שוב.",
"err_code_used_title": "הקוד הזה כבר נוצל",
"err_generic_detail": "משהו השתבש. נסה שוב.",
"err_generic_title": "ההתחברות נכשלה",
"err_interrupted_detail": "התגובה לא תאמה לבקשה שהתחלנו. נסה להתחבר שוב.",
@@ -474,6 +481,17 @@
"err_no_server_title": "לא נמצא שרת דואר: {host}",
"err_no_webmail_detail": "בשרת זה אין דואר אינטרנט של Bulwark ואין התחברות OAuth. השתמש במקום זאת בסיסמה (או בסיסמת אפליקציה).",
"err_no_webmail_title": "אין דף התחברות: {host}",
"err_pair_connect_detail": "הצג קוד חדש במחשב וסרוק שוב.",
"err_pair_connect_title": "ההתחברות הצליחה, אך אין חיבור אל {host}",
"err_pair_insecure_detail": "{host} רוצה להשתמש בחיבור לא מוצפן.",
"err_pair_network_detail": "בדוק את החיבור ושהטלפון יכול להגיע לדואר האינטרנט, ונסה שוב.",
"err_pair_rate_detail": "המתן דקה ונסה שוב.",
"err_pair_server_detail": "נסה שוב עם קוד חדש. אם זה ממשיך להיכשל, פנה למנהל המערכת.",
"err_pair_server_title": "דואר האינטרנט לא הצליח להשלים את ההתחברות",
"err_pair_unsupported_detail": "{host} לא תומך בקודי התחברות. ייתכן שנדרש עדכון, או שהקישור מפנה לכתובת שגויה.",
"err_pair_unsupported_title": "דואר האינטרנט הזה לא יכול לקשר מכשירים",
"err_pair_untrusted_detail": "{host} שלח פרטי התחברות לשרת שהיישום לא יכול לאמת.",
"err_pair_untrusted_title": "אי אפשר לסמוך על ההתחברות הזו",
"err_rate_detail": "השרת ביקש שנמתין רגע. נסה שוב בקרוב.",
"err_rate_detail_seconds": "השרת ביקש שנמתין. נסה שוב בעוד כ-{seconds} שניות.",
"err_rate_title": "יותר מדי ניסיונות",
@@ -487,6 +505,12 @@
"know_server": "אני יודע את כתובת השרת שלי",
"known_server_desc": "השרת הזה כבר מוכר לנו, כך שאין צורך בהגדרה",
"known_server_title": "חשבון נוסף ב-{host}",
"link_confirm_connect": "קישור מבקש להתחבר בדף הזה. המשך רק אם אתה משתמש ב-{host} לדואר שלך.",
"link_confirm_connect_add": "קישור מבקש להוסיף חשבון באמצעות התחברות בדף הזה. המשך רק אם אתה משתמש ב-{host} לדואר שלך.",
"link_confirm_connect_title": "לפתוח את דף ההתחברות של {host}?",
"link_confirm_pair": "הקישור הזה מחבר לחשבון מ-{host}. המשך רק אם הצגת עכשיו קוד התחברות במחשב.",
"link_confirm_pair_add": "הקישור הזה מוסיף חשבון מ-{host} ומעביר אליו את היישום. המשך רק אם הצגת עכשיו קוד התחברות במחשב.",
"link_confirm_title": "להתחבר עם קישור?",
"looking_up": "מחפש את השרת שלך…",
"manual": "הזן את פרטי השרת ידנית",
"notice_bad_qr": "הקוד הזה אינו קוד התחברות של Bulwark",
@@ -505,6 +529,12 @@
"pairing_detail": "מצמיד את המכשיר הזה אל {host}…",
"password_subtitle": "הסיסמה שלך נשלחת לשרת הזה בלבד ונשמרת במחזיק המפתחות של המכשיר.",
"password_title": "התחברות אל {host}",
"paste_button": "הדבק",
"paste_clipboard_empty": "אין מה להדביק. העתק קודם את הקישור בדואר האינטרנט.",
"paste_hint": "בדואר האינטרנט, פתח את הגדרות ← אבטחה ← הקשר יישום נייד, העתק את קישור ההתחברות והדבק אותו כאן.",
"paste_invalid": "זה לא קישור התחברות של Bulwark",
"paste_label": "קישור התחברות",
"paste_title": "הדבק קישור התחברות",
"provider_detail": "תקליד אותה בדף שלהם. Bulwark שומרת רק אסימון התחברות, שאפשר לבטל בכל עת.",
"provider_title": "הסיסמה שלך נשארת אצל הספק",
"qr_hint": "בהגדרות ← אבטחה ← הקשר יישום נייד מוצג קוד. כוון אליו את המצלמה.",
@@ -515,6 +545,7 @@
"server_hint": "אותה כתובת שאתה מקליד בדפדפן. נוסיף בשבילך את https://.",
"server_label": "כתובת השרת",
"server_not_found": "לא מצאנו שרת עבור {domain}. אם אתה מארח בעצמך, הכתובת היא זו שבה אתה משתמש לדואר האינטרנט.",
"server_paste_hint": "יש לך קישור התחברות במקום זאת? הדבק אותו כאן.",
"server_scan_hint": "אם אינך בטוח, סרוק במקום זאת קוד התחברות. הוא כולל את כתובת השרת.",
"server_subtitle": "הזן את הכתובת שבה אתה ניגש לדואר האינטרנט.",
"server_title": "מה כתובת השרת שלך?",
+32 -1
View File
@@ -460,12 +460,19 @@
"email_step_title": "Mi az e-mail-címed?",
"email_step_title_add": "Mi a másik cím?",
"email_title": "E-mail-címem használata",
"err_account_limit_detail": "Másik fiók hozzáadásához távolíts el egyet a Beállításokban.",
"err_bad_detail": "Ellenőrizd az e-mail-címet és a jelszót. Ha a fiókod kétlépcsős bejelentkezést használ, hozz létre alkalmazásjelszót a webmailben, és azt használd itt.",
"err_bad_title": "Ez nem sikerült",
"err_cert_detail": "A szerver biztonsági tanúsítványát elutasítottuk. Ha ez a saját szervered, ellenőrizd, hogy a tanúsítvány érvényes és nem járt le.",
"err_cert_title": "Nem sikerült ellenőrizni: {host}",
"err_code_expired_detail": "A bejelentkezési kódok néhány percig érvényesek. Generálj újat a webmailben, és olvasd be újra.",
"err_code_expired_detail": "A bejelentkezési kódok két percig érvényesek. Jeleníts meg újat a webmailben, és olvasd be újra.",
"err_code_expired_or_used_detail": "Jeleníts meg újat a webmailben, és olvasd be újra.",
"err_code_expired_or_used_title": "Ez a kód lejárt, vagy már felhasználták",
"err_code_expired_title": "Ez a kód lejárt",
"err_code_invalid_detail": "Jeleníts meg új kódot a webmailben (Beállítások → Biztonság → Mobilalkalmazás összekapcsolása), és olvasd be.",
"err_code_invalid_title": "Ez a kód érvénytelen",
"err_code_used_detail": "Minden kód csak egyszer használható. Jeleníts meg újat a webmailben, és olvasd be újra.",
"err_code_used_title": "Ezt a kódot már felhasználták",
"err_generic_detail": "Valami hiba történt. Próbáld újra.",
"err_generic_title": "Sikertelen bejelentkezés",
"err_interrupted_detail": "A válasz nem egyezett az elindított kéréssel. Próbálj meg újra bejelentkezni.",
@@ -474,6 +481,17 @@
"err_no_server_title": "Nincs levelezőszerver itt: {host}",
"err_no_webmail_detail": "Ezen a szerveren nincs Bulwark webmail és OAuth-bejelentkezés sem. Használj inkább jelszót (vagy alkalmazásjelszót).",
"err_no_webmail_title": "Nincs bejelentkezési oldal itt: {host}",
"err_pair_connect_detail": "Jeleníts meg új kódot a számítógépen, és olvasd be újra.",
"err_pair_connect_title": "Bejelentkezve, de nem sikerült csatlakozni: {host}",
"err_pair_insecure_detail": "A(z) {host} titkosítatlan kapcsolatot akar használni.",
"err_pair_network_detail": "Ellenőrizd a kapcsolatot, és hogy a telefonod eléri-e a webmailt, majd próbáld újra.",
"err_pair_rate_detail": "Várj egy percet, majd próbáld újra.",
"err_pair_server_detail": "Próbáld újra egy új kóddal. Ha továbbra sem sikerül, fordulj a rendszergazdához.",
"err_pair_server_title": "A webmail nem tudta befejezni a bejelentkezést",
"err_pair_unsupported_detail": "A(z) {host} nem támogatja a bejelentkezési kódokat. Lehet, hogy frissíteni kell, vagy a hivatkozás rossz címre mutat.",
"err_pair_unsupported_title": "Ez a webmail nem tud eszközöket összekapcsolni",
"err_pair_untrusted_detail": "A(z) {host} bejelentkezési adatokat küldött egy olyan szerverhez, amelyet az alkalmazás nem tud ellenőrizni.",
"err_pair_untrusted_title": "Ebben a bejelentkezésben nem lehet megbízni",
"err_rate_detail": "A szerver arra kért, hogy várjunk egy kicsit. Próbáld újra hamarosan.",
"err_rate_detail_seconds": "A szerver arra kért, hogy várjunk. Próbáld újra kb. {seconds} másodperc múlva.",
"err_rate_title": "Túl sok próbálkozás",
@@ -487,6 +505,12 @@
"know_server": "Ismerem a szerverem címét",
"known_server_desc": "Ezt a szervert már ismerjük, így nincs mit beállítani",
"known_server_title": "Másik fiók itt: {host}",
"link_confirm_connect": "Egy hivatkozás bejelentkezést kér ezen az oldalon. Csak akkor folytasd, ha a(z) {host} címet használod a leveleidhez.",
"link_confirm_connect_add": "Egy hivatkozás egy fiók hozzáadását kéri bejelentkezéssel ezen az oldalon. Csak akkor folytasd, ha a(z) {host} címet használod a leveleidhez.",
"link_confirm_connect_title": "Megnyitod a(z) {host} bejelentkezési oldalát?",
"link_confirm_pair": "Ez a hivatkozás bejelentkeztet egy fiókba itt: {host}. Csak akkor folytasd, ha az imént jelenítettél meg bejelentkezési kódot a számítógépeden.",
"link_confirm_pair_add": "Ez a hivatkozás hozzáad egy fiókot innen: {host}, és átváltja rá az alkalmazást. Csak akkor folytasd, ha az imént jelenítettél meg bejelentkezési kódot a számítógépeden.",
"link_confirm_title": "Bejelentkezel egy hivatkozással?",
"looking_up": "Szerver keresése…",
"manual": "Szerveradatok kézi megadása",
"notice_bad_qr": "Ez nem Bulwark bejelentkezési kód",
@@ -505,6 +529,12 @@
"pairing_detail": "Az eszköz párosítása: {host}…",
"password_subtitle": "A jelszavadat csak erre a szerverre küldjük el, és az eszköz kulcstárolójában tároljuk.",
"password_title": "Bejelentkezés: {host}",
"paste_button": "Beillesztés",
"paste_clipboard_empty": "Nincs mit beilleszteni. Előbb másold ki a hivatkozást a webmailben.",
"paste_hint": "A webmailben nyisd meg a Beállítások → Biztonság → Mobilalkalmazás összekapcsolása menüt, másold ki a bejelentkezési hivatkozást, és illeszd be ide.",
"paste_invalid": "Ez nem Bulwark bejelentkezési hivatkozás",
"paste_label": "Bejelentkezési hivatkozás",
"paste_title": "Bejelentkezési hivatkozás beillesztése",
"provider_detail": "A szolgáltató oldalán írod be. A Bulwark csak egy bejelentkezési tokent tárol, amelyet bármikor visszavonhatsz.",
"provider_title": "A jelszavad a szolgáltatódnál marad",
"qr_hint": "A Beállítások → Biztonság → Mobilalkalmazás összekapcsolása egy kódot jelenít meg. Irányítsd rá a kamerát.",
@@ -515,6 +545,7 @@
"server_hint": "Ugyanaz a cím, amelyet a böngészőbe írsz. A https:// előtagot mi tesszük hozzá.",
"server_label": "Szervercím",
"server_not_found": "Nem találtunk szervert ehhez: {domain}. Ha saját szervert üzemeltetsz, a webmailhez használt címet add meg.",
"server_paste_hint": "Inkább bejelentkezési hivatkozásod van? Illeszd be ide.",
"server_scan_hint": "Ha nem vagy biztos benne, olvass be inkább egy bejelentkezési kódot. Ez tartalmazza a szerver címét.",
"server_subtitle": "Add meg a címet, amelyen a webmailt eléred.",
"server_title": "Mi a szervered címe?",
+32 -1
View File
@@ -460,12 +460,19 @@
"email_step_title": "Qual è il tuo indirizzo email?",
"email_step_title_add": "Qual è l'altro indirizzo?",
"email_title": "Usa il mio indirizzo email",
"err_account_limit_detail": "Rimuovi un account in Impostazioni per aggiungerne un altro.",
"err_bad_detail": "Controlla email e password. Se il tuo account usa l'autenticazione a due fattori, crea una password per le app nella webmail e usala qui.",
"err_bad_title": "Non ha funzionato",
"err_cert_detail": "Il certificato di sicurezza del server è stato rifiutato. Se è il tuo server, verifica che il certificato sia valido e non scaduto.",
"err_cert_title": "Impossibile verificare {host}",
"err_code_expired_detail": "I codici di accesso sono validi per pochi minuti. Generane uno nuovo nella webmail e scansionalo di nuovo.",
"err_code_expired_detail": "I codici di accesso sono validi per due minuti. Mostrane uno nuovo nella webmail e scansionalo di nuovo.",
"err_code_expired_or_used_detail": "Mostrane uno nuovo nella webmail e scansionalo di nuovo.",
"err_code_expired_or_used_title": "Questo codice è scaduto o è già stato usato",
"err_code_expired_title": "Questo codice è scaduto",
"err_code_invalid_detail": "Mostra un nuovo codice nella webmail (Impostazioni → Sicurezza → Collega l'app mobile) e scansionalo.",
"err_code_invalid_title": "Questo codice non è valido",
"err_code_used_detail": "Ogni codice funziona una sola volta. Mostrane uno nuovo nella webmail e scansionalo di nuovo.",
"err_code_used_title": "Questo codice è già stato usato",
"err_generic_detail": "Si è verificato un errore. Riprova.",
"err_generic_title": "Accesso non riuscito",
"err_interrupted_detail": "La risposta non corrisponde alla richiesta che abbiamo avviato. Prova ad accedere di nuovo.",
@@ -474,6 +481,17 @@
"err_no_server_title": "Nessun server di posta su {host}",
"err_no_webmail_detail": "Questo server non ha una webmail Bulwark né l'accesso OAuth. Usa una password (o una password per le app).",
"err_no_webmail_title": "Nessuna pagina di accesso su {host}",
"err_pair_connect_detail": "Mostra un nuovo codice sul computer e scansionalo di nuovo.",
"err_pair_connect_title": "Accesso eseguito, ma impossibile connettersi a {host}",
"err_pair_insecure_detail": "{host} vuole usare una connessione non cifrata.",
"err_pair_network_detail": "Controlla la connessione e che il telefono possa raggiungere la webmail, poi riprova.",
"err_pair_rate_detail": "Attendi un minuto, poi riprova.",
"err_pair_server_detail": "Riprova con un nuovo codice. Se continua a non funzionare, rivolgiti all'amministratore.",
"err_pair_server_title": "La webmail non è riuscita a completare l'accesso",
"err_pair_unsupported_detail": "{host} non supporta i codici di accesso. Potrebbe servire un aggiornamento, oppure il link punta all'indirizzo sbagliato.",
"err_pair_unsupported_title": "Questa webmail non può collegare dispositivi",
"err_pair_untrusted_detail": "{host} ha inviato dati di accesso per un server che l'app non può verificare.",
"err_pair_untrusted_title": "Questo accesso non è affidabile",
"err_rate_detail": "Il server ci ha chiesto di attendere un momento. Riprova tra poco.",
"err_rate_detail_seconds": "Il server ci ha chiesto di attendere. Riprova tra circa {seconds} secondi.",
"err_rate_title": "Troppi tentativi",
@@ -487,6 +505,12 @@
"know_server": "Conosco l'indirizzo del mio server",
"known_server_desc": "Conosciamo già questo server, quindi non c'è nulla da configurare",
"known_server_title": "Un altro account su {host}",
"link_confirm_connect": "Un link chiede di accedere su questa pagina. Continua solo se usi {host} per la tua posta.",
"link_confirm_connect_add": "Un link chiede di aggiungere un account accedendo su questa pagina. Continua solo se usi {host} per la tua posta.",
"link_confirm_connect_title": "Aprire la pagina di accesso di {host}?",
"link_confirm_pair": "Questo link ti fa accedere a un account di {host}. Continua solo se hai appena mostrato un codice di accesso sul computer.",
"link_confirm_pair_add": "Questo link aggiunge un account di {host} e passa l'app a quell'account. Continua solo se hai appena mostrato un codice di accesso sul computer.",
"link_confirm_title": "Accedere con un link?",
"looking_up": "Ricerca del tuo server…",
"manual": "Inserisci i dati del server manualmente",
"notice_bad_qr": "Questo codice non è un codice di accesso Bulwark",
@@ -505,6 +529,12 @@
"pairing_detail": "Associazione di questo dispositivo con {host}…",
"password_subtitle": "La password viene inviata solo a questo server e salvata nell'archivio sicuro del dispositivo.",
"password_title": "Accedi a {host}",
"paste_button": "Incolla",
"paste_clipboard_empty": "Niente da incollare. Copia prima il link nella webmail.",
"paste_hint": "Nella webmail apri Impostazioni → Sicurezza → Collega l'app mobile, copia il link di accesso e incollalo qui.",
"paste_invalid": "Questo non è un link di accesso Bulwark",
"paste_label": "Link di accesso",
"paste_title": "Incolla link di accesso",
"provider_detail": "La digiterai nella loro pagina. Bulwark salva solo un token di accesso, che puoi revocare in qualsiasi momento.",
"provider_title": "La tua password resta al tuo provider",
"qr_hint": "Impostazioni → Sicurezza → Collega l'app mobile mostra un codice. Inquadralo con la fotocamera.",
@@ -515,6 +545,7 @@
"server_hint": "Lo stesso indirizzo che digiti nel browser. Aggiungeremo noi https://.",
"server_label": "Indirizzo del server",
"server_not_found": "Non abbiamo trovato un server per {domain}. Se lo gestisci tu, l'indirizzo è quello che usi per la webmail.",
"server_paste_hint": "Hai invece un link di accesso? Incollalo qui.",
"server_scan_hint": "Se non sei sicuro, scansiona un codice di accesso: contiene l'indirizzo del server.",
"server_subtitle": "Inserisci l'indirizzo che usi per raggiungere la tua webmail.",
"server_title": "Qual è l'indirizzo del tuo server?",
+32 -1
View File
@@ -460,12 +460,19 @@
"email_step_title": "メールアドレスを入力してください",
"email_step_title_add": "もう一つのメールアドレスを入力してください",
"email_title": "メールアドレスを使用",
"err_account_limit_detail": "別のアカウントを追加するには、設定でアカウントを削除してください。",
"err_bad_detail": "メールアドレスとパスワードを確認してください。アカウントで二要素認証を使用している場合は、ウェブメールでアプリパスワードを作成し、ここで使用してください。",
"err_bad_title": "サインインできませんでした",
"err_cert_detail": "サーバーのセキュリティ証明書が拒否されました。ご自身のサーバーの場合は、証明書が有効で期限切れでないことを確認してください。",
"err_cert_title": "{host}を検証できませんでした",
"err_code_expired_detail": "サインインコードの有効期間は数分です。ウェブメールで新しいコードを生成して、もう一度スキャンしてください。",
"err_code_expired_detail": "サインインコードの有効期間は2分です。ウェブメールで新しいコードを表示して、もう一度スキャンしてください。",
"err_code_expired_or_used_detail": "ウェブメールで新しいコードを表示して、もう一度スキャンしてください。",
"err_code_expired_or_used_title": "このコードは期限切れか、すでに使用されています",
"err_code_expired_title": "コードの有効期限が切れています",
"err_code_invalid_detail": "ウェブメールで新しいコードを表示し(「設定 → セキュリティ → モバイルアプリを連携」)、スキャンしてください。",
"err_code_invalid_title": "このコードは無効です",
"err_code_used_detail": "各コードは1回しか使えません。ウェブメールで新しいコードを表示して、もう一度スキャンしてください。",
"err_code_used_title": "このコードはすでに使用されています",
"err_generic_detail": "問題が発生しました。もう一度お試しください。",
"err_generic_title": "サインインに失敗しました",
"err_interrupted_detail": "応答が開始したリクエストと一致しませんでした。もう一度サインインしてください。",
@@ -474,6 +481,17 @@
"err_no_server_title": "{host}にメールサーバーがありません",
"err_no_webmail_detail": "このサーバーには Bulwark ウェブメールも OAuth サインインもありません。代わりにパスワード(またはアプリパスワード)を使用してください。",
"err_no_webmail_title": "{host}にサインインページがありません",
"err_pair_connect_detail": "コンピューターで新しいコードを表示して、もう一度スキャンしてください。",
"err_pair_connect_title": "サインインしましたが、{host} に接続できませんでした",
"err_pair_insecure_detail": "{host} が暗号化されていない接続を使おうとしています。",
"err_pair_network_detail": "接続状況と、スマートフォンからウェブメールにアクセスできるかを確認して、もう一度お試しください。",
"err_pair_rate_detail": "1分待ってから、もう一度お試しください。",
"err_pair_server_detail": "新しいコードでもう一度お試しください。それでも失敗する場合は、管理者にお問い合わせください。",
"err_pair_server_title": "ウェブメールでサインインを完了できませんでした",
"err_pair_unsupported_detail": "{host} はサインインコードに対応していません。アップデートが必要か、リンクのアドレスが間違っている可能性があります。",
"err_pair_unsupported_title": "このウェブメールはデバイスを連携できません",
"err_pair_untrusted_detail": "{host} から、アプリが検証できないサーバー用のサインイン情報が送られてきました。",
"err_pair_untrusted_title": "このサインインは信頼できません",
"err_rate_detail": "サーバーから少し待つよう求められました。しばらくしてからもう一度お試しください。",
"err_rate_detail_seconds": "サーバーから待機するよう求められました。約{seconds}秒後にもう一度お試しください。",
"err_rate_title": "試行回数が多すぎます",
@@ -487,6 +505,12 @@
"know_server": "サーバーアドレスがわかる",
"known_server_desc": "このサーバーは登録済みのため、設定は不要です",
"known_server_title": "{host}の別のアカウント",
"link_confirm_connect": "リンクがこのページでのサインインを求めています。メールに {host} を使っている場合にのみ続行してください。",
"link_confirm_connect_add": "リンクがこのページでサインインしてアカウントを追加するよう求めています。メールに {host} を使っている場合にのみ続行してください。",
"link_confirm_connect_title": "{host} のサインインページを開きますか?",
"link_confirm_pair": "このリンクは {host} のアカウントにサインインします。パソコンでサインインコードを表示したばかりの場合にのみ続行してください。",
"link_confirm_pair_add": "このリンクは {host} のアカウントを追加し、アプリをそのアカウントに切り替えます。パソコンでサインインコードを表示したばかりの場合にのみ続行してください。",
"link_confirm_title": "リンクでサインインしますか?",
"looking_up": "サーバーを検索しています…",
"manual": "サーバー情報を手動で入力",
"notice_bad_qr": "このコードは Bulwark のサインインコードではありません",
@@ -505,6 +529,12 @@
"pairing_detail": "このデバイスを{host}とペアリングしています…",
"password_subtitle": "パスワードはこのサーバーにのみ送信され、デバイスのキーチェーンに保存されます。",
"password_title": "{host}にサインイン",
"paste_button": "貼り付け",
"paste_clipboard_empty": "貼り付ける内容がありません。先にウェブメールでリンクをコピーしてください。",
"paste_hint": "ウェブメールで「設定 → セキュリティ → モバイルアプリを連携」を開き、サインインリンクをコピーしてここに貼り付けてください。",
"paste_invalid": "これは Bulwark のサインインリンクではありません",
"paste_label": "サインインリンク",
"paste_title": "サインインリンクを貼り付け",
"provider_detail": "パスワードはプロバイダーのページで入力します。Bulwark が保存するのはサインイントークンのみで、いつでも取り消すことができます。",
"provider_title": "パスワードはプロバイダーにのみ送信されます",
"qr_hint": "「設定 → セキュリティ → モバイルアプリを連携」でコードが表示されます。カメラをコードに向けてください。",
@@ -515,6 +545,7 @@
"server_hint": "ブラウザーで入力するものと同じアドレスです。https:// は自動で追加されます。",
"server_label": "サーバーアドレス",
"server_not_found": "{domain}のサーバーが見つかりませんでした。セルフホストしている場合は、ウェブメールで使用しているアドレスを入力してください。",
"server_paste_hint": "代わりにサインインリンクをお持ちですか?ここに貼り付けてください。",
"server_scan_hint": "わからない場合は、代わりにサインインコードをスキャンしてください。コードにサーバーアドレスが含まれています。",
"server_subtitle": "ウェブメールへのアクセスに使用しているアドレスを入力してください。",
"server_title": "サーバーアドレスを入力してください",
+32 -1
View File
@@ -460,12 +460,19 @@
"email_step_title": "이메일 주소가 무엇인가요?",
"email_step_title_add": "다른 주소는 무엇인가요?",
"email_title": "내 이메일 주소 사용",
"err_account_limit_detail": "다른 계정을 추가하려면 설정에서 계정을 삭제하세요.",
"err_bad_detail": "이메일과 비밀번호를 확인해 주세요. 계정에 2단계 인증을 사용 중이라면 웹메일에서 앱 비밀번호를 만들어 여기에 입력해 주세요.",
"err_bad_title": "로그인하지 못했어요",
"err_cert_detail": "서버의 보안 인증서가 거부되었어요. 직접 운영하는 서버라면 인증서가 유효하고 만료되지 않았는지 확인해 주세요.",
"err_cert_title": "{host}을(를) 확인할 수 없어요",
"err_code_expired_detail": "로그인 코드는 몇 분 동안만 유효해요. 웹메일에서 새 코드를 생성한 후 다시 스캔해 주세요.",
"err_code_expired_detail": "로그인 코드는 2분 동안 유효해요. 웹메일에서 새 코드를 표시한 후 다시 스캔해 주세요.",
"err_code_expired_or_used_detail": "웹메일에서 새 코드를 표시한 후 다시 스캔해 주세요.",
"err_code_expired_or_used_title": "만료되었거나 이미 사용된 코드예요",
"err_code_expired_title": "코드가 만료되었어요",
"err_code_invalid_detail": "웹메일에서 새 코드를 표시한 후(설정 → 보안 → 모바일 앱 연결) 스캔해 주세요.",
"err_code_invalid_title": "유효하지 않은 코드예요",
"err_code_used_detail": "각 코드는 한 번만 사용할 수 있어요. 웹메일에서 새 코드를 표시한 후 다시 스캔해 주세요.",
"err_code_used_title": "이미 사용된 코드예요",
"err_generic_detail": "문제가 발생했어요. 다시 시도해 주세요.",
"err_generic_title": "로그인 실패",
"err_interrupted_detail": "응답이 시작한 요청과 일치하지 않아요. 다시 로그인해 주세요.",
@@ -474,6 +481,17 @@
"err_no_server_title": "{host}에 메일 서버가 없어요",
"err_no_webmail_detail": "이 서버에는 Bulwark 웹메일과 OAuth 로그인이 없어요. 대신 비밀번호(또는 앱 비밀번호)를 사용해 주세요.",
"err_no_webmail_title": "{host}에 로그인 페이지가 없어요",
"err_pair_connect_detail": "컴퓨터에서 새 코드를 표시한 후 다시 스캔해 주세요.",
"err_pair_connect_title": "로그인했지만 {host}에 연결하지 못했어요",
"err_pair_insecure_detail": "{host}에서 암호화되지 않은 연결을 사용하려고 해요.",
"err_pair_network_detail": "연결 상태와 휴대폰에서 웹메일에 접속할 수 있는지 확인한 후 다시 시도해 주세요.",
"err_pair_rate_detail": "1분 정도 기다린 후 다시 시도해 주세요.",
"err_pair_server_detail": "새 코드로 다시 시도해 주세요. 계속 실패하면 관리자에게 문의해 주세요.",
"err_pair_server_title": "웹메일에서 로그인을 완료하지 못했어요",
"err_pair_unsupported_detail": "{host}에서 로그인 코드를 지원하지 않아요. 업데이트가 필요하거나 링크가 잘못된 주소를 가리키고 있을 수 있어요.",
"err_pair_unsupported_title": "이 웹메일은 기기를 연결할 수 없어요",
"err_pair_untrusted_detail": "{host}에서 앱이 확인할 수 없는 서버의 로그인 정보를 보냈어요.",
"err_pair_untrusted_title": "이 로그인은 신뢰할 수 없어요",
"err_rate_detail": "서버에서 잠시 기다려 달라고 요청했어요. 잠시 후 다시 시도해 주세요.",
"err_rate_detail_seconds": "서버에서 기다려 달라고 요청했어요. 약 {seconds}초 후에 다시 시도해 주세요.",
"err_rate_title": "시도 횟수가 너무 많아요",
@@ -487,6 +505,12 @@
"know_server": "서버 주소를 알고 있어요",
"known_server_desc": "이미 알고 있는 서버라서 설정이 필요 없어요",
"known_server_title": "{host}의 다른 계정",
"link_confirm_connect": "링크가 이 페이지에서 로그인하도록 요청하고 있어요. 메일에 {host}을(를) 사용하는 경우에만 계속하세요.",
"link_confirm_connect_add": "링크가 이 페이지에서 로그인해 계정을 추가하도록 요청하고 있어요. 메일에 {host}을(를) 사용하는 경우에만 계속하세요.",
"link_confirm_connect_title": "{host}의 로그인 페이지를 열까요?",
"link_confirm_pair": "이 링크는 {host}의 계정으로 로그인해요. 방금 컴퓨터에서 로그인 코드를 표시한 경우에만 계속하세요.",
"link_confirm_pair_add": "이 링크는 {host}의 계정을 추가하고 앱을 해당 계정으로 전환해요. 방금 컴퓨터에서 로그인 코드를 표시한 경우에만 계속하세요.",
"link_confirm_title": "링크로 로그인할까요?",
"looking_up": "서버를 찾는 중…",
"manual": "서버 정보 직접 입력",
"notice_bad_qr": "Bulwark 로그인 코드가 아니에요",
@@ -505,6 +529,12 @@
"pairing_detail": "이 기기를 {host}와(과) 페어링하는 중…",
"password_subtitle": "비밀번호는 이 서버로만 전송되며 기기의 키체인에 저장돼요.",
"password_title": "{host}에 로그인",
"paste_button": "붙여넣기",
"paste_clipboard_empty": "붙여넣을 내용이 없어요. 먼저 웹메일에서 링크를 복사해 주세요.",
"paste_hint": "웹메일에서 설정 → 보안 → 모바일 앱 연결을 열고 로그인 링크를 복사해 여기에 붙여넣어 주세요.",
"paste_invalid": "Bulwark 로그인 링크가 아니에요",
"paste_label": "로그인 링크",
"paste_title": "로그인 링크 붙여넣기",
"provider_detail": "비밀번호는 제공업체의 페이지에서 입력해요. Bulwark는 로그인 토큰만 저장하며, 언제든지 해지할 수 있어요.",
"provider_title": "비밀번호는 제공업체에만 전달돼요",
"qr_hint": "설정 → 보안 → 모바일 앱 연결에서 코드가 표시돼요. 카메라를 코드에 비춰 주세요.",
@@ -515,6 +545,7 @@
"server_hint": "브라우저에 입력하는 주소와 같아요. https://는 자동으로 추가돼요.",
"server_label": "서버 주소",
"server_not_found": "{domain}의 서버를 찾을 수 없어요. 직접 호스팅하는 경우 웹메일에 사용하는 주소를 입력해 주세요.",
"server_paste_hint": "로그인 링크가 있나요? 여기에 붙여넣어 주세요.",
"server_scan_hint": "잘 모르겠다면 대신 로그인 코드를 스캔해 주세요. 코드에 서버 주소가 포함되어 있어요.",
"server_subtitle": "웹메일에 접속할 때 사용하는 주소를 입력해 주세요.",
"server_title": "서버 주소가 무엇인가요?",
+32 -1
View File
@@ -460,12 +460,19 @@
"email_step_title": "Kāda ir jūsu e-pasta adrese?",
"email_step_title_add": "Kāda ir otra adrese?",
"email_title": "Izmantot manu e-pasta adresi",
"err_account_limit_detail": "Lai pievienotu citu kontu, noņemiet kādu kontu iestatījumos.",
"err_bad_detail": "Pārbaudiet e-pasta adresi un paroli. Ja jūsu kontā tiek izmantota divpakāpju pierakstīšanās, izveidojiet lietotnes paroli tīmekļa pastā un izmantojiet to šeit.",
"err_bad_title": "Tas neizdevās",
"err_cert_detail": "Servera drošības sertifikāts tika noraidīts. Ja tas ir jūsu serveris, pārbaudiet, vai sertifikāts ir derīgs un tā termiņš nav beidzies.",
"err_cert_title": "Neizdevās pārbaudīt: {host}",
"err_code_expired_detail": "Pierakstīšanās kodi ir derīgi dažas minūtes. Izveidojiet jaunu tīmekļa pastā un skenējiet vēlreiz.",
"err_code_expired_detail": "Pierakstīšanās kodi ir derīgi divas minūtes. Parādiet jaunu tīmekļa pastā un skenējiet vēlreiz.",
"err_code_expired_or_used_detail": "Parādiet jaunu tīmekļa pastā un skenējiet vēlreiz.",
"err_code_expired_or_used_title": "Šī koda derīgums ir beidzies, vai tas jau ir izmantots",
"err_code_expired_title": "Šī koda derīgums ir beidzies",
"err_code_invalid_detail": "Parādiet jaunu kodu tīmekļa pastā (Iestatījumi → Drošība → Saistīt mobilo lietotni) un noskenējiet to.",
"err_code_invalid_title": "Šis kods nav derīgs",
"err_code_used_detail": "Katrs kods darbojas tikai vienu reizi. Parādiet jaunu tīmekļa pastā un skenējiet vēlreiz.",
"err_code_used_title": "Šis kods jau ir izmantots",
"err_generic_detail": "Kaut kas nogāja greizi. Mēģiniet vēlreiz.",
"err_generic_title": "Pierakstīšanās neizdevās",
"err_interrupted_detail": "Atbilde neatbilda sāktajam pieprasījumam. Mēģiniet pierakstīties vēlreiz.",
@@ -474,6 +481,17 @@
"err_no_server_title": "Pasta serveris nav atrasts: {host}",
"err_no_webmail_detail": "Šim serverim nav Bulwark tīmekļa pasta un OAuth pierakstīšanās. Tā vietā izmantojiet paroli (vai lietotnes paroli).",
"err_no_webmail_title": "Pierakstīšanās lapa nav atrasta: {host}",
"err_pair_connect_detail": "Parādiet jaunu kodu datorā un skenējiet vēlreiz.",
"err_pair_connect_title": "Pierakstījāties, bet neizdevās izveidot savienojumu ar {host}",
"err_pair_insecure_detail": "{host} vēlas izmantot nešifrētu savienojumu.",
"err_pair_network_detail": "Pārbaudiet savienojumu un to, vai tālrunis var piekļūt tīmekļa pastam, un mēģiniet vēlreiz.",
"err_pair_rate_detail": "Uzgaidiet minūti un mēģiniet vēlreiz.",
"err_pair_server_detail": "Mēģiniet vēlreiz ar jaunu kodu. Ja tas joprojām neizdodas, sazinieties ar administratoru.",
"err_pair_server_title": "Tīmekļa pasts nevarēja pabeigt pierakstīšanos",
"err_pair_unsupported_detail": "{host} neatbalsta pierakstīšanās kodus. Iespējams, tam nepieciešams atjauninājums, vai saite norāda uz nepareizu adresi.",
"err_pair_unsupported_title": "Šis tīmekļa pasts nevar saistīt ierīces",
"err_pair_untrusted_detail": "{host} nosūtīja pierakstīšanās datus serverim, ko lietotne nevar pārbaudīt.",
"err_pair_untrusted_title": "Šai pierakstīšanās reizei nevar uzticēties",
"err_rate_detail": "Serveris lūdza brīdi uzgaidīt. Drīz mēģiniet vēlreiz.",
"err_rate_detail_seconds": "Serveris lūdza uzgaidīt. Mēģiniet vēlreiz pēc aptuveni {seconds} s.",
"err_rate_title": "Pārāk daudz mēģinājumu",
@@ -487,6 +505,12 @@
"know_server": "Es zinu sava servera adresi",
"known_server_desc": "Šis serveris mums jau ir zināms, tāpēc nekas nav jāiestata",
"known_server_title": "Vēl viens konts: {host}",
"link_confirm_connect": "Saite aicina pierakstīties šajā lapā. Turpiniet tikai tad, ja izmantojat {host} savam e-pastam.",
"link_confirm_connect_add": "Saite aicina pievienot kontu, pierakstoties šajā lapā. Turpiniet tikai tad, ja izmantojat {host} savam e-pastam.",
"link_confirm_connect_title": "Atvērt {host} pierakstīšanās lapu?",
"link_confirm_pair": "Šī saite pierakstās kontā no {host}. Turpiniet tikai tad, ja tikko datorā parādījāt pierakstīšanās kodu.",
"link_confirm_pair_add": "Šī saite pievieno kontu no {host} un pārslēdz lietotni uz to. Turpiniet tikai tad, ja tikko datorā parādījāt pierakstīšanās kodu.",
"link_confirm_title": "Pierakstīties ar saiti?",
"looking_up": "Meklē jūsu serveri…",
"manual": "Ievadīt servera datus manuāli",
"notice_bad_qr": "Šis nav Bulwark pierakstīšanās kods",
@@ -505,6 +529,12 @@
"pairing_detail": "Šī ierīce tiek savienota pārī: {host}…",
"password_subtitle": "Jūsu parole tiek nosūtīta tikai uz šo serveri un glabāta ierīces atslēgu krātuvē.",
"password_title": "Pierakstīšanās: {host}",
"paste_button": "Ielīmēt",
"paste_clipboard_empty": "Nav ko ielīmēt. Vispirms nokopējiet saiti tīmekļa pastā.",
"paste_hint": "Tīmekļa pastā atveriet Iestatījumi → Drošība → Saistīt mobilo lietotni, nokopējiet pierakstīšanās saiti un ielīmējiet to šeit.",
"paste_invalid": "Šī nav Bulwark pierakstīšanās saite",
"paste_label": "Pierakstīšanās saite",
"paste_title": "Ielīmēt pierakstīšanās saiti",
"provider_detail": "Jūs to ievadīsiet pakalpojumu sniedzēja lapā. Bulwark glabā tikai pierakstīšanās tokenu, ko varat jebkurā laikā atsaukt.",
"provider_title": "Jūsu parole paliek pie pakalpojumu sniedzēja",
"qr_hint": "Sadaļā Iestatījumi → Drošība → Saistīt mobilo lietotni tiek parādīts kods. Pavērsiet pret to kameru.",
@@ -515,6 +545,7 @@
"server_hint": "Tā pati adrese, ko rakstāt pārlūkā. https:// pievienosim mēs.",
"server_label": "Servera adrese",
"server_not_found": "Mēs neatradām serveri domēnam {domain}. Ja izmantojat savu serveri, norādiet adresi, ko lietojat tīmekļa pastam.",
"server_paste_hint": "Jums ir pierakstīšanās saite? Ielīmējiet to šeit.",
"server_scan_hint": "Ja šaubāties, tā vietā skenējiet pierakstīšanās kodu. Tajā ir servera adrese.",
"server_subtitle": "Ievadiet adresi, ar kuru atverat savu tīmekļa pastu.",
"server_title": "Kāda ir jūsu servera adrese?",
+32 -1
View File
@@ -460,12 +460,19 @@
"email_step_title": "Таны имэйл хаяг юу вэ?",
"email_step_title_add": "Нөгөө хаяг юу вэ?",
"email_title": "Имэйл хаягаа ашиглах",
"err_account_limit_detail": "Өөр бүртгэл нэмэхийн тулд Тохиргооноос нэг бүртгэлийг хасна уу.",
"err_bad_detail": "Имэйл болон нууц үгээ шалгана уу. Хэрэв таны бүртгэл хоёр шаттай нэвтрэлт ашигладаг бол вэбмэйлд аппын нууц үг үүсгээд энд ашиглана уу.",
"err_bad_title": "Амжилтгүй боллоо",
"err_cert_detail": "Серверийн аюулгүй байдлын гэрчилгээг татгалзсан. Хэрэв энэ таны өөрийн сервер бол гэрчилгээ хүчинтэй, хугацаа нь дуусаагүй эсэхийг шалгана уу.",
"err_cert_title": "Баталгаажуулж чадсангүй: {host}",
"err_code_expired_detail": "Нэвтрэх код хэдхэн минут хүчинтэй. Вэбмэйлд шинэ код үүсгээд дахин скан хийнэ үү.",
"err_code_expired_detail": "Нэвтрэх код хоёр минут хүчинтэй. Вэбмэйлд шинэ код харуулаад дахин скан хийнэ үү.",
"err_code_expired_or_used_detail": "Вэбмэйлд шинэ код харуулаад дахин скан хийнэ үү.",
"err_code_expired_or_used_title": "Энэ кодын хугацаа дууссан эсвэл аль хэдийн ашиглагдсан",
"err_code_expired_title": "Кодын хугацаа дууссан",
"err_code_invalid_detail": "Вэбмэйлд шинэ код харуулаад (Тохиргоо → Аюулгүй байдал → Мобайл програмыг холбох) скан хийнэ үү.",
"err_code_invalid_title": "Энэ код хүчингүй байна",
"err_code_used_detail": "Код бүр зөвхөн нэг удаа ажиллана. Вэбмэйлд шинэ код харуулаад дахин скан хийнэ үү.",
"err_code_used_title": "Энэ код аль хэдийн ашиглагдсан",
"err_generic_detail": "Ямар нэг алдаа гарлаа. Дахин оролдоно уу.",
"err_generic_title": "Нэвтэрч чадсангүй",
"err_interrupted_detail": "Хариу нь бидний эхлүүлсэн хүсэлттэй таарахгүй байна. Дахин нэвтэрч үзнэ үү.",
@@ -474,6 +481,17 @@
"err_no_server_title": "Мэйл сервер алга: {host}",
"err_no_webmail_detail": "Энэ серверт Bulwark вэбмэйл болон OAuth нэвтрэлт байхгүй. Оронд нь нууц үг (эсвэл аппын нууц үг) ашиглана уу.",
"err_no_webmail_title": "Нэвтрэх хуудас алга: {host}",
"err_pair_connect_detail": "Компьютер дээрээ шинэ код харуулаад дахин скан хийнэ үү.",
"err_pair_connect_title": "Нэвтэрсэн ч {host} руу холбогдож чадсангүй",
"err_pair_insecure_detail": "{host} шифрлэгдээгүй холболт ашиглахыг хүсэж байна.",
"err_pair_network_detail": "Холболтоо болон утас тань вэбмэйлд хүрч чадаж байгаа эсэхийг шалгаад дахин оролдоно уу.",
"err_pair_rate_detail": "Нэг минут хүлээгээд дахин оролдоно уу.",
"err_pair_server_detail": "Шинэ кодоор дахин оролдоно уу. Алдаа үргэлжилбэл админтайгаа холбогдоно уу.",
"err_pair_server_title": "Вэбмэйл нэвтрэлтийг дуусгаж чадсангүй",
"err_pair_unsupported_detail": "{host} нэвтрэх кодыг дэмждэггүй. Шинэчлэл шаардлагатай байж магадгүй, эсвэл холбоос буруу хаяг руу заасан байна.",
"err_pair_unsupported_title": "Энэ вэбмэйл төхөөрөмж холбох боломжгүй",
"err_pair_untrusted_detail": "{host} програмын баталгаажуулж чадахгүй серверийн нэвтрэх мэдээллийг илгээсэн.",
"err_pair_untrusted_title": "Энэ нэвтрэлтэд итгэх боломжгүй",
"err_rate_detail": "Сервер түр хүлээхийг хүслээ. Удахгүй дахин оролдоно уу.",
"err_rate_detail_seconds": "Сервер хүлээхийг хүслээ. Ойролцоогоор {seconds} секундын дараа дахин оролдоно уу.",
"err_rate_title": "Хэт олон оролдлого",
@@ -487,6 +505,12 @@
"know_server": "Би серверийн хаягаа мэднэ",
"known_server_desc": "Бид энэ серверийг аль хэдийн мэддэг тул тохируулах шаардлагагүй",
"known_server_title": "{host} дээрх өөр бүртгэл",
"link_confirm_connect": "Холбоос энэ хуудсанд нэвтрэхийг хүсэж байна. Та имэйлдээ {host}-ийг ашигладаг бол л үргэлжлүүлнэ үү.",
"link_confirm_connect_add": "Холбоос энэ хуудсанд нэвтэрч бүртгэл нэмэхийг хүсэж байна. Та имэйлдээ {host}-ийг ашигладаг бол л үргэлжлүүлнэ үү.",
"link_confirm_connect_title": "{host}-ийн нэвтрэх хуудсыг нээх үү?",
"link_confirm_pair": "Энэ холбоос {host} дээрх бүртгэлд нэвтрүүлнэ. Та саяхан компьютер дээрээ нэвтрэх код харуулсан бол л үргэлжлүүлнэ үү.",
"link_confirm_pair_add": "Энэ холбоос {host} дээрх бүртгэлийг нэмээд програмыг түүн рүү шилжүүлнэ. Та саяхан компьютер дээрээ нэвтрэх код харуулсан бол л үргэлжлүүлнэ үү.",
"link_confirm_title": "Холбоосоор нэвтрэх үү?",
"looking_up": "Таны серверийг хайж байна…",
"manual": "Серверийн мэдээллийг гараар оруулах",
"notice_bad_qr": "Энэ код Bulwark-ийн нэвтрэх код биш байна",
@@ -505,6 +529,12 @@
"pairing_detail": "Энэ төхөөрөмжийг холбож байна: {host}…",
"password_subtitle": "Таны нууц үгийг зөвхөн энэ сервер рүү илгээх бөгөөд төхөөрөмжийн түлхүүрийн санд хадгална.",
"password_title": "Нэвтрэх: {host}",
"paste_button": "Буулгах",
"paste_clipboard_empty": "Буулгах зүйл алга. Эхлээд вэбмэйлээс холбоосыг хуулна уу.",
"paste_hint": "Вэбмэйлд Тохиргоо → Аюулгүй байдал → Мобайл програмыг холбох хэсгийг нээж, нэвтрэх холбоосыг хуулаад энд буулгана уу.",
"paste_invalid": "Энэ Bulwark-ийн нэвтрэх холбоос биш байна",
"paste_label": "Нэвтрэх холбоос",
"paste_title": "Нэвтрэх холбоос буулгах",
"provider_detail": "Та нууц үгээ тэдний хуудсанд бичнэ. Bulwark зөвхөн нэвтрэх токен хадгалах бөгөөд та үүнийг хүссэн үедээ хүчингүй болгож болно.",
"provider_title": "Таны нууц үг үйлчилгээ үзүүлэгч дээрээ үлдэнэ",
"qr_hint": "Тохиргоо → Аюулгүй байдал → Мобайл програмыг холбох хэсэгт код гарна. Камераа түүн рүү чиглүүлнэ үү.",
@@ -515,6 +545,7 @@
"server_hint": "Хөтөч дээр бичдэг хаяг. https://-г бид нэмнэ.",
"server_label": "Серверийн хаяг",
"server_not_found": "{domain} домэйны сервер олдсонгүй. Хэрэв та өөрөө сервертэй бол вэбмэйлд ашигладаг хаягаа оруулна уу.",
"server_paste_hint": "Оронд нь нэвтрэх холбоос байгаа юу? Энд буулгана уу.",
"server_scan_hint": "Итгэлгүй байвал оронд нь нэвтрэх код скан хийнэ үү. Үүнд серверийн хаяг агуулагддаг.",
"server_subtitle": "Вэбмэйл рүүгээ ороход ашигладаг хаягаа оруулна уу.",
"server_title": "Таны серверийн хаяг юу вэ?",
+32 -1
View File
@@ -460,12 +460,19 @@
"email_step_title": "Hva er e-postadressen din?",
"email_step_title_add": "Hva er den andre adressen?",
"email_title": "Bruk e-postadressen min",
"err_account_limit_detail": "Fjern en konto i Innstillinger for å legge til en ny.",
"err_bad_detail": "Sjekk e-postadressen og passordet. Hvis kontoen din bruker tofaktorautentisering, oppretter du et app-passord i nettposten og bruker det her.",
"err_bad_title": "Det fungerte ikke",
"err_cert_detail": "Serverens sikkerhetssertifikat ble avvist. Hvis dette er din egen server, må du sjekke at sertifikatet er gyldig og ikke utløpt.",
"err_cert_title": "Kunne ikke bekrefte {host}",
"err_code_expired_detail": "Påloggingskoder er bare gyldige i noen få minutter. Lag en ny i nettposten, og skann på nytt.",
"err_code_expired_detail": "Påloggingskoder er gyldige i to minutter. Vis en ny i nettposten, og skann på nytt.",
"err_code_expired_or_used_detail": "Vis en ny i nettposten, og skann på nytt.",
"err_code_expired_or_used_title": "Koden er utløpt eller allerede brukt",
"err_code_expired_title": "Koden er utløpt",
"err_code_invalid_detail": "Vis en ny kode i nettposten (Innstillinger → Sikkerhet → Koble til mobilappen), og skann den.",
"err_code_invalid_title": "Koden er ikke gyldig",
"err_code_used_detail": "Hver kode virker bare én gang. Vis en ny i nettposten, og skann på nytt.",
"err_code_used_title": "Koden er allerede brukt",
"err_generic_detail": "Noe gikk galt. Prøv igjen.",
"err_generic_title": "Påloggingen mislyktes",
"err_interrupted_detail": "Svaret samsvarte ikke med forespørselen vi startet. Prøv å logge på igjen.",
@@ -474,6 +481,17 @@
"err_no_server_title": "Ingen e-postserver på {host}",
"err_no_webmail_detail": "Denne serveren har verken Bulwark-nettpost eller OAuth-pålogging. Bruk et passord (eller et app-passord) i stedet.",
"err_no_webmail_title": "Ingen påloggingsside på {host}",
"err_pair_connect_detail": "Vis en ny kode på datamaskinen, og skann på nytt.",
"err_pair_connect_title": "Pålogget, men kunne ikke koble til {host}",
"err_pair_insecure_detail": "{host} vil bruke en ukryptert tilkobling.",
"err_pair_network_detail": "Sjekk tilkoblingen og at telefonen kan nå nettposten, og prøv deretter på nytt.",
"err_pair_rate_detail": "Vent et minutt, og prøv deretter på nytt.",
"err_pair_server_detail": "Prøv på nytt med en ny kode. Hvis det fortsatt mislykkes, kontakt administratoren.",
"err_pair_server_title": "Nettposten kunne ikke fullføre påloggingen",
"err_pair_unsupported_detail": "{host} støtter ikke påloggingskoder. Den må kanskje oppdateres, eller lenken peker til feil adresse.",
"err_pair_unsupported_title": "Denne nettposten kan ikke koble til enheter",
"err_pair_untrusted_detail": "{host} sendte påloggingsinformasjon for en server appen ikke kan bekrefte.",
"err_pair_untrusted_title": "Denne påloggingen kan ikke stoles på",
"err_rate_detail": "Serveren ba oss vente litt. Prøv igjen om et øyeblikk.",
"err_rate_detail_seconds": "Serveren ba oss vente. Prøv igjen om omtrent {seconds} sekunder.",
"err_rate_title": "For mange forsøk",
@@ -487,6 +505,12 @@
"know_server": "Jeg kjenner serveradressen min",
"known_server_desc": "Vi kjenner allerede denne serveren, så du trenger ikke å sette opp noe",
"known_server_title": "En annen konto på {host}",
"link_confirm_connect": "En lenke ber om å logge på på denne siden. Fortsett bare hvis du bruker {host} til e-posten din.",
"link_confirm_connect_add": "En lenke ber om å legge til en konto ved å logge på på denne siden. Fortsett bare hvis du bruker {host} til e-posten din.",
"link_confirm_connect_title": "Åpne påloggingssiden til {host}?",
"link_confirm_pair": "Denne lenken logger på en konto fra {host}. Fortsett bare hvis du nettopp viste en påloggingskode på datamaskinen.",
"link_confirm_pair_add": "Denne lenken legger til en konto fra {host} og bytter appen til den. Fortsett bare hvis du nettopp viste en påloggingskode på datamaskinen.",
"link_confirm_title": "Logge på med en lenke?",
"looking_up": "Slår opp serveren din…",
"manual": "Skriv inn serverdetaljer manuelt",
"notice_bad_qr": "Koden er ikke en påloggingskode for Bulwark",
@@ -505,6 +529,12 @@
"pairing_detail": "Kobler denne enheten til {host}…",
"password_subtitle": "Passordet ditt sendes bare til denne serveren og lagres i nøkkelringen på enheten.",
"password_title": "Logg på {host}",
"paste_button": "Lim inn",
"paste_clipboard_empty": "Ingenting å lime inn. Kopier lenken i nettposten først.",
"paste_hint": "Åpne Innstillinger → Sikkerhet → Koble til mobilappen i nettposten, kopier påloggingslenken og lim den inn her.",
"paste_invalid": "Det er ikke en påloggingslenke for Bulwark",
"paste_label": "Påloggingslenke",
"paste_title": "Lim inn påloggingslenke",
"provider_detail": "Du skriver det inn på deres side. Bulwark lagrer bare et påloggingstoken, som du når som helst kan tilbakekalle.",
"provider_title": "Passordet ditt blir hos leverandøren",
"qr_hint": "Innstillinger → Sikkerhet → Koble til mobilappen viser en kode. Rett kameraet mot den.",
@@ -515,6 +545,7 @@
"server_hint": "Samme adresse som du skriver inn i nettleseren. Vi legger til https:// for deg.",
"server_label": "Serveradresse",
"server_not_found": "Vi fant ingen server for {domain}. Hvis du drifter din egen server, er det adressen du bruker for nettposten.",
"server_paste_hint": "Har du en påloggingslenke i stedet? Lim den inn her.",
"server_scan_hint": "Hvis du er usikker, kan du skanne en påloggingskode i stedet. Den inneholder serveradressen.",
"server_subtitle": "Skriv inn adressen du bruker for å nå nettposten din.",
"server_title": "Hva er serveradressen din?",
+32 -1
View File
@@ -460,12 +460,19 @@
"email_step_title": "Wat is uw e-mailadres?",
"email_step_title_add": "Wat is het andere adres?",
"email_title": "Mijn e-mailadres gebruiken",
"err_account_limit_detail": "Verwijder een account in Instellingen om er nog een toe te voegen.",
"err_bad_detail": "Controleer uw e-mailadres en wachtwoord. Als uw account tweefactorauthenticatie gebruikt, maak dan in de webmail een app-wachtwoord aan en gebruik dat hier.",
"err_bad_title": "Dat is niet gelukt",
"err_cert_detail": "Het beveiligingscertificaat van de server is geweigerd. Als dit uw eigen server is, controleer dan of het certificaat geldig en niet verlopen is.",
"err_cert_title": "Kan {host} niet verifiëren",
"err_code_expired_detail": "Inlogcodes zijn maar een paar minuten geldig. Genereer een nieuwe in de webmail en scan opnieuw.",
"err_code_expired_detail": "Inlogcodes zijn twee minuten geldig. Toon een nieuwe in de webmail en scan opnieuw.",
"err_code_expired_or_used_detail": "Toon een nieuwe in de webmail en scan opnieuw.",
"err_code_expired_or_used_title": "Die code is verlopen of al gebruikt",
"err_code_expired_title": "Die code is verlopen",
"err_code_invalid_detail": "Toon een nieuwe code in de webmail (Instellingen → Beveiliging → Mobiele app koppelen) en scan die.",
"err_code_invalid_title": "Die code is niet geldig",
"err_code_used_detail": "Elke code werkt maar één keer. Toon een nieuwe in de webmail en scan opnieuw.",
"err_code_used_title": "Die code is al gebruikt",
"err_generic_detail": "Er is iets misgegaan. Probeer het opnieuw.",
"err_generic_title": "Inloggen mislukt",
"err_interrupted_detail": "Het antwoord kwam niet overeen met het gestarte verzoek. Probeer opnieuw in te loggen.",
@@ -474,6 +481,17 @@
"err_no_server_title": "Geen mailserver op {host}",
"err_no_webmail_detail": "Deze server heeft geen Bulwark-webmail en geen OAuth-aanmelding. Gebruik in plaats daarvan een wachtwoord (of een app-wachtwoord).",
"err_no_webmail_title": "Geen inlogpagina op {host}",
"err_pair_connect_detail": "Toon een nieuwe code op uw computer en scan opnieuw.",
"err_pair_connect_title": "Ingelogd, maar kan geen verbinding maken met {host}",
"err_pair_insecure_detail": "{host} wil een onversleutelde verbinding gebruiken.",
"err_pair_network_detail": "Controleer uw verbinding en of uw telefoon de webmail kan bereiken, en probeer het opnieuw.",
"err_pair_rate_detail": "Wacht een minuut en probeer het dan opnieuw.",
"err_pair_server_detail": "Probeer het opnieuw met een nieuwe code. Blijft het mislukken, neem dan contact op met uw beheerder.",
"err_pair_server_title": "De webmail kon het inloggen niet voltooien",
"err_pair_unsupported_detail": "{host} ondersteunt geen inlogcodes. Mogelijk is een update nodig, of de link verwijst naar het verkeerde adres.",
"err_pair_unsupported_title": "Deze webmail kan geen apparaten koppelen",
"err_pair_untrusted_detail": "{host} heeft inloggegevens gestuurd voor een server die de app niet kan verifiëren.",
"err_pair_untrusted_title": "Deze aanmelding kan niet worden vertrouwd",
"err_rate_detail": "De server vroeg ons even te wachten. Probeer het zo opnieuw.",
"err_rate_detail_seconds": "De server vroeg ons te wachten. Probeer het over ongeveer {seconds} seconden opnieuw.",
"err_rate_title": "Te veel pogingen",
@@ -487,6 +505,12 @@
"know_server": "Ik ken mijn serveradres",
"known_server_desc": "We kennen deze server al, dus er hoeft niets te worden ingesteld",
"known_server_title": "Nog een account op {host}",
"link_confirm_connect": "Een link vraagt om op deze pagina in te loggen. Ga alleen door als u {host} voor uw e-mail gebruikt.",
"link_confirm_connect_add": "Een link vraagt om een account toe te voegen door op deze pagina in te loggen. Ga alleen door als u {host} voor uw e-mail gebruikt.",
"link_confirm_connect_title": "Inlogpagina van {host} openen?",
"link_confirm_pair": "Deze link logt u in op een account van {host}. Ga alleen door als u zojuist een inlogcode op uw computer hebt getoond.",
"link_confirm_pair_add": "Deze link voegt een account van {host} toe en schakelt de app daarnaar over. Ga alleen door als u zojuist een inlogcode op uw computer hebt getoond.",
"link_confirm_title": "Inloggen met een link?",
"looking_up": "Uw server opzoeken…",
"manual": "Servergegevens handmatig invoeren",
"notice_bad_qr": "Die code is geen Bulwark-inlogcode",
@@ -505,6 +529,12 @@
"pairing_detail": "Dit apparaat wordt gekoppeld aan {host}…",
"password_subtitle": "Uw wachtwoord wordt alleen naar deze server verzonden en opgeslagen in de sleutelhanger van het apparaat.",
"password_title": "Inloggen bij {host}",
"paste_button": "Plakken",
"paste_clipboard_empty": "Niets om te plakken. Kopieer eerst de link in de webmail.",
"paste_hint": "Open in de webmail Instellingen → Beveiliging → Mobiele app koppelen, kopieer de inloglink en plak die hier.",
"paste_invalid": "Dat is geen Bulwark-inloglink",
"paste_label": "Inloglink",
"paste_title": "Inloglink plakken",
"provider_detail": "U typt het op hun pagina. Bulwark bewaart alleen een inlogtoken, dat u op elk moment kunt intrekken.",
"provider_title": "Uw wachtwoord blijft bij uw provider",
"qr_hint": "Instellingen → Beveiliging → Mobiele app koppelen toont een code. Richt de camera erop.",
@@ -515,6 +545,7 @@
"server_hint": "Hetzelfde adres dat u in de browser typt. We voegen https:// voor u toe.",
"server_label": "Serveradres",
"server_not_found": "We konden geen server vinden voor {domain}. Als u zelf host, is het het adres dat u voor de webmail gebruikt.",
"server_paste_hint": "Hebt u in plaats daarvan een inloglink? Plak die hier.",
"server_scan_hint": "Weet u het niet zeker? Scan dan een inlogcode. Die bevat het serveradres.",
"server_subtitle": "Voer het adres in waarmee u uw webmail bereikt.",
"server_title": "Wat is uw serveradres?",
+32 -1
View File
@@ -460,12 +460,19 @@
"email_step_title": "Jaki jest Twój adres e-mail?",
"email_step_title_add": "Jaki jest drugi adres?",
"email_title": "Użyj mojego adresu e-mail",
"err_account_limit_detail": "Usuń konto w Ustawieniach, aby dodać kolejne.",
"err_bad_detail": "Sprawdź adres e-mail i hasło. Jeśli Twoje konto używa logowania dwuskładnikowego, utwórz hasło aplikacji w webmailu i użyj go tutaj.",
"err_bad_title": "To nie zadziałało",
"err_cert_detail": "Certyfikat bezpieczeństwa serwera został odrzucony. Jeśli to Twój własny serwer, sprawdź, czy certyfikat jest ważny i nie wygasł.",
"err_cert_title": "Nie można zweryfikować: {host}",
"err_code_expired_detail": "Kody logowania są ważne przez kilka minut. Wygeneruj nowy w webmailu i zeskanuj go ponownie.",
"err_code_expired_detail": "Kody logowania są ważne przez dwie minuty. Wyświetl nowy w webmailu i zeskanuj go ponownie.",
"err_code_expired_or_used_detail": "Wyświetl nowy w webmailu i zeskanuj go ponownie.",
"err_code_expired_or_used_title": "Ten kod wygasł lub został już użyty",
"err_code_expired_title": "Ten kod wygasł",
"err_code_invalid_detail": "Wyświetl nowy kod w webmailu (Ustawienia → Bezpieczeństwo → Połącz aplikację mobilną) i zeskanuj go.",
"err_code_invalid_title": "Ten kod jest nieprawidłowy",
"err_code_used_detail": "Każdy kod działa tylko raz. Wyświetl nowy w webmailu i zeskanuj go ponownie.",
"err_code_used_title": "Ten kod został już użyty",
"err_generic_detail": "Coś poszło nie tak. Spróbuj ponownie.",
"err_generic_title": "Logowanie nie powiodło się",
"err_interrupted_detail": "Odpowiedź nie pasuje do rozpoczętego żądania. Spróbuj zalogować się ponownie.",
@@ -474,6 +481,17 @@
"err_no_server_title": "Brak serwera poczty: {host}",
"err_no_webmail_detail": "Ten serwer nie ma webmaila Bulwark ani logowania OAuth. Użyj hasła (lub hasła aplikacji).",
"err_no_webmail_title": "Brak strony logowania: {host}",
"err_pair_connect_detail": "Wyświetl nowy kod na komputerze i zeskanuj go ponownie.",
"err_pair_connect_title": "Zalogowano, ale nie można połączyć się z {host}",
"err_pair_insecure_detail": "{host} chce użyć nieszyfrowanego połączenia.",
"err_pair_network_detail": "Sprawdź połączenie i czy telefon ma dostęp do webmaila, a potem spróbuj ponownie.",
"err_pair_rate_detail": "Poczekaj minutę i spróbuj ponownie.",
"err_pair_server_detail": "Spróbuj ponownie z nowym kodem. Jeśli nadal się nie udaje, skontaktuj się z administratorem.",
"err_pair_server_title": "Webmail nie mógł dokończyć logowania",
"err_pair_unsupported_detail": "{host} nie obsługuje kodów logowania. Może wymagać aktualizacji albo link wskazuje zły adres.",
"err_pair_unsupported_title": "Ten webmail nie może łączyć urządzeń",
"err_pair_untrusted_detail": "{host} przesłał dane logowania dla serwera, którego aplikacja nie może zweryfikować.",
"err_pair_untrusted_title": "Temu logowaniu nie można zaufać",
"err_rate_detail": "Serwer poprosił o chwilę przerwy. Spróbuj ponownie za moment.",
"err_rate_detail_seconds": "Serwer poprosił o odczekanie. Spróbuj ponownie za około {seconds} s.",
"err_rate_title": "Zbyt wiele prób",
@@ -487,6 +505,12 @@
"know_server": "Znam adres swojego serwera",
"known_server_desc": "Ten serwer jest już znany, więc nie trzeba niczego konfigurować",
"known_server_title": "Kolejne konto na {host}",
"link_confirm_connect": "Link prosi o zalogowanie się na tej stronie. Kontynuuj tylko, jeśli używasz {host} do poczty.",
"link_confirm_connect_add": "Link prosi o dodanie konta przez zalogowanie się na tej stronie. Kontynuuj tylko, jeśli używasz {host} do poczty.",
"link_confirm_connect_title": "Otworzyć stronę logowania {host}?",
"link_confirm_pair": "Ten link loguje do konta z {host}. Kontynuuj tylko, jeśli kod logowania został właśnie wyświetlony na Twoim komputerze.",
"link_confirm_pair_add": "Ten link dodaje konto z {host} i przełącza na nie aplikację. Kontynuuj tylko, jeśli kod logowania został właśnie wyświetlony na Twoim komputerze.",
"link_confirm_title": "Zalogować się za pomocą linku?",
"looking_up": "Wyszukiwanie serwera…",
"manual": "Wprowadź dane serwera ręcznie",
"notice_bad_qr": "To nie jest kod logowania Bulwark",
@@ -505,6 +529,12 @@
"pairing_detail": "Parowanie tego urządzenia: {host}…",
"password_subtitle": "Hasło jest wysyłane tylko do tego serwera i przechowywane w magazynie kluczy urządzenia.",
"password_title": "Zaloguj się do {host}",
"paste_button": "Wklej",
"paste_clipboard_empty": "Nie ma nic do wklejenia. Najpierw skopiuj link w webmailu.",
"paste_hint": "W webmailu otwórz Ustawienia → Bezpieczeństwo → Połącz aplikację mobilną, skopiuj link logowania i wklej go tutaj.",
"paste_invalid": "To nie jest link logowania Bulwark",
"paste_label": "Link logowania",
"paste_title": "Wklej link logowania",
"provider_detail": "Wpiszesz je na stronie dostawcy. Bulwark przechowuje tylko token logowania, który możesz w każdej chwili unieważnić.",
"provider_title": "Twoje hasło zostaje u dostawcy",
"qr_hint": "W Ustawienia → Bezpieczeństwo → Połącz aplikację mobilną wyświetla się kod. Skieruj na niego aparat.",
@@ -515,6 +545,7 @@
"server_hint": "Ten sam adres, który wpisujesz w przeglądarce. Dodamy https:// za Ciebie.",
"server_label": "Adres serwera",
"server_not_found": "Nie znaleźliśmy serwera dla {domain}. Jeśli masz własny serwer, podaj adres, którego używasz do webmaila.",
"server_paste_hint": "Masz zamiast tego link logowania? Wklej go tutaj.",
"server_scan_hint": "Jeśli nie masz pewności, zeskanuj kod logowania. Zawiera on adres serwera.",
"server_subtitle": "Wpisz adres, pod którym otwierasz webmail.",
"server_title": "Jaki jest adres Twojego serwera?",
+32 -1
View File
@@ -460,12 +460,19 @@
"email_step_title": "Qual é o seu endereço de e-mail?",
"email_step_title_add": "Qual é o outro endereço?",
"email_title": "Usar meu endereço de e-mail",
"err_account_limit_detail": "Remova uma conta em Configurações para adicionar outra.",
"err_bad_detail": "Verifique seu e-mail e sua senha. Se sua conta usa autenticação de dois fatores, crie uma senha de aplicativo no webmail e use-a aqui.",
"err_bad_title": "Não funcionou",
"err_cert_detail": "O certificado de segurança do servidor foi rejeitado. Se o servidor for seu, verifique se o certificado é válido e não expirou.",
"err_cert_title": "Não foi possível verificar {host}",
"err_code_expired_detail": "Os códigos de login valem por alguns minutos. Gere um novo no webmail e escaneie de novo.",
"err_code_expired_detail": "Os códigos de login valem por dois minutos. Mostre um novo no webmail e escaneie de novo.",
"err_code_expired_or_used_detail": "Mostre um novo no webmail e escaneie de novo.",
"err_code_expired_or_used_title": "Esse código expirou ou já foi usado",
"err_code_expired_title": "Esse código expirou",
"err_code_invalid_detail": "Mostre um novo código no webmail (Configurações → Segurança → Vincular aplicativo móvel) e escaneie-o.",
"err_code_invalid_title": "Esse código não é válido",
"err_code_used_detail": "Cada código funciona uma única vez. Mostre um novo no webmail e escaneie de novo.",
"err_code_used_title": "Esse código já foi usado",
"err_generic_detail": "Algo deu errado. Tente novamente.",
"err_generic_title": "Falha no login",
"err_interrupted_detail": "A resposta não corresponde à solicitação que iniciamos. Tente entrar novamente.",
@@ -474,6 +481,17 @@
"err_no_server_title": "Nenhum servidor de e-mail em {host}",
"err_no_webmail_detail": "Este servidor não tem webmail do Bulwark nem login OAuth. Use uma senha (ou uma senha de aplicativo).",
"err_no_webmail_title": "Nenhuma página de login em {host}",
"err_pair_connect_detail": "Mostre um novo código no computador e escaneie de novo.",
"err_pair_connect_title": "Login feito, mas não foi possível conectar a {host}",
"err_pair_insecure_detail": "{host} quer usar uma conexão sem criptografia.",
"err_pair_network_detail": "Verifique sua conexão e se o celular consegue acessar o webmail, depois tente de novo.",
"err_pair_rate_detail": "Aguarde um minuto e tente de novo.",
"err_pair_server_detail": "Tente de novo com um novo código. Se continuar falhando, fale com o administrador.",
"err_pair_server_title": "O webmail não conseguiu concluir o login",
"err_pair_unsupported_detail": "{host} não oferece suporte a códigos de login. Talvez precise de uma atualização, ou o link aponta para o endereço errado.",
"err_pair_unsupported_title": "Este webmail não consegue vincular dispositivos",
"err_pair_untrusted_detail": "{host} enviou dados de login para um servidor que o aplicativo não consegue verificar.",
"err_pair_untrusted_title": "Este login não é confiável",
"err_rate_detail": "O servidor pediu para aguardarmos um momento. Tente novamente em breve.",
"err_rate_detail_seconds": "O servidor pediu para aguardarmos. Tente novamente em cerca de {seconds} segundos.",
"err_rate_title": "Tentativas demais",
@@ -487,6 +505,12 @@
"know_server": "Sei o endereço do meu servidor",
"known_server_desc": "Já conhecemos este servidor, então não há nada para configurar",
"known_server_title": "Outra conta em {host}",
"link_confirm_connect": "Um link pede para fazer login nesta página. Só continue se você usa {host} para o seu e-mail.",
"link_confirm_connect_add": "Um link pede para adicionar uma conta fazendo login nesta página. Só continue se você usa {host} para o seu e-mail.",
"link_confirm_connect_title": "Abrir a página de login de {host}?",
"link_confirm_pair": "Este link faz login em uma conta de {host}. Só continue se você acabou de mostrar um código de login no computador.",
"link_confirm_pair_add": "Este link adiciona uma conta de {host} e muda o aplicativo para ela. Só continue se você acabou de mostrar um código de login no computador.",
"link_confirm_title": "Entrar com um link?",
"looking_up": "Procurando seu servidor…",
"manual": "Inserir os dados do servidor manualmente",
"notice_bad_qr": "Esse código não é um código de login do Bulwark",
@@ -505,6 +529,12 @@
"pairing_detail": "Pareando este dispositivo com {host}…",
"password_subtitle": "Sua senha é enviada apenas para este servidor e fica guardada no armazenamento seguro do dispositivo.",
"password_title": "Entrar em {host}",
"paste_button": "Colar",
"paste_clipboard_empty": "Nada para colar. Copie o link no webmail primeiro.",
"paste_hint": "No webmail, abra Configurações → Segurança → Vincular aplicativo móvel, copie o link de login e cole aqui.",
"paste_invalid": "Isso não é um link de login do Bulwark",
"paste_label": "Link de login",
"paste_title": "Colar link de login",
"provider_detail": "Você vai digitá-la na página deles. O Bulwark armazena apenas um token de login, que você pode revogar a qualquer momento.",
"provider_title": "Sua senha fica com seu provedor",
"qr_hint": "Configurações → Segurança → Vincular aplicativo móvel mostra um código. Aponte a câmera para ele.",
@@ -515,6 +545,7 @@
"server_hint": "O mesmo endereço que você digita no navegador. Adicionamos o https:// para você.",
"server_label": "Endereço do servidor",
"server_not_found": "Não encontramos um servidor para {domain}. Se você hospeda o seu próprio, o endereço é o que você usa para o webmail.",
"server_paste_hint": "Tem um link de login? Cole aqui.",
"server_scan_hint": "Se não tiver certeza, escaneie um código de login. Ele contém o endereço do servidor.",
"server_subtitle": "Digite o endereço que você usa para acessar seu webmail.",
"server_title": "Qual é o endereço do seu servidor?",
+32 -1
View File
@@ -460,12 +460,19 @@
"email_step_title": "Care este adresa dvs. de e-mail?",
"email_step_title_add": "Care este cealaltă adresă?",
"email_title": "Folosiți adresa mea de e-mail",
"err_account_limit_detail": "Eliminați un cont din Setări pentru a adăuga altul.",
"err_bad_detail": "Verificați adresa de e-mail și parola. Dacă contul dvs. folosește autentificarea în doi pași, creați o parolă pentru aplicații în webmail și folosiți-o aici.",
"err_bad_title": "Nu a funcționat",
"err_cert_detail": "Certificatul de securitate al serverului a fost respins. Dacă este serverul dvs., verificați dacă certificatul este valid și nu a expirat.",
"err_cert_title": "Nu s-a putut verifica {host}",
"err_code_expired_detail": "Codurile de autentificare sunt valabile câteva minute. Generați unul nou în webmail și scanați-l din nou.",
"err_code_expired_detail": "Codurile de autentificare sunt valabile două minute. Afișați unul nou în webmail și scanați-l din nou.",
"err_code_expired_or_used_detail": "Afișați unul nou în webmail și scanați-l din nou.",
"err_code_expired_or_used_title": "Acest cod a expirat sau a fost deja folosit",
"err_code_expired_title": "Acest cod a expirat",
"err_code_invalid_detail": "Afișați un cod nou în webmail (Setări → Securitate → Aplicație mobilă) și scanați-l.",
"err_code_invalid_title": "Acest cod nu este valid",
"err_code_used_detail": "Fiecare cod funcționează o singură dată. Afișați unul nou în webmail și scanați-l din nou.",
"err_code_used_title": "Acest cod a fost deja folosit",
"err_generic_detail": "Ceva nu a funcționat. Încercați din nou.",
"err_generic_title": "Autentificarea a eșuat",
"err_interrupted_detail": "Răspunsul nu corespunde cererii pe care am inițiat-o. Încercați să vă autentificați din nou.",
@@ -474,6 +481,17 @@
"err_no_server_title": "Niciun server de e-mail la {host}",
"err_no_webmail_detail": "Acest server nu are webmail Bulwark și nici autentificare OAuth. Folosiți în schimb o parolă (sau o parolă pentru aplicații).",
"err_no_webmail_title": "Nicio pagină de autentificare la {host}",
"err_pair_connect_detail": "Afișați un cod nou pe computer și scanați-l din nou.",
"err_pair_connect_title": "Autentificat, dar nu se poate conecta la {host}",
"err_pair_insecure_detail": "{host} vrea să folosească o conexiune necriptată.",
"err_pair_network_detail": "Verificați conexiunea și dacă telefonul poate accesa webmailul, apoi încercați din nou.",
"err_pair_rate_detail": "Așteptați un minut, apoi încercați din nou.",
"err_pair_server_detail": "Încercați din nou cu un cod nou. Dacă tot nu funcționează, contactați administratorul.",
"err_pair_server_title": "Webmailul nu a putut finaliza autentificarea",
"err_pair_unsupported_detail": "{host} nu acceptă coduri de autentificare. Poate are nevoie de o actualizare sau linkul duce la o adresă greșită.",
"err_pair_unsupported_title": "Acest webmail nu poate asocia dispozitive",
"err_pair_untrusted_detail": "{host} a trimis date de autentificare pentru un server pe care aplicația nu îl poate verifica.",
"err_pair_untrusted_title": "Această autentificare nu este de încredere",
"err_rate_detail": "Serverul ne-a cerut să așteptăm puțin. Încercați din nou în scurt timp.",
"err_rate_detail_seconds": "Serverul ne-a cerut să așteptăm. Încercați din nou în aproximativ {seconds, plural, one {# secundă} few {# secunde} other {# de secunde}}.",
"err_rate_title": "Prea multe încercări",
@@ -487,6 +505,12 @@
"know_server": "Cunosc adresa serverului meu",
"known_server_desc": "Cunoaștem deja acest server, deci nu este nimic de configurat",
"known_server_title": "Alt cont pe {host}",
"link_confirm_connect": "Un link cere autentificarea pe această pagină. Continuați doar dacă folosiți {host} pentru e-mail.",
"link_confirm_connect_add": "Un link cere adăugarea unui cont prin autentificare pe această pagină. Continuați doar dacă folosiți {host} pentru e-mail.",
"link_confirm_connect_title": "Deschideți pagina de autentificare a {host}?",
"link_confirm_pair": "Acest link vă autentifică într-un cont de la {host}. Continuați doar dacă tocmai ați afișat un cod de autentificare pe computer.",
"link_confirm_pair_add": "Acest link adaugă un cont de la {host} și comută aplicația pe el. Continuați doar dacă tocmai ați afișat un cod de autentificare pe computer.",
"link_confirm_title": "Vă autentificați cu un link?",
"looking_up": "Se caută serverul dvs.…",
"manual": "Introduceți manual detaliile serverului",
"notice_bad_qr": "Acesta nu este un cod de autentificare Bulwark",
@@ -505,6 +529,12 @@
"pairing_detail": "Se asociază acest dispozitiv cu {host}…",
"password_subtitle": "Parola dvs. este trimisă doar către acest server și este stocată în spațiul securizat al dispozitivului.",
"password_title": "Autentificare la {host}",
"paste_button": "Lipiți",
"paste_clipboard_empty": "Nu este nimic de lipit. Copiați mai întâi linkul din webmail.",
"paste_hint": "În webmail, deschideți Setări → Securitate → Aplicație mobilă, copiați linkul de autentificare și lipiți-l aici.",
"paste_invalid": "Acesta nu este un link de autentificare Bulwark",
"paste_label": "Link de autentificare",
"paste_title": "Lipiți linkul de autentificare",
"provider_detail": "O veți introduce pe pagina lor. Bulwark stochează doar un token de autentificare, pe care îl puteți revoca oricând.",
"provider_title": "Parola dvs. rămâne la furnizor",
"qr_hint": "Setări → Securitate → Aplicație mobilă afișează un cod. Îndreptați camera spre el.",
@@ -515,6 +545,7 @@
"server_hint": "Aceeași adresă pe care o introduceți în browser. Adăugăm noi https://.",
"server_label": "Adresa serverului",
"server_not_found": "Nu am găsit un server pentru {domain}. Dacă îl găzduiți chiar dvs., adresa este cea pe care o folosiți pentru webmail.",
"server_paste_hint": "Aveți în schimb un link de autentificare? Lipiți-l aici.",
"server_scan_hint": "Dacă nu sunteți sigur, scanați în schimb un cod de autentificare. Acesta conține adresa serverului.",
"server_subtitle": "Introduceți adresa pe care o folosiți pentru a accesa webmailul.",
"server_title": "Care este adresa serverului dvs.?",

Some files were not shown because too many files have changed in this diff Show More