Translate archiving and date filters into Turkmen, Tatar and Somali

Fill 69 English placeholders covering automatic archiving, recency, inclusive date ranges, due dates and time in a list. Preserve existing translations and exact query examples. Add regression checks for placeholders, source order, numeric limits, query syntax and negative behavioral guidance.

Eight applicable suites, 21 human-preference checks and per-locale preservation audits pass. The affected regression was rerun after refining Somali template terminology. Turkmen, Tatar and Somali wording is provisional and would benefit from speaker review.

Thanks to xet7 !
This commit is contained in:
Lauri Ojansivu committed 2026-10-03 14:54:15 +03:00
1 parent fe6854e86d
commit b76be84186
4 files changed
+124 -69

No files matched your search

+23 -23
View File
@@ -500,9 +500,9 @@
"card-aging-tier1": "Heerka 1 (libdhin khafiif ah) maalmahan badan ee aan shaqayn ka dib",
"card-aging-tier2": "Heerka 2 (libdhin dhexdhexaad ah) maalmahan badan ee aan shaqayn ka dib",
"card-aging-tier3": "Heerka 3 (libdhin culus) maalmahan badan ee aan shaqayn ka dib",
"auto-archive-days": "Archive cards after this many days without activity",
"auto-archive-off": "Off",
"auto-archive-hint": "Checked every hour. A card counts as active whenever it is changed; templates are never archived. Leave empty to turn it off.",
"auto-archive-days": "Kaararka kaydi marka maalmahan oo dhan aan wax laga beddelin",
"auto-archive-off": "Dansan",
"auto-archive-hint": "Saacad kasta ayaa la hubiyaa. Kaarka waxaa loo tixgeliyaa mid firfircoon mar kasta oo wax laga beddelo; qaababka diyaarka ah waligood lama kaydiyo. Meesha bannaan ka dhig si aad u damiso.",
"move-card-up": "Kaarka kor u rar",
"move-card-down": "Kaarka hoos u rar",
"move-list-left": "Liiska bidix u rar",
@@ -710,25 +710,25 @@
"list-label-short-sort": "(M)",
"filter": "Shaandhee",
"filter-cards": "Shaandhee Kaararka ama Liisaska",
"filter-recency-any": "Any time",
"filter-recency-day": "Within the last 24 hours",
"filter-recency-week": "Within the last 7 days",
"filter-recency-month": "Within the last 30 days",
"filter-recency-older": "More than 30 days ago",
"filter-movement-range": "Moved during (recorded history)",
"filter-date-range-field": "Date field",
"filter-date-range-from": "From (inclusive)",
"filter-date-range-to": "Through (inclusive)",
"filter-date-range-missing": "Include cards without this date",
"filter-date-range-list-entry": "Entered current list",
"filter-date-range-invalid": "Choose valid dates, with the end on or after the start.",
"filter-recency-any": "Waqti kasta",
"filter-recency-day": "24-kii saacadood ee u dambeeyay",
"filter-recency-week": "7-dii maalmood ee u dambeeyay",
"filter-recency-month": "30-kii maalmood ee u dambeeyay",
"filter-recency-older": "In ka badan 30 maalmood ka hor",
"filter-movement-range": "La raray muddadan (taariikhda la diiwaangeliyay)",
"filter-date-range-field": "Goobta taariikhda",
"filter-date-range-from": "Laga bilaabo (maalintaasna ku jirto)",
"filter-date-range-to": "Ilaa (maalintaasna ku jirto)",
"filter-date-range-missing": "Ku dar kaararka aan lahayn taariikhdan",
"filter-date-range-list-entry": "Waqtiga uu galay liiska hadda",
"filter-date-range-invalid": "Dooro taariikho sax ah; taariikhda dhammaadku ha la mid noqoto taariikhda bilowga ama ha ka dambayso.",
"filter-dates-label": "Ku shaandhee taariikhda",
"filter-no-due-date": "Taariikh kama dambays ah ma jiro",
"filter-overdue": "Waqtigu dhaafay",
"filter-due-any": "Any due date (including none)",
"filter-due-any": "Taariikh kasta oo kama dambays ah (xitaa kuwa aan lahayn)",
"filter-due-today": "Maanta kama dambays ah",
"filter-due-previous-week": "Due in the previous week",
"filter-due-next-month": "Due next month",
"filter-due-previous-week": "Wakhtigooda kama dambaysta ahi ahaa toddobaadkii hore",
"filter-due-next-month": "Wakhtigooda kama dambaysta ahi yahay bisha soo socota",
"filter-due-this-week": "Toddobaadkan kama dambays ah",
"filter-due-next-week": "Toddobaadka dambe kama dambays ah",
"filter-due-tomorrow": "Berri kama dambays ah",
@@ -742,10 +742,10 @@
"filter-assignee-label": "Ku shaandhee qofka loo xilsaaray",
"filter-creator-label": "Ku shaandhee qofka loo Abuure",
"filter-no-assignee": "Qof loo xilsaaray ma jiro",
"filter-column-age": "Hide old cards in a list",
"filter-column-age-disabled": "Do not hide by list age",
"filter-column-age-days": "Days in this list",
"filter-column-age-hint": "Hide cards that entered this list more than this many days ago. Other lists and cards with unknown entry dates remain visible. Editing a card does not reset its list age.",
"filter-column-age": "Qari kaararka duugoobay ee liiska",
"filter-column-age-disabled": "Ha qarin iyadoo lagu salaynayo muddada liiska",
"filter-column-age-days": "Maalmaha uu ku jiray liiskan",
"filter-column-age-hint": "Qari kaararka galay liiskan in ka badan tiradan maalmood ka hor. Liisaska kale iyo kaararka aan la garanayn taariikhda ay galeen way muuqanayaan. Wax ka beddelidda kaarka dib uma bilowdo muddada uu ku jiray liiska.",
"filter-custom-fields-label": "Ku shaandhee Goobaha Gaarka ah",
"filter-no-custom-fields": "Goobo Gaar ah ma jiraan",
"filter-show-archive": "Muuji liisaska la kaydiyay",
@@ -754,7 +754,7 @@
"filter-on-desc": "Waxaad shaandhaynaysaa kaararka sabuuraddan. Halkan guji si aad wax uga beddesho shaandhaynta.",
"filter-to-selection": "Ku shaandhee doorashada",
"other-filters-label": "Shaandheeyayaal Kale",
"advanced-filter-card-dates-hint": "Filter card dates with @createdAt, @receivedAt, @startAt, @dueAt, @endAt or @listEnteredAt. Example: @endAt >= '2026-01-01' or @endAt = none. Quote a custom field name that starts with @.",
"advanced-filter-card-dates-hint": "Taariikhaha kaararka ku shaandhee @createdAt, @receivedAt, @startAt, @dueAt, @endAt ama @listEnteredAt. Tusaale: @endAt >= '2026-01-01' ama @endAt = none. Magaca goob gaar ah oo ku bilaabma @ ku dhex qor calaamadaha xigashada.",
"advanced-filter-label": "Shaandhayn Horumarsan",
"advanced-filter-description": "Shaandhaynta Horumarsan waxay kuu oggolaanaysaa inaad qorto xarig ka kooban hawlwadeennadan: == != <= >= && || ( ) Boos ayaa kala saara Hawlwadeennada. Waxaad dhammaan Goobaha Gaarka ah ku shaandhayn kartaa adigoo qoraya magacyadooda iyo qiimayaashooda. Tusaale: Field1 == Value1. Ogow: Haddii goobaha ama qiimayaashu ay leeyihiin boosas, waa inaad ku wareejisaa hal calaamadood oo xigasho. Tusaale: 'Field 1' == 'Value 1'. Si looga boodo hal calaamadood oo xakameyn ah (' \\/), waxaad adeegsan kartaa \\. Tusaale: Field1 == I\\'m. Waxaad sidoo kale isku dari kartaa shuruudo badan. Tusaale: F1 == V1 || F1 == V2. Caadi ahaan dhammaan hawlwadeennada waxaa loo fasiraa bidix ilaa midig. Waxaad kala hormarinta ku beddeli kartaa adigoo dhigaya qawsas. Tusaale: F1 == V1 && ( F2 == V2 || F2 == V3 ). Waxaad sidoo kale goobaha qoraalka ku raadin kartaa regex: F1 == /Tes.*/i",
"text-contains-trigger-label": "Qoraal la raadinayo",
+23 -23
View File
@@ -500,9 +500,9 @@
"card-aging-tier1": "1-nji dereje (ýeňil solmak) şunça boş günden soň",
"card-aging-tier2": "2-nji dereje (orta solmak) şunça boş günden soň",
"card-aging-tier3": "3-nji dereje (güýçli solmak) şunça boş günden soň",
"auto-archive-days": "Archive cards after this many days without activity",
"auto-archive-off": "Off",
"auto-archive-hint": "Checked every hour. A card counts as active whenever it is changed; templates are never archived. Leave empty to turn it off.",
"auto-archive-days": "Işjeňliksiz şu kadar gün geçenden soň kartlary arhiwläň",
"auto-archive-off": "Öçürilen",
"auto-archive-hint": "Her sagatda barlanýar. Kart her gezek üýtgedilende işjeň hasaplanýar; şablonlar hiç wagt arhiwlenmeýär. Öçürmek üçin boş goýuň.",
"move-card-up": "Kartoçkany ýokary göçüriň",
"move-card-down": "Kartoçkany aşak göçüriň",
"move-list-left": "Sanawy çepe göçüriň",
@@ -710,25 +710,25 @@
"list-label-short-sort": "(M)",
"filter": "Süzgüç",
"filter-cards": "Süzgüç kartlary ýa-da sanawlary",
"filter-recency-any": "Any time",
"filter-recency-day": "Within the last 24 hours",
"filter-recency-week": "Within the last 7 days",
"filter-recency-month": "Within the last 30 days",
"filter-recency-older": "More than 30 days ago",
"filter-movement-range": "Moved during (recorded history)",
"filter-date-range-field": "Date field",
"filter-date-range-from": "From (inclusive)",
"filter-date-range-to": "Through (inclusive)",
"filter-date-range-missing": "Include cards without this date",
"filter-date-range-list-entry": "Entered current list",
"filter-date-range-invalid": "Choose valid dates, with the end on or after the start.",
"filter-recency-any": "Islendik wagt",
"filter-recency-day": "Soňky 24 sagadyň dowamynda",
"filter-recency-week": "Soňky 7 günüň dowamynda",
"filter-recency-month": "Soňky 30 günüň dowamynda",
"filter-recency-older": "30 günden köp wagt öň",
"filter-movement-range": "Şu döwürde göçürilen (ýazga alnan taryh)",
"filter-date-range-field": "Sene meýdany",
"filter-date-range-from": "Başlangyç (şol gün hem girýär)",
"filter-date-range-to": "Ahyrky sene (şol gün hem girýär)",
"filter-date-range-missing": "Bu senesi bolmadyk kartlary hem goşuň",
"filter-date-range-list-entry": "Häzirki sanawa giren wagty",
"filter-date-range-invalid": "Dogry seneleri saýlaň: ahyrky sene başlangyç senä deň ýa-da ondan soň bolmaly.",
"filter-dates-label": "Sene boýunça süzüň",
"filter-no-due-date": "Bellenen senesi ýok",
"filter-overdue": "Wagtyň geçmegi",
"filter-due-any": "Any due date (including none)",
"filter-due-any": "Islendik möhlet (möhleti ýoklar hem girýär)",
"filter-due-today": "Şu gün",
"filter-due-previous-week": "Due in the previous week",
"filter-due-next-month": "Due next month",
"filter-due-previous-week": "Möhleti geçen hepde dolan",
"filter-due-next-month": "Möhleti indiki aý dolýan",
"filter-due-this-week": "Şu hepde",
"filter-due-next-week": "Geljek hepde",
"filter-due-tomorrow": "Ertir",
@@ -742,10 +742,10 @@
"filter-assignee-label": "Bellenen tarapyndan süzgüç",
"filter-creator-label": "Bellenen tarapyndan Creatoraradyjy",
"filter-no-assignee": "Bellenen ýok",
"filter-column-age": "Hide old cards in a list",
"filter-column-age-disabled": "Do not hide by list age",
"filter-column-age-days": "Days in this list",
"filter-column-age-hint": "Hide cards that entered this list more than this many days ago. Other lists and cards with unknown entry dates remain visible. Editing a card does not reset its list age.",
"filter-column-age": "Sanawdaky köne kartlary gizläň",
"filter-column-age-disabled": "Sanawda geçen wagta görä gizlemäň",
"filter-column-age-days": "Bu sanawda geçen günler",
"filter-column-age-hint": "Bu sanawa şu kadar günden öň giren kartlary gizläň. Beýleki sanawlar we giriş senesi näbelli kartlar görünmegini dowam etdirýär. Karty üýtgetmek onuň sanawda geçen wagtyny täzeden başlatmaýar.",
"filter-custom-fields-label": "Omörite meýdanlar boýunça süzgüç",
"filter-no-custom-fields": "Omörite meýdanlar ýok",
"filter-show-archive": "Arhiwlenen sanawlary görkez",
@@ -754,7 +754,7 @@
"filter-on-desc": "Bu tagtada kartoçkalary süzýärsiňiz. Süzgüçi redaktirlemek üçin şu ýere basyň.",
"filter-to-selection": "Saýlamak üçin süzgüç",
"other-filters-label": "Beýleki süzgüçler",
"advanced-filter-card-dates-hint": "Filter card dates with @createdAt, @receivedAt, @startAt, @dueAt, @endAt or @listEnteredAt. Example: @endAt >= '2026-01-01' or @endAt = none. Quote a custom field name that starts with @.",
"advanced-filter-card-dates-hint": "Kart senelerini @createdAt, @receivedAt, @startAt, @dueAt, @endAt ýa-da @listEnteredAt bilen süzüň. Mysal: @endAt >= '2026-01-01' ýa-da @endAt = none. @ bilen başlanýan ýörite meýdanyň adyny dyrnak içine alyň.",
"advanced-filter-label": "Giňeldilen süzgüç",
"advanced-filter-description": "Öňdebaryjy süzgüç, aşakdaky operatorlary öz içine alýan setir ýazmaga mümkinçilik berýär: ==! = <= > = && || () Operatorlaryň arasynda bölüji hökmünde boşluk ulanylýar. Customhli adaty meýdanlar üçin atlaryny we bahalaryny ýazyp süzüp bilersiňiz. Mysal üçin: Field1 == Value1. Bellik: Meýdanlar ýa-da bahalar boşluklary öz içine alýan bolsa, olary ýekeje sitata jemlemeli. Mysal üçin: '1-nji meýdan' == '1-nji baha'. Dolandyryş nyşanlarynyň ('\\ /) geçmegi üçin \\ ulanyp bilersiňiz. Mysal üçin: Field1 == I \\ m. Şeýle hem birnäçe şerti birleşdirip bilersiňiz. Mysal üçin: F1 == V1 || F1 == V2. Adatça ähli operatorlar çepden saga düşündirilýär. Möjekleri ýerleşdirip tertibi üýtgedip bilersiňiz. Mysal üçin: F1 == V1 && (F2 == V2 || F2 == V3). Şeýle hem, regex ulanyp, tekst meýdanlaryny gözläp bilersiňiz: F1 == /Tes.*/i",
"text-contains-trigger-label": "Aranacak metin",
+23 -23
View File
@@ -500,9 +500,9 @@
"card-aging-tier1": "1. Кадеме (һафиф солдурма) бу кадар һарекетсиз гүнден сонра",
"card-aging-tier2": "2. Кадеме (орта солдурма) бу кадар һарекетсиз гүнден сонра",
"card-aging-tier3": "3. Кадеме (йогун солдурма) бу кадар һарекетсиз гүнден сонра",
"auto-archive-days": "Archive cards after this many days without activity",
"auto-archive-off": "Off",
"auto-archive-hint": "Checked every hour. A card counts as active whenever it is changed; templates are never archived. Leave empty to turn it off.",
"auto-archive-days": "Шушы кадәр көн активлык булмаганнан соң карточкаларны архивка күчерү",
"auto-archive-off": "Сүндерелгән",
"auto-archive-hint": "Һәр сәгать тикшерелә. Карточка үзгәртелгән саен актив дип санала; шаблоннар беркайчан да архивка күчерелми. Сүндерү өчен буш калдырыгыз.",
"move-card-up": "карточкаы йукары ташы",
"move-card-down": "карточкаы ашагы ташы",
"move-list-left": "исемлекйи сола ташы",
@@ -710,25 +710,25 @@
"list-label-short-sort": "(С)",
"filter": "Фильтр",
"filter-cards": "карточкалары вейа исемлеклери сөзгечле",
"filter-recency-any": "Any time",
"filter-recency-day": "Within the last 24 hours",
"filter-recency-week": "Within the last 7 days",
"filter-recency-month": "Within the last 30 days",
"filter-recency-older": "More than 30 days ago",
"filter-movement-range": "Moved during (recorded history)",
"filter-date-range-field": "Date field",
"filter-date-range-from": "From (inclusive)",
"filter-date-range-to": "Through (inclusive)",
"filter-date-range-missing": "Include cards without this date",
"filter-date-range-list-entry": "Entered current list",
"filter-date-range-invalid": "Choose valid dates, with the end on or after the start.",
"filter-recency-any": "Теләсә кайсы вакытта",
"filter-recency-day": "Соңгы 24 сәгать эчендә",
"filter-recency-week": "Соңгы 7 көн эчендә",
"filter-recency-month": "Соңгы 30 көн эчендә",
"filter-recency-older": "30 көннән артык элек",
"filter-movement-range": "Шушы вакытта күчерелгән (теркәлгән тарих)",
"filter-date-range-field": "Дата кыры",
"filter-date-range-from": "Башлангыч (бу көнне дә кертеп)",
"filter-date-range-to": "Ахыргы көнгә кадәр (бу көнне дә кертеп)",
"filter-date-range-missing": "Бу датасы булмаган карточкаларны да кертү",
"filter-date-range-list-entry": "Хәзерге исемлеккә кергән вакыт",
"filter-date-range-invalid": "Дөрес даталарны сайлагыз: ахыргы дата башлангыч дата белән бер үк көндә яки аннан соң булырга тиеш.",
"filter-dates-label": "датае гөре сөзгечле",
"filter-no-due-date": "Сон дата йок",
"filter-overdue": "Сон датаи гечмиш",
"filter-due-any": "Any due date (including none)",
"filter-due-any": "Теләсә кайсы соңгы вакыт (билгеләнмәгәннәре дә)",
"filter-due-today": "Сон датаи бүгүн",
"filter-due-previous-week": "Due in the previous week",
"filter-due-next-month": "Due next month",
"filter-due-previous-week": "Соңгы вакыты узган атнада",
"filter-due-next-month": "Соңгы вакыты киләсе айда",
"filter-due-this-week": "Сон датаи бу һафта",
"filter-due-next-week": "Гелеҗек һафта битен",
"filter-due-tomorrow": "Сон датаи иртәгә",
@@ -742,10 +742,10 @@
"filter-assignee-label": "Атанана гөре сөзгечле",
"filter-creator-label": "Атанана гөре төзүан",
"filter-no-assignee": "Атанмайан",
"filter-column-age": "Hide old cards in a list",
"filter-column-age-disabled": "Do not hide by list age",
"filter-column-age-days": "Days in this list",
"filter-column-age-hint": "Hide cards that entered this list more than this many days ago. Other lists and cards with unknown entry dates remain visible. Editing a card does not reset its list age.",
"filter-column-age": "Исемлектәге иске карточкаларны яшерү",
"filter-column-age-disabled": "Исемлектә тору вакыты буенча яшермәү",
"filter-column-age-days": "Бу исемлектә торган көннәр",
"filter-column-age-hint": "Бу исемлеккә шушы кадәр көннән артык элек кергән карточкаларны яшерү. Башка исемлекләр һәм керү датасы билгесез карточкалар күренеп кала. Карточканы үзгәртү аның исемлектә тору вакытын яңадан башламый.",
"filter-custom-fields-label": "Өзел аланлэзлә гөре сөзгечле",
"filter-no-custom-fields": "Һич өзел алан йок",
"filter-show-archive": "Аршивленмиш исемлеклери гөстер",
@@ -754,7 +754,7 @@
"filter-on-desc": "Бу тактадаки карточкалары сөзгечлийорсунуз. Фитрейи үзгәртмек ичин тыклайын.",
"filter-to-selection": "Сечиме гөре сөзгечлеме йап",
"other-filters-label": "Дигер сөзгечлер",
"advanced-filter-card-dates-hint": "Filter card dates with @createdAt, @receivedAt, @startAt, @dueAt, @endAt or @listEnteredAt. Example: @endAt >= '2026-01-01' or @endAt = none. Quote a custom field name that starts with @.",
"advanced-filter-card-dates-hint": "Карточка даталарын @createdAt, @receivedAt, @startAt, @dueAt, @endAt яки @listEnteredAt ярдәмендә сөзегез. Мисал: @endAt >= '2026-01-01' яки @endAt = none. @ белән башланган махсус кыр исемен куштырнакларга алыгыз.",
"advanced-filter-label": "Гелишмиш сөзгечлеме",
"advanced-filter-description": "Гелишмиш сөзгеч, ашагыдаки оператөрлери ичерен бир дизе йазмайа рөхсәт верир: == != <= >= && || ( ) Оператөрлер эзләсында айырыҗы олэзләк бошлук кулланылыр. Адларыны ве дегерлерини йазэзләк түм Өзел Аланлар ичин сөзгеч уйгулайабилирсиниз. Өрнегин: Алан1 == Дегер1. Нот: Аланлар вейа дегерлер бошлук ичерийорса, бунлары тек тырнак ичине алманыз герекир. Өрнегин: 'Алан 1' == 'Дегер 1'. Тек контрол кэзләктерлеринин (' \\\\/) атланмасы ичин \\\\ кулланабилирсиниз. Өрнегин: Алан1 == Бен. Айрыҗа бирден фазла кошулу бирлештиребилирсиниз. Өрнегин: Ф1 == В1 || Ф1 == В2. Нормалде түм оператөрлер солдан сага догру аңлатмаланыр. Пэзләнтез койэзләк сырайы дегиштиребилирсиниз. Өрнегин: Ф1 == В1 && ( Ф2 == В2 || Ф2 == В3 ). Айрыҗа нормал ифадейи кулланэзләк метин аланларында эзләү йапабилирсиниз: Ф1 == /Тес.*/и",
"text-contains-trigger-label": "Эзләнәчәк текст",
@@ -0,0 +1,55 @@
'use strict';
const assert = require('node:assert/strict');
const fs = require('node:fs');
const path = require('node:path');
const { translationTokens } = require('../releases/translations/placeholder-tokens.mjs');
const read = code => JSON.parse(fs.readFileSync(path.join(__dirname, '../imports/i18n/data', `${code}.i18n.json`), 'utf8'));
const en = read('en');
const keys = [
"auto-archive-days",
"auto-archive-off",
"auto-archive-hint",
"filter-recency-any",
"filter-recency-day",
"filter-recency-week",
"filter-recency-month",
"filter-recency-older",
"filter-movement-range",
"filter-date-range-field",
"filter-date-range-from",
"filter-date-range-to",
"filter-date-range-missing",
"filter-date-range-list-entry",
"filter-date-range-invalid",
"filter-due-any",
"filter-due-previous-week",
"filter-due-next-month",
"filter-column-age",
"filter-column-age-disabled",
"filter-column-age-days",
"filter-column-age-hint",
"advanced-filter-card-dates-hint"
];
for (const code of ['tk_TM', 'tt', 'so']) {
const locale = read(code);
assert.deepEqual(Object.keys(locale), Object.keys(en), `${code}: source key order`);
for (const key of keys) {
assert.ok(locale[key]?.trim(), `${code}:${key}: nonempty`);
assert.notEqual(locale[key], en[key], `${code}:${key}: translated`);
assert.deepEqual(translationTokens(locale[key]), translationTokens(en[key]), `${code}:${key}: exact placeholders`);
assert.deepEqual(locale[key].match(/\d+/g), en[key].match(/\d+/g), `${code}:${key}: numeric bounds`);
}
for (const token of ['@createdAt', '@receivedAt', '@startAt', '@dueAt', '@endAt', '@listEnteredAt', "@endAt >= '2026-01-01'", '@endAt = none']) {
assert.ok(locale['advanced-filter-card-dates-hint'].includes(token), `${code}: literal query syntax ${token}`);
}
assert.notEqual(locale['filter-date-range-from'], locale['filter-date-range-to'], `${code}: distinct range endpoints`);
assert.notEqual(locale['filter-recency-month'], locale['filter-recency-older'], `${code}: within versus older than 30 days`);
assert.notEqual(locale['filter-due-previous-week'], locale['filter-due-next-month'], `${code}: distinct due periods`);
}
assert.match(read('tk_TM')['auto-archive-hint'], /hiç wagt arhiwlenmeýär/);
assert.match(read('tt')['auto-archive-hint'], /беркайчан да архивка күчерелми/);
assert.match(read('so')['auto-archive-hint'], /waligood lama kaydiyo/);
assert.match(read('tk_TM')['filter-column-age-hint'], /täzeden başlatmaýar/);
assert.match(read('tt')['filter-column-age-hint'], /яңадан башламый/);
assert.match(read('so')['filter-column-age-hint'], /dib uma bilowdo/);
console.log('Archiving and date filters: 23 messages in Turkmen, Tatar and Somali passed');