Compare commits

...
Author SHA1 Message Date
HampusandGitHub 631bc2307a fix(slowmode): stop the local cooldown from outgrowing the channel setting (#1795) 2026-08-20 19:56:02 +02:00
HampusandGitHub 8f4f9a8601 refactor(media): share one external proxy url codec across every service (#1794) 2026-08-20 19:55:40 +02:00
HampusandGitHub 1c920f966e feat(media): emit external proxy urls with a readable path and extension (#1793) 2026-08-20 18:44:45 +02:00
HampusandGitHub 2b1de38949 chore(i18n): regenerate catalogs after the voice engine removal (#1791) 2026-08-20 17:45:49 +02:00
HampusandGitHub d5daf61dbd fix(voice): recalibrate stored participant and stream volumes too (#1790) 2026-08-20 17:45:17 +02:00
HampusandGitHub 06c42ce02f refactor(desktop): delete the unused rust voice module (#1789) 2026-08-20 17:44:55 +02:00
HampusandGitHub 4f21430880 refactor(voice): drop the native only surface from voice_engine_v2 and narrow the desktop bridge (#1788) 2026-08-20 17:44:37 +02:00
HampusandGitHub 9731bac40f refactor(voice): remove the native voice engine from the renderer (#1787) 2026-08-20 17:43:38 +02:00
HampusandGitHub b144e650f2 fix(voice): make deafen reach watched screen share audio (#1786) 2026-08-20 17:43:19 +02:00
HampusandGitHub ef6536644c fix(voice): stop the in call speaker slider clamping a boosted output volume (#1785) 2026-08-20 17:42:59 +02:00
HampusandGitHub 17eab43245 fix(voice): retune the remote playback leveller and measure it in float (#1784) 2026-08-20 17:42:40 +02:00
HampusandGitHub fbd7f1e3b8 fix(voice): compose participant gain in linear space and split the ceilings (#1783) 2026-08-20 17:42:21 +02:00
HampusandGitHub 25af7516a4 fix(voice): widen the volume boost leg and add a master soft clip limiter (#1782) 2026-08-20 17:42:02 +02:00
HampusandGitHub c020eded31 fix(voice): stop forcing automatic gain control off on every capture profile (#1781) 2026-08-20 17:41:44 +02:00
HampusandGitHub 5331c0216a fix(voice): keep a remote track pinned at zero volume across re-attach (#1780) 2026-08-20 17:40:53 +02:00
HampusandGitHub 528777926c fix(api): stop one unreachable community from breaking bookmarks (#1779) 2026-08-20 15:50:51 +02:00
HampusandGitHub 47b5c3d4f0 fix(app): expose the guild id on guild list items again (#1778) 2026-08-20 14:39:24 +02:00
HampusandGitHub d9bfca66d6 fix(app): keep search results in server order instead of per channel (#1777) 2026-08-20 13:10:47 +02:00
HampusandGitHub ded51b65d3 fix(app): restore the mobile voice message recorder (#1776) 2026-08-20 04:33:24 +02:00
HampusandGitHub ddc8837d4f fix(app): scale embed and attachment width caps with zoom (#1775) 2026-08-20 04:33:17 +02:00
HampusandGitHub df16957c95 fix(app): scale tooltip max-width with app zoom (#1774) 2026-08-20 04:33:10 +02:00
HampusandGitHub f38b19d4bd fix(app): let the caret move past emoji and mentions in the composer (#1768) 2026-08-19 23:41:05 +02:00
HampusandGitHub f7cd4f2c74 docs(operator): explain how to reclaim space after upgrades (#1767) 2026-08-19 23:31:15 +02:00
a078392888 chore(i18n): update public marketing catalogs (#1719)
Co-authored-by: hampus-fluxer <[email protected]>
2026-08-19 22:46:33 +02:00
HampusandGitHub 3060f23f8c chore(marketing): bump the marketing submodule pointer (#1766) 2026-08-19 22:29:10 +02:00
HampusandGitHub 6a5f0d4d29 fix(i18n): simplify the marketing translation and saved media strings (#1764) 2026-08-19 22:25:01 +02:00
HampusandGitHub 91d989dc7c fix(app): point the language notice at Weblate instead of email (#1763) 2026-08-19 22:05:39 +02:00
HampusandGitHub 7c82804df6 fix(app): stop sensitive content options overlapping in long locales (#1762) 2026-08-19 19:53:46 +02:00
HampusandGitHub b7de83f7fc fix(app): stop the Firefox microphone failure and self-mute storm (#1761) 2026-08-19 19:32:41 +02:00
HampusandGitHub 97bd022bee fix(app): render the discovery language icon at bold weight (#1760) 2026-08-19 19:08:48 +02:00
HampusandGitHub 62324df039 feat(app): add a language filter button to the discovery navbar (#1759) 2026-08-19 18:46:39 +02:00
HampusandGitHub 9f78b3d9a6 feat(app): retry failed image loads with escalating delay and connectivity waits (#1758) 2026-08-19 18:25:34 +02:00
HampusandGitHub 362a89f2b2 fix(app): keep embed icons mounted so they reserve space while loading (#1757) 2026-08-19 18:00:08 +02:00
HampusandGitHub ce41960fcd perf(app): load embed author and footer icons through the image cache (#1756) 2026-08-19 17:38:00 +02:00
HampusandGitHub 2083eaddd6 feat(app): wrap pasted links in every composer that allows masked links (#1755) 2026-08-19 17:19:39 +02:00
HampusandGitHub d398ebc44b test: drop desktop test files that no runner executes (#1753) 2026-08-19 14:58:59 +02:00
HampusandGitHub 59887ad404 fix(app): wrap pasted links from any source, not just Fluxer's own clipboard (#1752) 2026-08-19 14:57:13 +02:00
HampusandGitHub 5aa283e8e0 fix(desktop): repair a stale Linux .desktop entry instead of preserving it (#1751) 2026-08-19 14:56:29 +02:00
HampusandGitHub d9ed256a4b fix(desktop): pin Electron to 43.4.0 to restore KDE and XFCE tray icons (#1750) 2026-08-19 14:45:58 +02:00
HampusandGitHub a297f89b83 fix(markdown): parse a table that follows a text line without a blank line (#1749) 2026-08-19 14:24:33 +02:00
HampusandGitHub 4a16921242 fix(app): stop macOS window chrome from swallowing clicks below the titlebar (#1748) 2026-08-19 13:05:42 +02:00
HampusandGitHub a6f83c4fb1 feat(app): wrap the selection in a link when pasting a URL (#1747) 2026-08-19 12:55:15 +02:00
HampusandGitHub 7b5c82c6cf fix(app): keep quick switcher focus when results are recomputed (#1746) 2026-08-19 12:55:04 +02:00
HampusandGitHub 30a61ce90f chore(i18n): refresh catalogs and translate new strings (#1745) 2026-08-19 12:46:51 +02:00
HampusandGitHub 22bc2cab74 fix(app): offset toasts below the window chrome on macOS (#1744) 2026-08-19 12:42:08 +02:00
HampusandGitHub 53df9a0d6d fix(app): include remainder seconds in slowmode durations (#1743) 2026-08-19 12:41:56 +02:00
HampusandGitHub f9b7ec4d0b fix(app): stop the bio editor placeholder from overflowing (#1742) 2026-08-19 12:41:44 +02:00
HampusandGitHub 569abf57b7 fix(app): keep the edited marker on attachment-only messages (#1741) 2026-08-19 12:41:31 +02:00
HampusandGitHub ae8e32d809 fix(app): render modals above a fullscreen voice call (#1740) 2026-08-19 12:41:19 +02:00
HampusandGitHub a81b1abec7 fix(api): reject alt text edits on forwarded messages (#1739) 2026-08-19 12:41:07 +02:00
HampusandGitHub 8836565c32 fix(app): keep the guild verification timer stable across switches (#1738) 2026-08-19 12:40:55 +02:00
HampusandGitHub a1b595d52f fix(app): apply the current system theme when relaunching (#1737) 2026-08-19 12:40:43 +02:00
HampusandGitHub abb71ed558 fix(app): prompt for a restart when the system titlebar toggle changes (#1736) 2026-08-19 12:40:32 +02:00
HampusandGitHub c006d413ac fix(desktop): bump Electron to 43.4.1 to restore the Linux tray icon (#1735) 2026-08-19 12:40:20 +02:00
HampusandGitHub fa11acae15 fix(desktop): use the masked icon for AppImage desktop integration (#1734) 2026-08-19 12:40:09 +02:00
HampusandGitHub 300f467ad0 fix(desktop): stop the AppImage adding a duplicate menu entry each launch (#1733) 2026-08-19 12:39:57 +02:00
HampusandGitHub 698469fa96 perf(app): defer media capture routing and skip offscreen skeleton layout (#1732) 2026-08-19 02:58:01 +02:00
HampusandGitHub 591e9fe2ba fix(api): only finalize self-serve refunds once the provider confirms (#1731) 2026-08-19 02:57:58 +02:00
HampusandGitHub d148b4e5b7 feat(app): show 25 unread messages per channel in the inbox (#1729) 2026-08-19 01:06:00 +02:00
HampusandGitHub 324f333bb5 test: drop stale hosted instance config and voice engine boundary tests (#1728) 2026-08-19 00:48:06 +02:00
HampusandGitHub 9b0b703c9d fix(api): identify session clients correctly and attribute handoff sessions (#1727) 2026-08-19 00:41:29 +02:00
HampusandGitHub 5660972c71 perf(app): cut idle renderer CPU and unbounded memory growth (#1724) 2026-08-18 23:13:42 +02:00
HampusandGitHub b4a5eb77a8 docs: fix community health document links broken by the .github move (#1723) 2026-08-18 20:23:40 +02:00
HampusandGitHub 4bbfee4cec fix(app): make click-through the default and move animation pausing to Accessibility (#1722) 2026-08-18 19:40:35 +02:00
HampusandGitHub 9e89539f0a perf(app): stop unbounded WASM heap growth and idle-CPU churn (#1721) 2026-08-18 18:31:28 +02:00
fa71eb8682 chore(marketing): advance pointer 9720a17 → a31164c (#1717)
Co-authored-by: hampus-fluxer <[email protected]>
2026-08-18 16:50:27 +02:00
HampusandGitHub 49b7127bc7 chore(static): regenerate marketing screenshots and README showcase (#1718) 2026-08-18 16:50:23 +02:00
HampusandGitHub 9cb8812be0 fix(app-proxy): collapse the discovery cold-start retry condition (#1716) 2026-08-18 16:12:33 +02:00
HampusandGitHub 7d82d188a0 fix(gateway): register the session process with presence on resume (#1715) 2026-08-18 16:06:26 +02:00
HampusandGitHub 5ce5669f17 fix(app): allow the inbox shortcut while the composer is empty (#1714) 2026-08-18 14:31:23 +02:00
HampusandGitHub 9ea750152e fix(app-proxy): serve the SPA from cached discovery instead of blocking on refresh (#1713) 2026-08-18 06:07:53 +02:00
HampusandGitHub e87e2fe7bf fix(admin): show the deferred phone gate controls on hosted instances (#1712) 2026-08-18 05:49:33 +02:00
HampusandGitHub 871b5116dc fix(media-proxy): stop sending X-Robots-Tag in static mode (#1710) 2026-08-18 05:21:10 +02:00
HampusandGitHub d7b2e67c35 feat(api): defer registration phone verification to community joins (#1709) 2026-08-18 05:13:41 +02:00
HampusandGitHub 7e1ca9ed6a fix(api): mirror Stripe billing data using the shapes the pinned API version sends (#1708) 2026-08-18 02:35:58 +02:00
HampusandGitHub 1922d56188 fix(api): keep Stripe expand paths within the four-level limit (#1707) 2026-08-18 01:06:10 +02:00
HampusandGitHub cc105883a5 feat(app): restyle the inbox and message preview surfaces (#1706) 2026-08-18 00:43:18 +02:00
HampusandGitHub 41c7acdd8f feat(api): redirect artifact downloads to presigned storage URLs (#1703) 2026-08-17 21:47:46 +02:00
HampusandGitHub c35d29ea0b fix(app): resolve the unread anchor where channel message loads originate (#1701) 2026-08-17 16:20:49 +02:00
HampusandGitHub 97c29bf1fb fix(app): open channels at the unread boundary when the backlog exceeds one page (#1698) 2026-08-17 15:14:42 +02:00
HampusandGitHub 3ff7189566 fix(app): apply streamer mode to member nicknames and stop guild scope leaking into global surfaces (#1697) 2026-08-17 14:58:56 +02:00
HampusandGitHub 3fa766c39c fix(app): show the full user tag beside display names instead of a bare discriminator (#1696) 2026-08-17 14:46:06 +02:00
HampusandGitHub 10ae4bfe1e ci: publish releases with the Fluxer CI app instead of the Actions token (#1695) 2026-08-17 12:59:29 +02:00
HampusandGitHub d271f3112c fix(app): resend a stalled member list subscription before replacing the session (#1694) 2026-08-17 12:48:17 +02:00
HampusandGitHub 5a13172b46 ci: stop fork clones running repository-scoped workflows (#1693) 2026-08-17 12:06:24 +02:00
HampusandGitHub 2269e1899e fix(app): show friend nicknames on forward targets (#1692) 2026-08-17 12:00:08 +02:00
HampusandGitHub c61fd96df6 fix(app): search forward targets by username and every known nickname (#1691) 2026-08-17 11:51:07 +02:00
HampusandGitHub 6c68202222 fix(api): let SSO accounts without a password satisfy sudo verification (#1690) 2026-08-16 23:35:47 +02:00
HampusandGitHub e0bb10d5b7 fix(api): reject unclaimed guild creation before the email verification gate (#1689) 2026-08-16 23:34:07 +02:00
HampusandGitHub 96643ab20d fix(unfurl): key the cache on available provider credentials (#1688) 2026-08-16 23:19:51 +02:00
HampusandGitHub 40da982f57 fix(app): restore the guild list item hover tooltip (#1687) 2026-08-16 23:04:55 +02:00
HampusandGitHub 8a14281b87 feat(api): return discovery category counts and banners for faceted search (#1686) 2026-08-16 22:39:21 +02:00
HampusandGitHub be69157811 fix(admin): allow single community mode to be turned back on (#1684) 2026-08-16 22:29:23 +02:00
HampusandGitHub 45289b5531 fix(api): let single community setup work without email verification (#1683) 2026-08-16 22:14:59 +02:00
HampusandGitHub 30a1271774 fix(app): keep timers running while the window is visible but unfocused (#1682) 2026-08-16 22:06:09 +02:00
HampusandGitHub 438f11adda perf(app): stop per-frame style recalculation in skeletons and member list (#1681) 2026-08-16 22:00:10 +02:00
HampusandGitHub 170ca805c5 fix(app): stop the service worker serving the unrendered index template (#1680) 2026-08-16 20:52:07 +02:00
HampusandGitHub f4547d11d3 fix(app): dim the disabled discovery nav item through colour only (#1678) 2026-08-16 19:33:35 +02:00
HampusandGitHub ccdd85b099 refactor(desktop): replace the native voice engine with a standalone hardware encoder (#1677) 2026-08-16 19:24:31 +02:00
HampusandGitHub 98c40c6979 feat(app): redesign discovery and align skeletons with rendered UI 2026-08-16 19:17:28 +02:00
HampusandGitHub e054aa96be chore(desktop): upgrade Electron to 43.4.0 (#1674) 2026-08-16 15:42:29 +02:00
HampusandGitHub 3e12466c57 fix(unfurl): restore document title fallback for link embeds (#1673) 2026-08-16 15:02:16 +02:00
HampusandGitHub 039bd1a7df fix(embed): correct link thumbnail placement and harden unfurl parsing (#1672) 2026-08-16 14:10:25 +02:00
HampusandGitHub 7a45d5844d fix(app): scale guild list selection pill with app zoom (#1670) 2026-08-16 01:36:16 +02:00
HampusandGitHub 410fa2dba9 fix(app): scale group DM status indicator with app zoom (#1669) 2026-08-16 01:36:01 +02:00
HampusandGitHub 4cb1808959 fix(media-proxy): register coalescer waiters before checking slot state (#1668) 2026-08-16 01:02:09 +02:00
yidoandGitHub 60a62c24c3 fix(media-proxy): handle coalescer future cancellation with optimal drop guard (#1156)
Refs #1146
2026-08-16 00:59:41 +02:00
HampusandGitHub c06e958eb5 fix(ci): resolve knip unused export and stale entry pattern (#1667) 2026-08-16 00:47:56 +02:00
358b7c88fc fix(settings): require all query words to match (#1665)
Signed-off-by: liamt8d <[email protected]>
Co-authored-by: Hampus <[email protected]>
2026-08-16 00:44:34 +02:00
HampusandGitHub 1bced6abae fix(app): keep typing indicator dots animating under reduced motion (#1666) 2026-08-16 00:32:52 +02:00
HampusandGitHub 8cbd55dcaf feat(app): open the emoji picker when selecting Add reaction (#1664) 2026-08-15 23:35:07 +02:00
HampusandGitHub 162937575c feat(search): accept user IDs in from and mentions filters (#1663) 2026-08-15 23:31:04 +02:00
HampusandGitHub c6223d656e ci: fail when compiled locale modules drift from the Weblate catalogs (#1662) 2026-08-15 23:24:17 +02:00
HampusandGitHub 2dd5e6a4b4 chore(i18n): recompile locale modules from the Weblate catalogs (#1661) 2026-08-15 23:15:49 +02:00
HampusandGitHub 490b710c61 feat(api): allow bots to search messages within a single community (#1660) 2026-08-15 23:11:45 +02:00
HampusandGitHub b5285019cd fix(i18n): keep SSO URL error translations in the Weblate catalogs (#1658) 2026-08-15 22:53:55 +02:00
HampusandGitHub dcd3d9d08a fix(app): pan zoomed media with the scroll wheel (#1657) 2026-08-15 22:49:54 +02:00
HampusandGitHub fb718e7e5b fix(search): filter message dates on createdAt instead of the id string (#1656) 2026-08-15 22:41:51 +02:00
HampusandGitHub 578fd61d93 feat(self-hosting): allow opting in to private-address SSO providers (#1655) 2026-08-15 22:30:46 +02:00
HampusandGitHub cbc0a616ea fix(self-hosting): verify seaweedfs buckets instead of trusting exit status (#1654) 2026-08-15 22:21:24 +02:00
HampusandGitHub 6d04fa3e6d fix(api): report non-routable SSO URLs distinctly from malformed ones (#1653) 2026-08-15 21:49:43 +02:00
HampusandGitHub 562819be09 fix(app-proxy): allow extra CSP sources from the environment (#1652) 2026-08-15 21:32:16 +02:00
HampusandGitHub f45a3073c1 fix(app-proxy): allow configured branding image origins in the CSP (#1651) 2026-08-15 21:21:59 +02:00
HampusandGitHub 5f9e4db230 fix(app): treat official invite and gift links as external when self-hosted (#1650) 2026-08-15 21:08:22 +02:00
HampusandGitHub 0be2a7fed9 feat(openapi): recognise the modern Zod integer formats (#1649) 2026-08-15 21:01:43 +02:00
HampusandGitHub e0876d719c fix(auth): reject a weak claim password before sending the code (#1648) 2026-08-15 20:53:03 +02:00
HampusandGitHub ae11ee86aa fix(api): disable Bluesky OAuth instead of failing on an invalid key (#1647) 2026-08-15 20:43:30 +02:00
HampusandGitHub 5022568608 fix(search): match the Meilisearch result window to Elasticsearch (#1646) 2026-08-15 20:38:28 +02:00
HampusandGitHub 004fb0c7b0 fix(self-hosting): surface passkey relying party settings (#1645) 2026-08-15 20:23:19 +02:00
HampusandGitHub 2dc9ded0e8 fix(app): stop muted channels from marking the guild unread (#1644) 2026-08-15 20:18:05 +02:00
HampusandGitHub 0692aa0e25 fix(app): route middle-clicked external links through the warning (#1643) 2026-08-15 20:12:21 +02:00
HampusandGitHub 3ed43ca00f fix(schema): keep the extension when a filename has repeated dots (#1642) 2026-08-15 20:06:19 +02:00
HampusandGitHub 5cd22ee84e fix(app): wrap long guild names in the sidebar tooltip (#1641) 2026-08-15 20:01:20 +02:00
a90168fa66 chore(marketing): advance pointer 1bba956 → 9720a17 (#1640)
Co-authored-by: hampus-fluxer <[email protected]>
2026-08-15 19:55:27 +02:00
HampusandGitHub 1f76c9d3d3 fix(api): auto-join the single community on registration approval (#1639) 2026-08-15 19:54:40 +02:00
HampusandGitHub 4480d4db69 fix(self-hosting): declare postgres dependencies in compose (#1638) 2026-08-15 19:38:19 +02:00
d1e5b00c52 Use locale parameter for date formatting (#1637)
Co-authored-by: Hampus <[email protected]>
2026-08-15 19:37:48 +02:00
HampusandGitHub b937306210 fix(caddy): route server discovery to the API (#1636) 2026-08-15 19:32:17 +02:00
HampusandGitHub de614db368 fix(app): restore text selection on narrow desktop windows (#1635) 2026-08-15 19:28:59 +02:00
HampusandGitHub a4b121345f fix(app-proxy): allow Cloudflare Turnstile origins in the CSP (#1634) 2026-08-15 19:26:12 +02:00
HampusandGitHub 6073ad74d5 fix(schema): raise user trait length limit to fit SSO identities (#1633) 2026-08-15 19:21:46 +02:00
HampusandGitHub 2d51600b6c fix(markdown): stop escaped link destinations from swallowing later content (#1630) 2026-08-15 15:48:58 +02:00
HampusandGitHub 235399cfd6 fix(api): keep activity tracking out of the registration critical path (#1629) 2026-08-15 15:08:48 +02:00
HampusandGitHub 2bb4c92f2b feat(ci): list desktop download URLs in release bodies (#1628) 2026-08-15 14:50:51 +02:00
HampusandGitHub 86afe3aefc fix: repair the failing gateway and knip checks (#1627) 2026-08-15 14:41:07 +02:00
HampusandGitHub d0f56c3afd fix(app): preserve node selection when reconciling composer markdown (#1626) 2026-08-15 14:07:58 +02:00
3df84098e6 chore(marketing): advance pointer 81f925a → 1bba956 (#1625)
Co-authored-by: hampus-fluxer <[email protected]>
2026-08-15 14:03:57 +02:00
6e2fbb712e chore(i18n): update translations from Weblate (#1434)
Co-authored-by: Weblate <[email protected]>
2026-08-15 13:56:30 +02:00
9cbed99420 chore(i18n): update translations from Weblate (#1433)
Co-authored-by: Weblate <[email protected]>
Co-authored-by: Gabriela <[email protected]>
2026-08-15 13:56:27 +02:00
fa63c2ed9a chore(i18n): update translations from Weblate (#1431)
Co-authored-by: Weblate <[email protected]>
2026-08-15 13:56:23 +02:00
HampusandGitHub c87933ab2f chore(i18n): apply pending Weblate translations (#1624) 2026-08-15 13:52:41 +02:00
HampusandGitHub 9606009d3e fix(ci): sync the standalone tools/ci lockfile (#1623) 2026-08-15 13:43:08 +02:00
b4bf8c92f1 fix(app): forcefully unmount splash screen and disable pointer events when ready (#1542)
Co-authored-by: Hampus <[email protected]>
2026-08-15 13:39:23 +02:00
b386cd625a fix: Remove more "required optionals" from OpenAPI spec (#1522)
Co-authored-by: Hampus <[email protected]>
2026-08-15 13:32:59 +02:00
d8c5c88c0d fix(devcontainer): set "biome" as default formatter (#1446)
Co-authored-by: Hampus <[email protected]>
2026-08-15 13:30:57 +02:00
f579b515df fix(devcontainer): add editorconfig vscode extension (#1447)
Co-authored-by: Hampus <[email protected]>
2026-08-15 13:30:21 +02:00
23955b0997 fix(messaging): consume full text node when detecting jumbo emojis (#1540)
Co-authored-by: Hampus <[email protected]>
2026-08-15 13:28:53 +02:00
2041 changed files with 90937 additions and 456886 deletions
+5 -1
View File
@@ -61,6 +61,9 @@
"postStartCommand": "bash /workspaces/fluxer/.devcontainer/fix-docker-socket.sh && cargo run -p fluxer-dev -- post-start && bash /workspaces/fluxer/fluxer_docs/serve.sh --daemon",
"customizations": {
"vscode": {
"settings": {
"editor.defaultFormatter": "biomejs.biome"
},
"extensions": [
"biomejs.biome",
"rust-lang.rust-analyzer",
@@ -68,7 +71,8 @@
"TypeScriptTeam.native-preview",
"unifiedjs.vscode-mdx",
"pgourlain.erlang",
"clinyong.vscode-css-modules"
"clinyong.vscode-css-modules",
"EditorConfig.EditorConfig"
]
}
}
+4 -4
View File
@@ -25,7 +25,7 @@ Closes #456
You must understand every line you submit and be able to explain why the change is correct.
The [LLM usage policy](LLM_USAGE_POLICY.md) defines the authorship requirements for contributors who do not have write access.
The [LLM usage policy](https://github.com/fluxerapp/fluxer/blob/main/.github/LLM_USAGE_POLICY.md) defines the authorship requirements for contributors who do not have write access.
Each contribution must contain one coherent change. Do not include unrelated fixes, refactoring or formatting changes.
@@ -80,15 +80,15 @@ Complete every section of the pull request template. Clearly describe:
Use the [bug report form](https://github.com/fluxerapp/fluxer/issues/new?template=bug-report.yaml) to report reproducible defects.
Report security vulnerabilities privately through the channels specified in the [security policy](SECURITY.md). Do not report vulnerabilities in public issues or discussions.
Report security vulnerabilities privately through the channels specified in the [security policy](https://github.com/fluxerapp/fluxer/blob/main/.github/SECURITY.md). Do not report vulnerabilities in public issues or discussions.
Use [discussions](https://github.com/orgs/fluxerapp/discussions) for feature proposals and self-hosting questions.
Submit translations through [Weblate](https://weblate.fluxer.tools), not through pull requests.
All repository activity is governed by the [Code of Conduct](CODE_OF_CONDUCT.md).
All repository activity is governed by the [Code of Conduct](https://github.com/fluxerapp/fluxer/blob/main/.github/CODE_OF_CONDUCT.md).
Fluxer is distributed under the [GNU Affero General Public License, version 3.0 or later](../LICENSE). By adding a DCO sign-off, you certify that you have the right to submit the contribution under that licence.
Fluxer is distributed under the [GNU Affero General Public License, version 3.0 or later](https://github.com/fluxerapp/fluxer/blob/main/LICENSE). By adding a DCO sign-off, you certify that you have the right to submit the contribution under that licence.
## Private marketing project
+2 -2
View File
@@ -8,11 +8,11 @@ External contributions do not grant voting rights, commit access, employment or
## Licence and contributor rights
Source code owned by Fluxer Platform AB in this repository is distributed under the [GNU Affero General Public License, version 3.0 or later](../LICENSE). The licence permits its use, modification and redistribution subject to its terms.
Source code owned by Fluxer Platform AB in this repository is distributed under the [GNU Affero General Public License, version 3.0 or later](https://github.com/fluxerapp/fluxer/blob/main/LICENSE). The licence permits its use, modification and redistribution subject to its terms.
Fluxer Platform AB does not require contributors to sign a contributor licence agreement or assign their copyright. Contributors retain the copyright in their work.
Every commit made by a contributor must include the [Developer Certificate of Origin](https://developercertificate.org) sign-off required by the [contributing guidelines](CONTRIBUTING.md). Pull requests opened by Fluxer repository automation are exempt from this requirement.
Every commit made by a contributor must include the [Developer Certificate of Origin](https://developercertificate.org) sign-off required by the [contributing guidelines](https://github.com/fluxerapp/fluxer/blob/main/.github/CONTRIBUTING.md). Pull requests opened by Fluxer repository automation are exempt from this requirement.
## Name and marks
+1 -1
View File
@@ -129,7 +129,7 @@ Deliberately submitting a fabricated security report MAY result in an immediate
Maintainers are not required to investigate possible LLM use proactively. Writing style alone is not evidence of a violation.
A person MUST NOT publicly accuse or harass a contributor because of suspected LLM use. All discussion, review and enforcement under this policy MUST comply with the [Code of Conduct](CODE_OF_CONDUCT.md).
A person MUST NOT publicly accuse or harass a contributor because of suspected LLM use. All discussion, review and enforcement under this policy MUST comply with the [Code of Conduct](https://github.com/fluxerapp/fluxer/blob/main/.github/CODE_OF_CONDUCT.md).
## 11. Normative References
+20 -2
View File
@@ -65,10 +65,19 @@ jobs:
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9
with:
toolchain: "1.93.0"
- name: Create token
id: create-token
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1
with:
client-id: ${{ vars.FLUXER_CI_APP_ID }}
private-key: ${{ secrets.FLUXER_CI_APP_KEY }}
owner: fluxerapp
repositories: fluxer
permission-contents: read
- name: set variables
id: vars
env:
GH_TOKEN: ${{ github.token }}
GH_TOKEN: ${{ steps.create-token.outputs.token }}
FLUXER_BUILD_VERSION: ${{ inputs['build-version'] }}
run: >-
cargo run --locked --quiet --manifest-path tools/ci/Cargo.toml -- resolve-calver
@@ -151,9 +160,18 @@ jobs:
"${IMAGE}:${VERSION}-arm64"
docker buildx imagetools inspect "${IMAGE}:${VERSION}"
- name: Create token
id: create-token
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1
with:
client-id: ${{ vars.FLUXER_CI_APP_ID }}
private-key: ${{ secrets.FLUXER_CI_APP_KEY }}
owner: fluxerapp
repositories: fluxer
permission-contents: write
- name: Publish GitHub release
env:
GH_TOKEN: ${{ github.token }}
GH_TOKEN: ${{ steps.create-token.outputs.token }}
SOURCE_SHA: ${{ github.sha }}
VERSION: ${{ needs.meta.outputs.build_version }}
RELEASE_BASELINE_SHA: ${{ vars.RELEASE_BASELINE_SHA }}
+1
View File
@@ -29,6 +29,7 @@ jobs:
image:
needs: approve
uses: ./.github/workflows/_build-image.yaml
secrets: inherit
with:
image: fluxer-admin
dockerfile: fluxer_admin/Dockerfile
+1
View File
@@ -29,6 +29,7 @@ jobs:
image:
needs: approve
uses: ./.github/workflows/_build-image.yaml
secrets: inherit
with:
image: fluxer-api
dockerfile: fluxer_api/Dockerfile
@@ -29,6 +29,7 @@ jobs:
build:
needs: approve
uses: ./.github/workflows/_build-image.yaml
secrets: inherit
with:
image: fluxer-app-proxy-self-hosted
dockerfile: fluxer_app_proxy/Dockerfile
+10 -1
View File
@@ -187,9 +187,18 @@ jobs:
"${IMAGE}:${VERSION}-arm64"
docker buildx imagetools inspect "${IMAGE}:${VERSION}"
- name: Create token
id: create-token
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1
with:
client-id: ${{ vars.FLUXER_CI_APP_ID }}
private-key: ${{ secrets.FLUXER_CI_APP_KEY }}
owner: fluxerapp
repositories: fluxer
permission-contents: write
- name: Publish GitHub release
env:
GH_TOKEN: ${{ github.token }}
GH_TOKEN: ${{ steps.create-token.outputs.token }}
SOURCE_SHA: ${{ github.sha }}
VERSION: ${{ needs.meta.outputs.build_version }}
RELEASE_BASELINE_SHA: ${{ vars.RELEASE_BASELINE_SHA }}
+20 -2
View File
@@ -67,10 +67,19 @@ jobs:
with:
toolchain: "1.93.0"
- name: Create token
id: create-token
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1
with:
client-id: ${{ vars.FLUXER_CI_APP_ID }}
private-key: ${{ secrets.FLUXER_CI_APP_KEY }}
owner: fluxerapp
repositories: fluxer
permission-contents: read
- name: Set metadata
id: meta
env:
GH_TOKEN: ${{ github.token }}
GH_TOKEN: ${{ steps.create-token.outputs.token }}
FLUXER_BUILD_VERSION: ${{ inputs.build_version }}
run: >-
cargo run --locked --quiet --manifest-path tools/ci/Cargo.toml -- build-desktop
@@ -581,9 +590,18 @@ jobs:
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9
with:
toolchain: "1.93.0"
- name: Create token
id: create-token
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1
with:
client-id: ${{ vars.FLUXER_CI_APP_ID }}
private-key: ${{ secrets.FLUXER_CI_APP_KEY }}
owner: fluxerapp
repositories: fluxer
permission-contents: write
- name: Publish GitHub desktop release
env:
GH_TOKEN: ${{ github.token }}
GH_TOKEN: ${{ steps.create-token.outputs.token }}
CHANNEL: ${{ needs.meta.outputs.build_channel }}
VERSION: ${{ needs.meta.outputs.version }}
SOURCE_SHA: ${{ needs.meta.outputs.source_sha }}
+1
View File
@@ -29,6 +29,7 @@ jobs:
image:
needs: approve
uses: ./.github/workflows/_build-image.yaml
secrets: inherit
with:
image: fluxer-docs
dockerfile: fluxer_docs/Dockerfile
+1
View File
@@ -29,6 +29,7 @@ jobs:
image:
needs: approve
uses: ./.github/workflows/_build-image.yaml
secrets: inherit
with:
image: fluxer-gateway
dockerfile: fluxer_gateway/Dockerfile
+1
View File
@@ -29,6 +29,7 @@ jobs:
image:
needs: approve
uses: ./.github/workflows/_build-image.yaml
secrets: inherit
with:
image: fluxer-gifs
dockerfile: fluxer_gifs/Dockerfile
+1
View File
@@ -29,6 +29,7 @@ jobs:
image:
needs: approve
uses: ./.github/workflows/_build-image.yaml
secrets: inherit
with:
image: fluxer-media-proxy
dockerfile: fluxer_media_proxy/Dockerfile
+1
View File
@@ -29,6 +29,7 @@ jobs:
image:
needs: approve
uses: ./.github/workflows/_build-image.yaml
secrets: inherit
with:
image: fluxer-messages
dockerfile: fluxer_messages/Dockerfile
+1
View File
@@ -29,6 +29,7 @@ jobs:
image:
needs: approve
uses: ./.github/workflows/_build-image.yaml
secrets: inherit
with:
image: fluxer-snowflakes
dockerfile: fluxer_snowflakes/Dockerfile
+1
View File
@@ -29,6 +29,7 @@ jobs:
image:
needs: approve
uses: ./.github/workflows/_build-image.yaml
secrets: inherit
with:
image: fluxer-static
dockerfile: fluxer_static/Dockerfile
+1
View File
@@ -29,6 +29,7 @@ jobs:
image:
needs: approve
uses: ./.github/workflows/_build-image.yaml
secrets: inherit
with:
image: fluxer-unfurl
dockerfile: fluxer_unfurl/Dockerfile
+1
View File
@@ -29,6 +29,7 @@ jobs:
image:
needs: approve
uses: ./.github/workflows/_build-image.yaml
secrets: inherit
with:
image: fluxer-users
dockerfile: fluxer_users/Dockerfile
@@ -17,6 +17,7 @@ concurrency:
jobs:
dispatch:
name: Dispatch regeneration
if: github.repository == 'fluxerapp/fluxer'
runs-on: ubuntu-latest
steps:
- name: Create token
@@ -31,6 +31,7 @@ concurrency:
jobs:
metadata:
name: resolve exact private build metadata
if: github.repository == 'fluxerapp/fluxer'
runs-on: ubuntu-24.04
timeout-minutes: 5
outputs:
@@ -39,11 +40,20 @@ jobs:
build_version: ${{ steps.inputs.outputs.build_version }}
correlation_id: ${{ steps.inputs.outputs.correlation_id }}
steps:
- name: Create token
id: create-token
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1
with:
client-id: ${{ vars.FLUXER_CI_APP_ID }}
private-key: ${{ secrets.FLUXER_CI_APP_KEY }}
owner: fluxerapp
repositories: fluxer
permission-contents: read
- name: Resolve trusted build inputs
id: inputs
env:
EVENT_AFTER: ${{ github.event.after }}
GH_TOKEN: ${{ github.token }}
GH_TOKEN: ${{ steps.create-token.outputs.token }}
PARENT_SHA: ${{ github.sha }}
PUBLIC_REPOSITORY: ${{ github.repository }}
RUN_ID: ${{ github.run_id }}
+1
View File
@@ -5,6 +5,7 @@ permissions: {}
jobs:
label:
name: Label
if: github.repository == 'fluxerapp/fluxer'
runs-on: ubuntu-latest
steps:
- name: Create token
@@ -41,7 +41,7 @@ concurrency:
jobs:
automatic:
name: Lock closed conversation
if: github.event_name != 'workflow_dispatch' && github.event_name != 'schedule'
if: github.repository == 'fluxerapp/fluxer' && github.event_name != 'workflow_dispatch' && github.event_name != 'schedule'
runs-on: ubuntu-latest
steps:
- name: Create token
@@ -155,7 +155,7 @@ jobs:
retroactive:
name: Lock closed conversations retroactively
if: github.event_name == 'workflow_dispatch' || github.event_name == 'schedule'
if: github.repository == 'fluxerapp/fluxer' && (github.event_name == 'workflow_dispatch' || github.event_name == 'schedule')
runs-on: ubuntu-latest
steps:
- name: Create token
+42
View File
@@ -216,6 +216,48 @@ jobs:
cargo run --locked --quiet --manifest-path tools/ci/Cargo.toml -- ci
--step knip
i18n:
runs-on: ubuntu-24.04
timeout-minutes: 25
steps:
- name: Checkout code
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
- name: Set up Rust toolchain (CI helpers)
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9
with:
toolchain: "1.93.0"
targets: wasm32-unknown-unknown
- name: Install pnpm
uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271
- name: Install Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
with:
node-version: '24'
cache: 'pnpm'
- name: Install dependencies
run: >-
cargo run --locked --quiet --manifest-path tools/ci/Cargo.toml -- ci
--step install_dependencies
- name: Compile locale catalogs
run: pnpm i18n:compile
- name: Check drift of compiled locale modules
run: |
if ! git diff --exit-code -- \
packages/errors/src/i18n/locales \
packages/errors/src/i18n/ErrorI18nTypes.generated.ts \
fluxer_api/pkgs/email/src/email_i18n/locales \
fluxer_api/pkgs/email/src/email_i18n/EmailI18nTypes.generated.ts \
fluxer_api/src/api/content_i18n/locales; then
echo "::error::Compiled locale modules are outdated. Run 'pnpm i18n:compile' and commit the result. Translations belong in the weblate/ catalogs, not in the generated locales/ modules."
exit 1
fi
fonts:
runs-on: ubuntu-24.04
timeout-minutes: 10
+1
View File
@@ -14,6 +14,7 @@
**/*.css.d.ts
**/*.tsbuildinfo
**/.cache/
**/.swc/
**/__pycache__/
**/_build/
**/coverage/
Generated
+19
View File
@@ -1624,6 +1624,15 @@ dependencies = [
"zeroize",
]
[[package]]
name = "encoding_rs"
version = "0.8.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3"
dependencies = [
"cfg-if",
]
[[package]]
name = "entities"
version = "1.0.1"
@@ -1768,6 +1777,7 @@ dependencies = [
"axum",
"base64",
"clap",
"fluxer_common",
"hmac 0.13.0",
"hyper 1.10.1",
"hyper-util",
@@ -1791,6 +1801,7 @@ dependencies = [
"anyhow",
"base64",
"fluxer-svc",
"fluxer_common",
"hmac 0.13.0",
"moka",
"reqwest",
@@ -1827,6 +1838,7 @@ dependencies = [
"cc",
"clap",
"criterion",
"fluxer_common",
"hex",
"hmac 0.13.0",
"http 1.4.2",
@@ -1866,6 +1878,7 @@ dependencies = [
"chrono",
"criterion",
"fluxer-svc",
"fluxer_common",
"fluxer_markdown_parser",
"futures",
"hmac 0.13.0",
@@ -1931,8 +1944,10 @@ dependencies = [
"anyhow",
"base64",
"chrono",
"encoding_rs",
"entities",
"fluxer-svc",
"fluxer_common",
"hmac 0.13.0",
"infer",
"moka",
@@ -2028,10 +2043,14 @@ dependencies = [
"aws-credential-types",
"aws-sigv4",
"axum",
"base64",
"hmac 0.13.0",
"maxminddb",
"moka",
"reqwest",
"serde_json",
"sha2 0.11.0",
"thiserror",
"time",
"tracing",
"urlencoding",
-2
View File
@@ -19,8 +19,6 @@ members = [
exclude = [
"fluxer_marketing",
"packages/markdown_parser/rust/fuzz",
"fluxer_desktop/native/webrtc-sender/vendor/tract-linalg-0.19.16",
"fluxer_desktop/native/webrtc-sender/vendor/tract-linalg-0.23.1",
]
resolver = "2"
+1 -1
View File
@@ -31,5 +31,5 @@
Fluxer is a free and open source instant messaging and VoIP chat app built for friends, groups, and communities.
<p align="center">
<img src="./fluxer_static/marketing/screenshots/desktop-1920w.png" alt="Fluxer app showcase" width="900">
<img src="./fluxer_static/marketing/screenshots/desktop-readme-1920w.png" alt="Fluxer app showcase" width="900">
</p>
+22
View File
@@ -24,6 +24,28 @@ FLUXER_VAPID_PUBLIC_KEY=CHANGE_ME
FLUXER_VAPID_PRIVATE_KEY=CHANGE_ME
FLUXER_VAPID_EMAIL=[email protected]
# Passkeys follow FLUXER_DOMAIN by default. Set these only if browsers reach the
# instance on a different host, and note that changing FLUXER_PASSKEY_RP_ID
# invalidates every passkey already registered against the old value.
#FLUXER_PASSKEY_RP_ID=chat.example.com
#FLUXER_PASSKEY_RP_NAME=Fluxer
#FLUXER_PASSKEY_ADDITIONAL_ALLOWED_ORIGINS=https://chat.example.com
# Extra Content-Security-Policy sources, appended to the built-in ones. Set these
# only when a browser must reach an origin the defaults do not cover, such as a
# voice server hosted on a domain other than FLUXER_DOMAIN. Separate several
# sources with spaces or commas.
#FLUXER_CSP_EXTRA_CONNECT_SRC=wss://livekit.example.com:7881
#FLUXER_CSP_EXTRA_IMG_SRC=https://cdn.example.com
#FLUXER_CSP_EXTRA_SCRIPT_SRC=https://analytics.example.com
# Allow the SSO identity provider to resolve to a private or internal address.
# Off by default: the API refuses to call non-public addresses so a misconfigured
# provider URL cannot be used to reach internal services. Turn it on only when the
# provider genuinely lives on your own network, such as split-horizon DNS or a LAN
# identity provider, and only when you trust everyone who can configure SSO.
#FLUXER_SSO_ALLOW_PRIVATE_ADDRESSES=true
LIVEKIT_API_KEY=fluxer
LIVEKIT_API_SECRET=CHANGE_ME
+4
View File
@@ -42,6 +42,10 @@
reverse_proxy static-proxy:8080
}
handle /.well-known/fluxer {
reverse_proxy api:8080
}
handle {
reverse_proxy app-proxy:8080
}
+39 -6
View File
@@ -72,9 +72,13 @@ x-fluxer-env: &fluxer-env
FLUXER_SUDO_MODE_SECRET: ${FLUXER_SUDO_MODE_SECRET:?set FLUXER_SUDO_MODE_SECRET in .env}
FLUXER_CONNECTION_INITIATION_SECRET: ${FLUXER_CONNECTION_INITIATION_SECRET:?set FLUXER_CONNECTION_INITIATION_SECRET in .env}
FLUXER_SSO_ALLOW_PRIVATE_ADDRESSES: ${FLUXER_SSO_ALLOW_PRIVATE_ADDRESSES:-false}
FLUXER_VAPID_PUBLIC_KEY: ${FLUXER_VAPID_PUBLIC_KEY:?set FLUXER_VAPID_PUBLIC_KEY in .env}
FLUXER_VAPID_PRIVATE_KEY: ${FLUXER_VAPID_PRIVATE_KEY:?set FLUXER_VAPID_PRIVATE_KEY in .env}
FLUXER_VAPID_EMAIL: ${FLUXER_VAPID_EMAIL:-admin@${FLUXER_DOMAIN}}
FLUXER_PASSKEY_RP_ID: ${FLUXER_PASSKEY_RP_ID:-${FLUXER_DOMAIN}}
FLUXER_PASSKEY_RP_NAME: ${FLUXER_PASSKEY_RP_NAME:-Fluxer}
FLUXER_PASSKEY_ADDITIONAL_ALLOWED_ORIGINS: ${FLUXER_PASSKEY_ADDITIONAL_ALLOWED_ORIGINS:-${FLUXER_PUBLIC_SCHEME:-https}://${FLUXER_DOMAIN}}
FLUXER_GATEWAY_RPC_AUTH_TOKEN: ${FLUXER_GATEWAY_RPC_AUTH_TOKEN:?set FLUXER_GATEWAY_RPC_AUTH_TOKEN in .env}
FLUXER_MEDIA_PROXY_SECRET_KEY: ${FLUXER_MEDIA_PROXY_SECRET_KEY:?set FLUXER_MEDIA_PROXY_SECRET_KEY in .env}
FLUXER_MEDIA_PROXY_UPLOAD_RELAY_SECRET_BASE64: ${FLUXER_MEDIA_PROXY_UPLOAD_RELAY_SECRET_BASE64:?set FLUXER_MEDIA_PROXY_UPLOAD_RELAY_SECRET_BASE64 in .env}
@@ -173,13 +177,29 @@ services:
- /bin/sh
- -c
- >
for i in $$(seq 1 60); do
echo "s3.bucket.create -name fluxer" | weed shell -master=seaweedfs:9333 >/dev/null 2>&1 && break || sleep 2;
buckets="fluxer fluxer-uploads fluxer-downloads fluxer-reports fluxer-harvests";
missing="$$buckets";
for attempt in $$(seq 1 60); do
if ! nc -z seaweedfs 9333 2>/dev/null; then
sleep 2;
continue;
fi;
listed=$$(echo "s3.bucket.list" | timeout 10 weed shell -master=seaweedfs:9333 2>&1);
missing="";
for b in $$buckets; do
echo "$$listed" | grep -q "^[[:space:]]*$$b[[:space:]]" || missing="$${missing:+$$missing }$$b";
done;
if [ -z "$$missing" ]; then
echo "buckets ready";
exit 0;
fi;
for b in $$missing; do
echo "s3.bucket.create -name $$b" | timeout 10 weed shell -master=seaweedfs:9333 >/dev/null 2>&1;
done;
sleep 2;
done;
for b in fluxer fluxer-uploads fluxer-downloads fluxer-reports fluxer-harvests; do
echo "s3.bucket.create -name $$b" | weed shell -master=seaweedfs:9333 || true;
done;
echo "buckets ready";
echo "seaweedfs-init could not verify buckets: $$missing" >&2;
exit 1;
livekit:
image: livekit/livekit-server:v1.12.0
@@ -282,9 +302,21 @@ services:
DISCOVERY_UPSTREAM_URL: http://caddy:8088/api/.well-known/fluxer
PUBLIC_BOOTSTRAP_API_ENDPOINT: /api
PUBLIC_BOOTSTRAP_API_PUBLIC_ENDPOINT: ${FLUXER_PUBLIC_SCHEME:-https}://${FLUXER_DOMAIN}/api
FLUXER_CSP_EXTRA_DEFAULT_SRC: ${FLUXER_CSP_EXTRA_DEFAULT_SRC:-}
FLUXER_CSP_EXTRA_CONNECT_SRC: ${FLUXER_CSP_EXTRA_CONNECT_SRC:-}
FLUXER_CSP_EXTRA_IMG_SRC: ${FLUXER_CSP_EXTRA_IMG_SRC:-}
FLUXER_CSP_EXTRA_MEDIA_SRC: ${FLUXER_CSP_EXTRA_MEDIA_SRC:-}
FLUXER_CSP_EXTRA_FONT_SRC: ${FLUXER_CSP_EXTRA_FONT_SRC:-}
FLUXER_CSP_EXTRA_SCRIPT_SRC: ${FLUXER_CSP_EXTRA_SCRIPT_SRC:-}
FLUXER_CSP_EXTRA_STYLE_SRC: ${FLUXER_CSP_EXTRA_STYLE_SRC:-}
FLUXER_CSP_EXTRA_FRAME_SRC: ${FLUXER_CSP_EXTRA_FRAME_SRC:-}
FLUXER_CSP_EXTRA_WORKER_SRC: ${FLUXER_CSP_EXTRA_WORKER_SRC:-}
FLUXER_CSP_EXTRA_MANIFEST_SRC: ${FLUXER_CSP_EXTRA_MANIFEST_SRC:-}
FLUXER_CSP_REPORT_URI: ${FLUXER_CSP_REPORT_URI:-}
depends_on:
api: {condition: service_healthy}
caddy: {condition: service_started}
postgres: {condition: service_healthy}
snowflakes:
<<: *fluxer-service
@@ -323,6 +355,7 @@ services:
FLUXER_SVC_SHARD_ID: "0"
depends_on:
nats: {condition: service_started}
postgres: {condition: service_healthy}
gifs:
<<: *fluxer-service
+31 -3
View File
@@ -12543,7 +12543,6 @@
"type": "object",
"properties": {
"single_community_enabled": {"type": "boolean"},
"single_community_locked": {"type": "boolean"},
"single_community_guild_id": {"nullable": true, "type": "string"},
"direct_messages_disabled": {"type": "boolean"},
"direct_messages_locked": {"type": "boolean"},
@@ -12574,18 +12573,27 @@
"bluesky": {"type": "boolean"}
},
"required": ["gif", "youtube", "bluesky"]
},
"deferred_phone_gate": {
"type": "object",
"properties": {
"enabled": {"type": "boolean"},
"window_hours": {"type": "number"},
"member_threshold": {"type": "number"}
},
"required": ["enabled", "window_hours", "member_threshold"]
}
},
"required": [
"single_community_enabled",
"single_community_locked",
"single_community_guild_id",
"direct_messages_disabled",
"direct_messages_locked",
"premium_mode",
"services",
"services_resolved",
"services_available"
"services_available",
"deferred_phone_gate"
]
},
"integrations": {
@@ -13112,6 +13120,21 @@
"youtube_enabled": {"nullable": true, "type": "boolean"},
"bluesky_enabled": {"nullable": true, "type": "boolean"}
}
},
"deferred_phone_gate": {
"nullable": true,
"type": "object",
"properties": {
"enabled": {"type": "boolean"},
"window_hours": {"type": "number", "maximum": 8760, "minimum": 0, "exclusiveMinimum": true},
"member_threshold": {
"type": "integer",
"maximum": 1000000,
"format": "int32",
"minimum": 0,
"exclusiveMinimum": true
}
}
}
}
}
@@ -14881,6 +14904,10 @@
"premium_grace_ends_at": {"nullable": true, "type": "string"},
"premium_lifetime_sequence": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/Int32Type"}]},
"suspicious_activity_flags": {"$ref": "#/components/schemas/SuspiciousActivityFlags"},
"phone_verification_deferred": {
"type": "boolean",
"description": "Whether a stored phone requirement is deferred until the user joins a discoverable or large community"
},
"temp_banned_until": {"nullable": true, "type": "string"},
"pending_deletion_at": {"nullable": true, "type": "string"},
"pending_bulk_message_deletion_at": {"nullable": true, "type": "string"},
@@ -14921,6 +14948,7 @@
"premium_grace_ends_at",
"premium_lifetime_sequence",
"suspicious_activity_flags",
"phone_verification_deferred",
"temp_banned_until",
"pending_deletion_at",
"pending_bulk_message_deletion_at",
+1
View File
@@ -69,6 +69,7 @@ mod tests {
"premium_grace_ends_at": null,
"premium_lifetime_sequence": null,
"suspicious_activity_flags": 0,
"phone_verification_deferred": false,
"temp_banned_until": null,
"pending_deletion_at": null,
"pending_bulk_message_deletion_at": null,
+2
View File
@@ -102,6 +102,8 @@ pub struct AdminUser {
#[serde(default)]
pub suspicious_activity_flags: i32,
#[serde(default)]
pub phone_verification_deferred: bool,
#[serde(default)]
pub has_totp: bool,
#[serde(default)]
pub authenticator_types: Vec<i32>,
+35 -3
View File
@@ -24,8 +24,6 @@ pub struct InstanceConfigResponse {
pub struct InstancePolicyResponse {
#[serde(default)]
pub single_community_enabled: bool,
#[serde(default)]
pub single_community_locked: bool,
pub single_community_guild_id: Option<String>,
#[serde(default)]
pub direct_messages_disabled: bool,
@@ -39,13 +37,34 @@ pub struct InstancePolicyResponse {
pub services_resolved: InstanceServicesResolved,
#[serde(default)]
pub services_available: InstanceServicesAvailable,
#[serde(default)]
pub deferred_phone_gate: DeferredPhoneGateResponse,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct DeferredPhoneGateResponse {
#[serde(default)]
pub enabled: bool,
#[serde(default)]
pub window_hours: f64,
#[serde(default)]
pub member_threshold: i64,
}
impl Default for DeferredPhoneGateResponse {
fn default() -> Self {
Self {
enabled: true,
window_hours: 6.0,
member_threshold: 50,
}
}
}
impl Default for InstancePolicyResponse {
fn default() -> Self {
Self {
single_community_enabled: false,
single_community_locked: false,
single_community_guild_id: None,
direct_messages_disabled: false,
direct_messages_locked: false,
@@ -53,6 +72,7 @@ impl Default for InstancePolicyResponse {
services: InstanceServicesOverrides::default(),
services_resolved: InstanceServicesResolved::default(),
services_available: InstanceServicesAvailable::default(),
deferred_phone_gate: DeferredPhoneGateResponse::default(),
}
}
}
@@ -519,6 +539,18 @@ pub struct InstancePolicyUpdateRequest {
pub premium_mode: Option<PremiumMode>,
#[serde(skip_serializing_if = "Option::is_none")]
pub services: Option<InstanceServicesUpdateRequest>,
#[serde(skip_serializing_if = "Option::is_none")]
pub deferred_phone_gate: Option<DeferredPhoneGateUpdateRequest>,
}
#[derive(Clone, Debug, Default, Serialize)]
pub struct DeferredPhoneGateUpdateRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub window_hours: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub member_threshold: Option<i64>,
}
#[derive(Clone, Debug, Default, Serialize)]
+35 -4
View File
@@ -7,7 +7,7 @@ use crate::{
AppBrandingConfigUpdateRequest, AppLegalConfigUpdateRequest,
AppPublicConfigUpdateRequest, AppRegistrationConfigUpdateRequest,
AppSetupConfigUpdateRequest, CreateRegistrationUrlRequest,
GatewayRolloutConfigUpdateRequest, GatewayRolloutMode,
DeferredPhoneGateUpdateRequest, GatewayRolloutConfigUpdateRequest, GatewayRolloutMode,
InstanceAttachmentDecayUpdateRequest, InstanceBlueskyIntegrationUpdateRequest,
InstanceBlueskyKeyIntegrationUpdateRequest, InstanceCaptchaIntegrationUpdateRequest,
InstanceConfigUpdateRequest, InstanceEmailIntegrationUpdateRequest,
@@ -216,7 +216,11 @@ pub async fn instance_config_post(
Err(message) => FlashData::error(message),
},
"disable_single_community" => {
let update = build_disable_single_community_update();
let update = build_single_community_update(false);
instance_config_result(client.update_instance_config(&update).await)
}
"enable_single_community" => {
let update = build_single_community_update(true);
instance_config_result(client.update_instance_config(&update).await)
}
"create_registration_url" => match build_create_registration_url_request(&form) {
@@ -543,6 +547,7 @@ fn build_policy_update(form: &MultiValueForm) -> InstanceConfigUpdateRequest {
_ => None,
};
let services = build_services_update(form);
let deferred_phone_gate = build_deferred_phone_gate_update(form);
InstanceConfigUpdateRequest {
gateway_rollout: None,
registration: None,
@@ -554,12 +559,37 @@ fn build_policy_update(form: &MultiValueForm) -> InstanceConfigUpdateRequest {
direct_messages_disabled,
premium_mode,
services,
deferred_phone_gate,
}),
integrations: None,
media: None,
}
}
fn build_deferred_phone_gate_update(
form: &MultiValueForm,
) -> Option<DeferredPhoneGateUpdateRequest> {
let enabled = form
.first("policy_deferred_phone_gate_enabled")
.map(|value| value == "true");
let window_hours = form
.first("policy_deferred_phone_gate_window_hours")
.and_then(|value| value.parse::<f64>().ok())
.filter(|value| *value > 0.0);
let member_threshold = form
.first("policy_deferred_phone_gate_member_threshold")
.and_then(|value| value.parse::<i64>().ok())
.filter(|value| *value > 0);
if enabled.is_none() && window_hours.is_none() && member_threshold.is_none() {
return None;
}
Some(DeferredPhoneGateUpdateRequest {
enabled,
window_hours,
member_threshold,
})
}
fn build_services_update(form: &MultiValueForm) -> Option<InstanceServicesUpdateRequest> {
let parse_tristate = |key: &str| match form.first(key) {
Some("inherit") => Some(None),
@@ -696,18 +726,19 @@ fn build_smtp_test_request(form: &MultiValueForm) -> Result<InstanceEmailSmtpTes
})
}
fn build_disable_single_community_update() -> InstanceConfigUpdateRequest {
fn build_single_community_update(enabled: bool) -> InstanceConfigUpdateRequest {
InstanceConfigUpdateRequest {
gateway_rollout: None,
registration: None,
sso: None,
app_public: None,
policy: Some(InstancePolicyUpdateRequest {
single_community_enabled: Some(false),
single_community_enabled: Some(enabled),
single_community_name: None,
direct_messages_disabled: None,
premium_mode: None,
services: None,
deferred_phone_gate: None,
}),
integrations: None,
media: None,
@@ -103,6 +103,7 @@ pub fn instance_config_page(
instance_config.self_hosted,
))
(sso_config_section(base, csrf_token, &instance_config.sso))
(deferred_phone_gate_form(base, csrf_token, &instance_config.policy))
},
))
@if instance_config.self_hosted {
@@ -208,18 +209,14 @@ fn single_community_form(base: &str, csrf_token: &str, policy: &InstancePolicyRe
div class="flex flex-wrap items-center gap-2" {
h3 class="text-sm font-semibold text-neutral-900" { "Single community" }
(badge(status.0, status.1))
@if policy.single_community_locked {
(badge("Locked", BadgeVariant::Warning))
}
}
@if let Some(guild_id) = policy.single_community_guild_id.as_deref() {
p class="break-all text-xs text-neutral-500" { "Community guild ID: " (guild_id) }
}
@if policy.single_community_enabled && !policy.single_community_locked {
@if policy.single_community_enabled {
p class="text-sm text-neutral-500" {
"This instance funnels every member into a single community. Disabling it is \
permanent: single-community mode can only be enabled again from the \
self-host setup wizard, never from this panel."
"This instance funnels every member into a single community. You can turn this \
off and on again from here. The community itself is kept either way."
}
form method="post" action={(base) "/instance-config?action=disable_single_community"} {
(csrf_input(csrf_token))
@@ -227,15 +224,21 @@ fn single_community_form(base: &str, csrf_token: &str, policy: &InstancePolicyRe
(danger_button("Disable single-community mode"))
}))
}
} @else if policy.single_community_enabled {
} @else if policy.single_community_guild_id.is_some() {
p class="text-sm text-neutral-500" {
"Single-community mode is enabled and locked for this instance. It cannot be \
changed from the admin panel."
"Single-community mode is off. Turning it on again reuses the community above \
if it still exists, otherwise a new one is created."
}
form method="post" action={(base) "/instance-config?action=enable_single_community"} {
(csrf_input(csrf_token))
(form_actions(html! {
(submit_button("Enable single-community mode"))
}))
}
} @else {
p class="text-sm text-neutral-500" {
"Single-community mode is off. It can only be turned on from the self-host \
setup wizard, not from this panel."
"Single-community mode is off. It can only be turned on for the first time \
from the self-host setup wizard."
}
}
}
@@ -281,6 +284,57 @@ fn direct_messages_form(base: &str, csrf_token: &str, policy: &InstancePolicyRes
}
}
fn deferred_phone_gate_form(
base: &str,
csrf_token: &str,
policy: &InstancePolicyResponse,
) -> Markup {
let gate = &policy.deferred_phone_gate;
let status = if gate.enabled {
("Enabled", BadgeVariant::Success)
} else {
("Disabled", BadgeVariant::Default)
};
html! {
div class="space-y-4 border-t border-neutral-200 pt-6" {
div class="flex flex-wrap items-center gap-2" {
h3 class="text-sm font-semibold text-neutral-900" { "Deferred phone verification" }
(badge(status.0, status.1))
}
p class="text-sm text-neutral-500" {
"When enabled, a phone requirement raised at registration is held back and only \
applied if the account joins a discoverable community, or one above the member \
threshold, within the window. Accounts that wait out the window are not challenged. \
Inbound-SMS requirements are never deferred."
}
form method="post" action={(base) "/instance-config?action=update_policy"} {
(csrf_input(csrf_token))
div class="space-y-4" {
(select_input("policy_deferred_phone_gate_enabled", "Deferred phone verification", &[
("true", "Enabled"),
("false", "Disabled"),
], if gate.enabled { "true" } else { "false" }))
(text_input(
"policy_deferred_phone_gate_window_hours",
"Window (hours)",
&gate.window_hours.to_string(),
"6",
))
(text_input(
"policy_deferred_phone_gate_member_threshold",
"Member threshold",
&gate.member_threshold.to_string(),
"50",
))
(form_actions(html! {
(submit_button("Save deferred phone verification"))
}))
}
}
}
}
}
fn premium_mode_form(base: &str, csrf_token: &str, policy: &InstancePolicyResponse) -> Markup {
html! {
div class="space-y-4 border-t border-neutral-200 pt-6" {
@@ -291,6 +291,11 @@ fn flags_card(
can_update_suspicious,
Some(acl::USER_UPDATE_SUSPICIOUS_ACTIVITY),
))
@if user.phone_verification_deferred {
p class="text-sm text-amber-700 dark:text-amber-400" {
"Phone verification is deferred: the requirement above is stored but not enforced until this user joins a discoverable or large community within the deferral window."
}
}
}
}
}
+1 -35
View File
@@ -434,41 +434,6 @@ async fn mutating_admin_pages_render_usable_csrf_tokens() {
}
}
#[tokio::test]
async fn hosted_instance_config_hides_self_host_setup_controls() {
let app = setup().await;
let body = get(&app, "/instance-config", &[]).await;
assert_full_layout(&body);
assert!(body.contains("Registration Controls"), "{body}");
assert!(body.contains("Runtime Integrations"), "{body}");
assert!(body.contains("Gateway Rollout Configuration"), "{body}");
assert!(!body.contains("Public App Identity"), "{body}");
assert!(!body.contains("Setup complete"), "{body}");
assert!(!body.contains("Community & Policy"), "{body}");
assert!(!body.contains("Single community"), "{body}");
assert!(!body.contains("Direct messages &amp; friends"), "{body}");
assert!(!body.contains("Premium model"), "{body}");
assert!(!body.contains("Optional services"), "{body}");
assert!(!body.contains("Registration Fields"), "{body}");
assert!(
!body.contains("Collect date of birth during registration"),
"{body}"
);
assert!(
!body.contains("/instance-config?action=update_app_public"),
"{body}"
);
assert!(
!body.contains("/instance-config?action=update_app_registration"),
"{body}"
);
assert!(
!body.contains("/instance-config?action=update_policy"),
"{body}"
);
}
#[tokio::test]
async fn instance_config_registration_tables_show_copyable_urls_and_compact_pending_actions() {
let app = setup().await;
@@ -898,6 +863,7 @@ fn user(id: &str, username: &str) -> Value {
"premium_grace_ends_at": null,
"premium_lifetime_sequence": null,
"suspicious_activity_flags": 0,
"phone_verification_deferred": false,
"has_totp": false,
"authenticator_types": [],
"has_verified_phone": false,
@@ -25,6 +25,7 @@
"premium_grace_ends_at": null,
"premium_lifetime_sequence": null,
"suspicious_activity_flags": 0,
"phone_verification_deferred": false,
"temp_banned_until": null,
"pending_deletion_at": null,
"pending_bulk_message_deletion_at": null,
@@ -26,6 +26,7 @@
"premium_grace_ends_at": null,
"premium_lifetime_sequence": null,
"suspicious_activity_flags": 0,
"phone_verification_deferred": false,
"temp_banned_until": null,
"pending_deletion_at": null,
"pending_bulk_message_deletion_at": null,
@@ -26,6 +26,7 @@
"premium_grace_ends_at": null,
"premium_lifetime_sequence": null,
"suspicious_activity_flags": 0,
"phone_verification_deferred": false,
"temp_banned_until": null,
"pending_deletion_at": null,
"pending_bulk_message_deletion_at": null,
@@ -10,6 +10,7 @@ import type {ElasticsearchIndexDefinition} from '../ElasticsearchIndexDefinition
const ELASTICSEARCH_MAX_RESULT_WINDOW = 10000;
const DEEP_PAGINATION_BATCH_SIZE = 1000;
const MAX_SEARCH_LIMIT = 1000;
const FACET_TERM_LIMIT = 200;
interface ElasticsearchSearchHit<TResult> {
_source?: TResult;
@@ -17,6 +18,10 @@ interface ElasticsearchSearchHit<TResult> {
sort?: SortResults;
}
interface ElasticsearchTermsAggregation {
buckets?: Array<{key: string | number; doc_count: number}>;
}
interface ElasticsearchSearchResponse<TResult> {
hits: {
total?:
@@ -26,6 +31,7 @@ interface ElasticsearchSearchResponse<TResult> {
};
hits: Array<ElasticsearchSearchHit<TResult>>;
};
aggregations?: Record<string, ElasticsearchTermsAggregation>;
}
type ElasticsearchBaseSearchRequest = Omit<SearchRequest, 'from' | 'search_after' | 'size' | 'track_total_hits'>;
@@ -265,6 +271,7 @@ export class ElasticsearchIndexAdapter<
},
]
: [{match_all: {}}];
const facets = options?.facets;
const searchParams: ElasticsearchBaseSearchRequest = {
index: this.indexDefinition.indexName,
query: {
@@ -273,6 +280,11 @@ export class ElasticsearchIndexAdapter<
filter: filterClauses.length > 0 ? filterClauses : undefined,
},
},
...(facets && facets.length > 0
? {
aggs: Object.fromEntries(facets.map((facet) => [facet, {terms: {field: facet, size: FACET_TERM_LIMIT}}])),
}
: {}),
};
const defaultSort: SortCombinations = {id: {order: 'desc'}};
const effectiveSort: NonNullable<SearchRequest['sort']> =
@@ -357,13 +369,30 @@ export class ElasticsearchIndexAdapter<
}
private toSearchResult(result: ElasticsearchSearchResponse<TResult>): SearchResult<TResult> {
const facetCounts = this.toFacetCounts(result.aggregations);
return {
hits: this.mapHits(result.hits.hits),
total: this.getTotalHits(result),
cursor: result.hits.hits.at(-1)?.sort?.map((value) => String(value)),
...(facetCounts ? {facetCounts} : {}),
};
}
private toFacetCounts(
aggregations: Record<string, ElasticsearchTermsAggregation> | undefined,
): Record<string, Record<string, number>> | undefined {
if (!aggregations) {
return undefined;
}
const counts: Record<string, Record<string, number>> = {};
for (const [facet, aggregation] of Object.entries(aggregations)) {
counts[facet] = Object.fromEntries(
(aggregation.buckets ?? []).map((bucket) => [String(bucket.key), bucket.doc_count]),
);
}
return counts;
}
private mapHits(hits: Array<ElasticsearchSearchHit<TResult>>): Array<TResult> {
return hits.map((hit) => ({...hit._source!, id: hit._id!}));
}
@@ -4,16 +4,16 @@ import {defineEmailI18nLocaleMessages} from '../EmailI18nMessages';
const EMAIL_I18N_DE_MESSAGES = defineEmailI18nLocaleMessages({
"account_disabled_suspicious": {
"subject": "Dein {product_name}-Konto wurde vorübergehend deaktiviert",
"body": "Hallo {username},\n\nwir haben dein {product_name}-Konto vorübergehend deaktiviert, da wir verdächtige Aktivitäten festgestellt haben.\n\n{reason, select,\n null {}\n other {Grund: {reason}}\n}\n\nUm wieder Zugriff auf dein Konto zu erhalten, musst du dein Passwort zurücksetzen:\n\n{forgotUrl}\n\nNachdem du dein Passwort zurückgesetzt hast, kannst du dich wieder anmelden.\n\nWenn du glaubst, dass dies ein Fehler war, kontaktiere bitte unser Support-Team.\n\n– {product_name}-Sicherheitsteam"
"subject": "Dein {product_name}-Account wurde vorübergehend deaktiviert",
"body": "Hallo {username},\n\nwir haben deinen {product_name}-Account vorübergehend deaktiviert, da wir verdächtige Aktivitäten festgestellt haben.\n\n{reason, select,\n null {}\n other {Grund: {reason}}\n}\n\nUm wieder Zugriff auf deinen Account zu erhalten, musst du dein Passwort zurücksetzen:\n\n{forgotUrl}\n\nNachdem du dein Passwort zurückgesetzt hast, kannst du dich wieder anmelden.\n\nWenn du glaubst, dass dies ein Fehler war, kontaktiere bitte unser Support-Team.\n\n– {product_name}-Sicherheitsteam"
},
"account_scheduled_deletion": {
"subject": "Dein {product_name}-Konto wird dauerhaft gelöscht",
"body": "Hallo {username},\n\ndein {product_name}-Konto wurde aufgrund von Verstößen gegen unsere Nutzungsbedingungen oder Community-Richtlinien zur dauerhaften Löschung vorgemerkt.\n\nGeplante Löschung: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Grund: {reason}}\n}\n\nDies ist eine ernsthafte Maßnahme. Deine Kontodaten werden am geplanten Datum dauerhaft gelöscht.\n\nBitte lies dir Folgendes durch:\n- Nutzungsbedingungen: {termsUrl}\n- Community-Richtlinien: {guidelinesUrl}\n\nEinspruchsverfahren:\nWenn du glaubst, dass diese Entscheidung falsch oder ungerechtfertigt war, hast du 60 Tage Zeit, Einspruch einzulegen. Sende eine E-Mail von dieser E-Mail-Adresse an {appeals_email}.\n\nIn deinem Einspruch:\n- Erkläre klar, warum du glaubst, dass die Entscheidung falsch oder ungerechtfertigt war\n- Füge alle relevanten Beweise oder Kontextinformationen bei\n\nEin Mitglied des {product_name}-Sicherheitsteams wird deinen Einspruch prüfen und die ausstehende Löschung möglicherweise pausieren, bis eine endgültige Entscheidung getroffen wurde.\n\n– {product_name}-Sicherheitsteam"
"subject": "Dein {product_name}-Account wird dauerhaft gelöscht",
"body": "Hallo {username},\n\ndein {product_name}-Account wurde aufgrund von Verstößen gegen unsere Nutzungsbedingungen oder Community-Richtlinien zur dauerhaften Löschung vorgemerkt.\n\nGeplante Löschung: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Grund: {reason}}\n}\n\nDies ist eine ernsthafte Maßnahme. Deine Accountdaten werden am geplanten Datum dauerhaft gelöscht.\n\nBitte lies dir Folgendes durch:\n- Nutzungsbedingungen: {termsUrl}\n- Community-Richtlinien: {guidelinesUrl}\n\nEinspruchsverfahren:\nWenn du glaubst, dass diese Entscheidung falsch oder ungerechtfertigt war, hast du 60 Tage Zeit, Einspruch einzulegen. Sende eine E-Mail von dieser E-Mail-Adresse an {appeals_email}.\n\nIn deinem Einspruch:\n- Erkläre klar, warum du glaubst, dass die Entscheidung falsch oder ungerechtfertigt war\n- Füge alle relevanten Beweise oder Kontextinformationen bei\n\nEin Mitglied des {product_name}-Sicherheitsteams wird deinen Einspruch prüfen und die ausstehende Löschung möglicherweise pausieren, bis eine endgültige Entscheidung getroffen wurde.\n\n– {product_name}-Sicherheitsteam"
},
"account_temp_banned": {
"subject": "Dein {product_name}-Konto wurde vorübergehend gesperrt",
"body": "Hallo {username},\n\ndein {product_name}-Konto wurde vorübergehend gesperrt, weil du gegen unsere Nutzungsbedingungen oder Community-Richtlinien verstoßen hast.\n\nDauer: {durationHours, plural,\n one {1 Stunde}\n other {# Stunden}\n}\nGesperrt bis: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Grund: {reason}}\n}\n\nWährend dieser Zeit kannst du nicht auf dein Konto zugreifen.\n\nBitte lies dir Folgendes durch:\n- Nutzungsbedingungen: {termsUrl}\n- Community-Richtlinien: {guidelinesUrl}\n\nWenn du glaubst, dass diese Entscheidung falsch oder ungerechtfertigt war, kannst du Einspruch einlegen. Sende eine E-Mail von dieser E-Mail-Adresse an {appeals_email} und erkläre klar, warum du die Entscheidung für falsch hältst. Wir werden deinen Einspruch prüfen und dir unsere Entscheidung mitteilen.\n\n– {product_name}-Sicherheitsteam"
"subject": "Dein {product_name}-Account wurde vorübergehend gesperrt",
"body": "Hallo {username},\n\ndein {product_name}-Account wurde vorübergehend gesperrt, weil du gegen unsere Nutzungsbedingungen oder Community-Richtlinien verstoßen hast.\n\nDauer: {durationHours, plural,\n one {1 Stunde}\n other {# Stunden}\n}\nGesperrt bis: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Grund: {reason}}\n}\n\nWährend dieser Zeit kannst du nicht auf deinen Account zugreifen.\n\nBitte lies dir Folgendes durch:\n- Nutzungsbedingungen: {termsUrl}\n- Community-Richtlinien: {guidelinesUrl}\n\nWenn du glaubst, dass diese Entscheidung falsch oder ungerechtfertigt war, kannst du Einspruch einlegen. Sende eine E-Mail von dieser E-Mail-Adresse an {appeals_email} und erkläre klar, warum du die Entscheidung für falsch hältst. Wir werden deinen Einspruch prüfen und dir unsere Entscheidung mitteilen.\n\n– {product_name}-Sicherheitsteam"
},
"donation_confirmation": {
"subject": "Vielen Dank für deine {product_name}-Spende",
@@ -33,35 +33,35 @@ const EMAIL_I18N_DE_MESSAGES = defineEmailI18nLocaleMessages({
},
"email_change_original": {
"subject": "Bestätige deine {product_name}-E-Mail-Änderung",
"body": "Hallo {username},\n\nwir haben eine Anfrage zur Änderung der E-Mail-Adresse deines {product_name}-Kontos erhalten.\n\nUm diese Änderung zu bestätigen, gib diesen Code in der App ein:\n\n{code}\n\nDieser Code läuft am {expiresAt, date, full} um {expiresAt, time, short} ab.\n\nWenn du dies nicht angefordert hast, sichere dein Konto bitte sofort.\n\n– {product_name} Team"
"body": "Hallo {username},\n\nwir haben eine Anfrage zur Änderung der E-Mail-Adresse deines {product_name}-Accounts erhalten.\n\nUm diese Änderung zu bestätigen, gib diesen Code in der App ein:\n\n{code}\n\nDieser Code läuft am {expiresAt, date, full} um {expiresAt, time, short} ab.\n\nWenn du diese Änderung nicht angefordert hast, sichere deinen Account bitte sofort ab.\n\n– {product_name} Team"
},
"email_change_revert": {
"subject": "Deine {product_name}-E-Mail wurde geändert",
"body": "Hallo {username},\n\ndie E-Mail-Adresse deines {product_name}-Kontos wurde zu {newEmail} geändert.\n\nWenn du diese Änderung vorgenommen hast, ist keine weitere Aktion erforderlich. Wenn nicht, kannst du die Änderung rückgängig machen und dein Konto über diesen Link sichern:\n\n{revertUrl}\n\nDadurch wird deine vorherige E-Mail wiederhergestellt, du wirst überall abgemeldet, verknüpfte Telefonnummern werden entfernt, MFA wird deaktiviert und du musst ein neues Passwort festlegen.\n\n– {product_name}-Sicherheitsteam"
"body": "Hallo {username},\n\ndie E-Mail-Adresse deines {product_name}-Accounts wurde zu {newEmail} geändert.\n\nWenn du diese Änderung vorgenommen hast, ist keine weitere Aktion erforderlich. Wenn nicht, kannst du die Änderung rückgängig machen und deinen Account über diesen Link absichern:\n\n{revertUrl}\n\nDadurch wird deine vorherige E-Mail wiederhergestellt, du wirst überall abgemeldet, verknüpfte Telefonnummern werden entfernt, MFA wird deaktiviert und du musst ein neues Passwort festlegen.\n\n– {product_name}-Sicherheitsteam"
},
"email_verification": {
"subject": "Bestätige deine {product_name}-E-Mail-Adresse",
"body": "Hallo {username},\n\nbitte bestätige die E-Mail-Adresse für dein {product_name}-Konto, indem du auf den untenstehenden Link klickst:\n\n{verifyUrl}\n\nWenn du kein {product_name}-Konto erstellt hast, kannst du diese E-Mail ignorieren.\n\nDieser Link ist 24 Stunden gültig.\n\n– {product_name} Team"
"body": "Hallo {username},\n\nbitte bestätige die E-Mail-Adresse für deinen {product_name}-Account, indem du auf den untenstehenden Link klickst:\n\n{verifyUrl}\n\nWenn du keinen {product_name}-Account erstellt hast, kannst du diese E-Mail ignorieren.\n\nDieser Link ist 24 Stunden gültig.\n\n– {product_name} Team"
},
"gift_chargeback_notification": {
"subject": "Vorteile deines eingelösten Geschenks wurden entfernt",
"body": "Hallo {username},\n\nein von dir eingelöster Geschenkcode wurde ursprünglich von jemand anderem bezahlt. Diese Zahlung wurde inzwischen rückgängig gemacht (eine Rückbuchung).\n\nAus diesem Grund haben wir die Vorteile entfernt, die deinem Konto hinzugefügt wurden, als du das Geschenk eingelöst hast.\n\nWenn du glaubst, dass dies ein Fehler ist, kontaktiere bitte unser Support-Team und gib alle Details an, die du über den Geschenkcode und den Zeitpunkt der Einlösung hast.\n\n– {product_name} Team"
"body": "Hallo {username},\n\nein von dir eingelöster Geschenkcode wurde ursprünglich von jemand anderem bezahlt. Diese Zahlung wurde inzwischen rückgängig gemacht (eine Rückbuchung).\n\nAus diesem Grund haben wir die Vorteile entfernt, die deinem Account hinzugefügt wurden, als du das Geschenk eingelöst hast.\n\nWenn du glaubst, dass dies ein Fehler ist, kontaktiere bitte unser Support-Team und gib alle Details an, die du über den Geschenkcode und den Zeitpunkt der Einlösung hast.\n\n– {product_name} Team"
},
"harvest_completed": {
"subject": "Dein {product_name}-Datenexport steht zum Herunterladen bereit",
"body": "Hallo {username},\n\ndein Datenexport ist bereit.\n\nDownload-Link:\n{downloadUrl}\n\nEnthaltene Nachrichten: {totalMessages, number}\nDateigröße: {fileSizeMB, number} MB\n\nDieser Link läuft am {expiresAt, date, full} um {expiresAt, time, short} ab.\n\nWenn du diesen Export nicht angefordert hast, ändere bitte sofort dein Passwort und kontaktiere unser Support-Team.\n\n– {product_name} Team"
},
"inactivity_warning": {
"subject": "Dein {product_name}-Konto wird wegen Inaktivität gelöscht",
"body": "Hallo {username},\n\nwir haben seit dem {lastActiveDate, date, full} keine Aktivität auf deinem {product_name}-Konto festgestellt.\n\nWenn du dich nicht bis zum {deletionDate, date, full} um {deletionDate, time, short} anmeldest, wird dein Konto aufgrund von Inaktivität dauerhaft gelöscht.\n\nMelde dich hier an:\n{loginUrl}\n\nWenn du {product_name} kürzlich genutzt hast, kontaktiere bitte sofort unser Support-Team.\n\n– {product_name} Team"
"subject": "Dein {product_name}-Account wird wegen Inaktivität gelöscht",
"body": "Hallo {username},\n\nwir haben seit dem {lastActiveDate, date, full} keine Aktivität auf deinem {product_name}-Account festgestellt.\n\nWenn du dich nicht bis zum {deletionDate, date, full} um {deletionDate, time, short} anmeldest, wird dein Account aufgrund von Inaktivität dauerhaft gelöscht.\n\nMelde dich hier an:\n{loginUrl}\n\nWenn du {product_name} kürzlich genutzt hast, kontaktiere bitte sofort unser Support-Team.\n\n– {product_name} Team"
},
"ip_authorization": {
"subject": "Anmeldung von einer neuen IP-Adresse bestätigen",
"body": "Hallo {username},\n\nwir haben einen Anmeldeversuch für dein {product_name}-Konto von einer neuen IP-Adresse festgestellt:\n\nIP-Adresse: {ipAddress}\nStandort: {location}\n\nWenn du das warst, bestätige diese IP-Adresse bitte, indem du auf den untenstehenden Link klickst:\n\n{authUrl}\n\nWenn du dich nicht anmelden wolltest, ändere bitte sofort dein Passwort.\n\nDieser Link ist 30 Minuten gültig.\n\n– {product_name} Team"
"body": "Hallo {username},\n\nwir haben einen Anmeldeversuch für deinen {product_name}-Account von einer neuen IP-Adresse festgestellt:\n\nIP-Adresse: {ipAddress}\nStandort: {location}\n\nWenn du das warst, bestätige diese IP-Adresse bitte, indem du auf den untenstehenden Link klickst:\n\n{authUrl}\n\nWenn du dich nicht anmelden wolltest, ändere bitte sofort dein Passwort.\n\nDieser Link ist 30 Minuten gültig.\n\n– {product_name} Team"
},
"password_change_verification": {
"subject": "Bestätige deine {product_name}-Passwortänderung",
"body": "Hallo {username},\n\nwir haben eine Anfrage zur Änderung des Passworts deines {product_name}-Kontos erhalten.\n\nUm diese Änderung zu bestätigen, gib diesen Code in der App ein:\n\n{code}\n\nDieser Code läuft um {expiresAt} ab.\n\nWenn du dies nicht angefordert hast, könnte jemand Zugriff auf dein Konto haben. Ändere dein Passwort sofort und aktiviere die Zwei-Faktor-Authentifizierung.\n\n– {product_name} Team"
"body": "Hallo {username},\n\nwir haben eine Anfrage zur Änderung des Passworts deines {product_name}-Accounts erhalten.\n\nUm diese Änderung zu bestätigen, gib diesen Code in der App ein:\n\n{code}\n\nDieser Code läuft um {expiresAt} ab.\n\nWenn du diese Änderung nicht angefordert hast, könnte jemand Zugriff auf deinen Account haben. Ändere dein Passwort sofort und aktiviere die Zwei-Faktor-Authentifizierung.\n\n– {product_name} Team"
},
"password_reset": {
"subject": "Setze dein {product_name}-Passwort zurück",
@@ -76,16 +76,16 @@ const EMAIL_I18N_DE_MESSAGES = defineEmailI18nLocaleMessages({
"body": "Hallo {username},\n\ndein Bericht (ID: {reportId}) wurde von unserem Sicherheitsteam geprüft.{hasComment, select, yes {\n\nAntwort vom Sicherheitsteam:\n{publicComment}} other {}}\n\nDanke, dass du hilfst, {product_name} für alle sicher zu halten. Wir nehmen alle Berichte ernst und schätzen deinen Beitrag zur Community.\n\nWenn du Fragen oder Bedenken zu diesem Ergebnis hast, kontaktiere bitte {safety_email}.\n\n– {product_name}-Sicherheitsteam"
},
"scheduled_deletion_notification": {
"subject": "Dein {product_name}-Konto wird dauerhaft gelöscht",
"body": "Hallo {username},\n\ndein {product_name}-Konto wurde zur dauerhaften Löschung vorgemerkt.\n\nGeplante Löschung: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Grund: {reason}}\n}\n\nDies ist eine ernsthafte Maßnahme. Deine Kontodaten werden am geplanten Datum dauerhaft gelöscht.\n\nWenn du glaubst, dass diese Entscheidung falsch war, kannst du Einspruch einlegen. Sende eine E-Mail von dieser E-Mail-Adresse an {appeals_email}.\n\n– {product_name}-Sicherheitsteam"
"subject": "Dein {product_name}-Account wird dauerhaft gelöscht",
"body": "Hallo {username},\n\ndein {product_name}-Account wurde zur dauerhaften Löschung vorgemerkt.\n\nGeplante Löschung: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Grund: {reason}}\n}\n\nDies ist eine ernsthafte Maßnahme. Deine Accountdaten werden am geplanten Datum dauerhaft gelöscht.\n\nWenn du glaubst, dass diese Entscheidung falsch war, kannst du Einspruch einlegen. Sende eine E-Mail von dieser E-Mail-Adresse an {appeals_email}.\n\n– {product_name}-Sicherheitsteam"
},
"self_deletion_scheduled": {
"subject": "Die Löschung deines {product_name}-Kontos ist geplant",
"body": "Hallo {username},\n\ndu hast die Löschung deines {product_name}-Kontos beantragt. Dein Konto ist zur dauerhaften Löschung vorgesehen am:\n\n{deletionDate, date, full} um {deletionDate, time, short}\n\nWenn du dies nicht beantragt hast, melde dich in deinem Konto an, um die Löschung abzubrechen. Wir empfehlen außerdem, dein Passwort zu ändern, um dein Konto zu sichern.\n\n– {product_name} Team"
"subject": "Die Löschung deines {product_name}-Accounts ist geplant",
"body": "Hallo {username},\n\ndu hast die Löschung deines {product_name}-Accounts beantragt. Dein Account ist zur dauerhaften Löschung vorgesehen am:\n\n{deletionDate, date, full} um {deletionDate, time, short}\n\nWenn du diese Löschung nicht beantragt hast, melde dich in deinem Account an, um die Löschung abzubrechen. Wir empfehlen außerdem, dein Passwort zu ändern, um deinen Account abzusichern.\n\n– {product_name} Team"
},
"unban_notification": {
"subject": "Die Sperrung deines {product_name}-Kontos wurde aufgehoben",
"body": "Hallo {username},\n\ngute Nachrichten: Die Sperrung deines {product_name}-Kontos wurde aufgehoben.\n\n{reason, select,\n null {}\n other {Grund: {reason}}\n}\n\nDu kannst dich jetzt wieder anmelden und {product_name} wie gewohnt nutzen.\n\n– {product_name}-Sicherheitsteam"
"subject": "Die Sperrung deines {product_name}-Accounts wurde aufgehoben",
"body": "Hallo {username},\n\ngute Nachrichten: Die Sperrung deines {product_name}-Accounts wurde aufgehoben.\n\n{reason, select,\n null {}\n other {Grund: {reason}}\n}\n\nDu kannst dich jetzt wieder anmelden und {product_name} wie gewohnt nutzen.\n\n– {product_name}-Sicherheitsteam"
}
});
@@ -8,12 +8,12 @@ const EMAIL_I18N_JA_MESSAGES = defineEmailI18nLocaleMessages({
"body": "こんにちは、{username}さん\n\n不審なアクティビティが検出されたため、{product_name}アカウントを一時的に無効にしました。\n\n{reason, select,\n null {}\n other {理由: {reason}}\n}\n\nアカウントに再度アクセスするには、パスワードをリセットする必要があります。\n\n{forgotUrl}\n\nパスワードをリセットすると、再度ログインできるようになります。\n\nこの措置が誤りであると思われる場合は、サポートチームにお問い合わせください。\n\n– {product_name}安全チーム"
},
"account_scheduled_deletion": {
"subject": "{product_name}アカウントは完全に削除されます",
"body": "こんにちは、{username}さん\n\n{product_name}アカウントは、利用規約またはコミュニティガイドラインへの違反のため、永久削除が予定されています。\n\n削除予定日: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {理由: {reason}}\n}\n\nこれは重大な措置です。アカウントデータは、予定日に完全に削除されます。\n\n以下をご確認ください。\n- 利用規約: {termsUrl}\n- コミュニティガイドライン: {guidelinesUrl}\n\n異議申し立て手続き:\nこの措置が不正確または不当であると思われる場合は、60日以内に異議申し立てを提出できます。このメールアドレスから{appeals_email}までメールを送信してください。\n\n異議申し立ての際は、以下を含めてください。\n- 措置が不正確または不当であると考える理由を明確に説明してください\n- 関連する証拠や状況を提供してください\n\n{product_name}安全チームのメンバーが異議申し立てを審査し、最終決定が下されるまで削除を一時停止する場合があります。\n\n– {product_name}安全チーム"
"subject": "あなたの{product_name}アカウントは完全に削除されます",
"body": "こんにちは、{username}さん\n\nあなたの{product_name}アカウントは、利用規約またはコミュニティガイドラインへの違反のため、永久削除が予定されています。\n\n削除予定日: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {理由: {reason}}\n}\n\nこれは重大な措置です。アカウントデータは、予定日に完全に削除されます。\n\n以下をご確認ください。\n- 利用規約: {termsUrl}\n- コミュニティガイドライン: {guidelinesUrl}\n\n異議申し立て手続き:\nこの措置が不正確または不当であると思われる場合は、60日以内に異議申し立てを提出できます。このメールアドレスから{appeals_email}までメールを送信してください。\n\n異議申し立ての際は、以下を含めてください。\n- 措置が不正確または不当であると考える理由を明確に説明してください\n- 関連する証拠や状況を提供してください\n\n{product_name}安全チームのメンバーが異議申し立てを審査し、最終決定が下されるまで削除を一時停止する場合があります。\n\n– {product_name}安全チーム"
},
"account_temp_banned": {
"subject": "{product_name}アカウントが一時的に停止されました",
"body": "こんにちは、{username}さん\n\n{product_name}アカウントは、利用規約またはコミュニティガイドラインへの違反のため、一時的に停止されました。\n\n期間: {durationHours, plural,\n =1 {1時間}\n other {#時間}\n}\n停止期間終了: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {理由: {reason}}\n}\n\nこの期間中、アカウントにアクセスすることはできません。\n\n以下をご確認ください。\n- 利用規約: {termsUrl}\n- コミュニティガイドライン: {guidelinesUrl}\n\nこの措置が不正確または不当であると思われる場合は、異議申し立てを提出できます。このメールアドレスから{appeals_email}までメールを送信し、決定が不正確であると考える理由を明確に説明してください。異議申し立てを審査し、決定をご連絡いたします。\n\n– {product_name}安全チーム"
"subject": "あなたの{product_name}アカウントが一時的に停止されました",
"body": "こんにちは、{username}さん\n\nあなたの{product_name}アカウントは、利用規約またはコミュニティガイドラインへの違反のため、一時的に停止されました。\n\n期間: {durationHours, plural,\n =1 {1時間}\n other {#時間}\n}\n停止期間終了: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {理由: {reason}}\n}\n\nこの期間中、アカウントにアクセスすることはできません。\n\n以下をご確認ください。\n- 利用規約: {termsUrl}\n- コミュニティガイドライン: {guidelinesUrl}\n\nこの措置が不正確または不当であると思われる場合は、異議申し立てを提出できます。このメールアドレスから{appeals_email}までメールを送信し、決定が不正確であると考える理由を明確に説明してください。異議申し立てを審査し、決定をご連絡いたします。\n\n– {product_name}安全チーム"
},
"donation_confirmation": {
"subject": "{product_name}への寄付ありがとうございます",
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "تم تعطيل حسابك في {product_name} مؤقتًا",
"body": "مرحباً {username}،\n\nلقد قمنا بتعطيل حسابك في {product_name} مؤقتًا لأننا اكتشفنا نشاطًا مشبوهًا.\n\n{reason, select,\n null {}\n other {السبب: {reason}}\n}\n\nلاستعادة الوصول إلى حسابك، ستحتاج إلى إعادة تعيين كلمة المرور الخاصة بك:\n\n{forgotUrl}\n\nبعد إعادة تعيين كلمة المرور الخاصة بك، ستتمكن من تسجيل الدخول مرة أخرى.\n\nإذا كنت تعتقد أن هذا حدث عن طريق الخطأ، يرجى الاتصال بفريق الدعم لدينا.\n\n– فريق أمان {product_name}"
},
"account_scheduled_deletion": {
"subject": "سيتم حذف حسابك في {product_name} نهائيًا",
"body": "مرحباً {username}،\n\nتم جدولة حسابك في {product_name} للحذف الدائم بسبب انتهاكات لشروط الخدمة أو إرشادات المجتمع الخاصة بنا.\n\nالحذف المجدول: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {السبب: {reason}}\n}\n\nهذا إجراء تنفيذي جاد. سيتم حذف بيانات حسابك نهائيًا في التاريخ المحدد.\n\nيرجى مراجعة:\n- شروط الخدمة: {termsUrl}\n- إرشادات المجتمع: {guidelinesUrl}\n\nعملية الاستئناف:\nإذا كنت تعتقد أن قرار التنفيذ هذا كان غير صحيح أو غير مبرر، لديك 60 يومًا لتقديم استئناف. أرسل بريدًا إلكترونيًا إلى {appeals_email} من عنوان البريد الإلكتروني هذا.\n\nفي استئنافك:\n- اشرح بوضوح لماذا تعتقد أن قرار التنفيذ كان غير صحيح أو غير مبرر\n- قدم أي دليل أو سياق ذي صلة\n\nسيقوم عضو من فريق أمان {product_name} بمراجعة استئنافك وقد يوقف الحذف المعلق حتى يتم التوصل إلى قرار نهائي.\n\n– فريق أمان {product_name}"
},
"account_temp_banned": {
"subject": "تم تعليق حسابك في {product_name} مؤقتًا",
"body": "مرحباً {username}،\n\nتم تعليق حسابك في {product_name} مؤقتًا لانتهاك شروط الخدمة أو إرشادات المجتمع الخاصة بنا.\n\nالمدة: {durationHours, plural,\n =1 {ساعة واحدة} zero {0 ساعات} two {ساعتان}\n few {ساعات} many {ساعة} other {# ساعة}\n}\nمعلق حتى: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {السبب: {reason}}\n}\n\nخلال هذه الفترة، لن تتمكن من الوصول إلى حسابك.\n\nيرجى مراجعة:\n- شروط الخدمة: {termsUrl}\n- إرشادات المجتمع: {guidelinesUrl}\n\nإذا كنت تعتقد أن قرار التنفيذ هذا كان غير صحيح أو غير مبرر، يمكنك تقديم استئناف. أرسل بريدًا إلكترونيًا إلى {appeals_email} من عنوان البريد الإلكتروني هذا واشرح بوضوح لماذا تعتقد أن القرار كان غير صحيح. سنراجع استئنافك ونرد بقرارنا.\n\n– فريق أمان {product_name}"
},
"donation_confirmation": {
"subject": "شكرًا لك على تبرعك لـ {product_name}",
"body": "مرحباً،\n\nشكرًا لك على تبرعك لـ {product_name}! لقد تم {interval, select,\n month {إعداد تبرعك المتكرر}\n year {إعداد تبرعك المتكرر}\n other {معالجة تبرعك لمرة واحدة}\n} بنجاح.\n\nتفاصيل التبرع:\nالمبلغ: {amount} {currency} {interval, select,\n month {شهريًا}\n year {سنويًا}\n other {}\n}\n\nسترسل لك Stripe إيصالًا منفصلاً عبر البريد الإلكتروني مع فاتورتك بصيغة PDF قريبًا. يتضمن هذا جميع تفاصيل الدفع ويمكن استخدامه لأغراض ضريبية.\n\nيمكنك عرض سجل تبرعاتك، وتنزيل الفواتير، {interval, select,\n month {وإدارة أو إلغاء اشتراكك}\n year {وإدارة أو إلغاء اشتراكك}\n other {وإدارة التبرعات المستقبلية}\n} في أي وقت باستخدام هذا الرابط:\n\n{manageUrl}\n\nدعمك يساعد في استمرار {product_name}. شكرًا لك!\n\n– فريق {product_name}{interval, select,\n month {}\n year {}\n other {}\n}"
},
"donation_magic_link": {
"subject": "إدارة تبرعات {product_name}",
"body": "مرحباً،\n\nانقر على الرابط أدناه للوصول إلى بوابة المتبرعين الخاصة بك:\n\n{manageUrl}\n\nفي البوابة، يمكنك إدارة الاشتراكات، وتنزيل الفواتير، وعرض سجل تبرعاتك.\n\nينتهي صلاحية هذا الرابط في {expiresAt, date, full} الساعة {expiresAt, time, short}.\n\nإذا لم تطلب هذا الرابط، يمكنك تجاهل هذا البريد الإلكتروني بأمان.\n\n– فريق {product_name}"
},
"dsa_report_verification": {
"subject": "تحقق من بريدك الإلكتروني لتقديم تقرير DSA",
"body": "مرحباً،\n\nاستخدم رمز التحقق أدناه لتقديم تقرير قانون الخدمات الرقمية الخاص بك على {product_name}:\n\n{code}\n\nينتهي هذا الرمز في {expiresAt, date, full} الساعة {expiresAt, time, short}.\n\nإذا لم تطلب هذا، يمكنك تجاهل هذا البريد الإلكتروني.\n\n– فريق أمان {product_name}"
},
"email_change_new": {
"subject": "تحقق من بريدك الإلكتروني الجديد في {product_name}",
"body": "مرحباً {username}،\n\nأدخل هذا الرمز في التطبيق للتحقق من بريدك الإلكتروني الجديد في {product_name}:\n\n{code}\n\nينتهي هذا الرمز في {expiresAt, date, full} الساعة {expiresAt, time, short}.\n\nإذا لم تطلب هذا، يمكنك تجاهل هذا البريد الإلكتروني.\n\n– فريق {product_name}"
},
"email_change_original": {
"subject": "تأكيد تغيير بريدك الإلكتروني في {product_name}",
"body": "مرحباً {username}،\n\nلقد تلقينا طلبًا لتغيير عنوان البريد الإلكتروني لحسابك في {product_name}.\n\nلتأكيد هذا التغيير، أدخل هذا الرمز في التطبيق:\n\n{code}\n\nينتهي هذا الرمز في {expiresAt, date, full} الساعة {expiresAt, time, short}.\n\nإذا لم تطلب هذا، يرجى تأمين حسابك على الفور.\n\n– فريق {product_name}"
},
"email_change_revert": {
"subject": "تم تغيير بريدك الإلكتروني في {product_name}",
"body": "مرحباً {username}،\n\nتم تغيير عنوان البريد الإلكتروني لحسابك في {product_name} إلى {newEmail}.\n\nإذا قمت بهذا التغيير، فلا داعي لاتخاذ أي إجراء. إذا لم تقم بذلك، يمكنك التراجع عن التغيير وتأمين حسابك باستخدام هذا الرابط:\n\n{revertUrl}\n\nسيؤدي هذا إلى استعادة بريدك الإلكتروني السابق، وتسجيل خروجك من جميع الأجهزة، وإزالة أرقام الهواتف المرتبطة، وتعطيل المصادقة متعددة العوامل، وسيطلب منك تعيين كلمة مرور جديدة.\n\n– فريق أمان {product_name}"
},
"email_verification": {
"subject": "تحقق من بريدك الإلكتروني في {product_name}",
"body": "مرحباً {username}،\n\nيرجى التحقق من عنوان البريد الإلكتروني لحسابك في {product_name} بالنقر على الرابط أدناه:\n\n{verifyUrl}\n\nإذا لم تقم بإنشاء حساب {product_name}، يمكنك تجاهل هذا البريد الإلكتروني بأمان.\n\nهذا الرابط صالح لمدة 24 ساعة.\n\n– فريق {product_name}"
},
"gift_chargeback_notification": {
"subject": "تمت إزالة المزايا من هديتك",
"body": "مرحباً {username}،\n\nرمز الهدية الذي استرددته تم دفعه في الأصل من قبل شخص آخر. وقد تم عكس هذا الدفع منذ ذلك الحين (استرداد المبلغ).\n\nبسبب هذا، قمنا بإزالة المزايا التي أضيفت إلى حسابك عندما استرددت الهدية.\n\nإذا كنت تعتقد أن هذا خطأ، يرجى الاتصال بفريق الدعم لدينا وتضمين أي تفاصيل لديك حول رمز الهدية ومتى استرددته.\n\n– فريق {product_name}"
},
"harvest_completed": {
"subject": "تصدير بياناتك من {product_name} جاهز للتنزيل",
"body": "مرحباً {username}،\n\nتصدير بياناتك جاهز.\n\nرابط التنزيل:\n{downloadUrl}\n\nالرسائل المتضمنة: {totalMessages, number}\nحجم الملف: {fileSizeMB, number} ميجابايت\n\nينتهي هذا الرابط في {expiresAt, date, full} الساعة {expiresAt, time, short}.\n\nإذا لم تطلب هذا التصدير، يرجى تغيير كلمة المرور الخاصة بك على الفور والاتصال بفريق الدعم لدينا.\n\n– فريق {product_name}"
},
"inactivity_warning": {
"subject": "سيتم حذف حسابك في {product_name} بسبب عدم النشاط",
"body": "مرحباً {username}،\n\nلم نرَ أي نشاط على حسابك في {product_name} منذ {lastActiveDate, date, full}.\n\nإذا لم تسجل الدخول بحلول {deletionDate, date, full} الساعة {deletionDate, time, short}، فسيتم حذف حسابك نهائيًا بسبب عدم النشاط.\n\nسجل الدخول هنا:\n{loginUrl}\n\nإذا كنت قد استخدمت {product_name} مؤخرًا، يرجى الاتصال بفريق الدعم لدينا على الفور.\n\n– فريق {product_name}"
},
"ip_authorization": {
"subject": "السماح بتسجيل الدخول من عنوان IP جديد",
"body": "مرحباً {username}،\n\nلقد اكتشفنا محاولة تسجيل دخول إلى حسابك في {product_name} من عنوان IP جديد:\n\nعنوان IP: {ipAddress}\nالموقع: {location}\n\nإذا كنت أنت من قام بذلك، يرجى تفويض عنوان IP هذا بالنقر على الرابط أدناه:\n\n{authUrl}\n\nإذا لم تحاول تسجيل الدخول، يرجى تغيير كلمة المرور الخاصة بك على الفور.\n\nهذا الرابط صالح لـ 30 دقيقة.\n\n– فريق {product_name}"
},
"password_change_verification": {
"subject": "تأكيد تغيير كلمة المرور في {product_name}",
"body": "مرحباً {username}،\n\nلقد تلقينا طلبًا لتغيير كلمة المرور لحسابك في {product_name}.\n\nلتأكيد هذا التغيير، أدخل هذا الرمز في التطبيق:\n\n{code}\n\nينتهي هذا الرمز في {expiresAt}.\n\nإذا لم تطلب هذا، فقد يكون شخص ما قد وصل إلى حسابك. قم بتغيير كلمة المرور الخاصة بك على الفور وقم بتمكين المصادقة الثنائية.\n\n– فريق {product_name}"
},
"password_reset": {
"subject": "إعادة تعيين كلمة المرور في {product_name}",
"body": "مرحباً {username}،\n\nلقد طلبت إعادة تعيين كلمة المرور الخاصة بك في {product_name}. استخدم الرابط أدناه لتعيين كلمة مرور جديدة:\n\n{resetUrl}\n\nإذا لم تطلب هذا، يمكنك تجاهل هذا البريد الإلكتروني بأمان.\n\nهذا الرابط صالح لساعة واحدة.\n\n– فريق {product_name}"
},
"registration_approved": {
"subject": "تمت الموافقة على تسجيلك في {product_name}",
"body": "مرحباً {username}،\n\nأخبار سارة: تمت الموافقة على تسجيلك في {product_name}.\n\nيمكنك الآن تسجيل الدخول إلى تطبيق {product_name} من هنا:\n{channelsUrl}\n\nمرحباً بك في مجتمع {product_name}.\n\n– فريق {product_name}"
},
"report_resolved": {
"subject": "تمت مراجعة تقريرك في {product_name}",
"body": "مرحباً {username}،\n\nتمت مراجعة تقريرك (المعرف: {reportId}) من قبل فريق الأمان لدينا.{hasComment, select, yes {\n\nرد فريق الأمان:\n{publicComment}} other {}}\n\nشكرًا لمساعدتك في الحفاظ على {product_name} آمنًا للجميع. نحن نأخذ جميع التقارير على محمل الجد ونقدر مساهمتك في المجتمع.\n\nإذا كان لديك أي أسئلة أو مخاوف بشأن هذه النتيجة، يرجى الاتصال بـ {safety_email}.\n\n– فريق أمان {product_name}"
},
"scheduled_deletion_notification": {
"subject": "سيتم حذف حسابك في {product_name} نهائيًا",
"body": "مرحباً {username}،\n\nتم جدولة حسابك في {product_name} للحذف الدائم.\n\nالحذف المجدول: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {السبب: {reason}}\n}\n\nهذا إجراء تنفيذي جاد. سيتم حذف بيانات حسابك نهائيًا في التاريخ المحدد.\n\nإذا كنت تعتقد أن قرار التنفيذ هذا كان غير صحيح، يمكنك تقديم استئناف. أرسل بريدًا إلكترونيًا إلى {appeals_email} من عنوان البريد الإلكتروني هذا.\n\n– فريق أمان {product_name}"
},
"self_deletion_scheduled": {
"subject": "تم جدولة حذف حسابك في {product_name}",
"body": "مرحباً {username}،\n\nلقد طلبت حذف حسابك في {product_name}. تم جدولة حسابك للحذف الدائم في:\n\n{deletionDate, date, full} الساعة {deletionDate, time, short}\n\nإذا لم تطلب هذا، سجل الدخول إلى حسابك لإلغاء الحذف. نوصي أيضًا بتغيير كلمة المرور الخاصة بك لتأمين حسابك.\n\n– فريق {product_name}"
},
"unban_notification": {
"subject": "تم رفع تعليق حسابك في {product_name}",
"body": "مرحباً {username}،\n\nأخبار سارة: تم رفع تعليق حسابك في {product_name}.\n\n{reason, select,\n null {}\n other {السبب: {reason}}\n}\n\nيمكنك الآن تسجيل الدخول مرة أخرى ومواصلة استخدام {product_name} كالمعتاد.\n\n– فريق أمان {product_name}"
}
"account_disabled_suspicious": {
"subject": "تم تعطيل حسابك في {product_name} مؤقتًا",
"body": "مرحباً {username}،\n\nلقد قمنا بتعطيل حسابك في {product_name} مؤقتًا لأننا اكتشفنا نشاطًا مشبوهًا.\n\n{reason, select,\n null {}\n other {السبب: {reason}}\n}\n\nلاستعادة الوصول إلى حسابك، ستحتاج إلى إعادة تعيين كلمة المرور الخاصة بك:\n\n{forgotUrl}\n\nبعد إعادة تعيين كلمة المرور الخاصة بك، ستتمكن من تسجيل الدخول مرة أخرى.\n\nإذا كنت تعتقد أن هذا حدث عن طريق الخطأ، يرجى الاتصال بفريق الدعم لدينا.\n\n– فريق أمان {product_name}"
},
"account_scheduled_deletion": {
"subject": "سيتم حذف حسابك في {product_name} نهائيًا",
"body": "مرحباً {username}،\n\nتم جدولة حسابك في {product_name} للحذف الدائم بسبب انتهاكات لشروط الخدمة أو إرشادات المجتمع الخاصة بنا.\n\nالحذف المجدول: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {السبب: {reason}}\n}\n\nهذا إجراء تنفيذي جاد. سيتم حذف بيانات حسابك نهائيًا في التاريخ المحدد.\n\nيرجى مراجعة:\n- شروط الخدمة: {termsUrl}\n- إرشادات المجتمع: {guidelinesUrl}\n\nعملية الاستئناف:\nإذا كنت تعتقد أن قرار التنفيذ هذا كان غير صحيح أو غير مبرر، لديك 60 يومًا لتقديم استئناف. أرسل بريدًا إلكترونيًا إلى {appeals_email} من عنوان البريد الإلكتروني هذا.\n\nفي استئنافك:\n- اشرح بوضوح لماذا تعتقد أن قرار التنفيذ كان غير صحيح أو غير مبرر\n- قدم أي دليل أو سياق ذي صلة\n\nسيقوم عضو من فريق أمان {product_name} بمراجعة استئنافك وقد يوقف الحذف المعلق حتى يتم التوصل إلى قرار نهائي.\n\n– فريق أمان {product_name}"
},
"account_temp_banned": {
"subject": "تم تعليق حسابك في {product_name} مؤقتًا",
"body": "مرحباً {username}،\n\nتم تعليق حسابك في {product_name} مؤقتًا لانتهاك شروط الخدمة أو إرشادات المجتمع الخاصة بنا.\n\nالمدة: {durationHours, plural,\n =1 {ساعة واحدة} zero {0 ساعات} two {ساعتان}\n few {ساعات} many {ساعة} other {# ساعة}\n}\nمعلق حتى: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {السبب: {reason}}\n}\n\nخلال هذه الفترة، لن تتمكن من الوصول إلى حسابك.\n\nيرجى مراجعة:\n- شروط الخدمة: {termsUrl}\n- إرشادات المجتمع: {guidelinesUrl}\n\nإذا كنت تعتقد أن قرار التنفيذ هذا كان غير صحيح أو غير مبرر، يمكنك تقديم استئناف. أرسل بريدًا إلكترونيًا إلى {appeals_email} من عنوان البريد الإلكتروني هذا واشرح بوضوح لماذا تعتقد أن القرار كان غير صحيح. سنراجع استئنافك ونرد بقرارنا.\n\n– فريق أمان {product_name}"
},
"donation_confirmation": {
"subject": "شكرًا لك على تبرعك لـ {product_name}",
"body": "مرحباً،\n\nشكرًا لك على تبرعك لـ {product_name}! لقد تم {interval, select,\n month {إعداد تبرعك المتكرر}\n year {إعداد تبرعك المتكرر}\n other {معالجة تبرعك لمرة واحدة}\n} بنجاح.\n\nتفاصيل التبرع:\nالمبلغ: {amount} {currency} {interval, select,\n month {شهريًا}\n year {سنويًا}\n other {}\n}\n\nسترسل لك Stripe إيصالًا منفصلاً عبر البريد الإلكتروني مع فاتورتك بصيغة PDF قريبًا. يتضمن هذا جميع تفاصيل الدفع ويمكن استخدامه لأغراض ضريبية.\n\nيمكنك عرض سجل تبرعاتك، وتنزيل الفواتير، {interval, select,\n month {وإدارة أو إلغاء اشتراكك}\n year {وإدارة أو إلغاء اشتراكك}\n other {وإدارة التبرعات المستقبلية}\n} في أي وقت باستخدام هذا الرابط:\n\n{manageUrl}\n\nدعمك يساعد في استمرار {product_name}. شكرًا لك!\n\n– فريق {product_name}{interval, select,\n month {}\n year {}\n other {}\n}"
},
"donation_magic_link": {
"subject": "إدارة تبرعات {product_name}",
"body": "مرحباً،\n\nانقر على الرابط أدناه للوصول إلى بوابة المتبرعين الخاصة بك:\n\n{manageUrl}\n\nفي البوابة، يمكنك إدارة الاشتراكات، وتنزيل الفواتير، وعرض سجل تبرعاتك.\n\nينتهي صلاحية هذا الرابط في {expiresAt, date, full} الساعة {expiresAt, time, short}.\n\nإذا لم تطلب هذا الرابط، يمكنك تجاهل هذا البريد الإلكتروني بأمان.\n\n– فريق {product_name}"
},
"dsa_report_verification": {
"subject": "تحقق من بريدك الإلكتروني لتقديم تقرير DSA",
"body": "مرحباً،\n\nاستخدم رمز التحقق أدناه لتقديم تقرير قانون الخدمات الرقمية الخاص بك على {product_name}:\n\n{code}\n\nينتهي هذا الرمز في {expiresAt, date, full} الساعة {expiresAt, time, short}.\n\nإذا لم تطلب هذا، يمكنك تجاهل هذا البريد الإلكتروني.\n\n– فريق أمان {product_name}"
},
"email_change_new": {
"subject": "تحقق من بريدك الإلكتروني الجديد في {product_name}",
"body": "مرحباً {username}،\n\nأدخل هذا الرمز في التطبيق للتحقق من بريدك الإلكتروني الجديد في {product_name}:\n\n{code}\n\nينتهي هذا الرمز في {expiresAt, date, full} الساعة {expiresAt, time, short}.\n\nإذا لم تطلب هذا، يمكنك تجاهل هذا البريد الإلكتروني.\n\n– فريق {product_name}"
},
"email_change_original": {
"subject": "تأكيد تغيير بريدك الإلكتروني في {product_name}",
"body": "مرحباً {username}،\n\nلقد تلقينا طلبًا لتغيير عنوان البريد الإلكتروني لحسابك في {product_name}.\n\nلتأكيد هذا التغيير، أدخل هذا الرمز في التطبيق:\n\n{code}\n\nينتهي هذا الرمز في {expiresAt, date, full} الساعة {expiresAt, time, short}.\n\nإذا لم تطلب هذا، يرجى تأمين حسابك على الفور.\n\n– فريق {product_name}"
},
"email_change_revert": {
"subject": "تم تغيير بريدك الإلكتروني في {product_name}",
"body": "مرحباً {username}،\n\nتم تغيير عنوان البريد الإلكتروني لحسابك في {product_name} إلى {newEmail}.\n\nإذا قمت بهذا التغيير، فلا داعي لاتخاذ أي إجراء. إذا لم تقم بذلك، يمكنك التراجع عن التغيير وتأمين حسابك باستخدام هذا الرابط:\n\n{revertUrl}\n\nسيؤدي هذا إلى استعادة بريدك الإلكتروني السابق، وتسجيل خروجك من جميع الأجهزة، وإزالة أرقام الهواتف المرتبطة، وتعطيل المصادقة متعددة العوامل، وسيطلب منك تعيين كلمة مرور جديدة.\n\n– فريق أمان {product_name}"
},
"email_verification": {
"subject": "تحقق من بريدك الإلكتروني في {product_name}",
"body": "مرحباً {username}،\n\nيرجى التحقق من عنوان البريد الإلكتروني لحسابك في {product_name} بالنقر على الرابط أدناه:\n\n{verifyUrl}\n\nإذا لم تقم بإنشاء حساب {product_name}، يمكنك تجاهل هذا البريد الإلكتروني بأمان.\n\nهذا الرابط صالح لمدة 24 ساعة.\n\n– فريق {product_name}"
},
"gift_chargeback_notification": {
"subject": "تمت إزالة المزايا من هديتك",
"body": "مرحباً {username}،\n\nرمز الهدية الذي استرددته تم دفعه في الأصل من قبل شخص آخر. وقد تم عكس هذا الدفع منذ ذلك الحين (استرداد المبلغ).\n\nبسبب هذا، قمنا بإزالة المزايا التي أضيفت إلى حسابك عندما استرددت الهدية.\n\nإذا كنت تعتقد أن هذا خطأ، يرجى الاتصال بفريق الدعم لدينا وتضمين أي تفاصيل لديك حول رمز الهدية ومتى استرددته.\n\n– فريق {product_name}"
},
"harvest_completed": {
"subject": "تصدير بياناتك من {product_name} جاهز للتنزيل",
"body": "مرحباً {username}،\n\nتصدير بياناتك جاهز.\n\nرابط التنزيل:\n{downloadUrl}\n\nالرسائل المتضمنة: {totalMessages, number}\nحجم الملف: {fileSizeMB, number} ميجابايت\n\nينتهي هذا الرابط في {expiresAt, date, full} الساعة {expiresAt, time, short}.\n\nإذا لم تطلب هذا التصدير، يرجى تغيير كلمة المرور الخاصة بك على الفور والاتصال بفريق الدعم لدينا.\n\n– فريق {product_name}"
},
"inactivity_warning": {
"subject": "سيتم حذف حسابك في {product_name} بسبب عدم النشاط",
"body": "مرحباً {username}،\n\nلم نرَ أي نشاط على حسابك في {product_name} منذ {lastActiveDate, date, full}.\n\nإذا لم تسجل الدخول بحلول {deletionDate, date, full} الساعة {deletionDate, time, short}، فسيتم حذف حسابك نهائيًا بسبب عدم النشاط.\n\nسجل الدخول هنا:\n{loginUrl}\n\nإذا كنت قد استخدمت {product_name} مؤخرًا، يرجى الاتصال بفريق الدعم لدينا على الفور.\n\n– فريق {product_name}"
},
"ip_authorization": {
"subject": "السماح بتسجيل الدخول من عنوان IP جديد",
"body": "مرحباً {username}،\n\nلقد اكتشفنا محاولة تسجيل دخول إلى حسابك في {product_name} من عنوان IP جديد:\n\nعنوان IP: {ipAddress}\nالموقع: {location}\n\nإذا كنت أنت من قام بذلك، يرجى تفويض عنوان IP هذا بالنقر على الرابط أدناه:\n\n{authUrl}\n\nإذا لم تحاول تسجيل الدخول، يرجى تغيير كلمة المرور الخاصة بك على الفور.\n\nهذا الرابط صالح لـ 30 دقيقة.\n\n– فريق {product_name}"
},
"password_change_verification": {
"subject": "تأكيد تغيير كلمة المرور في {product_name}",
"body": "مرحباً {username}،\n\nلقد تلقينا طلبًا لتغيير كلمة المرور لحسابك في {product_name}.\n\nلتأكيد هذا التغيير، أدخل هذا الرمز في التطبيق:\n\n{code}\n\nينتهي هذا الرمز في {expiresAt}.\n\nإذا لم تطلب هذا، فقد يكون شخص ما قد وصل إلى حسابك. قم بتغيير كلمة المرور الخاصة بك على الفور وقم بتمكين المصادقة الثنائية.\n\n– فريق {product_name}"
},
"password_reset": {
"subject": "إعادة تعيين كلمة المرور في {product_name}",
"body": "مرحباً {username}،\n\nلقد طلبت إعادة تعيين كلمة المرور الخاصة بك في {product_name}. استخدم الرابط أدناه لتعيين كلمة مرور جديدة:\n\n{resetUrl}\n\nإذا لم تطلب هذا، يمكنك تجاهل هذا البريد الإلكتروني بأمان.\n\nهذا الرابط صالح لساعة واحدة.\n\n– فريق {product_name}"
},
"registration_approved": {
"subject": "تمت الموافقة على تسجيلك في {product_name}",
"body": "مرحباً {username}،\n\nأخبار سارة: تمت الموافقة على تسجيلك في {product_name}.\n\nيمكنك الآن تسجيل الدخول إلى تطبيق {product_name} من هنا:\n{channelsUrl}\n\nمرحباً بك في مجتمع {product_name}.\n\n– فريق {product_name}"
},
"report_resolved": {
"subject": "تمت مراجعة تقريرك في {product_name}",
"body": "مرحباً {username}،\n\nتمت مراجعة تقريرك (المعرف: {reportId}) من قبل فريق الأمان لدينا.{hasComment, select, yes {\n\nرد فريق الأمان:\n{publicComment}} other {}}\n\nشكرًا لمساعدتك في الحفاظ على {product_name} آمنًا للجميع. نحن نأخذ جميع التقارير على محمل الجد ونقدر مساهمتك في المجتمع.\n\nإذا كان لديك أي أسئلة أو مخاوف بشأن هذه النتيجة، يرجى الاتصال بـ {safety_email}.\n\n– فريق أمان {product_name}"
},
"scheduled_deletion_notification": {
"subject": "سيتم حذف حسابك في {product_name} نهائيًا",
"body": "مرحباً {username}،\n\nتم جدولة حسابك في {product_name} للحذف الدائم.\n\nالحذف المجدول: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {السبب: {reason}}\n}\n\nهذا إجراء تنفيذي جاد. سيتم حذف بيانات حسابك نهائيًا في التاريخ المحدد.\n\nإذا كنت تعتقد أن قرار التنفيذ هذا كان غير صحيح، يمكنك تقديم استئناف. أرسل بريدًا إلكترونيًا إلى {appeals_email} من عنوان البريد الإلكتروني هذا.\n\n– فريق أمان {product_name}"
},
"self_deletion_scheduled": {
"subject": "تم جدولة حذف حسابك في {product_name}",
"body": "مرحباً {username}،\n\nلقد طلبت حذف حسابك في {product_name}. تم جدولة حسابك للحذف الدائم في:\n\n{deletionDate, date, full} الساعة {deletionDate, time, short}\n\nإذا لم تطلب هذا، سجل الدخول إلى حسابك لإلغاء الحذف. نوصي أيضًا بتغيير كلمة المرور الخاصة بك لتأمين حسابك.\n\n– فريق {product_name}"
},
"unban_notification": {
"subject": "تم رفع تعليق حسابك في {product_name}",
"body": "مرحباً {username}،\n\nأخبار سارة: تم رفع تعليق حسابك في {product_name}.\n\n{reason, select,\n null {}\n other {السبب: {reason}}\n}\n\nيمكنك الآن تسجيل الدخول مرة أخرى ومواصلة استخدام {product_name} كالمعتاد.\n\n– فريق أمان {product_name}"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "Акаунтът ти във {product_name} е временно деактивиран",
"body": "Здравей, {username},\n\nВременно деактивирахме акаунта ти във {product_name}, защото открихме подозрителна активност.\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nЗа да възстановиш достъпа до акаунта си, трябва да нулираш паролата си:\n\n{forgotUrl}\n\nСлед като нулираш паролата си, ще можеш да влезеш отново.\n\nАко смяташ, че това е грешка, свържи се с нашия екип за поддръжка.\n\n– Екип за безопасност на {product_name}"
},
"account_scheduled_deletion": {
"subject": "Акаунтът ти във {product_name} ще бъде изтрит за постоянно",
"body": "Здравей, {username},\n\nАкаунтът ти във {product_name} е насрочен за постоянно изтриване поради нарушения на нашите Условия за ползване или Насоки на общността.\n\nНасрочено изтриване: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nТова е сериозна мярка. Данните на акаунта ти ще бъдат изтрити за постоянно на насрочената дата.\n\nПрегледай:\n- Условия за ползване: {termsUrl}\n- Насоки на общността: {guidelinesUrl}\n\nПроцес на обжалване:\nАко смяташ, че това решение е неправилно или необосновано, имаш 60 дни да подадеш обжалване. Изпрати имейл на {appeals_email} от този имейл адрес.\n\nВ обжалването си:\n- Обясни ясно защо смяташ, че решението е неправилно или необосновано\n- Предостави всякакви релевантни доказателства или контекст\n\nЧлен на екипа за безопасност на {product_name} ще прегледа обжалването ти и може да спре предстоящото изтриване, докато не бъде взето окончателно решение.\n\n– Екип за безопасност на {product_name}"
},
"account_temp_banned": {
"subject": "Акаунтът ти във {product_name} е временно спрян",
"body": "Здравей, {username},\n\nАкаунтът ти във {product_name} е временно спрян поради нарушаване на нашите Условия за ползване или Насоки на общността.\n\nПродължителност: {durationHours, plural,\n =1 {1 час}\n other {# часа}\n}\nСпрян до: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nПрез това време няма да имаш достъп до акаунта си.\n\nПрегледай:\n- Условия за ползване: {termsUrl}\n- Насоки на общността: {guidelinesUrl}\n\nАко смяташ, че това решение е неправилно или необосновано, можеш да подадеш обжалване. Изпрати имейл на {appeals_email} от този имейл адрес и ясно обясни защо смяташ, че решението е неправилно. Ние ще прегледаме обжалването ти и ще отговорим с нашето решение.\n\n– Екип за безопасност на {product_name}"
},
"donation_confirmation": {
"subject": "Благодарим ти за дарението за {product_name}",
"body": "Здравей,\n\nБлагодарим ти за дарението за {product_name}! Твоето {interval, select,\n month {периодично дарение}\n year {периодично дарение}\n other {еднократно дарение}\n} беше {interval, select,\n month {настроено}\n year {настроено}\n other {обработено}\n} успешно.\n\nПодробности за дарението:\nСума: {amount} {currency} {interval, select,\n month {на месец}\n year {на година}\n other {}\n}\n\nStripe ще ти изпрати отделна разписка с PDF фактурата ти скоро. Тя включва всички данни за плащане и може да се използва за данъчни цели.\n\nМожеш да прегледаш историята на даренията си, да изтегляш фактури, {interval, select,\n month {и да управляваш или анулираш абонамента си}\n year {и да управляваш или анулираш абонамента си}\n other {и да управляваш бъдещи дарения}\n} по всяко време, като използваш този линк:\n\n{manageUrl}\n\nТвоята подкрепа помага на {product_name} да продължи да работи. Благодарим ти!\n\n– Екип на {product_name}"
},
"donation_magic_link": {
"subject": "Управлявай даренията си за {product_name}",
"body": "Здравей,\n\nКликни върху линка по-долу, за да получиш достъп до портала за дарители:\n\n{manageUrl}\n\nВ портала можеш да управляваш планове, да изтегляш фактури и да преглеждаш историята на даренията си.\n\nТози линк изтича на {expiresAt, date, full} в {expiresAt, time, short}.\n\nАко не си поискал този линк, можеш спокойно да игнорираш този имейл.\n\n– Екип на {product_name}"
},
"dsa_report_verification": {
"subject": "Потвърди имейла си за DSA доклад",
"body": "Здравей,\n\nИзползвай кода за потвърждение по-долу, за да подадеш своя доклад по Закона за цифровите услуги във {product_name}:\n\n{code}\n\nТози код изтича на {expiresAt, date, full} в {expiresAt, time, short}.\n\nАко не си го поискал, можеш да игнорираш този имейл.\n\n– Екип за безопасност на {product_name}"
},
"email_change_new": {
"subject": "Потвърди новия си имейл във {product_name}",
"body": "Здравей, {username},\n\nВъведи този код в приложението, за да потвърдиш новия си имейл във {product_name}:\n\n{code}\n\nТози код изтича на {expiresAt, date, full} в {expiresAt, time, short}.\n\nАко не си го поискал, можеш да игнорираш този имейл.\n\n– Екип на {product_name}"
},
"email_change_original": {
"subject": "Потвърди промяната на имейла си във {product_name}",
"body": "Здравей, {username},\n\nПолучихме искане за промяна на имейл адреса на акаунта ти във {product_name}.\n\nЗа да потвърдиш тази промяна, въведи този код в приложението:\n\n{code}\n\nТози код изтича на {expiresAt, date, full} в {expiresAt, time, short}.\n\nАко не си го поискал, защити акаунта си незабавно.\n\n– Екип на {product_name}"
},
"email_change_revert": {
"subject": "Имейлът ти във {product_name} беше променен",
"body": "Здравей, {username},\n\nИмейл адресът на акаунта ти във {product_name} беше променен на {newEmail}.\n\nАко ти си направил тази промяна, не е необходимо да предприемаш никакви действия. Ако не си, можеш да отмениш промяната и да защитиш акаунта си, като използваш този линк:\n\n{revertUrl}\n\nТова ще възстанови предишния ти имейл, ще те излезе от всички устройства, ще премахне свързаните телефонни номера, ще деактивира MFA и ще изисква да зададеш нова парола.\n\n– Екип за безопасност на {product_name}"
},
"email_verification": {
"subject": "Потвърди имейл адреса си във {product_name}",
"body": "Здравей, {username},\n\nПотвърди имейл адреса за акаунта си във {product_name}, като кликнеш върху линка по-долу:\n\n{verifyUrl}\n\nАко не си създал акаунт във {product_name}, можеш спокойно да игнорираш този имейл.\n\nТози линк е валиден 24 часа.\n\n– Екип на {product_name}"
},
"gift_chargeback_notification": {
"subject": "Предимствата от активирания ти подарък са премахнати",
"body": "Здравей, {username},\n\nКод за подарък, който си активирал, първоначално е бил платен от някой друг. Това плащане оттогава е отменено (chargeback).\n\nПоради това премахнахме предимствата, които бяха добавени към акаунта ти, когато активира подаръка.\n\nАко смяташ, че това е грешка, свържи се с нашия екип за поддръжка и включи всички подробности, които имаш относно кода за подарък и кога си го активирал.\n\n– Екип на {product_name}"
},
"harvest_completed": {
"subject": "Експортът на данните ти от {product_name} е готов за изтегляне",
"body": "Здравей, {username},\n\nЕкспортът на данните ти е готов.\n\nЛинк за изтегляне:\n{downloadUrl}\n\nВключени съобщения: {totalMessages, number}\nРазмер на файла: {fileSizeMB, number} MB\n\nТози линк изтича на {expiresAt, date, full} в {expiresAt, time, short}.\n\nАко не си го поискал, смени паролата си незабавно и се свържи с нашия екип за поддръжка.\n\n– Екип на {product_name}"
},
"inactivity_warning": {
"subject": "Акаунтът ти във {product_name} ще бъде изтрит поради неактивност",
"body": "Здравей, {username},\n\nНе сме забелязали активност в акаунта ти във {product_name} от {lastActiveDate, date, full}.\n\nАко не влезеш до {deletionDate, date, full} в {deletionDate, time, short}, акаунтът ти ще бъде изтрит за постоянно поради неактивност.\n\nВлез тук:\n{loginUrl}\n\nАко си използвал {product_name} наскоро, свържи се с нашия екип за поддръжка незабавно.\n\n– Екип на {product_name}"
},
"ip_authorization": {
"subject": "Разреши влизане от нов IP адрес",
"body": "Здравей, {username},\n\nОткрихме опит за влизане в акаунта ти във {product_name} от нов IP адрес:\n\nIP адрес: {ipAddress}\nМестоположение: {location}\n\nАко това си бил ти, разреши този IP адрес, като кликнеш върху линка по-долу:\n\n{authUrl}\n\nАко не си се опитвал да влезеш, смени паролата си незабавно.\n\nТози линк е валиден 30 минути.\n\n– Екип на {product_name}"
},
"password_change_verification": {
"subject": "Потвърди промяната на паролата си във {product_name}",
"body": "Здравей, {username},\n\nПолучихме искане за промяна на паролата на акаунта ти във {product_name}.\n\nЗа да потвърдиш тази промяна, въведи този код в приложението:\n\n{code}\n\nТози код изтича в {expiresAt}.\n\nАко не си го поискал, някой може да има достъп до акаунта ти. Смени паролата си незабавно и активирай двуфакторно удостоверяване.\n\n– Екип на {product_name}"
},
"password_reset": {
"subject": "Нулирай паролата си във {product_name}",
"body": "Здравей, {username},\n\nПоискал си нулиране на паролата си във {product_name}. Използвай линка по-долу, за да зададеш нова парола:\n\n{resetUrl}\n\nАко не си го поискал, можеш спокойно да игнорираш този имейл.\n\nТози линк е валиден 1 час.\n\n– Екип на {product_name}"
},
"registration_approved": {
"subject": "Регистрацията ти във {product_name} е одобрена",
"body": "Здравей, {username},\n\nДобра новина: регистрацията ти във {product_name} е одобрена.\n\nВече можеш да влезеш в приложението {product_name} тук:\n{channelsUrl}\n\nДобре дошъл в общността на {product_name}.\n\n– Екип на {product_name}"
},
"report_resolved": {
"subject": "Докладът ти във {product_name} е прегледан",
"body": "Здравей, {username},\n\nДокладът ти (ID: {reportId}) е прегледан от нашия екип за безопасност.{hasComment, select, yes {\n\nОтговор от екипа за безопасност:\n{publicComment}} other {}}\n\nБлагодарим ти, че помагаш {product_name} да остане безопасно място за всички. Ние приемаме всички доклади сериозно и ценим твоя принос към общността.\n\nАко имаш въпроси или притеснения относно този резултат, свържи се с {safety_email}.\n\n– Екип за безопасност на {product_name}"
},
"scheduled_deletion_notification": {
"subject": "Акаунтът ти във {product_name} ще бъде изтрит за постоянно",
"body": "Здравей, {username},\n\nАкаунтът ти във {product_name} е насрочен за постоянно изтриване.\n\nНасрочено изтриване: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nТова е сериозна мярка. Данните на акаунта ти ще бъдат изтрити за постоянно на насрочената дата.\n\nАко смяташ, че това решение е неправилно, можеш да подадеш обжалване. Изпрати имейл на {appeals_email} от този имейл адрес.\n\n– Екип за безопасност на {product_name}"
},
"self_deletion_scheduled": {
"subject": "Изтриването на акаунта ти във {product_name} е насрочено",
"body": "Здравей, {username},\n\nПоискал си изтриване на акаунта си във {product_name}. Акаунтът ти е насрочен за постоянно изтриване на:\n\n{deletionDate, date, full} в {deletionDate, time, short}\n\nАко не си поискал това, влез в акаунта си, за да отмениш изтриването. Препоръчваме също да смениш паролата си, за да защитиш акаунта си.\n\n– Екип на {product_name}"
},
"unban_notification": {
"subject": "Спирането на акаунта ти във {product_name} е отменено",
"body": "Здравей, {username},\n\nДобра новина: спирането на акаунта ти във {product_name} е отменено.\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nВече можеш да влезеш отново и да продължиш да използваш {product_name} както обикновено.\n\n– Екип за безопасност на {product_name}"
}
"account_disabled_suspicious": {
"subject": "Акаунтът ти във {product_name} е временно деактивиран",
"body": "Здравей, {username},\n\nВременно деактивирахме акаунта ти във {product_name}, защото открихме подозрителна активност.\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nЗа да възстановиш достъпа до акаунта си, трябва да нулираш паролата си:\n\n{forgotUrl}\n\nСлед като нулираш паролата си, ще можеш да влезеш отново.\n\nАко смяташ, че това е грешка, свържи се с нашия екип за поддръжка.\n\n– Екип за безопасност на {product_name}"
},
"account_scheduled_deletion": {
"subject": "Акаунтът ти във {product_name} ще бъде изтрит за постоянно",
"body": "Здравей, {username},\n\nАкаунтът ти във {product_name} е насрочен за постоянно изтриване поради нарушения на нашите Условия за ползване или Насоки на общността.\n\nНасрочено изтриване: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nТова е сериозна мярка. Данните на акаунта ти ще бъдат изтрити за постоянно на насрочената дата.\n\nПрегледай:\n- Условия за ползване: {termsUrl}\n- Насоки на общността: {guidelinesUrl}\n\nПроцес на обжалване:\nАко смяташ, че това решение е неправилно или необосновано, имаш 60 дни да подадеш обжалване. Изпрати имейл на {appeals_email} от този имейл адрес.\n\nВ обжалването си:\n- Обясни ясно защо смяташ, че решението е неправилно или необосновано\n- Предостави всякакви релевантни доказателства или контекст\n\nЧлен на екипа за безопасност на {product_name} ще прегледа обжалването ти и може да спре предстоящото изтриване, докато не бъде взето окончателно решение.\n\n– Екип за безопасност на {product_name}"
},
"account_temp_banned": {
"subject": "Акаунтът ти във {product_name} е временно спрян",
"body": "Здравей, {username},\n\nАкаунтът ти във {product_name} е временно спрян поради нарушаване на нашите Условия за ползване или Насоки на общността.\n\nПродължителност: {durationHours, plural,\n =1 {1 час}\n other {# часа}\n}\nСпрян до: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nПрез това време няма да имаш достъп до акаунта си.\n\nПрегледай:\n- Условия за ползване: {termsUrl}\n- Насоки на общността: {guidelinesUrl}\n\nАко смяташ, че това решение е неправилно или необосновано, можеш да подадеш обжалване. Изпрати имейл на {appeals_email} от този имейл адрес и ясно обясни защо смяташ, че решението е неправилно. Ние ще прегледаме обжалването ти и ще отговорим с нашето решение.\n\n– Екип за безопасност на {product_name}"
},
"donation_confirmation": {
"subject": "Благодарим ти за дарението за {product_name}",
"body": "Здравей,\n\nБлагодарим ти за дарението за {product_name}! Твоето {interval, select,\n month {периодично дарение}\n year {периодично дарение}\n other {еднократно дарение}\n} беше {interval, select,\n month {настроено}\n year {настроено}\n other {обработено}\n} успешно.\n\nПодробности за дарението:\nСума: {amount} {currency} {interval, select,\n month {на месец}\n year {на година}\n other {}\n}\n\nStripe ще ти изпрати отделна разписка с PDF фактурата ти скоро. Тя включва всички данни за плащане и може да се използва за данъчни цели.\n\nМожеш да прегледаш историята на даренията си, да изтегляш фактури, {interval, select,\n month {и да управляваш или анулираш абонамента си}\n year {и да управляваш или анулираш абонамента си}\n other {и да управляваш бъдещи дарения}\n} по всяко време, като използваш този линк:\n\n{manageUrl}\n\nТвоята подкрепа помага на {product_name} да продължи да работи. Благодарим ти!\n\n– Екип на {product_name}"
},
"donation_magic_link": {
"subject": "Управлявай даренията си за {product_name}",
"body": "Здравей,\n\nКликни върху линка по-долу, за да получиш достъп до портала за дарители:\n\n{manageUrl}\n\nВ портала можеш да управляваш планове, да изтегляш фактури и да преглеждаш историята на даренията си.\n\nТози линк изтича на {expiresAt, date, full} в {expiresAt, time, short}.\n\nАко не си поискал този линк, можеш спокойно да игнорираш този имейл.\n\n– Екип на {product_name}"
},
"dsa_report_verification": {
"subject": "Потвърди имейла си за DSA доклад",
"body": "Здравей,\n\nИзползвай кода за потвърждение по-долу, за да подадеш своя доклад по Закона за цифровите услуги във {product_name}:\n\n{code}\n\nТози код изтича на {expiresAt, date, full} в {expiresAt, time, short}.\n\nАко не си го поискал, можеш да игнорираш този имейл.\n\n– Екип за безопасност на {product_name}"
},
"email_change_new": {
"subject": "Потвърди новия си имейл във {product_name}",
"body": "Здравей, {username},\n\nВъведи този код в приложението, за да потвърдиш новия си имейл във {product_name}:\n\n{code}\n\nТози код изтича на {expiresAt, date, full} в {expiresAt, time, short}.\n\nАко не си го поискал, можеш да игнорираш този имейл.\n\n– Екип на {product_name}"
},
"email_change_original": {
"subject": "Потвърди промяната на имейла си във {product_name}",
"body": "Здравей, {username},\n\nПолучихме искане за промяна на имейл адреса на акаунта ти във {product_name}.\n\nЗа да потвърдиш тази промяна, въведи този код в приложението:\n\n{code}\n\nТози код изтича на {expiresAt, date, full} в {expiresAt, time, short}.\n\nАко не си го поискал, защити акаунта си незабавно.\n\n– Екип на {product_name}"
},
"email_change_revert": {
"subject": "Имейлът ти във {product_name} беше променен",
"body": "Здравей, {username},\n\nИмейл адресът на акаунта ти във {product_name} беше променен на {newEmail}.\n\nАко ти си направил тази промяна, не е необходимо да предприемаш никакви действия. Ако не си, можеш да отмениш промяната и да защитиш акаунта си, като използваш този линк:\n\n{revertUrl}\n\nТова ще възстанови предишния ти имейл, ще те излезе от всички устройства, ще премахне свързаните телефонни номера, ще деактивира MFA и ще изисква да зададеш нова парола.\n\n– Екип за безопасност на {product_name}"
},
"email_verification": {
"subject": "Потвърди имейл адреса си във {product_name}",
"body": "Здравей, {username},\n\nПотвърди имейл адреса за акаунта си във {product_name}, като кликнеш върху линка по-долу:\n\n{verifyUrl}\n\nАко не си създал акаунт във {product_name}, можеш спокойно да игнорираш този имейл.\n\nТози линк е валиден 24 часа.\n\n– Екип на {product_name}"
},
"gift_chargeback_notification": {
"subject": "Предимствата от активирания ти подарък са премахнати",
"body": "Здравей, {username},\n\nКод за подарък, който си активирал, първоначално е бил платен от някой друг. Това плащане оттогава е отменено (chargeback).\n\nПоради това премахнахме предимствата, които бяха добавени към акаунта ти, когато активира подаръка.\n\nАко смяташ, че това е грешка, свържи се с нашия екип за поддръжка и включи всички подробности, които имаш относно кода за подарък и кога си го активирал.\n\n– Екип на {product_name}"
},
"harvest_completed": {
"subject": "Експортът на данните ти от {product_name} е готов за изтегляне",
"body": "Здравей, {username},\n\nЕкспортът на данните ти е готов.\n\nЛинк за изтегляне:\n{downloadUrl}\n\nВключени съобщения: {totalMessages, number}\nРазмер на файла: {fileSizeMB, number} MB\n\nТози линк изтича на {expiresAt, date, full} в {expiresAt, time, short}.\n\nАко не си го поискал, смени паролата си незабавно и се свържи с нашия екип за поддръжка.\n\n– Екип на {product_name}"
},
"inactivity_warning": {
"subject": "Акаунтът ти във {product_name} ще бъде изтрит поради неактивност",
"body": "Здравей, {username},\n\nНе сме забелязали активност в акаунта ти във {product_name} от {lastActiveDate, date, full}.\n\nАко не влезеш до {deletionDate, date, full} в {deletionDate, time, short}, акаунтът ти ще бъде изтрит за постоянно поради неактивност.\n\nВлез тук:\n{loginUrl}\n\nАко си използвал {product_name} наскоро, свържи се с нашия екип за поддръжка незабавно.\n\n– Екип на {product_name}"
},
"ip_authorization": {
"subject": "Разреши влизане от нов IP адрес",
"body": "Здравей, {username},\n\nОткрихме опит за влизане в акаунта ти във {product_name} от нов IP адрес:\n\nIP адрес: {ipAddress}\nМестоположение: {location}\n\nАко това си бил ти, разреши този IP адрес, като кликнеш върху линка по-долу:\n\n{authUrl}\n\nАко не си се опитвал да влезеш, смени паролата си незабавно.\n\nТози линк е валиден 30 минути.\n\n– Екип на {product_name}"
},
"password_change_verification": {
"subject": "Потвърди промяната на паролата си във {product_name}",
"body": "Здравей, {username},\n\nПолучихме искане за промяна на паролата на акаунта ти във {product_name}.\n\nЗа да потвърдиш тази промяна, въведи този код в приложението:\n\n{code}\n\nТози код изтича в {expiresAt}.\n\nАко не си го поискал, някой може да има достъп до акаунта ти. Смени паролата си незабавно и активирай двуфакторно удостоверяване.\n\n– Екип на {product_name}"
},
"password_reset": {
"subject": "Нулирай паролата си във {product_name}",
"body": "Здравей, {username},\n\nПоискал си нулиране на паролата си във {product_name}. Използвай линка по-долу, за да зададеш нова парола:\n\n{resetUrl}\n\nАко не си го поискал, можеш спокойно да игнорираш този имейл.\n\nТози линк е валиден 1 час.\n\n– Екип на {product_name}"
},
"registration_approved": {
"subject": "Регистрацията ти във {product_name} е одобрена",
"body": "Здравей, {username},\n\nДобра новина: регистрацията ти във {product_name} е одобрена.\n\nВече можеш да влезеш в приложението {product_name} тук:\n{channelsUrl}\n\nДобре дошъл в общността на {product_name}.\n\n– Екип на {product_name}"
},
"report_resolved": {
"subject": "Докладът ти във {product_name} е прегледан",
"body": "Здравей, {username},\n\nДокладът ти (ID: {reportId}) е прегледан от нашия екип за безопасност.{hasComment, select, yes {\n\nОтговор от екипа за безопасност:\n{publicComment}} other {}}\n\nБлагодарим ти, че помагаш {product_name} да остане безопасно място за всички. Ние приемаме всички доклади сериозно и ценим твоя принос към общността.\n\nАко имаш въпроси или притеснения относно този резултат, свържи се с {safety_email}.\n\n– Екип за безопасност на {product_name}"
},
"scheduled_deletion_notification": {
"subject": "Акаунтът ти във {product_name} ще бъде изтрит за постоянно",
"body": "Здравей, {username},\n\nАкаунтът ти във {product_name} е насрочен за постоянно изтриване.\n\nНасрочено изтриване: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nТова е сериозна мярка. Данните на акаунта ти ще бъдат изтрити за постоянно на насрочената дата.\n\nАко смяташ, че това решение е неправилно, можеш да подадеш обжалване. Изпрати имейл на {appeals_email} от този имейл адрес.\n\n– Екип за безопасност на {product_name}"
},
"self_deletion_scheduled": {
"subject": "Изтриването на акаунта ти във {product_name} е насрочено",
"body": "Здравей, {username},\n\nПоискал си изтриване на акаунта си във {product_name}. Акаунтът ти е насрочен за постоянно изтриване на:\n\n{deletionDate, date, full} в {deletionDate, time, short}\n\nАко не си поискал това, влез в акаунта си, за да отмениш изтриването. Препоръчваме също да смениш паролата си, за да защитиш акаунта си.\n\n– Екип на {product_name}"
},
"unban_notification": {
"subject": "Спирането на акаунта ти във {product_name} е отменено",
"body": "Здравей, {username},\n\nДобра новина: спирането на акаунта ти във {product_name} е отменено.\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nВече можеш да влезеш отново и да продължиш да използваш {product_name} както обикновено.\n\n– Екип за безопасност на {product_name}"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "Tvůj účet {product_name} byl dočasně deaktivován",
"body": "Ahoj {username},\n\nDočasně jsme deaktivovali tvůj účet {product_name}, protože jsme zaznamenali podezřelou aktivitu.\n\n{reason, select,\n null {}\n other {Důvod: {reason}}\n}\n\nPro opětovný přístup k účtu si budeš muset resetovat heslo:\n\n{forgotUrl}\n\nPo resetování hesla se budeš moci znovu přihlásit.\n\nPokud se domníváš, že se jedná o chybu, kontaktuj prosím náš tým podpory.\n\n– Bezpečnostní tým {product_name}"
},
"account_scheduled_deletion": {
"subject": "Tvůj účet {product_name} bude trvale smazán",
"body": "Ahoj {username},\n\nTvůj účet {product_name} byl naplánován k trvalému smazání z důvodu porušení našich Podmínek služby nebo Pokynů komunity.\n\nNaplánované smazání: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Důvod: {reason}}\n}\n\nJedná se o závažné opatření. Tvá data účtu budou trvale smazána v naplánovaný den.\n\nZkontroluj prosím:\n- Podmínky služby: {termsUrl}\n- Pokyny komunity: {guidelinesUrl}\n\nProces odvolání:\nPokud se domníváš, že toto rozhodnutí o vynucení bylo nesprávné nebo neoprávněné, máš 60 dní na podání odvolání. Odešli e-mail na {appeals_email} z této e-mailové adresy.\n\nVe svém odvolání:\n- Jasně vysvětli, proč se domníváš, že rozhodnutí o vynucení bylo nesprávné nebo neoprávněné\n- Poskytni veškeré relevantní důkazy nebo kontext\n\nČlen bezpečnostního týmu {product_name} tvé odvolání přezkoumá a může pozastavit probíhající smazání, dokud nebude dosaženo konečného rozhodnutí.\n\n– Bezpečnostní tým {product_name}"
},
"account_temp_banned": {
"subject": "Tvůj účet {product_name} byl dočasně pozastaven",
"body": "Ahoj {username},\n\nTvůj účet {product_name} byl dočasně pozastaven za porušení našich Podmínek služby nebo Pokynů komunity.\n\nDoba trvání: {durationHours, plural,\n one {1 hodina} few {hodiny}\n many {hodiny} other {# hodin}\n}\nPozastaveno do: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Důvod: {reason}}\n}\n\nBěhem této doby nebudeš mít přístup ke svému účtu.\n\nZkontroluj prosím:\n- Podmínky služby: {termsUrl}\n- Pokyny komunity: {guidelinesUrl}\n\nPokud se domníváš, že toto rozhodnutí o vynucení bylo nesprávné nebo neoprávněné, můžeš podat odvolání. Odešli e-mail na {appeals_email} z této e-mailové adresy a jasně vysvětli, proč se domníváš, že rozhodnutí bylo nesprávné. Tvé odvolání přezkoumáme a odpovíme ti s naším rozhodnutím.\n\n– Bezpečnostní tým {product_name}"
},
"donation_confirmation": {
"subject": "Děkujeme za tvůj dar na {product_name}",
"body": "Ahoj,\n\nDěkujeme za tvůj dar pro {product_name}! Tvůj {interval, select,\n month {opakovaný dar}\n year {opakovaný dar}\n other {jednorázový dar}\n} byl {interval, select,\n month {nastaven}\n year {nastaven}\n other {zpracován}\n} úspěšně.\n\nPodrobnosti o daru:\nČástka: {amount} {currency} {interval, select,\n month {měsíčně}\n year {ročně}\n other {}\n}\n\nStripe ti brzy zašle samostatnou účtenku s PDF fakturou. Ta obsahuje všechny platební údaje a může být použita pro daňové účely.\n\nHistorii svých darů, stahování faktur {interval, select,\n month {a správu nebo zrušení předplatného}\n year {a správu nebo zrušení předplatného}\n other {a správu budoucích darů}\n} můžeš kdykoli zobrazit pomocí tohoto odkazu:\n\n{manageUrl}\n\nTvá podpora pomáhá udržovat {product_name} v chodu. Děkujeme!\n\n– Tým {product_name}"
},
"donation_magic_link": {
"subject": "Spravuj své dary pro {product_name}",
"body": "Ahoj,\n\nKlikni na odkaz níže pro přístup k portálu pro dárce:\n\n{manageUrl}\n\nV portálu můžeš spravovat předplatná, stahovat faktury a prohlížet si historii svých darů.\n\nTento odkaz vyprší dne {expiresAt, date, full} v {expiresAt, time, short}.\n\nPokud jsi tento odkaz nepožadoval, můžeš tento e-mail klidně ignorovat.\n\n– Tým {product_name}"
},
"dsa_report_verification": {
"subject": "Ověř svůj e-mail pro nahlášení podle DSA",
"body": "Ahoj,\n\nPoužij ověřovací kód níže k odeslání svého nahlášení podle zákona o digitálních službách na {product_name}:\n\n{code}\n\nTento kód vyprší dne {expiresAt, date, full} v {expiresAt, time, short}.\n\nPokud jsi o to nežádal, můžeš tento e-mail ignorovat.\n\n– Bezpečnostní tým {product_name}"
},
"email_change_new": {
"subject": "Ověř svůj nový e-mail pro {product_name}",
"body": "Ahoj {username},\n\nZadej tento kód do aplikace pro ověření tvého nového e-mailu pro {product_name}:\n\n{code}\n\nTento kód vyprší dne {expiresAt, date, full} v {expiresAt, time, short}.\n\nPokud jsi o to nežádal, můžeš tento e-mail ignorovat.\n\n– Tým {product_name}"
},
"email_change_original": {
"subject": "Potvrď změnu e-mailu pro {product_name}",
"body": "Ahoj {username},\n\nObdrželi jsme požadavek na změnu e-mailové adresy tvého účtu {product_name}.\n\nPro potvrzení této změny zadej tento kód do aplikace:\n\n{code}\n\nTento kód vyprší dne {expiresAt, date, full} v {expiresAt, time, short}.\n\nPokud jsi o to nežádal, zabezpeč si svůj účet ihned.\n\n– Tým {product_name}"
},
"email_change_revert": {
"subject": "Tvůj e-mail pro {product_name} byl změněn",
"body": "Ahoj {username},\n\nE-mailová adresa tvého účtu {product_name} byla změněna na {newEmail}.\n\nPokud jsi tuto změnu provedl ty, není potřeba žádná akce. Pokud ne, můžeš změnu vrátit zpět a zabezpečit svůj účet pomocí tohoto odkazu:\n\n{revertUrl}\n\nTím se obnoví tvůj předchozí e-mail, odhlásíš se všude, odstraní se propojená telefonní čísla, deaktivuje se MFA a budeš muset nastavit nové heslo.\n\n– Bezpečnostní tým {product_name}"
},
"email_verification": {
"subject": "Ověř svou e-mailovou adresu pro {product_name}",
"body": "Ahoj {username},\n\nOvěř e-mailovou adresu svého účtu {product_name} kliknutím na odkaz níže:\n\n{verifyUrl}\n\nPokud jsi si účet {product_name} nevytvořil, můžeš tento e-mail klidně ignorovat.\n\nTento odkaz je platný 24 hodin.\n\n– Tým {product_name}"
},
"gift_chargeback_notification": {
"subject": "Výhody z uplatněného dárku byly odstraněny",
"body": "Ahoj {username},\n\nDárkový kód, který jsi uplatnil, byl původně zaplacen někým jiným. Tato platba byla mezitím zrušena (chargeback).\n\nZ tohoto důvodu jsme odstranili výhody, které byly přidány k tvému účtu, když jsi dárek uplatnil.\n\nPokud si myslíš, že se jedná o chybu, kontaktuj prosím náš tým podpory a uveď veškeré podrobnosti, které máš o dárkovém kódu a o tom, kdy jsi ho uplatnil.\n\n– Tým {product_name}"
},
"harvest_completed": {
"subject": "Export tvých dat z {product_name} je připraven ke stažení",
"body": "Ahoj {username},\n\nTvůj export dat je připraven.\n\nOdkaz ke stažení:\n{downloadUrl}\n\nZahrnuté zprávy: {totalMessages, number}\nVelikost souboru: {fileSizeMB, number} MB\n\nTento odkaz vyprší dne {expiresAt, date, full} v {expiresAt, time, short}.\n\nPokud jsi o tento export nežádal, okamžitě si změň heslo a kontaktuj náš tým podpory.\n\n– Tým {product_name}"
},
"inactivity_warning": {
"subject": "Tvůj účet {product_name} bude smazán kvůli neaktivitě",
"body": "Ahoj {username},\n\nNezaznamenali jsme žádnou aktivitu na tvém účtu {product_name} od {lastActiveDate, date, full}.\n\nPokud se nepřihlásíš do {deletionDate, date, full} v {deletionDate, time, short}, tvůj účet bude trvale smazán kvůli neaktivitě.\n\nPřihlas se zde:\n{loginUrl}\n\nPokud jsi {product_name} nedávno používal, kontaktuj náš tým podpory ihned.\n\n– Tým {product_name}"
},
"ip_authorization": {
"subject": "Povolit přihlášení z nové IP adresy",
"body": "Ahoj {username},\n\nZaznamenali jsme pokus o přihlášení k tvému účtu {product_name} z nové IP adresy:\n\nIP adresa: {ipAddress}\nPoloha: {location}\n\nPokud jsi to byl ty, autorizuj tuto IP adresu kliknutím na odkaz níže:\n\n{authUrl}\n\nPokud jsi se nepřihlašoval, okamžitě si změň heslo.\n\nTento odkaz je platný 30 minut.\n\n– Tým {product_name}"
},
"password_change_verification": {
"subject": "Potvrď změnu hesla k {product_name}",
"body": "Ahoj {username},\n\nObdrželi jsme požadavek na změnu hesla k tvému účtu pro {product_name}.\n\nPro potvrzení této změny zadej tento kód do aplikace:\n\n{code}\n\nTento kód vyprší v {expiresAt}.\n\nPokud jsi o to nežádal, někdo může mít přístup k tvému účtu. Okamžitě si změň heslo a povol dvoufaktorové ověřování.\n\n– Tým {product_name}"
},
"password_reset": {
"subject": "Obnov své heslo k {product_name}",
"body": "Ahoj {username},\n\nPožádal jsi o reset hesla pro {product_name}. Použij odkaz níže pro nastavení nového hesla:\n\n{resetUrl}\n\nPokud jsi o to nežádal, můžeš tento e-mail klidně ignorovat.\n\nTento odkaz je platný 1 hodinu.\n\n– Tým {product_name}"
},
"registration_approved": {
"subject": "Tvá registrace k {product_name} byla schválena",
"body": "Ahoj {username},\n\nDobré zprávy: tvá registrace do {product_name} byla schválena.\n\nNyní se můžeš přihlásit do aplikace {product_name} zde:\n{channelsUrl}\n\nVítej v komunitě {product_name}.\n\n– Tým {product_name}"
},
"report_resolved": {
"subject": "Tvé nahlášení pro {product_name} bylo zkontrolováno",
"body": "Ahoj {username},\n\nTvé nahlášení (ID: {reportId}) bylo zkontrolováno naším bezpečnostním týmem.{hasComment, select, yes {\n\nOdpověď od bezpečnostního týmu:\n{publicComment}} other {}}\n\nDěkujeme, že pomáháš udržovat {product_name} bezpečný pro všechny. Všechna nahlášení bereme vážně a oceňujeme tvůj příspěvek komunitě.\n\nPokud máš jakékoli dotazy nebo obavy ohledně tohoto výsledku, kontaktuj {safety_email}.\n\n– Bezpečnostní tým {product_name}"
},
"scheduled_deletion_notification": {
"subject": "Tvůj účet {product_name} bude trvale smazán",
"body": "Ahoj {username},\n\nTvůj účet {product_name} byl naplánován k trvalému smazání.\n\nNaplánované smazání: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Důvod: {reason}}\n}\n\nJedná se o závažné opatření. Tvá data účtu budou trvale smazána v naplánovaný den.\n\nPokud se domníváš, že toto rozhodnutí o vynucení bylo nesprávné, můžeš podat odvolání. Odešli e-mail na {appeals_email} z této e-mailové adresy.\n\n– Bezpečnostní tým {product_name}"
},
"self_deletion_scheduled": {
"subject": "Smazání tvého účtu {product_name} je naplánováno",
"body": "Ahoj {username},\n\nPožádal jsi o smazání svého účtu {product_name}. Tvůj účet je naplánován k trvalému smazání na:\n\n{deletionDate, date, full} v {deletionDate, time, short}\n\nPokud jsi to nepožadoval, přihlas se ke svému účtu a zruš smazání. Doporučujeme také změnit si heslo pro zabezpečení účtu.\n\n– Tým {product_name}"
},
"unban_notification": {
"subject": "Pozastavení tvého účtu {product_name} bylo zrušeno",
"body": "Ahoj {username},\n\nDobré zprávy: pozastavení tvého účtu {product_name} bylo zrušeno.\n\n{reason, select,\n null {}\n other {Důvod: {reason}}\n}\n\nNyní se můžeš znovu přihlásit a pokračovat v používání {product_name} jako obvykle.\n\n– Bezpečnostní tým {product_name}"
}
"account_disabled_suspicious": {
"subject": "Tvůj účet {product_name} byl dočasně deaktivován",
"body": "Ahoj {username},\n\nDočasně jsme deaktivovali tvůj účet {product_name}, protože jsme zaznamenali podezřelou aktivitu.\n\n{reason, select,\n null {}\n other {Důvod: {reason}}\n}\n\nPro opětovný přístup k účtu si budeš muset resetovat heslo:\n\n{forgotUrl}\n\nPo resetování hesla se budeš moci znovu přihlásit.\n\nPokud se domníváš, že se jedná o chybu, kontaktuj prosím náš tým podpory.\n\n– Bezpečnostní tým {product_name}"
},
"account_scheduled_deletion": {
"subject": "Tvůj účet {product_name} bude trvale smazán",
"body": "Ahoj {username},\n\nTvůj účet {product_name} byl naplánován k trvalému smazání z důvodu porušení našich Podmínek služby nebo Pokynů komunity.\n\nNaplánované smazání: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Důvod: {reason}}\n}\n\nJedná se o závažné opatření. Tvá data účtu budou trvale smazána v naplánovaný den.\n\nZkontroluj prosím:\n- Podmínky služby: {termsUrl}\n- Pokyny komunity: {guidelinesUrl}\n\nProces odvolání:\nPokud se domníváš, že toto rozhodnutí o vynucení bylo nesprávné nebo neoprávněné, máš 60 dní na podání odvolání. Odešli e-mail na {appeals_email} z této e-mailové adresy.\n\nVe svém odvolání:\n- Jasně vysvětli, proč se domníváš, že rozhodnutí o vynucení bylo nesprávné nebo neoprávněné\n- Poskytni veškeré relevantní důkazy nebo kontext\n\nČlen bezpečnostního týmu {product_name} tvé odvolání přezkoumá a může pozastavit probíhající smazání, dokud nebude dosaženo konečného rozhodnutí.\n\n– Bezpečnostní tým {product_name}"
},
"account_temp_banned": {
"subject": "Tvůj účet {product_name} byl dočasně pozastaven",
"body": "Ahoj {username},\n\nTvůj účet {product_name} byl dočasně pozastaven za porušení našich Podmínek služby nebo Pokynů komunity.\n\nDoba trvání: {durationHours, plural,\n one {1 hodina} few {hodiny}\n many {hodiny} other {# hodin}\n}\nPozastaveno do: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Důvod: {reason}}\n}\n\nBěhem této doby nebudeš mít přístup ke svému účtu.\n\nZkontroluj prosím:\n- Podmínky služby: {termsUrl}\n- Pokyny komunity: {guidelinesUrl}\n\nPokud se domníváš, že toto rozhodnutí o vynucení bylo nesprávné nebo neoprávněné, můžeš podat odvolání. Odešli e-mail na {appeals_email} z této e-mailové adresy a jasně vysvětli, proč se domníváš, že rozhodnutí bylo nesprávné. Tvé odvolání přezkoumáme a odpovíme ti s naším rozhodnutím.\n\n– Bezpečnostní tým {product_name}"
},
"donation_confirmation": {
"subject": "Děkujeme za tvůj dar na {product_name}",
"body": "Ahoj,\n\nDěkujeme za tvůj dar pro {product_name}! Tvůj {interval, select,\n month {opakovaný dar}\n year {opakovaný dar}\n other {jednorázový dar}\n} byl {interval, select,\n month {nastaven}\n year {nastaven}\n other {zpracován}\n} úspěšně.\n\nPodrobnosti o daru:\nČástka: {amount} {currency} {interval, select,\n month {měsíčně}\n year {ročně}\n other {}\n}\n\nStripe ti brzy zašle samostatnou účtenku s PDF fakturou. Ta obsahuje všechny platební údaje a může být použita pro daňové účely.\n\nHistorii svých darů, stahování faktur {interval, select,\n month {a správu nebo zrušení předplatného}\n year {a správu nebo zrušení předplatného}\n other {a správu budoucích darů}\n} můžeš kdykoli zobrazit pomocí tohoto odkazu:\n\n{manageUrl}\n\nTvá podpora pomáhá udržovat {product_name} v chodu. Děkujeme!\n\n– Tým {product_name}"
},
"donation_magic_link": {
"subject": "Spravuj své dary pro {product_name}",
"body": "Ahoj,\n\nKlikni na odkaz níže pro přístup k portálu pro dárce:\n\n{manageUrl}\n\nV portálu můžeš spravovat předplatná, stahovat faktury a prohlížet si historii svých darů.\n\nTento odkaz vyprší dne {expiresAt, date, full} v {expiresAt, time, short}.\n\nPokud jsi tento odkaz nepožadoval, můžeš tento e-mail klidně ignorovat.\n\n– Tým {product_name}"
},
"dsa_report_verification": {
"subject": "Ověř svůj e-mail pro nahlášení podle DSA",
"body": "Ahoj,\n\nPoužij ověřovací kód níže k odeslání svého nahlášení podle zákona o digitálních službách na {product_name}:\n\n{code}\n\nTento kód vyprší dne {expiresAt, date, full} v {expiresAt, time, short}.\n\nPokud jsi o to nežádal, můžeš tento e-mail ignorovat.\n\n– Bezpečnostní tým {product_name}"
},
"email_change_new": {
"subject": "Ověř svůj nový e-mail pro {product_name}",
"body": "Ahoj {username},\n\nZadej tento kód do aplikace pro ověření tvého nového e-mailu pro {product_name}:\n\n{code}\n\nTento kód vyprší dne {expiresAt, date, full} v {expiresAt, time, short}.\n\nPokud jsi o to nežádal, můžeš tento e-mail ignorovat.\n\n– Tým {product_name}"
},
"email_change_original": {
"subject": "Potvrď změnu e-mailu pro {product_name}",
"body": "Ahoj {username},\n\nObdrželi jsme požadavek na změnu e-mailové adresy tvého účtu {product_name}.\n\nPro potvrzení této změny zadej tento kód do aplikace:\n\n{code}\n\nTento kód vyprší dne {expiresAt, date, full} v {expiresAt, time, short}.\n\nPokud jsi o to nežádal, zabezpeč si svůj účet ihned.\n\n– Tým {product_name}"
},
"email_change_revert": {
"subject": "Tvůj e-mail pro {product_name} byl změněn",
"body": "Ahoj {username},\n\nE-mailová adresa tvého účtu {product_name} byla změněna na {newEmail}.\n\nPokud jsi tuto změnu provedl ty, není potřeba žádná akce. Pokud ne, můžeš změnu vrátit zpět a zabezpečit svůj účet pomocí tohoto odkazu:\n\n{revertUrl}\n\nTím se obnoví tvůj předchozí e-mail, odhlásíš se všude, odstraní se propojená telefonní čísla, deaktivuje se MFA a budeš muset nastavit nové heslo.\n\n– Bezpečnostní tým {product_name}"
},
"email_verification": {
"subject": "Ověř svou e-mailovou adresu pro {product_name}",
"body": "Ahoj {username},\n\nOvěř e-mailovou adresu svého účtu {product_name} kliknutím na odkaz níže:\n\n{verifyUrl}\n\nPokud jsi si účet {product_name} nevytvořil, můžeš tento e-mail klidně ignorovat.\n\nTento odkaz je platný 24 hodin.\n\n– Tým {product_name}"
},
"gift_chargeback_notification": {
"subject": "Výhody z uplatněného dárku byly odstraněny",
"body": "Ahoj {username},\n\nDárkový kód, který jsi uplatnil, byl původně zaplacen někým jiným. Tato platba byla mezitím zrušena (chargeback).\n\nZ tohoto důvodu jsme odstranili výhody, které byly přidány k tvému účtu, když jsi dárek uplatnil.\n\nPokud si myslíš, že se jedná o chybu, kontaktuj prosím náš tým podpory a uveď veškeré podrobnosti, které máš o dárkovém kódu a o tom, kdy jsi ho uplatnil.\n\n– Tým {product_name}"
},
"harvest_completed": {
"subject": "Export tvých dat z {product_name} je připraven ke stažení",
"body": "Ahoj {username},\n\nTvůj export dat je připraven.\n\nOdkaz ke stažení:\n{downloadUrl}\n\nZahrnuté zprávy: {totalMessages, number}\nVelikost souboru: {fileSizeMB, number} MB\n\nTento odkaz vyprší dne {expiresAt, date, full} v {expiresAt, time, short}.\n\nPokud jsi o tento export nežádal, okamžitě si změň heslo a kontaktuj náš tým podpory.\n\n– Tým {product_name}"
},
"inactivity_warning": {
"subject": "Tvůj účet {product_name} bude smazán kvůli neaktivitě",
"body": "Ahoj {username},\n\nNezaznamenali jsme žádnou aktivitu na tvém účtu {product_name} od {lastActiveDate, date, full}.\n\nPokud se nepřihlásíš do {deletionDate, date, full} v {deletionDate, time, short}, tvůj účet bude trvale smazán kvůli neaktivitě.\n\nPřihlas se zde:\n{loginUrl}\n\nPokud jsi {product_name} nedávno používal, kontaktuj náš tým podpory ihned.\n\n– Tým {product_name}"
},
"ip_authorization": {
"subject": "Povolit přihlášení z nové IP adresy",
"body": "Ahoj {username},\n\nZaznamenali jsme pokus o přihlášení k tvému účtu {product_name} z nové IP adresy:\n\nIP adresa: {ipAddress}\nPoloha: {location}\n\nPokud jsi to byl ty, autorizuj tuto IP adresu kliknutím na odkaz níže:\n\n{authUrl}\n\nPokud jsi se nepřihlašoval, okamžitě si změň heslo.\n\nTento odkaz je platný 30 minut.\n\n– Tým {product_name}"
},
"password_change_verification": {
"subject": "Potvrď změnu hesla k {product_name}",
"body": "Ahoj {username},\n\nObdrželi jsme požadavek na změnu hesla k tvému účtu pro {product_name}.\n\nPro potvrzení této změny zadej tento kód do aplikace:\n\n{code}\n\nTento kód vyprší v {expiresAt}.\n\nPokud jsi o to nežádal, někdo může mít přístup k tvému účtu. Okamžitě si změň heslo a povol dvoufaktorové ověřování.\n\n– Tým {product_name}"
},
"password_reset": {
"subject": "Obnov své heslo k {product_name}",
"body": "Ahoj {username},\n\nPožádal jsi o reset hesla pro {product_name}. Použij odkaz níže pro nastavení nového hesla:\n\n{resetUrl}\n\nPokud jsi o to nežádal, můžeš tento e-mail klidně ignorovat.\n\nTento odkaz je platný 1 hodinu.\n\n– Tým {product_name}"
},
"registration_approved": {
"subject": "Tvá registrace k {product_name} byla schválena",
"body": "Ahoj {username},\n\nDobré zprávy: tvá registrace do {product_name} byla schválena.\n\nNyní se můžeš přihlásit do aplikace {product_name} zde:\n{channelsUrl}\n\nVítej v komunitě {product_name}.\n\n– Tým {product_name}"
},
"report_resolved": {
"subject": "Tvé nahlášení pro {product_name} bylo zkontrolováno",
"body": "Ahoj {username},\n\nTvé nahlášení (ID: {reportId}) bylo zkontrolováno naším bezpečnostním týmem.{hasComment, select, yes {\n\nOdpověď od bezpečnostního týmu:\n{publicComment}} other {}}\n\nDěkujeme, že pomáháš udržovat {product_name} bezpečný pro všechny. Všechna nahlášení bereme vážně a oceňujeme tvůj příspěvek komunitě.\n\nPokud máš jakékoli dotazy nebo obavy ohledně tohoto výsledku, kontaktuj {safety_email}.\n\n– Bezpečnostní tým {product_name}"
},
"scheduled_deletion_notification": {
"subject": "Tvůj účet {product_name} bude trvale smazán",
"body": "Ahoj {username},\n\nTvůj účet {product_name} byl naplánován k trvalému smazání.\n\nNaplánované smazání: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Důvod: {reason}}\n}\n\nJedná se o závažné opatření. Tvá data účtu budou trvale smazána v naplánovaný den.\n\nPokud se domníváš, že toto rozhodnutí o vynucení bylo nesprávné, můžeš podat odvolání. Odešli e-mail na {appeals_email} z této e-mailové adresy.\n\n– Bezpečnostní tým {product_name}"
},
"self_deletion_scheduled": {
"subject": "Smazání tvého účtu {product_name} je naplánováno",
"body": "Ahoj {username},\n\nPožádal jsi o smazání svého účtu {product_name}. Tvůj účet je naplánován k trvalému smazání na:\n\n{deletionDate, date, full} v {deletionDate, time, short}\n\nPokud jsi to nepožadoval, přihlas se ke svému účtu a zruš smazání. Doporučujeme také změnit si heslo pro zabezpečení účtu.\n\n– Tým {product_name}"
},
"unban_notification": {
"subject": "Pozastavení tvého účtu {product_name} bylo zrušeno",
"body": "Ahoj {username},\n\nDobré zprávy: pozastavení tvého účtu {product_name} bylo zrušeno.\n\n{reason, select,\n null {}\n other {Důvod: {reason}}\n}\n\nNyní se můžeš znovu přihlásit a pokračovat v používání {product_name} jako obvykle.\n\n– Bezpečnostní tým {product_name}"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "Din {product_name}-konto er midlertidigt deaktiveret",
"body": "Hej {username},\n\nVi har midlertidigt deaktiveret din {product_name}-konto, fordi vi har registreret mistænkelig aktivitet.\n\n{reason, select,\n null {}\n other {Årsag: {reason}}\n}\n\nFor at få adgang til din konto igen skal du nulstille din adgangskode:\n\n{forgotUrl}\n\nNår du har nulstillet din adgangskode, kan du logge ind igen.\n\nHvis du mener, at dette er sket ved en fejl, kan du kontakte vores supportteam.\n\n– {product_name} Safety Team"
},
"account_scheduled_deletion": {
"subject": "Din {product_name}-konto slettes permanent",
"body": "Hej {username},\n\nDin {product_name}-konto er planlagt til permanent sletning på grund af overtrædelser af vores servicevilkår eller retningslinjer for community'et.\n\nPlanlagt sletning: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Årsag: {reason}}\n}\n\nDette er en alvorlig håndhævelseshandling. Dine kontodata bliver permanent slettet på den planlagte dato.\n\nGennemgå:\n- Servicevilkår: {termsUrl}\n- Retningslinjer for community'et: {guidelinesUrl}\n\nAnkeproces:\nHvis du mener, at denne håndhævelsesbeslutning var forkert eller uberettiget, har du 60 dage til at indsende en anke. Send en e-mail til {appeals_email} fra denne e-mailadresse.\n\nI din anke:\n- Forklar tydeligt, hvorfor du mener, at håndhævelsesbeslutningen var forkert eller uberettiget\n- Fremlæg relevant bevis eller kontekst\n\nEt medlem af {product_name} Safety Team vil gennemgå din anke og kan sætte den afventende sletning på pause, indtil en endelig beslutning er truffet.\n\n– {product_name} Safety Team"
},
"account_temp_banned": {
"subject": "Din {product_name}-konto er midlertidigt suspenderet",
"body": "Hej {username},\n\nDin {product_name}-konto er midlertidigt suspenderet for at overtræde vores servicevilkår eller retningslinjer for community'et.\n\nVarighed: {durationHours, plural,\n =1 {1 time}\n other {# timer}\n}\nSuspenderet indtil: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Årsag: {reason}}\n}\n\nI denne periode vil du ikke kunne få adgang til din konto.\n\nGennemgå:\n- Servicevilkår: {termsUrl}\n- Retningslinjer for community'et: {guidelinesUrl}\n\nHvis du mener, at denne håndhævelsesbeslutning var forkert eller uberettiget, kan du indsende en anke. Send en e-mail til {appeals_email} fra denne e-mailadresse og forklar tydeligt, hvorfor du mener, at beslutningen var forkert. Vi vil gennemgå din anke og svare med vores beslutning.\n\n– {product_name} Safety Team"
},
"donation_confirmation": {
"subject": "Tak for din {product_name}-donation",
"body": "Hej,\n\nTak for din donation til {product_name}! Din {interval, select,\n month {tilbagevendende donation}\n year {tilbagevendende donation}\n other {engangsdonation}\n} er blevet {interval, select,\n month {opsat}\n year {opsat}\n other {behandlet}\n} med succes.\n\nDonationsdetaljer:\nBeløb: {amount} {currency} {interval, select,\n month {pr. måned}\n year {pr. år}\n other {}\n}\n\nStripe sender dig en separat kvittering med din faktura-PDF inden længe. Denne inkluderer alle betalingsdetaljer og kan bruges til skatteformål.\n\nDu kan til enhver tid se din donationshistorik, downloade fakturaer, {interval, select,\n month {og administrere eller annullere dit abonnement}\n year {og administrere eller annullere dit abonnement}\n other {og administrere fremtidige donationer}\n} ved at bruge dette link:\n\n{manageUrl}\n\nDin støtte hjælper med at holde {product_name} kørende. Tak!\n\n– {product_name} Team"
},
"donation_magic_link": {
"subject": "Administrer dine {product_name}-donationer",
"body": "Hej,\n\nKlik på linket nedenfor for at få adgang til din donorportal:\n\n{manageUrl}\n\nI portalen kan du administrere abonnementer, downloade fakturaer og se din donationshistorik.\n\nDette link udløber den {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nHvis du ikke har anmodet om dette link, kan du trygt ignorere denne e-mail.\n\n– {product_name} Team"
},
"dsa_report_verification": {
"subject": "Bekræft din e-mail til en DSA-rapport",
"body": "Hej,\n\nBrug bekræftelseskoden nedenfor til at indsende din Digital Services Act-rapport for {product_name}:\n\n{code}\n\nDenne kode udløber den {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nHvis du ikke har anmodet om dette, kan du ignorere denne e-mail.\n\n– {product_name} Safety Team"
},
"email_change_new": {
"subject": "Bekræft din nye {product_name}-e-mail",
"body": "Hej {username},\n\nIndtast denne kode i appen for at bekræfte din nye {product_name}-e-mail:\n\n{code}\n\nDenne kode udløber den {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nHvis du ikke har anmodet om dette, kan du ignorere denne e-mail.\n\n– {product_name} Team"
},
"email_change_original": {
"subject": "Bekræft din {product_name}-e-mail-ændring",
"body": "Hej {username},\n\nVi har modtaget en anmodning om at ændre e-mailadressen på din {product_name}-konto.\n\nFor at bekræfte denne ændring skal du indtaste denne kode i appen:\n\n{code}\n\nDenne kode udløber den {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nHvis du ikke har anmodet om dette, skal du sikre din konto med det samme.\n\n– {product_name} Team"
},
"email_change_revert": {
"subject": "Din {product_name}-e-mail blev ændret",
"body": "Hej {username},\n\nE-mailadressen på din {product_name}-konto blev ændret til {newEmail}.\n\nHvis du har foretaget denne ændring, er der ingen handling nødvendig. Hvis du ikke har, kan du fortryde ændringen og sikre din konto ved at bruge dette link:\n\n{revertUrl}\n\nDette vil gendanne din tidligere e-mail, logge dig ud overalt, fjerne tilknyttede telefonnumre, deaktivere MFA og kræve, at du indstiller en ny adgangskode.\n\n– {product_name} Safety Team"
},
"email_verification": {
"subject": "Bekræft din {product_name}-e-mailadresse",
"body": "Hej {username},\n\nBekræft e-mailadressen for din {product_name}-konto ved at klikke på linket nedenfor:\n\n{verifyUrl}\n\nHvis du ikke har oprettet en {product_name}-konto, kan du trygt ignorere denne e-mail.\n\nDette link er gyldigt i 24 timer.\n\n– {product_name} Team"
},
"gift_chargeback_notification": {
"subject": "Fordele fra din indløste gave er fjernet",
"body": "Hej {username},\n\nEn gavekode, du indløste, blev oprindeligt betalt af en anden. Den betaling er siden annulleret (en tilbageførsel).\n\nDerfor har vi fjernet de fordele, der blev tilføjet din konto, da du indløste gaven.\n\nHvis du mener, at dette er en fejl, kan du kontakte vores supportteam og oplyse alle detaljer, du har om gavekoden, og hvornår du indløste den.\n\n– {product_name} Team"
},
"harvest_completed": {
"subject": "Din {product_name}-dataeksport er klar til at downloade",
"body": "Hej {username},\n\nDin dataeksport er klar.\n\nDownload-link:\n{downloadUrl}\n\nAntal beskeder: {totalMessages, number}\nFilstørrelse: {fileSizeMB, number} MB\n\nDette link udløber den {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nHvis du ikke har anmodet om denne eksport, skal du straks ændre din adgangskode og kontakte vores supportteam.\n\n– {product_name} Team"
},
"inactivity_warning": {
"subject": "Din {product_name}-konto slettes på grund af inaktivitet",
"body": "Hej {username},\n\nVi har ikke set nogen aktivitet på din {product_name}-konto siden {lastActiveDate, date, full}.\n\nHvis du ikke logger ind inden {deletionDate, date, full} kl. {deletionDate, time, short}, slettes din konto permanent på grund af inaktivitet.\n\nLog ind her:\n{loginUrl}\n\nHvis du har brugt {product_name} for nylig, skal du kontakte vores supportteam med det samme.\n\n– {product_name} Team"
},
"ip_authorization": {
"subject": "Godkend login fra en ny IP-adresse",
"body": "Hej {username},\n\nVi har registreret et login-forsøg på din {product_name}-konto fra en ny IP-adresse:\n\nIP-adresse: {ipAddress}\nSted: {location}\n\nHvis dette var dig, skal du godkende denne IP-adresse ved at klikke på linket nedenfor:\n\n{authUrl}\n\nHvis du ikke har forsøgt at logge ind, skal du straks ændre din adgangskode.\n\nDette link er gyldigt i 30 minutter.\n\n– {product_name} Team"
},
"password_change_verification": {
"subject": "Bekræft din {product_name}-adgangskodeændring",
"body": "Hej {username},\n\nVi har modtaget en anmodning om at ændre adgangskoden på din {product_name}-konto.\n\nFor at bekræfte denne ændring skal du indtaste denne kode i appen:\n\n{code}\n\nDenne kode udløber kl. {expiresAt}.\n\nHvis du ikke har anmodet om dette, har nogen muligvis adgang til din konto. Skift din adgangskode med det samme, og aktiver totrinsgodkendelse.\n\n– {product_name} Team"
},
"password_reset": {
"subject": "Nulstil din {product_name}-adgangskode",
"body": "Hej {username},\n\nDu har anmodet om at nulstille din {product_name}-adgangskode. Brug linket nedenfor til at indstille en ny adgangskode:\n\n{resetUrl}\n\nHvis du ikke har anmodet om dette, kan du trygt ignorere denne e-mail.\n\nDette link er gyldigt i 1 time.\n\n– {product_name} Team"
},
"registration_approved": {
"subject": "Din {product_name}-registrering er godkendt",
"body": "Hej {username},\n\nGode nyheder: Din {product_name}-registrering er godkendt.\n\nDu kan nu logge ind på {product_name}-appen her:\n{channelsUrl}\n\nVelkommen til {product_name}-community'et.\n\n– {product_name} Team"
},
"report_resolved": {
"subject": "Din {product_name}-rapport er gennemgået",
"body": "Hej {username},\n\nDin rapport (ID: {reportId}) er gennemgået af vores Safety Team.{hasComment, select, yes {\n\nSvar fra Safety Team:\n{publicComment}} other {}}\n\nTak for din hjælp til at holde {product_name} sikkert for alle. Vi tager alle rapporter alvorligt og værdsætter dit bidrag til community'et.\n\nHvis du har spørgsmål eller bekymringer vedrørende dette resultat, kan du kontakte {safety_email}.\n\n– {product_name} Safety Team"
},
"scheduled_deletion_notification": {
"subject": "Din {product_name}-konto slettes permanent",
"body": "Hej {username},\n\nDin {product_name}-konto er planlagt til permanent sletning.\n\nPlanlagt sletning: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Årsag: {reason}}\n}\n\nDette er en alvorlig håndhævelseshandling. Dine kontodata bliver permanent slettet på den planlagte dato.\n\nHvis du mener, at denne håndhævelsesbeslutning var forkert, kan du indsende en anke. Send en e-mail til {appeals_email} fra denne e-mailadresse.\n\n– {product_name} Safety Team"
},
"self_deletion_scheduled": {
"subject": "Din {product_name}-kontosletning er planlagt",
"body": "Hej {username},\n\nDu har anmodet om at slette din {product_name}-konto. Din konto slettes permanent den:\n\n{deletionDate, date, full} kl. {deletionDate, time, short}\n\nHvis du ikke har anmodet om dette, skal du logge ind på din konto for at annullere sletningen. Vi anbefaler også, at du ændrer din adgangskode for at sikre din konto.\n\n– {product_name} Team"
},
"unban_notification": {
"subject": "Din {product_name}-kontosuspension er ophævet",
"body": "Hej {username},\n\nGode nyheder: Din {product_name}-kontosuspension er ophævet.\n\n{reason, select,\n null {}\n other {Årsag: {reason}}\n}\n\nDu kan nu logge ind igen og fortsætte med at bruge {product_name} som normalt.\n\n– {product_name} Safety Team"
}
"account_disabled_suspicious": {
"subject": "Din {product_name}-konto er midlertidigt deaktiveret",
"body": "Hej {username},\n\nVi har midlertidigt deaktiveret din {product_name}-konto, fordi vi har registreret mistænkelig aktivitet.\n\n{reason, select,\n null {}\n other {Årsag: {reason}}\n}\n\nFor at få adgang til din konto igen skal du nulstille din adgangskode:\n\n{forgotUrl}\n\nNår du har nulstillet din adgangskode, kan du logge ind igen.\n\nHvis du mener, at dette er sket ved en fejl, kan du kontakte vores supportteam.\n\n– {product_name} Safety Team"
},
"account_scheduled_deletion": {
"subject": "Din {product_name}-konto slettes permanent",
"body": "Hej {username},\n\nDin {product_name}-konto er planlagt til permanent sletning på grund af overtrædelser af vores servicevilkår eller retningslinjer for community'et.\n\nPlanlagt sletning: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Årsag: {reason}}\n}\n\nDette er en alvorlig håndhævelseshandling. Dine kontodata bliver permanent slettet på den planlagte dato.\n\nGennemgå:\n- Servicevilkår: {termsUrl}\n- Retningslinjer for community'et: {guidelinesUrl}\n\nAnkeproces:\nHvis du mener, at denne håndhævelsesbeslutning var forkert eller uberettiget, har du 60 dage til at indsende en anke. Send en e-mail til {appeals_email} fra denne e-mailadresse.\n\nI din anke:\n- Forklar tydeligt, hvorfor du mener, at håndhævelsesbeslutningen var forkert eller uberettiget\n- Fremlæg relevant bevis eller kontekst\n\nEt medlem af {product_name} Safety Team vil gennemgå din anke og kan sætte den afventende sletning på pause, indtil en endelig beslutning er truffet.\n\n– {product_name} Safety Team"
},
"account_temp_banned": {
"subject": "Din {product_name}-konto er midlertidigt suspenderet",
"body": "Hej {username},\n\nDin {product_name}-konto er midlertidigt suspenderet for at overtræde vores servicevilkår eller retningslinjer for community'et.\n\nVarighed: {durationHours, plural,\n =1 {1 time}\n other {# timer}\n}\nSuspenderet indtil: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Årsag: {reason}}\n}\n\nI denne periode vil du ikke kunne få adgang til din konto.\n\nGennemgå:\n- Servicevilkår: {termsUrl}\n- Retningslinjer for community'et: {guidelinesUrl}\n\nHvis du mener, at denne håndhævelsesbeslutning var forkert eller uberettiget, kan du indsende en anke. Send en e-mail til {appeals_email} fra denne e-mailadresse og forklar tydeligt, hvorfor du mener, at beslutningen var forkert. Vi vil gennemgå din anke og svare med vores beslutning.\n\n– {product_name} Safety Team"
},
"donation_confirmation": {
"subject": "Tak for din {product_name}-donation",
"body": "Hej,\n\nTak for din donation til {product_name}! Din {interval, select,\n month {tilbagevendende donation}\n year {tilbagevendende donation}\n other {engangsdonation}\n} er blevet {interval, select,\n month {opsat}\n year {opsat}\n other {behandlet}\n} med succes.\n\nDonationsdetaljer:\nBeløb: {amount} {currency} {interval, select,\n month {pr. måned}\n year {pr. år}\n other {}\n}\n\nStripe sender dig en separat kvittering med din faktura-PDF inden længe. Denne inkluderer alle betalingsdetaljer og kan bruges til skatteformål.\n\nDu kan til enhver tid se din donationshistorik, downloade fakturaer, {interval, select,\n month {og administrere eller annullere dit abonnement}\n year {og administrere eller annullere dit abonnement}\n other {og administrere fremtidige donationer}\n} ved at bruge dette link:\n\n{manageUrl}\n\nDin støtte hjælper med at holde {product_name} kørende. Tak!\n\n– {product_name} Team"
},
"donation_magic_link": {
"subject": "Administrer dine {product_name}-donationer",
"body": "Hej,\n\nKlik på linket nedenfor for at få adgang til din donorportal:\n\n{manageUrl}\n\nI portalen kan du administrere abonnementer, downloade fakturaer og se din donationshistorik.\n\nDette link udløber den {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nHvis du ikke har anmodet om dette link, kan du trygt ignorere denne e-mail.\n\n– {product_name} Team"
},
"dsa_report_verification": {
"subject": "Bekræft din e-mail til en DSA-rapport",
"body": "Hej,\n\nBrug bekræftelseskoden nedenfor til at indsende din Digital Services Act-rapport for {product_name}:\n\n{code}\n\nDenne kode udløber den {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nHvis du ikke har anmodet om dette, kan du ignorere denne e-mail.\n\n– {product_name} Safety Team"
},
"email_change_new": {
"subject": "Bekræft din nye {product_name}-e-mail",
"body": "Hej {username},\n\nIndtast denne kode i appen for at bekræfte din nye {product_name}-e-mail:\n\n{code}\n\nDenne kode udløber den {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nHvis du ikke har anmodet om dette, kan du ignorere denne e-mail.\n\n– {product_name} Team"
},
"email_change_original": {
"subject": "Bekræft din {product_name}-e-mail-ændring",
"body": "Hej {username},\n\nVi har modtaget en anmodning om at ændre e-mailadressen på din {product_name}-konto.\n\nFor at bekræfte denne ændring skal du indtaste denne kode i appen:\n\n{code}\n\nDenne kode udløber den {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nHvis du ikke har anmodet om dette, skal du sikre din konto med det samme.\n\n– {product_name} Team"
},
"email_change_revert": {
"subject": "Din {product_name}-e-mail blev ændret",
"body": "Hej {username},\n\nE-mailadressen på din {product_name}-konto blev ændret til {newEmail}.\n\nHvis du har foretaget denne ændring, er der ingen handling nødvendig. Hvis du ikke har, kan du fortryde ændringen og sikre din konto ved at bruge dette link:\n\n{revertUrl}\n\nDette vil gendanne din tidligere e-mail, logge dig ud overalt, fjerne tilknyttede telefonnumre, deaktivere MFA og kræve, at du indstiller en ny adgangskode.\n\n– {product_name} Safety Team"
},
"email_verification": {
"subject": "Bekræft din {product_name}-e-mailadresse",
"body": "Hej {username},\n\nBekræft e-mailadressen for din {product_name}-konto ved at klikke på linket nedenfor:\n\n{verifyUrl}\n\nHvis du ikke har oprettet en {product_name}-konto, kan du trygt ignorere denne e-mail.\n\nDette link er gyldigt i 24 timer.\n\n– {product_name} Team"
},
"gift_chargeback_notification": {
"subject": "Fordele fra din indløste gave er fjernet",
"body": "Hej {username},\n\nEn gavekode, du indløste, blev oprindeligt betalt af en anden. Den betaling er siden annulleret (en tilbageførsel).\n\nDerfor har vi fjernet de fordele, der blev tilføjet din konto, da du indløste gaven.\n\nHvis du mener, at dette er en fejl, kan du kontakte vores supportteam og oplyse alle detaljer, du har om gavekoden, og hvornår du indløste den.\n\n– {product_name} Team"
},
"harvest_completed": {
"subject": "Din {product_name}-dataeksport er klar til at downloade",
"body": "Hej {username},\n\nDin dataeksport er klar.\n\nDownload-link:\n{downloadUrl}\n\nAntal beskeder: {totalMessages, number}\nFilstørrelse: {fileSizeMB, number} MB\n\nDette link udløber den {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nHvis du ikke har anmodet om denne eksport, skal du straks ændre din adgangskode og kontakte vores supportteam.\n\n– {product_name} Team"
},
"inactivity_warning": {
"subject": "Din {product_name}-konto slettes på grund af inaktivitet",
"body": "Hej {username},\n\nVi har ikke set nogen aktivitet på din {product_name}-konto siden {lastActiveDate, date, full}.\n\nHvis du ikke logger ind inden {deletionDate, date, full} kl. {deletionDate, time, short}, slettes din konto permanent på grund af inaktivitet.\n\nLog ind her:\n{loginUrl}\n\nHvis du har brugt {product_name} for nylig, skal du kontakte vores supportteam med det samme.\n\n– {product_name} Team"
},
"ip_authorization": {
"subject": "Godkend login fra en ny IP-adresse",
"body": "Hej {username},\n\nVi har registreret et login-forsøg på din {product_name}-konto fra en ny IP-adresse:\n\nIP-adresse: {ipAddress}\nSted: {location}\n\nHvis dette var dig, skal du godkende denne IP-adresse ved at klikke på linket nedenfor:\n\n{authUrl}\n\nHvis du ikke har forsøgt at logge ind, skal du straks ændre din adgangskode.\n\nDette link er gyldigt i 30 minutter.\n\n– {product_name} Team"
},
"password_change_verification": {
"subject": "Bekræft din {product_name}-adgangskodeændring",
"body": "Hej {username},\n\nVi har modtaget en anmodning om at ændre adgangskoden på din {product_name}-konto.\n\nFor at bekræfte denne ændring skal du indtaste denne kode i appen:\n\n{code}\n\nDenne kode udløber kl. {expiresAt}.\n\nHvis du ikke har anmodet om dette, har nogen muligvis adgang til din konto. Skift din adgangskode med det samme, og aktiver totrinsgodkendelse.\n\n– {product_name} Team"
},
"password_reset": {
"subject": "Nulstil din {product_name}-adgangskode",
"body": "Hej {username},\n\nDu har anmodet om at nulstille din {product_name}-adgangskode. Brug linket nedenfor til at indstille en ny adgangskode:\n\n{resetUrl}\n\nHvis du ikke har anmodet om dette, kan du trygt ignorere denne e-mail.\n\nDette link er gyldigt i 1 time.\n\n– {product_name} Team"
},
"registration_approved": {
"subject": "Din {product_name}-registrering er godkendt",
"body": "Hej {username},\n\nGode nyheder: Din {product_name}-registrering er godkendt.\n\nDu kan nu logge ind på {product_name}-appen her:\n{channelsUrl}\n\nVelkommen til {product_name}-community'et.\n\n– {product_name} Team"
},
"report_resolved": {
"subject": "Din {product_name}-rapport er gennemgået",
"body": "Hej {username},\n\nDin rapport (ID: {reportId}) er gennemgået af vores Safety Team.{hasComment, select, yes {\n\nSvar fra Safety Team:\n{publicComment}} other {}}\n\nTak for din hjælp til at holde {product_name} sikkert for alle. Vi tager alle rapporter alvorligt og værdsætter dit bidrag til community'et.\n\nHvis du har spørgsmål eller bekymringer vedrørende dette resultat, kan du kontakte {safety_email}.\n\n– {product_name} Safety Team"
},
"scheduled_deletion_notification": {
"subject": "Din {product_name}-konto slettes permanent",
"body": "Hej {username},\n\nDin {product_name}-konto er planlagt til permanent sletning.\n\nPlanlagt sletning: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Årsag: {reason}}\n}\n\nDette er en alvorlig håndhævelseshandling. Dine kontodata bliver permanent slettet på den planlagte dato.\n\nHvis du mener, at denne håndhævelsesbeslutning var forkert, kan du indsende en anke. Send en e-mail til {appeals_email} fra denne e-mailadresse.\n\n– {product_name} Safety Team"
},
"self_deletion_scheduled": {
"subject": "Din {product_name}-kontosletning er planlagt",
"body": "Hej {username},\n\nDu har anmodet om at slette din {product_name}-konto. Din konto slettes permanent den:\n\n{deletionDate, date, full} kl. {deletionDate, time, short}\n\nHvis du ikke har anmodet om dette, skal du logge ind på din konto for at annullere sletningen. Vi anbefaler også, at du ændrer din adgangskode for at sikre din konto.\n\n– {product_name} Team"
},
"unban_notification": {
"subject": "Din {product_name}-kontosuspension er ophævet",
"body": "Hej {username},\n\nGode nyheder: Din {product_name}-kontosuspension er ophævet.\n\n{reason, select,\n null {}\n other {Årsag: {reason}}\n}\n\nDu kan nu logge ind igen og fortsætte med at bruge {product_name} som normalt.\n\n– {product_name} Safety Team"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "Ο λογαριασμός σου στο {product_name} έχει απενεργοποιηθεί προσωρινά",
"body": "Γεια σου {username},\n\nΑπενεργοποιήσαμε προσωρινά τον λογαριασμό σου στο {product_name} επειδή εντοπίσαμε ύποπτη δραστηριότητα.\n\n{reason, select,\n null {}\n other {Λόγος: {reason}}\n}\n\nΓια να αποκτήσεις ξανά πρόσβαση στον λογαριασμό σου, θα πρέπει να επαναφέρεις τον κωδικό πρόσβασής σου:\n\n{forgotUrl}\n\nΑφού επαναφέρεις τον κωδικό πρόσβασής σου, θα μπορείς να συνδεθείς ξανά.\n\nΕάν πιστεύεις ότι αυτό έγινε κατά λάθος, επικοινώνησε με την ομάδα υποστήριξής μας.\n\n– Ομάδα Ασφαλείας {product_name}"
},
"account_scheduled_deletion": {
"subject": "Ο λογαριασμός σου στο {product_name} θα διαγραφεί οριστικά",
"body": "Γεια σου {username},\n\nΟ λογαριασμός σου στο {product_name} έχει προγραμματιστεί για οριστική διαγραφή λόγω παραβιάσεων των Όρων Παροχής Υπηρεσιών ή των Οδηγιών Κοινότητας.\n\nΠρογραμματισμένη διαγραφή: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Λόγος: {reason}}\n}\n\nΠρόκειται για ένα σοβαρό μέτρο. Τα δεδομένα του λογαριασμού σου θα διαγραφούν οριστικά την προγραμματισμένη ημερομηνία.\n\nΈλεγξε:\n- Όροι Παροχής Υπηρεσιών: {termsUrl}\n- Οδηγίες Κοινότητας: {guidelinesUrl}\n\nΔιαδικασία προσφυγής:\nΕάν πιστεύεις ότι αυτή η απόφαση ήταν λανθασμένη ή αδικαιολόγητη, έχεις 60 ημέρες για να υποβάλεις προσφυγή. Στείλε email στο {appeals_email} από αυτήν τη διεύθυνση email.\n\nΣτην προσφυγή σου:\n- Εξήγησε σαφώς γιατί πιστεύεις ότι η απόφαση ήταν λανθασμένη ή αδικαιολόγητη\n- Παράθεσε τυχόν σχετικά αποδεικτικά στοιχεία ή πλαίσιο\n\nΈνα μέλος της Ομάδας Ασφαλείας του {product_name} θα εξετάσει την προσφυγή σου και ενδέχεται να αναστείλει την εκκρεμή διαγραφή μέχρι να ληφθεί μια τελική απόφαση.\n\n– Ομάδα Ασφαλείας {product_name}"
},
"account_temp_banned": {
"subject": "Ο λογαριασμός σου στο {product_name} έχει ανασταλεί προσωρινά",
"body": "Γεια σου {username},\n\nΟ λογαριασμός σου στο {product_name} έχει ανασταλεί προσωρινά για παραβίαση των Όρων Παροχής Υπηρεσιών ή των Οδηγιών Κοινότητας.\n\nΔιάρκεια: {durationHours, plural,\n =1 {μία ώρα}\n other {# ώρες}\n}\nΑναστολή μέχρι: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Λόγος: {reason}}\n}\n\nΚατά τη διάρκεια αυτής της περιόδου, δεν θα μπορείς να έχεις πρόσβαση στον λογαριασμό σου.\n\nΈλεγξε:\n- Όροι Παροχής Υπηρεσιών: {termsUrl}\n- Οδηγίες Κοινότητας: {guidelinesUrl}\n\nΕάν πιστεύεις ότι αυτή η απόφαση ήταν λανθασμένη ή αδικαιολόγητη, μπορείς να υποβάλεις προσφυγή. Στείλε email στο {appeals_email} από αυτήν τη διεύθυνση email και εξήγησε σαφώς γιατί πιστεύεις ότι η απόφαση ήταν λανθασμένη. Θα εξετάσουμε την προσφυγή σου και θα απαντήσουμε με την απόφασή μας.\n\n– Ομάδα Ασφαλείας {product_name}"
},
"donation_confirmation": {
"subject": "Ευχαριστούμε για τη δωρεά σου στο {product_name}",
"body": "Γεια σου,\n\nΕυχαριστούμε για τη δωρεά σου στο {product_name}! Η {interval, select,\n month {επαναλαμβανόμενη δωρεά}\n year {επαναλαμβανόμενη δωρεά}\n other {εφάπαξ δωρεά}\n} σου έχει {interval, select,\n month {ρυθμιστεί}\n year {ρυθμιστεί}\n other {επεξεργαστεί}\n} επιτυχώς.\n\nΛεπτομέρειες δωρεάς:\nΠοσό: {amount} {currency} {interval, select,\n month {ανά μήνα}\n year {ανά έτος}\n other {}\n}\n\nΗ Stripe θα σου στείλει σύντομα μια ξεχωριστή απόδειξη με το PDF του τιμολογίου σου. Αυτό περιλαμβάνει όλες τις λεπτομέρειες πληρωμής και μπορεί να χρησιμοποιηθεί για φορολογικούς σκοπούς.\n\nΜπορείς να δεις το ιστορικό των δωρεών σου, να κατεβάσεις τιμολόγια, {interval, select,\n month {και να διαχειριστείς ή να ακυρώσεις τη συνδρομή σου}\n year {και να διαχειριστείς ή να ακυρώσεις τη συνδρομή σου}\n other {και να διαχειριστείς μελλοντικές δωρεές}\n} ανά πάσα στιγμή χρησιμοποιώντας αυτόν τον σύνδεσμο:\n\n{manageUrl}\n\nΗ υποστήριξή σου βοηθάει το {product_name} να συνεχίσει να λειτουργεί. Ευχαριστούμε!\n\n– Ομάδα {product_name}"
},
"donation_magic_link": {
"subject": "Διαχείριση των δωρεών σου στο {product_name}",
"body": "Γεια σου,\n\nΚάνε κλικ στον παρακάτω σύνδεσμο για να αποκτήσεις πρόσβαση στην πύλη δωρητών σου:\n\n{manageUrl}\n\nΣτην πύλη, μπορείς να διαχειριστείς τις συνδρομές, να κατεβάσεις τιμολόγια και να δεις το ιστορικό των δωρεών σου.\n\nΑυτός ο σύνδεσμος λήγει στις {expiresAt, date, full} στις {expiresAt, time, short}.\n\nΕάν δεν ζήτησες αυτόν τον σύνδεσμο, μπορείς να αγνοήσεις με ασφάλεια αυτό το email.\n\n– Ομάδα {product_name}"
},
"dsa_report_verification": {
"subject": "Επαλήθευσε το email σου για μια αναφορά DSA",
"body": "Γεια σου,\n\nΧρησιμοποίησε τον παρακάτω κωδικό επαλήθευσης για να υποβάλεις την αναφορά σου για τον Νόμο περί Ψηφιακών Υπηρεσιών στο {product_name}:\n\n{code}\n\nΑυτός ο κωδικός λήγει στις {expiresAt, date, full} στις {expiresAt, time, short}.\n\nΕάν δεν το ζήτησες, μπορείς να αγνοήσεις αυτό το email.\n\n– Ομάδα Ασφαλείας {product_name}"
},
"email_change_new": {
"subject": "Επαλήθευσε το νέο σου email στο {product_name}",
"body": "Γεια σου {username},\n\nΕισήγαγε αυτόν τον κωδικό στην εφαρμογή για να επαληθεύσεις το νέο σου email στο {product_name}:\n\n{code}\n\nΑυτός ο κωδικός λήγει στις {expiresAt, date, full} στις {expiresAt, time, short}.\n\nΕάν δεν το ζήτησες, μπορείς να αγνοήσεις αυτό το email.\n\n– Ομάδα {product_name}"
},
"email_change_original": {
"subject": "Επιβεβαίωσε την αλλαγή email στο {product_name}",
"body": "Γεια σου {username},\n\nΛάβαμε ένα αίτημα για αλλαγή της διεύθυνσης email στον λογαριασμό σου στο {product_name}.\n\nΓια να επιβεβαιώσεις αυτήν την αλλαγή, εισήγαγε αυτόν τον κωδικό στην εφαρμογή:\n\n{code}\n\nΑυτός ο κωδικός λήγει στις {expiresAt, date, full} στις {expiresAt, time, short}.\n\nΕάν δεν το ζήτησες, ασφάλισε αμέσως τον λογαριασμό σου.\n\n– Ομάδα {product_name}"
},
"email_change_revert": {
"subject": "Το email στο {product_name} άλλαξε",
"body": "Γεια σου {username},\n\nΗ διεύθυνση email του λογαριασμού σου στο {product_name} άλλαξε σε {newEmail}.\n\nΕάν έκανες αυτήν την αλλαγή, δεν απαιτείται καμία ενέργεια. Εάν όχι, μπορείς να αναιρέσεις την αλλαγή και να ασφαλίσεις τον λογαριασμό σου χρησιμοποιώντας αυτόν τον σύνδεσμο:\n\n{revertUrl}\n\nΑυτό θα επαναφέρει το προηγούμενο email σου, θα σε αποσυνδέσει από παντού, θα αφαιρέσει τους συνδεδεμένους αριθμούς τηλεφώνου, θα απενεργοποιήσει το MFA και θα απαιτήσει να ορίσεις έναν νέο κωδικό πρόσβασης.\n\n– Ομάδα Ασφαλείας {product_name}"
},
"email_verification": {
"subject": "Επαλήθευσε τη διεύθυνση email σου στο {product_name}",
"body": "Γεια σου {username},\n\nΕπαλήθευσε τη διεύθυνση email για τον λογαριασμό σου στο {product_name} κάνοντας κλικ στον παρακάτω σύνδεσμο:\n\n{verifyUrl}\n\nΕάν δεν δημιούργησες λογαριασμό στο {product_name}, μπορείς να αγνοήσεις με ασφάλεια αυτό το email.\n\nΑυτός ο σύνδεσμος ισχύει για 24 ώρες.\n\n– Ομάδα {product_name}"
},
"gift_chargeback_notification": {
"subject": "Τα προνόμια από το δώρο που εξαργύρωσες έχουν αφαιρεθεί",
"body": "Γεια σου {username},\n\nΈνας κωδικός δώρου που εξαργύρωσες πληρώθηκε αρχικά από κάποιον άλλο. Αυτή η πληρωμή έχει έκτοτε αντιστραφεί (αμφισβήτηση χρέωσης).\n\nΛόγω αυτού, αφαιρέσαμε τα προνόμια που προστέθηκαν στον λογαριασμό σου όταν εξαργύρωσες το δώρο.\n\nΕάν πιστεύεις ότι πρόκειται για λάθος, επικοινώνησε με την ομάδα υποστήριξής μας και συμπερίλαβε τυχόν λεπτομέρειες που έχεις σχετικά με τον κωδικό δώρου και πότε τον εξαργύρωσες.\n\n– Ομάδα {product_name}"
},
"harvest_completed": {
"subject": "Η εξαγωγή δεδομένων σου στο {product_name} είναι έτοιμη για λήψη",
"body": "Γεια σου {username},\n\nΗ εξαγωγή δεδομένων σου είναι έτοιμη.\n\nΣύνδεσμος λήψης:\n{downloadUrl}\n\nΣυμπεριλαμβανόμενα μηνύματα: {totalMessages, number}\nΜέγεθος αρχείου: {fileSizeMB, number} MB\n\nΑυτός ο σύνδεσμος λήγει στις {expiresAt, date, full} στις {expiresAt, time, short}.\n\nΕάν δεν ζήτησες αυτήν την εξαγωγή, άλλαξε αμέσως τον κωδικό πρόσβασής σου και επικοινώνησε με την ομάδα υποστήριξής μας.\n\n– Ομάδα {product_name}"
},
"inactivity_warning": {
"subject": "Ο λογαριασμός σου στο {product_name} θα διαγραφεί λόγω αδράνειας",
"body": "Γεια σου {username},\n\nΔεν έχουμε δει καμία δραστηριότητα στον λογαριασμό σου στο {product_name} από τις {lastActiveDate, date, full}.\n\nΕάν δεν συνδεθείς μέχρι τις {deletionDate, date, full} στις {deletionDate, time, short}, ο λογαριασμός σου θα διαγραφεί οριστικά λόγω αδράνειας.\n\nΣυνδέσου εδώ:\n{loginUrl}\n\nΕάν χρησιμοποίησες το {product_name} πρόσφατα, επικοινώνησε αμέσως με την ομάδα υποστήριξής μας.\n\n– Ομάδα {product_name}"
},
"ip_authorization": {
"subject": "Εξουσιοδότησε τη σύνδεση από μια νέα διεύθυνση IP",
"body": "Γεια σου {username},\n\nΕντοπίσαμε μια προσπάθεια σύνδεσης στον λογαριασμό σου στο {product_name} από μια νέα διεύθυνση IP:\n\nΔιεύθυνση IP: {ipAddress}\nΤοποθεσία: {location}\n\nΕάν ήσουν εσύ, εξουσιοδότησε αυτήν τη διεύθυνση IP κάνοντας κλικ στον παρακάτω σύνδεσμο:\n\n{authUrl}\n\nΕάν δεν προσπάθησες να συνδεθείς, άλλαξε αμέσως τον κωδικό πρόσβασής σου.\n\nΑυτός ο σύνδεσμος ισχύει για 30 λεπτά.\n\n– Ομάδα {product_name}"
},
"password_change_verification": {
"subject": "Επιβεβαίωσε την αλλαγή κωδικού πρόσβασης στο {product_name}",
"body": "Γεια σου {username},\n\nΛάβαμε ένα αίτημα για αλλαγή του κωδικού πρόσβασης στον λογαριασμό σου στο {product_name}.\n\nΓια να επιβεβαιώσεις αυτήν την αλλαγή, εισήγαγε αυτόν τον κωδικό στην εφαρμογή:\n\n{code}\n\nΑυτός ο κωδικός λήγει στις {expiresAt}.\n\nΕάν δεν το ζήτησες, κάποιος μπορεί να έχει πρόσβαση στον λογαριασμό σου. Άλλαξε αμέσως τον κωδικό πρόσβασής σου και ενεργοποίησε τον έλεγχο ταυτότητας δύο παραγόντων.\n\n– Ομάδα {product_name}"
},
"password_reset": {
"subject": "Επαναφορά του κωδικού πρόσβασής σου στο {product_name}",
"body": "Γεια σου {username},\n\nΖήτησες επαναφορά κωδικού πρόσβασης του {product_name}. Χρησιμοποίησε τον παρακάτω σύνδεσμο για να ορίσεις έναν νέο κωδικό πρόσβασης:\n\n{resetUrl}\n\nΕάν δεν το ζήτησες, μπορείς να αγνοήσεις με ασφάλεια αυτό το email.\n\nΑυτός ο σύνδεσμος ισχύει για 1 ώρα.\n\n– Ομάδα {product_name}"
},
"registration_approved": {
"subject": "Η εγγραφή σου στο {product_name} έχει εγκριθεί",
"body": "Γεια σου {username},\n\nΚαλά νέα: η εγγραφή σου στο {product_name} έχει εγκριθεί.\n\nΜπορείς τώρα να συνδεθείς στην εφαρμογή του {product_name} εδώ:\n{channelsUrl}\n\nΚαλώς ήρθες στην κοινότητα του {product_name}.\n\n– Ομάδα {product_name}"
},
"report_resolved": {
"subject": "Η αναφορά σου στο {product_name} έχει εξεταστεί",
"body": "Γεια σου {username},\n\nΗ αναφορά σου (ID: {reportId}) έχει εξεταστεί από την Ομάδα Ασφαλείας μας.{hasComment, select, yes {\n\nΑπάντηση από την Ομάδα Ασφαλείας:\n{publicComment}} other {}}\n\nΕυχαριστούμε που βοηθάς να διατηρήσουμε το {product_name} ασφαλές για όλους. Λαμβάνουμε όλες τις αναφορές σοβαρά υπόψη και εκτιμούμε τη συμβολή σου στην κοινότητα.\n\nΕάν έχεις οποιεσδήποτε ερωτήσεις ή ανησυχίες σχετικά με αυτό το αποτέλεσμα, επικοινώνησε με το {safety_email}.\n\n– Ομάδα Ασφαλείας {product_name}"
},
"scheduled_deletion_notification": {
"subject": "Ο λογαριασμός σου στο {product_name} θα διαγραφεί οριστικά",
"body": "Γεια σου {username},\n\nΟ λογαριασμός σου στο {product_name} έχει προγραμματιστεί για οριστική διαγραφή.\n\nΠρογραμματισμένη διαγραφή: {deletionDate, date, full} στις {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Λόγος: {reason}}\n}\n\nΠρόκειται για ένα σοβαρό μέτρο. Τα δεδομένα του λογαριασμού σου θα διαγραφούν οριστικά την προγραμματισμένη ημερομηνία.\n\nΕάν πιστεύεις ότι αυτή η απόφαση ήταν λανθασμένη, μπορείς να υποβάλεις προσφυγή. Στείλε email στο {appeals_email} από αυτήν τη διεύθυνση email.\n\n– Ομάδα Ασφαλείας {product_name}"
},
"self_deletion_scheduled": {
"subject": "Η διαγραφή του λογαριασμού σου στο {product_name} είναι προγραμματισμένη",
"body": "Γεια σου {username},\n\nΖήτησες τη διαγραφή του λογαριασμού σου στο {product_name}. Ο λογαριασμός σου έχει προγραμματιστεί για οριστική διαγραφή στις:\n\n{deletionDate, date, full} στις {deletionDate, time, short}\n\nΕάν δεν το ζήτησες, συνδέσου στον λογαριασμό σου για να ακυρώσεις τη διαγραφή. Σου συνιστούμε επίσης να αλλάξεις τον κωδικό πρόσβασής σου και να ασφαλίσεις τον λογαριασμό σου.\n\n– Ομάδα {product_name}"
},
"unban_notification": {
"subject": "Η αναστολή του λογαριασμού σου στο {product_name} έχει αρθεί",
"body": "Γεια σου {username},\n\nΚαλά νέα: η αναστολή του λογαριασμού σου στο {product_name} έχει αρθεί.\n\n{reason, select,\n null {}\n other {Λόγος: {reason}}\n}\n\nΜπορείς τώρα να συνδεθείς ξανά και να συνεχίσεις να χρησιμοποιείς το {product_name} κανονικά.\n\n– Ομάδα Ασφαλείας {product_name}"
}
"account_disabled_suspicious": {
"subject": "Ο λογαριασμός σου στο {product_name} έχει απενεργοποιηθεί προσωρινά",
"body": "Γεια σου {username},\n\nΑπενεργοποιήσαμε προσωρινά τον λογαριασμό σου στο {product_name} επειδή εντοπίσαμε ύποπτη δραστηριότητα.\n\n{reason, select,\n null {}\n other {Λόγος: {reason}}\n}\n\nΓια να αποκτήσεις ξανά πρόσβαση στον λογαριασμό σου, θα πρέπει να επαναφέρεις τον κωδικό πρόσβασής σου:\n\n{forgotUrl}\n\nΑφού επαναφέρεις τον κωδικό πρόσβασής σου, θα μπορείς να συνδεθείς ξανά.\n\nΕάν πιστεύεις ότι αυτό έγινε κατά λάθος, επικοινώνησε με την ομάδα υποστήριξής μας.\n\n– Ομάδα Ασφαλείας {product_name}"
},
"account_scheduled_deletion": {
"subject": "Ο λογαριασμός σου στο {product_name} θα διαγραφεί οριστικά",
"body": "Γεια σου {username},\n\nΟ λογαριασμός σου στο {product_name} έχει προγραμματιστεί για οριστική διαγραφή λόγω παραβιάσεων των Όρων Παροχής Υπηρεσιών ή των Οδηγιών Κοινότητας.\n\nΠρογραμματισμένη διαγραφή: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Λόγος: {reason}}\n}\n\nΠρόκειται για ένα σοβαρό μέτρο. Τα δεδομένα του λογαριασμού σου θα διαγραφούν οριστικά την προγραμματισμένη ημερομηνία.\n\nΈλεγξε:\n- Όροι Παροχής Υπηρεσιών: {termsUrl}\n- Οδηγίες Κοινότητας: {guidelinesUrl}\n\nΔιαδικασία προσφυγής:\nΕάν πιστεύεις ότι αυτή η απόφαση ήταν λανθασμένη ή αδικαιολόγητη, έχεις 60 ημέρες για να υποβάλεις προσφυγή. Στείλε email στο {appeals_email} από αυτήν τη διεύθυνση email.\n\nΣτην προσφυγή σου:\n- Εξήγησε σαφώς γιατί πιστεύεις ότι η απόφαση ήταν λανθασμένη ή αδικαιολόγητη\n- Παράθεσε τυχόν σχετικά αποδεικτικά στοιχεία ή πλαίσιο\n\nΈνα μέλος της Ομάδας Ασφαλείας του {product_name} θα εξετάσει την προσφυγή σου και ενδέχεται να αναστείλει την εκκρεμή διαγραφή μέχρι να ληφθεί μια τελική απόφαση.\n\n– Ομάδα Ασφαλείας {product_name}"
},
"account_temp_banned": {
"subject": "Ο λογαριασμός σου στο {product_name} έχει ανασταλεί προσωρινά",
"body": "Γεια σου {username},\n\nΟ λογαριασμός σου στο {product_name} έχει ανασταλεί προσωρινά για παραβίαση των Όρων Παροχής Υπηρεσιών ή των Οδηγιών Κοινότητας.\n\nΔιάρκεια: {durationHours, plural,\n =1 {μία ώρα}\n other {# ώρες}\n}\nΑναστολή μέχρι: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Λόγος: {reason}}\n}\n\nΚατά τη διάρκεια αυτής της περιόδου, δεν θα μπορείς να έχεις πρόσβαση στον λογαριασμό σου.\n\nΈλεγξε:\n- Όροι Παροχής Υπηρεσιών: {termsUrl}\n- Οδηγίες Κοινότητας: {guidelinesUrl}\n\nΕάν πιστεύεις ότι αυτή η απόφαση ήταν λανθασμένη ή αδικαιολόγητη, μπορείς να υποβάλεις προσφυγή. Στείλε email στο {appeals_email} από αυτήν τη διεύθυνση email και εξήγησε σαφώς γιατί πιστεύεις ότι η απόφαση ήταν λανθασμένη. Θα εξετάσουμε την προσφυγή σου και θα απαντήσουμε με την απόφασή μας.\n\n– Ομάδα Ασφαλείας {product_name}"
},
"donation_confirmation": {
"subject": "Ευχαριστούμε για τη δωρεά σου στο {product_name}",
"body": "Γεια σου,\n\nΕυχαριστούμε για τη δωρεά σου στο {product_name}! Η {interval, select,\n month {επαναλαμβανόμενη δωρεά}\n year {επαναλαμβανόμενη δωρεά}\n other {εφάπαξ δωρεά}\n} σου έχει {interval, select,\n month {ρυθμιστεί}\n year {ρυθμιστεί}\n other {επεξεργαστεί}\n} επιτυχώς.\n\nΛεπτομέρειες δωρεάς:\nΠοσό: {amount} {currency} {interval, select,\n month {ανά μήνα}\n year {ανά έτος}\n other {}\n}\n\nΗ Stripe θα σου στείλει σύντομα μια ξεχωριστή απόδειξη με το PDF του τιμολογίου σου. Αυτό περιλαμβάνει όλες τις λεπτομέρειες πληρωμής και μπορεί να χρησιμοποιηθεί για φορολογικούς σκοπούς.\n\nΜπορείς να δεις το ιστορικό των δωρεών σου, να κατεβάσεις τιμολόγια, {interval, select,\n month {και να διαχειριστείς ή να ακυρώσεις τη συνδρομή σου}\n year {και να διαχειριστείς ή να ακυρώσεις τη συνδρομή σου}\n other {και να διαχειριστείς μελλοντικές δωρεές}\n} ανά πάσα στιγμή χρησιμοποιώντας αυτόν τον σύνδεσμο:\n\n{manageUrl}\n\nΗ υποστήριξή σου βοηθάει το {product_name} να συνεχίσει να λειτουργεί. Ευχαριστούμε!\n\n– Ομάδα {product_name}"
},
"donation_magic_link": {
"subject": "Διαχείριση των δωρεών σου στο {product_name}",
"body": "Γεια σου,\n\nΚάνε κλικ στον παρακάτω σύνδεσμο για να αποκτήσεις πρόσβαση στην πύλη δωρητών σου:\n\n{manageUrl}\n\nΣτην πύλη, μπορείς να διαχειριστείς τις συνδρομές, να κατεβάσεις τιμολόγια και να δεις το ιστορικό των δωρεών σου.\n\nΑυτός ο σύνδεσμος λήγει στις {expiresAt, date, full} στις {expiresAt, time, short}.\n\nΕάν δεν ζήτησες αυτόν τον σύνδεσμο, μπορείς να αγνοήσεις με ασφάλεια αυτό το email.\n\n– Ομάδα {product_name}"
},
"dsa_report_verification": {
"subject": "Επαλήθευσε το email σου για μια αναφορά DSA",
"body": "Γεια σου,\n\nΧρησιμοποίησε τον παρακάτω κωδικό επαλήθευσης για να υποβάλεις την αναφορά σου για τον Νόμο περί Ψηφιακών Υπηρεσιών στο {product_name}:\n\n{code}\n\nΑυτός ο κωδικός λήγει στις {expiresAt, date, full} στις {expiresAt, time, short}.\n\nΕάν δεν το ζήτησες, μπορείς να αγνοήσεις αυτό το email.\n\n– Ομάδα Ασφαλείας {product_name}"
},
"email_change_new": {
"subject": "Επαλήθευσε το νέο σου email στο {product_name}",
"body": "Γεια σου {username},\n\nΕισήγαγε αυτόν τον κωδικό στην εφαρμογή για να επαληθεύσεις το νέο σου email στο {product_name}:\n\n{code}\n\nΑυτός ο κωδικός λήγει στις {expiresAt, date, full} στις {expiresAt, time, short}.\n\nΕάν δεν το ζήτησες, μπορείς να αγνοήσεις αυτό το email.\n\n– Ομάδα {product_name}"
},
"email_change_original": {
"subject": "Επιβεβαίωσε την αλλαγή email στο {product_name}",
"body": "Γεια σου {username},\n\nΛάβαμε ένα αίτημα για αλλαγή της διεύθυνσης email στον λογαριασμό σου στο {product_name}.\n\nΓια να επιβεβαιώσεις αυτήν την αλλαγή, εισήγαγε αυτόν τον κωδικό στην εφαρμογή:\n\n{code}\n\nΑυτός ο κωδικός λήγει στις {expiresAt, date, full} στις {expiresAt, time, short}.\n\nΕάν δεν το ζήτησες, ασφάλισε αμέσως τον λογαριασμό σου.\n\n– Ομάδα {product_name}"
},
"email_change_revert": {
"subject": "Το email στο {product_name} άλλαξε",
"body": "Γεια σου {username},\n\nΗ διεύθυνση email του λογαριασμού σου στο {product_name} άλλαξε σε {newEmail}.\n\nΕάν έκανες αυτήν την αλλαγή, δεν απαιτείται καμία ενέργεια. Εάν όχι, μπορείς να αναιρέσεις την αλλαγή και να ασφαλίσεις τον λογαριασμό σου χρησιμοποιώντας αυτόν τον σύνδεσμο:\n\n{revertUrl}\n\nΑυτό θα επαναφέρει το προηγούμενο email σου, θα σε αποσυνδέσει από παντού, θα αφαιρέσει τους συνδεδεμένους αριθμούς τηλεφώνου, θα απενεργοποιήσει το MFA και θα απαιτήσει να ορίσεις έναν νέο κωδικό πρόσβασης.\n\n– Ομάδα Ασφαλείας {product_name}"
},
"email_verification": {
"subject": "Επαλήθευσε τη διεύθυνση email σου στο {product_name}",
"body": "Γεια σου {username},\n\nΕπαλήθευσε τη διεύθυνση email για τον λογαριασμό σου στο {product_name} κάνοντας κλικ στον παρακάτω σύνδεσμο:\n\n{verifyUrl}\n\nΕάν δεν δημιούργησες λογαριασμό στο {product_name}, μπορείς να αγνοήσεις με ασφάλεια αυτό το email.\n\nΑυτός ο σύνδεσμος ισχύει για 24 ώρες.\n\n– Ομάδα {product_name}"
},
"gift_chargeback_notification": {
"subject": "Τα προνόμια από το δώρο που εξαργύρωσες έχουν αφαιρεθεί",
"body": "Γεια σου {username},\n\nΈνας κωδικός δώρου που εξαργύρωσες πληρώθηκε αρχικά από κάποιον άλλο. Αυτή η πληρωμή έχει έκτοτε αντιστραφεί (αμφισβήτηση χρέωσης).\n\nΛόγω αυτού, αφαιρέσαμε τα προνόμια που προστέθηκαν στον λογαριασμό σου όταν εξαργύρωσες το δώρο.\n\nΕάν πιστεύεις ότι πρόκειται για λάθος, επικοινώνησε με την ομάδα υποστήριξής μας και συμπερίλαβε τυχόν λεπτομέρειες που έχεις σχετικά με τον κωδικό δώρου και πότε τον εξαργύρωσες.\n\n– Ομάδα {product_name}"
},
"harvest_completed": {
"subject": "Η εξαγωγή δεδομένων σου στο {product_name} είναι έτοιμη για λήψη",
"body": "Γεια σου {username},\n\nΗ εξαγωγή δεδομένων σου είναι έτοιμη.\n\nΣύνδεσμος λήψης:\n{downloadUrl}\n\nΣυμπεριλαμβανόμενα μηνύματα: {totalMessages, number}\nΜέγεθος αρχείου: {fileSizeMB, number} MB\n\nΑυτός ο σύνδεσμος λήγει στις {expiresAt, date, full} στις {expiresAt, time, short}.\n\nΕάν δεν ζήτησες αυτήν την εξαγωγή, άλλαξε αμέσως τον κωδικό πρόσβασής σου και επικοινώνησε με την ομάδα υποστήριξής μας.\n\n– Ομάδα {product_name}"
},
"inactivity_warning": {
"subject": "Ο λογαριασμός σου στο {product_name} θα διαγραφεί λόγω αδράνειας",
"body": "Γεια σου {username},\n\nΔεν έχουμε δει καμία δραστηριότητα στον λογαριασμό σου στο {product_name} από τις {lastActiveDate, date, full}.\n\nΕάν δεν συνδεθείς μέχρι τις {deletionDate, date, full} στις {deletionDate, time, short}, ο λογαριασμός σου θα διαγραφεί οριστικά λόγω αδράνειας.\n\nΣυνδέσου εδώ:\n{loginUrl}\n\nΕάν χρησιμοποίησες το {product_name} πρόσφατα, επικοινώνησε αμέσως με την ομάδα υποστήριξής μας.\n\n– Ομάδα {product_name}"
},
"ip_authorization": {
"subject": "Εξουσιοδότησε τη σύνδεση από μια νέα διεύθυνση IP",
"body": "Γεια σου {username},\n\nΕντοπίσαμε μια προσπάθεια σύνδεσης στον λογαριασμό σου στο {product_name} από μια νέα διεύθυνση IP:\n\nΔιεύθυνση IP: {ipAddress}\nΤοποθεσία: {location}\n\nΕάν ήσουν εσύ, εξουσιοδότησε αυτήν τη διεύθυνση IP κάνοντας κλικ στον παρακάτω σύνδεσμο:\n\n{authUrl}\n\nΕάν δεν προσπάθησες να συνδεθείς, άλλαξε αμέσως τον κωδικό πρόσβασής σου.\n\nΑυτός ο σύνδεσμος ισχύει για 30 λεπτά.\n\n– Ομάδα {product_name}"
},
"password_change_verification": {
"subject": "Επιβεβαίωσε την αλλαγή κωδικού πρόσβασης στο {product_name}",
"body": "Γεια σου {username},\n\nΛάβαμε ένα αίτημα για αλλαγή του κωδικού πρόσβασης στον λογαριασμό σου στο {product_name}.\n\nΓια να επιβεβαιώσεις αυτήν την αλλαγή, εισήγαγε αυτόν τον κωδικό στην εφαρμογή:\n\n{code}\n\nΑυτός ο κωδικός λήγει στις {expiresAt}.\n\nΕάν δεν το ζήτησες, κάποιος μπορεί να έχει πρόσβαση στον λογαριασμό σου. Άλλαξε αμέσως τον κωδικό πρόσβασής σου και ενεργοποίησε τον έλεγχο ταυτότητας δύο παραγόντων.\n\n– Ομάδα {product_name}"
},
"password_reset": {
"subject": "Επαναφορά του κωδικού πρόσβασής σου στο {product_name}",
"body": "Γεια σου {username},\n\nΖήτησες επαναφορά κωδικού πρόσβασης του {product_name}. Χρησιμοποίησε τον παρακάτω σύνδεσμο για να ορίσεις έναν νέο κωδικό πρόσβασης:\n\n{resetUrl}\n\nΕάν δεν το ζήτησες, μπορείς να αγνοήσεις με ασφάλεια αυτό το email.\n\nΑυτός ο σύνδεσμος ισχύει για 1 ώρα.\n\n– Ομάδα {product_name}"
},
"registration_approved": {
"subject": "Η εγγραφή σου στο {product_name} έχει εγκριθεί",
"body": "Γεια σου {username},\n\nΚαλά νέα: η εγγραφή σου στο {product_name} έχει εγκριθεί.\n\nΜπορείς τώρα να συνδεθείς στην εφαρμογή του {product_name} εδώ:\n{channelsUrl}\n\nΚαλώς ήρθες στην κοινότητα του {product_name}.\n\n– Ομάδα {product_name}"
},
"report_resolved": {
"subject": "Η αναφορά σου στο {product_name} έχει εξεταστεί",
"body": "Γεια σου {username},\n\nΗ αναφορά σου (ID: {reportId}) έχει εξεταστεί από την Ομάδα Ασφαλείας μας.{hasComment, select, yes {\n\nΑπάντηση από την Ομάδα Ασφαλείας:\n{publicComment}} other {}}\n\nΕυχαριστούμε που βοηθάς να διατηρήσουμε το {product_name} ασφαλές για όλους. Λαμβάνουμε όλες τις αναφορές σοβαρά υπόψη και εκτιμούμε τη συμβολή σου στην κοινότητα.\n\nΕάν έχεις οποιεσδήποτε ερωτήσεις ή ανησυχίες σχετικά με αυτό το αποτέλεσμα, επικοινώνησε με το {safety_email}.\n\n– Ομάδα Ασφαλείας {product_name}"
},
"scheduled_deletion_notification": {
"subject": "Ο λογαριασμός σου στο {product_name} θα διαγραφεί οριστικά",
"body": "Γεια σου {username},\n\nΟ λογαριασμός σου στο {product_name} έχει προγραμματιστεί για οριστική διαγραφή.\n\nΠρογραμματισμένη διαγραφή: {deletionDate, date, full} στις {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Λόγος: {reason}}\n}\n\nΠρόκειται για ένα σοβαρό μέτρο. Τα δεδομένα του λογαριασμού σου θα διαγραφούν οριστικά την προγραμματισμένη ημερομηνία.\n\nΕάν πιστεύεις ότι αυτή η απόφαση ήταν λανθασμένη, μπορείς να υποβάλεις προσφυγή. Στείλε email στο {appeals_email} από αυτήν τη διεύθυνση email.\n\n– Ομάδα Ασφαλείας {product_name}"
},
"self_deletion_scheduled": {
"subject": "Η διαγραφή του λογαριασμού σου στο {product_name} είναι προγραμματισμένη",
"body": "Γεια σου {username},\n\nΖήτησες τη διαγραφή του λογαριασμού σου στο {product_name}. Ο λογαριασμός σου έχει προγραμματιστεί για οριστική διαγραφή στις:\n\n{deletionDate, date, full} στις {deletionDate, time, short}\n\nΕάν δεν το ζήτησες, συνδέσου στον λογαριασμό σου για να ακυρώσεις τη διαγραφή. Σου συνιστούμε επίσης να αλλάξεις τον κωδικό πρόσβασής σου και να ασφαλίσεις τον λογαριασμό σου.\n\n– Ομάδα {product_name}"
},
"unban_notification": {
"subject": "Η αναστολή του λογαριασμού σου στο {product_name} έχει αρθεί",
"body": "Γεια σου {username},\n\nΚαλά νέα: η αναστολή του λογαριασμού σου στο {product_name} έχει αρθεί.\n\n{reason, select,\n null {}\n other {Λόγος: {reason}}\n}\n\nΜπορείς τώρα να συνδεθείς ξανά και να συνεχίσεις να χρησιμοποιείς το {product_name} κανονικά.\n\n– Ομάδα Ασφαλείας {product_name}"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "Your {product_name} account has been temporarily disabled",
"body": "Hello {username},\n\nWe temporarily disabled your {product_name} account because we detected suspicious activity.\n\n{reason, select,\n null {}\n other {Reason: {reason}}\n}\n\nTo regain access to your account, you'll need to reset your password:\n\n{forgotUrl}\n\nAfter you reset your password, you'll be able to log in again.\n\nIf you believe this was done in error, please contact our support team.\n\n– {product_name} Safety Team"
},
"account_scheduled_deletion": {
"subject": "Your {product_name} account will be permanently deleted",
"body": "Hello {username},\n\nYour {product_name} account has been scheduled for permanent deletion due to violations of our Terms of Service or Community Guidelines.\n\nScheduled deletion: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Reason: {reason}}\n}\n\nThis is a serious enforcement action. Your account data will be permanently deleted on the scheduled date.\n\nPlease review:\n- Terms of Service: {termsUrl}\n- Community Guidelines: {guidelinesUrl}\n\nAppeals process:\nIf you believe this enforcement decision was incorrect or unjustified, you have 60 days to submit an appeal. Email {appeals_email} from this email address.\n\nIn your appeal:\n- Clearly explain why you believe the enforcement decision was incorrect or unjustified\n- Provide any relevant evidence or context\n\nA member of the {product_name} Safety Team will review your appeal and may pause the pending deletion until a final decision has been reached.\n\n– {product_name} Safety Team"
},
"account_temp_banned": {
"subject": "Your {product_name} account has been temporarily suspended",
"body": "Hello {username},\n\nYour {product_name} account has been temporarily suspended for violating our Terms of Service or Community Guidelines.\n\nDuration: {durationHours, plural,\n =1 {1 hour}\n other {# hours}\n}\nSuspended until: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Reason: {reason}}\n}\n\nDuring this time, you won't be able to access your account.\n\nPlease review:\n- Terms of Service: {termsUrl}\n- Community Guidelines: {guidelinesUrl}\n\nIf you believe this enforcement decision was incorrect or unjustified, you can submit an appeal. Email {appeals_email} from this email address and clearly explain why you believe the decision was incorrect. We'll review your appeal and respond with our decision.\n\n– {product_name} Safety Team"
},
"donation_confirmation": {
"subject": "Thank you for your {product_name} donation",
"body": "Hello,\n\nThank you for your donation to {product_name}! Your {interval, select,\n month {recurring donation}\n year {recurring donation}\n other {one-time donation}\n} has been {interval, select,\n month {set up}\n year {set up}\n other {processed}\n} successfully.\n\nDonation details:\nAmount: {amount} {currency} {interval, select,\n month {per month}\n year {per year}\n other {}\n}\n\nStripe will email you a separate receipt with your invoice PDF shortly. This includes all payment details and can be used for tax purposes.\n\nYou can view your donation history, download invoices, {interval, select,\n month {and manage or cancel your subscription}\n year {and manage or cancel your subscription}\n other {and manage future donations}\n} at any time using this link:\n\n{manageUrl}\n\nYour support helps keep {product_name} running. Thank you!\n\n– {product_name} Team"
},
"donation_magic_link": {
"subject": "Manage your {product_name} donations",
"body": "Hello,\n\nClick the link below to access your donor portal:\n\n{manageUrl}\n\nIn the portal, you can manage subscriptions, download invoices, and view your donation history.\n\nThis link expires on {expiresAt, date, full} at {expiresAt, time, short}.\n\nIf you did not request this link, you can safely ignore this email.\n\n– {product_name} Team"
},
"dsa_report_verification": {
"subject": "Verify your email for a DSA report",
"body": "Hello,\n\nUse the verification code below to submit your Digital Services Act report on {product_name}:\n\n{code}\n\nThis code expires on {expiresAt, date, full} at {expiresAt, time, short}.\n\nIf you didn't request this, you can ignore this email.\n\n– {product_name} Safety Team"
},
"email_change_new": {
"subject": "Verify your new {product_name} email",
"body": "Hello {username},\n\nEnter this code in the app to verify your new {product_name} email:\n\n{code}\n\nThis code expires on {expiresAt, date, full} at {expiresAt, time, short}.\n\nIf you didn't request this, you can ignore this email.\n\n– {product_name} Team"
},
"email_change_original": {
"subject": "Confirm your {product_name} email change",
"body": "Hello {username},\n\nWe received a request to change the email address on your {product_name} account.\n\nTo confirm this change, enter this code in the app:\n\n{code}\n\nThis code expires on {expiresAt, date, full} at {expiresAt, time, short}.\n\nIf you didn't request this, please secure your account right away.\n\n– {product_name} Team"
},
"email_change_revert": {
"subject": "Your {product_name} email was changed",
"body": "Hello {username},\n\nThe email address on your {product_name} account was changed to {newEmail}.\n\nIf you made this change, no action is needed. If you didn't, you can revert the change and secure your account using this link:\n\n{revertUrl}\n\nThis will restore your previous email, sign you out everywhere, remove linked phone numbers, disable MFA, and require you to set a new password.\n\n– {product_name} Safety Team"
},
"email_verification": {
"subject": "Verify your {product_name} email address",
"body": "Hello {username},\n\nPlease verify the email address for your {product_name} account by clicking the link below:\n\n{verifyUrl}\n\nIf you didn't create a {product_name} account, you can safely ignore this email.\n\nThis link is valid for 24 hours.\n\n– {product_name} Team"
},
"gift_chargeback_notification": {
"subject": "Perks from your redeemed gift have been removed",
"body": "Hello {username},\n\nA gift code you redeemed was originally paid for by someone else. That payment has since been reversed (a chargeback).\n\nBecause of this, we've removed the perks that were added to your account when you redeemed the gift.\n\nIf you think this is a mistake, please contact our support team and include any details you have about the gift code and when you redeemed it.\n\n– {product_name} Team"
},
"harvest_completed": {
"subject": "Your {product_name} data export is ready to download",
"body": "Hello {username},\n\nYour data export is ready.\n\nDownload link:\n{downloadUrl}\n\nMessages included: {totalMessages, number}\nFile size: {fileSizeMB, number} MB\n\nThis link expires on {expiresAt, date, full} at {expiresAt, time, short}.\n\nIf you didn't request this export, please change your password immediately and contact our support team.\n\n– {product_name} Team"
},
"inactivity_warning": {
"subject": "Your {product_name} account will be deleted due to inactivity",
"body": "Hello {username},\n\nWe haven't seen any activity on your {product_name} account since {lastActiveDate, date, full}.\n\nIf you don't log in by {deletionDate, date, full} at {deletionDate, time, short}, your account will be permanently deleted due to inactivity.\n\nLog in here:\n{loginUrl}\n\nIf you've used {product_name} recently, please contact our support team right away.\n\n– {product_name} Team"
},
"ip_authorization": {
"subject": "Authorize login from a new IP address",
"body": "Hello {username},\n\nWe detected a login attempt to your {product_name} account from a new IP address:\n\nIP address: {ipAddress}\nLocation: {location}\n\nIf this was you, please authorize this IP address by clicking the link below:\n\n{authUrl}\n\nIf you didn't attempt to log in, please change your password right away.\n\nThis link is valid for 30 minutes.\n\n– {product_name} Team"
},
"password_change_verification": {
"subject": "Confirm your {product_name} password change",
"body": "Hello {username},\n\nWe received a request to change the password on your {product_name} account.\n\nTo confirm this change, enter this code in the app:\n\n{code}\n\nThis code expires at {expiresAt}.\n\nIf you didn't request this, someone may have access to your account. Change your password immediately and enable two-factor authentication.\n\n– {product_name} Team"
},
"password_reset": {
"subject": "Reset your {product_name} password",
"body": "Hello {username},\n\nYou requested a {product_name} password reset. Use the link below to set a new password:\n\n{resetUrl}\n\nIf you didn't request this, you can safely ignore this email.\n\nThis link is valid for 1 hour.\n\n– {product_name} Team"
},
"registration_approved": {
"subject": "Your {product_name} registration has been approved",
"body": "Hello {username},\n\nGood news: your {product_name} registration has been approved.\n\nYou can now log in to the {product_name} app here:\n{channelsUrl}\n\nWelcome to the {product_name} community.\n\n– {product_name} Team"
},
"report_resolved": {
"subject": "Your {product_name} report has been reviewed",
"body": "Hello {username},\n\nYour report (ID: {reportId}) has been reviewed by our Safety Team.{hasComment, select, yes {\n\nResponse from the Safety Team:\n{publicComment}} other {}}\n\nThanks for helping keep {product_name} safe for everyone. We take all reports seriously and appreciate your contribution to the community.\n\nIf you have any questions or concerns about this outcome, please contact {safety_email}.\n\n– {product_name} Safety Team"
},
"scheduled_deletion_notification": {
"subject": "Your {product_name} account will be permanently deleted",
"body": "Hello {username},\n\nYour {product_name} account has been scheduled for permanent deletion.\n\nScheduled deletion: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Reason: {reason}}\n}\n\nThis is a serious enforcement action. Your account data will be permanently deleted on the scheduled date.\n\nIf you believe this enforcement decision was incorrect, you can submit an appeal. Email {appeals_email} from this email address.\n\n– {product_name} Safety Team"
},
"self_deletion_scheduled": {
"subject": "Your {product_name} account deletion is scheduled",
"body": "Hello {username},\n\nYou requested to delete your {product_name} account. Your account is scheduled for permanent deletion on:\n\n{deletionDate, date, full} at {deletionDate, time, short}\n\nIf you didn't request this, sign in to your account to cancel the deletion. We also recommend changing your password to secure your account.\n\n– {product_name} Team"
},
"unban_notification": {
"subject": "Your {product_name} account suspension has been lifted",
"body": "Hello {username},\n\nGood news: your {product_name} account suspension has been lifted.\n\n{reason, select,\n null {}\n other {Reason: {reason}}\n}\n\nYou can now log back in and continue using {product_name} as normal.\n\n– {product_name} Safety Team"
}
"account_disabled_suspicious": {
"subject": "Your {product_name} account has been temporarily disabled",
"body": "Hello {username},\n\nWe temporarily disabled your {product_name} account because we detected suspicious activity.\n\n{reason, select,\n null {}\n other {Reason: {reason}}\n}\n\nTo regain access to your account, you'll need to reset your password:\n\n{forgotUrl}\n\nAfter you reset your password, you'll be able to log in again.\n\nIf you believe this was done in error, please contact our support team.\n\n– {product_name} Safety Team"
},
"account_scheduled_deletion": {
"subject": "Your {product_name} account will be permanently deleted",
"body": "Hello {username},\n\nYour {product_name} account has been scheduled for permanent deletion due to violations of our Terms of Service or Community Guidelines.\n\nScheduled deletion: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Reason: {reason}}\n}\n\nThis is a serious enforcement action. Your account data will be permanently deleted on the scheduled date.\n\nPlease review:\n- Terms of Service: {termsUrl}\n- Community Guidelines: {guidelinesUrl}\n\nAppeals process:\nIf you believe this enforcement decision was incorrect or unjustified, you have 60 days to submit an appeal. Email {appeals_email} from this email address.\n\nIn your appeal:\n- Clearly explain why you believe the enforcement decision was incorrect or unjustified\n- Provide any relevant evidence or context\n\nA member of the {product_name} Safety Team will review your appeal and may pause the pending deletion until a final decision has been reached.\n\n– {product_name} Safety Team"
},
"account_temp_banned": {
"subject": "Your {product_name} account has been temporarily suspended",
"body": "Hello {username},\n\nYour {product_name} account has been temporarily suspended for violating our Terms of Service or Community Guidelines.\n\nDuration: {durationHours, plural,\n =1 {1 hour}\n other {# hours}\n}\nSuspended until: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Reason: {reason}}\n}\n\nDuring this time, you won't be able to access your account.\n\nPlease review:\n- Terms of Service: {termsUrl}\n- Community Guidelines: {guidelinesUrl}\n\nIf you believe this enforcement decision was incorrect or unjustified, you can submit an appeal. Email {appeals_email} from this email address and clearly explain why you believe the decision was incorrect. We'll review your appeal and respond with our decision.\n\n– {product_name} Safety Team"
},
"donation_confirmation": {
"subject": "Thank you for your {product_name} donation",
"body": "Hello,\n\nThank you for your donation to {product_name}! Your {interval, select,\n month {recurring donation}\n year {recurring donation}\n other {one-time donation}\n} has been {interval, select,\n month {set up}\n year {set up}\n other {processed}\n} successfully.\n\nDonation details:\nAmount: {amount} {currency} {interval, select,\n month {per month}\n year {per year}\n other {}\n}\n\nStripe will email you a separate receipt with your invoice PDF shortly. This includes all payment details and can be used for tax purposes.\n\nYou can view your donation history, download invoices, {interval, select,\n month {and manage or cancel your subscription}\n year {and manage or cancel your subscription}\n other {and manage future donations}\n} at any time using this link:\n\n{manageUrl}\n\nYour support helps keep {product_name} running. Thank you!\n\n– {product_name} Team"
},
"donation_magic_link": {
"subject": "Manage your {product_name} donations",
"body": "Hello,\n\nClick the link below to access your donor portal:\n\n{manageUrl}\n\nIn the portal, you can manage subscriptions, download invoices, and view your donation history.\n\nThis link expires on {expiresAt, date, full} at {expiresAt, time, short}.\n\nIf you did not request this link, you can safely ignore this email.\n\n– {product_name} Team"
},
"dsa_report_verification": {
"subject": "Verify your email for a DSA report",
"body": "Hello,\n\nUse the verification code below to submit your Digital Services Act report on {product_name}:\n\n{code}\n\nThis code expires on {expiresAt, date, full} at {expiresAt, time, short}.\n\nIf you didn't request this, you can ignore this email.\n\n– {product_name} Safety Team"
},
"email_change_new": {
"subject": "Verify your new {product_name} email",
"body": "Hello {username},\n\nEnter this code in the app to verify your new {product_name} email:\n\n{code}\n\nThis code expires on {expiresAt, date, full} at {expiresAt, time, short}.\n\nIf you didn't request this, you can ignore this email.\n\n– {product_name} Team"
},
"email_change_original": {
"subject": "Confirm your {product_name} email change",
"body": "Hello {username},\n\nWe received a request to change the email address on your {product_name} account.\n\nTo confirm this change, enter this code in the app:\n\n{code}\n\nThis code expires on {expiresAt, date, full} at {expiresAt, time, short}.\n\nIf you didn't request this, please secure your account right away.\n\n– {product_name} Team"
},
"email_change_revert": {
"subject": "Your {product_name} email was changed",
"body": "Hello {username},\n\nThe email address on your {product_name} account was changed to {newEmail}.\n\nIf you made this change, no action is needed. If you didn't, you can revert the change and secure your account using this link:\n\n{revertUrl}\n\nThis will restore your previous email, sign you out everywhere, remove linked phone numbers, disable MFA, and require you to set a new password.\n\n– {product_name} Safety Team"
},
"email_verification": {
"subject": "Verify your {product_name} email address",
"body": "Hello {username},\n\nPlease verify the email address for your {product_name} account by clicking the link below:\n\n{verifyUrl}\n\nIf you didn't create a {product_name} account, you can safely ignore this email.\n\nThis link is valid for 24 hours.\n\n– {product_name} Team"
},
"gift_chargeback_notification": {
"subject": "Perks from your redeemed gift have been removed",
"body": "Hello {username},\n\nA gift code you redeemed was originally paid for by someone else. That payment has since been reversed (a chargeback).\n\nBecause of this, we've removed the perks that were added to your account when you redeemed the gift.\n\nIf you think this is a mistake, please contact our support team and include any details you have about the gift code and when you redeemed it.\n\n– {product_name} Team"
},
"harvest_completed": {
"subject": "Your {product_name} data export is ready to download",
"body": "Hello {username},\n\nYour data export is ready.\n\nDownload link:\n{downloadUrl}\n\nMessages included: {totalMessages, number}\nFile size: {fileSizeMB, number} MB\n\nThis link expires on {expiresAt, date, full} at {expiresAt, time, short}.\n\nIf you didn't request this export, please change your password immediately and contact our support team.\n\n– {product_name} Team"
},
"inactivity_warning": {
"subject": "Your {product_name} account will be deleted due to inactivity",
"body": "Hello {username},\n\nWe haven't seen any activity on your {product_name} account since {lastActiveDate, date, full}.\n\nIf you don't log in by {deletionDate, date, full} at {deletionDate, time, short}, your account will be permanently deleted due to inactivity.\n\nLog in here:\n{loginUrl}\n\nIf you've used {product_name} recently, please contact our support team right away.\n\n– {product_name} Team"
},
"ip_authorization": {
"subject": "Authorize login from a new IP address",
"body": "Hello {username},\n\nWe detected a login attempt to your {product_name} account from a new IP address:\n\nIP address: {ipAddress}\nLocation: {location}\n\nIf this was you, please authorize this IP address by clicking the link below:\n\n{authUrl}\n\nIf you didn't attempt to log in, please change your password right away.\n\nThis link is valid for 30 minutes.\n\n– {product_name} Team"
},
"password_change_verification": {
"subject": "Confirm your {product_name} password change",
"body": "Hello {username},\n\nWe received a request to change the password on your {product_name} account.\n\nTo confirm this change, enter this code in the app:\n\n{code}\n\nThis code expires at {expiresAt}.\n\nIf you didn't request this, someone may have access to your account. Change your password immediately and enable two-factor authentication.\n\n– {product_name} Team"
},
"password_reset": {
"subject": "Reset your {product_name} password",
"body": "Hello {username},\n\nYou requested a {product_name} password reset. Use the link below to set a new password:\n\n{resetUrl}\n\nIf you didn't request this, you can safely ignore this email.\n\nThis link is valid for 1 hour.\n\n– {product_name} Team"
},
"registration_approved": {
"subject": "Your {product_name} registration has been approved",
"body": "Hello {username},\n\nGood news: your {product_name} registration has been approved.\n\nYou can now log in to the {product_name} app here:\n{channelsUrl}\n\nWelcome to the {product_name} community.\n\n– {product_name} Team"
},
"report_resolved": {
"subject": "Your {product_name} report has been reviewed",
"body": "Hello {username},\n\nYour report (ID: {reportId}) has been reviewed by our Safety Team.{hasComment, select, yes {\n\nResponse from the Safety Team:\n{publicComment}} other {}}\n\nThanks for helping keep {product_name} safe for everyone. We take all reports seriously and appreciate your contribution to the community.\n\nIf you have any questions or concerns about this outcome, please contact {safety_email}.\n\n– {product_name} Safety Team"
},
"scheduled_deletion_notification": {
"subject": "Your {product_name} account will be permanently deleted",
"body": "Hello {username},\n\nYour {product_name} account has been scheduled for permanent deletion.\n\nScheduled deletion: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Reason: {reason}}\n}\n\nThis is a serious enforcement action. Your account data will be permanently deleted on the scheduled date.\n\nIf you believe this enforcement decision was incorrect, you can submit an appeal. Email {appeals_email} from this email address.\n\n– {product_name} Safety Team"
},
"self_deletion_scheduled": {
"subject": "Your {product_name} account deletion is scheduled",
"body": "Hello {username},\n\nYou requested to delete your {product_name} account. Your account is scheduled for permanent deletion on:\n\n{deletionDate, date, full} at {deletionDate, time, short}\n\nIf you didn't request this, sign in to your account to cancel the deletion. We also recommend changing your password to secure your account.\n\n– {product_name} Team"
},
"unban_notification": {
"subject": "Your {product_name} account suspension has been lifted",
"body": "Hello {username},\n\nGood news: your {product_name} account suspension has been lifted.\n\n{reason, select,\n null {}\n other {Reason: {reason}}\n}\n\nYou can now log back in and continue using {product_name} as normal.\n\n– {product_name} Safety Team"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "Tu cuenta de {product_name} ha sido deshabilitada temporalmente",
"body": "Hola {username}:\n\nDeshabilitamos temporalmente tu cuenta de {product_name} porque detectamos actividad sospechosa.\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nPara recuperar el acceso a tu cuenta, deberás restablecer tu contraseña:\n\n{forgotUrl}\n\nDespués de restablecer tu contraseña, podrás iniciar sesión de nuevo.\n\nSi crees que esto fue un error, comunícate con nuestro equipo de soporte.\n\n– Equipo de Seguridad de {product_name}"
},
"account_scheduled_deletion": {
"subject": "Tu cuenta de {product_name} será eliminada permanentemente",
"body": "Hola {username}:\n\nTu cuenta de {product_name} ha sido programada para su eliminación permanente debido a infracciones de nuestros Términos de Servicio o Normas de la Comunidad.\n\nEliminación programada: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nEsta es una medida grave. Los datos de tu cuenta se eliminarán permanentemente en la fecha programada.\n\nPor favor, revisa:\n- Términos de Servicio: {termsUrl}\n- Normas de la Comunidad: {guidelinesUrl}\n\nProceso de apelación:\nSi crees que esta decisión fue incorrecta o injustificada, tienes 60 días para presentar una apelación. Envía un correo electrónico a {appeals_email} desde esta dirección de correo electrónico.\n\nEn tu apelación:\n- Explica claramente por qué crees que la decisión fue incorrecta o injustificada\n- Proporciona cualquier evidencia o contexto relevante\n\nUn miembro del Equipo de Seguridad de {product_name} revisará tu apelación y podrá pausar la eliminación pendiente hasta que se haya tomado una decisión final.\n\n– Equipo de Seguridad de {product_name}"
},
"account_temp_banned": {
"subject": "Tu cuenta de {product_name} ha sido suspendida temporalmente",
"body": "Hola {username}:\n\nTu cuenta de {product_name} ha sido suspendida temporalmente por violar nuestros Términos de Servicio o Normas de la Comunidad.\n\nDuración: {durationHours, plural,\n =1 {1 hora}\n other {# horas}\n}\nSuspendida hasta: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nDurante este tiempo, no podrás acceder a tu cuenta.\n\nPor favor, revisa:\n- Términos de Servicio: {termsUrl}\n- Normas de la Comunidad: {guidelinesUrl}\n\nSi crees que esta decisión fue incorrecta o injustificada, puedes presentar una apelación. Envía un correo electrónico a {appeals_email} desde esta dirección de correo electrónico y explica claramente por qué crees que la decisión fue incorrecta. Revisaremos tu apelación y te responderemos con nuestra decisión.\n\n– Equipo de Seguridad de {product_name}"
},
"donation_confirmation": {
"subject": "Gracias por tu donación a {product_name}",
"body": "Hola:\n\n¡Gracias por tu donación a {product_name}! Tu {interval, select,\n month {donación recurrente}\n year {donación recurrente}\n other {donación única}\n} ha sido {interval, select,\n month {configurada}\n year {configurada}\n other {procesada}\n} con éxito.\n\nDetalles de la donación:\nMonto: {amount} {currency} {interval, select,\n month {por mes}\n year {por año}\n other {}\n}\n\nStripe te enviará un recibo separado con tu factura en PDF en breve. Esto incluye todos los detalles de pago y se puede utilizar para fines fiscales.\n\nPuedes ver tu historial de donaciones, descargar facturas, {interval, select,\n month {y administrar o cancelar tu suscripción}\n year {y administrar o cancelar tu suscripción}\n other {y administrar futuras donaciones}\n} en cualquier momento usando este enlace:\n\n{manageUrl}\n\nTu apoyo ayuda a mantener {product_name} en funcionamiento. ¡Gracias!\n\n– Equipo de {product_name}"
},
"donation_magic_link": {
"subject": "Administra tus donaciones a {product_name}",
"body": "Hola:\n\nHaz clic en el siguiente enlace para acceder a tu portal de donantes:\n\n{manageUrl}\n\nEn el portal, puedes administrar suscripciones, descargar facturas y ver tu historial de donaciones.\n\nEste enlace vence el {expiresAt, date, full} a las {expiresAt, time, short}.\n\nSi no solicitaste este enlace, puedes ignorar este correo electrónico de forma segura.\n\n– Equipo de {product_name}"
},
"dsa_report_verification": {
"subject": "Verifica tu correo electrónico para un informe de la Ley de Servicios Digitales",
"body": "Hola:\n\nUsa el código de verificación a continuación para enviar tu informe de la Ley de Servicios Digitales en {product_name}:\n\n{code}\n\nEste código vence el {expiresAt, date, full} a las {expiresAt, time, short}.\n\nSi no solicitaste esto, puedes ignorar este correo electrónico.\n\n– Equipo de Seguridad de {product_name}"
},
"email_change_new": {
"subject": "Verifica tu nuevo correo electrónico de {product_name}",
"body": "Hola {username}:\n\nIngresa este código en la aplicación para verificar tu nuevo correo electrónico de {product_name}:\n\n{code}\n\nEste código vence el {expiresAt, date, full} a las {expiresAt, time, short}.\n\nSi no solicitaste esto, puedes ignorar este correo electrónico.\n\n– Equipo de {product_name}"
},
"email_change_original": {
"subject": "Confirma tu cambio de correo electrónico de {product_name}",
"body": "Hola {username}:\n\nRecibimos una solicitud para cambiar la dirección de correo electrónico de tu cuenta de {product_name}.\n\nPara confirmar este cambio, ingresa este código en la aplicación:\n\n{code}\n\nEste código vence el {expiresAt, date, full} a las {expiresAt, time, short}.\n\nSi no solicitaste esto, por favor, protege tu cuenta de inmediato.\n\n– Equipo de {product_name}"
},
"email_change_revert": {
"subject": "Tu correo electrónico de {product_name} fue cambiado",
"body": "Hola {username}:\n\nLa dirección de correo electrónico de tu cuenta de {product_name} se cambió a {newEmail}.\n\nSi realizaste este cambio, no es necesario que hagas nada. Si no lo hiciste, puedes revertir el cambio y proteger tu cuenta usando este enlace:\n\n{revertUrl}\n\nEsto restaurará tu correo electrónico anterior, cerrará tu sesión en todas partes, eliminará los números de teléfono vinculados, deshabilitará la autenticación multifactor y te pedirá que establezcas una nueva contraseña.\n\n– Equipo de Seguridad de {product_name}"
},
"email_verification": {
"subject": "Verifica tu dirección de correo electrónico de {product_name}",
"body": "Hola {username}:\n\nPor favor, verifica la dirección de correo electrónico de tu cuenta de {product_name} haciendo clic en el siguiente enlace:\n\n{verifyUrl}\n\nSi no creaste una cuenta de {product_name}, puedes ignorar este correo electrónico de forma segura.\n\nEste enlace es válido por 24 horas.\n\n– Equipo de {product_name}"
},
"gift_chargeback_notification": {
"subject": "Los beneficios de tu regalo canjeado han sido eliminados",
"body": "Hola {username}:\n\nUn código de regalo que canjeaste fue pagado originalmente por otra persona. Ese pago ha sido revertido (un contracargo).\n\nDebido a esto, hemos eliminado los beneficios que se agregaron a tu cuenta cuando canjeaste el regalo.\n\nSi crees que esto es un error, comunícate con nuestro equipo de soporte e incluye cualquier detalle que tengas sobre el código de regalo y cuándo lo canjeaste.\n\n– Equipo de {product_name}"
},
"harvest_completed": {
"subject": "Tu exportación de datos de {product_name} está lista para descargar",
"body": "Hola {username}:\n\nTu exportación de datos está lista.\n\nEnlace de descarga:\n{downloadUrl}\n\nMensajes incluidos: {totalMessages, number}\nTamaño del archivo: {fileSizeMB, number} MB\n\nEste enlace vence el {expiresAt, date, full} a las {expiresAt, time, short}.\n\nSi no solicitaste esta exportación, por favor, cambia tu contraseña inmediatamente y comunícate con nuestro equipo de soporte.\n\n– Equipo de {product_name}"
},
"inactivity_warning": {
"subject": "Tu cuenta de {product_name} será eliminada debido a inactividad",
"body": "Hola {username}:\n\nNo hemos visto actividad en tu cuenta de {product_name} desde el {lastActiveDate, date, full}.\n\nSi no inicias sesión antes del {deletionDate, date, full} a las {deletionDate, time, short}, tu cuenta será eliminada permanentemente debido a inactividad.\n\nInicia sesión aquí:\n{loginUrl}\n\nSi has usado {product_name} recientemente, por favor, comunícate con nuestro equipo de soporte de inmediato.\n\n– Equipo de {product_name}"
},
"ip_authorization": {
"subject": "Autoriza el inicio de sesión desde una nueva dirección IP",
"body": "Hola {username}:\n\nDetectamos un intento de inicio de sesión en tu cuenta de {product_name} desde una nueva dirección IP:\n\nDirección IP: {ipAddress}\nUbicación: {location}\n\nSi fuiste tú, por favor, autoriza esta dirección IP haciendo clic en el siguiente enlace:\n\n{authUrl}\n\nSi no intentaste iniciar sesión, por favor, cambia tu contraseña de inmediato.\n\nEste enlace es válido por 30 minutos.\n\n– Equipo de {product_name}"
},
"password_change_verification": {
"subject": "Confirma tu cambio de contraseña de {product_name}",
"body": "Hola {username}:\n\nRecibimos una solicitud para cambiar la contraseña de tu cuenta de {product_name}.\n\nPara confirmar este cambio, ingresa este código en la aplicación:\n\n{code}\n\nEste código vence a las {expiresAt}.\n\nSi no solicitaste esto, alguien podría tener acceso a tu cuenta. Cambia tu contraseña inmediatamente y habilita la autenticación de dos factores.\n\n– Equipo de {product_name}"
},
"password_reset": {
"subject": "Restablece tu contraseña de {product_name}",
"body": "Hola {username}:\n\nSolicitaste un restablecimiento de contraseña de {product_name}. Usa el siguiente enlace para establecer una nueva contraseña:\n\n{resetUrl}\n\nSi no solicitaste esto, puedes ignorar este correo electrónico de forma segura.\n\nEste enlace es válido por 1 hora.\n\n– Equipo de {product_name}"
},
"registration_approved": {
"subject": "Tu registro en {product_name} ha sido aprobado",
"body": "Hola {username}:\n\nBuenas noticias: tu registro en {product_name} ha sido aprobado.\n\nAhora puedes iniciar sesión en la aplicación de {product_name} aquí:\n{channelsUrl}\n\nBienvenido a la comunidad de {product_name}.\n\n– Equipo de {product_name}"
},
"report_resolved": {
"subject": "Tu informe de {product_name} ha sido revisado",
"body": "Hola {username}:\n\nTu informe (ID: {reportId}) ha sido revisado por nuestro Equipo de Seguridad.{hasComment, select, yes {\n\nRespuesta del Equipo de Seguridad:\n{publicComment}} other {}}\n\nGracias por ayudar a mantener {product_name} seguro para todos. Nos tomamos todos los informes en serio y agradecemos tu contribución a la comunidad.\n\nSi tienes alguna pregunta o inquietud sobre este resultado, comunícate con {safety_email}.\n\n– Equipo de Seguridad de {product_name}"
},
"scheduled_deletion_notification": {
"subject": "Tu cuenta de {product_name} será eliminada permanentemente",
"body": "Hola {username}:\n\nTu cuenta de {product_name} ha sido programada para su eliminación permanente.\n\nEliminación programada: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nEsta es una medida grave. Los datos de tu cuenta se eliminarán permanentemente en la fecha programada.\n\nSi crees que esta decisión fue incorrecta, puedes presentar una apelación. Envía un correo electrónico a {appeals_email} desde esta dirección de correo electrónico.\n\n– Equipo de Seguridad de {product_name}"
},
"self_deletion_scheduled": {
"subject": "La eliminación de tu cuenta de {product_name} está programada",
"body": "Hola {username}:\n\nSolicitaste eliminar tu cuenta de {product_name}. Tu cuenta está programada para su eliminación permanente el:\n\n{deletionDate, date, full} a las {deletionDate, time, short}\n\nSi no solicitaste esto, inicia sesión en tu cuenta para cancelar la eliminación. También te recomendamos cambiar tu contraseña para proteger tu cuenta.\n\n– Equipo de {product_name}"
},
"unban_notification": {
"subject": "Se levantó la suspensión de tu cuenta de {product_name}",
"body": "Hola {username}:\n\nBuenas noticias: se levantó la suspensión de tu cuenta de {product_name}.\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nAhora puedes iniciar sesión de nuevo y seguir usando {product_name} con normalidad.\n\n– Equipo de Seguridad de {product_name}"
}
"account_disabled_suspicious": {
"subject": "Tu cuenta de {product_name} ha sido deshabilitada temporalmente",
"body": "Hola {username}:\n\nDeshabilitamos temporalmente tu cuenta de {product_name} porque detectamos actividad sospechosa.\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nPara recuperar el acceso a tu cuenta, deberás restablecer tu contraseña:\n\n{forgotUrl}\n\nDespués de restablecer tu contraseña, podrás iniciar sesión de nuevo.\n\nSi crees que esto fue un error, comunícate con nuestro equipo de soporte.\n\n– Equipo de Seguridad de {product_name}"
},
"account_scheduled_deletion": {
"subject": "Tu cuenta de {product_name} será eliminada permanentemente",
"body": "Hola {username}:\n\nTu cuenta de {product_name} ha sido programada para su eliminación permanente debido a infracciones de nuestros Términos de Servicio o Normas de la Comunidad.\n\nEliminación programada: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nEsta es una medida grave. Los datos de tu cuenta se eliminarán permanentemente en la fecha programada.\n\nPor favor, revisa:\n- Términos de Servicio: {termsUrl}\n- Normas de la Comunidad: {guidelinesUrl}\n\nProceso de apelación:\nSi crees que esta decisión fue incorrecta o injustificada, tienes 60 días para presentar una apelación. Envía un correo electrónico a {appeals_email} desde esta dirección de correo electrónico.\n\nEn tu apelación:\n- Explica claramente por qué crees que la decisión fue incorrecta o injustificada\n- Proporciona cualquier evidencia o contexto relevante\n\nUn miembro del Equipo de Seguridad de {product_name} revisará tu apelación y podrá pausar la eliminación pendiente hasta que se haya tomado una decisión final.\n\n– Equipo de Seguridad de {product_name}"
},
"account_temp_banned": {
"subject": "Tu cuenta de {product_name} ha sido suspendida temporalmente",
"body": "Hola {username}:\n\nTu cuenta de {product_name} ha sido suspendida temporalmente por violar nuestros Términos de Servicio o Normas de la Comunidad.\n\nDuración: {durationHours, plural,\n =1 {1 hora}\n other {# horas}\n}\nSuspendida hasta: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nDurante este tiempo, no podrás acceder a tu cuenta.\n\nPor favor, revisa:\n- Términos de Servicio: {termsUrl}\n- Normas de la Comunidad: {guidelinesUrl}\n\nSi crees que esta decisión fue incorrecta o injustificada, puedes presentar una apelación. Envía un correo electrónico a {appeals_email} desde esta dirección de correo electrónico y explica claramente por qué crees que la decisión fue incorrecta. Revisaremos tu apelación y te responderemos con nuestra decisión.\n\n– Equipo de Seguridad de {product_name}"
},
"donation_confirmation": {
"subject": "Gracias por tu donación a {product_name}",
"body": "Hola:\n\n¡Gracias por tu donación a {product_name}! Tu {interval, select,\n month {donación recurrente}\n year {donación recurrente}\n other {donación única}\n} ha sido {interval, select,\n month {configurada}\n year {configurada}\n other {procesada}\n} con éxito.\n\nDetalles de la donación:\nMonto: {amount} {currency} {interval, select,\n month {por mes}\n year {por año}\n other {}\n}\n\nStripe te enviará un recibo separado con tu factura en PDF en breve. Esto incluye todos los detalles de pago y se puede utilizar para fines fiscales.\n\nPuedes ver tu historial de donaciones, descargar facturas, {interval, select,\n month {y administrar o cancelar tu suscripción}\n year {y administrar o cancelar tu suscripción}\n other {y administrar futuras donaciones}\n} en cualquier momento usando este enlace:\n\n{manageUrl}\n\nTu apoyo ayuda a mantener {product_name} en funcionamiento. ¡Gracias!\n\n– Equipo de {product_name}"
},
"donation_magic_link": {
"subject": "Administra tus donaciones a {product_name}",
"body": "Hola:\n\nHaz clic en el siguiente enlace para acceder a tu portal de donantes:\n\n{manageUrl}\n\nEn el portal, puedes administrar suscripciones, descargar facturas y ver tu historial de donaciones.\n\nEste enlace vence el {expiresAt, date, full} a las {expiresAt, time, short}.\n\nSi no solicitaste este enlace, puedes ignorar este correo electrónico de forma segura.\n\n– Equipo de {product_name}"
},
"dsa_report_verification": {
"subject": "Verifica tu correo electrónico para un informe de la Ley de Servicios Digitales",
"body": "Hola:\n\nUsa el código de verificación a continuación para enviar tu informe de la Ley de Servicios Digitales en {product_name}:\n\n{code}\n\nEste código vence el {expiresAt, date, full} a las {expiresAt, time, short}.\n\nSi no solicitaste esto, puedes ignorar este correo electrónico.\n\n– Equipo de Seguridad de {product_name}"
},
"email_change_new": {
"subject": "Verifica tu nuevo correo electrónico de {product_name}",
"body": "Hola {username}:\n\nIngresa este código en la aplicación para verificar tu nuevo correo electrónico de {product_name}:\n\n{code}\n\nEste código vence el {expiresAt, date, full} a las {expiresAt, time, short}.\n\nSi no solicitaste esto, puedes ignorar este correo electrónico.\n\n– Equipo de {product_name}"
},
"email_change_original": {
"subject": "Confirma tu cambio de correo electrónico de {product_name}",
"body": "Hola {username}:\n\nRecibimos una solicitud para cambiar la dirección de correo electrónico de tu cuenta de {product_name}.\n\nPara confirmar este cambio, ingresa este código en la aplicación:\n\n{code}\n\nEste código vence el {expiresAt, date, full} a las {expiresAt, time, short}.\n\nSi no solicitaste esto, por favor, protege tu cuenta de inmediato.\n\n– Equipo de {product_name}"
},
"email_change_revert": {
"subject": "Tu correo electrónico de {product_name} fue cambiado",
"body": "Hola {username}:\n\nLa dirección de correo electrónico de tu cuenta de {product_name} se cambió a {newEmail}.\n\nSi realizaste este cambio, no es necesario que hagas nada. Si no lo hiciste, puedes revertir el cambio y proteger tu cuenta usando este enlace:\n\n{revertUrl}\n\nEsto restaurará tu correo electrónico anterior, cerrará tu sesión en todas partes, eliminará los números de teléfono vinculados, deshabilitará la autenticación multifactor y te pedirá que establezcas una nueva contraseña.\n\n– Equipo de Seguridad de {product_name}"
},
"email_verification": {
"subject": "Verifica tu dirección de correo electrónico de {product_name}",
"body": "Hola {username}:\n\nPor favor, verifica la dirección de correo electrónico de tu cuenta de {product_name} haciendo clic en el siguiente enlace:\n\n{verifyUrl}\n\nSi no creaste una cuenta de {product_name}, puedes ignorar este correo electrónico de forma segura.\n\nEste enlace es válido por 24 horas.\n\n– Equipo de {product_name}"
},
"gift_chargeback_notification": {
"subject": "Los beneficios de tu regalo canjeado han sido eliminados",
"body": "Hola {username}:\n\nUn código de regalo que canjeaste fue pagado originalmente por otra persona. Ese pago ha sido revertido (un contracargo).\n\nDebido a esto, hemos eliminado los beneficios que se agregaron a tu cuenta cuando canjeaste el regalo.\n\nSi crees que esto es un error, comunícate con nuestro equipo de soporte e incluye cualquier detalle que tengas sobre el código de regalo y cuándo lo canjeaste.\n\n– Equipo de {product_name}"
},
"harvest_completed": {
"subject": "Tu exportación de datos de {product_name} está lista para descargar",
"body": "Hola {username}:\n\nTu exportación de datos está lista.\n\nEnlace de descarga:\n{downloadUrl}\n\nMensajes incluidos: {totalMessages, number}\nTamaño del archivo: {fileSizeMB, number} MB\n\nEste enlace vence el {expiresAt, date, full} a las {expiresAt, time, short}.\n\nSi no solicitaste esta exportación, por favor, cambia tu contraseña inmediatamente y comunícate con nuestro equipo de soporte.\n\n– Equipo de {product_name}"
},
"inactivity_warning": {
"subject": "Tu cuenta de {product_name} será eliminada debido a inactividad",
"body": "Hola {username}:\n\nNo hemos visto actividad en tu cuenta de {product_name} desde el {lastActiveDate, date, full}.\n\nSi no inicias sesión antes del {deletionDate, date, full} a las {deletionDate, time, short}, tu cuenta será eliminada permanentemente debido a inactividad.\n\nInicia sesión aquí:\n{loginUrl}\n\nSi has usado {product_name} recientemente, por favor, comunícate con nuestro equipo de soporte de inmediato.\n\n– Equipo de {product_name}"
},
"ip_authorization": {
"subject": "Autoriza el inicio de sesión desde una nueva dirección IP",
"body": "Hola {username}:\n\nDetectamos un intento de inicio de sesión en tu cuenta de {product_name} desde una nueva dirección IP:\n\nDirección IP: {ipAddress}\nUbicación: {location}\n\nSi fuiste tú, por favor, autoriza esta dirección IP haciendo clic en el siguiente enlace:\n\n{authUrl}\n\nSi no intentaste iniciar sesión, por favor, cambia tu contraseña de inmediato.\n\nEste enlace es válido por 30 minutos.\n\n– Equipo de {product_name}"
},
"password_change_verification": {
"subject": "Confirma tu cambio de contraseña de {product_name}",
"body": "Hola {username}:\n\nRecibimos una solicitud para cambiar la contraseña de tu cuenta de {product_name}.\n\nPara confirmar este cambio, ingresa este código en la aplicación:\n\n{code}\n\nEste código vence a las {expiresAt}.\n\nSi no solicitaste esto, alguien podría tener acceso a tu cuenta. Cambia tu contraseña inmediatamente y habilita la autenticación de dos factores.\n\n– Equipo de {product_name}"
},
"password_reset": {
"subject": "Restablece tu contraseña de {product_name}",
"body": "Hola {username}:\n\nSolicitaste un restablecimiento de contraseña de {product_name}. Usa el siguiente enlace para establecer una nueva contraseña:\n\n{resetUrl}\n\nSi no solicitaste esto, puedes ignorar este correo electrónico de forma segura.\n\nEste enlace es válido por 1 hora.\n\n– Equipo de {product_name}"
},
"registration_approved": {
"subject": "Tu registro en {product_name} ha sido aprobado",
"body": "Hola {username}:\n\nBuenas noticias: tu registro en {product_name} ha sido aprobado.\n\nAhora puedes iniciar sesión en la aplicación de {product_name} aquí:\n{channelsUrl}\n\nBienvenido a la comunidad de {product_name}.\n\n– Equipo de {product_name}"
},
"report_resolved": {
"subject": "Tu informe de {product_name} ha sido revisado",
"body": "Hola {username}:\n\nTu informe (ID: {reportId}) ha sido revisado por nuestro Equipo de Seguridad.{hasComment, select, yes {\n\nRespuesta del Equipo de Seguridad:\n{publicComment}} other {}}\n\nGracias por ayudar a mantener {product_name} seguro para todos. Nos tomamos todos los informes en serio y agradecemos tu contribución a la comunidad.\n\nSi tienes alguna pregunta o inquietud sobre este resultado, comunícate con {safety_email}.\n\n– Equipo de Seguridad de {product_name}"
},
"scheduled_deletion_notification": {
"subject": "Tu cuenta de {product_name} será eliminada permanentemente",
"body": "Hola {username}:\n\nTu cuenta de {product_name} ha sido programada para su eliminación permanente.\n\nEliminación programada: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nEsta es una medida grave. Los datos de tu cuenta se eliminarán permanentemente en la fecha programada.\n\nSi crees que esta decisión fue incorrecta, puedes presentar una apelación. Envía un correo electrónico a {appeals_email} desde esta dirección de correo electrónico.\n\n– Equipo de Seguridad de {product_name}"
},
"self_deletion_scheduled": {
"subject": "La eliminación de tu cuenta de {product_name} está programada",
"body": "Hola {username}:\n\nSolicitaste eliminar tu cuenta de {product_name}. Tu cuenta está programada para su eliminación permanente el:\n\n{deletionDate, date, full} a las {deletionDate, time, short}\n\nSi no solicitaste esto, inicia sesión en tu cuenta para cancelar la eliminación. También te recomendamos cambiar tu contraseña para proteger tu cuenta.\n\n– Equipo de {product_name}"
},
"unban_notification": {
"subject": "Se levantó la suspensión de tu cuenta de {product_name}",
"body": "Hola {username}:\n\nBuenas noticias: se levantó la suspensión de tu cuenta de {product_name}.\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nAhora puedes iniciar sesión de nuevo y seguir usando {product_name} con normalidad.\n\n– Equipo de Seguridad de {product_name}"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "Tu cuenta de {product_name} ha sido deshabilitada temporalmente",
"body": "Hola {username}:\n\nHemos deshabilitado temporalmente tu cuenta de {product_name} porque hemos detectado actividad sospechosa.\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nPara recuperar el acceso a tu cuenta, tendrás que restablecer tu contraseña:\n\n{forgotUrl}\n\nDespués de restablecer tu contraseña, podrás iniciar sesión de nuevo.\n\nSi crees que esto ha sido un error, ponte en contacto con nuestro equipo de soporte.\n\n– Equipo de Seguridad de {product_name}"
},
"account_scheduled_deletion": {
"subject": "Tu cuenta de {product_name} será eliminada permanentemente",
"body": "Hola {username}:\n\nTu cuenta de {product_name} ha sido programada para su eliminación permanente debido a infracciones de nuestros Términos de Servicio o Directrices de la Comunidad.\n\nEliminación programada: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nEsta es una medida grave. Los datos de tu cuenta se eliminarán permanentemente en la fecha programada.\n\nPor favor, revisa:\n- Términos de Servicio: {termsUrl}\n- Directrices de la Comunidad: {guidelinesUrl}\n\nProceso de apelación:\nSi crees que esta decisión fue incorrecta o injustificada, tienes 60 días para presentar una apelación. Envía un correo electrónico a {appeals_email} desde esta dirección de correo electrónico.\n\nEn tu apelación:\n- Explica claramente por qué crees que la decisión fue incorrecta o injustificada\n- Proporciona cualquier evidencia o contexto relevante\n\nUn miembro del Equipo de Seguridad de {product_name} revisará tu apelación y podrá pausar la eliminación pendiente hasta que se haya tomado una decisión final.\n\n– Equipo de Seguridad de {product_name}"
},
"account_temp_banned": {
"subject": "Tu cuenta de {product_name} ha sido suspendida temporalmente",
"body": "Hola {username}:\n\nTu cuenta de {product_name} ha sido suspendida temporalmente por violar nuestros Términos de Servicio o Directrices de la Comunidad.\n\nDuración: {durationHours, plural,\n =1 {1 hora}\n other {# horas}\n}\nSuspendida hasta: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nDurante este tiempo, no podrás acceder a tu cuenta.\n\nPor favor, revisa:\n- Términos de Servicio: {termsUrl}\n- Directrices de la Comunidad: {guidelinesUrl}\n\nSi crees que esta decisión fue incorrecta o injustificada, puedes presentar una apelación. Envía un correo electrónico a {appeals_email} desde esta dirección de correo electrónico y explica claramente por qué crees que la decisión fue incorrecta. Revisaremos tu apelación y te responderemos con nuestra decisión.\n\n– Equipo de Seguridad de {product_name}"
},
"donation_confirmation": {
"subject": "Gracias por tu donación a {product_name}",
"body": "Hola:\n\n¡Gracias por tu donación a {product_name}! Tu {interval, select,\n month {donación recurrente}\n year {donación recurrente}\n other {donación única}\n} se ha {interval, select,\n month {configurado}\n year {configurado}\n other {procesado}\n} correctamente.\n\nDetalles de la donación:\nCantidad: {amount} {currency} {interval, select,\n month {al mes}\n year {al año}\n other {}\n}\n\nStripe te enviará un recibo separado con tu factura en PDF en breve. Este recibo incluye todos los detalles de pago y se puede utilizar para fines fiscales.\n\nPuedes ver tu historial de donaciones, descargar facturas {interval, select,\n month {y gestionar o cancelar tu suscripción}\n year {y gestionar o cancelar tu suscripción}\n other {y gestionar futuras donaciones}\n} en cualquier momento usando este enlace:\n\n{manageUrl}\n\nTu apoyo ayuda a mantener {product_name} en funcionamiento. ¡Gracias!\n\n– Equipo de {product_name}"
},
"donation_magic_link": {
"subject": "Gestiona tus donaciones de {product_name}",
"body": "Hola:\n\nHaz clic en el siguiente enlace para acceder a tu portal de donantes:\n\n{manageUrl}\n\nEn el portal, puedes gestionar suscripciones, descargar facturas y ver tu historial de donaciones.\n\nEste enlace caduca el {expiresAt, date, full} a las {expiresAt, time, short}.\n\nSi no solicitaste este enlace, puedes ignorar este correo electrónico de forma segura.\n\n– Equipo de {product_name}"
},
"dsa_report_verification": {
"subject": "Verifica tu correo electrónico para un informe de la DSA",
"body": "Hola:\n\nUsa el siguiente código de verificación para enviar tu informe de la Ley de Servicios Digitales en {product_name}:\n\n{code}\n\nEste código caduca el {expiresAt, date, full} a las {expiresAt, time, short}.\n\nSi no solicitaste esto, puedes ignorar este correo electrónico.\n\n– Equipo de Seguridad de {product_name}"
},
"email_change_new": {
"subject": "Verifica tu nuevo correo electrónico para {product_name}",
"body": "Hola {username}:\n\nIntroduce este código en la aplicación para verificar tu nuevo correo electrónico para {product_name}:\n\n{code}\n\nEste código caduca el {expiresAt, date, full} a las {expiresAt, time, short}.\n\nSi no solicitaste esto, puedes ignorar este correo electrónico.\n\n– Equipo de {product_name}"
},
"email_change_original": {
"subject": "Confirma tu cambio de correo electrónico para {product_name}",
"body": "Hola {username}:\n\nHemos recibido una solicitud para cambiar la dirección de correo electrónico de tu cuenta de {product_name}.\n\nPara confirmar este cambio, introduce este código en la aplicación:\n\n{code}\n\nEste código caduca el {expiresAt, date, full} a las {expiresAt, time, short}.\n\nSi no solicitaste esto, protege tu cuenta de inmediato.\n\n– Equipo de {product_name}"
},
"email_change_revert": {
"subject": "Tu correo electrónico para {product_name} ha sido cambiado",
"body": "Hola {username}:\n\nLa dirección de correo electrónico de tu cuenta de {product_name} ha sido cambiada a {newEmail}.\n\nSi realizaste este cambio, no es necesario que hagas nada. Si no lo hiciste, puedes revertir el cambio y proteger tu cuenta usando este enlace:\n\n{revertUrl}\n\nEsto restaurará tu correo electrónico anterior, cerrará tu sesión en todas partes, eliminará los números de teléfono vinculados, deshabilitará la autenticación multifactor y te pedirá que establezcas una nueva contraseña.\n\n– Equipo de Seguridad de {product_name}"
},
"email_verification": {
"subject": "Verifica tu dirección de correo electrónico para {product_name}",
"body": "Hola {username}:\n\nVerifica la dirección de correo electrónico de tu cuenta de {product_name} haciendo clic en el siguiente enlace:\n\n{verifyUrl}\n\nSi no creaste una cuenta de {product_name}, puedes ignorar este correo electrónico.\n\nEste enlace es válido durante 24 horas.\n\n– Equipo de {product_name}"
},
"gift_chargeback_notification": {
"subject": "Se han eliminado las ventajas obtenidas con tu regalo canjeado",
"body": "Hola {username}:\n\nUn código de regalo que canjeaste fue pagado originalmente por otra persona. Ese pago ha sido revertido (una devolución de cargo).\n\nDebido a esto, hemos eliminado las ventajas que se añadieron a tu cuenta cuando canjeaste el regalo.\n\nSi crees que esto es un error, ponte en contacto con nuestro equipo de soporte e incluye cualquier detalle que tengas sobre el código de regalo y cuándo lo canjeaste.\n\n– Equipo de {product_name}"
},
"harvest_completed": {
"subject": "Tu exportación de datos de {product_name} está lista para descargar",
"body": "Hola {username}:\n\nTu exportación de datos está lista.\n\nEnlace de descarga:\n{downloadUrl}\n\nMensajes incluidos: {totalMessages, number}\nTamaño del archivo: {fileSizeMB, number} MB\n\nEste enlace caduca el {expiresAt, date, full} a las {expiresAt, time, short}.\n\nSi no solicitaste esta exportación, cambia tu contraseña inmediatamente y ponte en contacto con nuestro equipo de soporte.\n\n– Equipo de {product_name}"
},
"inactivity_warning": {
"subject": "Tu cuenta de {product_name} será eliminada debido a la inactividad",
"body": "Hola {username}:\n\nNo hemos visto ninguna actividad en tu cuenta de {product_name} desde el {lastActiveDate, date, full}.\n\nSi no inicias sesión antes del {deletionDate, date, full} a las {deletionDate, time, short}, tu cuenta será eliminada permanentemente debido a la inactividad.\n\nInicia sesión aquí:\n{loginUrl}\n\nSi has usado {product_name} recientemente, ponte en contacto con nuestro equipo de soporte de inmediato.\n\n– Equipo de {product_name}"
},
"ip_authorization": {
"subject": "Autorizar inicio de sesión desde una nueva dirección IP",
"body": "Hola {username}:\n\nHemos detectado un intento de inicio de sesión en tu cuenta de {product_name} desde una nueva IP:\n\nDirección IP: {ipAddress}\nUbicación: {location}\n\nSi fuiste tú, autoriza esta dirección IP haciendo clic en el siguiente enlace:\n\n{authUrl}\n\nSi no intentaste iniciar sesión, cambia tu contraseña de inmediato.\n\nEste enlace es válido durante 30 minutos.\n\n– Equipo de {product_name}"
},
"password_change_verification": {
"subject": "Confirma tu cambio de contraseña en {product_name}",
"body": "Hola {username}:\n\nHemos recibido una solicitud para cambiar la contraseña de tu cuenta de {product_name}.\n\nPara confirmar este cambio, introduce este código en la aplicación:\n\n{code}\n\nEste código caduca el {expiresAt}.\n\nSi no solicitaste esto, alguien podría tener acceso a tu cuenta. Cambia tu contraseña inmediatamente y activa la autenticación de dos factores.\n\n– Equipo de {product_name}"
},
"password_reset": {
"subject": "Restablece tu contraseña en {product_name}",
"body": "Hola {username}:\n\nSolicitaste un restablecimiento de contraseña de {product_name}. Usa el siguiente enlace para establecer una nueva contraseña:\n\n{resetUrl}\n\nSi no solicitaste esto, puedes ignorar este correo electrónico.\n\nEste enlace es válido durante 1 hora.\n\n– Equipo de {product_name}"
},
"registration_approved": {
"subject": "Tu registro en {product_name} ha sido aprobado",
"body": "Hola {username}:\n\nBuenas noticias: tu registro en {product_name} ha sido aprobado.\n\nAhora puedes iniciar sesión en la aplicación de {product_name} aquí:\n{channelsUrl}\n\nBienvenido a la comunidad de {product_name}.\n\n– Equipo de {product_name}"
},
"report_resolved": {
"subject": "Tu informe en {product_name} ha sido revisado",
"body": "Hola {username}:\n\nTu informe (ID: {reportId}) ha sido revisado por nuestro Equipo de Seguridad.{hasComment, select, yes {\n\nRespuesta del Equipo de Seguridad:\n{publicComment}} other {}}\n\nGracias por ayudarnos a mantener {product_name} seguro para todos. Nos tomamos todos los informes en serio y agradecemos tu contribución a la comunidad.\n\nSi tienes alguna pregunta o inquietud sobre este resultado, ponte en contacto con {safety_email}.\n\n– Equipo de Seguridad de {product_name}"
},
"scheduled_deletion_notification": {
"subject": "Tu cuenta de {product_name} será eliminada permanentemente",
"body": "Hola {username}:\n\nTu cuenta de {product_name} ha sido programada para su eliminación permanente.\n\nEliminación programada: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nEsta es una medida grave. Los datos de tu cuenta se eliminarán permanentemente en la fecha programada.\n\nSi crees que esta decisión fue incorrecta, puedes presentar una apelación. Envía un correo electrónico a {appeals_email} desde esta dirección de correo electrónico.\n\n– Equipo de Seguridad de {product_name}"
},
"self_deletion_scheduled": {
"subject": "La eliminación de tu cuenta de {product_name} está programada",
"body": "Hola {username}:\n\nSolicitaste eliminar tu cuenta de {product_name}. Tu cuenta está programada para su eliminación permanente el:\n\n{deletionDate, date, full} a las {deletionDate, time, short}\n\nSi no solicitaste esto, inicia sesión en tu cuenta para cancelar la eliminación. También te recomendamos cambiar tu contraseña para proteger tu cuenta.\n\n– Equipo de {product_name}"
},
"unban_notification": {
"subject": "Se ha levantado la suspensión de tu cuenta de {product_name}",
"body": "Hola {username}:\n\nBuenas noticias: se ha levantado la suspensión de tu cuenta de {product_name}.\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nAhora puedes volver a iniciar sesión y seguir usando {product_name} con normalidad.\n\n– Equipo de Seguridad de {product_name}"
}
"account_disabled_suspicious": {
"subject": "Tu cuenta de {product_name} ha sido deshabilitada temporalmente",
"body": "Hola {username}:\n\nHemos deshabilitado temporalmente tu cuenta de {product_name} porque hemos detectado actividad sospechosa.\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nPara recuperar el acceso a tu cuenta, tendrás que restablecer tu contraseña:\n\n{forgotUrl}\n\nDespués de restablecer tu contraseña, podrás iniciar sesión de nuevo.\n\nSi crees que esto ha sido un error, ponte en contacto con nuestro equipo de soporte.\n\n– Equipo de Seguridad de {product_name}"
},
"account_scheduled_deletion": {
"subject": "Tu cuenta de {product_name} será eliminada permanentemente",
"body": "Hola {username}:\n\nTu cuenta de {product_name} ha sido programada para su eliminación permanente debido a infracciones de nuestros Términos de Servicio o Directrices de la Comunidad.\n\nEliminación programada: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nEsta es una medida grave. Los datos de tu cuenta se eliminarán permanentemente en la fecha programada.\n\nPor favor, revisa:\n- Términos de Servicio: {termsUrl}\n- Directrices de la Comunidad: {guidelinesUrl}\n\nProceso de apelación:\nSi crees que esta decisión fue incorrecta o injustificada, tienes 60 días para presentar una apelación. Envía un correo electrónico a {appeals_email} desde esta dirección de correo electrónico.\n\nEn tu apelación:\n- Explica claramente por qué crees que la decisión fue incorrecta o injustificada\n- Proporciona cualquier evidencia o contexto relevante\n\nUn miembro del Equipo de Seguridad de {product_name} revisará tu apelación y podrá pausar la eliminación pendiente hasta que se haya tomado una decisión final.\n\n– Equipo de Seguridad de {product_name}"
},
"account_temp_banned": {
"subject": "Tu cuenta de {product_name} ha sido suspendida temporalmente",
"body": "Hola {username}:\n\nTu cuenta de {product_name} ha sido suspendida temporalmente por violar nuestros Términos de Servicio o Directrices de la Comunidad.\n\nDuración: {durationHours, plural,\n =1 {1 hora}\n other {# horas}\n}\nSuspendida hasta: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nDurante este tiempo, no podrás acceder a tu cuenta.\n\nPor favor, revisa:\n- Términos de Servicio: {termsUrl}\n- Directrices de la Comunidad: {guidelinesUrl}\n\nSi crees que esta decisión fue incorrecta o injustificada, puedes presentar una apelación. Envía un correo electrónico a {appeals_email} desde esta dirección de correo electrónico y explica claramente por qué crees que la decisión fue incorrecta. Revisaremos tu apelación y te responderemos con nuestra decisión.\n\n– Equipo de Seguridad de {product_name}"
},
"donation_confirmation": {
"subject": "Gracias por tu donación a {product_name}",
"body": "Hola:\n\n¡Gracias por tu donación a {product_name}! Tu {interval, select,\n month {donación recurrente}\n year {donación recurrente}\n other {donación única}\n} se ha {interval, select,\n month {configurado}\n year {configurado}\n other {procesado}\n} correctamente.\n\nDetalles de la donación:\nCantidad: {amount} {currency} {interval, select,\n month {al mes}\n year {al año}\n other {}\n}\n\nStripe te enviará un recibo separado con tu factura en PDF en breve. Este recibo incluye todos los detalles de pago y se puede utilizar para fines fiscales.\n\nPuedes ver tu historial de donaciones, descargar facturas {interval, select,\n month {y gestionar o cancelar tu suscripción}\n year {y gestionar o cancelar tu suscripción}\n other {y gestionar futuras donaciones}\n} en cualquier momento usando este enlace:\n\n{manageUrl}\n\nTu apoyo ayuda a mantener {product_name} en funcionamiento. ¡Gracias!\n\n– Equipo de {product_name}"
},
"donation_magic_link": {
"subject": "Gestiona tus donaciones de {product_name}",
"body": "Hola:\n\nHaz clic en el siguiente enlace para acceder a tu portal de donantes:\n\n{manageUrl}\n\nEn el portal, puedes gestionar suscripciones, descargar facturas y ver tu historial de donaciones.\n\nEste enlace caduca el {expiresAt, date, full} a las {expiresAt, time, short}.\n\nSi no solicitaste este enlace, puedes ignorar este correo electrónico de forma segura.\n\n– Equipo de {product_name}"
},
"dsa_report_verification": {
"subject": "Verifica tu correo electrónico para un informe de la DSA",
"body": "Hola:\n\nUsa el siguiente código de verificación para enviar tu informe de la Ley de Servicios Digitales en {product_name}:\n\n{code}\n\nEste código caduca el {expiresAt, date, full} a las {expiresAt, time, short}.\n\nSi no solicitaste esto, puedes ignorar este correo electrónico.\n\n– Equipo de Seguridad de {product_name}"
},
"email_change_new": {
"subject": "Verifica tu nuevo correo electrónico para {product_name}",
"body": "Hola {username}:\n\nIntroduce este código en la aplicación para verificar tu nuevo correo electrónico para {product_name}:\n\n{code}\n\nEste código caduca el {expiresAt, date, full} a las {expiresAt, time, short}.\n\nSi no solicitaste esto, puedes ignorar este correo electrónico.\n\n– Equipo de {product_name}"
},
"email_change_original": {
"subject": "Confirma tu cambio de correo electrónico para {product_name}",
"body": "Hola {username}:\n\nHemos recibido una solicitud para cambiar la dirección de correo electrónico de tu cuenta de {product_name}.\n\nPara confirmar este cambio, introduce este código en la aplicación:\n\n{code}\n\nEste código caduca el {expiresAt, date, full} a las {expiresAt, time, short}.\n\nSi no solicitaste esto, protege tu cuenta de inmediato.\n\n– Equipo de {product_name}"
},
"email_change_revert": {
"subject": "Tu correo electrónico para {product_name} ha sido cambiado",
"body": "Hola {username}:\n\nLa dirección de correo electrónico de tu cuenta de {product_name} ha sido cambiada a {newEmail}.\n\nSi realizaste este cambio, no es necesario que hagas nada. Si no lo hiciste, puedes revertir el cambio y proteger tu cuenta usando este enlace:\n\n{revertUrl}\n\nEsto restaurará tu correo electrónico anterior, cerrará tu sesión en todas partes, eliminará los números de teléfono vinculados, deshabilitará la autenticación multifactor y te pedirá que establezcas una nueva contraseña.\n\n– Equipo de Seguridad de {product_name}"
},
"email_verification": {
"subject": "Verifica tu dirección de correo electrónico para {product_name}",
"body": "Hola {username}:\n\nVerifica la dirección de correo electrónico de tu cuenta de {product_name} haciendo clic en el siguiente enlace:\n\n{verifyUrl}\n\nSi no creaste una cuenta de {product_name}, puedes ignorar este correo electrónico.\n\nEste enlace es válido durante 24 horas.\n\n– Equipo de {product_name}"
},
"gift_chargeback_notification": {
"subject": "Se han eliminado las ventajas obtenidas con tu regalo canjeado",
"body": "Hola {username}:\n\nUn código de regalo que canjeaste fue pagado originalmente por otra persona. Ese pago ha sido revertido (una devolución de cargo).\n\nDebido a esto, hemos eliminado las ventajas que se añadieron a tu cuenta cuando canjeaste el regalo.\n\nSi crees que esto es un error, ponte en contacto con nuestro equipo de soporte e incluye cualquier detalle que tengas sobre el código de regalo y cuándo lo canjeaste.\n\n– Equipo de {product_name}"
},
"harvest_completed": {
"subject": "Tu exportación de datos de {product_name} está lista para descargar",
"body": "Hola {username}:\n\nTu exportación de datos está lista.\n\nEnlace de descarga:\n{downloadUrl}\n\nMensajes incluidos: {totalMessages, number}\nTamaño del archivo: {fileSizeMB, number} MB\n\nEste enlace caduca el {expiresAt, date, full} a las {expiresAt, time, short}.\n\nSi no solicitaste esta exportación, cambia tu contraseña inmediatamente y ponte en contacto con nuestro equipo de soporte.\n\n– Equipo de {product_name}"
},
"inactivity_warning": {
"subject": "Tu cuenta de {product_name} será eliminada debido a la inactividad",
"body": "Hola {username}:\n\nNo hemos visto ninguna actividad en tu cuenta de {product_name} desde el {lastActiveDate, date, full}.\n\nSi no inicias sesión antes del {deletionDate, date, full} a las {deletionDate, time, short}, tu cuenta será eliminada permanentemente debido a la inactividad.\n\nInicia sesión aquí:\n{loginUrl}\n\nSi has usado {product_name} recientemente, ponte en contacto con nuestro equipo de soporte de inmediato.\n\n– Equipo de {product_name}"
},
"ip_authorization": {
"subject": "Autorizar inicio de sesión desde una nueva dirección IP",
"body": "Hola {username}:\n\nHemos detectado un intento de inicio de sesión en tu cuenta de {product_name} desde una nueva IP:\n\nDirección IP: {ipAddress}\nUbicación: {location}\n\nSi fuiste tú, autoriza esta dirección IP haciendo clic en el siguiente enlace:\n\n{authUrl}\n\nSi no intentaste iniciar sesión, cambia tu contraseña de inmediato.\n\nEste enlace es válido durante 30 minutos.\n\n– Equipo de {product_name}"
},
"password_change_verification": {
"subject": "Confirma tu cambio de contraseña en {product_name}",
"body": "Hola {username}:\n\nHemos recibido una solicitud para cambiar la contraseña de tu cuenta de {product_name}.\n\nPara confirmar este cambio, introduce este código en la aplicación:\n\n{code}\n\nEste código caduca el {expiresAt}.\n\nSi no solicitaste esto, alguien podría tener acceso a tu cuenta. Cambia tu contraseña inmediatamente y activa la autenticación de dos factores.\n\n– Equipo de {product_name}"
},
"password_reset": {
"subject": "Restablece tu contraseña en {product_name}",
"body": "Hola {username}:\n\nSolicitaste un restablecimiento de contraseña de {product_name}. Usa el siguiente enlace para establecer una nueva contraseña:\n\n{resetUrl}\n\nSi no solicitaste esto, puedes ignorar este correo electrónico.\n\nEste enlace es válido durante 1 hora.\n\n– Equipo de {product_name}"
},
"registration_approved": {
"subject": "Tu registro en {product_name} ha sido aprobado",
"body": "Hola {username}:\n\nBuenas noticias: tu registro en {product_name} ha sido aprobado.\n\nAhora puedes iniciar sesión en la aplicación de {product_name} aquí:\n{channelsUrl}\n\nBienvenido a la comunidad de {product_name}.\n\n– Equipo de {product_name}"
},
"report_resolved": {
"subject": "Tu informe en {product_name} ha sido revisado",
"body": "Hola {username}:\n\nTu informe (ID: {reportId}) ha sido revisado por nuestro Equipo de Seguridad.{hasComment, select, yes {\n\nRespuesta del Equipo de Seguridad:\n{publicComment}} other {}}\n\nGracias por ayudarnos a mantener {product_name} seguro para todos. Nos tomamos todos los informes en serio y agradecemos tu contribución a la comunidad.\n\nSi tienes alguna pregunta o inquietud sobre este resultado, ponte en contacto con {safety_email}.\n\n– Equipo de Seguridad de {product_name}"
},
"scheduled_deletion_notification": {
"subject": "Tu cuenta de {product_name} será eliminada permanentemente",
"body": "Hola {username}:\n\nTu cuenta de {product_name} ha sido programada para su eliminación permanente.\n\nEliminación programada: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nEsta es una medida grave. Los datos de tu cuenta se eliminarán permanentemente en la fecha programada.\n\nSi crees que esta decisión fue incorrecta, puedes presentar una apelación. Envía un correo electrónico a {appeals_email} desde esta dirección de correo electrónico.\n\n– Equipo de Seguridad de {product_name}"
},
"self_deletion_scheduled": {
"subject": "La eliminación de tu cuenta de {product_name} está programada",
"body": "Hola {username}:\n\nSolicitaste eliminar tu cuenta de {product_name}. Tu cuenta está programada para su eliminación permanente el:\n\n{deletionDate, date, full} a las {deletionDate, time, short}\n\nSi no solicitaste esto, inicia sesión en tu cuenta para cancelar la eliminación. También te recomendamos cambiar tu contraseña para proteger tu cuenta.\n\n– Equipo de {product_name}"
},
"unban_notification": {
"subject": "Se ha levantado la suspensión de tu cuenta de {product_name}",
"body": "Hola {username}:\n\nBuenas noticias: se ha levantado la suspensión de tu cuenta de {product_name}.\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nAhora puedes volver a iniciar sesión y seguir usando {product_name} con normalidad.\n\n– Equipo de Seguridad de {product_name}"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "Käyttäjätilisi {product_name}-palvelussa on tilapäisesti poistettu käytöstä",
"body": "Hei {username},\n\nOlemme poistaneet {product_name}-tilisi tilapäisesti käytöstä, koska havaitsimme epäilyttävää toimintaa.\n\n{reason, select,\n null {}\n other {Syy: {reason}}\n}\n\nPäästäksesi takaisin tilillesi sinun on nollattava salasanasi:\n\n{forgotUrl}\n\nKun olet nollannut salasanasi, voit kirjautua sisään uudelleen.\n\nJos uskot, että tämä oli virhe, ota yhteyttä tukitiimiimme.\n\n– {product_name}-turvallisuustiimi"
},
"account_scheduled_deletion": {
"subject": "Käyttäjätilisi {product_name}-palvelussa poistetaan pysyvästi",
"body": "Hei {username},\n\n{product_name}-käyttäjätilisi on ajoitettu poistettavaksi pysyvästi käyttöehtojemme tai yhteisön sääntöjemme rikkomusten vuoksi.\n\nAjoitettu poisto: {deletionDate, date, full} klo {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Syy: {reason}}\n}\n\nTämä on vakava toimenpide. Tilisi tiedot poistetaan pysyvästi ajoitettuna päivänä.\n\nTarkista:\n- Käyttöehdot: {termsUrl}\n- Yhteisön säännöt: {guidelinesUrl}\n\nValitusprosessi:\nJos uskot, että tämä päätös oli virheellinen tai perusteeton, sinulla on 60 päivää aikaa tehdä valitus. Lähetä sähköpostia osoitteeseen {appeals_email} tästä sähköpostiosoitteesta.\n\nValituksessasi:\n- Selitä selkeästi, miksi uskot päätöksen olleen virheellinen tai perusteeton\n- Anna kaikki asiaankuuluvat todisteet tai konteksti\n\n{product_name}-turvallisuustiimin jäsen tarkistaa valituksesi ja voi keskeyttää vireillä olevan poiston, kunnes lopullinen päätös on tehty.\n\n– {product_name}-turvallisuustiimi"
},
"account_temp_banned": {
"subject": "Käyttäjätilisi {product_name}-palvelussa on tilapäisesti jäädytetty",
"body": "Hei {username},\n\n{product_name}-käyttäjätilisi on jäädytetty tilapäisesti käyttöehtojemme tai yhteisön sääntöjemme rikkomisen vuoksi.\n\nKesto: {durationHours, plural,\n =1 {1 tunti}\n other {# tuntia}\n}\nJäädytettynä {bannedUntil, date, full} klo {bannedUntil, time, short} asti\n\n{reason, select,\n null {}\n other {Syy: {reason}}\n}\n\nTänä aikana et voi käyttää tiliäsi.\n\nTarkista:\n- Käyttöehdot: {termsUrl}\n- Yhteisön säännöt: {guidelinesUrl}\n\nJos uskot, että tämä päätös oli virheellinen tai perusteeton, voit tehdä valituksen. Lähetä sähköpostia osoitteeseen {appeals_email} tästä sähköpostiosoitteesta ja selitä selkeästi, miksi uskot päätöksen olleen virheellinen. Tarkistamme valituksesi ja vastaamme päätöksellämme.\n\n– {product_name}-turvallisuustiimi"
},
"donation_confirmation": {
"subject": "Kiitos {product_name}-lahjoituksestasi",
"body": "Hei,\n\nKiitos {product_name}-lahjoituksestasi! {interval, select,\n month {Toistuva lahjoituksesi}\n year {Toistuva lahjoituksesi}\n other {Kertalahjoituksesi}\n} on {interval, select,\n month {asetettu}\n year {asetettu}\n other {käsitelty}\n} onnistuneesti.\n\nLahjoituksen tiedot:\nSumma: {amount} {currency} {interval, select,\n month {kuukaudessa}\n year {vuodessa}\n other {}\n}\n\nStripe lähettää sinulle erillisen kuitin PDF-laskun kanssa pian. Tämä sisältää kaikki maksutiedot ja sitä voidaan käyttää verotuksessa.\n\nVoit tarkastella lahjoitushistoriaasi, ladata laskuja {interval, select,\n month {ja hallinnoida tai peruuttaa tilaustasi}\n year {ja hallinnoida tai peruuttaa tilaustasi}\n other {ja hallita tulevia lahjoituksia}\n} milloin tahansa käyttämällä tätä linkkiä:\n\n{manageUrl}\n\nTukesi auttaa pitämään {product_name}-palvelun toiminnassa. Kiitos!\n\n– {product_name}-tiimi"
},
"donation_magic_link": {
"subject": "Hallinnoi {product_name}-palvelun lahjoituksiasi",
"body": "Hei,\n\nNapsauta alla olevaa linkkiä päästäksesi lahjoittajaportaaliisi:\n\n{manageUrl}\n\nPortaalissa voit hallinnoida tilauksia, ladata laskuja ja tarkastella lahjoitushistoriaasi.\n\nTämä linkki vanhenee {expiresAt, date, full} klo {expiresAt, time, short}.\n\nJos et pyytänyt tätä linkkiä, voit jättää tämän sähköpostin turvallisesti huomiotta.\n\n– {product_name}-tiimi"
},
"dsa_report_verification": {
"subject": "Vahvista sähköpostiosoite DSA-raporttia varten",
"body": "Hei,\n\nKäytä alla olevaa vahvistuskoodia lähettääksesi DSA-raporttisi {product_name}-palveluun:\n\n{code}\n\nTämä koodi vanhenee {expiresAt, date, full} klo {expiresAt, time, short}.\n\nJos et pyytänyt tätä, voit jättää tämän sähköpostin huomiotta.\n\n– {product_name}-turvallisuustiimi"
},
"email_change_new": {
"subject": "Vahvista uusi sähköpostiosoitteesi {product_name}-tilillä",
"body": "Hei {username},\n\nSyötä tämä koodi sovellukseen vahvistaaksesi uuden sähköpostiosoitteesi {product_name}-tilillä:\n\n{code}\n\nTämä koodi vanhenee {expiresAt, date, full} klo {expiresAt, time, short}.\n\nJos et pyytänyt tätä, voit jättää tämän sähköpostin huomiotta.\n\n– {product_name}-tiimi"
},
"email_change_original": {
"subject": "Vahvista sähköpostiosoitteen muutos {product_name}-tilillä",
"body": "Hei {username},\n\nSaimme pyynnön muuttaa sähköpostiosoitetta {product_name}-tililläsi.\n\nVahvistaaksesi tämän muutoksen, syötä tämä koodi sovellukseen:\n\n{code}\n\nTämä koodi vanhenee {expiresAt, date, full} klo {expiresAt, time, short}.\n\nJos et pyytänyt tätä, turvaa tilisi välittömästi.\n\n– {product_name}-tiimi"
},
"email_change_revert": {
"subject": "{product_name}-tilisi sähköpostiosoite on vaihdettu",
"body": "Hei {username},\n\nSähköpostiosoitteesi {product_name}-tilillä on vaihdettu osoitteeseen {newEmail}.\n\nJos teit tämän muutoksen, toimenpiteitä ei tarvita. Jos et tehnyt, voit kumota muutoksen ja turvata tilisi käyttämällä tätä linkkiä:\n\n{revertUrl}\n\nTämä palauttaa edellisen sähköpostiosoitteesi, kirjaa sinut ulos kaikkialta, poistaa linkitetyt puhelinnumerot, poistaa MFA:n käytöstä ja edellyttää uuden salasanan asettamista.\n\n– {product_name}-turvallisuustiimi"
},
"email_verification": {
"subject": "Vahvista sähköpostiosoitteesi {product_name}-tilillä",
"body": "Hei {username},\n\nVahvista {product_name}-tilisi sähköpostiosoite napsauttamalla alla olevaa linkkiä:\n\n{verifyUrl}\n\nJos et luonut {product_name}-tiliä, voit jättää tämän sähköpostin turvallisesti huomiotta.\n\nTämä linkki on voimassa 24 tuntia.\n\n– {product_name}-tiimi"
},
"gift_chargeback_notification": {
"subject": "Lunastamasi lahjan edut on poistettu",
"body": "Hei {username},\n\nLunastamasi lahjakoodin oli alun perin maksanut joku muu. Kyseinen maksu on sittemmin peruutettu (takaisinperintä).\n\nTämän vuoksi olemme poistaneet edut, jotka lisättiin tilillesi, kun lunastit lahjan.\n\nJos uskot tämän olevan virhe, ota yhteyttä tukitiimiimme ja liitä mukaan kaikki tiedot lahjakoodista ja sen lunastusajankohdasta.\n\n– {product_name}-tiimi"
},
"harvest_completed": {
"subject": "{product_name}-tietojesi vienti on ladattavissa",
"body": "Hei {username},\n\nTietojesi vienti on valmis.\n\nLatauslinkki:\n{downloadUrl}\n\nMukana olevat viestit: {totalMessages, number}\nTiedoston koko: {fileSizeMB, number} MB\n\nTämä linkki vanhenee {expiresAt, date, full} klo {expiresAt, time, short}.\n\nJos et pyytänyt tätä vientiä, vaihda salasanasi välittömästi ja ota yhteyttä tukitiimiimme.\n\n– {product_name}-tiimi"
},
"inactivity_warning": {
"subject": "{product_name}-tilisi poistetaan käyttämättömyyden vuoksi",
"body": "Hei {username},\n\nEmme ole havainneet toimintaa {product_name}-tililläsi {lastActiveDate, date, full} jälkeen.\n\nJos et kirjaudu sisään {deletionDate, date, full} klo {deletionDate, time, short} mennessä, tilisi poistetaan pysyvästi passiivisuuden vuoksi.\n\nKirjaudu sisään täältä:\n{loginUrl}\n\nJos olet käyttänyt {product_name}-palvelua äskettäin, ota yhteyttä tukitiimiimme välittömästi.\n\n– {product_name}-tiimi"
},
"ip_authorization": {
"subject": "Hyväksy kirjautuminen uudesta IP-osoitteesta",
"body": "Hei {username},\n\nHavaitsimme kirjautumisyrityksen {product_name}-tilillesi uudesta IP-osoitteesta:\n\nIP-osoite: {ipAddress}\nSijainti: {location}\n\nJos tämä olit sinä, valtuuta tämä IP-osoite napsauttamalla alla olevaa linkkiä:\n\n{authUrl}\n\nJos et yrittänyt kirjautua sisään, vaihda salasanasi välittömästi.\n\nTämä linkki on voimassa 30 minuuttia.\n\n– {product_name}-tiimi"
},
"password_change_verification": {
"subject": "Vahvista salasanan muutos {product_name}-tilillä",
"body": "Hei {username},\n\nSaimme pyynnön muuttaa salasanaa {product_name}-tililläsi.\n\nVahvistaaksesi tämän muutoksen, syötä tämä koodi sovellukseen:\n\n{code}\n\nTämä koodi vanhenee {expiresAt}.\n\nJos et pyytänyt tätä, joku saattaa päästä tilillesi. Vaihda salasanasi välittömästi ja ota käyttöön kaksivaiheinen todennus.\n\n– {product_name}-tiimi"
},
"password_reset": {
"subject": "Nollaa {product_name}-salasanasi",
"body": "Hei {username},\n\nPyysit {product_name}-salasanan nollausta. Käytä alla olevaa linkkiä asettaaksesi uuden salasanan:\n\n{resetUrl}\n\nJos et pyytänyt tätä, voit jättää tämän sähköpostin turvallisesti huomiotta.\n\nTämä linkki on voimassa 1 tunnin.\n\n– {product_name}-tiimi"
},
"registration_approved": {
"subject": "{product_name}-rekisteröitymisesi on hyväksytty",
"body": "Hei {username},\n\nHyviä uutisia: {product_name}-rekisteröitymisesi on hyväksytty.\n\nVoit nyt kirjautua {product_name}-sovellukseen täältä:\n{channelsUrl}\n\nTervetuloa {product_name}-yhteisöön.\n\n– {product_name}-tiimi"
},
"report_resolved": {
"subject": "{product_name}-raporttisi on tarkistettu",
"body": "Hei {username},\n\nTurvallisuustiimimme on tarkistanut raporttisi (ID: {reportId}).{hasComment, select, yes {\n\nTurvallisuustiimin vastaus:\n{publicComment}} other {}}\n\nKiitos, että autat pitämään {product_name}-palvelun turvallisena kaikille. Otamme kaikki raportit vakavasti ja arvostamme panostasi yhteisöön.\n\nJos sinulla on kysyttävää tai huolenaiheita tästä tuloksesta, ota yhteyttä osoitteeseen {safety_email}.\n\n– {product_name}-turvallisuustiimi"
},
"scheduled_deletion_notification": {
"subject": "Käyttäjätilisi {product_name}-palvelussa poistetaan pysyvästi",
"body": "Hei {username},\n\n{product_name}-tilisi on ajoitettu poistettavaksi pysyvästi.\n\nAjoitettu poisto: {deletionDate, date, full} klo {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Syy: {reason}}\n}\n\nTämä on vakava toimenpide. Tilisi tiedot poistetaan pysyvästi ajoitettuna päivänä.\n\nJos uskot, että tämä päätös oli virheellinen, voit tehdä valituksen. Lähetä sähköpostia osoitteeseen {appeals_email} tästä sähköpostiosoitteesta.\n\n– {product_name}-turvallisuustiimi"
},
"self_deletion_scheduled": {
"subject": "{product_name}-tilisi poistaminen on ajoitettu",
"body": "Hei {username},\n\nPyysit {product_name}-tilisi poistamista. Tilisi on ajoitettu poistettavaksi pysyvästi:\n\n{deletionDate, date, full} klo {deletionDate, time, short}\n\nJos et pyytänyt tätä, kirjaudu tilillesi peruuttaaksesi poiston. Suosittelemme myös vaihtamaan salasanasi tilisi turvaamiseksi.\n\n– {product_name}-tiimi"
},
"unban_notification": {
"subject": "{product_name}-tilisi jäädytys on poistettu",
"body": "Hei {username},\n\nHyviä uutisia: {product_name}-tilisi jäädytys on poistettu.\n\n{reason, select,\n null {}\n other {Syy: {reason}}\n}\n\nVoit nyt kirjautua takaisin sisään ja jatkaa {product_name}-palvelun käyttöä normaalisti.\n\n– {product_name}-turvallisuustiimi"
}
"account_disabled_suspicious": {
"subject": "Käyttäjätilisi {product_name}-palvelussa on tilapäisesti poistettu käytöstä",
"body": "Hei {username},\n\nOlemme poistaneet {product_name}-tilisi tilapäisesti käytöstä, koska havaitsimme epäilyttävää toimintaa.\n\n{reason, select,\n null {}\n other {Syy: {reason}}\n}\n\nPäästäksesi takaisin tilillesi sinun on nollattava salasanasi:\n\n{forgotUrl}\n\nKun olet nollannut salasanasi, voit kirjautua sisään uudelleen.\n\nJos uskot, että tämä oli virhe, ota yhteyttä tukitiimiimme.\n\n– {product_name}-turvallisuustiimi"
},
"account_scheduled_deletion": {
"subject": "Käyttäjätilisi {product_name}-palvelussa poistetaan pysyvästi",
"body": "Hei {username},\n\n{product_name}-käyttäjätilisi on ajoitettu poistettavaksi pysyvästi käyttöehtojemme tai yhteisön sääntöjemme rikkomusten vuoksi.\n\nAjoitettu poisto: {deletionDate, date, full} klo {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Syy: {reason}}\n}\n\nTämä on vakava toimenpide. Tilisi tiedot poistetaan pysyvästi ajoitettuna päivänä.\n\nTarkista:\n- Käyttöehdot: {termsUrl}\n- Yhteisön säännöt: {guidelinesUrl}\n\nValitusprosessi:\nJos uskot, että tämä päätös oli virheellinen tai perusteeton, sinulla on 60 päivää aikaa tehdä valitus. Lähetä sähköpostia osoitteeseen {appeals_email} tästä sähköpostiosoitteesta.\n\nValituksessasi:\n- Selitä selkeästi, miksi uskot päätöksen olleen virheellinen tai perusteeton\n- Anna kaikki asiaankuuluvat todisteet tai konteksti\n\n{product_name}-turvallisuustiimin jäsen tarkistaa valituksesi ja voi keskeyttää vireillä olevan poiston, kunnes lopullinen päätös on tehty.\n\n– {product_name}-turvallisuustiimi"
},
"account_temp_banned": {
"subject": "Käyttäjätilisi {product_name}-palvelussa on tilapäisesti jäädytetty",
"body": "Hei {username},\n\n{product_name}-käyttäjätilisi on jäädytetty tilapäisesti käyttöehtojemme tai yhteisön sääntöjemme rikkomisen vuoksi.\n\nKesto: {durationHours, plural,\n =1 {1 tunti}\n other {# tuntia}\n}\nJäädytettynä {bannedUntil, date, full} klo {bannedUntil, time, short} asti\n\n{reason, select,\n null {}\n other {Syy: {reason}}\n}\n\nTänä aikana et voi käyttää tiliäsi.\n\nTarkista:\n- Käyttöehdot: {termsUrl}\n- Yhteisön säännöt: {guidelinesUrl}\n\nJos uskot, että tämä päätös oli virheellinen tai perusteeton, voit tehdä valituksen. Lähetä sähköpostia osoitteeseen {appeals_email} tästä sähköpostiosoitteesta ja selitä selkeästi, miksi uskot päätöksen olleen virheellinen. Tarkistamme valituksesi ja vastaamme päätöksellämme.\n\n– {product_name}-turvallisuustiimi"
},
"donation_confirmation": {
"subject": "Kiitos {product_name}-lahjoituksestasi",
"body": "Hei,\n\nKiitos {product_name}-lahjoituksestasi! {interval, select,\n month {Toistuva lahjoituksesi}\n year {Toistuva lahjoituksesi}\n other {Kertalahjoituksesi}\n} on {interval, select,\n month {asetettu}\n year {asetettu}\n other {käsitelty}\n} onnistuneesti.\n\nLahjoituksen tiedot:\nSumma: {amount} {currency} {interval, select,\n month {kuukaudessa}\n year {vuodessa}\n other {}\n}\n\nStripe lähettää sinulle erillisen kuitin PDF-laskun kanssa pian. Tämä sisältää kaikki maksutiedot ja sitä voidaan käyttää verotuksessa.\n\nVoit tarkastella lahjoitushistoriaasi, ladata laskuja {interval, select,\n month {ja hallinnoida tai peruuttaa tilaustasi}\n year {ja hallinnoida tai peruuttaa tilaustasi}\n other {ja hallita tulevia lahjoituksia}\n} milloin tahansa käyttämällä tätä linkkiä:\n\n{manageUrl}\n\nTukesi auttaa pitämään {product_name}-palvelun toiminnassa. Kiitos!\n\n– {product_name}-tiimi"
},
"donation_magic_link": {
"subject": "Hallinnoi {product_name}-palvelun lahjoituksiasi",
"body": "Hei,\n\nNapsauta alla olevaa linkkiä päästäksesi lahjoittajaportaaliisi:\n\n{manageUrl}\n\nPortaalissa voit hallinnoida tilauksia, ladata laskuja ja tarkastella lahjoitushistoriaasi.\n\nTämä linkki vanhenee {expiresAt, date, full} klo {expiresAt, time, short}.\n\nJos et pyytänyt tätä linkkiä, voit jättää tämän sähköpostin turvallisesti huomiotta.\n\n– {product_name}-tiimi"
},
"dsa_report_verification": {
"subject": "Vahvista sähköpostiosoite DSA-raporttia varten",
"body": "Hei,\n\nKäytä alla olevaa vahvistuskoodia lähettääksesi DSA-raporttisi {product_name}-palveluun:\n\n{code}\n\nTämä koodi vanhenee {expiresAt, date, full} klo {expiresAt, time, short}.\n\nJos et pyytänyt tätä, voit jättää tämän sähköpostin huomiotta.\n\n– {product_name}-turvallisuustiimi"
},
"email_change_new": {
"subject": "Vahvista uusi sähköpostiosoitteesi {product_name}-tilillä",
"body": "Hei {username},\n\nSyötä tämä koodi sovellukseen vahvistaaksesi uuden sähköpostiosoitteesi {product_name}-tilillä:\n\n{code}\n\nTämä koodi vanhenee {expiresAt, date, full} klo {expiresAt, time, short}.\n\nJos et pyytänyt tätä, voit jättää tämän sähköpostin huomiotta.\n\n– {product_name}-tiimi"
},
"email_change_original": {
"subject": "Vahvista sähköpostiosoitteen muutos {product_name}-tilillä",
"body": "Hei {username},\n\nSaimme pyynnön muuttaa sähköpostiosoitetta {product_name}-tililläsi.\n\nVahvistaaksesi tämän muutoksen, syötä tämä koodi sovellukseen:\n\n{code}\n\nTämä koodi vanhenee {expiresAt, date, full} klo {expiresAt, time, short}.\n\nJos et pyytänyt tätä, turvaa tilisi välittömästi.\n\n– {product_name}-tiimi"
},
"email_change_revert": {
"subject": "{product_name}-tilisi sähköpostiosoite on vaihdettu",
"body": "Hei {username},\n\nSähköpostiosoitteesi {product_name}-tilillä on vaihdettu osoitteeseen {newEmail}.\n\nJos teit tämän muutoksen, toimenpiteitä ei tarvita. Jos et tehnyt, voit kumota muutoksen ja turvata tilisi käyttämällä tätä linkkiä:\n\n{revertUrl}\n\nTämä palauttaa edellisen sähköpostiosoitteesi, kirjaa sinut ulos kaikkialta, poistaa linkitetyt puhelinnumerot, poistaa MFA:n käytöstä ja edellyttää uuden salasanan asettamista.\n\n– {product_name}-turvallisuustiimi"
},
"email_verification": {
"subject": "Vahvista sähköpostiosoitteesi {product_name}-tilillä",
"body": "Hei {username},\n\nVahvista {product_name}-tilisi sähköpostiosoite napsauttamalla alla olevaa linkkiä:\n\n{verifyUrl}\n\nJos et luonut {product_name}-tiliä, voit jättää tämän sähköpostin turvallisesti huomiotta.\n\nTämä linkki on voimassa 24 tuntia.\n\n– {product_name}-tiimi"
},
"gift_chargeback_notification": {
"subject": "Lunastamasi lahjan edut on poistettu",
"body": "Hei {username},\n\nLunastamasi lahjakoodin oli alun perin maksanut joku muu. Kyseinen maksu on sittemmin peruutettu (takaisinperintä).\n\nTämän vuoksi olemme poistaneet edut, jotka lisättiin tilillesi, kun lunastit lahjan.\n\nJos uskot tämän olevan virhe, ota yhteyttä tukitiimiimme ja liitä mukaan kaikki tiedot lahjakoodista ja sen lunastusajankohdasta.\n\n– {product_name}-tiimi"
},
"harvest_completed": {
"subject": "{product_name}-tietojesi vienti on ladattavissa",
"body": "Hei {username},\n\nTietojesi vienti on valmis.\n\nLatauslinkki:\n{downloadUrl}\n\nMukana olevat viestit: {totalMessages, number}\nTiedoston koko: {fileSizeMB, number} MB\n\nTämä linkki vanhenee {expiresAt, date, full} klo {expiresAt, time, short}.\n\nJos et pyytänyt tätä vientiä, vaihda salasanasi välittömästi ja ota yhteyttä tukitiimiimme.\n\n– {product_name}-tiimi"
},
"inactivity_warning": {
"subject": "{product_name}-tilisi poistetaan käyttämättömyyden vuoksi",
"body": "Hei {username},\n\nEmme ole havainneet toimintaa {product_name}-tililläsi {lastActiveDate, date, full} jälkeen.\n\nJos et kirjaudu sisään {deletionDate, date, full} klo {deletionDate, time, short} mennessä, tilisi poistetaan pysyvästi passiivisuuden vuoksi.\n\nKirjaudu sisään täältä:\n{loginUrl}\n\nJos olet käyttänyt {product_name}-palvelua äskettäin, ota yhteyttä tukitiimiimme välittömästi.\n\n– {product_name}-tiimi"
},
"ip_authorization": {
"subject": "Hyväksy kirjautuminen uudesta IP-osoitteesta",
"body": "Hei {username},\n\nHavaitsimme kirjautumisyrityksen {product_name}-tilillesi uudesta IP-osoitteesta:\n\nIP-osoite: {ipAddress}\nSijainti: {location}\n\nJos tämä olit sinä, valtuuta tämä IP-osoite napsauttamalla alla olevaa linkkiä:\n\n{authUrl}\n\nJos et yrittänyt kirjautua sisään, vaihda salasanasi välittömästi.\n\nTämä linkki on voimassa 30 minuuttia.\n\n– {product_name}-tiimi"
},
"password_change_verification": {
"subject": "Vahvista salasanan muutos {product_name}-tilillä",
"body": "Hei {username},\n\nSaimme pyynnön muuttaa salasanaa {product_name}-tililläsi.\n\nVahvistaaksesi tämän muutoksen, syötä tämä koodi sovellukseen:\n\n{code}\n\nTämä koodi vanhenee {expiresAt}.\n\nJos et pyytänyt tätä, joku saattaa päästä tilillesi. Vaihda salasanasi välittömästi ja ota käyttöön kaksivaiheinen todennus.\n\n– {product_name}-tiimi"
},
"password_reset": {
"subject": "Nollaa {product_name}-salasanasi",
"body": "Hei {username},\n\nPyysit {product_name}-salasanan nollausta. Käytä alla olevaa linkkiä asettaaksesi uuden salasanan:\n\n{resetUrl}\n\nJos et pyytänyt tätä, voit jättää tämän sähköpostin turvallisesti huomiotta.\n\nTämä linkki on voimassa 1 tunnin.\n\n– {product_name}-tiimi"
},
"registration_approved": {
"subject": "{product_name}-rekisteröitymisesi on hyväksytty",
"body": "Hei {username},\n\nHyviä uutisia: {product_name}-rekisteröitymisesi on hyväksytty.\n\nVoit nyt kirjautua {product_name}-sovellukseen täältä:\n{channelsUrl}\n\nTervetuloa {product_name}-yhteisöön.\n\n– {product_name}-tiimi"
},
"report_resolved": {
"subject": "{product_name}-raporttisi on tarkistettu",
"body": "Hei {username},\n\nTurvallisuustiimimme on tarkistanut raporttisi (ID: {reportId}).{hasComment, select, yes {\n\nTurvallisuustiimin vastaus:\n{publicComment}} other {}}\n\nKiitos, että autat pitämään {product_name}-palvelun turvallisena kaikille. Otamme kaikki raportit vakavasti ja arvostamme panostasi yhteisöön.\n\nJos sinulla on kysyttävää tai huolenaiheita tästä tuloksesta, ota yhteyttä osoitteeseen {safety_email}.\n\n– {product_name}-turvallisuustiimi"
},
"scheduled_deletion_notification": {
"subject": "Käyttäjätilisi {product_name}-palvelussa poistetaan pysyvästi",
"body": "Hei {username},\n\n{product_name}-tilisi on ajoitettu poistettavaksi pysyvästi.\n\nAjoitettu poisto: {deletionDate, date, full} klo {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Syy: {reason}}\n}\n\nTämä on vakava toimenpide. Tilisi tiedot poistetaan pysyvästi ajoitettuna päivänä.\n\nJos uskot, että tämä päätös oli virheellinen, voit tehdä valituksen. Lähetä sähköpostia osoitteeseen {appeals_email} tästä sähköpostiosoitteesta.\n\n– {product_name}-turvallisuustiimi"
},
"self_deletion_scheduled": {
"subject": "{product_name}-tilisi poistaminen on ajoitettu",
"body": "Hei {username},\n\nPyysit {product_name}-tilisi poistamista. Tilisi on ajoitettu poistettavaksi pysyvästi:\n\n{deletionDate, date, full} klo {deletionDate, time, short}\n\nJos et pyytänyt tätä, kirjaudu tilillesi peruuttaaksesi poiston. Suosittelemme myös vaihtamaan salasanasi tilisi turvaamiseksi.\n\n– {product_name}-tiimi"
},
"unban_notification": {
"subject": "{product_name}-tilisi jäädytys on poistettu",
"body": "Hei {username},\n\nHyviä uutisia: {product_name}-tilisi jäädytys on poistettu.\n\n{reason, select,\n null {}\n other {Syy: {reason}}\n}\n\nVoit nyt kirjautua takaisin sisään ja jatkaa {product_name}-palvelun käyttöä normaalisti.\n\n– {product_name}-turvallisuustiimi"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "Ton compte {product_name} a été temporairement désactivé",
"body": "Bonjour {username},\n\nNous avons temporairement désactivé ton compte {product_name} car nous avons détecté une activité suspecte.\n\n{reason, select,\n null {}\n other {Raison : {reason}}\n}\n\nPour retrouver l'accès à ton compte, tu devras réinitialiser ton mot de passe :\n\n{forgotUrl}\n\nAprès avoir réinitialisé ton mot de passe, tu pourras te connecter à nouveau.\n\nSi tu penses qu'il s'agit d'une erreur, contacte notre équipe d'assistance.\n\n– Équipe de sécurité de {product_name}"
},
"account_scheduled_deletion": {
"subject": "Ton compte {product_name} sera définitivement supprimé",
"body": "Bonjour {username},\n\nLa suppression définitive de ton compte {product_name} a été programmée en raison de violations de nos Conditions d'utilisation ou de nos Règles de la communauté.\n\nSuppression programmée : {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Raison : {reason}}\n}\n\nIl s'agit d'une mesure sérieuse. Les données de ton compte seront définitivement supprimées à la date prévue.\n\nConsulte :\n- Conditions d'utilisation : {termsUrl}\n- Règles de la communauté : {guidelinesUrl}\n\nProcédure d'appel :\nSi tu penses que cette décision était incorrecte ou injustifiée, tu as 60 jours pour soumettre un appel. Envoie un e-mail à {appeals_email} depuis cette adresse e-mail.\n\nDans ton appel :\n- Explique clairement pourquoi tu penses que la décision était incorrecte ou injustifiée\n- Fournis toute preuve ou contexte pertinent\n\nUn membre de l'équipe de sécurité de {product_name} examinera ton appel et pourra suspendre la suppression en attente jusqu'à ce qu'une décision finale soit prise.\n\n– Équipe de sécurité de {product_name}"
},
"account_temp_banned": {
"subject": "Ton compte {product_name} a été temporairement suspendu",
"body": "Bonjour {username},\n\nTon compte {product_name} a été temporairement suspendu pour avoir enfreint nos Conditions d'utilisation ou nos Règles de la communauté.\n\nDurée : {durationHours, plural,\n =1 {1 heure}\n other {# heures}\n}\nSuspendu jusqu'au : {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Raison : {reason}}\n}\n\nPendant cette période, tu ne pourras pas accéder à ton compte.\n\nConsulte :\n- Conditions d'utilisation : {termsUrl}\n- Règles de la communauté : {guidelinesUrl}\n\nSi tu penses que cette décision était incorrecte ou injustifiée, tu peux faire appel. Envoie un e-mail à {appeals_email} depuis cette adresse e-mail et explique clairement pourquoi tu penses que la décision était incorrecte. Nous examinerons ton appel et te répondrons avec notre décision.\n\n– Équipe de sécurité de {product_name}"
},
"donation_confirmation": {
"subject": "Merci pour ton don à {product_name}",
"body": "Bonjour,\n\nMerci pour ton don à {product_name} ! Ton {interval, select,\n month {don récurrent}\n year {don récurrent}\n other {don unique}\n} a été {interval, select,\n month {mis en place}\n year {mis en place}\n other {traité}\n} avec succès.\n\nDétails du don :\nMontant : {amount} {currency} {interval, select,\n month {par mois}\n year {par an}\n other {}\n}\n\nStripe t'enverra sous peu un reçu séparé avec ta facture PDF. Cela inclut tous les détails de paiement et peut être utilisé à des fins fiscales.\n\nTu peux consulter l'historique de tes dons, télécharger des factures, {interval, select,\n month {et gérer ou annuler ton abonnement}\n year {et gérer ou annuler ton abonnement}\n other {et gérer les futurs dons}\n} à tout moment en utilisant ce lien :\n\n{manageUrl}\n\nTon soutien aide à maintenir {product_name} en fonctionnement. Merci !\n\n– L'équipe {product_name}"
},
"donation_magic_link": {
"subject": "Gérer tes dons {product_name}",
"body": "Bonjour,\n\nClique sur le lien ci-dessous pour accéder à ton portail de donateur :\n\n{manageUrl}\n\nDans le portail, tu peux gérer tes abonnements, télécharger des factures et consulter l'historique de tes dons.\n\nCe lien expire le {expiresAt, date, full} à {expiresAt, time, short}.\n\nSi tu n'as pas demandé ce lien, tu peux ignorer cet e-mail en toute sécurité.\n\n– L'équipe {product_name}"
},
"dsa_report_verification": {
"subject": "Vérifie ton e-mail pour un signalement DSA",
"body": "Bonjour,\n\nUtilise le code de vérification ci-dessous pour soumettre ton signalement DSA sur {product_name} :\n\n{code}\n\nCe code expire le {expiresAt, date, full} à {expiresAt, time, short}.\n\nSi tu n'as pas demandé cela, tu peux ignorer cet e-mail.\n\n– Équipe de sécurité de {product_name}"
},
"email_change_new": {
"subject": "Vérifie ta nouvelle adresse e-mail {product_name}",
"body": "Bonjour {username},\n\nSaisis ce code dans l'application pour vérifier ta nouvelle adresse e-mail {product_name} :\n\n{code}\n\nCe code expire le {expiresAt, date, full} à {expiresAt, time, short}.\n\nSi tu n'as pas demandé cela, tu peux ignorer cet e-mail.\n\n– L'équipe {product_name}"
},
"email_change_original": {
"subject": "Confirme ton changement d'e-mail {product_name}",
"body": "Bonjour {username},\n\nNous avons reçu une demande de modification de l'adresse e-mail de ton compte {product_name}.\n\nPour confirmer ce changement, saisis ce code dans l'application :\n\n{code}\n\nCe code expire le {expiresAt, date, full} à {expiresAt, time, short}.\n\nSi tu n'as pas demandé cela, sécurise ton compte immédiatement.\n\n– L'équipe {product_name}"
},
"email_change_revert": {
"subject": "Ton e-mail {product_name} a été modifié",
"body": "Bonjour {username},\n\nL'adresse e-mail de ton compte {product_name} a été modifiée pour {newEmail}.\n\nSi tu as effectué ce changement, aucune action n'est nécessaire. Si ce n'est pas le cas, tu peux annuler le changement et sécuriser ton compte en utilisant ce lien :\n\n{revertUrl}\n\nCela restaurera ton e-mail précédent, te déconnectera de toutes les sessions, supprimera les numéros de téléphone liés, désactivera l'authentification multifacteur et t'obligera à définir un nouveau mot de passe.\n\n– Équipe de sécurité de {product_name}"
},
"email_verification": {
"subject": "Vérifie ton adresse e-mail {product_name}",
"body": "Bonjour {username},\n\nVérifie l'adresse e-mail de ton compte {product_name} en cliquant sur le lien ci-dessous :\n\n{verifyUrl}\n\nSi tu n'as pas créé de compte {product_name}, tu peux ignorer cet e-mail en toute sécurité.\n\nCe lien est valide pendant 24 heures.\n\n– L'équipe {product_name}"
},
"gift_chargeback_notification": {
"subject": "Les avantages de ton cadeau échangé ont été supprimés",
"body": "Bonjour {username},\n\nUn code cadeau que tu as échangé a été initialement payé par quelqu'un d'autre. Ce paiement a depuis été annulé (une rétrofacturation).\n\nPour cette raison, nous avons supprimé les avantages qui ont été ajoutés à ton compte lorsque tu as échangé le cadeau.\n\nSi tu penses qu'il s'agit d'une erreur, contacte notre équipe d'assistance et inclus tous les détails que tu as concernant le code cadeau et le moment où tu l'as échangé.\n\n– L'équipe {product_name}"
},
"harvest_completed": {
"subject": "Ton export de données {product_name} est prêt à être téléchargé",
"body": "Bonjour {username},\n\nTon export de données est prêt.\n\nLien de téléchargement :\n{downloadUrl}\n\nMessages inclus : {totalMessages, number}\nTaille du fichier : {fileSizeMB, number} Mo\n\nCe lien expire le {expiresAt, date, full} à {expiresAt, time, short}.\n\nSi tu n'as pas demandé cet export, change ton mot de passe immédiatement et contacte notre équipe d'assistance.\n\n– L'équipe {product_name}"
},
"inactivity_warning": {
"subject": "Ton compte {product_name} sera supprimé en raison d'inactivité",
"body": "Bonjour {username},\n\nNous n'avons détecté aucune activité sur ton compte {product_name} depuis le {lastActiveDate, date, full}.\n\nSi tu ne te connectes pas avant le {deletionDate, date, full} à {deletionDate, time, short}, ton compte sera définitivement supprimé en raison d'inactivité.\n\nConnecte-toi ici :\n{loginUrl}\n\nSi tu as utilisé {product_name} récemment, contacte notre équipe d'assistance immédiatement.\n\n– L'équipe {product_name}"
},
"ip_authorization": {
"subject": "Autoriser la connexion depuis une nouvelle adresse IP",
"body": "Bonjour {username},\n\nNous avons détecté une tentative de connexion à ton compte {product_name} depuis une nouvelle adresse IP :\n\nAdresse IP : {ipAddress}\nLocalisation : {location}\n\nSi c'était toi, autorise cette adresse IP en cliquant sur le lien ci-dessous :\n\n{authUrl}\n\nSi tu n'as pas tenté de te connecter, change ton mot de passe immédiatement.\n\nCe lien est valide pendant 30 minutes.\n\n– L'équipe {product_name}"
},
"password_change_verification": {
"subject": "Confirme la modification de ton mot de passe {product_name}",
"body": "Bonjour {username},\n\nNous avons reçu une demande de modification du mot de passe de ton compte {product_name}.\n\nPour confirmer cette modification, saisis ce code dans l'application :\n\n{code}\n\nCe code expire à {expiresAt}.\n\nSi tu n'as pas demandé cela, quelqu'un a peut-être eu accès à ton compte. Change ton mot de passe immédiatement et active l'authentification à deux facteurs.\n\n– L'équipe {product_name}"
},
"password_reset": {
"subject": "Réinitialiser ton mot de passe {product_name}",
"body": "Bonjour {username},\n\nTu as demandé une réinitialisation de ton mot de passe {product_name}. Utilise le lien ci-dessous pour définir un nouveau mot de passe :\n\n{resetUrl}\n\nSi tu n'as pas demandé cela, tu peux ignorer cet e-mail en toute sécurité.\n\nCe lien est valide pendant 1 heure.\n\n– L'équipe {product_name}"
},
"registration_approved": {
"subject": "Ton inscription {product_name} a été approuvée",
"body": "Bonjour {username},\n\nBonne nouvelle : ton inscription {product_name} a été approuvée.\n\nTu peux maintenant te connecter à l'application {product_name} ici :\n{channelsUrl}\n\nBienvenue dans la communauté {product_name}.\n\n– L'équipe {product_name}"
},
"report_resolved": {
"subject": "Ton signalement {product_name} a été examiné",
"body": "Bonjour {username},\n\nTon signalement (ID : {reportId}) a été examiné par notre équipe de sécurité.{hasComment, select, yes {\n\nRéponse de l'équipe de sécurité :\n{publicComment}} other {}}\n\nMerci de nous aider à préserver la sécurité de {product_name} pour tous. Nous prenons tous les signalements au sérieux et apprécions ta contribution à la communauté.\n\nSi tu as des questions ou des préoccupations concernant ce résultat, contacte {safety_email}.\n\n– Équipe de sécurité de {product_name}"
},
"scheduled_deletion_notification": {
"subject": "Ton compte {product_name} sera définitivement supprimé",
"body": "Bonjour {username},\n\nLa suppression définitive de ton compte {product_name} a été programmée.\n\nSuppression programmée : {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Raison : {reason}}\n}\n\nIl s'agit d'une mesure sérieuse. Les données de ton compte seront définitivement supprimées à la date prévue.\n\nSi tu penses que cette décision était incorrecte, tu peux soumettre un appel. Envoie un e-mail à {appeals_email} depuis cette adresse e-mail.\n\n– Équipe de sécurité de {product_name}"
},
"self_deletion_scheduled": {
"subject": "La suppression de ton compte {product_name} est programmée",
"body": "Bonjour {username},\n\nTu as demandé la suppression de ton compte {product_name}. Ton compte est programmé pour une suppression définitive le :\n\n{deletionDate, date, full} à {deletionDate, time, short}\n\nSi tu n'as pas demandé cela, connecte-toi à ton compte pour annuler la suppression. Nous te recommandons également de changer ton mot de passe pour sécuriser ton compte.\n\n– L'équipe {product_name}"
},
"unban_notification": {
"subject": "La suspension de ton compte {product_name} a été levée",
"body": "Bonjour {username},\n\nBonne nouvelle : la suspension de ton compte {product_name} a été levée.\n\n{reason, select,\n null {}\n other {Raison : {reason}}\n}\n\nTu peux maintenant te reconnecter et continuer à utiliser {product_name} normalement.\n\n– Équipe de sécurité de {product_name}"
}
"account_disabled_suspicious": {
"subject": "Ton compte {product_name} a été temporairement désactivé",
"body": "Bonjour {username},\n\nNous avons temporairement désactivé ton compte {product_name} car nous avons détecté une activité suspecte.\n\n{reason, select,\n null {}\n other {Raison : {reason}}\n}\n\nPour retrouver l'accès à ton compte, tu devras réinitialiser ton mot de passe :\n\n{forgotUrl}\n\nAprès avoir réinitialisé ton mot de passe, tu pourras te connecter à nouveau.\n\nSi tu penses qu'il s'agit d'une erreur, contacte notre équipe d'assistance.\n\n– Équipe de sécurité de {product_name}"
},
"account_scheduled_deletion": {
"subject": "Ton compte {product_name} sera définitivement supprimé",
"body": "Bonjour {username},\n\nLa suppression définitive de ton compte {product_name} a été programmée en raison de violations de nos Conditions d'utilisation ou de nos Règles de la communauté.\n\nSuppression programmée : {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Raison : {reason}}\n}\n\nIl s'agit d'une mesure sérieuse. Les données de ton compte seront définitivement supprimées à la date prévue.\n\nConsulte :\n- Conditions d'utilisation : {termsUrl}\n- Règles de la communauté : {guidelinesUrl}\n\nProcédure d'appel :\nSi tu penses que cette décision était incorrecte ou injustifiée, tu as 60 jours pour soumettre un appel. Envoie un e-mail à {appeals_email} depuis cette adresse e-mail.\n\nDans ton appel :\n- Explique clairement pourquoi tu penses que la décision était incorrecte ou injustifiée\n- Fournis toute preuve ou contexte pertinent\n\nUn membre de l'équipe de sécurité de {product_name} examinera ton appel et pourra suspendre la suppression en attente jusqu'à ce qu'une décision finale soit prise.\n\n– Équipe de sécurité de {product_name}"
},
"account_temp_banned": {
"subject": "Ton compte {product_name} a été temporairement suspendu",
"body": "Bonjour {username},\n\nTon compte {product_name} a été temporairement suspendu pour avoir enfreint nos Conditions d'utilisation ou nos Règles de la communauté.\n\nDurée : {durationHours, plural,\n =1 {1 heure}\n other {# heures}\n}\nSuspendu jusqu'au : {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Raison : {reason}}\n}\n\nPendant cette période, tu ne pourras pas accéder à ton compte.\n\nConsulte :\n- Conditions d'utilisation : {termsUrl}\n- Règles de la communauté : {guidelinesUrl}\n\nSi tu penses que cette décision était incorrecte ou injustifiée, tu peux faire appel. Envoie un e-mail à {appeals_email} depuis cette adresse e-mail et explique clairement pourquoi tu penses que la décision était incorrecte. Nous examinerons ton appel et te répondrons avec notre décision.\n\n– Équipe de sécurité de {product_name}"
},
"donation_confirmation": {
"subject": "Merci pour ton don à {product_name}",
"body": "Bonjour,\n\nMerci pour ton don à {product_name} ! Ton {interval, select,\n month {don récurrent}\n year {don récurrent}\n other {don unique}\n} a été {interval, select,\n month {mis en place}\n year {mis en place}\n other {traité}\n} avec succès.\n\nDétails du don :\nMontant : {amount} {currency} {interval, select,\n month {par mois}\n year {par an}\n other {}\n}\n\nStripe t'enverra sous peu un reçu séparé avec ta facture PDF. Cela inclut tous les détails de paiement et peut être utilisé à des fins fiscales.\n\nTu peux consulter l'historique de tes dons, télécharger des factures, {interval, select,\n month {et gérer ou annuler ton abonnement}\n year {et gérer ou annuler ton abonnement}\n other {et gérer les futurs dons}\n} à tout moment en utilisant ce lien :\n\n{manageUrl}\n\nTon soutien aide à maintenir {product_name} en fonctionnement. Merci !\n\n– L'équipe {product_name}"
},
"donation_magic_link": {
"subject": "Gérer tes dons {product_name}",
"body": "Bonjour,\n\nClique sur le lien ci-dessous pour accéder à ton portail de donateur :\n\n{manageUrl}\n\nDans le portail, tu peux gérer tes abonnements, télécharger des factures et consulter l'historique de tes dons.\n\nCe lien expire le {expiresAt, date, full} à {expiresAt, time, short}.\n\nSi tu n'as pas demandé ce lien, tu peux ignorer cet e-mail en toute sécurité.\n\n– L'équipe {product_name}"
},
"dsa_report_verification": {
"subject": "Vérifie ton e-mail pour un signalement DSA",
"body": "Bonjour,\n\nUtilise le code de vérification ci-dessous pour soumettre ton signalement DSA sur {product_name} :\n\n{code}\n\nCe code expire le {expiresAt, date, full} à {expiresAt, time, short}.\n\nSi tu n'as pas demandé cela, tu peux ignorer cet e-mail.\n\n– Équipe de sécurité de {product_name}"
},
"email_change_new": {
"subject": "Vérifie ta nouvelle adresse e-mail {product_name}",
"body": "Bonjour {username},\n\nSaisis ce code dans l'application pour vérifier ta nouvelle adresse e-mail {product_name} :\n\n{code}\n\nCe code expire le {expiresAt, date, full} à {expiresAt, time, short}.\n\nSi tu n'as pas demandé cela, tu peux ignorer cet e-mail.\n\n– L'équipe {product_name}"
},
"email_change_original": {
"subject": "Confirme ton changement d'e-mail {product_name}",
"body": "Bonjour {username},\n\nNous avons reçu une demande de modification de l'adresse e-mail de ton compte {product_name}.\n\nPour confirmer ce changement, saisis ce code dans l'application :\n\n{code}\n\nCe code expire le {expiresAt, date, full} à {expiresAt, time, short}.\n\nSi tu n'as pas demandé cela, sécurise ton compte immédiatement.\n\n– L'équipe {product_name}"
},
"email_change_revert": {
"subject": "Ton e-mail {product_name} a été modifié",
"body": "Bonjour {username},\n\nL'adresse e-mail de ton compte {product_name} a été modifiée pour {newEmail}.\n\nSi tu as effectué ce changement, aucune action n'est nécessaire. Si ce n'est pas le cas, tu peux annuler le changement et sécuriser ton compte en utilisant ce lien :\n\n{revertUrl}\n\nCela restaurera ton e-mail précédent, te déconnectera de toutes les sessions, supprimera les numéros de téléphone liés, désactivera l'authentification multifacteur et t'obligera à définir un nouveau mot de passe.\n\n– Équipe de sécurité de {product_name}"
},
"email_verification": {
"subject": "Vérifie ton adresse e-mail {product_name}",
"body": "Bonjour {username},\n\nVérifie l'adresse e-mail de ton compte {product_name} en cliquant sur le lien ci-dessous :\n\n{verifyUrl}\n\nSi tu n'as pas créé de compte {product_name}, tu peux ignorer cet e-mail en toute sécurité.\n\nCe lien est valide pendant 24 heures.\n\n– L'équipe {product_name}"
},
"gift_chargeback_notification": {
"subject": "Les avantages de ton cadeau échangé ont été supprimés",
"body": "Bonjour {username},\n\nUn code cadeau que tu as échangé a été initialement payé par quelqu'un d'autre. Ce paiement a depuis été annulé (une rétrofacturation).\n\nPour cette raison, nous avons supprimé les avantages qui ont été ajoutés à ton compte lorsque tu as échangé le cadeau.\n\nSi tu penses qu'il s'agit d'une erreur, contacte notre équipe d'assistance et inclus tous les détails que tu as concernant le code cadeau et le moment où tu l'as échangé.\n\n– L'équipe {product_name}"
},
"harvest_completed": {
"subject": "Ton export de données {product_name} est prêt à être téléchargé",
"body": "Bonjour {username},\n\nTon export de données est prêt.\n\nLien de téléchargement :\n{downloadUrl}\n\nMessages inclus : {totalMessages, number}\nTaille du fichier : {fileSizeMB, number} Mo\n\nCe lien expire le {expiresAt, date, full} à {expiresAt, time, short}.\n\nSi tu n'as pas demandé cet export, change ton mot de passe immédiatement et contacte notre équipe d'assistance.\n\n– L'équipe {product_name}"
},
"inactivity_warning": {
"subject": "Ton compte {product_name} sera supprimé en raison d'inactivité",
"body": "Bonjour {username},\n\nNous n'avons détecté aucune activité sur ton compte {product_name} depuis le {lastActiveDate, date, full}.\n\nSi tu ne te connectes pas avant le {deletionDate, date, full} à {deletionDate, time, short}, ton compte sera définitivement supprimé en raison d'inactivité.\n\nConnecte-toi ici :\n{loginUrl}\n\nSi tu as utilisé {product_name} récemment, contacte notre équipe d'assistance immédiatement.\n\n– L'équipe {product_name}"
},
"ip_authorization": {
"subject": "Autoriser la connexion depuis une nouvelle adresse IP",
"body": "Bonjour {username},\n\nNous avons détecté une tentative de connexion à ton compte {product_name} depuis une nouvelle adresse IP :\n\nAdresse IP : {ipAddress}\nLocalisation : {location}\n\nSi c'était toi, autorise cette adresse IP en cliquant sur le lien ci-dessous :\n\n{authUrl}\n\nSi tu n'as pas tenté de te connecter, change ton mot de passe immédiatement.\n\nCe lien est valide pendant 30 minutes.\n\n– L'équipe {product_name}"
},
"password_change_verification": {
"subject": "Confirme la modification de ton mot de passe {product_name}",
"body": "Bonjour {username},\n\nNous avons reçu une demande de modification du mot de passe de ton compte {product_name}.\n\nPour confirmer cette modification, saisis ce code dans l'application :\n\n{code}\n\nCe code expire à {expiresAt}.\n\nSi tu n'as pas demandé cela, quelqu'un a peut-être eu accès à ton compte. Change ton mot de passe immédiatement et active l'authentification à deux facteurs.\n\n– L'équipe {product_name}"
},
"password_reset": {
"subject": "Réinitialiser ton mot de passe {product_name}",
"body": "Bonjour {username},\n\nTu as demandé une réinitialisation de ton mot de passe {product_name}. Utilise le lien ci-dessous pour définir un nouveau mot de passe :\n\n{resetUrl}\n\nSi tu n'as pas demandé cela, tu peux ignorer cet e-mail en toute sécurité.\n\nCe lien est valide pendant 1 heure.\n\n– L'équipe {product_name}"
},
"registration_approved": {
"subject": "Ton inscription {product_name} a été approuvée",
"body": "Bonjour {username},\n\nBonne nouvelle : ton inscription {product_name} a été approuvée.\n\nTu peux maintenant te connecter à l'application {product_name} ici :\n{channelsUrl}\n\nBienvenue dans la communauté {product_name}.\n\n– L'équipe {product_name}"
},
"report_resolved": {
"subject": "Ton signalement {product_name} a été examiné",
"body": "Bonjour {username},\n\nTon signalement (ID : {reportId}) a été examiné par notre équipe de sécurité.{hasComment, select, yes {\n\nRéponse de l'équipe de sécurité :\n{publicComment}} other {}}\n\nMerci de nous aider à préserver la sécurité de {product_name} pour tous. Nous prenons tous les signalements au sérieux et apprécions ta contribution à la communauté.\n\nSi tu as des questions ou des préoccupations concernant ce résultat, contacte {safety_email}.\n\n– Équipe de sécurité de {product_name}"
},
"scheduled_deletion_notification": {
"subject": "Ton compte {product_name} sera définitivement supprimé",
"body": "Bonjour {username},\n\nLa suppression définitive de ton compte {product_name} a été programmée.\n\nSuppression programmée : {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Raison : {reason}}\n}\n\nIl s'agit d'une mesure sérieuse. Les données de ton compte seront définitivement supprimées à la date prévue.\n\nSi tu penses que cette décision était incorrecte, tu peux soumettre un appel. Envoie un e-mail à {appeals_email} depuis cette adresse e-mail.\n\n– Équipe de sécurité de {product_name}"
},
"self_deletion_scheduled": {
"subject": "La suppression de ton compte {product_name} est programmée",
"body": "Bonjour {username},\n\nTu as demandé la suppression de ton compte {product_name}. Ton compte est programmé pour une suppression définitive le :\n\n{deletionDate, date, full} à {deletionDate, time, short}\n\nSi tu n'as pas demandé cela, connecte-toi à ton compte pour annuler la suppression. Nous te recommandons également de changer ton mot de passe pour sécuriser ton compte.\n\n– L'équipe {product_name}"
},
"unban_notification": {
"subject": "La suspension de ton compte {product_name} a été levée",
"body": "Bonjour {username},\n\nBonne nouvelle : la suspension de ton compte {product_name} a été levée.\n\n{reason, select,\n null {}\n other {Raison : {reason}}\n}\n\nTu peux maintenant te reconnecter et continuer à utiliser {product_name} normalement.\n\n– Équipe de sécurité de {product_name}"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "חשבון ה-{product_name} שלך הושבת זמנית",
"body": "שלום {username},\n\nחשבון ה-{product_name} שלך הושבת זמנית עקב זיהוי פעילות חשודה.\n\n{reason, select,\n null {}\n other {סיבה: {reason}}\n}\n\nכדי לקבל בחזרה גישה לחשבון, יש לאפס את הסיסמה:\n\n{forgotUrl}\n\nלאחר איפוס הסיסמה, ניתן יהיה להתחבר שוב.\n\nאם אתם חושבים שזו טעות, צרו קשר עם צוות התמיכה שלנו.\n\nצוות הבטיחות של {product_name}"
},
"account_scheduled_deletion": {
"subject": "חשבון ה-{product_name} שלכם יימחק לצמיתות",
"body": "שלום {username},\n\nחשבון ה-{product_name} שלך נקבע למחיקה לצמיתות עקב הפרות של תנאי השירות או הנחיות הקהילה שלנו.\n\nמחיקה מתוזמנת: {deletionDate, date, full} בשעה {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {סיבה: {reason}}\n}\n\nזוהי פעולת אכיפה חמורה. נתוני החשבון שלך יימחקו לצמיתות בתאריך המתוכנן.\n\nאנא עיינו ב:\n- תנאי השירות: {termsUrl}\n- הנחיות הקהילה: {guidelinesUrl}\n\nתהליך ערעור:\nאם אתם חושבים שהחלטת אכיפה זו שגויה או בלתי מוצדקת, יש לכם 60 יום להגיש ערעור. שלחו דוא\"ל לכתובת {appeals_email} מכתובת דוא\"ל זו.\n\nבערעור:\n- הסבירו בבירור מדוע אתם חושבים שהחלטת האכיפה שגויה או בלתי מוצדקת\n- ספקו כל ראיה או הקשר רלוונטיים\n\nחבר בצוות הבטיחות של {product_name} יבדוק את ערעורכם ועשוי להשהות את המחיקה הממתינה עד לקבלת החלטה סופית.\n\nצוות הבטיחות של {product_name}"
},
"account_temp_banned": {
"subject": "חשבון ה-{product_name} שלך הושעה זמנית",
"body": "שלום {username},\n\nחשבון ה-{product_name} שלך הושעה זמנית עקב הפרה של תנאי השירות או הנחיות הקהילה שלנו.\n\nמשך ההשעיה: {durationHours, plural,\n =1 {שעה אחת}\n other {# שעות}\n}\nהושעה עד: {bannedUntil, date, full} בשעה {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {סיבה: {reason}}\n}\n\nבמהלך תקופה זו, לא תהיה לכם גישה לחשבון.\n\nאנא עיינו ב:\n- תנאי השירות: {termsUrl}\n- הנחיות הקהילה: {guidelinesUrl}\n\nאם אתם חושבים שהחלטת אכיפה זו שגויה או בלתי מוצדקת, אתם יכולים להגיש ערעור. שלחו דוא\"ל לכתובת {appeals_email} מכתובת דוא\"ל זו והסבירו בבירור מדוע אתם חושבים שההחלטה שגויה. אנו נבדוק את ערעורכם ונשיב עם החלטתנו.\n\nצוות הבטיחות של {product_name}"
},
"donation_confirmation": {
"subject": "תודה על תרומתכם ל-{product_name}",
"body": "שלום,\n\nתודה על תרומתכם ל-{product_name}! ה{interval, select,\n month {תרומה החוזרת}\n year {תרומה החוזרת}\n other {תרומה החד-פעמית}\n} שלכם {interval, select,\n month {הוגדרה}\n year {הוגדרה}\n other {עובדה}\n} בהצלחה.\n\nפרטי התרומה:\nסכום: {amount} {currency} {interval, select,\n month {לחודש}\n year {לשנה}\n other {}\n}\n\nStripe ישלח לכם בקרוב קבלה נפרדת עם קובץ PDF של החשבונית. הקבלה תכלול את כל פרטי התשלום וניתן יהיה להשתמש בה למטרות מס.\n\nאתם יכולים לצפות בהיסטוריית התרומות שלכם, להוריד חשבוניות, {interval, select,\n month {ולנהל או לבטל את המנוי}\n year {ולנהל או לבטל את המנוי}\n other {ולנהל תרומות עתידיות}\n} בכל עת באמצעות קישור זה:\n\n{manageUrl}\n\nהתמיכה שלכם עוזרת לשמור על פעילות {product_name}. תודה!\n\nצוות {product_name}"
},
"donation_magic_link": {
"subject": "ניהול התרומות שלכם ל-{product_name}",
"body": "שלום,\n\nלחצו על הקישור למטה כדי לגשת לפורטל התורמים שלכם:\n\n{manageUrl}\n\nבפורטל, אתם יכולים לנהל מנויים, להוריד חשבוניות ולצפות בהיסטוריית התרומות שלכם.\n\nקישור זה יפוג ב- {expiresAt, date, full} בשעה {expiresAt, time, short}.\n\nאם לא ביקשתם קישור זה, אתם יכולים להתעלם בבטחה מדוא\"ל זה.\n\nצוות {product_name}"
},
"dsa_report_verification": {
"subject": "אימות האימייל שלכם עבור דוח DSA",
"body": "שלום,\n\nהשתמשו בקוד האימות למטה כדי להגיש את דוח חוק השירותים הדיגיטליים ב-{product_name}:\n\n{code}\n\nקוד זה יפוג ב- {expiresAt, date, full} בשעה {expiresAt, time, short}.\n\nאם לא ביקשתם זאת, אתם יכולים להתעלם מדוא\"ל זה.\n\nצוות הבטיחות של {product_name}"
},
"email_change_new": {
"subject": "אימות האימייל החדש שלכם ל-{product_name}",
"body": "שלום {username},\n\nהזינו קוד זה באפליקציה כדי לאמת את האימייל החדש שלכם ב-{product_name}:\n\n{code}\n\nקוד זה יפוג ב- {expiresAt, date, full} בשעה {expiresAt, time, short}.\n\nאם לא ביקשתם זאת, אתם יכולים להתעלם מדוא\"ל זה.\n\nצוות {product_name}"
},
"email_change_original": {
"subject": "אישור שינוי האימייל שלכם ל-{product_name}",
"body": "שלום {username},\n\nקיבלנו בקשה לשינוי כתובת האימייל בחשבון ה-{product_name} שלכם.\n\nכדי לאשר שינוי זה, הזינו קוד זה באפליקציה:\n\n{code}\n\nקוד זה יפוג ב- {expiresAt, date, full} בשעה {expiresAt, time, short}.\n\nאם לא ביקשתם זאת, אנא אבטחו את חשבונכם מיד.\n\nצוות {product_name}"
},
"email_change_revert": {
"subject": "האימייל שלכם ב-{product_name} שונה",
"body": "שלום {username},\n\nכתובת האימייל בחשבון ה-{product_name} שלכם שונתה ל- {newEmail}.\n\nאם אתם ביצעתם שינוי זה, אין צורך בפעולה. אם לא, אתם יכולים לבטל את השינוי ולאבטח את חשבונכם באמצעות קישור זה:\n\n{revertUrl}\n\nפעולה זו תשחזר את האימייל הקודם שלכם, תנתק אתכם מכל המכשירים, תסיר מספרי טלפון מקושרים, תבטל אימות רב-שלבי (MFA), ותדרוש מכם להגדיר סיסמה חדשה.\n\nצוות הבטיחות של {product_name}"
},
"email_verification": {
"subject": "אימות האימייל שלכם ב-{product_name}",
"body": "שלום {username},\n\nאנא אמת/י את כתובת האימייל עבור חשבון ה-{product_name} שלך על ידי לחיצה על הקישור למטה:\n\n{verifyUrl}\n\nאם לא יצרתם חשבון {product_name}, אתם יכולים להתעלם בבטחה מדוא\"ל זה.\n\nקישור זה תקף למשך 24 שעות.\n\nצוות {product_name}"
},
"gift_chargeback_notification": {
"subject": "הטבות מהמתנה שמימשתם הוסרו",
"body": "שלום {username},\n\nקוד מתנה שמימשתם שולם במקור על ידי מישהו אחר. תשלום זה בוטל מאז (החזר חיוב).\n\nבשל כך, הסרנו את ההטבות שנוספו לחשבונכם כאשר מימשתם את המתנה.\n\nאם אתם חושבים שזו טעות, אנא צרו קשר עם צוות התמיכה שלנו וכללו כל פרט שיש לכם לגבי קוד המתנה ומתי מימשתם אותו.\n\nצוות {product_name}"
},
"harvest_completed": {
"subject": "ייצוא הנתונים שלכם מ-{product_name} מוכן להורדה",
"body": "שלום {username},\n\nייצוא הנתונים שלכם מוכן.\n\nקישור להורדה:\n{downloadUrl}\n\nהודעות כלולות: {totalMessages, number}\nגודל קובץ: {fileSizeMB, number} מגה-בייט\n\nקישור זה יפוג ב- {expiresAt, date, full} בשעה {expiresAt, time, short}.\n\nאם לא ביקשתם ייצוא זה, אנא שנו את הסיסמה שלכם מיד וצרו קשר עם צוות התמיכה שלנו.\n\nצוות {product_name}"
},
"inactivity_warning": {
"subject": "חשבון ה-{product_name} שלכם יימחק עקב חוסר פעילות",
"body": "שלום {username},\n\nלא ראינו פעילות בחשבון ה-{product_name} שלכם מאז {lastActiveDate, date, full}.\n\nאם לא תתחברו עד {deletionDate, date, full} בשעה {deletionDate, time, short}, חשבונכם יימחק לצמיתות עקב חוסר פעילות.\n\nהתחברו כאן:\n{loginUrl}\n\nאם השתמשתם ב-{product_name} לאחרונה, אנא צרו קשר עם צוות התמיכה שלנו מיד.\n\nצוות {product_name}"
},
"ip_authorization": {
"subject": "אישור כניסה מכתובת IP חדשה",
"body": "שלום {username},\n\nזיהינו ניסיון התחברות לחשבון ה-{product_name} שלכם מכתובת IP חדשה:\n\nכתובת IP: {ipAddress}\nמיקום: {location}\n\nאם זה הייתם אתם, אנא אשרו כתובת IP זו על ידי לחיצה על הקישור למטה:\n\n{authUrl}\n\nאם לא ניסיתם להתחבר, אנא שנו את הסיסמה שלכם מיד.\n\nקישור זה תקף למשך 30 דקות.\n\nצוות {product_name}"
},
"password_change_verification": {
"subject": "אישור שינוי הסיסמה שלכם ב-{product_name}",
"body": "שלום {username},\n\nקיבלנו בקשה לשינוי הסיסמה בחשבון ה-{product_name} שלכם.\n\nכדי לאשר שינוי זה, הזינו קוד זה באפליקציה:\n\n{code}\n\nקוד זה יפוג ב- {expiresAt}.\n\nאם לא ביקשתם זאת, ייתכן שלמישהו יש גישה לחשבונכם. שנו את הסיסמה שלכם מיד ואפשרו אימות דו-שלבי.\n\nצוות {product_name}"
},
"password_reset": {
"subject": "איפוס הסיסמה שלכם ל-{product_name}",
"body": "שלום {username},\n\nביקשתם איפוס סיסמה ל-{product_name}. השתמשו בקישור למטה כדי להגדיר סיסמה חדשה:\n\n{resetUrl}\n\nאם לא ביקשתם זאת, אתם יכולים להתעלם בבטחה מדוא\"ל זה.\n\nקישור זה תקף למשך שעה אחת.\n\nצוות {product_name}"
},
"registration_approved": {
"subject": "ההרשמה שלכם ל-{product_name} אושרה",
"body": "שלום {username},\n\nחדשות טובות: ההרשמה שלכם ל-{product_name} אושרה.\n\nכעת אתם יכולים להתחבר לאפליקציית {product_name} כאן:\n{channelsUrl}\n\nברוכים הבאים לקהילת {product_name}.\n\nצוות {product_name}"
},
"report_resolved": {
"subject": "הדוח שלכם ב-{product_name} נבדק",
"body": "שלום {username},\n\nהדוח שלכם (מזהה: {reportId}) נבדק על ידי צוות הבטיחות שלנו.{hasComment, select, yes {\n\nתגובה מצוות הבטיחות:\n{publicComment}} other {}}\n\nתודה שעזרתם לשמור על {product_name} בטוחה לכולם. אנו מתייחסים לכל הדיווחים ברצינות ומעריכים את תרומתכם לקהילה.\n\nאם יש לכם שאלות או חששות לגבי תוצאה זו, אנא צרו קשר עם {safety_email}.\n\nצוות הבטיחות של {product_name}"
},
"scheduled_deletion_notification": {
"subject": "חשבון ה-{product_name} שלכם יימחק לצמיתות",
"body": "שלום {username},\n\nחשבון ה-{product_name} שלכם נקבע למחיקה לצמיתות.\n\nמחיקה מתוזמנת: {deletionDate, date, full} בשעה {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {סיבה: {reason}}\n}\n\nזוהי פעולת אכיפה חמורה. נתוני החשבון שלכם יימחקו לצמיתות בתאריך המתוכנן.\n\nאם אתם חושבים שהחלטת אכיפה זו שגויה, אתם יכולים להגיש ערעור. שלחו דוא\"ל לכתובת {appeals_email} מכתובת דוא\"ל זו.\n\nצוות הבטיחות של {product_name}"
},
"self_deletion_scheduled": {
"subject": "מחיקת חשבון ה-{product_name} שלכם מתוזמנת",
"body": "שלום {username},\n\nביקשתם למחוק את חשבון ה-{product_name} שלכם. חשבונכם מתוזמן למחיקה לצמיתות ב:\n\n{deletionDate, date, full} בשעה {deletionDate, time, short}\n\nאם לא ביקשתם זאת, התחברו לחשבונכם כדי לבטל את המחיקה. אנו ממליצים גם לשנות את הסיסמה שלכם כדי לאבטח את החשבון.\n\nצוות {product_name}"
},
"unban_notification": {
"subject": "השעיית חשבון ה-{product_name} שלכם הוסרה",
"body": "שלום {username},\n\nחדשות טובות: השעיית חשבון ה-{product_name} שלכם הוסרה.\n\n{reason, select,\n null {}\n other {סיבה: {reason}}\n}\n\nכעת אתם יכולים להתחבר שוב ולהמשיך להשתמש ב-{product_name} כרגיל.\n\nצוות הבטיחות של {product_name}"
}
"account_disabled_suspicious": {
"subject": "חשבון ה-{product_name} שלך הושבת זמנית",
"body": "שלום {username},\n\nחשבון ה-{product_name} שלך הושבת זמנית עקב זיהוי פעילות חשודה.\n\n{reason, select,\n null {}\n other {סיבה: {reason}}\n}\n\nכדי לקבל בחזרה גישה לחשבון, יש לאפס את הסיסמה:\n\n{forgotUrl}\n\nלאחר איפוס הסיסמה, ניתן יהיה להתחבר שוב.\n\nאם אתם חושבים שזו טעות, צרו קשר עם צוות התמיכה שלנו.\n\nצוות הבטיחות של {product_name}"
},
"account_scheduled_deletion": {
"subject": "חשבון ה-{product_name} שלכם יימחק לצמיתות",
"body": "שלום {username},\n\nחשבון ה-{product_name} שלך נקבע למחיקה לצמיתות עקב הפרות של תנאי השירות או הנחיות הקהילה שלנו.\n\nמחיקה מתוזמנת: {deletionDate, date, full} בשעה {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {סיבה: {reason}}\n}\n\nזוהי פעולת אכיפה חמורה. נתוני החשבון שלך יימחקו לצמיתות בתאריך המתוכנן.\n\nאנא עיינו ב:\n- תנאי השירות: {termsUrl}\n- הנחיות הקהילה: {guidelinesUrl}\n\nתהליך ערעור:\nאם אתם חושבים שהחלטת אכיפה זו שגויה או בלתי מוצדקת, יש לכם 60 יום להגיש ערעור. שלחו דוא\"ל לכתובת {appeals_email} מכתובת דוא\"ל זו.\n\nבערעור:\n- הסבירו בבירור מדוע אתם חושבים שהחלטת האכיפה שגויה או בלתי מוצדקת\n- ספקו כל ראיה או הקשר רלוונטיים\n\nחבר בצוות הבטיחות של {product_name} יבדוק את ערעורכם ועשוי להשהות את המחיקה הממתינה עד לקבלת החלטה סופית.\n\nצוות הבטיחות של {product_name}"
},
"account_temp_banned": {
"subject": "חשבון ה-{product_name} שלך הושעה זמנית",
"body": "שלום {username},\n\nחשבון ה-{product_name} שלך הושעה זמנית עקב הפרה של תנאי השירות או הנחיות הקהילה שלנו.\n\nמשך ההשעיה: {durationHours, plural,\n =1 {שעה אחת}\n other {# שעות}\n}\nהושעה עד: {bannedUntil, date, full} בשעה {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {סיבה: {reason}}\n}\n\nבמהלך תקופה זו, לא תהיה לכם גישה לחשבון.\n\nאנא עיינו ב:\n- תנאי השירות: {termsUrl}\n- הנחיות הקהילה: {guidelinesUrl}\n\nאם אתם חושבים שהחלטת אכיפה זו שגויה או בלתי מוצדקת, אתם יכולים להגיש ערעור. שלחו דוא\"ל לכתובת {appeals_email} מכתובת דוא\"ל זו והסבירו בבירור מדוע אתם חושבים שההחלטה שגויה. אנו נבדוק את ערעורכם ונשיב עם החלטתנו.\n\nצוות הבטיחות של {product_name}"
},
"donation_confirmation": {
"subject": "תודה על תרומתכם ל-{product_name}",
"body": "שלום,\n\nתודה על תרומתכם ל-{product_name}! ה{interval, select,\n month {תרומה החוזרת}\n year {תרומה החוזרת}\n other {תרומה החד-פעמית}\n} שלכם {interval, select,\n month {הוגדרה}\n year {הוגדרה}\n other {עובדה}\n} בהצלחה.\n\nפרטי התרומה:\nסכום: {amount} {currency} {interval, select,\n month {לחודש}\n year {לשנה}\n other {}\n}\n\nStripe ישלח לכם בקרוב קבלה נפרדת עם קובץ PDF של החשבונית. הקבלה תכלול את כל פרטי התשלום וניתן יהיה להשתמש בה למטרות מס.\n\nאתם יכולים לצפות בהיסטוריית התרומות שלכם, להוריד חשבוניות, {interval, select,\n month {ולנהל או לבטל את המנוי}\n year {ולנהל או לבטל את המנוי}\n other {ולנהל תרומות עתידיות}\n} בכל עת באמצעות קישור זה:\n\n{manageUrl}\n\nהתמיכה שלכם עוזרת לשמור על פעילות {product_name}. תודה!\n\nצוות {product_name}"
},
"donation_magic_link": {
"subject": "ניהול התרומות שלכם ל-{product_name}",
"body": "שלום,\n\nלחצו על הקישור למטה כדי לגשת לפורטל התורמים שלכם:\n\n{manageUrl}\n\nבפורטל, אתם יכולים לנהל מנויים, להוריד חשבוניות ולצפות בהיסטוריית התרומות שלכם.\n\nקישור זה יפוג ב- {expiresAt, date, full} בשעה {expiresAt, time, short}.\n\nאם לא ביקשתם קישור זה, אתם יכולים להתעלם בבטחה מדוא\"ל זה.\n\nצוות {product_name}"
},
"dsa_report_verification": {
"subject": "אימות האימייל שלכם עבור דוח DSA",
"body": "שלום,\n\nהשתמשו בקוד האימות למטה כדי להגיש את דוח חוק השירותים הדיגיטליים ב-{product_name}:\n\n{code}\n\nקוד זה יפוג ב- {expiresAt, date, full} בשעה {expiresAt, time, short}.\n\nאם לא ביקשתם זאת, אתם יכולים להתעלם מדוא\"ל זה.\n\nצוות הבטיחות של {product_name}"
},
"email_change_new": {
"subject": "אימות האימייל החדש שלכם ל-{product_name}",
"body": "שלום {username},\n\nהזינו קוד זה באפליקציה כדי לאמת את האימייל החדש שלכם ב-{product_name}:\n\n{code}\n\nקוד זה יפוג ב- {expiresAt, date, full} בשעה {expiresAt, time, short}.\n\nאם לא ביקשתם זאת, אתם יכולים להתעלם מדוא\"ל זה.\n\nצוות {product_name}"
},
"email_change_original": {
"subject": "אישור שינוי האימייל שלכם ל-{product_name}",
"body": "שלום {username},\n\nקיבלנו בקשה לשינוי כתובת האימייל בחשבון ה-{product_name} שלכם.\n\nכדי לאשר שינוי זה, הזינו קוד זה באפליקציה:\n\n{code}\n\nקוד זה יפוג ב- {expiresAt, date, full} בשעה {expiresAt, time, short}.\n\nאם לא ביקשתם זאת, אנא אבטחו את חשבונכם מיד.\n\nצוות {product_name}"
},
"email_change_revert": {
"subject": "האימייל שלכם ב-{product_name} שונה",
"body": "שלום {username},\n\nכתובת האימייל בחשבון ה-{product_name} שלכם שונתה ל- {newEmail}.\n\nאם אתם ביצעתם שינוי זה, אין צורך בפעולה. אם לא, אתם יכולים לבטל את השינוי ולאבטח את חשבונכם באמצעות קישור זה:\n\n{revertUrl}\n\nפעולה זו תשחזר את האימייל הקודם שלכם, תנתק אתכם מכל המכשירים, תסיר מספרי טלפון מקושרים, תבטל אימות רב-שלבי (MFA), ותדרוש מכם להגדיר סיסמה חדשה.\n\nצוות הבטיחות של {product_name}"
},
"email_verification": {
"subject": "אימות האימייל שלכם ב-{product_name}",
"body": "שלום {username},\n\nאנא אמת/י את כתובת האימייל עבור חשבון ה-{product_name} שלך על ידי לחיצה על הקישור למטה:\n\n{verifyUrl}\n\nאם לא יצרתם חשבון {product_name}, אתם יכולים להתעלם בבטחה מדוא\"ל זה.\n\nקישור זה תקף למשך 24 שעות.\n\nצוות {product_name}"
},
"gift_chargeback_notification": {
"subject": "הטבות מהמתנה שמימשתם הוסרו",
"body": "שלום {username},\n\nקוד מתנה שמימשתם שולם במקור על ידי מישהו אחר. תשלום זה בוטל מאז (החזר חיוב).\n\nבשל כך, הסרנו את ההטבות שנוספו לחשבונכם כאשר מימשתם את המתנה.\n\nאם אתם חושבים שזו טעות, אנא צרו קשר עם צוות התמיכה שלנו וכללו כל פרט שיש לכם לגבי קוד המתנה ומתי מימשתם אותו.\n\nצוות {product_name}"
},
"harvest_completed": {
"subject": "ייצוא הנתונים שלכם מ-{product_name} מוכן להורדה",
"body": "שלום {username},\n\nייצוא הנתונים שלכם מוכן.\n\nקישור להורדה:\n{downloadUrl}\n\nהודעות כלולות: {totalMessages, number}\nגודל קובץ: {fileSizeMB, number} מגה-בייט\n\nקישור זה יפוג ב- {expiresAt, date, full} בשעה {expiresAt, time, short}.\n\nאם לא ביקשתם ייצוא זה, אנא שנו את הסיסמה שלכם מיד וצרו קשר עם צוות התמיכה שלנו.\n\nצוות {product_name}"
},
"inactivity_warning": {
"subject": "חשבון ה-{product_name} שלכם יימחק עקב חוסר פעילות",
"body": "שלום {username},\n\nלא ראינו פעילות בחשבון ה-{product_name} שלכם מאז {lastActiveDate, date, full}.\n\nאם לא תתחברו עד {deletionDate, date, full} בשעה {deletionDate, time, short}, חשבונכם יימחק לצמיתות עקב חוסר פעילות.\n\nהתחברו כאן:\n{loginUrl}\n\nאם השתמשתם ב-{product_name} לאחרונה, אנא צרו קשר עם צוות התמיכה שלנו מיד.\n\nצוות {product_name}"
},
"ip_authorization": {
"subject": "אישור כניסה מכתובת IP חדשה",
"body": "שלום {username},\n\nזיהינו ניסיון התחברות לחשבון ה-{product_name} שלכם מכתובת IP חדשה:\n\nכתובת IP: {ipAddress}\nמיקום: {location}\n\nאם זה הייתם אתם, אנא אשרו כתובת IP זו על ידי לחיצה על הקישור למטה:\n\n{authUrl}\n\nאם לא ניסיתם להתחבר, אנא שנו את הסיסמה שלכם מיד.\n\nקישור זה תקף למשך 30 דקות.\n\nצוות {product_name}"
},
"password_change_verification": {
"subject": "אישור שינוי הסיסמה שלכם ב-{product_name}",
"body": "שלום {username},\n\nקיבלנו בקשה לשינוי הסיסמה בחשבון ה-{product_name} שלכם.\n\nכדי לאשר שינוי זה, הזינו קוד זה באפליקציה:\n\n{code}\n\nקוד זה יפוג ב- {expiresAt}.\n\nאם לא ביקשתם זאת, ייתכן שלמישהו יש גישה לחשבונכם. שנו את הסיסמה שלכם מיד ואפשרו אימות דו-שלבי.\n\nצוות {product_name}"
},
"password_reset": {
"subject": "איפוס הסיסמה שלכם ל-{product_name}",
"body": "שלום {username},\n\nביקשתם איפוס סיסמה ל-{product_name}. השתמשו בקישור למטה כדי להגדיר סיסמה חדשה:\n\n{resetUrl}\n\nאם לא ביקשתם זאת, אתם יכולים להתעלם בבטחה מדוא\"ל זה.\n\nקישור זה תקף למשך שעה אחת.\n\nצוות {product_name}"
},
"registration_approved": {
"subject": "ההרשמה שלכם ל-{product_name} אושרה",
"body": "שלום {username},\n\nחדשות טובות: ההרשמה שלכם ל-{product_name} אושרה.\n\nכעת אתם יכולים להתחבר לאפליקציית {product_name} כאן:\n{channelsUrl}\n\nברוכים הבאים לקהילת {product_name}.\n\nצוות {product_name}"
},
"report_resolved": {
"subject": "הדוח שלכם ב-{product_name} נבדק",
"body": "שלום {username},\n\nהדוח שלכם (מזהה: {reportId}) נבדק על ידי צוות הבטיחות שלנו.{hasComment, select, yes {\n\nתגובה מצוות הבטיחות:\n{publicComment}} other {}}\n\nתודה שעזרתם לשמור על {product_name} בטוחה לכולם. אנו מתייחסים לכל הדיווחים ברצינות ומעריכים את תרומתכם לקהילה.\n\nאם יש לכם שאלות או חששות לגבי תוצאה זו, אנא צרו קשר עם {safety_email}.\n\nצוות הבטיחות של {product_name}"
},
"scheduled_deletion_notification": {
"subject": "חשבון ה-{product_name} שלכם יימחק לצמיתות",
"body": "שלום {username},\n\nחשבון ה-{product_name} שלכם נקבע למחיקה לצמיתות.\n\nמחיקה מתוזמנת: {deletionDate, date, full} בשעה {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {סיבה: {reason}}\n}\n\nזוהי פעולת אכיפה חמורה. נתוני החשבון שלכם יימחקו לצמיתות בתאריך המתוכנן.\n\nאם אתם חושבים שהחלטת אכיפה זו שגויה, אתם יכולים להגיש ערעור. שלחו דוא\"ל לכתובת {appeals_email} מכתובת דוא\"ל זו.\n\nצוות הבטיחות של {product_name}"
},
"self_deletion_scheduled": {
"subject": "מחיקת חשבון ה-{product_name} שלכם מתוזמנת",
"body": "שלום {username},\n\nביקשתם למחוק את חשבון ה-{product_name} שלכם. חשבונכם מתוזמן למחיקה לצמיתות ב:\n\n{deletionDate, date, full} בשעה {deletionDate, time, short}\n\nאם לא ביקשתם זאת, התחברו לחשבונכם כדי לבטל את המחיקה. אנו ממליצים גם לשנות את הסיסמה שלכם כדי לאבטח את החשבון.\n\nצוות {product_name}"
},
"unban_notification": {
"subject": "השעיית חשבון ה-{product_name} שלכם הוסרה",
"body": "שלום {username},\n\nחדשות טובות: השעיית חשבון ה-{product_name} שלכם הוסרה.\n\n{reason, select,\n null {}\n other {סיבה: {reason}}\n}\n\nכעת אתם יכולים להתחבר שוב ולהמשיך להשתמש ב-{product_name} כרגיל.\n\nצוות הבטיחות של {product_name}"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "आपका {product_name} अकाउंट अस्थायी रूप से डिसेबल कर दिया गया है",
"body": "नमस्ते {username},\n\nहमने आपके {product_name} अकाउंट को अस्थायी रूप से डिसेबल कर दिया है क्योंकि हमें संदिग्ध एक्टिविटी देखी गई है।\n\n{reason, select,\n null {}\n other {वजह: {reason}}\n}\n\nअपने अकाउंट का एक्सेस फिर से पाने के लिए, आपको अपना पासवर्ड रीसेट करना होगा:\n\n{forgotUrl}\n\nअपना पासवर्ड रीसेट करने के बाद, आप फिर से लॉगिन कर पाएंगे।\n\nअगर आपको लगता है कि यह गलती से हुआ है, तो कृपया हमारी सपोर्ट टीम से संपर्क करें।\n\n– {product_name} सेफ्टी टीम"
},
"account_scheduled_deletion": {
"subject": "आपका {product_name} अकाउंट हमेशा के लिए डिलीट कर दिया जाएगा",
"body": "नमस्ते {username},\n\nआपके {product_name} अकाउंट को हमारी सेवा की शर्तों या कम्युनिटी गाइडलाइंस के उल्लंघन के कारण हमेशा के लिए डिलीट करने के लिए शेड्यूल किया गया है।\n\nडिलीशन शेड्यूल: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {वजह: {reason}}\n}\n\nयह एक गंभीर कदम है। आपके अकाउंट का डेटा निर्धारित तारीख पर हमेशा के लिए डिलीट कर दिया जाएगा।\n\nकृपया देखें:\n- सेवा की शर्तें: {termsUrl}\n- कम्युनिटी गाइडलाइंस: {guidelinesUrl}\n\nअपील प्रक्रिया:\nअगर आपको लगता है कि यह निर्णय गलत या अनुचित था, तो आपके पास अपील सबमिट करने के लिए 60 दिन हैं। इस ईमेल एड्रेस से {appeals_email} पर ईमेल करें।\n\nअपनी अपील में:\n- साफ तौर पर बताएं कि आपको क्यों लगता है कि यह निर्णय गलत या अनुचित था\n- कोई भी प्रासंगिक सबूत या संदर्भ दें\n\n{product_name} सेफ्टी टीम का एक मेंबर आपकी अपील का रिव्यू करेगा और अंतिम फैसला आने तक डिलीट होने की प्रक्रिया को रोक सकता है।\n\n– {product_name} सेफ्टी टीम"
},
"account_temp_banned": {
"subject": "आपका {product_name} अकाउंट अस्थायी रूप से सस्पेंड कर दिया गया है",
"body": "नमस्ते {username},\n\nआपके {product_name} अकाउंट को हमारी सेवा की शर्तों या कम्युनिटी गाइडलाइंस का उल्लंघन करने के लिए अस्थायी रूप से सस्पेंड कर दिया गया है।\n\nअवधि: {durationHours, plural,\n =1 {1 घंटा}\n other {# घंटे}\n}\nसस्पेंड किया गया है: {bannedUntil, date, full} {bannedUntil, time, short} तक\n\n{reason, select,\n null {}\n other {वजह: {reason}}\n}\n\nइस दौरान, आप अपने अकाउंट को एक्सेस नहीं कर पाएंगे।\n\nकृपया देखें:\n- सेवा की शर्तें: {termsUrl}\n- कम्युनिटी गाइडलाइंस: {guidelinesUrl}\n\nअगर आपको लगता है कि यह निर्णय गलत या अनुचित था, तो आप अपील सबमिट कर सकते हैं। इस ईमेल एड्रेस से {appeals_email} पर ईमेल करें और साफ तौर पर बताएं कि आपको क्यों लगता है कि फैसला गलत था। हम आपकी अपील का रिव्यू करेंगे और अपने फैसले के साथ जवाब देंगे।\n\n– {product_name} सेफ्टी टीम"
},
"donation_confirmation": {
"subject": "आपके {product_name} डोनेशन के लिए धन्यवाद",
"body": "नमस्ते,\n\n{product_name} को आपके डोनेशन के लिए धन्यवाद! आपका {interval, select,\n month {रिकरिंग डोनेशन}\n year {रिकरिंग डोनेशन}\n other {वन-टाइम डोनेशन}\n} सफलतापूर्वक {interval, select,\n month {सेट अप हो गया है}\n year {सेट अप हो गया है}\n other {प्रोसेस हो गया है}\n}।\n\nडोनेशन डिटेल्स:\nराशि: {amount} {currency} {interval, select,\n month {प्रति माह}\n year {प्रति वर्ष}\n other {}\n}\n\nStripe आपको जल्द ही आपके इनवॉइस PDF के साथ एक अलग रसीद ईमेल करेगा। इसमें सभी पेमेंट डिटेल्स शामिल हैं और इसे टैक्स के लिए इस्तेमाल किया जा सकता है।\n\nआप इस लिंक का उपयोग करके किसी भी समय अपने डोनेशन का इतिहास देख सकते हैं, इनवॉइस डाउनलोड कर सकते हैं, {interval, select,\n month {और अपनी सब्सक्रिप्शन मैनेज या कैंसल कर सकते हैं}\n year {और अपनी सब्सक्रिप्शन मैनेज या कैंसल कर सकते हैं}\n other {और भविष्य के डोनेशन मैनेज कर सकते हैं}\n}।\n\n{manageUrl}\n\nआपका सपोर्ट {product_name} को चालू रखने में मदद करता है। धन्यवाद!\n\n– {product_name} टीम"
},
"donation_magic_link": {
"subject": "अपने {product_name} डोनेशन मैनेज करें",
"body": "नमस्ते,\n\nअपने डोनर पोर्टल एक्सेस करने के लिए नीचे दिए गए लिंक पर क्लिक करें:\n\n{manageUrl}\n\nपोर्टल में, आप सब्सक्रिप्शन मैनेज कर सकते हैं, इनवॉइस डाउनलोड कर सकते हैं और अपने डोनेशन का इतिहास देख सकते हैं।\n\nयह लिंक {expiresAt, date, full} को {expiresAt, time, short} पर एक्सपायर हो जाएगा।\n\nअगर आपने इस लिंक का अनुरोध नहीं किया था, तो आप इस ईमेल को अनदेखा कर सकते हैं।\n\n– {product_name} टीम"
},
"dsa_report_verification": {
"subject": "DSA रिपोर्ट के लिए अपना ईमेल वेरिफाई करें",
"body": "नमस्ते,\n\n{product_name} पर अपनी डिजिटल सर्विसेज एक्ट रिपोर्ट सबमिट करने के लिए नीचे दिए गए वेरिफिकेशन कोड का इस्तेमाल करें:\n\n{code}\n\nयह कोड {expiresAt, date, full} को {expiresAt, time, short} पर एक्सपायर हो जाएगा।\n\nअगर आपने इसकी रिक्वेस्ट नहीं की थी, तो आप इस ईमेल को अनदेखा कर सकते हैं।\n\n– {product_name} सेफ्टी टीम"
},
"email_change_new": {
"subject": "अपना नया {product_name} ईमेल वेरिफाई करें",
"body": "नमस्ते {username},\n\nअपना नया {product_name} ईमेल वेरिफाई करने के लिए ऐप में यह कोड एंटर करें:\n\n{code}\n\nयह कोड {expiresAt, date, full} को {expiresAt, time, short} पर एक्सपायर हो जाएगा।\n\nअगर आपने इसकी रिक्वेस्ट नहीं की थी, तो आप इस ईमेल को अनदेखा कर सकते हैं।\n\n– {product_name} टीम"
},
"email_change_original": {
"subject": "अपने {product_name} ईमेल चेंज की पुष्टि करें",
"body": "नमस्ते {username},\n\nहमें आपके {product_name} अकाउंट पर ईमेल एड्रेस बदलने का अनुरोध मिला है।\n\nइस बदलाव की पुष्टि करने के लिए, ऐप में यह कोड एंटर करें:\n\n{code}\n\nयह कोड {expiresAt, date, full} को {expiresAt, time, short} पर एक्सपायर हो जाएगा।\n\nअगर आपने इसकी रिक्वेस्ट नहीं की थी, तो कृपया तुरंत अपना अकाउंट सुरक्षित करें।\n\n– {product_name} टीम"
},
"email_change_revert": {
"subject": "आपका {product_name} ईमेल बदल दिया गया था",
"body": "नमस्ते {username},\n\nआपके {product_name} अकाउंट पर ईमेल एड्रेस बदलकर {newEmail} कर दिया गया है।\n\nअगर आपने यह बदलाव किया है, तो किसी कार्रवाई की जरूरत नहीं है। अगर आपने नहीं किया है, तो आप इस लिंक का उपयोग करके बदलाव को वापस ले सकते हैं और अपना अकाउंट सुरक्षित कर सकते हैं:\n\n{revertUrl}\n\nयह आपके पिछले ईमेल को रीस्टोर करेगा, आपको हर जगह से साइन आउट करेगा, लिंक किए गए फोन नंबर हटाएगा, MFA को डिसेबल करेगा, और आपको एक नया पासवर्ड सेट करने की जरूरत होगी।\n\n– {product_name} सेफ्टी टीम"
},
"email_verification": {
"subject": "अपना {product_name} ईमेल एड्रेस वेरिफाई करें",
"body": "नमस्ते {username},\n\nकृपया नीचे दिए गए लिंक पर क्लिक करके अपने {product_name} अकाउंट के लिए ईमेल एड्रेस वेरिफाई करें:\n\n{verifyUrl}\n\nअगर आपने {product_name} अकाउंट नहीं बनाया है, तो आप इस ईमेल को बेझिझक अनदेखा कर सकते हैं।\n\nयह लिंक 24 घंटे के लिए वैलिड है।\n\n– {product_name} टीम"
},
"gift_chargeback_notification": {
"subject": "आपके रिडीम किए गए गिफ्ट से मिलने वाले पर्क हटा दिए गए हैं",
"body": "नमस्ते {username},\n\nआपके द्वारा रिडीम किए गए एक गिफ्ट कोड का पेमेंट मूल रूप से किसी और ने किया था। वह पेमेंट तब से वापस ले लिया गया है (एक चार्जबैक)।\n\nइस वजह से, हमने वे पर्क हटा दिए हैं जो गिफ्ट रिडीम करते समय आपके अकाउंट में जोड़े गए थे।\n\nअगर आपको लगता है कि यह गलती है, तो कृपया हमारी सपोर्ट टीम से संपर्क करें और गिफ्ट कोड और उसे रिडीम करने की तारीख के बारे में जानकारी शेयर करें।\n\n– {product_name} टीम"
},
"harvest_completed": {
"subject": "आपका {product_name} डेटा एक्सपोर्ट डाउनलोड के लिए तैयार है",
"body": "नमस्ते {username},\n\nआपका डेटा एक्सपोर्ट तैयार है।\n\nडाउनलोड लिंक:\n{downloadUrl}\n\nशामिल मैसेज: {totalMessages, number}\nफाइल साइज़: {fileSizeMB, number} MB\n\nयह लिंक {expiresAt, date, full} को {expiresAt, time, short} पर एक्सपायर हो जाएगा।\n\nअगर आपने इस एक्सपोर्ट की रिक्वेस्ट नहीं की थी, तो कृपया तुरंत अपना पासवर्ड बदलें और हमारी सपोर्ट टीम से संपर्क करें।\n\n– {product_name} टीम"
},
"inactivity_warning": {
"subject": "आपका {product_name} अकाउंट इनएक्टिविटी के कारण डिलीट कर दिया जाएगा",
"body": "नमस्ते {username},\n\nआपके {product_name} अकाउंट पर {lastActiveDate, date, full} के बाद से कोई एक्टिविटी नहीं हुई है।\n\nअगर आप {deletionDate, date, full} को {deletionDate, time, short} तक लॉगिन नहीं करते हैं, तो आपका अकाउंट इनएक्टिविटी के कारण हमेशा के लिए डिलीट कर दिया जाएगा।\n\nयहां लॉगिन करें:\n{loginUrl}\n\nअगर आपने हाल ही में {product_name} का इस्तेमाल किया है, तो कृपया तुरंत हमारी सपोर्ट टीम से संपर्क करें।\n\n– {product_name} टीम"
},
"ip_authorization": {
"subject": "एक नए IP एड्रेस से लॉगिन को ऑथराइज़ करें",
"body": "नमस्ते {username},\n\nहमें एक नए IP एड्रेस से आपके {product_name} अकाउंट में लॉगिन करने का प्रयास किया गया है:\n\nIP एड्रेस: {ipAddress}\nलोकेशन: {location}\n\nअगर यह आपने ही किया था, तो कृपया नीचे दिए गए लिंक पर क्लिक करके इस IP एड्रेस को ऑथराइज़ करें:\n\n{authUrl}\n\nअगर आपने लॉगिन करने का प्रयास नहीं किया था, तो कृपया तुरंत अपना पासवर्ड बदलें।\n\nयह लिंक 30 मिनट के लिए वैलिड है।\n\n– {product_name} टीम"
},
"password_change_verification": {
"subject": "अपने {product_name} पासवर्ड चेंज की पुष्टि करें",
"body": "नमस्ते {username},\n\nहमें आपके {product_name} अकाउंट पर पासवर्ड बदलने का अनुरोध मिला है।\n\nइस बदलाव की पुष्टि करने के लिए, ऐप में यह कोड एंटर करें:\n\n{code}\n\nयह कोड {expiresAt} पर एक्सपायर हो जाएगा।\n\nअगर आपने इसकी रिक्वेस्ट नहीं की थी, तो हो सकता है कि किसी और के पास आपके अकाउंट का एक्सेस हो। तुरंत अपना पासवर्ड बदलें और टू-फैक्टर ऑथेंटिकेशन इनेबल करें।\n\n– {product_name} टीम"
},
"password_reset": {
"subject": "अपना {product_name} पासवर्ड रीसेट करें",
"body": "नमस्ते {username},\n\nआपने {product_name} पासवर्ड रीसेट का अनुरोध किया है। नया पासवर्ड सेट करने के लिए नीचे दिए गए लिंक का उपयोग करें:\n\n{resetUrl}\n\nअगर आपने इसकी रिक्वेस्ट नहीं की थी, तो आप इस ईमेल को बेझिझक अनदेखा कर सकते हैं।\n\nयह लिंक 1 घंटे के लिए वैलिड है।\n\n– {product_name} टीम"
},
"registration_approved": {
"subject": "आपका {product_name} रजिस्ट्रेशन अप्रूव हो गया है",
"body": "नमस्ते {username},\n\nअच्छी खबर: आपका {product_name} रजिस्ट्रेशन अप्रूव हो गया है।\n\nअब आप {product_name} ऐप में यहां लॉगिन कर सकते हैं:\n{channelsUrl}\n\n{product_name} कम्युनिटी में आपका स्वागत है।\n\n– {product_name} टीम"
},
"report_resolved": {
"subject": "आपकी {product_name} रिपोर्ट का रिव्यू कर लिया गया है",
"body": "नमस्ते {username},\n\nआपकी रिपोर्ट (ID: {reportId}) का हमारी सेफ्टी टीम ने रिव्यू कर लिया है।{hasComment, select, yes {\n\nसेफ्टी टीम का जवाब:\n{publicComment}} other {}}\n\n{product_name} को सभी के लिए सुरक्षित रखने में मदद करने के लिए धन्यवाद। हम सभी रिपोर्टों को गंभीरता से लेते हैं और कम्युनिटी में आपके योगदान के लिए आभार व्यक्त करते हैं।\n\nअगर आपको इस परिणाम के बारे में कोई प्रश्न या चिंता है, तो कृपया {safety_email} पर संपर्क करें।\n\n– {product_name} सेफ्टी टीम"
},
"scheduled_deletion_notification": {
"subject": "आपका {product_name} अकाउंट हमेशा के लिए डिलीट कर दिया जाएगा",
"body": "नमस्ते {username},\n\nआपके {product_name} अकाउंट को हमेशा के लिए डिलीट करने के लिए शेड्यूल किया गया है।\n\nडिलीशन शेड्यूल: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {वजह: {reason}}\n}\n\nयह एक गंभीर कदम है। आपके अकाउंट का डेटा निर्धारित तारीख पर हमेशा के लिए डिलीट कर दिया जाएगा।\n\nअगर आपको लगता है कि यह निर्णय गलत था, तो आप अपील सबमिट कर सकते हैं। इस ईमेल एड्रेस से {appeals_email} पर ईमेल करें।\n\n– {product_name} सेफ्टी टीम"
},
"self_deletion_scheduled": {
"subject": "आपके {product_name} अकाउंट डिलीशन को शेड्यूल किया गया है",
"body": "नमस्ते {username},\n\nआपने अपना {product_name} अकाउंट डिलीट करने का अनुरोध किया है। आपका अकाउंट हमेशा के लिए डिलीट करने के लिए इस तारीख को शेड्यूल किया गया है:\n\n{deletionDate, date, full} को {deletionDate, time, short} पर\n\nअगर आपने इसकी रिक्वेस्ट नहीं की थी, तो डिलीशन रद्द करने के लिए अपने अकाउंट में साइन इन करें। हम आपके अकाउंट को सुरक्षित करने के लिए अपना पासवर्ड बदलने की भी सलाह देते हैं।\n\n– {product_name} टीम"
},
"unban_notification": {
"subject": "आपके {product_name} अकाउंट का सस्पेंशन हटा दिया गया है",
"body": "नमस्ते {username},\n\nअच्छी खबर: आपके {product_name} अकाउंट का सस्पेंशन हटा दिया गया है।\n\n{reason, select,\n null {}\n other {वजह: {reason}}\n}\n\nअब आप फिर से लॉगिन कर सकते हैं और सामान्य रूप से {product_name} का उपयोग जारी रख सकते हैं।\n\n– {product_name} सेफ्टी टीम"
}
"account_disabled_suspicious": {
"subject": "आपका {product_name} अकाउंट अस्थायी रूप से डिसेबल कर दिया गया है",
"body": "नमस्ते {username},\n\nहमने आपके {product_name} अकाउंट को अस्थायी रूप से डिसेबल कर दिया है क्योंकि हमें संदिग्ध एक्टिविटी देखी गई है।\n\n{reason, select,\n null {}\n other {वजह: {reason}}\n}\n\nअपने अकाउंट का एक्सेस फिर से पाने के लिए, आपको अपना पासवर्ड रीसेट करना होगा:\n\n{forgotUrl}\n\nअपना पासवर्ड रीसेट करने के बाद, आप फिर से लॉगिन कर पाएंगे।\n\nअगर आपको लगता है कि यह गलती से हुआ है, तो कृपया हमारी सपोर्ट टीम से संपर्क करें।\n\n– {product_name} सेफ्टी टीम"
},
"account_scheduled_deletion": {
"subject": "आपका {product_name} अकाउंट हमेशा के लिए डिलीट कर दिया जाएगा",
"body": "नमस्ते {username},\n\nआपके {product_name} अकाउंट को हमारी सेवा की शर्तों या कम्युनिटी गाइडलाइंस के उल्लंघन के कारण हमेशा के लिए डिलीट करने के लिए शेड्यूल किया गया है।\n\nडिलीशन शेड्यूल: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {वजह: {reason}}\n}\n\nयह एक गंभीर कदम है। आपके अकाउंट का डेटा निर्धारित तारीख पर हमेशा के लिए डिलीट कर दिया जाएगा।\n\nकृपया देखें:\n- सेवा की शर्तें: {termsUrl}\n- कम्युनिटी गाइडलाइंस: {guidelinesUrl}\n\nअपील प्रक्रिया:\nअगर आपको लगता है कि यह निर्णय गलत या अनुचित था, तो आपके पास अपील सबमिट करने के लिए 60 दिन हैं। इस ईमेल एड्रेस से {appeals_email} पर ईमेल करें।\n\nअपनी अपील में:\n- साफ तौर पर बताएं कि आपको क्यों लगता है कि यह निर्णय गलत या अनुचित था\n- कोई भी प्रासंगिक सबूत या संदर्भ दें\n\n{product_name} सेफ्टी टीम का एक मेंबर आपकी अपील का रिव्यू करेगा और अंतिम फैसला आने तक डिलीट होने की प्रक्रिया को रोक सकता है।\n\n– {product_name} सेफ्टी टीम"
},
"account_temp_banned": {
"subject": "आपका {product_name} अकाउंट अस्थायी रूप से सस्पेंड कर दिया गया है",
"body": "नमस्ते {username},\n\nआपके {product_name} अकाउंट को हमारी सेवा की शर्तों या कम्युनिटी गाइडलाइंस का उल्लंघन करने के लिए अस्थायी रूप से सस्पेंड कर दिया गया है।\n\nअवधि: {durationHours, plural,\n =1 {1 घंटा}\n other {# घंटे}\n}\nसस्पेंड किया गया है: {bannedUntil, date, full} {bannedUntil, time, short} तक\n\n{reason, select,\n null {}\n other {वजह: {reason}}\n}\n\nइस दौरान, आप अपने अकाउंट को एक्सेस नहीं कर पाएंगे।\n\nकृपया देखें:\n- सेवा की शर्तें: {termsUrl}\n- कम्युनिटी गाइडलाइंस: {guidelinesUrl}\n\nअगर आपको लगता है कि यह निर्णय गलत या अनुचित था, तो आप अपील सबमिट कर सकते हैं। इस ईमेल एड्रेस से {appeals_email} पर ईमेल करें और साफ तौर पर बताएं कि आपको क्यों लगता है कि फैसला गलत था। हम आपकी अपील का रिव्यू करेंगे और अपने फैसले के साथ जवाब देंगे।\n\n– {product_name} सेफ्टी टीम"
},
"donation_confirmation": {
"subject": "आपके {product_name} डोनेशन के लिए धन्यवाद",
"body": "नमस्ते,\n\n{product_name} को आपके डोनेशन के लिए धन्यवाद! आपका {interval, select,\n month {रिकरिंग डोनेशन}\n year {रिकरिंग डोनेशन}\n other {वन-टाइम डोनेशन}\n} सफलतापूर्वक {interval, select,\n month {सेट अप हो गया है}\n year {सेट अप हो गया है}\n other {प्रोसेस हो गया है}\n}।\n\nडोनेशन डिटेल्स:\nराशि: {amount} {currency} {interval, select,\n month {प्रति माह}\n year {प्रति वर्ष}\n other {}\n}\n\nStripe आपको जल्द ही आपके इनवॉइस PDF के साथ एक अलग रसीद ईमेल करेगा। इसमें सभी पेमेंट डिटेल्स शामिल हैं और इसे टैक्स के लिए इस्तेमाल किया जा सकता है।\n\nआप इस लिंक का उपयोग करके किसी भी समय अपने डोनेशन का इतिहास देख सकते हैं, इनवॉइस डाउनलोड कर सकते हैं, {interval, select,\n month {और अपनी सब्सक्रिप्शन मैनेज या कैंसल कर सकते हैं}\n year {और अपनी सब्सक्रिप्शन मैनेज या कैंसल कर सकते हैं}\n other {और भविष्य के डोनेशन मैनेज कर सकते हैं}\n}।\n\n{manageUrl}\n\nआपका सपोर्ट {product_name} को चालू रखने में मदद करता है। धन्यवाद!\n\n– {product_name} टीम"
},
"donation_magic_link": {
"subject": "अपने {product_name} डोनेशन मैनेज करें",
"body": "नमस्ते,\n\nअपने डोनर पोर्टल एक्सेस करने के लिए नीचे दिए गए लिंक पर क्लिक करें:\n\n{manageUrl}\n\nपोर्टल में, आप सब्सक्रिप्शन मैनेज कर सकते हैं, इनवॉइस डाउनलोड कर सकते हैं और अपने डोनेशन का इतिहास देख सकते हैं।\n\nयह लिंक {expiresAt, date, full} को {expiresAt, time, short} पर एक्सपायर हो जाएगा।\n\nअगर आपने इस लिंक का अनुरोध नहीं किया था, तो आप इस ईमेल को अनदेखा कर सकते हैं।\n\n– {product_name} टीम"
},
"dsa_report_verification": {
"subject": "DSA रिपोर्ट के लिए अपना ईमेल वेरिफाई करें",
"body": "नमस्ते,\n\n{product_name} पर अपनी डिजिटल सर्विसेज एक्ट रिपोर्ट सबमिट करने के लिए नीचे दिए गए वेरिफिकेशन कोड का इस्तेमाल करें:\n\n{code}\n\nयह कोड {expiresAt, date, full} को {expiresAt, time, short} पर एक्सपायर हो जाएगा।\n\nअगर आपने इसकी रिक्वेस्ट नहीं की थी, तो आप इस ईमेल को अनदेखा कर सकते हैं।\n\n– {product_name} सेफ्टी टीम"
},
"email_change_new": {
"subject": "अपना नया {product_name} ईमेल वेरिफाई करें",
"body": "नमस्ते {username},\n\nअपना नया {product_name} ईमेल वेरिफाई करने के लिए ऐप में यह कोड एंटर करें:\n\n{code}\n\nयह कोड {expiresAt, date, full} को {expiresAt, time, short} पर एक्सपायर हो जाएगा।\n\nअगर आपने इसकी रिक्वेस्ट नहीं की थी, तो आप इस ईमेल को अनदेखा कर सकते हैं।\n\n– {product_name} टीम"
},
"email_change_original": {
"subject": "अपने {product_name} ईमेल चेंज की पुष्टि करें",
"body": "नमस्ते {username},\n\nहमें आपके {product_name} अकाउंट पर ईमेल एड्रेस बदलने का अनुरोध मिला है।\n\nइस बदलाव की पुष्टि करने के लिए, ऐप में यह कोड एंटर करें:\n\n{code}\n\nयह कोड {expiresAt, date, full} को {expiresAt, time, short} पर एक्सपायर हो जाएगा।\n\nअगर आपने इसकी रिक्वेस्ट नहीं की थी, तो कृपया तुरंत अपना अकाउंट सुरक्षित करें।\n\n– {product_name} टीम"
},
"email_change_revert": {
"subject": "आपका {product_name} ईमेल बदल दिया गया था",
"body": "नमस्ते {username},\n\nआपके {product_name} अकाउंट पर ईमेल एड्रेस बदलकर {newEmail} कर दिया गया है।\n\nअगर आपने यह बदलाव किया है, तो किसी कार्रवाई की जरूरत नहीं है। अगर आपने नहीं किया है, तो आप इस लिंक का उपयोग करके बदलाव को वापस ले सकते हैं और अपना अकाउंट सुरक्षित कर सकते हैं:\n\n{revertUrl}\n\nयह आपके पिछले ईमेल को रीस्टोर करेगा, आपको हर जगह से साइन आउट करेगा, लिंक किए गए फोन नंबर हटाएगा, MFA को डिसेबल करेगा, और आपको एक नया पासवर्ड सेट करने की जरूरत होगी।\n\n– {product_name} सेफ्टी टीम"
},
"email_verification": {
"subject": "अपना {product_name} ईमेल एड्रेस वेरिफाई करें",
"body": "नमस्ते {username},\n\nकृपया नीचे दिए गए लिंक पर क्लिक करके अपने {product_name} अकाउंट के लिए ईमेल एड्रेस वेरिफाई करें:\n\n{verifyUrl}\n\nअगर आपने {product_name} अकाउंट नहीं बनाया है, तो आप इस ईमेल को बेझिझक अनदेखा कर सकते हैं।\n\nयह लिंक 24 घंटे के लिए वैलिड है।\n\n– {product_name} टीम"
},
"gift_chargeback_notification": {
"subject": "आपके रिडीम किए गए गिफ्ट से मिलने वाले पर्क हटा दिए गए हैं",
"body": "नमस्ते {username},\n\nआपके द्वारा रिडीम किए गए एक गिफ्ट कोड का पेमेंट मूल रूप से किसी और ने किया था। वह पेमेंट तब से वापस ले लिया गया है (एक चार्जबैक)।\n\nइस वजह से, हमने वे पर्क हटा दिए हैं जो गिफ्ट रिडीम करते समय आपके अकाउंट में जोड़े गए थे।\n\nअगर आपको लगता है कि यह गलती है, तो कृपया हमारी सपोर्ट टीम से संपर्क करें और गिफ्ट कोड और उसे रिडीम करने की तारीख के बारे में जानकारी शेयर करें।\n\n– {product_name} टीम"
},
"harvest_completed": {
"subject": "आपका {product_name} डेटा एक्सपोर्ट डाउनलोड के लिए तैयार है",
"body": "नमस्ते {username},\n\nआपका डेटा एक्सपोर्ट तैयार है।\n\nडाउनलोड लिंक:\n{downloadUrl}\n\nशामिल मैसेज: {totalMessages, number}\nफाइल साइज़: {fileSizeMB, number} MB\n\nयह लिंक {expiresAt, date, full} को {expiresAt, time, short} पर एक्सपायर हो जाएगा।\n\nअगर आपने इस एक्सपोर्ट की रिक्वेस्ट नहीं की थी, तो कृपया तुरंत अपना पासवर्ड बदलें और हमारी सपोर्ट टीम से संपर्क करें।\n\n– {product_name} टीम"
},
"inactivity_warning": {
"subject": "आपका {product_name} अकाउंट इनएक्टिविटी के कारण डिलीट कर दिया जाएगा",
"body": "नमस्ते {username},\n\nआपके {product_name} अकाउंट पर {lastActiveDate, date, full} के बाद से कोई एक्टिविटी नहीं हुई है।\n\nअगर आप {deletionDate, date, full} को {deletionDate, time, short} तक लॉगिन नहीं करते हैं, तो आपका अकाउंट इनएक्टिविटी के कारण हमेशा के लिए डिलीट कर दिया जाएगा।\n\nयहां लॉगिन करें:\n{loginUrl}\n\nअगर आपने हाल ही में {product_name} का इस्तेमाल किया है, तो कृपया तुरंत हमारी सपोर्ट टीम से संपर्क करें।\n\n– {product_name} टीम"
},
"ip_authorization": {
"subject": "एक नए IP एड्रेस से लॉगिन को ऑथराइज़ करें",
"body": "नमस्ते {username},\n\nहमें एक नए IP एड्रेस से आपके {product_name} अकाउंट में लॉगिन करने का प्रयास किया गया है:\n\nIP एड्रेस: {ipAddress}\nलोकेशन: {location}\n\nअगर यह आपने ही किया था, तो कृपया नीचे दिए गए लिंक पर क्लिक करके इस IP एड्रेस को ऑथराइज़ करें:\n\n{authUrl}\n\nअगर आपने लॉगिन करने का प्रयास नहीं किया था, तो कृपया तुरंत अपना पासवर्ड बदलें।\n\nयह लिंक 30 मिनट के लिए वैलिड है।\n\n– {product_name} टीम"
},
"password_change_verification": {
"subject": "अपने {product_name} पासवर्ड चेंज की पुष्टि करें",
"body": "नमस्ते {username},\n\nहमें आपके {product_name} अकाउंट पर पासवर्ड बदलने का अनुरोध मिला है।\n\nइस बदलाव की पुष्टि करने के लिए, ऐप में यह कोड एंटर करें:\n\n{code}\n\nयह कोड {expiresAt} पर एक्सपायर हो जाएगा।\n\nअगर आपने इसकी रिक्वेस्ट नहीं की थी, तो हो सकता है कि किसी और के पास आपके अकाउंट का एक्सेस हो। तुरंत अपना पासवर्ड बदलें और टू-फैक्टर ऑथेंटिकेशन इनेबल करें।\n\n– {product_name} टीम"
},
"password_reset": {
"subject": "अपना {product_name} पासवर्ड रीसेट करें",
"body": "नमस्ते {username},\n\nआपने {product_name} पासवर्ड रीसेट का अनुरोध किया है। नया पासवर्ड सेट करने के लिए नीचे दिए गए लिंक का उपयोग करें:\n\n{resetUrl}\n\nअगर आपने इसकी रिक्वेस्ट नहीं की थी, तो आप इस ईमेल को बेझिझक अनदेखा कर सकते हैं।\n\nयह लिंक 1 घंटे के लिए वैलिड है।\n\n– {product_name} टीम"
},
"registration_approved": {
"subject": "आपका {product_name} रजिस्ट्रेशन अप्रूव हो गया है",
"body": "नमस्ते {username},\n\nअच्छी खबर: आपका {product_name} रजिस्ट्रेशन अप्रूव हो गया है।\n\nअब आप {product_name} ऐप में यहां लॉगिन कर सकते हैं:\n{channelsUrl}\n\n{product_name} कम्युनिटी में आपका स्वागत है।\n\n– {product_name} टीम"
},
"report_resolved": {
"subject": "आपकी {product_name} रिपोर्ट का रिव्यू कर लिया गया है",
"body": "नमस्ते {username},\n\nआपकी रिपोर्ट (ID: {reportId}) का हमारी सेफ्टी टीम ने रिव्यू कर लिया है।{hasComment, select, yes {\n\nसेफ्टी टीम का जवाब:\n{publicComment}} other {}}\n\n{product_name} को सभी के लिए सुरक्षित रखने में मदद करने के लिए धन्यवाद। हम सभी रिपोर्टों को गंभीरता से लेते हैं और कम्युनिटी में आपके योगदान के लिए आभार व्यक्त करते हैं।\n\nअगर आपको इस परिणाम के बारे में कोई प्रश्न या चिंता है, तो कृपया {safety_email} पर संपर्क करें।\n\n– {product_name} सेफ्टी टीम"
},
"scheduled_deletion_notification": {
"subject": "आपका {product_name} अकाउंट हमेशा के लिए डिलीट कर दिया जाएगा",
"body": "नमस्ते {username},\n\nआपके {product_name} अकाउंट को हमेशा के लिए डिलीट करने के लिए शेड्यूल किया गया है।\n\nडिलीशन शेड्यूल: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {वजह: {reason}}\n}\n\nयह एक गंभीर कदम है। आपके अकाउंट का डेटा निर्धारित तारीख पर हमेशा के लिए डिलीट कर दिया जाएगा।\n\nअगर आपको लगता है कि यह निर्णय गलत था, तो आप अपील सबमिट कर सकते हैं। इस ईमेल एड्रेस से {appeals_email} पर ईमेल करें।\n\n– {product_name} सेफ्टी टीम"
},
"self_deletion_scheduled": {
"subject": "आपके {product_name} अकाउंट डिलीशन को शेड्यूल किया गया है",
"body": "नमस्ते {username},\n\nआपने अपना {product_name} अकाउंट डिलीट करने का अनुरोध किया है। आपका अकाउंट हमेशा के लिए डिलीट करने के लिए इस तारीख को शेड्यूल किया गया है:\n\n{deletionDate, date, full} को {deletionDate, time, short} पर\n\nअगर आपने इसकी रिक्वेस्ट नहीं की थी, तो डिलीशन रद्द करने के लिए अपने अकाउंट में साइन इन करें। हम आपके अकाउंट को सुरक्षित करने के लिए अपना पासवर्ड बदलने की भी सलाह देते हैं।\n\n– {product_name} टीम"
},
"unban_notification": {
"subject": "आपके {product_name} अकाउंट का सस्पेंशन हटा दिया गया है",
"body": "नमस्ते {username},\n\nअच्छी खबर: आपके {product_name} अकाउंट का सस्पेंशन हटा दिया गया है।\n\n{reason, select,\n null {}\n other {वजह: {reason}}\n}\n\nअब आप फिर से लॉगिन कर सकते हैं और सामान्य रूप से {product_name} का उपयोग जारी रख सकते हैं।\n\n– {product_name} सेफ्टी टीम"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "Tvoj {product_name} račun je privremeno onemogućen",
"body": "Pozdrav {username},\n\nPrivremeno smo onemogućili tvoj {product_name} račun jer smo otkrili sumnjivu aktivnost.\n\n{reason, select,\n null {}\n other {Razlog: {reason}}\n}\n\nDa bi ponovno pristupio svom računu, morat ćeš poništiti lozinku:\n\n{forgotUrl}\n\nNakon što poništiš lozinku, moći ćeš se ponovno prijaviti.\n\nAko misliš da je ovo pogreška, kontaktiraj naš tim za podršku.\n\n– {product_name} Sigurnosni Tim"
},
"account_scheduled_deletion": {
"subject": "Tvoj {product_name} račun bit će trajno izbrisan",
"body": "Pozdrav {username},\n\nTvoj {product_name} račun je zakazan za trajno brisanje zbog kršenja naših Uvjeta korištenja ili Smjernica zajednice.\n\nZakazano brisanje: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Razlog: {reason}}\n}\n\nOvo je ozbiljna mjera. Podaci tvog računa bit će trajno izbrisani na zakazani datum.\n\nPregledaj:\n- Uvjeti korištenja: {termsUrl}\n- Smjernice zajednice: {guidelinesUrl}\n\nPostupak žalbe:\nAko smatraš da je ova odluka bila netočna ili neopravdana, imaš 60 dana za podnošenje žalbe. Pošalji e-poštu na {appeals_email} s ove adrese e-pošte.\n\nU svojoj žalbi:\n- Jasno objasni zašto smatraš da je odluka bila netočna ili neopravdana\n- Pruži sve relevantne dokaze ili kontekst\n\nČlan {product_name} sigurnosnog tima pregledat će tvoju žalbu i može zaustaviti brisanje dok se ne donese konačna odluka.\n\n– {product_name} Sigurnosni Tim"
},
"account_temp_banned": {
"subject": "Tvoj {product_name} račun je privremeno suspendiran",
"body": "Pozdrav {username},\n\nTvoj {product_name} račun je privremeno suspendiran zbog kršenja naših Uvjeta korištenja ili Smjernica zajednice.\n\nTrajanje: {durationHours, plural,\n =1 {1 sat} few {sata}\n other {# sati}\n}\nSuspendiran do: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Razlog: {reason}}\n}\n\nTijekom tog vremena nećeš moći pristupiti svom računu.\n\nPregledaj:\n- Uvjeti korištenja: {termsUrl}\n- Smjernice zajednice: {guidelinesUrl}\n\nAko smatraš da je ova odluka bila netočna ili neopravdana, možeš podnijeti žalbu. Pošalji e-poštu na {appeals_email} s ove adrese e-pošte i jasno objasni zašto smatraš da je odluka bila netočna. Pregledat ćemo tvoju žalbu i odgovoriti s našom odlukom.\n\n– {product_name} Sigurnosni Tim"
},
"donation_confirmation": {
"subject": "Hvala ti na donaciji za {product_name}",
"body": "Pozdrav,\n\nHvala ti na donaciji za {product_name}! Tvoja {interval, select,\n month {redovita donacija}\n year {redovita donacija}\n other {jednokratna donacija}\n} je uspješno {interval, select,\n month {postavljena}\n year {postavljena}\n other {obrađena}\n}.\n\nDetalji donacije:\nIznos: {amount} {currency} {interval, select,\n month {mjesečno}\n year {godišnje}\n other {}\n}\n\nStripe će ti uskoro poslati zasebnu potvrdu s PDF-om računa. Ovo uključuje sve detalje plaćanja i može se koristiti u porezne svrhe.\n\nMožeš pregledati povijest donacija, preuzeti račune, {interval, select,\n month {i upravljati ili otkazati svoju pretplatu}\n year {i upravljati ili otkazati svoju pretplatu}\n other {i upravljati budućim donacijama}\n} u bilo kojem trenutku koristeći ovu poveznicu:\n\n{manageUrl}\n\nTvoja podrška pomaže {product_name} da nastavi s radom. Hvala ti!\n\n– {product_name} Tim"
},
"donation_magic_link": {
"subject": "Upravljanje donacijama za {product_name}",
"body": "Pozdrav,\n\nKlikni na poveznicu ispod za pristup svom portalu za donatore:\n\n{manageUrl}\n\nNa portalu možeš upravljati pretplatama, preuzimati račune i pregledavati povijest svojih donacija.\n\nOva poveznica istječe {expiresAt, date, full} u {expiresAt, time, short}.\n\nAko nisi zatražio ovu poveznicu, možeš sigurno zanemariti ovu e-poštu.\n\n– {product_name} Tim"
},
"dsa_report_verification": {
"subject": "Potvrdi svoju e-poštu za izvješće o Zakonu o digitalnim uslugama",
"body": "Pozdrav,\n\nKoristi kod za provjeru u nastavku za podnošenje izvješća o Zakonu o digitalnim uslugama na {product_name}:\n\n{code}\n\nOvaj kod istječe {expiresAt, date, full} u {expiresAt, time, short}.\n\nAko ovo nisi zatražio, možeš zanemariti ovu e-poštu.\n\n– {product_name} Sigurnosni Tim"
},
"email_change_new": {
"subject": "Potvrdi svoju novu e-poštu za {product_name}",
"body": "Pozdrav {username},\n\nUnesi ovaj kod u aplikaciju kako bi potvrdio svoju novu {product_name} e-poštu:\n\n{code}\n\nOvaj kod istječe {expiresAt, date, full} u {expiresAt, time, short}.\n\nAko ovo nisi zatražio, možeš zanemariti ovu e-poštu.\n\n– {product_name} Tim"
},
"email_change_original": {
"subject": "Potvrdi promjenu e-pošte za {product_name}",
"body": "Pozdrav {username},\n\nPrimili smo zahtjev za promjenu adrese e-pošte na tvom {product_name} računu.\n\nDa bi potvrdio ovu promjenu, unesi ovaj kod u aplikaciju:\n\n{code}\n\nOvaj kod istječe {expiresAt, date, full} u {expiresAt, time, short}.\n\nAko ovo nisi zatražio, odmah zaštiti svoj račun.\n\n– {product_name} Tim"
},
"email_change_revert": {
"subject": "Tvoja e-pošta za {product_name} je promijenjena",
"body": "Pozdrav {username},\n\nAdresa e-pošte na tvom {product_name} računu promijenjena je u {newEmail}.\n\nAko si napravio ovu promjenu, nije potrebna nikakva radnja. Ako nisi, možeš poništiti promjenu i zaštititi svoj račun koristeći ovu poveznicu:\n\n{revertUrl}\n\nOvo će vratiti tvoju prethodnu e-poštu, odjaviti te svugdje, ukloniti povezane telefonske brojeve, onemogućiti višefaktorsku autentifikaciju i zahtijevati postavljanje nove lozinke.\n\n– {product_name} Sigurnosni Tim"
},
"email_verification": {
"subject": "Potvrdi svoju e-poštu za {product_name}",
"body": "Pozdrav {username},\n\nPotvrdi adresu e-pošte za svoj {product_name} račun klikom na poveznicu ispod:\n\n{verifyUrl}\n\nAko nisi stvorio {product_name} račun, možeš zanemariti ovu e-poštu.\n\nOva poveznica vrijedi 24 sata.\n\n– {product_name} Tim"
},
"gift_chargeback_notification": {
"subject": "Pogodnosti tvog iskorištenog poklona su uklonjene",
"body": "Pozdrav {username},\n\nPoklon kod koji si iskoristio izvorno je platio netko drugi. To plaćanje je u međuvremenu poništeno (povrat sredstava).\n\nZbog toga smo uklonili pogodnosti koje su dodane tvom računu kada si iskoristio poklon.\n\nAko misliš da je ovo pogreška, kontaktiraj naš tim za podršku i uključi sve detalje o poklon kodu i kada si ga iskoristio.\n\n– {product_name} Tim"
},
"harvest_completed": {
"subject": "Tvoj izvoz podataka za {product_name} je spreman za preuzimanje",
"body": "Pozdrav {username},\n\nTvoj izvoz podataka je spreman.\n\nPoveznica za preuzimanje:\n{downloadUrl}\n\nUključene poruke: {totalMessages, number}\nVeličina datoteke: {fileSizeMB, number} MB\n\nOva poveznica istječe {expiresAt, date, full} u {expiresAt, time, short}.\n\nAko nisi zatražio ovaj izvoz, odmah promijeni lozinku i kontaktiraj naš tim za podršku.\n\n– {product_name} Tim"
},
"inactivity_warning": {
"subject": "Tvoj {product_name} račun bit će izbrisan zbog neaktivnosti",
"body": "Pozdrav {username},\n\nNismo primijetili nikakvu aktivnost na tvom {product_name} računu od {lastActiveDate, date, full}.\n\nAko se ne prijaviš do {deletionDate, date, full} u {deletionDate, time, short}, tvoj račun bit će trajno izbrisan zbog neaktivnosti.\n\nPrijavi se ovdje:\n{loginUrl}\n\nAko si nedavno koristio {product_name}, odmah kontaktiraj naš tim za podršku.\n\n– {product_name} Tim"
},
"ip_authorization": {
"subject": "Autoriziraj prijavu s nove IP adrese",
"body": "Pozdrav {username},\n\nOtkrili smo pokušaj prijave na tvoj {product_name} račun s nove IP adrese:\n\nIP adresa: {ipAddress}\nLokacija: {location}\n\nAko si to bio ti, potvrdi ovu IP adresu klikom na poveznicu ispod:\n\n{authUrl}\n\nAko se nisi ti pokušao prijaviti, odmah promijeni lozinku.\n\nOva poveznica vrijedi 30 minuta.\n\n– {product_name} Tim"
},
"password_change_verification": {
"subject": "Potvrdi promjenu lozinke za {product_name}",
"body": "Pozdrav {username},\n\nPrimili smo zahtjev za promjenu lozinke na tvom {product_name} računu.\n\nDa bi potvrdio ovu promjenu, unesi ovaj kod u aplikaciju:\n\n{code}\n\nOvaj kod vrijedi do {expiresAt}.\n\nAko ovo nisi zatražio, netko je možda dobio pristup tvom računu. Odmah promijeni lozinku i omogući dvofaktorsku autentifikaciju.\n\n– {product_name} Tim"
},
"password_reset": {
"subject": "Resetiraj svoju lozinku za {product_name}",
"body": "Pozdrav {username},\n\nZatražio si poništavanje {product_name} lozinke. Koristi poveznicu ispod za postavljanje nove lozinke:\n\n{resetUrl}\n\nAko ovo nisi zatražio, možeš zanemariti ovu e-poštu.\n\nOva poveznica vrijedi 1 sat.\n\n– {product_name} Tim"
},
"registration_approved": {
"subject": "Tvoja registracija za {product_name} je odobrena",
"body": "Pozdrav {username},\n\nDobre vijesti: tvoja {product_name} registracija je odobrena.\n\nSada se možeš prijaviti u {product_name} aplikaciju ovdje:\n{channelsUrl}\n\nDobrodošao u {product_name} zajednicu.\n\n– {product_name} Tim"
},
"report_resolved": {
"subject": "Tvoja prijava na {product_name} je pregledana",
"body": "Pozdrav {username},\n\nTvoje izvješće (ID: {reportId}) pregledao je naš Sigurnosni tim.{hasComment, select, yes {\n\nOdgovor Sigurnosnog tima:\n{publicComment}} other {}}\n\nHvala ti što pomažeš da {product_name} bude siguran za sve. Sve prijave shvaćamo ozbiljno i cijenimo tvoj doprinos zajednici.\n\nAko imaš bilo kakvih pitanja ili nedoumica u vezi s ovim rezultatom, kontaktiraj {safety_email}.\n\n– {product_name} Sigurnosni Tim"
},
"scheduled_deletion_notification": {
"subject": "Tvoj {product_name} račun bit će trajno izbrisan",
"body": "Pozdrav {username},\n\nTvoj {product_name} račun je zakazan za trajno brisanje.\n\nZakazano brisanje: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Razlog: {reason}}\n}\n\nOvo je ozbiljna mjera. Podaci tvog računa bit će trajno izbrisani na zakazani datum.\n\nAko smatraš da je ova odluka o provedbi bila netočna, možeš podnijeti žalbu. Pošalji e-poštu na {appeals_email} s ove adrese e-pošte.\n\n– {product_name} Sigurnosni Tim"
},
"self_deletion_scheduled": {
"subject": "Brisanje tvog računa za {product_name} je zakazano",
"body": "Pozdrav {username},\n\nZatražio si brisanje svog {product_name} računa. Tvoj račun je zakazan za trajno brisanje:\n\n{deletionDate, date, full} u {deletionDate, time, short}\n\nAko ovo nisi zatražio, prijavi se na svoj račun kako bi otkazao brisanje. Također preporučujemo da promijeniš lozinku kako bi osigurao svoj račun.\n\n– {product_name} Tim"
},
"unban_notification": {
"subject": "Suspenzija tvog računa za {product_name} je ukinuta",
"body": "Pozdrav {username},\n\nDobre vijesti: suspenzija tvog {product_name} računa je ukinuta.\n\n{reason, select,\n null {}\n other {Razlog: {reason}}\n}\n\nSada se možeš ponovno prijaviti i nastaviti koristiti {product_name} kao i obično.\n\n– {product_name} Sigurnosni Tim"
}
"account_disabled_suspicious": {
"subject": "Tvoj {product_name} račun je privremeno onemogućen",
"body": "Pozdrav {username},\n\nPrivremeno smo onemogućili tvoj {product_name} račun jer smo otkrili sumnjivu aktivnost.\n\n{reason, select,\n null {}\n other {Razlog: {reason}}\n}\n\nDa bi ponovno pristupio svom računu, morat ćeš poništiti lozinku:\n\n{forgotUrl}\n\nNakon što poništiš lozinku, moći ćeš se ponovno prijaviti.\n\nAko misliš da je ovo pogreška, kontaktiraj naš tim za podršku.\n\n– {product_name} Sigurnosni Tim"
},
"account_scheduled_deletion": {
"subject": "Tvoj {product_name} račun bit će trajno izbrisan",
"body": "Pozdrav {username},\n\nTvoj {product_name} račun je zakazan za trajno brisanje zbog kršenja naših Uvjeta korištenja ili Smjernica zajednice.\n\nZakazano brisanje: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Razlog: {reason}}\n}\n\nOvo je ozbiljna mjera. Podaci tvog računa bit će trajno izbrisani na zakazani datum.\n\nPregledaj:\n- Uvjeti korištenja: {termsUrl}\n- Smjernice zajednice: {guidelinesUrl}\n\nPostupak žalbe:\nAko smatraš da je ova odluka bila netočna ili neopravdana, imaš 60 dana za podnošenje žalbe. Pošalji e-poštu na {appeals_email} s ove adrese e-pošte.\n\nU svojoj žalbi:\n- Jasno objasni zašto smatraš da je odluka bila netočna ili neopravdana\n- Pruži sve relevantne dokaze ili kontekst\n\nČlan {product_name} sigurnosnog tima pregledat će tvoju žalbu i može zaustaviti brisanje dok se ne donese konačna odluka.\n\n– {product_name} Sigurnosni Tim"
},
"account_temp_banned": {
"subject": "Tvoj {product_name} račun je privremeno suspendiran",
"body": "Pozdrav {username},\n\nTvoj {product_name} račun je privremeno suspendiran zbog kršenja naših Uvjeta korištenja ili Smjernica zajednice.\n\nTrajanje: {durationHours, plural,\n =1 {1 sat} few {sata}\n other {# sati}\n}\nSuspendiran do: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Razlog: {reason}}\n}\n\nTijekom tog vremena nećeš moći pristupiti svom računu.\n\nPregledaj:\n- Uvjeti korištenja: {termsUrl}\n- Smjernice zajednice: {guidelinesUrl}\n\nAko smatraš da je ova odluka bila netočna ili neopravdana, možeš podnijeti žalbu. Pošalji e-poštu na {appeals_email} s ove adrese e-pošte i jasno objasni zašto smatraš da je odluka bila netočna. Pregledat ćemo tvoju žalbu i odgovoriti s našom odlukom.\n\n– {product_name} Sigurnosni Tim"
},
"donation_confirmation": {
"subject": "Hvala ti na donaciji za {product_name}",
"body": "Pozdrav,\n\nHvala ti na donaciji za {product_name}! Tvoja {interval, select,\n month {redovita donacija}\n year {redovita donacija}\n other {jednokratna donacija}\n} je uspješno {interval, select,\n month {postavljena}\n year {postavljena}\n other {obrađena}\n}.\n\nDetalji donacije:\nIznos: {amount} {currency} {interval, select,\n month {mjesečno}\n year {godišnje}\n other {}\n}\n\nStripe će ti uskoro poslati zasebnu potvrdu s PDF-om računa. Ovo uključuje sve detalje plaćanja i može se koristiti u porezne svrhe.\n\nMožeš pregledati povijest donacija, preuzeti račune, {interval, select,\n month {i upravljati ili otkazati svoju pretplatu}\n year {i upravljati ili otkazati svoju pretplatu}\n other {i upravljati budućim donacijama}\n} u bilo kojem trenutku koristeći ovu poveznicu:\n\n{manageUrl}\n\nTvoja podrška pomaže {product_name} da nastavi s radom. Hvala ti!\n\n– {product_name} Tim"
},
"donation_magic_link": {
"subject": "Upravljanje donacijama za {product_name}",
"body": "Pozdrav,\n\nKlikni na poveznicu ispod za pristup svom portalu za donatore:\n\n{manageUrl}\n\nNa portalu možeš upravljati pretplatama, preuzimati račune i pregledavati povijest svojih donacija.\n\nOva poveznica istječe {expiresAt, date, full} u {expiresAt, time, short}.\n\nAko nisi zatražio ovu poveznicu, možeš sigurno zanemariti ovu e-poštu.\n\n– {product_name} Tim"
},
"dsa_report_verification": {
"subject": "Potvrdi svoju e-poštu za izvješće o Zakonu o digitalnim uslugama",
"body": "Pozdrav,\n\nKoristi kod za provjeru u nastavku za podnošenje izvješća o Zakonu o digitalnim uslugama na {product_name}:\n\n{code}\n\nOvaj kod istječe {expiresAt, date, full} u {expiresAt, time, short}.\n\nAko ovo nisi zatražio, možeš zanemariti ovu e-poštu.\n\n– {product_name} Sigurnosni Tim"
},
"email_change_new": {
"subject": "Potvrdi svoju novu e-poštu za {product_name}",
"body": "Pozdrav {username},\n\nUnesi ovaj kod u aplikaciju kako bi potvrdio svoju novu {product_name} e-poštu:\n\n{code}\n\nOvaj kod istječe {expiresAt, date, full} u {expiresAt, time, short}.\n\nAko ovo nisi zatražio, možeš zanemariti ovu e-poštu.\n\n– {product_name} Tim"
},
"email_change_original": {
"subject": "Potvrdi promjenu e-pošte za {product_name}",
"body": "Pozdrav {username},\n\nPrimili smo zahtjev za promjenu adrese e-pošte na tvom {product_name} računu.\n\nDa bi potvrdio ovu promjenu, unesi ovaj kod u aplikaciju:\n\n{code}\n\nOvaj kod istječe {expiresAt, date, full} u {expiresAt, time, short}.\n\nAko ovo nisi zatražio, odmah zaštiti svoj račun.\n\n– {product_name} Tim"
},
"email_change_revert": {
"subject": "Tvoja e-pošta za {product_name} je promijenjena",
"body": "Pozdrav {username},\n\nAdresa e-pošte na tvom {product_name} računu promijenjena je u {newEmail}.\n\nAko si napravio ovu promjenu, nije potrebna nikakva radnja. Ako nisi, možeš poništiti promjenu i zaštititi svoj račun koristeći ovu poveznicu:\n\n{revertUrl}\n\nOvo će vratiti tvoju prethodnu e-poštu, odjaviti te svugdje, ukloniti povezane telefonske brojeve, onemogućiti višefaktorsku autentifikaciju i zahtijevati postavljanje nove lozinke.\n\n– {product_name} Sigurnosni Tim"
},
"email_verification": {
"subject": "Potvrdi svoju e-poštu za {product_name}",
"body": "Pozdrav {username},\n\nPotvrdi adresu e-pošte za svoj {product_name} račun klikom na poveznicu ispod:\n\n{verifyUrl}\n\nAko nisi stvorio {product_name} račun, možeš zanemariti ovu e-poštu.\n\nOva poveznica vrijedi 24 sata.\n\n– {product_name} Tim"
},
"gift_chargeback_notification": {
"subject": "Pogodnosti tvog iskorištenog poklona su uklonjene",
"body": "Pozdrav {username},\n\nPoklon kod koji si iskoristio izvorno je platio netko drugi. To plaćanje je u međuvremenu poništeno (povrat sredstava).\n\nZbog toga smo uklonili pogodnosti koje su dodane tvom računu kada si iskoristio poklon.\n\nAko misliš da je ovo pogreška, kontaktiraj naš tim za podršku i uključi sve detalje o poklon kodu i kada si ga iskoristio.\n\n– {product_name} Tim"
},
"harvest_completed": {
"subject": "Tvoj izvoz podataka za {product_name} je spreman za preuzimanje",
"body": "Pozdrav {username},\n\nTvoj izvoz podataka je spreman.\n\nPoveznica za preuzimanje:\n{downloadUrl}\n\nUključene poruke: {totalMessages, number}\nVeličina datoteke: {fileSizeMB, number} MB\n\nOva poveznica istječe {expiresAt, date, full} u {expiresAt, time, short}.\n\nAko nisi zatražio ovaj izvoz, odmah promijeni lozinku i kontaktiraj naš tim za podršku.\n\n– {product_name} Tim"
},
"inactivity_warning": {
"subject": "Tvoj {product_name} račun bit će izbrisan zbog neaktivnosti",
"body": "Pozdrav {username},\n\nNismo primijetili nikakvu aktivnost na tvom {product_name} računu od {lastActiveDate, date, full}.\n\nAko se ne prijaviš do {deletionDate, date, full} u {deletionDate, time, short}, tvoj račun bit će trajno izbrisan zbog neaktivnosti.\n\nPrijavi se ovdje:\n{loginUrl}\n\nAko si nedavno koristio {product_name}, odmah kontaktiraj naš tim za podršku.\n\n– {product_name} Tim"
},
"ip_authorization": {
"subject": "Autoriziraj prijavu s nove IP adrese",
"body": "Pozdrav {username},\n\nOtkrili smo pokušaj prijave na tvoj {product_name} račun s nove IP adrese:\n\nIP adresa: {ipAddress}\nLokacija: {location}\n\nAko si to bio ti, potvrdi ovu IP adresu klikom na poveznicu ispod:\n\n{authUrl}\n\nAko se nisi ti pokušao prijaviti, odmah promijeni lozinku.\n\nOva poveznica vrijedi 30 minuta.\n\n– {product_name} Tim"
},
"password_change_verification": {
"subject": "Potvrdi promjenu lozinke za {product_name}",
"body": "Pozdrav {username},\n\nPrimili smo zahtjev za promjenu lozinke na tvom {product_name} računu.\n\nDa bi potvrdio ovu promjenu, unesi ovaj kod u aplikaciju:\n\n{code}\n\nOvaj kod vrijedi do {expiresAt}.\n\nAko ovo nisi zatražio, netko je možda dobio pristup tvom računu. Odmah promijeni lozinku i omogući dvofaktorsku autentifikaciju.\n\n– {product_name} Tim"
},
"password_reset": {
"subject": "Resetiraj svoju lozinku za {product_name}",
"body": "Pozdrav {username},\n\nZatražio si poništavanje {product_name} lozinke. Koristi poveznicu ispod za postavljanje nove lozinke:\n\n{resetUrl}\n\nAko ovo nisi zatražio, možeš zanemariti ovu e-poštu.\n\nOva poveznica vrijedi 1 sat.\n\n– {product_name} Tim"
},
"registration_approved": {
"subject": "Tvoja registracija za {product_name} je odobrena",
"body": "Pozdrav {username},\n\nDobre vijesti: tvoja {product_name} registracija je odobrena.\n\nSada se možeš prijaviti u {product_name} aplikaciju ovdje:\n{channelsUrl}\n\nDobrodošao u {product_name} zajednicu.\n\n– {product_name} Tim"
},
"report_resolved": {
"subject": "Tvoja prijava na {product_name} je pregledana",
"body": "Pozdrav {username},\n\nTvoje izvješće (ID: {reportId}) pregledao je naš Sigurnosni tim.{hasComment, select, yes {\n\nOdgovor Sigurnosnog tima:\n{publicComment}} other {}}\n\nHvala ti što pomažeš da {product_name} bude siguran za sve. Sve prijave shvaćamo ozbiljno i cijenimo tvoj doprinos zajednici.\n\nAko imaš bilo kakvih pitanja ili nedoumica u vezi s ovim rezultatom, kontaktiraj {safety_email}.\n\n– {product_name} Sigurnosni Tim"
},
"scheduled_deletion_notification": {
"subject": "Tvoj {product_name} račun bit će trajno izbrisan",
"body": "Pozdrav {username},\n\nTvoj {product_name} račun je zakazan za trajno brisanje.\n\nZakazano brisanje: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Razlog: {reason}}\n}\n\nOvo je ozbiljna mjera. Podaci tvog računa bit će trajno izbrisani na zakazani datum.\n\nAko smatraš da je ova odluka o provedbi bila netočna, možeš podnijeti žalbu. Pošalji e-poštu na {appeals_email} s ove adrese e-pošte.\n\n– {product_name} Sigurnosni Tim"
},
"self_deletion_scheduled": {
"subject": "Brisanje tvog računa za {product_name} je zakazano",
"body": "Pozdrav {username},\n\nZatražio si brisanje svog {product_name} računa. Tvoj račun je zakazan za trajno brisanje:\n\n{deletionDate, date, full} u {deletionDate, time, short}\n\nAko ovo nisi zatražio, prijavi se na svoj račun kako bi otkazao brisanje. Također preporučujemo da promijeniš lozinku kako bi osigurao svoj račun.\n\n– {product_name} Tim"
},
"unban_notification": {
"subject": "Suspenzija tvog računa za {product_name} je ukinuta",
"body": "Pozdrav {username},\n\nDobre vijesti: suspenzija tvog {product_name} računa je ukinuta.\n\n{reason, select,\n null {}\n other {Razlog: {reason}}\n}\n\nSada se možeš ponovno prijaviti i nastaviti koristiti {product_name} kao i obično.\n\n– {product_name} Sigurnosni Tim"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "A {product_name} fiókodat ideiglenesen letiltottuk",
"body": "Szia {username},\n\nIdeiglenesen letiltottuk a {product_name} fiókodat, mert gyanús tevékenységet észleltünk.\n\n{reason, select,\n null {}\n other {Indok: {reason}}\n}\n\nA fiókodhoz való hozzáférés visszaszerzéséhez vissza kell állítanod a jelszavadat:\n\n{forgotUrl}\n\nA jelszó visszaállítása után újra be tudsz jelentkezni.\n\nHa úgy gondolod, hogy ez tévedésből történt, vedd fel a kapcsolatot a támogatási csapatunkkal.\n\n– {product_name} Biztonsági Csapat"
},
"account_scheduled_deletion": {
"subject": "{product_name} fiókod véglegesen törölve lesz",
"body": "Szia {username},\n\n{product_name} fiókod végleges törlésre van ütemezve a Szolgáltatási feltételeink vagy a Közösségi irányelveink megsértése miatt.\n\nTervezett törlés: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Indok: {reason}}\n}\n\nEz egy komoly végrehajtási intézkedés. Fiókod adatai a tervezett dátumon véglegesen törölve lesznek.\n\nTekintsd át:\n- Szolgáltatási feltételek: {termsUrl}\n- Közösségi irányelvek: {guidelinesUrl}\n\nFellebbezési eljárás:\nHa úgy gondolod, hogy ez a végrehajtási döntés helytelen vagy indokolatlan volt, 60 napod van fellebbezést benyújtani. Küldj e-mailt az {appeals_email} címre erről az e-mail címről.\n\nA fellebbezésedben:\n- Egyértelműen magyarázd el, miért gondolod, hogy a végrehajtási döntés helytelen vagy indokolatlan volt\n- Adj meg minden releváns bizonyítékot vagy kontextust\n\nA {product_name} Biztonsági Csapatának egy tagja felülvizsgálja a fellebbezésedet, és felfüggesztheti a függőben lévő törlést, amíg végleges döntés nem születik.\n\n– {product_name} Biztonsági Csapat"
},
"account_temp_banned": {
"subject": "A {product_name} fiókodat ideiglenesen felfüggesztettük",
"body": "Szia {username},\n\n{product_name} fiókodat ideiglenesen felfüggesztettük a Szolgáltatási feltételeink vagy a Közösségi irányelveink megsértése miatt.\n\nIdőtartam: {durationHours, plural,\n =1 {1 óra}\n other {# óra}\n}\nFelfüggesztve eddig: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Indok: {reason}}\n}\n\nEz idő alatt nem fogsz tudni hozzáférni a fiókodhoz.\n\nTekintsd át:\n- Szolgáltatási feltételek: {termsUrl}\n- Közösségi irányelvek: {guidelinesUrl}\n\nHa úgy gondolod, hogy ez a végrehajtási döntés helytelen vagy indokolatlan volt, fellebbezést nyújthatsz be. Küldj e-mailt az {appeals_email} címre erről az e-mail címről, és egyértelműen magyarázd el, miért gondolod, hogy a döntés helytelen volt. Felülvizsgáljuk a fellebbezésedet, és válaszolunk a döntésünkről.\n\n– {product_name} Biztonsági Csapat"
},
"donation_confirmation": {
"subject": "Köszönjük a {product_name} adományodat",
"body": "Szia,\n\nKöszönjük a {product_name} adományodat! A {interval, select,\n month {rendszeres adományod}\n year {rendszeres adományod}\n other {egyszeri adományod}\n} sikeresen {interval, select,\n month {beállítottuk}\n year {beállítottuk}\n other {feldolgoztuk}\n}.\n\nAdomány részletei:\nÖsszeg: {amount} {currency} {interval, select,\n month {havonta}\n year {évente}\n other {}\n}\n\nA Stripe hamarosan külön nyugtát küld neked e-mailben a számla PDF-jével. Ez tartalmazza az összes fizetési adatot, és adózási célokra is felhasználható.\n\nAdománytörténetedet, számláidat és {interval, select,\n month {előfizetésedet}\n year {előfizetésedet}\n other {jövőbeli adományaidat}\n} bármikor kezelheted vagy lemondhatod ezen a linken:\n\n{manageUrl}\n\nA támogatásod segít a {product_name} működésében. Köszönjük!\n\n– {product_name} Csapat"
},
"donation_magic_link": {
"subject": "A {product_name} adományaid kezelése",
"body": "Szia,\n\nKattints az alábbi linkre az adományozói portálod eléréséhez:\n\n{manageUrl}\n\nA portálon kezelheted az előfizetéseket, letöltheted a számlákat, és megtekintheted az adománytörténetedet.\n\nEz a link {expiresAt, date, full} {expiresAt, time, short} időpontban jár le.\n\nHa nem kérted ezt a linket, nyugodtan figyelmen kívül hagyhatod ezt az e-mailt.\n\n– {product_name} Csapat"
},
"dsa_report_verification": {
"subject": "Erősítsd meg e-mail címedet a DSA jelentésedhez",
"body": "Szia,\n\nHasználd az alábbi ellenőrző kódot a DSA jelentésed benyújtásához a {product_name} felületén:\n\n{code}\n\nEz a kód {expiresAt, date, full} {expiresAt, time, short} időpontban jár le.\n\nHa nem kérted ezt, figyelmen kívül hagyhatod ezt az e-mailt.\n\n– {product_name} Biztonsági Csapat"
},
"email_change_new": {
"subject": "Erősítsd meg új {product_name} e-mail címedet",
"body": "Szia {username},\n\nAdd meg ezt a kódot az alkalmazásban az új {product_name} e-mail címed megerősítéséhez:\n\n{code}\n\nEz a kód {expiresAt, date, full} {expiresAt, time, short} időpontban jár le.\n\nHa nem kérted ezt, figyelmen kívül hagyhatod ezt az e-mailt.\n\n– {product_name} Csapat"
},
"email_change_original": {
"subject": "Erősítsd meg a {product_name} e-mail címed megváltoztatását",
"body": "Szia {username},\n\nKérést kaptunk a {product_name} fiókod e-mail címének megváltoztatására.\n\nA változtatás megerősítéséhez add meg ezt a kódot az alkalmazásban:\n\n{code}\n\nEz a kód {expiresAt, date, full} {expiresAt, time, short} időpontban jár le.\n\nHa nem kérted ezt, azonnal biztosítsd a fiókodat.\n\n– {product_name} Csapat"
},
"email_change_revert": {
"subject": "A {product_name} e-mail címed megváltozott",
"body": "Szia {username},\n\nA {product_name} fiókod e-mail címe a következőre változott: {newEmail}.\n\nHa te végezted ezt a változtatást, nincs szükség további intézkedésre. Ha nem te voltál, visszavonhatod a változtatást, és biztosíthatod a fiókodat ezen a linken:\n\n{revertUrl}\n\nEz visszaállítja az előző e-mail címedet, kijelentkeztet mindenhol, eltávolítja a kapcsolt telefonszámokat, letiltja az MFA-t, és új jelszó beállítására lesz szükséged.\n\n– {product_name} Biztonsági Csapat"
},
"email_verification": {
"subject": "Erősítsd meg {product_name} e-mail címedet",
"body": "Szia {username},\n\nErősítsd meg a {product_name} fiókod e-mail címét az alábbi linkre kattintva:\n\n{verifyUrl}\n\nHa nem hoztál létre {product_name} fiókot, nyugodtan figyelmen kívül hagyhatod ezt az e-mailt.\n\nEz a link 24 óráig érvényes.\n\n– {product_name} Csapat"
},
"gift_chargeback_notification": {
"subject": "Eltávolítottuk a beváltott ajándékod előnyeit",
"body": "Szia {username},\n\nAz általad beváltott ajándékkódot eredetileg valaki más fizette. Ez a fizetés azóta visszavonásra került (visszaterhelés).\n\nEmiatt eltávolítottuk azokat az előnyöket, amelyeket a fiókodhoz adtunk, amikor beváltottad az ajándékot.\n\nHa úgy gondolod, hogy ez hiba, vedd fel a kapcsolatot a támogatási csapatunkkal, és add meg az ajándékkóddal és a beváltás időpontjával kapcsolatos részleteket.\n\n– {product_name} Csapat"
},
"harvest_completed": {
"subject": "A {product_name} adatexportod letölthető",
"body": "Szia {username},\n\nAdataid exportálása elkészült.\n\nLetöltési link:\n{downloadUrl}\n\nÜzenetek száma: {totalMessages, number}\nFájlméret: {fileSizeMB, number} MB\n\nEz a link {expiresAt, date, full} {expiresAt, time, short} időpontban jár le.\n\nHa nem kérted ezt az exportálást, azonnal változtasd meg a jelszavadat, és vedd fel a kapcsolatot a támogatási csapatunkkal.\n\n– {product_name} Csapat"
},
"inactivity_warning": {
"subject": "A {product_name} fiókodat inaktivitás miatt töröljük",
"body": "Szia {username},\n\nNem észleltünk semmilyen tevékenységet a {product_name} fiókodon {lastActiveDate, date, full} óta.\n\nHa nem jelentkezel be {deletionDate, date, full} {deletionDate, time, short} időpontig, fiókod véglegesen törlésre kerül inaktivitás miatt.\n\nJelentkezz be itt:\n{loginUrl}\n\nHa mostanában használtad a {product_name} alkalmazást, azonnal vedd fel a kapcsolatot a támogatási csapatunkkal.\n\n– {product_name} Csapat"
},
"ip_authorization": {
"subject": "Új IP-címről való bejelentkezés engedélyezése",
"body": "Szia {username},\n\nBejelentkezési kísérletet észleltünk a {product_name} fiókodba egy új IP-címről:\n\nIP-cím: {ipAddress}\nHelyszín: {location}\n\nHa te voltál, engedélyezd ezt az IP-címet az alábbi linkre kattintva:\n\n{authUrl}\n\nHa nem te próbáltál bejelentkezni, azonnal változtasd meg a jelszavadat.\n\nEz a link 30 percig érvényes.\n\n– {product_name} Csapat"
},
"password_change_verification": {
"subject": "Erősítsd meg a {product_name} jelszócserédet",
"body": "Szia {username},\n\nKérést kaptunk a {product_name} fiókod jelszavának megváltoztatására.\n\nA változtatás megerősítéséhez add meg ezt a kódot az alkalmazásban:\n\n{code}\n\nEz a kód {expiresAt}-kor jár le.\n\nHa nem kérted ezt, valaki hozzáférhet a fiókodhoz. Azonnal változtasd meg a jelszavadat, és engedélyezd a kétfaktoros hitelesítést.\n\n– {product_name} Csapat"
},
"password_reset": {
"subject": "A {product_name} jelszó visszaállítása",
"body": "Szia {username},\n\n{product_name} jelszó visszaállítását kérted. Használd az alábbi linket új jelszó beállításához:\n\n{resetUrl}\n\nHa nem kérted ezt, nyugodtan figyelmen kívül hagyhatod ezt az e-mailt.\n\nEz a link 1 óráig érvényes.\n\n– {product_name} Csapat"
},
"registration_approved": {
"subject": "A {product_name} regisztrációdat jóváhagytuk",
"body": "Szia {username},\n\nJó hír: {product_name} regisztrációd jóváhagyásra került.\n\nMost már bejelentkezhetsz a {product_name} alkalmazásba itt:\n{channelsUrl}\n\nÜdvözlünk a {product_name} közösségben.\n\n– {product_name} Csapat"
},
"report_resolved": {
"subject": "A {product_name} jelentésedet felülvizsgáltuk",
"body": "Szia {username},\n\nJelentésedet (azonosító: {reportId}) felülvizsgálta Biztonsági Csapatunk.{hasComment, select, yes {\n\nVálasz a Biztonsági Csapattól:\n{publicComment}} other {}}\n\nKöszönjük, hogy segítesz a {product_name} biztonságos megőrzésében mindenki számára. Minden jelentést komolyan veszünk, és nagyra értékeljük a közösséghez való hozzájárulásodat.\n\nHa bármilyen kérdésed vagy aggályod van ezzel az eredménnyel kapcsolatban, vedd fel a kapcsolatot a {safety_email} címen.\n\n– {product_name} Biztonsági Csapat"
},
"scheduled_deletion_notification": {
"subject": "{product_name} fiókod véglegesen törölve lesz",
"body": "Szia {username},\n\nA {product_name} fiókod végleges törlésre van ütemezve.\n\nTervezett törlés: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Indok: {reason}}\n}\n\nEz egy komoly végrehajtási intézkedés. Fiókod adatai a tervezett dátumon véglegesen törölve lesznek.\n\nHa úgy gondolod, hogy ez a végrehajtási döntés helytelen volt, fellebbezést nyújthatsz be. Küldj e-mailt az {appeals_email} címre erről az e-mail címről.\n\n– {product_name} Biztonsági Csapat"
},
"self_deletion_scheduled": {
"subject": "A {product_name} fiókod törlését ütemeztük",
"body": "Szia {username},\n\nKérted a {product_name} fiókod törlését. Fiókod végleges törlése a következő időpontra van ütemezve:\n\n{deletionDate, date, full} {deletionDate, time, short}\n\nHa nem te kérted ezt, jelentkezz be a fiókodba a törlés visszavonásához. Javasoljuk továbbá, hogy változtasd meg a jelszavadat a fiókod biztonságának megőrzése érdekében.\n\n– {product_name} Csapat"
},
"unban_notification": {
"subject": "A {product_name} fiókod felfüggesztését feloldottuk",
"body": "Szia {username},\n\nJó hír: {product_name} fiókod felfüggesztése feloldásra került.\n\n{reason, select,\n null {}\n other {Indok: {reason}}\n}\n\nMost már újra bejelentkezhetsz, és a szokásos módon használhatod a {product_name} alkalmazást.\n\n– {product_name} Biztonsági Csapat"
}
"account_disabled_suspicious": {
"subject": "A {product_name} fiókodat ideiglenesen letiltottuk",
"body": "Szia {username},\n\nIdeiglenesen letiltottuk a {product_name} fiókodat, mert gyanús tevékenységet észleltünk.\n\n{reason, select,\n null {}\n other {Indok: {reason}}\n}\n\nA fiókodhoz való hozzáférés visszaszerzéséhez vissza kell állítanod a jelszavadat:\n\n{forgotUrl}\n\nA jelszó visszaállítása után újra be tudsz jelentkezni.\n\nHa úgy gondolod, hogy ez tévedésből történt, vedd fel a kapcsolatot a támogatási csapatunkkal.\n\n– {product_name} Biztonsági Csapat"
},
"account_scheduled_deletion": {
"subject": "{product_name} fiókod véglegesen törölve lesz",
"body": "Szia {username},\n\n{product_name} fiókod végleges törlésre van ütemezve a Szolgáltatási feltételeink vagy a Közösségi irányelveink megsértése miatt.\n\nTervezett törlés: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Indok: {reason}}\n}\n\nEz egy komoly végrehajtási intézkedés. Fiókod adatai a tervezett dátumon véglegesen törölve lesznek.\n\nTekintsd át:\n- Szolgáltatási feltételek: {termsUrl}\n- Közösségi irányelvek: {guidelinesUrl}\n\nFellebbezési eljárás:\nHa úgy gondolod, hogy ez a végrehajtási döntés helytelen vagy indokolatlan volt, 60 napod van fellebbezést benyújtani. Küldj e-mailt az {appeals_email} címre erről az e-mail címről.\n\nA fellebbezésedben:\n- Egyértelműen magyarázd el, miért gondolod, hogy a végrehajtási döntés helytelen vagy indokolatlan volt\n- Adj meg minden releváns bizonyítékot vagy kontextust\n\nA {product_name} Biztonsági Csapatának egy tagja felülvizsgálja a fellebbezésedet, és felfüggesztheti a függőben lévő törlést, amíg végleges döntés nem születik.\n\n– {product_name} Biztonsági Csapat"
},
"account_temp_banned": {
"subject": "A {product_name} fiókodat ideiglenesen felfüggesztettük",
"body": "Szia {username},\n\n{product_name} fiókodat ideiglenesen felfüggesztettük a Szolgáltatási feltételeink vagy a Közösségi irányelveink megsértése miatt.\n\nIdőtartam: {durationHours, plural,\n =1 {1 óra}\n other {# óra}\n}\nFelfüggesztve eddig: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Indok: {reason}}\n}\n\nEz idő alatt nem fogsz tudni hozzáférni a fiókodhoz.\n\nTekintsd át:\n- Szolgáltatási feltételek: {termsUrl}\n- Közösségi irányelvek: {guidelinesUrl}\n\nHa úgy gondolod, hogy ez a végrehajtási döntés helytelen vagy indokolatlan volt, fellebbezést nyújthatsz be. Küldj e-mailt az {appeals_email} címre erről az e-mail címről, és egyértelműen magyarázd el, miért gondolod, hogy a döntés helytelen volt. Felülvizsgáljuk a fellebbezésedet, és válaszolunk a döntésünkről.\n\n– {product_name} Biztonsági Csapat"
},
"donation_confirmation": {
"subject": "Köszönjük a {product_name} adományodat",
"body": "Szia,\n\nKöszönjük a {product_name} adományodat! A {interval, select,\n month {rendszeres adományod}\n year {rendszeres adományod}\n other {egyszeri adományod}\n} sikeresen {interval, select,\n month {beállítottuk}\n year {beállítottuk}\n other {feldolgoztuk}\n}.\n\nAdomány részletei:\nÖsszeg: {amount} {currency} {interval, select,\n month {havonta}\n year {évente}\n other {}\n}\n\nA Stripe hamarosan külön nyugtát küld neked e-mailben a számla PDF-jével. Ez tartalmazza az összes fizetési adatot, és adózási célokra is felhasználható.\n\nAdománytörténetedet, számláidat és {interval, select,\n month {előfizetésedet}\n year {előfizetésedet}\n other {jövőbeli adományaidat}\n} bármikor kezelheted vagy lemondhatod ezen a linken:\n\n{manageUrl}\n\nA támogatásod segít a {product_name} működésében. Köszönjük!\n\n– {product_name} Csapat"
},
"donation_magic_link": {
"subject": "A {product_name} adományaid kezelése",
"body": "Szia,\n\nKattints az alábbi linkre az adományozói portálod eléréséhez:\n\n{manageUrl}\n\nA portálon kezelheted az előfizetéseket, letöltheted a számlákat, és megtekintheted az adománytörténetedet.\n\nEz a link {expiresAt, date, full} {expiresAt, time, short} időpontban jár le.\n\nHa nem kérted ezt a linket, nyugodtan figyelmen kívül hagyhatod ezt az e-mailt.\n\n– {product_name} Csapat"
},
"dsa_report_verification": {
"subject": "Erősítsd meg e-mail címedet a DSA jelentésedhez",
"body": "Szia,\n\nHasználd az alábbi ellenőrző kódot a DSA jelentésed benyújtásához a {product_name} felületén:\n\n{code}\n\nEz a kód {expiresAt, date, full} {expiresAt, time, short} időpontban jár le.\n\nHa nem kérted ezt, figyelmen kívül hagyhatod ezt az e-mailt.\n\n– {product_name} Biztonsági Csapat"
},
"email_change_new": {
"subject": "Erősítsd meg új {product_name} e-mail címedet",
"body": "Szia {username},\n\nAdd meg ezt a kódot az alkalmazásban az új {product_name} e-mail címed megerősítéséhez:\n\n{code}\n\nEz a kód {expiresAt, date, full} {expiresAt, time, short} időpontban jár le.\n\nHa nem kérted ezt, figyelmen kívül hagyhatod ezt az e-mailt.\n\n– {product_name} Csapat"
},
"email_change_original": {
"subject": "Erősítsd meg a {product_name} e-mail címed megváltoztatását",
"body": "Szia {username},\n\nKérést kaptunk a {product_name} fiókod e-mail címének megváltoztatására.\n\nA változtatás megerősítéséhez add meg ezt a kódot az alkalmazásban:\n\n{code}\n\nEz a kód {expiresAt, date, full} {expiresAt, time, short} időpontban jár le.\n\nHa nem kérted ezt, azonnal biztosítsd a fiókodat.\n\n– {product_name} Csapat"
},
"email_change_revert": {
"subject": "A {product_name} e-mail címed megváltozott",
"body": "Szia {username},\n\nA {product_name} fiókod e-mail címe a következőre változott: {newEmail}.\n\nHa te végezted ezt a változtatást, nincs szükség további intézkedésre. Ha nem te voltál, visszavonhatod a változtatást, és biztosíthatod a fiókodat ezen a linken:\n\n{revertUrl}\n\nEz visszaállítja az előző e-mail címedet, kijelentkeztet mindenhol, eltávolítja a kapcsolt telefonszámokat, letiltja az MFA-t, és új jelszó beállítására lesz szükséged.\n\n– {product_name} Biztonsági Csapat"
},
"email_verification": {
"subject": "Erősítsd meg {product_name} e-mail címedet",
"body": "Szia {username},\n\nErősítsd meg a {product_name} fiókod e-mail címét az alábbi linkre kattintva:\n\n{verifyUrl}\n\nHa nem hoztál létre {product_name} fiókot, nyugodtan figyelmen kívül hagyhatod ezt az e-mailt.\n\nEz a link 24 óráig érvényes.\n\n– {product_name} Csapat"
},
"gift_chargeback_notification": {
"subject": "Eltávolítottuk a beváltott ajándékod előnyeit",
"body": "Szia {username},\n\nAz általad beváltott ajándékkódot eredetileg valaki más fizette. Ez a fizetés azóta visszavonásra került (visszaterhelés).\n\nEmiatt eltávolítottuk azokat az előnyöket, amelyeket a fiókodhoz adtunk, amikor beváltottad az ajándékot.\n\nHa úgy gondolod, hogy ez hiba, vedd fel a kapcsolatot a támogatási csapatunkkal, és add meg az ajándékkóddal és a beváltás időpontjával kapcsolatos részleteket.\n\n– {product_name} Csapat"
},
"harvest_completed": {
"subject": "A {product_name} adatexportod letölthető",
"body": "Szia {username},\n\nAdataid exportálása elkészült.\n\nLetöltési link:\n{downloadUrl}\n\nÜzenetek száma: {totalMessages, number}\nFájlméret: {fileSizeMB, number} MB\n\nEz a link {expiresAt, date, full} {expiresAt, time, short} időpontban jár le.\n\nHa nem kérted ezt az exportálást, azonnal változtasd meg a jelszavadat, és vedd fel a kapcsolatot a támogatási csapatunkkal.\n\n– {product_name} Csapat"
},
"inactivity_warning": {
"subject": "A {product_name} fiókodat inaktivitás miatt töröljük",
"body": "Szia {username},\n\nNem észleltünk semmilyen tevékenységet a {product_name} fiókodon {lastActiveDate, date, full} óta.\n\nHa nem jelentkezel be {deletionDate, date, full} {deletionDate, time, short} időpontig, fiókod véglegesen törlésre kerül inaktivitás miatt.\n\nJelentkezz be itt:\n{loginUrl}\n\nHa mostanában használtad a {product_name} alkalmazást, azonnal vedd fel a kapcsolatot a támogatási csapatunkkal.\n\n– {product_name} Csapat"
},
"ip_authorization": {
"subject": "Új IP-címről való bejelentkezés engedélyezése",
"body": "Szia {username},\n\nBejelentkezési kísérletet észleltünk a {product_name} fiókodba egy új IP-címről:\n\nIP-cím: {ipAddress}\nHelyszín: {location}\n\nHa te voltál, engedélyezd ezt az IP-címet az alábbi linkre kattintva:\n\n{authUrl}\n\nHa nem te próbáltál bejelentkezni, azonnal változtasd meg a jelszavadat.\n\nEz a link 30 percig érvényes.\n\n– {product_name} Csapat"
},
"password_change_verification": {
"subject": "Erősítsd meg a {product_name} jelszócserédet",
"body": "Szia {username},\n\nKérést kaptunk a {product_name} fiókod jelszavának megváltoztatására.\n\nA változtatás megerősítéséhez add meg ezt a kódot az alkalmazásban:\n\n{code}\n\nEz a kód {expiresAt}-kor jár le.\n\nHa nem kérted ezt, valaki hozzáférhet a fiókodhoz. Azonnal változtasd meg a jelszavadat, és engedélyezd a kétfaktoros hitelesítést.\n\n– {product_name} Csapat"
},
"password_reset": {
"subject": "A {product_name} jelszó visszaállítása",
"body": "Szia {username},\n\n{product_name} jelszó visszaállítását kérted. Használd az alábbi linket új jelszó beállításához:\n\n{resetUrl}\n\nHa nem kérted ezt, nyugodtan figyelmen kívül hagyhatod ezt az e-mailt.\n\nEz a link 1 óráig érvényes.\n\n– {product_name} Csapat"
},
"registration_approved": {
"subject": "A {product_name} regisztrációdat jóváhagytuk",
"body": "Szia {username},\n\nJó hír: {product_name} regisztrációd jóváhagyásra került.\n\nMost már bejelentkezhetsz a {product_name} alkalmazásba itt:\n{channelsUrl}\n\nÜdvözlünk a {product_name} közösségben.\n\n– {product_name} Csapat"
},
"report_resolved": {
"subject": "A {product_name} jelentésedet felülvizsgáltuk",
"body": "Szia {username},\n\nJelentésedet (azonosító: {reportId}) felülvizsgálta Biztonsági Csapatunk.{hasComment, select, yes {\n\nVálasz a Biztonsági Csapattól:\n{publicComment}} other {}}\n\nKöszönjük, hogy segítesz a {product_name} biztonságos megőrzésében mindenki számára. Minden jelentést komolyan veszünk, és nagyra értékeljük a közösséghez való hozzájárulásodat.\n\nHa bármilyen kérdésed vagy aggályod van ezzel az eredménnyel kapcsolatban, vedd fel a kapcsolatot a {safety_email} címen.\n\n– {product_name} Biztonsági Csapat"
},
"scheduled_deletion_notification": {
"subject": "{product_name} fiókod véglegesen törölve lesz",
"body": "Szia {username},\n\nA {product_name} fiókod végleges törlésre van ütemezve.\n\nTervezett törlés: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Indok: {reason}}\n}\n\nEz egy komoly végrehajtási intézkedés. Fiókod adatai a tervezett dátumon véglegesen törölve lesznek.\n\nHa úgy gondolod, hogy ez a végrehajtási döntés helytelen volt, fellebbezést nyújthatsz be. Küldj e-mailt az {appeals_email} címre erről az e-mail címről.\n\n– {product_name} Biztonsági Csapat"
},
"self_deletion_scheduled": {
"subject": "A {product_name} fiókod törlését ütemeztük",
"body": "Szia {username},\n\nKérted a {product_name} fiókod törlését. Fiókod végleges törlése a következő időpontra van ütemezve:\n\n{deletionDate, date, full} {deletionDate, time, short}\n\nHa nem te kérted ezt, jelentkezz be a fiókodba a törlés visszavonásához. Javasoljuk továbbá, hogy változtasd meg a jelszavadat a fiókod biztonságának megőrzése érdekében.\n\n– {product_name} Csapat"
},
"unban_notification": {
"subject": "A {product_name} fiókod felfüggesztését feloldottuk",
"body": "Szia {username},\n\nJó hír: {product_name} fiókod felfüggesztése feloldásra került.\n\n{reason, select,\n null {}\n other {Indok: {reason}}\n}\n\nMost már újra bejelentkezhetsz, és a szokásos módon használhatod a {product_name} alkalmazást.\n\n– {product_name} Biztonsági Csapat"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "Akun {product_name}mu telah dinonaktifkan sementara",
"body": "Halo {username},\n\nKami menonaktifkan sementara akun {product_name}mu karena kami mendeteksi aktivitas mencurigakan.\n\n{reason, select,\n null {}\n other {Alasan: {reason}}\n}\n\nUntuk mendapatkan kembali akses ke akunmu, kamu perlu mengatur ulang kata sandimu:\n\n{forgotUrl}\n\nSetelah kamu mengatur ulang kata sandimu, kamu akan bisa masuk lagi.\n\nKalau kamu merasa ini salah, hubungi tim dukungan kami.\n\n– Tim Keamanan {product_name}"
},
"account_scheduled_deletion": {
"subject": "Akun {product_name}mu akan dihapus secara permanen",
"body": "Halo {username},\n\nAkun {product_name}mu telah dijadwalkan untuk dihapus permanen karena melanggar Ketentuan Layanan atau Pedoman Komunitas kami.\n\nPenghapusan terjadwal: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Alasan: {reason}}\n}\n\nIni tindakan serius. Data akunmu akan dihapus permanen pada tanggal yang dijadwalkan.\n\nTinjau:\n- Ketentuan Layanan: {termsUrl}\n- Pedoman Komunitas: {guidelinesUrl}\n\nProses banding:\nJika kamu yakin keputusan ini keliru atau tidak beralasan, kamu punya 60 hari untuk mengajukan banding. Kirim email ke {appeals_email} dari alamat email ini.\n\nDalam bandingmu:\n- Jelaskan dengan jelas kenapa kamu yakin keputusan ini keliru atau tidak beralasan\n- Berikan bukti atau konteks yang relevan\n\nAnggota Tim Keamanan {product_name} akan meninjau bandingmu dan bisa menunda penghapusan sampai keputusan akhir tercapai.\n\n– Tim Keamanan {product_name}"
},
"account_temp_banned": {
"subject": "Akun {product_name}mu telah ditangguhkan sementara",
"body": "Halo {username},\n\nAkun {product_name}mu telah ditangguhkan sementara karena melanggar Ketentuan Layanan atau Pedoman Komunitas kami.\n\nDurasi: {durationHours, plural,\n =1 {1 jam}\n other {# jam}\n}\nDitangguhkan hingga: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Alasan: {reason}}\n}\n\nSelama waktu ini, kamu tidak akan bisa mengakses akunmu.\n\nTinjau:\n- Ketentuan Layanan: {termsUrl}\n- Pedoman Komunitas: {guidelinesUrl}\n\nJika kamu yakin keputusan ini keliru atau tidak beralasan, kamu bisa mengajukan banding. Kirim email ke {appeals_email} dari alamat email ini dan jelaskan dengan jelas kenapa kamu yakin keputusan ini salah. Kami akan meninjau bandingmu dan menanggapi dengan keputusan kami.\n\n– Tim Keamanan {product_name}"
},
"donation_confirmation": {
"subject": "Terima kasih atas donasi {product_name}mu",
"body": "Halo,\n\nTerima kasih atas donasimu ke {product_name}! Donasi {interval, select,\n month {berulang}\n year {berulang}\n other {satu kali}\n}mu telah berhasil {interval, select,\n month {diatur}\n year {diatur}\n other {diproses}\n}.\n\nDetail donasi:\nJumlah: {amount} {currency} {interval, select,\n month {per bulan}\n year {per tahun}\n other {}\n}\n\nStripe akan mengirimkan email tanda terima terpisah dengan PDF fakturmu segera. Ini mencakup semua detail pembayaran dan bisa dipakai untuk keperluan pajak.\n\nKamu bisa lihat riwayat donasimu, unduh faktur, {interval, select,\n month {dan kelola atau batalkan langgananmu}\n year {dan kelola atau batalkan langgananmu}\n other {dan kelola donasi di masa depan}\n} kapan saja menggunakan tautan ini:\n\n{manageUrl}\n\nDonasimu membantu {product_name} tetap jalan. Terima kasih!\n\n– Tim {product_name}"
},
"donation_magic_link": {
"subject": "Kelola donasi {product_name}mu",
"body": "Halo,\n\nKlik tautan di bawah untuk mengakses portal donaturmu:\n\n{manageUrl}\n\nDi portal, kamu bisa kelola langganan, unduh faktur, dan lihat riwayat donasimu.\n\nTautan ini kedaluwarsa pada {expiresAt, date, full} pukul {expiresAt, time, short}.\n\nKalau kamu tidak meminta tautan ini, kamu bisa mengabaikan email ini.\n\n– Tim {product_name}"
},
"dsa_report_verification": {
"subject": "Verifikasi emailmu untuk laporan DSA",
"body": "Halo,\n\nGunakan kode verifikasi di bawah ini untuk mengirimkan laporan Digital Services Actmu di {product_name}:\n\n{code}\n\nKode ini kedaluwarsa pada {expiresAt, date, full} pukul {expiresAt, time, short}.\n\nKalau kamu tidak meminta ini, kamu bisa abaikan email ini.\n\n– Tim Keamanan {product_name}"
},
"email_change_new": {
"subject": "Verifikasi email {product_name} barumu",
"body": "Halo {username},\n\nMasukkan kode ini di aplikasi untuk memverifikasi email {product_name} barumu:\n\n{code}\n\nKode ini kedaluwarsa pada {expiresAt, date, full} pukul {expiresAt, time, short}.\n\nKalau kamu tidak meminta ini, kamu bisa abaikan email ini.\n\n– Tim {product_name}"
},
"email_change_original": {
"subject": "Konfirmasi perubahan email {product_name}mu",
"body": "Halo {username},\n\nKami menerima permintaan untuk mengubah alamat email di akun {product_name}mu.\n\nUntuk mengonfirmasi perubahan ini, masukkan kode ini di aplikasi:\n\n{code}\n\nKode ini kedaluwarsa pada {expiresAt, date, full} pukul {expiresAt, time, short}.\n\nJika kamu tidak meminta ini, segera amankan akunmu.\n\n– Tim {product_name}"
},
"email_change_revert": {
"subject": "Email {product_name}mu telah diubah",
"body": "Halo {username},\n\nAlamat email di akun {product_name}mu telah diubah menjadi {newEmail}.\n\nKalau kamu yang melakukan perubahan ini, tidak perlu lakukan apa pun. Jika bukan kamu yang melakukan ini, kamu bisa batalkan perubahan dan amankan akunmu menggunakan tautan ini:\n\n{revertUrl}\n\nIni akan mengembalikan emailmu sebelumnya, mengeluarkan kamu dari semua perangkat, hapus nomor telepon yang tertaut, nonaktifkan MFA, dan mewajibkan kamu untuk atur kata sandi baru.\n\n– Tim Keamanan {product_name}"
},
"email_verification": {
"subject": "Verifikasi alamat email {product_name}mu",
"body": "Halo {username},\n\nVerifikasi alamat email untuk akun {product_name}mu dengan mengeklik tautan di bawah ini:\n\n{verifyUrl}\n\nKalau kamu tidak membuat akun {product_name}, kamu bisa abaikan email ini dengan aman.\n\nTautan ini berlaku selama 24 jam.\n\n– Tim {product_name}"
},
"gift_chargeback_notification": {
"subject": "Manfaat dari hadiah yang kamu tukarkan telah dihapus",
"body": "Halo {username},\n\nKode hadiah yang kamu tukarkan awalnya dibayar oleh orang lain. Pembayaran itu sudah dibatalkan (chargeback).\n\nKarena ini, kami sudah hapus manfaat yang ditambahkan ke akunmu saat kamu menukarkan hadiah itu.\n\nJika kamu merasa ini adalah kesalahan, hubungi tim dukungan kami dan sertakan detail apa pun yang kamu miliki tentang kode hadiah dan kapan kamu menukarkannya.\n\n– Tim {product_name}"
},
"harvest_completed": {
"subject": "Ekspor data {product_name}mu siap diunduh",
"body": "Halo {username},\n\nEkspor datamu sudah siap.\n\nTautan unduh:\n{downloadUrl}\n\nPesan yang disertakan: {totalMessages, number}\nUkuran file: {fileSizeMB, number} MB\n\nTautan ini kedaluwarsa pada {expiresAt, date, full} pukul {expiresAt, time, short}.\n\nJika kamu tidak meminta ekspor ini, segera ubah kata sandimu dan hubungi tim dukungan kami.\n\n– Tim {product_name}"
},
"inactivity_warning": {
"subject": "Akun {product_name}mu akan dihapus karena tidak aktif",
"body": "Halo {username},\n\nKami belum melihat aktivitas apa pun di akun {product_name}mu sejak {lastActiveDate, date, full}.\n\nJika kamu tidak masuk sebelum {deletionDate, date, full} pukul {deletionDate, time, short}, akunmu akan dihapus permanen karena tidak aktif.\n\nMasuk di sini:\n{loginUrl}\n\nJika kamu baru saja menggunakan {product_name}, segera hubungi tim dukungan kami.\n\n– Tim {product_name}"
},
"ip_authorization": {
"subject": "Otorisasi masuk dari alamat IP barumu",
"body": "Halo {username},\n\nKami mendeteksi upaya masuk ke akun {product_name}mu dari alamat IP baru:\n\nAlamat IP: {ipAddress}\nLokasi: {location}\n\nKalau ini kamu, otorisasi alamat IP ini dengan mengeklik tautan di bawah ini:\n\n{authUrl}\n\nJika kamu tidak mencoba masuk, segera ubah kata sandimu.\n\nTautan ini berlaku selama 30 menit.\n\n– Tim {product_name}"
},
"password_change_verification": {
"subject": "Konfirmasi perubahan kata sandi {product_name}mu",
"body": "Halo {username},\n\nKami menerima permintaan untuk mengubah kata sandi di akun {product_name}mu.\n\nUntuk mengonfirmasi perubahan ini, masukkan kode ini di aplikasi:\n\n{code}\n\nKode ini kedaluwarsa pada {expiresAt}.\n\nJika kamu tidak meminta ini, seseorang mungkin punya akses ke akunmu. Ubah kata sandimu segera dan aktifkan autentikasi dua faktor.\n\n– Tim {product_name}"
},
"password_reset": {
"subject": "Atur ulang kata sandi {product_name}mu",
"body": "Halo {username},\n\nKamu meminta pengaturan ulang kata sandi {product_name}. Gunakan tautan di bawah ini untuk atur kata sandi baru:\n\n{resetUrl}\n\nJika kamu tidak meminta ini, kamu bisa abaikan email ini dengan aman.\n\nTautan ini berlaku selama 1 jam.\n\n– Tim {product_name}"
},
"registration_approved": {
"subject": "Pendaftaran {product_name}mu telah disetujui",
"body": "Halo {username},\n\nKabar baik: pendaftaran {product_name}mu telah disetujui.\n\nKamu sekarang bisa masuk ke aplikasi {product_name} lewat sini:\n{channelsUrl}\n\nSelamat datang di komunitas {product_name}.\n\n– Tim {product_name}"
},
"report_resolved": {
"subject": "Laporan {product_name}mu telah ditinjau",
"body": "Halo {username},\n\nLaporanmu (ID: {reportId}) telah ditinjau oleh Tim Keamanan kami.{hasComment, select, yes {\n\nTanggapan dari Tim Keamanan:\n{publicComment}} other {}}\n\nTerima kasih telah membantu menjaga {product_name} tetap aman untuk semua orang. Kami menanggapi semua laporan dengan serius dan menghargai kontribusimu ke komunitas.\n\nKalau kamu punya pertanyaan atau kekhawatiran tentang hasil ini, hubungi {safety_email}.\n\n– Tim Keamanan {product_name}"
},
"scheduled_deletion_notification": {
"subject": "Akun {product_name}mu akan dihapus secara permanen",
"body": "Halo {username},\n\nAkun {product_name}mu telah dijadwalkan untuk dihapus permanen.\n\nPenghapusan terjadwal: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Alasan: {reason}}\n}\n\nIni tindakan serius. Data akunmu akan dihapus permanen pada tanggal yang dijadwalkan.\n\nJika kamu yakin keputusan ini keliru, kamu bisa ajukan banding. Kirim email ke {appeals_email} dari alamat email ini.\n\n– Tim Keamanan {product_name}"
},
"self_deletion_scheduled": {
"subject": "Penghapusan akun {product_name}mu dijadwalkan",
"body": "Halo {username},\n\nKamu meminta penghapusan akun {product_name}mu. Akunmu dijadwalkan untuk dihapus permanen pada:\n\n{deletionDate, date, full} pukul {deletionDate, time, short}\n\nJika kamu tidak meminta ini, masuk ke akunmu untuk membatalkan penghapusan. Kami juga menyarankan untuk mengubah kata sandimu untuk mengamankan akunmu.\n\n– Tim {product_name}"
},
"unban_notification": {
"subject": "Penangguhan akun {product_name}mu telah dicabut",
"body": "Halo {username},\n\nKabar baik: penangguhan akun {product_name}mu telah dicabut.\n\n{reason, select,\n null {}\n other {Alasan: {reason}}\n}\n\nKamu sekarang bisa masuk lagi dan terus menggunakan {product_name} seperti biasa.\n\n– Tim Keamanan {product_name}"
}
"account_disabled_suspicious": {
"subject": "Akun {product_name}mu telah dinonaktifkan sementara",
"body": "Halo {username},\n\nKami menonaktifkan sementara akun {product_name}mu karena kami mendeteksi aktivitas mencurigakan.\n\n{reason, select,\n null {}\n other {Alasan: {reason}}\n}\n\nUntuk mendapatkan kembali akses ke akunmu, kamu perlu mengatur ulang kata sandimu:\n\n{forgotUrl}\n\nSetelah kamu mengatur ulang kata sandimu, kamu akan bisa masuk lagi.\n\nKalau kamu merasa ini salah, hubungi tim dukungan kami.\n\n– Tim Keamanan {product_name}"
},
"account_scheduled_deletion": {
"subject": "Akun {product_name}mu akan dihapus secara permanen",
"body": "Halo {username},\n\nAkun {product_name}mu telah dijadwalkan untuk dihapus permanen karena melanggar Ketentuan Layanan atau Pedoman Komunitas kami.\n\nPenghapusan terjadwal: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Alasan: {reason}}\n}\n\nIni tindakan serius. Data akunmu akan dihapus permanen pada tanggal yang dijadwalkan.\n\nTinjau:\n- Ketentuan Layanan: {termsUrl}\n- Pedoman Komunitas: {guidelinesUrl}\n\nProses banding:\nJika kamu yakin keputusan ini keliru atau tidak beralasan, kamu punya 60 hari untuk mengajukan banding. Kirim email ke {appeals_email} dari alamat email ini.\n\nDalam bandingmu:\n- Jelaskan dengan jelas kenapa kamu yakin keputusan ini keliru atau tidak beralasan\n- Berikan bukti atau konteks yang relevan\n\nAnggota Tim Keamanan {product_name} akan meninjau bandingmu dan bisa menunda penghapusan sampai keputusan akhir tercapai.\n\n– Tim Keamanan {product_name}"
},
"account_temp_banned": {
"subject": "Akun {product_name}mu telah ditangguhkan sementara",
"body": "Halo {username},\n\nAkun {product_name}mu telah ditangguhkan sementara karena melanggar Ketentuan Layanan atau Pedoman Komunitas kami.\n\nDurasi: {durationHours, plural,\n =1 {1 jam}\n other {# jam}\n}\nDitangguhkan hingga: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Alasan: {reason}}\n}\n\nSelama waktu ini, kamu tidak akan bisa mengakses akunmu.\n\nTinjau:\n- Ketentuan Layanan: {termsUrl}\n- Pedoman Komunitas: {guidelinesUrl}\n\nJika kamu yakin keputusan ini keliru atau tidak beralasan, kamu bisa mengajukan banding. Kirim email ke {appeals_email} dari alamat email ini dan jelaskan dengan jelas kenapa kamu yakin keputusan ini salah. Kami akan meninjau bandingmu dan menanggapi dengan keputusan kami.\n\n– Tim Keamanan {product_name}"
},
"donation_confirmation": {
"subject": "Terima kasih atas donasi {product_name}mu",
"body": "Halo,\n\nTerima kasih atas donasimu ke {product_name}! Donasi {interval, select,\n month {berulang}\n year {berulang}\n other {satu kali}\n}mu telah berhasil {interval, select,\n month {diatur}\n year {diatur}\n other {diproses}\n}.\n\nDetail donasi:\nJumlah: {amount} {currency} {interval, select,\n month {per bulan}\n year {per tahun}\n other {}\n}\n\nStripe akan mengirimkan email tanda terima terpisah dengan PDF fakturmu segera. Ini mencakup semua detail pembayaran dan bisa dipakai untuk keperluan pajak.\n\nKamu bisa lihat riwayat donasimu, unduh faktur, {interval, select,\n month {dan kelola atau batalkan langgananmu}\n year {dan kelola atau batalkan langgananmu}\n other {dan kelola donasi di masa depan}\n} kapan saja menggunakan tautan ini:\n\n{manageUrl}\n\nDonasimu membantu {product_name} tetap jalan. Terima kasih!\n\n– Tim {product_name}"
},
"donation_magic_link": {
"subject": "Kelola donasi {product_name}mu",
"body": "Halo,\n\nKlik tautan di bawah untuk mengakses portal donaturmu:\n\n{manageUrl}\n\nDi portal, kamu bisa kelola langganan, unduh faktur, dan lihat riwayat donasimu.\n\nTautan ini kedaluwarsa pada {expiresAt, date, full} pukul {expiresAt, time, short}.\n\nKalau kamu tidak meminta tautan ini, kamu bisa mengabaikan email ini.\n\n– Tim {product_name}"
},
"dsa_report_verification": {
"subject": "Verifikasi emailmu untuk laporan DSA",
"body": "Halo,\n\nGunakan kode verifikasi di bawah ini untuk mengirimkan laporan Digital Services Actmu di {product_name}:\n\n{code}\n\nKode ini kedaluwarsa pada {expiresAt, date, full} pukul {expiresAt, time, short}.\n\nKalau kamu tidak meminta ini, kamu bisa abaikan email ini.\n\n– Tim Keamanan {product_name}"
},
"email_change_new": {
"subject": "Verifikasi email {product_name} barumu",
"body": "Halo {username},\n\nMasukkan kode ini di aplikasi untuk memverifikasi email {product_name} barumu:\n\n{code}\n\nKode ini kedaluwarsa pada {expiresAt, date, full} pukul {expiresAt, time, short}.\n\nKalau kamu tidak meminta ini, kamu bisa abaikan email ini.\n\n– Tim {product_name}"
},
"email_change_original": {
"subject": "Konfirmasi perubahan email {product_name}mu",
"body": "Halo {username},\n\nKami menerima permintaan untuk mengubah alamat email di akun {product_name}mu.\n\nUntuk mengonfirmasi perubahan ini, masukkan kode ini di aplikasi:\n\n{code}\n\nKode ini kedaluwarsa pada {expiresAt, date, full} pukul {expiresAt, time, short}.\n\nJika kamu tidak meminta ini, segera amankan akunmu.\n\n– Tim {product_name}"
},
"email_change_revert": {
"subject": "Email {product_name}mu telah diubah",
"body": "Halo {username},\n\nAlamat email di akun {product_name}mu telah diubah menjadi {newEmail}.\n\nKalau kamu yang melakukan perubahan ini, tidak perlu lakukan apa pun. Jika bukan kamu yang melakukan ini, kamu bisa batalkan perubahan dan amankan akunmu menggunakan tautan ini:\n\n{revertUrl}\n\nIni akan mengembalikan emailmu sebelumnya, mengeluarkan kamu dari semua perangkat, hapus nomor telepon yang tertaut, nonaktifkan MFA, dan mewajibkan kamu untuk atur kata sandi baru.\n\n– Tim Keamanan {product_name}"
},
"email_verification": {
"subject": "Verifikasi alamat email {product_name}mu",
"body": "Halo {username},\n\nVerifikasi alamat email untuk akun {product_name}mu dengan mengeklik tautan di bawah ini:\n\n{verifyUrl}\n\nKalau kamu tidak membuat akun {product_name}, kamu bisa abaikan email ini dengan aman.\n\nTautan ini berlaku selama 24 jam.\n\n– Tim {product_name}"
},
"gift_chargeback_notification": {
"subject": "Manfaat dari hadiah yang kamu tukarkan telah dihapus",
"body": "Halo {username},\n\nKode hadiah yang kamu tukarkan awalnya dibayar oleh orang lain. Pembayaran itu sudah dibatalkan (chargeback).\n\nKarena ini, kami sudah hapus manfaat yang ditambahkan ke akunmu saat kamu menukarkan hadiah itu.\n\nJika kamu merasa ini adalah kesalahan, hubungi tim dukungan kami dan sertakan detail apa pun yang kamu miliki tentang kode hadiah dan kapan kamu menukarkannya.\n\n– Tim {product_name}"
},
"harvest_completed": {
"subject": "Ekspor data {product_name}mu siap diunduh",
"body": "Halo {username},\n\nEkspor datamu sudah siap.\n\nTautan unduh:\n{downloadUrl}\n\nPesan yang disertakan: {totalMessages, number}\nUkuran file: {fileSizeMB, number} MB\n\nTautan ini kedaluwarsa pada {expiresAt, date, full} pukul {expiresAt, time, short}.\n\nJika kamu tidak meminta ekspor ini, segera ubah kata sandimu dan hubungi tim dukungan kami.\n\n– Tim {product_name}"
},
"inactivity_warning": {
"subject": "Akun {product_name}mu akan dihapus karena tidak aktif",
"body": "Halo {username},\n\nKami belum melihat aktivitas apa pun di akun {product_name}mu sejak {lastActiveDate, date, full}.\n\nJika kamu tidak masuk sebelum {deletionDate, date, full} pukul {deletionDate, time, short}, akunmu akan dihapus permanen karena tidak aktif.\n\nMasuk di sini:\n{loginUrl}\n\nJika kamu baru saja menggunakan {product_name}, segera hubungi tim dukungan kami.\n\n– Tim {product_name}"
},
"ip_authorization": {
"subject": "Otorisasi masuk dari alamat IP barumu",
"body": "Halo {username},\n\nKami mendeteksi upaya masuk ke akun {product_name}mu dari alamat IP baru:\n\nAlamat IP: {ipAddress}\nLokasi: {location}\n\nKalau ini kamu, otorisasi alamat IP ini dengan mengeklik tautan di bawah ini:\n\n{authUrl}\n\nJika kamu tidak mencoba masuk, segera ubah kata sandimu.\n\nTautan ini berlaku selama 30 menit.\n\n– Tim {product_name}"
},
"password_change_verification": {
"subject": "Konfirmasi perubahan kata sandi {product_name}mu",
"body": "Halo {username},\n\nKami menerima permintaan untuk mengubah kata sandi di akun {product_name}mu.\n\nUntuk mengonfirmasi perubahan ini, masukkan kode ini di aplikasi:\n\n{code}\n\nKode ini kedaluwarsa pada {expiresAt}.\n\nJika kamu tidak meminta ini, seseorang mungkin punya akses ke akunmu. Ubah kata sandimu segera dan aktifkan autentikasi dua faktor.\n\n– Tim {product_name}"
},
"password_reset": {
"subject": "Atur ulang kata sandi {product_name}mu",
"body": "Halo {username},\n\nKamu meminta pengaturan ulang kata sandi {product_name}. Gunakan tautan di bawah ini untuk atur kata sandi baru:\n\n{resetUrl}\n\nJika kamu tidak meminta ini, kamu bisa abaikan email ini dengan aman.\n\nTautan ini berlaku selama 1 jam.\n\n– Tim {product_name}"
},
"registration_approved": {
"subject": "Pendaftaran {product_name}mu telah disetujui",
"body": "Halo {username},\n\nKabar baik: pendaftaran {product_name}mu telah disetujui.\n\nKamu sekarang bisa masuk ke aplikasi {product_name} lewat sini:\n{channelsUrl}\n\nSelamat datang di komunitas {product_name}.\n\n– Tim {product_name}"
},
"report_resolved": {
"subject": "Laporan {product_name}mu telah ditinjau",
"body": "Halo {username},\n\nLaporanmu (ID: {reportId}) telah ditinjau oleh Tim Keamanan kami.{hasComment, select, yes {\n\nTanggapan dari Tim Keamanan:\n{publicComment}} other {}}\n\nTerima kasih telah membantu menjaga {product_name} tetap aman untuk semua orang. Kami menanggapi semua laporan dengan serius dan menghargai kontribusimu ke komunitas.\n\nKalau kamu punya pertanyaan atau kekhawatiran tentang hasil ini, hubungi {safety_email}.\n\n– Tim Keamanan {product_name}"
},
"scheduled_deletion_notification": {
"subject": "Akun {product_name}mu akan dihapus secara permanen",
"body": "Halo {username},\n\nAkun {product_name}mu telah dijadwalkan untuk dihapus permanen.\n\nPenghapusan terjadwal: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Alasan: {reason}}\n}\n\nIni tindakan serius. Data akunmu akan dihapus permanen pada tanggal yang dijadwalkan.\n\nJika kamu yakin keputusan ini keliru, kamu bisa ajukan banding. Kirim email ke {appeals_email} dari alamat email ini.\n\n– Tim Keamanan {product_name}"
},
"self_deletion_scheduled": {
"subject": "Penghapusan akun {product_name}mu dijadwalkan",
"body": "Halo {username},\n\nKamu meminta penghapusan akun {product_name}mu. Akunmu dijadwalkan untuk dihapus permanen pada:\n\n{deletionDate, date, full} pukul {deletionDate, time, short}\n\nJika kamu tidak meminta ini, masuk ke akunmu untuk membatalkan penghapusan. Kami juga menyarankan untuk mengubah kata sandimu untuk mengamankan akunmu.\n\n– Tim {product_name}"
},
"unban_notification": {
"subject": "Penangguhan akun {product_name}mu telah dicabut",
"body": "Halo {username},\n\nKabar baik: penangguhan akun {product_name}mu telah dicabut.\n\n{reason, select,\n null {}\n other {Alasan: {reason}}\n}\n\nKamu sekarang bisa masuk lagi dan terus menggunakan {product_name} seperti biasa.\n\n– Tim Keamanan {product_name}"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "Il tuo account {product_name} è stato temporaneamente disabilitato",
"body": "Ciao {username},\n\nAbbiamo temporaneamente disabilitato il tuo account {product_name} perché abbiamo rilevato attività sospette.\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nPer riottenere l'accesso al tuo account, dovrai reimpostare la password:\n\n{forgotUrl}\n\nDopo aver reimpostato la password, potrai accedere di nuovo.\n\nSe ritieni che ciò sia stato fatto per errore, contatta il nostro team di supporto.\n\n– Team di Sicurezza {product_name}"
},
"account_scheduled_deletion": {
"subject": "Il tuo account {product_name} verrà eliminato definitivamente",
"body": "Ciao {username},\n\nIl tuo account {product_name} è stato programmato per l'eliminazione permanente a causa di violazioni dei nostri Termini di Servizio o delle Linee Guida della Comunità.\n\nEliminazione programmata: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nSi tratta di un provvedimento grave. I dati del tuo account verranno eliminati definitivamente alla data programmata.\n\nConsulta:\n- Termini di Servizio: {termsUrl}\n- Linee Guida della Comunità: {guidelinesUrl}\n\nProcesso di ricorso:\nSe ritieni che questa decisione sia scorretta o ingiustificata, hai 60 giorni per presentare un ricorso. Invia un'e-mail a {appeals_email} da questo indirizzo e-mail.\n\nNel tuo ricorso:\n- Spiega chiaramente perché ritieni che la decisione sia scorretta o ingiustificata\n- Fornisci qualsiasi prova o contesto pertinente\n\nUn membro del Team di Sicurezza {product_name} esaminerà il tuo ricorso e potrebbe sospendere l'eliminazione in corso fino a quando non sarà stata raggiunta una decisione finale.\n\n– Team di Sicurezza {product_name}"
},
"account_temp_banned": {
"subject": "Il tuo account {product_name} è stato temporaneamente sospeso",
"body": "Ciao {username},\n\nIl tuo account {product_name} è stato temporaneamente sospeso per aver violato i nostri Termini di Servizio o le Linee Guida della Comunità.\n\nDurata: {durationHours, plural,\n =1 {1 ora}\n other {# ore}\n}\nSospeso fino a: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nDurante questo periodo, non potrai accedere al tuo account.\n\nConsulta:\n- Termini di Servizio: {termsUrl}\n- Linee Guida della Comunità: {guidelinesUrl}\n\nSe ritieni che questa decisione sia scorretta o ingiustificata, puoi presentare un ricorso. Invia un'e-mail a {appeals_email} da questo indirizzo e-mail e spiega chiaramente perché ritieni che la decisione sia scorretta. Esamineremo il tuo ricorso e risponderemo con la nostra decisione.\n\n– Team di Sicurezza {product_name}"
},
"donation_confirmation": {
"subject": "Grazie per la tua donazione a {product_name}",
"body": "Ciao,\n\nGrazie per la tua donazione a {product_name}! La tua {interval, select,\n month {donazione ricorrente}\n year {donazione ricorrente}\n other {donazione una tantum}\n} è stata {interval, select,\n month {impostata}\n year {impostata}\n other {elaborata}\n} con successo.\n\nDettagli della donazione:\nImporto: {amount} {currency} {interval, select,\n month {al mese}\n year {all'anno}\n other {}\n}\n\nStripe ti invierà a breve una ricevuta separata con la tua fattura in PDF. Questa include tutti i dettagli del pagamento e può essere utilizzata a fini fiscali.\n\nPuoi visualizzare la cronologia delle tue donazioni, scaricare le fatture, {interval, select,\n month {e gestire o annullare il tuo abbonamento}\n year {e gestire o annullare il tuo abbonamento}\n other {e gestire le future donazioni}\n} in qualsiasi momento utilizzando questo link:\n\n{manageUrl}\n\nIl tuo supporto aiuta a mantenere {product_name} in funzione. Grazie!\n\n– Team {product_name}"
},
"donation_magic_link": {
"subject": "Gestisci le tue donazioni a {product_name}",
"body": "Ciao,\n\nClicca sul link qui sotto per accedere al tuo portale donatori:\n\n{manageUrl}\n\nNel portale, puoi gestire gli abbonamenti, scaricare le fatture e visualizzare la cronologia delle tue donazioni.\n\nQuesto link scade il {expiresAt, date, full} alle {expiresAt, time, short}.\n\nSe non hai richiesto questo link, puoi ignorare tranquillamente questa email.\n\n– Team {product_name}"
},
"dsa_report_verification": {
"subject": "Verifica la tua e-mail per una segnalazione DSA",
"body": "Ciao,\n\nUsa il codice di verifica qui sotto per inviare la tua segnalazione DSA su {product_name}:\n\n{code}\n\nQuesto codice scade il {expiresAt, date, full} alle {expiresAt, time, short}.\n\nSe non hai richiesto questa operazione, puoi ignorare questa email.\n\n– Team di Sicurezza {product_name}"
},
"email_change_new": {
"subject": "Verifica la tua nuova e-mail di {product_name}",
"body": "Ciao {username},\n\nInserisci questo codice nell'app per verificare la tua nuova e-mail di {product_name}:\n\n{code}\n\nQuesto codice scade il {expiresAt, date, full} alle {expiresAt, time, short}.\n\nSe non hai richiesto questa operazione, puoi ignorare questa e-mail.\n\n– Team {product_name}"
},
"email_change_original": {
"subject": "Conferma la modifica della tua e-mail di {product_name}",
"body": "Ciao {username},\n\nAbbiamo ricevuto una richiesta di modifica dell'indirizzo e-mail del tuo account {product_name}.\n\nPer confermare questa modifica, inserisci questo codice nell'app:\n\n{code}\n\nQuesto codice scade il {expiresAt, date, full} alle {expiresAt, time, short}.\n\nSe non hai richiesto questa operazione, metti subito in sicurezza il tuo account.\n\n– Team {product_name}"
},
"email_change_revert": {
"subject": "La tua e-mail {product_name} è stata modificata",
"body": "Ciao {username},\n\nL'indirizzo e-mail del tuo account {product_name} è stato modificato in {newEmail}.\n\nSe hai effettuato questa modifica, non è necessaria alcuna azione. In caso contrario, puoi annullare la modifica e mettere in sicurezza il tuo account utilizzando questo link:\n\n{revertUrl}\n\nQuesto ripristinerà la tua e-mail precedente, ti disconnetterà da tutti i dispositivi, rimuoverà i numeri di telefono collegati, disabiliterà l'MFA e ti richiederà di impostare una nuova password.\n\n– Team di Sicurezza {product_name}"
},
"email_verification": {
"subject": "Verifica il tuo indirizzo e-mail di {product_name}",
"body": "Ciao {username},\n\nVerifica l'indirizzo e-mail del tuo account {product_name} cliccando sul link qui sotto:\n\n{verifyUrl}\n\nSe non hai creato un account {product_name}, puoi ignorare tranquillamente questa e-mail.\n\nQuesto link è valido per 24 ore.\n\n– Team {product_name}"
},
"gift_chargeback_notification": {
"subject": "I vantaggi del tuo regalo riscattato sono stati rimossi",
"body": "Ciao {username},\n\nUn codice regalo che hai riscattato era stato originariamente pagato da qualcun altro. Tale pagamento è stato successivamente annullato (un chargeback).\n\nPer questo motivo, abbiamo rimosso i benefici che erano stati aggiunti al tuo account quando hai riscattato il regalo.\n\nSe ritieni che si tratti di un errore, contatta il nostro team di supporto e includi tutti i dettagli che hai sul codice regalo e su quando lo hai riscattato.\n\n– Team {product_name}"
},
"harvest_completed": {
"subject": "La tua esportazione dati {product_name} è pronta per il download",
"body": "Ciao {username},\n\nLa tua esportazione dei dati è pronta.\n\nLink per il download:\n{downloadUrl}\n\nMessaggi inclusi: {totalMessages, number}\nDimensione file: {fileSizeMB, number} MB\n\nQuesto link scade il {expiresAt, date, full} alle {expiresAt, time, short}.\n\nSe non hai richiesto questa esportazione, cambia immediatamente la password e contatta il nostro team di supporto.\n\n– Team {product_name}"
},
"inactivity_warning": {
"subject": "Il tuo account {product_name} verrà eliminato per inattività",
"body": "Ciao {username},\n\nNon abbiamo rilevato alcuna attività sul tuo account {product_name} dal {lastActiveDate, date, full}.\n\nSe non effettui l'accesso entro il {deletionDate, date, full} alle {deletionDate, time, short}, il tuo account verrà eliminato definitivamente a causa di inattività.\n\nAccedi qui:\n{loginUrl}\n\nSe hai usato {product_name} di recente, contatta subito il nostro team di supporto.\n\n– Team {product_name}"
},
"ip_authorization": {
"subject": "Autorizza l'accesso da un nuovo indirizzo IP",
"body": "Ciao {username},\n\nAbbiamo rilevato un tentativo di accesso al tuo account {product_name} da un nuovo indirizzo IP:\n\nIndirizzo IP: {ipAddress}\nPosizione: {location}\n\nSe sei stato tu, autorizza questo indirizzo IP cliccando sul link qui sotto:\n\n{authUrl}\n\nSe non hai tentato di accedere, cambia subito la password.\n\nQuesto link è valido per 30 minuti.\n\n– Team {product_name}"
},
"password_change_verification": {
"subject": "Conferma la modifica della password di {product_name}",
"body": "Ciao {username},\n\nAbbiamo ricevuto una richiesta di modifica della password del tuo account {product_name}.\n\nPer confermare questa modifica, inserisci questo codice nell'app:\n\n{code}\n\nQuesto codice scade alle {expiresAt}.\n\nSe non hai richiesto questa modifica, qualcuno potrebbe avere accesso al tuo account. Cambia immediatamente la password e abilita l'autenticazione a due fattori.\n\n– Team {product_name}"
},
"password_reset": {
"subject": "Reimposta la password di {product_name}",
"body": "Ciao {username},\n\nHai richiesto il ripristino della tua password {product_name}. Usa il link qui sotto per impostare una nuova password:\n\n{resetUrl}\n\nSe non hai richiesto questa operazione, puoi ignorare tranquillamente questa email.\n\nQuesto link è valido per 1 ora.\n\n– Team {product_name}"
},
"registration_approved": {
"subject": "La tua registrazione a {product_name} è stata approvata",
"body": "Ciao {username},\n\nBuone notizie: la tua registrazione a {product_name} è stata approvata.\n\nOra puoi accedere all'app {product_name} qui:\n{channelsUrl}\n\nBenvenuto nella comunità di {product_name}.\n\n– Team {product_name}"
},
"report_resolved": {
"subject": "La tua segnalazione {product_name} è stata esaminata",
"body": "Ciao {username},\n\nLa tua segnalazione (ID: {reportId}) è stata esaminata dal nostro Team di Sicurezza.{hasComment, select, yes {\n\nRisposta dal Team di Sicurezza:\n{publicComment}} other {}}\n\nGrazie per aver contribuito a mantenere {product_name} sicuro per tutti. Prendiamo sul serio tutte le segnalazioni e apprezziamo il tuo contributo alla comunità.\n\nSe hai domande o preoccupazioni riguardo a questo esito, contatta {safety_email}.\n\n– Team di Sicurezza {product_name}"
},
"scheduled_deletion_notification": {
"subject": "Il tuo account {product_name} verrà eliminato definitivamente",
"body": "Ciao {username},\n\nIl tuo account {product_name} è stato programmato per l'eliminazione permanente.\n\nEliminazione programmata: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nSi tratta di un provvedimento grave. I dati del tuo account verranno eliminati definitivamente alla data programmata.\n\nSe ritieni che questa decisione sia scorretta, puoi presentare un ricorso. Invia un'e-mail a {appeals_email} da questo indirizzo e-mail.\n\n– Team di Sicurezza {product_name}"
},
"self_deletion_scheduled": {
"subject": "L'eliminazione del tuo account {product_name} è programmata",
"body": "Ciao {username},\n\nHai richiesto di eliminare il tuo account {product_name}. Il tuo account è programmato per l'eliminazione permanente il:\n\n{deletionDate, date, full} alle {deletionDate, time, short}\n\nSe non hai richiesto l'eliminazione, accedi al tuo account per annullarla. Ti consigliamo anche di cambiare la password per mettere in sicurezza il tuo account.\n\n– Team {product_name}"
},
"unban_notification": {
"subject": "La sospensione del tuo account {product_name} è stata revocata",
"body": "Ciao {username},\n\nBuone notizie: la sospensione del tuo account {product_name} è stata revocata.\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nOra puoi accedere di nuovo e continuare a usare {product_name} normalmente.\n\n– Team di Sicurezza {product_name}"
}
"account_disabled_suspicious": {
"subject": "Il tuo account {product_name} è stato temporaneamente disabilitato",
"body": "Ciao {username},\n\nAbbiamo temporaneamente disabilitato il tuo account {product_name} perché abbiamo rilevato attività sospette.\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nPer riottenere l'accesso al tuo account, dovrai reimpostare la password:\n\n{forgotUrl}\n\nDopo aver reimpostato la password, potrai accedere di nuovo.\n\nSe ritieni che ciò sia stato fatto per errore, contatta il nostro team di supporto.\n\n– Team di Sicurezza {product_name}"
},
"account_scheduled_deletion": {
"subject": "Il tuo account {product_name} verrà eliminato definitivamente",
"body": "Ciao {username},\n\nIl tuo account {product_name} è stato programmato per l'eliminazione permanente a causa di violazioni dei nostri Termini di Servizio o delle Linee Guida della Comunità.\n\nEliminazione programmata: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nSi tratta di un provvedimento grave. I dati del tuo account verranno eliminati definitivamente alla data programmata.\n\nConsulta:\n- Termini di Servizio: {termsUrl}\n- Linee Guida della Comunità: {guidelinesUrl}\n\nProcesso di ricorso:\nSe ritieni che questa decisione sia scorretta o ingiustificata, hai 60 giorni per presentare un ricorso. Invia un'e-mail a {appeals_email} da questo indirizzo e-mail.\n\nNel tuo ricorso:\n- Spiega chiaramente perché ritieni che la decisione sia scorretta o ingiustificata\n- Fornisci qualsiasi prova o contesto pertinente\n\nUn membro del Team di Sicurezza {product_name} esaminerà il tuo ricorso e potrebbe sospendere l'eliminazione in corso fino a quando non sarà stata raggiunta una decisione finale.\n\n– Team di Sicurezza {product_name}"
},
"account_temp_banned": {
"subject": "Il tuo account {product_name} è stato temporaneamente sospeso",
"body": "Ciao {username},\n\nIl tuo account {product_name} è stato temporaneamente sospeso per aver violato i nostri Termini di Servizio o le Linee Guida della Comunità.\n\nDurata: {durationHours, plural,\n =1 {1 ora}\n other {# ore}\n}\nSospeso fino a: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nDurante questo periodo, non potrai accedere al tuo account.\n\nConsulta:\n- Termini di Servizio: {termsUrl}\n- Linee Guida della Comunità: {guidelinesUrl}\n\nSe ritieni che questa decisione sia scorretta o ingiustificata, puoi presentare un ricorso. Invia un'e-mail a {appeals_email} da questo indirizzo e-mail e spiega chiaramente perché ritieni che la decisione sia scorretta. Esamineremo il tuo ricorso e risponderemo con la nostra decisione.\n\n– Team di Sicurezza {product_name}"
},
"donation_confirmation": {
"subject": "Grazie per la tua donazione a {product_name}",
"body": "Ciao,\n\nGrazie per la tua donazione a {product_name}! La tua {interval, select,\n month {donazione ricorrente}\n year {donazione ricorrente}\n other {donazione una tantum}\n} è stata {interval, select,\n month {impostata}\n year {impostata}\n other {elaborata}\n} con successo.\n\nDettagli della donazione:\nImporto: {amount} {currency} {interval, select,\n month {al mese}\n year {all'anno}\n other {}\n}\n\nStripe ti invierà a breve una ricevuta separata con la tua fattura in PDF. Questa include tutti i dettagli del pagamento e può essere utilizzata a fini fiscali.\n\nPuoi visualizzare la cronologia delle tue donazioni, scaricare le fatture, {interval, select,\n month {e gestire o annullare il tuo abbonamento}\n year {e gestire o annullare il tuo abbonamento}\n other {e gestire le future donazioni}\n} in qualsiasi momento utilizzando questo link:\n\n{manageUrl}\n\nIl tuo supporto aiuta a mantenere {product_name} in funzione. Grazie!\n\n– Team {product_name}"
},
"donation_magic_link": {
"subject": "Gestisci le tue donazioni a {product_name}",
"body": "Ciao,\n\nClicca sul link qui sotto per accedere al tuo portale donatori:\n\n{manageUrl}\n\nNel portale, puoi gestire gli abbonamenti, scaricare le fatture e visualizzare la cronologia delle tue donazioni.\n\nQuesto link scade il {expiresAt, date, full} alle {expiresAt, time, short}.\n\nSe non hai richiesto questo link, puoi ignorare tranquillamente questa email.\n\n– Team {product_name}"
},
"dsa_report_verification": {
"subject": "Verifica la tua e-mail per una segnalazione DSA",
"body": "Ciao,\n\nUsa il codice di verifica qui sotto per inviare la tua segnalazione DSA su {product_name}:\n\n{code}\n\nQuesto codice scade il {expiresAt, date, full} alle {expiresAt, time, short}.\n\nSe non hai richiesto questa operazione, puoi ignorare questa email.\n\n– Team di Sicurezza {product_name}"
},
"email_change_new": {
"subject": "Verifica la tua nuova e-mail di {product_name}",
"body": "Ciao {username},\n\nInserisci questo codice nell'app per verificare la tua nuova e-mail di {product_name}:\n\n{code}\n\nQuesto codice scade il {expiresAt, date, full} alle {expiresAt, time, short}.\n\nSe non hai richiesto questa operazione, puoi ignorare questa e-mail.\n\n– Team {product_name}"
},
"email_change_original": {
"subject": "Conferma la modifica della tua e-mail di {product_name}",
"body": "Ciao {username},\n\nAbbiamo ricevuto una richiesta di modifica dell'indirizzo e-mail del tuo account {product_name}.\n\nPer confermare questa modifica, inserisci questo codice nell'app:\n\n{code}\n\nQuesto codice scade il {expiresAt, date, full} alle {expiresAt, time, short}.\n\nSe non hai richiesto questa operazione, metti subito in sicurezza il tuo account.\n\n– Team {product_name}"
},
"email_change_revert": {
"subject": "La tua e-mail {product_name} è stata modificata",
"body": "Ciao {username},\n\nL'indirizzo e-mail del tuo account {product_name} è stato modificato in {newEmail}.\n\nSe hai effettuato questa modifica, non è necessaria alcuna azione. In caso contrario, puoi annullare la modifica e mettere in sicurezza il tuo account utilizzando questo link:\n\n{revertUrl}\n\nQuesto ripristinerà la tua e-mail precedente, ti disconnetterà da tutti i dispositivi, rimuoverà i numeri di telefono collegati, disabiliterà l'MFA e ti richiederà di impostare una nuova password.\n\n– Team di Sicurezza {product_name}"
},
"email_verification": {
"subject": "Verifica il tuo indirizzo e-mail di {product_name}",
"body": "Ciao {username},\n\nVerifica l'indirizzo e-mail del tuo account {product_name} cliccando sul link qui sotto:\n\n{verifyUrl}\n\nSe non hai creato un account {product_name}, puoi ignorare tranquillamente questa e-mail.\n\nQuesto link è valido per 24 ore.\n\n– Team {product_name}"
},
"gift_chargeback_notification": {
"subject": "I vantaggi del tuo regalo riscattato sono stati rimossi",
"body": "Ciao {username},\n\nUn codice regalo che hai riscattato era stato originariamente pagato da qualcun altro. Tale pagamento è stato successivamente annullato (un chargeback).\n\nPer questo motivo, abbiamo rimosso i benefici che erano stati aggiunti al tuo account quando hai riscattato il regalo.\n\nSe ritieni che si tratti di un errore, contatta il nostro team di supporto e includi tutti i dettagli che hai sul codice regalo e su quando lo hai riscattato.\n\n– Team {product_name}"
},
"harvest_completed": {
"subject": "La tua esportazione dati {product_name} è pronta per il download",
"body": "Ciao {username},\n\nLa tua esportazione dei dati è pronta.\n\nLink per il download:\n{downloadUrl}\n\nMessaggi inclusi: {totalMessages, number}\nDimensione file: {fileSizeMB, number} MB\n\nQuesto link scade il {expiresAt, date, full} alle {expiresAt, time, short}.\n\nSe non hai richiesto questa esportazione, cambia immediatamente la password e contatta il nostro team di supporto.\n\n– Team {product_name}"
},
"inactivity_warning": {
"subject": "Il tuo account {product_name} verrà eliminato per inattività",
"body": "Ciao {username},\n\nNon abbiamo rilevato alcuna attività sul tuo account {product_name} dal {lastActiveDate, date, full}.\n\nSe non effettui l'accesso entro il {deletionDate, date, full} alle {deletionDate, time, short}, il tuo account verrà eliminato definitivamente a causa di inattività.\n\nAccedi qui:\n{loginUrl}\n\nSe hai usato {product_name} di recente, contatta subito il nostro team di supporto.\n\n– Team {product_name}"
},
"ip_authorization": {
"subject": "Autorizza l'accesso da un nuovo indirizzo IP",
"body": "Ciao {username},\n\nAbbiamo rilevato un tentativo di accesso al tuo account {product_name} da un nuovo indirizzo IP:\n\nIndirizzo IP: {ipAddress}\nPosizione: {location}\n\nSe sei stato tu, autorizza questo indirizzo IP cliccando sul link qui sotto:\n\n{authUrl}\n\nSe non hai tentato di accedere, cambia subito la password.\n\nQuesto link è valido per 30 minuti.\n\n– Team {product_name}"
},
"password_change_verification": {
"subject": "Conferma la modifica della password di {product_name}",
"body": "Ciao {username},\n\nAbbiamo ricevuto una richiesta di modifica della password del tuo account {product_name}.\n\nPer confermare questa modifica, inserisci questo codice nell'app:\n\n{code}\n\nQuesto codice scade alle {expiresAt}.\n\nSe non hai richiesto questa modifica, qualcuno potrebbe avere accesso al tuo account. Cambia immediatamente la password e abilita l'autenticazione a due fattori.\n\n– Team {product_name}"
},
"password_reset": {
"subject": "Reimposta la password di {product_name}",
"body": "Ciao {username},\n\nHai richiesto il ripristino della tua password {product_name}. Usa il link qui sotto per impostare una nuova password:\n\n{resetUrl}\n\nSe non hai richiesto questa operazione, puoi ignorare tranquillamente questa email.\n\nQuesto link è valido per 1 ora.\n\n– Team {product_name}"
},
"registration_approved": {
"subject": "La tua registrazione a {product_name} è stata approvata",
"body": "Ciao {username},\n\nBuone notizie: la tua registrazione a {product_name} è stata approvata.\n\nOra puoi accedere all'app {product_name} qui:\n{channelsUrl}\n\nBenvenuto nella comunità di {product_name}.\n\n– Team {product_name}"
},
"report_resolved": {
"subject": "La tua segnalazione {product_name} è stata esaminata",
"body": "Ciao {username},\n\nLa tua segnalazione (ID: {reportId}) è stata esaminata dal nostro Team di Sicurezza.{hasComment, select, yes {\n\nRisposta dal Team di Sicurezza:\n{publicComment}} other {}}\n\nGrazie per aver contribuito a mantenere {product_name} sicuro per tutti. Prendiamo sul serio tutte le segnalazioni e apprezziamo il tuo contributo alla comunità.\n\nSe hai domande o preoccupazioni riguardo a questo esito, contatta {safety_email}.\n\n– Team di Sicurezza {product_name}"
},
"scheduled_deletion_notification": {
"subject": "Il tuo account {product_name} verrà eliminato definitivamente",
"body": "Ciao {username},\n\nIl tuo account {product_name} è stato programmato per l'eliminazione permanente.\n\nEliminazione programmata: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nSi tratta di un provvedimento grave. I dati del tuo account verranno eliminati definitivamente alla data programmata.\n\nSe ritieni che questa decisione sia scorretta, puoi presentare un ricorso. Invia un'e-mail a {appeals_email} da questo indirizzo e-mail.\n\n– Team di Sicurezza {product_name}"
},
"self_deletion_scheduled": {
"subject": "L'eliminazione del tuo account {product_name} è programmata",
"body": "Ciao {username},\n\nHai richiesto di eliminare il tuo account {product_name}. Il tuo account è programmato per l'eliminazione permanente il:\n\n{deletionDate, date, full} alle {deletionDate, time, short}\n\nSe non hai richiesto l'eliminazione, accedi al tuo account per annullarla. Ti consigliamo anche di cambiare la password per mettere in sicurezza il tuo account.\n\n– Team {product_name}"
},
"unban_notification": {
"subject": "La sospensione del tuo account {product_name} è stata revocata",
"body": "Ciao {username},\n\nBuone notizie: la sospensione del tuo account {product_name} è stata revocata.\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nOra puoi accedere di nuovo e continuare a usare {product_name} normalmente.\n\n– Team di Sicurezza {product_name}"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "{product_name} 계정이 일시적으로 비활성화되었어요",
"body": "안녕하세요, {username}님.\n\n의심스러운 활동이 감지되어 {product_name} 계정을 일시적으로 비활성화했어요.\n\n{reason, select,\n null {}\n other {사유: {reason}}\n}\n\n계정에 다시 액세스하려면 비밀번호를 재설정해야 해요:\n\n{forgotUrl}\n\n비밀번호를 재설정한 후 다시 로그인할 수 있어요.\n\n실수로 비활성화되었다고 생각되면 고객지원팀에 문의해 주세요.\n\n– {product_name} 안전팀"
},
"account_scheduled_deletion": {
"subject": "{product_name} 계정이 영구적으로 삭제될 예정이에요",
"body": "안녕하세요, {username}님.\n\n서비스 약관 또는 커뮤니티 가이드라인 위반으로 인해 {product_name} 계정이 영구적으로 삭제될 예정이에요.\n\n삭제 예정일: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {사유: {reason}}\n}\n\n이는 중대한 조치이며, 계정 데이터는 예정된 날짜에 영구적으로 삭제될 예정이에요.\n\n다음 내용을 확인해 주세요:\n- 서비스 약관: {termsUrl}\n- 커뮤니티 가이드라인: {guidelinesUrl}\n\n이의 제기 절차:\n이 조치가 잘못되었거나 부당하다고 생각되면 60일 이내에 이의를 제기할 수 있어요. 이 이메일 주소에서 {appeals_email}로 이메일을 보내 이의를 제기해 주세요.\n\n이의 제기 시에는:\n- 조치가 잘못되었거나 부당하다고 생각하는 이유를 명확하게 설명해 주세요.\n- 관련 증거 또는 맥락을 제공해 주세요.\n\n{product_name} 안전팀 멤버가 이의 제기를 검토하고 최종 결정이 내려질 때까지 삭제를 일시적으로 보류할 수 있어요.\n\n– {product_name} 안전팀"
},
"account_temp_banned": {
"subject": "{product_name} 계정이 일시적으로 정지되었어요",
"body": "안녕하세요, {username}님.\n\n서비스 약관 또는 커뮤니티 가이드라인 위반으로 인해 {product_name} 계정이 일시적으로 정지되었어요.\n\n기간: {durationHours, plural,\n =1 {1시간}\n other {#시간}\n}\n정지 해제일: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {사유: {reason}}\n}\n\n이 기간 동안에는 계정에 액세스할 수 없어요.\n\n다음 내용을 확인해 주세요:\n- 서비스 약관: {termsUrl}\n- 커뮤니티 가이드라인: {guidelinesUrl}\n\n이 조치가 잘못되었거나 부당하다고 생각되면 이의를 제기할 수 있어요. 이 이메일 주소에서 {appeals_email}로 이메일을 보내 결정이 잘못되었다고 생각하는 이유를 명확하게 설명해 주세요. 이의 제기를 검토한 후 결과를 알려 드릴 예정이에요.\n\n– {product_name} 안전팀"
},
"donation_confirmation": {
"subject": "{product_name} 후원에 감사드립니다",
"body": "안녕하세요,\n\n{product_name}에 후원해 주셔서 감사해요! 회원님의 {interval, select,\n month {정기 후원}\n year {정기 후원}\n other {일회성 후원}\n}이 성공적으로 {interval, select,\n month {설정되었어요}\n year {설정되었어요}\n other {처리되었어요}\n}.\n\n후원 상세 정보:\n금액: {amount} {currency} {interval, select,\n month {매월}\n year {매년}\n other {}\n}\n\nStripe에서 곧 인보이스 PDF가 포함된 별도의 영수증을 이메일로 보내드릴 예정이에요. 이 영수증에는 모든 결제 세부 정보가 포함되어 있으며, 세금 목적으로 활용할 수 있어요.\n\n다음 링크를 통해 언제든지 후원 내역을 확인하고, 인보이스를 다운로드하고, {interval, select,\n month {구독을 관리하거나 취소할 수 있어요}\n year {구독을 관리하거나 취소할 수 있어요}\n other {향후 후원을 관리할 수 있어요}\n}:\n\n{manageUrl}\n\n회원님의 후원은 {product_name}를 계속 운영하는 데 큰 도움이 돼요. 진심으로 감사해요!\n\n– {product_name} 팀"
},
"donation_magic_link": {
"subject": "{product_name} 후원 내역 관리",
"body": "안녕하세요,\n\n아래 링크를 클릭하여 후원자 포털에 접속해 주세요:\n\n{manageUrl}\n\n포털에서 구독을 관리하고, 인보이스를 다운로드하고, 후원 내역을 확인할 수 있어요.\n\n이 링크는 {expiresAt, date, full} {expiresAt, time, short}에 만료돼요.\n\n이 링크를 요청하지 않았다면 이 이메일을 무시해도 괜찮아요.\n\n– {product_name} 팀"
},
"dsa_report_verification": {
"subject": "DSA 보고서 제출 이메일 인증",
"body": "안녕하세요,\n\n아래 인증 코드를 사용하여 {product_name}에 대한 디지털 서비스법 보고서를 제출해 주세요:\n\n{code}\n\n이 코드는 {expiresAt, date, full} {expiresAt, time, short}에 만료돼요.\n\n요청하지 않으셨다면 이 이메일을 무시해도 괜찮아요.\n\n– {product_name} 안전팀"
},
"email_change_new": {
"subject": "새 {product_name} 이메일 인증",
"body": "안녕하세요, {username}님.\n\n새 {product_name} 이메일을 인증하려면 앱에 이 코드를 입력해 주세요:\n\n{code}\n\n이 코드는 {expiresAt, date, full} {expiresAt, time, short}에 만료돼요.\n\n요청하지 않으셨다면 이 이메일을 무시해도 괜찮아요.\n\n– {product_name} 팀"
},
"email_change_original": {
"subject": "{product_name} 이메일 변경 확인",
"body": "안녕하세요, {username}님.\n\n{product_name} 계정의 이메일 주소 변경 요청이 접수되었어요.\n\n이 변경을 확인하려면 앱에 이 코드를 입력해 주세요:\n\n{code}\n\n이 코드는 {expiresAt, date, full} {expiresAt, time, short}에 만료돼요.\n\n요청하지 않으셨다면 즉시 계정을 보호하세요.\n\n– {product_name} 팀"
},
"email_change_revert": {
"subject": "{product_name} 이메일 변경 완료",
"body": "안녕하세요, {username}님.\n\n{product_name} 계정의 이메일 주소가 {newEmail}로 변경되었어요.\n\n직접 변경하셨다면 별도의 조치는 필요 없어요. 직접 변경하지 않으셨다면 다음 링크를 사용하여 변경 사항을 되돌리고 계정을 보호할 수 있어요:\n\n{revertUrl}\n\n이전 이메일이 복원되고, 모든 기기에서 로그아웃되며, 연결된 전화번호가 제거되고, MFA가 비활성화되며, 새 비밀번호를 설정해야 해요.\n\n– {product_name} 안전팀"
},
"email_verification": {
"subject": "{product_name} 이메일 주소 인증",
"body": "안녕하세요, {username}님.\n\n아래 링크를 클릭하여 {product_name} 계정의 이메일 주소를 인증해 주세요:\n\n{verifyUrl}\n\n{product_name} 계정을 생성하지 않으셨다면 이 이메일을 무시해도 괜찮아요.\n\n이 링크는 24시간 동안 유효해요.\n\n– {product_name} 팀"
},
"gift_chargeback_notification": {
"subject": "사용하신 선물 혜택이 제거되었어요",
"body": "안녕하세요, {username}님.\n\n사용하신 선물 코드는 다른 사용자가 결제한 것이었어요. 해당 결제가 취소(차지백)되었어요.\n\n이로 인해 선물을 사용했을 때 계정에 추가되었던 혜택이 제거되었어요.\n\n실수라고 생각되면 고객지원팀에 문의하여 선물 코드 및 사용 시기에 대한 자세한 정보를 알려 주세요.\n\n– {product_name} 팀"
},
"harvest_completed": {
"subject": "{product_name} 데이터 내보내기 다운로드가 준비되었어요",
"body": "안녕하세요, {username}님.\n\n데이터 내보내기가 준비되었어요.\n\n다운로드 링크:\n{downloadUrl}\n\n포함된 메시지: {totalMessages, number}개\n파일 크기: {fileSizeMB, number} MB\n\n이 링크는 {expiresAt, date, full} {expiresAt, time, short}에 만료돼요.\n\n이 내보내기를 요청하지 않으셨다면 즉시 비밀번호를 변경하고 고객지원팀에 문의하세요.\n\n– {product_name} 팀"
},
"inactivity_warning": {
"subject": "활동 부족으로 {product_name} 계정이 삭제될 예정이에요",
"body": "안녕하세요, {username}님.\n\n{lastActiveDate, date, full} 이후로 {product_name} 계정에서 활동이 없었어요.\n\n{deletionDate, date, full} {deletionDate, time, short}까지 로그인하지 않으면 계정이 활동 부족으로 영구적으로 삭제될 예정이에요.\n\n여기에서 로그인해 주세요:\n{loginUrl}\n\n최근에 {product_name}를 사용했다면 즉시 고객지원팀에 문의하세요.\n\n– {product_name} 팀"
},
"ip_authorization": {
"subject": "새 IP 주소에서 로그인을 승인해 주세요",
"body": "안녕하세요, {username}님.\n\n새로운 IP 주소에서 {product_name} 계정으로 로그인 시도가 감지되었어요:\n\nIP 주소: {ipAddress}\n위치: {location}\n\n본인이 시도한 경우, 아래 링크를 클릭하여 이 IP 주소를 승인해 주세요:\n\n{authUrl}\n\n로그인을 시도하지 않으셨다면 즉시 비밀번호를 변경하세요.\n\n이 링크는 30분 동안 유효해요.\n\n– {product_name} 팀"
},
"password_change_verification": {
"subject": "{product_name} 비밀번호 변경을 확인해 주세요",
"body": "안녕하세요, {username}님.\n\n{product_name} 계정의 비밀번호 변경 요청이 접수되었어요.\n\n이 변경을 확인하려면 앱에 이 코드를 입력해 주세요:\n\n{code}\n\n이 코드는 {expiresAt}에 만료돼요.\n\n요청하지 않으셨다면 누군가 계정에 액세스했을 수 있어요. 즉시 비밀번호를 변경하고 2단계 인증을 활성화하세요.\n\n– {product_name} 팀"
},
"password_reset": {
"subject": "{product_name} 비밀번호를 재설정해 주세요",
"body": "안녕하세요, {username}님.\n\n{product_name} 비밀번호 재설정을 요청하셨어요. 아래 링크를 사용하여 새 비밀번호를 설정해 주세요:\n\n{resetUrl}\n\n요청하지 않으셨다면 이 이메일을 무시해도 괜찮아요.\n\n이 링크는 1시간 동안 유효해요.\n\n– {product_name} 팀"
},
"registration_approved": {
"subject": "{product_name} 가입이 승인되었어요",
"body": "안녕하세요, {username}님.\n\n좋은 소식이에요: {product_name} 가입이 승인되었어요.\n\n이제 여기에서 {product_name} 앱에 로그인할 수 있어요:\n{channelsUrl}\n\n{product_name} 커뮤니티에 오신 것을 환영해요.\n\n– {product_name} 팀"
},
"report_resolved": {
"subject": "{product_name} 신고 검토가 완료되었어요",
"body": "안녕하세요, {username}님.\n\n회원님의 신고(ID: {reportId})를 안전팀에서 검토했어요.{hasComment, select, yes {\n\n안전팀의 답변:\n{publicComment}} other {}}\n\n모두를 위해 {product_name}를 안전하게 유지하는 데 도움을 주셔서 감사해요. 모든 신고를 진지하게 검토하고 있으며, 커뮤니티에 기여해 주셔서 감사해요.\n\n이 결과에 대해 궁금한 점이나 우려 사항이 있다면 {safety_email}으로 문의해 주세요.\n\n– {product_name} 안전팀"
},
"scheduled_deletion_notification": {
"subject": "{product_name} 계정이 영구적으로 삭제될 예정이에요",
"body": "안녕하세요, {username}님.\n\n{product_name} 계정이 영구적으로 삭제될 예정이에요.\n\n삭제 예정일: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {사유: {reason}}\n}\n\n이는 중대한 조치이며, 계정 데이터는 예정된 날짜에 영구적으로 삭제될 예정이에요.\n\n이 조치가 잘못되었다고 생각되면 이의를 제기할 수 있어요. 이 이메일 주소에서 {appeals_email}로 이메일을 보내 이의를 제기해 주세요.\n\n– {product_name} 안전팀"
},
"self_deletion_scheduled": {
"subject": "{product_name} 계정 삭제가 예정되었어요",
"body": "안녕하세요, {username}님.\n\n{product_name} 계정 삭제를 요청하셨어요. 계정은 다음 날짜에 영구적으로 삭제될 예정이에요:\n\n{deletionDate, date, full} {deletionDate, time, short}\n\n요청하지 않으셨다면 계정에 로그인하여 삭제를 취소해 주세요. 계정을 보호하기 위해 비밀번호를 변경하는 것을 권장해요.\n\n– {product_name} 팀"
},
"unban_notification": {
"subject": "{product_name} 계정 정지가 해제되었어요",
"body": "안녕하세요, {username}님.\n\n좋은 소식이에요: {product_name} 계정 정지가 해제되었어요.\n\n{reason, select,\n null {}\n other {사유: {reason}}\n}\n\n이제 다시 로그인하여 평소처럼 {product_name}를 계속 사용할 수 있어요.\n\n– {product_name} 안전팀"
}
"account_disabled_suspicious": {
"subject": "{product_name} 계정이 일시적으로 비활성화되었어요",
"body": "안녕하세요, {username}님.\n\n의심스러운 활동이 감지되어 {product_name} 계정을 일시적으로 비활성화했어요.\n\n{reason, select,\n null {}\n other {사유: {reason}}\n}\n\n계정에 다시 액세스하려면 비밀번호를 재설정해야 해요:\n\n{forgotUrl}\n\n비밀번호를 재설정한 후 다시 로그인할 수 있어요.\n\n실수로 비활성화되었다고 생각되면 고객지원팀에 문의해 주세요.\n\n– {product_name} 안전팀"
},
"account_scheduled_deletion": {
"subject": "{product_name} 계정이 영구적으로 삭제될 예정이에요",
"body": "안녕하세요, {username}님.\n\n서비스 약관 또는 커뮤니티 가이드라인 위반으로 인해 {product_name} 계정이 영구적으로 삭제될 예정이에요.\n\n삭제 예정일: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {사유: {reason}}\n}\n\n이는 중대한 조치이며, 계정 데이터는 예정된 날짜에 영구적으로 삭제될 예정이에요.\n\n다음 내용을 확인해 주세요:\n- 서비스 약관: {termsUrl}\n- 커뮤니티 가이드라인: {guidelinesUrl}\n\n이의 제기 절차:\n이 조치가 잘못되었거나 부당하다고 생각되면 60일 이내에 이의를 제기할 수 있어요. 이 이메일 주소에서 {appeals_email}로 이메일을 보내 이의를 제기해 주세요.\n\n이의 제기 시에는:\n- 조치가 잘못되었거나 부당하다고 생각하는 이유를 명확하게 설명해 주세요.\n- 관련 증거 또는 맥락을 제공해 주세요.\n\n{product_name} 안전팀 멤버가 이의 제기를 검토하고 최종 결정이 내려질 때까지 삭제를 일시적으로 보류할 수 있어요.\n\n– {product_name} 안전팀"
},
"account_temp_banned": {
"subject": "{product_name} 계정이 일시적으로 정지되었어요",
"body": "안녕하세요, {username}님.\n\n서비스 약관 또는 커뮤니티 가이드라인 위반으로 인해 {product_name} 계정이 일시적으로 정지되었어요.\n\n기간: {durationHours, plural,\n =1 {1시간}\n other {#시간}\n}\n정지 해제일: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {사유: {reason}}\n}\n\n이 기간 동안에는 계정에 액세스할 수 없어요.\n\n다음 내용을 확인해 주세요:\n- 서비스 약관: {termsUrl}\n- 커뮤니티 가이드라인: {guidelinesUrl}\n\n이 조치가 잘못되었거나 부당하다고 생각되면 이의를 제기할 수 있어요. 이 이메일 주소에서 {appeals_email}로 이메일을 보내 결정이 잘못되었다고 생각하는 이유를 명확하게 설명해 주세요. 이의 제기를 검토한 후 결과를 알려 드릴 예정이에요.\n\n– {product_name} 안전팀"
},
"donation_confirmation": {
"subject": "{product_name} 후원에 감사드립니다",
"body": "안녕하세요,\n\n{product_name}에 후원해 주셔서 감사해요! 회원님의 {interval, select,\n month {정기 후원}\n year {정기 후원}\n other {일회성 후원}\n}이 성공적으로 {interval, select,\n month {설정되었어요}\n year {설정되었어요}\n other {처리되었어요}\n}.\n\n후원 상세 정보:\n금액: {amount} {currency} {interval, select,\n month {매월}\n year {매년}\n other {}\n}\n\nStripe에서 곧 인보이스 PDF가 포함된 별도의 영수증을 이메일로 보내드릴 예정이에요. 이 영수증에는 모든 결제 세부 정보가 포함되어 있으며, 세금 목적으로 활용할 수 있어요.\n\n다음 링크를 통해 언제든지 후원 내역을 확인하고, 인보이스를 다운로드하고, {interval, select,\n month {구독을 관리하거나 취소할 수 있어요}\n year {구독을 관리하거나 취소할 수 있어요}\n other {향후 후원을 관리할 수 있어요}\n}:\n\n{manageUrl}\n\n회원님의 후원은 {product_name}를 계속 운영하는 데 큰 도움이 돼요. 진심으로 감사해요!\n\n– {product_name} 팀"
},
"donation_magic_link": {
"subject": "{product_name} 후원 내역 관리",
"body": "안녕하세요,\n\n아래 링크를 클릭하여 후원자 포털에 접속해 주세요:\n\n{manageUrl}\n\n포털에서 구독을 관리하고, 인보이스를 다운로드하고, 후원 내역을 확인할 수 있어요.\n\n이 링크는 {expiresAt, date, full} {expiresAt, time, short}에 만료돼요.\n\n이 링크를 요청하지 않았다면 이 이메일을 무시해도 괜찮아요.\n\n– {product_name} 팀"
},
"dsa_report_verification": {
"subject": "DSA 보고서 제출 이메일 인증",
"body": "안녕하세요,\n\n아래 인증 코드를 사용하여 {product_name}에 대한 디지털 서비스법 보고서를 제출해 주세요:\n\n{code}\n\n이 코드는 {expiresAt, date, full} {expiresAt, time, short}에 만료돼요.\n\n요청하지 않으셨다면 이 이메일을 무시해도 괜찮아요.\n\n– {product_name} 안전팀"
},
"email_change_new": {
"subject": "새 {product_name} 이메일 인증",
"body": "안녕하세요, {username}님.\n\n새 {product_name} 이메일을 인증하려면 앱에 이 코드를 입력해 주세요:\n\n{code}\n\n이 코드는 {expiresAt, date, full} {expiresAt, time, short}에 만료돼요.\n\n요청하지 않으셨다면 이 이메일을 무시해도 괜찮아요.\n\n– {product_name} 팀"
},
"email_change_original": {
"subject": "{product_name} 이메일 변경 확인",
"body": "안녕하세요, {username}님.\n\n{product_name} 계정의 이메일 주소 변경 요청이 접수되었어요.\n\n이 변경을 확인하려면 앱에 이 코드를 입력해 주세요:\n\n{code}\n\n이 코드는 {expiresAt, date, full} {expiresAt, time, short}에 만료돼요.\n\n요청하지 않으셨다면 즉시 계정을 보호하세요.\n\n– {product_name} 팀"
},
"email_change_revert": {
"subject": "{product_name} 이메일 변경 완료",
"body": "안녕하세요, {username}님.\n\n{product_name} 계정의 이메일 주소가 {newEmail}로 변경되었어요.\n\n직접 변경하셨다면 별도의 조치는 필요 없어요. 직접 변경하지 않으셨다면 다음 링크를 사용하여 변경 사항을 되돌리고 계정을 보호할 수 있어요:\n\n{revertUrl}\n\n이전 이메일이 복원되고, 모든 기기에서 로그아웃되며, 연결된 전화번호가 제거되고, MFA가 비활성화되며, 새 비밀번호를 설정해야 해요.\n\n– {product_name} 안전팀"
},
"email_verification": {
"subject": "{product_name} 이메일 주소 인증",
"body": "안녕하세요, {username}님.\n\n아래 링크를 클릭하여 {product_name} 계정의 이메일 주소를 인증해 주세요:\n\n{verifyUrl}\n\n{product_name} 계정을 생성하지 않으셨다면 이 이메일을 무시해도 괜찮아요.\n\n이 링크는 24시간 동안 유효해요.\n\n– {product_name} 팀"
},
"gift_chargeback_notification": {
"subject": "사용하신 선물 혜택이 제거되었어요",
"body": "안녕하세요, {username}님.\n\n사용하신 선물 코드는 다른 사용자가 결제한 것이었어요. 해당 결제가 취소(차지백)되었어요.\n\n이로 인해 선물을 사용했을 때 계정에 추가되었던 혜택이 제거되었어요.\n\n실수라고 생각되면 고객지원팀에 문의하여 선물 코드 및 사용 시기에 대한 자세한 정보를 알려 주세요.\n\n– {product_name} 팀"
},
"harvest_completed": {
"subject": "{product_name} 데이터 내보내기 다운로드가 준비되었어요",
"body": "안녕하세요, {username}님.\n\n데이터 내보내기가 준비되었어요.\n\n다운로드 링크:\n{downloadUrl}\n\n포함된 메시지: {totalMessages, number}개\n파일 크기: {fileSizeMB, number} MB\n\n이 링크는 {expiresAt, date, full} {expiresAt, time, short}에 만료돼요.\n\n이 내보내기를 요청하지 않으셨다면 즉시 비밀번호를 변경하고 고객지원팀에 문의하세요.\n\n– {product_name} 팀"
},
"inactivity_warning": {
"subject": "활동 부족으로 {product_name} 계정이 삭제될 예정이에요",
"body": "안녕하세요, {username}님.\n\n{lastActiveDate, date, full} 이후로 {product_name} 계정에서 활동이 없었어요.\n\n{deletionDate, date, full} {deletionDate, time, short}까지 로그인하지 않으면 계정이 활동 부족으로 영구적으로 삭제될 예정이에요.\n\n여기에서 로그인해 주세요:\n{loginUrl}\n\n최근에 {product_name}를 사용했다면 즉시 고객지원팀에 문의하세요.\n\n– {product_name} 팀"
},
"ip_authorization": {
"subject": "새 IP 주소에서 로그인을 승인해 주세요",
"body": "안녕하세요, {username}님.\n\n새로운 IP 주소에서 {product_name} 계정으로 로그인 시도가 감지되었어요:\n\nIP 주소: {ipAddress}\n위치: {location}\n\n본인이 시도한 경우, 아래 링크를 클릭하여 이 IP 주소를 승인해 주세요:\n\n{authUrl}\n\n로그인을 시도하지 않으셨다면 즉시 비밀번호를 변경하세요.\n\n이 링크는 30분 동안 유효해요.\n\n– {product_name} 팀"
},
"password_change_verification": {
"subject": "{product_name} 비밀번호 변경을 확인해 주세요",
"body": "안녕하세요, {username}님.\n\n{product_name} 계정의 비밀번호 변경 요청이 접수되었어요.\n\n이 변경을 확인하려면 앱에 이 코드를 입력해 주세요:\n\n{code}\n\n이 코드는 {expiresAt}에 만료돼요.\n\n요청하지 않으셨다면 누군가 계정에 액세스했을 수 있어요. 즉시 비밀번호를 변경하고 2단계 인증을 활성화하세요.\n\n– {product_name} 팀"
},
"password_reset": {
"subject": "{product_name} 비밀번호를 재설정해 주세요",
"body": "안녕하세요, {username}님.\n\n{product_name} 비밀번호 재설정을 요청하셨어요. 아래 링크를 사용하여 새 비밀번호를 설정해 주세요:\n\n{resetUrl}\n\n요청하지 않으셨다면 이 이메일을 무시해도 괜찮아요.\n\n이 링크는 1시간 동안 유효해요.\n\n– {product_name} 팀"
},
"registration_approved": {
"subject": "{product_name} 가입이 승인되었어요",
"body": "안녕하세요, {username}님.\n\n좋은 소식이에요: {product_name} 가입이 승인되었어요.\n\n이제 여기에서 {product_name} 앱에 로그인할 수 있어요:\n{channelsUrl}\n\n{product_name} 커뮤니티에 오신 것을 환영해요.\n\n– {product_name} 팀"
},
"report_resolved": {
"subject": "{product_name} 신고 검토가 완료되었어요",
"body": "안녕하세요, {username}님.\n\n회원님의 신고(ID: {reportId})를 안전팀에서 검토했어요.{hasComment, select, yes {\n\n안전팀의 답변:\n{publicComment}} other {}}\n\n모두를 위해 {product_name}를 안전하게 유지하는 데 도움을 주셔서 감사해요. 모든 신고를 진지하게 검토하고 있으며, 커뮤니티에 기여해 주셔서 감사해요.\n\n이 결과에 대해 궁금한 점이나 우려 사항이 있다면 {safety_email}으로 문의해 주세요.\n\n– {product_name} 안전팀"
},
"scheduled_deletion_notification": {
"subject": "{product_name} 계정이 영구적으로 삭제될 예정이에요",
"body": "안녕하세요, {username}님.\n\n{product_name} 계정이 영구적으로 삭제될 예정이에요.\n\n삭제 예정일: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {사유: {reason}}\n}\n\n이는 중대한 조치이며, 계정 데이터는 예정된 날짜에 영구적으로 삭제될 예정이에요.\n\n이 조치가 잘못되었다고 생각되면 이의를 제기할 수 있어요. 이 이메일 주소에서 {appeals_email}로 이메일을 보내 이의를 제기해 주세요.\n\n– {product_name} 안전팀"
},
"self_deletion_scheduled": {
"subject": "{product_name} 계정 삭제가 예정되었어요",
"body": "안녕하세요, {username}님.\n\n{product_name} 계정 삭제를 요청하셨어요. 계정은 다음 날짜에 영구적으로 삭제될 예정이에요:\n\n{deletionDate, date, full} {deletionDate, time, short}\n\n요청하지 않으셨다면 계정에 로그인하여 삭제를 취소해 주세요. 계정을 보호하기 위해 비밀번호를 변경하는 것을 권장해요.\n\n– {product_name} 팀"
},
"unban_notification": {
"subject": "{product_name} 계정 정지가 해제되었어요",
"body": "안녕하세요, {username}님.\n\n좋은 소식이에요: {product_name} 계정 정지가 해제되었어요.\n\n{reason, select,\n null {}\n other {사유: {reason}}\n}\n\n이제 다시 로그인하여 평소처럼 {product_name}를 계속 사용할 수 있어요.\n\n– {product_name} 안전팀"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "Tavo {product_name} paskyra laikinai išjungta",
"body": "Sveikas, {username},\n\nLaikinai išjungėme tavo {product_name} paskyrą, nes aptikome įtartiną veiklą.\n\n{reason, select,\n null {}\n other {Priežastis: {reason}}\n}\n\nNorėdamas atgauti prieigą prie paskyros, turėsi iš naujo nustatyti slaptažodį:\n\n{forgotUrl}\n\nNustatęs slaptažodį iš naujo, galėsi vėl prisijungti.\n\nJei manai, kad tai įvyko per klaidą, susisiek su mūsų palaikymo komanda.\n\n– {product_name} saugos komanda"
},
"account_scheduled_deletion": {
"subject": "Tavo {product_name} paskyra bus visam laikui ištrinta",
"body": "Sveikas, {username},\n\nTavo {product_name} paskyra numatyta visam laikui ištrinti dėl mūsų paslaugų teikimo sąlygų arba bendruomenės gairių pažeidimų.\n\nNumatytas ištrynimas: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Priežastis: {reason}}\n}\n\nTai yra rimtas vykdymo veiksmas. Tavo paskyros duomenys bus visam laikui ištrinti numatytą dieną.\n\nPeržiūrėk:\n- Paslaugų teikimo sąlygos: {termsUrl}\n- Bendruomenės gairės: {guidelinesUrl}\n\nApeliacijos procesas:\nJei manai, kad šis vykdymo sprendimas buvo neteisingas arba nepagrįstas, turi 60 dienų pateikti apeliaciją. Iš šio el. pašto adreso siųsk el. laišką adresu {appeals_email}.\n\nSavo apeliacijoje:\n- Aiškiai paaiškink, kodėl manai, kad vykdymo sprendimas buvo neteisingas arba nepagrįstas\n- Pateik visus susijusius įrodymus ar kontekstą\n\n{product_name} saugos komandos narys peržiūrės tavo apeliaciją ir gali sustabdyti laukiantį ištrynimą, kol bus priimtas galutinis sprendimas.\n\n– {product_name} saugos komanda"
},
"account_temp_banned": {
"subject": "Tavo {product_name} paskyra laikinai sustabdyta",
"body": "Sveikas, {username},\n\nTavo {product_name} paskyra laikinai sustabdyta dėl mūsų paslaugų teikimo sąlygų arba bendruomenės gairių pažeidimo.\n\nTrukmė: {durationHours, plural,\n one {valandÄ} few {valandas}\n many {valandas} other {# valandų}\n}\nSustabdyta iki: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Priežastis: {reason}}\n}\n\nŠiuo laikotarpiu negalėsi prisijungti prie savo paskyros.\n\nPeržiūrėk:\n- Paslaugų teikimo sąlygos: {termsUrl}\n- Bendruomenės gairės: {guidelinesUrl}\n\nJei manai, kad šis vykdymo sprendimas buvo neteisingas arba nepagrįstas, gali pateikti apeliaciją. Iš šio el. pašto adreso siųsk el. laišką adresu {appeals_email} ir aiškiai paaiškink, kodėl manai, kad sprendimas buvo neteisingas. Peržiūrėsime tavo apeliaciją ir atsakysime su savo sprendimu.\n\n– {product_name} saugos komanda saugos komanda"
},
"donation_confirmation": {
"subject": "Dėkojame už tavo {product_name} paramą",
"body": "Sveikas,\n\nDėkojame už tavo paramą {product_name}! Tavo {interval, select,\n month {pasikartojanti parama}\n year {pasikartojanti parama}\n other {vienkartinė parama}\n} buvo {interval, select,\n month {nustatyta}\n year {nustatyta}\n other {apdorota}\n} sėkmingai.\n\nParamos detalės:\nSuma: {amount} {currency} {interval, select,\n month {per mėnesį}\n year {per metus}\n other {}\n}\n\nStripe netrukus atsiųs tau atskirą kvitą su sąskaitos faktūros PDF. Tai apima visą mokėjimo informaciją ir gali būti naudojama mokesčių tikslais.\n\nGali peržiūrėti savo paramos istoriją, atsisiųsti sąskaitas faktūras, {interval, select,\n month {ir valdyti arba atšaukti savo prenumeratą}\n year {ir valdyti arba atšaukti savo prenumeratą}\n other {ir valdyti būsimą paramą}\n} bet kuriuo metu naudodamasis šia nuoroda:\n\n{manageUrl}\n\nTavo parama padeda {product_name} veikti. Ačiū!\n\n– {product_name} komanda"
},
"donation_magic_link": {
"subject": "Tvarkyk savo {product_name} paramą",
"body": "Sveikas,\n\nSpustelėk žemiau esančią nuorodą, kad pasiektum savo paramos portalą:\n\n{manageUrl}\n\nPortale gali valdyti prenumeratas, atsisiųsti sąskaitas faktūras ir peržiūrėti savo paramos istoriją.\n\nŠi nuoroda galioja iki {expiresAt, date, full} {expiresAt, time, short}.\n\nJei neprašei šios nuorodos, gali saugiai ignoruoti šį el. laišką.\n\n– {product_name} komanda"
},
"dsa_report_verification": {
"subject": "Patvirtink savo el. paštą dėl DSA ataskaitos",
"body": "Sveikas,\n\nNaudok žemiau esantį patvirtinimo kodą, kad pateiktum savo Skaitmeninių paslaugų akto ataskaitą {product_name} platformoje:\n\n{code}\n\nŠis kodas galioja iki {expiresAt, date, full} {expiresAt, time, short}.\n\nJei to neprašei, gali ignoruoti šį el. laišką.\n\n– {product_name} saugos komanda"
},
"email_change_new": {
"subject": "Patvirtink savo naują {product_name} el. paštą",
"body": "Sveikas, {username},\n\nĮvesk šį kodą programėlėje, kad patvirtintum savo naują {product_name} el. paštą:\n\n{code}\n\nŠis kodas galioja iki {expiresAt, date, full} {expiresAt, time, short}.\n\nJei to neprašei, gali ignoruoti šį el. laišką.\n\n– {product_name} komanda"
},
"email_change_original": {
"subject": "Patvirtink savo {product_name} el. pašto keitimą",
"body": "Sveikas, {username},\n\nGavome prašymą pakeisti tavo {product_name} paskyros el. pašto adresą.\n\nNorėdamas patvirtinti šį pakeitimą, įvesk šį kodą programėlėje:\n\n{code}\n\nŠis kodas galioja iki {expiresAt, date, full} {expiresAt, time, short}.\n\nJei to neprašei, nedelsdamas apsaugok savo paskyrą.\n\n– {product_name} komanda"
},
"email_change_revert": {
"subject": "Tavo {product_name} el. paštas buvo pakeistas",
"body": "Sveikas, {username},\n\nTavo {product_name} paskyros el. pašto adresas buvo pakeistas į {newEmail}.\n\nJei atlikai šį pakeitimą, jokių veiksmų nereikia. Jei ne, gali atšaukti pakeitimą ir apsaugoti savo paskyrą naudodamasis šia nuoroda:\n\n{revertUrl}\n\nTai atkurs tavo ankstesnį el. paštą, atsijungsi visur, pašalinsi susietus telefono numerius, išjungsi MFA ir reikalaus nustatyti naują slaptažodį.\n\n– {product_name} saugos komanda"
},
"email_verification": {
"subject": "Patvirtink savo {product_name} el. pašto adresą",
"body": "Sveikas, {username},\n\nPatvirtink savo {product_name} paskyros el. pašto adresą spustelėdamas žemiau esančią nuorodą:\n\n{verifyUrl}\n\nJei nesukūrei {product_name} paskyros, gali saugiai ignoruoti šį el. laišką.\n\nŠi nuoroda galioja 24 valandas.\n\n– {product_name} komanda"
},
"gift_chargeback_notification": {
"subject": "Privalumai iš tavo išpirktos dovanos buvo pašalinti",
"body": "Sveikas, {username},\n\nDovanos kodas, kurį išpirkai, iš pradžių buvo apmokėtas kito asmens. Tas mokėjimas vėliau buvo atšauktas (grąžinimas).\n\nDėl to pašalinome privalumus, kurie buvo pridėti prie tavo paskyros, kai išpirkai dovaną.\n\nJei manai, kad tai klaida, susisiek su mūsų palaikymo komanda ir pateik visą turimą informaciją apie dovanos kodą ir kada jį išpirkai.\n\n– {product_name} komanda"
},
"harvest_completed": {
"subject": "Tavo {product_name} duomenų eksportas paruoštas atsisiųsti",
"body": "Sveikas, {username},\n\nTavo duomenų eksportas paruoštas.\n\nAtsisiuntimo nuoroda:\n{downloadUrl}\n\nŽinutės: {totalMessages, number}\nFailo dydis: {fileSizeMB, number} MB\n\nŠi nuoroda galioja iki {expiresAt, date, full} {expiresAt, time, short}.\n\nJei neprašei šio eksporto, nedelsdamas pakeisk slaptažodį ir susisiek su mūsų palaikymo komanda.\n\n– {product_name} komanda"
},
"inactivity_warning": {
"subject": "Tavo {product_name} paskyra bus ištrinta dėl neveiklumo",
"body": "Sveikas, {username},\n\nNematėme jokios veiklos tavo {product_name} paskyroje nuo {lastActiveDate, date, full}.\n\nJei neprisijungsi iki {deletionDate, date, full} {deletionDate, time, short}, tavo paskyra bus visam laikui ištrinta dėl neveiklumo.\n\nPrisijunk čia:\n{loginUrl}\n\nJei neseniai naudojai {product_name}, nedelsdamas susisiek su mūsų palaikymo komanda.\n\n– {product_name} komanda"
},
"ip_authorization": {
"subject": "Leisti prisijungimą iš naujo IP adreso",
"body": "Sveikas, {username},\n\nAptikome bandymą prisijungti prie tavo {product_name} paskyros iš naujo IP adreso:\n\nIP adresas: {ipAddress}\nVieta: {location}\n\nJei tai buvai tu, patvirtink šį IP adresą spustelėdamas žemiau esančią nuorodą:\n\n{authUrl}\n\nJei nebandei prisijungti, nedelsdamas pakeisk slaptažodį.\n\nŠi nuoroda galioja 30 minučių.\n\n– {product_name} komanda"
},
"password_change_verification": {
"subject": "Patvirtink savo {product_name} slaptažodžio keitimą",
"body": "Sveikas, {username},\n\nGavome prašymą pakeisti tavo {product_name} paskyros slaptažodį.\n\nNorėdamas patvirtinti šį pakeitimą, įvesk šį kodą programėlėje:\n\n{code}\n\nŠis kodas galioja iki {expiresAt}.\n\nJei to neprašei, kažkas gali turėti prieigą prie tavo paskyros. Nedelsdamas pakeisk slaptažodį ir įjunk dviejų veiksnių autentifikavimą.\n\n– {product_name} komanda"
},
"password_reset": {
"subject": "Nustatyk iš naujo savo {product_name} slaptažodį",
"body": "Sveikas, {username},\n\nTu paprašei iš naujo nustatyti {product_name} slaptažodį. Naudok žemiau esančią nuorodą, kad nustatytum naują slaptažodį:\n\n{resetUrl}\n\nJei to neprašei, gali saugiai ignoruoti šį el. laišką.\n\nŠi nuoroda galioja 1 valandą.\n\n– {product_name} komanda"
},
"registration_approved": {
"subject": "Tavo {product_name} registracija patvirtinta",
"body": "Sveikas, {username},\n\nGeros naujienos: tavo {product_name} registracija patvirtinta.\n\nDabar gali prisijungti prie {product_name} programėlės čia:\n{channelsUrl}\n\nSveikas atvykęs į {product_name} bendruomenę.\n\n– {product_name} komanda"
},
"report_resolved": {
"subject": "Tavo {product_name} ataskaita buvo peržiūrėta",
"body": "Sveikas, {username},\n\nTavo ataskaitą (ID: {reportId}) peržiūrėjo mūsų saugos komanda.{hasComment, select, yes {\n\nSaugos komandos atsakymas:\n{publicComment}} other {}}\n\nDėkojame, kad padedi užtikrinti {product_name} saugumą visiems. Visas ataskaitas vertiname rimtai ir vertiname tavo indėlį į bendruomenę.\n\nJei turi klausimų ar abejonių dėl šio rezultato, susisiek su {safety_email}.\n\n– {product_name} saugos komanda"
},
"scheduled_deletion_notification": {
"subject": "Tavo {product_name} paskyra bus visam laikui ištrinta",
"body": "Sveikas, {username},\n\nTavo {product_name} paskyra numatyta visam laikui ištrinti.\n\nNumatytas ištrynimas: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Priežastis: {reason}}\n}\n\nTai yra rimtas vykdymo veiksmas. Tavo paskyros duomenys bus visam laikui ištrinti numatytą dieną.\n\nJei manai, kad šis vykdymo sprendimas buvo neteisingas, gali pateikti apeliaciją. Iš šio el. pašto adreso siųsk el. laišką adresu {appeals_email}.\n\n– {product_name} saugos komanda"
},
"self_deletion_scheduled": {
"subject": "Tavo {product_name} paskyros ištrynimas suplanuotas",
"body": "Sveikas, {username},\n\nTu paprašei ištrinti savo {product_name} paskyrą. Tavo paskyra numatyta visam laikui ištrinti:\n\n{deletionDate, date, full} {deletionDate, time, short}\n\nJei to neprašei, prisijunk prie savo paskyros, kad atšauktum ištrynimą. Taip pat rekomenduojame pakeisti slaptažodį, kad apsaugotum savo paskyrą.\n\n– {product_name} komanda"
},
"unban_notification": {
"subject": "Tavo {product_name} paskyros sustabdymas panaikintas",
"body": "Sveikas, {username},\n\nGeros naujienos: tavo {product_name} paskyros sustabdymas panaikintas.\n\n{reason, select,\n null {}\n other {Priežastis: {reason}}\n}\n\nDabar gali vėl prisijungti ir toliau naudotis {product_name} kaip įprasta.\n\n– {product_name} saugos komanda"
}
"account_disabled_suspicious": {
"subject": "Tavo {product_name} paskyra laikinai išjungta",
"body": "Sveikas, {username},\n\nLaikinai išjungėme tavo {product_name} paskyrą, nes aptikome įtartiną veiklą.\n\n{reason, select,\n null {}\n other {Priežastis: {reason}}\n}\n\nNorėdamas atgauti prieigą prie paskyros, turėsi iš naujo nustatyti slaptažodį:\n\n{forgotUrl}\n\nNustatęs slaptažodį iš naujo, galėsi vėl prisijungti.\n\nJei manai, kad tai įvyko per klaidą, susisiek su mūsų palaikymo komanda.\n\n– {product_name} saugos komanda"
},
"account_scheduled_deletion": {
"subject": "Tavo {product_name} paskyra bus visam laikui ištrinta",
"body": "Sveikas, {username},\n\nTavo {product_name} paskyra numatyta visam laikui ištrinti dėl mūsų paslaugų teikimo sąlygų arba bendruomenės gairių pažeidimų.\n\nNumatytas ištrynimas: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Priežastis: {reason}}\n}\n\nTai yra rimtas vykdymo veiksmas. Tavo paskyros duomenys bus visam laikui ištrinti numatytą dieną.\n\nPeržiūrėk:\n- Paslaugų teikimo sąlygos: {termsUrl}\n- Bendruomenės gairės: {guidelinesUrl}\n\nApeliacijos procesas:\nJei manai, kad šis vykdymo sprendimas buvo neteisingas arba nepagrįstas, turi 60 dienų pateikti apeliaciją. Iš šio el. pašto adreso siųsk el. laišką adresu {appeals_email}.\n\nSavo apeliacijoje:\n- Aiškiai paaiškink, kodėl manai, kad vykdymo sprendimas buvo neteisingas arba nepagrįstas\n- Pateik visus susijusius įrodymus ar kontekstą\n\n{product_name} saugos komandos narys peržiūrės tavo apeliaciją ir gali sustabdyti laukiantį ištrynimą, kol bus priimtas galutinis sprendimas.\n\n– {product_name} saugos komanda"
},
"account_temp_banned": {
"subject": "Tavo {product_name} paskyra laikinai sustabdyta",
"body": "Sveikas, {username},\n\nTavo {product_name} paskyra laikinai sustabdyta dėl mūsų paslaugų teikimo sąlygų arba bendruomenės gairių pažeidimo.\n\nTrukmė: {durationHours, plural,\n one {valandÄ} few {valandas}\n many {valandas} other {# valandų}\n}\nSustabdyta iki: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Priežastis: {reason}}\n}\n\nŠiuo laikotarpiu negalėsi prisijungti prie savo paskyros.\n\nPeržiūrėk:\n- Paslaugų teikimo sąlygos: {termsUrl}\n- Bendruomenės gairės: {guidelinesUrl}\n\nJei manai, kad šis vykdymo sprendimas buvo neteisingas arba nepagrįstas, gali pateikti apeliaciją. Iš šio el. pašto adreso siųsk el. laišką adresu {appeals_email} ir aiškiai paaiškink, kodėl manai, kad sprendimas buvo neteisingas. Peržiūrėsime tavo apeliaciją ir atsakysime su savo sprendimu.\n\n– {product_name} saugos komanda saugos komanda"
},
"donation_confirmation": {
"subject": "Dėkojame už tavo {product_name} paramą",
"body": "Sveikas,\n\nDėkojame už tavo paramą {product_name}! Tavo {interval, select,\n month {pasikartojanti parama}\n year {pasikartojanti parama}\n other {vienkartinė parama}\n} buvo {interval, select,\n month {nustatyta}\n year {nustatyta}\n other {apdorota}\n} sėkmingai.\n\nParamos detalės:\nSuma: {amount} {currency} {interval, select,\n month {per mėnesį}\n year {per metus}\n other {}\n}\n\nStripe netrukus atsiųs tau atskirą kvitą su sąskaitos faktūros PDF. Tai apima visą mokėjimo informaciją ir gali būti naudojama mokesčių tikslais.\n\nGali peržiūrėti savo paramos istoriją, atsisiųsti sąskaitas faktūras, {interval, select,\n month {ir valdyti arba atšaukti savo prenumeratą}\n year {ir valdyti arba atšaukti savo prenumeratą}\n other {ir valdyti būsimą paramą}\n} bet kuriuo metu naudodamasis šia nuoroda:\n\n{manageUrl}\n\nTavo parama padeda {product_name} veikti. Ačiū!\n\n– {product_name} komanda"
},
"donation_magic_link": {
"subject": "Tvarkyk savo {product_name} paramą",
"body": "Sveikas,\n\nSpustelėk žemiau esančią nuorodą, kad pasiektum savo paramos portalą:\n\n{manageUrl}\n\nPortale gali valdyti prenumeratas, atsisiųsti sąskaitas faktūras ir peržiūrėti savo paramos istoriją.\n\nŠi nuoroda galioja iki {expiresAt, date, full} {expiresAt, time, short}.\n\nJei neprašei šios nuorodos, gali saugiai ignoruoti šį el. laišką.\n\n– {product_name} komanda"
},
"dsa_report_verification": {
"subject": "Patvirtink savo el. paštą dėl DSA ataskaitos",
"body": "Sveikas,\n\nNaudok žemiau esantį patvirtinimo kodą, kad pateiktum savo Skaitmeninių paslaugų akto ataskaitą {product_name} platformoje:\n\n{code}\n\nŠis kodas galioja iki {expiresAt, date, full} {expiresAt, time, short}.\n\nJei to neprašei, gali ignoruoti šį el. laišką.\n\n– {product_name} saugos komanda"
},
"email_change_new": {
"subject": "Patvirtink savo naują {product_name} el. paštą",
"body": "Sveikas, {username},\n\nĮvesk šį kodą programėlėje, kad patvirtintum savo naują {product_name} el. paštą:\n\n{code}\n\nŠis kodas galioja iki {expiresAt, date, full} {expiresAt, time, short}.\n\nJei to neprašei, gali ignoruoti šį el. laišką.\n\n– {product_name} komanda"
},
"email_change_original": {
"subject": "Patvirtink savo {product_name} el. pašto keitimą",
"body": "Sveikas, {username},\n\nGavome prašymą pakeisti tavo {product_name} paskyros el. pašto adresą.\n\nNorėdamas patvirtinti šį pakeitimą, įvesk šį kodą programėlėje:\n\n{code}\n\nŠis kodas galioja iki {expiresAt, date, full} {expiresAt, time, short}.\n\nJei to neprašei, nedelsdamas apsaugok savo paskyrą.\n\n– {product_name} komanda"
},
"email_change_revert": {
"subject": "Tavo {product_name} el. paštas buvo pakeistas",
"body": "Sveikas, {username},\n\nTavo {product_name} paskyros el. pašto adresas buvo pakeistas į {newEmail}.\n\nJei atlikai šį pakeitimą, jokių veiksmų nereikia. Jei ne, gali atšaukti pakeitimą ir apsaugoti savo paskyrą naudodamasis šia nuoroda:\n\n{revertUrl}\n\nTai atkurs tavo ankstesnį el. paštą, atsijungsi visur, pašalinsi susietus telefono numerius, išjungsi MFA ir reikalaus nustatyti naują slaptažodį.\n\n– {product_name} saugos komanda"
},
"email_verification": {
"subject": "Patvirtink savo {product_name} el. pašto adresą",
"body": "Sveikas, {username},\n\nPatvirtink savo {product_name} paskyros el. pašto adresą spustelėdamas žemiau esančią nuorodą:\n\n{verifyUrl}\n\nJei nesukūrei {product_name} paskyros, gali saugiai ignoruoti šį el. laišką.\n\nŠi nuoroda galioja 24 valandas.\n\n– {product_name} komanda"
},
"gift_chargeback_notification": {
"subject": "Privalumai iš tavo išpirktos dovanos buvo pašalinti",
"body": "Sveikas, {username},\n\nDovanos kodas, kurį išpirkai, iš pradžių buvo apmokėtas kito asmens. Tas mokėjimas vėliau buvo atšauktas (grąžinimas).\n\nDėl to pašalinome privalumus, kurie buvo pridėti prie tavo paskyros, kai išpirkai dovaną.\n\nJei manai, kad tai klaida, susisiek su mūsų palaikymo komanda ir pateik visą turimą informaciją apie dovanos kodą ir kada jį išpirkai.\n\n– {product_name} komanda"
},
"harvest_completed": {
"subject": "Tavo {product_name} duomenų eksportas paruoštas atsisiųsti",
"body": "Sveikas, {username},\n\nTavo duomenų eksportas paruoštas.\n\nAtsisiuntimo nuoroda:\n{downloadUrl}\n\nŽinutės: {totalMessages, number}\nFailo dydis: {fileSizeMB, number} MB\n\nŠi nuoroda galioja iki {expiresAt, date, full} {expiresAt, time, short}.\n\nJei neprašei šio eksporto, nedelsdamas pakeisk slaptažodį ir susisiek su mūsų palaikymo komanda.\n\n– {product_name} komanda"
},
"inactivity_warning": {
"subject": "Tavo {product_name} paskyra bus ištrinta dėl neveiklumo",
"body": "Sveikas, {username},\n\nNematėme jokios veiklos tavo {product_name} paskyroje nuo {lastActiveDate, date, full}.\n\nJei neprisijungsi iki {deletionDate, date, full} {deletionDate, time, short}, tavo paskyra bus visam laikui ištrinta dėl neveiklumo.\n\nPrisijunk čia:\n{loginUrl}\n\nJei neseniai naudojai {product_name}, nedelsdamas susisiek su mūsų palaikymo komanda.\n\n– {product_name} komanda"
},
"ip_authorization": {
"subject": "Leisti prisijungimą iš naujo IP adreso",
"body": "Sveikas, {username},\n\nAptikome bandymą prisijungti prie tavo {product_name} paskyros iš naujo IP adreso:\n\nIP adresas: {ipAddress}\nVieta: {location}\n\nJei tai buvai tu, patvirtink šį IP adresą spustelėdamas žemiau esančią nuorodą:\n\n{authUrl}\n\nJei nebandei prisijungti, nedelsdamas pakeisk slaptažodį.\n\nŠi nuoroda galioja 30 minučių.\n\n– {product_name} komanda"
},
"password_change_verification": {
"subject": "Patvirtink savo {product_name} slaptažodžio keitimą",
"body": "Sveikas, {username},\n\nGavome prašymą pakeisti tavo {product_name} paskyros slaptažodį.\n\nNorėdamas patvirtinti šį pakeitimą, įvesk šį kodą programėlėje:\n\n{code}\n\nŠis kodas galioja iki {expiresAt}.\n\nJei to neprašei, kažkas gali turėti prieigą prie tavo paskyros. Nedelsdamas pakeisk slaptažodį ir įjunk dviejų veiksnių autentifikavimą.\n\n– {product_name} komanda"
},
"password_reset": {
"subject": "Nustatyk iš naujo savo {product_name} slaptažodį",
"body": "Sveikas, {username},\n\nTu paprašei iš naujo nustatyti {product_name} slaptažodį. Naudok žemiau esančią nuorodą, kad nustatytum naują slaptažodį:\n\n{resetUrl}\n\nJei to neprašei, gali saugiai ignoruoti šį el. laišką.\n\nŠi nuoroda galioja 1 valandą.\n\n– {product_name} komanda"
},
"registration_approved": {
"subject": "Tavo {product_name} registracija patvirtinta",
"body": "Sveikas, {username},\n\nGeros naujienos: tavo {product_name} registracija patvirtinta.\n\nDabar gali prisijungti prie {product_name} programėlės čia:\n{channelsUrl}\n\nSveikas atvykęs į {product_name} bendruomenę.\n\n– {product_name} komanda"
},
"report_resolved": {
"subject": "Tavo {product_name} ataskaita buvo peržiūrėta",
"body": "Sveikas, {username},\n\nTavo ataskaitą (ID: {reportId}) peržiūrėjo mūsų saugos komanda.{hasComment, select, yes {\n\nSaugos komandos atsakymas:\n{publicComment}} other {}}\n\nDėkojame, kad padedi užtikrinti {product_name} saugumą visiems. Visas ataskaitas vertiname rimtai ir vertiname tavo indėlį į bendruomenę.\n\nJei turi klausimų ar abejonių dėl šio rezultato, susisiek su {safety_email}.\n\n– {product_name} saugos komanda"
},
"scheduled_deletion_notification": {
"subject": "Tavo {product_name} paskyra bus visam laikui ištrinta",
"body": "Sveikas, {username},\n\nTavo {product_name} paskyra numatyta visam laikui ištrinti.\n\nNumatytas ištrynimas: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Priežastis: {reason}}\n}\n\nTai yra rimtas vykdymo veiksmas. Tavo paskyros duomenys bus visam laikui ištrinti numatytą dieną.\n\nJei manai, kad šis vykdymo sprendimas buvo neteisingas, gali pateikti apeliaciją. Iš šio el. pašto adreso siųsk el. laišką adresu {appeals_email}.\n\n– {product_name} saugos komanda"
},
"self_deletion_scheduled": {
"subject": "Tavo {product_name} paskyros ištrynimas suplanuotas",
"body": "Sveikas, {username},\n\nTu paprašei ištrinti savo {product_name} paskyrą. Tavo paskyra numatyta visam laikui ištrinti:\n\n{deletionDate, date, full} {deletionDate, time, short}\n\nJei to neprašei, prisijunk prie savo paskyros, kad atšauktum ištrynimą. Taip pat rekomenduojame pakeisti slaptažodį, kad apsaugotum savo paskyrą.\n\n– {product_name} komanda"
},
"unban_notification": {
"subject": "Tavo {product_name} paskyros sustabdymas panaikintas",
"body": "Sveikas, {username},\n\nGeros naujienos: tavo {product_name} paskyros sustabdymas panaikintas.\n\n{reason, select,\n null {}\n other {Priežastis: {reason}}\n}\n\nDabar gali vėl prisijungti ir toliau naudotis {product_name} kaip įprasta.\n\n– {product_name} saugos komanda"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "Je {product_name}-account is tijdelijk uitgeschakeld",
"body": "Hallo {username},\n\nWe hebben je {product_name}-account tijdelijk uitgeschakeld omdat we verdachte activiteit hebben gedetecteerd.\n\n{reason, select,\n null {}\n other {Reden: {reason}}\n}\n\nOm weer toegang te krijgen tot je account, moet je je wachtwoord opnieuw instellen:\n\n{forgotUrl}\n\nNadat je je wachtwoord opnieuw hebt ingesteld, kun je weer inloggen.\n\nAls je denkt dat dit een fout is, neem dan contact op met ons support-team.\n\n– {product_name} Safety Team"
},
"account_scheduled_deletion": {
"subject": "Je {product_name}-account wordt permanent verwijderd",
"body": "Hallo {username},\n\nJe {product_name}-account is gepland voor permanente verwijdering vanwege schendingen van onze Servicevoorwaarden of Communityrichtlijnen.\n\nGeplande verwijdering: {deletionDate, date, full} om {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Reden: {reason}}\n}\n\nDit is een serieuze handhavingsactie. Je accountgegevens worden permanent verwijderd op de geplande datum.\n\nBekijk ook:\n- Servicevoorwaarden: {termsUrl}\n- Communityrichtlijnen: {guidelinesUrl}\n\nBeroepsprocedure:\nAls je van mening bent dat deze handhavingsbeslissing onjuist of ongerechtvaardigd was, heb je 60 dagen de tijd om beroep aan te tekenen. Stuur een e-mail naar {appeals_email} vanaf dit e-mailadres.\n\nVermeld in je beroep:\n- Een duidelijke uitleg waarom je van mening bent dat de handhavingsbeslissing onjuist of ongerechtvaardigd was\n- Alle relevante bewijzen of context\n\nEen lid van het {product_name} Safety-Team zal je beroep beoordelen en kan de lopende verwijdering pauzeren totdat een definitieve beslissing is genomen.\n\n– {product_name} Safety Team"
},
"account_temp_banned": {
"subject": "Je {product_name}-account is tijdelijk opgeschort",
"body": "Hallo {username},\n\nJe {product_name}-account is tijdelijk opgeschort wegens schending van onze Servicevoorwaarden of Communityrichtlijnen.\n\nDuur: {durationHours, plural,\n =1 {1 uur}\n other {# uur}\n}\nOpgeschort tot: {bannedUntil, date, full} om {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Reden: {reason}}\n}\n\nGedurende deze periode heb je geen toegang tot je account.\n\nBekijk ook:\n- Servicevoorwaarden: {termsUrl}\n- Communityrichtlijnen: {guidelinesUrl}\n\nAls je van mening bent dat deze handhavingsbeslissing onjuist of ongerechtvaardigd was, kun je beroep aantekenen. Stuur een e-mail naar {appeals_email} vanaf dit e-mailadres en leg duidelijk uit waarom je van mening bent dat de beslissing onjuist was. We zullen je beroep beoordelen en reageren met onze beslissing.\n\n– {product_name} Safety Team"
},
"donation_confirmation": {
"subject": "Bedankt voor je {product_name}-donatie",
"body": "Hallo,\n\nBedankt voor je donatie aan {product_name}! Je {interval, select,\n month {terugkerende donatie}\n year {terugkerende donatie}\n other {eenmalige donatie}\n} is succesvol {interval, select,\n month {ingesteld}\n year {ingesteld}\n other {verwerkt}\n}.\n\nDonatiegegevens:\nBedrag: {amount} {currency} {interval, select,\n month {per maand}\n year {per jaar}\n other {}\n}\n\nStripe stuurt je binnenkort een aparte bon met je factuur-pdf. Deze bevat alle betalingsgegevens en kan worden gebruikt voor belastingdoeleinden.\n\nJe kunt je donatiegeschiedenis bekijken, facturen downloaden en {interval, select,\n month {je abonnement beheren of opzeggen}\n year {je abonnement beheren of opzeggen}\n other {toekomstige donaties beheren}\n} via deze link:\n\n{manageUrl}\n\nJe steun helpt {product_name} draaiende te houden. Bedankt!\n\n– {product_name} Team"
},
"donation_magic_link": {
"subject": "Beheer je {product_name}-donaties",
"body": "Hallo,\n\nKlik op de onderstaande link om toegang te krijgen tot je donateursportaal:\n\n{manageUrl}\n\nIn het portaal kun je abonnementen beheren, facturen downloaden en je donatiegeschiedenis bekijken.\n\nDeze link verloopt op {expiresAt, date, full} om {expiresAt, time, short}.\n\nAls je deze link niet hebt aangevraagd, kun je deze e-mail veilig negeren.\n\n– {product_name} Team"
},
"dsa_report_verification": {
"subject": "Verifieer je e-mail voor een DSA-rapport",
"body": "Hallo,\n\nGebruik de onderstaande verificatiecode om je Digital Services Act-rapport op {product_name} in te dienen:\n\n{code}\n\nDeze code verloopt op {expiresAt, date, full} om {expiresAt, time, short}.\n\nAls je dit niet hebt aangevraagd, kun je deze e-mail negeren.\n\n– {product_name} Safety Team"
},
"email_change_new": {
"subject": "Verifieer je nieuwe {product_name}-e-mail",
"body": "Hallo {username},\n\nVoer deze code in de app in om je nieuwe {product_name}-e-mail te verifiëren:\n\n{code}\n\nDeze code verloopt op {expiresAt, date, full} om {expiresAt, time, short}.\n\nAls je dit niet hebt aangevraagd, kun je deze e-mail negeren.\n\n– {product_name} Team"
},
"email_change_original": {
"subject": "Bevestig je {product_name}-e-mailwijziging",
"body": "Hallo {username},\n\nWe hebben een verzoek ontvangen om het e-mailadres van je {product_name}-account te wijzigen.\n\nOm deze wijziging te bevestigen, voer je deze code in de app in:\n\n{code}\n\nDeze code verloopt op {expiresAt, date, full} om {expiresAt, time, short}.\n\nAls je dit niet hebt aangevraagd, beveilig je account dan onmiddellijk.\n\n– {product_name} Team"
},
"email_change_revert": {
"subject": "Je {product_name}-e-mail is gewijzigd",
"body": "Hallo {username},\n\nHet e-mailadres van je {product_name}-account is gewijzigd naar {newEmail}.\n\nAls je deze wijziging zelf hebt aangebracht, hoef je niets te doen. Als je dit niet hebt gedaan, kun je de wijziging ongedaan maken en je account beveiligen via deze link:\n\n{revertUrl}\n\nDit herstelt je vorige e-mail, meldt je overal af, verwijdert gekoppelde telefoonnummers, schakelt MFA uit en vereist dat je een nieuw wachtwoord instelt.\n\n– {product_name} Safety Team"
},
"email_verification": {
"subject": "Verifieer je {product_name}-e-mailadres",
"body": "Hallo {username},\n\nVerifieer het e-mailadres van je {product_name}-account door op de onderstaande link te klikken:\n\n{verifyUrl}\n\nAls je geen {product_name}-account hebt aangemaakt, kun je deze e-mail veilig negeren.\n\nDeze link is 24 uur geldig.\n\n– {product_name} Team"
},
"gift_chargeback_notification": {
"subject": "Voordelen van je ingewisselde gift zijn verwijderd",
"body": "Hallo {username},\n\nEen giftcode die je hebt ingewisseld, is oorspronkelijk door iemand anders betaald. Die betaling is sindsdien teruggedraaid (een chargeback).\n\nHierdoor hebben we de voordelen verwijderd die aan je account zijn toegevoegd toen je de gift inwisselde.\n\nAls je denkt dat dit een fout is, neem dan contact op met ons support-team en vermeld alle details die je hebt over de giftcode en wanneer je deze hebt ingewisseld.\n\n– {product_name} Team"
},
"harvest_completed": {
"subject": "Je {product_name}-data-export is klaar om te downloaden",
"body": "Hallo {username},\n\nJe data-export is klaar.\n\nDownloadlink:\n{downloadUrl}\n\nInbegrepen berichten: {totalMessages, number}\nBestandsgrootte: {fileSizeMB, number} MB\n\nDeze link verloopt op {expiresAt, date, full} om {expiresAt, time, short}.\n\nAls je deze export niet hebt aangevraagd, wijzig dan onmiddellijk je wachtwoord en neem contact op met ons support-team.\n\n– {product_name} Team"
},
"inactivity_warning": {
"subject": "Je {product_name}-account wordt verwijderd wegens inactiviteit",
"body": "Hallo {username},\n\nWe hebben geen activiteit op je {product_name}-account gezien sinds {lastActiveDate, date, full}.\n\nAls je niet inlogt vóór {deletionDate, date, full} om {deletionDate, time, short}, wordt je account permanent verwijderd wegens inactiviteit.\n\nLog hier in:\n{loginUrl}\n\nAls je {product_name} recentelijk hebt gebruikt, neem dan onmiddellijk contact op met ons support-team.\n\n– {product_name} Team"
},
"ip_authorization": {
"subject": "Autoriseer inlog vanaf een nieuw IP-adres",
"body": "Hallo {username},\n\nWe hebben een inlogpoging op je {product_name}-account gedetecteerd vanaf een nieuw IP-adres:\n\nIP-adres: {ipAddress}\nLocatie: {location}\n\nAls jij dit was, autoriseer dan dit IP-adres door op de onderstaande link te klikken:\n\n{authUrl}\n\nAls je niet hebt geprobeerd in te loggen, wijzig dan onmiddellijk je wachtwoord.\n\nDeze link is 30 minuten geldig.\n\n– {product_name} Team"
},
"password_change_verification": {
"subject": "Bevestig je {product_name}-wachtwoordwijziging",
"body": "Hallo {username},\n\nWe hebben een verzoek ontvangen om het wachtwoord van je {product_name}-account te wijzigen.\n\nOm deze wijziging te bevestigen, voer je deze code in de app in:\n\n{code}\n\nDeze code verloopt om {expiresAt}.\n\nAls je dit niet hebt aangevraagd, heeft iemand mogelijk toegang tot je account. Wijzig onmiddellijk je wachtwoord en schakel tweefactorauthenticatie in.\n\n– {product_name} Team"
},
"password_reset": {
"subject": "Stel je {product_name}-wachtwoord opnieuw in",
"body": "Hallo {username},\n\nJe hebt een {product_name}-wachtwoordreset aangevraagd. Gebruik de onderstaande link om een nieuw wachtwoord in te stellen:\n\n{resetUrl}\n\nAls je dit niet hebt aangevraagd, kun je deze e-mail veilig negeren.\n\nDeze link is 1 uur geldig.\n\n– {product_name} Team"
},
"registration_approved": {
"subject": "Je {product_name}-registratie is goedgekeurd",
"body": "Hallo {username},\n\nGoed nieuws: je {product_name}-registratie is goedgekeurd.\n\nJe kunt nu inloggen op de {product_name}-app via:\n{channelsUrl}\n\nWelkom bij de {product_name}-community.\n\n– {product_name} Team"
},
"report_resolved": {
"subject": "Je {product_name}-rapport is bekeken",
"body": "Hallo {username},\n\nJe rapport (ID: {reportId}) is bekeken door ons Safety-Team.{hasComment, select, yes {\n\nReactie van het Safety-Team:\n{publicComment}} other {}}\n\nBedankt dat je helpt {product_name} veilig te houden voor iedereen. We nemen alle meldingen serieus en waarderen je bijdrage aan de community.\n\nAls je vragen of opmerkingen hebt over deze uitkomst, neem dan contact op met {safety_email}.\n\n– {product_name} Safety Team"
},
"scheduled_deletion_notification": {
"subject": "Je {product_name}-account wordt permanent verwijderd",
"body": "Hallo {username},\n\nJe {product_name}-account is gepland voor permanente verwijdering.\n\nGeplande verwijdering: {deletionDate, date, full} om {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Reden: {reason}}\n}\n\nDit is een serieuze handhavingsactie. Je accountgegevens worden permanent verwijderd op de geplande datum.\n\nAls je van mening bent dat deze handhavingsbeslissing onjuist was, kun je beroep aantekenen. Stuur een e-mail naar {appeals_email} vanaf dit e-mailadres.\n\n– {product_name} Safety-Team"
},
"self_deletion_scheduled": {
"subject": "Verwijdering van je {product_name}-account is gepland",
"body": "Hallo {username},\n\nJe hebt verzocht om je {product_name}-account te verwijderen. Je account is gepland voor permanente verwijdering op:\n\n{deletionDate, date, full} om {deletionDate, time, short}\n\nAls je dit niet hebt aangevraagd, log dan in op je account om de verwijdering te annuleren. We raden ook aan om je wachtwoord te wijzigen om je account te beveiligen.\n\n– {product_name} Team"
},
"unban_notification": {
"subject": "De opschorting van je {product_name}-account is opgeheven",
"body": "Hallo {username},\n\nGoed nieuws: de opschorting van je {product_name}-account is opgeheven.\n\n{reason, select,\n null {}\n other {Reden: {reason}}\n}\n\nJe kunt nu weer inloggen en {product_name} normaal blijven gebruiken.\n\n– {product_name} Safety-Team"
}
"account_disabled_suspicious": {
"subject": "Je {product_name}-account is tijdelijk uitgeschakeld",
"body": "Hallo {username},\n\nWe hebben je {product_name}-account tijdelijk uitgeschakeld omdat we verdachte activiteit hebben gedetecteerd.\n\n{reason, select,\n null {}\n other {Reden: {reason}}\n}\n\nOm weer toegang te krijgen tot je account, moet je je wachtwoord opnieuw instellen:\n\n{forgotUrl}\n\nNadat je je wachtwoord opnieuw hebt ingesteld, kun je weer inloggen.\n\nAls je denkt dat dit een fout is, neem dan contact op met ons support-team.\n\n– {product_name} Safety Team"
},
"account_scheduled_deletion": {
"subject": "Je {product_name}-account wordt permanent verwijderd",
"body": "Hallo {username},\n\nJe {product_name}-account is gepland voor permanente verwijdering vanwege schendingen van onze Servicevoorwaarden of Communityrichtlijnen.\n\nGeplande verwijdering: {deletionDate, date, full} om {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Reden: {reason}}\n}\n\nDit is een serieuze handhavingsactie. Je accountgegevens worden permanent verwijderd op de geplande datum.\n\nBekijk ook:\n- Servicevoorwaarden: {termsUrl}\n- Communityrichtlijnen: {guidelinesUrl}\n\nBeroepsprocedure:\nAls je van mening bent dat deze handhavingsbeslissing onjuist of ongerechtvaardigd was, heb je 60 dagen de tijd om beroep aan te tekenen. Stuur een e-mail naar {appeals_email} vanaf dit e-mailadres.\n\nVermeld in je beroep:\n- Een duidelijke uitleg waarom je van mening bent dat de handhavingsbeslissing onjuist of ongerechtvaardigd was\n- Alle relevante bewijzen of context\n\nEen lid van het {product_name} Safety-Team zal je beroep beoordelen en kan de lopende verwijdering pauzeren totdat een definitieve beslissing is genomen.\n\n– {product_name} Safety Team"
},
"account_temp_banned": {
"subject": "Je {product_name}-account is tijdelijk opgeschort",
"body": "Hallo {username},\n\nJe {product_name}-account is tijdelijk opgeschort wegens schending van onze Servicevoorwaarden of Communityrichtlijnen.\n\nDuur: {durationHours, plural,\n =1 {1 uur}\n other {# uur}\n}\nOpgeschort tot: {bannedUntil, date, full} om {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Reden: {reason}}\n}\n\nGedurende deze periode heb je geen toegang tot je account.\n\nBekijk ook:\n- Servicevoorwaarden: {termsUrl}\n- Communityrichtlijnen: {guidelinesUrl}\n\nAls je van mening bent dat deze handhavingsbeslissing onjuist of ongerechtvaardigd was, kun je beroep aantekenen. Stuur een e-mail naar {appeals_email} vanaf dit e-mailadres en leg duidelijk uit waarom je van mening bent dat de beslissing onjuist was. We zullen je beroep beoordelen en reageren met onze beslissing.\n\n– {product_name} Safety Team"
},
"donation_confirmation": {
"subject": "Bedankt voor je {product_name}-donatie",
"body": "Hallo,\n\nBedankt voor je donatie aan {product_name}! Je {interval, select,\n month {terugkerende donatie}\n year {terugkerende donatie}\n other {eenmalige donatie}\n} is succesvol {interval, select,\n month {ingesteld}\n year {ingesteld}\n other {verwerkt}\n}.\n\nDonatiegegevens:\nBedrag: {amount} {currency} {interval, select,\n month {per maand}\n year {per jaar}\n other {}\n}\n\nStripe stuurt je binnenkort een aparte bon met je factuur-pdf. Deze bevat alle betalingsgegevens en kan worden gebruikt voor belastingdoeleinden.\n\nJe kunt je donatiegeschiedenis bekijken, facturen downloaden en {interval, select,\n month {je abonnement beheren of opzeggen}\n year {je abonnement beheren of opzeggen}\n other {toekomstige donaties beheren}\n} via deze link:\n\n{manageUrl}\n\nJe steun helpt {product_name} draaiende te houden. Bedankt!\n\n– {product_name} Team"
},
"donation_magic_link": {
"subject": "Beheer je {product_name}-donaties",
"body": "Hallo,\n\nKlik op de onderstaande link om toegang te krijgen tot je donateursportaal:\n\n{manageUrl}\n\nIn het portaal kun je abonnementen beheren, facturen downloaden en je donatiegeschiedenis bekijken.\n\nDeze link verloopt op {expiresAt, date, full} om {expiresAt, time, short}.\n\nAls je deze link niet hebt aangevraagd, kun je deze e-mail veilig negeren.\n\n– {product_name} Team"
},
"dsa_report_verification": {
"subject": "Verifieer je e-mail voor een DSA-rapport",
"body": "Hallo,\n\nGebruik de onderstaande verificatiecode om je Digital Services Act-rapport op {product_name} in te dienen:\n\n{code}\n\nDeze code verloopt op {expiresAt, date, full} om {expiresAt, time, short}.\n\nAls je dit niet hebt aangevraagd, kun je deze e-mail negeren.\n\n– {product_name} Safety Team"
},
"email_change_new": {
"subject": "Verifieer je nieuwe {product_name}-e-mail",
"body": "Hallo {username},\n\nVoer deze code in de app in om je nieuwe {product_name}-e-mail te verifiëren:\n\n{code}\n\nDeze code verloopt op {expiresAt, date, full} om {expiresAt, time, short}.\n\nAls je dit niet hebt aangevraagd, kun je deze e-mail negeren.\n\n– {product_name} Team"
},
"email_change_original": {
"subject": "Bevestig je {product_name}-e-mailwijziging",
"body": "Hallo {username},\n\nWe hebben een verzoek ontvangen om het e-mailadres van je {product_name}-account te wijzigen.\n\nOm deze wijziging te bevestigen, voer je deze code in de app in:\n\n{code}\n\nDeze code verloopt op {expiresAt, date, full} om {expiresAt, time, short}.\n\nAls je dit niet hebt aangevraagd, beveilig je account dan onmiddellijk.\n\n– {product_name} Team"
},
"email_change_revert": {
"subject": "Je {product_name}-e-mail is gewijzigd",
"body": "Hallo {username},\n\nHet e-mailadres van je {product_name}-account is gewijzigd naar {newEmail}.\n\nAls je deze wijziging zelf hebt aangebracht, hoef je niets te doen. Als je dit niet hebt gedaan, kun je de wijziging ongedaan maken en je account beveiligen via deze link:\n\n{revertUrl}\n\nDit herstelt je vorige e-mail, meldt je overal af, verwijdert gekoppelde telefoonnummers, schakelt MFA uit en vereist dat je een nieuw wachtwoord instelt.\n\n– {product_name} Safety Team"
},
"email_verification": {
"subject": "Verifieer je {product_name}-e-mailadres",
"body": "Hallo {username},\n\nVerifieer het e-mailadres van je {product_name}-account door op de onderstaande link te klikken:\n\n{verifyUrl}\n\nAls je geen {product_name}-account hebt aangemaakt, kun je deze e-mail veilig negeren.\n\nDeze link is 24 uur geldig.\n\n– {product_name} Team"
},
"gift_chargeback_notification": {
"subject": "Voordelen van je ingewisselde gift zijn verwijderd",
"body": "Hallo {username},\n\nEen giftcode die je hebt ingewisseld, is oorspronkelijk door iemand anders betaald. Die betaling is sindsdien teruggedraaid (een chargeback).\n\nHierdoor hebben we de voordelen verwijderd die aan je account zijn toegevoegd toen je de gift inwisselde.\n\nAls je denkt dat dit een fout is, neem dan contact op met ons support-team en vermeld alle details die je hebt over de giftcode en wanneer je deze hebt ingewisseld.\n\n– {product_name} Team"
},
"harvest_completed": {
"subject": "Je {product_name}-data-export is klaar om te downloaden",
"body": "Hallo {username},\n\nJe data-export is klaar.\n\nDownloadlink:\n{downloadUrl}\n\nInbegrepen berichten: {totalMessages, number}\nBestandsgrootte: {fileSizeMB, number} MB\n\nDeze link verloopt op {expiresAt, date, full} om {expiresAt, time, short}.\n\nAls je deze export niet hebt aangevraagd, wijzig dan onmiddellijk je wachtwoord en neem contact op met ons support-team.\n\n– {product_name} Team"
},
"inactivity_warning": {
"subject": "Je {product_name}-account wordt verwijderd wegens inactiviteit",
"body": "Hallo {username},\n\nWe hebben geen activiteit op je {product_name}-account gezien sinds {lastActiveDate, date, full}.\n\nAls je niet inlogt vóór {deletionDate, date, full} om {deletionDate, time, short}, wordt je account permanent verwijderd wegens inactiviteit.\n\nLog hier in:\n{loginUrl}\n\nAls je {product_name} recentelijk hebt gebruikt, neem dan onmiddellijk contact op met ons support-team.\n\n– {product_name} Team"
},
"ip_authorization": {
"subject": "Autoriseer inlog vanaf een nieuw IP-adres",
"body": "Hallo {username},\n\nWe hebben een inlogpoging op je {product_name}-account gedetecteerd vanaf een nieuw IP-adres:\n\nIP-adres: {ipAddress}\nLocatie: {location}\n\nAls jij dit was, autoriseer dan dit IP-adres door op de onderstaande link te klikken:\n\n{authUrl}\n\nAls je niet hebt geprobeerd in te loggen, wijzig dan onmiddellijk je wachtwoord.\n\nDeze link is 30 minuten geldig.\n\n– {product_name} Team"
},
"password_change_verification": {
"subject": "Bevestig je {product_name}-wachtwoordwijziging",
"body": "Hallo {username},\n\nWe hebben een verzoek ontvangen om het wachtwoord van je {product_name}-account te wijzigen.\n\nOm deze wijziging te bevestigen, voer je deze code in de app in:\n\n{code}\n\nDeze code verloopt om {expiresAt}.\n\nAls je dit niet hebt aangevraagd, heeft iemand mogelijk toegang tot je account. Wijzig onmiddellijk je wachtwoord en schakel tweefactorauthenticatie in.\n\n– {product_name} Team"
},
"password_reset": {
"subject": "Stel je {product_name}-wachtwoord opnieuw in",
"body": "Hallo {username},\n\nJe hebt een {product_name}-wachtwoordreset aangevraagd. Gebruik de onderstaande link om een nieuw wachtwoord in te stellen:\n\n{resetUrl}\n\nAls je dit niet hebt aangevraagd, kun je deze e-mail veilig negeren.\n\nDeze link is 1 uur geldig.\n\n– {product_name} Team"
},
"registration_approved": {
"subject": "Je {product_name}-registratie is goedgekeurd",
"body": "Hallo {username},\n\nGoed nieuws: je {product_name}-registratie is goedgekeurd.\n\nJe kunt nu inloggen op de {product_name}-app via:\n{channelsUrl}\n\nWelkom bij de {product_name}-community.\n\n– {product_name} Team"
},
"report_resolved": {
"subject": "Je {product_name}-rapport is bekeken",
"body": "Hallo {username},\n\nJe rapport (ID: {reportId}) is bekeken door ons Safety-Team.{hasComment, select, yes {\n\nReactie van het Safety-Team:\n{publicComment}} other {}}\n\nBedankt dat je helpt {product_name} veilig te houden voor iedereen. We nemen alle meldingen serieus en waarderen je bijdrage aan de community.\n\nAls je vragen of opmerkingen hebt over deze uitkomst, neem dan contact op met {safety_email}.\n\n– {product_name} Safety Team"
},
"scheduled_deletion_notification": {
"subject": "Je {product_name}-account wordt permanent verwijderd",
"body": "Hallo {username},\n\nJe {product_name}-account is gepland voor permanente verwijdering.\n\nGeplande verwijdering: {deletionDate, date, full} om {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Reden: {reason}}\n}\n\nDit is een serieuze handhavingsactie. Je accountgegevens worden permanent verwijderd op de geplande datum.\n\nAls je van mening bent dat deze handhavingsbeslissing onjuist was, kun je beroep aantekenen. Stuur een e-mail naar {appeals_email} vanaf dit e-mailadres.\n\n– {product_name} Safety-Team"
},
"self_deletion_scheduled": {
"subject": "Verwijdering van je {product_name}-account is gepland",
"body": "Hallo {username},\n\nJe hebt verzocht om je {product_name}-account te verwijderen. Je account is gepland voor permanente verwijdering op:\n\n{deletionDate, date, full} om {deletionDate, time, short}\n\nAls je dit niet hebt aangevraagd, log dan in op je account om de verwijdering te annuleren. We raden ook aan om je wachtwoord te wijzigen om je account te beveiligen.\n\n– {product_name} Team"
},
"unban_notification": {
"subject": "De opschorting van je {product_name}-account is opgeheven",
"body": "Hallo {username},\n\nGoed nieuws: de opschorting van je {product_name}-account is opgeheven.\n\n{reason, select,\n null {}\n other {Reden: {reason}}\n}\n\nJe kunt nu weer inloggen en {product_name} normaal blijven gebruiken.\n\n– {product_name} Safety-Team"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "{product_name}-kontoen din er midlertidig deaktivert",
"body": "Hei {username},\n\nVi deaktiverte {product_name}-kontoen din midlertidig fordi vi oppdaget mistenkelig aktivitet.\n\n{reason, select,\n null {}\n other {Årsak: {reason}}\n}\n\nFor å få tilgang til kontoen din igjen, må du tilbakestille passordet ditt:\n\n{forgotUrl}\n\nEtter at du har tilbakestilt passordet ditt, kan du logge inn igjen.\n\nHvis du mener dette er en feil, kontakt kundestøtte.\n\n– {product_name} sikkerhetsteam"
},
"account_scheduled_deletion": {
"subject": "{product_name}-kontoen din blir permanent slettet",
"body": "Hei {username},\n\n{product_name}-kontoen din er planlagt for permanent sletting på grunn av brudd på våre tjenestevilkår eller community-retningslinjer.\n\nPlanlagt sletting: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Årsak: {reason}}\n}\n\nDette er et alvorlig tiltak. Kontodataene dine blir permanent slettet på den planlagte datoen.\n\nSe over:\n- Tjenestevilkår: {termsUrl}\n- Community-retningslinjer: {guidelinesUrl}\n\nAnkeprosess:\nHvis du mener denne håndhevelsesbeslutningen var feil eller uberettiget, har du 60 dager på deg til å sende inn en anke. E-post {appeals_email} fra denne e-postadressen.\n\nI anken din:\n- Forklar tydelig hvorfor du mener håndhevelsesbeslutningen var feil eller uberettiget\n- Gi relevant bevis eller kontekst\n\nEt medlem av {product_name} sikkerhetsteam vil gjennomgå anken din og kan sette den ventende slettingen på pause til en endelig beslutning er tatt.\n\n– {product_name} sikkerhetsteam"
},
"account_temp_banned": {
"subject": "{product_name}-kontoen din er midlertidig suspendert",
"body": "Hei {username},\n\n{product_name}-kontoen din er midlertidig suspendert for brudd på våre tjenestevilkår eller community-retningslinjer.\n\nVarighet: {durationHours, plural,\n =1 {1 time}\n other {# timer}\n}\nSuspendert til: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Årsak: {reason}}\n}\n\nI løpet av denne tiden vil du ikke kunne få tilgang til kontoen din.\n\nSe over:\n- Tjenestevilkår: {termsUrl}\n- Community-retningslinjer: {guidelinesUrl}\n\nHvis du mener denne håndhevelsesbeslutningen var feil eller uberettiget, kan du sende inn en anke. E-post {appeals_email} fra denne e-postadressen og forklar tydelig hvorfor du mener beslutningen var feil. Vi vil gjennomgå anken din og svare med vår beslutning.\n\n– {product_name} sikkerhetsteam"
},
"donation_confirmation": {
"subject": "Takk for ditt {product_name}-bidrag",
"body": "Hei,\n\nTakk for ditt bidrag til {product_name}! Ditt {interval, select,\n month {gjentakende bidrag}\n year {gjentakende bidrag}\n other {engangsbidrag}\n} er {interval, select,\n month {satt opp}\n year {satt opp}\n other {behandlet}\n} vellykket.\n\nBidragsdetaljer:\nBeløp: {amount} {currency} {interval, select,\n month {per måned}\n year {per år}\n other {}\n}\n\nStripe sender deg en separat kvittering med din faktura-PDF om kort tid. Denne inneholder alle betalingsdetaljer og kan brukes til skatteformål.\n\nDu kan se bidragshistorikken din, laste ned fakturaer, {interval, select,\n month {og administrere eller kansellere abonnementet ditt}\n year {og administrere eller kansellere abonnementet ditt}\n other {og administrere fremtidige bidrag}\n} når som helst ved å bruke denne lenken:\n\n{manageUrl}\n\nDin støtte bidrar til å holde {product_name} i gang. Takk!\n\n– {product_name} Team"
},
"donation_magic_link": {
"subject": "Administrer {product_name}-bidragene dine",
"body": "Hei,\n\nKlikk på lenken nedenfor for å få tilgang til din giverportal:\n\n{manageUrl}\n\nI portalen kan du administrere abonnementer, laste ned fakturaer og se bidragshistorikken din.\n\nDenne lenken utløper {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nHvis du ikke ba om denne lenken, kan du trygt ignorere denne e-posten.\n\n– {product_name} Team"
},
"dsa_report_verification": {
"subject": "Bekreft e-posten din for en DSA-rapport",
"body": "Hei,\n\nBruk bekreftelseskoden nedenfor for å sende inn din Digital Services Act-rapport for {product_name}:\n\n{code}\n\nDenne koden utløper {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nHvis du ikke ba om dette, ignorer denne e-posten.\n\n– {product_name} Safety Team"
},
"email_change_new": {
"subject": "Bekreft din nye {product_name}-e-postadresse",
"body": "Hei {username},\n\nSkriv inn denne koden i appen for å bekrefte din nye {product_name}-e-postadresse:\n\n{code}\n\nDenne koden utløper {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nHvis du ikke ba om dette, ignorer denne e-posten.\n\n– {product_name} Team"
},
"email_change_original": {
"subject": "Bekreft endring av {product_name}-e-postadressen din",
"body": "Hei {username},\n\nVi mottok en forespørsel om å endre e-postadressen til {product_name}-kontoen din.\n\nFor å bekrefte denne endringen, skriv inn denne koden i appen:\n\n{code}\n\nDenne koden utløper {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nHvis du ikke ba om dette, sikre kontoen din med en gang.\n\n– {product_name} Team"
},
"email_change_revert": {
"subject": "{product_name}-e-postadressen din ble endret",
"body": "Hei {username},\n\nE-postadressen til {product_name}-kontoen din ble endret til {newEmail}.\n\nHvis du gjorde denne endringen, er ingen handling nødvendig. Hvis du ikke gjorde det, angre endringen og sikre kontoen din med denne lenken:\n\n{revertUrl}\n\nDette vil gjenopprette din tidligere e-post, logge deg ut overalt, fjerne tilknyttede telefonnumre, deaktivere MFA og kreve at du må angi et nytt passord.\n\n– {product_name} Safety Team"
},
"email_verification": {
"subject": "Bekreft {product_name}-e-postadressen din",
"body": "Hei {username},\n\nBekreft e-postadressen til {product_name}-kontoen din ved å klikke på lenken nedenfor:\n\n{verifyUrl}\n\nHvis du ikke opprettet en {product_name}-konto, ignorer denne e-posten.\n\nDenne lenken er gyldig i 24 timer.\n\n– {product_name} Team"
},
"gift_chargeback_notification": {
"subject": "Fordelene fra gaven du løste inn er fjernet",
"body": "Hei {username},\n\nEn gavekode du løste inn ble opprinnelig betalt av noen andre. Den betalingen er siden blitt tilbakeført (en tilbakeføring).\n\nPå grunn av dette har vi fjernet fordelene som ble lagt til kontoen din da du løste inn gaven.\n\nHvis du tror dette er en feil, kontakt kundestøtte og inkluder alle detaljer du har om gavekoden og når du løste den inn.\n\n– {product_name} Team"
},
"harvest_completed": {
"subject": "{product_name}-dataeksporten din er klar til nedlasting",
"body": "Hei {username},\n\nDataeksporten din er klar.\n\nNedlastingslenke:\n{downloadUrl}\n\nAntall meldinger: {totalMessages, number}\nFilstørrelse: {fileSizeMB, number} MB\n\nDenne lenken utløper {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nHvis du ikke ba om denne eksporten, endre passordet ditt umiddelbart og kontakt kundestøtte.\n\n– {product_name} Team"
},
"inactivity_warning": {
"subject": "{product_name}-kontoen din vil bli slettet på grunn av inaktivitet",
"body": "Hei {username},\n\nVi har ikke sett noen aktivitet på {product_name}-kontoen din siden {lastActiveDate, date, full}.\n\nHvis du ikke logger inn innen {deletionDate, date, full} kl. {deletionDate, time, short}, blir kontoen din permanent slettet på grunn av inaktivitet.\n\nLogg inn her:\n{loginUrl}\n\nHvis du har brukt {product_name} nylig, kontakt kundestøtte med en gang.\n\n– {product_name} Team"
},
"ip_authorization": {
"subject": "Godkjenn pålogging fra en ny IP-adresse",
"body": "Hei {username},\n\nVi oppdaget et påloggingsforsøk til {product_name}-kontoen din fra en ny IP-adresse:\n\nIP-adresse: {ipAddress}\nSted: {location}\n\nHvis dette var deg, godkjenn denne IP-adressen ved å klikke på lenken nedenfor:\n\n{authUrl}\n\nHvis du ikke forsøkte å logge inn, endre passordet ditt med en gang.\n\nDenne lenken er gyldig i 30 minutter.\n\n– {product_name} Team"
},
"password_change_verification": {
"subject": "Bekreft din {product_name}-passordendring",
"body": "Hei {username},\n\nVi mottok en forespørsel om å endre passordet på {product_name}-kontoen din.\n\nFor å bekrefte denne endringen, skriv inn denne koden i appen:\n\n{code}\n\nDenne koden utløper {expiresAt}.\n\nHvis du ikke ba om dette, kan noen ha tilgang til kontoen din. Endre passordet ditt med en gang og aktiver tofaktorautentisering.\n\n– {product_name} Team"
},
"password_reset": {
"subject": "Tilbakestill ditt {product_name}-passord",
"body": "Hei {username},\n\nDu ba om å tilbakestille {product_name}-passordet ditt. Bruk lenken nedenfor for å angi et nytt passord:\n\n{resetUrl}\n\nHvis du ikke ba om dette, ignorer denne e-posten.\n\nDenne lenken er gyldig i 1 time.\n\n– {product_name} Team"
},
"registration_approved": {
"subject": "{product_name}-registreringen din er godkjent",
"body": "Hei {username},\n\nGode nyheter: din {product_name}-registrering er godkjent.\n\nDu kan nå logge inn på {product_name}-appen her:\n{channelsUrl}\n\nVelkommen til {product_name}-communityet.\n\n– {product_name} Team"
},
"report_resolved": {
"subject": "{product_name}-rapporten din er gjennomgått",
"body": "Hei {username},\n\nRapporten din (ID: {reportId}) er gjennomgått av vårt Safety Team.{hasComment, select, yes {\n\nSvar fra Safety Team:\n{publicComment}} other {}}\n\nTakk for at du bidrar til å holde {product_name} trygt for alle. Vi tar alle rapporter på alvor og setter pris på ditt bidrag til communityet.\n\nHvis du har spørsmål eller bekymringer angående dette utfallet, kontakt {safety_email}.\n\n– {product_name} Safety Team"
},
"scheduled_deletion_notification": {
"subject": "{product_name}-kontoen din blir permanent slettet",
"body": "Hei {username},\n\n{product_name}-kontoen din er planlagt for permanent sletting.\n\nPlanlagt sletting: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Årsak: {reason}}\n}\n\nDette er et alvorlig tiltak. Kontodataene dine blir permanent slettet på den planlagte datoen.\n\nHvis du mener denne håndhevelsesbeslutningen var feil, kan du sende inn en anke. E-post {appeals_email} fra denne e-postadressen.\n\n– {product_name} Safety Team"
},
"self_deletion_scheduled": {
"subject": "Slettingen av {product_name}-kontoen din er planlagt",
"body": "Hei {username},\n\nDu ba om å slette {product_name}-kontoen din. Kontoen din er planlagt for permanent sletting:\n\n{deletionDate, date, full} kl. {deletionDate, time, short}\n\nHvis du ikke ba om dette, logg inn på kontoen din for å avbryte slettingen. Vi anbefaler også å endre passordet ditt for å sikre kontoen din.\n\n– {product_name} Team"
},
"unban_notification": {
"subject": "Suspensjonen av {product_name}-kontoen din er opphevet",
"body": "Hei {username},\n\nGode nyheter: suspensjonen av {product_name}-kontoen din er opphevet.\n\n{reason, select,\n null {}\n other {Årsak: {reason}}\n}\n\nDu kan nå logge inn igjen og fortsette å bruke {product_name} som normalt.\n\n– {product_name} Safety Team"
}
"account_disabled_suspicious": {
"subject": "{product_name}-kontoen din er midlertidig deaktivert",
"body": "Hei {username},\n\nVi deaktiverte {product_name}-kontoen din midlertidig fordi vi oppdaget mistenkelig aktivitet.\n\n{reason, select,\n null {}\n other {Årsak: {reason}}\n}\n\nFor å få tilgang til kontoen din igjen, må du tilbakestille passordet ditt:\n\n{forgotUrl}\n\nEtter at du har tilbakestilt passordet ditt, kan du logge inn igjen.\n\nHvis du mener dette er en feil, kontakt kundestøtte.\n\n– {product_name} sikkerhetsteam"
},
"account_scheduled_deletion": {
"subject": "{product_name}-kontoen din blir permanent slettet",
"body": "Hei {username},\n\n{product_name}-kontoen din er planlagt for permanent sletting på grunn av brudd på våre tjenestevilkår eller community-retningslinjer.\n\nPlanlagt sletting: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Årsak: {reason}}\n}\n\nDette er et alvorlig tiltak. Kontodataene dine blir permanent slettet på den planlagte datoen.\n\nSe over:\n- Tjenestevilkår: {termsUrl}\n- Community-retningslinjer: {guidelinesUrl}\n\nAnkeprosess:\nHvis du mener denne håndhevelsesbeslutningen var feil eller uberettiget, har du 60 dager på deg til å sende inn en anke. E-post {appeals_email} fra denne e-postadressen.\n\nI anken din:\n- Forklar tydelig hvorfor du mener håndhevelsesbeslutningen var feil eller uberettiget\n- Gi relevant bevis eller kontekst\n\nEt medlem av {product_name} sikkerhetsteam vil gjennomgå anken din og kan sette den ventende slettingen på pause til en endelig beslutning er tatt.\n\n– {product_name} sikkerhetsteam"
},
"account_temp_banned": {
"subject": "{product_name}-kontoen din er midlertidig suspendert",
"body": "Hei {username},\n\n{product_name}-kontoen din er midlertidig suspendert for brudd på våre tjenestevilkår eller community-retningslinjer.\n\nVarighet: {durationHours, plural,\n =1 {1 time}\n other {# timer}\n}\nSuspendert til: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Årsak: {reason}}\n}\n\nI løpet av denne tiden vil du ikke kunne få tilgang til kontoen din.\n\nSe over:\n- Tjenestevilkår: {termsUrl}\n- Community-retningslinjer: {guidelinesUrl}\n\nHvis du mener denne håndhevelsesbeslutningen var feil eller uberettiget, kan du sende inn en anke. E-post {appeals_email} fra denne e-postadressen og forklar tydelig hvorfor du mener beslutningen var feil. Vi vil gjennomgå anken din og svare med vår beslutning.\n\n– {product_name} sikkerhetsteam"
},
"donation_confirmation": {
"subject": "Takk for ditt {product_name}-bidrag",
"body": "Hei,\n\nTakk for ditt bidrag til {product_name}! Ditt {interval, select,\n month {gjentakende bidrag}\n year {gjentakende bidrag}\n other {engangsbidrag}\n} er {interval, select,\n month {satt opp}\n year {satt opp}\n other {behandlet}\n} vellykket.\n\nBidragsdetaljer:\nBeløp: {amount} {currency} {interval, select,\n month {per måned}\n year {per år}\n other {}\n}\n\nStripe sender deg en separat kvittering med din faktura-PDF om kort tid. Denne inneholder alle betalingsdetaljer og kan brukes til skatteformål.\n\nDu kan se bidragshistorikken din, laste ned fakturaer, {interval, select,\n month {og administrere eller kansellere abonnementet ditt}\n year {og administrere eller kansellere abonnementet ditt}\n other {og administrere fremtidige bidrag}\n} når som helst ved å bruke denne lenken:\n\n{manageUrl}\n\nDin støtte bidrar til å holde {product_name} i gang. Takk!\n\n– {product_name} Team"
},
"donation_magic_link": {
"subject": "Administrer {product_name}-bidragene dine",
"body": "Hei,\n\nKlikk på lenken nedenfor for å få tilgang til din giverportal:\n\n{manageUrl}\n\nI portalen kan du administrere abonnementer, laste ned fakturaer og se bidragshistorikken din.\n\nDenne lenken utløper {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nHvis du ikke ba om denne lenken, kan du trygt ignorere denne e-posten.\n\n– {product_name} Team"
},
"dsa_report_verification": {
"subject": "Bekreft e-posten din for en DSA-rapport",
"body": "Hei,\n\nBruk bekreftelseskoden nedenfor for å sende inn din Digital Services Act-rapport for {product_name}:\n\n{code}\n\nDenne koden utløper {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nHvis du ikke ba om dette, ignorer denne e-posten.\n\n– {product_name} Safety Team"
},
"email_change_new": {
"subject": "Bekreft din nye {product_name}-e-postadresse",
"body": "Hei {username},\n\nSkriv inn denne koden i appen for å bekrefte din nye {product_name}-e-postadresse:\n\n{code}\n\nDenne koden utløper {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nHvis du ikke ba om dette, ignorer denne e-posten.\n\n– {product_name} Team"
},
"email_change_original": {
"subject": "Bekreft endring av {product_name}-e-postadressen din",
"body": "Hei {username},\n\nVi mottok en forespørsel om å endre e-postadressen til {product_name}-kontoen din.\n\nFor å bekrefte denne endringen, skriv inn denne koden i appen:\n\n{code}\n\nDenne koden utløper {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nHvis du ikke ba om dette, sikre kontoen din med en gang.\n\n– {product_name} Team"
},
"email_change_revert": {
"subject": "{product_name}-e-postadressen din ble endret",
"body": "Hei {username},\n\nE-postadressen til {product_name}-kontoen din ble endret til {newEmail}.\n\nHvis du gjorde denne endringen, er ingen handling nødvendig. Hvis du ikke gjorde det, angre endringen og sikre kontoen din med denne lenken:\n\n{revertUrl}\n\nDette vil gjenopprette din tidligere e-post, logge deg ut overalt, fjerne tilknyttede telefonnumre, deaktivere MFA og kreve at du må angi et nytt passord.\n\n– {product_name} Safety Team"
},
"email_verification": {
"subject": "Bekreft {product_name}-e-postadressen din",
"body": "Hei {username},\n\nBekreft e-postadressen til {product_name}-kontoen din ved å klikke på lenken nedenfor:\n\n{verifyUrl}\n\nHvis du ikke opprettet en {product_name}-konto, ignorer denne e-posten.\n\nDenne lenken er gyldig i 24 timer.\n\n– {product_name} Team"
},
"gift_chargeback_notification": {
"subject": "Fordelene fra gaven du løste inn er fjernet",
"body": "Hei {username},\n\nEn gavekode du løste inn ble opprinnelig betalt av noen andre. Den betalingen er siden blitt tilbakeført (en tilbakeføring).\n\nPå grunn av dette har vi fjernet fordelene som ble lagt til kontoen din da du løste inn gaven.\n\nHvis du tror dette er en feil, kontakt kundestøtte og inkluder alle detaljer du har om gavekoden og når du løste den inn.\n\n– {product_name} Team"
},
"harvest_completed": {
"subject": "{product_name}-dataeksporten din er klar til nedlasting",
"body": "Hei {username},\n\nDataeksporten din er klar.\n\nNedlastingslenke:\n{downloadUrl}\n\nAntall meldinger: {totalMessages, number}\nFilstørrelse: {fileSizeMB, number} MB\n\nDenne lenken utløper {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nHvis du ikke ba om denne eksporten, endre passordet ditt umiddelbart og kontakt kundestøtte.\n\n– {product_name} Team"
},
"inactivity_warning": {
"subject": "{product_name}-kontoen din vil bli slettet på grunn av inaktivitet",
"body": "Hei {username},\n\nVi har ikke sett noen aktivitet på {product_name}-kontoen din siden {lastActiveDate, date, full}.\n\nHvis du ikke logger inn innen {deletionDate, date, full} kl. {deletionDate, time, short}, blir kontoen din permanent slettet på grunn av inaktivitet.\n\nLogg inn her:\n{loginUrl}\n\nHvis du har brukt {product_name} nylig, kontakt kundestøtte med en gang.\n\n– {product_name} Team"
},
"ip_authorization": {
"subject": "Godkjenn pålogging fra en ny IP-adresse",
"body": "Hei {username},\n\nVi oppdaget et påloggingsforsøk til {product_name}-kontoen din fra en ny IP-adresse:\n\nIP-adresse: {ipAddress}\nSted: {location}\n\nHvis dette var deg, godkjenn denne IP-adressen ved å klikke på lenken nedenfor:\n\n{authUrl}\n\nHvis du ikke forsøkte å logge inn, endre passordet ditt med en gang.\n\nDenne lenken er gyldig i 30 minutter.\n\n– {product_name} Team"
},
"password_change_verification": {
"subject": "Bekreft din {product_name}-passordendring",
"body": "Hei {username},\n\nVi mottok en forespørsel om å endre passordet på {product_name}-kontoen din.\n\nFor å bekrefte denne endringen, skriv inn denne koden i appen:\n\n{code}\n\nDenne koden utløper {expiresAt}.\n\nHvis du ikke ba om dette, kan noen ha tilgang til kontoen din. Endre passordet ditt med en gang og aktiver tofaktorautentisering.\n\n– {product_name} Team"
},
"password_reset": {
"subject": "Tilbakestill ditt {product_name}-passord",
"body": "Hei {username},\n\nDu ba om å tilbakestille {product_name}-passordet ditt. Bruk lenken nedenfor for å angi et nytt passord:\n\n{resetUrl}\n\nHvis du ikke ba om dette, ignorer denne e-posten.\n\nDenne lenken er gyldig i 1 time.\n\n– {product_name} Team"
},
"registration_approved": {
"subject": "{product_name}-registreringen din er godkjent",
"body": "Hei {username},\n\nGode nyheter: din {product_name}-registrering er godkjent.\n\nDu kan nå logge inn på {product_name}-appen her:\n{channelsUrl}\n\nVelkommen til {product_name}-communityet.\n\n– {product_name} Team"
},
"report_resolved": {
"subject": "{product_name}-rapporten din er gjennomgått",
"body": "Hei {username},\n\nRapporten din (ID: {reportId}) er gjennomgått av vårt Safety Team.{hasComment, select, yes {\n\nSvar fra Safety Team:\n{publicComment}} other {}}\n\nTakk for at du bidrar til å holde {product_name} trygt for alle. Vi tar alle rapporter på alvor og setter pris på ditt bidrag til communityet.\n\nHvis du har spørsmål eller bekymringer angående dette utfallet, kontakt {safety_email}.\n\n– {product_name} Safety Team"
},
"scheduled_deletion_notification": {
"subject": "{product_name}-kontoen din blir permanent slettet",
"body": "Hei {username},\n\n{product_name}-kontoen din er planlagt for permanent sletting.\n\nPlanlagt sletting: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Årsak: {reason}}\n}\n\nDette er et alvorlig tiltak. Kontodataene dine blir permanent slettet på den planlagte datoen.\n\nHvis du mener denne håndhevelsesbeslutningen var feil, kan du sende inn en anke. E-post {appeals_email} fra denne e-postadressen.\n\n– {product_name} Safety Team"
},
"self_deletion_scheduled": {
"subject": "Slettingen av {product_name}-kontoen din er planlagt",
"body": "Hei {username},\n\nDu ba om å slette {product_name}-kontoen din. Kontoen din er planlagt for permanent sletting:\n\n{deletionDate, date, full} kl. {deletionDate, time, short}\n\nHvis du ikke ba om dette, logg inn på kontoen din for å avbryte slettingen. Vi anbefaler også å endre passordet ditt for å sikre kontoen din.\n\n– {product_name} Team"
},
"unban_notification": {
"subject": "Suspensjonen av {product_name}-kontoen din er opphevet",
"body": "Hei {username},\n\nGode nyheter: suspensjonen av {product_name}-kontoen din er opphevet.\n\n{reason, select,\n null {}\n other {Årsak: {reason}}\n}\n\nDu kan nå logge inn igjen og fortsette å bruke {product_name} som normalt.\n\n– {product_name} Safety Team"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "Twoje konto {product_name} zostało tymczasowo wyłączone",
"body": "Witaj {username},\n\nTymczasowo wyłączyliśmy Twoje konto {product_name}, ponieważ wykryliśmy podejrzaną aktywność.\n\n{reason, select,\n null {}\n other {Powód: {reason}}\n}\n\nAby odzyskać dostęp do konta, musisz zresetować hasło:\n\n{forgotUrl}\n\nPo zresetowaniu hasła będziesz mógł ponownie się zalogować.\n\nJeśli uważasz, że to błąd, skontaktuj się z naszym zespołem wsparcia.\n\n– Zespół Bezpieczeństwa {product_name}"
},
"account_scheduled_deletion": {
"subject": "Twoje konto {product_name} zostanie usunięte na zawsze",
"body": "Witaj {username},\n\nTwoje konto {product_name} zostało zaplanowane do trwałego usunięcia z powodu naruszenia naszych warunków usługi lub wytycznych społeczności.\n\nZaplanowane usunięcie: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Powód: {reason}}\n}\n\nJest to poważna decyzja. Dane Twojego konta zostaną usunięte na stałe w zaplanowanym terminie.\n\nSprawdź:\n- Warunki usługi: {termsUrl}\n- Wytyczne społeczności: {guidelinesUrl}\n\nProces odwoławczy:\nJeśli uważasz, że ta decyzja była błędna lub nieuzasadniona, masz 60 dni na złożenie odwołania. Wyślij e-mail na adres {appeals_email} z tego adresu e-mail.\n\nW swoim odwołaniu:\n- Wyjaśnij jasno, dlaczego uważasz, że decyzja była błędna lub nieuzasadniona\n- Przedstaw wszelkie istotne dowody lub kontekst\n\nCzłonek Zespołu Bezpieczeństwa {product_name} rozpatrzy Twoje odwołanie i może wstrzymać usunięcie do czasu podjęcia ostatecznej decyzji.\n\n– Zespół Bezpieczeństwa {product_name}"
},
"account_temp_banned": {
"subject": "Twoje konto {product_name} zostało tymczasowo zawieszone",
"body": "Witaj {username},\n\nTwoje konto {product_name} zostało tymczasowo zawieszone za naruszenie naszych warunków usługi lub wytycznych społeczności.\n\nCzas trwania: {durationHours, plural,\n one {1 godzina} few {# godziny}\n many {# godzin} other {# godzin}\n}\nZawieszone do: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Powód: {reason}}\n}\n\nW tym czasie nie będziesz mieć dostępu do swojego konta.\n\nSprawdź:\n- Warunki usługi: {termsUrl}\n- Wytyczne społeczności: {guidelinesUrl}\n\nJeśli uważasz, że ta decyzja była błędna lub nieuzasadniona, możesz złożyć odwołanie. Wyślij e-mail na adres {appeals_email} z tego adresu e-mail i jasno wyjaśnij, dlaczego uważasz, że decyzja była błędna. Rozpatrzymy Twoje odwołanie i odpowiemy z naszą decyzją.\n\n– Zespół Bezpieczeństwa {product_name}"
},
"donation_confirmation": {
"subject": "Dziękujemy za darowiznę dla {product_name}",
"body": "Witaj,\n\nDziękujemy za darowiznę dla {product_name}! Twoja {interval, select,\n month {cykliczna darowizna}\n year {cykliczna darowizna}\n other {jednorazowa darowizna}\n} została {interval, select,\n month {ustawiona}\n year {ustawiona}\n other {przetworzona}\n} pomyślnie.\n\nSzczegóły darowizny:\nKwota: {amount} {currency} {interval, select,\n month {miesięcznie}\n year {rocznie}\n other {}\n}\n\nStripe wkrótce wyśle Ci osobną wiadomość e-mail z potwierdzeniem i fakturą w formacie PDF. Zawiera wszystkie szczegóły płatności i może służyć do celów podatkowych.\n\nMożesz przeglądać historię swoich darowizn, pobierać faktury {interval, select,\n month {oraz zarządzać lub anulować subskrypcję}\n year {oraz zarządzać lub anulować subskrypcję}\n other {oraz zarządzać przyszłymi darowiznami}\n} w dowolnym momencie, korzystając z tego linku:\n\n{manageUrl}\n\nTwoje wsparcie pomaga utrzymać {product_name}. Dziękujemy!\n\n– Zespół {product_name}"
},
"donation_magic_link": {
"subject": "Zarządzaj darowiznami dla {product_name}",
"body": "Witaj,\n\nKliknij poniższy link, aby przejść do portalu darczyńcy:\n\n{manageUrl}\n\nW portalu możesz zarządzać subskrypcjami, pobierać faktury i przeglądać historię swoich darowizn.\n\nTen link wygasa {expiresAt, date, full} o {expiresAt, time, short}.\n\nJeśli nie prosiłeś o ten link, możesz bezpiecznie zignorować tę wiadomość e-mail.\n\n– Zespół {product_name}"
},
"dsa_report_verification": {
"subject": "Zweryfikuj swój e-mail dla raportu DSA",
"body": "Witaj,\n\nUżyj poniższego kodu weryfikacyjnego, aby przesłać swój raport DSA dotyczący {product_name}:\n\n{code}\n\nTen kod wygasa {expiresAt, date, full} o {expiresAt, time, short}.\n\nJeśli nie prosiłeś o ten kod, możesz zignorować tę wiadomość e-mail.\n\n– Zespół Bezpieczeństwa {product_name}"
},
"email_change_new": {
"subject": "Zweryfikuj nowy adres e-mail dla {product_name}",
"body": "Witaj {username},\n\nWprowadź ten kod w aplikacji, aby zweryfikować swój nowy adres e-mail dla {product_name}:\n\n{code}\n\nTen kod wygasa {expiresAt, date, full} o {expiresAt, time, short}.\n\nJeśli nie prosiłeś o ten kod, możesz zignorować tę wiadomość e-mail.\n\n– Zespół {product_name}"
},
"email_change_original": {
"subject": "Potwierdź zmianę adresu e-mail w {product_name}",
"body": "Witaj {username},\n\nOtrzymaliśmy prośbę o zmianę adresu e-mail Twojego konta {product_name}.\n\nAby potwierdzić tę zmianę, wprowadź ten kod w aplikacji:\n\n{code}\n\nTen kod wygasa {expiresAt, date, full} o {expiresAt, time, short}.\n\nJeśli nie prosiłeś o to, natychmiast zabezpiecz swoje konto.\n\n– Zespół {product_name}"
},
"email_change_revert": {
"subject": "Twój adres e-mail w {product_name} został zmieniony",
"body": "Witaj {username},\n\nTwój adres e-mail konta {product_name} został zmieniony na {newEmail}.\n\nJeśli to Ty dokonałeś tej zmiany, nie musisz nic robić. Jeśli nie, możesz cofnąć zmianę i zabezpieczyć swoje konto, korzystając z tego linku:\n\n{revertUrl}\n\nSpowoduje to przywrócenie poprzedniego adresu e-mail, wylogowanie ze wszystkich urządzeń, usunięcie powiązanych numerów telefonów, wyłączenie MFA i konieczność ustawienia nowego hasła.\n\n– Zespół Bezpieczeństwa {product_name}"
},
"email_verification": {
"subject": "Zweryfikuj adres e-mail w {product_name}",
"body": "Witaj {username},\n\nZweryfikuj adres e-mail swojego konta {product_name}, klikając poniższy link:\n\n{verifyUrl}\n\nJeśli nie utworzyłeś konta {product_name}, możesz bezpiecznie zignorować tę wiadomość e-mail.\n\nTen link jest ważny przez 24 godziny.\n\n– Zespół {product_name}"
},
"gift_chargeback_notification": {
"subject": "Usunięto bonusy z wykorzystanego prezentu",
"body": "Witaj {username},\n\nKod prezentowy, który został wykorzystany, został pierwotnie opłacony przez inną osobę. Płatność ta została następnie cofnięta (chargeback).\n\nZ tego powodu usunęliśmy bonusy, które zostały dodane do Twojego konta po wykorzystaniu prezentu.\n\nJeśli uważasz, że to pomyłka, skontaktuj się z naszym zespołem wsparcia i podaj wszelkie szczegóły dotyczące kodu prezentowego oraz daty jego wykorzystania.\n\n– Zespół {product_name}"
},
"harvest_completed": {
"subject": "Twój eksport danych z {product_name} jest gotowy do pobrania",
"body": "Witaj {username},\n\nTwój eksport danych jest gotowy.\n\nLink do pobrania:\n{downloadUrl}\n\nWiadomości uwzględnione: {totalMessages, number}\nRozmiar pliku: {fileSizeMB, number} MB\n\nTen link wygasa {expiresAt, date, full} o {expiresAt, time, short}.\n\nJeśli nie prosiłeś o ten eksport, natychmiast zmień hasło i skontaktuj się z naszym zespołem wsparcia.\n\n– Zespół {product_name}"
},
"inactivity_warning": {
"subject": "Twoje konto {product_name} zostanie usunięte z powodu braku aktywności",
"body": "Witaj {username},\n\nNie odnotowaliśmy żadnej aktywności na Twoim koncie {product_name} od {lastActiveDate, date, full}.\n\nJeśli nie zalogujesz się do {deletionDate, date, full} o {deletionDate, time, short}, Twoje konto zostanie usunięte na stałe z powodu nieaktywności.\n\nZaloguj się tutaj:\n{loginUrl}\n\nJeśli ostatnio korzystałeś z {product_name}, natychmiast skontaktuj się z naszym zespołem wsparcia.\n\n– Zespół {product_name}"
},
"ip_authorization": {
"subject": "Autoryzuj logowanie z nowego adresu IP",
"body": "Witaj {username},\n\nWykryliśmy próbę logowania do Twojego konta {product_name} z nowego adresu IP:\n\nAdres IP: {ipAddress}\nLokalizacja: {location}\n\nJeśli to Ty, autoryzuj ten adres IP, klikając poniższy link:\n\n{authUrl}\n\nJeśli nie próbowałeś się zalogować, natychmiast zmień hasło.\n\nTen link jest ważny przez 30 minut.\n\n– Zespół {product_name}"
},
"password_change_verification": {
"subject": "Potwierdź zmianę hasła w {product_name}",
"body": "Witaj {username},\n\nOtrzymaliśmy prośbę o zmianę hasła do Twojego konta {product_name}.\n\nAby potwierdzić tę zmianę, wprowadź ten kod w aplikacji:\n\n{code}\n\nTen kod wygasa o godzinie {expiresAt}.\n\nJeśli nie prosiłeś o to, ktoś może mieć dostęp do Twojego konta. Natychmiast zmień hasło i włącz uwierzytelnianie dwuskładnikowe.\n\n– Zespół {product_name}"
},
"password_reset": {
"subject": "Zresetuj hasło w {product_name}",
"body": "Witaj {username},\n\nPoprosiłeś o zresetowanie hasła w {product_name}. Użyj poniższego linku, aby ustawić nowe hasło:\n\n{resetUrl}\n\nJeśli nie prosiłeś o to, możesz bezpiecznie zignorować tę wiadomość e-mail.\n\nTen link jest ważny przez 1 godzinę.\n\n– Zespół {product_name}"
},
"registration_approved": {
"subject": "Twoja rejestracja w {product_name} została zatwierdzona",
"body": "Witaj {username},\n\nDobre wieści: Twoja rejestracja w {product_name} została zatwierdzona.\n\nMożesz teraz zalogować się do aplikacji {product_name} tutaj:\n{channelsUrl}\n\nWitaj w społeczności {product_name}.\n\n– Zespół {product_name}"
},
"report_resolved": {
"subject": "Twoje zgłoszenie dotyczące {product_name} zostało rozpatrzone",
"body": "Witaj {username},\n\nTwoje zgłoszenie (ID: {reportId}) zostało rozpatrzone przez nasz Zespół Bezpieczeństwa.{hasComment, select, yes {\n\nOdpowiedź od Zespołu Bezpieczeństwa:\n{publicComment}} other {}}\n\nDziękujemy za pomoc w utrzymaniu bezpieczeństwa {product_name} dla wszystkich. Traktujemy wszystkie zgłoszenia poważnie i doceniamy Twój wkład w społeczność.\n\nJeśli masz pytania lub wątpliwości dotyczące tego wyniku, skontaktuj się z {safety_email}.\n\n– Zespół Bezpieczeństwa {product_name}"
},
"scheduled_deletion_notification": {
"subject": "Twoje konto {product_name} zostanie usunięte na zawsze",
"body": "Witaj {username},\n\nTwoje konto {product_name} zostało zaplanowane do trwałego usunięcia.\n\nZaplanowane usunięcie: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Powód: {reason}}\n}\n\nJest to poważna decyzja. Dane Twojego konta zostaną usunięte na stałe w zaplanowanym terminie.\n\nJeśli uważasz, że ta decyzja była błędna, możesz złożyć odwołanie. Wyślij e-mail na adres {appeals_email} z tego adresu e-mail.\n\n– Zespół Bezpieczeństwa {product_name}"
},
"self_deletion_scheduled": {
"subject": "Usunięcie Twojego konta {product_name} zostało zaplanowane",
"body": "Witaj {username},\n\nPoprosiłeś o usunięcie konta {product_name}. Twoje konto jest zaplanowane do usunięcia na stałe na:\n\n{deletionDate, date, full} o {deletionDate, time, short}\n\nJeśli nie prosiłeś o to, zaloguj się na swoje konto, aby anulować usunięcie. Zalecamy również zmianę hasła w celu zabezpieczenia konta.\n\n– Zespół {product_name}"
},
"unban_notification": {
"subject": "Zawieszenie Twojego konta {product_name} zostało zniesione",
"body": "Witaj {username},\n\nDobre wieści: zawieszenie Twojego konta {product_name} zostało zniesione.\n\n{reason, select,\n null {}\n other {Powód: {reason}}\n}\n\nMożesz teraz ponownie się zalogować i kontynuować korzystanie z {product_name} jak zwykle.\n\n– Zespół Bezpieczeństwa {product_name}"
}
"account_disabled_suspicious": {
"subject": "Twoje konto {product_name} zostało tymczasowo wyłączone",
"body": "Witaj {username},\n\nTymczasowo wyłączyliśmy Twoje konto {product_name}, ponieważ wykryliśmy podejrzaną aktywność.\n\n{reason, select,\n null {}\n other {Powód: {reason}}\n}\n\nAby odzyskać dostęp do konta, musisz zresetować hasło:\n\n{forgotUrl}\n\nPo zresetowaniu hasła będziesz mógł ponownie się zalogować.\n\nJeśli uważasz, że to błąd, skontaktuj się z naszym zespołem wsparcia.\n\n– Zespół Bezpieczeństwa {product_name}"
},
"account_scheduled_deletion": {
"subject": "Twoje konto {product_name} zostanie usunięte na zawsze",
"body": "Witaj {username},\n\nTwoje konto {product_name} zostało zaplanowane do trwałego usunięcia z powodu naruszenia naszych warunków usługi lub wytycznych społeczności.\n\nZaplanowane usunięcie: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Powód: {reason}}\n}\n\nJest to poważna decyzja. Dane Twojego konta zostaną usunięte na stałe w zaplanowanym terminie.\n\nSprawdź:\n- Warunki usługi: {termsUrl}\n- Wytyczne społeczności: {guidelinesUrl}\n\nProces odwoławczy:\nJeśli uważasz, że ta decyzja była błędna lub nieuzasadniona, masz 60 dni na złożenie odwołania. Wyślij e-mail na adres {appeals_email} z tego adresu e-mail.\n\nW swoim odwołaniu:\n- Wyjaśnij jasno, dlaczego uważasz, że decyzja była błędna lub nieuzasadniona\n- Przedstaw wszelkie istotne dowody lub kontekst\n\nCzłonek Zespołu Bezpieczeństwa {product_name} rozpatrzy Twoje odwołanie i może wstrzymać usunięcie do czasu podjęcia ostatecznej decyzji.\n\n– Zespół Bezpieczeństwa {product_name}"
},
"account_temp_banned": {
"subject": "Twoje konto {product_name} zostało tymczasowo zawieszone",
"body": "Witaj {username},\n\nTwoje konto {product_name} zostało tymczasowo zawieszone za naruszenie naszych warunków usługi lub wytycznych społeczności.\n\nCzas trwania: {durationHours, plural,\n one {1 godzina} few {# godziny}\n many {# godzin} other {# godzin}\n}\nZawieszone do: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Powód: {reason}}\n}\n\nW tym czasie nie będziesz mieć dostępu do swojego konta.\n\nSprawdź:\n- Warunki usługi: {termsUrl}\n- Wytyczne społeczności: {guidelinesUrl}\n\nJeśli uważasz, że ta decyzja była błędna lub nieuzasadniona, możesz złożyć odwołanie. Wyślij e-mail na adres {appeals_email} z tego adresu e-mail i jasno wyjaśnij, dlaczego uważasz, że decyzja była błędna. Rozpatrzymy Twoje odwołanie i odpowiemy z naszą decyzją.\n\n– Zespół Bezpieczeństwa {product_name}"
},
"donation_confirmation": {
"subject": "Dziękujemy za darowiznę dla {product_name}",
"body": "Witaj,\n\nDziękujemy za darowiznę dla {product_name}! Twoja {interval, select,\n month {cykliczna darowizna}\n year {cykliczna darowizna}\n other {jednorazowa darowizna}\n} została {interval, select,\n month {ustawiona}\n year {ustawiona}\n other {przetworzona}\n} pomyślnie.\n\nSzczegóły darowizny:\nKwota: {amount} {currency} {interval, select,\n month {miesięcznie}\n year {rocznie}\n other {}\n}\n\nStripe wkrótce wyśle Ci osobną wiadomość e-mail z potwierdzeniem i fakturą w formacie PDF. Zawiera wszystkie szczegóły płatności i może służyć do celów podatkowych.\n\nMożesz przeglądać historię swoich darowizn, pobierać faktury {interval, select,\n month {oraz zarządzać lub anulować subskrypcję}\n year {oraz zarządzać lub anulować subskrypcję}\n other {oraz zarządzać przyszłymi darowiznami}\n} w dowolnym momencie, korzystając z tego linku:\n\n{manageUrl}\n\nTwoje wsparcie pomaga utrzymać {product_name}. Dziękujemy!\n\n– Zespół {product_name}"
},
"donation_magic_link": {
"subject": "Zarządzaj darowiznami dla {product_name}",
"body": "Witaj,\n\nKliknij poniższy link, aby przejść do portalu darczyńcy:\n\n{manageUrl}\n\nW portalu możesz zarządzać subskrypcjami, pobierać faktury i przeglądać historię swoich darowizn.\n\nTen link wygasa {expiresAt, date, full} o {expiresAt, time, short}.\n\nJeśli nie prosiłeś o ten link, możesz bezpiecznie zignorować tę wiadomość e-mail.\n\n– Zespół {product_name}"
},
"dsa_report_verification": {
"subject": "Zweryfikuj swój e-mail dla raportu DSA",
"body": "Witaj,\n\nUżyj poniższego kodu weryfikacyjnego, aby przesłać swój raport DSA dotyczący {product_name}:\n\n{code}\n\nTen kod wygasa {expiresAt, date, full} o {expiresAt, time, short}.\n\nJeśli nie prosiłeś o ten kod, możesz zignorować tę wiadomość e-mail.\n\n– Zespół Bezpieczeństwa {product_name}"
},
"email_change_new": {
"subject": "Zweryfikuj nowy adres e-mail dla {product_name}",
"body": "Witaj {username},\n\nWprowadź ten kod w aplikacji, aby zweryfikować swój nowy adres e-mail dla {product_name}:\n\n{code}\n\nTen kod wygasa {expiresAt, date, full} o {expiresAt, time, short}.\n\nJeśli nie prosiłeś o ten kod, możesz zignorować tę wiadomość e-mail.\n\n– Zespół {product_name}"
},
"email_change_original": {
"subject": "Potwierdź zmianę adresu e-mail w {product_name}",
"body": "Witaj {username},\n\nOtrzymaliśmy prośbę o zmianę adresu e-mail Twojego konta {product_name}.\n\nAby potwierdzić tę zmianę, wprowadź ten kod w aplikacji:\n\n{code}\n\nTen kod wygasa {expiresAt, date, full} o {expiresAt, time, short}.\n\nJeśli nie prosiłeś o to, natychmiast zabezpiecz swoje konto.\n\n– Zespół {product_name}"
},
"email_change_revert": {
"subject": "Twój adres e-mail w {product_name} został zmieniony",
"body": "Witaj {username},\n\nTwój adres e-mail konta {product_name} został zmieniony na {newEmail}.\n\nJeśli to Ty dokonałeś tej zmiany, nie musisz nic robić. Jeśli nie, możesz cofnąć zmianę i zabezpieczyć swoje konto, korzystając z tego linku:\n\n{revertUrl}\n\nSpowoduje to przywrócenie poprzedniego adresu e-mail, wylogowanie ze wszystkich urządzeń, usunięcie powiązanych numerów telefonów, wyłączenie MFA i konieczność ustawienia nowego hasła.\n\n– Zespół Bezpieczeństwa {product_name}"
},
"email_verification": {
"subject": "Zweryfikuj adres e-mail w {product_name}",
"body": "Witaj {username},\n\nZweryfikuj adres e-mail swojego konta {product_name}, klikając poniższy link:\n\n{verifyUrl}\n\nJeśli nie utworzyłeś konta {product_name}, możesz bezpiecznie zignorować tę wiadomość e-mail.\n\nTen link jest ważny przez 24 godziny.\n\n– Zespół {product_name}"
},
"gift_chargeback_notification": {
"subject": "Usunięto bonusy z wykorzystanego prezentu",
"body": "Witaj {username},\n\nKod prezentowy, który został wykorzystany, został pierwotnie opłacony przez inną osobę. Płatność ta została następnie cofnięta (chargeback).\n\nZ tego powodu usunęliśmy bonusy, które zostały dodane do Twojego konta po wykorzystaniu prezentu.\n\nJeśli uważasz, że to pomyłka, skontaktuj się z naszym zespołem wsparcia i podaj wszelkie szczegóły dotyczące kodu prezentowego oraz daty jego wykorzystania.\n\n– Zespół {product_name}"
},
"harvest_completed": {
"subject": "Twój eksport danych z {product_name} jest gotowy do pobrania",
"body": "Witaj {username},\n\nTwój eksport danych jest gotowy.\n\nLink do pobrania:\n{downloadUrl}\n\nWiadomości uwzględnione: {totalMessages, number}\nRozmiar pliku: {fileSizeMB, number} MB\n\nTen link wygasa {expiresAt, date, full} o {expiresAt, time, short}.\n\nJeśli nie prosiłeś o ten eksport, natychmiast zmień hasło i skontaktuj się z naszym zespołem wsparcia.\n\n– Zespół {product_name}"
},
"inactivity_warning": {
"subject": "Twoje konto {product_name} zostanie usunięte z powodu braku aktywności",
"body": "Witaj {username},\n\nNie odnotowaliśmy żadnej aktywności na Twoim koncie {product_name} od {lastActiveDate, date, full}.\n\nJeśli nie zalogujesz się do {deletionDate, date, full} o {deletionDate, time, short}, Twoje konto zostanie usunięte na stałe z powodu nieaktywności.\n\nZaloguj się tutaj:\n{loginUrl}\n\nJeśli ostatnio korzystałeś z {product_name}, natychmiast skontaktuj się z naszym zespołem wsparcia.\n\n– Zespół {product_name}"
},
"ip_authorization": {
"subject": "Autoryzuj logowanie z nowego adresu IP",
"body": "Witaj {username},\n\nWykryliśmy próbę logowania do Twojego konta {product_name} z nowego adresu IP:\n\nAdres IP: {ipAddress}\nLokalizacja: {location}\n\nJeśli to Ty, autoryzuj ten adres IP, klikając poniższy link:\n\n{authUrl}\n\nJeśli nie próbowałeś się zalogować, natychmiast zmień hasło.\n\nTen link jest ważny przez 30 minut.\n\n– Zespół {product_name}"
},
"password_change_verification": {
"subject": "Potwierdź zmianę hasła w {product_name}",
"body": "Witaj {username},\n\nOtrzymaliśmy prośbę o zmianę hasła do Twojego konta {product_name}.\n\nAby potwierdzić tę zmianę, wprowadź ten kod w aplikacji:\n\n{code}\n\nTen kod wygasa o godzinie {expiresAt}.\n\nJeśli nie prosiłeś o to, ktoś może mieć dostęp do Twojego konta. Natychmiast zmień hasło i włącz uwierzytelnianie dwuskładnikowe.\n\n– Zespół {product_name}"
},
"password_reset": {
"subject": "Zresetuj hasło w {product_name}",
"body": "Witaj {username},\n\nPoprosiłeś o zresetowanie hasła w {product_name}. Użyj poniższego linku, aby ustawić nowe hasło:\n\n{resetUrl}\n\nJeśli nie prosiłeś o to, możesz bezpiecznie zignorować tę wiadomość e-mail.\n\nTen link jest ważny przez 1 godzinę.\n\n– Zespół {product_name}"
},
"registration_approved": {
"subject": "Twoja rejestracja w {product_name} została zatwierdzona",
"body": "Witaj {username},\n\nDobre wieści: Twoja rejestracja w {product_name} została zatwierdzona.\n\nMożesz teraz zalogować się do aplikacji {product_name} tutaj:\n{channelsUrl}\n\nWitaj w społeczności {product_name}.\n\n– Zespół {product_name}"
},
"report_resolved": {
"subject": "Twoje zgłoszenie dotyczące {product_name} zostało rozpatrzone",
"body": "Witaj {username},\n\nTwoje zgłoszenie (ID: {reportId}) zostało rozpatrzone przez nasz Zespół Bezpieczeństwa.{hasComment, select, yes {\n\nOdpowiedź od Zespołu Bezpieczeństwa:\n{publicComment}} other {}}\n\nDziękujemy za pomoc w utrzymaniu bezpieczeństwa {product_name} dla wszystkich. Traktujemy wszystkie zgłoszenia poważnie i doceniamy Twój wkład w społeczność.\n\nJeśli masz pytania lub wątpliwości dotyczące tego wyniku, skontaktuj się z {safety_email}.\n\n– Zespół Bezpieczeństwa {product_name}"
},
"scheduled_deletion_notification": {
"subject": "Twoje konto {product_name} zostanie usunięte na zawsze",
"body": "Witaj {username},\n\nTwoje konto {product_name} zostało zaplanowane do trwałego usunięcia.\n\nZaplanowane usunięcie: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Powód: {reason}}\n}\n\nJest to poważna decyzja. Dane Twojego konta zostaną usunięte na stałe w zaplanowanym terminie.\n\nJeśli uważasz, że ta decyzja była błędna, możesz złożyć odwołanie. Wyślij e-mail na adres {appeals_email} z tego adresu e-mail.\n\n– Zespół Bezpieczeństwa {product_name}"
},
"self_deletion_scheduled": {
"subject": "Usunięcie Twojego konta {product_name} zostało zaplanowane",
"body": "Witaj {username},\n\nPoprosiłeś o usunięcie konta {product_name}. Twoje konto jest zaplanowane do usunięcia na stałe na:\n\n{deletionDate, date, full} o {deletionDate, time, short}\n\nJeśli nie prosiłeś o to, zaloguj się na swoje konto, aby anulować usunięcie. Zalecamy również zmianę hasła w celu zabezpieczenia konta.\n\n– Zespół {product_name}"
},
"unban_notification": {
"subject": "Zawieszenie Twojego konta {product_name} zostało zniesione",
"body": "Witaj {username},\n\nDobre wieści: zawieszenie Twojego konta {product_name} zostało zniesione.\n\n{reason, select,\n null {}\n other {Powód: {reason}}\n}\n\nMożesz teraz ponownie się zalogować i kontynuować korzystanie z {product_name} jak zwykle.\n\n– Zespół Bezpieczeństwa {product_name}"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "Sua conta do {product_name} foi desativada temporariamente",
"body": "Olá, {username},\n\nDesativamos temporariamente sua conta do {product_name} porque detectamos atividades suspeitas.\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nPara acessar sua conta novamente, você precisará redefinir sua senha:\n\n{forgotUrl}\n\nDepois de redefinir sua senha, você poderá entrar novamente.\n\nSe você acredita que isso foi um erro, entre em contato com nossa equipe de suporte.\n\n– Equipe de Segurança do {product_name}"
},
"account_scheduled_deletion": {
"subject": "Sua conta do {product_name} será excluída permanentemente",
"body": "Olá, {username},\n\nSua conta do {product_name} foi agendada para exclusão permanente devido a violações de nossos Termos de Serviço ou Diretrizes da Comunidade.\n\nExclusão agendada: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nEsta é uma medida séria. Os dados da sua conta serão excluídos permanentemente na data agendada.\n\nPor favor, revise:\n- Termos de Serviço: {termsUrl}\n- Diretrizes da Comunidade: {guidelinesUrl}\n\nProcesso de recurso:\nSe você acredita que esta decisão foi incorreta ou injustificada, você tem 60 dias para enviar um recurso. Envie um e-mail para {appeals_email} a partir deste endereço de e-mail.\n\nEm seu recurso:\n- Explique claramente por que você acredita que a decisão foi incorreta ou injustificada\n- Forneça quaisquer evidências ou contexto relevantes\n\nUm membro da Equipe de Segurança do {product_name} revisará seu recurso e poderá pausar a exclusão pendente até que uma decisão final seja alcançada.\n\n– Equipe de Segurança do {product_name}"
},
"account_temp_banned": {
"subject": "Sua conta do {product_name} foi suspensa temporariamente",
"body": "Olá, {username},\n\nSua conta do {product_name} foi suspensa temporariamente por violar nossos Termos de Serviço ou Diretrizes da Comunidade.\n\nDuração: {durationHours, plural,\n =1 {1 hora}\n other {# horas}\n}\nSuspensa até: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nDurante este período, você não poderá acessar sua conta.\n\nPor favor, revise:\n- Termos de Serviço: {termsUrl}\n- Diretrizes da Comunidade: {guidelinesUrl}\n\nSe você acredita que esta decisão foi incorreta ou injustificada, você pode enviar um recurso. Envie um e-mail para {appeals_email} a partir deste endereço de e-mail e explique claramente por que você acredita que a decisão foi incorreta. Revisaremos seu recurso e responderemos com nossa decisão.\n\n– Equipe de Segurança do {product_name}"
},
"donation_confirmation": {
"subject": "Agradecemos pela sua doação ao {product_name}",
"body": "Olá,\n\nAgradecemos pela sua doação ao {product_name}! Sua {interval, select,\n month {doação recorrente}\n year {doação recorrente}\n other {doação única}\n} foi {interval, select,\n month {configurada}\n year {configurada}\n other {processada}\n} com sucesso.\n\nDetalhes da doação:\nValor: {amount} {currency} {interval, select,\n month {por mês}\n year {por ano}\n other {}\n}\n\nA Stripe enviará um recibo separado com sua fatura em PDF em breve. Isso inclui todos os detalhes de pagamento e pode ser usado para fins fiscais.\n\nVocê pode visualizar seu histórico de doações, baixar faturas, {interval, select,\n month {e gerenciar ou cancelar sua assinatura}\n year {e gerenciar ou cancelar sua assinatura}\n other {e gerenciar futuras doações}\n} a qualquer momento usando este link:\n\n{manageUrl}\n\nSeu apoio ajuda a manter o {product_name} funcionando. Agradecemos!\n\n– Equipe do {product_name}"
},
"donation_magic_link": {
"subject": "Gerenciar suas doações do {product_name}",
"body": "Olá,\n\nClique no link abaixo para acessar seu portal de doadores:\n\n{manageUrl}\n\nNo portal, você pode gerenciar assinaturas, baixar faturas e visualizar seu histórico de doações.\n\nEste link expira em {expiresAt, date, full} às {expiresAt, time, short}.\n\nSe você não solicitou este link, pode ignorar este e-mail com segurança.\n\n– Equipe do {product_name}"
},
"dsa_report_verification": {
"subject": "Verifique seu e-mail para um relatório do DSA",
"body": "Olá,\n\nUse o código de verificação abaixo para enviar seu relatório do Digital Services Act para o {product_name}:\n\n{code}\n\nEste código expira em {expiresAt, date, full} às {expiresAt, time, short}.\n\nSe você não solicitou isso, pode ignorar este e-mail.\n\n– Equipe de Segurança do {product_name}"
},
"email_change_new": {
"subject": "Verifique seu novo e-mail do {product_name}",
"body": "Olá, {username},\n\nInsira este código no aplicativo para verificar seu novo e-mail do {product_name}:\n\n{code}\n\nEste código expira em {expiresAt, date, full} às {expiresAt, time, short}.\n\nSe você não solicitou isso, pode ignorar este e-mail.\n\n– Equipe do {product_name}"
},
"email_change_original": {
"subject": "Confirme a alteração do e-mail da sua conta do {product_name}",
"body": "Olá, {username},\n\nRecebemos uma solicitação para alterar o endereço de e-mail da sua conta do {product_name}.\n\nPara confirmar esta alteração, insira este código no aplicativo:\n\n{code}\n\nEste código expira em {expiresAt, date, full} às {expiresAt, time, short}.\n\nSe você não solicitou isso, por favor, proteja sua conta imediatamente.\n\n– Equipe do {product_name}"
},
"email_change_revert": {
"subject": "O e-mail da sua conta do {product_name} foi alterado",
"body": "Olá, {username},\n\nO endereço de e-mail da sua conta do {product_name} foi alterado para {newEmail}.\n\nSe você fez essa alteração, nenhuma ação é necessária. Se você não fez, pode reverter a alteração e proteger sua conta usando este link:\n\n{revertUrl}\n\nIsso restaurará seu e-mail anterior, desconectará você de todos os lugares, removerá números de telefone vinculados, desativará a MFA e exigirá que você defina uma nova senha.\n\n– Equipe de Segurança do {product_name}"
},
"email_verification": {
"subject": "Verifique o endereço de e-mail da sua conta do {product_name}",
"body": "Olá, {username},\n\nPor favor, verifique o endereço de e-mail da sua conta do {product_name} clicando no link abaixo:\n\n{verifyUrl}\n\nSe você não criou uma conta do {product_name}, pode ignorar este e-mail com segurança.\n\nEste link é válido por 24 horas.\n\n– Equipe do {product_name}"
},
"gift_chargeback_notification": {
"subject": "Vantagens do seu presente resgatado foram removidas",
"body": "Olá, {username},\n\nUm código de presente que você resgatou foi originalmente pago por outra pessoa. Esse pagamento foi revertido (um estorno).\n\nPor causa disso, removemos os benefícios que foram adicionados à sua conta quando você resgatou o presente.\n\nSe você acha que isso é um erro, entre em contato com nossa equipe de suporte e inclua quaisquer detalhes que você tenha sobre o código do presente e quando você o resgatou.\n\n– Equipe do {product_name}"
},
"harvest_completed": {
"subject": "Sua exportação de dados do {product_name} está pronta para download",
"body": "Olá, {username},\n\nSua exportação de dados está pronta.\n\nLink para download:\n{downloadUrl}\n\nMensagens incluídas: {totalMessages, number}\nTamanho do arquivo: {fileSizeMB, number} MB\n\nEste link expira em {expiresAt, date, full} às {expiresAt, time, short}.\n\nSe você não solicitou esta exportação, por favor, altere sua senha imediatamente e entre em contato com nossa equipe de suporte.\n\n– Equipe do {product_name}"
},
"inactivity_warning": {
"subject": "A sua conta do {product_name} será excluída devido à inatividade",
"body": "Olá, {username},\n\nNão vimos nenhuma atividade em sua conta do {product_name} desde {lastActiveDate, date, full}.\n\nSe você não entrar até {deletionDate, date, full} às {deletionDate, time, short}, sua conta será excluída permanentemente devido à inatividade.\n\nEntre aqui:\n{loginUrl}\n\nSe você usou o {product_name} recentemente, entre em contato com nossa equipe de suporte imediatamente.\n\n– Equipe do {product_name}"
},
"ip_authorization": {
"subject": "Autorizar login de um novo endereço IP",
"body": "Olá, {username},\n\nDetectamos uma tentativa de login em sua conta do {product_name} de um novo endereço IP:\n\nEndereço IP: {ipAddress}\nLocalização: {location}\n\nSe foi você, por favor, autorize este endereço IP clicando no link abaixo:\n\n{authUrl}\n\nSe você não tentou entrar, por favor, altere sua senha imediatamente.\n\nEste link é válido por 30 minutos.\n\n– Equipe do {product_name}"
},
"password_change_verification": {
"subject": "Confirme a alteração da senha da sua conta do {product_name}",
"body": "Olá, {username},\n\nRecebemos uma solicitação para alterar a senha da sua conta do {product_name}.\n\nPara confirmar esta alteração, insira este código no aplicativo:\n\n{code}\n\nEste código expira em {expiresAt}.\n\nSe você não solicitou isso, alguém pode ter acesso à sua conta. Altere sua senha imediatamente e ative a autenticação de dois fatores.\n\n– Equipe do {product_name}"
},
"password_reset": {
"subject": "Redefina a senha da sua conta do {product_name}",
"body": "Olá, {username},\n\nVocê solicitou uma redefinição de senha da sua conta do {product_name}. Use o link abaixo para definir uma nova senha:\n\n{resetUrl}\n\nSe você não solicitou isso, pode ignorar este e-mail com segurança.\n\nEste link é válido por 1 hora.\n\n– Equipe do {product_name}"
},
"registration_approved": {
"subject": "O seu registro do {product_name} foi aprovado",
"body": "Olá, {username},\n\nBoas notícias: seu registro do {product_name} foi aprovado.\n\nAgora você pode entrar no aplicativo do {product_name} aqui:\n{channelsUrl}\n\nBem-vindo à comunidade do {product_name}.\n\n– Equipe do {product_name}"
},
"report_resolved": {
"subject": "Sua denúncia no {product_name} foi analisada",
"body": "Olá, {username},\n\nSua denúncia (ID: {reportId}) foi analisada por nossa Equipe de Segurança.{hasComment, select, yes {\n\nResposta da Equipe de Segurança:\n{publicComment}} other {}}\n\nAgradecemos por ajudar a manter o {product_name} seguro para todos. Levamos todas as denúncias a sério e agradecemos sua contribuição para a comunidade.\n\nSe você tiver alguma dúvida ou preocupação sobre este resultado, entre em contato com {safety_email}.\n\n– Equipe de Segurança do {product_name}"
},
"scheduled_deletion_notification": {
"subject": "Sua conta do {product_name} será excluída permanentemente",
"body": "Olá, {username},\n\nSua conta do {product_name} foi agendada para exclusão permanente.\n\nExclusão agendada: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nEsta é uma medida séria. Os dados da sua conta serão excluídos permanentemente na data agendada.\n\nSe você acredita que esta decisão foi incorreta, você pode enviar um recurso. Envie um e-mail para {appeals_email} a partir deste endereço de e-mail.\n\n– Equipe de Segurança do {product_name}"
},
"self_deletion_scheduled": {
"subject": "A exclusão da sua conta do {product_name} está agendada",
"body": "Olá, {username},\n\nVocê solicitou a exclusão da sua conta do {product_name}. Sua conta está agendada para exclusão permanente em:\n\n{deletionDate, date, full} às {deletionDate, time, short}\n\nSe você não solicitou isso, entre em sua conta para cancelar a exclusão. Também recomendamos alterar sua senha para proteger sua conta.\n\n– Equipe do {product_name}"
},
"unban_notification": {
"subject": "A suspensão da sua conta do {product_name} foi encerrada",
"body": "Olá, {username},\n\nBoas notícias: a suspensão da sua conta do {product_name} foi encerrada.\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nAgora você pode entrar novamente e continuar usando o {product_name} normalmente.\n\n– Equipe de Segurança do {product_name}"
}
"account_disabled_suspicious": {
"subject": "Sua conta do {product_name} foi desativada temporariamente",
"body": "Olá, {username},\n\nDesativamos temporariamente sua conta do {product_name} porque detectamos atividades suspeitas.\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nPara acessar sua conta novamente, você precisará redefinir sua senha:\n\n{forgotUrl}\n\nDepois de redefinir sua senha, você poderá entrar novamente.\n\nSe você acredita que isso foi um erro, entre em contato com nossa equipe de suporte.\n\n– Equipe de Segurança do {product_name}"
},
"account_scheduled_deletion": {
"subject": "Sua conta do {product_name} será excluída permanentemente",
"body": "Olá, {username},\n\nSua conta do {product_name} foi agendada para exclusão permanente devido a violações de nossos Termos de Serviço ou Diretrizes da Comunidade.\n\nExclusão agendada: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nEsta é uma medida séria. Os dados da sua conta serão excluídos permanentemente na data agendada.\n\nPor favor, revise:\n- Termos de Serviço: {termsUrl}\n- Diretrizes da Comunidade: {guidelinesUrl}\n\nProcesso de recurso:\nSe você acredita que esta decisão foi incorreta ou injustificada, você tem 60 dias para enviar um recurso. Envie um e-mail para {appeals_email} a partir deste endereço de e-mail.\n\nEm seu recurso:\n- Explique claramente por que você acredita que a decisão foi incorreta ou injustificada\n- Forneça quaisquer evidências ou contexto relevantes\n\nUm membro da Equipe de Segurança do {product_name} revisará seu recurso e poderá pausar a exclusão pendente até que uma decisão final seja alcançada.\n\n– Equipe de Segurança do {product_name}"
},
"account_temp_banned": {
"subject": "Sua conta do {product_name} foi suspensa temporariamente",
"body": "Olá, {username},\n\nSua conta do {product_name} foi suspensa temporariamente por violar nossos Termos de Serviço ou Diretrizes da Comunidade.\n\nDuração: {durationHours, plural,\n =1 {1 hora}\n other {# horas}\n}\nSuspensa até: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nDurante este período, você não poderá acessar sua conta.\n\nPor favor, revise:\n- Termos de Serviço: {termsUrl}\n- Diretrizes da Comunidade: {guidelinesUrl}\n\nSe você acredita que esta decisão foi incorreta ou injustificada, você pode enviar um recurso. Envie um e-mail para {appeals_email} a partir deste endereço de e-mail e explique claramente por que você acredita que a decisão foi incorreta. Revisaremos seu recurso e responderemos com nossa decisão.\n\n– Equipe de Segurança do {product_name}"
},
"donation_confirmation": {
"subject": "Agradecemos pela sua doação ao {product_name}",
"body": "Olá,\n\nAgradecemos pela sua doação ao {product_name}! Sua {interval, select,\n month {doação recorrente}\n year {doação recorrente}\n other {doação única}\n} foi {interval, select,\n month {configurada}\n year {configurada}\n other {processada}\n} com sucesso.\n\nDetalhes da doação:\nValor: {amount} {currency} {interval, select,\n month {por mês}\n year {por ano}\n other {}\n}\n\nA Stripe enviará um recibo separado com sua fatura em PDF em breve. Isso inclui todos os detalhes de pagamento e pode ser usado para fins fiscais.\n\nVocê pode visualizar seu histórico de doações, baixar faturas, {interval, select,\n month {e gerenciar ou cancelar sua assinatura}\n year {e gerenciar ou cancelar sua assinatura}\n other {e gerenciar futuras doações}\n} a qualquer momento usando este link:\n\n{manageUrl}\n\nSeu apoio ajuda a manter o {product_name} funcionando. Agradecemos!\n\n– Equipe do {product_name}"
},
"donation_magic_link": {
"subject": "Gerenciar suas doações do {product_name}",
"body": "Olá,\n\nClique no link abaixo para acessar seu portal de doadores:\n\n{manageUrl}\n\nNo portal, você pode gerenciar assinaturas, baixar faturas e visualizar seu histórico de doações.\n\nEste link expira em {expiresAt, date, full} às {expiresAt, time, short}.\n\nSe você não solicitou este link, pode ignorar este e-mail com segurança.\n\n– Equipe do {product_name}"
},
"dsa_report_verification": {
"subject": "Verifique seu e-mail para um relatório do DSA",
"body": "Olá,\n\nUse o código de verificação abaixo para enviar seu relatório do Digital Services Act para o {product_name}:\n\n{code}\n\nEste código expira em {expiresAt, date, full} às {expiresAt, time, short}.\n\nSe você não solicitou isso, pode ignorar este e-mail.\n\n– Equipe de Segurança do {product_name}"
},
"email_change_new": {
"subject": "Verifique seu novo e-mail do {product_name}",
"body": "Olá, {username},\n\nInsira este código no aplicativo para verificar seu novo e-mail do {product_name}:\n\n{code}\n\nEste código expira em {expiresAt, date, full} às {expiresAt, time, short}.\n\nSe você não solicitou isso, pode ignorar este e-mail.\n\n– Equipe do {product_name}"
},
"email_change_original": {
"subject": "Confirme a alteração do e-mail da sua conta do {product_name}",
"body": "Olá, {username},\n\nRecebemos uma solicitação para alterar o endereço de e-mail da sua conta do {product_name}.\n\nPara confirmar esta alteração, insira este código no aplicativo:\n\n{code}\n\nEste código expira em {expiresAt, date, full} às {expiresAt, time, short}.\n\nSe você não solicitou isso, por favor, proteja sua conta imediatamente.\n\n– Equipe do {product_name}"
},
"email_change_revert": {
"subject": "O e-mail da sua conta do {product_name} foi alterado",
"body": "Olá, {username},\n\nO endereço de e-mail da sua conta do {product_name} foi alterado para {newEmail}.\n\nSe você fez essa alteração, nenhuma ação é necessária. Se você não fez, pode reverter a alteração e proteger sua conta usando este link:\n\n{revertUrl}\n\nIsso restaurará seu e-mail anterior, desconectará você de todos os lugares, removerá números de telefone vinculados, desativará a MFA e exigirá que você defina uma nova senha.\n\n– Equipe de Segurança do {product_name}"
},
"email_verification": {
"subject": "Verifique o endereço de e-mail da sua conta do {product_name}",
"body": "Olá, {username},\n\nPor favor, verifique o endereço de e-mail da sua conta do {product_name} clicando no link abaixo:\n\n{verifyUrl}\n\nSe você não criou uma conta do {product_name}, pode ignorar este e-mail com segurança.\n\nEste link é válido por 24 horas.\n\n– Equipe do {product_name}"
},
"gift_chargeback_notification": {
"subject": "Vantagens do seu presente resgatado foram removidas",
"body": "Olá, {username},\n\nUm código de presente que você resgatou foi originalmente pago por outra pessoa. Esse pagamento foi revertido (um estorno).\n\nPor causa disso, removemos os benefícios que foram adicionados à sua conta quando você resgatou o presente.\n\nSe você acha que isso é um erro, entre em contato com nossa equipe de suporte e inclua quaisquer detalhes que você tenha sobre o código do presente e quando você o resgatou.\n\n– Equipe do {product_name}"
},
"harvest_completed": {
"subject": "Sua exportação de dados do {product_name} está pronta para download",
"body": "Olá, {username},\n\nSua exportação de dados está pronta.\n\nLink para download:\n{downloadUrl}\n\nMensagens incluídas: {totalMessages, number}\nTamanho do arquivo: {fileSizeMB, number} MB\n\nEste link expira em {expiresAt, date, full} às {expiresAt, time, short}.\n\nSe você não solicitou esta exportação, por favor, altere sua senha imediatamente e entre em contato com nossa equipe de suporte.\n\n– Equipe do {product_name}"
},
"inactivity_warning": {
"subject": "A sua conta do {product_name} será excluída devido à inatividade",
"body": "Olá, {username},\n\nNão vimos nenhuma atividade em sua conta do {product_name} desde {lastActiveDate, date, full}.\n\nSe você não entrar até {deletionDate, date, full} às {deletionDate, time, short}, sua conta será excluída permanentemente devido à inatividade.\n\nEntre aqui:\n{loginUrl}\n\nSe você usou o {product_name} recentemente, entre em contato com nossa equipe de suporte imediatamente.\n\n– Equipe do {product_name}"
},
"ip_authorization": {
"subject": "Autorizar login de um novo endereço IP",
"body": "Olá, {username},\n\nDetectamos uma tentativa de login em sua conta do {product_name} de um novo endereço IP:\n\nEndereço IP: {ipAddress}\nLocalização: {location}\n\nSe foi você, por favor, autorize este endereço IP clicando no link abaixo:\n\n{authUrl}\n\nSe você não tentou entrar, por favor, altere sua senha imediatamente.\n\nEste link é válido por 30 minutos.\n\n– Equipe do {product_name}"
},
"password_change_verification": {
"subject": "Confirme a alteração da senha da sua conta do {product_name}",
"body": "Olá, {username},\n\nRecebemos uma solicitação para alterar a senha da sua conta do {product_name}.\n\nPara confirmar esta alteração, insira este código no aplicativo:\n\n{code}\n\nEste código expira em {expiresAt}.\n\nSe você não solicitou isso, alguém pode ter acesso à sua conta. Altere sua senha imediatamente e ative a autenticação de dois fatores.\n\n– Equipe do {product_name}"
},
"password_reset": {
"subject": "Redefina a senha da sua conta do {product_name}",
"body": "Olá, {username},\n\nVocê solicitou uma redefinição de senha da sua conta do {product_name}. Use o link abaixo para definir uma nova senha:\n\n{resetUrl}\n\nSe você não solicitou isso, pode ignorar este e-mail com segurança.\n\nEste link é válido por 1 hora.\n\n– Equipe do {product_name}"
},
"registration_approved": {
"subject": "O seu registro do {product_name} foi aprovado",
"body": "Olá, {username},\n\nBoas notícias: seu registro do {product_name} foi aprovado.\n\nAgora você pode entrar no aplicativo do {product_name} aqui:\n{channelsUrl}\n\nBem-vindo à comunidade do {product_name}.\n\n– Equipe do {product_name}"
},
"report_resolved": {
"subject": "Sua denúncia no {product_name} foi analisada",
"body": "Olá, {username},\n\nSua denúncia (ID: {reportId}) foi analisada por nossa Equipe de Segurança.{hasComment, select, yes {\n\nResposta da Equipe de Segurança:\n{publicComment}} other {}}\n\nAgradecemos por ajudar a manter o {product_name} seguro para todos. Levamos todas as denúncias a sério e agradecemos sua contribuição para a comunidade.\n\nSe você tiver alguma dúvida ou preocupação sobre este resultado, entre em contato com {safety_email}.\n\n– Equipe de Segurança do {product_name}"
},
"scheduled_deletion_notification": {
"subject": "Sua conta do {product_name} será excluída permanentemente",
"body": "Olá, {username},\n\nSua conta do {product_name} foi agendada para exclusão permanente.\n\nExclusão agendada: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nEsta é uma medida séria. Os dados da sua conta serão excluídos permanentemente na data agendada.\n\nSe você acredita que esta decisão foi incorreta, você pode enviar um recurso. Envie um e-mail para {appeals_email} a partir deste endereço de e-mail.\n\n– Equipe de Segurança do {product_name}"
},
"self_deletion_scheduled": {
"subject": "A exclusão da sua conta do {product_name} está agendada",
"body": "Olá, {username},\n\nVocê solicitou a exclusão da sua conta do {product_name}. Sua conta está agendada para exclusão permanente em:\n\n{deletionDate, date, full} às {deletionDate, time, short}\n\nSe você não solicitou isso, entre em sua conta para cancelar a exclusão. Também recomendamos alterar sua senha para proteger sua conta.\n\n– Equipe do {product_name}"
},
"unban_notification": {
"subject": "A suspensão da sua conta do {product_name} foi encerrada",
"body": "Olá, {username},\n\nBoas notícias: a suspensão da sua conta do {product_name} foi encerrada.\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nAgora você pode entrar novamente e continuar usando o {product_name} normalmente.\n\n– Equipe de Segurança do {product_name}"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "Contul tău {product_name} a fost dezactivat temporar",
"body": "Salut {username},\n\nAm dezactivat temporar contul tău {product_name} deoarece am detectat activitate suspectă.\n\n{reason, select,\n null {}\n other {Motiv: {reason}}\n}\n\nPentru a recăpăta accesul la contul tău, va trebui să-ți resetezi parola:\n\n{forgotUrl}\n\nDupă ce îți resetezi parola, te vei putea conecta din nou.\n\nDacă crezi că aceasta a fost o eroare, te rugăm să contactezi echipa noastră de suport.\n\n– {product_name} Safety Team"
},
"account_scheduled_deletion": {
"subject": "Contul tău de {product_name} va fi șters permanent",
"body": "Salut {username},\n\nContul tău {product_name} a fost programat pentru ștergere permanentă din cauza încălcării Termenilor și Condițiilor sau a Ghidului Comunității noastre.\n\nȘtergere programată: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motiv: {reason}}\n}\n\nAceasta este o măsură disciplinară serioasă. Datele contului tău vor fi șterse permanent la data programată.\n\nTe rugăm să revizuiești:\n- Termeni și Condiții: {termsUrl}\n- Ghidul Comunității: {guidelinesUrl}\n\nProcesul de apel:\nDacă crezi că această decizie de aplicare a fost incorectă sau nejustificată, ai la dispoziție 60 de zile pentru a depune un apel. Trimite un e-mail la {appeals_email} de la această adresă de e-mail.\n\nÎn apelul tău:\n- Explică clar de ce crezi că decizia de aplicare a fost incorectă sau nejustificată\n- Furnizează orice dovezi sau context relevante\n\nUn membru al Echipei de Siguranță {product_name} va examina apelul tău și poate întrerupe ștergerea în așteptare până la luarea unei decizii finale.\n\n– {product_name} Safety Team"
},
"account_temp_banned": {
"subject": "Contul tău {product_name} a fost suspendat temporar",
"body": "Salut {username},\n\nContul tău {product_name} a fost suspendat temporar pentru încălcarea Termenilor și Condițiilor sau a Ghidului Comunității noastre.\n\nDurată: {durationHours, plural,\n one {1 oră} few {ore}\n other {# de ore}\n}\nSuspendat până la: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Motiv: {reason}}\n}\n\nÎn acest timp, nu vei putea accesa contul tău.\n\nTe rugăm să revizuiești:\n- Termeni și Condiții: {termsUrl}\n- Ghidul Comunității: {guidelinesUrl}\n\nDacă crezi că această decizie a fost incorectă sau nejustificată, poți depune un apel. Trimite un e-mail la {appeals_email} de la această adresă de e-mail și explică clar de ce crezi că decizia a fost incorectă. Vom examina apelul tău și vom răspunde cu decizia noastră.\n\n– {product_name} Safety Team Safety Team"
},
"donation_confirmation": {
"subject": "Îți mulțumim pentru donația ta pentru {product_name}",
"body": "Salut,\n\nÎți mulțumim pentru donația ta către {product_name}! {interval, select,\n month {Donația ta recurentă}\n year {Donația ta recurentă}\n other {Donația ta unică}\n} a fost {interval, select,\n month {configurată}\n year {configurată}\n other {procesată}\n} cu succes.\n\nDetalii donație:\nSumă: {amount} {currency} {interval, select,\n month {pe lună}\n year {pe an}\n other {}\n}\n\nStripe îți va trimite în scurt timp un e-mail separat cu chitanța ta în format PDF. Aceasta include toate detaliile plății și poate fi utilizată în scopuri fiscale.\n\nPoți vizualiza istoricul donațiilor tale, descărca facturi, {interval, select,\n month {și gestiona sau anula abonamentul tău}\n year {și gestiona sau anula abonamentul tău}\n other {și gestiona donațiile viitoare}\n} în orice moment folosind acest link:\n\n{manageUrl}\n\nSuportul tău ajută la menținerea {product_name} în funcțiune. Mulțumim!\n\n– Echipa {product_name}"
},
"donation_magic_link": {
"subject": "Gestionează-ți donațiile pentru {product_name}",
"body": "Salut,\n\nApasă pe linkul de mai jos pentru a accesa portalul tău de donator:\n\n{manageUrl}\n\nÎn portal, poți gestiona abonamentele, descărca facturi și vizualiza istoricul donațiilor tale.\n\nAcest link expiră la data de {expiresAt, date, full} la ora {expiresAt, time, short}.\n\nDacă nu ai solicitat acest link, poți ignora în siguranță acest e-mail.\n\n– Echipa {product_name}"
},
"dsa_report_verification": {
"subject": "Verifică-ți e-mailul pentru un raport DSA",
"body": "Salut,\n\nFolosește codul de verificare de mai jos pentru a trimite raportul tău privind Legea Serviciilor Digitale pe {product_name}:\n\n{code}\n\nAcest cod expiră la data de {expiresAt, date, full} la ora {expiresAt, time, short}.\n\nDacă nu ai solicitat acest lucru, poți ignora acest e-mail.\n\n– Echipa de Siguranță a {product_name}"
},
"email_change_new": {
"subject": "Verifică-ți noul e-mail pentru {product_name}",
"body": "Salut {username},\n\nIntrodu acest cod în aplicație pentru a-ți verifica noul e-mail pentru {product_name}:\n\n{code}\n\nAcest cod expiră la data de {expiresAt, date, full} la ora {expiresAt, time, short}.\n\nDacă nu ai solicitat acest lucru, poți ignora acest e-mail.\n\n– Echipa {product_name}"
},
"email_change_original": {
"subject": "Confirmă schimbarea adresei de e-mail pentru {product_name}",
"body": "Salut {username},\n\nAm primit o solicitare de schimbare a adresei de e-mail a contului tău {product_name}.\n\nPentru a confirma această modificare, introdu acest cod în aplicație:\n\n{code}\n\nAcest cod expiră la data de {expiresAt, date, full} la ora {expiresAt, time, short}.\n\nDacă nu ai solicitat acest lucru, te rugăm să-ți securizezi contul imediat.\n\n– Echipa {product_name}"
},
"email_change_revert": {
"subject": "Adresa de e-mail pentru {product_name} a fost schimbată",
"body": "Salut {username},\n\nAdresa de e-mail a contului tău {product_name} a fost schimbată în {newEmail}.\n\nDacă tu ai făcut această modificare, nu este necesară nicio acțiune. Dacă nu tu ai făcut-o, poți anula modificarea și securiza contul tău folosind acest link:\n\n{revertUrl}\n\nAceasta va restabili e-mailul tău anterior, te va deconecta de peste tot, va elimina numerele de telefon conectate, va dezactiva MFA și îți va cere să setezi o nouă parolă.\n\n– Echipa de Siguranță a {product_name}"
},
"email_verification": {
"subject": "Verifică-ți adresa de e-mail pentru {product_name}",
"body": "Salut {username},\n\nTe rugăm să verifici adresa de e-mail a contului tău {product_name} apăsând pe linkul de mai jos:\n\n{verifyUrl}\n\nDacă nu ai creat un cont {product_name}, poți ignora în siguranță acest e-mail.\n\nAcest link este valabil 24 de ore.\n\n– Echipa {product_name}"
},
"gift_chargeback_notification": {
"subject": "Beneficiile obținute prin cadoul tău răscumpărat au fost eliminate",
"body": "Salut {username},\n\nUn cod cadou pe care l-ai răscumpărat a fost plătit inițial de altcineva. Acea plată a fost ulterior anulată (o rambursare).\n\nDin această cauză, am eliminat beneficiile care au fost adăugate contului tău atunci când ai răscumpărat cadoul.\n\nDacă crezi că aceasta este o greșeală, te rugăm să contactezi echipa noastră de suport și să incluzi orice detalii ai despre codul cadou și când l-ai răscumpărat.\n\n– Echipa {product_name}"
},
"harvest_completed": {
"subject": "Exportul datelor din {product_name} este gata pentru descărcare",
"body": "Salut {username},\n\nExportul datelor tale este gata.\n\nLink de descărcare:\n{downloadUrl}\n\nMesaje incluse: {totalMessages, number}\nDimensiune fișier: {fileSizeMB, number} MB\n\nAcest link expiră la data de {expiresAt, date, full} la ora {expiresAt, time, short}.\n\nDacă nu ai solicitat acest export, te rugăm să-ți schimbi parola imediat și să contactezi echipa noastră de suport.\n\n– Echipa {product_name}"
},
"inactivity_warning": {
"subject": "Contul tău {product_name} va fi șters din cauza inactivității",
"body": "Salut {username},\n\nNu am înregistrat nicio activitate pe contul tău {product_name} de la data de {lastActiveDate, date, full}.\n\nDacă nu te conectezi până la data de {deletionDate, date, full} la ora {deletionDate, time, short}, contul tău va fi șters permanent din cauza inactivității.\n\nConectează-te aici:\n{loginUrl}\n\nDacă ai folosit {product_name} recent, te rugăm să contactezi imediat echipa noastră de suport.\n\n– Echipa {product_name}"
},
"ip_authorization": {
"subject": "Autorizează conectarea de la o nouă adresă IP",
"body": "Salut {username},\n\nAm detectat o tentativă de conectare la contul tău {product_name} de la o nouă adresă IP:\n\nAdresă IP: {ipAddress}\nLocație: {location}\n\nDacă ai fost tu, te rugăm să autorizezi această adresă IP apăsând pe linkul de mai jos:\n\n{authUrl}\n\nDacă nu ai încercat să te conectezi, te rugăm să-ți schimbi parola imediat.\n\nAcest link este valabil 30 de minute.\n\n– Echipa {product_name}"
},
"password_change_verification": {
"subject": "Confirmă schimbarea parolei pentru {product_name}",
"body": "Salut {username},\n\nAm primit o solicitare de schimbare a parolei contului tău {product_name}.\n\nPentru a confirma această modificare, introdu acest cod în aplicație:\n\n{code}\n\nAcest cod expiră la {expiresAt}.\n\nDacă nu ai solicitat acest lucru, cineva ar putea avea acces la contul tău. Schimbă-ți parola imediat și activează autentificarea cu doi factori.\n\n– Echipa {product_name}"
},
"password_reset": {
"subject": "Resetează-ți parola pentru {product_name}",
"body": "Salut {username},\n\nAi solicitat o resetare a parolei pentru {product_name}. Folosește linkul de mai jos pentru a seta o nouă parolă:\n\n{resetUrl}\n\nDacă nu ai solicitat acest lucru, poți ignora în siguranță acest e-mail.\n\nAcest link este valabil 1 oră.\n\n– Echipa {product_name}"
},
"registration_approved": {
"subject": "Înregistrarea ta pentru {product_name} a fost aprobată",
"body": "Salut {username},\n\nVești bune: înregistrarea ta pentru {product_name} a fost aprobată.\n\nAcum te poți conecta la aplicația {product_name} aici:\n{channelsUrl}\n\nBun venit în comunitatea {product_name}.\n\n– Echipa {product_name}"
},
"report_resolved": {
"subject": "Raportul tău privind {product_name} a fost revizuit",
"body": "Salut {username},\n\nRaportul tău (ID: {reportId}) a fost revizuit de Echipa noastră de Siguranță.{hasComment, select, yes {\n\nRăspuns de la Echipa de Siguranță:\n{publicComment}} other {}}\n\nMulțumim că ajuți la menținerea siguranței {product_name} pentru toată lumea. Luăm în serios toate rapoartele și apreciem contribuția ta la comunitate.\n\nDacă ai întrebări sau nelămuriri cu privire la acest rezultat, te rugăm să contactezi {safety_email}.\n\n– Echipa de Siguranță a {product_name}"
},
"scheduled_deletion_notification": {
"subject": "Contul tău de {product_name} va fi șters permanent",
"body": "Salut {username},\n\nContul tău {product_name} a fost programat pentru ștergere permanentă.\n\nȘtergere programată: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motiv: {reason}}\n}\n\nAceasta este o măsură disciplinară serioasă. Datele contului tău vor fi șterse permanent la data programată.\n\nDacă crezi că această decizie de aplicare a fost incorectă, poți depune un apel. Trimite un e-mail la {appeals_email} de la această adresă de e-mail.\n\n– {product_name} Safety Team"
},
"self_deletion_scheduled": {
"subject": "Ștergerea contului {product_name} a fost programată",
"body": "Salut {username},\n\nAi solicitat ștergerea contului tău {product_name}. Contul tău este programat pentru ștergere permanentă la:\n\n{deletionDate, date, full} la ora {deletionDate, time, short}\n\nDacă nu ai solicitat acest lucru, conectează-te la contul tău pentru a anula ștergerea. De asemenea, îți recomandăm să-ți schimbi parola pentru a-ți securiza contul.\n\n– Echipa {product_name}"
},
"unban_notification": {
"subject": "Suspendarea contului {product_name} a fost ridicată",
"body": "Salut {username},\n\nVești bune: suspendarea contului tău {product_name} a fost ridicată.\n\n{reason, select,\n null {}\n other {Motiv: {reason}}\n}\n\nAcum te poți conecta din nou și poți continua să folosești {product_name} în mod normal.\n\n– {product_name} Safety Team"
}
"account_disabled_suspicious": {
"subject": "Contul tău {product_name} a fost dezactivat temporar",
"body": "Salut {username},\n\nAm dezactivat temporar contul tău {product_name} deoarece am detectat activitate suspectă.\n\n{reason, select,\n null {}\n other {Motiv: {reason}}\n}\n\nPentru a recăpăta accesul la contul tău, va trebui să-ți resetezi parola:\n\n{forgotUrl}\n\nDupă ce îți resetezi parola, te vei putea conecta din nou.\n\nDacă crezi că aceasta a fost o eroare, te rugăm să contactezi echipa noastră de suport.\n\n– {product_name} Safety Team"
},
"account_scheduled_deletion": {
"subject": "Contul tău de {product_name} va fi șters permanent",
"body": "Salut {username},\n\nContul tău {product_name} a fost programat pentru ștergere permanentă din cauza încălcării Termenilor și Condițiilor sau a Ghidului Comunității noastre.\n\nȘtergere programată: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motiv: {reason}}\n}\n\nAceasta este o măsură disciplinară serioasă. Datele contului tău vor fi șterse permanent la data programată.\n\nTe rugăm să revizuiești:\n- Termeni și Condiții: {termsUrl}\n- Ghidul Comunității: {guidelinesUrl}\n\nProcesul de apel:\nDacă crezi că această decizie de aplicare a fost incorectă sau nejustificată, ai la dispoziție 60 de zile pentru a depune un apel. Trimite un e-mail la {appeals_email} de la această adresă de e-mail.\n\nÎn apelul tău:\n- Explică clar de ce crezi că decizia de aplicare a fost incorectă sau nejustificată\n- Furnizează orice dovezi sau context relevante\n\nUn membru al Echipei de Siguranță {product_name} va examina apelul tău și poate întrerupe ștergerea în așteptare până la luarea unei decizii finale.\n\n– {product_name} Safety Team"
},
"account_temp_banned": {
"subject": "Contul tău {product_name} a fost suspendat temporar",
"body": "Salut {username},\n\nContul tău {product_name} a fost suspendat temporar pentru încălcarea Termenilor și Condițiilor sau a Ghidului Comunității noastre.\n\nDurată: {durationHours, plural,\n one {1 oră} few {ore}\n other {# de ore}\n}\nSuspendat până la: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Motiv: {reason}}\n}\n\nÎn acest timp, nu vei putea accesa contul tău.\n\nTe rugăm să revizuiești:\n- Termeni și Condiții: {termsUrl}\n- Ghidul Comunității: {guidelinesUrl}\n\nDacă crezi că această decizie a fost incorectă sau nejustificată, poți depune un apel. Trimite un e-mail la {appeals_email} de la această adresă de e-mail și explică clar de ce crezi că decizia a fost incorectă. Vom examina apelul tău și vom răspunde cu decizia noastră.\n\n– {product_name} Safety Team Safety Team"
},
"donation_confirmation": {
"subject": "Îți mulțumim pentru donația ta pentru {product_name}",
"body": "Salut,\n\nÎți mulțumim pentru donația ta către {product_name}! {interval, select,\n month {Donația ta recurentă}\n year {Donația ta recurentă}\n other {Donația ta unică}\n} a fost {interval, select,\n month {configurată}\n year {configurată}\n other {procesată}\n} cu succes.\n\nDetalii donație:\nSumă: {amount} {currency} {interval, select,\n month {pe lună}\n year {pe an}\n other {}\n}\n\nStripe îți va trimite în scurt timp un e-mail separat cu chitanța ta în format PDF. Aceasta include toate detaliile plății și poate fi utilizată în scopuri fiscale.\n\nPoți vizualiza istoricul donațiilor tale, descărca facturi, {interval, select,\n month {și gestiona sau anula abonamentul tău}\n year {și gestiona sau anula abonamentul tău}\n other {și gestiona donațiile viitoare}\n} în orice moment folosind acest link:\n\n{manageUrl}\n\nSuportul tău ajută la menținerea {product_name} în funcțiune. Mulțumim!\n\n– Echipa {product_name}"
},
"donation_magic_link": {
"subject": "Gestionează-ți donațiile pentru {product_name}",
"body": "Salut,\n\nApasă pe linkul de mai jos pentru a accesa portalul tău de donator:\n\n{manageUrl}\n\nÎn portal, poți gestiona abonamentele, descărca facturi și vizualiza istoricul donațiilor tale.\n\nAcest link expiră la data de {expiresAt, date, full} la ora {expiresAt, time, short}.\n\nDacă nu ai solicitat acest link, poți ignora în siguranță acest e-mail.\n\n– Echipa {product_name}"
},
"dsa_report_verification": {
"subject": "Verifică-ți e-mailul pentru un raport DSA",
"body": "Salut,\n\nFolosește codul de verificare de mai jos pentru a trimite raportul tău privind Legea Serviciilor Digitale pe {product_name}:\n\n{code}\n\nAcest cod expiră la data de {expiresAt, date, full} la ora {expiresAt, time, short}.\n\nDacă nu ai solicitat acest lucru, poți ignora acest e-mail.\n\n– Echipa de Siguranță a {product_name}"
},
"email_change_new": {
"subject": "Verifică-ți noul e-mail pentru {product_name}",
"body": "Salut {username},\n\nIntrodu acest cod în aplicație pentru a-ți verifica noul e-mail pentru {product_name}:\n\n{code}\n\nAcest cod expiră la data de {expiresAt, date, full} la ora {expiresAt, time, short}.\n\nDacă nu ai solicitat acest lucru, poți ignora acest e-mail.\n\n– Echipa {product_name}"
},
"email_change_original": {
"subject": "Confirmă schimbarea adresei de e-mail pentru {product_name}",
"body": "Salut {username},\n\nAm primit o solicitare de schimbare a adresei de e-mail a contului tău {product_name}.\n\nPentru a confirma această modificare, introdu acest cod în aplicație:\n\n{code}\n\nAcest cod expiră la data de {expiresAt, date, full} la ora {expiresAt, time, short}.\n\nDacă nu ai solicitat acest lucru, te rugăm să-ți securizezi contul imediat.\n\n– Echipa {product_name}"
},
"email_change_revert": {
"subject": "Adresa de e-mail pentru {product_name} a fost schimbată",
"body": "Salut {username},\n\nAdresa de e-mail a contului tău {product_name} a fost schimbată în {newEmail}.\n\nDacă tu ai făcut această modificare, nu este necesară nicio acțiune. Dacă nu tu ai făcut-o, poți anula modificarea și securiza contul tău folosind acest link:\n\n{revertUrl}\n\nAceasta va restabili e-mailul tău anterior, te va deconecta de peste tot, va elimina numerele de telefon conectate, va dezactiva MFA și îți va cere să setezi o nouă parolă.\n\n– Echipa de Siguranță a {product_name}"
},
"email_verification": {
"subject": "Verifică-ți adresa de e-mail pentru {product_name}",
"body": "Salut {username},\n\nTe rugăm să verifici adresa de e-mail a contului tău {product_name} apăsând pe linkul de mai jos:\n\n{verifyUrl}\n\nDacă nu ai creat un cont {product_name}, poți ignora în siguranță acest e-mail.\n\nAcest link este valabil 24 de ore.\n\n– Echipa {product_name}"
},
"gift_chargeback_notification": {
"subject": "Beneficiile obținute prin cadoul tău răscumpărat au fost eliminate",
"body": "Salut {username},\n\nUn cod cadou pe care l-ai răscumpărat a fost plătit inițial de altcineva. Acea plată a fost ulterior anulată (o rambursare).\n\nDin această cauză, am eliminat beneficiile care au fost adăugate contului tău atunci când ai răscumpărat cadoul.\n\nDacă crezi că aceasta este o greșeală, te rugăm să contactezi echipa noastră de suport și să incluzi orice detalii ai despre codul cadou și când l-ai răscumpărat.\n\n– Echipa {product_name}"
},
"harvest_completed": {
"subject": "Exportul datelor din {product_name} este gata pentru descărcare",
"body": "Salut {username},\n\nExportul datelor tale este gata.\n\nLink de descărcare:\n{downloadUrl}\n\nMesaje incluse: {totalMessages, number}\nDimensiune fișier: {fileSizeMB, number} MB\n\nAcest link expiră la data de {expiresAt, date, full} la ora {expiresAt, time, short}.\n\nDacă nu ai solicitat acest export, te rugăm să-ți schimbi parola imediat și să contactezi echipa noastră de suport.\n\n– Echipa {product_name}"
},
"inactivity_warning": {
"subject": "Contul tău {product_name} va fi șters din cauza inactivității",
"body": "Salut {username},\n\nNu am înregistrat nicio activitate pe contul tău {product_name} de la data de {lastActiveDate, date, full}.\n\nDacă nu te conectezi până la data de {deletionDate, date, full} la ora {deletionDate, time, short}, contul tău va fi șters permanent din cauza inactivității.\n\nConectează-te aici:\n{loginUrl}\n\nDacă ai folosit {product_name} recent, te rugăm să contactezi imediat echipa noastră de suport.\n\n– Echipa {product_name}"
},
"ip_authorization": {
"subject": "Autorizează conectarea de la o nouă adresă IP",
"body": "Salut {username},\n\nAm detectat o tentativă de conectare la contul tău {product_name} de la o nouă adresă IP:\n\nAdresă IP: {ipAddress}\nLocație: {location}\n\nDacă ai fost tu, te rugăm să autorizezi această adresă IP apăsând pe linkul de mai jos:\n\n{authUrl}\n\nDacă nu ai încercat să te conectezi, te rugăm să-ți schimbi parola imediat.\n\nAcest link este valabil 30 de minute.\n\n– Echipa {product_name}"
},
"password_change_verification": {
"subject": "Confirmă schimbarea parolei pentru {product_name}",
"body": "Salut {username},\n\nAm primit o solicitare de schimbare a parolei contului tău {product_name}.\n\nPentru a confirma această modificare, introdu acest cod în aplicație:\n\n{code}\n\nAcest cod expiră la {expiresAt}.\n\nDacă nu ai solicitat acest lucru, cineva ar putea avea acces la contul tău. Schimbă-ți parola imediat și activează autentificarea cu doi factori.\n\n– Echipa {product_name}"
},
"password_reset": {
"subject": "Resetează-ți parola pentru {product_name}",
"body": "Salut {username},\n\nAi solicitat o resetare a parolei pentru {product_name}. Folosește linkul de mai jos pentru a seta o nouă parolă:\n\n{resetUrl}\n\nDacă nu ai solicitat acest lucru, poți ignora în siguranță acest e-mail.\n\nAcest link este valabil 1 oră.\n\n– Echipa {product_name}"
},
"registration_approved": {
"subject": "Înregistrarea ta pentru {product_name} a fost aprobată",
"body": "Salut {username},\n\nVești bune: înregistrarea ta pentru {product_name} a fost aprobată.\n\nAcum te poți conecta la aplicația {product_name} aici:\n{channelsUrl}\n\nBun venit în comunitatea {product_name}.\n\n– Echipa {product_name}"
},
"report_resolved": {
"subject": "Raportul tău privind {product_name} a fost revizuit",
"body": "Salut {username},\n\nRaportul tău (ID: {reportId}) a fost revizuit de Echipa noastră de Siguranță.{hasComment, select, yes {\n\nRăspuns de la Echipa de Siguranță:\n{publicComment}} other {}}\n\nMulțumim că ajuți la menținerea siguranței {product_name} pentru toată lumea. Luăm în serios toate rapoartele și apreciem contribuția ta la comunitate.\n\nDacă ai întrebări sau nelămuriri cu privire la acest rezultat, te rugăm să contactezi {safety_email}.\n\n– Echipa de Siguranță a {product_name}"
},
"scheduled_deletion_notification": {
"subject": "Contul tău de {product_name} va fi șters permanent",
"body": "Salut {username},\n\nContul tău {product_name} a fost programat pentru ștergere permanentă.\n\nȘtergere programată: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motiv: {reason}}\n}\n\nAceasta este o măsură disciplinară serioasă. Datele contului tău vor fi șterse permanent la data programată.\n\nDacă crezi că această decizie de aplicare a fost incorectă, poți depune un apel. Trimite un e-mail la {appeals_email} de la această adresă de e-mail.\n\n– {product_name} Safety Team"
},
"self_deletion_scheduled": {
"subject": "Ștergerea contului {product_name} a fost programată",
"body": "Salut {username},\n\nAi solicitat ștergerea contului tău {product_name}. Contul tău este programat pentru ștergere permanentă la:\n\n{deletionDate, date, full} la ora {deletionDate, time, short}\n\nDacă nu ai solicitat acest lucru, conectează-te la contul tău pentru a anula ștergerea. De asemenea, îți recomandăm să-ți schimbi parola pentru a-ți securiza contul.\n\n– Echipa {product_name}"
},
"unban_notification": {
"subject": "Suspendarea contului {product_name} a fost ridicată",
"body": "Salut {username},\n\nVești bune: suspendarea contului tău {product_name} a fost ridicată.\n\n{reason, select,\n null {}\n other {Motiv: {reason}}\n}\n\nAcum te poți conecta din nou și poți continua să folosești {product_name} în mod normal.\n\n– {product_name} Safety Team"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "Твой аккаунт {product_name} временно отключён",
"body": "Привет, {username},\n\nМы временно отключили твой аккаунт {product_name}, так как обнаружили подозрительную активность.\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nЧтобы восстановить доступ к аккаунту, тебе нужно сбросить пароль:\n\n{forgotUrl}\n\nПосле сброса пароля ты сможешь снова войти в аккаунт.\n\nЕсли ты считаешь, что это ошибка, пожалуйста, свяжись с нашей службой поддержки.\n\n– Команда безопасности {product_name}"
},
"account_scheduled_deletion": {
"subject": "Твой аккаунт {product_name} будет безвозвратно удалён",
"body": "Привет, {username},\n\nТвой аккаунт {product_name} запланирован к безвозвратному удалению из-за нарушения наших Условий использования или Правил сообщества.\n\nЗапланированное удаление: {deletionDate, date, full} в {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nЭто серьёзная мера. Данные твоего аккаунта будут безвозвратно удалены в запланированную дату.\n\nПожалуйста, ознакомься:\n- Условия использования: {termsUrl}\n- Правила сообщества: {guidelinesUrl}\n\nПроцесс апелляции:\nЕсли ты считаешь, что это решение было неверным или необоснованным, у тебя есть 60 дней, чтобы подать апелляцию. Отправь письмо на {appeals_email} с этого адреса электронной почты.\n\nВ своей апелляции:\n- Чётко объясни, почему ты считаешь, что решение было неверным или необоснованным\n- Предоставь любые соответствующие доказательства или контекст\n\nСотрудник Команды безопасности {product_name} рассмотрит твою апелляцию и может приостановить запланированное удаление до принятия окончательного решения.\n\n– Команда безопасности {product_name}"
},
"account_temp_banned": {
"subject": "Твой аккаунт {product_name} временно заблокирован",
"body": "Привет, {username},\n\nТвой аккаунт {product_name} временно заблокирован за нарушение наших Условий использования или Правил сообщества.\n\nДлительность: {durationHours, plural,\n one {1 час} few {# часа}\n many {# часов} other {# часа}\n}\nЗаблокирован до: {bannedUntil, date, full} в {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nВ течение этого времени ты не сможешь получить доступ к своему аккаунту.\n\nПожалуйста, ознакомься:\n- Условия использования: {termsUrl}\n- Правила сообщества: {guidelinesUrl}\n\nЕсли ты считаешь, что это решение было неверным или необоснованным, ты можешь подать апелляцию. Отправь письмо на {appeals_email} с этого адреса электронной почты и чётко объясни, почему ты считаешь решение неверным. Мы рассмотрим твою апелляцию и сообщим о нашем решении.\n\n– Команда безопасности {product_name}"
},
"donation_confirmation": {
"subject": "Спасибо за твоё пожертвование для {product_name}",
"body": "Привет,\n\nСпасибо за твоё пожертвование для {product_name}! Твоё {interval, select,\n month {регулярное пожертвование}\n year {регулярное пожертвование}\n other {единоразовое пожертвование}\n} было {interval, select,\n month {настроено}\n year {настроено}\n other {обработано}\n} успешно.\n\nДетали пожертвования:\nСумма: {amount} {currency} {interval, select,\n month {в месяц}\n year {в год}\n other {}\n}\n\nStripe вскоре отправит тебе отдельную квитанцию в формате PDF со всеми платежными данными, которую можно использовать для налоговых целей.\n\nТы можешь просмотреть историю своих пожертвований, скачать квитанции, {interval, select,\n month {а также управлять подпиской или отменить её}\n year {а также управлять подпиской или отменить её}\n other {и управлять будущими пожертвованиями}\n} в любое время по этой ссылке:\n\n{manageUrl}\n\nТвоя поддержка помогает {product_name} работать. Спасибо!\n\n– Команда {product_name}"
},
"donation_magic_link": {
"subject": "Управляй своими пожертвованиями для {product_name}",
"body": "Привет,\n\nПерейди по ссылке ниже, чтобы получить доступ к порталу пожертвований:\n\n{manageUrl}\n\nНа портале ты можешь управлять подписками, скачивать квитанции и просматривать историю своих пожертвований.\n\nЭта ссылка истекает {expiresAt, date, full} в {expiresAt, time, short}.\n\nЕсли ты не запрашивал эту ссылку, можешь смело проигнорировать это письмо.\n\n– Команда {product_name}"
},
"dsa_report_verification": {
"subject": "Подтверди свой адрес электронной почты для отчёта DSA",
"body": "Привет,\n\nИспользуй код подтверждения ниже, чтобы отправить свой отчёт DSA по {product_name}:\n\n{code}\n\nЭтот код истекает {expiresAt, date, full} в {expiresAt, time, short}.\n\nЕсли ты не запрашивал это, можешь смело проигнорировать это письмо.\n\n– Команда безопасности {product_name}"
},
"email_change_new": {
"subject": "Подтверди новый адрес электронной почты для {product_name}",
"body": "Привет, {username},\n\nВведи этот код в приложении, чтобы подтвердить свой новый адрес электронной почты в {product_name}:\n\n{code}\n\nЭтот код истекает {expiresAt, date, full} в {expiresAt, time, short}.\n\nЕсли ты не запрашивал это, можешь смело проигнорировать это письмо.\n\n– Команда {product_name}"
},
"email_change_original": {
"subject": "Подтверди изменение адреса электронной почты для {product_name}",
"body": "Привет, {username},\n\nМы получили запрос на изменение адреса электронной почты твоего аккаунта {product_name}.\n\nЧтобы подтвердить это изменение, введи этот код в приложении:\n\n{code}\n\nЭтот код истекает {expiresAt, date, full} в {expiresAt, time, short}.\n\nЕсли ты не запрашивал это, пожалуйста, срочно защити свой аккаунт.\n\n– Команда {product_name}"
},
"email_change_revert": {
"subject": "Адрес электронной почты твоего аккаунта {product_name} был изменён",
"body": "Привет, {username},\n\nАдрес электронной почты твоего аккаунта {product_name} был изменён на {newEmail}.\n\nЕсли ты сделал это изменение, никаких действий не требуется. Если нет, ты можешь отменить изменение и защитить свой аккаунт по этой ссылке:\n\n{revertUrl}\n\nЭто восстановит твой предыдущий адрес электронной почты, выйдет из всех твоих сессий, удалит привязанные номера телефонов, отключит MFA и потребует установки нового пароля.\n\n– Команда безопасности {product_name}"
},
"email_verification": {
"subject": "Подтверди адрес электронной почты для {product_name}",
"body": "Привет, {username},\n\nПожалуйста, подтверди адрес электронной почты своего аккаунта {product_name}, нажав на ссылку ниже:\n\n{verifyUrl}\n\nЕсли ты не создавал аккаунт {product_name}, можешь проигнорировать это письмо.\n\nЭта ссылка действительна в течение 24 часов.\n\n– Команда {product_name}"
},
"gift_chargeback_notification": {
"subject": "Привилегии за активированный подарок были удалены",
"body": "Привет, {username},\n\nПодарочный код, который ты активировал, изначально был оплачен другим человеком. Этот платёж был отменён (возвратный платёж).\n\nИз-за этого мы удалили бонусы, которые были добавлены в твой аккаунт при активации подарка.\n\nЕсли ты считаешь, что это ошибка, пожалуйста, свяжись с нашей службой поддержки и укажи все имеющиеся детали о подарочном коде и дате его активации.\n\n– Команда {product_name}"
},
"harvest_completed": {
"subject": "Твой экспорт данных аккаунта {product_name} готов к скачиванию",
"body": "Привет, {username},\n\nТвой экспорт данных готов.\n\nСсылка для скачивания:\n{downloadUrl}\n\nСообщений включено: {totalMessages, number}\nРазмер файла: {fileSizeMB, number} МБ\n\nЭта ссылка истекает {expiresAt, date, full} в {expiresAt, time, short}.\n\nЕсли ты не запрашивал этот экспорт, пожалуйста, немедленно смени пароль и свяжись с нашей службой поддержки.\n\n– Команда {product_name}"
},
"inactivity_warning": {
"subject": "Твой аккаунт {product_name} будет удалён из-за неактивности",
"body": "Привет, {username},\n\nМы не видели никакой активности в твоём аккаунте {product_name} после {lastActiveDate, date, full}.\n\nЕсли ты не войдёшь в систему до {deletionDate, date, full} в {deletionDate, time, short}, твой аккаунт будет безвозвратно удалён из-за неактивности.\n\nВойди здесь:\n{loginUrl}\n\nЕсли ты недавно пользовался {product_name}, пожалуйста, немедленно свяжись с нашей службой поддержки.\n\n– Команда {product_name}"
},
"ip_authorization": {
"subject": "Подтверди вход с нового IP-адреса",
"body": "Привет, {username},\n\nМы обнаружили попытку входа в твой аккаунт {product_name} с нового IP-адреса:\n\nIP-адрес: {ipAddress}\nМестоположение: {location}\n\nЕсли это был ты, пожалуйста, подтверди этот IP-адрес, нажав на ссылку ниже:\n\n{authUrl}\n\nЕсли ты не пытался войти, пожалуйста, немедленно смени пароль.\n\nЭта ссылка действительна в течение 30 минут.\n\n– Команда {product_name}"
},
"password_change_verification": {
"subject": "Подтверди смену пароля для {product_name}",
"body": "Привет, {username},\n\nМы получили запрос на изменение пароля твоего аккаунта {product_name}.\n\nЧтобы подтвердить это изменение, введи этот код в приложении:\n\n{code}\n\nЭтот код истекает в {expiresAt}.\n\nЕсли ты не запрашивал это, возможно, кто-то получил доступ к твоему аккаунту. Немедленно смени пароль и включи двухфакторную аутентификацию.\n\n– Команда {product_name}"
},
"password_reset": {
"subject": "Сбрось свой пароль для {product_name}",
"body": "Привет, {username},\n\nТы запросил сброс пароля в {product_name}. Используй ссылку ниже, чтобы установить новый пароль:\n\n{resetUrl}\n\nЕсли ты не запрашивал это, можешь смело проигнорировать это письмо.\n\nЭта ссылка действительна в течение 1 часа.\n\n– Команда {product_name}"
},
"registration_approved": {
"subject": "Твоя регистрация на {product_name} одобрена",
"body": "Привет, {username},\n\nХорошие новости: твоя регистрация в {product_name} одобрена.\n\nТеперь ты можешь войти в приложение {product_name} здесь:\n{channelsUrl}\n\nДобро пожаловать в сообщество {product_name}.\n\n– Команда {product_name}"
},
"report_resolved": {
"subject": "Твоя жалоба по {product_name} рассмотрена",
"body": "Привет, {username},\n\nТвоя жалоба (ID: {reportId}) была рассмотрена нашей Командой безопасности.{hasComment, select, yes {\n\nОтвет от Команды безопасности:\n{publicComment}} other {}}\n\nСпасибо за помощь в обеспечении безопасности {product_name} для всех. Мы серьёзно подходим к рассмотрению всех жалоб и ценим твой вклад в сообщество.\n\nЕсли у тебя есть вопросы или опасения по поводу этого результата, пожалуйста, свяжись с {safety_email}.\n\n– Команда безопасности {product_name}"
},
"scheduled_deletion_notification": {
"subject": "Твой аккаунт {product_name} будет безвозвратно удалён",
"body": "Привет, {username},\n\nТвой аккаунт {product_name} запланирован к безвозвратному удалению.\n\nЗапланированное удаление: {deletionDate, date, full} в {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nЭто серьёзная мера. Данные твоего аккаунта будут безвозвратно удалены в запланированную дату.\n\nЕсли ты считаешь, что это решение было неверным, ты можешь подать апелляцию. Отправь письмо на {appeals_email} с этого адреса электронной почты.\n\n– Команда безопасности {product_name}"
},
"self_deletion_scheduled": {
"subject": "Запланировано удаление твоего аккаунта {product_name}",
"body": "Привет, {username},\n\nТы запросил удаление своего аккаунта {product_name}. Твой аккаунт запланирован к безвозвратному удалению:\n\n{deletionDate, date, full} в {deletionDate, time, short}\n\nЕсли ты не запрашивал это, войди в свой аккаунт, чтобы отменить удаление. Также рекомендуем сменить пароль, чтобы защитить свой аккаунт.\n\n– Команда {product_name}"
},
"unban_notification": {
"subject": "Блокировка твоего аккаунта {product_name} снята",
"body": "Привет, {username},\n\nХорошие новости: блокировка твоего аккаунта {product_name} снята.\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nТеперь ты можешь снова войти в систему и продолжить использовать {product_name} как обычно.\n\n– Команда безопасности {product_name}"
}
"account_disabled_suspicious": {
"subject": "Твой аккаунт {product_name} временно отключён",
"body": "Привет, {username},\n\nМы временно отключили твой аккаунт {product_name}, так как обнаружили подозрительную активность.\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nЧтобы восстановить доступ к аккаунту, тебе нужно сбросить пароль:\n\n{forgotUrl}\n\nПосле сброса пароля ты сможешь снова войти в аккаунт.\n\nЕсли ты считаешь, что это ошибка, пожалуйста, свяжись с нашей службой поддержки.\n\n– Команда безопасности {product_name}"
},
"account_scheduled_deletion": {
"subject": "Твой аккаунт {product_name} будет безвозвратно удалён",
"body": "Привет, {username},\n\nТвой аккаунт {product_name} запланирован к безвозвратному удалению из-за нарушения наших Условий использования или Правил сообщества.\n\nЗапланированное удаление: {deletionDate, date, full} в {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nЭто серьёзная мера. Данные твоего аккаунта будут безвозвратно удалены в запланированную дату.\n\nПожалуйста, ознакомься:\n- Условия использования: {termsUrl}\n- Правила сообщества: {guidelinesUrl}\n\nПроцесс апелляции:\nЕсли ты считаешь, что это решение было неверным или необоснованным, у тебя есть 60 дней, чтобы подать апелляцию. Отправь письмо на {appeals_email} с этого адреса электронной почты.\n\nВ своей апелляции:\n- Чётко объясни, почему ты считаешь, что решение было неверным или необоснованным\n- Предоставь любые соответствующие доказательства или контекст\n\nСотрудник Команды безопасности {product_name} рассмотрит твою апелляцию и может приостановить запланированное удаление до принятия окончательного решения.\n\n– Команда безопасности {product_name}"
},
"account_temp_banned": {
"subject": "Твой аккаунт {product_name} временно заблокирован",
"body": "Привет, {username},\n\nТвой аккаунт {product_name} временно заблокирован за нарушение наших Условий использования или Правил сообщества.\n\nДлительность: {durationHours, plural,\n one {1 час} few {# часа}\n many {# часов} other {# часа}\n}\nЗаблокирован до: {bannedUntil, date, full} в {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nВ течение этого времени ты не сможешь получить доступ к своему аккаунту.\n\nПожалуйста, ознакомься:\n- Условия использования: {termsUrl}\n- Правила сообщества: {guidelinesUrl}\n\nЕсли ты считаешь, что это решение было неверным или необоснованным, ты можешь подать апелляцию. Отправь письмо на {appeals_email} с этого адреса электронной почты и чётко объясни, почему ты считаешь решение неверным. Мы рассмотрим твою апелляцию и сообщим о нашем решении.\n\n– Команда безопасности {product_name}"
},
"donation_confirmation": {
"subject": "Спасибо за твоё пожертвование для {product_name}",
"body": "Привет,\n\nСпасибо за твоё пожертвование для {product_name}! Твоё {interval, select,\n month {регулярное пожертвование}\n year {регулярное пожертвование}\n other {единоразовое пожертвование}\n} было {interval, select,\n month {настроено}\n year {настроено}\n other {обработано}\n} успешно.\n\nДетали пожертвования:\nСумма: {amount} {currency} {interval, select,\n month {в месяц}\n year {в год}\n other {}\n}\n\nStripe вскоре отправит тебе отдельную квитанцию в формате PDF со всеми платежными данными, которую можно использовать для налоговых целей.\n\nТы можешь просмотреть историю своих пожертвований, скачать квитанции, {interval, select,\n month {а также управлять подпиской или отменить её}\n year {а также управлять подпиской или отменить её}\n other {и управлять будущими пожертвованиями}\n} в любое время по этой ссылке:\n\n{manageUrl}\n\nТвоя поддержка помогает {product_name} работать. Спасибо!\n\n– Команда {product_name}"
},
"donation_magic_link": {
"subject": "Управляй своими пожертвованиями для {product_name}",
"body": "Привет,\n\nПерейди по ссылке ниже, чтобы получить доступ к порталу пожертвований:\n\n{manageUrl}\n\nНа портале ты можешь управлять подписками, скачивать квитанции и просматривать историю своих пожертвований.\n\nЭта ссылка истекает {expiresAt, date, full} в {expiresAt, time, short}.\n\nЕсли ты не запрашивал эту ссылку, можешь смело проигнорировать это письмо.\n\n– Команда {product_name}"
},
"dsa_report_verification": {
"subject": "Подтверди свой адрес электронной почты для отчёта DSA",
"body": "Привет,\n\nИспользуй код подтверждения ниже, чтобы отправить свой отчёт DSA по {product_name}:\n\n{code}\n\nЭтот код истекает {expiresAt, date, full} в {expiresAt, time, short}.\n\nЕсли ты не запрашивал это, можешь смело проигнорировать это письмо.\n\n– Команда безопасности {product_name}"
},
"email_change_new": {
"subject": "Подтверди новый адрес электронной почты для {product_name}",
"body": "Привет, {username},\n\nВведи этот код в приложении, чтобы подтвердить свой новый адрес электронной почты в {product_name}:\n\n{code}\n\nЭтот код истекает {expiresAt, date, full} в {expiresAt, time, short}.\n\nЕсли ты не запрашивал это, можешь смело проигнорировать это письмо.\n\n– Команда {product_name}"
},
"email_change_original": {
"subject": "Подтверди изменение адреса электронной почты для {product_name}",
"body": "Привет, {username},\n\nМы получили запрос на изменение адреса электронной почты твоего аккаунта {product_name}.\n\nЧтобы подтвердить это изменение, введи этот код в приложении:\n\n{code}\n\nЭтот код истекает {expiresAt, date, full} в {expiresAt, time, short}.\n\nЕсли ты не запрашивал это, пожалуйста, срочно защити свой аккаунт.\n\n– Команда {product_name}"
},
"email_change_revert": {
"subject": "Адрес электронной почты твоего аккаунта {product_name} был изменён",
"body": "Привет, {username},\n\nАдрес электронной почты твоего аккаунта {product_name} был изменён на {newEmail}.\n\nЕсли ты сделал это изменение, никаких действий не требуется. Если нет, ты можешь отменить изменение и защитить свой аккаунт по этой ссылке:\n\n{revertUrl}\n\nЭто восстановит твой предыдущий адрес электронной почты, выйдет из всех твоих сессий, удалит привязанные номера телефонов, отключит MFA и потребует установки нового пароля.\n\n– Команда безопасности {product_name}"
},
"email_verification": {
"subject": "Подтверди адрес электронной почты для {product_name}",
"body": "Привет, {username},\n\nПожалуйста, подтверди адрес электронной почты своего аккаунта {product_name}, нажав на ссылку ниже:\n\n{verifyUrl}\n\nЕсли ты не создавал аккаунт {product_name}, можешь проигнорировать это письмо.\n\nЭта ссылка действительна в течение 24 часов.\n\n– Команда {product_name}"
},
"gift_chargeback_notification": {
"subject": "Привилегии за активированный подарок были удалены",
"body": "Привет, {username},\n\nПодарочный код, который ты активировал, изначально был оплачен другим человеком. Этот платёж был отменён (возвратный платёж).\n\nИз-за этого мы удалили бонусы, которые были добавлены в твой аккаунт при активации подарка.\n\nЕсли ты считаешь, что это ошибка, пожалуйста, свяжись с нашей службой поддержки и укажи все имеющиеся детали о подарочном коде и дате его активации.\n\n– Команда {product_name}"
},
"harvest_completed": {
"subject": "Твой экспорт данных аккаунта {product_name} готов к скачиванию",
"body": "Привет, {username},\n\nТвой экспорт данных готов.\n\nСсылка для скачивания:\n{downloadUrl}\n\nСообщений включено: {totalMessages, number}\nРазмер файла: {fileSizeMB, number} МБ\n\nЭта ссылка истекает {expiresAt, date, full} в {expiresAt, time, short}.\n\nЕсли ты не запрашивал этот экспорт, пожалуйста, немедленно смени пароль и свяжись с нашей службой поддержки.\n\n– Команда {product_name}"
},
"inactivity_warning": {
"subject": "Твой аккаунт {product_name} будет удалён из-за неактивности",
"body": "Привет, {username},\n\nМы не видели никакой активности в твоём аккаунте {product_name} после {lastActiveDate, date, full}.\n\nЕсли ты не войдёшь в систему до {deletionDate, date, full} в {deletionDate, time, short}, твой аккаунт будет безвозвратно удалён из-за неактивности.\n\nВойди здесь:\n{loginUrl}\n\nЕсли ты недавно пользовался {product_name}, пожалуйста, немедленно свяжись с нашей службой поддержки.\n\n– Команда {product_name}"
},
"ip_authorization": {
"subject": "Подтверди вход с нового IP-адреса",
"body": "Привет, {username},\n\nМы обнаружили попытку входа в твой аккаунт {product_name} с нового IP-адреса:\n\nIP-адрес: {ipAddress}\nМестоположение: {location}\n\nЕсли это был ты, пожалуйста, подтверди этот IP-адрес, нажав на ссылку ниже:\n\n{authUrl}\n\nЕсли ты не пытался войти, пожалуйста, немедленно смени пароль.\n\nЭта ссылка действительна в течение 30 минут.\n\n– Команда {product_name}"
},
"password_change_verification": {
"subject": "Подтверди смену пароля для {product_name}",
"body": "Привет, {username},\n\nМы получили запрос на изменение пароля твоего аккаунта {product_name}.\n\nЧтобы подтвердить это изменение, введи этот код в приложении:\n\n{code}\n\nЭтот код истекает в {expiresAt}.\n\nЕсли ты не запрашивал это, возможно, кто-то получил доступ к твоему аккаунту. Немедленно смени пароль и включи двухфакторную аутентификацию.\n\n– Команда {product_name}"
},
"password_reset": {
"subject": "Сбрось свой пароль для {product_name}",
"body": "Привет, {username},\n\nТы запросил сброс пароля в {product_name}. Используй ссылку ниже, чтобы установить новый пароль:\n\n{resetUrl}\n\nЕсли ты не запрашивал это, можешь смело проигнорировать это письмо.\n\nЭта ссылка действительна в течение 1 часа.\n\n– Команда {product_name}"
},
"registration_approved": {
"subject": "Твоя регистрация на {product_name} одобрена",
"body": "Привет, {username},\n\nХорошие новости: твоя регистрация в {product_name} одобрена.\n\nТеперь ты можешь войти в приложение {product_name} здесь:\n{channelsUrl}\n\nДобро пожаловать в сообщество {product_name}.\n\n– Команда {product_name}"
},
"report_resolved": {
"subject": "Твоя жалоба по {product_name} рассмотрена",
"body": "Привет, {username},\n\nТвоя жалоба (ID: {reportId}) была рассмотрена нашей Командой безопасности.{hasComment, select, yes {\n\nОтвет от Команды безопасности:\n{publicComment}} other {}}\n\nСпасибо за помощь в обеспечении безопасности {product_name} для всех. Мы серьёзно подходим к рассмотрению всех жалоб и ценим твой вклад в сообщество.\n\nЕсли у тебя есть вопросы или опасения по поводу этого результата, пожалуйста, свяжись с {safety_email}.\n\n– Команда безопасности {product_name}"
},
"scheduled_deletion_notification": {
"subject": "Твой аккаунт {product_name} будет безвозвратно удалён",
"body": "Привет, {username},\n\nТвой аккаунт {product_name} запланирован к безвозвратному удалению.\n\nЗапланированное удаление: {deletionDate, date, full} в {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nЭто серьёзная мера. Данные твоего аккаунта будут безвозвратно удалены в запланированную дату.\n\nЕсли ты считаешь, что это решение было неверным, ты можешь подать апелляцию. Отправь письмо на {appeals_email} с этого адреса электронной почты.\n\n– Команда безопасности {product_name}"
},
"self_deletion_scheduled": {
"subject": "Запланировано удаление твоего аккаунта {product_name}",
"body": "Привет, {username},\n\nТы запросил удаление своего аккаунта {product_name}. Твой аккаунт запланирован к безвозвратному удалению:\n\n{deletionDate, date, full} в {deletionDate, time, short}\n\nЕсли ты не запрашивал это, войди в свой аккаунт, чтобы отменить удаление. Также рекомендуем сменить пароль, чтобы защитить свой аккаунт.\n\n– Команда {product_name}"
},
"unban_notification": {
"subject": "Блокировка твоего аккаунта {product_name} снята",
"body": "Привет, {username},\n\nХорошие новости: блокировка твоего аккаунта {product_name} снята.\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nТеперь ты можешь снова войти в систему и продолжить использовать {product_name} как обычно.\n\n– Команда безопасности {product_name}"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "Ditt {product_name}-konto har tillfälligt inaktiverats",
"body": "Hej {username},\n\nVi har tillfälligt inaktiverat ditt {product_name}-konto eftersom vi upptäckte misstänkt aktivitet.\n\n{reason, select,\n null {}\n other {Anledning: {reason}}\n}\n\nFör att återfå åtkomst till ditt konto måste du återställa ditt lösenord:\n\n{forgotUrl}\n\nEfter att du har återställt ditt lösenord kan du logga in igen.\n\nOm du anser att detta har skett av misstag, kontakta vårt supportteam.\n\n– {product_name} Safety Team"
},
"account_scheduled_deletion": {
"subject": "Ditt {product_name}-konto kommer att raderas permanent",
"body": "Hej {username},\n\nDitt {product_name}-konto har schemalagts för permanent radering på grund av brott mot våra användarvillkor eller community-riktlinjer.\n\nSchemalagd radering: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Anledning: {reason}}\n}\n\nDetta är en allvarlig åtgärd. Dina kontouppgifter kommer att raderas permanent på det schemalagda datumet.\n\nGranska:\n- Användarvillkor: {termsUrl}\n- Community-riktlinjer: {guidelinesUrl}\n\nÖverklagandeprocess:\nOm du anser att detta beslut var felaktigt eller orättfärdigt har du 60 dagar på dig att överklaga. Mejla {appeals_email} från denna e-postadress.\n\nI din överklagan:\n- Förklara tydligt varför du anser att beslutet var felaktigt eller orättfärdigt\n- Bifoga relevanta bevis eller sammanhang\n\nEn medlem av {product_name} Safety Team kommer att granska din överklagan och kan pausa den pågående raderingen tills ett slutgiltigt beslut har fattats.\n\n– {product_name} Safety Team"
},
"account_temp_banned": {
"subject": "Ditt {product_name}-konto har tillfälligt stängts av",
"body": "Hej {username},\n\nDitt {product_name}-konto har tillfälligt stängts av på grund av brott mot våra användarvillkor eller community-riktlinjer.\n\nVaraktighet: {durationHours, plural,\n =1 {1 timme}\n other {# timmar}\n}\nAvstängd till: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Anledning: {reason}}\n}\n\nUnder denna tid kommer du inte att kunna komma åt ditt konto.\n\nGranska:\n- Användarvillkor: {termsUrl}\n- Community-riktlinjer: {guidelinesUrl}\n\nOm du anser att detta beslut var felaktigt eller orättfärdigt kan du överklaga. Kontakta vårt supportteam på {appeals_email} från denna e-postadress och förklara tydligt varför du anser att beslutet var felaktigt. Vi kommer att granska din överklagan och svara med vårt beslut.\n\n– {product_name} Safety Team"
},
"donation_confirmation": {
"subject": "Tack för din donation till {product_name}",
"body": "Hej,\n\nTack för din donation till {product_name}! Din {interval, select,\n month {återkommande donation}\n year {återkommande donation}\n other {engångsdonation}\n} har {interval, select,\n month {ställts in}\n year {ställts in}\n other {behandlats}\n} framgångsrikt.\n\nDonationsuppgifter:\nBelopp: {amount} {currency} {interval, select,\n month {per månad}\n year {per år}\n other {}\n}\n\nStripe kommer att skicka ett separat kvitto med din faktura i PDF-format via e-post inom kort. Detta inkluderar alla betalningsuppgifter och kan användas för skatteändamål.\n\nDu kan se din donationshistorik, ladda ner fakturor, {interval, select,\n month {och hantera eller avbryta ditt abonnemang}\n year {och hantera eller avbryta ditt abonnemang}\n other {och hantera framtida donationer}\n} när som helst via denna länk:\n\n{manageUrl}\n\nDitt stöd hjälper till att hålla {product_name} igång. Tack!\n\n– {product_name} Team"
},
"donation_magic_link": {
"subject": "Hantera dina donationer till {product_name}",
"body": "Hej,\n\nKlicka på länken nedan för att komma åt din donatorportal:\n\n{manageUrl}\n\nI portalen kan du hantera abonnemang, ladda ner fakturor och se din donationshistorik.\n\nDenna länk upphör att gälla {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nOm du inte begärde denna länk kan du tryggt ignorera detta mejl.\n\n– {product_name} Team"
},
"dsa_report_verification": {
"subject": "Verifiera din e-postadress inför en DSA-rapport",
"body": "Hej,\n\nAnvänd verifieringskoden nedan för att skicka in din DSA-rapport på {product_name}:\n\n{code}\n\nDenna kod upphör att gälla {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nOm du inte begärde detta kan du ignorera detta mejl.\n\n– {product_name} Safety Team"
},
"email_change_new": {
"subject": "Verifiera din nya {product_name}-e-postadress",
"body": "Hej {username},\n\nAnge denna kod i appen för att verifiera din nya {product_name}-e-postadress:\n\n{code}\n\nDenna kod upphör att gälla {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nOm du inte begärde detta kan du ignorera detta mejl.\n\n– {product_name} Team"
},
"email_change_original": {
"subject": "Bekräfta din {product_name}-e-postadressändring",
"body": "Hej {username},\n\nVi har mottagit en begäran om att ändra e-postadressen för ditt {product_name}-konto.\n\nFör att bekräfta denna ändring, ange denna kod i appen:\n\n{code}\n\nDenna kod upphör att gälla {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nOm du inte begärde detta, säkra ditt konto omedelbart.\n\n– {product_name} Team"
},
"email_change_revert": {
"subject": "Din {product_name}-e-postadress ändrades",
"body": "Hej {username},\n\nE-postadressen för ditt {product_name}-konto har ändrats till {newEmail}.\n\nOm du gjorde denna ändring behövs ingen åtgärd. Om du inte gjorde det kan du ångra ändringen och säkra ditt konto med denna länk:\n\n{revertUrl}\n\nDetta kommer att återställa din tidigare e-post, logga ut dig överallt, ta bort länkade telefonnummer, inaktivera MFA och kräva att du ställer in ett nytt lösenord.\n\n– {product_name} Safety Team"
},
"email_verification": {
"subject": "Verifiera din {product_name}-e-postadress",
"body": "Hej {username},\n\nVerifiera e-postadressen för ditt {product_name}-konto genom att klicka på länken nedan:\n\n{verifyUrl}\n\nOm du inte skapade ett {product_name}-konto kan du tryggt ignorera detta mejl.\n\nDenna länk är giltig i 24 timmar.\n\n– {product_name} Team"
},
"gift_chargeback_notification": {
"subject": "Förmånerna för din inlösta gåva har tagits bort",
"body": "Hej {username},\n\nEn presentkod du löste in betalades ursprungligen av någon annan. Den betalningen har sedan dess återkallats (en chargeback).\n\nPå grund av detta har vi tagit bort de förmåner som lades till ditt konto när du löste in presenten.\n\nOm du tror att detta är ett misstag, kontakta vår support och inkludera alla detaljer du har om presentkoden och när du löste in den.\n\n– {product_name} Team"
},
"harvest_completed": {
"subject": "Din {product_name}-dataexport är redo att laddas ner",
"body": "Hej {username},\n\nDin dataexport är redo.\n\nNedladdningslänk:\n{downloadUrl}\n\nMeddelanden inkluderade: {totalMessages, number}\nFilstorlek: {fileSizeMB, number} MB\n\nDenna länk upphör att gälla {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nOm du inte begärde denna export, ändra ditt lösenord omedelbart och kontakta vårt supportteam.\n\n– {product_name} Team"
},
"inactivity_warning": {
"subject": "Ditt {product_name}-konto kommer att raderas på grund av inaktivitet",
"body": "Hej {username},\n\nVi har inte sett någon aktivitet på ditt {product_name}-konto sedan {lastActiveDate, date, full}.\n\nOm du inte loggar in senast {deletionDate, date, full} kl. {deletionDate, time, short}, kommer ditt konto att raderas permanent på grund av inaktivitet.\n\nLogga in här:\n{loginUrl}\n\nOm du har använt {product_name} nyligen, kontakta vårt supportteam omedelbart.\n\n– {product_name} Team"
},
"ip_authorization": {
"subject": "Auktorisera inloggning från en ny IP-adress",
"body": "Hej {username},\n\nVi upptäckte ett inloggningsförsök till ditt {product_name}-konto från en ny IP-adress:\n\nIP-adress: {ipAddress}\nPlats: {location}\n\nOm detta var du, godkänn denna IP-adress genom att klicka på länken nedan:\n\n{authUrl}\n\nOm du inte försökte logga in, ändra ditt lösenord omedelbart.\n\nDenna länk är giltig i 30 minuter.\n\n– {product_name} Team"
},
"password_change_verification": {
"subject": "Bekräfta din {product_name}-lösenordsändring",
"body": "Hej {username},\n\nVi har mottagit en begäran om att ändra lösenordet för ditt {product_name}-konto.\n\nFör att bekräfta denna ändring, ange denna kod i appen:\n\n{code}\n\nDenna kod upphör att gälla {expiresAt}.\n\nOm du inte begärde detta kan någon ha åtkomst till ditt konto. Ändra ditt lösenord omedelbart och aktivera tvåfaktorsautentisering.\n\n– {product_name} Team"
},
"password_reset": {
"subject": "Återställ ditt {product_name}-lösenord",
"body": "Hej {username},\n\nDu begärde en återställning av ditt {product_name}-lösenord. Använd länken nedan för att ställa in ett nytt lösenord:\n\n{resetUrl}\n\nOm du inte begärde detta kan du tryggt ignorera detta mejl.\n\nDenna länk är giltig i 1 timme.\n\n– {product_name} Team"
},
"registration_approved": {
"subject": "Din {product_name}-registrering har godkänts",
"body": "Hej {username},\n\nGoda nyheter: din {product_name}-registrering har godkänts.\n\nDu kan nu logga in på {product_name}-appen här:\n{channelsUrl}\n\nVälkommen till {product_name}-communityn.\n\n– {product_name} Team"
},
"report_resolved": {
"subject": "Din {product_name}-rapport har granskats",
"body": "Hej {username},\n\nDin rapport (ID: {reportId}) har granskats av vårt säkerhetsteam.{hasComment, select, yes {\n\nSvar från säkerhetsteamet:\n{publicComment}} other {}}\n\nTack för att du hjälper till att hålla {product_name} säkert för alla. Vi tar alla rapporter på allvar och uppskattar ditt bidrag till communityn.\n\nOm du har några frågor eller funderingar kring detta resultat, kontakta oss på {safety_email}.\n\n– {product_name} Safety Team"
},
"scheduled_deletion_notification": {
"subject": "Ditt {product_name}-konto kommer att raderas permanent",
"body": "Hej {username},\n\nDitt {product_name}-konto har schemalagts för permanent radering.\n\nSchemalagd radering: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Anledning: {reason}}\n}\n\nDetta är en allvarlig åtgärd. Dina kontouppgifter kommer att raderas permanent på det schemalagda datumet.\n\nOm du anser att detta beslut var felaktigt kan du överklaga. Mejla {appeals_email} från denna e-postadress.\n\n– {product_name} Safety Team"
},
"self_deletion_scheduled": {
"subject": "Raderingen av ditt {product_name}-konto är schemalagd",
"body": "Hej {username},\n\nDu begärde att radera ditt {product_name}-konto. Ditt konto är schemalagt för permanent radering den:\n\n{deletionDate, date, full} kl. {deletionDate, time, short}\n\nOm du inte begärde detta, logga in på ditt konto för att avbryta raderingen. Vi rekommenderar också att du ändrar ditt lösenord för att säkra ditt konto.\n\n– {product_name} Team"
},
"unban_notification": {
"subject": "Avstängningen av ditt {product_name}-konto har hävts",
"body": "Hej {username},\n\nGoda nyheter: avstängningen av ditt {product_name}-konto har hävts.\n\n{reason, select,\n null {}\n other {Anledning: {reason}}\n}\n\nDu kan nu logga in igen och fortsätta använda {product_name} som vanligt.\n\n– {product_name} Safety Team"
}
"account_disabled_suspicious": {
"subject": "Ditt {product_name}-konto har tillfälligt inaktiverats",
"body": "Hej {username},\n\nVi har tillfälligt inaktiverat ditt {product_name}-konto eftersom vi upptäckte misstänkt aktivitet.\n\n{reason, select,\n null {}\n other {Anledning: {reason}}\n}\n\nFör att återfå åtkomst till ditt konto måste du återställa ditt lösenord:\n\n{forgotUrl}\n\nEfter att du har återställt ditt lösenord kan du logga in igen.\n\nOm du anser att detta har skett av misstag, kontakta vårt supportteam.\n\n– {product_name} Safety Team"
},
"account_scheduled_deletion": {
"subject": "Ditt {product_name}-konto kommer att raderas permanent",
"body": "Hej {username},\n\nDitt {product_name}-konto har schemalagts för permanent radering på grund av brott mot våra användarvillkor eller community-riktlinjer.\n\nSchemalagd radering: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Anledning: {reason}}\n}\n\nDetta är en allvarlig åtgärd. Dina kontouppgifter kommer att raderas permanent på det schemalagda datumet.\n\nGranska:\n- Användarvillkor: {termsUrl}\n- Community-riktlinjer: {guidelinesUrl}\n\nÖverklagandeprocess:\nOm du anser att detta beslut var felaktigt eller orättfärdigt har du 60 dagar på dig att överklaga. Mejla {appeals_email} från denna e-postadress.\n\nI din överklagan:\n- Förklara tydligt varför du anser att beslutet var felaktigt eller orättfärdigt\n- Bifoga relevanta bevis eller sammanhang\n\nEn medlem av {product_name} Safety Team kommer att granska din överklagan och kan pausa den pågående raderingen tills ett slutgiltigt beslut har fattats.\n\n– {product_name} Safety Team"
},
"account_temp_banned": {
"subject": "Ditt {product_name}-konto har tillfälligt stängts av",
"body": "Hej {username},\n\nDitt {product_name}-konto har tillfälligt stängts av på grund av brott mot våra användarvillkor eller community-riktlinjer.\n\nVaraktighet: {durationHours, plural,\n =1 {1 timme}\n other {# timmar}\n}\nAvstängd till: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Anledning: {reason}}\n}\n\nUnder denna tid kommer du inte att kunna komma åt ditt konto.\n\nGranska:\n- Användarvillkor: {termsUrl}\n- Community-riktlinjer: {guidelinesUrl}\n\nOm du anser att detta beslut var felaktigt eller orättfärdigt kan du överklaga. Kontakta vårt supportteam på {appeals_email} från denna e-postadress och förklara tydligt varför du anser att beslutet var felaktigt. Vi kommer att granska din överklagan och svara med vårt beslut.\n\n– {product_name} Safety Team"
},
"donation_confirmation": {
"subject": "Tack för din donation till {product_name}",
"body": "Hej,\n\nTack för din donation till {product_name}! Din {interval, select,\n month {återkommande donation}\n year {återkommande donation}\n other {engångsdonation}\n} har {interval, select,\n month {ställts in}\n year {ställts in}\n other {behandlats}\n} framgångsrikt.\n\nDonationsuppgifter:\nBelopp: {amount} {currency} {interval, select,\n month {per månad}\n year {per år}\n other {}\n}\n\nStripe kommer att skicka ett separat kvitto med din faktura i PDF-format via e-post inom kort. Detta inkluderar alla betalningsuppgifter och kan användas för skatteändamål.\n\nDu kan se din donationshistorik, ladda ner fakturor, {interval, select,\n month {och hantera eller avbryta ditt abonnemang}\n year {och hantera eller avbryta ditt abonnemang}\n other {och hantera framtida donationer}\n} när som helst via denna länk:\n\n{manageUrl}\n\nDitt stöd hjälper till att hålla {product_name} igång. Tack!\n\n– {product_name} Team"
},
"donation_magic_link": {
"subject": "Hantera dina donationer till {product_name}",
"body": "Hej,\n\nKlicka på länken nedan för att komma åt din donatorportal:\n\n{manageUrl}\n\nI portalen kan du hantera abonnemang, ladda ner fakturor och se din donationshistorik.\n\nDenna länk upphör att gälla {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nOm du inte begärde denna länk kan du tryggt ignorera detta mejl.\n\n– {product_name} Team"
},
"dsa_report_verification": {
"subject": "Verifiera din e-postadress inför en DSA-rapport",
"body": "Hej,\n\nAnvänd verifieringskoden nedan för att skicka in din DSA-rapport på {product_name}:\n\n{code}\n\nDenna kod upphör att gälla {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nOm du inte begärde detta kan du ignorera detta mejl.\n\n– {product_name} Safety Team"
},
"email_change_new": {
"subject": "Verifiera din nya {product_name}-e-postadress",
"body": "Hej {username},\n\nAnge denna kod i appen för att verifiera din nya {product_name}-e-postadress:\n\n{code}\n\nDenna kod upphör att gälla {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nOm du inte begärde detta kan du ignorera detta mejl.\n\n– {product_name} Team"
},
"email_change_original": {
"subject": "Bekräfta din {product_name}-e-postadressändring",
"body": "Hej {username},\n\nVi har mottagit en begäran om att ändra e-postadressen för ditt {product_name}-konto.\n\nFör att bekräfta denna ändring, ange denna kod i appen:\n\n{code}\n\nDenna kod upphör att gälla {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nOm du inte begärde detta, säkra ditt konto omedelbart.\n\n– {product_name} Team"
},
"email_change_revert": {
"subject": "Din {product_name}-e-postadress ändrades",
"body": "Hej {username},\n\nE-postadressen för ditt {product_name}-konto har ändrats till {newEmail}.\n\nOm du gjorde denna ändring behövs ingen åtgärd. Om du inte gjorde det kan du ångra ändringen och säkra ditt konto med denna länk:\n\n{revertUrl}\n\nDetta kommer att återställa din tidigare e-post, logga ut dig överallt, ta bort länkade telefonnummer, inaktivera MFA och kräva att du ställer in ett nytt lösenord.\n\n– {product_name} Safety Team"
},
"email_verification": {
"subject": "Verifiera din {product_name}-e-postadress",
"body": "Hej {username},\n\nVerifiera e-postadressen för ditt {product_name}-konto genom att klicka på länken nedan:\n\n{verifyUrl}\n\nOm du inte skapade ett {product_name}-konto kan du tryggt ignorera detta mejl.\n\nDenna länk är giltig i 24 timmar.\n\n– {product_name} Team"
},
"gift_chargeback_notification": {
"subject": "Förmånerna för din inlösta gåva har tagits bort",
"body": "Hej {username},\n\nEn presentkod du löste in betalades ursprungligen av någon annan. Den betalningen har sedan dess återkallats (en chargeback).\n\nPå grund av detta har vi tagit bort de förmåner som lades till ditt konto när du löste in presenten.\n\nOm du tror att detta är ett misstag, kontakta vår support och inkludera alla detaljer du har om presentkoden och när du löste in den.\n\n– {product_name} Team"
},
"harvest_completed": {
"subject": "Din {product_name}-dataexport är redo att laddas ner",
"body": "Hej {username},\n\nDin dataexport är redo.\n\nNedladdningslänk:\n{downloadUrl}\n\nMeddelanden inkluderade: {totalMessages, number}\nFilstorlek: {fileSizeMB, number} MB\n\nDenna länk upphör att gälla {expiresAt, date, full} kl. {expiresAt, time, short}.\n\nOm du inte begärde denna export, ändra ditt lösenord omedelbart och kontakta vårt supportteam.\n\n– {product_name} Team"
},
"inactivity_warning": {
"subject": "Ditt {product_name}-konto kommer att raderas på grund av inaktivitet",
"body": "Hej {username},\n\nVi har inte sett någon aktivitet på ditt {product_name}-konto sedan {lastActiveDate, date, full}.\n\nOm du inte loggar in senast {deletionDate, date, full} kl. {deletionDate, time, short}, kommer ditt konto att raderas permanent på grund av inaktivitet.\n\nLogga in här:\n{loginUrl}\n\nOm du har använt {product_name} nyligen, kontakta vårt supportteam omedelbart.\n\n– {product_name} Team"
},
"ip_authorization": {
"subject": "Auktorisera inloggning från en ny IP-adress",
"body": "Hej {username},\n\nVi upptäckte ett inloggningsförsök till ditt {product_name}-konto från en ny IP-adress:\n\nIP-adress: {ipAddress}\nPlats: {location}\n\nOm detta var du, godkänn denna IP-adress genom att klicka på länken nedan:\n\n{authUrl}\n\nOm du inte försökte logga in, ändra ditt lösenord omedelbart.\n\nDenna länk är giltig i 30 minuter.\n\n– {product_name} Team"
},
"password_change_verification": {
"subject": "Bekräfta din {product_name}-lösenordsändring",
"body": "Hej {username},\n\nVi har mottagit en begäran om att ändra lösenordet för ditt {product_name}-konto.\n\nFör att bekräfta denna ändring, ange denna kod i appen:\n\n{code}\n\nDenna kod upphör att gälla {expiresAt}.\n\nOm du inte begärde detta kan någon ha åtkomst till ditt konto. Ändra ditt lösenord omedelbart och aktivera tvåfaktorsautentisering.\n\n– {product_name} Team"
},
"password_reset": {
"subject": "Återställ ditt {product_name}-lösenord",
"body": "Hej {username},\n\nDu begärde en återställning av ditt {product_name}-lösenord. Använd länken nedan för att ställa in ett nytt lösenord:\n\n{resetUrl}\n\nOm du inte begärde detta kan du tryggt ignorera detta mejl.\n\nDenna länk är giltig i 1 timme.\n\n– {product_name} Team"
},
"registration_approved": {
"subject": "Din {product_name}-registrering har godkänts",
"body": "Hej {username},\n\nGoda nyheter: din {product_name}-registrering har godkänts.\n\nDu kan nu logga in på {product_name}-appen här:\n{channelsUrl}\n\nVälkommen till {product_name}-communityn.\n\n– {product_name} Team"
},
"report_resolved": {
"subject": "Din {product_name}-rapport har granskats",
"body": "Hej {username},\n\nDin rapport (ID: {reportId}) har granskats av vårt säkerhetsteam.{hasComment, select, yes {\n\nSvar från säkerhetsteamet:\n{publicComment}} other {}}\n\nTack för att du hjälper till att hålla {product_name} säkert för alla. Vi tar alla rapporter på allvar och uppskattar ditt bidrag till communityn.\n\nOm du har några frågor eller funderingar kring detta resultat, kontakta oss på {safety_email}.\n\n– {product_name} Safety Team"
},
"scheduled_deletion_notification": {
"subject": "Ditt {product_name}-konto kommer att raderas permanent",
"body": "Hej {username},\n\nDitt {product_name}-konto har schemalagts för permanent radering.\n\nSchemalagd radering: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Anledning: {reason}}\n}\n\nDetta är en allvarlig åtgärd. Dina kontouppgifter kommer att raderas permanent på det schemalagda datumet.\n\nOm du anser att detta beslut var felaktigt kan du överklaga. Mejla {appeals_email} från denna e-postadress.\n\n– {product_name} Safety Team"
},
"self_deletion_scheduled": {
"subject": "Raderingen av ditt {product_name}-konto är schemalagd",
"body": "Hej {username},\n\nDu begärde att radera ditt {product_name}-konto. Ditt konto är schemalagt för permanent radering den:\n\n{deletionDate, date, full} kl. {deletionDate, time, short}\n\nOm du inte begärde detta, logga in på ditt konto för att avbryta raderingen. Vi rekommenderar också att du ändrar ditt lösenord för att säkra ditt konto.\n\n– {product_name} Team"
},
"unban_notification": {
"subject": "Avstängningen av ditt {product_name}-konto har hävts",
"body": "Hej {username},\n\nGoda nyheter: avstängningen av ditt {product_name}-konto har hävts.\n\n{reason, select,\n null {}\n other {Anledning: {reason}}\n}\n\nDu kan nu logga in igen och fortsätta använda {product_name} som vanligt.\n\n– {product_name} Safety Team"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "บัญชี {product_name} ของคุณถูกปิดใช้งานชั่วคราว",
"body": "สวัสดี {username},\n\nเราปิดใช้งานบัญชี {product_name} ของคุณชั่วคราว เนื่องจากเราตรวจพบกิจกรรมที่น่าสงสัย\n\n{reason, select,\n null {}\n other {เหตุผล: {reason}}\n}\n\nหากต้องการเข้าถึงบัญชีอีกครั้ง ให้รีเซ็ตรหัสผ่าน:\n\n{forgotUrl}\n\nหลังจากรีเซ็ตรหัสผ่านแล้ว คุณจะสามารถเข้าสู่ระบบได้อีกครั้ง\n\nหากคุณเชื่อว่านี่เป็นข้อผิดพลาด โปรดติดต่อทีมสนับสนุนของเรา\n\n– ทีมความปลอดภัย {product_name}"
},
"account_scheduled_deletion": {
"subject": "บัญชี {product_name} ของคุณจะถูกลบอย่างถาวร",
"body": "สวัสดี {username},\n\nบัญชี {product_name} ของคุณจะถูกลบอย่างถาวรเนื่องจากละเมิดข้อกำหนดในการให้บริการหรือแนวทางปฏิบัติของคอมมูนิตี้ของเรา\n\nกำหนดการลบ: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {เหตุผล: {reason}}\n}\n\nนี่เป็นการดำเนินการบังคับใช้ที่ร้ายแรง ข้อมูลบัญชีของคุณจะถูกลบอย่างถาวรตามวันที่กำหนด\n\nโปรดตรวจสอบ:\n- ข้อกำหนดในการให้บริการ: {termsUrl}\n- แนวทางปฏิบัติของคอมมูนิตี้: {guidelinesUrl}\n\nกระบวนการอุทธรณ์:\nหากคุณเชื่อว่าการตัดสินใจนี้ไม่ถูกต้องหรือไม่ยุติธรรม คุณมีเวลา 60 วันในการยื่นอุทธรณ์ ส่งอีเมลไปที่ {appeals_email} จากที่อยู่อีเมลนี้\n\nในการอุทธรณ์ของคุณ:\n- อธิบายให้ชัดเจนว่าทำไมคุณถึงเชื่อว่าการตัดสินใจนั้นไม่ถูกต้องหรือไม่ยุติธรรม\n- ให้หลักฐานหรือบริบทที่เกี่ยวข้อง\n\nสมาชิกของทีมความปลอดภัย {product_name} จะตรวจสอบคำอุทธรณ์ของคุณและอาจระงับการลบที่รอดำเนินการไว้จนกว่าจะมีการตัดสินใจขั้นสุดท้าย\n\n– ทีมความปลอดภัย {product_name}"
},
"account_temp_banned": {
"subject": "บัญชี {product_name} ของคุณถูกระงับชั่วคราว",
"body": "สวัสดี {username},\n\nบัญชี {product_name} ของคุณถูกระงับชั่วคราวเนื่องจากละเมิดข้อกำหนดในการให้บริการหรือแนวทางปฏิบัติของคอมมูนิตี้ของเรา\n\nระยะเวลา: {durationHours, plural,\n =1 {1 ชั่วโมง}\n other {# ชั่วโมง}\n}\nระงับจนถึง: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {เหตุผล: {reason}}\n}\n\nในช่วงเวลานี้ คุณจะไม่สามารถเข้าถึงบัญชีของคุณได้\n\nโปรดตรวจสอบ:\n- ข้อกำหนดในการให้บริการ: {termsUrl}\n- แนวทางปฏิบัติของคอมมูนิตี้: {guidelinesUrl}\n\nหากคุณเชื่อว่าการตัดสินใจนี้ไม่ถูกต้องหรือไม่ยุติธรรม คุณสามารถยื่นอุทธรณ์ได้ ส่งอีเมลไปที่ {appeals_email} จากที่อยู่อีเมลนี้และอธิบายให้ชัดเจนว่าทำไมคุณถึงเชื่อว่าการตัดสินใจนั้นไม่ถูกต้อง เราจะตรวจสอบคำอุทธรณ์ของคุณและตอบกลับด้วยการตัดสินใจของเรา\n\n– ทีมความปลอดภัย {product_name}"
},
"donation_confirmation": {
"subject": "ขอบคุณสำหรับการบริจาค {product_name}",
"body": "สวัสดี,\n\nขอบคุณสำหรับการบริจาค {product_name}! {interval, select,\n month {การบริจาคแบบต่อเนื่อง}\n year {การบริจาคแบบต่อเนื่อง}\n other {การบริจาคครั้งเดียว}\n} {interval, select,\n month {ตั้งค่า}\n year {ตั้งค่า}\n other {ดำเนินการ}\n}เรียบร้อยแล้ว\n\nรายละเอียดการบริจาค:\nจำนวน: {amount} {currency} {interval, select,\n month {ต่อเดือน}\n year {ต่อปี}\n other {}\n}\n\nStripe จะส่งอีเมลใบเสร็จแยกต่างหากพร้อมไฟล์ PDF ใบแจ้งหนี้ให้คุณในไม่ช้า ซึ่งรวมถึงรายละเอียดการชำระเงินทั้งหมดและสามารถใช้เพื่อวัตถุประสงค์ทางภาษีได้\n\nคุณสามารถดูประวัติการบริจาค ดาวน์โหลดใบแจ้งหนี้ {interval, select,\n month {และจัดการหรือยกเลิกการสมัครสมาชิกของคุณ}\n year {และจัดการหรือยกเลิกการสมัครสมาชิกของคุณ}\n other {และจัดการการบริจาคในอนาคต}\n} ได้ตลอดเวลาโดยใช้ลิงก์นี้:\n\n{manageUrl}\n\nการสนับสนุนของคุณช่วยให้ {product_name} ดำเนินต่อไปได้ ขอบคุณ!\n\n– ทีม {product_name}"
},
"donation_magic_link": {
"subject": "จัดการการบริจาค {product_name}",
"body": "สวัสดี,\n\nคลิกลิงก์ด้านล่างเพื่อเข้าถึงพอร์ทัลผู้บริจาค:\n\n{manageUrl}\n\nในพอร์ทัล คุณสามารถจัดการการสมัครสมาชิก ดาวน์โหลดใบแจ้งหนี้ และดูประวัติการบริจาคของคุณได้\n\nลิงก์นี้จะหมดอายุในวันที่ {expiresAt, date, full} เวลา {expiresAt, time, short}\n\nหากคุณไม่ได้ร้องขอลิงก์นี้ คุณสามารถเพิกเฉยต่ออีเมลนี้ได้อย่างปลอดภัย\n\n– ทีม {product_name}"
},
"dsa_report_verification": {
"subject": "ยืนยันอีเมลสำหรับการรายงาน DSA",
"body": "สวัสดี,\n\nใช้รหัสยืนยันด้านล่างเพื่อส่งรายงาน Digital Services Act ของคุณบน {product_name}:\n\n{code}\n\nรหัสนี้จะหมดอายุในวันที่ {expiresAt, date, full} เวลา {expiresAt, time, short}\n\nหากคุณไม่ได้ร้องขอ คุณสามารถเพิกเฉยต่ออีเมลนี้ได้\n\n– ทีมความปลอดภัย {product_name}"
},
"email_change_new": {
"subject": "ยืนยันอีเมลใหม่สำหรับ {product_name}",
"body": "สวัสดี {username},\n\nป้อนรหัสนี้ในแอปเพื่อยืนยันอีเมลใหม่สำหรับบัญชี {product_name} ของคุณ:\n\n{code}\n\nรหัสนี้จะหมดอายุในวันที่ {expiresAt, date, full} เวลา {expiresAt, time, short}\n\nหากคุณไม่ได้ร้องขอ คุณสามารถเพิกเฉยต่ออีเมลนี้ได้\n\n– ทีม {product_name}"
},
"email_change_original": {
"subject": "ยืนยันการเปลี่ยนอีเมลสำหรับ {product_name}",
"body": "สวัสดี {username},\n\nเราได้รับคำขอให้เปลี่ยนที่อยู่อีเมลในบัญชี {product_name} ของคุณ\n\nหากต้องการยืนยันการเปลี่ยนแปลงนี้ ให้ป้อนรหัสนี้ในแอป:\n\n{code}\n\nรหัสนี้จะหมดอายุในวันที่ {expiresAt, date, full} เวลา {expiresAt, time, short}\n\nหากคุณไม่ได้ร้องขอ ให้รีบรักษาความปลอดภัยบัญชีของคุณ\n\n– ทีม {product_name}"
},
"email_change_revert": {
"subject": "อีเมลบัญชี {product_name} ถูกเปลี่ยนแล้ว",
"body": "สวัสดี {username},\n\nที่อยู่อีเมลในบัญชี {product_name} ของคุณถูกเปลี่ยนเป็น {newEmail}\n\nหากคุณทำการเปลี่ยนแปลงนี้ ไม่ต้องดำเนินการใดๆ หากคุณไม่ได้เปลี่ยน คุณสามารถย้อนกลับการเปลี่ยนแปลงและรักษาความปลอดภัยบัญชีของคุณโดยใช้ลิงก์นี้:\n\n{revertUrl}\n\nซึ่งจะกู้คืนอีเมลก่อนหน้าของคุณ ออกจากระบบทุกที่ ลบหมายเลขโทรศัพท์ที่เชื่อมโยง ปิดใช้งาน MFA และกำหนดให้คุณต้องตั้งรหัสผ่านใหม่\n\n– ทีมความปลอดภัย {product_name}"
},
"email_verification": {
"subject": "ยืนยันที่อยู่อีเมลสำหรับ {product_name}",
"body": "สวัสดี {username},\n\nโปรดยืนยันที่อยู่อีเมลสำหรับบัญชี {product_name} ของคุณโดยคลิกที่ลิงก์ด้านล่าง:\n\n{verifyUrl}\n\nหากคุณไม่ได้สร้างบัญชี {product_name} คุณสามารถเพิกเฉยต่ออีเมลนี้ได้เลย\n\nลิงก์นี้ใช้ได้เป็นเวลา 24 ชั่วโมง\n\n– ทีม {product_name}"
},
"gift_chargeback_notification": {
"subject": "สิทธิประโยชน์จากของขวัญที่คุณแลกรับถูกนำออกแล้ว",
"body": "สวัสดี {username},\n\nรหัสของขวัญที่คุณแลกรับนั้นเดิมทีชำระโดยผู้อื่น การชำระเงินดังกล่าวถูกยกเลิกในภายหลัง (การเรียกเก็บเงินคืน)\n\nด้วยเหตุนี้ เราจึงลบสิทธิประโยชน์ที่เพิ่มในบัญชีของคุณตอนที่คุณแลกรับของขวัญ\n\nหากคุณคิดว่านี่เป็นข้อผิดพลาด โปรดติดต่อทีมสนับสนุนของเราและระบุรายละเอียดใดๆ ที่คุณมีเกี่ยวกับรหัสของขวัญและเวลาที่คุณแลกรับ\n\n– ทีม {product_name}"
},
"harvest_completed": {
"subject": "ข้อมูลจาก {product_name} พร้อมให้ดาวน์โหลดแล้ว",
"body": "สวัสดี {username},\n\nข้อมูลของคุณพร้อมให้ดาวน์โหลดแล้ว\n\nลิงก์ดาวน์โหลด:\n{downloadUrl}\n\nจำนวนข้อความ: {totalMessages, number}\nขนาดไฟล์: {fileSizeMB, number} MB\n\nลิงก์นี้จะหมดอายุในวันที่ {expiresAt, date, full} เวลา {expiresAt, time, short}\n\nหากคุณไม่ได้ร้องขอการส่งออกนี้ โปรดเปลี่ยนรหัสผ่านทันทีและติดต่อทีมสนับสนุนของเรา\n\n– ทีม {product_name}"
},
"inactivity_warning": {
"subject": "บัญชี {product_name} ของคุณจะถูกลบเนื่องจากไม่มีการใช้งาน",
"body": "สวัสดี {username},\n\nเราไม่พบกิจกรรมในบัญชี {product_name} ตั้งแต่ {lastActiveDate, date, full}\n\nหากคุณไม่เข้าสู่ระบบภายในวันที่ {deletionDate, date, full} เวลา {deletionDate, time, short} บัญชีของคุณจะถูกลบอย่างถาวรเนื่องจากไม่มีการใช้งาน\n\nเข้าสู่ระบบที่นี่:\n{loginUrl}\n\nหากคุณใช้ {product_name} เมื่อเร็วๆ นี้ โปรดติดต่อทีมสนับสนุนของเราทันที\n\n– ทีม {product_name}"
},
"ip_authorization": {
"subject": "อนุมัติการเข้าสู่ระบบจาก IP ใหม่",
"body": "สวัสดี {username},\n\nเราตรวจพบความพยายามในการเข้าสู่ระบบบัญชี {product_name} ของคุณจากที่อยู่ IP ใหม่:\n\nที่อยู่ IP: {ipAddress}\nตำแหน่ง: {location}\n\nหากเป็นคุณ โปรดอนุญาตที่อยู่ IP นี้โดยคลิกที่ลิงก์ด้านล่าง:\n\n{authUrl}\n\nหากคุณไม่ได้พยายามเข้าสู่ระบบ เปลี่ยนรหัสผ่านทันที\n\nลิงก์นี้ใช้ได้เป็นเวลา 30 นาที\n\n– ทีม {product_name}"
},
"password_change_verification": {
"subject": "ยืนยันการเปลี่ยนรหัสผ่านสำหรับ {product_name}",
"body": "สวัสดี {username},\n\nเราได้รับคำขอให้เปลี่ยนรหัสผ่านในบัญชี {product_name} ของคุณ\n\nหากต้องการยืนยันการเปลี่ยนแปลงนี้ ให้ป้อนรหัสนี้ในแอป:\n\n{code}\n\nรหัสนี้จะหมดอายุในเวลา {expiresAt}\n\nหากคุณไม่ได้ร้องขอ อาจมีคนเข้าถึงบัญชีของคุณได้ เปลี่ยนรหัสผ่านทันทีและเปิดใช้งานการยืนยันตัวตนสองชั้น\n\n– ทีม {product_name}"
},
"password_reset": {
"subject": "รีเซ็ตรหัสผ่านสำหรับ {product_name}",
"body": "สวัสดี {username},\n\nคุณได้ร้องขอการรีเซ็ตรหัสผ่าน {product_name} ใช้ลิงก์ด้านล่างเพื่อตั้งรหัสผ่านใหม่:\n\n{resetUrl}\n\nหากคุณไม่ได้ร้องขอ คุณสามารถเพิกเฉยต่ออีเมลนี้ได้เลย\n\nลิงก์นี้ใช้ได้เป็นเวลา 1 ชั่วโมง\n\n– ทีม {product_name}"
},
"registration_approved": {
"subject": "การลงทะเบียนสำหรับ {product_name} ได้รับการอนุมัติแล้ว",
"body": "สวัสดี {username},\n\nข่าวดี: การลงทะเบียน {product_name} ได้รับการอนุมัติแล้ว\n\nตอนนี้คุณสามารถเข้าสู่ระบบแอป {product_name} ได้ที่นี่:\n{channelsUrl}\n\nยินดีต้อนรับสู่คอมมูนิตี้ {product_name}\n\n– ทีม {product_name}"
},
"report_resolved": {
"subject": "รายงานเกี่ยวกับ {product_name} ได้รับการตรวจสอบแล้ว",
"body": "สวัสดี {username},\n\nทีมความปลอดภัยของเราได้ตรวจสอบรายงานของคุณ (ID: {reportId}) แล้ว{hasComment, select, yes {\n\nการตอบกลับจากทีมความปลอดภัย:\n{publicComment}} other {}}\n\nขอบคุณที่ช่วยให้ {product_name} ปลอดภัยสำหรับทุกคน เราให้ความสำคัญกับรายงานทั้งหมดและขอขอบคุณสำหรับการมีส่วนร่วมของคุณในคอมมูนิตี้\n\nหากคุณมีคำถามหรือข้อกังวลใดๆ เกี่ยวกับผลลัพธ์นี้ โปรดติดต่อ {safety_email}\n\n– ทีมความปลอดภัย {product_name}"
},
"scheduled_deletion_notification": {
"subject": "บัญชี {product_name} ของคุณจะถูกลบอย่างถาวร",
"body": "สวัสดี {username},\n\nบัญชี {product_name} จะถูกลบอย่างถาวร\n\nกำหนดการลบ: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {เหตุผล: {reason}}\n}\n\nนี่เป็นการดำเนินการบังคับใช้ที่ร้ายแรง ข้อมูลบัญชีของคุณจะถูกลบอย่างถาวรตามวันที่กำหนด\n\nหากคุณเชื่อว่าการตัดสินใจนี้ไม่ถูกต้อง คุณสามารถยื่นอุทธรณ์ได้ ส่งอีเมลไปที่ {appeals_email} จากที่อยู่อีเมลนี้\n\n– ทีมความปลอดภัย {product_name}"
},
"self_deletion_scheduled": {
"subject": "กำหนดการลบบัญชีสำหรับ {product_name}",
"body": "สวัสดี {username},\n\nคุณร้องขอให้ลบบัญชี {product_name} บัญชีของคุณถูกกำหนดให้ลบอย่างถาวรในวันที่:\n\n{deletionDate, date, full} เวลา {deletionDate, time, short}\n\nหากคุณไม่ได้ร้องขอ ให้เข้าสู่ระบบบัญชีของคุณเพื่อยกเลิกการลบ เรายังแนะนำให้เปลี่ยนรหัสผ่านเพื่อรักษาความปลอดภัยบัญชี\n\n– ทีม {product_name}"
},
"unban_notification": {
"subject": "การระงับบัญชีสำหรับ {product_name} ถูกยกเลิกแล้ว",
"body": "สวัสดี {username},\n\nข่าวดี: การระงับบัญชี {product_name} ถูกยกเลิกแล้ว\n\n{reason, select,\n null {}\n other {เหตุผล: {reason}}\n}\n\nตอนนี้คุณสามารถเข้าสู่ระบบและใช้งาน {product_name} ได้ตามปกติ\n\n– ทีมความปลอดภัย {product_name}"
}
"account_disabled_suspicious": {
"subject": "บัญชี {product_name} ของคุณถูกปิดใช้งานชั่วคราว",
"body": "สวัสดี {username},\n\nเราปิดใช้งานบัญชี {product_name} ของคุณชั่วคราว เนื่องจากเราตรวจพบกิจกรรมที่น่าสงสัย\n\n{reason, select,\n null {}\n other {เหตุผล: {reason}}\n}\n\nหากต้องการเข้าถึงบัญชีอีกครั้ง ให้รีเซ็ตรหัสผ่าน:\n\n{forgotUrl}\n\nหลังจากรีเซ็ตรหัสผ่านแล้ว คุณจะสามารถเข้าสู่ระบบได้อีกครั้ง\n\nหากคุณเชื่อว่านี่เป็นข้อผิดพลาด โปรดติดต่อทีมสนับสนุนของเรา\n\n– ทีมความปลอดภัย {product_name}"
},
"account_scheduled_deletion": {
"subject": "บัญชี {product_name} ของคุณจะถูกลบอย่างถาวร",
"body": "สวัสดี {username},\n\nบัญชี {product_name} ของคุณจะถูกลบอย่างถาวรเนื่องจากละเมิดข้อกำหนดในการให้บริการหรือแนวทางปฏิบัติของคอมมูนิตี้ของเรา\n\nกำหนดการลบ: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {เหตุผล: {reason}}\n}\n\nนี่เป็นการดำเนินการบังคับใช้ที่ร้ายแรง ข้อมูลบัญชีของคุณจะถูกลบอย่างถาวรตามวันที่กำหนด\n\nโปรดตรวจสอบ:\n- ข้อกำหนดในการให้บริการ: {termsUrl}\n- แนวทางปฏิบัติของคอมมูนิตี้: {guidelinesUrl}\n\nกระบวนการอุทธรณ์:\nหากคุณเชื่อว่าการตัดสินใจนี้ไม่ถูกต้องหรือไม่ยุติธรรม คุณมีเวลา 60 วันในการยื่นอุทธรณ์ ส่งอีเมลไปที่ {appeals_email} จากที่อยู่อีเมลนี้\n\nในการอุทธรณ์ของคุณ:\n- อธิบายให้ชัดเจนว่าทำไมคุณถึงเชื่อว่าการตัดสินใจนั้นไม่ถูกต้องหรือไม่ยุติธรรม\n- ให้หลักฐานหรือบริบทที่เกี่ยวข้อง\n\nสมาชิกของทีมความปลอดภัย {product_name} จะตรวจสอบคำอุทธรณ์ของคุณและอาจระงับการลบที่รอดำเนินการไว้จนกว่าจะมีการตัดสินใจขั้นสุดท้าย\n\n– ทีมความปลอดภัย {product_name}"
},
"account_temp_banned": {
"subject": "บัญชี {product_name} ของคุณถูกระงับชั่วคราว",
"body": "สวัสดี {username},\n\nบัญชี {product_name} ของคุณถูกระงับชั่วคราวเนื่องจากละเมิดข้อกำหนดในการให้บริการหรือแนวทางปฏิบัติของคอมมูนิตี้ของเรา\n\nระยะเวลา: {durationHours, plural,\n =1 {1 ชั่วโมง}\n other {# ชั่วโมง}\n}\nระงับจนถึง: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {เหตุผล: {reason}}\n}\n\nในช่วงเวลานี้ คุณจะไม่สามารถเข้าถึงบัญชีของคุณได้\n\nโปรดตรวจสอบ:\n- ข้อกำหนดในการให้บริการ: {termsUrl}\n- แนวทางปฏิบัติของคอมมูนิตี้: {guidelinesUrl}\n\nหากคุณเชื่อว่าการตัดสินใจนี้ไม่ถูกต้องหรือไม่ยุติธรรม คุณสามารถยื่นอุทธรณ์ได้ ส่งอีเมลไปที่ {appeals_email} จากที่อยู่อีเมลนี้และอธิบายให้ชัดเจนว่าทำไมคุณถึงเชื่อว่าการตัดสินใจนั้นไม่ถูกต้อง เราจะตรวจสอบคำอุทธรณ์ของคุณและตอบกลับด้วยการตัดสินใจของเรา\n\n– ทีมความปลอดภัย {product_name}"
},
"donation_confirmation": {
"subject": "ขอบคุณสำหรับการบริจาค {product_name}",
"body": "สวัสดี,\n\nขอบคุณสำหรับการบริจาค {product_name}! {interval, select,\n month {การบริจาคแบบต่อเนื่อง}\n year {การบริจาคแบบต่อเนื่อง}\n other {การบริจาคครั้งเดียว}\n} {interval, select,\n month {ตั้งค่า}\n year {ตั้งค่า}\n other {ดำเนินการ}\n}เรียบร้อยแล้ว\n\nรายละเอียดการบริจาค:\nจำนวน: {amount} {currency} {interval, select,\n month {ต่อเดือน}\n year {ต่อปี}\n other {}\n}\n\nStripe จะส่งอีเมลใบเสร็จแยกต่างหากพร้อมไฟล์ PDF ใบแจ้งหนี้ให้คุณในไม่ช้า ซึ่งรวมถึงรายละเอียดการชำระเงินทั้งหมดและสามารถใช้เพื่อวัตถุประสงค์ทางภาษีได้\n\nคุณสามารถดูประวัติการบริจาค ดาวน์โหลดใบแจ้งหนี้ {interval, select,\n month {และจัดการหรือยกเลิกการสมัครสมาชิกของคุณ}\n year {และจัดการหรือยกเลิกการสมัครสมาชิกของคุณ}\n other {และจัดการการบริจาคในอนาคต}\n} ได้ตลอดเวลาโดยใช้ลิงก์นี้:\n\n{manageUrl}\n\nการสนับสนุนของคุณช่วยให้ {product_name} ดำเนินต่อไปได้ ขอบคุณ!\n\n– ทีม {product_name}"
},
"donation_magic_link": {
"subject": "จัดการการบริจาค {product_name}",
"body": "สวัสดี,\n\nคลิกลิงก์ด้านล่างเพื่อเข้าถึงพอร์ทัลผู้บริจาค:\n\n{manageUrl}\n\nในพอร์ทัล คุณสามารถจัดการการสมัครสมาชิก ดาวน์โหลดใบแจ้งหนี้ และดูประวัติการบริจาคของคุณได้\n\nลิงก์นี้จะหมดอายุในวันที่ {expiresAt, date, full} เวลา {expiresAt, time, short}\n\nหากคุณไม่ได้ร้องขอลิงก์นี้ คุณสามารถเพิกเฉยต่ออีเมลนี้ได้อย่างปลอดภัย\n\n– ทีม {product_name}"
},
"dsa_report_verification": {
"subject": "ยืนยันอีเมลสำหรับการรายงาน DSA",
"body": "สวัสดี,\n\nใช้รหัสยืนยันด้านล่างเพื่อส่งรายงาน Digital Services Act ของคุณบน {product_name}:\n\n{code}\n\nรหัสนี้จะหมดอายุในวันที่ {expiresAt, date, full} เวลา {expiresAt, time, short}\n\nหากคุณไม่ได้ร้องขอ คุณสามารถเพิกเฉยต่ออีเมลนี้ได้\n\n– ทีมความปลอดภัย {product_name}"
},
"email_change_new": {
"subject": "ยืนยันอีเมลใหม่สำหรับ {product_name}",
"body": "สวัสดี {username},\n\nป้อนรหัสนี้ในแอปเพื่อยืนยันอีเมลใหม่สำหรับบัญชี {product_name} ของคุณ:\n\n{code}\n\nรหัสนี้จะหมดอายุในวันที่ {expiresAt, date, full} เวลา {expiresAt, time, short}\n\nหากคุณไม่ได้ร้องขอ คุณสามารถเพิกเฉยต่ออีเมลนี้ได้\n\n– ทีม {product_name}"
},
"email_change_original": {
"subject": "ยืนยันการเปลี่ยนอีเมลสำหรับ {product_name}",
"body": "สวัสดี {username},\n\nเราได้รับคำขอให้เปลี่ยนที่อยู่อีเมลในบัญชี {product_name} ของคุณ\n\nหากต้องการยืนยันการเปลี่ยนแปลงนี้ ให้ป้อนรหัสนี้ในแอป:\n\n{code}\n\nรหัสนี้จะหมดอายุในวันที่ {expiresAt, date, full} เวลา {expiresAt, time, short}\n\nหากคุณไม่ได้ร้องขอ ให้รีบรักษาความปลอดภัยบัญชีของคุณ\n\n– ทีม {product_name}"
},
"email_change_revert": {
"subject": "อีเมลบัญชี {product_name} ถูกเปลี่ยนแล้ว",
"body": "สวัสดี {username},\n\nที่อยู่อีเมลในบัญชี {product_name} ของคุณถูกเปลี่ยนเป็น {newEmail}\n\nหากคุณทำการเปลี่ยนแปลงนี้ ไม่ต้องดำเนินการใดๆ หากคุณไม่ได้เปลี่ยน คุณสามารถย้อนกลับการเปลี่ยนแปลงและรักษาความปลอดภัยบัญชีของคุณโดยใช้ลิงก์นี้:\n\n{revertUrl}\n\nซึ่งจะกู้คืนอีเมลก่อนหน้าของคุณ ออกจากระบบทุกที่ ลบหมายเลขโทรศัพท์ที่เชื่อมโยง ปิดใช้งาน MFA และกำหนดให้คุณต้องตั้งรหัสผ่านใหม่\n\n– ทีมความปลอดภัย {product_name}"
},
"email_verification": {
"subject": "ยืนยันที่อยู่อีเมลสำหรับ {product_name}",
"body": "สวัสดี {username},\n\nโปรดยืนยันที่อยู่อีเมลสำหรับบัญชี {product_name} ของคุณโดยคลิกที่ลิงก์ด้านล่าง:\n\n{verifyUrl}\n\nหากคุณไม่ได้สร้างบัญชี {product_name} คุณสามารถเพิกเฉยต่ออีเมลนี้ได้เลย\n\nลิงก์นี้ใช้ได้เป็นเวลา 24 ชั่วโมง\n\n– ทีม {product_name}"
},
"gift_chargeback_notification": {
"subject": "สิทธิประโยชน์จากของขวัญที่คุณแลกรับถูกนำออกแล้ว",
"body": "สวัสดี {username},\n\nรหัสของขวัญที่คุณแลกรับนั้นเดิมทีชำระโดยผู้อื่น การชำระเงินดังกล่าวถูกยกเลิกในภายหลัง (การเรียกเก็บเงินคืน)\n\nด้วยเหตุนี้ เราจึงลบสิทธิประโยชน์ที่เพิ่มในบัญชีของคุณตอนที่คุณแลกรับของขวัญ\n\nหากคุณคิดว่านี่เป็นข้อผิดพลาด โปรดติดต่อทีมสนับสนุนของเราและระบุรายละเอียดใดๆ ที่คุณมีเกี่ยวกับรหัสของขวัญและเวลาที่คุณแลกรับ\n\n– ทีม {product_name}"
},
"harvest_completed": {
"subject": "ข้อมูลจาก {product_name} พร้อมให้ดาวน์โหลดแล้ว",
"body": "สวัสดี {username},\n\nข้อมูลของคุณพร้อมให้ดาวน์โหลดแล้ว\n\nลิงก์ดาวน์โหลด:\n{downloadUrl}\n\nจำนวนข้อความ: {totalMessages, number}\nขนาดไฟล์: {fileSizeMB, number} MB\n\nลิงก์นี้จะหมดอายุในวันที่ {expiresAt, date, full} เวลา {expiresAt, time, short}\n\nหากคุณไม่ได้ร้องขอการส่งออกนี้ โปรดเปลี่ยนรหัสผ่านทันทีและติดต่อทีมสนับสนุนของเรา\n\n– ทีม {product_name}"
},
"inactivity_warning": {
"subject": "บัญชี {product_name} ของคุณจะถูกลบเนื่องจากไม่มีการใช้งาน",
"body": "สวัสดี {username},\n\nเราไม่พบกิจกรรมในบัญชี {product_name} ตั้งแต่ {lastActiveDate, date, full}\n\nหากคุณไม่เข้าสู่ระบบภายในวันที่ {deletionDate, date, full} เวลา {deletionDate, time, short} บัญชีของคุณจะถูกลบอย่างถาวรเนื่องจากไม่มีการใช้งาน\n\nเข้าสู่ระบบที่นี่:\n{loginUrl}\n\nหากคุณใช้ {product_name} เมื่อเร็วๆ นี้ โปรดติดต่อทีมสนับสนุนของเราทันที\n\n– ทีม {product_name}"
},
"ip_authorization": {
"subject": "อนุมัติการเข้าสู่ระบบจาก IP ใหม่",
"body": "สวัสดี {username},\n\nเราตรวจพบความพยายามในการเข้าสู่ระบบบัญชี {product_name} ของคุณจากที่อยู่ IP ใหม่:\n\nที่อยู่ IP: {ipAddress}\nตำแหน่ง: {location}\n\nหากเป็นคุณ โปรดอนุญาตที่อยู่ IP นี้โดยคลิกที่ลิงก์ด้านล่าง:\n\n{authUrl}\n\nหากคุณไม่ได้พยายามเข้าสู่ระบบ เปลี่ยนรหัสผ่านทันที\n\nลิงก์นี้ใช้ได้เป็นเวลา 30 นาที\n\n– ทีม {product_name}"
},
"password_change_verification": {
"subject": "ยืนยันการเปลี่ยนรหัสผ่านสำหรับ {product_name}",
"body": "สวัสดี {username},\n\nเราได้รับคำขอให้เปลี่ยนรหัสผ่านในบัญชี {product_name} ของคุณ\n\nหากต้องการยืนยันการเปลี่ยนแปลงนี้ ให้ป้อนรหัสนี้ในแอป:\n\n{code}\n\nรหัสนี้จะหมดอายุในเวลา {expiresAt}\n\nหากคุณไม่ได้ร้องขอ อาจมีคนเข้าถึงบัญชีของคุณได้ เปลี่ยนรหัสผ่านทันทีและเปิดใช้งานการยืนยันตัวตนสองชั้น\n\n– ทีม {product_name}"
},
"password_reset": {
"subject": "รีเซ็ตรหัสผ่านสำหรับ {product_name}",
"body": "สวัสดี {username},\n\nคุณได้ร้องขอการรีเซ็ตรหัสผ่าน {product_name} ใช้ลิงก์ด้านล่างเพื่อตั้งรหัสผ่านใหม่:\n\n{resetUrl}\n\nหากคุณไม่ได้ร้องขอ คุณสามารถเพิกเฉยต่ออีเมลนี้ได้เลย\n\nลิงก์นี้ใช้ได้เป็นเวลา 1 ชั่วโมง\n\n– ทีม {product_name}"
},
"registration_approved": {
"subject": "การลงทะเบียนสำหรับ {product_name} ได้รับการอนุมัติแล้ว",
"body": "สวัสดี {username},\n\nข่าวดี: การลงทะเบียน {product_name} ได้รับการอนุมัติแล้ว\n\nตอนนี้คุณสามารถเข้าสู่ระบบแอป {product_name} ได้ที่นี่:\n{channelsUrl}\n\nยินดีต้อนรับสู่คอมมูนิตี้ {product_name}\n\n– ทีม {product_name}"
},
"report_resolved": {
"subject": "รายงานเกี่ยวกับ {product_name} ได้รับการตรวจสอบแล้ว",
"body": "สวัสดี {username},\n\nทีมความปลอดภัยของเราได้ตรวจสอบรายงานของคุณ (ID: {reportId}) แล้ว{hasComment, select, yes {\n\nการตอบกลับจากทีมความปลอดภัย:\n{publicComment}} other {}}\n\nขอบคุณที่ช่วยให้ {product_name} ปลอดภัยสำหรับทุกคน เราให้ความสำคัญกับรายงานทั้งหมดและขอขอบคุณสำหรับการมีส่วนร่วมของคุณในคอมมูนิตี้\n\nหากคุณมีคำถามหรือข้อกังวลใดๆ เกี่ยวกับผลลัพธ์นี้ โปรดติดต่อ {safety_email}\n\n– ทีมความปลอดภัย {product_name}"
},
"scheduled_deletion_notification": {
"subject": "บัญชี {product_name} ของคุณจะถูกลบอย่างถาวร",
"body": "สวัสดี {username},\n\nบัญชี {product_name} จะถูกลบอย่างถาวร\n\nกำหนดการลบ: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {เหตุผล: {reason}}\n}\n\nนี่เป็นการดำเนินการบังคับใช้ที่ร้ายแรง ข้อมูลบัญชีของคุณจะถูกลบอย่างถาวรตามวันที่กำหนด\n\nหากคุณเชื่อว่าการตัดสินใจนี้ไม่ถูกต้อง คุณสามารถยื่นอุทธรณ์ได้ ส่งอีเมลไปที่ {appeals_email} จากที่อยู่อีเมลนี้\n\n– ทีมความปลอดภัย {product_name}"
},
"self_deletion_scheduled": {
"subject": "กำหนดการลบบัญชีสำหรับ {product_name}",
"body": "สวัสดี {username},\n\nคุณร้องขอให้ลบบัญชี {product_name} บัญชีของคุณถูกกำหนดให้ลบอย่างถาวรในวันที่:\n\n{deletionDate, date, full} เวลา {deletionDate, time, short}\n\nหากคุณไม่ได้ร้องขอ ให้เข้าสู่ระบบบัญชีของคุณเพื่อยกเลิกการลบ เรายังแนะนำให้เปลี่ยนรหัสผ่านเพื่อรักษาความปลอดภัยบัญชี\n\n– ทีม {product_name}"
},
"unban_notification": {
"subject": "การระงับบัญชีสำหรับ {product_name} ถูกยกเลิกแล้ว",
"body": "สวัสดี {username},\n\nข่าวดี: การระงับบัญชี {product_name} ถูกยกเลิกแล้ว\n\n{reason, select,\n null {}\n other {เหตุผล: {reason}}\n}\n\nตอนนี้คุณสามารถเข้าสู่ระบบและใช้งาน {product_name} ได้ตามปกติ\n\n– ทีมความปลอดภัย {product_name}"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "{product_name} hesabın geçici olarak devre dışı bırakıldı",
"body": "Merhaba {username},\n\nŞüpheli etkinlik tespit ettiğimiz için {product_name} hesabını geçici olarak devre dışı bıraktık.\n\n{reason, select,\n null {}\n other {Sebep: {reason}}\n}\n\nHesabına tekrar erişmek için şifreni sıfırlaman gerekiyor:\n\n{forgotUrl}\n\nŞifreni sıfırladıktan sonra tekrar giriş yapabilirsin.\n\nBunun bir hata olduğunu düşünüyorsan, lütfen destek ekibimizle iletişime geç.\n\n– {product_name} Güvenlik Ekibi"
},
"account_scheduled_deletion": {
"subject": "{product_name} hesabın kalıcı olarak silinecek",
"body": "Merhaba {username},\n\nHizmet Şartlarımızı veya Topluluk Kurallarımızı ihlal ettiğin için {product_name} hesabın kalıcı olarak silinmek üzere planlandı.\n\nPlanlanan silme tarihi: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Sebep: {reason}}\n}\n\nBu ciddi bir yaptırım eylemidir. Hesap verilerin planlanan tarihte kalıcı olarak silinecektir.\n\nLütfen incele:\n- Hizmet Şartları: {termsUrl}\n- Topluluk Kuralları: {guidelinesUrl}\n\nİtiraz süreci:\nBu yaptırım kararının yanlış veya haksız olduğuna inanıyorsan, itiraz göndermek için 60 günün var. Bu e-posta adresinden {appeals_email} adresine e-posta gönder.\n\nİtirazında:\n- Yaptırım kararının neden yanlış veya haksız olduğuna inandığını açıkça açıkla\n- İlgili kanıt veya bağlam sağla\n\n{product_name} Güvenlik Ekibi'nden bir üye itirazını inceleyecek ve nihai bir karar verilene kadar bekleyen silme işlemini duraklatabilir.\n\n– {product_name} Güvenlik Ekibi"
},
"account_temp_banned": {
"subject": "{product_name} hesabın geçici olarak askıya alındı",
"body": "Merhaba {username},\n\nHizmet Şartlarımızı veya Topluluk Kurallarımızı ihlal ettiğin için {product_name} hesabını geçici olarak askıya aldık.\n\nSüre: {durationHours, plural,\n =1 {1 saat}\n other {# saat}\n}\nAskıya alınma bitiş tarihi: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Sebep: {reason}}\n}\n\nBu süre boyunca hesabına erişemeyeceksin.\n\nLütfen incele:\n- Hizmet Şartları: {termsUrl}\n- Topluluk Kuralları: {guidelinesUrl}\n\nBu yaptırım kararının yanlış veya haksız olduğuna inanıyorsan, itiraz gönderebilirsin. Bu e-posta adresinden {appeals_email} adresine e-posta gönder ve kararın neden yanlış olduğuna inandığını açıkça açıkla. İtirazını inceleyip kararımızı sana bildireceğiz.\n\n– {product_name} Güvenlik Ekibi"
},
"donation_confirmation": {
"subject": "{product_name}'a yaptığın bağış için teşekkürler",
"body": "Merhaba,\n\n{product_name}'a yaptığın bağış için teşekkürler! {interval, select,\n month {tekrarlayan bağışın}\n year {tekrarlayan bağışın}\n other {tek seferlik bağışın}\n} başarıyla {interval, select,\n month {ayarlandı}\n year {ayarlandı}\n other {işlendi}\n}.\n\nBağış detayları:\nMiktar: {amount} {currency} {interval, select,\n month {aylık}\n year {yıllık}\n other {}\n}\n\nStripe, kısa süre içinde fatura PDF'ini içeren ayrı bir makbuzu sana e-posta ile gönderecektir. Bu, tüm ödeme detaylarını içerir ve vergi amaçlı kullanılabilir.\n\nBu bağlantıyı kullanarak istediğin zaman bağış geçmişini görüntüleyebilir, faturaları indirebilir, {interval, select,\n month {ve aboneliğini yönetebilir veya iptal edebilirsin}\n year {ve aboneliğini yönetebilir veya iptal edebilirsin}\n other {ve gelecekteki bağışlarını yönetebilirsin}\n}:\n\n{manageUrl}\n\nDesteğin {product_name}'ın çalışmaya devam etmesine yardımcı oluyor. Teşekkürler!\n\n– {product_name} Ekibi"
},
"donation_magic_link": {
"subject": "{product_name}'ın bağışlarını yönet",
"body": "Merhaba,\n\nBağışçı portalına erişmek için aşağıdaki bağlantıya tıkla:\n\n{manageUrl}\n\nPortalda aboneliklerini yönetebilir, faturaları indirebilir ve bağış geçmişini görüntüleyebilirsin.\n\nBu bağlantı {expiresAt, date, full} {expiresAt, time, short} tarihinde sona erecektir.\n\nBu bağlantıyı sen talep etmediysen, bu e-postayı güvenle yok sayabilirsin.\n\n– {product_name} Ekibi"
},
"dsa_report_verification": {
"subject": "DSA raporu için e-postanı doğrula",
"body": "Merhaba,\n\n{product_name}'daki Dijital Hizmetler Yasası raporunu göndermek için aşağıdaki doğrulama kodunu kullan:\n\n{code}\n\nBu kod {expiresAt, date, full} {expiresAt, time, short} tarihinde sona erecektir.\n\nBunu sen talep etmediysen, bu e-postayı güvenle yok sayabilirsin.\n\n– {product_name} Güvenlik Ekibi"
},
"email_change_new": {
"subject": "{product_name}'ın yeni e-postasını doğrula",
"body": "Merhaba {username},\n\nYeni {product_name} e-postanı doğrulamak için bu kodu uygulamaya gir:\n\n{code}\n\nBu kod {expiresAt, date, full} {expiresAt, time, short} tarihinde sona erecektir.\n\nBunu sen talep etmediysen, bu e-postayı güvenle yok sayabilirsin.\n\n– {product_name} Ekibi"
},
"email_change_original": {
"subject": "{product_name} e-posta değişikliğini onayla",
"body": "Merhaba {username},\n\n{product_name} hesabındaki e-posta adresini değiştirme isteği aldık.\n\nBu değişikliği onaylamak için bu kodu uygulamaya gir:\n\n{code}\n\nBu kod {expiresAt, date, full} {expiresAt, time, short} tarihinde sona erecektir.\n\nBunu sen talep etmediysen, lütfen hemen hesabını güvence altına al.\n\n– {product_name} Ekibi"
},
"email_change_revert": {
"subject": "{product_name} e-posta adresin değiştirildi",
"body": "Merhaba {username},\n\n{product_name} hesabındaki e-posta adresi {newEmail} olarak değiştirildi.\n\nBu değişikliği sen yaptıysan, herhangi bir işlem yapmana gerek yok. Yapmadıysan, bu bağlantıyı kullanarak değişikliği geri alabilir ve hesabını güvence altına alabilirsin:\n\n{revertUrl}\n\nBu işlem, önceki e-postanı geri yükleyecek, seni her yerden çıkış yapacak, bağlantılı telefon numaralarını kaldıracak, MFA'yı devre dışı bırakacak ve yeni bir şifre belirlemeni gerektirecektir.\n\n– {product_name} Güvenlik Ekibi"
},
"email_verification": {
"subject": "{product_name} e-posta adresini doğrula",
"body": "Merhaba {username},\n\n{product_name} hesabının e-posta adresini aşağıdaki bağlantıya tıklayarak doğrula:\n\n{verifyUrl}\n\nBir {product_name} hesabı oluşturmadıysan, bu e-postayı güvenle yok sayabilirsin.\n\nBu bağlantı 24 saat geçerlidir.\n\n– {product_name} Ekibi"
},
"gift_chargeback_notification": {
"subject": "Kullandığın hediye avantajları kaldırıldı",
"body": "Merhaba {username},\n\nKullandığın bir hediye kodunun ödemesi başlangıçta başka biri tarafından yapılmıştı. Bu ödeme daha sonra geri alındı (ters ibraz).\n\nBu nedenle, hediyeyi kullandığında hesabına eklenen avantajlar kaldırıldı.\n\nBunun bir hata olduğunu düşünüyorsan, lütfen destek ekibimizle iletişime geç ve hediye koduyla ilgili sahip olduğun tüm detayları ve ne zaman kullandığını belirt.\n\n– {product_name} Ekibi"
},
"harvest_completed": {
"subject": "{product_name} veri dışa aktarımın indirilmeye hazır",
"body": "Merhaba {username},\n\nVeri dışa aktarımın hazır.\n\nİndirme bağlantısı:\n{downloadUrl}\n\nDahil edilen mesajlar: {totalMessages, number}\nDosya boyutu: {fileSizeMB, number} MB\n\nBu bağlantı {expiresAt, date, full} {expiresAt, time, short} tarihinde sona erecektir.\n\nBu dışa aktarımı sen talep etmediysen, lütfen hemen şifreni değiştir ve destek ekibimizle iletişime geç.\n\n– {product_name} Ekibi"
},
"inactivity_warning": {
"subject": "{product_name} hesabın hareketsizlik nedeniyle silinecek",
"body": "Merhaba {username},\n\n{lastActiveDate, date, full} tarihinden beri {product_name} hesabında herhangi bir etkinlik görmedik.\n\n{deletionDate, date, full} {deletionDate, time, short} tarihine kadar giriş yapmazsan, hesabın hareketsizlik nedeniyle kalıcı olarak silinecektir.\n\nBuradan giriş yap:\n{loginUrl}\n\n{product_name}'ı yakın zamanda kullandıysan, lütfen hemen destek ekibimizle iletişime geç.\n\n– {product_name} Ekibi"
},
"ip_authorization": {
"subject": "Yeni bir IP adresinden girişi yetkilendir",
"body": "Merhaba {username},\n\n{product_name} hesabına yeni bir IP adresinden giriş denemesi tespit ettik:\n\nIP adresi: {ipAddress}\nKonum: {location}\n\nBu sen isen, lütfen aşağıdaki bağlantıya tıklayarak bu IP adresini yetkilendir:\n\n{authUrl}\n\nGiriş yapmaya sen çalışmadıysan, lütfen hemen şifreni değiştir.\n\nBu bağlantı 30 dakika boyunca geçerlidir.\n\n– {product_name} Ekibi"
},
"password_change_verification": {
"subject": "{product_name} şifre değişikliğini onayla",
"body": "Merhaba {username},\n\n{product_name} hesabının şifresini değiştirme isteği aldık.\n\nBu değişikliği onaylamak için bu kodu uygulamaya gir:\n\n{code}\n\nBu kod {expiresAt} tarihinde sona erecektir.\n\nBunu sen talep etmediysen, birisi hesabına erişmiş olabilir. Şifreni hemen değiştir ve iki faktörlü kimlik doğrulamayı etkinleştir.\n\n– {product_name} Ekibi"
},
"password_reset": {
"subject": "{product_name} şifreni sıfırla",
"body": "Merhaba {username},\n\n{product_name} şifre sıfırlama talebinde bulundun. Yeni bir şifre belirlemek için aşağıdaki bağlantıyı kullan:\n\n{resetUrl}\n\nBunu sen talep etmediysen, bu e-postayı güvenle yok sayabilirsin.\n\nBu bağlantı 1 saat geçerlidir.\n\n– {product_name} Ekibi"
},
"registration_approved": {
"subject": "{product_name} kaydın onaylandı",
"body": "Merhaba {username},\n\nİyi haber: {product_name} kaydın onaylandı.\n\nArtık {product_name} uygulamasına buradan giriş yapabilirsin:\n{channelsUrl}\n\n{product_name} topluluğuna hoş geldin.\n\n– {product_name} Ekibi"
},
"report_resolved": {
"subject": "{product_name} raporun incelendi",
"body": "Merhaba {username},\n\nRaporun (Kimlik: {reportId}) Güvenlik Ekibimiz tarafından incelendi.{hasComment, select, yes {\n\nGüvenlik Ekibinden yanıt:\n{publicComment}} other {}}\n\n{product_name}'ı herkes için güvenli tutmaya yardımcı olduğun için teşekkür ederiz. Tüm raporları ciddiye alıyoruz ve topluluğa katkını takdir ediyoruz.\n\nBu sonuç hakkında herhangi bir sorunun veya endişen varsa, lütfen {safety_email} adresine ulaşabilirsin.\n\n– {product_name} Güvenlik Ekibi"
},
"scheduled_deletion_notification": {
"subject": "{product_name} hesabın kalıcı olarak silinecek",
"body": "Merhaba {username},\n\n{product_name} hesabın kalıcı olarak silinmek üzere planlandı.\n\nPlanlanan silme tarihi: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Sebep: {reason}}\n}\n\nBu ciddi bir yaptırım eylemidir. Hesap verilerin planlanan tarihte kalıcı olarak silinecektir.\n\nBu yaptırım kararının yanlış olduğuna inanıyorsan, itiraz gönderebilirsin. Bu e-posta adresinden {appeals_email} adresine e-posta gönder.\n\n– {product_name} Güvenlik Ekibi"
},
"self_deletion_scheduled": {
"subject": "{product_name} hesabının silinmesi planlandı",
"body": "Merhaba {username},\n\n{product_name} hesabını silme talebinde bulundun. Hesabın kalıcı olarak silinmek üzere planlandı:\n\n{deletionDate, date, full} {deletionDate, time, short} tarihinde\n\nBunu sen talep etmediysen, silme işlemini iptal etmek için hesabına giriş yap. Ayrıca hesabını güvence altına almak için şifreni değiştirmeni öneririz.\n\n– {product_name} Ekibi"
},
"unban_notification": {
"subject": "{product_name} hesabının askıya alınması kaldırıldı",
"body": "Merhaba {username},\n\nİyi haber: {product_name} hesabının askıya alınması kaldırıldı.\n\n{reason, select,\n null {}\n other {Sebep: {reason}}\n}\n\nArtık tekrar giriş yapabilir ve {product_name}'ı normal şekilde kullanmaya devam edebilirsin.\n\n– {product_name} Güvenlik Ekibi"
}
"account_disabled_suspicious": {
"subject": "{product_name} hesabın geçici olarak devre dışı bırakıldı",
"body": "Merhaba {username},\n\nŞüpheli etkinlik tespit ettiğimiz için {product_name} hesabını geçici olarak devre dışı bıraktık.\n\n{reason, select,\n null {}\n other {Sebep: {reason}}\n}\n\nHesabına tekrar erişmek için şifreni sıfırlaman gerekiyor:\n\n{forgotUrl}\n\nŞifreni sıfırladıktan sonra tekrar giriş yapabilirsin.\n\nBunun bir hata olduğunu düşünüyorsan, lütfen destek ekibimizle iletişime geç.\n\n– {product_name} Güvenlik Ekibi"
},
"account_scheduled_deletion": {
"subject": "{product_name} hesabın kalıcı olarak silinecek",
"body": "Merhaba {username},\n\nHizmet Şartlarımızı veya Topluluk Kurallarımızı ihlal ettiğin için {product_name} hesabın kalıcı olarak silinmek üzere planlandı.\n\nPlanlanan silme tarihi: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Sebep: {reason}}\n}\n\nBu ciddi bir yaptırım eylemidir. Hesap verilerin planlanan tarihte kalıcı olarak silinecektir.\n\nLütfen incele:\n- Hizmet Şartları: {termsUrl}\n- Topluluk Kuralları: {guidelinesUrl}\n\nİtiraz süreci:\nBu yaptırım kararının yanlış veya haksız olduğuna inanıyorsan, itiraz göndermek için 60 günün var. Bu e-posta adresinden {appeals_email} adresine e-posta gönder.\n\nİtirazında:\n- Yaptırım kararının neden yanlış veya haksız olduğuna inandığını açıkça açıkla\n- İlgili kanıt veya bağlam sağla\n\n{product_name} Güvenlik Ekibi'nden bir üye itirazını inceleyecek ve nihai bir karar verilene kadar bekleyen silme işlemini duraklatabilir.\n\n– {product_name} Güvenlik Ekibi"
},
"account_temp_banned": {
"subject": "{product_name} hesabın geçici olarak askıya alındı",
"body": "Merhaba {username},\n\nHizmet Şartlarımızı veya Topluluk Kurallarımızı ihlal ettiğin için {product_name} hesabını geçici olarak askıya aldık.\n\nSüre: {durationHours, plural,\n =1 {1 saat}\n other {# saat}\n}\nAskıya alınma bitiş tarihi: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Sebep: {reason}}\n}\n\nBu süre boyunca hesabına erişemeyeceksin.\n\nLütfen incele:\n- Hizmet Şartları: {termsUrl}\n- Topluluk Kuralları: {guidelinesUrl}\n\nBu yaptırım kararının yanlış veya haksız olduğuna inanıyorsan, itiraz gönderebilirsin. Bu e-posta adresinden {appeals_email} adresine e-posta gönder ve kararın neden yanlış olduğuna inandığını açıkça açıkla. İtirazını inceleyip kararımızı sana bildireceğiz.\n\n– {product_name} Güvenlik Ekibi"
},
"donation_confirmation": {
"subject": "{product_name}'a yaptığın bağış için teşekkürler",
"body": "Merhaba,\n\n{product_name}'a yaptığın bağış için teşekkürler! {interval, select,\n month {tekrarlayan bağışın}\n year {tekrarlayan bağışın}\n other {tek seferlik bağışın}\n} başarıyla {interval, select,\n month {ayarlandı}\n year {ayarlandı}\n other {işlendi}\n}.\n\nBağış detayları:\nMiktar: {amount} {currency} {interval, select,\n month {aylık}\n year {yıllık}\n other {}\n}\n\nStripe, kısa süre içinde fatura PDF'ini içeren ayrı bir makbuzu sana e-posta ile gönderecektir. Bu, tüm ödeme detaylarını içerir ve vergi amaçlı kullanılabilir.\n\nBu bağlantıyı kullanarak istediğin zaman bağış geçmişini görüntüleyebilir, faturaları indirebilir, {interval, select,\n month {ve aboneliğini yönetebilir veya iptal edebilirsin}\n year {ve aboneliğini yönetebilir veya iptal edebilirsin}\n other {ve gelecekteki bağışlarını yönetebilirsin}\n}:\n\n{manageUrl}\n\nDesteğin {product_name}'ın çalışmaya devam etmesine yardımcı oluyor. Teşekkürler!\n\n– {product_name} Ekibi"
},
"donation_magic_link": {
"subject": "{product_name}'ın bağışlarını yönet",
"body": "Merhaba,\n\nBağışçı portalına erişmek için aşağıdaki bağlantıya tıkla:\n\n{manageUrl}\n\nPortalda aboneliklerini yönetebilir, faturaları indirebilir ve bağış geçmişini görüntüleyebilirsin.\n\nBu bağlantı {expiresAt, date, full} {expiresAt, time, short} tarihinde sona erecektir.\n\nBu bağlantıyı sen talep etmediysen, bu e-postayı güvenle yok sayabilirsin.\n\n– {product_name} Ekibi"
},
"dsa_report_verification": {
"subject": "DSA raporu için e-postanı doğrula",
"body": "Merhaba,\n\n{product_name}'daki Dijital Hizmetler Yasası raporunu göndermek için aşağıdaki doğrulama kodunu kullan:\n\n{code}\n\nBu kod {expiresAt, date, full} {expiresAt, time, short} tarihinde sona erecektir.\n\nBunu sen talep etmediysen, bu e-postayı güvenle yok sayabilirsin.\n\n– {product_name} Güvenlik Ekibi"
},
"email_change_new": {
"subject": "{product_name}'ın yeni e-postasını doğrula",
"body": "Merhaba {username},\n\nYeni {product_name} e-postanı doğrulamak için bu kodu uygulamaya gir:\n\n{code}\n\nBu kod {expiresAt, date, full} {expiresAt, time, short} tarihinde sona erecektir.\n\nBunu sen talep etmediysen, bu e-postayı güvenle yok sayabilirsin.\n\n– {product_name} Ekibi"
},
"email_change_original": {
"subject": "{product_name} e-posta değişikliğini onayla",
"body": "Merhaba {username},\n\n{product_name} hesabındaki e-posta adresini değiştirme isteği aldık.\n\nBu değişikliği onaylamak için bu kodu uygulamaya gir:\n\n{code}\n\nBu kod {expiresAt, date, full} {expiresAt, time, short} tarihinde sona erecektir.\n\nBunu sen talep etmediysen, lütfen hemen hesabını güvence altına al.\n\n– {product_name} Ekibi"
},
"email_change_revert": {
"subject": "{product_name} e-posta adresin değiştirildi",
"body": "Merhaba {username},\n\n{product_name} hesabındaki e-posta adresi {newEmail} olarak değiştirildi.\n\nBu değişikliği sen yaptıysan, herhangi bir işlem yapmana gerek yok. Yapmadıysan, bu bağlantıyı kullanarak değişikliği geri alabilir ve hesabını güvence altına alabilirsin:\n\n{revertUrl}\n\nBu işlem, önceki e-postanı geri yükleyecek, seni her yerden çıkış yapacak, bağlantılı telefon numaralarını kaldıracak, MFA'yı devre dışı bırakacak ve yeni bir şifre belirlemeni gerektirecektir.\n\n– {product_name} Güvenlik Ekibi"
},
"email_verification": {
"subject": "{product_name} e-posta adresini doğrula",
"body": "Merhaba {username},\n\n{product_name} hesabının e-posta adresini aşağıdaki bağlantıya tıklayarak doğrula:\n\n{verifyUrl}\n\nBir {product_name} hesabı oluşturmadıysan, bu e-postayı güvenle yok sayabilirsin.\n\nBu bağlantı 24 saat geçerlidir.\n\n– {product_name} Ekibi"
},
"gift_chargeback_notification": {
"subject": "Kullandığın hediye avantajları kaldırıldı",
"body": "Merhaba {username},\n\nKullandığın bir hediye kodunun ödemesi başlangıçta başka biri tarafından yapılmıştı. Bu ödeme daha sonra geri alındı (ters ibraz).\n\nBu nedenle, hediyeyi kullandığında hesabına eklenen avantajlar kaldırıldı.\n\nBunun bir hata olduğunu düşünüyorsan, lütfen destek ekibimizle iletişime geç ve hediye koduyla ilgili sahip olduğun tüm detayları ve ne zaman kullandığını belirt.\n\n– {product_name} Ekibi"
},
"harvest_completed": {
"subject": "{product_name} veri dışa aktarımın indirilmeye hazır",
"body": "Merhaba {username},\n\nVeri dışa aktarımın hazır.\n\nİndirme bağlantısı:\n{downloadUrl}\n\nDahil edilen mesajlar: {totalMessages, number}\nDosya boyutu: {fileSizeMB, number} MB\n\nBu bağlantı {expiresAt, date, full} {expiresAt, time, short} tarihinde sona erecektir.\n\nBu dışa aktarımı sen talep etmediysen, lütfen hemen şifreni değiştir ve destek ekibimizle iletişime geç.\n\n– {product_name} Ekibi"
},
"inactivity_warning": {
"subject": "{product_name} hesabın hareketsizlik nedeniyle silinecek",
"body": "Merhaba {username},\n\n{lastActiveDate, date, full} tarihinden beri {product_name} hesabında herhangi bir etkinlik görmedik.\n\n{deletionDate, date, full} {deletionDate, time, short} tarihine kadar giriş yapmazsan, hesabın hareketsizlik nedeniyle kalıcı olarak silinecektir.\n\nBuradan giriş yap:\n{loginUrl}\n\n{product_name}'ı yakın zamanda kullandıysan, lütfen hemen destek ekibimizle iletişime geç.\n\n– {product_name} Ekibi"
},
"ip_authorization": {
"subject": "Yeni bir IP adresinden girişi yetkilendir",
"body": "Merhaba {username},\n\n{product_name} hesabına yeni bir IP adresinden giriş denemesi tespit ettik:\n\nIP adresi: {ipAddress}\nKonum: {location}\n\nBu sen isen, lütfen aşağıdaki bağlantıya tıklayarak bu IP adresini yetkilendir:\n\n{authUrl}\n\nGiriş yapmaya sen çalışmadıysan, lütfen hemen şifreni değiştir.\n\nBu bağlantı 30 dakika boyunca geçerlidir.\n\n– {product_name} Ekibi"
},
"password_change_verification": {
"subject": "{product_name} şifre değişikliğini onayla",
"body": "Merhaba {username},\n\n{product_name} hesabının şifresini değiştirme isteği aldık.\n\nBu değişikliği onaylamak için bu kodu uygulamaya gir:\n\n{code}\n\nBu kod {expiresAt} tarihinde sona erecektir.\n\nBunu sen talep etmediysen, birisi hesabına erişmiş olabilir. Şifreni hemen değiştir ve iki faktörlü kimlik doğrulamayı etkinleştir.\n\n– {product_name} Ekibi"
},
"password_reset": {
"subject": "{product_name} şifreni sıfırla",
"body": "Merhaba {username},\n\n{product_name} şifre sıfırlama talebinde bulundun. Yeni bir şifre belirlemek için aşağıdaki bağlantıyı kullan:\n\n{resetUrl}\n\nBunu sen talep etmediysen, bu e-postayı güvenle yok sayabilirsin.\n\nBu bağlantı 1 saat geçerlidir.\n\n– {product_name} Ekibi"
},
"registration_approved": {
"subject": "{product_name} kaydın onaylandı",
"body": "Merhaba {username},\n\nİyi haber: {product_name} kaydın onaylandı.\n\nArtık {product_name} uygulamasına buradan giriş yapabilirsin:\n{channelsUrl}\n\n{product_name} topluluğuna hoş geldin.\n\n– {product_name} Ekibi"
},
"report_resolved": {
"subject": "{product_name} raporun incelendi",
"body": "Merhaba {username},\n\nRaporun (Kimlik: {reportId}) Güvenlik Ekibimiz tarafından incelendi.{hasComment, select, yes {\n\nGüvenlik Ekibinden yanıt:\n{publicComment}} other {}}\n\n{product_name}'ı herkes için güvenli tutmaya yardımcı olduğun için teşekkür ederiz. Tüm raporları ciddiye alıyoruz ve topluluğa katkını takdir ediyoruz.\n\nBu sonuç hakkında herhangi bir sorunun veya endişen varsa, lütfen {safety_email} adresine ulaşabilirsin.\n\n– {product_name} Güvenlik Ekibi"
},
"scheduled_deletion_notification": {
"subject": "{product_name} hesabın kalıcı olarak silinecek",
"body": "Merhaba {username},\n\n{product_name} hesabın kalıcı olarak silinmek üzere planlandı.\n\nPlanlanan silme tarihi: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Sebep: {reason}}\n}\n\nBu ciddi bir yaptırım eylemidir. Hesap verilerin planlanan tarihte kalıcı olarak silinecektir.\n\nBu yaptırım kararının yanlış olduğuna inanıyorsan, itiraz gönderebilirsin. Bu e-posta adresinden {appeals_email} adresine e-posta gönder.\n\n– {product_name} Güvenlik Ekibi"
},
"self_deletion_scheduled": {
"subject": "{product_name} hesabının silinmesi planlandı",
"body": "Merhaba {username},\n\n{product_name} hesabını silme talebinde bulundun. Hesabın kalıcı olarak silinmek üzere planlandı:\n\n{deletionDate, date, full} {deletionDate, time, short} tarihinde\n\nBunu sen talep etmediysen, silme işlemini iptal etmek için hesabına giriş yap. Ayrıca hesabını güvence altına almak için şifreni değiştirmeni öneririz.\n\n– {product_name} Ekibi"
},
"unban_notification": {
"subject": "{product_name} hesabının askıya alınması kaldırıldı",
"body": "Merhaba {username},\n\nİyi haber: {product_name} hesabının askıya alınması kaldırıldı.\n\n{reason, select,\n null {}\n other {Sebep: {reason}}\n}\n\nArtık tekrar giriş yapabilir ve {product_name}'ı normal şekilde kullanmaya devam edebilirsin.\n\n– {product_name} Güvenlik Ekibi"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "Твій акаунт {product_name} тимчасово вимкнено",
"body": "Привіт, {username},\n\nМи тимчасово вимкнули твій акаунт {product_name}, оскільки виявили підозрілу активність.\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nЩоб відновити доступ до акаунту, тобі потрібно скинути пароль:\n\n{forgotUrl}\n\nПісля скидання пароля ти зможеш знову увійти.\n\nЯкщо ти вважаєш, що це помилка, будь ласка, зв'яжися з нашою службою підтримки.\n\n– Команда безпеки {product_name}"
},
"account_scheduled_deletion": {
"subject": "Твій акаунт {product_name} видалять назавжди",
"body": "Привіт, {username},\n\nТвій акаунт {product_name} буде остаточно видалено через порушення наших Умов надання послуг або Правил спільноти.\n\nВидалення заплановано на: {deletionDate, date, full} о {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nЦе серйозне рішення. Дані твого акаунту остаточно видалять у заплановану дату.\n\nБудь ласка, переглянь:\n- Умови надання послуг: {termsUrl}\n- Правила спільноти: {guidelinesUrl}\n\nПроцес апеляції:\nЯкщо ти вважаєш, що це рішення було неправильним або необґрунтованим, у тебе є 60 днів, щоб подати апеляцію. Надішли електронний лист на {appeals_email} з цієї електронної адреси.\n\nУ твоїй апеляції:\n- Чітко поясни, чому ти вважаєш, що рішення було неправильним або необґрунтованим\n- Надай будь-які відповідні докази або контекст\n\nКоманда безпеки {product_name} розгляне твою апеляцію та може призупинити видалення до ухвалення остаточного рішення.\n\n– Команда безпеки {product_name}"
},
"account_temp_banned": {
"subject": "Твій акаунт {product_name} тимчасово призупинено",
"body": "Привіт, {username},\n\nТвій акаунт {product_name} тимчасово призупинено за порушення наших Умов надання послуг або Правил спільноти.\n\nТривалість: {durationHours, plural,\n one {1 година} few {години}\n many {годин} other {# години}\n}\nПризупинено до: {bannedUntil, date, full} о {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nПротягом цього часу ти не зможеш отримати доступ до свого акаунту.\n\nБудь ласка, переглянь:\n- Умови надання послуг: {termsUrl}\n- Правила спільноти: {guidelinesUrl}\n\nЯкщо ти вважаєш, що це рішення було неправильним або необґрунтованим, ти можеш подати апеляцію. Надішли електронний лист на {appeals_email} з цієї електронної адреси та чітко поясни, чому ти вважаєш рішення неправильним. Ми розглянемо твою апеляцію та відповімо нашим рішенням.\n\n– Команда безпеки {product_name}"
},
"donation_confirmation": {
"subject": "Дякуємо за твою пожертву для {product_name}",
"body": "Привіт,\n\nДякуємо за твою пожертву для {product_name}! Твоя {interval, select,\n month {регулярна пожертва}\n year {регулярна пожертва}\n other {одноразова пожертва}\n} {interval, select,\n month {налаштована}\n year {налаштована}\n other {оброблена}\n} успішно.\n\nДеталі пожертви:\nСума: {amount} {currency} {interval, select,\n month {на місяць}\n year {на рік}\n other {}\n}\n\nStripe незабаром надішле тобі окрему квитанцію з рахунком у форматі PDF. Вона містить усі платіжні дані та може бути використана для податкових цілей.\n\nТи можеш переглядати історію своїх пожертв, завантажувати рахунки, {interval, select,\n month {а також керувати підпискою або скасувати її}\n year {а також керувати підпискою або скасувати її}\n other {та керувати майбутніми пожертвами}\n} у будь-який час за цим посиланням:\n\n{manageUrl}\n\nТвоя підтримка допомагає {product_name} працювати. Дякуємо!\n\n– Команда {product_name}"
},
"donation_magic_link": {
"subject": "Керуй своїми пожертвами для {product_name}",
"body": "Привіт,\n\nНатисни посилання нижче, щоб отримати доступ до порталу пожертв:\n\n{manageUrl}\n\nНа порталі ти можеш керувати підписками, завантажувати рахунки та переглядати історію своїх пожертв.\n\nЦе посилання діє до {expiresAt, date, full} о {expiresAt, time, short}.\n\nЯкщо ти не запитував це посилання, можеш сміливо ігнорувати цей лист.\n\n– Команда {product_name}"
},
"dsa_report_verification": {
"subject": "Підтвердь свою електронну адресу для звіту DSA",
"body": "Привіт,\n\nВикористай код підтвердження нижче, щоб подати звіт DSA для {product_name}:\n\n{code}\n\nЦей код діє до {expiresAt, date, full} о {expiresAt, time, short}.\n\nЯкщо ти не запитував це, можеш ігнорувати цей лист.\n\n– Команда безпеки {product_name}"
},
"email_change_new": {
"subject": "Підтвердь свою нову електронну пошту для {product_name}",
"body": "Привіт, {username},\n\nВведи цей код у застосунку, щоб підтвердити свою нову електронну пошту для {product_name}:\n\n{code}\n\nЦей код діє до {expiresAt, date, full} о {expiresAt, time, short}.\n\nЯкщо ти не запитував це, можеш ігнорувати цей лист.\n\n– Команда {product_name}"
},
"email_change_original": {
"subject": "Підтвердь зміну електронної пошти для {product_name}",
"body": "Привіт, {username},\n\nМи отримали запит на зміну електронної пошти твого акаунту {product_name}.\n\nЩоб підтвердити цю зміну, введи цей код у застосунку:\n\n{code}\n\nЦей код діє до {expiresAt, date, full} о {expiresAt, time, short}.\n\nЯкщо ти не запитував це, будь ласка, негайно захисти свій акаунт.\n\n– Команда {product_name}"
},
"email_change_revert": {
"subject": "Електронну пошту твого акаунту {product_name} змінено",
"body": "Привіт, {username},\n\nЕлектронну пошту твого акаунту {product_name} змінено на {newEmail}.\n\nЯкщо ти зробив цю зміну, жодних дій не потрібно. Якщо ні, ти можеш скасувати зміну та захистити свій акаунт за цим посиланням:\n\n{revertUrl}\n\nЦе відновить твою попередню електронну пошту, вийде з усіх сесій, видалить пов'язані номери телефонів, вимкне MFA та вимагатиме встановлення нового пароля.\n\n– Команда безпеки {product_name}"
},
"email_verification": {
"subject": "Підтвердь свою електронну пошту для {product_name}",
"body": "Привіт, {username},\n\nБудь ласка, підтвердь електронну пошту свого акаунту {product_name}, натиснувши посилання нижче:\n\n{verifyUrl}\n\nЯкщо ти не створював акаунт {product_name}, можеш сміливо ігнорувати цей лист.\n\nЦе посилання діє протягом 24 годин.\n\n– Команда {product_name}"
},
"gift_chargeback_notification": {
"subject": "Видалено переваги активованого подарунка",
"body": "Привіт, {username},\n\nПодарунковий код, який ти активував, спочатку був оплачений кимось іншим. Цей платіж згодом скасовано (повернення коштів).\n\nЧерез це видалено переваги, які були додані до твого акаунту під час активації подарунка.\n\nЯкщо ти вважаєш, що це помилка, будь ласка, зв'яжися з нашою службою підтримки та надай будь-які деталі про подарунковий код та час його активації.\n\n– Команда {product_name}"
},
"harvest_completed": {
"subject": "Твій експорт даних {product_name} готовий для завантаження",
"body": "Привіт, {username},\n\nТвій експорт даних готовий.\n\nПосилання для завантаження:\n{downloadUrl}\n\nПовідомлень включено: {totalMessages, number}\nРозмір файлу: {fileSizeMB, number} МБ\n\nЦе посилання діє до {expiresAt, date, full} о {expiresAt, time, short}.\n\nЯкщо ти не запитував цей експорт, будь ласка, негайно зміни свій пароль та зв'яжися з нашою службою підтримки.\n\n– Команда {product_name}"
},
"inactivity_warning": {
"subject": "Твій акаунт {product_name} видалять через бездіяльність",
"body": "Привіт, {username},\n\nМи не бачили жодної активності на твоєму акаунті {product_name} з {lastActiveDate, date, full}.\n\nЯкщо ти не увійдеш до {deletionDate, date, full} о {deletionDate, time, short}, твій акаунт назавжди видалять через бездіяльність.\n\nУвійди тут:\n{loginUrl}\n\nЯкщо ти нещодавно користувався {product_name}, будь ласка, негайно зв'яжися з нашою службою підтримки.\n\n– Команда {product_name}"
},
"ip_authorization": {
"subject": "Дозволь вхід з нової IP-адреси",
"body": "Привіт, {username},\n\nМи виявили спробу входу в твій акаунт {product_name} з нової IP-адреси:\n\nIP-адреса: {ipAddress}\nМісцезнаходження: {location}\n\nЯкщо це був ти, будь ласка, дозволь цю IP-адресу, натиснувши посилання нижче:\n\n{authUrl}\n\nЯкщо ти не намагався увійти, будь ласка, негайно зміни свій пароль.\n\nЦе посилання діє протягом 30 хвилин.\n\n– Команда {product_name}"
},
"password_change_verification": {
"subject": "Підтвердь зміну пароля для {product_name}",
"body": "Привіт, {username},\n\nМи отримали запит на зміну пароля для твого акаунту {product_name}.\n\nЩоб підтвердити цю зміну, введи цей код у застосунку:\n\n{code}\n\nЦей код діє до {expiresAt}.\n\nЯкщо ти не запитував це, хтось може мати доступ до твого акаунту. Негайно зміни свій пароль та увімкни двофакторну автентифікацію.\n\n– Команда {product_name}"
},
"password_reset": {
"subject": "Скинь свій пароль для {product_name}",
"body": "Привіт, {username},\n\nТи запитував скидання пароля для {product_name}. Використай посилання нижче, щоб встановити новий пароль:\n\n{resetUrl}\n\nЯкщо ти не запитував це, можеш сміливо ігнорувати цей лист.\n\nЦе посилання діє протягом 1 години.\n\n– Команда {product_name}"
},
"registration_approved": {
"subject": "Твою реєстрацію в {product_name} схвалено",
"body": "Привіт, {username},\n\nГарні новини: твою реєстрацію в {product_name} схвалено.\n\nТепер ти можеш увійти до застосунку {product_name} тут:\n{channelsUrl}\n\nЛаскаво просимо до спільноти {product_name}.\n\n– Команда {product_name}"
},
"report_resolved": {
"subject": "Твій звіт щодо {product_name} переглянуто",
"body": "Привіт, {username},\n\nТвій звіт (ID: {reportId}) переглянуто нашою Командою безпеки.{hasComment, select, yes {\n\nВідповідь від Команди безпеки:\n{publicComment}} other {}}\n\nДякуємо за допомогу у забезпеченні безпеки {product_name} для всіх. Ми серйозно ставимося до всіх звітів та цінуємо твій внесок до спільноти.\n\nЯкщо у тебе є запитання або занепокоєння щодо цього результату, будь ласка, зв'яжися з {safety_email}.\n\n– Команда безпеки {product_name}"
},
"scheduled_deletion_notification": {
"subject": "Твій акаунт {product_name} видалять назавжди",
"body": "Привіт, {username},\n\nТвій акаунт {product_name} заплановано до остаточного видалення.\n\nВидалення заплановано на: {deletionDate, date, full} о {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nЦе серйозне рішення. Дані твого акаунту назавжди видалять у заплановану дату.\n\nЯкщо ти вважаєш, що це рішення було неправильним, ти можеш подати апеляцію. Надішли електронний лист на {appeals_email} з цієї електронної адреси.\n\n– Команда безпеки {product_name}"
},
"self_deletion_scheduled": {
"subject": "Видалення акаунту {product_name} заплановано",
"body": "Привіт, {username},\n\nТи запитував видалення свого акаунту {product_name}. Остаточне видалення твого акаунту заплановано на:\n\n{deletionDate, date, full} о {deletionDate, time, short}\n\nЯкщо ти не запитував це, увійди до свого акаунту, щоб скасувати видалення. Ми також рекомендуємо змінити свій пароль, щоб захистити свій акаунт.\n\n– Команда {product_name}"
},
"unban_notification": {
"subject": "Призупинення твого акаунту {product_name} скасовано",
"body": "Привіт, {username},\n\nГарні новини: призупинення твого акаунту {product_name} скасовано.\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nТепер ти можеш знову увійти та продовжувати користуватися {product_name} як зазвичай.\n\n– Команда безпеки {product_name}"
}
"account_disabled_suspicious": {
"subject": "Твій акаунт {product_name} тимчасово вимкнено",
"body": "Привіт, {username},\n\nМи тимчасово вимкнули твій акаунт {product_name}, оскільки виявили підозрілу активність.\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nЩоб відновити доступ до акаунту, тобі потрібно скинути пароль:\n\n{forgotUrl}\n\nПісля скидання пароля ти зможеш знову увійти.\n\nЯкщо ти вважаєш, що це помилка, будь ласка, зв'яжися з нашою службою підтримки.\n\n– Команда безпеки {product_name}"
},
"account_scheduled_deletion": {
"subject": "Твій акаунт {product_name} видалять назавжди",
"body": "Привіт, {username},\n\nТвій акаунт {product_name} буде остаточно видалено через порушення наших Умов надання послуг або Правил спільноти.\n\nВидалення заплановано на: {deletionDate, date, full} о {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nЦе серйозне рішення. Дані твого акаунту остаточно видалять у заплановану дату.\n\nБудь ласка, переглянь:\n- Умови надання послуг: {termsUrl}\n- Правила спільноти: {guidelinesUrl}\n\nПроцес апеляції:\nЯкщо ти вважаєш, що це рішення було неправильним або необґрунтованим, у тебе є 60 днів, щоб подати апеляцію. Надішли електронний лист на {appeals_email} з цієї електронної адреси.\n\nУ твоїй апеляції:\n- Чітко поясни, чому ти вважаєш, що рішення було неправильним або необґрунтованим\n- Надай будь-які відповідні докази або контекст\n\nКоманда безпеки {product_name} розгляне твою апеляцію та може призупинити видалення до ухвалення остаточного рішення.\n\n– Команда безпеки {product_name}"
},
"account_temp_banned": {
"subject": "Твій акаунт {product_name} тимчасово призупинено",
"body": "Привіт, {username},\n\nТвій акаунт {product_name} тимчасово призупинено за порушення наших Умов надання послуг або Правил спільноти.\n\nТривалість: {durationHours, plural,\n one {1 година} few {години}\n many {годин} other {# години}\n}\nПризупинено до: {bannedUntil, date, full} о {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nПротягом цього часу ти не зможеш отримати доступ до свого акаунту.\n\nБудь ласка, переглянь:\n- Умови надання послуг: {termsUrl}\n- Правила спільноти: {guidelinesUrl}\n\nЯкщо ти вважаєш, що це рішення було неправильним або необґрунтованим, ти можеш подати апеляцію. Надішли електронний лист на {appeals_email} з цієї електронної адреси та чітко поясни, чому ти вважаєш рішення неправильним. Ми розглянемо твою апеляцію та відповімо нашим рішенням.\n\n– Команда безпеки {product_name}"
},
"donation_confirmation": {
"subject": "Дякуємо за твою пожертву для {product_name}",
"body": "Привіт,\n\nДякуємо за твою пожертву для {product_name}! Твоя {interval, select,\n month {регулярна пожертва}\n year {регулярна пожертва}\n other {одноразова пожертва}\n} {interval, select,\n month {налаштована}\n year {налаштована}\n other {оброблена}\n} успішно.\n\nДеталі пожертви:\nСума: {amount} {currency} {interval, select,\n month {на місяць}\n year {на рік}\n other {}\n}\n\nStripe незабаром надішле тобі окрему квитанцію з рахунком у форматі PDF. Вона містить усі платіжні дані та може бути використана для податкових цілей.\n\nТи можеш переглядати історію своїх пожертв, завантажувати рахунки, {interval, select,\n month {а також керувати підпискою або скасувати її}\n year {а також керувати підпискою або скасувати її}\n other {та керувати майбутніми пожертвами}\n} у будь-який час за цим посиланням:\n\n{manageUrl}\n\nТвоя підтримка допомагає {product_name} працювати. Дякуємо!\n\n– Команда {product_name}"
},
"donation_magic_link": {
"subject": "Керуй своїми пожертвами для {product_name}",
"body": "Привіт,\n\nНатисни посилання нижче, щоб отримати доступ до порталу пожертв:\n\n{manageUrl}\n\nНа порталі ти можеш керувати підписками, завантажувати рахунки та переглядати історію своїх пожертв.\n\nЦе посилання діє до {expiresAt, date, full} о {expiresAt, time, short}.\n\nЯкщо ти не запитував це посилання, можеш сміливо ігнорувати цей лист.\n\n– Команда {product_name}"
},
"dsa_report_verification": {
"subject": "Підтвердь свою електронну адресу для звіту DSA",
"body": "Привіт,\n\nВикористай код підтвердження нижче, щоб подати звіт DSA для {product_name}:\n\n{code}\n\nЦей код діє до {expiresAt, date, full} о {expiresAt, time, short}.\n\nЯкщо ти не запитував це, можеш ігнорувати цей лист.\n\n– Команда безпеки {product_name}"
},
"email_change_new": {
"subject": "Підтвердь свою нову електронну пошту для {product_name}",
"body": "Привіт, {username},\n\nВведи цей код у застосунку, щоб підтвердити свою нову електронну пошту для {product_name}:\n\n{code}\n\nЦей код діє до {expiresAt, date, full} о {expiresAt, time, short}.\n\nЯкщо ти не запитував це, можеш ігнорувати цей лист.\n\n– Команда {product_name}"
},
"email_change_original": {
"subject": "Підтвердь зміну електронної пошти для {product_name}",
"body": "Привіт, {username},\n\nМи отримали запит на зміну електронної пошти твого акаунту {product_name}.\n\nЩоб підтвердити цю зміну, введи цей код у застосунку:\n\n{code}\n\nЦей код діє до {expiresAt, date, full} о {expiresAt, time, short}.\n\nЯкщо ти не запитував це, будь ласка, негайно захисти свій акаунт.\n\n– Команда {product_name}"
},
"email_change_revert": {
"subject": "Електронну пошту твого акаунту {product_name} змінено",
"body": "Привіт, {username},\n\nЕлектронну пошту твого акаунту {product_name} змінено на {newEmail}.\n\nЯкщо ти зробив цю зміну, жодних дій не потрібно. Якщо ні, ти можеш скасувати зміну та захистити свій акаунт за цим посиланням:\n\n{revertUrl}\n\nЦе відновить твою попередню електронну пошту, вийде з усіх сесій, видалить пов'язані номери телефонів, вимкне MFA та вимагатиме встановлення нового пароля.\n\n– Команда безпеки {product_name}"
},
"email_verification": {
"subject": "Підтвердь свою електронну пошту для {product_name}",
"body": "Привіт, {username},\n\nБудь ласка, підтвердь електронну пошту свого акаунту {product_name}, натиснувши посилання нижче:\n\n{verifyUrl}\n\nЯкщо ти не створював акаунт {product_name}, можеш сміливо ігнорувати цей лист.\n\nЦе посилання діє протягом 24 годин.\n\n– Команда {product_name}"
},
"gift_chargeback_notification": {
"subject": "Видалено переваги активованого подарунка",
"body": "Привіт, {username},\n\nПодарунковий код, який ти активував, спочатку був оплачений кимось іншим. Цей платіж згодом скасовано (повернення коштів).\n\nЧерез це видалено переваги, які були додані до твого акаунту під час активації подарунка.\n\nЯкщо ти вважаєш, що це помилка, будь ласка, зв'яжися з нашою службою підтримки та надай будь-які деталі про подарунковий код та час його активації.\n\n– Команда {product_name}"
},
"harvest_completed": {
"subject": "Твій експорт даних {product_name} готовий для завантаження",
"body": "Привіт, {username},\n\nТвій експорт даних готовий.\n\nПосилання для завантаження:\n{downloadUrl}\n\nПовідомлень включено: {totalMessages, number}\nРозмір файлу: {fileSizeMB, number} МБ\n\nЦе посилання діє до {expiresAt, date, full} о {expiresAt, time, short}.\n\nЯкщо ти не запитував цей експорт, будь ласка, негайно зміни свій пароль та зв'яжися з нашою службою підтримки.\n\n– Команда {product_name}"
},
"inactivity_warning": {
"subject": "Твій акаунт {product_name} видалять через бездіяльність",
"body": "Привіт, {username},\n\nМи не бачили жодної активності на твоєму акаунті {product_name} з {lastActiveDate, date, full}.\n\nЯкщо ти не увійдеш до {deletionDate, date, full} о {deletionDate, time, short}, твій акаунт назавжди видалять через бездіяльність.\n\nУвійди тут:\n{loginUrl}\n\nЯкщо ти нещодавно користувався {product_name}, будь ласка, негайно зв'яжися з нашою службою підтримки.\n\n– Команда {product_name}"
},
"ip_authorization": {
"subject": "Дозволь вхід з нової IP-адреси",
"body": "Привіт, {username},\n\nМи виявили спробу входу в твій акаунт {product_name} з нової IP-адреси:\n\nIP-адреса: {ipAddress}\nМісцезнаходження: {location}\n\nЯкщо це був ти, будь ласка, дозволь цю IP-адресу, натиснувши посилання нижче:\n\n{authUrl}\n\nЯкщо ти не намагався увійти, будь ласка, негайно зміни свій пароль.\n\nЦе посилання діє протягом 30 хвилин.\n\n– Команда {product_name}"
},
"password_change_verification": {
"subject": "Підтвердь зміну пароля для {product_name}",
"body": "Привіт, {username},\n\nМи отримали запит на зміну пароля для твого акаунту {product_name}.\n\nЩоб підтвердити цю зміну, введи цей код у застосунку:\n\n{code}\n\nЦей код діє до {expiresAt}.\n\nЯкщо ти не запитував це, хтось може мати доступ до твого акаунту. Негайно зміни свій пароль та увімкни двофакторну автентифікацію.\n\n– Команда {product_name}"
},
"password_reset": {
"subject": "Скинь свій пароль для {product_name}",
"body": "Привіт, {username},\n\nТи запитував скидання пароля для {product_name}. Використай посилання нижче, щоб встановити новий пароль:\n\n{resetUrl}\n\nЯкщо ти не запитував це, можеш сміливо ігнорувати цей лист.\n\nЦе посилання діє протягом 1 години.\n\n– Команда {product_name}"
},
"registration_approved": {
"subject": "Твою реєстрацію в {product_name} схвалено",
"body": "Привіт, {username},\n\nГарні новини: твою реєстрацію в {product_name} схвалено.\n\nТепер ти можеш увійти до застосунку {product_name} тут:\n{channelsUrl}\n\nЛаскаво просимо до спільноти {product_name}.\n\n– Команда {product_name}"
},
"report_resolved": {
"subject": "Твій звіт щодо {product_name} переглянуто",
"body": "Привіт, {username},\n\nТвій звіт (ID: {reportId}) переглянуто нашою Командою безпеки.{hasComment, select, yes {\n\nВідповідь від Команди безпеки:\n{publicComment}} other {}}\n\nДякуємо за допомогу у забезпеченні безпеки {product_name} для всіх. Ми серйозно ставимося до всіх звітів та цінуємо твій внесок до спільноти.\n\nЯкщо у тебе є запитання або занепокоєння щодо цього результату, будь ласка, зв'яжися з {safety_email}.\n\n– Команда безпеки {product_name}"
},
"scheduled_deletion_notification": {
"subject": "Твій акаунт {product_name} видалять назавжди",
"body": "Привіт, {username},\n\nТвій акаунт {product_name} заплановано до остаточного видалення.\n\nВидалення заплановано на: {deletionDate, date, full} о {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nЦе серйозне рішення. Дані твого акаунту назавжди видалять у заплановану дату.\n\nЯкщо ти вважаєш, що це рішення було неправильним, ти можеш подати апеляцію. Надішли електронний лист на {appeals_email} з цієї електронної адреси.\n\n– Команда безпеки {product_name}"
},
"self_deletion_scheduled": {
"subject": "Видалення акаунту {product_name} заплановано",
"body": "Привіт, {username},\n\nТи запитував видалення свого акаунту {product_name}. Остаточне видалення твого акаунту заплановано на:\n\n{deletionDate, date, full} о {deletionDate, time, short}\n\nЯкщо ти не запитував це, увійди до свого акаунту, щоб скасувати видалення. Ми також рекомендуємо змінити свій пароль, щоб захистити свій акаунт.\n\n– Команда {product_name}"
},
"unban_notification": {
"subject": "Призупинення твого акаунту {product_name} скасовано",
"body": "Привіт, {username},\n\nГарні новини: призупинення твого акаунту {product_name} скасовано.\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nТепер ти можеш знову увійти та продовжувати користуватися {product_name} як зазвичай.\n\n– Команда безпеки {product_name}"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "Tài khoản {product_name} của bạn đã bị vô hiệu hóa tạm thời",
"body": "Xin chào {username},\n\nChúng tôi đã tạm thời vô hiệu hóa tài khoản {product_name} của bạn vì phát hiện hoạt động đáng ngờ.\n\n{reason, select,\n null {}\n other {Lý do: {reason}}\n}\n\nĐể truy cập lại tài khoản, bạn cần đặt lại mật khẩu:\n\n{forgotUrl}\n\nSau khi đặt lại mật khẩu, bạn sẽ có thể đăng nhập lại.\n\nNếu bạn cho rằng đây là lỗi, vui lòng liên hệ đội ngũ hỗ trợ của chúng tôi.\n\n– Đội ngũ An toàn {product_name}"
},
"account_scheduled_deletion": {
"subject": "Tài khoản {product_name} của bạn sẽ bị xóa vĩnh viễn",
"body": "Xin chào {username},\n\nTài khoản {product_name} của bạn đã được lên lịch xóa vĩnh viễn do vi phạm Điều khoản dịch vụ hoặc Nguyên tắc cộng đồng của chúng tôi.\n\nLịch xóa: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Lý do: {reason}}\n}\n\nĐây là một hành động thực thi nghiêm trọng. Dữ liệu tài khoản của bạn sẽ bị xóa vĩnh viễn vào ngày đã lên lịch.\n\nVui lòng xem lại:\n- Điều khoản dịch vụ: {termsUrl}\n- Nguyên tắc cộng đồng: {guidelinesUrl}\n\nQuy trình kháng nghị:\nNếu bạn cho rằng quyết định này không chính xác hoặc không hợp lý, bạn có 60 ngày để gửi kháng nghị. Gửi email đến {appeals_email} từ địa chỉ email này.\n\nTrong kháng nghị của bạn:\n- Giải thích rõ ràng lý do bạn cho rằng quyết định này không chính xác hoặc không hợp lý\n- Cung cấp bất kỳ bằng chứng hoặc ngữ cảnh liên quan nào\n\nMột thành viên của Đội ngũ An toàn {product_name} sẽ xem xét kháng nghị của bạn và có thể tạm dừng việc xóa đang chờ xử lý cho đến khi có quyết định cuối cùng.\n\n– Đội ngũ An toàn {product_name}"
},
"account_temp_banned": {
"subject": "Tài khoản {product_name} của bạn đã bị tạm ngưng",
"body": "Xin chào {username},\n\nTài khoản {product_name} của bạn đã bị tạm ngưng do vi phạm Điều khoản dịch vụ hoặc Nguyên tắc cộng đồng của chúng tôi.\n\nThời gian: {durationHours, plural,\n =1 {1 giờ}\n other {# giờ}\n}\nBị tạm ngưng cho đến: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Lý do: {reason}}\n}\n\nTrong thời gian này, bạn sẽ không thể truy cập tài khoản của mình.\n\nVui lòng xem lại:\n- Điều khoản dịch vụ: {termsUrl}\n- Nguyên tắc cộng đồng: {guidelinesUrl}\n\nNếu bạn cho rằng quyết định này không chính xác hoặc không hợp lý, bạn có thể gửi kháng nghị. Gửi email đến {appeals_email} từ địa chỉ email này và giải thích rõ ràng lý do bạn cho rằng quyết định đó không chính xác. Chúng tôi sẽ xem xét kháng nghị của bạn và phản hồi bằng quyết định của chúng tôi.\n\n– Đội ngũ An toàn {product_name}"
},
"donation_confirmation": {
"subject": "Cảm ơn bạn đã ủng hộ {product_name}",
"body": "Xin chào,\n\nCảm ơn bạn đã ủng hộ {product_name}! {interval, select,\n month {Đóng góp định kỳ}\n year {Đóng góp định kỳ}\n other {Khoản đóng góp một lần}\n} của bạn đã được {interval, select,\n month {thiết lập}\n year {thiết lập}\n other {xử lý}\n} thành công.\n\nChi tiết ủng hộ:\nSố tiền: {amount} {currency} {interval, select,\n month {mỗi tháng}\n year {mỗi năm}\n other {}\n}\n\nStripe sẽ gửi email cho bạn một biên lai riêng kèm theo hóa đơn PDF của bạn trong thời gian ngắn. Biên lai này bao gồm tất cả các chi tiết thanh toán và có thể được sử dụng cho mục đích thuế.\n\nBạn có thể xem lịch sử ủng hộ, tải xuống hóa đơn, {interval, select,\n month {và quản lý hoặc hủy đăng ký}\n year {và quản lý hoặc hủy đăng ký}\n other {và quản lý các khoản ủng hộ trong tương lai}\n} bất cứ lúc nào bằng cách sử dụng liên kết này:\n\n{manageUrl}\n\nSự hỗ trợ của bạn giúp {product_name} tiếp tục hoạt động. Cảm ơn bạn!\n\n– Đội ngũ {product_name}"
},
"donation_magic_link": {
"subject": "Quản lý các khoản ủng hộ {product_name} của bạn",
"body": "Xin chào,\n\nNhấp vào liên kết bên dưới để truy cập cổng thông tin người ủng hộ của bạn:\n\n{manageUrl}\n\nTrong cổng thông tin, bạn có thể quản lý đăng ký, tải xuống hóa đơn và xem lịch sử ủng hộ của mình.\n\nLiên kết này hết hạn vào {expiresAt, date, full} lúc {expiresAt, time, short}.\n\nNếu bạn không yêu cầu liên kết này, bạn có thể bỏ qua email này.\n\n– Đội ngũ {product_name}"
},
"dsa_report_verification": {
"subject": "Xác minh email của bạn cho báo cáo DSA",
"body": "Xin chào,\n\nSử dụng mã xác minh bên dưới để gửi báo cáo Đạo luật Dịch vụ Kỹ thuật số của bạn trên {product_name}:\n\n{code}\n\nMã này hết hạn vào {expiresAt, date, full} lúc {expiresAt, time, short}.\n\nNếu bạn không yêu cầu mã này, bạn có thể bỏ qua email này.\n\n– Đội ngũ An toàn {product_name}"
},
"email_change_new": {
"subject": "Xác minh email {product_name} mới của bạn",
"body": "Xin chào {username},\n\nNhập mã này vào ứng dụng để xác minh email {product_name} mới của bạn:\n\n{code}\n\nMã này hết hạn vào {expiresAt, date, full} lúc {expiresAt, time, short}.\n\nNếu bạn không yêu cầu mã này, bạn có thể bỏ qua email này.\n\n– Đội ngũ {product_name}"
},
"email_change_original": {
"subject": "Xác nhận thay đổi email của bạn trên {product_name}",
"body": "Xin chào {username},\n\nChúng tôi đã nhận được yêu cầu thay đổi địa chỉ email trên tài khoản {product_name} của bạn.\n\nĐể xác nhận thay đổi này, hãy nhập mã này vào ứng dụng:\n\n{code}\n\nMã này hết hạn vào {expiresAt, date, full} lúc {expiresAt, time, short}.\n\nNếu bạn không yêu cầu thay đổi này, vui lòng bảo mật tài khoản của bạn ngay lập tức.\n\n– Đội ngũ {product_name}"
},
"email_change_revert": {
"subject": "Email của bạn trên {product_name} đã được thay đổi",
"body": "Xin chào {username},\n\nĐịa chỉ email trên tài khoản {product_name} của bạn đã được thay đổi thành {newEmail}.\n\nNếu bạn đã thực hiện thay đổi này, bạn không cần thực hiện hành động nào. Nếu không, bạn có thể hoàn tác thay đổi và bảo mật tài khoản của mình bằng cách sử dụng liên kết này:\n\n{revertUrl}\n\nThao tác này sẽ khôi phục email trước đó của bạn, đăng xuất bạn khỏi mọi nơi, xóa số điện thoại đã liên kết, tắt MFA và yêu cầu bạn đặt mật khẩu mới.\n\n– Đội ngũ An toàn {product_name}"
},
"email_verification": {
"subject": "Xác minh địa chỉ email của bạn trên {product_name}",
"body": "Xin chào {username},\n\nVui lòng xác minh địa chỉ email cho tài khoản {product_name} của bạn bằng cách nhấp vào liên kết bên dưới:\n\n{verifyUrl}\n\nNếu bạn không tạo tài khoản {product_name}, bạn có thể bỏ qua email này.\n\nLiên kết này có hiệu lực trong 24 giờ.\n\n– Đội ngũ {product_name}"
},
"gift_chargeback_notification": {
"subject": "Các đặc quyền từ quà tặng bạn đã đổi đã bị xóa",
"body": "Xin chào {username},\n\nMã quà tặng bạn đã đổi ban đầu được thanh toán bởi người khác. Khoản thanh toán đó sau đó đã bị đảo ngược (chargeback).\n\nVì lý do này, chúng tôi đã xóa các đặc quyền được thêm vào tài khoản của bạn khi bạn đổi quà tặng.\n\nNếu bạn cho rằng đây là lỗi, vui lòng liên hệ đội ngũ hỗ trợ của chúng tôi và cung cấp bất kỳ chi tiết nào bạn có về mã quà tặng và thời điểm bạn đổi mã đó.\n\n– Đội ngũ {product_name}"
},
"harvest_completed": {
"subject": "Xuất dữ liệu {product_name} của bạn đã sẵn sàng để tải xuống",
"body": "Xin chào {username},\n\nBản xuất dữ liệu của bạn đã sẵn sàng.\n\nLiên kết tải xuống:\n{downloadUrl}\n\nTin nhắn bao gồm: {totalMessages, number}\nKích thước tệp: {fileSizeMB, number} MB\n\nLiên kết này hết hạn vào {expiresAt, date, full} lúc {expiresAt, time, short}.\n\nNếu bạn không yêu cầu xuất dữ liệu này, vui lòng thay đổi mật khẩu ngay lập tức và liên hệ đội ngũ hỗ trợ của chúng tôi.\n\n– Đội ngũ {product_name}"
},
"inactivity_warning": {
"subject": "Tài khoản {product_name} của bạn sẽ bị xóa do không hoạt động",
"body": "Xin chào {username},\n\nChúng tôi chưa thấy bất kỳ hoạt động nào trên tài khoản {product_name} của bạn kể từ {lastActiveDate, date, full}.\n\nNếu bạn không đăng nhập trước {deletionDate, date, full} lúc {deletionDate, time, short}, tài khoản của bạn sẽ bị xóa vĩnh viễn do không hoạt động.\n\nĐăng nhập tại đây:\n{loginUrl}\n\nNếu bạn đã sử dụng {product_name} gần đây, vui lòng liên hệ đội ngũ hỗ trợ của chúng tôi ngay lập tức.\n\n– Đội ngũ {product_name}"
},
"ip_authorization": {
"subject": "Cho phép đăng nhập từ địa chỉ IP mới",
"body": "Xin chào {username},\n\nChúng tôi đã phát hiện một nỗ lực đăng nhập vào tài khoản {product_name} của bạn từ một địa chỉ IP mới:\n\nĐịa chỉ IP: {ipAddress}\nVị trí: {location}\n\nNếu đây là bạn, vui lòng cho phép địa chỉ IP này bằng cách nhấp vào liên kết bên dưới:\n\n{authUrl}\n\nNếu bạn không thực hiện nỗ lực đăng nhập, vui lòng thay đổi mật khẩu ngay lập tức.\n\nLiên kết này có hiệu lực trong 30 phút.\n\n– Đội ngũ {product_name}"
},
"password_change_verification": {
"subject": "Xác nhận thay đổi mật khẩu của bạn trên {product_name}",
"body": "Xin chào {username},\n\nChúng tôi đã nhận được yêu cầu thay đổi mật khẩu trên tài khoản {product_name} của bạn.\n\nĐể xác nhận thay đổi này, hãy nhập mã này vào ứng dụng:\n\n{code}\n\nMã này hết hạn lúc {expiresAt}.\n\nNếu bạn không yêu cầu thay đổi này, ai đó có thể đã truy cập vào tài khoản của bạn. Thay đổi mật khẩu ngay lập tức và bật xác thực hai yếu tố.\n\n– Đội ngũ {product_name}"
},
"password_reset": {
"subject": "Đặt lại mật khẩu của bạn trên {product_name}",
"body": "Xin chào {username},\n\nBạn đã yêu cầu đặt lại mật khẩu {product_name}. Sử dụng liên kết bên dưới để đặt mật khẩu mới:\n\n{resetUrl}\n\nNếu bạn không yêu cầu điều này, bạn có thể bỏ qua email này.\n\nLiên kết này có hiệu lực trong 1 giờ.\n\n– Đội ngũ {product_name}"
},
"registration_approved": {
"subject": "Đăng ký {product_name} của bạn đã được chấp thuận",
"body": "Xin chào {username},\n\nTin tốt: đăng ký {product_name} của bạn đã được chấp thuận.\n\nBây giờ bạn có thể đăng nhập vào ứng dụng {product_name} tại đây:\n{channelsUrl}\n\nChào mừng bạn đến với cộng đồng {product_name}.\n\n– Đội ngũ {product_name}"
},
"report_resolved": {
"subject": "Báo cáo {product_name} của bạn đã được xem xét",
"body": "Xin chào {username},\n\nBáo cáo của bạn (ID: {reportId}) đã được Đội ngũ An toàn của chúng tôi xem xét.{hasComment, select, yes {\n\nPhản hồi từ Đội ngũ An toàn:\n{publicComment}} other {}}\n\nCảm ơn bạn đã giúp giữ cho {product_name} an toàn cho mọi người. Chúng tôi xem xét tất cả các báo cáo một cách nghiêm túc và đánh giá cao sự đóng góp của bạn cho cộng đồng.\n\nNếu bạn có bất kỳ câu hỏi hoặc lo ngại nào về kết quả này, vui lòng liên hệ {safety_email}.\n\n– Đội ngũ An toàn {product_name}"
},
"scheduled_deletion_notification": {
"subject": "Tài khoản {product_name} của bạn sẽ bị xóa vĩnh viễn",
"body": "Xin chào {username},\n\nTài khoản {product_name} của bạn đã được lên lịch xóa vĩnh viễn.\n\nLịch xóa: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Lý do: {reason}}\n}\n\nĐây là một hành động thực thi nghiêm trọng. Dữ liệu tài khoản của bạn sẽ bị xóa vĩnh viễn vào ngày đã lên lịch.\n\nNếu bạn cho rằng quyết định này không chính xác, bạn có thể gửi kháng nghị. Gửi email đến {appeals_email} từ địa chỉ email này.\n\n– Đội ngũ An toàn {product_name}"
},
"self_deletion_scheduled": {
"subject": "Xóa tài khoản {product_name} của bạn đã được lên lịch",
"body": "Xin chào {username},\n\nBạn đã yêu cầu xóa tài khoản {product_name} của mình. Tài khoản của bạn được lên lịch xóa vĩnh viễn vào:\n\n{deletionDate, date, full} lúc {deletionDate, time, short}\n\nNếu bạn không yêu cầu điều này, hãy đăng nhập vào tài khoản của bạn để hủy xóa. Chúng tôi cũng khuyên bạn nên thay đổi mật khẩu để bảo mật tài khoản của mình.\n\n– Đội ngũ {product_name}"
},
"unban_notification": {
"subject": "Tài khoản {product_name} của bạn đã được bỏ tạm ngưng",
"body": "Xin chào {username},\n\nTin tốt: tài khoản {product_name} của bạn đã được bỏ tạm ngưng.\n\n{reason, select,\n null {}\n other {Lý do: {reason}}\n}\n\nBây giờ bạn có thể đăng nhập lại và tiếp tục sử dụng {product_name} như bình thường.\n\n– Đội ngũ An toàn {product_name}"
}
"account_disabled_suspicious": {
"subject": "Tài khoản {product_name} của bạn đã bị vô hiệu hóa tạm thời",
"body": "Xin chào {username},\n\nChúng tôi đã tạm thời vô hiệu hóa tài khoản {product_name} của bạn vì phát hiện hoạt động đáng ngờ.\n\n{reason, select,\n null {}\n other {Lý do: {reason}}\n}\n\nĐể truy cập lại tài khoản, bạn cần đặt lại mật khẩu:\n\n{forgotUrl}\n\nSau khi đặt lại mật khẩu, bạn sẽ có thể đăng nhập lại.\n\nNếu bạn cho rằng đây là lỗi, vui lòng liên hệ đội ngũ hỗ trợ của chúng tôi.\n\n– Đội ngũ An toàn {product_name}"
},
"account_scheduled_deletion": {
"subject": "Tài khoản {product_name} của bạn sẽ bị xóa vĩnh viễn",
"body": "Xin chào {username},\n\nTài khoản {product_name} của bạn đã được lên lịch xóa vĩnh viễn do vi phạm Điều khoản dịch vụ hoặc Nguyên tắc cộng đồng của chúng tôi.\n\nLịch xóa: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Lý do: {reason}}\n}\n\nĐây là một hành động thực thi nghiêm trọng. Dữ liệu tài khoản của bạn sẽ bị xóa vĩnh viễn vào ngày đã lên lịch.\n\nVui lòng xem lại:\n- Điều khoản dịch vụ: {termsUrl}\n- Nguyên tắc cộng đồng: {guidelinesUrl}\n\nQuy trình kháng nghị:\nNếu bạn cho rằng quyết định này không chính xác hoặc không hợp lý, bạn có 60 ngày để gửi kháng nghị. Gửi email đến {appeals_email} từ địa chỉ email này.\n\nTrong kháng nghị của bạn:\n- Giải thích rõ ràng lý do bạn cho rằng quyết định này không chính xác hoặc không hợp lý\n- Cung cấp bất kỳ bằng chứng hoặc ngữ cảnh liên quan nào\n\nMột thành viên của Đội ngũ An toàn {product_name} sẽ xem xét kháng nghị của bạn và có thể tạm dừng việc xóa đang chờ xử lý cho đến khi có quyết định cuối cùng.\n\n– Đội ngũ An toàn {product_name}"
},
"account_temp_banned": {
"subject": "Tài khoản {product_name} của bạn đã bị tạm ngưng",
"body": "Xin chào {username},\n\nTài khoản {product_name} của bạn đã bị tạm ngưng do vi phạm Điều khoản dịch vụ hoặc Nguyên tắc cộng đồng của chúng tôi.\n\nThời gian: {durationHours, plural,\n =1 {1 giờ}\n other {# giờ}\n}\nBị tạm ngưng cho đến: {bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {Lý do: {reason}}\n}\n\nTrong thời gian này, bạn sẽ không thể truy cập tài khoản của mình.\n\nVui lòng xem lại:\n- Điều khoản dịch vụ: {termsUrl}\n- Nguyên tắc cộng đồng: {guidelinesUrl}\n\nNếu bạn cho rằng quyết định này không chính xác hoặc không hợp lý, bạn có thể gửi kháng nghị. Gửi email đến {appeals_email} từ địa chỉ email này và giải thích rõ ràng lý do bạn cho rằng quyết định đó không chính xác. Chúng tôi sẽ xem xét kháng nghị của bạn và phản hồi bằng quyết định của chúng tôi.\n\n– Đội ngũ An toàn {product_name}"
},
"donation_confirmation": {
"subject": "Cảm ơn bạn đã ủng hộ {product_name}",
"body": "Xin chào,\n\nCảm ơn bạn đã ủng hộ {product_name}! {interval, select,\n month {Đóng góp định kỳ}\n year {Đóng góp định kỳ}\n other {Khoản đóng góp một lần}\n} của bạn đã được {interval, select,\n month {thiết lập}\n year {thiết lập}\n other {xử lý}\n} thành công.\n\nChi tiết ủng hộ:\nSố tiền: {amount} {currency} {interval, select,\n month {mỗi tháng}\n year {mỗi năm}\n other {}\n}\n\nStripe sẽ gửi email cho bạn một biên lai riêng kèm theo hóa đơn PDF của bạn trong thời gian ngắn. Biên lai này bao gồm tất cả các chi tiết thanh toán và có thể được sử dụng cho mục đích thuế.\n\nBạn có thể xem lịch sử ủng hộ, tải xuống hóa đơn, {interval, select,\n month {và quản lý hoặc hủy đăng ký}\n year {và quản lý hoặc hủy đăng ký}\n other {và quản lý các khoản ủng hộ trong tương lai}\n} bất cứ lúc nào bằng cách sử dụng liên kết này:\n\n{manageUrl}\n\nSự hỗ trợ của bạn giúp {product_name} tiếp tục hoạt động. Cảm ơn bạn!\n\n– Đội ngũ {product_name}"
},
"donation_magic_link": {
"subject": "Quản lý các khoản ủng hộ {product_name} của bạn",
"body": "Xin chào,\n\nNhấp vào liên kết bên dưới để truy cập cổng thông tin người ủng hộ của bạn:\n\n{manageUrl}\n\nTrong cổng thông tin, bạn có thể quản lý đăng ký, tải xuống hóa đơn và xem lịch sử ủng hộ của mình.\n\nLiên kết này hết hạn vào {expiresAt, date, full} lúc {expiresAt, time, short}.\n\nNếu bạn không yêu cầu liên kết này, bạn có thể bỏ qua email này.\n\n– Đội ngũ {product_name}"
},
"dsa_report_verification": {
"subject": "Xác minh email của bạn cho báo cáo DSA",
"body": "Xin chào,\n\nSử dụng mã xác minh bên dưới để gửi báo cáo Đạo luật Dịch vụ Kỹ thuật số của bạn trên {product_name}:\n\n{code}\n\nMã này hết hạn vào {expiresAt, date, full} lúc {expiresAt, time, short}.\n\nNếu bạn không yêu cầu mã này, bạn có thể bỏ qua email này.\n\n– Đội ngũ An toàn {product_name}"
},
"email_change_new": {
"subject": "Xác minh email {product_name} mới của bạn",
"body": "Xin chào {username},\n\nNhập mã này vào ứng dụng để xác minh email {product_name} mới của bạn:\n\n{code}\n\nMã này hết hạn vào {expiresAt, date, full} lúc {expiresAt, time, short}.\n\nNếu bạn không yêu cầu mã này, bạn có thể bỏ qua email này.\n\n– Đội ngũ {product_name}"
},
"email_change_original": {
"subject": "Xác nhận thay đổi email của bạn trên {product_name}",
"body": "Xin chào {username},\n\nChúng tôi đã nhận được yêu cầu thay đổi địa chỉ email trên tài khoản {product_name} của bạn.\n\nĐể xác nhận thay đổi này, hãy nhập mã này vào ứng dụng:\n\n{code}\n\nMã này hết hạn vào {expiresAt, date, full} lúc {expiresAt, time, short}.\n\nNếu bạn không yêu cầu thay đổi này, vui lòng bảo mật tài khoản của bạn ngay lập tức.\n\n– Đội ngũ {product_name}"
},
"email_change_revert": {
"subject": "Email của bạn trên {product_name} đã được thay đổi",
"body": "Xin chào {username},\n\nĐịa chỉ email trên tài khoản {product_name} của bạn đã được thay đổi thành {newEmail}.\n\nNếu bạn đã thực hiện thay đổi này, bạn không cần thực hiện hành động nào. Nếu không, bạn có thể hoàn tác thay đổi và bảo mật tài khoản của mình bằng cách sử dụng liên kết này:\n\n{revertUrl}\n\nThao tác này sẽ khôi phục email trước đó của bạn, đăng xuất bạn khỏi mọi nơi, xóa số điện thoại đã liên kết, tắt MFA và yêu cầu bạn đặt mật khẩu mới.\n\n– Đội ngũ An toàn {product_name}"
},
"email_verification": {
"subject": "Xác minh địa chỉ email của bạn trên {product_name}",
"body": "Xin chào {username},\n\nVui lòng xác minh địa chỉ email cho tài khoản {product_name} của bạn bằng cách nhấp vào liên kết bên dưới:\n\n{verifyUrl}\n\nNếu bạn không tạo tài khoản {product_name}, bạn có thể bỏ qua email này.\n\nLiên kết này có hiệu lực trong 24 giờ.\n\n– Đội ngũ {product_name}"
},
"gift_chargeback_notification": {
"subject": "Các đặc quyền từ quà tặng bạn đã đổi đã bị xóa",
"body": "Xin chào {username},\n\nMã quà tặng bạn đã đổi ban đầu được thanh toán bởi người khác. Khoản thanh toán đó sau đó đã bị đảo ngược (chargeback).\n\nVì lý do này, chúng tôi đã xóa các đặc quyền được thêm vào tài khoản của bạn khi bạn đổi quà tặng.\n\nNếu bạn cho rằng đây là lỗi, vui lòng liên hệ đội ngũ hỗ trợ của chúng tôi và cung cấp bất kỳ chi tiết nào bạn có về mã quà tặng và thời điểm bạn đổi mã đó.\n\n– Đội ngũ {product_name}"
},
"harvest_completed": {
"subject": "Xuất dữ liệu {product_name} của bạn đã sẵn sàng để tải xuống",
"body": "Xin chào {username},\n\nBản xuất dữ liệu của bạn đã sẵn sàng.\n\nLiên kết tải xuống:\n{downloadUrl}\n\nTin nhắn bao gồm: {totalMessages, number}\nKích thước tệp: {fileSizeMB, number} MB\n\nLiên kết này hết hạn vào {expiresAt, date, full} lúc {expiresAt, time, short}.\n\nNếu bạn không yêu cầu xuất dữ liệu này, vui lòng thay đổi mật khẩu ngay lập tức và liên hệ đội ngũ hỗ trợ của chúng tôi.\n\n– Đội ngũ {product_name}"
},
"inactivity_warning": {
"subject": "Tài khoản {product_name} của bạn sẽ bị xóa do không hoạt động",
"body": "Xin chào {username},\n\nChúng tôi chưa thấy bất kỳ hoạt động nào trên tài khoản {product_name} của bạn kể từ {lastActiveDate, date, full}.\n\nNếu bạn không đăng nhập trước {deletionDate, date, full} lúc {deletionDate, time, short}, tài khoản của bạn sẽ bị xóa vĩnh viễn do không hoạt động.\n\nĐăng nhập tại đây:\n{loginUrl}\n\nNếu bạn đã sử dụng {product_name} gần đây, vui lòng liên hệ đội ngũ hỗ trợ của chúng tôi ngay lập tức.\n\n– Đội ngũ {product_name}"
},
"ip_authorization": {
"subject": "Cho phép đăng nhập từ địa chỉ IP mới",
"body": "Xin chào {username},\n\nChúng tôi đã phát hiện một nỗ lực đăng nhập vào tài khoản {product_name} của bạn từ một địa chỉ IP mới:\n\nĐịa chỉ IP: {ipAddress}\nVị trí: {location}\n\nNếu đây là bạn, vui lòng cho phép địa chỉ IP này bằng cách nhấp vào liên kết bên dưới:\n\n{authUrl}\n\nNếu bạn không thực hiện nỗ lực đăng nhập, vui lòng thay đổi mật khẩu ngay lập tức.\n\nLiên kết này có hiệu lực trong 30 phút.\n\n– Đội ngũ {product_name}"
},
"password_change_verification": {
"subject": "Xác nhận thay đổi mật khẩu của bạn trên {product_name}",
"body": "Xin chào {username},\n\nChúng tôi đã nhận được yêu cầu thay đổi mật khẩu trên tài khoản {product_name} của bạn.\n\nĐể xác nhận thay đổi này, hãy nhập mã này vào ứng dụng:\n\n{code}\n\nMã này hết hạn lúc {expiresAt}.\n\nNếu bạn không yêu cầu thay đổi này, ai đó có thể đã truy cập vào tài khoản của bạn. Thay đổi mật khẩu ngay lập tức và bật xác thực hai yếu tố.\n\n– Đội ngũ {product_name}"
},
"password_reset": {
"subject": "Đặt lại mật khẩu của bạn trên {product_name}",
"body": "Xin chào {username},\n\nBạn đã yêu cầu đặt lại mật khẩu {product_name}. Sử dụng liên kết bên dưới để đặt mật khẩu mới:\n\n{resetUrl}\n\nNếu bạn không yêu cầu điều này, bạn có thể bỏ qua email này.\n\nLiên kết này có hiệu lực trong 1 giờ.\n\n– Đội ngũ {product_name}"
},
"registration_approved": {
"subject": "Đăng ký {product_name} của bạn đã được chấp thuận",
"body": "Xin chào {username},\n\nTin tốt: đăng ký {product_name} của bạn đã được chấp thuận.\n\nBây giờ bạn có thể đăng nhập vào ứng dụng {product_name} tại đây:\n{channelsUrl}\n\nChào mừng bạn đến với cộng đồng {product_name}.\n\n– Đội ngũ {product_name}"
},
"report_resolved": {
"subject": "Báo cáo {product_name} của bạn đã được xem xét",
"body": "Xin chào {username},\n\nBáo cáo của bạn (ID: {reportId}) đã được Đội ngũ An toàn của chúng tôi xem xét.{hasComment, select, yes {\n\nPhản hồi từ Đội ngũ An toàn:\n{publicComment}} other {}}\n\nCảm ơn bạn đã giúp giữ cho {product_name} an toàn cho mọi người. Chúng tôi xem xét tất cả các báo cáo một cách nghiêm túc và đánh giá cao sự đóng góp của bạn cho cộng đồng.\n\nNếu bạn có bất kỳ câu hỏi hoặc lo ngại nào về kết quả này, vui lòng liên hệ {safety_email}.\n\n– Đội ngũ An toàn {product_name}"
},
"scheduled_deletion_notification": {
"subject": "Tài khoản {product_name} của bạn sẽ bị xóa vĩnh viễn",
"body": "Xin chào {username},\n\nTài khoản {product_name} của bạn đã được lên lịch xóa vĩnh viễn.\n\nLịch xóa: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Lý do: {reason}}\n}\n\nĐây là một hành động thực thi nghiêm trọng. Dữ liệu tài khoản của bạn sẽ bị xóa vĩnh viễn vào ngày đã lên lịch.\n\nNếu bạn cho rằng quyết định này không chính xác, bạn có thể gửi kháng nghị. Gửi email đến {appeals_email} từ địa chỉ email này.\n\n– Đội ngũ An toàn {product_name}"
},
"self_deletion_scheduled": {
"subject": "Xóa tài khoản {product_name} của bạn đã được lên lịch",
"body": "Xin chào {username},\n\nBạn đã yêu cầu xóa tài khoản {product_name} của mình. Tài khoản của bạn được lên lịch xóa vĩnh viễn vào:\n\n{deletionDate, date, full} lúc {deletionDate, time, short}\n\nNếu bạn không yêu cầu điều này, hãy đăng nhập vào tài khoản của bạn để hủy xóa. Chúng tôi cũng khuyên bạn nên thay đổi mật khẩu để bảo mật tài khoản của mình.\n\n– Đội ngũ {product_name}"
},
"unban_notification": {
"subject": "Tài khoản {product_name} của bạn đã được bỏ tạm ngưng",
"body": "Xin chào {username},\n\nTin tốt: tài khoản {product_name} của bạn đã được bỏ tạm ngưng.\n\n{reason, select,\n null {}\n other {Lý do: {reason}}\n}\n\nBây giờ bạn có thể đăng nhập lại và tiếp tục sử dụng {product_name} như bình thường.\n\n– Đội ngũ An toàn {product_name}"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "你的 {product_name} 账号已被暂时禁用",
"body": "你好 {username},\n\n我们检测到你的 {product_name} 账号存在可疑活动,因此暂时禁用了你的账号。\n\n{reason, select,\n null {}\n other {原因: {reason}}\n}\n\n要重新获得账号访问权限,你需要重置密码:\n\n{forgotUrl}\n\n重置密码后,你将能够再次登录。\n\n如果你认为这是误操作,请联系我们的支持团队。\n\n– {product_name} 安全团队"
},
"account_scheduled_deletion": {
"subject": "你的 {product_name} 账号将被永久删除",
"body": "你好 {username},\n\n由于违反了我们的《服务条款》或《社区准则》,你的 {product_name} 账号已被安排永久删除。\n\n计划删除时间:{deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {原因: {reason}}\n}\n\n这是一项严重的强制措施。你的账号数据将在预定日期被永久删除。\n\n请查阅:\n- 服务条款:{termsUrl}\n- 社区准则:{guidelinesUrl}\n\n申诉流程:\n如果你认为此强制决定不正确或不合理,你有 60 天时间提交申诉。请使用此邮箱地址发送邮件至 {appeals_email}。\n\n在你的申诉中:\n- 清楚说明你认为强制决定不正确或不合理的原因\n- 提供任何相关证据或背景信息\n\n{product_name} 安全团队成员将审核你的申诉,并可能暂停待处理的删除,直到最终决定做出。\n\n– {product_name} 安全团队"
},
"account_temp_banned": {
"subject": "你的 {product_name} 账号已被暂时封禁",
"body": "你好 {username},\n\n你的 {product_name} 账号因违反我们的《服务条款》或《社区准则》已被暂时封禁。\n\n封禁时长:{durationHours, plural,\n =1 {1 小时}\n other {# 小时}\n}\n封禁至:{bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {原因: {reason}}\n}\n\n在此期间,你将无法访问你的账号。\n\n请查阅:\n- 服务条款:{termsUrl}\n- 社区准则:{guidelinesUrl}\n\n如果你认为此强制决定不正确或不合理,你可以提交申诉。请使用此邮箱地址发送邮件至 {appeals_email},并清楚说明你认为该决定不正确的原因。我们将审核你的申诉并回复我们的决定。\n\n– {product_name} 安全团队"
},
"donation_confirmation": {
"subject": "感谢你的 {product_name} 捐赠",
"body": "你好,\n\n感谢你对 {product_name} 的捐赠!你的 {interval, select,\n month {定期捐赠}\n year {定期捐赠}\n other {一次性捐赠}\n} {interval, select,\n month {已成功设置}\n year {已成功设置}\n other {已成功处理}\n}。\n\n捐赠详情:\n金额:{amount} {currency} {interval, select,\n month {每月}\n year {每年}\n other {}\n}\n\nStripe 将很快通过电子邮件向你发送包含发票 PDF 的单独收据。其中包含所有付款详情,可用于税务目的。\n\n你可以随时使用此链接查看你的捐赠历史、下载发票,以及{interval, select,\n month {管理或取消你的订阅}\n year {管理或取消你的订阅}\n other {管理你的未来捐赠}\n}:\n\n{manageUrl}\n\n你的支持有助于 {product_name} 的持续运行。谢谢!\n\n– {product_name} 团队"
},
"donation_magic_link": {
"subject": "管理你的 {product_name} 捐赠",
"body": "你好,\n\n点击下方链接访问你的捐赠者门户:\n\n{manageUrl}\n\n在门户中,你可以管理订阅、下载发票和查看捐赠历史。\n\n此链接将于 {expiresAt, date, full} {expiresAt, time, short} 失效。\n\n如果你未请求此链接,可以安全忽略此邮件。\n\n– {product_name} 团队"
},
"dsa_report_verification": {
"subject": "验证邮箱以提交 DSA 报告",
"body": "你好,\n\n请使用以下验证码在 {product_name} 上提交你的数字服务法案报告:\n\n{code}\n\n此验证码将于 {expiresAt, date, full} {expiresAt, time, short} 失效。\n\n如果你未请求此操作,请忽略此邮件。\n\n– {product_name} 安全团队"
},
"email_change_new": {
"subject": "验证你的新 {product_name} 邮箱",
"body": "你好 {username},\n\n请在应用中输入此验证码以验证你的新 {product_name} 邮箱:\n\n{code}\n\n此验证码将于 {expiresAt, date, full} {expiresAt, time, short} 失效。\n\n如果你未请求此操作,请忽略此邮件。\n\n– {product_name} 团队"
},
"email_change_original": {
"subject": "确认你的 {product_name} 邮箱变更",
"body": "你好 {username},\n\n我们收到了更改你的 {product_name} 账号邮箱的请求。\n\n要确认此更改,请在应用中输入此验证码:\n\n{code}\n\n此验证码将于 {expiresAt, date, full} {expiresAt, time, short} 失效。\n\n如果你未请求此操作,请立即保护账号安全。\n\n– {product_name} 团队"
},
"email_change_revert": {
"subject": "你的 {product_name} 邮箱已变更",
"body": "你好 {username},\n\n你的 {product_name} 账号邮箱已变更为 {newEmail}。\n\n如果你进行了此更改,则无需采取任何操作。如果你没有进行此更改,请使用此链接撤销更改并保护账号安全:\n\n{revertUrl}\n\n这将恢复你之前的邮箱,将所有设备退出登录,移除关联的电话号码,禁用多重身份验证,并要求你设置新密码。\n\n– {product_name} 安全团队"
},
"email_verification": {
"subject": "验证你的 {product_name} 邮箱地址",
"body": "你好 {username},\n\n请点击下方链接验证你的 {product_name} 账号邮箱地址:\n\n{verifyUrl}\n\n如果你未创建 {product_name} 账号,请忽略此邮件。\n\n此链接 24 小时内有效。\n\n– {product_name} 团队"
},
"gift_chargeback_notification": {
"subject": "已移除你兑换礼品所获得的特权",
"body": "你好 {username},\n\n你兑换的礼品码最初由他人支付。该付款现已被撤销(退单)。\n\n因此,我们已移除你在兑换礼品时添加到你账号的特权。\n\n如果你认为此操作有误,请联系我们的支持团队,并提供有关礼品码以及兑换时间的任何详细信息。\n\n– {product_name} 团队"
},
"harvest_completed": {
"subject": "你的 {product_name} 数据导出已准备就绪",
"body": "你好 {username},\n\n你的数据导出已准备就绪。\n\n下载链接:\n{downloadUrl}\n\n包含消息数:{totalMessages, number}\n文件大小:{fileSizeMB, number} MB\n\n此链接将于 {expiresAt, date, full} {expiresAt, time, short} 失效。\n\n如果你未请求此导出,请立即更改密码并联系支持团队。\n\n– {product_name} 团队"
},
"inactivity_warning": {
"subject": "你的 {product_name} 账号将因不活跃而被删除",
"body": "你好 {username},\n\n自 {lastActiveDate, date, full} 以来,我们未检测到你的 {product_name} 账号有任何活动。\n\n如果你未在 {deletionDate, date, full} {deletionDate, time, short} 前登录,你的账号将因长期未活动而被永久删除。\n\n立即登录:\n{loginUrl}\n\n如果你最近使用过 {product_name},请立即联系我们的支持团队。\n\n– {product_name} 团队"
},
"ip_authorization": {
"subject": "授权新 IP 地址登录",
"body": "你好 {username},\n\n我们检测到你的 {product_name} 账号有来自新 IP 地址的登录尝试:\n\nIP 地址:{ipAddress}\n位置:{location}\n\n如果你本人进行了此操作,请点击下方链接授权此 IP 地址:\n\n{authUrl}\n\n如果你没有进行此操作,请立即更改密码。\n\n此链接 30 分钟内有效。\n\n– {product_name} 团队"
},
"password_change_verification": {
"subject": "确认你的 {product_name} 密码更改",
"body": "你好 {username},\n\n我们收到了更改你的 {product_name} 账号密码的请求。\n\n要确认此更改,请在应用中输入此验证码:\n\n{code}\n\n此验证码将于 {expiresAt} 失效。\n\n如果你未请求此操作,可能有人访问了你的账号。请立即更改密码并启用双重身份验证。\n\n– {product_name} 团队"
},
"password_reset": {
"subject": "重置你的 {product_name} 账号密码",
"body": "你好 {username},\n\n你请求重置 {product_name} 账号密码。请使用下方链接设置新密码:\n\n{resetUrl}\n\n如果你未请求此操作,请忽略此邮件。\n\n此链接 1 小时内有效。\n\n– {product_name} 团队"
},
"registration_approved": {
"subject": "你的 {product_name} 注册已通过",
"body": "你好 {username},\n\n好消息:你的 {product_name} 注册已通过。\n\n你现在可以登录 {product_name} 应用:\n{channelsUrl}\n\n欢迎加入 {product_name} 社区。\n\n– {product_name} Team"
},
"report_resolved": {
"subject": "你的 {product_name} 报告已审核",
"body": "你好 {username},\n\n你的报告(ID: {reportId})已通过我们的安全团队审核。{hasComment, select, yes {\n\n安全团队的回复:\n{publicComment}} other {}}\n\n感谢你为维护 {product_name} 社区安全所做的贡献。我们认真对待所有报告,并感谢你对社区的支持。\n\n如果你对此结果有任何疑问或担忧,请联系 {safety_email}。\n\n– {product_name} 安全团队"
},
"scheduled_deletion_notification": {
"subject": "你的 {product_name} 账号将被永久删除",
"body": "你好 {username},\n\n你的 {product_name} 账号已被安排永久删除。\n\n计划删除时间:{deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {原因: {reason}}\n}\n\n这是一项严重的强制措施。你的账号数据将在预定日期被永久删除。\n\n如果你认为此强制决定不正确,可以提交申诉。请使用此邮箱地址发送邮件至 {appeals_email}。\n\n– {product_name} 安全团队"
},
"self_deletion_scheduled": {
"subject": "你的 {product_name} 账号已计划删除",
"body": "你好 {username},\n\n你请求删除你的 {product_name} 账号。你的账号计划于以下时间永久删除:\n\n{deletionDate, date, full} {deletionDate, time, short}\n\n如果你未请求此操作,请登录账号取消删除。建议同时更改密码以保护账号安全。\n\n– {product_name} 团队"
},
"unban_notification": {
"subject": "你的 {product_name} 账号已解除封禁",
"body": "你好 {username},\n\n好消息:你的 {product_name} 账号已解除封禁。\n\n{reason, select,\n null {}\n other {原因: {reason}}\n}\n\n你现在可以重新登录,正常使用 {product_name}。\n\n– {product_name} 安全团队"
}
"account_disabled_suspicious": {
"subject": "你的 {product_name} 账号已被暂时禁用",
"body": "你好 {username},\n\n我们检测到你的 {product_name} 账号存在可疑活动,因此暂时禁用了你的账号。\n\n{reason, select,\n null {}\n other {原因: {reason}}\n}\n\n要重新获得账号访问权限,你需要重置密码:\n\n{forgotUrl}\n\n重置密码后,你将能够再次登录。\n\n如果你认为这是误操作,请联系我们的支持团队。\n\n– {product_name} 安全团队"
},
"account_scheduled_deletion": {
"subject": "你的 {product_name} 账号将被永久删除",
"body": "你好 {username},\n\n由于违反了我们的《服务条款》或《社区准则》,你的 {product_name} 账号已被安排永久删除。\n\n计划删除时间:{deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {原因: {reason}}\n}\n\n这是一项严重的强制措施。你的账号数据将在预定日期被永久删除。\n\n请查阅:\n- 服务条款:{termsUrl}\n- 社区准则:{guidelinesUrl}\n\n申诉流程:\n如果你认为此强制决定不正确或不合理,你有 60 天时间提交申诉。请使用此邮箱地址发送邮件至 {appeals_email}。\n\n在你的申诉中:\n- 清楚说明你认为强制决定不正确或不合理的原因\n- 提供任何相关证据或背景信息\n\n{product_name} 安全团队成员将审核你的申诉,并可能暂停待处理的删除,直到最终决定做出。\n\n– {product_name} 安全团队"
},
"account_temp_banned": {
"subject": "你的 {product_name} 账号已被暂时封禁",
"body": "你好 {username},\n\n你的 {product_name} 账号因违反我们的《服务条款》或《社区准则》已被暂时封禁。\n\n封禁时长:{durationHours, plural,\n =1 {1 小时}\n other {# 小时}\n}\n封禁至:{bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {原因: {reason}}\n}\n\n在此期间,你将无法访问你的账号。\n\n请查阅:\n- 服务条款:{termsUrl}\n- 社区准则:{guidelinesUrl}\n\n如果你认为此强制决定不正确或不合理,你可以提交申诉。请使用此邮箱地址发送邮件至 {appeals_email},并清楚说明你认为该决定不正确的原因。我们将审核你的申诉并回复我们的决定。\n\n– {product_name} 安全团队"
},
"donation_confirmation": {
"subject": "感谢你的 {product_name} 捐赠",
"body": "你好,\n\n感谢你对 {product_name} 的捐赠!你的 {interval, select,\n month {定期捐赠}\n year {定期捐赠}\n other {一次性捐赠}\n} {interval, select,\n month {已成功设置}\n year {已成功设置}\n other {已成功处理}\n}。\n\n捐赠详情:\n金额:{amount} {currency} {interval, select,\n month {每月}\n year {每年}\n other {}\n}\n\nStripe 将很快通过电子邮件向你发送包含发票 PDF 的单独收据。其中包含所有付款详情,可用于税务目的。\n\n你可以随时使用此链接查看你的捐赠历史、下载发票,以及{interval, select,\n month {管理或取消你的订阅}\n year {管理或取消你的订阅}\n other {管理你的未来捐赠}\n}:\n\n{manageUrl}\n\n你的支持有助于 {product_name} 的持续运行。谢谢!\n\n– {product_name} 团队"
},
"donation_magic_link": {
"subject": "管理你的 {product_name} 捐赠",
"body": "你好,\n\n点击下方链接访问你的捐赠者门户:\n\n{manageUrl}\n\n在门户中,你可以管理订阅、下载发票和查看捐赠历史。\n\n此链接将于 {expiresAt, date, full} {expiresAt, time, short} 失效。\n\n如果你未请求此链接,可以安全忽略此邮件。\n\n– {product_name} 团队"
},
"dsa_report_verification": {
"subject": "验证邮箱以提交 DSA 报告",
"body": "你好,\n\n请使用以下验证码在 {product_name} 上提交你的数字服务法案报告:\n\n{code}\n\n此验证码将于 {expiresAt, date, full} {expiresAt, time, short} 失效。\n\n如果你未请求此操作,请忽略此邮件。\n\n– {product_name} 安全团队"
},
"email_change_new": {
"subject": "验证你的新 {product_name} 邮箱",
"body": "你好 {username},\n\n请在应用中输入此验证码以验证你的新 {product_name} 邮箱:\n\n{code}\n\n此验证码将于 {expiresAt, date, full} {expiresAt, time, short} 失效。\n\n如果你未请求此操作,请忽略此邮件。\n\n– {product_name} 团队"
},
"email_change_original": {
"subject": "确认你的 {product_name} 邮箱变更",
"body": "你好 {username},\n\n我们收到了更改你的 {product_name} 账号邮箱的请求。\n\n要确认此更改,请在应用中输入此验证码:\n\n{code}\n\n此验证码将于 {expiresAt, date, full} {expiresAt, time, short} 失效。\n\n如果你未请求此操作,请立即保护账号安全。\n\n– {product_name} 团队"
},
"email_change_revert": {
"subject": "你的 {product_name} 邮箱已变更",
"body": "你好 {username},\n\n你的 {product_name} 账号邮箱已变更为 {newEmail}。\n\n如果你进行了此更改,则无需采取任何操作。如果你没有进行此更改,请使用此链接撤销更改并保护账号安全:\n\n{revertUrl}\n\n这将恢复你之前的邮箱,将所有设备退出登录,移除关联的电话号码,禁用多重身份验证,并要求你设置新密码。\n\n– {product_name} 安全团队"
},
"email_verification": {
"subject": "验证你的 {product_name} 邮箱地址",
"body": "你好 {username},\n\n请点击下方链接验证你的 {product_name} 账号邮箱地址:\n\n{verifyUrl}\n\n如果你未创建 {product_name} 账号,请忽略此邮件。\n\n此链接 24 小时内有效。\n\n– {product_name} 团队"
},
"gift_chargeback_notification": {
"subject": "已移除你兑换礼品所获得的特权",
"body": "你好 {username},\n\n你兑换的礼品码最初由他人支付。该付款现已被撤销(退单)。\n\n因此,我们已移除你在兑换礼品时添加到你账号的特权。\n\n如果你认为此操作有误,请联系我们的支持团队,并提供有关礼品码以及兑换时间的任何详细信息。\n\n– {product_name} 团队"
},
"harvest_completed": {
"subject": "你的 {product_name} 数据导出已准备就绪",
"body": "你好 {username},\n\n你的数据导出已准备就绪。\n\n下载链接:\n{downloadUrl}\n\n包含消息数:{totalMessages, number}\n文件大小:{fileSizeMB, number} MB\n\n此链接将于 {expiresAt, date, full} {expiresAt, time, short} 失效。\n\n如果你未请求此导出,请立即更改密码并联系支持团队。\n\n– {product_name} 团队"
},
"inactivity_warning": {
"subject": "你的 {product_name} 账号将因不活跃而被删除",
"body": "你好 {username},\n\n自 {lastActiveDate, date, full} 以来,我们未检测到你的 {product_name} 账号有任何活动。\n\n如果你未在 {deletionDate, date, full} {deletionDate, time, short} 前登录,你的账号将因长期未活动而被永久删除。\n\n立即登录:\n{loginUrl}\n\n如果你最近使用过 {product_name},请立即联系我们的支持团队。\n\n– {product_name} 团队"
},
"ip_authorization": {
"subject": "授权新 IP 地址登录",
"body": "你好 {username},\n\n我们检测到你的 {product_name} 账号有来自新 IP 地址的登录尝试:\n\nIP 地址:{ipAddress}\n位置:{location}\n\n如果你本人进行了此操作,请点击下方链接授权此 IP 地址:\n\n{authUrl}\n\n如果你没有进行此操作,请立即更改密码。\n\n此链接 30 分钟内有效。\n\n– {product_name} 团队"
},
"password_change_verification": {
"subject": "确认你的 {product_name} 密码更改",
"body": "你好 {username},\n\n我们收到了更改你的 {product_name} 账号密码的请求。\n\n要确认此更改,请在应用中输入此验证码:\n\n{code}\n\n此验证码将于 {expiresAt} 失效。\n\n如果你未请求此操作,可能有人访问了你的账号。请立即更改密码并启用双重身份验证。\n\n– {product_name} 团队"
},
"password_reset": {
"subject": "重置你的 {product_name} 账号密码",
"body": "你好 {username},\n\n你请求重置 {product_name} 账号密码。请使用下方链接设置新密码:\n\n{resetUrl}\n\n如果你未请求此操作,请忽略此邮件。\n\n此链接 1 小时内有效。\n\n– {product_name} 团队"
},
"registration_approved": {
"subject": "你的 {product_name} 注册已通过",
"body": "你好 {username},\n\n好消息:你的 {product_name} 注册已通过。\n\n你现在可以登录 {product_name} 应用:\n{channelsUrl}\n\n欢迎加入 {product_name} 社区。\n\n– {product_name} Team"
},
"report_resolved": {
"subject": "你的 {product_name} 报告已审核",
"body": "你好 {username},\n\n你的报告(ID: {reportId})已通过我们的安全团队审核。{hasComment, select, yes {\n\n安全团队的回复:\n{publicComment}} other {}}\n\n感谢你为维护 {product_name} 社区安全所做的贡献。我们认真对待所有报告,并感谢你对社区的支持。\n\n如果你对此结果有任何疑问或担忧,请联系 {safety_email}。\n\n– {product_name} 安全团队"
},
"scheduled_deletion_notification": {
"subject": "你的 {product_name} 账号将被永久删除",
"body": "你好 {username},\n\n你的 {product_name} 账号已被安排永久删除。\n\n计划删除时间:{deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {原因: {reason}}\n}\n\n这是一项严重的强制措施。你的账号数据将在预定日期被永久删除。\n\n如果你认为此强制决定不正确,可以提交申诉。请使用此邮箱地址发送邮件至 {appeals_email}。\n\n– {product_name} 安全团队"
},
"self_deletion_scheduled": {
"subject": "你的 {product_name} 账号已计划删除",
"body": "你好 {username},\n\n你请求删除你的 {product_name} 账号。你的账号计划于以下时间永久删除:\n\n{deletionDate, date, full} {deletionDate, time, short}\n\n如果你未请求此操作,请登录账号取消删除。建议同时更改密码以保护账号安全。\n\n– {product_name} 团队"
},
"unban_notification": {
"subject": "你的 {product_name} 账号已解除封禁",
"body": "你好 {username},\n\n好消息:你的 {product_name} 账号已解除封禁。\n\n{reason, select,\n null {}\n other {原因: {reason}}\n}\n\n你现在可以重新登录,正常使用 {product_name}。\n\n– {product_name} 安全团队"
}
}
@@ -1,86 +1,86 @@
{
"account_disabled_suspicious": {
"subject": "您的 {product_name} 帳號已暫時停用",
"body": "哈囉 {username},\n\n我們偵測到您的 {product_name} 帳號有可疑活動,因此已暫時停用您的帳號。\n\n{reason, select,\n null {}\n other {原因:{reason}}\n}\n\n若要重新取得帳號存取權,您需要重設密碼:\n\n{forgotUrl}\n\n重設密碼後,您將可以再次登入。\n\n如果您認為這是錯誤操作,請聯絡我們的支援團隊。\n\n– {product_name} 安全團隊"
},
"account_scheduled_deletion": {
"subject": "您的 {product_name} 帳號將被永久刪除",
"body": "哈囉 {username},\n\n由於您違反了我們的服務條款或社群準則,您的 {product_name} 帳號已排定永久刪除。\n\n排定刪除時間:{deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {原因:{reason}}\n}\n\n這是一項嚴重的強制措施。您的帳號資料將在排定日期永久刪除。\n\n請檢閱:\n- 服務條款:{termsUrl}\n- 社群準則:{guidelinesUrl}\n\n申訴流程:\n如果您認為此強制措施的決定不正確或不合理,您有 60 天的時間可以提交申訴。請從此電子郵件地址寄送電子郵件至 {appeals_email}。\n\n在您的申訴中:\n- 請清楚說明您認為此強制措施的決定不正確或不合理的原因\n- 提供任何相關證據或背景資訊\n\n{product_name} 安全團隊的成員將會審查您的申訴,並可能暫停待處理的刪除,直到做出最終決定。\n\n– {product_name} 安全團隊"
},
"account_temp_banned": {
"subject": "您的 {product_name} 帳號已暫時停權",
"body": "哈囉 {username},\n\n由於您違反了我們的服務條款或社群準則,您的 {product_name} 帳號已暫時停權。\n\n持續時間:{durationHours, plural,\n =1 {1 小時}\n other {# 小時}\n}\n停權至:{bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {原因:{reason}}\n}\n\n在此期間,您將無法存取您的帳號。\n\n請檢閱:\n- 服務條款:{termsUrl}\n- 社群準則:{guidelinesUrl}\n\n如果您認為此強制措施的決定不正確或不合理,您可以提交申訴。請從此電子郵件地址寄送電子郵件至 {appeals_email},並清楚說明您認為該決定不正確的原因。我們將審查您的申訴並回覆我們的決定。\n\n– {product_name} 安全團隊"
},
"donation_confirmation": {
"subject": "感謝您對 {product_name} 的捐款",
"body": "哈囉,\n\n感謝您對 {product_name} 的捐款!您的 {interval, select,\n month {定期捐款}\n year {定期捐款}\n other {一次性捐款}\n} 已成功{interval, select,\n month {設定}\n year {設定}\n other {處理}\n}。\n\n捐款詳情:\n金額:{amount} {currency} {interval, select,\n month {每月}\n year {每年}\n other {}\n}\n\nStripe 將會很快寄送一份包含發票 PDF 的獨立收據給您。這份收據包含所有付款詳情,可用於報稅。\n\n您可以隨時使用此連結查看您的捐款歷史記錄、下載發票,{interval, select,\n month {以及管理或取消您的訂閱}\n year {以及管理或取消您的訂閱}\n other {以及管理未來的捐款}\n}:\n\n{manageUrl}\n\n您的支持有助於 {product_name} 的運作。謝謝您!\n\n– {product_name} 團隊"
},
"donation_magic_link": {
"subject": "管理您的 {product_name} 捐款",
"body": "哈囉,\n\n點擊下方連結以存取您的捐款者入口網站:\n\n{manageUrl}\n\n在入口網站中,您可以管理訂閱、下載發票並查看您的捐款歷史記錄。\n\n此連結將於 {expiresAt, date, full} {expiresAt, time, short} 失效。\n\n如果您沒有要求此連結,您可以安全地忽略此電子郵件。\n\n– {product_name} 團隊"
},
"dsa_report_verification": {
"subject": "驗證您的電子郵件以提交 DSA 報告",
"body": "哈囉,\n\n請使用以下驗證碼在 {product_name} 上提交您的數位服務法報告:\n\n{code}\n\n此驗證碼將於 {expiresAt, date, full} {expiresAt, time, short} 失效。\n\n如果您沒有要求此驗證碼,您可以忽略此電子郵件。\n\n– {product_name} 安全團隊"
},
"email_change_new": {
"subject": "驗證您的新 {product_name} 電子郵件",
"body": "哈囉 {username},\n\n請在應用程式中輸入此驗證碼以驗證您的新 {product_name} 電子郵件:\n\n{code}\n\n此驗證碼將於 {expiresAt, date, full} {expiresAt, time, short} 失效。\n\n如果您沒有要求此驗證碼,您可以忽略此電子郵件。\n\n– {product_name} 團隊"
},
"email_change_original": {
"subject": "確認您的 {product_name} 電子郵件變更",
"body": "哈囉 {username},\n\n我們收到變更您 {product_name} 帳號電子郵件地址的請求。\n\n若要確認此變更,請在應用程式中輸入此驗證碼:\n\n{code}\n\n此驗證碼將於 {expiresAt, date, full} {expiresAt, time, short} 失效。\n\n如果您沒有要求此變更,請立即保護您的帳號安全。\n\n– {product_name} 團隊"
},
"email_change_revert": {
"subject": "您的 {product_name} 電子郵件已變更",
"body": "哈囉 {username},\n\n您的 {product_name} 帳號電子郵件地址已變更為 {newEmail}。\n\n如果您進行了此變更,則無需採取任何行動。如果您沒有進行此變更,您可以使用此連結還原變更並保護您的帳號安全:\n\n{revertUrl}\n\n這將會還原您先前的電子郵件、將您從所有裝置登出、移除連結的電話號碼、停用多重驗證,並要求您設定新密碼。\n\n– {product_name} 安全團隊"
},
"email_verification": {
"subject": "驗證您的 {product_name} 電子郵件地址",
"body": "哈囉 {username},\n\n請點擊下方連結以驗證您的 {product_name} 帳號電子郵件地址:\n\n{verifyUrl}\n\n如果您沒有建立 {product_name} 帳號,您可以安全地忽略此電子郵件。\n\n此連結在 24 小時內有效。\n\n– {product_name} 團隊"
},
"gift_chargeback_notification": {
"subject": "您兌換禮物獲得的福利已被移除",
"body": "哈囉 {username},\n\n您兌換的禮物代碼最初是由其他人支付的。該筆付款已遭撤銷(退款)。\n\n因此,我們已移除您兌換禮物時獲得的福利。\n\n如果您認為這是錯誤,請聯絡我們的支援團隊,並提供您所知道的禮物代碼和兌換時間的任何詳細資訊。\n\n– {product_name} 團隊"
},
"harvest_completed": {
"subject": "您的 {product_name} 資料匯出已可下載",
"body": "哈囉 {username},\n\n您的資料已可下載。\n\n下載連結:\n{downloadUrl}\n\n包含的訊息:{totalMessages, number} 則\n檔案大小:{fileSizeMB, number} MB\n\n此連結將於 {expiresAt, date, full} {expiresAt, time, short} 失效。\n\n如果您沒有要求此匯出,請立即變更您的密碼並聯絡我們的支援團隊。\n\n– {product_name} 團隊"
},
"inactivity_warning": {
"subject": "您的 {product_name} 帳號將因不活躍而被刪除",
"body": "哈囉 {username},\n\n自從 {lastActiveDate, date, full} 以來,我們沒有在您的 {product_name} 帳號上看到任何活動。\n\n如果您未在 {deletionDate, date, full} {deletionDate, time, short} 前登入,您的帳號將因不活躍而被永久刪除。\n\n請在此登入:\n{loginUrl}\n\n如果您最近有使用 {product_name},請立即聯絡我們的支援團隊。\n\n– {product_name} 團隊"
},
"ip_authorization": {
"subject": "授權從新的 IP 位址登入",
"body": "哈囉 {username},\n\n我們偵測到您的 {product_name} 帳號有來自新 IP 位址的登入嘗試:\n\nIP 位址:{ipAddress}\n位置:{location}\n\n如果這是您本人操作,請點擊下方連結授權此 IP 位址:\n\n{authUrl}\n\n如果您沒有嘗試登入,請立即變更您的密碼。\n\n此連結在 30 分鐘內有效。\n\n– {product_name} 團隊"
},
"password_change_verification": {
"subject": "確認您的 {product_name} 密碼變更",
"body": "哈囉 {username},\n\n我們收到變更您 {product_name} 帳號密碼的請求。\n\n若要確認此變更,請在應用程式中輸入此驗證碼:\n\n{code}\n\n此驗證碼將於 {expiresAt} 失效。\n\n如果您沒有要求此驗證碼,可能有人存取了您的帳號。請立即變更您的密碼並啟用雙重驗證。\n\n– {product_name} 團隊"
},
"password_reset": {
"subject": "重設您的 {product_name} 密碼",
"body": "哈囉 {username},\n\n您要求重設 {product_name} 密碼。請使用下方連結設定新密碼:\n\n{resetUrl}\n\n如果您沒有要求此重設,您可以安全地忽略此電子郵件。\n\n此連結在 1 小時內有效。\n\n– {product_name} 團隊"
},
"registration_approved": {
"subject": "您的 {product_name} 註冊已獲批准",
"body": "哈囉 {username},\n\n好消息:您的 {product_name} 註冊已獲批准。\n\n您現在可以從這裡登入 {product_name} 應用程式:\n{channelsUrl}\n\n歡迎加入 {product_name} 社群。\n\n– {product_name} 團隊"
},
"report_resolved": {
"subject": "您的 {product_name} 報告已審核",
"body": "哈囉 {username},\n\n您的報告(ID:{reportId})已由我們的安全團隊審閱。{hasComment, select, yes {\n\n安全團隊的回覆:\n{publicComment}} other {}}\n\n感謝您協助維護 {product_name} 的安全。我們認真對待所有報告,並感謝您對社群的貢獻。\n\n如果您對此結果有任何疑問或疑慮,請聯絡 {safety_email}。\n\n– {product_name} 安全團隊"
},
"scheduled_deletion_notification": {
"subject": "您的 {product_name} 帳號將被永久刪除",
"body": "哈囉 {username},\n\n您的 {product_name} 帳號已排定永久刪除。\n\n排定刪除時間:{deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {原因:{reason}}\n}\n\n這是一項嚴重的強制措施。您的帳號資料將在排定日期永久刪除。\n\n如果您認為此強制措施的決定不正確,您可以提交申訴。請從此電子郵件地址寄送電子郵件至 {appeals_email}。\n\n– {product_name} 安全團隊"
},
"self_deletion_scheduled": {
"subject": "您的 {product_name} 帳號刪除已排定",
"body": "哈囉 {username},\n\n您要求刪除您的 {product_name} 帳號。您的帳號已排定於以下時間永久刪除:\n\n{deletionDate, date, full} {deletionDate, time, short}\n\n如果您沒有要求此刪除,請登入您的帳號以取消刪除。我們也建議您變更密碼以保護您的帳號安全。\n\n– {product_name} 團隊"
},
"unban_notification": {
"subject": "您的 {product_name} 帳號停權已解除",
"body": "哈囉 {username},\n\n好消息:您的 {product_name} 帳號停權已解除。\n\n{reason, select,\n null {}\n other {原因:{reason}}\n}\n\n您現在可以重新登入並繼續正常使用 {product_name}。\n\n– {product_name} 安全團隊"
}
"account_disabled_suspicious": {
"subject": "您的 {product_name} 帳號已暫時停用",
"body": "哈囉 {username},\n\n我們偵測到您的 {product_name} 帳號有可疑活動,因此已暫時停用您的帳號。\n\n{reason, select,\n null {}\n other {原因:{reason}}\n}\n\n若要重新取得帳號存取權,您需要重設密碼:\n\n{forgotUrl}\n\n重設密碼後,您將可以再次登入。\n\n如果您認為這是錯誤操作,請聯絡我們的支援團隊。\n\n– {product_name} 安全團隊"
},
"account_scheduled_deletion": {
"subject": "您的 {product_name} 帳號將被永久刪除",
"body": "哈囉 {username},\n\n由於您違反了我們的服務條款或社群準則,您的 {product_name} 帳號已排定永久刪除。\n\n排定刪除時間:{deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {原因:{reason}}\n}\n\n這是一項嚴重的強制措施。您的帳號資料將在排定日期永久刪除。\n\n請檢閱:\n- 服務條款:{termsUrl}\n- 社群準則:{guidelinesUrl}\n\n申訴流程:\n如果您認為此強制措施的決定不正確或不合理,您有 60 天的時間可以提交申訴。請從此電子郵件地址寄送電子郵件至 {appeals_email}。\n\n在您的申訴中:\n- 請清楚說明您認為此強制措施的決定不正確或不合理的原因\n- 提供任何相關證據或背景資訊\n\n{product_name} 安全團隊的成員將會審查您的申訴,並可能暫停待處理的刪除,直到做出最終決定。\n\n– {product_name} 安全團隊"
},
"account_temp_banned": {
"subject": "您的 {product_name} 帳號已暫時停權",
"body": "哈囉 {username},\n\n由於您違反了我們的服務條款或社群準則,您的 {product_name} 帳號已暫時停權。\n\n持續時間:{durationHours, plural,\n =1 {1 小時}\n other {# 小時}\n}\n停權至:{bannedUntil, date, full} {bannedUntil, time, short}\n\n{reason, select,\n null {}\n other {原因:{reason}}\n}\n\n在此期間,您將無法存取您的帳號。\n\n請檢閱:\n- 服務條款:{termsUrl}\n- 社群準則:{guidelinesUrl}\n\n如果您認為此強制措施的決定不正確或不合理,您可以提交申訴。請從此電子郵件地址寄送電子郵件至 {appeals_email},並清楚說明您認為該決定不正確的原因。我們將審查您的申訴並回覆我們的決定。\n\n– {product_name} 安全團隊"
},
"donation_confirmation": {
"subject": "感謝您對 {product_name} 的捐款",
"body": "哈囉,\n\n感謝您對 {product_name} 的捐款!您的 {interval, select,\n month {定期捐款}\n year {定期捐款}\n other {一次性捐款}\n} 已成功{interval, select,\n month {設定}\n year {設定}\n other {處理}\n}。\n\n捐款詳情:\n金額:{amount} {currency} {interval, select,\n month {每月}\n year {每年}\n other {}\n}\n\nStripe 將會很快寄送一份包含發票 PDF 的獨立收據給您。這份收據包含所有付款詳情,可用於報稅。\n\n您可以隨時使用此連結查看您的捐款歷史記錄、下載發票,{interval, select,\n month {以及管理或取消您的訂閱}\n year {以及管理或取消您的訂閱}\n other {以及管理未來的捐款}\n}:\n\n{manageUrl}\n\n您的支持有助於 {product_name} 的運作。謝謝您!\n\n– {product_name} 團隊"
},
"donation_magic_link": {
"subject": "管理您的 {product_name} 捐款",
"body": "哈囉,\n\n點擊下方連結以存取您的捐款者入口網站:\n\n{manageUrl}\n\n在入口網站中,您可以管理訂閱、下載發票並查看您的捐款歷史記錄。\n\n此連結將於 {expiresAt, date, full} {expiresAt, time, short} 失效。\n\n如果您沒有要求此連結,您可以安全地忽略此電子郵件。\n\n– {product_name} 團隊"
},
"dsa_report_verification": {
"subject": "驗證您的電子郵件以提交 DSA 報告",
"body": "哈囉,\n\n請使用以下驗證碼在 {product_name} 上提交您的數位服務法報告:\n\n{code}\n\n此驗證碼將於 {expiresAt, date, full} {expiresAt, time, short} 失效。\n\n如果您沒有要求此驗證碼,您可以忽略此電子郵件。\n\n– {product_name} 安全團隊"
},
"email_change_new": {
"subject": "驗證您的新 {product_name} 電子郵件",
"body": "哈囉 {username},\n\n請在應用程式中輸入此驗證碼以驗證您的新 {product_name} 電子郵件:\n\n{code}\n\n此驗證碼將於 {expiresAt, date, full} {expiresAt, time, short} 失效。\n\n如果您沒有要求此驗證碼,您可以忽略此電子郵件。\n\n– {product_name} 團隊"
},
"email_change_original": {
"subject": "確認您的 {product_name} 電子郵件變更",
"body": "哈囉 {username},\n\n我們收到變更您 {product_name} 帳號電子郵件地址的請求。\n\n若要確認此變更,請在應用程式中輸入此驗證碼:\n\n{code}\n\n此驗證碼將於 {expiresAt, date, full} {expiresAt, time, short} 失效。\n\n如果您沒有要求此變更,請立即保護您的帳號安全。\n\n– {product_name} 團隊"
},
"email_change_revert": {
"subject": "您的 {product_name} 電子郵件已變更",
"body": "哈囉 {username},\n\n您的 {product_name} 帳號電子郵件地址已變更為 {newEmail}。\n\n如果您進行了此變更,則無需採取任何行動。如果您沒有進行此變更,您可以使用此連結還原變更並保護您的帳號安全:\n\n{revertUrl}\n\n這將會還原您先前的電子郵件、將您從所有裝置登出、移除連結的電話號碼、停用多重驗證,並要求您設定新密碼。\n\n– {product_name} 安全團隊"
},
"email_verification": {
"subject": "驗證您的 {product_name} 電子郵件地址",
"body": "哈囉 {username},\n\n請點擊下方連結以驗證您的 {product_name} 帳號電子郵件地址:\n\n{verifyUrl}\n\n如果您沒有建立 {product_name} 帳號,您可以安全地忽略此電子郵件。\n\n此連結在 24 小時內有效。\n\n– {product_name} 團隊"
},
"gift_chargeback_notification": {
"subject": "您兌換禮物獲得的福利已被移除",
"body": "哈囉 {username},\n\n您兌換的禮物代碼最初是由其他人支付的。該筆付款已遭撤銷(退款)。\n\n因此,我們已移除您兌換禮物時獲得的福利。\n\n如果您認為這是錯誤,請聯絡我們的支援團隊,並提供您所知道的禮物代碼和兌換時間的任何詳細資訊。\n\n– {product_name} 團隊"
},
"harvest_completed": {
"subject": "您的 {product_name} 資料匯出已可下載",
"body": "哈囉 {username},\n\n您的資料已可下載。\n\n下載連結:\n{downloadUrl}\n\n包含的訊息:{totalMessages, number} 則\n檔案大小:{fileSizeMB, number} MB\n\n此連結將於 {expiresAt, date, full} {expiresAt, time, short} 失效。\n\n如果您沒有要求此匯出,請立即變更您的密碼並聯絡我們的支援團隊。\n\n– {product_name} 團隊"
},
"inactivity_warning": {
"subject": "您的 {product_name} 帳號將因不活躍而被刪除",
"body": "哈囉 {username},\n\n自從 {lastActiveDate, date, full} 以來,我們沒有在您的 {product_name} 帳號上看到任何活動。\n\n如果您未在 {deletionDate, date, full} {deletionDate, time, short} 前登入,您的帳號將因不活躍而被永久刪除。\n\n請在此登入:\n{loginUrl}\n\n如果您最近有使用 {product_name},請立即聯絡我們的支援團隊。\n\n– {product_name} 團隊"
},
"ip_authorization": {
"subject": "授權從新的 IP 位址登入",
"body": "哈囉 {username},\n\n我們偵測到您的 {product_name} 帳號有來自新 IP 位址的登入嘗試:\n\nIP 位址:{ipAddress}\n位置:{location}\n\n如果這是您本人操作,請點擊下方連結授權此 IP 位址:\n\n{authUrl}\n\n如果您沒有嘗試登入,請立即變更您的密碼。\n\n此連結在 30 分鐘內有效。\n\n– {product_name} 團隊"
},
"password_change_verification": {
"subject": "確認您的 {product_name} 密碼變更",
"body": "哈囉 {username},\n\n我們收到變更您 {product_name} 帳號密碼的請求。\n\n若要確認此變更,請在應用程式中輸入此驗證碼:\n\n{code}\n\n此驗證碼將於 {expiresAt} 失效。\n\n如果您沒有要求此驗證碼,可能有人存取了您的帳號。請立即變更您的密碼並啟用雙重驗證。\n\n– {product_name} 團隊"
},
"password_reset": {
"subject": "重設您的 {product_name} 密碼",
"body": "哈囉 {username},\n\n您要求重設 {product_name} 密碼。請使用下方連結設定新密碼:\n\n{resetUrl}\n\n如果您沒有要求此重設,您可以安全地忽略此電子郵件。\n\n此連結在 1 小時內有效。\n\n– {product_name} 團隊"
},
"registration_approved": {
"subject": "您的 {product_name} 註冊已獲批准",
"body": "哈囉 {username},\n\n好消息:您的 {product_name} 註冊已獲批准。\n\n您現在可以從這裡登入 {product_name} 應用程式:\n{channelsUrl}\n\n歡迎加入 {product_name} 社群。\n\n– {product_name} 團隊"
},
"report_resolved": {
"subject": "您的 {product_name} 報告已審核",
"body": "哈囉 {username},\n\n您的報告(ID:{reportId})已由我們的安全團隊審閱。{hasComment, select, yes {\n\n安全團隊的回覆:\n{publicComment}} other {}}\n\n感謝您協助維護 {product_name} 的安全。我們認真對待所有報告,並感謝您對社群的貢獻。\n\n如果您對此結果有任何疑問或疑慮,請聯絡 {safety_email}。\n\n– {product_name} 安全團隊"
},
"scheduled_deletion_notification": {
"subject": "您的 {product_name} 帳號將被永久刪除",
"body": "哈囉 {username},\n\n您的 {product_name} 帳號已排定永久刪除。\n\n排定刪除時間:{deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {原因:{reason}}\n}\n\n這是一項嚴重的強制措施。您的帳號資料將在排定日期永久刪除。\n\n如果您認為此強制措施的決定不正確,您可以提交申訴。請從此電子郵件地址寄送電子郵件至 {appeals_email}。\n\n– {product_name} 安全團隊"
},
"self_deletion_scheduled": {
"subject": "您的 {product_name} 帳號刪除已排定",
"body": "哈囉 {username},\n\n您要求刪除您的 {product_name} 帳號。您的帳號已排定於以下時間永久刪除:\n\n{deletionDate, date, full} {deletionDate, time, short}\n\n如果您沒有要求此刪除,請登入您的帳號以取消刪除。我們也建議您變更密碼以保護您的帳號安全。\n\n– {product_name} 團隊"
},
"unban_notification": {
"subject": "您的 {product_name} 帳號停權已解除",
"body": "哈囉 {username},\n\n好消息:您的 {product_name} 帳號停權已解除。\n\n{reason, select,\n null {}\n other {原因:{reason}}\n}\n\n您現在可以重新登入並繼續正常使用 {product_name}。\n\n– {product_name} 安全團隊"
}
}
@@ -23,6 +23,7 @@ interface CachedLookupResult {
interface PublicInternetRequestUrlPolicyOptions {
dnsCacheTtlMs?: number;
lookupHost?: (hostname: string) => Promise<Array<string>>;
allowPrivateAddresses?: boolean;
}
const BLOCKED_IPV4_SUBNETS: Array<BlockedSubnet> = [
@@ -175,6 +176,7 @@ export function createPublicInternetRequestUrlPolicy(
? options.dnsCacheTtlMs
: DEFAULT_DNS_CACHE_TTL_MS;
const lookupHost = options?.lookupHost ?? defaultLookupHost;
const allowPrivateAddresses = options?.allowPrivateAddresses === true;
const dnsCache = new Map<string, CachedLookupResult>();
async function resolveHostname(hostname: string): Promise<Array<string>> {
const now = Date.now();
@@ -198,7 +200,7 @@ export function createPublicInternetRequestUrlPolicy(
throw createBlockedRequestError(url, context, 'Hostname is empty');
}
if (isIP(normalizedHostname)) {
if (isBlockedIpAddress(normalizedHostname)) {
if (!allowPrivateAddresses && isBlockedIpAddress(normalizedHostname)) {
throw createBlockedRequestError(url, context, 'IP address is in an internal or special-use range');
}
return;
@@ -210,6 +212,9 @@ export function createPublicInternetRequestUrlPolicy(
if (resolvedAddresses.length === 0) {
throw createBlockedRequestError(url, context, 'Hostname resolved to no IP addresses');
}
if (allowPrivateAddresses) {
return;
}
for (const address of resolvedAddresses) {
if (isBlockedIpAddress(address)) {
throw createBlockedRequestError(url, context, `Hostname resolved to disallowed address ${address}`);
@@ -29,12 +29,16 @@
"main": "./src/MediaProxyUtils.ts",
"types": "./src/MediaProxyUtils.ts",
"scripts": {
"test": "vitest run",
"test:watch": "vitest",
"typecheck": "tsgo --noEmit"
},
"dependencies": {
"@types/node": "catalog:"
},
"devDependencies": {
"@typescript/native-preview": "catalog:"
"@typescript/native-preview": "catalog:",
"vitest": "catalog:",
"vite-tsconfig-paths": "catalog:"
}
}
@@ -0,0 +1,106 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {
buildExternalMediaProxyPath,
buildV2ExternalMediaProxyPath,
reconstructOriginalUrl,
} from '@pkgs/media_proxy_utils/src/ExternalMediaProxyPathCodec';
import {describe, expect, it} from 'vitest';
const ROUND_TRIP_URLS = [
'https://static.klipy.com/ii/c8/28/HkAKKCzZ.webp',
'https://static.klipy.com/ii/HkAKKCzZ.webp?v=query_param&goes=here',
'https://example.com:8443/a.png',
'https://avatars.githubusercontent.com/u/241303489?v=4',
'http://example.com/plain.gif',
'https://example.com/deep/nested/path/to/file.jpeg',
'https://example.com/file.png?a=1&b=2&c=3',
'https://example.com/spaced%20name.png',
'https://example.com/unicode/%C3%A5%C3%A4%C3%B6.png',
'https://example.com/file.png?redirect=https%3A%2F%2Fother.example%2Fx.png',
'https://sub.domain.example.co.uk/a/b.webp',
];
describe('buildExternalMediaProxyPath', () => {
it('emits the plain path shape with the extension last', () => {
expect(buildExternalMediaProxyPath('https://static.klipy.com/ii/c8/28/HkAKKCzZ.webp')).toBe(
'https/static.klipy.com/ii/c8/28/HkAKKCzZ.webp',
);
});
it('puts an encoded query, leading question mark included, ahead of the protocol', () => {
expect(buildExternalMediaProxyPath('https://static.klipy.com/ii/HkAKKCzZ.webp?v=query_param&goes=here')).toBe(
'%3Fv%3Dquery_param%26goes%3Dhere/https/static.klipy.com/ii/HkAKKCzZ.webp',
);
});
it('keeps a non default port on the host segment', () => {
expect(buildExternalMediaProxyPath('https://example.com:8443/a.png')).toBe('https/example.com:8443/a.png');
});
it('preserves the http scheme', () => {
expect(buildExternalMediaProxyPath('http://example.com/a.gif')).toBe('http/example.com/a.gif');
});
it('handles a root url with no path', () => {
expect(buildExternalMediaProxyPath('https://example.com/')).toBe('https/example.com');
});
it('never emits the v2 prefix any more', () => {
for (const url of ROUND_TRIP_URLS) {
expect(buildExternalMediaProxyPath(url).startsWith('v2/')).toBe(false);
}
});
it('ends in the source file extension so extension based cdn caching applies', () => {
for (const [url, ext] of [
['https://example.com/a.webp', '.webp'],
['https://example.com/a.png?x=1', '.png'],
['https://example.com/a/b/c.jpeg', '.jpeg'],
] as const) {
expect(buildExternalMediaProxyPath(url).endsWith(ext)).toBe(true);
}
});
it('rejects a url it cannot parse', () => {
expect(() => buildExternalMediaProxyPath('not a url')).toThrow();
});
});
describe('reconstructOriginalUrl', () => {
it('round trips every supported shape', () => {
for (const url of ROUND_TRIP_URLS) {
expect(reconstructOriginalUrl(buildExternalMediaProxyPath(url))).toBe(url);
}
});
it('decodes an externally produced path verbatim', () => {
expect(
reconstructOriginalUrl('%3Fv%3Dquery_param%26goes%3Dhere/https/static.klipy.com/ii/c8/28/HkAKKCzZ.webp'),
).toBe('https://static.klipy.com/ii/c8/28/HkAKKCzZ.webp?v=query_param&goes=here');
});
it('does not double the question mark when the query segment carries one', () => {
const decoded = reconstructOriginalUrl('%3Fa%3D1/https/example.com/x.png');
expect(decoded).toBe('https://example.com/x.png?a=1');
expect(decoded).not.toContain('??');
});
it('still accepts a query segment without a leading question mark', () => {
expect(reconstructOriginalUrl('a%3D1/https/example.com/x.png')).toBe('https://example.com/x.png?a=1');
});
it('still decodes v2 paths so links already sent keep working', () => {
expect(reconstructOriginalUrl(buildV2ExternalMediaProxyPath('https://example.com/a.png?x=1'))).toBe(
'https://example.com/a.png?x=1',
);
});
it('rejects a path that has no host after the protocol', () => {
expect(() => reconstructOriginalUrl('https')).toThrow();
});
it('rejects an empty v2 payload', () => {
expect(() => reconstructOriginalUrl('v2/')).toThrow();
});
});
@@ -74,7 +74,8 @@ function reconstructLegacyOriginalUrl(proxyUrlPath: string): string {
const query = encodedQuery ? decodeLegacyComponent(encodedQuery) : '';
const path = decodeLegacyComponent(encodedPath);
const {hostname, port} = decodeLegacyHostAndPort(hostPart);
return `${protocol}://${hostname}${port ? `:${port}` : ''}/${path}${query ? `?${query}` : ''}`;
const normalizedQuery = query.startsWith('?') ? query.slice(1) : query;
return `${protocol}://${hostname}${port ? `:${port}` : ''}/${path}${normalizedQuery ? `?${normalizedQuery}` : ''}`;
}
function reconstructV2OriginalUrl(proxyUrlPath: string): string {
@@ -85,11 +86,28 @@ function reconstructV2OriginalUrl(proxyUrlPath: string): string {
return decodeV2PathComponent(encodedOriginalUrl);
}
export function buildExternalMediaProxyPath(inputUrl: string): string {
export function buildV2ExternalMediaProxyPath(inputUrl: string): string {
const parsedUrl = new URL(inputUrl);
return `${V2_PATH_PREFIX}${encodeV2PathComponent(parsedUrl.toString())}`;
}
export function buildExternalMediaProxyPath(inputUrl: string): string {
const parsedUrl = new URL(inputUrl);
const protocol = parsedUrl.protocol.replace(/:$/u, '');
const host = parsedUrl.port ? `${parsedUrl.hostname}:${parsedUrl.port}` : parsedUrl.hostname;
const path = parsedUrl.pathname
.replace(/^\//u, '')
.split('/')
.map((segment) => encodeURIComponent(segment))
.join('/');
const segments = parsedUrl.search ? [encodeURIComponent(parsedUrl.search)] : [];
segments.push(protocol, host);
if (path) {
segments.push(path);
}
return segments.join('/');
}
export function reconstructOriginalUrl(proxyUrlPath: string): string {
const reconstructedUrl = proxyUrlPath.startsWith(V2_PATH_PREFIX)
? reconstructV2OriginalUrl(proxyUrlPath)
@@ -0,0 +1,10 @@
{
"extends": "../../../tsconfigs/package.json",
"compilerOptions": {
"paths": {
"@fluxer/*": ["../../../packages/*", "../../../packages/*/src/index.ts"],
"@pkgs/*": ["../*"]
}
},
"include": ["src/**/*"]
}
@@ -0,0 +1,27 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import path from 'node:path';
import {fileURLToPath} from 'node:url';
import tsconfigPaths from 'vite-tsconfig-paths';
import {defineConfig} from 'vitest/config';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
export default defineConfig({
plugins: [
tsconfigPaths({
root: path.resolve(__dirname, '../..'),
}),
],
test: {
globals: true,
environment: 'node',
include: ['**/*.{test,spec}.{ts,tsx}'],
exclude: ['node_modules', 'dist'],
coverage: {
provider: 'v8',
reporter: ['text', 'json', 'html'],
exclude: ['**/*.test.tsx', '**/*.spec.tsx', 'node_modules/'],
},
},
});
+2
View File
@@ -364,6 +364,7 @@ export function buildAPIConfigFromMaster(master: MasterConfig): APIConfig {
auth: {
sudoModeSecret: master.auth.sudo_mode_secret,
connectionInitiationSecret: master.auth.connection_initiation_secret,
ssoAllowPrivateAddresses: master.auth.sso_allow_private_addresses,
passkeys: {
rpName: master.auth.passkeys.rp_name,
rpId: master.auth.passkeys.rp_id,
@@ -428,6 +429,7 @@ export function buildAPIConfigFromMaster(master: MasterConfig): APIConfig {
testHarnessToken: master.dev.test_harness_token,
},
presignedAttachmentUploadsEnabled: master.services.api.presigned_attachment_uploads_enabled ?? false,
presignedDownloadsEnabled: master.services.api.presigned_downloads_enabled ?? false,
attachmentDecayEnabled: master.attachment_decay_enabled,
deletionGracePeriodHours: master.dev.test_mode_enabled ? 0.01 : master.deletion_grace_period_hours,
inactivityDeletionThresholdDays: master.inactivity_deletion_threshold_days,
@@ -742,6 +742,9 @@ class BillingAdminControllerService {
refundTarget,
subscription,
});
if (refundDecision.amountCents !== null && !refundTarget) {
throw new StripeError('No paid Stripe invoice with a refundable payment was found for this subscription');
}
const intentId = await this.billingRepository.actionIntents.create({
userId: BigInt(syncedTargetUser.id),
actorAdminId: BigInt(params.adminUserId),
@@ -758,10 +761,7 @@ class BillingAdminControllerService {
await this.billingRepository.actionIntents.markStage(intentId, 'sub_canceled', {
sub_canceled_at: new Date(),
});
if (refundDecision.amountCents !== null) {
if (!refundTarget) {
throw new StripeError('No paid Stripe invoice with a refundable payment was found for this subscription');
}
if (refundDecision.amountCents !== null && refundTarget) {
refund = await this.stripe.refunds.create(
{
...(refundTarget.paymentIntentId
@@ -91,7 +91,6 @@ async function buildInstanceConfigResponse(): Promise<InstanceConfigResponse> {
app_public: appPublic,
policy: {
single_community_enabled: policy.single_community_enabled,
single_community_locked: policy.single_community_locked,
single_community_guild_id: policy.single_community_guild_id,
direct_messages_disabled: policy.direct_messages_disabled,
direct_messages_locked: policy.direct_messages_locked,
@@ -101,6 +100,11 @@ async function buildInstanceConfigResponse(): Promise<InstanceConfigResponse> {
youtube_enabled: policy.youtube_enabled,
bluesky_enabled: policy.bluesky_enabled,
},
deferred_phone_gate: {
enabled: policy.deferred_phone_gate_enabled,
window_hours: policy.deferred_phone_gate_window_hours,
member_threshold: policy.deferred_phone_gate_member_threshold,
},
services_resolved: resolvedServices,
services_available: {
gif: integrations.gif.effective_available,
@@ -551,20 +555,19 @@ async function applyInstancePolicyUpdate(
policy.single_community_enabled !== current.single_community_enabled
) {
if (policy.single_community_enabled) {
if (appPublic.setup.configured || current.single_community_locked) {
if (appPublic.setup.configured && current.single_community_guild_id == null) {
throw new InstancePolicyTransitionNotAllowedError();
}
const adminUser = await ctx.get('userRepository').findUnique(ctx.get('adminUserId'));
if (!adminUser) {
throw new InstancePolicyTransitionNotAllowedError();
}
await ctx.get('singleCommunityService').createStockCommunity({
await ctx.get('singleCommunityService').ensureStockCommunity({
owner: adminUser,
name: policy.single_community_name?.trim() || appPublic.branding.product_name,
});
} else {
patch.single_community_enabled = false;
patch.single_community_locked = true;
}
}
if (
@@ -593,6 +596,17 @@ async function applyInstancePolicyUpdate(
patch.bluesky_enabled = policy.services.bluesky_enabled ?? null;
}
}
if (policy.deferred_phone_gate) {
if (policy.deferred_phone_gate.enabled !== undefined) {
patch.deferred_phone_gate_enabled = policy.deferred_phone_gate.enabled;
}
if (policy.deferred_phone_gate.window_hours !== undefined) {
patch.deferred_phone_gate_window_hours = policy.deferred_phone_gate.window_hours;
}
if (policy.deferred_phone_gate.member_threshold !== undefined) {
patch.deferred_phone_gate_member_threshold = policy.deferred_phone_gate.member_threshold;
}
}
if (Object.keys(patch).length > 0) {
await instanceConfigRepository.setInstancePolicyConfig(patch);
}
@@ -619,6 +633,9 @@ async function updatePendingRegistrationUser(
traits.delete(REGISTRATION_REJECTED_TRAIT);
}
await userRepository.patchUpsert(user.id, {traits: traits.size > 0 ? traits : null}, user.toRow());
if (decision === 'approve') {
await ctx.get('singleCommunityService').joinStockCommunity(user.id, ctx.get('requestCache'));
}
await ctx.get('adminService').auditService.createAuditLog({
adminUserId: ctx.get('adminUserId'),
targetType: 'user',
@@ -2,6 +2,7 @@
import dns from 'node:dns';
import {AdminACLs} from '@fluxer/constants/src/AdminACLs';
import {DEFERRED_PHONE_ON_COMMUNITY_JOIN} from '@fluxer/constants/src/UserConstants';
import type {UserAdminResponse} from '@fluxer/schema/src/domains/admin/AdminUserSchemas';
import type {ICacheService} from '@pkgs/cache/src/ICacheService';
import {formatGeoipLocation} from '@pkgs/geoip/src/GeoipLookup';
@@ -82,6 +83,7 @@ export async function mapUserToAdminResponse(
premium_grace_ends_at: user.premiumGraceEndsAt?.toISOString() ?? null,
premium_lifetime_sequence: user.premiumLifetimeSequence ?? null,
suspicious_activity_flags: user.suspiciousActivityFlags,
phone_verification_deferred: ((user.suspiciousActivityFlags ?? 0) & DEFERRED_PHONE_ON_COMMUNITY_JOIN) !== 0,
temp_banned_until: user.tempBannedUntil?.toISOString() ?? null,
pending_deletion_at: user.pendingDeletionAt?.toISOString() ?? null,
pending_bulk_message_deletion_at: user.pendingBulkMessageDeletionAt?.toISOString() ?? null,
@@ -2,7 +2,15 @@
import {AdminACLs} from '@fluxer/constants/src/AdminACLs';
import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes';
import {SuspiciousActivityFlags, UserFlags} from '@fluxer/constants/src/UserConstants';
import {
ADMIN_PHONE_TOGGLE_CLEARABLE_FLAGS,
ALL_SUSPICIOUS_ACTIVITY_FLAGS,
DEFERRABLE_PHONE_FLAGS,
DEFERRED_PHONE_ON_COMMUNITY_JOIN,
imposePhoneRequirements,
SuspiciousActivityFlags,
UserFlags,
} from '@fluxer/constants/src/UserConstants';
import {ValidationErrorCodes} from '@fluxer/constants/src/ValidationErrorCodes';
import {AccessDeniedError} from '@fluxer/errors/src/domains/core/AccessDeniedError';
import {InputValidationError} from '@fluxer/errors/src/domains/core/InputValidationError';
@@ -31,11 +39,13 @@ import * as AuthMfa from '../../auth/AuthMfa';
import * as AuthSession from '../../auth/AuthSession';
import * as AuthUtility from '../../auth/AuthUtility';
import {createPasswordResetToken, createUserID, type UserID} from '../../BrandedTypes';
import type {UserRow} from '../../database/types/UserTypes';
import {Logger} from '../../Logger';
import {getInstanceConfigRepository} from '../../middleware/ServiceSingletons';
import type {IRiskHistoryRepository} from '../../risk/HistoricalOutcomeRepository';
import type {HistoricalOutcomeCode} from '../../risk/RiskHistoryTypes';
import {getIpAddressReverse, getLocationLabelFromIp} from '../../utils/IpUtils';
import {resolveSessionClientInfo} from '../../utils/UserAgentUtils';
import {resolveSessionClientInfo} from '../../utils/SessionClientIdentity';
import {mapUserToAdminResponse} from '../models/UserTypes';
import type {AdminAuditService} from './AdminAuditService';
import type {AdminUserUpdatePropagator} from './AdminUserUpdatePropagator';
@@ -406,11 +416,14 @@ export class AdminUserSecurityService {
if (!user) {
throw new UnknownUserError();
}
const updatedUser = await userRepository.patchUpsert(
userId,
{has_verified_phone: data.has_verified_phone},
user.toRow(),
);
const phonePatch: Partial<UserRow> = {has_verified_phone: data.has_verified_phone};
if (data.has_verified_phone) {
const clearedFlags = (user.suspiciousActivityFlags ?? 0) & ~ADMIN_PHONE_TOGGLE_CLEARABLE_FLAGS;
if (clearedFlags !== (user.suspiciousActivityFlags ?? 0)) {
phonePatch.suspicious_activity_flags = clearedFlags;
}
}
const updatedUser = await userRepository.patchUpsert(userId, phonePatch, user.toRow());
await updatePropagator.propagateUserUpdate({userId, oldUser: user, updatedUser});
await auditService.createAuditLog({
adminUserId,
@@ -418,7 +431,15 @@ export class AdminUserSecurityService {
targetId: BigInt(userId),
action: 'update_has_verified_phone',
auditLogReason,
metadata: new Map([['has_verified_phone', String(data.has_verified_phone)]]),
metadata: new Map(
phonePatch.suspicious_activity_flags === undefined
? [['has_verified_phone', String(data.has_verified_phone)]]
: [
['has_verified_phone', String(data.has_verified_phone)],
['suspicious_activity_flags_before', String(user.suspiciousActivityFlags ?? 0)],
['suspicious_activity_flags_after', String(phonePatch.suspicious_activity_flags)],
],
),
});
return {
user: await mapUserToAdminResponse(updatedUser, cacheService, acls),
@@ -438,15 +459,24 @@ export class AdminUserSecurityService {
if (!user) {
throw new UnknownUserError();
}
const currentFlags = user.suspiciousActivityFlags ?? 0;
const keepsDeferral =
(currentFlags & DEFERRED_PHONE_ON_COMMUNITY_JOIN) !== 0 &&
(data.flags & DEFERRABLE_PHONE_FLAGS) !== 0 &&
(data.flags & DEFERRABLE_PHONE_FLAGS) === (currentFlags & DEFERRABLE_PHONE_FLAGS);
const newFlags = keepsDeferral ? data.flags | DEFERRED_PHONE_ON_COMMUNITY_JOIN : data.flags;
const updatedUser = await userRepository.patchUpsert(
userId,
{
suspicious_activity_flags: data.flags,
suspicious_activity_flags: newFlags,
},
user.toRow(),
);
await updatePropagator.propagateUserUpdate({userId, oldUser: user, updatedUser: updatedUser});
if ((user.suspiciousActivityFlags ?? 0) !== data.flags && data.flags !== 0) {
if (
(currentFlags & ALL_SUSPICIOUS_ACTIVITY_FLAGS) !== (newFlags & ALL_SUSPICIOUS_ACTIVITY_FLAGS) &&
(newFlags & ALL_SUSPICIOUS_ACTIVITY_FLAGS) !== 0
) {
await this.recordRiskOutcomes(userId, ['challenged'], 'admin_update_suspicious_activity_flags');
}
await auditService.createAuditLog({
@@ -600,7 +630,7 @@ export class AdminUserSecurityService {
throw new UnknownUserError();
}
const currentFlags = user.suspiciousActivityFlags ?? 0;
const newFlags = (currentFlags | addMask) & ~removeMask;
const newFlags = imposePhoneRequirements(currentFlags, addMask) & ~removeMask;
const updatedUser = await userRepository.patchUpsert(
userId,
{suspicious_activity_flags: newFlags},
@@ -720,7 +750,7 @@ export class AdminUserSecurityService {
approximateLastUsedAt: Date;
clientIp: string;
clientUserAgent: string | null;
clientIsDesktop: boolean | null;
clientOs: string | null;
deletedAt: Date | null;
}> = [
...activeSessions.map((s) => ({
@@ -729,7 +759,7 @@ export class AdminUserSecurityService {
approximateLastUsedAt: s.approximateLastUsedAt,
clientIp: s.clientIp,
clientUserAgent: s.clientUserAgent,
clientIsDesktop: s.clientIsDesktop,
clientOs: s.clientOs ?? null,
deletedAt: null as Date | null,
})),
...tombstones.map((t) => ({
@@ -738,7 +768,7 @@ export class AdminUserSecurityService {
approximateLastUsedAt: t.approximateLastUsedAt,
clientIp: t.clientIp,
clientUserAgent: t.clientUserAgent,
clientIsDesktop: t.clientIsDesktop,
clientOs: t.clientOs ?? null,
deletedAt: t.deletedAt,
})),
];
@@ -747,6 +777,8 @@ export class AdminUserSecurityService {
if (a.deletedAt !== null && b.deletedAt === null) return 1;
return b.createdAt.getTime() - a.createdAt.getTime();
});
const {branding} = await getInstanceConfigRepository().getAppPublicConfig();
const productName = branding.product_name;
const canViewIp = acls.has(AdminACLs.USER_VIEW_IP) || acls.has(AdminACLs.WILDCARD);
if (!canViewIp) {
await auditService.createAuditLog({
@@ -759,9 +791,10 @@ export class AdminUserSecurityService {
});
return {
sessions: entries.map((entry) => {
const {clientOs, clientPlatform} = resolveSessionClientInfo({
const clientInfo = resolveSessionClientInfo({
userAgent: entry.clientUserAgent,
isDesktopClient: entry.clientIsDesktop,
reportedOs: entry.clientOs,
productName,
});
return {
session_id_hash: entry.sessionIdHash.toString('base64url'),
@@ -769,8 +802,8 @@ export class AdminUserSecurityService {
approx_last_used_at: entry.approximateLastUsedAt.toISOString(),
client_ip: '[redacted]',
client_ip_reverse: null,
client_os: clientOs,
client_platform: clientPlatform,
client_os: clientInfo.os,
client_platform: clientInfo.platform,
client_location: null,
deleted_at: entry.deletedAt?.toISOString() ?? null,
};
@@ -807,9 +840,10 @@ export class AdminUserSecurityService {
const clientLocation = locationResult.status === 'fulfilled' ? locationResult.value : null;
const reverseDnsResult = reverseDnsResults[index];
const clientIpReverse = reverseDnsResult?.status === 'fulfilled' ? reverseDnsResult.value : null;
const {clientOs, clientPlatform} = resolveSessionClientInfo({
const clientInfo = resolveSessionClientInfo({
userAgent: entry.clientUserAgent,
isDesktopClient: entry.clientIsDesktop,
reportedOs: entry.clientOs,
productName,
});
return {
session_id_hash: entry.sessionIdHash.toString('base64url'),
@@ -817,8 +851,8 @@ export class AdminUserSecurityService {
approx_last_used_at: entry.approximateLastUsedAt.toISOString(),
client_ip: entry.clientIp,
client_ip_reverse: clientIpReverse,
client_os: clientOs,
client_platform: clientPlatform,
client_os: clientInfo.os,
client_platform: clientInfo.platform,
client_location: clientLocation,
deleted_at: entry.deletedAt?.toISOString() ?? null,
};
@@ -43,6 +43,7 @@ export class AdminGuildMembershipService {
throw new UnknownUserError();
}
await guildService.members.addUserToGuild({
skipRiskGate: true,
userId,
guildId,
sendJoinMessage: true,
@@ -83,6 +84,7 @@ export class AdminGuildMembershipService {
try {
const userId = createUserID(userIdBigInt);
await guildService.members.addUserToGuild({
skipRiskGate: true,
userId,
guildId,
sendJoinMessage: false,
@@ -283,7 +283,7 @@ describe('Admin billing overview', () => {
invoices: {
[params.invoiceId]: {
customer: params.stripeCustomerId,
subscription: params.stripeSubscriptionId,
subscriptionId: params.stripeSubscriptionId,
amount_due: params.amountPaidCents,
amount_paid: params.amountPaidCents,
billing_reason: 'subscription_cycle',
@@ -359,7 +359,7 @@ describe('Admin billing overview', () => {
invoices: {
in_local_checkout_1: {
customer: stripeCustomerId,
subscription: 'sub_billing_target',
subscriptionId: 'sub_billing_target',
amount_due: 499,
amount_paid: 499,
billing_reason: 'subscription_create',
@@ -396,7 +396,7 @@ describe('Admin billing overview', () => {
},
in_renewal_1: {
customer: stripeCustomerId,
subscription: 'sub_billing_target',
subscriptionId: 'sub_billing_target',
amount_due: 499,
amount_paid: 499,
billing_reason: 'subscription_cycle',
@@ -545,7 +545,7 @@ describe('Admin billing overview', () => {
invoices: {
[invoiceId]: {
customer: stripeCustomerId,
subscription: stripeSubscriptionId,
subscriptionId: stripeSubscriptionId,
amount_due: 499,
amount_paid: 499,
billing_reason: 'subscription_create',
+1 -13
View File
@@ -551,18 +551,7 @@ export function AuthController(app: HonoApp) {
'Start a handoff session to transfer authentication between devices. Returns a handoff code for device linking.',
}),
async (ctx) => {
const clientIp = requireClientIp(ctx.req.raw, {
trustClientIpHeader: Config.proxy.trust_client_ip_header,
clientIpHeaderName: Config.proxy.client_ip_header,
});
const clientPlatform = ctx.req.header('x-fluxer-platform')?.trim().toLowerCase() ?? undefined;
return ctx.json(
await ctx.get('authRequestService').initiateHandoff({
userAgent: ctx.req.header('User-Agent'),
clientIp,
clientPlatform,
}),
);
return ctx.json(await ctx.get('authRequestService').initiateHandoff({request: ctx.req.raw}));
},
);
app.get(
@@ -611,7 +600,6 @@ export function AuthController(app: HonoApp) {
});
await ctx.get('authRequestService').completeHandoff({
data: ctx.req.valid('json'),
request: ctx.req.raw,
clientIp,
authToken: ctx.get('authToken') ?? undefined,
});
+4 -1
View File
@@ -100,7 +100,10 @@ export async function revertEmailChange(
event: 'USER_UPDATE',
data: mapUserToPrivateResponse(updatedUser),
});
const [authToken] = await AuthSession.createAuthSession(ctx, {user: updatedUser, request});
const [authToken] = await AuthSession.createAuthSession(ctx, {
user: updatedUser,
origin: AuthSession.resolveSessionOrigin(ctx, request),
});
await contactChangeLog.recordDiff({
oldUser: user,
newUser: updatedUser,
+21 -29
View File
@@ -105,9 +105,7 @@ export interface IpAuthorizationTicketCache {
userId: string;
email: string;
username: string;
clientIp: string;
userAgent: string;
platform: string | null;
origin: AuthSession.SessionOrigin;
authToken: string;
clientLocation: string;
inviteCode?: string | null;
@@ -115,8 +113,8 @@ export interface IpAuthorizationTicketCache {
createdAt: number;
}
function getTicketCacheKey(ticket: string): string {
return `ip-auth-ticket:${ticket}`;
export function getTicketCacheKey(ticket: string): string {
return `ip-auth-ticket-v2:${ticket}`;
}
function getTokenCacheKey(token: string): string {
@@ -148,7 +146,7 @@ export async function resendIpAuthorization(
payload.email,
payload.username,
payload.authToken,
payload.clientIp,
payload.origin.ip,
payload.clientLocation,
null,
);
@@ -172,7 +170,7 @@ export async function completeIpAuthorization(
user_id: string;
ticket: string;
}> {
const {users, cache, config} = ctx.services;
const {users, cache} = ctx.services;
const tokenMapping = await cache.get<{
ticket: string;
}>(getTokenCacheKey(token));
@@ -193,19 +191,8 @@ export async function completeIpAuthorization(
throw new UnknownUserError();
}
AuthUtility.assertNonBotUser(ctx, user);
await users.createAuthorizedIp(user.id, payload.clientIp);
const headers: Record<string, string> = {
[config.proxy.client_ip_header]: payload.clientIp,
'user-agent': payload.userAgent,
};
if (payload.platform) {
headers['x-fluxer-platform'] = payload.platform;
}
const syntheticRequest = new Request('https://api.fluxer.app/auth/ip-authorization', {
headers,
method: 'POST',
});
const [sessionToken] = await AuthSession.createAuthSession(ctx, {user, request: syntheticRequest});
await users.createAuthorizedIp(user.id, payload.origin.ip);
const [sessionToken] = await AuthSession.createAuthSession(ctx, {user, origin: payload.origin});
await cache.delete(cacheKey);
await cache.delete(getTokenCacheKey(token));
return {token: sessionToken, user_id: user.id.toString(), ticket: tokenMapping.ticket};
@@ -313,15 +300,11 @@ export async function login(
const authToken = createIpAuthorizationToken(await AuthUtility.generateSecureToken(ctx));
const geoipResult = await lookupGeoip(clientIp);
const clientLocation = formatGeoipLocation(geoipResult) ?? UNKNOWN_LOCATION;
const userAgent = request.headers.get('user-agent') || '';
const platform = request.headers.get('x-fluxer-platform');
const cachePayload: IpAuthorizationTicketCache = {
userId: currentUser.id.toString(),
email: currentUser.email!,
username: currentUser.username,
clientIp,
userAgent,
platform: platform ?? null,
origin: AuthSession.resolveSessionOrigin(ctx, request),
authToken,
clientLocation,
inviteCode: data.invite_code ?? null,
@@ -329,7 +312,7 @@ export async function login(
createdAt: Date.now(),
};
const ttlSeconds = seconds('15 minutes');
await cache.set<IpAuthorizationTicketCache>(`ip-auth-ticket:${ticket}`, cachePayload, ttlSeconds);
await cache.set<IpAuthorizationTicketCache>(getTicketCacheKey(ticket), cachePayload, ttlSeconds);
await cache.set<{
ticket: string;
}>(`ip-auth-token:${authToken}`, {ticket}, ttlSeconds);
@@ -364,7 +347,10 @@ export async function login(
Logger.warn({inviteCode: data.invite_code, error}, 'Failed to auto-join invite on login');
}
}
const [token] = await AuthSession.createAuthSession(ctx, {user: currentUser, request});
const [token] = await AuthSession.createAuthSession(ctx, {
user: currentUser,
origin: AuthSession.resolveSessionOrigin(ctx, request),
});
return {
user_id: currentUser.id.toString(),
token,
@@ -418,7 +404,10 @@ export async function loginMfaTotp(
await cache.delete(`mfa-ticket:${ticket}`);
await cache.delete(attemptsKey);
await cache.delete(userAttemptsKey);
const [token] = await AuthSession.createAuthSession(ctx, {user, request});
const [token] = await AuthSession.createAuthSession(ctx, {
user,
origin: AuthSession.resolveSessionOrigin(ctx, request),
});
return {user_id: user.id.toString(), token};
}
@@ -438,7 +427,10 @@ export async function loginMfaWebAuthn(
AuthUtility.assertNonBotUser(ctx, user);
await AuthMfa.verifyWebAuthnAuthentication(ctx, user.id, response, challenge, 'mfa', ticket);
await cache.delete(`mfa-ticket:${ticket}`);
const [token] = await AuthSession.createAuthSession(ctx, {user, request});
const [token] = await AuthSession.createAuthSession(ctx, {
user,
origin: AuthSession.resolveSessionOrigin(ctx, request),
});
return {user_id: user.id.toString(), token};
}
+12 -17
View File
@@ -5,9 +5,10 @@ import type {AuthSessionResponse} from '@fluxer/schema/src/domains/auth/AuthSche
import {uint8ArrayToBase64} from 'uint8array-extras';
import {Config} from '../Config';
import {Logger} from '../Logger';
import {getInstanceConfigRepository} from '../middleware/ServiceSingletons';
import type {AuthSession} from '../models/AuthSession';
import {getLocationLabelFromIp} from '../utils/IpUtils';
import {resolveSessionClientInfo} from '../utils/UserAgentUtils';
import {resolveSessionClientInfo} from '../utils/SessionClientIdentity';
const DEV_FALLBACK_AUTH_SESSION_LOCATION = 'Stockholm, Stockholm County, Sweden';
@@ -40,30 +41,24 @@ export async function mapAuthSessionsToResponse({
const locationResults = await Promise.allSettled(
sortedSessions.map((session) => resolveAuthSessionLocation(session)),
);
const {branding} = await getInstanceConfigRepository().getAppPublicConfig();
return sortedSessions.map((authSession, index): AuthSessionResponse => {
const locationResult = locationResults[index];
const clientLocation = locationResult?.status === 'fulfilled' ? locationResult.value : null;
let clientOs: string;
let clientPlatform: string;
if (authSession.clientUserAgent) {
const parsed = resolveSessionClientInfo({
userAgent: authSession.clientUserAgent,
isDesktopClient: authSession.clientIsDesktop,
});
clientOs = parsed.clientOs;
clientPlatform = parsed.clientPlatform;
} else {
clientOs = authSession.clientOs || 'Unknown';
clientPlatform = authSession.clientPlatform || 'Unknown';
}
const clientInfo = resolveSessionClientInfo({
userAgent: authSession.clientUserAgent,
reportedOs: authSession.clientOs ?? null,
productName: branding.product_name,
});
const idHash = uint8ArrayToBase64(authSession.sessionIdHash, {urlSafe: true});
const isCurrent = currentSessionId ? Buffer.compare(authSession.sessionIdHash, currentSessionId) === 0 : false;
return {
id_hash: idHash,
client_info: {
platform: clientPlatform,
os: clientOs,
browser: undefined,
platform: clientInfo.platform,
os: clientInfo.os,
browser: clientInfo.browser,
device: clientInfo.device,
location: clientLocation
? {
city: clientLocation.split(',').at(0)?.trim() || null,
+4 -1
View File
@@ -275,7 +275,10 @@ export async function resetPassword(
if (hasMfa) {
return await createMfaTicketResponse(ctx, updatedUser);
}
const [token] = await AuthSession.createAuthSession(ctx, {user: updatedUser, request});
const [token] = await AuthSession.createAuthSession(ctx, {
user: updatedUser,
origin: AuthSession.resolveSessionOrigin(ctx, request),
});
return {user_id: updatedUser.id.toString(), token};
}
+9 -3
View File
@@ -39,6 +39,7 @@ import {
normalizePolicyContactDomain,
} from '../risk/AccountPolicyEvaluator';
import type {IRegistrationEventsRepository} from '../risk/adapters/VelocityAdapter';
import {deferPhoneFlagsUntilCommunityJoin} from '../risk/DeferredPhoneGate';
import type {IRiskHistoryRepository} from '../risk/HistoricalOutcomeRepository';
import type {IRiskAssessmentRepository} from '../risk/RiskAssessmentRepository';
import {deriveLatestRiskContext} from '../risk/RiskHistoryContext';
@@ -291,7 +292,6 @@ export async function register(
last_voice_activity_sharing_change_at: null,
version: 1,
});
await kvActivityTracker.updateActivity(user.id, now);
await users.upsertSettings(
UserSettings.getDefaultUserSettings({
userId,
@@ -300,6 +300,9 @@ export async function register(
theme: data.theme,
}),
);
void kvActivityTracker.updateActivity(user.id, now).catch((error: unknown) => {
Logger.warn({error, userId: user.id}, 'Failed to update real-time user activity');
});
const isUnclaimed = !rawEmail;
const usernameIsUserChosen = data.username != null || data.global_name != null;
const riskResult = await registrationRiskEvaluator.evaluate({
@@ -332,7 +335,7 @@ export async function register(
action: riskResult.recommendedAction,
},
});
const combinedFlags = policyDecision.flagBits;
const combinedFlags = await deferPhoneFlagsUntilCommunityJoin(policyDecision.flagBits);
const createdAt = new Date();
const riskContext = deriveLatestRiskContext({
userId: userId.toString(),
@@ -441,7 +444,10 @@ export async function register(
);
}
await singleCommunityService.joinStockCommunity(userId, requestCache);
const [token] = await AuthSession.createAuthSession(ctx, {user, request});
const [token] = await AuthSession.createAuthSession(ctx, {
user,
origin: AuthSession.resolveSessionOrigin(ctx, request),
});
if (grantBootstrapAdmin) {
await instanceConfigRepository.markAdminBootstrapped();
}
+24 -23
View File
@@ -33,11 +33,12 @@ import type {UserPartialResponse} from '@fluxer/schema/src/domains/user/UserResp
import type {ApiContext} from '../ApiContext';
import {createUserID, type UserID} from '../BrandedTypes';
import type {RequestCache} from '../middleware/RequestCacheMiddleware';
import {getInstanceConfigRepository} from '../middleware/ServiceSingletons';
import type {User} from '../models/User';
import {mapUserToPartialResponse} from '../user/UserMappers';
import {lookupGeoip} from '../utils/IpUtils';
import {parseJsonRecord} from '../utils/JsonBoundaryUtils';
import {resolveSessionClientInfo} from '../utils/UserAgentUtils';
import {resolveSessionClientInfo} from '../utils/SessionClientIdentity';
import {generateUsernameSuggestions} from '../utils/UsernameSuggestionUtils';
import * as AuthEmail from './AuthEmail';
import * as AuthEmailRevert from './AuthEmailRevert';
@@ -89,7 +90,6 @@ interface AuthLogoutRequest {
interface AuthHandoffCompleteRequest {
data: HandoffCompleteRequest;
request: Request;
clientIp: string;
authToken?: string;
}
@@ -122,9 +122,7 @@ interface AuthLogoutAuthSessionsRequest {
}
interface AuthHandoffInitiateRequest {
userAgent?: string;
clientIp: string;
clientPlatform?: string;
request: Request;
}
interface AuthHandoffInfoRequest {
@@ -263,7 +261,7 @@ export class AuthRequestService {
user: await this.getUserPartial(parsed.user_id),
};
}
const ticketPayload = await cache.get(`ip-auth-ticket:${ticket}`);
const ticketPayload = await cache.get(AuthLogin.getTicketCacheKey(ticket));
if (!ticketPayload) {
throw InputValidationError.fromCode('ticket', ValidationErrorCodes.INVALID_OR_EXPIRED_AUTHORIZATION_TICKET);
}
@@ -276,7 +274,10 @@ export class AuthRequestService {
async authenticateWebAuthnDiscoverable({data, request}: AuthWebAuthnAuthenticateRequest) {
const user = await AuthMfa.verifyWebAuthnAuthenticationDiscoverable(this.apiContext, data.response, data.challenge);
const [token] = await AuthSession.createAuthSession(this.apiContext, {user, request});
const [token] = await AuthSession.createAuthSession(this.apiContext, {
user,
origin: AuthSession.resolveSessionOrigin(this.apiContext, request),
});
return {token, user_id: user.id.toString(), user: mapUserToPartialResponse(user)};
}
@@ -298,12 +299,9 @@ export class AuthRequestService {
return {suggestions: generateUsernameSuggestions(globalName)};
}
async initiateHandoff({
userAgent,
clientIp,
clientPlatform,
}: AuthHandoffInitiateRequest): Promise<HandoffInitiateResponse> {
const result = await this.desktopHandoffService.initiateHandoff({userAgent, clientIp, clientPlatform});
async initiateHandoff({request}: AuthHandoffInitiateRequest): Promise<HandoffInitiateResponse> {
const origin = AuthSession.resolveSessionOrigin(this.apiContext, request);
const result = await this.desktopHandoffService.initiateHandoff({origin});
return {
code: result.code,
expires_at: result.expiresAt.toISOString(),
@@ -312,19 +310,22 @@ export class AuthRequestService {
async getHandoffInfo({code, clientIp}: AuthHandoffInfoRequest): Promise<HandoffInfoResponse> {
const info = await this.desktopHandoffService.getHandoffInfo(code, clientIp);
if (info.status === 'expired' || !info.clientIp) {
if (info.status === 'expired' || !info.origin) {
return {status: info.status, client_info: null};
}
const geo = await lookupGeoip(info.clientIp);
const {clientOs, clientPlatform} = resolveSessionClientInfo({
userAgent: info.userAgent ?? null,
isDesktopClient: info.clientPlatform === 'desktop',
const geo = await lookupGeoip(info.origin.ip);
const {branding} = await getInstanceConfigRepository().getAppPublicConfig();
const resolved = resolveSessionClientInfo({
userAgent: info.origin.userAgent,
reportedOs: info.origin.clientOs,
productName: branding.product_name,
});
return {
status: 'pending',
client_info: {
platform: clientPlatform,
os: clientOs,
platform: resolved.platform,
os: resolved.os,
device: resolved.device,
location: {
city: geo.city,
region: geo.region,
@@ -334,18 +335,18 @@ export class AuthRequestService {
};
}
async completeHandoff({data, request, clientIp, authToken}: AuthHandoffCompleteRequest): Promise<void> {
async completeHandoff({data, clientIp, authToken}: AuthHandoffCompleteRequest): Promise<void> {
const sessionToken = data.token ?? authToken;
if (!sessionToken) {
throw new UnauthorizedError();
}
await this.desktopHandoffService.completeHandoff(
data.code,
() =>
(origin) =>
AuthSession.createAdditionalAuthSessionFromToken(this.apiContext, {
token: sessionToken,
expectedUserId: data.user_id,
request,
origin,
}),
clientIp,
);
+31 -20
View File
@@ -15,12 +15,19 @@ import {Logger} from '../Logger';
import type {AuthSession} from '../models/AuthSession';
import type {User} from '../models/User';
import {lookupGeoip} from '../utils/IpUtils';
import {isFluxerNativeUserAgent, parseReportedClientOs} from '../utils/SessionClientIdentity';
import {mapAuthSessionsToResponse} from './AuthModel';
import * as AuthUtility from './AuthUtility';
export interface SessionOrigin {
ip: string;
userAgent: string | null;
clientOs: string | null;
}
interface CreateAuthSessionParams {
user: User;
request: Request;
origin: SessionOrigin;
}
interface LogoutAuthSessionsParams {
@@ -60,29 +67,35 @@ interface ReplaceCurrentAuthSessionResult {
interface CreateAdditionalAuthSessionFromTokenParams {
token: string;
expectedUserId?: string;
request: Request;
origin: SessionOrigin;
}
export function resolveSessionOrigin(ctx: ApiContext, request: Request): SessionOrigin {
const {config} = ctx.services;
const ip = requireClientIp(request, {
trustClientIpHeader: config.proxy.trust_client_ip_header,
clientIpHeaderName: config.proxy.client_ip_header,
});
const userAgent = request.headers.get('user-agent')?.trim() || null;
const clientOs = isFluxerNativeUserAgent(userAgent)
? parseReportedClientOs(request.headers.get('x-fluxer-client-properties'))
: null;
return {ip, userAgent, clientOs};
}
export async function createAuthSession(
ctx: ApiContext,
{user, request}: CreateAuthSessionParams,
{user, origin}: CreateAuthSessionParams,
): Promise<[token: string, AuthSession]> {
const {users, config} = ctx.services;
const {users} = ctx.services;
if (user.isBot) throw new BotUserAuthSessionCreationDeniedError();
if (user.traits.has(REGISTRATION_PENDING_APPROVAL_TRAIT)) throw new RegistrationPendingApprovalError();
if (user.traits.has(REGISTRATION_REJECTED_TRAIT)) throw new RegistrationRejectedError();
const now = new Date();
const token = await AuthUtility.generateAuthToken(ctx);
const ip = requireClientIp(request, {
trustClientIpHeader: config.proxy.trust_client_ip_header,
clientIpHeaderName: config.proxy.client_ip_header,
});
const platformHeader = request.headers.get('x-fluxer-platform')?.trim().toLowerCase() ?? null;
const uaRaw = request.headers.get('user-agent') ?? '';
const isDesktopClient = platformHeader === 'desktop';
let clientCountry: string | null = null;
try {
const geoip = await lookupGeoip(ip);
const geoip = await lookupGeoip(origin.ip);
clientCountry = geoip.countryCode ? geoip.countryCode.toUpperCase() : null;
} catch (error) {
Logger.warn({userId: user.id.toString(), error}, 'GeoIP lookup failed at session creation');
@@ -92,11 +105,9 @@ export async function createAuthSession(
session_id_hash: Buffer.from(AuthUtility.getTokenIdHash(ctx, token)),
created_at: now,
approx_last_used_at: now,
client_ip: ip,
client_user_agent: uaRaw || null,
client_is_desktop: isDesktopClient,
client_os: null,
client_platform: null,
client_ip: origin.ip,
client_user_agent: origin.userAgent,
client_os: origin.clientOs,
client_country: clientCountry,
version: 1,
});
@@ -105,7 +116,7 @@ export async function createAuthSession(
export async function createAdditionalAuthSessionFromToken(
ctx: ApiContext,
{token, expectedUserId, request}: CreateAdditionalAuthSessionFromTokenParams,
{token, expectedUserId, origin}: CreateAdditionalAuthSessionFromTokenParams,
): Promise<{
token: string;
userId: string;
@@ -122,7 +133,7 @@ export async function createAdditionalAuthSessionFromToken(
if (expectedUserId && user.id.toString() !== expectedUserId) {
throw new SessionTokenMismatchError();
}
const [newToken] = await createAuthSession(ctx, {user, request});
const [newToken] = await createAuthSession(ctx, {user, origin});
return {token: newToken, userId: user.id.toString()};
}
@@ -205,7 +216,7 @@ export async function replaceCurrentAuthSession(
(authSession) => !authSession.sessionIdHash.equals(currentAuthSession.sessionIdHash),
);
await deleteAndTerminateAuthSessions(ctx, user.id, otherAuthSessions);
const [newToken, newAuthSession] = await createAuthSession(ctx, {user, request});
const [newToken, newAuthSession] = await createAuthSession(ctx, {user, origin: resolveSessionOrigin(ctx, request)});
const newAuthSessionIdHash = encodeSessionIdHash(newAuthSession.sessionIdHash);
await dispatchAuthSessionChange(ctx, {
userId: user.id,
@@ -5,8 +5,9 @@ import {HandoffCodeExpiredError} from '@fluxer/errors/src/domains/auth/HandoffCo
import {InvalidHandoffCodeError} from '@fluxer/errors/src/domains/auth/InvalidHandoffCodeError';
import {ms, seconds} from 'itty-time';
import type {ApiContext} from '../../ApiContext';
import type {SessionOrigin} from '../AuthSession';
const HANDOFF_CODE_PREFIX = 'desktop-handoff:';
const HANDOFF_CODE_PREFIX = 'desktop-handoff-v2:';
const HANDOFF_TOKEN_PREFIX = 'desktop-handoff-token:';
const CODE_CHARACTERS = 'ABCDEFGHJKMNPQRSTUVWXYZ23456789';
const CODE_LENGTH = 12;
@@ -19,9 +20,7 @@ const MAX_INFO_LOOKUPS = 3;
interface HandoffData {
createdAt: number;
userAgent?: string;
clientIp: string;
clientPlatform?: string;
origin: SessionOrigin;
infoLookupCount: number;
}
@@ -61,7 +60,7 @@ function assertValidHandoffCode(code: string): void {
export class DesktopHandoffService {
constructor(private readonly apiContext: ApiContext) {}
async initiateHandoff(args: {userAgent?: string; clientIp: string; clientPlatform?: string}): Promise<{
async initiateHandoff(args: {origin: SessionOrigin}): Promise<{
code: string;
expiresAt: Date;
}> {
@@ -70,9 +69,7 @@ export class DesktopHandoffService {
const normalizedCode = normalizeHandoffCode(code);
const handoffData: HandoffData = {
createdAt: Date.now(),
userAgent: args.userAgent,
clientIp: args.clientIp,
clientPlatform: args.clientPlatform,
origin: args.origin,
infoLookupCount: 0,
};
const expirySeconds = seconds('5 minutes');
@@ -83,7 +80,7 @@ export class DesktopHandoffService {
async completeHandoff(
code: string,
createTokenData: () => Promise<{token: string; userId: string}>,
createTokenData: (origin: SessionOrigin) => Promise<{token: string; userId: string}>,
approverIp: string,
): Promise<void> {
const {cache} = this.apiContext.services;
@@ -107,7 +104,7 @@ export class DesktopHandoffService {
if (remainingSeconds <= 0) {
throw new HandoffCodeExpiredError();
}
const {token, userId} = await createTokenData();
const {token, userId} = await createTokenData(handoffData.origin);
const tokenData: HandoffTokenData = {
token,
userId,
@@ -122,9 +119,7 @@ export class DesktopHandoffService {
approverIp: string,
): Promise<{
status: 'pending' | 'expired';
userAgent?: string;
clientIp?: string;
clientPlatform?: string;
origin?: SessionOrigin;
}> {
const {cache} = this.apiContext.services;
const normalizedCode = normalizeHandoffCode(code);
@@ -149,12 +144,7 @@ export class DesktopHandoffService {
{approvedAt: Date.now()},
remainingTtl > 0 ? remainingTtl : seconds('5 minutes'),
);
return {
status: 'pending',
userAgent: handoffData.userAgent,
clientIp: handoffData.clientIp,
clientPlatform: handoffData.clientPlatform,
};
return {status: 'pending', origin: handoffData.origin};
}
async getHandoffStatus(
+41 -26
View File
@@ -33,6 +33,7 @@ import {
} from '../../instance/InstanceConfigRepository';
import {
deriveSsoRedirectUri,
getSsoRequestUrlPolicy,
isTestSsoProvider,
validateSsoPublicOutboundUrl,
} from '../../instance/SsoConfigValidation';
@@ -331,7 +332,10 @@ export class SsoService {
});
const claims = await this.resolveClaims(tokenResponse, config, statePayload.nonce);
const user = await this.resolveUserFromClaims(claims, config);
const [token] = await AuthSession.createAuthSession(this.apiContext, {user, request});
const [token] = await AuthSession.createAuthSession(this.apiContext, {
user,
origin: AuthSession.resolveSessionOrigin(this.apiContext, request),
});
return {token, user_id: user.id.toString(), redirect_to: statePayload.redirectTo ?? ''};
}
@@ -529,7 +533,9 @@ export class SsoService {
isAdult: true,
}),
);
await this.kvActivityTracker.updateActivity(user.id, now);
void this.kvActivityTracker.updateActivity(user.id, now).catch((error: unknown) => {
this.logger.warn({error, userId: user.id}, 'Failed to update real-time user activity');
});
return user;
} catch (error) {
if (!userCreated) {
@@ -651,13 +657,16 @@ export class SsoService {
return cached.jwks;
}
const fetchJwks = async (): Promise<JSONWebKeySet> => {
const response = await FetchUtils.sendRequest({
url: jwksUrl,
method: 'GET',
headers: {Accept: 'application/json'},
timeout: ms('5 seconds'),
serviceName: 'sso_jwks',
});
const response = await FetchUtils.sendRequest(
{
url: jwksUrl,
method: 'GET',
headers: {Accept: 'application/json'},
timeout: ms('5 seconds'),
serviceName: 'sso_jwks',
},
{requestUrlPolicy: getSsoRequestUrlPolicy()},
);
if (response.status < 200 || response.status >= 300) {
throw new Error(`Failed to fetch JWKS: HTTP ${response.status}`);
}
@@ -744,16 +753,19 @@ export class SsoService {
}
private async fetchUserInfo(userInfoUrl: string, accessToken: string): Promise<Record<string, unknown>> {
const resp = await FetchUtils.sendRequest({
url: userInfoUrl,
method: 'GET',
headers: {
Authorization: `Bearer ${accessToken}`,
Accept: 'application/json',
const resp = await FetchUtils.sendRequest(
{
url: userInfoUrl,
method: 'GET',
headers: {
Authorization: `Bearer ${accessToken}`,
Accept: 'application/json',
},
timeout: ms('15 seconds'),
serviceName: 'sso_user_info',
},
timeout: ms('15 seconds'),
serviceName: 'sso_user_info',
});
{requestUrlPolicy: getSsoRequestUrlPolicy()},
);
if (resp.status < 200 || resp.status >= 300) {
throw InputValidationError.fromCode('access_token', ValidationErrorCodes.FAILED_TO_FETCH_SSO_USER_INFO);
}
@@ -805,14 +817,17 @@ export class SsoService {
Accept: 'application/json',
'Content-Type': 'application/x-www-form-urlencoded',
};
const resp = await FetchUtils.sendRequest({
url: config.tokenUrl ?? '',
method: 'POST',
headers,
body,
timeout: ms('15 seconds'),
serviceName: 'sso_token_exchange',
});
const resp = await FetchUtils.sendRequest(
{
url: config.tokenUrl ?? '',
method: 'POST',
headers,
body,
timeout: ms('15 seconds'),
serviceName: 'sso_token_exchange',
},
{requestUrlPolicy: getSsoRequestUrlPolicy()},
);
if (resp.status < 200 || resp.status >= 300) {
throw InputValidationError.fromCode('code', ValidationErrorCodes.INVALID_SSO_AUTHORIZATION_CODE);
}
@@ -31,6 +31,16 @@ export function userHasMfa(user: {authenticatorTypes?: Set<number> | null}): boo
);
}
export function hasNoVerifiableCredential(
user: {passwordHash: string | null; isBot: boolean},
hasMfa: boolean,
): boolean {
if (user.isBot || hasMfa) {
return false;
}
return user.passwordHash === null;
}
export function deriveSudoMethods(user: {
totpSecret?: string | null;
authenticatorTypes?: Set<number> | null;
@@ -86,8 +96,7 @@ async function verifySudoMode(
const sudoToken = issueSudoToken ? await sudoModeService.generateSudoToken(user.id) : undefined;
return {verified: true, sudoToken, method: 'mfa'};
}
const isUnclaimedAccount = user.isUnclaimedAccount();
if (isUnclaimedAccount && !hasMfa) {
if (hasNoVerifiableCredential(user, hasMfa)) {
return {verified: true, method: 'password'};
}
if (body.password && !hasMfa) {

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