Skip to content

Commit 9cd0f85

Browse files
authored
Merge pull request #3349 from obsidian-tasks-group/i18n-uk-be-ru
I18n uk be ru
2 parents 68ed913 + a4a9f10 commit 9cd0f85

File tree

5 files changed

+731
-3
lines changed

5 files changed

+731
-3
lines changed

i18next-parser.config.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
11
module.exports = {
22
input: ['src/**/*.{ts,svelte}'], // Scan relevant files
33
output: 'src/i18n/locales/$LOCALE.json', // Output files
4-
locales: ['en', 'zh_cn'], // Supported locales
4+
locales: [
5+
// Supported locales, in alphabetical order
6+
'be',
7+
'en',
8+
'ru',
9+
'uk',
10+
'zh_cn',
11+
],
512
defaultNamespace: 'translation',
613
keySeparator: '.', // Use dots to represent nested keys
714
namespaceSeparator: false, // Disable namespace separation

src/i18n/i18n.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
import i18next from 'i18next';
2+
import be from './locales/be.json';
23
import en from './locales/en.json';
4+
import ru from './locales/ru.json';
5+
import uk from './locales/uk.json';
36
import zh_cn from './locales/zh_cn.json';
47

58
let isInitialized = false;
@@ -21,8 +24,12 @@ export const initializeI18n = async () => {
2124
fallbackLng: 'en', // Fallback language if detection fails or translation is missing
2225
returnEmptyString: false, // Use fallback language if i18next-parser put in empty value for untranslated text
2326
resources: {
24-
en: { translation: en },
25-
zh: { translation: zh_cn },
27+
// alphabetical order:
28+
be: { translation: be }, // Belarusian
29+
en: { translation: en }, // English
30+
ru: { translation: ru }, // Russian
31+
uk: { translation: uk }, // Ukrainian
32+
zh: { translation: zh_cn }, // Chinese (Simplified)
2633
},
2734
interpolation: {
2835
escapeValue: false, // Disable escaping of strings, like '&' -> '&'

src/i18n/locales/be.json

Lines changed: 238 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,238 @@
1+
{
2+
"main": {
3+
"loadingPlugin": "Загрузка плагіна: {{name}} v{{version}}",
4+
"unloadingPlugin": "Выгрузка плагіна: {{name}} v{{version}}"
5+
},
6+
"modals": {
7+
"customStatusModal": {
8+
"editAvailableAsCommand": {
9+
"description": "Калі ўключана, гэты статус будзе даступны ў якасці каманды, так што вы зможаце прызначыць гарачую клавішу і пераключаць статус з яе дапамогай.",
10+
"name": "Даступны ў якасці каманды"
11+
},
12+
"editNextStatusSymbol": {
13+
"description": "Пры націску гэта сімвал, які павінен быць выкарыстаны далей.",
14+
"name": "Сімвал наступнага статусу задачы"
15+
},
16+
"editStatusName": {
17+
"description": "Гэта зразумелае імя статусу задачы.",
18+
"name": "Імя статусу задачы"
19+
},
20+
"editStatusSymbol": {
21+
"description": "Гэта сімвал паміж квадратнымі дужкамі. (Яго можна рэдагаваць толькі для карыстальніцкіх статусаў, а не для асноўных статусаў.)",
22+
"name": "Сімвал статусу задачы"
23+
},
24+
"editStatusType": {
25+
"description": "Кіруйце тым, як статус паводзіць сябе пры пошуку і пераключэнні.",
26+
"name": "Тып статусу задачы"
27+
},
28+
"fixErrorsBeforeSaving": "Выпраўце памылкі перад захаваннем."
29+
}
30+
},
31+
"reports": {
32+
"statusRegistry": {
33+
"about": {
34+
"createdBy": "Гэты файл быў створаны плагінам Obsidian Tasks (версія {{version}}) для візуалізацыі статусаў задач у гэтым сховішчы.",
35+
"deleteFileAnyTime": "Вы можаце выдаліць гэты файл у любы момант.",
36+
"title": "Пра гэты файл",
37+
"updateReport": {
38+
"line1": "Калі вы змяняеце налады статусу Tasks, вы можаце атрымаць абноўлены справаздачу:",
39+
"line2": "Перайшоўшы ў `Налады` -> `Tasks`.",
40+
"line3": "Націснуўшы на `Праглядзець і праверыць вашы статусы`."
41+
}
42+
},
43+
"columnHeadings": {
44+
"nextStatusSymbol": "Сімвал наступнага статусу",
45+
"problems": "Праблемы (калі ёсць)",
46+
"statusName": "Імя статусу",
47+
"statusSymbol": "Сімвал статусу",
48+
"statusType": "Тып статусу"
49+
},
50+
"loadedSettings": {
51+
"settingsActuallyUsed": "Гэта налады, якія сапраўды выкарыстоўваюцца Tasks.",
52+
"switchToLivePreview": "Пераключыцеся ў рэжым папярэдняга прагляду ў рэальным часе або рэжым чытання, каб убачыць дыяграму.",
53+
"title": "Загружаныя налады"
54+
},
55+
"messages": {
56+
"cannotFindNextStatus": "Нечаканая памылка пры пошуку наступнага статусу.",
57+
"duplicateSymbol": "Дублікат сімвала '{{symbol}}': гэты статус будзе праігнараваны.",
58+
"emptySymbol": "Пусты сімвал: гэты статус будзе праігнараваны.",
59+
"nextSymbolUnknown": "Наступны сімвал {{symbol}} невядомы: стварыце статус з сімвалам {{symbol}}.",
60+
"notConventionalType": "Для інфармацыі, звычайны тып для сімвала статусу {{symbol}} - {{type}}: вы можаце перагледзець гэты тып.",
61+
"wrongTypeAfterDone": {
62+
"line1": "Пасля гэтага статусу `DONE` ідзе {{nextType}}, а не `TODO` або `IN_PROGRESS`.",
63+
"line2": "Пры выкарыстанні для завяршэння перыядычнай задачы яна замест гэтага будзе суправаджацца `TODO` або `IN_PROGRESS`, каб гарантаваць, што наступная задача адпавядае фільтру `не выканана`.",
64+
"line3": "Глядзіце [Recurring Tasks and Custom Statuses]({{helpURL}})."
65+
}
66+
},
67+
"statusSettings": {
68+
"comment": {
69+
"line1": "Пераключыцеся ў рэжым папярэдняга прагляду ў рэальным часе або рэжым чытання, каб убачыць табліцу.",
70+
"line2": "Калі ў імёнах статусаў ёсць якія-небудзь сімвалы фарматавання Markdown, такія як '*' або '_',",
71+
"line3": "Obsidian можа правільна адлюстраваць табліцу толькі ў рэжыме чытання."
72+
},
73+
"theseAreStatusValues": "Гэта значэнні статусу ў раздзелах Core і Custom statuses.",
74+
"title": "Налады статусу"
75+
}
76+
}
77+
},
78+
"settings": {
79+
"autoSuggest": {
80+
"heading": "Аўтападказка",
81+
"maxSuggestions": {
82+
"description": "Колькі прапаноў павінна быць паказана пры з'яўленні меню аўтаматычных прапаноў (уключаючы опцыю «⏎»).",
83+
"name": "Максімальная колькасць аўтаматычных прапаноў для паказу"
84+
},
85+
"minLength": {
86+
"description": "Калі вышэй за 0, аўтаматычная прапанова будзе спрацоўваць толькі тады, калі распазнаецца пачатак любога падтрымоўванага ключавога слова.",
87+
"name": "Мінімальная даўжыня супадзення для аўтаматычнай прапановы"
88+
},
89+
"toggle": {
90+
"description": "Уключэнне гэтага адкрые інтэлектуальнае меню прапаноў пры ўводзе тэксту ўнутры распазнанай лініі задачы.",
91+
"name": "Аўтаматычна прапаноўваць змест задачы"
92+
}
93+
},
94+
"changeRequiresRestart": "Змена любых налад патрабуе перазапуску Obsidian.",
95+
"dates": {
96+
"cancelledDate": {
97+
"description": "Уключэнне гэтага дадасць часовую пазнаку ❌ YYYY-MM-DD ў канцы, калі задача пераключаецца ў адменены стан.",
98+
"name": "Устанавіць дату адмены для кожнай адмененай задачы"
99+
},
100+
"createdDate": {
101+
"description": "Уключэнне гэтага дадасць часовую пазнаку ➕ YYYY-MM-DD перад іншымі значэннямі даты, калі задача ствараецца з дапамогай «Стварыць або рэдагаваць задачу» або пры завяршэнні перыядычнай задачы.",
102+
"name": "Устанавіць дату стварэння для кожнай дададзенай задачы"
103+
},
104+
"doneDate": {
105+
"description": "Уключэнне гэтага дадасць часовую пазнаку ✅ YYYY-MM-DD ў канцы, калі задача пераключаецца ў выкананы стан.",
106+
"name": "Устанавіць дату выканання для кожнай выкананай задачы"
107+
},
108+
"heading": "Даты"
109+
},
110+
"datesFromFileNames": {
111+
"heading": "Даты з імёнаў файлаў",
112+
"scheduledDate": {
113+
"extraFormat": {
114+
"description": {
115+
"line1": "Дадатковы фармат даты, які плагін Tasks будзе распазнаваць пры выкарыстанні імя файла ў якасці запланаванай даты для задач без даты.",
116+
"line2": "Даведка па сінтаксісе"
117+
},
118+
"name": "Дадатковы фармат даты імя файла ў якасці запланаванай даты для задач без даты",
119+
"placeholder": "прыклад: MMM DD YYYY"
120+
},
121+
"folders": {
122+
"description": "Пакіньце пустым, калі хочаце выкарыстоўваць запланаваныя даты па змаўчанні паўсюль, або ўвядзіце спіс тэчак, падзеленых коскамі.",
123+
"name": "Тэчкі з запланаванымі датамі па змаўчанні"
124+
},
125+
"toggle": {
126+
"description": {
127+
"line1": "Эканомце час, уводзячы запланаваныя (⏳) даты.",
128+
"line2": "Калі гэтая опцыя ўключана, любым задачам без даты будзе прызначана запланаваная дата па змаўчанні, вынятая з іх імя файла.",
129+
"line3": "Па змаўчанні плагін Tasks будзе супастаўляць фарматы даты <code>YYYY-MM-DD</code> і <code>YYYYMMDD</code>.",
130+
"line4": "Задачы без даты не маюць ніводнай з дат: Due (📅 ), Scheduled (⏳) і Start (🛫)."
131+
},
132+
"name": "Выкарыстоўваць імя файла ў якасці запланаванай даты для задач без даты"
133+
}
134+
}
135+
},
136+
"dialogs": {
137+
"accessKeys": {
138+
"description": "Калі клавішы доступу (клавіятурныя скарачэнні) для розных элементаў кіравання ў дыялогавых вокнах канфліктуюць з сістэмнымі клавіятурнымі скарачэннямі або функцыямі дапаможнай тэхналогіі, якія важныя для вас, вы можаце адключыць іх тут.",
139+
"name": "Забяспечыць клавішы доступу ў дыялогах"
140+
},
141+
"heading": "Дыялогі"
142+
},
143+
"format": {
144+
"description": {
145+
"line1": "Фармат, які Tasks выкарыстоўвае для чытання і запісу задач.",
146+
"line2": "<b>Важна:</b> Tasks у цяперашні час падтрымлівае толькі адзін фармат адначасова. Выбар Dataview у цяперашні час <b>спыніць чытанне Tasks сваіх уласных знакаў эмодзі</b>."
147+
},
148+
"displayName": {
149+
"dataview": "Dataview",
150+
"tasksEmojiFormat": "Фармат эмодзі Tasks"
151+
},
152+
"name": "Фармат задачы"
153+
},
154+
"globalFilter": {
155+
"filter": {
156+
"description": {
157+
"line1": "Рэкамендуецца: пакіньце пустым, калі хочаце, каб усе пункты кантрольнага спісу ў вашым сховішчы былі задачамі, якімі кіруе гэты плагін.",
158+
"line2": "Выкарыстоўвайце глабальны фільтр, калі вы хочаце, каб Tasks дзейнічаў толькі на падмноства вашых элементаў кантрольнага спісу «<code>- [ ]</code>», такім чынам, каб элемент кантрольнага спісу ўключаў у сваё апісанне вызначаны радок, каб лічыцца задачай.",
159+
"line3": "Напрыклад, калі вы ўсталюеце глабальны фільтр на <code>#task</code>, плагін Tasks будзе апрацоўваць толькі элементы кантрольнага спісу, пазначаныя <code>#task</code>.",
160+
"line4": "Іншыя элементы кантрольнага спісу застануцца звычайнымі элементамі кантрольнага спісу і не будуць з'яўляцца ў запытах, і для іх не будзе ўстаноўлена дата выканання."
161+
},
162+
"name": "Глабальны фільтр",
163+
"placeholder": "напрыклад #task або TODO"
164+
},
165+
"heading": "Глабальны фільтр задач",
166+
"removeFilter": {
167+
"description": "Уключэнне гэтага выдаліць радок, які вы ўсталявалі ў якасці глабальнага фільтра, з апісання задачы пры адлюстраванні задачы.",
168+
"name": "Выдаліць глабальны фільтр з апісання"
169+
}
170+
},
171+
"globalQuery": {
172+
"heading": "Глабальны запыт",
173+
"query": {
174+
"description": "Запыт, які аўтаматычна ўключаецца ў пачатку кожнага блока Tasks у сховішчы. Карысны для дадання фільтраў па змаўчанні або параметраў макета.",
175+
"placeholder": "Напрыклад...\npath does not include _templates/\nlimit 300\nshow urgency"
176+
}
177+
},
178+
"recurringTasks": {
179+
"heading": "Перыядычныя задачы",
180+
"nextLine": {
181+
"description": "Уключэнне гэтага зробіць наступнае паўтарэнне задачы на радку ніжэй за завершаную задачу. У адваротным выпадку наступнае паўтарэнне з'явіцца перад завершанай задачай.",
182+
"name": "Наступнае паўтарэнне з'яўляецца на радку ніжэй"
183+
}
184+
},
185+
"seeTheDocumentation": "Глядзіце дакументацыю",
186+
"statuses": {
187+
"collections": {
188+
"anuppuccinTheme": "Тэма AnuPpuccin",
189+
"auraTheme": "Тэма Aura",
190+
"borderTheme": "Тэма Border",
191+
"buttons": {
192+
"addCollection": {
193+
"name": "{{themeName}}: Дадаць {{numberOfStatuses}} падтрымоўваныя статусы"
194+
}
195+
},
196+
"ebullientworksTheme": "Тэма Ebullientworks",
197+
"itsThemeAndSlrvbCheckboxes": "Тэма ITS і сцяжкі SlRvb",
198+
"lytModeTheme": "Тэма LYT Mode (толькі цёмны рэжым)",
199+
"minimalTheme": "Мінімальная тэма",
200+
"thingsTheme": "Тэма Things"
201+
},
202+
"coreStatuses": {
203+
"buttons": {
204+
"checkStatuses": {
205+
"name": "Праглядзець і праверыць вашы статусы",
206+
"tooltip": "Стварыць новы файл у каранёвай тэчцы сховішча, які змяшчае дыяграму Mermaid з бягучымі наладамі статусу."
207+
}
208+
},
209+
"description": {
210+
"line1": "Гэта асноўныя статусы, якія Tasks падтрымлівае ўласна, без патрэбы ў карыстальніцкім CSS-стылі або тэматызацыі.",
211+
"line2": "Вы можаце рэдагаваць і дадаваць свае ўласныя карыстальніцкія статусы ў раздзеле ніжэй."
212+
},
213+
"heading": "Асноўныя статусы"
214+
},
215+
"customStatuses": {
216+
"buttons": {
217+
"addAllUnknown": {
218+
"name": "Дадаць усе невядомыя тыпы статусаў"
219+
},
220+
"addNewStatus": {
221+
"name": "Дадаць новы статус задачы"
222+
},
223+
"resetCustomStatuses": {
224+
"name": "Скінуць карыстальніцкія тыпы статусаў да значэнняў па змаўчанні"
225+
}
226+
},
227+
"description": {
228+
"line1": "Спачатку вы павінны <b>выбраць і ўсталяваць CSS Snippet або Theme</b>, каб стылізаваць карыстальніцкія сцяжкі.",
229+
"line2": "Затым выкарыстоўвайце кнопкі ніжэй, каб наладзіць свае карыстальніцкія статусы ў адпаведнасці з выбранымі CSS-сцяжкамі.",
230+
"line3": "<b>Заўвага</b> Любыя статусы з тым жа сімвалам, што і ў папярэдніх статусаў, будуць праігнараваныя. Вы можаце пацвердзіць фактычна загружаныя статусы, запусціўшы каманду «Стварыць або рэдагаваць задачу» і паглядзеўшы на выпадальны спіс Статус.",
231+
"line4": "Глядзіце дакументацыю, каб пачаць!"
232+
},
233+
"heading": "Карыстальніцкія статусы"
234+
},
235+
"heading": "Статусы задач"
236+
}
237+
}
238+
}

0 commit comments

Comments
 (0)