@oxy.so/core 7.9.1 → 7.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/dist/cjs/api/storeInstaller.js +46 -0
  2. package/dist/cjs/i18n/compactLocale.js +36 -0
  3. package/dist/cjs/i18n/compactLocaleValues.generated.js +4 -0
  4. package/dist/cjs/i18n/index.js +15 -15
  5. package/dist/cjs/i18n/locales/compact/ar-SA.generated.js +5 -0
  6. package/dist/cjs/i18n/locales/compact/bn-BD.generated.js +5 -0
  7. package/dist/cjs/i18n/locales/compact/ca-ES.generated.js +5 -0
  8. package/dist/cjs/i18n/locales/compact/de-DE.generated.js +5 -0
  9. package/dist/cjs/i18n/locales/compact/es-ES.generated.js +5 -0
  10. package/dist/cjs/i18n/locales/compact/fr-FR.generated.js +5 -0
  11. package/dist/cjs/i18n/locales/compact/hi-IN.generated.js +5 -0
  12. package/dist/cjs/i18n/locales/compact/id-ID.generated.js +5 -0
  13. package/dist/cjs/i18n/locales/compact/it-IT.generated.js +5 -0
  14. package/dist/cjs/i18n/locales/compact/ja-JP.generated.js +5 -0
  15. package/dist/cjs/i18n/locales/compact/ko-KR.generated.js +5 -0
  16. package/dist/cjs/i18n/locales/compact/pt-PT.generated.js +5 -0
  17. package/dist/cjs/i18n/locales/compact/ru-RU.generated.js +5 -0
  18. package/dist/cjs/i18n/locales/compact/tr-TR.generated.js +5 -0
  19. package/dist/cjs/i18n/locales/compact/zh-CN.generated.js +5 -0
  20. package/dist/cjs/index.js +10 -4
  21. package/dist/esm/api/storeInstaller.js +40 -0
  22. package/dist/esm/i18n/compactLocale.js +30 -0
  23. package/dist/esm/i18n/compactLocaleValues.generated.js +2 -0
  24. package/dist/esm/i18n/index.js +15 -15
  25. package/dist/esm/i18n/locales/compact/ar-SA.generated.js +3 -0
  26. package/dist/esm/i18n/locales/compact/bn-BD.generated.js +3 -0
  27. package/dist/esm/i18n/locales/compact/ca-ES.generated.js +3 -0
  28. package/dist/esm/i18n/locales/compact/de-DE.generated.js +3 -0
  29. package/dist/esm/i18n/locales/compact/es-ES.generated.js +3 -0
  30. package/dist/esm/i18n/locales/compact/fr-FR.generated.js +3 -0
  31. package/dist/esm/i18n/locales/compact/hi-IN.generated.js +3 -0
  32. package/dist/esm/i18n/locales/compact/id-ID.generated.js +3 -0
  33. package/dist/esm/i18n/locales/compact/it-IT.generated.js +3 -0
  34. package/dist/esm/i18n/locales/compact/ja-JP.generated.js +3 -0
  35. package/dist/esm/i18n/locales/compact/ko-KR.generated.js +3 -0
  36. package/dist/esm/i18n/locales/compact/pt-PT.generated.js +3 -0
  37. package/dist/esm/i18n/locales/compact/ru-RU.generated.js +3 -0
  38. package/dist/esm/i18n/locales/compact/tr-TR.generated.js +3 -0
  39. package/dist/esm/i18n/locales/compact/zh-CN.generated.js +3 -0
  40. package/dist/esm/index.js +3 -0
  41. package/dist/types/api/storeInstaller.d.ts +155 -0
  42. package/dist/types/i18n/compactLocale.d.ts +2 -0
  43. package/dist/types/i18n/compactLocaleValues.generated.d.ts +2 -0
  44. package/dist/types/i18n/locales/compact/ar-SA.generated.d.ts +3 -0
  45. package/dist/types/i18n/locales/compact/bn-BD.generated.d.ts +3 -0
  46. package/dist/types/i18n/locales/compact/ca-ES.generated.d.ts +3 -0
  47. package/dist/types/i18n/locales/compact/de-DE.generated.d.ts +3 -0
  48. package/dist/types/i18n/locales/compact/es-ES.generated.d.ts +3 -0
  49. package/dist/types/i18n/locales/compact/fr-FR.generated.d.ts +3 -0
  50. package/dist/types/i18n/locales/compact/hi-IN.generated.d.ts +3 -0
  51. package/dist/types/i18n/locales/compact/id-ID.generated.d.ts +3 -0
  52. package/dist/types/i18n/locales/compact/it-IT.generated.d.ts +3 -0
  53. package/dist/types/i18n/locales/compact/ja-JP.generated.d.ts +3 -0
  54. package/dist/types/i18n/locales/compact/ko-KR.generated.d.ts +3 -0
  55. package/dist/types/i18n/locales/compact/pt-PT.generated.d.ts +3 -0
  56. package/dist/types/i18n/locales/compact/ru-RU.generated.d.ts +3 -0
  57. package/dist/types/i18n/locales/compact/tr-TR.generated.d.ts +3 -0
  58. package/dist/types/i18n/locales/compact/zh-CN.generated.d.ts +3 -0
  59. package/dist/types/index.d.ts +2 -0
  60. package/package.json +5 -3
  61. package/src/api/storeInstaller.ts +158 -0
  62. package/src/i18n/README.md +11 -0
  63. package/src/i18n/compactLocale.ts +32 -0
  64. package/src/i18n/compactLocaleValues.generated.ts +2 -0
  65. package/src/i18n/index.ts +15 -15
  66. package/src/i18n/locales/compact/ar-SA.generated.ts +4 -0
  67. package/src/i18n/locales/compact/bn-BD.generated.ts +4 -0
  68. package/src/i18n/locales/compact/ca-ES.generated.ts +4 -0
  69. package/src/i18n/locales/compact/de-DE.generated.ts +4 -0
  70. package/src/i18n/locales/compact/es-ES.generated.ts +4 -0
  71. package/src/i18n/locales/compact/fr-FR.generated.ts +4 -0
  72. package/src/i18n/locales/compact/hi-IN.generated.ts +4 -0
  73. package/src/i18n/locales/compact/id-ID.generated.ts +4 -0
  74. package/src/i18n/locales/compact/it-IT.generated.ts +4 -0
  75. package/src/i18n/locales/compact/ja-JP.generated.ts +4 -0
  76. package/src/i18n/locales/compact/ko-KR.generated.ts +4 -0
  77. package/src/i18n/locales/compact/pt-PT.generated.ts +4 -0
  78. package/src/i18n/locales/compact/ru-RU.generated.ts +4 -0
  79. package/src/i18n/locales/compact/tr-TR.generated.ts +4 -0
  80. package/src/i18n/locales/compact/zh-CN.generated.ts +4 -0
  81. package/src/index.ts +15 -0
@@ -0,0 +1,158 @@
1
+ /**
2
+ * The store's installer: how a store installs, opens and updates an application on a machine
3
+ * that installs applications, beside `oxy.store`, which reads the catalogue.
4
+ *
5
+ * `oxy.store` says what the store lists; an installer says what the machine can do with a
6
+ * listing. A runtime that installs applications registers one (OxyOS's Bloom host registers one
7
+ * backed by the system's install service before the application's code runs, OxyOS ADR 0030
8
+ * decision 9; ADR 0053 here). Where none is registered — the web, iOS, Android — there is
9
+ * nothing to install, and a store shows what it shows without one. An application never asks
10
+ * which platform it runs on: it asks whether there is an installer.
11
+ *
12
+ * The installer is the store's hands, never its judge. It is given a listing's slug and nothing
13
+ * else: the machine resolves slug → package → release from the store's signed metadata, verifies
14
+ * it, and asks the person in a sheet of its own that no application can draw or press. The store
15
+ * learns the outcome and nothing of the sheet. Its errors say whether the machine already told the
16
+ * person (`told`), so a store never repeats what the system said.
17
+ *
18
+ * React-free and dependency-free, as everything in `@oxy.so/core`.
19
+ */
20
+
21
+ /** Where a listing stands on this machine, for the action a store's page shows. */
22
+ export type StoreInstallState =
23
+ /** The store has a release this machine can run, and it is not installed: *Get*. */
24
+ | { state: 'notInstalled' }
25
+ /** Being installed or updated: a progress ring. `fraction` is null while it cannot be told. */
26
+ | { state: 'installing'; fraction: number | null }
27
+ /** Installed and current: *Open*. */
28
+ | { state: 'installed'; version: string }
29
+ /**
30
+ * Installed, with a newer release: *Update*. `needsConsent` when the newer release asks for
31
+ * more than the installed one, which the machine asks the person for in its own sheet.
32
+ */
33
+ | { state: 'updateAvailable'; version: string; newVersion: string; needsConsent: boolean }
34
+ /** The store has no release this machine can run: *Not available for this computer*. */
35
+ | { state: 'unavailable' };
36
+
37
+ /** Why the machine could not do what the store asked. */
38
+ export type StoreInstallerFailure =
39
+ /** The machine's install service is not running. */
40
+ | 'serviceUnavailable'
41
+ /** The store has no release of it this machine can run. */
42
+ | 'notAvailable'
43
+ /** It is not installed (opening or updating it). */
44
+ | 'notInstalled'
45
+ /** The installer refused the request (it lacks the right to install, or it was not a person's press). */
46
+ | 'refused'
47
+ /** The install or update itself failed (a download, a verification, a compile). */
48
+ | 'failed';
49
+
50
+ /** A failure of an installer's request. */
51
+ export class StoreInstallerError extends Error {
52
+ readonly reason: StoreInstallerFailure;
53
+ /**
54
+ * Whether the machine already told the person, in its own sheet. A store says nothing more
55
+ * when it did: the system's word is the one the person reads.
56
+ */
57
+ readonly told: boolean;
58
+
59
+ constructor(reason: StoreInstallerFailure, options: { told?: boolean; message?: string } = {}) {
60
+ super(options.message ?? reason);
61
+ this.name = 'StoreInstallerError';
62
+ this.reason = reason;
63
+ this.told = options.told ?? false;
64
+ }
65
+ }
66
+
67
+ /** An update the machine has for an installed application. */
68
+ export interface StoreUpdate {
69
+ /** The installer's own id for the application; what `apply` takes. Never a slug. */
70
+ id: string;
71
+ /** Its name in the person's language, from the store's signed metadata. */
72
+ name: string;
73
+ /** The version installed, and the one the update brings. */
74
+ version: string;
75
+ newVersion: string;
76
+ /** Bytes the machine would fetch: only what it does not have already. */
77
+ downloadSize: number;
78
+ /** What is new, in the person's language, or null when the release says nothing. */
79
+ releaseNotes: string | null;
80
+ /** The update asks for more than the installed version: the machine asks the person first. */
81
+ needsConsent: boolean;
82
+ /** Applied, waiting for the running copy to quit: it runs at its next launch. */
83
+ atNextLaunch: boolean;
84
+ }
85
+
86
+ /** The machine's updates for this account: one state, which every page that shows updates reads. */
87
+ export interface StoreUpdates {
88
+ updates: StoreUpdate[];
89
+ /** A check of the store is running. */
90
+ checking: boolean;
91
+ /** When the store was last read (ISO 8601), or null. */
92
+ lastChecked: string | null;
93
+ /** The last check failed. */
94
+ checkFailed: boolean;
95
+ }
96
+
97
+ /** The machine's updates, as one state that changes by itself. */
98
+ export interface StoreUpdatesSource {
99
+ /** The state last told, or null before the machine has said. */
100
+ current(): StoreUpdates | null;
101
+ /**
102
+ * The state as it is now, asked of the machine without reading the store. Rejects with a
103
+ * `StoreInstallerError` when the machine cannot say (its install service is not running).
104
+ */
105
+ read(): Promise<StoreUpdates>;
106
+ /** Reads the store now. A check asked while one runs joins it. */
107
+ check(): Promise<StoreUpdates>;
108
+ /** Applies these updates; one that needs consent is asked in the machine's sheet first. */
109
+ apply(ids: readonly string[]): Promise<void>;
110
+ /** Applies every update, asking for consent in turn after the rest. */
111
+ applyAll(): Promise<void>;
112
+ /** Told each change; returns the unsubscribe. */
113
+ subscribe(listener: (updates: StoreUpdates) => void): () => void;
114
+ }
115
+
116
+ /**
117
+ * What a runtime that installs applications gives a store. Every action that changes anything is
118
+ * asked from a person's press: the machine refuses what the person did not ask for.
119
+ */
120
+ export interface StoreInstaller {
121
+ /**
122
+ * Where each listing stands. Rejects with a `StoreInstallerError` when the machine cannot say
123
+ * (its install service is not running): a store then shows its usual action and lets the
124
+ * machine say why when it is pressed.
125
+ */
126
+ status(slugs: readonly string[]): Promise<Record<string, StoreInstallState>>;
127
+ /**
128
+ * Installs a listing's application: the machine's sheet, then the install. Resolves when the
129
+ * person declined in the sheet or the install is done; the progress in between is told to
130
+ * `subscribe`'s listeners as `installing`.
131
+ */
132
+ install(slug: string): Promise<'installed' | 'declined'>;
133
+ /** Updates it, asking in the machine's sheet when the update needs the person's consent. */
134
+ update(slug: string): Promise<'updated' | 'declined'>;
135
+ /** Removes it and its data, after the machine's sheet. */
136
+ uninstall(slug: string): Promise<'removed' | 'declined'>;
137
+ /** Opens the installed application. */
138
+ open(slug: string): Promise<void>;
139
+ /** Told each listing whose state changed; returns the unsubscribe. */
140
+ subscribe(listener: (slug: string, state: StoreInstallState) => void): () => void;
141
+ /** The account's updates (a store's *Updates* page). */
142
+ readonly updates: StoreUpdatesSource;
143
+ }
144
+
145
+ let installer: StoreInstaller | null = null;
146
+
147
+ /**
148
+ * Registers the machine's installer, or removes it with null. A runtime calls it once, before
149
+ * the application's code runs; nothing else should.
150
+ */
151
+ export function setStoreInstaller(next: StoreInstaller | null): void {
152
+ installer = next;
153
+ }
154
+
155
+ /** The machine's installer, or null where nothing installs applications. */
156
+ export function getStoreInstaller(): StoreInstaller | null {
157
+ return installer;
158
+ }
@@ -0,0 +1,11 @@
1
+ # Account translations
2
+
3
+ Edit the original dictionaries in `locales/`. After a change, run
4
+ `bun run generate:compact-locales` in `packages/core` and commit the generated
5
+ files. `bun run check:compact-locales` verifies that the generated files are
6
+ current; the package build and tests run this check automatically.
7
+
8
+ The public loader imports a compact module per non-English language. Each module
9
+ reconstructs its full dictionary from its own data and a private table of
10
+ frequently repeated English literals. It does not depend on the mutable English
11
+ dictionary, and the original dictionary modules remain present in the package.
@@ -0,0 +1,32 @@
1
+ import shared from './compactLocaleValues.generated';
2
+
3
+ function isRecord(value: unknown): value is Record<string, unknown> {
4
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
5
+ }
6
+
7
+ function clone(value: unknown): unknown {
8
+ if (Array.isArray(value)) return value.map(clone);
9
+ if (isRecord(value))
10
+ return Object.fromEntries(Object.entries(value).map(([key, child]) => [key, clone(child)]));
11
+ return value;
12
+ }
13
+
14
+ /** Reconstruct a complete independent dictionary from generated data. */
15
+ export function restoreCompactLocale(value: unknown): unknown {
16
+ if (Array.isArray(value)) {
17
+ if (value[0] === -1) return clone(value[1]);
18
+ const index: unknown = value[0];
19
+ if (typeof index !== 'number' || !Number.isInteger(index) || index < 0) {
20
+ throw new Error('Invalid compact locale reference');
21
+ }
22
+ const literal: unknown = shared[index];
23
+ if (typeof literal !== 'string') throw new Error('Invalid compact locale reference');
24
+ return literal;
25
+ }
26
+ if (isRecord(value)) {
27
+ return Object.fromEntries(
28
+ Object.entries(value).map(([key, child]) => [key, restoreCompactLocale(child)]),
29
+ );
30
+ }
31
+ return value;
32
+ }
@@ -0,0 +1,2 @@
1
+ // Generated by scripts/generateCompactLocales.ts; do not edit.
2
+ export default ["Language","Commons","you@example.com","Email","Marketing","About preferences","Alerts","Appearance","Apps you authorize to sign in with your Oxy account will appear here","Channels","Connected apps","Dark","Email digest","Failed to revoke access","Failed to update notification preferences","Following system: reduce motion is on","Last used {{relative}}","Light","Manage push, email, and security alerts","Manage third-party app access","Marketing emails","Minimise animations across Oxy apps","No connected apps","Notifications","Periodic summary of your account activity","Preferences","Preferences sync across every Oxy app you sign into","Product news and occasional offers","Push notifications","Real-time alerts on your devices","Reduce motion","Region","Revoke","Revoke access","Revoke {{name}}'s access to your Oxy account?","Revoked access for {{name}}","Security alerts","Sign-ins, recovery codes, and key changes","System default","Theme","Theme, motion, and regional settings","Timezone","Unable to detect timezone","yourname"] as const;
package/src/i18n/index.ts CHANGED
@@ -14,21 +14,21 @@ const FALLBACK = 'en-US';
14
14
  * is the fallback for every missing key, so it is always present.
