diff --git a/locales/rn/en.json b/locales/rn/en.json index aeabcaa4..f32f685c 100644 --- a/locales/rn/en.json +++ b/locales/rn/en.json @@ -866,7 +866,16 @@ "plugins": "Plugins" }, "templates": { - "delete_title": "Delete template" + "delete_confirm": "Permanently delete \"{name}\"?", + "delete_title": "Delete template", + "description_mobile": "Reusable snippets for common replies. Tap one to edit; long-press to delete.", + "export_failed": "Export failed", + "import_failed": "Import failed", + "imported": "Imported", + "imported_count": "{count, plural, one {# template} other {# templates}} added.", + "is_html": "Body is HTML", + "placeholders_hint": "Placeholders: {{recipient_name}}, {{company}}, {{date}}, {{day_of_week}}, {{sender_name}}", + "share_unavailable": "Unable to share" }, "themes": { "default_description": "The default light and dark palettes.", diff --git a/scripts/harvest-rn-keys.mjs b/scripts/harvest-rn-keys.mjs index 15831ab8..c7875aaa 100644 --- a/scripts/harvest-rn-keys.mjs +++ b/scripts/harvest-rn-keys.mjs @@ -61,9 +61,10 @@ const overlayFlat = flatten(overlay); // t('key', 'fallback') / t('key', "fallback") / t('key', `fallback`) - the // fallback may span lines; keep it simple: single-quoted or double-quoted, -// non-nested strings. -const CALL_RE = /\bt\(\s*'([^']+)'\s*,\s*(?:'((?:[^'\\]|\\.)*)'|"((?:[^"\\]|\\.)*)")/g; -const KEY_ONLY_RE = /\bt\(\s*'([^']+)'/g; +// non-nested strings. `tr` is the same function where `t` is taken (a +// template or timer variable). +const CALL_RE = /\btr?\(\s*'([^']+)'\s*,\s*(?:'((?:[^'\\]|\\.)*)'|"((?:[^"\\]|\\.)*)")/g; +const KEY_ONLY_RE = /\btr?\(\s*'([^']+)'/g; const added = []; const missingNoFallback = []; diff --git a/src/i18n/__tests__/keys.test.ts b/src/i18n/__tests__/keys.test.ts index d73c8992..08b515db 100644 --- a/src/i18n/__tests__/keys.test.ts +++ b/src/i18n/__tests__/keys.test.ts @@ -34,10 +34,10 @@ function walk(dir: string, out: string[] = []): string[] { return out; } -// Literal keys: t('a.b.c', …). Template-literal keys (`settings.tabs.${id}`) -// are checked by prefix below. -const LITERAL_KEY_RE = /\bt\(\s*'([^']+)'/g; -const TEMPLATE_KEY_RE = /\bt\(\s*`([^`$]+)\$\{/g; +// Literal keys: t('a.b.c', …), or tr(…) where `t` is taken. Template-literal +// keys (`settings.tabs.${id}`) are checked by prefix below. +const LITERAL_KEY_RE = /\btr?\(\s*'([^']+)'/g; +const TEMPLATE_KEY_RE = /\btr?\(\s*`([^`$]+)\$\{/g; // Walking and reading all of src/ synchronously takes under a second on its // own, but went past the 5 s default (16.8 s) while gradle was building.