15
15
  */
16
16
  const LOADERS: Record<string, () => Promise<{ default: LocaleDict }>> = {
17
- 'es-ES': () => import('./locales/es-ES'),
18
- 'ca-ES': () => import('./locales/ca-ES'),
19
- 'fr-FR': () => import('./locales/fr-FR'),
20
- 'de-DE': () => import('./locales/de-DE'),
21
- 'it-IT': () => import('./locales/it-IT'),
22
- 'pt-PT': () => import('./locales/pt-PT'),
23
- 'ja-JP': () => import('./locales/ja-JP'),
24
- 'ko-KR': () => import('./locales/ko-KR'),
25
- 'zh-CN': () => import('./locales/zh-CN'),
26
- 'ar-SA': () => import('./locales/ar-SA'),
27
- 'bn-BD': () => import('./locales/bn-BD'),
28
- 'hi-IN': () => import('./locales/hi-IN'),
29
- 'id-ID': () => import('./locales/id-ID'),
30
- 'ru-RU': () => import('./locales/ru-RU'),
31
- 'tr-TR': () => import('./locales/tr-TR'),
17
+ 'es-ES': () => import('./locales/compact/es-ES.generated'),
18
+ 'ca-ES': () => import('./locales/compact/ca-ES.generated'),
19
+ 'fr-FR': () => import('./locales/compact/fr-FR.generated'),
20
+ 'de-DE': () => import('./locales/compact/de-DE.generated'),
21
+ 'it-IT': () => import('./locales/compact/it-IT.generated'),
22
+ 'pt-PT': () => import('./locales/compact/pt-PT.generated'),
23
+ 'ja-JP': () => import('./locales/compact/ja-JP.generated'),
24
+ 'ko-KR': () => import('./locales/compact/ko-KR.generated'),
25
+ 'zh-CN': () => import('./locales/compact/zh-CN.generated'),
26
+ 'ar-SA': () => import('./locales/compact/ar-SA.generated'),
27
+ 'bn-BD': () => import('./locales/compact/bn-BD.generated'),
28
+ 'hi-IN': () => import('./locales/compact/hi-IN.generated'),
29
+ 'id-ID': () => import('./locales/compact/id-ID.generated'),
30
+ 'ru-RU': () => import('./locales/compact/ru-RU.generated'),
31
+ 'tr-TR': () => import('./locales/compact/tr-TR.generated'),
32
32
  };
33
33
 
34
34
  /** Base subtag → the dictionary that serves it. */
@@ -0,0 +1,4 @@
1
+ // Generated by scripts/generateCompactLocales.ts; do not edit.
2
+ import { restoreCompactLocale } from '../../compactLocale';
3
+ import type { LocaleDict } from '../../index';
4
+ export default restoreCompactLocale({"signin":{"title":"تسجيل الدخول","subtitle":"استخدم حسابك في Oxy","addAccountTitle":"إضافة حساب آخر","addAccountSubtitle":"تسجيل الدخول بحساب آخر","actions":{"continue":"متابعة","back":"رجوع"},"createAccountLink":"جديد على Oxy؟ أنشئ حسابًا","status":{"signingIn":"جارٍ تسجيل الدخول…"},"subtitleToApp":"للمتابعة إلى {{app}}","orContinueWith":"أو تابع باستخدام","qr":{"caption":"امسح باستخدام Commons لتسجيل الدخول","renew":"عرض رمز جديد"},"device":{"codeHint":"تأكد من أن هاتفك يعرض هذا الرمز"},"errors":{"rateLimited":"محاولات كثيرة جدًا. حاول مرة أخرى بعد {{seconds}} ث.","invalidCredentials":"اسم المستخدم أو البريد الإلكتروني أو كلمة المرور غير صحيح. إذا كانت عدة حسابات تستخدم هذا البريد الإلكتروني، فسجّل الدخول باسم المستخدم.","emailAccountsFull":"هذا البريد الإلكتروني لديه بالفعل الحد الأقصى من الحسابات.","codeInvalid":"الرمز غير صحيح أو انتهت صلاحيته.","requestExpired":"انتهت صلاحية تسجيل الدخول هذا. أرسل رسالة جديدة.","secondFactorInvalid":"الرمز غير صحيح. جرّب الرمز الحالي.","originNotAllowed":"تسجيل الدخول غير متاح هنا.","generic":"حدث خطأ ما. يُرجى المحاولة مرة أخرى.","notConfigured":"تسجيل الدخول غير متاح","notConfiguredDescription":"لم يُعدّ {{app}} لتسجيل الدخول بعد. تواصل مع مطوّر التطبيق.","failed":"تعذّر بدء تسجيل الدخول","failedDescription":"حدث خطأ ما. يُرجى المحاولة مرة أخرى."},"emailAccounts":{"title":"اختر حسابًا","description":"لدى {{identifier}} عدة حسابات. اختر الحساب الذي تريد تسجيل الدخول به."},"chooser":{"subtitleToApp":"للمتابعة إلى {{app}}","title":"اختر حسابًا","subtitle":"تابع بأحد الحسابات أدناه، أو استخدم حسابًا آخر.","useAnother":"استخدم حسابًا آخر","continueAs":"المتابعة باسم {{name}}"},"terms":{"before":"بالمتابعة، أنت توافق على","termsLink":"شروط الخدمة","and":"و","privacyLink":"سياسة الخصوصية"},"noAccount":"ليس لديك حساب؟","createAccount":"إنشاء حساب","identifier":{"label":"البريد الإلكتروني أو اسم المستخدم","placeholder":[2],"required":"أدخل بريدك الإلكتروني أو اسم المستخدم."},"checkEmail":{"title":"تحقق من بريدك","description":"إذا كان هناك حساب يطابق {{identifier}}، فقد أرسلنا إليه رمزًا ورابطًا لتسجيل الدخول.","codeLabel":"الرمز","codeHint":"اكتب الرمز الوارد في الرسالة، أو افتح رابطها في هذا المتصفح.","codeHasLetters":"هل يحتوي رمزك على أحرف؟","codeDigitsOnly":"هل يتكون رمزك من أرقام فقط؟","resend":"أرسل رسالة جديدة","resendIn":"أرسل رسالة جديدة بعد {{seconds}} ث","resent":"أرسلنا رسالة جديدة.","retryLater":"أرسلنا عدة رسائل بالفعل. انتظر بضع دقائق ثم حاول مرة أخرى.","usePassword":"استخدم كلمة المرور بدلًا من ذلك","differentAccount":"استخدم حسابًا آخر"},"password":{"title":"أدخل كلمة المرور","label":"كلمة المرور","required":"أدخل كلمة المرور.","forgot":"نسيتها؟ احصل على رمز عبر البريد"},"secondFactor":{"title":"التحقق بخطوتين","description":"أدخل الرمز من تطبيق المصادقة.","backupDescription":"أدخل أحد رموزك الاحتياطية. يعمل كل رمز مرة واحدة فقط.","label":"رمز المصادقة","backupLabel":"رمز احتياطي","useBackup":"استخدم رمزًا احتياطيًا","useAuthenticator":"استخدم تطبيق المصادقة"},"link":{"approvedTitle":"سجّلت الدخول","approvedDescription":"ارجع إلى التطبيق الذي طلبت منه تسجيل الدخول: سيتابع تلقائيًا. يمكنك إغلاق علامة التبويب هذه.","otherDeviceTitle":"افتح الرابط في المتصفح نفسه","otherDeviceDescription":"يعمل هذا الرابط فقط في المتصفح الذي طلبت منه تسجيل الدخول. افتحه هناك، أو اكتب الرمز الوارد في الرسالة داخل التطبيق.","invalidTitle":"لا يمكن استخدام هذا الرابط","invalidDescription":"انتهت صلاحيته أو استُخدم من قبل. اطلب رسالة جديدة من التطبيق، أو اكتب الرمز الوارد في أحدث رسالة."}},"signup":{"title":"أنشئ حسابك","subtitle":"اختر اسم المستخدم. ثم نؤكد بريدك الإلكتروني.","createInCommons":"أنشئها في Commons بدلًا من ذلك","backToSignInLink":"لديك حساب بالفعل؟ سجّل الدخول","username":{"label":"اسم المستخدم","placeholder":[43],"required":"اختر اسم مستخدم.","taken":"اسم المستخدم هذا مستخدم بالفعل."},"email":{"title":"ما بريدك الإلكتروني؟","subtitle":"تسجّل الدخول به: نرسل إليك رمزًا في كل مرة. لا يراه أحد غيرك.","label":"البريد الإلكتروني","placeholder":[2],"invalid":"أدخل بريدًا إلكترونيًا صالحًا."},"commonsSubtitle":"أو أنشئ هويتك في Commons واحتفظ بمفتاحك بنفسك.","laterNote":"يمكنك لاحقًا إضافة كلمة مرور أو تطبيق مصادقة من إعدادات الأمان في حسابك."},"accountSwitcher":{"loading":"جارٍ تحميل الحسابات...","qrHeadline":"سجّل الدخول بهوية Oxy الخاصة بك","signInWithOxy":"تسجيل الدخول باستخدام Oxy","signUpWithOxy":"التسجيل باستخدام Oxy","getCommons":"احصل على Commons","commonsNotInstalled":"لا تملك Commons؟ احصل على التطبيق لتسجيل الدخول بمعرّف Oxy الخاص بك.","showQrAnyway":"لدي Commons على جهاز آخر","switchWhileSignedInAs":"تبديل الحساب، مسجّل الدخول باسم {{name}}","manageOnDevice":"إدارة الحسابات على هذا الجهاز","continueWithOxy":"المتابعة باستخدام Oxy","havingTrouble":"هل تواجه مشكلة؟","progress":{"preparing":"جارٍ تحضير الطلب","awaitingApproval":"في انتظار الموافقة","scanWithCommons":"امسح الرمز باستخدام Commons على هاتفك","continueInCommons":"تابع في Commons","checkCommons":"تحقّق من Commons على هاتفك","openedInCommons":"تم الفتح في Commons","confirming":"جارٍ تأكيد الهوية","confirmed":"تم تأكيد الهوية"},"signInFailures":{"denied":"تم رفض تسجيل الدخول في Commons.","expired":"انتهت صلاحية طلب تسجيل الدخول. يُرجى المحاولة مرة أخرى.","network":"تعذّر الاتصال بـ Oxy. تحقّق من اتصالك وحاول مرة أخرى.","notConfigured":"هذا التطبيق غير مُعدّ لتسجيل الدخول بعد.","unsupportedFlow":"لا يمكن إكمال تسجيل الدخول هنا.","claimFailed":"تمت الموافقة على تسجيل الدخول، لكن تعذّر إكماله. يُرجى المحاولة مرة أخرى.","generic":"تعذّر تسجيل الدخول. يُرجى المحاولة مرة أخرى."},"linkOpenFailed":"تعذّر فتح الرابط. يُرجى المحاولة مرة أخرى."},"common":{"stepOf":"الخطوة {{step}} من {{total}}","actions":{"back":"رجوع","continue":"متابعة","next":"التالي","getStarted":"ابدأ","createAccount":"إنشاء حساب","signIn":"تسجيل الدخول","verify":"التحقق","resetPassword":"إعادة تعيين كلمة المرور","signedOut":"تم تسجيل الخروج","close":"إغلاق","tryAgain":"حاول مرة أخرى"},"links":{"recoverAccount":"استعادة حسابك","signUp":"التسجيل"},"labels":{"username":"اسم المستخدم","email":"البريد الإلكتروني","password":"كلمة المرور","confirmPassword":"تأكيد كلمة المرور"},"revoke":[32],"errors":{"signOutAllFailed":"حدثت مشكلة أثناء تسجيل الخروج من جميع الحسابات. يرجى المحاولة مرة أخرى."}},"notifications":{"title":[23],"subtitle":[18],"updateError":[14],"sections":{"channels":[9],"alerts":[6],"marketing":[4]},"items":{"push":{"title":[28],"subtitle":[29]},"emailDigest":{"title":[12],"subtitle":[24]},"securityAlerts":{"title":[36],"subtitle":[37]},"marketingEmails":{"title":[20],"subtitle":[27]}}},"preferences":{"title":[25],"subtitle":[40],"sections":{"appearance":[7],"language":[0],"region":[31]},"theme":{"light":[17],"dark":[11],"system":[38]},"items":{"theme":{"title":[39]},"reduceMotion":{"title":[30],"subtitle":[21],"systemOn":[15]},"language":{"title":[0]},"timezone":{"title":[41],"unknown":[42]},"about":{"title":[5],"subtitle":[26]}}},"connectedApps":{"title":[10],"subtitle":[19],"empty":{"title":[22],"subtitle":[8]},"item":{"granted":"ممنوح {{relative}}","lastUsed":[16]},"confirm":{"title":[33],"message":[34]},"toasts":{"revoked":[35],"revokeFailed":[13]}},"accountMenu":{"label":"قائمة الحساب","manage":"إدارة حساب Oxy الخاص بك","viewProfile":"عرض الملف الشخصي","addAnother":"إضافة حساب آخر","signOutAll":"تسجيل الخروج من جميع الحسابات","open":"قائمة الحساب","openHint":"يفتح قائمة الحساب","openWithUser":"قائمة حساب {{name}}","switching":"جارٍ تبديل الحساب…","signOutAccount":"تسجيل خروج {{name}}","greeting":"مرحبًا، {{name}}!","switchAccount":"تبديل الحساب","storage":{"title":"تخزين Oxy","usage":"{{used}} من {{total}} مستخدم","used":"مستخدم","free":"متاح","unavailable":"تفاصيل الاستخدام غير متاحة","upgrade":"ترقية الخطة","manage":"إدارة التخزين"},"data":"بياناتك في Oxy","settings":"إعدادات Oxy","help":"المساعدة والملاحظات","signOut":"تسجيل الخروج","privacy":"سياسة الخصوصية","terms":"شروط الخدمة"},"emailCode":{"title":"تحقق من بريدك","sentTo":"أرسلنا رمزًا من 6 أرقام إلى {{email}}.","label":"الرمز","resend":"أرسل رمزًا جديدًا","resent":"أرسلنا رمزًا جديدًا.","changeEmail":"استخدم بريدًا آخر","errors":{"codeInvalid":"الرمز غير صحيح أو انتهت صلاحيته.","tooManyAttempts":"رموز خاطئة كثيرة. اطلب رمزًا جديدًا.","expired":"استغرق الأمر وقتًا طويلًا. ابدأ من جديد.","unavailable":"لا يستطيع Oxy إرسال البريد الآن. حاول لاحقًا.","rateLimited":"رموز كثيرة. حاول لاحقًا."}},"deleteAccount":{"keyless":{"subtitle":"سيُحذف @{{username}} وكل ما فيه نهائيًا. اكتب اسم المستخدم، ثم أكّد برمز نرسله إلى بريدك.","action":"حذف الحساب","done":"حُذف حسابك.","doneDescription":"سُجّل خروجك.","keyed":"يستخدم هذا الحساب Commons: احذفه في Oxy Commons من الإعدادات > حذف الحساب، بمفتاحه."},"handoff":{"elsewhereMessage":"حذف حسابك يتطلب مفتاح هويتك، وهو غير موجود على هذا الجهاز. افتح Oxy Commons على الجهاز الذي يحتفظ به وانتقل إلى الإعدادات > حذف الحساب."}},"linkCommons":{"title":"اربط Commons","subtitle":"احتفظ بمفتاحك: اربط Commons ليصبح هذا الحساب لك وحدك. يُحذف بريده الإلكتروني، وتصبح عبارة الاسترداد في Commons طريقك للعودة.","scan":"على هاتفك، افتح Commons واختر «لدي حساب Oxy على الويب» ثم امسح هذا الرمز.","waiting":"بانتظار Commons…","compareTitle":"تحقق من الرمز","compare":"يعرض Commons الرمز نفسه. إن لم يكن كذلك، ألغِ العملية.","confirm":"نعم، اربط Commons","cancel":"إلغاء","doneTitle":"تم ربط Commons","done":"أصبح هذا الحساب ذاتي الحفظ. حُذف بريده الإلكتروني: عبارة الاسترداد في Commons هي طريقك للعودة.","already":"يستخدم هذا الحساب Commons بالفعل.","expired":"انتهت صلاحية هذا الرمز.","renew":"اعرض رمزًا جديدًا","failed":"تعذّر ربط Commons. حاول مجددًا.","confirmTitle":"أكّد الربط","confirmDescription":"للإنهاء، أكّد أنك أنت برمز نرسله إلى بريدك.","confirmPasswordDescription":"للإنهاء، أكّد أنك أنت بكلمة المرور.","row":"احتفظ بمفتاحك بنفسك مع Commons"},"reauth":{"title":"أكّد أنك أنت","emailDescription":"سنرسل رمزًا إلى بريدك لتأكيد هذا التغيير.","sendCode":"أرسل الرمز","codeSent":"أرسلنا رمزًا من 6 أرقام إلى بريدك.","codeLabel":"الرمز من الرسالة","passwordLabel":"كلمة المرور الحالية","usePassword":"استخدم كلمة المرور بدلًا من ذلك","useEmail":"احصل على رمز عبر البريد بدلًا من ذلك","errors":{"invalid":"لم ينجح ذلك. تحقق مما كتبته وحاول مرة أخرى.","totpRequired":"أدخل أيضًا الرمز من تطبيق المصادقة."}},"signInSecurity":{"title":"تسجيل الدخول والأمان","subtitle":"البريد الإلكتروني وكلمة المرور وتطبيق المصادقة والأماكن التي سجّلت الدخول فيها","methodsTitle":"كيف تسجّل الدخول","notPersonal":"الحساب الشخصي وحده يسجّل الدخول ببريد إلكتروني أو كلمة مرور أو تطبيق مصادقة.","loadFailed":"تعذّر تحميل طرق تسجيل الدخول لهذا الحساب.","retry":"حاول مجددًا","noEmailWarning":"لا يوجد بريد إلكتروني لهذا الحساب. تسجّل الدخول بكلمة المرور فقط، وإذا نسيتها فلا توجد طريقة لاستعادة الحساب.","status":{"on":"مفعّل","off":"متوقف"},"commons":{"title":[1]},"errors":{"lastSignInMethod":"هذه طريقتك الوحيدة لتسجيل الدخول. أضف طريقة أخرى أولًا.","passwordRequired":"عيّن كلمة مرور أولًا، ثم أكّد بها.","emailUnchanged":"هذا بريدك الإلكتروني بالفعل."},"email":{"title":"البريد الإلكتروني","none":"لا يوجد بريد إلكتروني","description":"تصل رموز تسجيل الدخول وروابطه وتنبيهات الأمان إلى هذا العنوان.","noneDescription":"أضف بريدًا إلكترونيًا لتسجّل الدخول برمز أو رابط، ولتستعيد حسابك إذا نسيت كلمة المرور.","change":"غيّر البريد الإلكتروني","add":"أضف بريدًا إلكترونيًا","remove":"أزل البريد الإلكتروني","removeNeedsPassword":"لإزالة بريدك الإلكتروني، عيّن كلمة مرور أولًا: ستكون طريقتك الوحيدة لتسجيل الدخول.","newLabel":"عنوان البريد الإلكتروني الجديد","newDescription":"سنرسل رمزًا إلى العنوان الجديد للتحقق من أنه لك.","invalid":"أدخل عنوان بريد إلكتروني صالحًا.","sendCode":"أرسل الرمز","confirmTitle":"أكّد البريد الإلكتروني الجديد","confirmDescription":"أدخل الرمز الذي أرسلناه إلى {{email}}، ثم أكّد أنك أنت.","codeLabel":"الرمز المرسل إلى البريد الجديد","save":"احفظ البريد الإلكتروني","saved":"حُدّث بريدك الإلكتروني. سُجّل الخروج من الأجهزة الأخرى.","removeTitle":"أزل بريدك الإلكتروني","removeDescription":"ستسجّل الدخول بكلمة المرور فقط. إذا نسيتها، فلا توجد طريقة لاستعادة الحساب. أكّد بكلمة المرور.","removed":"أُزيل بريدك الإلكتروني. سُجّل الخروج من الأجهزة الأخرى."},"password":{"title":"كلمة المرور","setTitle":"عيّن كلمة مرور","changeTitle":"غيّر كلمة المرور","description":"سجّل الدخول بكلمة المرور بدلًا من رمز عبر البريد. استخدم {{min}} أحرف على الأقل.","newLabel":"كلمة المرور الجديدة","repeatLabel":"كرّر كلمة المرور","tooShort":"استخدم {{min}} أحرف على الأقل.","mismatch":"كلمتا المرور غير متطابقتين.","signOutOthers":"سجّل الخروج من كل مكان آخر","save":"احفظ كلمة المرور","saved":"حُفظت كلمة المرور.","row":"اختياري: سجّل الدخول بكلمة مرور","remove":"أزل كلمة المرور","removeTitle":"أزل كلمة مرورك","removeDescription":"ستسجّل الدخول برمز أو رابط يُرسل إلى بريدك.","removed":"أُزيلت كلمة المرور. سُجّل الخروج من الأجهزة الأخرى."},"totp":{"title":"تطبيق المصادقة","description":"بعد رمز البريد أو كلمة المرور، يطلب Oxy أيضًا رمزًا من تطبيق مثل Google Authenticator أو 1Password.","setUp":"إعداد","scan":"امسح رمز QR هذا بتطبيق المصادقة، أو أدخل مفتاح الإعداد.","secretLabel":"مفتاح الإعداد","codeLabel":"الرمز من التطبيق","enable":"تشغيل","enabled":"تطبيق المصادقة مفعّل.","disable":"أوقف تطبيق المصادقة","disabled":"تطبيق المصادقة متوقف.","on":"مفعّل","off":"متوقف","backupTitle":"احفظ رموزك الاحتياطية","backupDescription":"إذا فقدت هاتفك، فكل رمز يتيح لك تسجيل الدخول مرة واحدة. احفظها في مكان آمن: لن تُعرض مرة أخرى.","copy":"انسخ الرموز","copied":"نُسخت الرموز الاحتياطية.","savedThem":"حفظتها","regenerate":"احصل على رموز احتياطية جديدة","regenerateDescription":"ستتوقف رموزك الاحتياطية القديمة عن العمل.","remaining":"تبقّى {{count}} من الرموز الاحتياطية","row":"خطوة ثانية عند تسجيل الدخول","onWithCodes":"مفعّل · تبقّى {{count}} من الرموز الاحتياطية"}},"fileManagement":{"deleteFile":"حذف الملف","confirm":"تأكيد","retry":"أعد المحاولة","loadError":{"description":"حدث خطأ ما. تحقّق من اتصالك ثم أعد المحاولة."},"moveToTrash":"نقل إلى سلة المهملات","moveToTrashCount":"نقل إلى سلة المهملات ({{count}})","appAccess":{"title":"التطبيقات التي لديها وصول","description":"يمكن لهذه التطبيقات فتح هذا الملف بنفسها. ألغِ وصول أي تطبيق لسحب هذه الإمكانية منه.","empty":"لا يمكن لأي تطبيق فتح هذا الملف بنفسه.","loadError":"تعذّر تحميل التطبيقات التي يمكنها فتح هذا الملف","via":{"upload":"حفظ هذا الملف نيابةً عنك","link":"أنت من شاركه"},"revoke":"إلغاء الوصول","confirm":{"title":"إلغاء وصول {{name}}؟","message":"لن يتمكن {{name}} من فتح هذا الملف بعد الآن، وسيتوقف أي تشغيل بدأه فورًا."},"toasts":{"revoked":"لم يعد بإمكان {{name}} فتح هذا الملف","revokeFailed":"تعذّر إلغاء وصول {{name}}"},"a11y":{"revoke":"إلغاء وصول {{name}} إلى هذا الملف"}},"trashView":{"title":"سلة المهملات","subtitle":"استعد الملفات أو احذفها نهائيًا","notice":"تبقى الملفات في سلة المهملات حتى تستعيدها أو تحذفها، وتظل محسوبة ضمن مساحة التخزين لديك.","emptyTitle":"سلة المهملات فارغة","emptyDescription":"تظهر هنا الملفات التي تنقلها إلى سلة المهملات. يمكنك استعادتها أو حذفها نهائيًا.","trashedOn":"نُقل إلى سلة المهملات في {{date}}","deleteForever":"حذف نهائيًا","loadError":"تعذّر تحميل سلة المهملات","a11y":{"restore":"استعادة {{name}}","deleteForever":"حذف {{name}} نهائيًا"}},"a11y":{"moveToTrash":"نقل {{name}} إلى سلة المهملات","deleteFile":"حذف {{name}}","openTrash":"فتح سلة المهملات"},"toasts":{"movedToTrash":"نُقل إلى سلة المهملات. يمكنك استعادته منها.","bulkMovedToTrash":"نُقل {{count}} ملف إلى سلة المهملات","moveToTrashFailed":"تعذّر نقل الملف إلى سلة المهملات","restored":"تمت استعادة الملف","notInTrash":"لم يعد هذا الملف في سلة المهملات.","restoreFailed":"تعذّرت استعادة الملف","deletedForever":"حُذف الملف نهائيًا","deleteSuccess":"حُذف الملف","deleteFailed":"تعذّر حذف الملف","fileNotFound":"لم يُعثر على الملف. ربما حُذف بالفعل.","noPermission":"ليس لديك إذن بحذف هذا الملف.","bulkDeleteSuccess":"حُذف {{count}} ملف","bulkDeleteFailed":"تعذّر حذف {{count}} ملف","bulkDeleteError":"تعذّر حذف الملفات"},"confirms":{"deleteFile":"هل تريد حذف «{{filename}}»؟ لا يمكن التراجع عن هذا الإجراء.","moveToTrash":"هل تريد نقل «{{filename}}» إلى سلة المهملات؟ لن يُعرض في أي مكان بعد الآن، ويمكنك استعادته من سلة المهملات.","moveFilesToTrash":"هل تريد نقل {{count}} ملف إلى سلة المهملات؟ لن تُعرض في أي مكان بعد الآن، ويمكنك استعادتها من سلة المهملات.","deleteForever":"هل تريد حذف «{{filename}}» نهائيًا؟ لا يمكن التراجع عن هذا الإجراء.","deleteForeverInUse":"لا يزال «{{filename}}» مستخدمًا في {{count}} موضع في تطبيقاتك. حذفه يزيله من هناك أيضًا. هل تريد حذفه نهائيًا؟"}},"follow":{"pending":"تم الطلب","disabled":"متوقفة هنا","named":"{{label}}: {{name}}","verbs":{"follow":{"idle":"متابعة","active":"تتم المتابعة","everywhere":"إلغاء المتابعة في كل مكان","undo":"يلغي متابعة هذا الحساب","undoNamed":"يلغي متابعة {{name}}","checking":"جارٍ التحقق من حالة المتابعة","checkingNamed":"جارٍ التحقق مما إذا كنت تتابع {{name}}"},"subscribe":{"idle":"اشتراك","active":"مشترك","everywhere":"إلغاء الاشتراك في كل مكان","undo":"يلغي الاشتراك","undoNamed":"يلغي الاشتراك في {{name}}","checking":"جارٍ التحقق من الاشتراك","checkingNamed":"جارٍ التحقق مما إذا كنت مشتركًا في {{name}}"},"join":{"idle":"انضمام","active":"منضم","everywhere":"المغادرة من كل مكان","undo":"يغادر","undoNamed":"يغادر {{name}}","checking":"جارٍ التحقق من العضوية","checkingNamed":"جارٍ التحقق مما إذا كنت عضوًا في {{name}}"},"watch":{"idle":"مراقبة","active":"تتم المراقبة","everywhere":"إيقاف المراقبة في كل مكان","undo":"يوقف المراقبة","undoNamed":"يوقف مراقبة {{name}}","checking":"جارٍ التحقق من حالة المراقبة","checkingNamed":"جارٍ التحقق مما إذا كنت تراقب {{name}}"}},"all":{"idle":"متابعة الكل","hint":"يتابع جميع الحسابات ({{count}})","hintOne":"يتابع الحساب ({{count}})","undoHint":"يلغي متابعة جميع الحسابات ({{count}})","undoHintOne":"يلغي متابعة الحساب ({{count}})"},"menu":{"forDuration":"{{label}} لمدة {{duration}}","showIn":"إظهار في {{app}}","hideIn":"عدم الإظهار في {{app}}","thisApp":"هذا التطبيق","options":"خيارات {{label}}","optionsHint":"يفتح خيارات إضافية"},"durations":{"day":"24 ساعة","threeDays":"72 ساعة","week":"أسبوع"},"errors":{"update":"تعذّر تحديث الحالة","read":"تعذّر التحقق من الحالة","mode":"تعذّر تغيير إعداد هذا التطبيق","offline":"أنت غير متصل. تحقّق من الاتصال وحاول مجددًا.","signedOut":"سجّل الدخول مرة أخرى للاستمرار","forbidden":"لا يُسمح لهذا التطبيق بذلك","notFound":"لم يعد هذا متاحًا","rateLimited":"محاولات كثيرة جدًا. حاول مجددًا بعد قليل."}},"accounts":{"accountCategory":{"news":"أخبار","politics":"سياسة","business":"أعمال","startup":"الشركات الناشئة وريادة الأعمال","finance":"المال والاستثمار","crypto":"العملات المشفرة والويب 3","marketplace":"سوق وإعلانات مبوبة","retail":"التجزئة والتجارة الإلكترونية","real_estate":"عقارات","agency":"وكالة عقارية","landlord":"الملاك وإدارة العقارات","cooperative":"تعاونية سكنية","architecture":"العمارة والبناء","technology":"التقنية","software":"البرمجيات والتطوير","ai":"الذكاء الاصطناعي وتعلّم الآلة","security":"الأمان والخصوصية","automation":"الأتمتة والأدوات","science":"العلوم والبحث","education":"التعليم والتدريب","books":"الكتب والكتابة","health":"الصحة والطب","fitness":"اللياقة والعافية","sports":"رياضة","gaming":"الألعاب والرياضات الإلكترونية","music":"موسيقى","film":"أفلام وتلفزيون","podcast":"بودكاست وصوتيات","art":"الفن والتصميم","photography":"تصوير","comedy":"كوميديا","food":"طعام وشراب","travel":"السفر والأماكن","fashion":"الموضة والجمال","home_garden":"المنزل والحديقة","diy":"اصنعها بنفسك","automotive":"السيارات","animals":"الحيوانات الأليفة","family":"الأسرة والتربية","nonprofit":"غير ربحي وخيري","government":"الحكومة والقطاع العام","community":"المجتمع المحلي","activism":"النشاط والمناصرة","environment":"البيئة والاستدامة","religion":"الدين والروحانية","other":"أخرى"},"members":{"title":"الأعضاء"},"settings":{"title":"إعدادات الحساب","subtitle":"أدِر الملف الشخصي لهذا الحساب وأعضاءه والوصول إليه.","save":"حفظ التغييرات","displayName":{"label":"الاسم المعروض","invalidChars":"استخدم الحروف والمسافات والفواصل العليا وفواصل الأسماء فقط","invalidTitle":"استخدم نصًا عاديًا بدون < أو > (حتى 300 حرف)"},"bio":{"label":"نبذة (اختياري)"},"picture":{"change":"تغيير الصورة"},"categories":{"title":"الفئات","footer":"الفئة الأولى هي الفئة الرئيسية المعروضة في الملف الشخصي. حتى {{max}}.","primary":"رئيسية","makePrimary":"اجعلها رئيسية","remove":"إزالة {{category}}","add":"إضافة فئة","atCap":"حتى {{max}}. أزِل واحدة لإضافة أخرى.","unavailable":"فئة غير متاحة"},"sections":{"access":"الوصول","dangerZone":"منطقة الخطر"},"members":{"subtitle":"ادعُ أشخاصًا وأدِر الأدوار"},"archive":{"title":"أرشفة الحساب","subtitle":"إلغاء تنشيط هذا الحساب","confirmTitle":"أرشفة الحساب","confirmDescription":"هل تريد أرشفة هذا الحساب؟ سيتم إلغاء تنشيطه وسيفقد أعضاؤه الوصول."},"errors":{"missingAccount":"لم يتم تحديد أي حساب."},"toasts":{"saved":"تم تحديث الحساب","saveFailed":"تعذر تحديث الحساب","archived":"تمت أرشفة الحساب","archiveFailed":"تعذرت أرشفة الحساب"}}}}) as LocaleDict;
@@ -0,0 +1,4 @@
1
+ // Generated by scripts/generateCompactLocales.ts; do not edit.
2
+ import { restoreCompactLocale } from '../../compactLocale';
3
+ import type { LocaleDict } from '../../index';
4
+ export default restoreCompactLocale({"signin":{"title":"সাইন ইন","subtitle":"আপনার Oxy অ্যাকাউন্ট ব্যবহার করুন","addAccountTitle":"আরেকটি অ্যাকাউন্ট যোগ করুন","addAccountSubtitle":"অন্য অ্যাকাউন্ট দিয়ে সাইন ইন করুন","actions":{"continue":"চালিয়ে যান","back":"পিছনে"},"createAccountLink":"Oxy-তে নতুন? একটি অ্যাকাউন্ট তৈরি করুন","status":{"signingIn":"সাইন ইন হচ্ছে…"},"subtitleToApp":"{{app}}-এ যেতে","orContinueWith":"অথবা এর মাধ্যমে চালিয়ে যান","qr":{"caption":"সাইন ইন করতে Commons দিয়ে স্ক্যান করুন","renew":"নতুন কোড দেখান"},"device":{"codeHint":"দেখে নিন আপনার ফোনে এই কোডটিই দেখাচ্ছে"},"errors":{"rateLimited":"অনেকবার চেষ্টা করা হয়েছে। {{seconds}} সেকেন্ড পরে আবার চেষ্টা করুন।","invalidCredentials":"ইউজারনেম, ইমেইল বা পাসওয়ার্ড সঠিক নয়। এই ইমেইলে একাধিক অ্যাকাউন্ট থাকলে ইউজারনেম দিয়ে সাইন ইন করুন।","emailAccountsFull":"এই ইমেইলে সর্বোচ্চ সংখ্যক অ্যাকাউন্ট আগেই আছে।","codeInvalid":"কোডটি সঠিক নয়, অথবা এর মেয়াদ শেষ হয়ে গেছে।","requestExpired":"এই সাইন-ইনের মেয়াদ শেষ। নতুন ইমেইল পাঠান।","secondFactorInvalid":"কোডটি সঠিক নয়। বর্তমান কোডটি দিন।","originNotAllowed":"এখানে সাইন ইন করা যাবে না।","generic":"কিছু একটা সমস্যা হয়েছে। অনুগ্রহ করে আবার চেষ্টা করুন।","notConfigured":"সাইন ইন উপলভ্য নয়","notConfiguredDescription":"{{app}}-এ এখনও সাইন-ইন চালু করা হয়নি। অ্যাপের ডেভেলপারের সাথে যোগাযোগ করুন।","failed":"সাইন ইন শুরু করা যায়নি","failedDescription":"কিছু একটা সমস্যা হয়েছে। অনুগ্রহ করে আবার চেষ্টা করুন।"},"emailAccounts":{"title":"একটি অ্যাকাউন্ট বেছে নিন","description":"{{identifier}}-এর একাধিক অ্যাকাউন্ট আছে। কোনটি দিয়ে সাইন ইন করবেন, বেছে নিন।"},"chooser":{"subtitleToApp":"{{app}}-এ যেতে","title":"একটি অ্যাকাউন্ট বেছে নিন","subtitle":"নিচের একটি অ্যাকাউন্ট দিয়ে চালিয়ে যান, অথবা অন্যটি ব্যবহার করুন।","useAnother":"অন্য অ্যাকাউন্ট ব্যবহার করুন","continueAs":"{{name}} হিসেবে চালিয়ে যান"},"terms":{"before":"চালিয়ে যাওয়ার মাধ্যমে আপনি আমাদের","termsLink":"পরিষেবার শর্তাবলি","and":"এবং","privacyLink":"গোপনীয়তা নীতিতে সম্মত হচ্ছেন"},"noAccount":"অ্যাকাউন্ট নেই?","createAccount":"অ্যাকাউন্ট তৈরি করুন","identifier":{"label":"ইমেইল বা ইউজারনেম","placeholder":[2],"required":"আপনার ইমেইল বা ইউজারনেম লিখুন।"},"checkEmail":{"title":"আপনার ইমেইল দেখুন","description":"{{identifier}}-এর সাথে কোনো অ্যাকাউন্ট মিললে আমরা সেখানে একটি কোড ও সাইন-ইন লিংক পাঠিয়েছি।","codeLabel":"কোড","codeHint":"ইমেইলের কোডটি লিখুন, অথবা এর লিংকটি এই ব্রাউজারে খুলুন।","codeHasLetters":"আপনার কোডে কি অক্ষর আছে?","codeDigitsOnly":"আপনার কোড কি শুধু সংখ্যা?","resend":"নতুন ইমেইল পাঠান","resendIn":"{{seconds}} সেকেন্ড পরে নতুন ইমেইল পাঠান","resent":"আমরা একটি নতুন ইমেইল পাঠিয়েছি।","retryLater":"আমরা ইতিমধ্যে কয়েকটি ইমেইল পাঠিয়েছি। কয়েক মিনিট অপেক্ষা করে আবার চেষ্টা করুন।","usePassword":"এর বদলে পাসওয়ার্ড ব্যবহার করুন","differentAccount":"অন্য অ্যাকাউন্ট ব্যবহার করুন"},"password":{"title":"আপনার পাসওয়ার্ড লিখুন","label":"পাসওয়ার্ড","required":"আপনার পাসওয়ার্ড লিখুন।","forgot":"ভুলে গেছেন? ইমেইলে কোড নিন"},"secondFactor":{"title":"দুই-ধাপের যাচাইকরণ","description":"আপনার অথেনটিকেটর অ্যাপের কোডটি লিখুন।","backupDescription":"আপনার একটি ব্যাকআপ কোড লিখুন। প্রতিটি কোড একবারই কাজ করে।","label":"অথেনটিকেটর কোড","backupLabel":"ব্যাকআপ কোড","useBackup":"ব্যাকআপ কোড ব্যবহার করুন","useAuthenticator":"অথেনটিকেটর অ্যাপ ব্যবহার করুন"},"link":{"approvedTitle":"আপনি সাইন ইন করেছেন","approvedDescription":"যে অ্যাপে সাইন ইন করতে চেয়েছিলেন সেখানে ফিরে যান: সেটি নিজে থেকেই চালু হবে। আপনি এই ট্যাবটি বন্ধ করতে পারেন।","otherDeviceTitle":"একই ব্রাউজারে লিংকটি খুলুন","otherDeviceDescription":"এই লিংক শুধু সেই ব্রাউজারে কাজ করে যেখানে আপনি সাইন ইন করতে চেয়েছিলেন। সেখানে খুলুন, অথবা ইমেইলের কোডটি অ্যাপে লিখুন।","invalidTitle":"এই লিংকটি ব্যবহার করা যাবে না","invalidDescription":"এর মেয়াদ শেষ হয়েছে বা এটি আগেই ব্যবহার করা হয়েছে। অ্যাপে নতুন ইমেইল চান, অথবা সর্বশেষ ইমেইলের কোডটি লিখুন।"}},"signup":{"title":"আপনার অ্যাকাউন্ট তৈরি করুন","subtitle":"আপনার ইউজারনেম বেছে নিন। তারপর আমরা আপনার ইমেইল নিশ্চিত করব।","createInCommons":"এর বদলে Commons-এ তৈরি করুন","backToSignInLink":"আগে থেকেই অ্যাকাউন্ট আছে? সাইন ইন করুন","username":{"label":"ইউজারনেম","placeholder":[43],"required":"একটি ইউজারনেম বেছে নিন।","taken":"এই ইউজারনেমটি আগেই নেওয়া হয়েছে।"},"email":{"title":"আপনার ইমেইল কী?","subtitle":"এটি দিয়েই আপনি সাইন ইন করবেন: প্রতিবার আমরা একটি কোড পাঠাব। অন্য কেউ এটি দেখতে পাবে না।","label":"ইমেইল","placeholder":[2],"invalid":"একটি সঠিক ইমেইল ঠিকানা লিখুন।"},"commonsSubtitle":"অথবা Commons-এ আপনার পরিচয় তৈরি করুন এবং নিজের কী নিজের কাছে রাখুন।","laterNote":"পরে আপনার অ্যাকাউন্টের নিরাপত্তা সেটিংসে পাসওয়ার্ড বা অথেনটিকেটর অ্যাপ যোগ করতে পারবেন।"},"accountSwitcher":{"loading":"অ্যাকাউন্ট লোড হচ্ছে...","qrHeadline":"আপনার Oxy পরিচয় দিয়ে সাইন ইন করুন","signInWithOxy":"Oxy দিয়ে সাইন ইন করুন","signUpWithOxy":"Oxy দিয়ে সাইন আপ করুন","getCommons":"Commons নিন","commonsNotInstalled":"Commons নেই? আপনার Oxy ID দিয়ে সাইন ইন করতে অ্যাপটি নিন।","showQrAnyway":"অন্য ডিভাইসে আমার Commons আছে","switchWhileSignedInAs":"অ্যাকাউন্ট বদলান, {{name}} হিসেবে সাইন ইন করা আছে","manageOnDevice":"এই ডিভাইসের অ্যাকাউন্টগুলো পরিচালনা করুন","continueWithOxy":"Oxy দিয়ে চালিয়ে যান","havingTrouble":"সমস্যা হচ্ছে?","progress":{"preparing":"অনুরোধ তৈরি হচ্ছে","awaitingApproval":"অনুমোদনের অপেক্ষায়","scanWithCommons":"আপনার ফোনের Commons দিয়ে স্ক্যান করুন","continueInCommons":"Commons-এ চালিয়ে যান","checkCommons":"আপনার ফোনে Commons দেখুন","openedInCommons":"Commons-এ খোলা হয়েছে","confirming":"পরিচয় নিশ্চিত করা হচ্ছে","confirmed":"পরিচয় নিশ্চিত হয়েছে"},"signInFailures":{"denied":"Commons-এ সাইন-ইন প্রত্যাখ্যান করা হয়েছে।","expired":"এই সাইন-ইন অনুরোধের মেয়াদ শেষ। অনুগ্রহ করে আবার চেষ্টা করুন।","network":"Oxy-তে সংযোগ করা যায়নি। আপনার সংযোগ পরীক্ষা করে আবার চেষ্টা করুন।","notConfigured":"এই অ্যাপে এখনও সাইন-ইন চালু করা হয়নি।","unsupportedFlow":"এই সাইন-ইন এখানে সম্পন্ন করা যাবে না।","claimFailed":"সাইন-ইন অনুমোদিত হয়েছে, কিন্তু আমরা তা শেষ করতে পারিনি। অনুগ্রহ করে আবার চেষ্টা করুন।","generic":"সাইন ইন ব্যর্থ হয়েছে। অনুগ্রহ করে আবার চেষ্টা করুন।"},"linkOpenFailed":"লিংকটি খোলা যায়নি। অনুগ্রহ করে আবার চেষ্টা করুন।"},"common":{"stepOf":"ধাপ {{step}}/{{total}}","actions":{"back":"পিছনে","continue":"চালিয়ে যান","next":"পরবর্তী","getStarted":"শুরু করুন","createAccount":"অ্যাকাউন্ট তৈরি করুন","signIn":"সাইন ইন","verify":"যাচাই করুন","resetPassword":"পাসওয়ার্ড রিসেট করুন","signedOut":"সাইন আউট হয়েছে","close":"বন্ধ করুন","tryAgain":"আবার চেষ্টা করুন"},"links":{"recoverAccount":"আপনার অ্যাকাউন্ট পুনরুদ্ধার করুন","signUp":"সাইন আপ"},"labels":{"username":"ইউজারনেম","email":"ইমেইল","password":"পাসওয়ার্ড","confirmPassword":"পাসওয়ার্ড নিশ্চিত করুন"},"revoke":"প্রত্যাহার করুন","errors":{"signOutAllFailed":"সব অ্যাকাউন্ট থেকে সাইন আউট করতে সমস্যা হয়েছে। অনুগ্রহ করে আবার চেষ্টা করুন।"}},"notifications":{"title":"নোটিফিকেশন","subtitle":"পুশ, ইমেইল ও নিরাপত্তা সতর্কতা পরিচালনা করুন","updateError":"নোটিফিকেশন পছন্দ আপডেট করা যায়নি","sections":{"channels":"চ্যানেল","alerts":"সতর্কতা","marketing":"মার্কেটিং"},"items":{"push":{"title":"পুশ নোটিফিকেশন","subtitle":"আপনার ডিভাইসে তাৎক্ষণিক সতর্কতা"},"emailDigest":{"title":"ইমেইল সারসংক্ষেপ","subtitle":"আপনার অ্যাকাউন্টের কার্যকলাপের নিয়মিত সারসংক্ষেপ"},"securityAlerts":{"title":"নিরাপত্তা সতর্কতা","subtitle":"সাইন-ইন, পুনরুদ্ধার কোড ও কী পরিবর্তন"},"marketingEmails":{"title":"মার্কেটিং ইমেইল","subtitle":"পণ্যের খবর ও মাঝেমধ্যে অফার"}}},"preferences":{"title":"পছন্দসমূহ","subtitle":"থিম, মোশন ও আঞ্চলিক সেটিংস","sections":{"appearance":"চেহারা","language":"ভাষা","region":"অঞ্চল"},"theme":{"light":"লাইট","dark":"ডার্ক","system":"সিস্টেম ডিফল্ট"},"items":{"theme":{"title":"থিম"},"reduceMotion":{"title":"মোশন কমান","subtitle":"Oxy অ্যাপগুলোতে অ্যানিমেশন কমিয়ে রাখুন","systemOn":"সিস্টেম অনুসরণ করছে: মোশন কমানো চালু আছে"},"language":{"title":"ভাষা"},"timezone":{"title":"টাইমজোন","unknown":"টাইমজোন শনাক্ত করা যায়নি"},"about":{"title":"পছন্দসমূহ সম্পর্কে","subtitle":"আপনি যেসব Oxy অ্যাপে সাইন ইন করেন, সবগুলোতে পছন্দসমূহ সিঙ্ক হয়"}}},"connectedApps":{"title":"সংযুক্ত অ্যাপ","subtitle":"তৃতীয় পক্ষের অ্যাপের অ্যাক্সেস পরিচালনা করুন","empty":{"title":"কোনো সংযুক্ত অ্যাপ নেই","subtitle":"যেসব অ্যাপকে আপনার Oxy অ্যাকাউন্ট দিয়ে সাইন ইন করার অনুমতি দেবেন, সেগুলো এখানে দেখা যাবে"},"item":{"granted":"অনুমতি দেওয়া হয়েছে {{relative}}","lastUsed":"শেষ ব্যবহার {{relative}}"},"confirm":{"title":"অ্যাক্সেস প্রত্যাহার করুন","message":"আপনার Oxy অ্যাকাউন্টে {{name}}-এর অ্যাক্সেস প্রত্যাহার করবেন?"},"toasts":{"revoked":"{{name}}-এর অ্যাক্সেস প্রত্যাহার করা হয়েছে","revokeFailed":"অ্যাক্সেস প্রত্যাহার করা যায়নি"}},"accountMenu":{"label":"অ্যাকাউন্ট মেনু","manage":"আপনার Oxy অ্যাকাউন্ট পরিচালনা করুন","viewProfile":"প্রোফাইল দেখুন","addAnother":"আরেকটি অ্যাকাউন্ট যোগ করুন","signOutAll":"সব অ্যাকাউন্ট থেকে সাইন আউট করুন","open":"অ্যাকাউন্ট মেনু","openHint":"অ্যাকাউন্ট মেনু খোলে","openWithUser":"{{name}}-এর অ্যাকাউন্ট মেনু","switching":"অ্যাকাউন্ট বদলানো হচ্ছে…","signOutAccount":"{{name}} সাইন আউট করুন","greeting":"হাই, {{name}}!","switchAccount":"অ্যাকাউন্ট বদলান","storage":{"title":"Oxy স্টোরেজ","usage":"{{total}}-এর মধ্যে {{used}} ব্যবহৃত","used":"ব্যবহৃত","free":"খালি","unavailable":"ব্যবহারের বিবরণ পাওয়া যাচ্ছে না","upgrade":"প্ল্যান আপগ্রেড করুন","manage":"স্টোরেজ পরিচালনা করুন"},"data":"Oxy-তে আপনার ডেটা","settings":"Oxy সেটিংস","help":"সাহায্য ও মতামত","signOut":"সাইন আউট","privacy":"গোপনীয়তা নীতি","terms":"পরিষেবার শর্তাবলি"},"emailCode":{"title":"আপনার ইমেইল দেখুন","sentTo":"আমরা {{email}}-এ একটি ৬-সংখ্যার কোড পাঠিয়েছি।","label":"কোড","resend":"নতুন কোড পাঠান","resent":"আমরা একটি নতুন কোড পাঠিয়েছি।","changeEmail":"অন্য ইমেইল ব্যবহার করুন","errors":{"codeInvalid":"কোডটি সঠিক নয়, অথবা এর মেয়াদ শেষ হয়ে গেছে।","tooManyAttempts":"অনেকবার ভুল কোড দেওয়া হয়েছে। নতুন কোড চান।","expired":"অনেক সময় লেগে গেছে। আবার শুরু করুন।","unavailable":"Oxy এখন ইমেইল পাঠাতে পারছে না। পরে আবার চেষ্টা করুন।","rateLimited":"অনেকগুলো কোড চাওয়া হয়েছে। পরে আবার চেষ্টা করুন।"}},"deleteAccount":{"keyless":{"subtitle":"@{{username}} এবং এর সবকিছু চিরতরে মুছে যাবে। আপনার ইউজারনেম লিখুন, তারপর আমাদের ইমেইল করা কোড দিয়ে নিশ্চিত করুন।","action":"অ্যাকাউন্ট মুছুন","done":"আপনার অ্যাকাউন্ট মুছে ফেলা হয়েছে।","doneDescription":"আপনাকে সাইন আউট করা হয়েছে।","keyed":"এই অ্যাকাউন্টটি Commons ব্যবহার করে: এর কী দিয়ে Oxy Commons-এ, সেটিংস > অ্যাকাউন্ট মুছুন-এ গিয়ে মুছুন।"},"handoff":{"elsewhereMessage":"অ্যাকাউন্ট মুছতে আপনার পরিচয় কী লাগবে, আর সেটি এই ডিভাইসে নেই। যে ডিভাইসে কী আছে সেখানে Oxy Commons খুলে সেটিংস > অ্যাকাউন্ট মুছুন-এ যান।"}},"linkCommons":{"title":"Commons লিংক করুন","subtitle":"নিজের কী নিজের কাছে রাখুন: Commons লিংক করলে এই অ্যাকাউন্ট শুধু আপনার। এর ইমেইল মুছে যাবে, আর Commons-এ থাকা আপনার রিকভারি ফ্রেজ দিয়েই আবার প্রবেশ করবেন।","scan":"আপনার ফোনে Commons খুলুন, “ওয়েবে আমার Oxy অ্যাকাউন্ট আছে” বেছে নিন এবং এই কোডটি স্ক্যান করুন।","waiting":"Commons-এর অপেক্ষায়…","compareTitle":"কোডটি মিলিয়ে দেখুন","compare":"Commons-এ একই কোড দেখাবে। না দেখালে বাতিল করুন।","confirm":"হ্যাঁ, Commons লিংক করুন","cancel":"বাতিল","doneTitle":"Commons লিংক হয়েছে","done":"এই অ্যাকাউন্ট এখন নিজের হেফাজতে। এর ইমেইল মুছে ফেলা হয়েছে: Commons-এ থাকা আপনার রিকভারি ফ্রেজ দিয়েই আবার প্রবেশ করবেন।","already":"এই অ্যাকাউন্ট আগে থেকেই Commons ব্যবহার করে।","expired":"এই কোডের মেয়াদ শেষ।","renew":"নতুন কোড দেখান","failed":"Commons লিংক করা যায়নি। আবার চেষ্টা করুন।","confirmTitle":"লিংক নিশ্চিত করুন","confirmDescription":"শেষ করতে, আমাদের ইমেইল করা কোড দিয়ে নিশ্চিত করুন যে এটি আপনি।","confirmPasswordDescription":"শেষ করতে, আপনার পাসওয়ার্ড দিয়ে নিশ্চিত করুন যে এটি আপনি।","row":"Commons দিয়ে নিজের কী নিজের কাছে রাখুন"},"reauth":{"title":"নিশ্চিত করুন যে এটি আপনি","emailDescription":"এই পরিবর্তন নিশ্চিত করতে আমরা আপনার ইমেইলে একটি কোড পাঠাব।","sendCode":"কোড পাঠান","codeSent":"আমরা আপনার ইমেইলে একটি ৬-সংখ্যার কোড পাঠিয়েছি।","codeLabel":"ইমেইলের কোড","passwordLabel":"বর্তমান পাসওয়ার্ড","usePassword":"এর বদলে পাসওয়ার্ড ব্যবহার করুন","useEmail":"এর বদলে ইমেইলে কোড নিন","errors":{"invalid":"কাজ হয়নি। যা লিখেছেন তা পরীক্ষা করে আবার চেষ্টা করুন।","totpRequired":"আপনার অথেনটিকেটর অ্যাপের কোডটিও লিখুন।"}},"signInSecurity":{"title":"সাইন-ইন ও নিরাপত্তা","subtitle":"ইমেইল, পাসওয়ার্ড, অথেনটিকেটর অ্যাপ এবং কোথায় সাইন ইন করা আছে","methodsTitle":"আপনি যেভাবে সাইন ইন করেন","notPersonal":"শুধু ব্যক্তিগত অ্যাকাউন্ট ইমেইল, পাসওয়ার্ড বা অথেনটিকেটর অ্যাপ দিয়ে সাইন ইন করে।","loadFailed":"এই অ্যাকাউন্ট কীভাবে সাইন ইন করে তা লোড করা যায়নি।","retry":"আবার চেষ্টা করুন","noEmailWarning":"এই অ্যাকাউন্টে কোনো ইমেইল নেই। আপনি শুধু পাসওয়ার্ড দিয়ে সাইন ইন করেন, আর সেটি ভুলে গেলে অ্যাকাউন্ট ফিরে পাওয়ার কোনো উপায় নেই।","status":{"on":"চালু","off":"বন্ধ"},"commons":{"title":[1]},"errors":{"lastSignInMethod":"সাইন ইন করার এটিই আপনার একমাত্র উপায়। আগে আরেকটি উপায় যোগ করুন।","passwordRequired":"আগে একটি পাসওয়ার্ড সেট করুন, এবং সেটি দিয়ে নিশ্চিত করুন।","emailUnchanged":"এটি আগে থেকেই আপনার ইমেইল।"},"email":{"title":"ইমেইল","none":"কোনো ইমেইল নেই","description":"সাইন-ইন কোড, সাইন-ইন লিংক ও নিরাপত্তা বিজ্ঞপ্তি এই ঠিকানায় যায়।","noneDescription":"কোড বা লিংক দিয়ে সাইন ইন করতে, এবং পাসওয়ার্ড ভুলে গেলে অ্যাকাউন্ট ফিরে পেতে একটি ইমেইল যোগ করুন।","change":"ইমেইল বদলান","add":"একটি ইমেইল যোগ করুন","remove":"ইমেইল সরান","removeNeedsPassword":"ইমেইল সরাতে আগে একটি পাসওয়ার্ড সেট করুন: সেটিই হবে সাইন ইন করার একমাত্র উপায়।","newLabel":"নতুন ইমেইল ঠিকানা","newDescription":"ঠিকানাটি আপনার কিনা যাচাই করতে আমরা নতুন ঠিকানায় একটি কোড পাঠাব।","invalid":"একটি সঠিক ইমেইল ঠিকানা লিখুন।","sendCode":"কোড পাঠান","confirmTitle":"নতুন ইমেইল নিশ্চিত করুন","confirmDescription":"{{email}}-এ পাঠানো কোডটি লিখুন, তারপর নিশ্চিত করুন যে এটি আপনি।","codeLabel":"নতুন ইমেইলে পাঠানো কোড","save":"ইমেইল সংরক্ষণ করুন","saved":"আপনার ইমেইল আপডেট হয়েছে। অন্য ডিভাইসগুলো থেকে সাইন আউট করা হয়েছে।","removeTitle":"আপনার ইমেইল সরান","removeDescription":"আপনি শুধু পাসওয়ার্ড দিয়ে সাইন ইন করবেন। সেটি ভুলে গেলে অ্যাকাউন্ট ফিরে পাওয়ার কোনো উপায় নেই। আপনার পাসওয়ার্ড দিয়ে নিশ্চিত করুন।","removed":"আপনার ইমেইল সরানো হয়েছে। অন্য ডিভাইসগুলো থেকে সাইন আউট করা হয়েছে।"},"password":{"title":"পাসওয়ার্ড","setTitle":"পাসওয়ার্ড সেট করুন","changeTitle":"আপনার পাসওয়ার্ড বদলান","description":"ইমেইলের কোডের বদলে পাসওয়ার্ড দিয়ে সাইন ইন করুন। কমপক্ষে {{min}}টি অক্ষর ব্যবহার করুন।","newLabel":"নতুন পাসওয়ার্ড","repeatLabel":"পাসওয়ার্ডটি আবার লিখুন","tooShort":"কমপক্ষে {{min}}টি অক্ষর ব্যবহার করুন।","mismatch":"পাসওয়ার্ড দুটি মিলছে না।","signOutOthers":"অন্য সব জায়গা থেকে সাইন আউট করুন","save":"পাসওয়ার্ড সংরক্ষণ করুন","saved":"আপনার পাসওয়ার্ড সংরক্ষিত হয়েছে।","row":"ঐচ্ছিক: পাসওয়ার্ড দিয়ে সাইন ইন","remove":"পাসওয়ার্ড সরান","removeTitle":"আপনার পাসওয়ার্ড সরান","removeDescription":"আপনি ইমেইলে পাঠানো কোড বা লিংক দিয়ে সাইন ইন করবেন।","removed":"আপনার পাসওয়ার্ড সরানো হয়েছে। অন্য ডিভাইসগুলো থেকে সাইন আউট করা হয়েছে।"},"totp":{"title":"অথেনটিকেটর অ্যাপ","description":"ইমেইল কোড বা পাসওয়ার্ডের পরে Oxy আরও একটি কোড চাইবে, যা Google Authenticator বা 1Password-এর মতো অ্যাপ থেকে আসবে।","setUp":"সেট আপ করুন","scan":"আপনার অথেনটিকেটর অ্যাপ দিয়ে এই QR কোডটি স্ক্যান করুন, অথবা সেটআপ কী লিখুন।","secretLabel":"সেটআপ কী","codeLabel":"অ্যাপের কোড","enable":"চালু করুন","enabled":"অথেনটিকেটর অ্যাপ চালু আছে।","disable":"অথেনটিকেটর অ্যাপ বন্ধ করুন","disabled":"অথেনটিকেটর অ্যাপ বন্ধ আছে।","on":"চালু","off":"বন্ধ","backupTitle":"আপনার ব্যাকআপ কোড সংরক্ষণ করুন","backupDescription":"ফোন হারালে প্রতিটি কোড দিয়ে একবার সাইন ইন করা যাবে। কোডগুলো নিরাপদ কোথাও রাখুন: এগুলো আর দেখানো হবে না।","copy":"কোড কপি করুন","copied":"ব্যাকআপ কোড কপি হয়েছে।","savedThem":"আমি সংরক্ষণ করেছি","regenerate":"নতুন ব্যাকআপ কোড নিন","regenerateDescription":"আপনার পুরোনো ব্যাকআপ কোডগুলো আর কাজ করবে না।","remaining":"{{count}}টি ব্যাকআপ কোড বাকি","row":"সাইন ইন করার সময় একটি দ্বিতীয় ধাপ","onWithCodes":"চালু · {{count}}টি ব্যাকআপ কোড বাকি"}},"fileManagement":{"deleteFile":"ফাইল মুছুন","confirm":"নিশ্চিত করুন","retry":"আবার চেষ্টা করুন","loadError":{"description":"কিছু একটা সমস্যা হয়েছে। আপনার সংযোগ পরীক্ষা করে আবার চেষ্টা করুন।"},"moveToTrash":"ট্র্যাশে সরান","moveToTrashCount":"ট্র্যাশে সরান ({{count}})","appAccess":{"title":"যেসব অ্যাপের অ্যাক্সেস আছে","description":"এই অ্যাপগুলো নিজে থেকেই এই ফাইলটি খুলতে পারে। অ্যাক্সেস সরাতে কোনো অ্যাপ প্রত্যাহার করুন।","empty":"কোনো অ্যাপ নিজে থেকে এই ফাইলটি খুলতে পারে না।","loadError":"যেসব অ্যাপ এই ফাইলটি খুলতে পারে সেগুলো লোড করা যায়নি","via":{"upload":"আপনার জন্য এই ফাইলটি সংরক্ষণ করেছে","link":"আপনি শেয়ার করেছেন"},"revoke":"প্রত্যাহার করুন","confirm":{"title":"{{name}} প্রত্যাহার করবেন?","message":"{{name}} আর এই ফাইলটি খুলতে পারবে না, এবং এটি যে প্লেব্যাক শুরু করেছে তা এখনই থেমে যাবে।"},"toasts":{"revoked":"{{name}} আর এই ফাইলটি খুলতে পারবে না","revokeFailed":"{{name}}-এর অ্যাক্সেস প্রত্যাহার করা যায়নি"},"a11y":{"revoke":"এই ফাইলে {{name}}-এর অ্যাক্সেস প্রত্যাহার করুন"}},"trashView":{"title":"ট্র্যাশ","subtitle":"ফাইল পুনরুদ্ধার করুন বা স্থায়ীভাবে মুছুন","notice":"পুনরুদ্ধার বা মুছে না ফেলা পর্যন্ত ফাইলগুলো ট্র্যাশে থাকে, এবং এগুলো আপনার স্টোরেজেও গণ্য হয়।","emptyTitle":"ট্র্যাশ খালি","emptyDescription":"ট্র্যাশে সরানো ফাইলগুলো এখানে দেখা যাবে। আপনি সেগুলো পুনরুদ্ধার করতে বা স্থায়ীভাবে মুছতে পারবেন।","trashedOn":"ট্র্যাশে সরানো হয়েছে {{date}}","deleteForever":"স্থায়ীভাবে মুছুন","loadError":"আপনার ট্র্যাশ লোড করা যায়নি","a11y":{"restore":"{{name}} পুনরুদ্ধার করুন","deleteForever":"{{name}} স্থায়ীভাবে মুছুন"}},"a11y":{"moveToTrash":"{{name}} ট্র্যাশে সরান","deleteFile":"{{name}} মুছুন","openTrash":"ট্র্যাশ খুলুন"},"toasts":{"movedToTrash":"ট্র্যাশে সরানো হয়েছে। ট্র্যাশ থেকে এটি পুনরুদ্ধার করতে পারবেন।","bulkMovedToTrash":"{{count}}টি ফাইল ট্র্যাশে সরানো হয়েছে","moveToTrashFailed":"ফাইলটি ট্র্যাশে সরানো যায়নি","restored":"ফাইল পুনরুদ্ধার করা হয়েছে","notInTrash":"এই ফাইলটি আর ট্র্যাশে নেই।","restoreFailed":"ফাইলটি পুনরুদ্ধার করা যায়নি","deletedForever":"ফাইল স্থায়ীভাবে মুছে ফেলা হয়েছে","deleteSuccess":"ফাইল সফলভাবে মুছে ফেলা হয়েছে","deleteFailed":"ফাইল মোছা যায়নি","fileNotFound":"ফাইল পাওয়া যায়নি। হয়তো এটি আগেই মুছে ফেলা হয়েছে।","noPermission":"এই ফাইলটি মোছার অনুমতি আপনার নেই।","bulkDeleteSuccess":"{{count}}টি ফাইল সফলভাবে মুছে ফেলা হয়েছে","bulkDeleteFailed":"{{count}}টি ফাইল মোছা যায়নি","bulkDeleteError":"ফাইলগুলো মোছা যায়নি"},"confirms":{"deleteFile":"আপনি কি নিশ্চিত যে \"{{filename}}\" মুছতে চান? এটি আর ফেরানো যাবে না।","moveToTrash":"\"{{filename}}\" ট্র্যাশে সরাবেন? এটি আর কোথাও দেখানো হবে না, এবং ট্র্যাশ থেকে পুনরুদ্ধার করতে পারবেন।","moveFilesToTrash":"{{count}}টি ফাইল ট্র্যাশে সরাবেন? এগুলো আর কোথাও দেখানো হবে না, এবং ট্র্যাশ থেকে পুনরুদ্ধার করতে পারবেন।","deleteForever":"\"{{filename}}\" স্থায়ীভাবে মুছবেন? এটি আর ফেরানো যাবে না।","deleteForeverInUse":"\"{{filename}}\" এখনও আপনার অ্যাপগুলোর {{count}}টি জায়গায় ব্যবহৃত হচ্ছে। মুছলে সেখান থেকেও সরে যাবে। স্থায়ীভাবে মুছবেন?"}},"follow":{"pending":"অনুরোধ পাঠানো হয়েছে","disabled":"এখানে বন্ধ","named":"{{label}} {{name}}","verbs":{"follow":{"idle":"ফলো করুন","active":"ফলো করছেন","everywhere":"সব জায়গায় আনফলো করুন","undo":"এই অ্যাকাউন্টটি আনফলো করে","undoNamed":"{{name}}-কে আনফলো করে","checking":"ফলো স্ট্যাটাস দেখা হচ্ছে","checkingNamed":"আপনি {{name}}-কে ফলো করেন কিনা দেখা হচ্ছে"},"subscribe":{"idle":"সাবস্ক্রাইব করুন","active":"সাবস্ক্রাইব করা হয়েছে","everywhere":"সব জায়গায় আনসাবস্ক্রাইব করুন","undo":"আনসাবস্ক্রাইব করে","undoNamed":"{{name}} থেকে আনসাবস্ক্রাইব করে","checking":"সাবস্ক্রিপশন স্ট্যাটাস দেখা হচ্ছে","checkingNamed":"আপনি {{name}}-এ সাবস্ক্রাইব করেছেন কিনা দেখা হচ্ছে"},"join":{"idle":"যোগ দিন","active":"যোগ দিয়েছেন","everywhere":"সব জায়গা থেকে বেরিয়ে যান","undo":"বেরিয়ে যায়","undoNamed":"{{name}} থেকে বেরিয়ে যায়","checking":"সদস্যপদ দেখা হচ্ছে","checkingNamed":"আপনি {{name}}-এর সদস্য কিনা দেখা হচ্ছে"},"watch":{"idle":"নজর রাখুন","active":"নজর রাখছেন","everywhere":"সব জায়গায় নজর রাখা বন্ধ করুন","undo":"নজর রাখা বন্ধ করে","undoNamed":"{{name}}-এর ওপর নজর রাখা বন্ধ করে","checking":"নজর রাখার স্ট্যাটাস দেখা হচ্ছে","checkingNamed":"আপনি {{name}}-এর ওপর নজর রাখছেন কিনা দেখা হচ্ছে"}},"all":{"idle":"সবাইকে ফলো করুন","hint":"{{count}}টি অ্যাকাউন্টের সবগুলোকে ফলো করে","hintOne":"{{count}}টি অ্যাকাউন্ট ফলো করে","undoHint":"{{count}}টি অ্যাকাউন্টের সবগুলোকে আনফলো করে","undoHintOne":"{{count}}টি অ্যাকাউন্ট আনফলো করে"},"menu":{"forDuration":"{{duration}}-এর জন্য {{label}}","showIn":"{{app}}-এ দেখান","hideIn":"{{app}}-এ দেখাবেন না","thisApp":"এই অ্যাপ","options":"{{label}} অপশন","optionsHint":"আরও অপশন খোলে"},"durations":{"day":"২৪ ঘণ্টা","threeDays":"৭২ ঘণ্টা","week":"এক সপ্তাহ"},"errors":{"update":"ফলো স্ট্যাটাস আপডেট করা যায়নি","read":"ফলো স্ট্যাটাস দেখা যায়নি","mode":"এই ফলোর জন্য এই অ্যাপের সেটিং বদলানো যায়নি","offline":"আপনি অফলাইনে আছেন। আপনার সংযোগ পরীক্ষা করে আবার চেষ্টা করুন।","signedOut":"চালিয়ে যেতে আবার সাইন ইন করুন","forbidden":"এই অ্যাপের এটি করার অনুমতি নেই","notFound":"এটি আর পাওয়া যাচ্ছে না","rateLimited":"অনেকবার চেষ্টা করা হয়েছে। একটু পরে আবার চেষ্টা করুন।"}},"accounts":{"accountCategory":{"news":"সংবাদ","politics":"রাজনীতি ও নীতি","business":"ব্যবসা","startup":"স্টার্টআপ ও উদ্যোক্তা","finance":"অর্থ ও বিনিয়োগ","crypto":"ক্রিপ্টো ও ওয়েব৩","marketplace":"মার্কেটপ্লেস ও শ্রেণিবদ্ধ বিজ্ঞাপন","retail":"খুচরা ও ই-কমার্স","real_estate":"রিয়েল এস্টেট","agency":"রিয়েল এস্টেট এজেন্সি","landlord":"বাড়িওয়ালা ও সম্পত্তি ব্যবস্থাপনা","cooperative":"আবাসন সমবায়","architecture":"স্থাপত্য ও নির্মাণ","technology":"প্রযুক্তি","software":"সফটওয়্যার ও ডেভেলপমেন্ট","ai":"এআই ও মেশিন লার্নিং","security":"নিরাপত্তা ও গোপনীয়তা","automation":"অটোমেশন ও টুলস","science":"বিজ্ঞান ও গবেষণা","education":"শিক্ষা ও প্রশিক্ষণ","books":"বই ও লেখালেখি","health":"স্বাস্থ্য ও চিকিৎসা","fitness":"ফিটনেস ও সুস্থতা","sports":"খেলাধুলা","gaming":"গেমিং ও ই-স্পোর্টস","music":"সংগীত","film":"চলচ্চিত্র ও টিভি","podcast":"পডকাস্ট ও অডিও","art":"শিল্প ও ডিজাইন","photography":"ফটোগ্রাফি","comedy":"কমেডি","food":"খাবার ও পানীয়","travel":"ভ্রমণ ও স্থান","fashion":"ফ্যাশন ও সৌন্দর্য","home_garden":"বাড়ি ও বাগান","diy":"DIY ও হাতের কাজ","automotive":"গাড়ি ও মোটরিং","animals":"প্রাণী ও পোষা প্রাণী","family":"পরিবার ও প্যারেন্টিং","nonprofit":"অলাভজনক ও দাতব্য","government":"সরকার ও সরকারি খাত","community":"স্থানীয় কমিউনিটি","activism":"অ্যাক্টিভিজম ও অ্যাডভোকেসি","environment":"পরিবেশ ও টেকসই উন্নয়ন","religion":"ধর্ম ও আধ্যাত্মিকতা","other":"অন্যান্য"},"members":{"title":"সদস্য"},"settings":{"title":"অ্যাকাউন্ট সেটিংস","subtitle":"এই অ্যাকাউন্টের প্রোফাইল, সদস্য ও অ্যাক্সেস পরিচালনা করুন।","save":"পরিবর্তন সংরক্ষণ করুন","displayName":{"label":"প্রদর্শিত নাম","invalidChars":"শুধু অক্ষর, স্পেস, অ্যাপোস্ট্রফি ও নাম বিভাজক ব্যবহার করুন","invalidTitle":"< বা > ছাড়া সাধারণ লেখা ব্যবহার করুন (সর্বোচ্চ ৩০০ অক্ষর)"},"bio":{"label":"বায়ো (ঐচ্ছিক)"},"picture":{"change":"ছবি বদলান"},"categories":{"title":"ক্যাটাগরি","footer":"প্রথম ক্যাটাগরিটি প্রোফাইলে প্রধান হিসেবে দেখানো হয়। সর্বোচ্চ {{max}}টি।","primary":"প্রধান","makePrimary":"প্রধান করুন","remove":"{{category}} সরান","add":"একটি ক্যাটাগরি যোগ করুন","atCap":"সর্বোচ্চ {{max}}টি। আরেকটি যোগ করতে একটি সরান।","unavailable":"অনুপলভ্য ক্যাটাগরি"},"sections":{"access":"অ্যাক্সেস","dangerZone":"বিপজ্জনক এলাকা"},"members":{"subtitle":"মানুষকে আমন্ত্রণ জানান ও ভূমিকা পরিচালনা করুন"},"archive":{"title":"অ্যাকাউন্ট আর্কাইভ করুন","subtitle":"এই অ্যাকাউন্ট নিষ্ক্রিয় করুন","confirmTitle":"অ্যাকাউন্ট আর্কাইভ করুন","confirmDescription":"এই অ্যাকাউন্ট আর্কাইভ করবেন? এটি নিষ্ক্রিয় হয়ে যাবে এবং এর সদস্যরা অ্যাক্সেস হারাবেন।"},"errors":{"missingAccount":"কোনো অ্যাকাউন্ট বেছে নেওয়া হয়নি।"},"toasts":{"saved":"অ্যাকাউন্ট আপডেট হয়েছে","saveFailed":"অ্যাকাউন্ট আপডেট করা যায়নি","archived":"অ্যাকাউন্ট আর্কাইভ করা হয়েছে","archiveFailed":"অ্যাকাউন্ট আর্কাইভ করা যায়নি"}}}}) as LocaleDict;
@@ -0,0 +1,4 @@
1
+ // Generated by scripts/generateCompactLocales.ts; do not edit.
2
+ import { restoreCompactLocale } from '../../compactLocale';
3
+ import type { LocaleDict } from '../../index';
4
+ export default restoreCompactLocale({"signin":{"title":"Inicia la sessió","subtitle":"Fes servir el teu compte d'Oxy","addAccountTitle":"Afegeix un altre compte","addAccountSubtitle":"Inicia sessió amb un altre compte","actions":{"continue":"Continuar","back":"Enrere"},"createAccountLink":"Ets nou a Oxy? Crea'n una","status":{"signingIn":"Iniciant sessió…"},"subtitleToApp":"per continuar a {{app}}","orContinueWith":"o continua amb","qr":{"caption":"Escaneja amb Commons per entrar","renew":"Mostra un codi nou"},"device":{"codeHint":"Comprova que el mòbil mostra aquest codi"},"errors":{"rateLimited":"Massa intents. Torna-ho a provar d’aquí a {{seconds}} s.","invalidCredentials":"El nom d'usuari, el correu o la contrasenya no són correctes. Si diversos comptes fan servir aquest correu, entra amb el nom d'usuari.","emailAccountsFull":"Aquest correu ja té tots els comptes que pot tenir.","codeInvalid":"Aquest codi no és correcte o ha caducat.","requestExpired":"Aquest inici de sessió ha caducat. Envia un correu nou.","secondFactorInvalid":"Aquest codi no és correcte. Prova amb l'actual.","originNotAllowed":"Aquí no es pot iniciar sessió.","generic":"Alguna cosa ha anat malament. Torna-ho a provar.","notConfigured":"L'inici de sessió no està disponible","notConfiguredDescription":"{{app}} encara no està configurada per iniciar sessió. Contacta amb qui desenvolupa l'app.","failed":"No s'ha pogut iniciar la sessió","failedDescription":"Alguna cosa ha anat malament. Torna-ho a provar."},"emailAccounts":{"title":"Tria un compte","description":"{{identifier}} té diversos comptes. Tria amb quin vols entrar."},"chooser":{"subtitleToApp":"per continuar a {{app}}","title":"Tria un compte","subtitle":"Continua amb un dels teus comptes o fes-ne servir un altre.","useAnother":"Fes servir un altre compte","continueAs":"Continua com a {{name}}"},"terms":{"before":"En continuar, acceptes les nostres","termsLink":"Condicions del servei","and":"i la","privacyLink":"Política de privadesa"},"noAccount":"No tens compte?","createAccount":"Crea un compte","identifier":{"label":"Correu o nom d'usuari","placeholder":"tu@exemple.com","required":"Escriu el teu correu o nom d'usuari."},"checkEmail":{"title":"Mira el correu","description":"Si hi ha un compte amb {{identifier}}, li hem enviat un codi i un enllaç per iniciar sessió.","codeLabel":"Codi","codeHint":"Escriu el codi del correu o obre'n l'enllaç en aquest navegador.","codeHasLetters":"El teu codi té lletres?","codeDigitsOnly":"El teu codi només té números?","resend":"Envia un correu nou","resendIn":"Envia un correu nou d'aquí a {{seconds}} s","resent":"T'hem enviat un correu nou.","retryLater":"Ja t'hem enviat diversos correus. Espera uns minuts i torna-ho a provar.","usePassword":"Fes servir la contrasenya","differentAccount":"Fes servir un altre compte"},"password":{"title":"Escriu la contrasenya","label":"Contrasenya","required":"Escriu la contrasenya.","forgot":"L'has oblidada? Rep un codi per correu"},"secondFactor":{"title":"Verificació en dos passos","description":"Escriu el codi de la teva app d'autenticació.","backupDescription":"Escriu un dels teus codis de seguretat. Cadascun funciona una sola vegada.","label":"Codi d'autenticació","backupLabel":"Codi de seguretat","useBackup":"Fes servir un codi de seguretat","useAuthenticator":"Fes servir l'app d'autenticació"},"link":{"approvedTitle":"Has iniciat la sessió","approvedDescription":"Torna a l'app on vas demanar iniciar sessió: continuarà sola. Pots tancar aquesta pestanya.","otherDeviceTitle":"Obre l'enllaç al mateix navegador","otherDeviceDescription":"Aquest enllaç només funciona al navegador on vas demanar iniciar sessió. Obre'l allà o escriu a l'app el codi del correu.","invalidTitle":"Aquest enllaç no es pot fer servir","invalidDescription":"Ha caducat o ja s'ha fet servir. Demana un correu nou a l'app o escriu el codi de l'últim."}},"signup":{"title":"Crea el teu compte","subtitle":"Tria el teu nom d'usuari. Després confirmem el teu correu.","createInCommons":"Crea-la a Commons","backToSignInLink":"Ja tens compte? Inicia sessió","username":{"label":"Nom d'usuari","placeholder":"elteunom","required":"Tria un nom d'usuari.","taken":"Aquest nom d'usuari ja està agafat."},"email":{"title":"Quin és el teu correu?","subtitle":"L'utilitzes per iniciar sessió: t'enviem un codi cada vegada. Ningú més el veu.","label":"Correu","placeholder":"tu@exemple.com","invalid":"Escriu un correu vàlid."},"commonsSubtitle":"O crea la teva identitat a Commons i guarda la teva pròpia clau.","laterNote":"Més endavant pots afegir una contrasenya o una app d'autenticació a la configuració de seguretat del compte."},"accountSwitcher":{"loading":"S'estan carregant els comptes...","qrHeadline":"Inicia sessió amb la teva identitat d'Oxy","signInWithOxy":"Inicia sessió amb Oxy","signUpWithOxy":"Registra't amb Oxy","getCommons":"Descarrega Commons","commonsNotInstalled":"No tens Commons? Descarrega l'app per iniciar sessió amb el teu Oxy ID.","showQrAnyway":"Tinc Commons en un altre dispositiu","switchWhileSignedInAs":"Canvia de compte, amb la sessió iniciada com a {{name}}","manageOnDevice":"Gestionar comptes en aquest dispositiu","continueWithOxy":"Continua amb Oxy","havingTrouble":"Algun problema?","progress":{"preparing":"Preparant la sol·licitud","awaitingApproval":"Esperant l'aprovació","scanWithCommons":"Escaneja amb Commons al teu mòbil","continueInCommons":"Continua a Commons","checkCommons":"Revisa Commons al teu mòbil","openedInCommons":"Obert a Commons","confirming":"Confirmant la identitat","confirmed":"Identitat confirmada"},"signInFailures":{"denied":"S'ha rebutjat l'inici de sessió a Commons.","expired":"La sol·licitud d'inici de sessió ha caducat. Torna-ho a provar.","network":"No s'ha pogut connectar amb Oxy. Comprova la connexió i torna-ho a provar.","notConfigured":"Aquesta app encara no està preparada per iniciar sessió.","unsupportedFlow":"Aquest inici de sessió no es pot completar aquí.","claimFailed":"S'ha aprovat l'inici de sessió, però no l'hem pogut completar. Torna-ho a provar.","generic":"No s'ha pogut iniciar la sessió. Torna-ho a provar."},"linkOpenFailed":"No s'ha pogut obrir l'enllaç. Torna-ho a provar."},"common":{"stepOf":"Pas {{step}} de {{total}}","actions":{"back":"Enrere","continue":"Continuar","next":"Següent","getStarted":"Començar","createAccount":"Crear compte","signIn":"Iniciar sessió","verify":"Verificar","resetPassword":"Restablir contrasenya","signedOut":"Sessió tancada","close":"Tanca","tryAgain":"Torna-ho a provar"},"links":{"recoverAccount":"Recuperar el teu compte","signUp":"Registrar-se"},"labels":{"username":"Nom d'usuari","email":"Correu electrònic","password":"Contrasenya","confirmPassword":"Confirmar contrasenya"},"revoke":[32],"errors":{"signOutAllFailed":"Hi ha hagut un problema en tancar la sessió de tots els comptes. Torna-ho a provar."}},"notifications":{"title":[23],"subtitle":[18],"updateError":[14],"sections":{"channels":[9],"alerts":[6],"marketing":[4]},"items":{"push":{"title":[28],"subtitle":[29]},"emailDigest":{"title":[12],"subtitle":[24]},"securityAlerts":{"title":[36],"subtitle":[37]},"marketingEmails":{"title":[20],"subtitle":[27]}}},"preferences":{"title":[25],"subtitle":[40],"sections":{"appearance":[7],"language":[0],"region":[31]},"theme":{"light":[17],"dark":[11],"system":[38]},"items":{"theme":{"title":[39]},"reduceMotion":{"title":[30],"subtitle":[21],"systemOn":[15]},"language":{"title":[0]},"timezone":{"title":[41],"unknown":[42]},"about":{"title":[5],"subtitle":[26]}}},"connectedApps":{"title":[10],"subtitle":[19],"empty":{"title":[22],"subtitle":[8]},"item":{"granted":"Concedit {{relative}}","lastUsed":[16]},"confirm":{"title":[33],"message":[34]},"toasts":{"revoked":[35],"revokeFailed":[13]}},"accountMenu":{"label":"Menú del compte","manage":"Gestiona el teu compte d'Oxy","viewProfile":"Mostra el perfil","addAnother":"Afegeix un altre compte","signOutAll":"Tanca la sessió de tots els comptes","open":"Menú del compte","openHint":"Obre el menú del compte","openWithUser":"Menú del compte de {{name}}","switching":"Canviant de compte…","signOutAccount":"Tanca la sessió de {{name}}","greeting":"Hola, {{name}}!","switchAccount":"Canviar de compte","storage":{"title":"Emmagatzematge d'Oxy","usage":"{{used}} de {{total}} en ús","used":"En ús","free":"Lliure","unavailable":"Detalls d'ús no disponibles","upgrade":"Millorar el pla","manage":"Gestionar l'emmagatzematge"},"data":"Les teves dades a Oxy","settings":"Configuració d'Oxy","help":"Ajuda i comentaris","signOut":"Tancar sessió","privacy":"Política de privacitat","terms":"Condicions del servei"},"emailCode":{"title":"Mira el correu","sentTo":"Hem enviat un codi de 6 xifres a {{email}}.","label":"Codi","resend":"Envia un codi nou","resent":"T'hem enviat un codi nou.","changeEmail":"Fes servir un altre correu","errors":{"codeInvalid":"Aquest codi no és correcte o ha caducat.","tooManyAttempts":"Massa codis incorrectes. Demana-ne un de nou.","expired":"Ha passat massa temps. Torna a començar.","unavailable":"Oxy no pot enviar correus ara. Torna-ho a provar més tard.","rateLimited":"Massa codis. Torna-ho a provar més tard."}},"deleteAccount":{"keyless":{"subtitle":"@{{username}} i tot el que conté s'eliminen per sempre. Escriu el teu nom d'usuari i confirma amb un codi que t'enviem per correu.","action":"Elimina el compte","done":"El teu compte s'ha eliminat.","doneDescription":"S'ha tancat la sessió.","keyed":"Aquest compte fa servir Commons: elimina'l a Oxy Commons, Configuració > Elimina el compte, amb la seva clau."},"handoff":{"elsewhereMessage":"Per eliminar el compte cal la teva clau d'identitat, i no és en aquest dispositiu. Obre Oxy Commons al dispositiu que la guarda i ves a Configuració > Elimina el compte."}},"linkCommons":{"title":"Vincula Commons","subtitle":"Guarda la teva pròpia clau: vincula Commons i aquest compte serà només teu. El seu correu s'elimina, i la frase de recuperació de Commons és com hi tornes a entrar.","scan":"Al mòbil, obre Commons, tria «Tinc un compte d'Oxy al web» i escaneja aquest codi.","waiting":"Esperant Commons…","compareTitle":"Comprova el codi","compare":"Commons mostra el mateix codi. Si no és així, cancel·la.","confirm":"Sí, vincula Commons","cancel":"Cancel·la","doneTitle":"Commons està vinculat","done":"Aquest compte ara és d'autocustòdia. El seu correu s'ha eliminat: la frase de recuperació de Commons és com hi tornes a entrar.","already":"Aquest compte ja fa servir Commons.","expired":"Aquest codi ha caducat.","renew":"Mostra un codi nou","failed":"No s'ha pogut vincular Commons. Torna-ho a provar.","confirmTitle":"Confirma la vinculació","confirmDescription":"Per acabar, confirma que ets tu amb un codi que t'enviem per correu.","confirmPasswordDescription":"Per acabar, confirma que ets tu amb la contrasenya.","row":"Guarda la teva pròpia clau amb Commons"},"reauth":{"title":"Confirma que ets tu","emailDescription":"T'enviarem un codi al correu per confirmar aquest canvi.","sendCode":"Envia el codi","codeSent":"Hem enviat un codi de 6 xifres al teu correu.","codeLabel":"Codi del correu","passwordLabel":"Contrasenya actual","usePassword":"Fes servir la contrasenya","useEmail":"Rep un codi per correu","errors":{"invalid":"No ha funcionat. Revisa el que has escrit i torna-ho a provar.","totpRequired":"Escriu també el codi de la teva app d'autenticació."}},"signInSecurity":{"title":"Inici de sessió i seguretat","subtitle":"Correu, contrasenya, app d'autenticació i on tens la sessió iniciada","methodsTitle":"Com inicies sessió","notPersonal":"Només un compte personal inicia sessió amb correu, contrasenya o app d'autenticació.","loadFailed":"No s'ha pogut carregar com inicia sessió aquest compte.","retry":"Torna-ho a provar","noEmailWarning":"Aquest compte no té correu. Només pots entrar amb la contrasenya i, si l'oblides, no hi ha manera de recuperar el compte.","status":{"on":"Activada","off":"Desactivada"},"commons":{"title":[1]},"errors":{"lastSignInMethod":"És la teva única manera d'iniciar sessió. Afegeix-ne una altra abans.","passwordRequired":"Crea primer una contrasenya i confirma amb ella.","emailUnchanged":"Aquest ja és el teu correu."},"email":{"title":"Correu","none":"Sense correu","description":"Els codis i enllaços per iniciar sessió i els avisos de seguretat arriben a aquesta adreça.","noneDescription":"Afegeix un correu per iniciar sessió amb un codi o un enllaç, i per recuperar el compte si oblides la contrasenya.","change":"Canvia el correu","add":"Afegeix un correu","remove":"Treu el correu","removeNeedsPassword":"Per treure el teu correu, crea abans una contrasenya: serà la teva única manera d'iniciar sessió.","newLabel":"Adreça de correu nova","newDescription":"Enviarem un codi a l'adreça nova per comprovar que és teva.","invalid":"Escriu una adreça de correu vàlida.","sendCode":"Envia el codi","confirmTitle":"Confirma el correu nou","confirmDescription":"Escriu el codi que hem enviat a {{email}} i confirma que ets tu.","codeLabel":"Codi enviat al correu nou","save":"Desa el correu","saved":"S'ha actualitzat el teu correu. S'ha tancat la sessió als altres dispositius.","removeTitle":"Treu el teu correu","removeDescription":"Només podràs iniciar sessió amb la contrasenya. Si l'oblides, no hi ha manera de recuperar el compte. Confirma amb la contrasenya.","removed":"S'ha tret el teu correu. S'ha tancat la sessió als altres dispositius."},"password":{"title":"Contrasenya","setTitle":"Crea una contrasenya","changeTitle":"Canvia la contrasenya","description":"Inicia sessió amb la contrasenya en lloc d'un codi per correu. Fes servir almenys {{min}} caràcters.","newLabel":"Contrasenya nova","repeatLabel":"Repeteix la contrasenya","tooShort":"Fes servir almenys {{min}} caràcters.","mismatch":"Les contrasenyes no coincideixen.","signOutOthers":"Tanca la sessió a tots els altres llocs","save":"Desa la contrasenya","saved":"S'ha desat la contrasenya.","row":"Opcional: inicia sessió amb contrasenya","remove":"Treu la contrasenya","removeTitle":"Treu la teva contrasenya","removeDescription":"Iniciaràs sessió amb un codi o un enllaç enviat al teu correu.","removed":"S'ha tret la teva contrasenya. S'ha tancat la sessió als altres dispositius."},"totp":{"title":"App d'autenticació","description":"Després del codi per correu o de la contrasenya, Oxy també et demana un codi d'una app com Google Authenticator o 1Password.","setUp":"Configura","scan":"Escaneja aquest codi QR amb la teva app d'autenticació o escriu la clau de configuració.","secretLabel":"Clau de configuració","codeLabel":"Codi de l'app","enable":"Activa","enabled":"L'app d'autenticació està activada.","disable":"Desactiva l'app d'autenticació","disabled":"L'app d'autenticació està desactivada.","on":"Activada","off":"Desactivada","backupTitle":"Desa els codis de seguretat","backupDescription":"Si perds el mòbil, cada codi et permet iniciar sessió una vegada. Guarda'ls en un lloc segur: no es tornaran a mostrar.","copy":"Copia els codis","copied":"S'han copiat els codis de seguretat.","savedThem":"Ja els he desat","regenerate":"Obtén codis de seguretat nous","regenerateDescription":"Els codis de seguretat anteriors deixaran de funcionar.","remaining":"Queden {{count}} codis de seguretat","row":"Un segon pas en iniciar sessió","onWithCodes":"Activada · queden {{count}} codis de seguretat"}},"fileManagement":{"deleteFile":"Elimina el fitxer","confirm":"Confirma","retry":"Torna-ho a provar","loadError":{"description":"Alguna cosa no ha anat bé. Comprova la connexió i torna-ho a provar."},"moveToTrash":"Mou a la paperera","moveToTrashCount":"Mou a la paperera ({{count}})","appAccess":{"title":"Apps amb accés","description":"Aquestes apps poden obrir aquest fitxer pel seu compte. Revoca una app per treure-li aquest accés.","empty":"Cap app no pot obrir aquest fitxer pel seu compte.","loadError":"No s'han pogut carregar les apps que poden obrir aquest fitxer","via":{"upload":"Va desar aquest fitxer per tu","link":"L'has compartit tu"},"revoke":"Revoca","confirm":{"title":"Vols revocar {{name}}?","message":"{{name}} ja no podrà obrir aquest fitxer i qualsevol reproducció que hagi iniciat s'aturarà ara."},"toasts":{"revoked":"{{name}} ja no pot obrir aquest fitxer","revokeFailed":"No s'ha pogut revocar l'accés de {{name}}"},"a11y":{"revoke":"Revoca l'accés de {{name}} a aquest fitxer"}},"trashView":{"title":"Paperera","subtitle":"Restaura fitxers o elimina’ls definitivament","notice":"Els fitxers es queden a la paperera fins que els restauris o els eliminis, i continuen comptant per al teu emmagatzematge.","emptyTitle":"La paperera és buida","emptyDescription":"Els fitxers que moguis a la paperera apareixeran aquí. Pots restaurar-los o eliminar-los definitivament.","trashedOn":"Mogut a la paperera el {{date}}","deleteForever":"Elimina definitivament","loadError":"No s'ha pogut carregar la paperera","a11y":{"restore":"Restaura {{name}}","deleteForever":"Elimina {{name}} definitivament"}},"a11y":{"moveToTrash":"Mou {{name}} a la paperera","deleteFile":"Elimina {{name}}","openTrash":"Obre la paperera"},"toasts":{"movedToTrash":"S'ha mogut a la paperera. El pots restaurar des de la paperera.","bulkMovedToTrash":"S'han mogut {{count}} fitxer(s) a la paperera","moveToTrashFailed":"No s'ha pogut moure el fitxer a la paperera","restored":"S'ha restaurat el fitxer","notInTrash":"Aquest fitxer ja no és a la paperera.","restoreFailed":"No s'ha pogut restaurar el fitxer","deletedForever":"S'ha eliminat el fitxer definitivament","deleteSuccess":"S'ha eliminat el fitxer","deleteFailed":"No s'ha pogut eliminar el fitxer","fileNotFound":"No s'ha trobat el fitxer. Potser ja s'ha eliminat.","noPermission":"No tens permís per eliminar aquest fitxer.","bulkDeleteSuccess":"S'han eliminat {{count}} fitxer(s)","bulkDeleteFailed":"No s'han pogut eliminar {{count}} fitxer(s)","bulkDeleteError":"No s'han pogut eliminar els fitxers"},"confirms":{"deleteFile":"Segur que vols eliminar «{{filename}}»? Aquesta acció no es pot desfer.","moveToTrash":"Vols moure «{{filename}}» a la paperera? Deixarà de mostrar-se enlloc i el podràs restaurar des de la paperera.","moveFilesToTrash":"Vols moure {{count}} fitxer(s) a la paperera? Deixaran de mostrar-se enlloc i els podràs restaurar des de la paperera.","deleteForever":"Vols eliminar «{{filename}}» definitivament? Aquesta acció no es pot desfer.","deleteForeverInUse":"«{{filename}}» encara es fa servir en {{count}} lloc(s) de les teves aplicacions. Si l’elimines, també en desapareixerà. Vols eliminar-lo definitivament?"}},"follow":{"pending":"Sol·licitat","disabled":"Desactivat aquí","named":"{{label}}: {{name}}","verbs":{"follow":{"idle":"Segueix","active":"Seguint","everywhere":"Deixa de seguir a tot arreu","undo":"Deixa de seguir aquest compte","undoNamed":"Deixa de seguir {{name}}","checking":"Comprovant si segueixes aquest compte","checkingNamed":"Comprovant si segueixes {{name}}"},"subscribe":{"idle":"Subscriu-t'hi","active":"Subscrit","everywhere":"Cancel·la la subscripció a tot arreu","undo":"Cancel·la la subscripció","undoNamed":"Cancel·la la subscripció a {{name}}","checking":"Comprovant la subscripció","checkingNamed":"Comprovant si estàs subscrit a {{name}}"},"join":{"idle":"Uneix-t'hi","active":"Membre","everywhere":"Surt a tot arreu","undo":"Deixa de ser membre","undoNamed":"Deixa de ser membre de {{name}}","checking":"Comprovant si n'ets membre","checkingNamed":"Comprovant si ets membre de {{name}}"},"watch":{"idle":"Vigila","active":"Vigilant","everywhere":"Deixa de vigilar a tot arreu","undo":"Deixa de vigilar","undoNamed":"Deixa de vigilar {{name}}","checking":"Comprovant si ho vigiles","checkingNamed":"Comprovant si vigiles {{name}}"}},"all":{"idle":"Segueix-los tots","hint":"Segueix els {{count}} comptes","hintOne":"Segueix {{count}} compte","undoHint":"Deixa de seguir els {{count}} comptes","undoHintOne":"Deixa de seguir {{count}} compte"},"menu":{"forDuration":"{{label}} durant {{duration}}","showIn":"Mostra a {{app}}","hideIn":"No ho mostris a {{app}}","thisApp":"aquesta app","options":"{{label}}: opcions","optionsHint":"Obre més opcions"},"durations":{"day":"24 hores","threeDays":"72 hores","week":"una setmana"},"errors":{"update":"No s’ha pogut actualitzar l’estat","read":"No s’ha pogut comprovar l’estat","mode":"No s’ha pogut canviar la configuració d’aquesta aplicació","offline":"No tens connexió. Comprova-la i torna-ho a provar.","signedOut":"Torna a iniciar la sessió per continuar","forbidden":"Aquesta aplicació no té permís per fer-ho","notFound":"Això ja no està disponible","rateLimited":"Massa intents. Torna-ho a provar d’aquí a una estona."}},"accounts":{"accountCategory":{"news":"Notícies","politics":"Política","business":"Negocis","startup":"Startups i emprenedoria","finance":"Finances i inversió","crypto":"Cripto i web3","marketplace":"Mercat i anuncis","retail":"Comerç i comerç electrònic","real_estate":"Immobiliari","agency":"Agència immobiliària","landlord":"Propietaris i gestió d'immobles","cooperative":"Cooperativa d'habitatge","architecture":"Arquitectura i construcció","technology":"Tecnologia","software":"Programari i desenvolupament","ai":"IA i aprenentatge automàtic","security":"Seguretat i privadesa","automation":"Automatització i eines","science":"Ciència i recerca","education":"Educació i formació","books":"Llibres i escriptura","health":"Salut i medicina","fitness":"Fitness i benestar","sports":"Esports","gaming":"Videojocs i esports electrònics","music":"Música","film":"Cinema i TV","podcast":"Pòdcasts i àudio","art":"Art i disseny","photography":"Fotografia","comedy":"Humor","food":"Menjar i beure","travel":"Viatges i llocs","fashion":"Moda i bellesa","home_garden":"Casa i jardí","diy":"Fes-ho tu mateix","automotive":"Motor","animals":"Animals","family":"Família i criança","nonprofit":"Sense ànim de lucre i solidaritat","government":"Administració i sector públic","community":"Comunitat local","activism":"Activisme i defensa de causes","environment":"Medi ambient i sostenibilitat","religion":"Religió i espiritualitat","other":"Altres"},"members":{"title":"Membres"},"settings":{"title":"Configuració del compte","subtitle":"Gestiona el perfil, els membres i l'accés d'aquest compte.","save":"Desa els canvis","displayName":{"label":"Nom visible","invalidChars":"Fes servir només lletres, espais, apòstrofs i separadors de nom","invalidTitle":"Fes servir text pla sense < ni > (fins a 300 caràcters)"},"bio":{"label":"Biografia (opcional)"},"picture":{"change":"Canvia la imatge"},"categories":{"title":"Categories","footer":"La primera categoria és la principal que es mostra al perfil. Fins a {{max}}.","primary":"Principal","makePrimary":"Fes-la principal","remove":"Treu {{category}}","add":"Afegeix una categoria","atCap":"Fins a {{max}}. Treu-ne una per afegir-ne una altra.","unavailable":"Categoria no disponible"},"sections":{"access":"Accés","dangerZone":"Zona de perill"},"members":{"subtitle":"Convida persones i gestiona els rols"},"archive":{"title":"Arxiva el compte","subtitle":"Desactiva aquest compte","confirmTitle":"Arxiva el compte","confirmDescription":"Vols arxivar aquest compte? Es desactivarà i els seus membres en perdran l'accés."},"errors":{"missingAccount":"No s'ha seleccionat cap compte."},"toasts":{"saved":"Compte actualitzat","saveFailed":"No s'ha pogut actualitzar el compte","archived":"Compte arxivat","archiveFailed":"No s'ha pogut arxivar el compte"}}}}) as LocaleDict;