diff --git a/ui/src/core/i18n/I18nProvider.test.tsx b/ui/src/core/i18n/I18nProvider.test.tsx new file mode 100644 index 0000000..f0bdc97 --- /dev/null +++ b/ui/src/core/i18n/I18nProvider.test.tsx @@ -0,0 +1,46 @@ +import { act, render } from '@testing-library/react' +import { describe, expect, it } from 'vitest' + +import { AppI18nProvider, createAppI18n, defaultLocale } from '@core/i18n' + +describe('AppI18nProvider', () => { + it('syncs document language and direction with the active i18n language', async () => { + const i18n = createAppI18n('ar') + + render( + +
+ , + ) + + expect(document.documentElement).toHaveAttribute('lang', 'ar') + expect(document.documentElement).toHaveAttribute('dir', 'rtl') + + await act(async () => { + await i18n.changeLanguage('he') + }) + + expect(document.documentElement).toHaveAttribute('lang', 'he') + expect(document.documentElement).toHaveAttribute('dir', 'rtl') + + await act(async () => { + await i18n.changeLanguage(defaultLocale) + }) + + expect(document.documentElement).toHaveAttribute('lang', defaultLocale) + expect(document.documentElement).toHaveAttribute('dir', 'ltr') + }) + + it('uses default document metadata for unsupported locales', () => { + const i18n = createAppI18n('zz') + + render( + +
+ , + ) + + expect(document.documentElement).toHaveAttribute('lang', defaultLocale) + expect(document.documentElement).toHaveAttribute('dir', 'ltr') + }) +}) diff --git a/ui/src/core/i18n/I18nProvider.tsx b/ui/src/core/i18n/I18nProvider.tsx index 6fe5ace..0a12842 100644 --- a/ui/src/core/i18n/I18nProvider.tsx +++ b/ui/src/core/i18n/I18nProvider.tsx @@ -1,13 +1,42 @@ -import type { PropsWithChildren } from 'react' +import { useEffect, type PropsWithChildren } from 'react' import { I18nextProvider } from 'react-i18next' import { appI18n } from './i18n' +import { getDocumentLocale, getLocaleDirection } from './locales' import type { i18n } from 'i18next' +const syncDocumentLocale = (language: string) => { + const locale = getDocumentLocale(language) + + document.documentElement.lang = locale + document.documentElement.dir = getLocaleDirection(locale) +} + +const I18nDocumentMetadata = ({ i18n }: { i18n: i18n }) => { + useEffect(() => { + syncDocumentLocale(i18n.resolvedLanguage ?? i18n.language) + + const handleLanguageChanged = (language: string) => { + syncDocumentLocale(language) + } + + i18n.on('languageChanged', handleLanguageChanged) + + return () => { + i18n.off('languageChanged', handleLanguageChanged) + } + }, [i18n]) + + return null +} + export const AppI18nProvider = ({ children, i18n = appI18n, }: PropsWithChildren<{ i18n?: i18n }>) => ( - {children} + + + {children} + ) diff --git a/ui/src/core/i18n/i18n.test.ts b/ui/src/core/i18n/i18n.test.ts index 5b9ebb3..4a96b41 100644 --- a/ui/src/core/i18n/i18n.test.ts +++ b/ui/src/core/i18n/i18n.test.ts @@ -1,6 +1,40 @@ import { describe, expect, it } from 'vitest' -import { createAppI18n, defaultLocale } from '@core/i18n' +import { + createAppI18n, + defaultLocale, + defaultNamespace, + getDocumentLocale, + getLocaleDirection, + publicLocales, + resources, +} from '@core/i18n' + +type FlatResource = Record + +const flattenResource = ( + value: unknown, + prefix = '', + result: FlatResource = {}, +): FlatResource => { + if (typeof value === 'string') { + result[prefix] = value + return result + } + + if (!value || typeof value !== 'object') { + return result + } + + for (const [key, child] of Object.entries(value)) { + flattenResource(child, prefix ? `${prefix}.${key}` : key, result) + } + + return result +} + +const placeholdersFor = (value: string) => + [...value.matchAll(/\{\{([^}]+)\}\}/g)].map((match) => match[1]).sort() describe('i18n', () => { it('creates an English i18next instance with typed selector resources', () => { @@ -14,8 +48,297 @@ describe('i18n', () => { }) it('falls back to English for unsupported locales', () => { - const i18n = createAppI18n('fr-FR') + const i18n = createAppI18n('zz') expect(i18n.t(($) => $.decks.labels.dueToday)).toBe('Due Today') }) + + it('maps public locales to document metadata', () => { + expect(getDocumentLocale('ar')).toBe('ar') + expect(getDocumentLocale('zz')).toBe(defaultLocale) + expect(getLocaleDirection('fa')).toBe('rtl') + expect(getLocaleDirection('ar')).toBe('rtl') + expect(getLocaleDirection('he')).toBe('rtl') + expect(getLocaleDirection(defaultLocale)).toBe('ltr') + expect(getLocaleDirection('zz')).toBe('ltr') + }) + + it('loads each public locale through i18next resources', () => { + expect(publicLocales).toEqual([ + 'en-US', + 'es', + 'pt-BR', + 'fr', + 'de', + 'ja', + 'zh-Hans', + 'zh-Hant', + 'ko', + 'id', + 'ru', + 'it', + 'nl', + 'tr', + 'pl', + 'vi', + 'cs', + 'uk', + 'hu', + 'sv', + 'ro', + 'el', + 'da', + 'fi', + 'sk', + 'bg', + 'th', + 'hr', + 'nb', + 'sr-Latn', + 'lt', + 'sl', + 'ca', + 'et', + 'lv', + 'bs', + 'fa', + 'ar', + 'he', + ]) + + expect(createAppI18n('es').t(($) => $.settings.labels.settings)).toBe('Ajustes') + expect(createAppI18n('pt-BR').t(($) => $.settings.labels.settings)).toBe( + 'Configurações', + ) + expect(createAppI18n('fr').t(($) => $.settings.labels.settings)).toBe('Paramètres') + expect(createAppI18n('de').t(($) => $.settings.labels.settings)).toBe('Einstellungen') + expect(createAppI18n('ja').t(($) => $.settings.labels.settings)).toBe('設定') + expect(createAppI18n('zh-Hans').t(($) => $.settings.labels.settings)).toBe('设置') + expect(createAppI18n('zh-Hant').t(($) => $.settings.labels.settings)).toBe('設定') + expect(createAppI18n('ko').t(($) => $.settings.labels.settings)).toBe('설정') + expect(createAppI18n('id').t(($) => $.settings.labels.settings)).toBe('Pengaturan') + expect(createAppI18n('ru').t(($) => $.settings.labels.settings)).toBe('Настройки') + expect(createAppI18n('it').t(($) => $.settings.labels.settings)).toBe('Impostazioni') + expect(createAppI18n('nl').t(($) => $.settings.labels.settings)).toBe('Instellingen') + expect(createAppI18n('tr').t(($) => $.settings.labels.settings)).toBe('Ayarlar') + expect(createAppI18n('pl').t(($) => $.settings.labels.settings)).toBe('Ustawienia') + expect(createAppI18n('vi').t(($) => $.settings.labels.settings)).toBe('Cài đặt') + expect(createAppI18n('cs').t(($) => $.settings.labels.settings)).toBe('Nastavení') + expect(createAppI18n('uk').t(($) => $.settings.labels.settings)).toBe( + 'Налаштування', + ) + expect(createAppI18n('hu').t(($) => $.settings.labels.settings)).toBe('Beállítások') + expect(createAppI18n('sv').t(($) => $.settings.labels.settings)).toBe('Inställningar') + expect(createAppI18n('ro').t(($) => $.settings.labels.settings)).toBe('Setări') + expect(createAppI18n('el').t(($) => $.settings.labels.settings)).toBe('Ρυθμίσεις') + expect(createAppI18n('da').t(($) => $.settings.labels.settings)).toBe( + 'Indstillinger', + ) + expect(createAppI18n('fi').t(($) => $.settings.labels.settings)).toBe('Asetukset') + expect(createAppI18n('sk').t(($) => $.settings.labels.settings)).toBe('Nastavenia') + expect(createAppI18n('bg').t(($) => $.settings.labels.settings)).toBe('Настройки') + expect(createAppI18n('th').t(($) => $.settings.labels.settings)).toBe('การตั้งค่า') + expect(createAppI18n('hr').t(($) => $.settings.labels.settings)).toBe('Postavke') + expect(createAppI18n('nb').t(($) => $.settings.labels.settings)).toBe( + 'Innstillinger', + ) + expect(createAppI18n('sr-Latn').t(($) => $.settings.labels.settings)).toBe( + 'Podešavanja', + ) + expect(createAppI18n('lt').t(($) => $.settings.labels.settings)).toBe('Nustatymai') + expect(createAppI18n('sl').t(($) => $.settings.labels.settings)).toBe('Nastavitve') + expect(createAppI18n('ca').t(($) => $.settings.labels.settings)).toBe( + 'Configuració', + ) + expect(createAppI18n('et').t(($) => $.settings.labels.settings)).toBe('Seaded') + expect(createAppI18n('lv').t(($) => $.settings.labels.settings)).toBe('Iestatījumi') + expect(createAppI18n('bs').t(($) => $.settings.labels.settings)).toBe('Postavke') + expect(createAppI18n('fa').t(($) => $.settings.labels.settings)).toBe('تنظیمات') + expect(createAppI18n('ar').t(($) => $.settings.labels.settings)).toBe('الإعدادات') + expect(createAppI18n('he').t(($) => $.settings.labels.settings)).toBe('הגדרות') + }) + + it('keeps locale resource keys and placeholders aligned with English', () => { + const defaultResource = flattenResource(resources[defaultLocale][defaultNamespace]) + const defaultKeys = Object.keys(defaultResource).sort() + + for (const locale of publicLocales) { + const localeResource = flattenResource(resources[locale][defaultNamespace]) + const missingKeys = defaultKeys.filter((key) => !(key in localeResource)) + const placeholderMismatches = defaultKeys.filter( + (key) => + JSON.stringify(placeholdersFor(localeResource[key] ?? '')) !== + JSON.stringify(placeholdersFor(defaultResource[key])), + ) + + expect(missingKeys, locale).toEqual([]) + expect(placeholderMismatches, locale).toEqual([]) + } + }) + + it('uses Russian plural categories for count-based translations', () => { + const i18n = createAppI18n('ru') + + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 1 })).toBe('1 элемент') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 2 })).toBe('2 элемента') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 5 })).toBe('5 элементов') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 21 })).toBe('21 день назад') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 22 })).toBe('22 дня назад') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 25 })).toBe('25 дней назад') + }) + + it('uses Polish plural categories for count-based translations', () => { + const i18n = createAppI18n('pl') + + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 1 })).toBe('1 element') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 2 })).toBe('2 elementy') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 5 })).toBe('5 elementów') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 1 })).toBe('1 dzień temu') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 2 })).toBe('2 dni temu') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 5 })).toBe('5 dni temu') + }) + + it('uses Czech plural categories for count-based translations', () => { + const i18n = createAppI18n('cs') + + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 1 })).toBe('1 položka') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 2 })).toBe('2 položky') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 5 })).toBe('5 položek') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 1 })).toBe('před 1 dnem') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 2 })).toBe('před 2 dny') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 5 })).toBe('před 5 dny') + }) + + it('uses Croatian plural categories for count-based translations', () => { + const i18n = createAppI18n('hr') + + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 1 })).toBe('1 stavka') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 2 })).toBe('2 stavke') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 5 })).toBe('5 stavki') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 1 })).toBe('prije 1 dan') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 2 })).toBe('prije 2 dana') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 5 })).toBe('prije 5 dana') + }) + + it('uses Slovenian plural categories for count-based translations', () => { + const i18n = createAppI18n('sl') + + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 1 })).toBe('1 element') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 2 })).toBe('2 elementa') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 3 })).toBe('3 elementi') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 5 })).toBe('5 elementov') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 1 })).toBe('pred 1 dnem') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 2 })).toBe('pred 2 dnevoma') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 3 })).toBe('pred 3 dnevi') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 5 })).toBe('pred 5 dnevi') + }) + + it('uses Bosnian plural categories for count-based translations', () => { + const i18n = createAppI18n('bs') + + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 1 })).toBe('1 stavka') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 2 })).toBe('2 stavke') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 5 })).toBe('5 stavki') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 1 })).toBe('prije 1 dan') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 2 })).toBe('prije 2 dana') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 5 })).toBe('prije 5 dana') + }) + + it('uses Arabic plural categories for count-based translations', () => { + const i18n = createAppI18n('ar') + + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 0 })).toBe('0 عنصر') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 1 })).toBe('1 عنصر') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 2 })).toBe('2 عنصران') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 3 })).toBe('3 عناصر') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 11 })).toBe('11 عنصرا') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 100 })).toBe('100 عنصر') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 0 })).toBe('منذ 0 يوم') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 1 })).toBe('منذ 1 يوم') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 2 })).toBe('منذ 2 يومين') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 3 })).toBe('منذ 3 أيام') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 11 })).toBe('منذ 11 يوما') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 100 })).toBe('منذ 100 يوم') + }) + + it('uses Hebrew plural categories for count-based translations', () => { + const i18n = createAppI18n('he') + + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 1 })).toBe('1 פריט') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 2 })).toBe('2 פריטים') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 3 })).toBe('3 פריטים') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 1 })).toBe('לפני 1 יום') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 2 })).toBe('לפני 2 ימים') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 3 })).toBe('לפני 3 ימים') + }) + + it('uses Ukrainian plural categories for count-based translations', () => { + const i18n = createAppI18n('uk') + + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 1 })).toBe('1 елемент') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 2 })).toBe('2 елементи') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 5 })).toBe('5 елементів') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 21 })).toBe('21 день тому') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 22 })).toBe('22 дні тому') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 25 })).toBe('25 днів тому') + }) + + it('uses Slovak plural categories for count-based translations', () => { + const i18n = createAppI18n('sk') + + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 1 })).toBe('1 položka') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 2 })).toBe('2 položky') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 5 })).toBe('5 položiek') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 1 })).toBe('pred 1 dňom') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 2 })).toBe('pred 2 dňami') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 5 })).toBe('pred 5 dňami') + }) + + it('uses Serbian Latin plural categories for count-based translations', () => { + const i18n = createAppI18n('sr-Latn') + + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 1 })).toBe('1 stavka') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 2 })).toBe('2 stavke') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 5 })).toBe('5 stavki') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 1 })).toBe('pre 1 dan') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 2 })).toBe('pre 2 dana') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 5 })).toBe('pre 5 dana') + }) + + it('uses Lithuanian plural categories for count-based translations', () => { + const i18n = createAppI18n('lt') + + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 1 })).toBe('1 elementas') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 2 })).toBe('2 elementai') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 10 })).toBe('10 elementų') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 1 })).toBe('prieš 1 dieną') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 2 })).toBe('prieš 2 dienas') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 10 })).toBe('prieš 10 dienų') + }) + + it('uses Latvian plural categories for count-based translations', () => { + const i18n = createAppI18n('lv') + + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 0 })).toBe('0 vienumu') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 1 })).toBe('1 vienums') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 2 })).toBe('2 vienumi') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 0 })).toBe('pirms 0 dienām') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 1 })).toBe('pirms 1 dienas') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 2 })).toBe('pirms 2 dienām') + }) + + it('uses Romanian plural categories for count-based translations', () => { + const i18n = createAppI18n('ro') + + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 1 })).toBe('1 element') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 2 })).toBe('2 elemente') + expect(i18n.t(($) => $.trash.labels.itemCount, { count: 21 })).toBe( + '21 de elemente', + ) + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 1 })).toBe('acum 1 zi') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 2 })).toBe('acum 2 zile') + expect(i18n.t(($) => $.dates.age.dayAgo, { count: 21 })).toBe( + 'acum 21 de zile', + ) + }) }) diff --git a/ui/src/core/i18n/index.ts b/ui/src/core/i18n/index.ts index d248a72..a0ee3b9 100644 --- a/ui/src/core/i18n/index.ts +++ b/ui/src/core/i18n/index.ts @@ -2,9 +2,12 @@ export { AppI18nProvider } from './I18nProvider' export { appI18n, createAppI18n } from './i18n' export { defaultLocale, + getDocumentLocale, + getLocaleDirection, isPublicLocale, publicLocales, + rtlLocales, } from './locales' export { defaultNamespace, resources } from './resources' -export type { PublicLocale } from './locales' +export type { LocaleDirection, PublicLocale } from './locales' export type { TranslationResources } from './resources' diff --git a/ui/src/core/i18n/locales.ts b/ui/src/core/i18n/locales.ts index 2da2147..a8d937b 100644 --- a/ui/src/core/i18n/locales.ts +++ b/ui/src/core/i18n/locales.ts @@ -1,8 +1,57 @@ export const defaultLocale = 'en-US' -export const publicLocales = [defaultLocale] as const +export const publicLocales = [ + defaultLocale, + 'es', + 'pt-BR', + 'fr', + 'de', + 'ja', + 'zh-Hans', + 'zh-Hant', + 'ko', + 'id', + 'ru', + 'it', + 'nl', + 'tr', + 'pl', + 'vi', + 'cs', + 'uk', + 'hu', + 'sv', + 'ro', + 'el', + 'da', + 'fi', + 'sk', + 'bg', + 'th', + 'hr', + 'nb', + 'sr-Latn', + 'lt', + 'sl', + 'ca', + 'et', + 'lv', + 'bs', + 'fa', + 'ar', + 'he', +] as const export type PublicLocale = (typeof publicLocales)[number] +export type LocaleDirection = 'ltr' | 'rtl' + +export const rtlLocales = ['fa', 'ar', 'he'] satisfies readonly PublicLocale[] export const isPublicLocale = (locale: string): locale is PublicLocale => publicLocales.includes(locale as PublicLocale) + +export const getLocaleDirection = (locale: string): LocaleDirection => + rtlLocales.includes(locale as (typeof rtlLocales)[number]) ? 'rtl' : 'ltr' + +export const getDocumentLocale = (locale: string): PublicLocale => + isPublicLocale(locale) ? locale : defaultLocale diff --git a/ui/src/core/i18n/resources/ar.ts b/ui/src/core/i18n/resources/ar.ts new file mode 100644 index 0000000..338d39a --- /dev/null +++ b/ui/src/core/i18n/resources/ar.ts @@ -0,0 +1,675 @@ +export const ar = { + bootstrap: { + error: { + fallbackMessage: 'حاول مرة أخرى. إذا استمر ذلك، أعد فتح Clear.', + title: 'تعذر البدء', + }, + loadingTitle: 'جار تحضير مساحة الدراسة الخاصة بك', + }, + common: { + actions: { + back: 'رجوع', + cancel: 'إلغاء', + checkAgain: 'تحقق مرة أخرى', + close: 'إغلاق', + create: 'إنشاء', + delete: 'حذف', + dismissError: 'إخفاء الخطأ', + dismissStatus: 'إخفاء الحالة', + edit: 'تعديل', + itemActions: 'إجراءات {{title}}', + reset: 'إعادة ضبط', + review: 'مراجعة', + save: 'حفظ', + saveChanges: 'حفظ التغييرات', + tryAgain: 'حاول مرة أخرى', + }, + labels: { + active: 'نشط', + clear: 'Clear', + custom: 'مخصص', + default: 'افتراضي', + loadingEditor: 'جار تحميل المحرر', + name: 'الاسم', + completedTask: 'مهمة مكتملة', + description: 'الوصف', + incompleteTask: 'مهمة غير مكتملة', + percentageInput: 'نسبة {{label}}', + visual: 'الشكل', + }, + status: { + actionFailed: 'فشل الإجراء', + actionInProgress: 'الإجراء قيد التنفيذ', + }, + sort: { + ascending: 'تصاعدي', + column: 'العمود', + descending: 'تنازلي', + direction: 'الاتجاه', + sort: 'فرز', + }, + search: { + label: 'بحث', + }, + visualPicker: { + allLucideIcons: 'كل أيقونات Lucide', + browseIconsFor: 'تصفح أو ابحث عن أيقونات لـ {{label}}.', + chooseIcon: 'اختر أيقونة', + iconPicker: 'منتقي أيقونة {{label}}', + iconSearch: 'بحث أيقونة {{label}}', + iconsCouldNotLoad: 'تعذر تحميل الأيقونات.', + loadingIcons: 'جار تحميل الأيقونات', + loadingMoreIcons: 'جار تحميل المزيد من الأيقونات', + moreIcons: 'المزيد من الأيقونات', + noIconsMatch: 'لا توجد أيقونات تطابق "{{query}}".', + searchIconsPlaceholder: 'ابحث عن أيقونات…', + selectedIcon: '{{label}} المحدد', + }, + }, + dashboard: { + actions: { + create: 'إنشاء', + newDeck: 'مجموعة جديدة', + newFolder: 'مجلد جديد', + }, + descriptions: { + defaultWorkspace: 'احتفظ بالمجموعات والمجلدات والملاحظات معا.', + emptyWorkspace: 'أنشئ مجموعة، ثم أضف ملاحظات لبناء قائمة المراجعة.', + emptyFolder: 'أنشئ مجموعة، ثم أضف ملاحظات لبناء قائمة مراجعة.', + searchPlaceholder: 'ابحث في المجلدات والمجموعات والملاحظات…', + }, + empty: { + createFirstDeck: 'أنشئ أول مجموعة لك', + }, + errors: { + couldNotDeleteDeck: 'تعذر حذف المجموعة', + couldNotDeleteFolder: 'تعذر حذف المجلد', + couldNotDeleteWorkspace: 'تعذر حذف مساحة العمل', + dashboardCouldNotOpen: 'تعذر فتح لوحة التحكم', + decksCouldNotLoad: 'تعذر تحميل المجموعات', + decksMayBeOutOfDate: 'قد تكون المجموعات قديمة', + foldersCouldNotLoad: 'تعذر تحميل المجلدات', + foldersMayBeOutOfDate: 'قد تكون المجلدات قديمة', + workspaceCouldNotLoad: 'تعذر تحميل مساحة العمل', + }, + labels: { + dashboard: 'لوحة التحكم', + loadingDashboard: 'جار تحميل لوحة التحكم', + newItem: 'عنصر جديد', + }, + }, + dates: { + absolute: { + unavailable: 'التاريخ غير متاح', + }, + age: { + dayAgo_zero: 'منذ {{count}} يوم', + dayAgo_one: 'منذ {{count}} يوم', + dayAgo_two: 'منذ {{count}} يومين', + dayAgo_few: 'منذ {{count}} أيام', + dayAgo_many: 'منذ {{count}} يوما', + dayAgo_other: 'منذ {{count}} يوم', + hourAgo_zero: 'منذ {{count}} ساعة', + hourAgo_one: 'منذ {{count}} ساعة', + hourAgo_two: 'منذ {{count}} ساعتين', + hourAgo_few: 'منذ {{count}} ساعات', + hourAgo_many: 'منذ {{count}} ساعة', + hourAgo_other: 'منذ {{count}} ساعة', + justNow: 'الآن', + minuteAgo_zero: 'منذ {{count}} دقيقة', + minuteAgo_one: 'منذ {{count}} دقيقة', + minuteAgo_two: 'منذ {{count}} دقيقتين', + minuteAgo_few: 'منذ {{count}} دقائق', + minuteAgo_many: 'منذ {{count}} دقيقة', + minuteAgo_other: 'منذ {{count}} دقيقة', + unavailable: 'التاريخ غير متاح', + weekAgo_zero: 'منذ {{count}} أسبوع', + weekAgo_one: 'منذ {{count}} أسبوع', + weekAgo_two: 'منذ {{count}} أسبوعين', + weekAgo_few: 'منذ {{count}} أسابيع', + weekAgo_many: 'منذ {{count}} أسبوعا', + weekAgo_other: 'منذ {{count}} أسبوع', + }, + labels: { + deleted: 'حذف {{value}}', + due: 'مستحق: {{value}}', + reviewed: 'تمت المراجعة: {{value}}', + updated: 'تم التحديث {{value}}', + updatedUppercase: 'تم التحديث {{value}}', + }, + relative: { + dayAgo_zero: 'منذ {{count}} يوم', + dayAgo_one: 'منذ {{count}} يوم', + dayAgo_two: 'منذ {{count}} يومين', + dayAgo_few: 'منذ {{count}} أيام', + dayAgo_many: 'منذ {{count}} يوما', + dayAgo_other: 'منذ {{count}} يوم', + inAMoment: 'بعد لحظات', + inDay_zero: 'خلال {{count}} يوم', + inDay_one: 'خلال {{count}} يوم', + inDay_two: 'خلال {{count}} يومين', + inDay_few: 'خلال {{count}} أيام', + inDay_many: 'خلال {{count}} يوما', + inDay_other: 'خلال {{count}} يوم', + inMonth_zero: 'خلال {{count}} شهر', + inMonth_one: 'خلال {{count}} شهر', + inMonth_two: 'خلال {{count}} شهرين', + inMonth_few: 'خلال {{count}} أشهر', + inMonth_many: 'خلال {{count}} شهرا', + inMonth_other: 'خلال {{count}} شهر', + inWeek_zero: 'خلال {{count}} أسبوع', + inWeek_one: 'خلال {{count}} أسبوع', + inWeek_two: 'خلال {{count}} أسبوعين', + inWeek_few: 'خلال {{count}} أسابيع', + inWeek_many: 'خلال {{count}} أسبوعا', + inWeek_other: 'خلال {{count}} أسبوع', + justNow: 'الآن', + monthAgo_zero: 'منذ {{count}} شهر', + monthAgo_one: 'منذ {{count}} شهر', + monthAgo_two: 'منذ {{count}} شهرين', + monthAgo_few: 'منذ {{count}} أشهر', + monthAgo_many: 'منذ {{count}} شهرا', + monthAgo_other: 'منذ {{count}} شهر', + secondsAgoShort: 'قبل {{count}}ث', + minutesAgoShort: 'قبل {{count}}د', + hoursAgoShort: 'قبل {{count}}س', + today: 'اليوم', + tomorrow: 'غدا', + weekAgo_zero: 'منذ {{count}} أسبوع', + weekAgo_one: 'منذ {{count}} أسبوع', + weekAgo_two: 'منذ {{count}} أسبوعين', + weekAgo_few: 'منذ {{count}} أسابيع', + weekAgo_many: 'منذ {{count}} أسبوعا', + weekAgo_other: 'منذ {{count}} أسبوع', + yesterday: 'أمس', + }, + }, + decks: { + actions: { + actionMenu: 'إجراءات {{title}}', + createDeck: 'إنشاء مجموعة', + createNote: 'إنشاء ملاحظة', + deleteDeck: 'حذف المجموعة', + editDeck: 'تعديل المجموعة', + newNote: 'ملاحظة جديدة', + openDeck: 'فتح مجموعة {{title}}', + saveDeck: 'تعذر حفظ المجموعة', + studyNow: 'ادرس الآن', + }, + descriptions: { + emptyDeck: 'أضف ملاحظة حتى تحتوي هذه المجموعة على مادة للمراجعة.', + editorDefault: 'مجموعة دراسة مركزة.', + editorVisual: 'اختر رمزا لغلاف هذه المجموعة.', + notesSearchPlaceholder: 'ابحث في الملاحظات…', + }, + dialogs: { + deleteDeckDescription: 'سيتم نقل "{{title}}" إلى المهملات. يمكنك استعادتها لاحقا.', + deleteDeckFallbackDescription: 'سيتم نقل هذه المجموعة إلى المهملات. يمكنك استعادتها لاحقا.', + deleteDeckFallbackTitle: 'حذف المجموعة؟', + deleteDeckTitle: 'حذف "{{title}}"؟', + deleteNoteDescription: 'سيتم نقل "{{title}}" إلى المهملات. يمكنك استعادتها لاحقا.', + deleteNoteFallbackTitle: 'حذف الملاحظة؟', + deleteNoteTitle: 'حذف "{{title}}"؟', + }, + empty: { + noMatchingNotes: 'لا توجد ملاحظات مطابقة', + noMatchingNotesDescription: 'لم تطابق أي ملاحظات "{{query}}".', + thisDeckIsEmpty: 'هذه المجموعة فارغة', + }, + errors: { + couldNotCreateDeck: 'تعذر إنشاء المجموعة', + couldNotDeleteDeck: 'تعذر حذف المجموعة', + couldNotDeleteNote: 'تعذر حذف الملاحظة', + couldNotLoadFolderPath: 'تعذر تحميل مسار المجلد', + couldNotSaveDeck: 'تعذر حفظ المجموعة', + deckCouldNotLoad: 'تعذر تحميل المجموعة', + notesCouldNotLoad: 'تعذر تحميل الملاحظات', + notesMayBeOutOfDate: 'قد تكون الملاحظات قديمة', + }, + fields: { + descriptionLabel: 'وصف المجموعة', + descriptionPlaceholder: 'ما الذي ستساعدك هذه المجموعة على مراجعته؟', + namePlaceholder: 'اسم المجموعة', + untitledDeck: 'مجموعة بلا عنوان', + untitledDeckLower: 'مجموعة بلا عنوان', + }, + labels: { + createDeckTitle: 'إنشاء مجموعة', + deck: 'مجموعة', + deckNotesSearch: 'بحث ملاحظات المجموعة', + deckOverview: 'نظرة عامة على المجموعة', + decks: 'المجموعات', + due: 'مستحق', + dueToday: 'مستحق اليوم', + loadingDeck: 'جار تحميل المجموعة', + mastery: 'الإتقان', + notes: 'ملاحظات', + }, + sort: { + ariaLabel: 'فرز المجموعات', + dueToday: 'مستحق اليوم', + title: 'العنوان', + updated: 'تم التحديث', + }, + }, + errors: { + byType: { + conflict: 'تغيرت البيانات. حدّث وحاول مرة أخرى.', + forbidden: 'ليست لديك صلاحية لتنفيذ ذلك.', + notFound: 'تعذر العثور على هذا العنصر.', + offline: 'لا يمكن الوصول إلى الخدمة.', + timeout: 'استغرق ذلك وقتا طويلا. حاول مرة أخرى.', + unauthorized: 'سجل الدخول للمتابعة.', + unavailable: 'الخدمة غير متاحة مؤقتا.', + }, + fallback: { + unexpected: 'خطأ غير متوقع', + }, + }, + folders: { + actions: { + createFolder: 'إنشاء مجلد', + deleteFolder: 'حذف المجلد', + editFolder: 'تعديل المجلد', + }, + descriptions: { + editorDefault: 'مجلد للمجموعات ذات الصلة.', + }, + dialogs: { + deleteFolderDescription: 'سيتم نقل "{{name}}" إلى المهملات. يمكنك استعادته لاحقا.', + deleteFolderFallbackDescription: 'سيتم نقل هذا المجلد إلى المهملات. يمكنك استعادته لاحقا.', + deleteFolderFallbackTitle: 'حذف المجلد؟', + deleteFolderTitle: 'حذف "{{name}}"؟', + }, + empty: { + noMatchesInFolder: 'لا توجد نتائج في هذا المجلد', + noMatchesInFolderDescription: 'لم تطابق أي مجلدات أو مجموعات أو ملاحظات "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'تعذر إنشاء المجلد', + couldNotDeleteFolder: 'تعذر حذف المجلد', + couldNotLoadFolderPath: 'تعذر تحميل مسار المجلد', + couldNotSaveFolder: 'تعذر حفظ المجلد', + folderCouldNotLoad: 'تعذر تحميل المجلد', + }, + fields: { + descriptionLabel: 'وصف المجلد', + descriptionPlaceholder: 'ما الذي ينتمي إلى هذا المجلد؟', + namePlaceholder: 'اسم المجلد', + untitledFolder: 'مجلد بلا عنوان', + }, + labels: { + createFolderTitle: 'إنشاء مجلد', + folder: 'مجلد', + folders: 'المجلدات', + loadingFolder: 'جار تحميل المجلد', + name: 'الاسم', + updated: 'تم التحديث', + }, + sort: { + ariaLabel: 'فرز المجلدات', + name: 'الاسم', + updated: 'تم التحديث', + }, + }, + menu: { + conflicts: { + description: 'إذا اختلفت البيانات المحلية والمزامنة، فسيظهر العنصر هنا.', + heading: 'حالة المزامنة', + title: 'التعارضات', + noConflicts: 'لم يتم العثور على تعارضات', + }, + labels: { + menu: 'القائمة', + }, + sections: { + settings: { + description: 'خصص بيئتك وتفضيلاتك', + title: 'الإعدادات', + }, + trash: { + description: 'استعد العناصر المحذوفة أو احذفها نهائيا', + title: 'المهملات', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'إغلاق المحرر', + openActions: 'فتح الإجراءات', + openWorkspaces: 'فتح مساحات العمل', + }, + items: { + home: 'الرئيسية', + menu: 'القائمة', + primary: 'أساسي', + settings: 'الإعدادات', + spaces: 'المساحات', + trash: 'المهملات', + workspaces: 'مساحات العمل', + }, + }, + notes: { + actions: { + addCloze: 'إضافة إخفاء', + deleteNote: 'حذف الملاحظة', + editNote: 'تعديل الملاحظة', + hideDerivedCardsNote: 'إخفاء ملاحظة البطاقات المشتقة', + openNote: 'فتح {{title}}', + saveNote: 'حفظ الملاحظة', + showDerivedCardsNote: 'إظهار ملاحظة البطاقات المشتقة', + }, + descriptions: { + clozeFormat: 'يصبح كل جزء مخفي بطاقة مراجعة عند الحفظ.', + clozeFormatPrefix: 'غلّف النص المخفي بـ', + derivedCardsHelper: 'الملاحظات هي مصدر الحقيقة للبطاقات المشتقة.', + }, + dialogs: { + deleteNoteDescription: 'سيتم نقل "{{title}}" إلى المهملات. يمكنك استعادتها لاحقا.', + deleteNoteFallbackDescription: 'سيتم نقل هذه الملاحظة إلى المهملات. يمكنك استعادتها لاحقا.', + deleteNoteFallbackTitle: 'حذف الملاحظة؟', + deleteNoteTitle: 'حذف "{{title}}"؟', + }, + errors: { + couldNotCreateNote: 'تعذر إنشاء الملاحظة', + couldNotDeleteNote: 'تعذر حذف الملاحظة', + couldNotSaveNote: 'تعذر حفظ الملاحظة', + noteCouldNotLoad: 'تعذر تحميل الملاحظة', + }, + fields: { + back: 'الوجه الخلفي', + backPlaceholder: 'أدخل الوجه الخلفي', + bodyPlaceholder: 'اكتب نص الملاحظة مع الإخفاءات…', + front: 'الوجه الأمامي', + frontPlaceholder: 'أدخل الوجه الأمامي', + noteBody: 'نص الملاحظة', + title: 'العنوان', + titlePlaceholder: 'أضف عنوان ملاحظة', + untitledCloze: 'إخفاء بلا عنوان', + untitledNote: 'ملاحظة بلا عنوان', + }, + labels: { + backUppercase: 'الوجه الخلفي', + basic: 'أساسي', + basicLower: 'أساسي', + basicUppercase: 'أساسي', + cloze: 'إخفاء', + clozeLower: 'إخفاء', + clozeFormat: 'تنسيق الإخفاء', + clozeUppercase: 'إخفاء', + deck: 'مجموعة', + derivedCards: 'البطاقات المشتقة', + due: 'مستحق', + frontUppercase: 'الوجه الأمامي', + inProgress: 'قيد التنفيذ', + inProgressUppercase: 'قيد التنفيذ', + loadingNote: 'جار تحميل الملاحظة', + loadingNoteEditor: 'جار تحميل محرر الملاحظات', + markdownFormatting: 'تنسيق Markdown', + mastered: 'تم إتقانه', + masteredUppercase: 'تم إتقانه', + newNote: 'ملاحظة جديدة', + noteBody: 'نص الملاحظة', + noteContent: 'محتوى الملاحظة', + noteDetails: 'تفاصيل الملاحظة', + noteMetadata: 'بيانات الملاحظة', + noteType: 'نوع الملاحظة', + notes: 'ملاحظات', + reviewed: 'تمت المراجعة', + studyProgress: 'تقدم الدراسة', + studyProgressUppercase: 'تقدم الدراسة', + titleUppercase: 'العنوان', + updated: 'تم التحديث', + }, + sort: { + ariaLabel: 'فرز الملاحظات', + title: 'العنوان', + updated: 'تم التحديث', + }, + toolbar: { + bold: 'غامق', + italic: 'مائل', + link: 'رابط', + list: 'قائمة', + }, + }, + review: { + actions: { + again: 'مرة أخرى', + backToDeck: 'العودة إلى المجموعة', + continueReview: 'متابعة المراجعة', + easy: 'سهل', + good: 'جيد', + hard: 'صعب', + newNote: 'ملاحظة جديدة', + showAnswer: 'إظهار الإجابة', + }, + errors: { + couldNotGradeCard: 'تعذر تقييم البطاقة', + reviewCouldNotLoad: 'تعذر تحميل المراجعة', + reviewCouldNotStart: 'تعذر بدء المراجعة', + summaryCouldNotLoad: 'تعذر تحميل ملخص المراجعة', + summaryNotAvailable: 'ملخص المراجعة غير متاح', + summaryNotComplete: 'هذه المراجعة لم تكتمل بعد.', + }, + labels: { + cardsReviewed: 'البطاقات التي تمت مراجعتها', + deck: 'مجموعة', + duration: 'المدة', + loadingReview: 'جار تحميل المراجعة', + loadingSummary: 'جار تحميل الملخص', + progress: 'تقدم المراجعة', + review: 'مراجعة', + reviewComplete: 'اكتملت المراجعة', + reviewed_zero: 'تمت مراجعة {{count}}', + reviewed_one: 'تمت مراجعة {{count}}', + reviewed_two: 'تمت مراجعة {{count}}', + reviewed_few: 'تمت مراجعة {{count}}', + reviewed_many: 'تمت مراجعة {{count}}', + reviewed_other: 'تمت مراجعة {{count}}', + }, + summary: { + durationHoursMinutes: '{{hours}}س {{minutes}}د', + durationMinutes: '{{minutes}}د', + durationSeconds: '{{seconds}}ث', + saved: 'تم حفظ تقدمك في هذه المجموعة.', + }, + unavailable: { + description: 'أضف ملاحظة حتى تتمكن هذه المجموعة من دخول قائمة المراجعة.', + title: 'لا توجد بطاقات للمراجعة', + }, + }, + search: { + actions: { + clearSearch: 'مسح البحث', + }, + empty: { + noMatchesInWorkspace: 'لا توجد نتائج في مساحة العمل هذه', + noMatchesInWorkspaceDescription: 'لم تطابق أي مجلدات أو مجموعات أو ملاحظات "{{query}}".', + }, + errors: { + couldNotComplete: 'تعذر إكمال البحث', + }, + labels: { + results: 'نتائج البحث', + resultsFor: 'نتائج "{{query}}"', + searchingContent: 'جار البحث في المحتوى', + }, + resultGroups: { + deck: 'المجموعات', + folder: 'المجلدات', + note: 'الملاحظات', + }, + resultKinds: { + deck: 'مجموعة', + folder: 'مجلد', + note: 'ملاحظة', + }, + }, + settings: { + actions: { + resetAll: 'إعادة ضبط كل الإعدادات', + resetSettings: 'إعادة ضبط الإعدادات', + resetToDefaults: 'إعادة الضبط إلى الافتراضي', + }, + dialogs: { + fsrsErrorInvalidJson: 'ألصق JSON صالحا يحتوي على 21 قيمة رقمية.', + fsrsErrorInvalidParams_zero: 'أدخل مصفوفة JSON تحتوي على {{count}} رقم محدود بالضبط.', + fsrsErrorInvalidParams_one: 'أدخل مصفوفة JSON تحتوي على {{count}} رقم محدود بالضبط.', + fsrsErrorInvalidParams_two: 'أدخل مصفوفة JSON تحتوي على {{count}} رقمين محدودين بالضبط.', + fsrsErrorInvalidParams_few: 'أدخل مصفوفة JSON تحتوي على {{count}} أرقام محدودة بالضبط.', + fsrsErrorInvalidParams_many: 'أدخل مصفوفة JSON تحتوي على {{count}} رقما محدودا بالضبط.', + fsrsErrorInvalidParams_other: 'أدخل مصفوفة JSON تحتوي على {{count}} رقم محدود بالضبط.', + fsrsHelper: 'هذا تجاوز متقدم. يجب أن تبقى القيم بالترتيب.', + fsrsJsonLabel: 'JSON لمعاملات FSRS', + fsrsTitle: 'تعديل معاملات FSRS', + fsrsDescription: 'ألصق مصفوفة JSON تحتوي على 21 رقما لتجاوز أوزان المجدول.', + resetDescription: 'سيؤدي ذلك إلى استعادة المنطقة الزمنية وحدود الدراسة وإعدادات FSRS.', + resetDescriptionWithLanguage: 'سيؤدي ذلك إلى استعادة اللغة والمنطقة الزمنية وحدود الدراسة وإعدادات FSRS.', + resetTitle: 'إعادة ضبط كل الإعدادات؟', + timezoneDescription: 'ابحث عن مدينة أو معرف منطقة زمنية.', + timezoneSearchLabel: 'بحث المناطق الزمنية', + timezoneSearchPlaceholder: 'ابحث عن المناطق الزمنية…', + timezoneTitle: 'اختيار المنطقة الزمنية', + }, + errors: { + couldNotResetSettings: 'تعذر إعادة ضبط الإعدادات', + couldNotSaveSettings: 'تعذر حفظ الإعدادات', + settingsCouldNotLoad: 'تعذر تحميل الإعدادات', + settingsUnavailable: 'الإعدادات غير متاحة.', + }, + labels: { + appearance: 'المظهر', + automatic: 'تلقائي', + fsrsParameters: 'معاملات FSRS', + general: 'عام', + language: 'اللغة', + loadingSettings: 'جار تحميل الإعدادات', + masteryHorizon: 'أفق الإتقان', + newCardOrder: 'ترتيب البطاقات الجديدة', + newCardsPerDay: 'البطاقات الجديدة يوميا', + reviewCardsPerDay: 'بطاقات المراجعة يوميا', + savingSettings: 'جار حفظ الإعدادات', + schedule: 'الجدول', + searchNoTimezones: 'لا توجد مناطق زمنية مطابقة.', + settings: 'الإعدادات', + settingsReset: 'إعادة ضبط الإعدادات', + study: 'الدراسة', + targetRecallProbability: 'احتمال التذكر المستهدف', + theme: 'السمة', + timezone: 'المنطقة الزمنية', + }, + options: { + languageEnUs: 'الإنجليزية (الولايات المتحدة)', + newCardsAfterReviews: 'بعد المراجعات', + newCardsBeforeReviews: 'قبل المراجعات', + newCardsMixed: 'مختلط', + themeDark: 'داكن', + themeLight: 'فاتح', + themeSystem: 'النظام', + timezoneSystem: 'استخدام منطقة النظام الزمنية', + }, + rows: { + fsrsDescription: 'أوزان النموذج المتقدمة', + languageDescription: 'لغة الواجهة', + masteryHorizonDescription: 'عدد الأيام التي يجب أن تبقى فيها البطاقة قابلة للتذكر عند الاحتمال المستهدف أو أعلى حتى تعد متقنة', + newCardOrderDescription: 'ترتيب البطاقات الجديدة بالنسبة إلى المراجعات', + newCardsPerDayDescription: 'الحد الأقصى للبطاقات الجديدة يوميا', + reviewCardsPerDayDescription: 'الحد الأقصى لبطاقات المراجعة يوميا', + targetRecallProbabilityDescription: 'الحد الأدنى لاحتمال التذكر في المراجعة المجدولة التالية', + timezoneDescription: 'استخدم المنطقة الزمنية التلقائية أو اختر مدينة.', + }, + }, + trash: { + actions: { + deletePermanently: 'حذف نهائي', + empty: 'إفراغ', + emptyTrash: 'إفراغ المهملات', + restore: 'استعادة', + restoringItem: 'جار استعادة {{title}}', + }, + dialogs: { + deleteItemDescription: 'سيؤدي ذلك إلى حذف "{{title}}" نهائيا. لا يمكن التراجع عن ذلك.', + deleteItemFallbackDescription: 'سيؤدي ذلك إلى حذف هذا العنصر نهائيا. لا يمكن التراجع عن ذلك.', + deleteItemFallbackTitle: 'حذف العنصر؟', + deleteItemTitle: 'حذف "{{title}}"؟', + emptyTrashDescription: 'سيؤدي ذلك إلى حذف كل شيء في المهملات نهائيا. لا يمكن التراجع عن ذلك.', + emptyTrashTitle: 'إفراغ المهملات؟', + }, + empty: { + description: 'ستظهر العناصر التي تحذفها هنا قبل الإزالة النهائية.', + title: 'المهملات فارغة', + }, + errors: { + couldNotDeleteItem: 'تعذر حذف العنصر', + couldNotEmptyTrash: 'تعذر إفراغ المهملات', + couldNotRestoreItem: 'تعذر استعادة العنصر', + trashCouldNotLoad: 'تعذر تحميل المهملات', + trashMayBeOutOfDate: 'قد تكون المهملات قديمة', + }, + labels: { + deletedAge: 'حذف {{value}}', + itemCount_zero: '{{count}} عنصر', + itemCount_one: '{{count}} عنصر', + itemCount_two: '{{count}} عنصران', + itemCount_few: '{{count}} عناصر', + itemCount_many: '{{count}} عنصرا', + itemCount_other: '{{count}} عنصر', + lastEmptied: 'آخر إفراغ {{value}}', + loadingTrash: 'جار تحميل المهملات', + originalLocation: 'الموقع الأصلي: {{location}}', + title: 'المهملات', + trashActions: 'إجراءات مهملات {{title}}', + }, + kinds: { + deck: 'مجموعة', + folder: 'مجلد', + note: 'ملاحظة', + workspace: 'مساحة عمل', + }, + }, + workspaces: { + actions: { + createWorkspace: 'إنشاء مساحة عمل', + deleteWorkspace: 'حذف مساحة العمل', + editWorkspace: 'تعديل مساحة العمل', + newWorkspace: 'مساحة عمل جديدة', + openWorkspace: 'فتح {{title}}', + openingWorkspace: 'جار فتح {{title}}', + }, + descriptions: { + editorDefault: 'سياق دراسة.', + editorVisual: 'اختر مرجعا بصريا لمساحة العمل هذه.', + emptyList: 'افصل المجموعات والملاحظات وقوائم المراجعة حسب سياق الدراسة.', + }, + dialogs: { + deleteWorkspaceDescription: 'سيتم نقل "{{title}}" إلى المهملات. يمكنك استعادتها لاحقا.', + deleteWorkspaceFallbackDescription: 'سيتم نقل مساحة العمل هذه إلى المهملات. يمكنك استعادتها لاحقا.', + deleteWorkspaceFallbackTitle: 'حذف مساحة العمل؟', + deleteWorkspaceTitle: 'حذف "{{title}}"؟', + }, + empty: { + startWithWorkspace: 'ابدأ بمساحة عمل', + }, + errors: { + couldNotCreateWorkspace: 'تعذر إنشاء مساحة العمل', + couldNotDeleteWorkspace: 'تعذر حذف مساحة العمل', + couldNotOpenWorkspace: 'تعذر فتح مساحة العمل', + couldNotSaveWorkspace: 'تعذر حفظ مساحة العمل', + workspaceCouldNotLoad: 'تعذر تحميل مساحة العمل', + workspacesCouldNotLoad: 'تعذر تحميل مساحات العمل', + }, + fields: { + descriptionLabel: 'وصف مساحة العمل', + descriptionPlaceholder: 'ما الذي ينتمي إلى مساحة العمل هذه؟', + namePlaceholder: 'اسم مساحة العمل', + untitledWorkspace: 'مساحة عمل بلا عنوان', + }, + labels: { + createWorkspaceTitle: 'إنشاء مساحة عمل', + loadingWorkspaces: 'جار تحميل مساحات العمل', + workspace: 'مساحة عمل', + workspaces: 'مساحات العمل', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/bg.ts b/ui/src/core/i18n/resources/bg.ts new file mode 100644 index 0000000..3fc4855 --- /dev/null +++ b/ui/src/core/i18n/resources/bg.ts @@ -0,0 +1,623 @@ +export const bg = { + bootstrap: { + error: { + fallbackMessage: 'Опитайте отново. Ако това продължи, отворете Clear отново.', + title: 'Не можа да се стартира', + }, + loadingTitle: 'Подготвяме вашето пространство за учене', + }, + common: { + actions: { + back: 'Назад', + cancel: 'Отказ', + checkAgain: 'Провери отново', + close: 'Затвори', + create: 'Създай', + delete: 'Изтрий', + dismissError: 'Скрий грешката', + dismissStatus: 'Скрий състоянието', + edit: 'Редактирай', + itemActions: 'Действия за {{title}}', + reset: 'Нулирай', + review: 'Преговор', + save: 'Запази', + saveChanges: 'Запази промените', + tryAgain: 'Опитай отново', + }, + labels: { + active: 'Активно', + clear: 'Clear', + custom: 'Персонализирано', + default: 'По подразбиране', + loadingEditor: 'Зареждане на редактора', + name: 'Име', + completedTask: 'Завършена задача', + description: 'Описание', + incompleteTask: 'Незавършена задача', + percentageInput: 'Процент за {{label}}', + visual: 'Визуално', + }, + status: { + actionFailed: 'Действието не бе успешно', + actionInProgress: 'Действието се изпълнява', + }, + sort: { + ascending: 'Възх.', + column: 'Колона', + descending: 'Низх.', + direction: 'Посока', + sort: 'Сортиране', + }, + search: { + label: 'Търсене', + }, + visualPicker: { + allLucideIcons: 'Всички Lucide икони', + browseIconsFor: 'Прегледайте или потърсете икони за {{label}}.', + chooseIcon: 'Избери икона', + iconPicker: 'Избор на икона за {{label}}', + iconSearch: 'Търсене на икони за {{label}}', + iconsCouldNotLoad: 'Иконите не можаха да се заредят.', + loadingIcons: 'Зареждане на икони', + loadingMoreIcons: 'Зареждане на още икони', + moreIcons: 'Още икони', + noIconsMatch: 'Няма икони, съвпадащи с "{{query}}".', + searchIconsPlaceholder: 'Търсене на икони…', + selectedIcon: 'Избрано {{label}}', + }, + }, + dashboard: { + actions: { + create: 'Създай', + newDeck: 'Нова колода', + newFolder: 'Нова папка', + }, + descriptions: { + defaultWorkspace: 'Дръжте колодите, папките и бележките заедно.', + emptyWorkspace: 'Създайте колода, след това добавете бележки, за да изградите опашка за преговор.', + emptyFolder: 'Създайте колода, след това добавете бележки, за да изградите опашка за преговор.', + searchPlaceholder: 'Търсене на папки, колоди и бележки…', + }, + empty: { + createFirstDeck: 'Създайте първата си колода', + }, + errors: { + couldNotDeleteDeck: 'Колодата не можа да се изтрие', + couldNotDeleteFolder: 'Папката не можа да се изтрие', + couldNotDeleteWorkspace: 'Работното пространство не можа да се изтрие', + dashboardCouldNotOpen: 'Таблото не можа да се отвори', + decksCouldNotLoad: 'Колодите не можаха да се заредят', + decksMayBeOutOfDate: 'Колодите може да са остарели', + foldersCouldNotLoad: 'Папките не можаха да се заредят', + foldersMayBeOutOfDate: 'Папките може да са остарели', + workspaceCouldNotLoad: 'Работното пространство не можа да се зареди', + }, + labels: { + dashboard: 'Табло', + loadingDashboard: 'Зареждане на таблото', + newItem: 'Нов елемент', + }, + }, + dates: { + absolute: { + unavailable: 'Датата не е налична', + }, + age: { + dayAgo_one: 'преди {{count}} ден', + dayAgo_other: 'преди {{count}} дни', + hourAgo_one: 'преди {{count}} час', + hourAgo_other: 'преди {{count}} часа', + justNow: 'току-що', + minuteAgo_one: 'преди {{count}} минута', + minuteAgo_other: 'преди {{count}} минути', + unavailable: 'датата не е налична', + weekAgo_one: 'преди {{count}} седмица', + weekAgo_other: 'преди {{count}} седмици', + }, + labels: { + deleted: 'Изтрито {{value}}', + due: 'Срок: {{value}}', + reviewed: 'Преговорено: {{value}}', + updated: 'Обновено {{value}}', + updatedUppercase: 'ОБНОВЕНО {{value}}', + }, + relative: { + dayAgo_one: 'преди {{count}} ден', + dayAgo_other: 'преди {{count}} дни', + inAMoment: 'След малко', + inDay_one: 'След {{count}} ден', + inDay_other: 'След {{count}} дни', + inMonth_one: 'След {{count}} месец', + inMonth_other: 'След {{count}} месеца', + inWeek_one: 'След {{count}} седмица', + inWeek_other: 'След {{count}} седмици', + justNow: 'Току-що', + monthAgo_one: 'преди {{count}} месец', + monthAgo_other: 'преди {{count}} месеца', + secondsAgoShort: 'преди {{count}} сек', + minutesAgoShort: 'преди {{count}} мин', + hoursAgoShort: 'преди {{count}} ч', + today: 'Днес', + tomorrow: 'Утре', + weekAgo_one: 'преди {{count}} седмица', + weekAgo_other: 'преди {{count}} седмици', + yesterday: 'Вчера', + }, + }, + decks: { + actions: { + actionMenu: 'Действия за {{title}}', + createDeck: 'Създай колода', + createNote: 'Създай бележка', + deleteDeck: 'Изтрий колода', + editDeck: 'Редактирай колода', + newNote: 'Нова бележка', + openDeck: 'Отвори колода {{title}}', + saveDeck: 'Колодата не можа да се запази', + studyNow: 'Учи сега', + }, + descriptions: { + emptyDeck: 'Добавете бележка, за да има тази колода материал за преговор.', + editorDefault: 'Фокусирана колода за учене.', + editorVisual: 'Изберете символ за корицата на тази колода.', + notesSearchPlaceholder: 'Търсене на бележки…', + }, + dialogs: { + deleteDeckDescription: 'Това премества "{{title}}" в Кошчето. Можете да го възстановите по-късно.', + deleteDeckFallbackDescription: 'Това премества тази колода в Кошчето. Можете да я възстановите по-късно.', + deleteDeckFallbackTitle: 'Да се изтрие ли колодата?', + deleteDeckTitle: 'Да се изтрие ли "{{title}}"?', + deleteNoteDescription: 'Това премества "{{title}}" в Кошчето. Можете да я възстановите по-късно.', + deleteNoteFallbackTitle: 'Да се изтрие ли бележката?', + deleteNoteTitle: 'Да се изтрие ли "{{title}}"?', + }, + empty: { + noMatchingNotes: 'Няма съвпадащи бележки', + noMatchingNotesDescription: 'Няма бележки, съвпадащи с "{{query}}".', + thisDeckIsEmpty: 'Тази колода е празна', + }, + errors: { + couldNotCreateDeck: 'Колодата не можа да се създаде', + couldNotDeleteDeck: 'Колодата не можа да се изтрие', + couldNotDeleteNote: 'Бележката не можа да се изтрие', + couldNotLoadFolderPath: 'Пътят до папката не можа да се зареди', + couldNotSaveDeck: 'Колодата не можа да се запази', + deckCouldNotLoad: 'Колодата не можа да се зареди', + notesCouldNotLoad: 'Бележките не можаха да се заредят', + notesMayBeOutOfDate: 'Бележките може да са остарели', + }, + fields: { + descriptionLabel: 'Описание на колодата', + descriptionPlaceholder: 'Какво ще ви помогне да преговаряте тази колода?', + namePlaceholder: 'Име на колодата', + untitledDeck: 'Колода без заглавие', + untitledDeckLower: 'колода без заглавие', + }, + labels: { + createDeckTitle: 'Създай колода', + deck: 'Колода', + deckNotesSearch: 'Търсене в бележките на колодата', + deckOverview: 'Преглед на колодата', + decks: 'Колоди', + due: 'Срок', + dueToday: 'Срок днес', + loadingDeck: 'Зареждане на колодата', + mastery: 'Усвояване', + notes: 'Бележки', + }, + sort: { + ariaLabel: 'Сортиране на колоди', + dueToday: 'Срок днес', + title: 'Заглавие', + updated: 'Обновено', + }, + }, + errors: { + byType: { + conflict: 'Данните се промениха. Обновете и опитайте отново.', + forbidden: 'Нямате разрешение да направите това.', + notFound: 'Не успяхме да намерим този елемент.', + offline: 'Услугата е недостъпна.', + timeout: 'Това отне твърде дълго. Опитайте отново.', + unauthorized: 'Влезте, за да продължите.', + unavailable: 'Услугата временно не е налична.', + }, + fallback: { + unexpected: 'Неочаквана грешка', + }, + }, + folders: { + actions: { + createFolder: 'Създай папка', + deleteFolder: 'Изтрий папка', + editFolder: 'Редактирай папка', + }, + descriptions: { + editorDefault: 'Папка за свързани колоди.', + }, + dialogs: { + deleteFolderDescription: 'Това премества "{{name}}" в Кошчето. Можете да я възстановите по-късно.', + deleteFolderFallbackDescription: 'Това премества тази папка в Кошчето. Можете да я възстановите по-късно.', + deleteFolderFallbackTitle: 'Да се изтрие ли папката?', + deleteFolderTitle: 'Да се изтрие ли "{{name}}"?', + }, + empty: { + noMatchesInFolder: 'Няма съвпадения в тази папка', + noMatchesInFolderDescription: 'Няма папки, колоди или бележки, съвпадащи с "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'Папката не можа да се създаде', + couldNotDeleteFolder: 'Папката не можа да се изтрие', + couldNotLoadFolderPath: 'Пътят до папката не можа да се зареди', + couldNotSaveFolder: 'Папката не можа да се запази', + folderCouldNotLoad: 'Папката не можа да се зареди', + }, + fields: { + descriptionLabel: 'Описание на папката', + descriptionPlaceholder: 'Какво принадлежи в тази папка?', + namePlaceholder: 'Име на папката', + untitledFolder: 'Папка без заглавие', + }, + labels: { + createFolderTitle: 'Създай папка', + folder: 'Папка', + folders: 'Папки', + loadingFolder: 'Зареждане на папката', + name: 'Име', + updated: 'Обновено', + }, + sort: { + ariaLabel: 'Сортиране на папки', + name: 'Име', + updated: 'Обновено', + }, + }, + menu: { + conflicts: { + description: 'Ако локалните и синхронизираните данни някога се разминават, елементът ще се появи тук.', + heading: 'Състояние на синхронизацията', + title: 'Конфликти', + noConflicts: 'Няма намерени конфликти', + }, + labels: { + menu: 'Меню', + }, + sections: { + settings: { + description: 'Персонализирайте средата и предпочитанията си', + title: 'Настройки', + }, + trash: { + description: 'Възстановяване или окончателно изтриване на премахнати елементи', + title: 'Кошче', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Затвори редактора', + openActions: 'Отвори действията', + openWorkspaces: 'Отвори работните пространства', + }, + items: { + home: 'Начало', + menu: 'Меню', + primary: 'Основно', + settings: 'Настройки', + spaces: 'Пространства', + trash: 'Кошче', + workspaces: 'Работни пространства', + }, + }, + notes: { + actions: { + addCloze: 'Добави cloze', + deleteNote: 'Изтрий бележка', + editNote: 'Редактирай бележка', + hideDerivedCardsNote: 'Скрий бележката за производни карти', + openNote: 'Отвори {{title}}', + saveNote: 'Запази бележка', + showDerivedCardsNote: 'Покажи бележката за производни карти', + }, + descriptions: { + clozeFormat: 'Всяка скрита част става карта за преговор, когато запазите.', + clozeFormatPrefix: 'Оградете скрития текст с', + derivedCardsHelper: 'Бележките са източникът на истина за производните карти.', + }, + dialogs: { + deleteNoteDescription: 'Това премества "{{title}}" в Кошчето. Можете да я възстановите по-късно.', + deleteNoteFallbackDescription: 'Това премества тази бележка в Кошчето. Можете да я възстановите по-късно.', + deleteNoteFallbackTitle: 'Да се изтрие ли бележката?', + deleteNoteTitle: 'Да се изтрие ли "{{title}}"?', + }, + errors: { + couldNotCreateNote: 'Бележката не можа да се създаде', + couldNotDeleteNote: 'Бележката не можа да се изтрие', + couldNotSaveNote: 'Бележката не можа да се запази', + noteCouldNotLoad: 'Бележката не можа да се зареди', + }, + fields: { + back: 'Гръб', + backPlaceholder: 'Въведете гръб', + bodyPlaceholder: 'Напишете съдържанието на бележката с cloze изтривания…', + front: 'Лице', + frontPlaceholder: 'Въведете лице', + noteBody: 'Съдържание на бележката', + title: 'Заглавие', + titlePlaceholder: 'Добавете заглавие на бележката', + untitledCloze: 'Cloze без заглавие', + untitledNote: 'Бележка без заглавие', + }, + labels: { + backUppercase: 'ГРЪБ', + basic: 'Основна', + basicLower: 'основна', + basicUppercase: 'ОСНОВНА', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Cloze формат', + clozeUppercase: 'CLOZE', + deck: 'Колода', + derivedCards: 'ПРОИЗВОДНИ КАРТИ', + due: 'Срок', + frontUppercase: 'ЛИЦЕ', + inProgress: 'В ход', + inProgressUppercase: 'В ХОД', + loadingNote: 'Зареждане на бележката', + loadingNoteEditor: 'Зареждане на редактора на бележки', + markdownFormatting: 'Markdown форматиране', + mastered: 'Усвоено', + masteredUppercase: 'УСВОЕНО', + newNote: 'Нова бележка', + noteBody: 'СЪДЪРЖАНИЕ НА БЕЛЕЖКАТА', + noteContent: 'Съдържание на бележката', + noteDetails: 'Детайли за бележката', + noteMetadata: 'Метаданни на бележката', + noteType: 'Тип бележка', + notes: 'Бележки', + reviewed: 'Преговорено', + studyProgress: 'Напредък в ученето', + studyProgressUppercase: 'НАПРЕДЪК В УЧЕНЕТО', + titleUppercase: 'ЗАГЛАВИЕ', + updated: 'Обновено', + }, + sort: { + ariaLabel: 'Сортиране на бележки', + title: 'Заглавие', + updated: 'Обновено', + }, + toolbar: { + bold: 'Удебелен', + italic: 'Курсив', + link: 'Връзка', + list: 'Списък', + }, + }, + review: { + actions: { + again: 'Отново', + backToDeck: 'Назад към колодата', + continueReview: 'Продължи преговора', + easy: 'Лесно', + good: 'Добре', + hard: 'Трудно', + newNote: 'Нова бележка', + showAnswer: 'Покажи отговора', + }, + errors: { + couldNotGradeCard: 'Картата не можа да се оцени', + reviewCouldNotLoad: 'Преговорът не можа да се зареди', + reviewCouldNotStart: 'Преговорът не можа да започне', + summaryCouldNotLoad: 'Обобщението на преговора не можа да се зареди', + summaryNotAvailable: 'Обобщението на преговора не е налично', + summaryNotComplete: 'Този преговор още не е завършен.', + }, + labels: { + cardsReviewed: 'Преговорени карти', + deck: 'Колода', + duration: 'Продължителност', + loadingReview: 'Зареждане на преговора', + loadingSummary: 'Зареждане на обобщението', + progress: 'Напредък на преговора', + review: 'Преговор', + reviewComplete: 'Преговорът е завършен', + reviewed_one: 'Преговорена {{count}}', + reviewed_other: 'Преговорени {{count}}', + }, + summary: { + durationHoursMinutes: '{{hours}} ч {{minutes}} мин', + durationMinutes: '{{minutes}} мин', + durationSeconds: '{{seconds}} сек', + saved: 'Напредъкът ви беше запазен в тази колода.', + }, + unavailable: { + description: 'Добавете бележка, за да може тази колода да влезе в опашката за преговор.', + title: 'Няма карти за преговор', + }, + }, + search: { + actions: { + clearSearch: 'Изчисти търсенето', + }, + empty: { + noMatchesInWorkspace: 'Няма съвпадения в това работно пространство', + noMatchesInWorkspaceDescription: 'Няма папки, колоди или бележки, съвпадащи с "{{query}}".', + }, + errors: { + couldNotComplete: 'Търсенето не можа да се завърши', + }, + labels: { + results: 'Резултати от търсенето', + resultsFor: 'Резултати за "{{query}}"', + searchingContent: 'Търсене в съдържанието', + }, + resultGroups: { + deck: 'Колоди', + folder: 'Папки', + note: 'Бележки', + }, + resultKinds: { + deck: 'колода', + folder: 'папка', + note: 'бележка', + }, + }, + settings: { + actions: { + resetAll: 'Нулирай всички настройки', + resetSettings: 'Нулирай настройките', + resetToDefaults: 'Върни по подразбиране', + }, + dialogs: { + fsrsErrorInvalidJson: 'Поставете валиден JSON с 21 числови стойности.', + fsrsErrorInvalidParams_one: 'Въведете JSON масив с точно {{count}} крайно число.', + fsrsErrorInvalidParams_other: 'Въведете JSON масив с точно {{count}} крайни числа.', + fsrsHelper: 'Това е експертна промяна. Стойностите трябва да останат в ред.', + fsrsJsonLabel: 'JSON на FSRS параметрите', + fsrsTitle: 'Редактиране на FSRS параметри', + fsrsDescription: 'Поставете JSON масив с 21 числа, за да замените теглата на планировчика.', + resetDescription: 'Това възстановява часовата зона, учебните лимити и FSRS настройките.', + resetDescriptionWithLanguage: 'Това възстановява езика, часовата зона, учебните лимити и FSRS настройките.', + resetTitle: 'Да се нулират ли всички настройки?', + timezoneDescription: 'Потърсете град или идентификатор на часова зона.', + timezoneSearchLabel: 'Търсене на часови зони', + timezoneSearchPlaceholder: 'Търсене на часови зони…', + timezoneTitle: 'Избор на часова зона', + }, + errors: { + couldNotResetSettings: 'Настройките не можаха да се нулират', + couldNotSaveSettings: 'Настройките не можаха да се запазят', + settingsCouldNotLoad: 'Настройките не можаха да се заредят', + settingsUnavailable: 'Настройките не са налични.', + }, + labels: { + appearance: 'Външен вид', + automatic: 'Автоматично', + fsrsParameters: 'FSRS параметри', + general: 'Общи', + language: 'Език', + loadingSettings: 'Зареждане на настройките', + masteryHorizon: 'Хоризонт на усвояване', + newCardOrder: 'Ред на новите карти', + newCardsPerDay: 'Нови карти на ден', + reviewCardsPerDay: 'Карти за преговор на ден', + savingSettings: 'Запазване на настройките', + schedule: 'График', + searchNoTimezones: 'Няма съвпадащи часови зони.', + settings: 'Настройки', + settingsReset: 'Настройките са нулирани', + study: 'Учене', + targetRecallProbability: 'Целева вероятност за припомняне', + theme: 'Тема', + timezone: 'Часова зона', + }, + options: { + languageEnUs: 'Английски (САЩ)', + newCardsAfterReviews: 'След преговорите', + newCardsBeforeReviews: 'Преди преговорите', + newCardsMixed: 'Смесено', + themeDark: 'Тъмна', + themeLight: 'Светла', + themeSystem: 'Системна', + timezoneSystem: 'Използвай системната часова зона', + }, + rows: { + fsrsDescription: 'Тегла на експертния модел', + languageDescription: 'Език на интерфейса', + masteryHorizonDescription: 'Брой дни, през които картата трябва да остане припомняема на или над целевата вероятност, за да се счита за усвоена', + newCardOrderDescription: 'Ред на новите карти спрямо преговорите', + newCardsPerDayDescription: 'Максимален брой нови карти на ден', + reviewCardsPerDayDescription: 'Максимален брой карти за преговор на ден', + targetRecallProbabilityDescription: 'Минимална вероятност за припомняне при следващия планиран преговор', + timezoneDescription: 'Използвайте автоматична часова зона или изберете град.', + }, + }, + trash: { + actions: { + deletePermanently: 'Изтрий окончателно', + empty: 'Изпразни', + emptyTrash: 'Изпразни кошчето', + restore: 'Възстанови', + restoringItem: 'Възстановяване на {{title}}', + }, + dialogs: { + deleteItemDescription: 'Това изтрива "{{title}}" окончателно. Не може да бъде отменено.', + deleteItemFallbackDescription: 'Това изтрива този елемент окончателно. Не може да бъде отменено.', + deleteItemFallbackTitle: 'Да се изтрие ли елементът?', + deleteItemTitle: 'Да се изтрие ли "{{title}}"?', + emptyTrashDescription: 'Това изтрива окончателно всичко в Кошчето. Не може да бъде отменено.', + emptyTrashTitle: 'Да се изпразни ли кошчето?', + }, + empty: { + description: 'Елементите, които изтривате, ще се появяват тук преди окончателно премахване.', + title: 'Кошчето е празно', + }, + errors: { + couldNotDeleteItem: 'Елементът не можа да се изтрие', + couldNotEmptyTrash: 'Кошчето не можа да се изпразни', + couldNotRestoreItem: 'Елементът не можа да се възстанови', + trashCouldNotLoad: 'Кошчето не можа да се зареди', + trashMayBeOutOfDate: 'Кошчето може да е остаряло', + }, + labels: { + deletedAge: 'Изтрито {{value}}', + itemCount_one: '{{count}} елемент', + itemCount_other: '{{count}} елемента', + lastEmptied: 'Последно изпразнено {{value}}', + loadingTrash: 'Зареждане на кошчето', + originalLocation: 'Оригинално местоположение: {{location}}', + title: 'Кошче', + trashActions: 'Действия в кошчето за {{title}}', + }, + kinds: { + deck: 'Колода', + folder: 'Папка', + note: 'Бележка', + workspace: 'Работно пространство', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Създай работно пространство', + deleteWorkspace: 'Изтрий работно пространство', + editWorkspace: 'Редактирай работно пространство', + newWorkspace: 'Ново работно пространство', + openWorkspace: 'Отвори {{title}}', + openingWorkspace: 'Отваряне на {{title}}', + }, + descriptions: { + editorDefault: 'Контекст за учене.', + editorVisual: 'Изберете визуална опора за това работно пространство.', + emptyList: 'Разделете колоди, бележки и опашки за преговор по контекст на учене.', + }, + dialogs: { + deleteWorkspaceDescription: 'Това премества "{{title}}" в Кошчето. Можете да го възстановите по-късно.', + deleteWorkspaceFallbackDescription: 'Това премества това работно пространство в Кошчето. Можете да го възстановите по-късно.', + deleteWorkspaceFallbackTitle: 'Да се изтрие ли работното пространство?', + deleteWorkspaceTitle: 'Да се изтрие ли "{{title}}"?', + }, + empty: { + startWithWorkspace: 'Започнете с работно пространство', + }, + errors: { + couldNotCreateWorkspace: 'Работното пространство не можа да се създаде', + couldNotDeleteWorkspace: 'Работното пространство не можа да се изтрие', + couldNotOpenWorkspace: 'Работното пространство не можа да се отвори', + couldNotSaveWorkspace: 'Работното пространство не можа да се запази', + workspaceCouldNotLoad: 'Работното пространство не можа да се зареди', + workspacesCouldNotLoad: 'Работните пространства не можаха да се заредят', + }, + fields: { + descriptionLabel: 'Описание на работното пространство', + descriptionPlaceholder: 'Какво принадлежи в това работно пространство?', + namePlaceholder: 'Име на работното пространство', + untitledWorkspace: 'Работно пространство без заглавие', + }, + labels: { + createWorkspaceTitle: 'Създай работно пространство', + loadingWorkspaces: 'Зареждане на работните пространства', + workspace: 'Работно пространство', + workspaces: 'Работни пространства', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/bs.ts b/ui/src/core/i18n/resources/bs.ts new file mode 100644 index 0000000..25aeb28 --- /dev/null +++ b/ui/src/core/i18n/resources/bs.ts @@ -0,0 +1,636 @@ +export const bs = { + bootstrap: { + error: { + fallbackMessage: 'Pokušajte ponovo. Ako se ovo nastavi dešavati, ponovo otvorite Clear.', + title: 'Pokretanje nije uspjelo', + }, + loadingTitle: 'Priprema se vaš prostor za učenje', + }, + common: { + actions: { + back: 'Nazad', + cancel: 'Otkaži', + checkAgain: 'Provjeri ponovo', + close: 'Zatvori', + create: 'Kreiraj', + delete: 'Izbriši', + dismissError: 'Zatvori grešku', + dismissStatus: 'Zatvori status', + edit: 'Uredi', + itemActions: 'Radnje za {{title}}', + reset: 'Resetuj', + review: 'Ponavljanje', + save: 'Spremi', + saveChanges: 'Spremi promjene', + tryAgain: 'Pokušaj ponovo', + }, + labels: { + active: 'Aktivno', + clear: 'Clear', + custom: 'Prilagođeno', + default: 'Zadano', + loadingEditor: 'Učitavanje uređivača', + name: 'Naziv', + completedTask: 'Završen zadatak', + description: 'Opis', + incompleteTask: 'Nedovršen zadatak', + percentageInput: 'Procenat za {{label}}', + visual: 'Vizuelno', + }, + status: { + actionFailed: 'Radnja nije uspjela', + actionInProgress: 'Radnja je u toku', + }, + sort: { + ascending: 'Rast.', + column: 'Kolona', + descending: 'Opad.', + direction: 'Smjer', + sort: 'Sortiraj', + }, + search: { + label: 'Pretraga', + }, + visualPicker: { + allLucideIcons: 'Sve Lucide ikone', + browseIconsFor: 'Pregledajte ili pretražite ikone za {{label}}.', + chooseIcon: 'Odaberi ikonu', + iconPicker: 'Birač ikone za {{label}}', + iconSearch: 'Pretraga ikona za {{label}}', + iconsCouldNotLoad: 'Ikone se nisu mogle učitati.', + loadingIcons: 'Učitavanje ikona', + loadingMoreIcons: 'Učitavanje dodatnih ikona', + moreIcons: 'Još ikona', + noIconsMatch: 'Nijedna ikona ne odgovara "{{query}}".', + searchIconsPlaceholder: 'Pretraži ikone…', + selectedIcon: 'Odabrano {{label}}', + }, + }, + dashboard: { + actions: { + create: 'Kreiraj', + newDeck: 'Novi špil', + newFolder: 'Nova mapa', + }, + descriptions: { + defaultWorkspace: 'Držite špilove, mape i bilješke zajedno.', + emptyWorkspace: 'Kreirajte špil, zatim dodajte bilješke da izgradite red za ponavljanje.', + emptyFolder: 'Kreirajte špil, zatim dodajte bilješke da izgradite red za ponavljanje.', + searchPlaceholder: 'Pretraži mape, špilove i bilješke…', + }, + empty: { + createFirstDeck: 'Kreirajte svoj prvi špil', + }, + errors: { + couldNotDeleteDeck: 'Špil se nije mogao izbrisati', + couldNotDeleteFolder: 'Mapa se nije mogla izbrisati', + couldNotDeleteWorkspace: 'Radni prostor se nije mogao izbrisati', + dashboardCouldNotOpen: 'Kontrolna tabla se nije mogla otvoriti', + decksCouldNotLoad: 'Špilovi se nisu mogli učitati', + decksMayBeOutOfDate: 'Špilovi možda nisu ažurni', + foldersCouldNotLoad: 'Mape se nisu mogle učitati', + foldersMayBeOutOfDate: 'Mape možda nisu ažurne', + workspaceCouldNotLoad: 'Radni prostor se nije mogao učitati', + }, + labels: { + dashboard: 'Kontrolna tabla', + loadingDashboard: 'Učitavanje kontrolne table', + newItem: 'Nova stavka', + }, + }, + dates: { + absolute: { + unavailable: 'Datum nije dostupan', + }, + age: { + dayAgo_one: 'prije {{count}} dan', + dayAgo_few: 'prije {{count}} dana', + dayAgo_other: 'prije {{count}} dana', + hourAgo_one: 'prije {{count}} sat', + hourAgo_few: 'prije {{count}} sata', + hourAgo_other: 'prije {{count}} sati', + justNow: 'upravo sada', + minuteAgo_one: 'prije {{count}} minutu', + minuteAgo_few: 'prije {{count}} minute', + minuteAgo_other: 'prije {{count}} minuta', + unavailable: 'datum nije dostupan', + weekAgo_one: 'prije {{count}} sedmicu', + weekAgo_few: 'prije {{count}} sedmice', + weekAgo_other: 'prije {{count}} sedmica', + }, + labels: { + deleted: 'Izbrisano {{value}}', + due: 'Rok: {{value}}', + reviewed: 'Ponovljeno: {{value}}', + updated: 'Ažurirano {{value}}', + updatedUppercase: 'AŽURIRANO {{value}}', + }, + relative: { + dayAgo_one: 'prije {{count}} dan', + dayAgo_few: 'prije {{count}} dana', + dayAgo_other: 'prije {{count}} dana', + inAMoment: 'Za trenutak', + inDay_one: 'Za {{count}} dan', + inDay_few: 'Za {{count}} dana', + inDay_other: 'Za {{count}} dana', + inMonth_one: 'Za {{count}} mjesec', + inMonth_few: 'Za {{count}} mjeseca', + inMonth_other: 'Za {{count}} mjeseci', + inWeek_one: 'Za {{count}} sedmicu', + inWeek_few: 'Za {{count}} sedmice', + inWeek_other: 'Za {{count}} sedmica', + justNow: 'Upravo sada', + monthAgo_one: 'prije {{count}} mjesec', + monthAgo_few: 'prije {{count}} mjeseca', + monthAgo_other: 'prije {{count}} mjeseci', + secondsAgoShort: 'prije {{count}} s', + minutesAgoShort: 'prije {{count}} min', + hoursAgoShort: 'prije {{count}} h', + today: 'Danas', + tomorrow: 'Sutra', + weekAgo_one: 'prije {{count}} sedmicu', + weekAgo_few: 'prije {{count}} sedmice', + weekAgo_other: 'prije {{count}} sedmica', + yesterday: 'Jučer', + }, + }, + decks: { + actions: { + actionMenu: 'Radnje za {{title}}', + createDeck: 'Kreiraj špil', + createNote: 'Kreiraj bilješku', + deleteDeck: 'Izbriši špil', + editDeck: 'Uredi špil', + newNote: 'Nova bilješka', + openDeck: 'Otvori špil {{title}}', + saveDeck: 'Špil se nije mogao spremiti', + studyNow: 'Uči sada', + }, + descriptions: { + emptyDeck: 'Dodajte bilješku da bi ovaj špil imao materijal za ponavljanje.', + editorDefault: 'Fokusiran špil za učenje.', + editorVisual: 'Odaberite simbol naslovnice za ovaj špil.', + notesSearchPlaceholder: 'Pretraži bilješke…', + }, + dialogs: { + deleteDeckDescription: 'Ovo premješta "{{title}}" u Smeće. Možete ga vratiti kasnije.', + deleteDeckFallbackDescription: 'Ovo premješta ovaj špil u Smeće. Možete ga vratiti kasnije.', + deleteDeckFallbackTitle: 'Izbrisati špil?', + deleteDeckTitle: 'Izbrisati "{{title}}"?', + deleteNoteDescription: 'Ovo premješta "{{title}}" u Smeće. Možete je vratiti kasnije.', + deleteNoteFallbackTitle: 'Izbrisati bilješku?', + deleteNoteTitle: 'Izbrisati "{{title}}"?', + }, + empty: { + noMatchingNotes: 'Nema odgovarajućih bilješki', + noMatchingNotesDescription: 'Nijedna bilješka ne odgovara "{{query}}".', + thisDeckIsEmpty: 'Ovaj špil je prazan', + }, + errors: { + couldNotCreateDeck: 'Špil se nije mogao kreirati', + couldNotDeleteDeck: 'Špil se nije mogao izbrisati', + couldNotDeleteNote: 'Bilješka se nije mogla izbrisati', + couldNotLoadFolderPath: 'Putanja mape se nije mogla učitati', + couldNotSaveDeck: 'Špil se nije mogao spremiti', + deckCouldNotLoad: 'Špil se nije mogao učitati', + notesCouldNotLoad: 'Bilješke se nisu mogle učitati', + notesMayBeOutOfDate: 'Bilješke možda nisu ažurne', + }, + fields: { + descriptionLabel: 'Opis špila', + descriptionPlaceholder: 'Šta će vam ovaj špil pomoći da ponavljate?', + namePlaceholder: 'Naziv špila', + untitledDeck: 'Špil bez naslova', + untitledDeckLower: 'špil bez naslova', + }, + labels: { + createDeckTitle: 'Kreiraj špil', + deck: 'Špil', + deckNotesSearch: 'Pretraga bilješki u špilu', + deckOverview: 'Pregled špila', + decks: 'Špilovi', + due: 'Rok', + dueToday: 'Rok danas', + loadingDeck: 'Učitavanje špila', + mastery: 'Savladanost', + notes: 'Bilješke', + }, + sort: { + ariaLabel: 'Sortiraj špilove', + dueToday: 'Rok danas', + title: 'Naslov', + updated: 'Ažurirano', + }, + }, + errors: { + byType: { + conflict: 'Podaci su se promijenili. Osvježite i pokušajte ponovo.', + forbidden: 'Nemate dozvolu za ovu radnju.', + notFound: 'Nismo mogli pronaći ovu stavku.', + offline: 'Usluga nije dostupna.', + timeout: 'Ovo je trajalo predugo. Pokušajte ponovo.', + unauthorized: 'Prijavite se da nastavite.', + unavailable: 'Usluga je privremeno nedostupna.', + }, + fallback: { + unexpected: 'Neočekivana greška', + }, + }, + folders: { + actions: { + createFolder: 'Kreiraj mapu', + deleteFolder: 'Izbriši mapu', + editFolder: 'Uredi mapu', + }, + descriptions: { + editorDefault: 'Mapa za povezane špilove.', + }, + dialogs: { + deleteFolderDescription: 'Ovo premješta "{{name}}" u Smeće. Možete je vratiti kasnije.', + deleteFolderFallbackDescription: 'Ovo premješta ovu mapu u Smeće. Možete je vratiti kasnije.', + deleteFolderFallbackTitle: 'Izbrisati mapu?', + deleteFolderTitle: 'Izbrisati "{{name}}"?', + }, + empty: { + noMatchesInFolder: 'Nema rezultata u ovoj mapi', + noMatchesInFolderDescription: 'Nijedna mapa, špil ili bilješka ne odgovara "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'Mapa se nije mogla kreirati', + couldNotDeleteFolder: 'Mapa se nije mogla izbrisati', + couldNotLoadFolderPath: 'Putanja mape se nije mogla učitati', + couldNotSaveFolder: 'Mapa se nije mogla spremiti', + folderCouldNotLoad: 'Mapa se nije mogla učitati', + }, + fields: { + descriptionLabel: 'Opis mape', + descriptionPlaceholder: 'Šta pripada ovoj mapi?', + namePlaceholder: 'Naziv mape', + untitledFolder: 'Mapa bez naslova', + }, + labels: { + createFolderTitle: 'Kreiraj mapu', + folder: 'Mapa', + folders: 'Mape', + loadingFolder: 'Učitavanje mape', + name: 'Naziv', + updated: 'Ažurirano', + }, + sort: { + ariaLabel: 'Sortiraj mape', + name: 'Naziv', + updated: 'Ažurirano', + }, + }, + menu: { + conflicts: { + description: 'Ako se lokalni i sinhronizovani podaci ikada ne poklope, stavka će se pojaviti ovdje.', + heading: 'Status sinhronizacije', + title: 'Konflikti', + noConflicts: 'Nema pronađenih konflikata', + }, + labels: { + menu: 'Meni', + }, + sections: { + settings: { + description: 'Prilagodite okruženje i postavke', + title: 'Postavke', + }, + trash: { + description: 'Vratite ili trajno izbrišite uklonjene stavke', + title: 'Smeće', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Zatvori uređivač', + openActions: 'Otvori radnje', + openWorkspaces: 'Otvori radne prostore', + }, + items: { + home: 'Početna', + menu: 'Meni', + primary: 'Primarno', + settings: 'Postavke', + spaces: 'Prostori', + trash: 'Smeće', + workspaces: 'Radni prostori', + }, + }, + notes: { + actions: { + addCloze: 'Dodaj cloze', + deleteNote: 'Izbriši bilješku', + editNote: 'Uredi bilješku', + hideDerivedCardsNote: 'Sakrij bilješku o izvedenim karticama', + openNote: 'Otvori {{title}}', + saveNote: 'Spremi bilješku', + showDerivedCardsNote: 'Prikaži bilješku o izvedenim karticama', + }, + descriptions: { + clozeFormat: 'Svaki skriveni dio postaje kartica za ponavljanje kada spremite.', + clozeFormatPrefix: 'Označite skriveni tekst pomoću', + derivedCardsHelper: 'Bilješke su izvor istine za izvedene kartice.', + }, + dialogs: { + deleteNoteDescription: 'Ovo premješta "{{title}}" u Smeće. Možete je vratiti kasnije.', + deleteNoteFallbackDescription: 'Ovo premješta ovu bilješku u Smeće. Možete je vratiti kasnije.', + deleteNoteFallbackTitle: 'Izbrisati bilješku?', + deleteNoteTitle: 'Izbrisati "{{title}}"?', + }, + errors: { + couldNotCreateNote: 'Bilješka se nije mogla kreirati', + couldNotDeleteNote: 'Bilješka se nije mogla izbrisati', + couldNotSaveNote: 'Bilješka se nije mogla spremiti', + noteCouldNotLoad: 'Bilješka se nije mogla učitati', + }, + fields: { + back: 'Poleđina', + backPlaceholder: 'Unesite poleđinu', + bodyPlaceholder: 'Napišite sadržaj bilješke sa cloze izostavljanjima…', + front: 'Prednja strana', + frontPlaceholder: 'Unesite prednju stranu', + noteBody: 'Sadržaj bilješke', + title: 'Naslov', + titlePlaceholder: 'Dodajte naslov bilješke', + untitledCloze: 'Cloze bez naslova', + untitledNote: 'Bilješka bez naslova', + }, + labels: { + backUppercase: 'POLEĐINA', + basic: 'Osnovna', + basicLower: 'osnovna', + basicUppercase: 'OSNOVNA', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Cloze format', + clozeUppercase: 'CLOZE', + deck: 'Špil', + derivedCards: 'IZVEDENE KARTICE', + due: 'Rok', + frontUppercase: 'PREDNJA STRANA', + inProgress: 'U toku', + inProgressUppercase: 'U TOKU', + loadingNote: 'Učitavanje bilješke', + loadingNoteEditor: 'Učitavanje uređivača bilješki', + markdownFormatting: 'Markdown formatiranje', + mastered: 'Savladano', + masteredUppercase: 'SAVLADANO', + newNote: 'Nova bilješka', + noteBody: 'SADRŽAJ BILJEŠKE', + noteContent: 'Sadržaj bilješke', + noteDetails: 'Detalji bilješke', + noteMetadata: 'Metapodaci bilješke', + noteType: 'Tip bilješke', + notes: 'Bilješke', + reviewed: 'Ponovljeno', + studyProgress: 'Napredak u učenju', + studyProgressUppercase: 'NAPREDAK U UČENJU', + titleUppercase: 'NASLOV', + updated: 'Ažurirano', + }, + sort: { + ariaLabel: 'Sortiraj bilješke', + title: 'Naslov', + updated: 'Ažurirano', + }, + toolbar: { + bold: 'Podebljano', + italic: 'Kurziv', + link: 'Link', + list: 'Lista', + }, + }, + review: { + actions: { + again: 'Ponovo', + backToDeck: 'Nazad na špil', + continueReview: 'Nastavi ponavljanje', + easy: 'Lako', + good: 'Dobro', + hard: 'Teško', + newNote: 'Nova bilješka', + showAnswer: 'Prikaži odgovor', + }, + errors: { + couldNotGradeCard: 'Kartica se nije mogla ocijeniti', + reviewCouldNotLoad: 'Ponavljanje se nije moglo učitati', + reviewCouldNotStart: 'Ponavljanje se nije moglo pokrenuti', + summaryCouldNotLoad: 'Sažetak ponavljanja se nije mogao učitati', + summaryNotAvailable: 'Sažetak ponavljanja nije dostupan', + summaryNotComplete: 'Ovo ponavljanje još nije završeno.', + }, + labels: { + cardsReviewed: 'Ponovljene kartice', + deck: 'Špil', + duration: 'Trajanje', + loadingReview: 'Učitavanje ponavljanja', + loadingSummary: 'Učitavanje sažetka', + progress: 'Napredak ponavljanja', + review: 'Ponavljanje', + reviewComplete: 'Ponavljanje završeno', + reviewed_one: 'Ponovljena {{count}}', + reviewed_few: 'Ponovljene {{count}}', + reviewed_other: 'Ponovljeno {{count}}', + }, + summary: { + durationHoursMinutes: '{{hours}} h {{minutes}} min', + durationMinutes: '{{minutes}} min', + durationSeconds: '{{seconds}} s', + saved: 'Vaš napredak je spremljen u ovaj špil.', + }, + unavailable: { + description: 'Dodajte bilješku da bi ovaj špil mogao ući u red za ponavljanje.', + title: 'Nema kartica za ponavljanje', + }, + }, + search: { + actions: { + clearSearch: 'Obriši pretragu', + }, + empty: { + noMatchesInWorkspace: 'Nema rezultata u ovom radnom prostoru', + noMatchesInWorkspaceDescription: 'Nijedna mapa, špil ili bilješka ne odgovara "{{query}}".', + }, + errors: { + couldNotComplete: 'Pretraga se nije mogla završiti', + }, + labels: { + results: 'Rezultati pretrage', + resultsFor: 'Rezultati za "{{query}}"', + searchingContent: 'Pretraga sadržaja', + }, + resultGroups: { + deck: 'Špilovi', + folder: 'Mape', + note: 'Bilješke', + }, + resultKinds: { + deck: 'špil', + folder: 'mapa', + note: 'bilješka', + }, + }, + settings: { + actions: { + resetAll: 'Resetuj sve postavke', + resetSettings: 'Resetuj postavke', + resetToDefaults: 'Vrati zadane vrijednosti', + }, + dialogs: { + fsrsErrorInvalidJson: 'Zalijepite važeći JSON sa 21 numeričkom vrijednošću.', + fsrsErrorInvalidParams_one: 'Unesite JSON niz sa tačno {{count}} konačnim brojem.', + fsrsErrorInvalidParams_few: 'Unesite JSON niz sa tačno {{count}} konačna broja.', + fsrsErrorInvalidParams_other: 'Unesite JSON niz sa tačno {{count}} konačnih brojeva.', + fsrsHelper: 'Ovo je stručna izmjena. Vrijednosti moraju ostati redom.', + fsrsJsonLabel: 'JSON FSRS parametara', + fsrsTitle: 'Uredi FSRS parametre', + fsrsDescription: 'Zalijepite JSON niz sa 21 brojem da zamijenite težine planera.', + resetDescription: 'Ovo vraća vremensku zonu, ograničenja učenja i FSRS postavke.', + resetDescriptionWithLanguage: 'Ovo vraća jezik, vremensku zonu, ograničenja učenja i FSRS postavke.', + resetTitle: 'Resetovati sve postavke?', + timezoneDescription: 'Pretražite grad ili identifikator vremenske zone.', + timezoneSearchLabel: 'Pretraži vremenske zone', + timezoneSearchPlaceholder: 'Pretraži vremenske zone…', + timezoneTitle: 'Odaberite vremensku zonu', + }, + errors: { + couldNotResetSettings: 'Postavke se nisu mogle resetovati', + couldNotSaveSettings: 'Postavke se nisu mogle spremiti', + settingsCouldNotLoad: 'Postavke se nisu mogle učitati', + settingsUnavailable: 'Postavke nisu dostupne.', + }, + labels: { + appearance: 'Izgled', + automatic: 'Automatski', + fsrsParameters: 'FSRS parametri', + general: 'Općenito', + language: 'Jezik', + loadingSettings: 'Učitavanje postavki', + masteryHorizon: 'Horizont savladavanja', + newCardOrder: 'Redoslijed novih kartica', + newCardsPerDay: 'Nove kartice dnevno', + reviewCardsPerDay: 'Kartice za ponavljanje dnevno', + savingSettings: 'Spremanje postavki', + schedule: 'Raspored', + searchNoTimezones: 'Nema odgovarajućih vremenskih zona.', + settings: 'Postavke', + settingsReset: 'Postavke su resetovane', + study: 'Učenje', + targetRecallProbability: 'Ciljna vjerovatnoća prisjećanja', + theme: 'Tema', + timezone: 'Vremenska zona', + }, + options: { + languageEnUs: 'Engleski (SAD)', + newCardsAfterReviews: 'Nakon ponavljanja', + newCardsBeforeReviews: 'Prije ponavljanja', + newCardsMixed: 'Miješano', + themeDark: 'Tamna', + themeLight: 'Svijetla', + themeSystem: 'Sistem', + timezoneSystem: 'Koristi vremensku zonu sistema', + }, + rows: { + fsrsDescription: 'Težine stručnog modela', + languageDescription: 'Jezik interfejsa', + masteryHorizonDescription: 'Broj dana tokom kojih kartica mora ostati prisjetljiva na ciljnoj vjerovatnoći ili iznad nje da bi se računala kao savladana', + newCardOrderDescription: 'Redoslijed novih kartica u odnosu na ponavljanja', + newCardsPerDayDescription: 'Maksimalan broj novih kartica dnevno', + reviewCardsPerDayDescription: 'Maksimalan broj kartica za ponavljanje dnevno', + targetRecallProbabilityDescription: 'Minimalna vjerovatnoća prisjećanja pri sljedećem zakazanom ponavljanju', + timezoneDescription: 'Koristite automatsku vremensku zonu ili odaberite grad.', + }, + }, + trash: { + actions: { + deletePermanently: 'Izbriši trajno', + empty: 'Isprazni', + emptyTrash: 'Isprazni smeće', + restore: 'Vrati', + restoringItem: 'Vraćanje {{title}}', + }, + dialogs: { + deleteItemDescription: 'Ovo trajno briše "{{title}}". To se ne može poništiti.', + deleteItemFallbackDescription: 'Ovo trajno briše ovu stavku. To se ne može poništiti.', + deleteItemFallbackTitle: 'Izbrisati stavku?', + deleteItemTitle: 'Izbrisati "{{title}}"?', + emptyTrashDescription: 'Ovo trajno briše sve u Smeću. To se ne može poništiti.', + emptyTrashTitle: 'Isprazniti smeće?', + }, + empty: { + description: 'Stavke koje izbrišete pojavit će se ovdje prije trajnog uklanjanja.', + title: 'Smeće je prazno', + }, + errors: { + couldNotDeleteItem: 'Stavka se nije mogla izbrisati', + couldNotEmptyTrash: 'Smeće se nije moglo isprazniti', + couldNotRestoreItem: 'Stavka se nije mogla vratiti', + trashCouldNotLoad: 'Smeće se nije moglo učitati', + trashMayBeOutOfDate: 'Smeće možda nije ažurno', + }, + labels: { + deletedAge: 'Izbrisano {{value}}', + itemCount_one: '{{count}} stavka', + itemCount_few: '{{count}} stavke', + itemCount_other: '{{count}} stavki', + lastEmptied: 'Zadnje ispražnjeno {{value}}', + loadingTrash: 'Učitavanje Smeća', + originalLocation: 'Izvorna lokacija: {{location}}', + title: 'Smeće', + trashActions: 'Radnje u Smeću za {{title}}', + }, + kinds: { + deck: 'Špil', + folder: 'Mapa', + note: 'Bilješka', + workspace: 'Radni prostor', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Kreiraj radni prostor', + deleteWorkspace: 'Izbriši radni prostor', + editWorkspace: 'Uredi radni prostor', + newWorkspace: 'Novi radni prostor', + openWorkspace: 'Otvori {{title}}', + openingWorkspace: 'Otvaranje {{title}}', + }, + descriptions: { + editorDefault: 'Kontekst učenja.', + editorVisual: 'Odaberite vizuelno sidro za ovaj radni prostor.', + emptyList: 'Odvojite špilove, bilješke i redove za ponavljanje po kontekstu učenja.', + }, + dialogs: { + deleteWorkspaceDescription: 'Ovo premješta "{{title}}" u Smeće. Možete ga vratiti kasnije.', + deleteWorkspaceFallbackDescription: 'Ovo premješta ovaj radni prostor u Smeće. Možete ga vratiti kasnije.', + deleteWorkspaceFallbackTitle: 'Izbrisati radni prostor?', + deleteWorkspaceTitle: 'Izbrisati "{{title}}"?', + }, + empty: { + startWithWorkspace: 'Počnite s radnim prostorom', + }, + errors: { + couldNotCreateWorkspace: 'Radni prostor se nije mogao kreirati', + couldNotDeleteWorkspace: 'Radni prostor se nije mogao izbrisati', + couldNotOpenWorkspace: 'Radni prostor se nije mogao otvoriti', + couldNotSaveWorkspace: 'Radni prostor se nije mogao spremiti', + workspaceCouldNotLoad: 'Radni prostor se nije mogao učitati', + workspacesCouldNotLoad: 'Radni prostori se nisu mogli učitati', + }, + fields: { + descriptionLabel: 'Opis radnog prostora', + descriptionPlaceholder: 'Šta pripada ovom radnom prostoru?', + namePlaceholder: 'Naziv radnog prostora', + untitledWorkspace: 'Radni prostor bez naslova', + }, + labels: { + createWorkspaceTitle: 'Kreiraj radni prostor', + loadingWorkspaces: 'Učitavanje radnih prostora', + workspace: 'Radni prostor', + workspaces: 'Radni prostori', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/ca.ts b/ui/src/core/i18n/resources/ca.ts new file mode 100644 index 0000000..4479b1c --- /dev/null +++ b/ui/src/core/i18n/resources/ca.ts @@ -0,0 +1,636 @@ +export const ca = { + bootstrap: { + error: { + fallbackMessage: 'Torna-ho a provar. Si continua passant, torna a obrir Clear.', + title: 'No s\'ha pogut iniciar', + }, + loadingTitle: 'Preparant el teu espai d\'estudi', + }, + common: { + actions: { + back: 'Enrere', + cancel: 'Cancel·la', + checkAgain: 'Comprova-ho de nou', + close: 'Tanca', + create: 'Crea', + delete: 'Suprimeix', + dismissError: 'Descarta l\'error', + dismissStatus: 'Descarta l\'estat', + edit: 'Edita', + itemActions: 'Accions de {{title}}', + reset: 'Restableix', + review: 'Repassa', + save: 'Desa', + saveChanges: 'Desa els canvis', + tryAgain: 'Torna-ho a provar', + }, + labels: { + active: 'Actiu', + clear: 'Clear', + custom: 'Personalitzat', + default: 'Predeterminat', + loadingEditor: 'S\'està carregant l\'editor', + name: 'Nom', + completedTask: 'Tasca completada', + description: 'Descripció', + incompleteTask: 'Tasca incompleta', + percentageInput: 'Percentatge de {{label}}', + visual: 'Visual', + }, + status: { + actionFailed: 'L\'acció ha fallat', + actionInProgress: 'Acció en curs', + }, + sort: { + ascending: 'Asc.', + column: 'Columna', + descending: 'Desc.', + direction: 'Direcció', + sort: 'Ordena', + }, + search: { + label: 'Cerca', + }, + visualPicker: { + allLucideIcons: 'Totes les icones Lucide', + browseIconsFor: 'Explora o cerca icones per a {{label}}.', + chooseIcon: 'Tria una icona', + iconPicker: 'Selector d\'icona de {{label}}', + iconSearch: 'Cerca d\'icones de {{label}}', + iconsCouldNotLoad: 'No s\'han pogut carregar les icones.', + loadingIcons: 'S\'estan carregant les icones', + loadingMoreIcons: 'S\'estan carregant més icones', + moreIcons: 'Més icones', + noIconsMatch: 'Cap icona coincideix amb "{{query}}".', + searchIconsPlaceholder: 'Cerca icones…', + selectedIcon: '{{label}} seleccionat', + }, + }, + dashboard: { + actions: { + create: 'Crea', + newDeck: 'Baralla nova', + newFolder: 'Carpeta nova', + }, + descriptions: { + defaultWorkspace: 'Mantén juntes les baralles, les carpetes i les notes.', + emptyWorkspace: 'Crea una baralla i després afegeix notes per construir la teva cua de repàs.', + emptyFolder: 'Crea una baralla i després afegeix notes per construir una cua de repàs.', + searchPlaceholder: 'Cerca carpetes, baralles i notes…', + }, + empty: { + createFirstDeck: 'Crea la teva primera baralla', + }, + errors: { + couldNotDeleteDeck: 'No s\'ha pogut suprimir la baralla', + couldNotDeleteFolder: 'No s\'ha pogut suprimir la carpeta', + couldNotDeleteWorkspace: 'No s\'ha pogut suprimir l\'espai de treball', + dashboardCouldNotOpen: 'No s\'ha pogut obrir el tauler', + decksCouldNotLoad: 'No s\'han pogut carregar les baralles', + decksMayBeOutOfDate: 'Les baralles poden estar desactualitzades', + foldersCouldNotLoad: 'No s\'han pogut carregar les carpetes', + foldersMayBeOutOfDate: 'Les carpetes poden estar desactualitzades', + workspaceCouldNotLoad: 'No s\'ha pogut carregar l\'espai de treball', + }, + labels: { + dashboard: 'Tauler', + loadingDashboard: 'S\'està carregant el tauler', + newItem: 'Element nou', + }, + }, + dates: { + absolute: { + unavailable: 'Data no disponible', + }, + age: { + dayAgo_one: 'fa {{count}} dia', + dayAgo_many: 'fa {{count}} dies', + dayAgo_other: 'fa {{count}} dies', + hourAgo_one: 'fa {{count}} hora', + hourAgo_many: 'fa {{count}} hores', + hourAgo_other: 'fa {{count}} hores', + justNow: 'ara mateix', + minuteAgo_one: 'fa {{count}} minut', + minuteAgo_many: 'fa {{count}} minuts', + minuteAgo_other: 'fa {{count}} minuts', + unavailable: 'data no disponible', + weekAgo_one: 'fa {{count}} setmana', + weekAgo_many: 'fa {{count}} setmanes', + weekAgo_other: 'fa {{count}} setmanes', + }, + labels: { + deleted: 'Suprimit {{value}}', + due: 'Venciment: {{value}}', + reviewed: 'Repassat: {{value}}', + updated: 'Actualitzat {{value}}', + updatedUppercase: 'ACTUALITZAT {{value}}', + }, + relative: { + dayAgo_one: 'fa {{count}} dia', + dayAgo_many: 'fa {{count}} dies', + dayAgo_other: 'fa {{count}} dies', + inAMoment: 'D\'aquí a un moment', + inDay_one: 'D\'aquí a {{count}} dia', + inDay_many: 'D\'aquí a {{count}} dies', + inDay_other: 'D\'aquí a {{count}} dies', + inMonth_one: 'D\'aquí a {{count}} mes', + inMonth_many: 'D\'aquí a {{count}} mesos', + inMonth_other: 'D\'aquí a {{count}} mesos', + inWeek_one: 'D\'aquí a {{count}} setmana', + inWeek_many: 'D\'aquí a {{count}} setmanes', + inWeek_other: 'D\'aquí a {{count}} setmanes', + justNow: 'Ara mateix', + monthAgo_one: 'fa {{count}} mes', + monthAgo_many: 'fa {{count}} mesos', + monthAgo_other: 'fa {{count}} mesos', + secondsAgoShort: 'fa {{count}} s', + minutesAgoShort: 'fa {{count}} min', + hoursAgoShort: 'fa {{count}} h', + today: 'Avui', + tomorrow: 'Demà', + weekAgo_one: 'fa {{count}} setmana', + weekAgo_many: 'fa {{count}} setmanes', + weekAgo_other: 'fa {{count}} setmanes', + yesterday: 'Ahir', + }, + }, + decks: { + actions: { + actionMenu: 'Accions de {{title}}', + createDeck: 'Crea una baralla', + createNote: 'Crea una nota', + deleteDeck: 'Suprimeix la baralla', + editDeck: 'Edita la baralla', + newNote: 'Nota nova', + openDeck: 'Obre la baralla {{title}}', + saveDeck: 'No s\'ha pogut desar la baralla', + studyNow: 'Estudia ara', + }, + descriptions: { + emptyDeck: 'Afegeix una nota perquè aquesta baralla tingui material per repassar.', + editorDefault: 'Baralla d\'estudi enfocada.', + editorVisual: 'Tria un símbol de portada per a aquesta baralla.', + notesSearchPlaceholder: 'Cerca notes…', + }, + dialogs: { + deleteDeckDescription: 'Això mou "{{title}}" a la Paperera. Pots restaurar-ho més tard.', + deleteDeckFallbackDescription: 'Això mou aquesta baralla a la Paperera. Pots restaurar-la més tard.', + deleteDeckFallbackTitle: 'Vols suprimir la baralla?', + deleteDeckTitle: 'Vols suprimir "{{title}}"?', + deleteNoteDescription: 'Això mou "{{title}}" a la Paperera. Pots restaurar-la més tard.', + deleteNoteFallbackTitle: 'Vols suprimir la nota?', + deleteNoteTitle: 'Vols suprimir "{{title}}"?', + }, + empty: { + noMatchingNotes: 'No hi ha notes coincidents', + noMatchingNotesDescription: 'Cap nota coincideix amb "{{query}}".', + thisDeckIsEmpty: 'Aquesta baralla és buida', + }, + errors: { + couldNotCreateDeck: 'No s\'ha pogut crear la baralla', + couldNotDeleteDeck: 'No s\'ha pogut suprimir la baralla', + couldNotDeleteNote: 'No s\'ha pogut suprimir la nota', + couldNotLoadFolderPath: 'No s\'ha pogut carregar el camí de la carpeta', + couldNotSaveDeck: 'No s\'ha pogut desar la baralla', + deckCouldNotLoad: 'No s\'ha pogut carregar la baralla', + notesCouldNotLoad: 'No s\'han pogut carregar les notes', + notesMayBeOutOfDate: 'Les notes poden estar desactualitzades', + }, + fields: { + descriptionLabel: 'Descripció de la baralla', + descriptionPlaceholder: 'Què t\'ajudarà a repassar aquesta baralla?', + namePlaceholder: 'Nom de la baralla', + untitledDeck: 'Baralla sense títol', + untitledDeckLower: 'baralla sense títol', + }, + labels: { + createDeckTitle: 'Crea una baralla', + deck: 'Baralla', + deckNotesSearch: 'Cerca de notes de la baralla', + deckOverview: 'Vista general de la baralla', + decks: 'Baralles', + due: 'Venciment', + dueToday: 'Venciment avui', + loadingDeck: 'S\'està carregant la baralla', + mastery: 'Domini', + notes: 'Notes', + }, + sort: { + ariaLabel: 'Ordena les baralles', + dueToday: 'Venciment avui', + title: 'Títol', + updated: 'Actualitzat', + }, + }, + errors: { + byType: { + conflict: 'Les dades han canviat. Actualitza i torna-ho a provar.', + forbidden: 'No tens permís per fer això.', + notFound: 'No hem pogut trobar aquest element.', + offline: 'No es pot contactar amb el servei.', + timeout: 'Això ha trigat massa. Torna-ho a provar.', + unauthorized: 'Inicia la sessió per continuar.', + unavailable: 'El servei no està disponible temporalment.', + }, + fallback: { + unexpected: 'Error inesperat', + }, + }, + folders: { + actions: { + createFolder: 'Crea una carpeta', + deleteFolder: 'Suprimeix la carpeta', + editFolder: 'Edita la carpeta', + }, + descriptions: { + editorDefault: 'Carpeta per a baralles relacionades.', + }, + dialogs: { + deleteFolderDescription: 'Això mou "{{name}}" a la Paperera. Pots restaurar-la més tard.', + deleteFolderFallbackDescription: 'Això mou aquesta carpeta a la Paperera. Pots restaurar-la més tard.', + deleteFolderFallbackTitle: 'Vols suprimir la carpeta?', + deleteFolderTitle: 'Vols suprimir "{{name}}"?', + }, + empty: { + noMatchesInFolder: 'No hi ha coincidències en aquesta carpeta', + noMatchesInFolderDescription: 'Cap carpeta, baralla o nota coincideix amb "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'No s\'ha pogut crear la carpeta', + couldNotDeleteFolder: 'No s\'ha pogut suprimir la carpeta', + couldNotLoadFolderPath: 'No s\'ha pogut carregar el camí de la carpeta', + couldNotSaveFolder: 'No s\'ha pogut desar la carpeta', + folderCouldNotLoad: 'No s\'ha pogut carregar la carpeta', + }, + fields: { + descriptionLabel: 'Descripció de la carpeta', + descriptionPlaceholder: 'Què pertany a aquesta carpeta?', + namePlaceholder: 'Nom de la carpeta', + untitledFolder: 'Carpeta sense títol', + }, + labels: { + createFolderTitle: 'Crea una carpeta', + folder: 'Carpeta', + folders: 'Carpetes', + loadingFolder: 'S\'està carregant la carpeta', + name: 'Nom', + updated: 'Actualitzat', + }, + sort: { + ariaLabel: 'Ordena les carpetes', + name: 'Nom', + updated: 'Actualitzat', + }, + }, + menu: { + conflicts: { + description: 'Si les dades locals i sincronitzades no coincideixen mai, l\'element apareixerà aquí.', + heading: 'Estat de sincronització', + title: 'Conflictes', + noConflicts: 'No s\'han trobat conflictes', + }, + labels: { + menu: 'Menú', + }, + sections: { + settings: { + description: 'Personalitza el teu entorn i preferències', + title: 'Configuració', + }, + trash: { + description: 'Restaura o suprimeix permanentment els elements eliminats', + title: 'Paperera', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Tanca l\'editor', + openActions: 'Obre les accions', + openWorkspaces: 'Obre els espais de treball', + }, + items: { + home: 'Inici', + menu: 'Menú', + primary: 'Principal', + settings: 'Configuració', + spaces: 'Espais', + trash: 'Paperera', + workspaces: 'Espais de treball', + }, + }, + notes: { + actions: { + addCloze: 'Afegeix cloze', + deleteNote: 'Suprimeix la nota', + editNote: 'Edita la nota', + hideDerivedCardsNote: 'Amaga la nota sobre targetes derivades', + openNote: 'Obre {{title}}', + saveNote: 'Desa la nota', + showDerivedCardsNote: 'Mostra la nota sobre targetes derivades', + }, + descriptions: { + clozeFormat: 'Cada part amagada es converteix en una targeta de repàs quan deses.', + clozeFormatPrefix: 'Envolta el text amagat amb', + derivedCardsHelper: 'Les notes són la font de veritat de les targetes derivades.', + }, + dialogs: { + deleteNoteDescription: 'Això mou "{{title}}" a la Paperera. Pots restaurar-la més tard.', + deleteNoteFallbackDescription: 'Això mou aquesta nota a la Paperera. Pots restaurar-la més tard.', + deleteNoteFallbackTitle: 'Vols suprimir la nota?', + deleteNoteTitle: 'Vols suprimir "{{title}}"?', + }, + errors: { + couldNotCreateNote: 'No s\'ha pogut crear la nota', + couldNotDeleteNote: 'No s\'ha pogut suprimir la nota', + couldNotSaveNote: 'No s\'ha pogut desar la nota', + noteCouldNotLoad: 'No s\'ha pogut carregar la nota', + }, + fields: { + back: 'Dors', + backPlaceholder: 'Introdueix el dors', + bodyPlaceholder: 'Escriu el contingut de la nota amb eliminacions cloze…', + front: 'Anvers', + frontPlaceholder: 'Introdueix l\'anvers', + noteBody: 'Contingut de la nota', + title: 'Títol', + titlePlaceholder: 'Afegeix un títol de nota', + untitledCloze: 'Cloze sense títol', + untitledNote: 'Nota sense títol', + }, + labels: { + backUppercase: 'DORS', + basic: 'Bàsica', + basicLower: 'bàsica', + basicUppercase: 'BÀSICA', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Format cloze', + clozeUppercase: 'CLOZE', + deck: 'Baralla', + derivedCards: 'TARGETES DERIVADES', + due: 'Venciment', + frontUppercase: 'ANVERS', + inProgress: 'En curs', + inProgressUppercase: 'EN CURS', + loadingNote: 'S\'està carregant la nota', + loadingNoteEditor: 'S\'està carregant l\'editor de notes', + markdownFormatting: 'Format Markdown', + mastered: 'Dominada', + masteredUppercase: 'DOMINADA', + newNote: 'Nota nova', + noteBody: 'CONTINGUT DE LA NOTA', + noteContent: 'Contingut de la nota', + noteDetails: 'Detalls de la nota', + noteMetadata: 'Metadades de la nota', + noteType: 'Tipus de nota', + notes: 'Notes', + reviewed: 'Repassat', + studyProgress: 'Progrés d\'estudi', + studyProgressUppercase: 'PROGRÉS D\'ESTUDI', + titleUppercase: 'TÍTOL', + updated: 'Actualitzat', + }, + sort: { + ariaLabel: 'Ordena les notes', + title: 'Títol', + updated: 'Actualitzat', + }, + toolbar: { + bold: 'Negreta', + italic: 'Cursiva', + link: 'Enllaç', + list: 'Llista', + }, + }, + review: { + actions: { + again: 'Una altra vegada', + backToDeck: 'Torna a la baralla', + continueReview: 'Continua el repàs', + easy: 'Fàcil', + good: 'Bé', + hard: 'Difícil', + newNote: 'Nota nova', + showAnswer: 'Mostra la resposta', + }, + errors: { + couldNotGradeCard: 'No s\'ha pogut qualificar la targeta', + reviewCouldNotLoad: 'No s\'ha pogut carregar el repàs', + reviewCouldNotStart: 'No s\'ha pogut iniciar el repàs', + summaryCouldNotLoad: 'No s\'ha pogut carregar el resum del repàs', + summaryNotAvailable: 'El resum del repàs no està disponible', + summaryNotComplete: 'Aquest repàs encara no està complet.', + }, + labels: { + cardsReviewed: 'Targetes repassades', + deck: 'Baralla', + duration: 'Durada', + loadingReview: 'S\'està carregant el repàs', + loadingSummary: 'S\'està carregant el resum', + progress: 'Progrés del repàs', + review: 'Repàs', + reviewComplete: 'Repàs completat', + reviewed_one: 'Repassada {{count}}', + reviewed_many: 'Repassades {{count}}', + reviewed_other: 'Repassades {{count}}', + }, + summary: { + durationHoursMinutes: '{{hours}} h {{minutes}} min', + durationMinutes: '{{minutes}} min', + durationSeconds: '{{seconds}} s', + saved: 'El teu progrés s\'ha desat en aquesta baralla.', + }, + unavailable: { + description: 'Afegeix una nota perquè aquesta baralla pugui entrar a la cua de repàs.', + title: 'No hi ha targetes per repassar', + }, + }, + search: { + actions: { + clearSearch: 'Esborra la cerca', + }, + empty: { + noMatchesInWorkspace: 'No hi ha coincidències en aquest espai de treball', + noMatchesInWorkspaceDescription: 'Cap carpeta, baralla o nota coincideix amb "{{query}}".', + }, + errors: { + couldNotComplete: 'No s\'ha pogut completar la cerca', + }, + labels: { + results: 'Resultats de cerca', + resultsFor: 'Resultats per a "{{query}}"', + searchingContent: 'S\'està cercant contingut', + }, + resultGroups: { + deck: 'Baralles', + folder: 'Carpetes', + note: 'Notes', + }, + resultKinds: { + deck: 'baralla', + folder: 'carpeta', + note: 'nota', + }, + }, + settings: { + actions: { + resetAll: 'Restableix tota la configuració', + resetSettings: 'Restableix la configuració', + resetToDefaults: 'Restableix els valors predeterminats', + }, + dialogs: { + fsrsErrorInvalidJson: 'Enganxa un JSON vàlid amb 21 valors numèrics.', + fsrsErrorInvalidParams_one: 'Introdueix una matriu JSON amb exactament {{count}} nombre finit.', + fsrsErrorInvalidParams_many: 'Introdueix una matriu JSON amb exactament {{count}} nombres finits.', + fsrsErrorInvalidParams_other: 'Introdueix una matriu JSON amb exactament {{count}} nombres finits.', + fsrsHelper: 'Això és una substitució experta. Els valors han de mantenir l\'ordre.', + fsrsJsonLabel: 'JSON de paràmetres FSRS', + fsrsTitle: 'Edita els paràmetres FSRS', + fsrsDescription: 'Enganxa una matriu JSON amb 21 nombres per substituir els pesos del planificador.', + resetDescription: 'Això restaura la zona horària, els límits d\'estudi i la configuració FSRS.', + resetDescriptionWithLanguage: 'Això restaura l\'idioma, la zona horària, els límits d\'estudi i la configuració FSRS.', + resetTitle: 'Vols restablir tota la configuració?', + timezoneDescription: 'Cerca una ciutat o un identificador de zona horària.', + timezoneSearchLabel: 'Cerca zones horàries', + timezoneSearchPlaceholder: 'Cerca zones horàries…', + timezoneTitle: 'Tria la zona horària', + }, + errors: { + couldNotResetSettings: 'No s\'ha pogut restablir la configuració', + couldNotSaveSettings: 'No s\'ha pogut desar la configuració', + settingsCouldNotLoad: 'No s\'ha pogut carregar la configuració', + settingsUnavailable: 'La configuració no està disponible.', + }, + labels: { + appearance: 'Aparença', + automatic: 'Automàtic', + fsrsParameters: 'Paràmetres FSRS', + general: 'General', + language: 'Idioma', + loadingSettings: 'S\'està carregant la configuració', + masteryHorizon: 'Horitzó de domini', + newCardOrder: 'Ordre de les targetes noves', + newCardsPerDay: 'Targetes noves per dia', + reviewCardsPerDay: 'Targetes de repàs per dia', + savingSettings: 'S\'està desant la configuració', + schedule: 'Programació', + searchNoTimezones: 'No hi ha zones horàries coincidents.', + settings: 'Configuració', + settingsReset: 'Configuració restablerta', + study: 'Estudi', + targetRecallProbability: 'Probabilitat objectiu de record', + theme: 'Tema', + timezone: 'Zona horària', + }, + options: { + languageEnUs: 'Anglès (EUA)', + newCardsAfterReviews: 'Després dels repassos', + newCardsBeforeReviews: 'Abans dels repassos', + newCardsMixed: 'Mixt', + themeDark: 'Fosc', + themeLight: 'Clar', + themeSystem: 'Sistema', + timezoneSystem: 'Utilitza la zona horària del sistema', + }, + rows: { + fsrsDescription: 'Pesos del model expert', + languageDescription: 'Idioma de la interfície', + masteryHorizonDescription: 'Dies que una targeta ha de romandre recordable a la probabilitat objectiu o per sobre per comptar com a dominada', + newCardOrderDescription: 'Ordre de les targetes noves respecte als repassos', + newCardsPerDayDescription: 'Nombre màxim de targetes noves per dia', + reviewCardsPerDayDescription: 'Nombre màxim de targetes de repàs per dia', + targetRecallProbabilityDescription: 'Probabilitat mínima de record en el proper repàs programat', + timezoneDescription: 'Utilitza la zona horària automàtica o tria una ciutat.', + }, + }, + trash: { + actions: { + deletePermanently: 'Suprimeix permanentment', + empty: 'Buida', + emptyTrash: 'Buida la paperera', + restore: 'Restaura', + restoringItem: 'S\'està restaurant {{title}}', + }, + dialogs: { + deleteItemDescription: 'Això suprimeix "{{title}}" permanentment. No es pot desfer.', + deleteItemFallbackDescription: 'Això suprimeix aquest element permanentment. No es pot desfer.', + deleteItemFallbackTitle: 'Vols suprimir l\'element?', + deleteItemTitle: 'Vols suprimir "{{title}}"?', + emptyTrashDescription: 'Això suprimeix permanentment tot el que hi ha a la Paperera. No es pot desfer.', + emptyTrashTitle: 'Vols buidar la paperera?', + }, + empty: { + description: 'Els elements que suprimeixis apareixeran aquí abans de l\'eliminació permanent.', + title: 'La paperera és buida', + }, + errors: { + couldNotDeleteItem: 'No s\'ha pogut suprimir l\'element', + couldNotEmptyTrash: 'No s\'ha pogut buidar la paperera', + couldNotRestoreItem: 'No s\'ha pogut restaurar l\'element', + trashCouldNotLoad: 'No s\'ha pogut carregar la paperera', + trashMayBeOutOfDate: 'La paperera pot estar desactualitzada', + }, + labels: { + deletedAge: 'Suprimit {{value}}', + itemCount_one: '{{count}} element', + itemCount_many: '{{count}} elements', + itemCount_other: '{{count}} elements', + lastEmptied: 'Buidada per última vegada {{value}}', + loadingTrash: 'S\'està carregant la Paperera', + originalLocation: 'Ubicació original: {{location}}', + title: 'Paperera', + trashActions: 'Accions de paperera de {{title}}', + }, + kinds: { + deck: 'Baralla', + folder: 'Carpeta', + note: 'Nota', + workspace: 'Espai de treball', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Crea un espai de treball', + deleteWorkspace: 'Suprimeix l\'espai de treball', + editWorkspace: 'Edita l\'espai de treball', + newWorkspace: 'Espai de treball nou', + openWorkspace: 'Obre {{title}}', + openingWorkspace: 'S\'està obrint {{title}}', + }, + descriptions: { + editorDefault: 'Context d\'estudi.', + editorVisual: 'Tria un ancoratge visual per a aquest espai de treball.', + emptyList: 'Separa baralles, notes i cues de repàs per context d\'estudi.', + }, + dialogs: { + deleteWorkspaceDescription: 'Això mou "{{title}}" a la Paperera. Pots restaurar-ho més tard.', + deleteWorkspaceFallbackDescription: 'Això mou aquest espai de treball a la Paperera. Pots restaurar-lo més tard.', + deleteWorkspaceFallbackTitle: 'Vols suprimir l\'espai de treball?', + deleteWorkspaceTitle: 'Vols suprimir "{{title}}"?', + }, + empty: { + startWithWorkspace: 'Comença amb un espai de treball', + }, + errors: { + couldNotCreateWorkspace: 'No s\'ha pogut crear l\'espai de treball', + couldNotDeleteWorkspace: 'No s\'ha pogut suprimir l\'espai de treball', + couldNotOpenWorkspace: 'No s\'ha pogut obrir l\'espai de treball', + couldNotSaveWorkspace: 'No s\'ha pogut desar l\'espai de treball', + workspaceCouldNotLoad: 'No s\'ha pogut carregar l\'espai de treball', + workspacesCouldNotLoad: 'No s\'han pogut carregar els espais de treball', + }, + fields: { + descriptionLabel: 'Descripció de l\'espai de treball', + descriptionPlaceholder: 'Què pertany a aquest espai de treball?', + namePlaceholder: 'Nom de l\'espai de treball', + untitledWorkspace: 'Espai de treball sense títol', + }, + labels: { + createWorkspaceTitle: 'Crea un espai de treball', + loadingWorkspaces: 'S\'estan carregant els espais de treball', + workspace: 'Espai de treball', + workspaces: 'Espais de treball', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/cs.ts b/ui/src/core/i18n/resources/cs.ts new file mode 100644 index 0000000..8fe8568 --- /dev/null +++ b/ui/src/core/i18n/resources/cs.ts @@ -0,0 +1,649 @@ +export const cs = { + bootstrap: { + error: { + fallbackMessage: 'Zkuste to znovu. Pokud se to bude opakovat, znovu otevřete Clear.', + title: 'Nepodařilo se spustit', + }, + loadingTitle: 'Připravuje se váš studijní prostor', + }, + common: { + actions: { + back: 'Zpět', + cancel: 'Zrušit', + checkAgain: 'Zkontrolovat znovu', + close: 'Zavřít', + create: 'Vytvořit', + delete: 'Smazat', + dismissError: 'Zavřít chybu', + dismissStatus: 'Zavřít stav', + edit: 'Upravit', + itemActions: 'Akce pro {{title}}', + reset: 'Resetovat', + review: 'Opakovat', + save: 'Uložit', + saveChanges: 'Uložit změny', + tryAgain: 'Zkusit znovu', + }, + labels: { + active: 'Aktivní', + clear: 'Clear', + custom: 'Vlastní', + default: 'Výchozí', + loadingEditor: 'Načítání editoru', + name: 'Název', + completedTask: 'Dokončený úkol', + description: 'Popis', + incompleteTask: 'Nedokončený úkol', + percentageInput: 'Procento pro {{label}}', + visual: 'Vizuál', + }, + status: { + actionFailed: 'Akce se nezdařila', + actionInProgress: 'Akce probíhá', + }, + sort: { + ascending: 'Vzest.', + column: 'Sloupec', + descending: 'Sest.', + direction: 'Směr', + sort: 'Řadit', + }, + search: { + label: 'Hledat', + }, + visualPicker: { + allLucideIcons: 'Všechny ikony Lucide', + browseIconsFor: 'Procházejte nebo hledejte ikony pro {{label}}.', + chooseIcon: 'Vybrat ikonu', + iconPicker: 'Výběr ikony pro {{label}}', + iconSearch: 'Hledání ikon pro {{label}}', + iconsCouldNotLoad: 'Ikony se nepodařilo načíst.', + loadingIcons: 'Načítání ikon', + loadingMoreIcons: 'Načítání dalších ikon', + moreIcons: 'Další ikony', + noIconsMatch: 'Žádné ikony neodpovídají "{{query}}".', + searchIconsPlaceholder: 'Hledat ikony…', + selectedIcon: 'Vybráno {{label}}', + }, + }, + dashboard: { + actions: { + create: 'Vytvořit', + newDeck: 'Nový balíček', + newFolder: 'Nová složka', + }, + descriptions: { + defaultWorkspace: 'Mějte balíčky, složky a poznámky pohromadě.', + emptyWorkspace: 'Vytvořte balíček a poté přidejte poznámky, abyste sestavili frontu opakování.', + emptyFolder: 'Vytvořte balíček a poté přidejte poznámky, abyste sestavili frontu opakování.', + searchPlaceholder: 'Hledat složky, balíčky a poznámky…', + }, + empty: { + createFirstDeck: 'Vytvořte svůj první balíček', + }, + errors: { + couldNotDeleteDeck: 'Balíček se nepodařilo smazat', + couldNotDeleteFolder: 'Složku se nepodařilo smazat', + couldNotDeleteWorkspace: 'Pracovní prostor se nepodařilo smazat', + dashboardCouldNotOpen: 'Panel se nepodařilo otevřít', + decksCouldNotLoad: 'Balíčky se nepodařilo načíst', + decksMayBeOutOfDate: 'Balíčky mohou být zastaralé', + foldersCouldNotLoad: 'Složky se nepodařilo načíst', + foldersMayBeOutOfDate: 'Složky mohou být zastaralé', + workspaceCouldNotLoad: 'Pracovní prostor se nepodařilo načíst', + }, + labels: { + dashboard: 'Panel', + loadingDashboard: 'Načítání panelu', + newItem: 'Nová položka', + }, + }, + dates: { + absolute: { + unavailable: 'Datum není k dispozici', + }, + age: { + dayAgo_one: 'před {{count}} dnem', + dayAgo_few: 'před {{count}} dny', + dayAgo_many: 'před {{count}} dne', + dayAgo_other: 'před {{count}} dny', + hourAgo_one: 'před {{count}} hodinou', + hourAgo_few: 'před {{count}} hodinami', + hourAgo_many: 'před {{count}} hodiny', + hourAgo_other: 'před {{count}} hodinami', + justNow: 'právě teď', + minuteAgo_one: 'před {{count}} minutou', + minuteAgo_few: 'před {{count}} minutami', + minuteAgo_many: 'před {{count}} minuty', + minuteAgo_other: 'před {{count}} minutami', + unavailable: 'datum není k dispozici', + weekAgo_one: 'před {{count}} týdnem', + weekAgo_few: 'před {{count}} týdny', + weekAgo_many: 'před {{count}} týdne', + weekAgo_other: 'před {{count}} týdny', + }, + labels: { + deleted: 'Smazáno {{value}}', + due: 'Termín: {{value}}', + reviewed: 'Opakováno: {{value}}', + updated: 'Aktualizováno {{value}}', + updatedUppercase: 'AKTUALIZOVÁNO {{value}}', + }, + relative: { + dayAgo_one: 'před {{count}} dnem', + dayAgo_few: 'před {{count}} dny', + dayAgo_many: 'před {{count}} dne', + dayAgo_other: 'před {{count}} dny', + inAMoment: 'Za chvíli', + inDay_one: 'Za {{count}} den', + inDay_few: 'Za {{count}} dny', + inDay_many: 'Za {{count}} dne', + inDay_other: 'Za {{count}} dní', + inMonth_one: 'Za {{count}} měsíc', + inMonth_few: 'Za {{count}} měsíce', + inMonth_many: 'Za {{count}} měsíce', + inMonth_other: 'Za {{count}} měsíců', + inWeek_one: 'Za {{count}} týden', + inWeek_few: 'Za {{count}} týdny', + inWeek_many: 'Za {{count}} týdne', + inWeek_other: 'Za {{count}} týdnů', + justNow: 'Právě teď', + monthAgo_one: 'před {{count}} měsícem', + monthAgo_few: 'před {{count}} měsíci', + monthAgo_many: 'před {{count}} měsíce', + monthAgo_other: 'před {{count}} měsíci', + secondsAgoShort: 'před {{count}} s', + minutesAgoShort: 'před {{count}} min', + hoursAgoShort: 'před {{count}} h', + today: 'Dnes', + tomorrow: 'Zítra', + weekAgo_one: 'před {{count}} týdnem', + weekAgo_few: 'před {{count}} týdny', + weekAgo_many: 'před {{count}} týdne', + weekAgo_other: 'před {{count}} týdny', + yesterday: 'Včera', + }, + }, + decks: { + actions: { + actionMenu: 'Akce pro {{title}}', + createDeck: 'Vytvořit balíček', + createNote: 'Vytvořit poznámku', + deleteDeck: 'Smazat balíček', + editDeck: 'Upravit balíček', + newNote: 'Nová poznámka', + openDeck: 'Otevřít balíček {{title}}', + saveDeck: 'Balíček se nepodařilo uložit', + studyNow: 'Studovat teď', + }, + descriptions: { + emptyDeck: 'Přidejte poznámku, aby měl tento balíček materiál k opakování.', + editorDefault: 'Zaměřený studijní balíček.', + editorVisual: 'Vyberte krycí symbol pro tento balíček.', + notesSearchPlaceholder: 'Hledat poznámky…', + }, + dialogs: { + deleteDeckDescription: 'Tím se "{{title}}" přesune do Koše. Později ho můžete obnovit.', + deleteDeckFallbackDescription: 'Tím se tento balíček přesune do Koše. Později ho můžete obnovit.', + deleteDeckFallbackTitle: 'Smazat balíček?', + deleteDeckTitle: 'Smazat "{{title}}"?', + deleteNoteDescription: 'Tím se "{{title}}" přesune do Koše. Později ji můžete obnovit.', + deleteNoteFallbackTitle: 'Smazat poznámku?', + deleteNoteTitle: 'Smazat "{{title}}"?', + }, + empty: { + noMatchingNotes: 'Žádné odpovídající poznámky', + noMatchingNotesDescription: 'Žádné poznámky neodpovídají "{{query}}".', + thisDeckIsEmpty: 'Tento balíček je prázdný', + }, + errors: { + couldNotCreateDeck: 'Balíček se nepodařilo vytvořit', + couldNotDeleteDeck: 'Balíček se nepodařilo smazat', + couldNotDeleteNote: 'Poznámku se nepodařilo smazat', + couldNotLoadFolderPath: 'Cestu ke složce se nepodařilo načíst', + couldNotSaveDeck: 'Balíček se nepodařilo uložit', + deckCouldNotLoad: 'Balíček se nepodařilo načíst', + notesCouldNotLoad: 'Poznámky se nepodařilo načíst', + notesMayBeOutOfDate: 'Poznámky mohou být zastaralé', + }, + fields: { + descriptionLabel: 'Popis balíčku', + descriptionPlaceholder: 'Co vám tento balíček pomůže opakovat?', + namePlaceholder: 'Název balíčku', + untitledDeck: 'Balíček bez názvu', + untitledDeckLower: 'balíček bez názvu', + }, + labels: { + createDeckTitle: 'Vytvořit balíček', + deck: 'Balíček', + deckNotesSearch: 'Hledání poznámek v balíčku', + deckOverview: 'Přehled balíčku', + decks: 'Balíčky', + due: 'Termín', + dueToday: 'Termín dnes', + loadingDeck: 'Načítání balíčku', + mastery: 'Zvládnutí', + notes: 'Poznámky', + }, + sort: { + ariaLabel: 'Řadit balíčky', + dueToday: 'Termín dnes', + title: 'Název', + updated: 'Aktualizováno', + }, + }, + errors: { + byType: { + conflict: 'Data se změnila. Obnovte je a zkuste to znovu.', + forbidden: 'K této akci nemáte oprávnění.', + notFound: 'Tuto položku se nepodařilo najít.', + offline: 'Službu nelze kontaktovat.', + timeout: 'Trvá to příliš dlouho. Zkuste to znovu.', + unauthorized: 'Pro pokračování se přihlaste.', + unavailable: 'Služba je dočasně nedostupná.', + }, + fallback: { + unexpected: 'Neočekávaná chyba', + }, + }, + folders: { + actions: { + createFolder: 'Vytvořit složku', + deleteFolder: 'Smazat složku', + editFolder: 'Upravit složku', + }, + descriptions: { + editorDefault: 'Složka pro související balíčky.', + }, + dialogs: { + deleteFolderDescription: 'Tím se "{{name}}" přesune do Koše. Později ji můžete obnovit.', + deleteFolderFallbackDescription: 'Tím se tato složka přesune do Koše. Později ji můžete obnovit.', + deleteFolderFallbackTitle: 'Smazat složku?', + deleteFolderTitle: 'Smazat "{{name}}"?', + }, + empty: { + noMatchesInFolder: 'V této složce nejsou žádné shody', + noMatchesInFolderDescription: 'Žádné složky, balíčky ani poznámky neodpovídají "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'Složku se nepodařilo vytvořit', + couldNotDeleteFolder: 'Složku se nepodařilo smazat', + couldNotLoadFolderPath: 'Cestu ke složce se nepodařilo načíst', + couldNotSaveFolder: 'Složku se nepodařilo uložit', + folderCouldNotLoad: 'Složku se nepodařilo načíst', + }, + fields: { + descriptionLabel: 'Popis složky', + descriptionPlaceholder: 'Co patří do této složky?', + namePlaceholder: 'Název složky', + untitledFolder: 'Složka bez názvu', + }, + labels: { + createFolderTitle: 'Vytvořit složku', + folder: 'Složka', + folders: 'Složky', + loadingFolder: 'Načítání složky', + name: 'Název', + updated: 'Aktualizováno', + }, + sort: { + ariaLabel: 'Řadit složky', + name: 'Název', + updated: 'Aktualizováno', + }, + }, + menu: { + conflicts: { + description: 'Pokud se místní a synchronizovaná data budou lišit, položka se objeví zde.', + heading: 'Stav synchronizace', + title: 'Konflikty', + noConflicts: 'Nebyly nalezeny žádné konflikty', + }, + labels: { + menu: 'Menu', + }, + sections: { + settings: { + description: 'Přizpůsobte si prostředí a předvolby', + title: 'Nastavení', + }, + trash: { + description: 'Obnovte nebo trvale smažte odebrané položky', + title: 'Koš', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Zavřít editor', + openActions: 'Otevřít akce', + openWorkspaces: 'Otevřít pracovní prostory', + }, + items: { + home: 'Domů', + menu: 'Menu', + primary: 'Primární', + settings: 'Nastavení', + spaces: 'Prostory', + trash: 'Koš', + workspaces: 'Pracovní prostory', + }, + }, + notes: { + actions: { + addCloze: 'Přidat cloze', + deleteNote: 'Smazat poznámku', + editNote: 'Upravit poznámku', + hideDerivedCardsNote: 'Skrýt poznámku k odvozeným kartám', + openNote: 'Otevřít {{title}}', + saveNote: 'Uložit poznámku', + showDerivedCardsNote: 'Zobrazit poznámku k odvozeným kartám', + }, + descriptions: { + clozeFormat: 'Každá skrytá část se po uložení stane kartou k opakování.', + clozeFormatPrefix: 'Skrytý text obalte pomocí', + derivedCardsHelper: 'Poznámky jsou zdrojem pravdy pro odvozené karty.', + }, + dialogs: { + deleteNoteDescription: 'Tím se "{{title}}" přesune do Koše. Později ji můžete obnovit.', + deleteNoteFallbackDescription: 'Tím se tato poznámka přesune do Koše. Později ji můžete obnovit.', + deleteNoteFallbackTitle: 'Smazat poznámku?', + deleteNoteTitle: 'Smazat "{{title}}"?', + }, + errors: { + couldNotCreateNote: 'Poznámku se nepodařilo vytvořit', + couldNotDeleteNote: 'Poznámku se nepodařilo smazat', + couldNotSaveNote: 'Poznámku se nepodařilo uložit', + noteCouldNotLoad: 'Poznámku se nepodařilo načíst', + }, + fields: { + back: 'Zadní strana', + backPlaceholder: 'Zadejte zadní stranu', + bodyPlaceholder: 'Napište tělo poznámky s cloze vynechávkami…', + front: 'Přední strana', + frontPlaceholder: 'Zadejte přední stranu', + noteBody: 'Tělo poznámky', + title: 'Název', + titlePlaceholder: 'Přidejte název poznámky', + untitledCloze: 'Cloze bez názvu', + untitledNote: 'Poznámka bez názvu', + }, + labels: { + backUppercase: 'ZADNÍ STRANA', + basic: 'Základní', + basicLower: 'základní', + basicUppercase: 'ZÁKLADNÍ', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Formát cloze', + clozeUppercase: 'CLOZE', + deck: 'Balíček', + derivedCards: 'ODVOZENÉ KARTY', + due: 'Termín', + frontUppercase: 'PŘEDNÍ STRANA', + inProgress: 'Probíhá', + inProgressUppercase: 'PROBÍHÁ', + loadingNote: 'Načítání poznámky', + loadingNoteEditor: 'Načítání editoru poznámek', + markdownFormatting: 'Formátování Markdown', + mastered: 'Zvládnuto', + masteredUppercase: 'ZVLÁDNUTO', + newNote: 'Nová poznámka', + noteBody: 'TĚLO POZNÁMKY', + noteContent: 'Obsah poznámky', + noteDetails: 'Podrobnosti poznámky', + noteMetadata: 'Metadata poznámky', + noteType: 'Typ poznámky', + notes: 'Poznámky', + reviewed: 'Opakováno', + studyProgress: 'Průběh studia', + studyProgressUppercase: 'PRŮBĚH STUDIA', + titleUppercase: 'NÁZEV', + updated: 'Aktualizováno', + }, + sort: { + ariaLabel: 'Řadit poznámky', + title: 'Název', + updated: 'Aktualizováno', + }, + toolbar: { + bold: 'Tučně', + italic: 'Kurzíva', + link: 'Odkaz', + list: 'Seznam', + }, + }, + review: { + actions: { + again: 'Znovu', + backToDeck: 'Zpět na balíček', + continueReview: 'Pokračovat v opakování', + easy: 'Snadné', + good: 'Dobré', + hard: 'Těžké', + newNote: 'Nová poznámka', + showAnswer: 'Zobrazit odpověď', + }, + errors: { + couldNotGradeCard: 'Kartu se nepodařilo ohodnotit', + reviewCouldNotLoad: 'Opakování se nepodařilo načíst', + reviewCouldNotStart: 'Opakování se nepodařilo spustit', + summaryCouldNotLoad: 'Souhrn opakování se nepodařilo načíst', + summaryNotAvailable: 'Souhrn opakování není k dispozici', + summaryNotComplete: 'Toto opakování ještě není dokončené.', + }, + labels: { + cardsReviewed: 'Opakované karty', + deck: 'Balíček', + duration: 'Doba trvání', + loadingReview: 'Načítání opakování', + loadingSummary: 'Načítání souhrnu', + progress: 'Průběh opakování', + review: 'Opakování', + reviewComplete: 'Opakování dokončeno', + reviewed_one: 'Opakována {{count}}', + reviewed_few: 'Opakovány {{count}}', + reviewed_many: 'Opakováno {{count}}', + reviewed_other: 'Opakováno {{count}}', + }, + summary: { + durationHoursMinutes: '{{hours}} h {{minutes}} min', + durationMinutes: '{{minutes}} min', + durationSeconds: '{{seconds}} s', + saved: 'Váš postup byl uložen do tohoto balíčku.', + }, + unavailable: { + description: 'Přidejte poznámku, aby tento balíček mohl vstoupit do fronty opakování.', + title: 'Žádné karty k opakování', + }, + }, + search: { + actions: { + clearSearch: 'Vymazat hledání', + }, + empty: { + noMatchesInWorkspace: 'V tomto pracovním prostoru nejsou žádné shody', + noMatchesInWorkspaceDescription: 'Žádné složky, balíčky ani poznámky neodpovídají "{{query}}".', + }, + errors: { + couldNotComplete: 'Hledání se nepodařilo dokončit', + }, + labels: { + results: 'Výsledky hledání', + resultsFor: 'Výsledky pro "{{query}}"', + searchingContent: 'Hledání obsahu', + }, + resultGroups: { + deck: 'Balíčky', + folder: 'Složky', + note: 'Poznámky', + }, + resultKinds: { + deck: 'balíček', + folder: 'složka', + note: 'poznámka', + }, + }, + settings: { + actions: { + resetAll: 'Resetovat všechna nastavení', + resetSettings: 'Resetovat nastavení', + resetToDefaults: 'Obnovit výchozí', + }, + dialogs: { + fsrsErrorInvalidJson: 'Vložte platný JSON s 21 číselnými hodnotami.', + fsrsErrorInvalidParams_one: 'Zadejte pole JSON s přesně {{count}} konečným číslem.', + fsrsErrorInvalidParams_few: 'Zadejte pole JSON s přesně {{count}} konečnými čísly.', + fsrsErrorInvalidParams_many: 'Zadejte pole JSON s přesně {{count}} konečného čísla.', + fsrsErrorInvalidParams_other: 'Zadejte pole JSON s přesně {{count}} konečnými čísly.', + fsrsHelper: 'Toto je expertní přepsání. Hodnoty musí zůstat ve správném pořadí.', + fsrsJsonLabel: 'JSON parametrů FSRS', + fsrsTitle: 'Upravit parametry FSRS', + fsrsDescription: 'Vložte pole JSON s 21 čísly, kterým přepíšete váhy scheduler.', + resetDescription: 'Tím se obnoví časové pásmo, studijní limity a nastavení FSRS.', + resetDescriptionWithLanguage: 'Tím se obnoví jazyk, časové pásmo, studijní limity a nastavení FSRS.', + resetTitle: 'Resetovat všechna nastavení?', + timezoneDescription: 'Vyhledejte město nebo identifikátor časového pásma.', + timezoneSearchLabel: 'Hledat časová pásma', + timezoneSearchPlaceholder: 'Hledat časová pásma…', + timezoneTitle: 'Vybrat časové pásmo', + }, + errors: { + couldNotResetSettings: 'Nastavení se nepodařilo resetovat', + couldNotSaveSettings: 'Nastavení se nepodařilo uložit', + settingsCouldNotLoad: 'Nastavení se nepodařilo načíst', + settingsUnavailable: 'Nastavení nejsou k dispozici.', + }, + labels: { + appearance: 'Vzhled', + automatic: 'Automaticky', + fsrsParameters: 'Parametry FSRS', + general: 'Obecné', + language: 'Jazyk', + loadingSettings: 'Načítání nastavení', + masteryHorizon: 'Horizont zvládnutí', + newCardOrder: 'Pořadí nových karet', + newCardsPerDay: 'Nové karty za den', + reviewCardsPerDay: 'Karty k opakování za den', + savingSettings: 'Ukládání nastavení', + schedule: 'Rozvrh', + searchNoTimezones: 'Žádná odpovídající časová pásma.', + settings: 'Nastavení', + settingsReset: 'Nastavení resetována', + study: 'Studium', + targetRecallProbability: 'Cílová pravděpodobnost vybavení', + theme: 'Motiv', + timezone: 'Časové pásmo', + }, + options: { + languageEnUs: 'Angličtina (USA)', + newCardsAfterReviews: 'Po opakováních', + newCardsBeforeReviews: 'Před opakováními', + newCardsMixed: 'Smíšené', + themeDark: 'Tmavý', + themeLight: 'Světlý', + themeSystem: 'Systémový', + timezoneSystem: 'Použít systémové časové pásmo', + }, + rows: { + fsrsDescription: 'Váhy expertního modelu', + languageDescription: 'Jazyk rozhraní', + masteryHorizonDescription: 'Počet dní, po které musí karta zůstat vybavitelná na cílové pravděpodobnosti nebo výše, aby se počítala jako zvládnutá', + newCardOrderDescription: 'Pořadí nových karet vůči opakováním', + newCardsPerDayDescription: 'Maximum nových karet za den', + reviewCardsPerDayDescription: 'Maximum karet k opakování za den', + targetRecallProbabilityDescription: 'Minimální pravděpodobnost vybavení při příštím naplánovaném opakování', + timezoneDescription: 'Použijte automatické časové pásmo nebo vyberte město.', + }, + }, + trash: { + actions: { + deletePermanently: 'Smazat trvale', + empty: 'Vyprázdnit', + emptyTrash: 'Vyprázdnit koš', + restore: 'Obnovit', + restoringItem: 'Obnovování {{title}}', + }, + dialogs: { + deleteItemDescription: 'Tím se "{{title}}" trvale smaže. Tuto akci nelze vrátit zpět.', + deleteItemFallbackDescription: 'Tím se tato položka trvale smaže. Tuto akci nelze vrátit zpět.', + deleteItemFallbackTitle: 'Smazat položku?', + deleteItemTitle: 'Smazat "{{title}}"?', + emptyTrashDescription: 'Tím se trvale smaže vše v Koši. Tuto akci nelze vrátit zpět.', + emptyTrashTitle: 'Vyprázdnit koš?', + }, + empty: { + description: 'Položky, které smažete, se před trvalým odstraněním zobrazí zde.', + title: 'Koš je prázdný', + }, + errors: { + couldNotDeleteItem: 'Položku se nepodařilo smazat', + couldNotEmptyTrash: 'Koš se nepodařilo vyprázdnit', + couldNotRestoreItem: 'Položku se nepodařilo obnovit', + trashCouldNotLoad: 'Koš se nepodařilo načíst', + trashMayBeOutOfDate: 'Koš může být zastaralý', + }, + labels: { + deletedAge: 'Smazáno {{value}}', + itemCount_one: '{{count}} položka', + itemCount_few: '{{count}} položky', + itemCount_many: '{{count}} položky', + itemCount_other: '{{count}} položek', + lastEmptied: 'Naposledy vyprázdněno {{value}}', + loadingTrash: 'Načítání Koše', + originalLocation: 'Původní umístění: {{location}}', + title: 'Koš', + trashActions: 'Akce koše pro {{title}}', + }, + kinds: { + deck: 'Balíček', + folder: 'Složka', + note: 'Poznámka', + workspace: 'Pracovní prostor', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Vytvořit pracovní prostor', + deleteWorkspace: 'Smazat pracovní prostor', + editWorkspace: 'Upravit pracovní prostor', + newWorkspace: 'Nový pracovní prostor', + openWorkspace: 'Otevřít {{title}}', + openingWorkspace: 'Otevírání {{title}}', + }, + descriptions: { + editorDefault: 'Studijní kontext.', + editorVisual: 'Vyberte vizuální kotvu pro tento pracovní prostor.', + emptyList: 'Oddělte balíčky, poznámky a fronty opakování podle studijního kontextu.', + }, + dialogs: { + deleteWorkspaceDescription: 'Tím se "{{title}}" přesune do Koše. Později ho můžete obnovit.', + deleteWorkspaceFallbackDescription: 'Tím se tento pracovní prostor přesune do Koše. Později ho můžete obnovit.', + deleteWorkspaceFallbackTitle: 'Smazat pracovní prostor?', + deleteWorkspaceTitle: 'Smazat "{{title}}"?', + }, + empty: { + startWithWorkspace: 'Začněte pracovním prostorem', + }, + errors: { + couldNotCreateWorkspace: 'Pracovní prostor se nepodařilo vytvořit', + couldNotDeleteWorkspace: 'Pracovní prostor se nepodařilo smazat', + couldNotOpenWorkspace: 'Pracovní prostor se nepodařilo otevřít', + couldNotSaveWorkspace: 'Pracovní prostor se nepodařilo uložit', + workspaceCouldNotLoad: 'Pracovní prostor se nepodařilo načíst', + workspacesCouldNotLoad: 'Pracovní prostory se nepodařilo načíst', + }, + fields: { + descriptionLabel: 'Popis pracovního prostoru', + descriptionPlaceholder: 'Co patří do tohoto pracovního prostoru?', + namePlaceholder: 'Název pracovního prostoru', + untitledWorkspace: 'Pracovní prostor bez názvu', + }, + labels: { + createWorkspaceTitle: 'Vytvořit pracovní prostor', + loadingWorkspaces: 'Načítání pracovních prostorů', + workspace: 'Pracovní prostor', + workspaces: 'Pracovní prostory', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/da.ts b/ui/src/core/i18n/resources/da.ts new file mode 100644 index 0000000..75cd673 --- /dev/null +++ b/ui/src/core/i18n/resources/da.ts @@ -0,0 +1,623 @@ +export const da = { + bootstrap: { + error: { + fallbackMessage: 'Prøv igen. Hvis det bliver ved, skal du åbne Clear igen.', + title: 'Kunne ikke starte', + }, + loadingTitle: 'Forbereder dit studieområde', + }, + common: { + actions: { + back: 'Tilbage', + cancel: 'Annuller', + checkAgain: 'Tjek igen', + close: 'Luk', + create: 'Opret', + delete: 'Slet', + dismissError: 'Afvis fejl', + dismissStatus: 'Afvis status', + edit: 'Rediger', + itemActions: 'Handlinger for {{title}}', + reset: 'Nulstil', + review: 'Gentag', + save: 'Gem', + saveChanges: 'Gem ændringer', + tryAgain: 'Prøv igen', + }, + labels: { + active: 'Aktiv', + clear: 'Clear', + custom: 'Tilpasset', + default: 'Standard', + loadingEditor: 'Indlæser editor', + name: 'Navn', + completedTask: 'Fuldført opgave', + description: 'Beskrivelse', + incompleteTask: 'Ufuldført opgave', + percentageInput: '{{label}} i procent', + visual: 'Visuel', + }, + status: { + actionFailed: 'Handlingen mislykkedes', + actionInProgress: 'Handling i gang', + }, + sort: { + ascending: 'Stig.', + column: 'Kolonne', + descending: 'Fald.', + direction: 'Retning', + sort: 'Sortér', + }, + search: { + label: 'Søg', + }, + visualPicker: { + allLucideIcons: 'Alle Lucide-ikoner', + browseIconsFor: 'Gennemse eller søg efter ikoner til {{label}}.', + chooseIcon: 'Vælg ikon', + iconPicker: 'Ikonvælger til {{label}}', + iconSearch: 'Ikonsøgning til {{label}}', + iconsCouldNotLoad: 'Ikonerne kunne ikke indlæses.', + loadingIcons: 'Indlæser ikoner', + loadingMoreIcons: 'Indlæser flere ikoner', + moreIcons: 'Flere ikoner', + noIconsMatch: 'Ingen ikoner matcher "{{query}}".', + searchIconsPlaceholder: 'Søg efter ikoner…', + selectedIcon: '{{label}} valgt', + }, + }, + dashboard: { + actions: { + create: 'Opret', + newDeck: 'Nyt kortsæt', + newFolder: 'Ny mappe', + }, + descriptions: { + defaultWorkspace: 'Hold kortsæt, mapper og noter samlet.', + emptyWorkspace: 'Opret et kortsæt, og tilføj derefter noter for at opbygge din gentagelseskø.', + emptyFolder: 'Opret et kortsæt, og tilføj derefter noter for at opbygge en gentagelseskø.', + searchPlaceholder: 'Søg efter mapper, kortsæt og noter…', + }, + empty: { + createFirstDeck: 'Opret dit første kortsæt', + }, + errors: { + couldNotDeleteDeck: 'Kortsættet kunne ikke slettes', + couldNotDeleteFolder: 'Mappen kunne ikke slettes', + couldNotDeleteWorkspace: 'Arbejdsområdet kunne ikke slettes', + dashboardCouldNotOpen: 'Dashboardet kunne ikke åbnes', + decksCouldNotLoad: 'Kortsæt kunne ikke indlæses', + decksMayBeOutOfDate: 'Kortsæt kan være forældede', + foldersCouldNotLoad: 'Mapper kunne ikke indlæses', + foldersMayBeOutOfDate: 'Mapper kan være forældede', + workspaceCouldNotLoad: 'Arbejdsområdet kunne ikke indlæses', + }, + labels: { + dashboard: 'Dashboard', + loadingDashboard: 'Indlæser dashboard', + newItem: 'Nyt element', + }, + }, + dates: { + absolute: { + unavailable: 'Dato utilgængelig', + }, + age: { + dayAgo_one: '{{count}} dag siden', + dayAgo_other: '{{count}} dage siden', + hourAgo_one: '{{count}} time siden', + hourAgo_other: '{{count}} timer siden', + justNow: 'lige nu', + minuteAgo_one: '{{count}} minut siden', + minuteAgo_other: '{{count}} minutter siden', + unavailable: 'dato utilgængelig', + weekAgo_one: '{{count}} uge siden', + weekAgo_other: '{{count}} uger siden', + }, + labels: { + deleted: 'Slettet {{value}}', + due: 'Forfalder: {{value}}', + reviewed: 'Gentaget: {{value}}', + updated: 'Opdateret {{value}}', + updatedUppercase: 'OPDATERET {{value}}', + }, + relative: { + dayAgo_one: '{{count}} dag siden', + dayAgo_other: '{{count}} dage siden', + inAMoment: 'Om et øjeblik', + inDay_one: 'Om {{count}} dag', + inDay_other: 'Om {{count}} dage', + inMonth_one: 'Om {{count}} måned', + inMonth_other: 'Om {{count}} måneder', + inWeek_one: 'Om {{count}} uge', + inWeek_other: 'Om {{count}} uger', + justNow: 'Lige nu', + monthAgo_one: '{{count}} måned siden', + monthAgo_other: '{{count}} måneder siden', + secondsAgoShort: '{{count}} s siden', + minutesAgoShort: '{{count}} min siden', + hoursAgoShort: '{{count}} t siden', + today: 'I dag', + tomorrow: 'I morgen', + weekAgo_one: '{{count}} uge siden', + weekAgo_other: '{{count}} uger siden', + yesterday: 'I går', + }, + }, + decks: { + actions: { + actionMenu: 'Handlinger for {{title}}', + createDeck: 'Opret kortsæt', + createNote: 'Opret note', + deleteDeck: 'Slet kortsæt', + editDeck: 'Rediger kortsæt', + newNote: 'Ny note', + openDeck: 'Åbn kortsættet {{title}}', + saveDeck: 'Kortsættet kunne ikke gemmes', + studyNow: 'Studér nu', + }, + descriptions: { + emptyDeck: 'Tilføj en note, så dette kortsæt har materiale til gentagelse.', + editorDefault: 'Fokuseret studiekortsæt.', + editorVisual: 'Vælg et omslagssymbol til dette kortsæt.', + notesSearchPlaceholder: 'Søg i noter…', + }, + dialogs: { + deleteDeckDescription: 'Dette flytter "{{title}}" til Papirkurv. Du kan gendanne det senere.', + deleteDeckFallbackDescription: 'Dette flytter dette kortsæt til Papirkurv. Du kan gendanne det senere.', + deleteDeckFallbackTitle: 'Slet kortsæt?', + deleteDeckTitle: 'Slet "{{title}}"?', + deleteNoteDescription: 'Dette flytter "{{title}}" til Papirkurv. Du kan gendanne den senere.', + deleteNoteFallbackTitle: 'Slet note?', + deleteNoteTitle: 'Slet "{{title}}"?', + }, + empty: { + noMatchingNotes: 'Ingen matchende noter', + noMatchingNotesDescription: 'Ingen noter matchede "{{query}}".', + thisDeckIsEmpty: 'Dette kortsæt er tomt', + }, + errors: { + couldNotCreateDeck: 'Kortsættet kunne ikke oprettes', + couldNotDeleteDeck: 'Kortsættet kunne ikke slettes', + couldNotDeleteNote: 'Noten kunne ikke slettes', + couldNotLoadFolderPath: 'Mappestien kunne ikke indlæses', + couldNotSaveDeck: 'Kortsættet kunne ikke gemmes', + deckCouldNotLoad: 'Kortsættet kunne ikke indlæses', + notesCouldNotLoad: 'Noter kunne ikke indlæses', + notesMayBeOutOfDate: 'Noter kan være forældede', + }, + fields: { + descriptionLabel: 'Beskrivelse af kortsæt', + descriptionPlaceholder: 'Hvad skal dette kortsæt hjælpe dig med at gentage?', + namePlaceholder: 'Navn på kortsæt', + untitledDeck: 'Kortsæt uden titel', + untitledDeckLower: 'kortsæt uden titel', + }, + labels: { + createDeckTitle: 'Opret kortsæt', + deck: 'Kortsæt', + deckNotesSearch: 'Søg i kortsætnoter', + deckOverview: 'Oversigt over kortsæt', + decks: 'Kortsæt', + due: 'Forfalder', + dueToday: 'Forfalder i dag', + loadingDeck: 'Indlæser kortsæt', + mastery: 'Beherskelse', + notes: 'Noter', + }, + sort: { + ariaLabel: 'Sortér kortsæt', + dueToday: 'Forfalder i dag', + title: 'Titel', + updated: 'Opdateret', + }, + }, + errors: { + byType: { + conflict: 'Dataene blev ændret. Opdater, og prøv igen.', + forbidden: 'Du har ikke tilladelse til dette.', + notFound: 'Vi kunne ikke finde dette element.', + offline: 'Kan ikke nå tjenesten.', + timeout: 'Dette tog for lang tid. Prøv igen.', + unauthorized: 'Log ind for at fortsætte.', + unavailable: 'Tjenesten er midlertidigt utilgængelig.', + }, + fallback: { + unexpected: 'Uventet fejl', + }, + }, + folders: { + actions: { + createFolder: 'Opret mappe', + deleteFolder: 'Slet mappe', + editFolder: 'Rediger mappe', + }, + descriptions: { + editorDefault: 'Mappe til relaterede kortsæt.', + }, + dialogs: { + deleteFolderDescription: 'Dette flytter "{{name}}" til Papirkurv. Du kan gendanne den senere.', + deleteFolderFallbackDescription: 'Dette flytter denne mappe til Papirkurv. Du kan gendanne den senere.', + deleteFolderFallbackTitle: 'Slet mappe?', + deleteFolderTitle: 'Slet "{{name}}"?', + }, + empty: { + noMatchesInFolder: 'Ingen match i denne mappe', + noMatchesInFolderDescription: 'Ingen mapper, kortsæt eller noter matchede "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'Mappen kunne ikke oprettes', + couldNotDeleteFolder: 'Mappen kunne ikke slettes', + couldNotLoadFolderPath: 'Mappestien kunne ikke indlæses', + couldNotSaveFolder: 'Mappen kunne ikke gemmes', + folderCouldNotLoad: 'Mappen kunne ikke indlæses', + }, + fields: { + descriptionLabel: 'Mappebeskrivelse', + descriptionPlaceholder: 'Hvad hører hjemme i denne mappe?', + namePlaceholder: 'Mappenavn', + untitledFolder: 'Mappe uden titel', + }, + labels: { + createFolderTitle: 'Opret mappe', + folder: 'Mappe', + folders: 'Mapper', + loadingFolder: 'Indlæser mappe', + name: 'Navn', + updated: 'Opdateret', + }, + sort: { + ariaLabel: 'Sortér mapper', + name: 'Navn', + updated: 'Opdateret', + }, + }, + menu: { + conflicts: { + description: 'Hvis lokale og synkroniserede data nogensinde er forskellige, vises elementet her.', + heading: 'Synkroniseringsstatus', + title: 'Konflikter', + noConflicts: 'Ingen konflikter fundet', + }, + labels: { + menu: 'Menu', + }, + sections: { + settings: { + description: 'Tilpas dit miljø og dine præferencer', + title: 'Indstillinger', + }, + trash: { + description: 'Gendan eller slet fjernede elementer permanent', + title: 'Papirkurv', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Luk editor', + openActions: 'Åbn handlinger', + openWorkspaces: 'Åbn arbejdsområder', + }, + items: { + home: 'Hjem', + menu: 'Menu', + primary: 'Primær', + settings: 'Indstillinger', + spaces: 'Områder', + trash: 'Papirkurv', + workspaces: 'Arbejdsområder', + }, + }, + notes: { + actions: { + addCloze: 'Tilføj cloze', + deleteNote: 'Slet note', + editNote: 'Rediger note', + hideDerivedCardsNote: 'Skjul note om afledte kort', + openNote: 'Åbn {{title}}', + saveNote: 'Gem note', + showDerivedCardsNote: 'Vis note om afledte kort', + }, + descriptions: { + clozeFormat: 'Hver skjult del bliver til et gentagelseskort, når du gemmer.', + clozeFormatPrefix: 'Ombryd skjult tekst med', + derivedCardsHelper: 'Noter er sandhedskilden for afledte kort.', + }, + dialogs: { + deleteNoteDescription: 'Dette flytter "{{title}}" til Papirkurv. Du kan gendanne den senere.', + deleteNoteFallbackDescription: 'Dette flytter denne note til Papirkurv. Du kan gendanne den senere.', + deleteNoteFallbackTitle: 'Slet note?', + deleteNoteTitle: 'Slet "{{title}}"?', + }, + errors: { + couldNotCreateNote: 'Noten kunne ikke oprettes', + couldNotDeleteNote: 'Noten kunne ikke slettes', + couldNotSaveNote: 'Noten kunne ikke gemmes', + noteCouldNotLoad: 'Noten kunne ikke indlæses', + }, + fields: { + back: 'Bagside', + backPlaceholder: 'Indtast bagside', + bodyPlaceholder: 'Skriv notens indhold med cloze-sletninger…', + front: 'Forside', + frontPlaceholder: 'Indtast forside', + noteBody: 'Noteindhold', + title: 'Titel', + titlePlaceholder: 'Tilføj en notetitel', + untitledCloze: 'Cloze uden titel', + untitledNote: 'Note uden titel', + }, + labels: { + backUppercase: 'BAGSIDE', + basic: 'Grundlæggende', + basicLower: 'grundlæggende', + basicUppercase: 'GRUNDLÆGGENDE', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Cloze-format', + clozeUppercase: 'CLOZE', + deck: 'Kortsæt', + derivedCards: 'AFLEDTE KORT', + due: 'Forfalder', + frontUppercase: 'FORSIDE', + inProgress: 'I gang', + inProgressUppercase: 'I GANG', + loadingNote: 'Indlæser note', + loadingNoteEditor: 'Indlæser noteeditor', + markdownFormatting: 'Markdown-formatering', + mastered: 'Behersket', + masteredUppercase: 'BEHERSKET', + newNote: 'Ny note', + noteBody: 'NOTEINDHOLD', + noteContent: 'Noteindhold', + noteDetails: 'Notedetaljer', + noteMetadata: 'Notemetadata', + noteType: 'Notetype', + notes: 'Noter', + reviewed: 'Gentaget', + studyProgress: 'Studiefremskridt', + studyProgressUppercase: 'STUDIEFREMSKRIDT', + titleUppercase: 'TITEL', + updated: 'Opdateret', + }, + sort: { + ariaLabel: 'Sortér noter', + title: 'Titel', + updated: 'Opdateret', + }, + toolbar: { + bold: 'Fed', + italic: 'Kursiv', + link: 'Link', + list: 'Liste', + }, + }, + review: { + actions: { + again: 'Igen', + backToDeck: 'Tilbage til kortsæt', + continueReview: 'Fortsæt gentagelse', + easy: 'Let', + good: 'God', + hard: 'Svær', + newNote: 'Ny note', + showAnswer: 'Vis svar', + }, + errors: { + couldNotGradeCard: 'Kortet kunne ikke bedømmes', + reviewCouldNotLoad: 'Gentagelsen kunne ikke indlæses', + reviewCouldNotStart: 'Gentagelsen kunne ikke startes', + summaryCouldNotLoad: 'Gentagelsesoversigten kunne ikke indlæses', + summaryNotAvailable: 'Gentagelsesoversigten er ikke tilgængelig', + summaryNotComplete: 'Denne gentagelse er ikke færdig endnu.', + }, + labels: { + cardsReviewed: 'Gentagne kort', + deck: 'Kortsæt', + duration: 'Varighed', + loadingReview: 'Indlæser gentagelse', + loadingSummary: 'Indlæser oversigt', + progress: 'Gentagelsesfremgang', + review: 'Gentagelse', + reviewComplete: 'Gentagelse fuldført', + reviewed_one: 'Gentaget {{count}}', + reviewed_other: 'Gentaget {{count}}', + }, + summary: { + durationHoursMinutes: '{{hours}} t {{minutes}} min', + durationMinutes: '{{minutes}} min', + durationSeconds: '{{seconds}} s', + saved: 'Dine fremskridt blev gemt i dette kortsæt.', + }, + unavailable: { + description: 'Tilføj en note, så dette kortsæt kan komme i gentagelseskøen.', + title: 'Ingen kort at gentage', + }, + }, + search: { + actions: { + clearSearch: 'Ryd søgning', + }, + empty: { + noMatchesInWorkspace: 'Ingen match i dette arbejdsområde', + noMatchesInWorkspaceDescription: 'Ingen mapper, kortsæt eller noter matchede "{{query}}".', + }, + errors: { + couldNotComplete: 'Søgningen kunne ikke fuldføres', + }, + labels: { + results: 'Søgeresultater', + resultsFor: 'Resultater for "{{query}}"', + searchingContent: 'Søger i indhold', + }, + resultGroups: { + deck: 'Kortsæt', + folder: 'Mapper', + note: 'Noter', + }, + resultKinds: { + deck: 'kortsæt', + folder: 'mappe', + note: 'note', + }, + }, + settings: { + actions: { + resetAll: 'Nulstil alle indstillinger', + resetSettings: 'Nulstil indstillinger', + resetToDefaults: 'Gendan standarder', + }, + dialogs: { + fsrsErrorInvalidJson: 'Indsæt gyldig JSON med 21 numeriske værdier.', + fsrsErrorInvalidParams_one: 'Indtast et JSON-array med præcis {{count}} endeligt tal.', + fsrsErrorInvalidParams_other: 'Indtast et JSON-array med præcis {{count}} endelige tal.', + fsrsHelper: 'Dette er en ekspertoverskrivning. Værdierne skal forblive i rækkefølge.', + fsrsJsonLabel: 'FSRS-parametre JSON', + fsrsTitle: 'Rediger FSRS-parametre', + fsrsDescription: 'Indsæt et JSON-array med 21 tal for at overskrive scheduler-vægtene.', + resetDescription: 'Dette gendanner tidszone, studiegrænser og FSRS-indstillinger.', + resetDescriptionWithLanguage: 'Dette gendanner sprog, tidszone, studiegrænser og FSRS-indstillinger.', + resetTitle: 'Nulstil alle indstillinger?', + timezoneDescription: 'Søg efter en by eller tidszoneidentifikator.', + timezoneSearchLabel: 'Søg tidszoner', + timezoneSearchPlaceholder: 'Søg tidszoner…', + timezoneTitle: 'Vælg tidszone', + }, + errors: { + couldNotResetSettings: 'Indstillingerne kunne ikke nulstilles', + couldNotSaveSettings: 'Indstillingerne kunne ikke gemmes', + settingsCouldNotLoad: 'Indstillingerne kunne ikke indlæses', + settingsUnavailable: 'Indstillinger er ikke tilgængelige.', + }, + labels: { + appearance: 'Udseende', + automatic: 'Automatisk', + fsrsParameters: 'FSRS-parametre', + general: 'Generelt', + language: 'Sprog', + loadingSettings: 'Indlæser indstillinger', + masteryHorizon: 'Beherskelseshorisont', + newCardOrder: 'Rækkefølge for nye kort', + newCardsPerDay: 'Nye kort pr. dag', + reviewCardsPerDay: 'Gentagelseskort pr. dag', + savingSettings: 'Gemmer indstillinger', + schedule: 'Plan', + searchNoTimezones: 'Ingen matchende tidszoner.', + settings: 'Indstillinger', + settingsReset: 'Indstillinger nulstillet', + study: 'Studie', + targetRecallProbability: 'Målsandsynlighed for genkaldelse', + theme: 'Tema', + timezone: 'Tidszone', + }, + options: { + languageEnUs: 'Engelsk (USA)', + newCardsAfterReviews: 'Efter gentagelser', + newCardsBeforeReviews: 'Før gentagelser', + newCardsMixed: 'Blandet', + themeDark: 'Mørk', + themeLight: 'Lys', + themeSystem: 'System', + timezoneSystem: 'Brug systemets tidszone', + }, + rows: { + fsrsDescription: 'Ekspertmodelvægte', + languageDescription: 'Grænsefladesprog', + masteryHorizonDescription: 'Antal dage et kort skal forblive genkaldeligt ved eller over målsandsynligheden for at tælle som behersket', + newCardOrderDescription: 'Rækkefølge for nye kort i forhold til gentagelser', + newCardsPerDayDescription: 'Maksimalt antal nye kort pr. dag', + reviewCardsPerDayDescription: 'Maksimalt antal gentagelseskort pr. dag', + targetRecallProbabilityDescription: 'Minimumssandsynlighed for genkaldelse ved næste planlagte gentagelse', + timezoneDescription: 'Brug automatisk tidszone, eller vælg en by.', + }, + }, + trash: { + actions: { + deletePermanently: 'Slet permanent', + empty: 'Tøm', + emptyTrash: 'Tøm papirkurv', + restore: 'Gendan', + restoringItem: 'Gendanner {{title}}', + }, + dialogs: { + deleteItemDescription: 'Dette sletter "{{title}}" permanent. Det kan ikke fortrydes.', + deleteItemFallbackDescription: 'Dette sletter dette element permanent. Det kan ikke fortrydes.', + deleteItemFallbackTitle: 'Slet element?', + deleteItemTitle: 'Slet "{{title}}"?', + emptyTrashDescription: 'Dette sletter alt i Papirkurv permanent. Det kan ikke fortrydes.', + emptyTrashTitle: 'Tøm papirkurv?', + }, + empty: { + description: 'Elementer, du sletter, vises her før permanent fjernelse.', + title: 'Papirkurven er tom', + }, + errors: { + couldNotDeleteItem: 'Elementet kunne ikke slettes', + couldNotEmptyTrash: 'Papirkurven kunne ikke tømmes', + couldNotRestoreItem: 'Elementet kunne ikke gendannes', + trashCouldNotLoad: 'Papirkurven kunne ikke indlæses', + trashMayBeOutOfDate: 'Papirkurven kan være forældet', + }, + labels: { + deletedAge: 'Slettet {{value}}', + itemCount_one: '{{count}} element', + itemCount_other: '{{count}} elementer', + lastEmptied: 'Sidst tømt {{value}}', + loadingTrash: 'Indlæser Papirkurv', + originalLocation: 'Oprindelig placering: {{location}}', + title: 'Papirkurv', + trashActions: 'Papirkurvshandlinger for {{title}}', + }, + kinds: { + deck: 'Kortsæt', + folder: 'Mappe', + note: 'Note', + workspace: 'Arbejdsområde', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Opret arbejdsområde', + deleteWorkspace: 'Slet arbejdsområde', + editWorkspace: 'Rediger arbejdsområde', + newWorkspace: 'Nyt arbejdsområde', + openWorkspace: 'Åbn {{title}}', + openingWorkspace: 'Åbner {{title}}', + }, + descriptions: { + editorDefault: 'Studiekontekst.', + editorVisual: 'Vælg et visuelt anker til dette arbejdsområde.', + emptyList: 'Adskil kortsæt, noter og gentagelseskøer efter studiekontekst.', + }, + dialogs: { + deleteWorkspaceDescription: 'Dette flytter "{{title}}" til Papirkurv. Du kan gendanne det senere.', + deleteWorkspaceFallbackDescription: 'Dette flytter dette arbejdsområde til Papirkurv. Du kan gendanne det senere.', + deleteWorkspaceFallbackTitle: 'Slet arbejdsområde?', + deleteWorkspaceTitle: 'Slet "{{title}}"?', + }, + empty: { + startWithWorkspace: 'Start med et arbejdsområde', + }, + errors: { + couldNotCreateWorkspace: 'Arbejdsområdet kunne ikke oprettes', + couldNotDeleteWorkspace: 'Arbejdsområdet kunne ikke slettes', + couldNotOpenWorkspace: 'Arbejdsområdet kunne ikke åbnes', + couldNotSaveWorkspace: 'Arbejdsområdet kunne ikke gemmes', + workspaceCouldNotLoad: 'Arbejdsområdet kunne ikke indlæses', + workspacesCouldNotLoad: 'Arbejdsområder kunne ikke indlæses', + }, + fields: { + descriptionLabel: 'Beskrivelse af arbejdsområde', + descriptionPlaceholder: 'Hvad hører hjemme i dette arbejdsområde?', + namePlaceholder: 'Navn på arbejdsområde', + untitledWorkspace: 'Arbejdsområde uden titel', + }, + labels: { + createWorkspaceTitle: 'Opret arbejdsområde', + loadingWorkspaces: 'Indlæser arbejdsområder', + workspace: 'Arbejdsområde', + workspaces: 'Arbejdsområder', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/de.ts b/ui/src/core/i18n/resources/de.ts new file mode 100644 index 0000000..41d3aeb --- /dev/null +++ b/ui/src/core/i18n/resources/de.ts @@ -0,0 +1,623 @@ +export const de = { + bootstrap: { + error: { + fallbackMessage: 'Versuche es erneut. Wenn das Problem bleibt, öffne Clear neu.', + title: 'Start fehlgeschlagen', + }, + loadingTitle: 'Dein Lernbereich wird vorbereitet', + }, + common: { + actions: { + back: 'Zurück', + cancel: 'Abbrechen', + checkAgain: 'Erneut prüfen', + close: 'Schließen', + create: 'Erstellen', + delete: 'Löschen', + dismissError: 'Fehler ausblenden', + dismissStatus: 'Status ausblenden', + edit: 'Bearbeiten', + itemActions: 'Aktionen für {{title}}', + reset: 'Zurücksetzen', + review: 'Wiederholen', + save: 'Speichern', + saveChanges: 'Änderungen speichern', + tryAgain: 'Erneut versuchen', + }, + labels: { + active: 'Aktiv', + clear: 'Clear', + custom: 'Benutzerdefiniert', + default: 'Standard', + loadingEditor: 'Editor wird geladen', + name: 'Name', + completedTask: 'Aufgabe erledigt', + description: 'Beschreibung', + incompleteTask: 'Aufgabe offen', + percentageInput: '{{label}} in Prozent', + visual: 'Visuell', + }, + status: { + actionFailed: 'Aktion fehlgeschlagen', + actionInProgress: 'Aktion läuft', + }, + sort: { + ascending: 'Aufst.', + column: 'Spalte', + descending: 'Abst.', + direction: 'Richtung', + sort: 'Sortieren', + }, + search: { + label: 'Suchen', + }, + visualPicker: { + allLucideIcons: 'Alle Lucide-Symbole', + browseIconsFor: 'Symbole für {{label}} durchsuchen.', + chooseIcon: 'Symbol wählen', + iconPicker: 'Symbolauswahl für {{label}}', + iconSearch: 'Symbolsuche für {{label}}', + iconsCouldNotLoad: 'Symbole konnten nicht geladen werden.', + loadingIcons: 'Symbole werden geladen', + loadingMoreIcons: 'Weitere Symbole werden geladen', + moreIcons: 'Weitere Symbole', + noIconsMatch: 'Keine Symbole passen zu "{{query}}".', + searchIconsPlaceholder: 'Symbole suchen…', + selectedIcon: '{{label}} ausgewählt', + }, + }, + dashboard: { + actions: { + create: 'Erstellen', + newDeck: 'Neuer Stapel', + newFolder: 'Neuer Ordner', + }, + descriptions: { + defaultWorkspace: 'Halte Stapel, Ordner und Notizen zusammen.', + emptyWorkspace: 'Erstelle einen Stapel und füge Notizen für deine Wiederholungen hinzu.', + emptyFolder: 'Erstelle einen Stapel und füge Notizen für eine Wiederholungsliste hinzu.', + searchPlaceholder: 'Ordner, Stapel und Notizen suchen…', + }, + empty: { + createFirstDeck: 'Erstelle deinen ersten Stapel', + }, + errors: { + couldNotDeleteDeck: 'Stapel konnte nicht gelöscht werden', + couldNotDeleteFolder: 'Ordner konnte nicht gelöscht werden', + couldNotDeleteWorkspace: 'Arbeitsbereich konnte nicht gelöscht werden', + dashboardCouldNotOpen: 'Dashboard konnte nicht geöffnet werden', + decksCouldNotLoad: 'Stapel konnten nicht geladen werden', + decksMayBeOutOfDate: 'Stapel sind möglicherweise veraltet', + foldersCouldNotLoad: 'Ordner konnten nicht geladen werden', + foldersMayBeOutOfDate: 'Ordner sind möglicherweise veraltet', + workspaceCouldNotLoad: 'Arbeitsbereich konnte nicht geladen werden', + }, + labels: { + dashboard: 'Dashboard', + loadingDashboard: 'Dashboard wird geladen', + newItem: 'Neues Element', + }, + }, + dates: { + absolute: { + unavailable: 'Datum nicht verfügbar', + }, + age: { + dayAgo_one: 'vor {{count}} Tag', + dayAgo_other: 'vor {{count}} Tagen', + hourAgo_one: 'vor {{count}} Stunde', + hourAgo_other: 'vor {{count}} Stunden', + justNow: 'gerade eben', + minuteAgo_one: 'vor {{count}} Minute', + minuteAgo_other: 'vor {{count}} Minuten', + unavailable: 'Datum nicht verfügbar', + weekAgo_one: 'vor {{count}} Woche', + weekAgo_other: 'vor {{count}} Wochen', + }, + labels: { + deleted: 'Gelöscht {{value}}', + due: 'Fällig: {{value}}', + reviewed: 'Wiederholt: {{value}}', + updated: 'Aktualisiert {{value}}', + updatedUppercase: 'AKTUALISIERT {{value}}', + }, + relative: { + dayAgo_one: 'vor {{count}} Tag', + dayAgo_other: 'vor {{count}} Tagen', + inAMoment: 'Gleich', + inDay_one: 'In {{count}} Tag', + inDay_other: 'In {{count}} Tagen', + inMonth_one: 'In {{count}} Monat', + inMonth_other: 'In {{count}} Monaten', + inWeek_one: 'In {{count}} Woche', + inWeek_other: 'In {{count}} Wochen', + justNow: 'Gerade eben', + monthAgo_one: 'vor {{count}} Monat', + monthAgo_other: 'vor {{count}} Monaten', + secondsAgoShort: 'vor {{count}} s', + minutesAgoShort: 'vor {{count}} min', + hoursAgoShort: 'vor {{count}} h', + today: 'Heute', + tomorrow: 'Morgen', + weekAgo_one: 'vor {{count}} Woche', + weekAgo_other: 'vor {{count}} Wochen', + yesterday: 'Gestern', + }, + }, + decks: { + actions: { + actionMenu: 'Aktionen für {{title}}', + createDeck: 'Stapel erstellen', + createNote: 'Notiz erstellen', + deleteDeck: 'Stapel löschen', + editDeck: 'Stapel bearbeiten', + newNote: 'Neue Notiz', + openDeck: 'Stapel {{title}} öffnen', + saveDeck: 'Stapel konnte nicht gespeichert werden', + studyNow: 'Jetzt lernen', + }, + descriptions: { + emptyDeck: 'Füge eine Notiz hinzu, damit dieser Stapel Wiederholungsstoff hat.', + editorDefault: 'Fokussierter Lernstapel.', + editorVisual: 'Wähle ein Titelzeichen für diesen Stapel.', + notesSearchPlaceholder: 'Notizen suchen…', + }, + dialogs: { + deleteDeckDescription: 'Dadurch wird "{{title}}" in den Papierkorb verschoben. Du kannst es später wiederherstellen.', + deleteDeckFallbackDescription: 'Dadurch wird dieser Stapel in den Papierkorb verschoben. Du kannst ihn später wiederherstellen.', + deleteDeckFallbackTitle: 'Stapel löschen?', + deleteDeckTitle: '"{{title}}" löschen?', + deleteNoteDescription: 'Dadurch wird "{{title}}" in den Papierkorb verschoben. Du kannst sie später wiederherstellen.', + deleteNoteFallbackTitle: 'Notiz löschen?', + deleteNoteTitle: '"{{title}}" löschen?', + }, + empty: { + noMatchingNotes: 'Keine passenden Notizen', + noMatchingNotesDescription: 'Keine Notizen passen zu "{{query}}".', + thisDeckIsEmpty: 'Dieser Stapel ist leer', + }, + errors: { + couldNotCreateDeck: 'Stapel konnte nicht erstellt werden', + couldNotDeleteDeck: 'Stapel konnte nicht gelöscht werden', + couldNotDeleteNote: 'Notiz konnte nicht gelöscht werden', + couldNotLoadFolderPath: 'Ordnerpfad konnte nicht geladen werden', + couldNotSaveDeck: 'Stapel konnte nicht gespeichert werden', + deckCouldNotLoad: 'Stapel konnte nicht geladen werden', + notesCouldNotLoad: 'Notizen konnten nicht geladen werden', + notesMayBeOutOfDate: 'Notizen sind möglicherweise veraltet', + }, + fields: { + descriptionLabel: 'Stapelbeschreibung', + descriptionPlaceholder: 'Was hilft dir dieser Stapel zu wiederholen?', + namePlaceholder: 'Stapelname', + untitledDeck: 'Unbenannter Stapel', + untitledDeckLower: 'unbenannter Stapel', + }, + labels: { + createDeckTitle: 'Stapel erstellen', + deck: 'Stapel', + deckNotesSearch: 'Notizen im Stapel suchen', + deckOverview: 'Stapelübersicht', + decks: 'Stapel', + due: 'Fällig', + dueToday: 'Heute fällig', + loadingDeck: 'Stapel wird geladen', + mastery: 'Beherrschung', + notes: 'Notizen', + }, + sort: { + ariaLabel: 'Stapel sortieren', + dueToday: 'Heute fällig', + title: 'Titel', + updated: 'Aktualisiert', + }, + }, + errors: { + byType: { + conflict: 'Die Daten haben sich geändert. Aktualisiere und versuche es erneut.', + forbidden: 'Du hast keine Berechtigung dafür.', + notFound: 'Wir konnten dieses Element nicht finden.', + offline: 'Der Dienst ist nicht erreichbar.', + timeout: 'Das hat zu lange gedauert. Versuche es erneut.', + unauthorized: 'Melde dich an, um fortzufahren.', + unavailable: 'Der Dienst ist vorübergehend nicht verfügbar.', + }, + fallback: { + unexpected: 'Unerwarteter Fehler', + }, + }, + folders: { + actions: { + createFolder: 'Ordner erstellen', + deleteFolder: 'Ordner löschen', + editFolder: 'Ordner bearbeiten', + }, + descriptions: { + editorDefault: 'Ordner für verwandte Stapel.', + }, + dialogs: { + deleteFolderDescription: 'Dadurch wird "{{name}}" in den Papierkorb verschoben. Du kannst ihn später wiederherstellen.', + deleteFolderFallbackDescription: 'Dadurch wird dieser Ordner in den Papierkorb verschoben. Du kannst ihn später wiederherstellen.', + deleteFolderFallbackTitle: 'Ordner löschen?', + deleteFolderTitle: '"{{name}}" löschen?', + }, + empty: { + noMatchesInFolder: 'Keine Treffer in diesem Ordner', + noMatchesInFolderDescription: 'Keine Ordner, Stapel oder Notizen passen zu "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'Ordner konnte nicht erstellt werden', + couldNotDeleteFolder: 'Ordner konnte nicht gelöscht werden', + couldNotLoadFolderPath: 'Ordnerpfad konnte nicht geladen werden', + couldNotSaveFolder: 'Ordner konnte nicht gespeichert werden', + folderCouldNotLoad: 'Ordner konnte nicht geladen werden', + }, + fields: { + descriptionLabel: 'Ordnerbeschreibung', + descriptionPlaceholder: 'Was gehört in diesen Ordner?', + namePlaceholder: 'Ordnername', + untitledFolder: 'Unbenannter Ordner', + }, + labels: { + createFolderTitle: 'Ordner erstellen', + folder: 'Ordner', + folders: 'Ordner', + loadingFolder: 'Ordner wird geladen', + name: 'Name', + updated: 'Aktualisiert', + }, + sort: { + ariaLabel: 'Ordner sortieren', + name: 'Name', + updated: 'Aktualisiert', + }, + }, + menu: { + conflicts: { + description: 'Wenn lokale und synchronisierte Daten voneinander abweichen, erscheint das Element hier.', + heading: 'Synchronisierungsstatus', + title: 'Konflikte', + noConflicts: 'Keine Konflikte gefunden', + }, + labels: { + menu: 'Menü', + }, + sections: { + settings: { + description: 'Passe Umgebung und Einstellungen an', + title: 'Einstellungen', + }, + trash: { + description: 'Entfernte Elemente wiederherstellen oder endgültig löschen', + title: 'Papierkorb', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Editor schließen', + openActions: 'Aktionen öffnen', + openWorkspaces: 'Arbeitsbereiche öffnen', + }, + items: { + home: 'Start', + menu: 'Menü', + primary: 'Primär', + settings: 'Einstellungen', + spaces: 'Bereiche', + trash: 'Papierkorb', + workspaces: 'Arbeitsbereiche', + }, + }, + notes: { + actions: { + addCloze: 'Cloze hinzufügen', + deleteNote: 'Notiz löschen', + editNote: 'Notiz bearbeiten', + hideDerivedCardsNote: 'Hinweis zu abgeleiteten Karten ausblenden', + openNote: '{{title}} öffnen', + saveNote: 'Notiz speichern', + showDerivedCardsNote: 'Hinweis zu abgeleiteten Karten anzeigen', + }, + descriptions: { + clozeFormat: 'Jeder verborgene Teil wird beim Speichern zu einer Wiederholungskarte.', + clozeFormatPrefix: 'Umschließe verborgenen Text mit', + derivedCardsHelper: 'Notizen sind die Quelle der Wahrheit für abgeleitete Karten.', + }, + dialogs: { + deleteNoteDescription: 'Dadurch wird "{{title}}" in den Papierkorb verschoben. Du kannst sie später wiederherstellen.', + deleteNoteFallbackDescription: 'Dadurch wird diese Notiz in den Papierkorb verschoben. Du kannst sie später wiederherstellen.', + deleteNoteFallbackTitle: 'Notiz löschen?', + deleteNoteTitle: '"{{title}}" löschen?', + }, + errors: { + couldNotCreateNote: 'Notiz konnte nicht erstellt werden', + couldNotDeleteNote: 'Notiz konnte nicht gelöscht werden', + couldNotSaveNote: 'Notiz konnte nicht gespeichert werden', + noteCouldNotLoad: 'Notiz konnte nicht geladen werden', + }, + fields: { + back: 'Rückseite', + backPlaceholder: 'Rückseite eingeben', + bodyPlaceholder: 'Notizinhalt mit Cloze-Löschungen schreiben…', + front: 'Vorderseite', + frontPlaceholder: 'Vorderseite eingeben', + noteBody: 'Notizinhalt', + title: 'Titel', + titlePlaceholder: 'Notiztitel hinzufügen', + untitledCloze: 'Unbenannter Cloze', + untitledNote: 'Unbenannte Notiz', + }, + labels: { + backUppercase: 'RÜCKSEITE', + basic: 'Einfach', + basicLower: 'einfach', + basicUppercase: 'EINFACH', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Cloze-Format', + clozeUppercase: 'CLOZE', + deck: 'Stapel', + derivedCards: 'ABGELEITETE KARTEN', + due: 'Fällig', + frontUppercase: 'VORDERSEITE', + inProgress: 'In Arbeit', + inProgressUppercase: 'IN ARBEIT', + loadingNote: 'Notiz wird geladen', + loadingNoteEditor: 'Notizeditor wird geladen', + markdownFormatting: 'Markdown-Formatierung', + mastered: 'Beherrscht', + masteredUppercase: 'BEHERRSCHT', + newNote: 'Neue Notiz', + noteBody: 'NOTIZINHALT', + noteContent: 'Notizinhalt', + noteDetails: 'Notizdetails', + noteMetadata: 'Notizmetadaten', + noteType: 'Notiztyp', + notes: 'Notizen', + reviewed: 'Wiederholt', + studyProgress: 'Lernfortschritt', + studyProgressUppercase: 'LERNFORTSCHRITT', + titleUppercase: 'TITEL', + updated: 'Aktualisiert', + }, + sort: { + ariaLabel: 'Notizen sortieren', + title: 'Titel', + updated: 'Aktualisiert', + }, + toolbar: { + bold: 'Fett', + italic: 'Kursiv', + link: 'Link', + list: 'Liste', + }, + }, + review: { + actions: { + again: 'Nochmal', + backToDeck: 'Zurück zum Stapel', + continueReview: 'Wiederholung fortsetzen', + easy: 'Einfach', + good: 'Gut', + hard: 'Schwer', + newNote: 'Neue Notiz', + showAnswer: 'Antwort zeigen', + }, + errors: { + couldNotGradeCard: 'Karte konnte nicht bewertet werden', + reviewCouldNotLoad: 'Wiederholung konnte nicht geladen werden', + reviewCouldNotStart: 'Wiederholung konnte nicht gestartet werden', + summaryCouldNotLoad: 'Zusammenfassung konnte nicht geladen werden', + summaryNotAvailable: 'Zusammenfassung ist nicht verfügbar', + summaryNotComplete: 'Diese Wiederholung ist noch nicht abgeschlossen.', + }, + labels: { + cardsReviewed: 'Wiederholte Karten', + deck: 'Stapel', + duration: 'Dauer', + loadingReview: 'Wiederholung wird geladen', + loadingSummary: 'Zusammenfassung wird geladen', + progress: 'Wiederholungsfortschritt', + review: 'Wiederholung', + reviewComplete: 'Wiederholung abgeschlossen', + reviewed_one: '{{count}} wiederholt', + reviewed_other: '{{count}} wiederholt', + }, + summary: { + durationHoursMinutes: '{{hours}} h {{minutes}} min', + durationMinutes: '{{minutes}} min', + durationSeconds: '{{seconds}} s', + saved: 'Dein Fortschritt wurde in diesem Stapel gespeichert.', + }, + unavailable: { + description: 'Füge eine Notiz hinzu, damit dieser Stapel in die Wiederholungsliste kommt.', + title: 'Keine Karten zum Wiederholen', + }, + }, + search: { + actions: { + clearSearch: 'Suche leeren', + }, + empty: { + noMatchesInWorkspace: 'Keine Treffer in diesem Arbeitsbereich', + noMatchesInWorkspaceDescription: 'Keine Ordner, Stapel oder Notizen passen zu "{{query}}".', + }, + errors: { + couldNotComplete: 'Suche konnte nicht abgeschlossen werden', + }, + labels: { + results: 'Suchergebnisse', + resultsFor: 'Ergebnisse für "{{query}}"', + searchingContent: 'Inhalte werden gesucht', + }, + resultGroups: { + deck: 'Stapel', + folder: 'Ordner', + note: 'Notizen', + }, + resultKinds: { + deck: 'Stapel', + folder: 'Ordner', + note: 'Notiz', + }, + }, + settings: { + actions: { + resetAll: 'Alle Einstellungen zurücksetzen', + resetSettings: 'Einstellungen zurücksetzen', + resetToDefaults: 'Standardwerte wiederherstellen', + }, + dialogs: { + fsrsErrorInvalidJson: 'Füge gültiges JSON mit 21 numerischen Werten ein.', + fsrsErrorInvalidParams_one: 'Gib ein JSON-Array mit genau {{count}} endlicher Zahl ein.', + fsrsErrorInvalidParams_other: 'Gib ein JSON-Array mit genau {{count}} endlichen Zahlen ein.', + fsrsHelper: 'Dies ist eine Expertenüberschreibung. Die Werte müssen in Reihenfolge bleiben.', + fsrsJsonLabel: 'FSRS-Parameter-JSON', + fsrsTitle: 'FSRS-Parameter bearbeiten', + fsrsDescription: 'Füge ein JSON-Array mit 21 Zahlen ein, um die Scheduler-Gewichte zu überschreiben.', + resetDescription: 'Dadurch werden Zeitzone, Lernlimits und FSRS-Einstellungen wiederhergestellt.', + resetDescriptionWithLanguage: 'Dadurch werden Sprache, Zeitzone, Lernlimits und FSRS-Einstellungen wiederhergestellt.', + resetTitle: 'Alle Einstellungen zurücksetzen?', + timezoneDescription: 'Suche nach einer Stadt oder Zeitzonenkennung.', + timezoneSearchLabel: 'Zeitzonen suchen', + timezoneSearchPlaceholder: 'Zeitzonen suchen…', + timezoneTitle: 'Zeitzone wählen', + }, + errors: { + couldNotResetSettings: 'Einstellungen konnten nicht zurückgesetzt werden', + couldNotSaveSettings: 'Einstellungen konnten nicht gespeichert werden', + settingsCouldNotLoad: 'Einstellungen konnten nicht geladen werden', + settingsUnavailable: 'Einstellungen sind nicht verfügbar.', + }, + labels: { + appearance: 'Darstellung', + automatic: 'Automatisch', + fsrsParameters: 'FSRS-Parameter', + general: 'Allgemein', + language: 'Sprache', + loadingSettings: 'Einstellungen werden geladen', + masteryHorizon: 'Beherrschungshorizont', + newCardOrder: 'Reihenfolge neuer Karten', + newCardsPerDay: 'Neue Karten pro Tag', + reviewCardsPerDay: 'Wiederholungskarten pro Tag', + savingSettings: 'Einstellungen werden gespeichert', + schedule: 'Zeitplan', + searchNoTimezones: 'Keine passenden Zeitzonen.', + settings: 'Einstellungen', + settingsReset: 'Einstellungen zurückgesetzt', + study: 'Lernen', + targetRecallProbability: 'Ziel-Erinnerungswahrscheinlichkeit', + theme: 'Design', + timezone: 'Zeitzone', + }, + options: { + languageEnUs: 'Englisch (USA)', + newCardsAfterReviews: 'Nach Wiederholungen', + newCardsBeforeReviews: 'Vor Wiederholungen', + newCardsMixed: 'Gemischt', + themeDark: 'Dunkel', + themeLight: 'Hell', + themeSystem: 'System', + timezoneSystem: 'Systemzeitzone verwenden', + }, + rows: { + fsrsDescription: 'Expertenmodell-Gewichte', + languageDescription: 'Sprache der Oberfläche', + masteryHorizonDescription: 'Tage, die eine Karte bei oder über der Zielwahrscheinlichkeit abrufbar bleiben muss, um als beherrscht zu gelten', + newCardOrderDescription: 'Reihenfolge neuer Karten im Verhältnis zu Wiederholungen', + newCardsPerDayDescription: 'Maximale neue Karten pro Tag', + reviewCardsPerDayDescription: 'Maximale Wiederholungskarten pro Tag', + targetRecallProbabilityDescription: 'Minimale Erinnerungswahrscheinlichkeit bei der nächsten geplanten Wiederholung', + timezoneDescription: 'Automatische Zeitzone verwenden oder eine Stadt wählen.', + }, + }, + trash: { + actions: { + deletePermanently: 'Endgültig löschen', + empty: 'Leeren', + emptyTrash: 'Papierkorb leeren', + restore: 'Wiederherstellen', + restoringItem: '{{title}} wird wiederhergestellt', + }, + dialogs: { + deleteItemDescription: 'Dadurch wird "{{title}}" endgültig gelöscht. Das kann nicht rückgängig gemacht werden.', + deleteItemFallbackDescription: 'Dadurch wird dieses Element endgültig gelöscht. Das kann nicht rückgängig gemacht werden.', + deleteItemFallbackTitle: 'Element löschen?', + deleteItemTitle: '"{{title}}" löschen?', + emptyTrashDescription: 'Dadurch wird alles im Papierkorb endgültig gelöscht. Das kann nicht rückgängig gemacht werden.', + emptyTrashTitle: 'Papierkorb leeren?', + }, + empty: { + description: 'Gelöschte Elemente erscheinen hier vor der endgültigen Entfernung.', + title: 'Der Papierkorb ist leer', + }, + errors: { + couldNotDeleteItem: 'Element konnte nicht gelöscht werden', + couldNotEmptyTrash: 'Papierkorb konnte nicht geleert werden', + couldNotRestoreItem: 'Element konnte nicht wiederhergestellt werden', + trashCouldNotLoad: 'Papierkorb konnte nicht geladen werden', + trashMayBeOutOfDate: 'Papierkorb ist möglicherweise veraltet', + }, + labels: { + deletedAge: 'Gelöscht {{value}}', + itemCount_one: '{{count}} Element', + itemCount_other: '{{count}} Elemente', + lastEmptied: 'Zuletzt geleert {{value}}', + loadingTrash: 'Papierkorb wird geladen', + originalLocation: 'Ursprünglicher Ort: {{location}}', + title: 'Papierkorb', + trashActions: 'Papierkorb-Aktionen für {{title}}', + }, + kinds: { + deck: 'Stapel', + folder: 'Ordner', + note: 'Notiz', + workspace: 'Arbeitsbereich', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Arbeitsbereich erstellen', + deleteWorkspace: 'Arbeitsbereich löschen', + editWorkspace: 'Arbeitsbereich bearbeiten', + newWorkspace: 'Neuer Arbeitsbereich', + openWorkspace: '{{title}} öffnen', + openingWorkspace: '{{title}} wird geöffnet', + }, + descriptions: { + editorDefault: 'Lernkontext.', + editorVisual: 'Wähle einen visuellen Anker für diesen Arbeitsbereich.', + emptyList: 'Trenne Stapel, Notizen und Wiederholungslisten nach Lernkontext.', + }, + dialogs: { + deleteWorkspaceDescription: 'Dadurch wird "{{title}}" in den Papierkorb verschoben. Du kannst ihn später wiederherstellen.', + deleteWorkspaceFallbackDescription: 'Dadurch wird dieser Arbeitsbereich in den Papierkorb verschoben. Du kannst ihn später wiederherstellen.', + deleteWorkspaceFallbackTitle: 'Arbeitsbereich löschen?', + deleteWorkspaceTitle: '"{{title}}" löschen?', + }, + empty: { + startWithWorkspace: 'Beginne mit einem Arbeitsbereich', + }, + errors: { + couldNotCreateWorkspace: 'Arbeitsbereich konnte nicht erstellt werden', + couldNotDeleteWorkspace: 'Arbeitsbereich konnte nicht gelöscht werden', + couldNotOpenWorkspace: 'Arbeitsbereich konnte nicht geöffnet werden', + couldNotSaveWorkspace: 'Arbeitsbereich konnte nicht gespeichert werden', + workspaceCouldNotLoad: 'Arbeitsbereich konnte nicht geladen werden', + workspacesCouldNotLoad: 'Arbeitsbereiche konnten nicht geladen werden', + }, + fields: { + descriptionLabel: 'Arbeitsbereichsbeschreibung', + descriptionPlaceholder: 'Was gehört in diesen Arbeitsbereich?', + namePlaceholder: 'Name des Arbeitsbereichs', + untitledWorkspace: 'Unbenannter Arbeitsbereich', + }, + labels: { + createWorkspaceTitle: 'Arbeitsbereich erstellen', + loadingWorkspaces: 'Arbeitsbereiche werden geladen', + workspace: 'Arbeitsbereich', + workspaces: 'Arbeitsbereiche', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/el.ts b/ui/src/core/i18n/resources/el.ts new file mode 100644 index 0000000..57c87c5 --- /dev/null +++ b/ui/src/core/i18n/resources/el.ts @@ -0,0 +1,623 @@ +export const el = { + bootstrap: { + error: { + fallbackMessage: 'Δοκιμάστε ξανά. Αν συνεχίσει να συμβαίνει, ανοίξτε ξανά το Clear.', + title: 'Δεν ήταν δυνατή η εκκίνηση', + }, + loadingTitle: 'Προετοιμασία του χώρου μελέτης σας', + }, + common: { + actions: { + back: 'Πίσω', + cancel: 'Ακύρωση', + checkAgain: 'Έλεγχος ξανά', + close: 'Κλείσιμο', + create: 'Δημιουργία', + delete: 'Διαγραφή', + dismissError: 'Απόκρυψη σφάλματος', + dismissStatus: 'Απόκρυψη κατάστασης', + edit: 'Επεξεργασία', + itemActions: 'Ενέργειες για {{title}}', + reset: 'Επαναφορά', + review: 'Επανάληψη', + save: 'Αποθήκευση', + saveChanges: 'Αποθήκευση αλλαγών', + tryAgain: 'Δοκιμάστε ξανά', + }, + labels: { + active: 'Ενεργό', + clear: 'Clear', + custom: 'Προσαρμοσμένο', + default: 'Προεπιλογή', + loadingEditor: 'Φόρτωση επεξεργαστή', + name: 'Όνομα', + completedTask: 'Ολοκληρωμένη εργασία', + description: 'Περιγραφή', + incompleteTask: 'Μη ολοκληρωμένη εργασία', + percentageInput: 'Ποσοστό για {{label}}', + visual: 'Οπτικό', + }, + status: { + actionFailed: 'Η ενέργεια απέτυχε', + actionInProgress: 'Ενέργεια σε εξέλιξη', + }, + sort: { + ascending: 'Αύξ.', + column: 'Στήλη', + descending: 'Φθίν.', + direction: 'Κατεύθυνση', + sort: 'Ταξινόμηση', + }, + search: { + label: 'Αναζήτηση', + }, + visualPicker: { + allLucideIcons: 'Όλα τα εικονίδια Lucide', + browseIconsFor: 'Περιηγηθείτε ή αναζητήστε εικονίδια για {{label}}.', + chooseIcon: 'Επιλογή εικονιδίου', + iconPicker: 'Επιλογέας εικονιδίου για {{label}}', + iconSearch: 'Αναζήτηση εικονιδίων για {{label}}', + iconsCouldNotLoad: 'Δεν ήταν δυνατή η φόρτωση των εικονιδίων.', + loadingIcons: 'Φόρτωση εικονιδίων', + loadingMoreIcons: 'Φόρτωση περισσότερων εικονιδίων', + moreIcons: 'Περισσότερα εικονίδια', + noIconsMatch: 'Κανένα εικονίδιο δεν ταιριάζει με "{{query}}".', + searchIconsPlaceholder: 'Αναζήτηση εικονιδίων…', + selectedIcon: 'Επιλέχθηκε {{label}}', + }, + }, + dashboard: { + actions: { + create: 'Δημιουργία', + newDeck: 'Νέα τράπουλα', + newFolder: 'Νέος φάκελος', + }, + descriptions: { + defaultWorkspace: 'Κρατήστε τράπουλες, φακέλους και σημειώσεις μαζί.', + emptyWorkspace: 'Δημιουργήστε μια τράπουλα και μετά προσθέστε σημειώσεις για να φτιάξετε την ουρά επανάληψης.', + emptyFolder: 'Δημιουργήστε μια τράπουλα και μετά προσθέστε σημειώσεις για να φτιάξετε μια ουρά επανάληψης.', + searchPlaceholder: 'Αναζήτηση φακέλων, τράπουλων και σημειώσεων…', + }, + empty: { + createFirstDeck: 'Δημιουργήστε την πρώτη σας τράπουλα', + }, + errors: { + couldNotDeleteDeck: 'Δεν ήταν δυνατή η διαγραφή της τράπουλας', + couldNotDeleteFolder: 'Δεν ήταν δυνατή η διαγραφή του φακέλου', + couldNotDeleteWorkspace: 'Δεν ήταν δυνατή η διαγραφή του χώρου εργασίας', + dashboardCouldNotOpen: 'Δεν ήταν δυνατό το άνοιγμα του πίνακα', + decksCouldNotLoad: 'Δεν ήταν δυνατή η φόρτωση των τράπουλων', + decksMayBeOutOfDate: 'Οι τράπουλες μπορεί να μην είναι ενημερωμένες', + foldersCouldNotLoad: 'Δεν ήταν δυνατή η φόρτωση των φακέλων', + foldersMayBeOutOfDate: 'Οι φάκελοι μπορεί να μην είναι ενημερωμένοι', + workspaceCouldNotLoad: 'Δεν ήταν δυνατή η φόρτωση του χώρου εργασίας', + }, + labels: { + dashboard: 'Πίνακας', + loadingDashboard: 'Φόρτωση πίνακα', + newItem: 'Νέο στοιχείο', + }, + }, + dates: { + absolute: { + unavailable: 'Η ημερομηνία δεν είναι διαθέσιμη', + }, + age: { + dayAgo_one: 'πριν από {{count}} ημέρα', + dayAgo_other: 'πριν από {{count}} ημέρες', + hourAgo_one: 'πριν από {{count}} ώρα', + hourAgo_other: 'πριν από {{count}} ώρες', + justNow: 'μόλις τώρα', + minuteAgo_one: 'πριν από {{count}} λεπτό', + minuteAgo_other: 'πριν από {{count}} λεπτά', + unavailable: 'η ημερομηνία δεν είναι διαθέσιμη', + weekAgo_one: 'πριν από {{count}} εβδομάδα', + weekAgo_other: 'πριν από {{count}} εβδομάδες', + }, + labels: { + deleted: 'Διαγράφηκε {{value}}', + due: 'Προθεσμία: {{value}}', + reviewed: 'Επαναλήφθηκε: {{value}}', + updated: 'Ενημερώθηκε {{value}}', + updatedUppercase: 'ΕΝΗΜΕΡΩΘΗΚΕ {{value}}', + }, + relative: { + dayAgo_one: 'πριν από {{count}} ημέρα', + dayAgo_other: 'πριν από {{count}} ημέρες', + inAMoment: 'Σε λίγο', + inDay_one: 'Σε {{count}} ημέρα', + inDay_other: 'Σε {{count}} ημέρες', + inMonth_one: 'Σε {{count}} μήνα', + inMonth_other: 'Σε {{count}} μήνες', + inWeek_one: 'Σε {{count}} εβδομάδα', + inWeek_other: 'Σε {{count}} εβδομάδες', + justNow: 'Μόλις τώρα', + monthAgo_one: 'πριν από {{count}} μήνα', + monthAgo_other: 'πριν από {{count}} μήνες', + secondsAgoShort: 'πριν από {{count}} δ', + minutesAgoShort: 'πριν από {{count}} λεπ', + hoursAgoShort: 'πριν από {{count}} ώ', + today: 'Σήμερα', + tomorrow: 'Αύριο', + weekAgo_one: 'πριν από {{count}} εβδομάδα', + weekAgo_other: 'πριν από {{count}} εβδομάδες', + yesterday: 'Χθες', + }, + }, + decks: { + actions: { + actionMenu: 'Ενέργειες για {{title}}', + createDeck: 'Δημιουργία τράπουλας', + createNote: 'Δημιουργία σημείωσης', + deleteDeck: 'Διαγραφή τράπουλας', + editDeck: 'Επεξεργασία τράπουλας', + newNote: 'Νέα σημείωση', + openDeck: 'Άνοιγμα τράπουλας {{title}}', + saveDeck: 'Δεν ήταν δυνατή η αποθήκευση της τράπουλας', + studyNow: 'Μελέτη τώρα', + }, + descriptions: { + emptyDeck: 'Προσθέστε μια σημείωση ώστε αυτή η τράπουλα να έχει υλικό για επανάληψη.', + editorDefault: 'Εστιασμένη τράπουλα μελέτης.', + editorVisual: 'Επιλέξτε ένα σύμβολο εξωφύλλου για αυτήν την τράπουλα.', + notesSearchPlaceholder: 'Αναζήτηση σημειώσεων…', + }, + dialogs: { + deleteDeckDescription: 'Αυτό μετακινεί το "{{title}}" στον Κάδο. Μπορείτε να το επαναφέρετε αργότερα.', + deleteDeckFallbackDescription: 'Αυτό μετακινεί αυτήν την τράπουλα στον Κάδο. Μπορείτε να την επαναφέρετε αργότερα.', + deleteDeckFallbackTitle: 'Διαγραφή τράπουλας;', + deleteDeckTitle: 'Διαγραφή "{{title}}";', + deleteNoteDescription: 'Αυτό μετακινεί το "{{title}}" στον Κάδο. Μπορείτε να το επαναφέρετε αργότερα.', + deleteNoteFallbackTitle: 'Διαγραφή σημείωσης;', + deleteNoteTitle: 'Διαγραφή "{{title}}";', + }, + empty: { + noMatchingNotes: 'Δεν υπάρχουν αντίστοιχες σημειώσεις', + noMatchingNotesDescription: 'Καμία σημείωση δεν ταιριάζει με "{{query}}".', + thisDeckIsEmpty: 'Αυτή η τράπουλα είναι κενή', + }, + errors: { + couldNotCreateDeck: 'Δεν ήταν δυνατή η δημιουργία της τράπουλας', + couldNotDeleteDeck: 'Δεν ήταν δυνατή η διαγραφή της τράπουλας', + couldNotDeleteNote: 'Δεν ήταν δυνατή η διαγραφή της σημείωσης', + couldNotLoadFolderPath: 'Δεν ήταν δυνατή η φόρτωση της διαδρομής φακέλου', + couldNotSaveDeck: 'Δεν ήταν δυνατή η αποθήκευση της τράπουλας', + deckCouldNotLoad: 'Δεν ήταν δυνατή η φόρτωση της τράπουλας', + notesCouldNotLoad: 'Δεν ήταν δυνατή η φόρτωση των σημειώσεων', + notesMayBeOutOfDate: 'Οι σημειώσεις μπορεί να μην είναι ενημερωμένες', + }, + fields: { + descriptionLabel: 'Περιγραφή τράπουλας', + descriptionPlaceholder: 'Τι θα σας βοηθήσει να επαναλάβετε αυτή η τράπουλα;', + namePlaceholder: 'Όνομα τράπουλας', + untitledDeck: 'Τράπουλα χωρίς τίτλο', + untitledDeckLower: 'τράπουλα χωρίς τίτλο', + }, + labels: { + createDeckTitle: 'Δημιουργία τράπουλας', + deck: 'Τράπουλα', + deckNotesSearch: 'Αναζήτηση σημειώσεων τράπουλας', + deckOverview: 'Επισκόπηση τράπουλας', + decks: 'Τράπουλες', + due: 'Προθεσμία', + dueToday: 'Προθεσμία σήμερα', + loadingDeck: 'Φόρτωση τράπουλας', + mastery: 'Κατάκτηση', + notes: 'Σημειώσεις', + }, + sort: { + ariaLabel: 'Ταξινόμηση τράπουλων', + dueToday: 'Προθεσμία σήμερα', + title: 'Τίτλος', + updated: 'Ενημερώθηκε', + }, + }, + errors: { + byType: { + conflict: 'Τα δεδομένα άλλαξαν. Ανανεώστε και δοκιμάστε ξανά.', + forbidden: 'Δεν έχετε άδεια για αυτήν την ενέργεια.', + notFound: 'Δεν μπορέσαμε να βρούμε αυτό το στοιχείο.', + offline: 'Δεν είναι δυνατή η πρόσβαση στην υπηρεσία.', + timeout: 'Αυτό πήρε πολύ χρόνο. Δοκιμάστε ξανά.', + unauthorized: 'Συνδεθείτε για να συνεχίσετε.', + unavailable: 'Η υπηρεσία δεν είναι προσωρινά διαθέσιμη.', + }, + fallback: { + unexpected: 'Απροσδόκητο σφάλμα', + }, + }, + folders: { + actions: { + createFolder: 'Δημιουργία φακέλου', + deleteFolder: 'Διαγραφή φακέλου', + editFolder: 'Επεξεργασία φακέλου', + }, + descriptions: { + editorDefault: 'Φάκελος για σχετικές τράπουλες.', + }, + dialogs: { + deleteFolderDescription: 'Αυτό μετακινεί το "{{name}}" στον Κάδο. Μπορείτε να το επαναφέρετε αργότερα.', + deleteFolderFallbackDescription: 'Αυτό μετακινεί αυτόν τον φάκελο στον Κάδο. Μπορείτε να τον επαναφέρετε αργότερα.', + deleteFolderFallbackTitle: 'Διαγραφή φακέλου;', + deleteFolderTitle: 'Διαγραφή "{{name}}";', + }, + empty: { + noMatchesInFolder: 'Δεν υπάρχουν αντιστοιχίες σε αυτόν τον φάκελο', + noMatchesInFolderDescription: 'Κανένας φάκελος, τράπουλα ή σημείωση δεν ταιριάζει με "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'Δεν ήταν δυνατή η δημιουργία του φακέλου', + couldNotDeleteFolder: 'Δεν ήταν δυνατή η διαγραφή του φακέλου', + couldNotLoadFolderPath: 'Δεν ήταν δυνατή η φόρτωση της διαδρομής φακέλου', + couldNotSaveFolder: 'Δεν ήταν δυνατή η αποθήκευση του φακέλου', + folderCouldNotLoad: 'Δεν ήταν δυνατή η φόρτωση του φακέλου', + }, + fields: { + descriptionLabel: 'Περιγραφή φακέλου', + descriptionPlaceholder: 'Τι ανήκει σε αυτόν τον φάκελο;', + namePlaceholder: 'Όνομα φακέλου', + untitledFolder: 'Φάκελος χωρίς τίτλο', + }, + labels: { + createFolderTitle: 'Δημιουργία φακέλου', + folder: 'Φάκελος', + folders: 'Φάκελοι', + loadingFolder: 'Φόρτωση φακέλου', + name: 'Όνομα', + updated: 'Ενημερώθηκε', + }, + sort: { + ariaLabel: 'Ταξινόμηση φακέλων', + name: 'Όνομα', + updated: 'Ενημερώθηκε', + }, + }, + menu: { + conflicts: { + description: 'Αν τα τοπικά και συγχρονισμένα δεδομένα διαφέρουν, το στοιχείο θα εμφανιστεί εδώ.', + heading: 'Κατάσταση συγχρονισμού', + title: 'Διενέξεις', + noConflicts: 'Δεν βρέθηκαν διενέξεις', + }, + labels: { + menu: 'Μενού', + }, + sections: { + settings: { + description: 'Προσαρμόστε το περιβάλλον και τις προτιμήσεις σας', + title: 'Ρυθμίσεις', + }, + trash: { + description: 'Επαναφέρετε ή διαγράψτε οριστικά αφαιρεμένα στοιχεία', + title: 'Κάδος', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Κλείσιμο επεξεργαστή', + openActions: 'Άνοιγμα ενεργειών', + openWorkspaces: 'Άνοιγμα χώρων εργασίας', + }, + items: { + home: 'Αρχική', + menu: 'Μενού', + primary: 'Κύριο', + settings: 'Ρυθμίσεις', + spaces: 'Χώροι', + trash: 'Κάδος', + workspaces: 'Χώροι εργασίας', + }, + }, + notes: { + actions: { + addCloze: 'Προσθήκη cloze', + deleteNote: 'Διαγραφή σημείωσης', + editNote: 'Επεξεργασία σημείωσης', + hideDerivedCardsNote: 'Απόκρυψη σημείωσης παράγωγων καρτών', + openNote: 'Άνοιγμα {{title}}', + saveNote: 'Αποθήκευση σημείωσης', + showDerivedCardsNote: 'Εμφάνιση σημείωσης παράγωγων καρτών', + }, + descriptions: { + clozeFormat: 'Κάθε κρυφό τμήμα γίνεται κάρτα επανάληψης όταν αποθηκεύετε.', + clozeFormatPrefix: 'Τυλίξτε το κρυφό κείμενο με', + derivedCardsHelper: 'Οι σημειώσεις είναι η πηγή αλήθειας για τις παράγωγες κάρτες.', + }, + dialogs: { + deleteNoteDescription: 'Αυτό μετακινεί το "{{title}}" στον Κάδο. Μπορείτε να το επαναφέρετε αργότερα.', + deleteNoteFallbackDescription: 'Αυτό μετακινεί αυτήν τη σημείωση στον Κάδο. Μπορείτε να την επαναφέρετε αργότερα.', + deleteNoteFallbackTitle: 'Διαγραφή σημείωσης;', + deleteNoteTitle: 'Διαγραφή "{{title}}";', + }, + errors: { + couldNotCreateNote: 'Δεν ήταν δυνατή η δημιουργία της σημείωσης', + couldNotDeleteNote: 'Δεν ήταν δυνατή η διαγραφή της σημείωσης', + couldNotSaveNote: 'Δεν ήταν δυνατή η αποθήκευση της σημείωσης', + noteCouldNotLoad: 'Δεν ήταν δυνατή η φόρτωση της σημείωσης', + }, + fields: { + back: 'Πίσω πλευρά', + backPlaceholder: 'Εισαγάγετε πίσω πλευρά', + bodyPlaceholder: 'Γράψτε το σώμα της σημείωσης με cloze deletions…', + front: 'Μπροστινή πλευρά', + frontPlaceholder: 'Εισαγάγετε μπροστινή πλευρά', + noteBody: 'Σώμα σημείωσης', + title: 'Τίτλος', + titlePlaceholder: 'Προσθέστε τίτλο σημείωσης', + untitledCloze: 'Cloze χωρίς τίτλο', + untitledNote: 'Σημείωση χωρίς τίτλο', + }, + labels: { + backUppercase: 'ΠΙΣΩ ΠΛΕΥΡΑ', + basic: 'Βασική', + basicLower: 'βασική', + basicUppercase: 'ΒΑΣΙΚΗ', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Μορφή cloze', + clozeUppercase: 'CLOZE', + deck: 'Τράπουλα', + derivedCards: 'ΠΑΡΑΓΩΓΕΣ ΚΑΡΤΕΣ', + due: 'Προθεσμία', + frontUppercase: 'ΜΠΡΟΣΤΙΝΗ ΠΛΕΥΡΑ', + inProgress: 'Σε εξέλιξη', + inProgressUppercase: 'ΣΕ ΕΞΕΛΙΞΗ', + loadingNote: 'Φόρτωση σημείωσης', + loadingNoteEditor: 'Φόρτωση επεξεργαστή σημειώσεων', + markdownFormatting: 'Μορφοποίηση Markdown', + mastered: 'Κατακτημένο', + masteredUppercase: 'ΚΑΤΑΚΤΗΜΕΝΟ', + newNote: 'Νέα σημείωση', + noteBody: 'ΣΩΜΑ ΣΗΜΕΙΩΣΗΣ', + noteContent: 'Περιεχόμενο σημείωσης', + noteDetails: 'Λεπτομέρειες σημείωσης', + noteMetadata: 'Μεταδεδομένα σημείωσης', + noteType: 'Τύπος σημείωσης', + notes: 'Σημειώσεις', + reviewed: 'Επαναλήφθηκε', + studyProgress: 'Πρόοδος μελέτης', + studyProgressUppercase: 'ΠΡΟΟΔΟΣ ΜΕΛΕΤΗΣ', + titleUppercase: 'ΤΙΤΛΟΣ', + updated: 'Ενημερώθηκε', + }, + sort: { + ariaLabel: 'Ταξινόμηση σημειώσεων', + title: 'Τίτλος', + updated: 'Ενημερώθηκε', + }, + toolbar: { + bold: 'Έντονα', + italic: 'Πλάγια', + link: 'Σύνδεσμος', + list: 'Λίστα', + }, + }, + review: { + actions: { + again: 'Ξανά', + backToDeck: 'Πίσω στην τράπουλα', + continueReview: 'Συνέχεια επανάληψης', + easy: 'Εύκολο', + good: 'Καλό', + hard: 'Δύσκολο', + newNote: 'Νέα σημείωση', + showAnswer: 'Εμφάνιση απάντησης', + }, + errors: { + couldNotGradeCard: 'Δεν ήταν δυνατή η αξιολόγηση της κάρτας', + reviewCouldNotLoad: 'Δεν ήταν δυνατή η φόρτωση της επανάληψης', + reviewCouldNotStart: 'Δεν ήταν δυνατή η έναρξη της επανάληψης', + summaryCouldNotLoad: 'Δεν ήταν δυνατή η φόρτωση της σύνοψης επανάληψης', + summaryNotAvailable: 'Η σύνοψη επανάληψης δεν είναι διαθέσιμη', + summaryNotComplete: 'Αυτή η επανάληψη δεν έχει ολοκληρωθεί ακόμη.', + }, + labels: { + cardsReviewed: 'Κάρτες που επαναλήφθηκαν', + deck: 'Τράπουλα', + duration: 'Διάρκεια', + loadingReview: 'Φόρτωση επανάληψης', + loadingSummary: 'Φόρτωση σύνοψης', + progress: 'Πρόοδος επανάληψης', + review: 'Επανάληψη', + reviewComplete: 'Η επανάληψη ολοκληρώθηκε', + reviewed_one: 'Επαναλήφθηκε {{count}}', + reviewed_other: 'Επαναλήφθηκαν {{count}}', + }, + summary: { + durationHoursMinutes: '{{hours}} ώ {{minutes}} λεπ', + durationMinutes: '{{minutes}} λεπ', + durationSeconds: '{{seconds}} δ', + saved: 'Η πρόοδός σας αποθηκεύτηκε σε αυτήν την τράπουλα.', + }, + unavailable: { + description: 'Προσθέστε μια σημείωση ώστε αυτή η τράπουλα να μπει στην ουρά επανάληψης.', + title: 'Δεν υπάρχουν κάρτες για επανάληψη', + }, + }, + search: { + actions: { + clearSearch: 'Εκκαθάριση αναζήτησης', + }, + empty: { + noMatchesInWorkspace: 'Δεν υπάρχουν αντιστοιχίες σε αυτόν τον χώρο εργασίας', + noMatchesInWorkspaceDescription: 'Κανένας φάκελος, τράπουλα ή σημείωση δεν ταιριάζει με "{{query}}".', + }, + errors: { + couldNotComplete: 'Δεν ήταν δυνατή η ολοκλήρωση της αναζήτησης', + }, + labels: { + results: 'Αποτελέσματα αναζήτησης', + resultsFor: 'Αποτελέσματα για "{{query}}"', + searchingContent: 'Αναζήτηση περιεχομένου', + }, + resultGroups: { + deck: 'Τράπουλες', + folder: 'Φάκελοι', + note: 'Σημειώσεις', + }, + resultKinds: { + deck: 'τράπουλα', + folder: 'φάκελος', + note: 'σημείωση', + }, + }, + settings: { + actions: { + resetAll: 'Επαναφορά όλων των ρυθμίσεων', + resetSettings: 'Επαναφορά ρυθμίσεων', + resetToDefaults: 'Επαναφορά προεπιλογών', + }, + dialogs: { + fsrsErrorInvalidJson: 'Επικολλήστε έγκυρο JSON με 21 αριθμητικές τιμές.', + fsrsErrorInvalidParams_one: 'Εισαγάγετε έναν πίνακα JSON με ακριβώς {{count}} πεπερασμένο αριθμό.', + fsrsErrorInvalidParams_other: 'Εισαγάγετε έναν πίνακα JSON με ακριβώς {{count}} πεπερασμένους αριθμούς.', + fsrsHelper: 'Αυτή είναι μια ρύθμιση για προχωρημένους. Οι τιμές πρέπει να παραμείνουν στη σειρά.', + fsrsJsonLabel: 'JSON παραμέτρων FSRS', + fsrsTitle: 'Επεξεργασία παραμέτρων FSRS', + fsrsDescription: 'Επικολλήστε έναν πίνακα JSON με 21 αριθμούς για να παρακάμψετε τα βάρη του scheduler.', + resetDescription: 'Αυτό επαναφέρει ζώνη ώρας, όρια μελέτης και ρυθμίσεις FSRS.', + resetDescriptionWithLanguage: 'Αυτό επαναφέρει γλώσσα, ζώνη ώρας, όρια μελέτης και ρυθμίσεις FSRS.', + resetTitle: 'Επαναφορά όλων των ρυθμίσεων;', + timezoneDescription: 'Αναζητήστε πόλη ή αναγνωριστικό ζώνης ώρας.', + timezoneSearchLabel: 'Αναζήτηση ζωνών ώρας', + timezoneSearchPlaceholder: 'Αναζήτηση ζωνών ώρας…', + timezoneTitle: 'Επιλογή ζώνης ώρας', + }, + errors: { + couldNotResetSettings: 'Δεν ήταν δυνατή η επαναφορά των ρυθμίσεων', + couldNotSaveSettings: 'Δεν ήταν δυνατή η αποθήκευση των ρυθμίσεων', + settingsCouldNotLoad: 'Δεν ήταν δυνατή η φόρτωση των ρυθμίσεων', + settingsUnavailable: 'Οι ρυθμίσεις δεν είναι διαθέσιμες.', + }, + labels: { + appearance: 'Εμφάνιση', + automatic: 'Αυτόματα', + fsrsParameters: 'Παράμετροι FSRS', + general: 'Γενικά', + language: 'Γλώσσα', + loadingSettings: 'Φόρτωση ρυθμίσεων', + masteryHorizon: 'Ορίζοντας κατάκτησης', + newCardOrder: 'Σειρά νέων καρτών', + newCardsPerDay: 'Νέες κάρτες ανά ημέρα', + reviewCardsPerDay: 'Κάρτες επανάληψης ανά ημέρα', + savingSettings: 'Αποθήκευση ρυθμίσεων', + schedule: 'Πρόγραμμα', + searchNoTimezones: 'Δεν υπάρχουν αντίστοιχες ζώνες ώρας.', + settings: 'Ρυθμίσεις', + settingsReset: 'Οι ρυθμίσεις επαναφέρθηκαν', + study: 'Μελέτη', + targetRecallProbability: 'Στόχος πιθανότητας ανάκλησης', + theme: 'Θέμα', + timezone: 'Ζώνη ώρας', + }, + options: { + languageEnUs: 'Αγγλικά (ΗΠΑ)', + newCardsAfterReviews: 'Μετά τις επαναλήψεις', + newCardsBeforeReviews: 'Πριν από τις επαναλήψεις', + newCardsMixed: 'Μικτά', + themeDark: 'Σκούρο', + themeLight: 'Ανοιχτό', + themeSystem: 'Σύστημα', + timezoneSystem: 'Χρήση ζώνης ώρας συστήματος', + }, + rows: { + fsrsDescription: 'Βάρη μοντέλου για προχωρημένους', + languageDescription: 'Γλώσσα διεπαφής', + masteryHorizonDescription: 'Ημέρες που μια κάρτα πρέπει να παραμένει ανακλήσιμη στην πιθανότητα στόχο ή πάνω από αυτή για να θεωρηθεί κατακτημένη', + newCardOrderDescription: 'Σειρά νέων καρτών σε σχέση με τις επαναλήψεις', + newCardsPerDayDescription: 'Μέγιστος αριθμός νέων καρτών ανά ημέρα', + reviewCardsPerDayDescription: 'Μέγιστος αριθμός καρτών επανάληψης ανά ημέρα', + targetRecallProbabilityDescription: 'Ελάχιστη πιθανότητα ανάκλησης στην επόμενη προγραμματισμένη επανάληψη', + timezoneDescription: 'Χρησιμοποιήστε αυτόματη ζώνη ώρας ή επιλέξτε πόλη.', + }, + }, + trash: { + actions: { + deletePermanently: 'Οριστική διαγραφή', + empty: 'Άδειασμα', + emptyTrash: 'Άδειασμα κάδου', + restore: 'Επαναφορά', + restoringItem: 'Επαναφορά {{title}}', + }, + dialogs: { + deleteItemDescription: 'Αυτό διαγράφει οριστικά το "{{title}}". Δεν μπορεί να αναιρεθεί.', + deleteItemFallbackDescription: 'Αυτό διαγράφει οριστικά αυτό το στοιχείο. Δεν μπορεί να αναιρεθεί.', + deleteItemFallbackTitle: 'Διαγραφή στοιχείου;', + deleteItemTitle: 'Διαγραφή "{{title}}";', + emptyTrashDescription: 'Αυτό διαγράφει οριστικά όλα τα στοιχεία στον Κάδο. Δεν μπορεί να αναιρεθεί.', + emptyTrashTitle: 'Άδειασμα κάδου;', + }, + empty: { + description: 'Τα στοιχεία που διαγράφετε θα εμφανίζονται εδώ πριν αφαιρεθούν οριστικά.', + title: 'Ο Κάδος είναι άδειος', + }, + errors: { + couldNotDeleteItem: 'Δεν ήταν δυνατή η διαγραφή του στοιχείου', + couldNotEmptyTrash: 'Δεν ήταν δυνατό το άδειασμα του Κάδου', + couldNotRestoreItem: 'Δεν ήταν δυνατή η επαναφορά του στοιχείου', + trashCouldNotLoad: 'Δεν ήταν δυνατή η φόρτωση του Κάδου', + trashMayBeOutOfDate: 'Ο Κάδος μπορεί να μην είναι ενημερωμένος', + }, + labels: { + deletedAge: 'Διαγράφηκε {{value}}', + itemCount_one: '{{count}} στοιχείο', + itemCount_other: '{{count}} στοιχεία', + lastEmptied: 'Τελευταίο άδειασμα {{value}}', + loadingTrash: 'Φόρτωση Κάδου', + originalLocation: 'Αρχική τοποθεσία: {{location}}', + title: 'Κάδος', + trashActions: 'Ενέργειες κάδου για {{title}}', + }, + kinds: { + deck: 'Τράπουλα', + folder: 'Φάκελος', + note: 'Σημείωση', + workspace: 'Χώρος εργασίας', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Δημιουργία χώρου εργασίας', + deleteWorkspace: 'Διαγραφή χώρου εργασίας', + editWorkspace: 'Επεξεργασία χώρου εργασίας', + newWorkspace: 'Νέος χώρος εργασίας', + openWorkspace: 'Άνοιγμα {{title}}', + openingWorkspace: 'Άνοιγμα {{title}}', + }, + descriptions: { + editorDefault: 'Πλαίσιο μελέτης.', + editorVisual: 'Επιλέξτε μια οπτική άγκυρα για αυτόν τον χώρο εργασίας.', + emptyList: 'Διαχωρίστε τράπουλες, σημειώσεις και ουρές επανάληψης ανά πλαίσιο μελέτης.', + }, + dialogs: { + deleteWorkspaceDescription: 'Αυτό μετακινεί το "{{title}}" στον Κάδο. Μπορείτε να το επαναφέρετε αργότερα.', + deleteWorkspaceFallbackDescription: 'Αυτό μετακινεί αυτόν τον χώρο εργασίας στον Κάδο. Μπορείτε να τον επαναφέρετε αργότερα.', + deleteWorkspaceFallbackTitle: 'Διαγραφή χώρου εργασίας;', + deleteWorkspaceTitle: 'Διαγραφή "{{title}}";', + }, + empty: { + startWithWorkspace: 'Ξεκινήστε με έναν χώρο εργασίας', + }, + errors: { + couldNotCreateWorkspace: 'Δεν ήταν δυνατή η δημιουργία του χώρου εργασίας', + couldNotDeleteWorkspace: 'Δεν ήταν δυνατή η διαγραφή του χώρου εργασίας', + couldNotOpenWorkspace: 'Δεν ήταν δυνατό το άνοιγμα του χώρου εργασίας', + couldNotSaveWorkspace: 'Δεν ήταν δυνατή η αποθήκευση του χώρου εργασίας', + workspaceCouldNotLoad: 'Δεν ήταν δυνατή η φόρτωση του χώρου εργασίας', + workspacesCouldNotLoad: 'Δεν ήταν δυνατή η φόρτωση των χώρων εργασίας', + }, + fields: { + descriptionLabel: 'Περιγραφή χώρου εργασίας', + descriptionPlaceholder: 'Τι ανήκει σε αυτόν τον χώρο εργασίας;', + namePlaceholder: 'Όνομα χώρου εργασίας', + untitledWorkspace: 'Χώρος εργασίας χωρίς τίτλο', + }, + labels: { + createWorkspaceTitle: 'Δημιουργία χώρου εργασίας', + loadingWorkspaces: 'Φόρτωση χώρων εργασίας', + workspace: 'Χώρος εργασίας', + workspaces: 'Χώροι εργασίας', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/en-US.ts b/ui/src/core/i18n/resources/en-US.ts index 8cf7217..9add2ab 100644 --- a/ui/src/core/i18n/resources/en-US.ts +++ b/ui/src/core/i18n/resources/en-US.ts @@ -103,16 +103,16 @@ export const enUS = { unavailable: 'Date unavailable', }, age: { - dayAgo: '{{count}} day ago', - daysAgo: '{{count}} days ago', - hourAgo: '{{count}} hour ago', - hoursAgo: '{{count}} hours ago', + dayAgo_one: '{{count}} day ago', + dayAgo_other: '{{count}} days ago', + hourAgo_one: '{{count}} hour ago', + hourAgo_other: '{{count}} hours ago', justNow: 'just now', - minuteAgo: '{{count}} minute ago', - minutesAgo: '{{count}} minutes ago', + minuteAgo_one: '{{count}} minute ago', + minuteAgo_other: '{{count}} minutes ago', unavailable: 'date unavailable', - weekAgo: '{{count}} week ago', - weeksAgo: '{{count}} weeks ago', + weekAgo_one: '{{count}} week ago', + weekAgo_other: '{{count}} weeks ago', }, labels: { deleted: 'Deleted {{value}}', @@ -122,25 +122,25 @@ export const enUS = { updatedUppercase: 'UPDATED {{value}}', }, relative: { - dayAgo: '{{count}} day ago', - daysAgo: '{{count}} days ago', + dayAgo_one: '{{count}} day ago', + dayAgo_other: '{{count}} days ago', inAMoment: 'In a moment', - inDay: 'In {{count}} day', - inDays: 'In {{count}} days', - inMonth: 'In {{count}} month', - inMonths: 'In {{count}} months', - inWeek: 'In {{count}} week', - inWeeks: 'In {{count}} weeks', + inDay_one: 'In {{count}} day', + inDay_other: 'In {{count}} days', + inMonth_one: 'In {{count}} month', + inMonth_other: 'In {{count}} months', + inWeek_one: 'In {{count}} week', + inWeek_other: 'In {{count}} weeks', justNow: 'Just now', - monthAgo: '{{count}} month ago', - monthsAgo: '{{count}} months ago', + monthAgo_one: '{{count}} month ago', + monthAgo_other: '{{count}} months ago', secondsAgoShort: '{{count}}s ago', minutesAgoShort: '{{count}}m ago', hoursAgoShort: '{{count}}h ago', today: 'Today', tomorrow: 'Tomorrow', - weekAgo: '{{count}} week ago', - weeksAgo: '{{count}} weeks ago', + weekAgo_one: '{{count}} week ago', + weekAgo_other: '{{count}} weeks ago', yesterday: 'Yesterday', }, }, @@ -421,7 +421,8 @@ export const enUS = { progress: 'Review progress', review: 'Review', reviewComplete: 'Review complete', - reviewed: 'Reviewed {{count}}', + reviewed_one: 'Reviewed {{count}}', + reviewed_other: 'Reviewed {{count}}', }, summary: { durationHoursMinutes: '{{hours}}h {{minutes}}m', @@ -469,7 +470,8 @@ export const enUS = { }, dialogs: { fsrsErrorInvalidJson: 'Paste valid JSON with 21 numeric values.', - fsrsErrorInvalidParams: 'Enter a JSON array with exactly {{count}} finite numbers.', + fsrsErrorInvalidParams_one: 'Enter a JSON array with exactly {{count}} finite number.', + fsrsErrorInvalidParams_other: 'Enter a JSON array with exactly {{count}} finite numbers.', fsrsHelper: 'This is an expert override. Values must stay in order.', fsrsJsonLabel: 'FSRS Parameters JSON', fsrsTitle: 'Edit FSRS parameters', @@ -559,8 +561,8 @@ export const enUS = { }, labels: { deletedAge: 'Deleted {{value}}', - itemCount: '{{count}} item', - itemCountPlural: '{{count}} items', + itemCount_one: '{{count}} item', + itemCount_other: '{{count}} items', lastEmptied: 'Last emptied {{value}}', loadingTrash: 'Loading trash', originalLocation: 'Original location: {{location}}', diff --git a/ui/src/core/i18n/resources/es.ts b/ui/src/core/i18n/resources/es.ts new file mode 100644 index 0000000..3333ab9 --- /dev/null +++ b/ui/src/core/i18n/resources/es.ts @@ -0,0 +1,623 @@ +export const es = { + bootstrap: { + error: { + fallbackMessage: 'Inténtalo de nuevo. Si sigue ocurriendo, vuelve a abrir Clear.', + title: 'No se pudo iniciar', + }, + loadingTitle: 'Preparando tu espacio de estudio', + }, + common: { + actions: { + back: 'Atrás', + cancel: 'Cancelar', + checkAgain: 'Comprobar de nuevo', + close: 'Cerrar', + create: 'Crear', + delete: 'Eliminar', + dismissError: 'Descartar error', + dismissStatus: 'Descartar estado', + edit: 'Editar', + itemActions: 'Acciones de {{title}}', + reset: 'Restablecer', + review: 'Repasar', + save: 'Guardar', + saveChanges: 'Guardar cambios', + tryAgain: 'Intentar de nuevo', + }, + labels: { + active: 'Activo', + clear: 'Clear', + custom: 'Personalizado', + default: 'Predeterminado', + loadingEditor: 'Cargando editor', + name: 'Nombre', + completedTask: 'Tarea completada', + description: 'Descripción', + incompleteTask: 'Tarea incompleta', + percentageInput: 'Porcentaje de {{label}}', + visual: 'Visual', + }, + status: { + actionFailed: 'La acción falló', + actionInProgress: 'Acción en curso', + }, + sort: { + ascending: 'Asc', + column: 'Columna', + descending: 'Desc', + direction: 'Dirección', + sort: 'Ordenar', + }, + search: { + label: 'Buscar', + }, + visualPicker: { + allLucideIcons: 'Todos los iconos de Lucide', + browseIconsFor: 'Explora o busca iconos para {{label}}.', + chooseIcon: 'Elegir icono', + iconPicker: 'Selector de iconos de {{label}}', + iconSearch: 'Búsqueda de iconos de {{label}}', + iconsCouldNotLoad: 'No se pudieron cargar los iconos.', + loadingIcons: 'Cargando iconos', + loadingMoreIcons: 'Cargando más iconos', + moreIcons: 'Más iconos', + noIconsMatch: 'Ningún icono coincide con "{{query}}".', + searchIconsPlaceholder: 'Buscar iconos…', + selectedIcon: '{{label}} seleccionado', + }, + }, + dashboard: { + actions: { + create: 'Crear', + newDeck: 'Nuevo mazo', + newFolder: 'Nueva carpeta', + }, + descriptions: { + defaultWorkspace: 'Mantén juntos mazos, carpetas y notas.', + emptyWorkspace: 'Crea un mazo y luego añade notas para crear tu cola de repaso.', + emptyFolder: 'Crea un mazo y luego añade notas para crear una cola de repaso.', + searchPlaceholder: 'Buscar carpetas, mazos y notas…', + }, + empty: { + createFirstDeck: 'Crea tu primer mazo', + }, + errors: { + couldNotDeleteDeck: 'No se pudo eliminar el mazo', + couldNotDeleteFolder: 'No se pudo eliminar la carpeta', + couldNotDeleteWorkspace: 'No se pudo eliminar el espacio de trabajo', + dashboardCouldNotOpen: 'No se pudo abrir el panel', + decksCouldNotLoad: 'No se pudieron cargar los mazos', + decksMayBeOutOfDate: 'Los mazos pueden estar desactualizados', + foldersCouldNotLoad: 'No se pudieron cargar las carpetas', + foldersMayBeOutOfDate: 'Las carpetas pueden estar desactualizadas', + workspaceCouldNotLoad: 'No se pudo cargar el espacio de trabajo', + }, + labels: { + dashboard: 'Panel', + loadingDashboard: 'Cargando panel', + newItem: 'Nuevo elemento', + }, + }, + dates: { + absolute: { + unavailable: 'Fecha no disponible', + }, + age: { + dayAgo_one: 'hace {{count}} día', + dayAgo_other: 'hace {{count}} días', + hourAgo_one: 'hace {{count}} hora', + hourAgo_other: 'hace {{count}} horas', + justNow: 'ahora mismo', + minuteAgo_one: 'hace {{count}} minuto', + minuteAgo_other: 'hace {{count}} minutos', + unavailable: 'fecha no disponible', + weekAgo_one: 'hace {{count}} semana', + weekAgo_other: 'hace {{count}} semanas', + }, + labels: { + deleted: 'Eliminado {{value}}', + due: 'Vence: {{value}}', + reviewed: 'Repasado: {{value}}', + updated: 'Actualizado {{value}}', + updatedUppercase: 'ACTUALIZADO {{value}}', + }, + relative: { + dayAgo_one: 'hace {{count}} día', + dayAgo_other: 'hace {{count}} días', + inAMoment: 'En un momento', + inDay_one: 'En {{count}} día', + inDay_other: 'En {{count}} días', + inMonth_one: 'En {{count}} mes', + inMonth_other: 'En {{count}} meses', + inWeek_one: 'En {{count}} semana', + inWeek_other: 'En {{count}} semanas', + justNow: 'Ahora mismo', + monthAgo_one: 'hace {{count}} mes', + monthAgo_other: 'hace {{count}} meses', + secondsAgoShort: 'hace {{count}} s', + minutesAgoShort: 'hace {{count}} min', + hoursAgoShort: 'hace {{count}} h', + today: 'Hoy', + tomorrow: 'Mañana', + weekAgo_one: 'hace {{count}} semana', + weekAgo_other: 'hace {{count}} semanas', + yesterday: 'Ayer', + }, + }, + decks: { + actions: { + actionMenu: 'Acciones de {{title}}', + createDeck: 'Crear mazo', + createNote: 'Crear nota', + deleteDeck: 'Eliminar mazo', + editDeck: 'Editar mazo', + newNote: 'Nueva nota', + openDeck: 'Abrir mazo {{title}}', + saveDeck: 'No se pudo guardar el mazo', + studyNow: 'Estudiar ahora', + }, + descriptions: { + emptyDeck: 'Añade una nota para que este mazo tenga material de repaso.', + editorDefault: 'Mazo de estudio enfocado.', + editorVisual: 'Elige un glifo de portada para este mazo.', + notesSearchPlaceholder: 'Buscar notas…', + }, + dialogs: { + deleteDeckDescription: 'Esto mueve "{{title}}" a la Papelera. Puedes restaurarlo más tarde.', + deleteDeckFallbackDescription: 'Esto mueve este mazo a la Papelera. Puedes restaurarlo más tarde.', + deleteDeckFallbackTitle: '¿Eliminar mazo?', + deleteDeckTitle: '¿Eliminar "{{title}}"?', + deleteNoteDescription: 'Esto mueve "{{title}}" a la Papelera. Puedes restaurarla más tarde.', + deleteNoteFallbackTitle: '¿Eliminar nota?', + deleteNoteTitle: '¿Eliminar "{{title}}"?', + }, + empty: { + noMatchingNotes: 'No hay notas coincidentes', + noMatchingNotesDescription: 'Ninguna nota coincidió con "{{query}}".', + thisDeckIsEmpty: 'Este mazo está vacío', + }, + errors: { + couldNotCreateDeck: 'No se pudo crear el mazo', + couldNotDeleteDeck: 'No se pudo eliminar el mazo', + couldNotDeleteNote: 'No se pudo eliminar la nota', + couldNotLoadFolderPath: 'No se pudo cargar la ruta de la carpeta', + couldNotSaveDeck: 'No se pudo guardar el mazo', + deckCouldNotLoad: 'No se pudo cargar el mazo', + notesCouldNotLoad: 'No se pudieron cargar las notas', + notesMayBeOutOfDate: 'Las notas pueden estar desactualizadas', + }, + fields: { + descriptionLabel: 'Descripción del mazo', + descriptionPlaceholder: '¿Qué te ayudará a repasar este mazo?', + namePlaceholder: 'Nombre del mazo', + untitledDeck: 'Mazo sin título', + untitledDeckLower: 'mazo sin título', + }, + labels: { + createDeckTitle: 'Crear mazo', + deck: 'Mazo', + deckNotesSearch: 'Búsqueda de notas del mazo', + deckOverview: 'Resumen del mazo', + decks: 'Mazos', + due: 'Vence', + dueToday: 'Vence hoy', + loadingDeck: 'Cargando mazo', + mastery: 'Dominio', + notes: 'Notas', + }, + sort: { + ariaLabel: 'Ordenar mazos', + dueToday: 'Vence hoy', + title: 'Título', + updated: 'Actualizado', + }, + }, + errors: { + byType: { + conflict: 'Los datos cambiaron. Actualiza e inténtalo de nuevo.', + forbidden: 'No tienes permiso para hacer esto.', + notFound: 'No pudimos encontrar este elemento.', + offline: 'No se puede conectar con el servicio.', + timeout: 'Esto tardó demasiado. Inténtalo de nuevo.', + unauthorized: 'Inicia sesión para continuar.', + unavailable: 'El servicio no está disponible temporalmente.', + }, + fallback: { + unexpected: 'Error inesperado', + }, + }, + folders: { + actions: { + createFolder: 'Crear carpeta', + deleteFolder: 'Eliminar carpeta', + editFolder: 'Editar carpeta', + }, + descriptions: { + editorDefault: 'Carpeta para mazos relacionados.', + }, + dialogs: { + deleteFolderDescription: 'Esto mueve "{{name}}" a la Papelera. Puedes restaurarla más tarde.', + deleteFolderFallbackDescription: 'Esto mueve esta carpeta a la Papelera. Puedes restaurarla más tarde.', + deleteFolderFallbackTitle: '¿Eliminar carpeta?', + deleteFolderTitle: '¿Eliminar "{{name}}"?', + }, + empty: { + noMatchesInFolder: 'No hay coincidencias en esta carpeta', + noMatchesInFolderDescription: 'Ninguna carpeta, mazo o nota coincidió con "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'No se pudo crear la carpeta', + couldNotDeleteFolder: 'No se pudo eliminar la carpeta', + couldNotLoadFolderPath: 'No se pudo cargar la ruta de la carpeta', + couldNotSaveFolder: 'No se pudo guardar la carpeta', + folderCouldNotLoad: 'No se pudo cargar la carpeta', + }, + fields: { + descriptionLabel: 'Descripción de la carpeta', + descriptionPlaceholder: '¿Qué pertenece a esta carpeta?', + namePlaceholder: 'Nombre de la carpeta', + untitledFolder: 'Carpeta sin título', + }, + labels: { + createFolderTitle: 'Crear carpeta', + folder: 'Carpeta', + folders: 'Carpetas', + loadingFolder: 'Cargando carpeta', + name: 'Nombre', + updated: 'Actualizado', + }, + sort: { + ariaLabel: 'Ordenar carpetas', + name: 'Nombre', + updated: 'Actualizado', + }, + }, + menu: { + conflicts: { + description: 'Si los datos locales y sincronizados alguna vez difieren, el elemento aparecerá aquí.', + heading: 'Estado de sincronización', + title: 'Conflictos', + noConflicts: 'No se encontraron conflictos', + }, + labels: { + menu: 'Menú', + }, + sections: { + settings: { + description: 'Personaliza tu entorno y preferencias', + title: 'Ajustes', + }, + trash: { + description: 'Restaura o elimina permanentemente elementos quitados', + title: 'Papelera', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Cerrar editor', + openActions: 'Abrir acciones', + openWorkspaces: 'Abrir espacios de trabajo', + }, + items: { + home: 'Inicio', + menu: 'Menú', + primary: 'Principal', + settings: 'Ajustes', + spaces: 'Espacios', + trash: 'Papelera', + workspaces: 'Espacios de trabajo', + }, + }, + notes: { + actions: { + addCloze: 'Añadir cloze', + deleteNote: 'Eliminar nota', + editNote: 'Editar nota', + hideDerivedCardsNote: 'Ocultar nota de tarjetas derivadas', + openNote: 'Abrir {{title}}', + saveNote: 'Guardar nota', + showDerivedCardsNote: 'Mostrar nota de tarjetas derivadas', + }, + descriptions: { + clozeFormat: 'Cada parte oculta se convierte en una tarjeta de repaso al guardar.', + clozeFormatPrefix: 'Envuelve el texto oculto con', + derivedCardsHelper: 'Las notas son la fuente de verdad de las tarjetas derivadas.', + }, + dialogs: { + deleteNoteDescription: 'Esto mueve "{{title}}" a la Papelera. Puedes restaurarla más tarde.', + deleteNoteFallbackDescription: 'Esto mueve esta nota a la Papelera. Puedes restaurarla más tarde.', + deleteNoteFallbackTitle: '¿Eliminar nota?', + deleteNoteTitle: '¿Eliminar "{{title}}"?', + }, + errors: { + couldNotCreateNote: 'No se pudo crear la nota', + couldNotDeleteNote: 'No se pudo eliminar la nota', + couldNotSaveNote: 'No se pudo guardar la nota', + noteCouldNotLoad: 'No se pudo cargar la nota', + }, + fields: { + back: 'Reverso', + backPlaceholder: 'Introduce el reverso', + bodyPlaceholder: 'Escribe el cuerpo de la nota con cloze deletions…', + front: 'Anverso', + frontPlaceholder: 'Introduce el anverso', + noteBody: 'Cuerpo de la nota', + title: 'Título', + titlePlaceholder: 'Añade un título de nota', + untitledCloze: 'Cloze sin título', + untitledNote: 'Nota sin título', + }, + labels: { + backUppercase: 'REVERSO', + basic: 'Básica', + basicLower: 'básica', + basicUppercase: 'BÁSICA', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Formato cloze', + clozeUppercase: 'CLOZE', + deck: 'Mazo', + derivedCards: 'TARJETAS DERIVADAS', + due: 'Vence', + frontUppercase: 'ANVERSO', + inProgress: 'En curso', + inProgressUppercase: 'EN CURSO', + loadingNote: 'Cargando nota', + loadingNoteEditor: 'Cargando editor de notas', + markdownFormatting: 'Formato Markdown', + mastered: 'Dominado', + masteredUppercase: 'DOMINADO', + newNote: 'Nueva nota', + noteBody: 'CUERPO DE LA NOTA', + noteContent: 'Contenido de la nota', + noteDetails: 'Detalles de la nota', + noteMetadata: 'Metadatos de la nota', + noteType: 'Tipo de nota', + notes: 'Notas', + reviewed: 'Repasado', + studyProgress: 'Progreso de estudio', + studyProgressUppercase: 'PROGRESO DE ESTUDIO', + titleUppercase: 'TÍTULO', + updated: 'Actualizado', + }, + sort: { + ariaLabel: 'Ordenar notas', + title: 'Título', + updated: 'Actualizado', + }, + toolbar: { + bold: 'Negrita', + italic: 'Cursiva', + link: 'Enlace', + list: 'Lista', + }, + }, + review: { + actions: { + again: 'Otra vez', + backToDeck: 'Volver al mazo', + continueReview: 'Continuar repaso', + easy: 'Fácil', + good: 'Bien', + hard: 'Difícil', + newNote: 'Nueva nota', + showAnswer: 'Mostrar respuesta', + }, + errors: { + couldNotGradeCard: 'No se pudo calificar la tarjeta', + reviewCouldNotLoad: 'No se pudo cargar el repaso', + reviewCouldNotStart: 'No se pudo iniciar el repaso', + summaryCouldNotLoad: 'No se pudo cargar el resumen del repaso', + summaryNotAvailable: 'El resumen del repaso no está disponible', + summaryNotComplete: 'Este repaso aún no está completo.', + }, + labels: { + cardsReviewed: 'Tarjetas repasadas', + deck: 'Mazo', + duration: 'Duración', + loadingReview: 'Cargando repaso', + loadingSummary: 'Cargando resumen', + progress: 'Progreso del repaso', + review: 'Repaso', + reviewComplete: 'Repaso completo', + reviewed_one: '{{count}} repasada', + reviewed_other: '{{count}} repasadas', + }, + summary: { + durationHoursMinutes: '{{hours}} h {{minutes}} min', + durationMinutes: '{{minutes}} min', + durationSeconds: '{{seconds}} s', + saved: 'Tu progreso se guardó en este mazo.', + }, + unavailable: { + description: 'Añade una nota para que este mazo pueda entrar en la cola de repaso.', + title: 'No hay tarjetas para repasar', + }, + }, + search: { + actions: { + clearSearch: 'Borrar búsqueda', + }, + empty: { + noMatchesInWorkspace: 'No hay coincidencias en este espacio de trabajo', + noMatchesInWorkspaceDescription: 'Ninguna carpeta, mazo o nota coincidió con "{{query}}".', + }, + errors: { + couldNotComplete: 'No se pudo completar la búsqueda', + }, + labels: { + results: 'Resultados de búsqueda', + resultsFor: 'Resultados para "{{query}}"', + searchingContent: 'Buscando contenido', + }, + resultGroups: { + deck: 'Mazos', + folder: 'Carpetas', + note: 'Notas', + }, + resultKinds: { + deck: 'mazo', + folder: 'carpeta', + note: 'nota', + }, + }, + settings: { + actions: { + resetAll: 'Restablecer todos los ajustes', + resetSettings: 'Restablecer ajustes', + resetToDefaults: 'Restablecer valores predeterminados', + }, + dialogs: { + fsrsErrorInvalidJson: 'Pega un JSON válido con 21 valores numéricos.', + fsrsErrorInvalidParams_one: 'Introduce un array JSON con exactamente {{count}} número finito.', + fsrsErrorInvalidParams_other: 'Introduce un array JSON con exactamente {{count}} números finitos.', + fsrsHelper: 'Esta es una sobrescritura experta. Los valores deben mantenerse en orden.', + fsrsJsonLabel: 'JSON de parámetros FSRS', + fsrsTitle: 'Editar parámetros FSRS', + fsrsDescription: 'Pega un array JSON con 21 números para sobrescribir los pesos del scheduler.', + resetDescription: 'Esto restaura zona horaria, límites de estudio y ajustes de FSRS.', + resetDescriptionWithLanguage: 'Esto restaura idioma, zona horaria, límites de estudio y ajustes de FSRS.', + resetTitle: '¿Restablecer todos los ajustes?', + timezoneDescription: 'Busca una ciudad o identificador de zona horaria.', + timezoneSearchLabel: 'Buscar zonas horarias', + timezoneSearchPlaceholder: 'Buscar zonas horarias…', + timezoneTitle: 'Elegir zona horaria', + }, + errors: { + couldNotResetSettings: 'No se pudieron restablecer los ajustes', + couldNotSaveSettings: 'No se pudieron guardar los ajustes', + settingsCouldNotLoad: 'No se pudieron cargar los ajustes', + settingsUnavailable: 'Los ajustes no están disponibles.', + }, + labels: { + appearance: 'Apariencia', + automatic: 'Automático', + fsrsParameters: 'Parámetros FSRS', + general: 'General', + language: 'Idioma', + loadingSettings: 'Cargando ajustes', + masteryHorizon: 'Horizonte de dominio', + newCardOrder: 'Orden de tarjetas nuevas', + newCardsPerDay: 'Tarjetas nuevas por día', + reviewCardsPerDay: 'Tarjetas de repaso por día', + savingSettings: 'Guardando ajustes', + schedule: 'Programación', + searchNoTimezones: 'No hay zonas horarias coincidentes.', + settings: 'Ajustes', + settingsReset: 'Ajustes restablecidos', + study: 'Estudio', + targetRecallProbability: 'Probabilidad de recuerdo objetivo', + theme: 'Tema', + timezone: 'Zona horaria', + }, + options: { + languageEnUs: 'Inglés (EE. UU.)', + newCardsAfterReviews: 'Después de los repasos', + newCardsBeforeReviews: 'Antes de los repasos', + newCardsMixed: 'Mezcladas', + themeDark: 'Oscuro', + themeLight: 'Claro', + themeSystem: 'Sistema', + timezoneSystem: 'Usar zona horaria del sistema', + }, + rows: { + fsrsDescription: 'Pesos del modelo experto', + languageDescription: 'Idioma de la interfaz', + masteryHorizonDescription: 'Días que una tarjeta debe permanecer recordable al objetivo o por encima de él para contar como dominada', + newCardOrderDescription: 'Orden de tarjetas nuevas respecto a los repasos', + newCardsPerDayDescription: 'Máximo de tarjetas nuevas por día', + reviewCardsPerDayDescription: 'Máximo de tarjetas de repaso por día', + targetRecallProbabilityDescription: 'Probabilidad mínima de recuerdo en el próximo repaso programado', + timezoneDescription: 'Usa la zona horaria automática o elige una ciudad.', + }, + }, + trash: { + actions: { + deletePermanently: 'Eliminar permanentemente', + empty: 'Vaciar', + emptyTrash: 'Vaciar papelera', + restore: 'Restaurar', + restoringItem: 'Restaurando {{title}}', + }, + dialogs: { + deleteItemDescription: 'Esto elimina permanentemente "{{title}}". No se puede deshacer.', + deleteItemFallbackDescription: 'Esto elimina permanentemente este elemento. No se puede deshacer.', + deleteItemFallbackTitle: '¿Eliminar elemento?', + deleteItemTitle: '¿Eliminar "{{title}}"?', + emptyTrashDescription: 'Esto elimina permanentemente todo lo que está en la Papelera. No se puede deshacer.', + emptyTrashTitle: '¿Vaciar papelera?', + }, + empty: { + description: 'Los elementos que elimines aparecerán aquí antes de su eliminación permanente.', + title: 'La Papelera está vacía', + }, + errors: { + couldNotDeleteItem: 'No se pudo eliminar el elemento', + couldNotEmptyTrash: 'No se pudo vaciar la Papelera', + couldNotRestoreItem: 'No se pudo restaurar el elemento', + trashCouldNotLoad: 'No se pudo cargar la Papelera', + trashMayBeOutOfDate: 'La Papelera puede estar desactualizada', + }, + labels: { + deletedAge: 'Eliminado {{value}}', + itemCount_one: '{{count}} elemento', + itemCount_other: '{{count}} elementos', + lastEmptied: 'Vaciada por última vez {{value}}', + loadingTrash: 'Cargando Papelera', + originalLocation: 'Ubicación original: {{location}}', + title: 'Papelera', + trashActions: 'Acciones de Papelera para {{title}}', + }, + kinds: { + deck: 'Mazo', + folder: 'Carpeta', + note: 'Nota', + workspace: 'Espacio de trabajo', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Crear espacio de trabajo', + deleteWorkspace: 'Eliminar espacio de trabajo', + editWorkspace: 'Editar espacio de trabajo', + newWorkspace: 'Nuevo espacio de trabajo', + openWorkspace: 'Abrir {{title}}', + openingWorkspace: 'Abriendo {{title}}', + }, + descriptions: { + editorDefault: 'Contexto de estudio.', + editorVisual: 'Elige un ancla visual para este espacio de trabajo.', + emptyList: 'Separa mazos, notas y colas de repaso por contexto de estudio.', + }, + dialogs: { + deleteWorkspaceDescription: 'Esto mueve "{{title}}" a la Papelera. Puedes restaurarlo más tarde.', + deleteWorkspaceFallbackDescription: 'Esto mueve este espacio de trabajo a la Papelera. Puedes restaurarlo más tarde.', + deleteWorkspaceFallbackTitle: '¿Eliminar espacio de trabajo?', + deleteWorkspaceTitle: '¿Eliminar "{{title}}"?', + }, + empty: { + startWithWorkspace: 'Empieza con un espacio de trabajo', + }, + errors: { + couldNotCreateWorkspace: 'No se pudo crear el espacio de trabajo', + couldNotDeleteWorkspace: 'No se pudo eliminar el espacio de trabajo', + couldNotOpenWorkspace: 'No se pudo abrir el espacio de trabajo', + couldNotSaveWorkspace: 'No se pudo guardar el espacio de trabajo', + workspaceCouldNotLoad: 'No se pudo cargar el espacio de trabajo', + workspacesCouldNotLoad: 'No se pudieron cargar los espacios de trabajo', + }, + fields: { + descriptionLabel: 'Descripción del espacio de trabajo', + descriptionPlaceholder: '¿Qué pertenece a este espacio de trabajo?', + namePlaceholder: 'Nombre del espacio de trabajo', + untitledWorkspace: 'Espacio de trabajo sin título', + }, + labels: { + createWorkspaceTitle: 'Crear espacio de trabajo', + loadingWorkspaces: 'Cargando espacios de trabajo', + workspace: 'Espacio de trabajo', + workspaces: 'Espacios de trabajo', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/et.ts b/ui/src/core/i18n/resources/et.ts new file mode 100644 index 0000000..0a71d5c --- /dev/null +++ b/ui/src/core/i18n/resources/et.ts @@ -0,0 +1,623 @@ +export const et = { + bootstrap: { + error: { + fallbackMessage: 'Proovi uuesti. Kui see jätkub, ava Clear uuesti.', + title: 'Käivitamine nurjus', + }, + loadingTitle: 'Õpperuumi ettevalmistamine', + }, + common: { + actions: { + back: 'Tagasi', + cancel: 'Tühista', + checkAgain: 'Kontrolli uuesti', + close: 'Sulge', + create: 'Loo', + delete: 'Kustuta', + dismissError: 'Sulge tõrge', + dismissStatus: 'Sulge olek', + edit: 'Muuda', + itemActions: '{{title}} toimingud', + reset: 'Lähtesta', + review: 'Korda', + save: 'Salvesta', + saveChanges: 'Salvesta muudatused', + tryAgain: 'Proovi uuesti', + }, + labels: { + active: 'Aktiivne', + clear: 'Clear', + custom: 'Kohandatud', + default: 'Vaikimisi', + loadingEditor: 'Redaktori laadimine', + name: 'Nimi', + completedTask: 'Lõpetatud ülesanne', + description: 'Kirjeldus', + incompleteTask: 'Lõpetamata ülesanne', + percentageInput: '{{label}} protsent', + visual: 'Visuaal', + }, + status: { + actionFailed: 'Toiming nurjus', + actionInProgress: 'Toiming on pooleli', + }, + sort: { + ascending: 'Kasvav', + column: 'Veerg', + descending: 'Kahanev', + direction: 'Suund', + sort: 'Sordi', + }, + search: { + label: 'Otsing', + }, + visualPicker: { + allLucideIcons: 'Kõik Lucide ikoonid', + browseIconsFor: 'Sirvi või otsi ikoone: {{label}}.', + chooseIcon: 'Vali ikoon', + iconPicker: '{{label}} ikoonivalija', + iconSearch: '{{label}} ikooniotsing', + iconsCouldNotLoad: 'Ikoone ei saanud laadida.', + loadingIcons: 'Ikoonide laadimine', + loadingMoreIcons: 'Rohkemate ikoonide laadimine', + moreIcons: 'Rohkem ikoone', + noIconsMatch: 'Ükski ikoon ei vasta otsingule "{{query}}".', + searchIconsPlaceholder: 'Otsi ikoone…', + selectedIcon: 'Valitud {{label}}', + }, + }, + dashboard: { + actions: { + create: 'Loo', + newDeck: 'Uus pakk', + newFolder: 'Uus kaust', + }, + descriptions: { + defaultWorkspace: 'Hoia pakid, kaustad ja märkmed koos.', + emptyWorkspace: 'Loo pakk ja lisa seejärel märkmeid, et ehitada kordamisjärjekord.', + emptyFolder: 'Loo pakk ja lisa seejärel märkmeid, et ehitada kordamisjärjekord.', + searchPlaceholder: 'Otsi kaustu, pakke ja märkmeid…', + }, + empty: { + createFirstDeck: 'Loo oma esimene pakk', + }, + errors: { + couldNotDeleteDeck: 'Pakki ei saanud kustutada', + couldNotDeleteFolder: 'Kausta ei saanud kustutada', + couldNotDeleteWorkspace: 'Tööruumi ei saanud kustutada', + dashboardCouldNotOpen: 'Töölauda ei saanud avada', + decksCouldNotLoad: 'Pakke ei saanud laadida', + decksMayBeOutOfDate: 'Pakid võivad olla aegunud', + foldersCouldNotLoad: 'Kaustu ei saanud laadida', + foldersMayBeOutOfDate: 'Kaustad võivad olla aegunud', + workspaceCouldNotLoad: 'Tööruumi ei saanud laadida', + }, + labels: { + dashboard: 'Töölaud', + loadingDashboard: 'Töölaua laadimine', + newItem: 'Uus üksus', + }, + }, + dates: { + absolute: { + unavailable: 'Kuupäev pole saadaval', + }, + age: { + dayAgo_one: '{{count}} päev tagasi', + dayAgo_other: '{{count}} päeva tagasi', + hourAgo_one: '{{count}} tund tagasi', + hourAgo_other: '{{count}} tundi tagasi', + justNow: 'just praegu', + minuteAgo_one: '{{count}} minut tagasi', + minuteAgo_other: '{{count}} minutit tagasi', + unavailable: 'kuupäev pole saadaval', + weekAgo_one: '{{count}} nädal tagasi', + weekAgo_other: '{{count}} nädalat tagasi', + }, + labels: { + deleted: 'Kustutatud {{value}}', + due: 'Tähtaeg: {{value}}', + reviewed: 'Korratud: {{value}}', + updated: 'Uuendatud {{value}}', + updatedUppercase: 'UUENDATUD {{value}}', + }, + relative: { + dayAgo_one: '{{count}} päev tagasi', + dayAgo_other: '{{count}} päeva tagasi', + inAMoment: 'Hetke pärast', + inDay_one: '{{count}} päeva pärast', + inDay_other: '{{count}} päeva pärast', + inMonth_one: '{{count}} kuu pärast', + inMonth_other: '{{count}} kuu pärast', + inWeek_one: '{{count}} nädala pärast', + inWeek_other: '{{count}} nädala pärast', + justNow: 'Just praegu', + monthAgo_one: '{{count}} kuu tagasi', + monthAgo_other: '{{count}} kuud tagasi', + secondsAgoShort: '{{count}} s tagasi', + minutesAgoShort: '{{count}} min tagasi', + hoursAgoShort: '{{count}} h tagasi', + today: 'Täna', + tomorrow: 'Homme', + weekAgo_one: '{{count}} nädal tagasi', + weekAgo_other: '{{count}} nädalat tagasi', + yesterday: 'Eile', + }, + }, + decks: { + actions: { + actionMenu: '{{title}} toimingud', + createDeck: 'Loo pakk', + createNote: 'Loo märge', + deleteDeck: 'Kustuta pakk', + editDeck: 'Muuda pakki', + newNote: 'Uus märge', + openDeck: 'Ava pakk {{title}}', + saveDeck: 'Pakki ei saanud salvestada', + studyNow: 'Õpi kohe', + }, + descriptions: { + emptyDeck: 'Lisa märge, et sellel pakil oleks kordamiseks materjali.', + editorDefault: 'Fookustatud õppepakk.', + editorVisual: 'Vali selle paki kaanesümbol.', + notesSearchPlaceholder: 'Otsi märkmeid…', + }, + dialogs: { + deleteDeckDescription: 'See teisaldab "{{title}}" prügikasti. Saad selle hiljem taastada.', + deleteDeckFallbackDescription: 'See teisaldab selle paki prügikasti. Saad selle hiljem taastada.', + deleteDeckFallbackTitle: 'Kas kustutada pakk?', + deleteDeckTitle: 'Kas kustutada "{{title}}"?', + deleteNoteDescription: 'See teisaldab "{{title}}" prügikasti. Saad selle hiljem taastada.', + deleteNoteFallbackTitle: 'Kas kustutada märge?', + deleteNoteTitle: 'Kas kustutada "{{title}}"?', + }, + empty: { + noMatchingNotes: 'Sobivaid märkmeid pole', + noMatchingNotesDescription: 'Ükski märge ei vastanud otsingule "{{query}}".', + thisDeckIsEmpty: 'See pakk on tühi', + }, + errors: { + couldNotCreateDeck: 'Pakki ei saanud luua', + couldNotDeleteDeck: 'Pakki ei saanud kustutada', + couldNotDeleteNote: 'Märget ei saanud kustutada', + couldNotLoadFolderPath: 'Kaustateed ei saanud laadida', + couldNotSaveDeck: 'Pakki ei saanud salvestada', + deckCouldNotLoad: 'Pakki ei saanud laadida', + notesCouldNotLoad: 'Märkmeid ei saanud laadida', + notesMayBeOutOfDate: 'Märkmed võivad olla aegunud', + }, + fields: { + descriptionLabel: 'Paki kirjeldus', + descriptionPlaceholder: 'Mida see pakk aitab sul korrata?', + namePlaceholder: 'Paki nimi', + untitledDeck: 'Pealkirjata pakk', + untitledDeckLower: 'pealkirjata pakk', + }, + labels: { + createDeckTitle: 'Loo pakk', + deck: 'Pakk', + deckNotesSearch: 'Paki märkmete otsing', + deckOverview: 'Paki ülevaade', + decks: 'Pakid', + due: 'Tähtaeg', + dueToday: 'Tähtaeg täna', + loadingDeck: 'Paki laadimine', + mastery: 'Omandamine', + notes: 'Märkmed', + }, + sort: { + ariaLabel: 'Sordi pakke', + dueToday: 'Tähtaeg täna', + title: 'Pealkiri', + updated: 'Uuendatud', + }, + }, + errors: { + byType: { + conflict: 'Andmed muutusid. Värskenda ja proovi uuesti.', + forbidden: 'Sul pole luba seda teha.', + notFound: 'Me ei leidnud seda üksust.', + offline: 'Teenusega ei saa ühendust.', + timeout: 'See võttis liiga kaua aega. Proovi uuesti.', + unauthorized: 'Jätkamiseks logi sisse.', + unavailable: 'Teenus pole ajutiselt saadaval.', + }, + fallback: { + unexpected: 'Ootamatu tõrge', + }, + }, + folders: { + actions: { + createFolder: 'Loo kaust', + deleteFolder: 'Kustuta kaust', + editFolder: 'Muuda kausta', + }, + descriptions: { + editorDefault: 'Kaust seotud pakkide jaoks.', + }, + dialogs: { + deleteFolderDescription: 'See teisaldab "{{name}}" prügikasti. Saad selle hiljem taastada.', + deleteFolderFallbackDescription: 'See teisaldab selle kausta prügikasti. Saad selle hiljem taastada.', + deleteFolderFallbackTitle: 'Kas kustutada kaust?', + deleteFolderTitle: 'Kas kustutada "{{name}}"?', + }, + empty: { + noMatchesInFolder: 'Selles kaustas vasteid pole', + noMatchesInFolderDescription: 'Ükski kaust, pakk ega märge ei vastanud otsingule "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'Kausta ei saanud luua', + couldNotDeleteFolder: 'Kausta ei saanud kustutada', + couldNotLoadFolderPath: 'Kaustateed ei saanud laadida', + couldNotSaveFolder: 'Kausta ei saanud salvestada', + folderCouldNotLoad: 'Kausta ei saanud laadida', + }, + fields: { + descriptionLabel: 'Kausta kirjeldus', + descriptionPlaceholder: 'Mis sellesse kausta kuulub?', + namePlaceholder: 'Kausta nimi', + untitledFolder: 'Pealkirjata kaust', + }, + labels: { + createFolderTitle: 'Loo kaust', + folder: 'Kaust', + folders: 'Kaustad', + loadingFolder: 'Kausta laadimine', + name: 'Nimi', + updated: 'Uuendatud', + }, + sort: { + ariaLabel: 'Sordi kaustu', + name: 'Nimi', + updated: 'Uuendatud', + }, + }, + menu: { + conflicts: { + description: 'Kui kohalikud ja sünkroonitud andmed kunagi ei kattu, kuvatakse üksus siin.', + heading: 'Sünkroonimise olek', + title: 'Konfliktid', + noConflicts: 'Konflikte ei leitud', + }, + labels: { + menu: 'Menüü', + }, + sections: { + settings: { + description: 'Kohanda oma keskkonda ja eelistusi', + title: 'Seaded', + }, + trash: { + description: 'Taasta või kustuta eemaldatud üksused jäädavalt', + title: 'Prügikast', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Sulge redaktor', + openActions: 'Ava toimingud', + openWorkspaces: 'Ava tööruumid', + }, + items: { + home: 'Avaleht', + menu: 'Menüü', + primary: 'Peamine', + settings: 'Seaded', + spaces: 'Ruumid', + trash: 'Prügikast', + workspaces: 'Tööruumid', + }, + }, + notes: { + actions: { + addCloze: 'Lisa cloze', + deleteNote: 'Kustuta märge', + editNote: 'Muuda märget', + hideDerivedCardsNote: 'Peida tuletatud kaartide märkus', + openNote: 'Ava {{title}}', + saveNote: 'Salvesta märge', + showDerivedCardsNote: 'Kuva tuletatud kaartide märkus', + }, + descriptions: { + clozeFormat: 'Iga peidetud osa muutub salvestamisel kordamiskaardiks.', + clozeFormatPrefix: 'Ümbritse peidetud tekst märgendiga', + derivedCardsHelper: 'Märkmed on tuletatud kaartide tõeallikas.', + }, + dialogs: { + deleteNoteDescription: 'See teisaldab "{{title}}" prügikasti. Saad selle hiljem taastada.', + deleteNoteFallbackDescription: 'See teisaldab selle märkme prügikasti. Saad selle hiljem taastada.', + deleteNoteFallbackTitle: 'Kas kustutada märge?', + deleteNoteTitle: 'Kas kustutada "{{title}}"?', + }, + errors: { + couldNotCreateNote: 'Märget ei saanud luua', + couldNotDeleteNote: 'Märget ei saanud kustutada', + couldNotSaveNote: 'Märget ei saanud salvestada', + noteCouldNotLoad: 'Märget ei saanud laadida', + }, + fields: { + back: 'Tagakülg', + backPlaceholder: 'Sisesta tagakülg', + bodyPlaceholder: 'Kirjuta märkme sisu cloze-kustutustega…', + front: 'Esikülg', + frontPlaceholder: 'Sisesta esikülg', + noteBody: 'Märkme sisu', + title: 'Pealkiri', + titlePlaceholder: 'Lisa märkme pealkiri', + untitledCloze: 'Pealkirjata cloze', + untitledNote: 'Pealkirjata märge', + }, + labels: { + backUppercase: 'TAGAKÜLG', + basic: 'Tavaline', + basicLower: 'tavaline', + basicUppercase: 'TAVALINE', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Cloze-vorming', + clozeUppercase: 'CLOZE', + deck: 'Pakk', + derivedCards: 'TULETATUD KAARDID', + due: 'Tähtaeg', + frontUppercase: 'ESIKÜLG', + inProgress: 'Pooleli', + inProgressUppercase: 'POOLELI', + loadingNote: 'Märkme laadimine', + loadingNoteEditor: 'Märkmeredaktori laadimine', + markdownFormatting: 'Markdown-vormindus', + mastered: 'Omandatud', + masteredUppercase: 'OMANDATUD', + newNote: 'Uus märge', + noteBody: 'MÄRKME SISU', + noteContent: 'Märkme sisu', + noteDetails: 'Märkme üksikasjad', + noteMetadata: 'Märkme metaandmed', + noteType: 'Märkme tüüp', + notes: 'Märkmed', + reviewed: 'Korratud', + studyProgress: 'Õppimise edenemine', + studyProgressUppercase: 'ÕPPIMISE EDENEMINE', + titleUppercase: 'PEALKIRI', + updated: 'Uuendatud', + }, + sort: { + ariaLabel: 'Sordi märkmeid', + title: 'Pealkiri', + updated: 'Uuendatud', + }, + toolbar: { + bold: 'Paks kiri', + italic: 'Kaldkiri', + link: 'Link', + list: 'Loend', + }, + }, + review: { + actions: { + again: 'Uuesti', + backToDeck: 'Tagasi paki juurde', + continueReview: 'Jätka kordamist', + easy: 'Lihtne', + good: 'Hea', + hard: 'Raske', + newNote: 'Uus märge', + showAnswer: 'Näita vastust', + }, + errors: { + couldNotGradeCard: 'Kaarti ei saanud hinnata', + reviewCouldNotLoad: 'Kordamist ei saanud laadida', + reviewCouldNotStart: 'Kordamist ei saanud alustada', + summaryCouldNotLoad: 'Kordamise kokkuvõtet ei saanud laadida', + summaryNotAvailable: 'Kordamise kokkuvõte pole saadaval', + summaryNotComplete: 'See kordamine pole veel lõpetatud.', + }, + labels: { + cardsReviewed: 'Korratud kaardid', + deck: 'Pakk', + duration: 'Kestus', + loadingReview: 'Kordamise laadimine', + loadingSummary: 'Kokkuvõtte laadimine', + progress: 'Kordamise edenemine', + review: 'Kordamine', + reviewComplete: 'Kordamine lõpetatud', + reviewed_one: 'Korratud {{count}}', + reviewed_other: 'Korratud {{count}}', + }, + summary: { + durationHoursMinutes: '{{hours}} h {{minutes}} min', + durationMinutes: '{{minutes}} min', + durationSeconds: '{{seconds}} s', + saved: 'Sinu edenemine salvestati sellesse pakki.', + }, + unavailable: { + description: 'Lisa märge, et see pakk saaks kordamisjärjekorda minna.', + title: 'Kordamiseks pole kaarte', + }, + }, + search: { + actions: { + clearSearch: 'Tühjenda otsing', + }, + empty: { + noMatchesInWorkspace: 'Selles tööruumis vasteid pole', + noMatchesInWorkspaceDescription: 'Ükski kaust, pakk ega märge ei vastanud otsingule "{{query}}".', + }, + errors: { + couldNotComplete: 'Otsingut ei saanud lõpetada', + }, + labels: { + results: 'Otsingutulemused', + resultsFor: 'Tulemused otsingule "{{query}}"', + searchingContent: 'Sisu otsimine', + }, + resultGroups: { + deck: 'Pakid', + folder: 'Kaustad', + note: 'Märkmed', + }, + resultKinds: { + deck: 'pakk', + folder: 'kaust', + note: 'märge', + }, + }, + settings: { + actions: { + resetAll: 'Lähtesta kõik seaded', + resetSettings: 'Lähtesta seaded', + resetToDefaults: 'Taasta vaikeväärtused', + }, + dialogs: { + fsrsErrorInvalidJson: 'Kleebi kehtiv JSON 21 arvväärtusega.', + fsrsErrorInvalidParams_one: 'Sisesta JSON-massiiv täpselt {{count}} lõpliku arvuga.', + fsrsErrorInvalidParams_other: 'Sisesta JSON-massiiv täpselt {{count}} lõpliku arvuga.', + fsrsHelper: 'See on eksperdi ülekirjutus. Väärtused peavad jääma järjekorda.', + fsrsJsonLabel: 'FSRS-i parameetrite JSON', + fsrsTitle: 'Muuda FSRS-i parameetreid', + fsrsDescription: 'Kleebi 21 arvuga JSON-massiiv, et ajastaja kaalud üle kirjutada.', + resetDescription: 'See taastab ajavööndi, õppepiirangud ja FSRS-i seaded.', + resetDescriptionWithLanguage: 'See taastab keele, ajavööndi, õppepiirangud ja FSRS-i seaded.', + resetTitle: 'Kas lähtestada kõik seaded?', + timezoneDescription: 'Otsi linna või ajavööndi identifikaatorit.', + timezoneSearchLabel: 'Otsi ajavööndeid', + timezoneSearchPlaceholder: 'Otsi ajavööndeid…', + timezoneTitle: 'Vali ajavöönd', + }, + errors: { + couldNotResetSettings: 'Seadeid ei saanud lähtestada', + couldNotSaveSettings: 'Seadeid ei saanud salvestada', + settingsCouldNotLoad: 'Seadeid ei saanud laadida', + settingsUnavailable: 'Seaded pole saadaval.', + }, + labels: { + appearance: 'Välimus', + automatic: 'Automaatne', + fsrsParameters: 'FSRS-i parameetrid', + general: 'Üldine', + language: 'Keel', + loadingSettings: 'Seadete laadimine', + masteryHorizon: 'Omandamise horisont', + newCardOrder: 'Uute kaartide järjekord', + newCardsPerDay: 'Uusi kaarte päevas', + reviewCardsPerDay: 'Kordamiskaarte päevas', + savingSettings: 'Seadete salvestamine', + schedule: 'Ajakava', + searchNoTimezones: 'Sobivaid ajavööndeid pole.', + settings: 'Seaded', + settingsReset: 'Seaded lähtestatud', + study: 'Õppimine', + targetRecallProbability: 'Sihtmeenutuse tõenäosus', + theme: 'Teema', + timezone: 'Ajavöönd', + }, + options: { + languageEnUs: 'Inglise (USA)', + newCardsAfterReviews: 'Pärast kordamisi', + newCardsBeforeReviews: 'Enne kordamisi', + newCardsMixed: 'Segatud', + themeDark: 'Tume', + themeLight: 'Hele', + themeSystem: 'Süsteem', + timezoneSystem: 'Kasuta süsteemi ajavööndit', + }, + rows: { + fsrsDescription: 'Ekspertmudeli kaalud', + languageDescription: 'Liidese keel', + masteryHorizonDescription: 'Päevade arv, mille jooksul kaart peab püsima meelde tuletatav sihttõenäosusel või sellest kõrgemal, et seda loetaks omandatuks', + newCardOrderDescription: 'Uute kaartide järjekord kordamiste suhtes', + newCardsPerDayDescription: 'Maksimaalne uute kaartide arv päevas', + reviewCardsPerDayDescription: 'Maksimaalne kordamiskaartide arv päevas', + targetRecallProbabilityDescription: 'Minimaalne meenutamise tõenäosus järgmisel ajastatud kordamisel', + timezoneDescription: 'Kasuta automaatset ajavööndit või vali linn.', + }, + }, + trash: { + actions: { + deletePermanently: 'Kustuta jäädavalt', + empty: 'Tühjenda', + emptyTrash: 'Tühjenda prügikast', + restore: 'Taasta', + restoringItem: '{{title}} taastamine', + }, + dialogs: { + deleteItemDescription: 'See kustutab "{{title}}" jäädavalt. Seda ei saa tagasi võtta.', + deleteItemFallbackDescription: 'See kustutab selle üksuse jäädavalt. Seda ei saa tagasi võtta.', + deleteItemFallbackTitle: 'Kas kustutada üksus?', + deleteItemTitle: 'Kas kustutada "{{title}}"?', + emptyTrashDescription: 'See kustutab kõik prügikastis oleva jäädavalt. Seda ei saa tagasi võtta.', + emptyTrashTitle: 'Kas tühjendada prügikast?', + }, + empty: { + description: 'Kustutatud üksused ilmuvad siia enne jäädavat eemaldamist.', + title: 'Prügikast on tühi', + }, + errors: { + couldNotDeleteItem: 'Üksust ei saanud kustutada', + couldNotEmptyTrash: 'Prügikasti ei saanud tühjendada', + couldNotRestoreItem: 'Üksust ei saanud taastada', + trashCouldNotLoad: 'Prügikasti ei saanud laadida', + trashMayBeOutOfDate: 'Prügikast võib olla aegunud', + }, + labels: { + deletedAge: 'Kustutatud {{value}}', + itemCount_one: '{{count}} üksus', + itemCount_other: '{{count}} üksust', + lastEmptied: 'Viimati tühjendatud {{value}}', + loadingTrash: 'Prügikasti laadimine', + originalLocation: 'Algne asukoht: {{location}}', + title: 'Prügikast', + trashActions: '{{title}} prügikasti toimingud', + }, + kinds: { + deck: 'Pakk', + folder: 'Kaust', + note: 'Märge', + workspace: 'Tööruum', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Loo tööruum', + deleteWorkspace: 'Kustuta tööruum', + editWorkspace: 'Muuda tööruumi', + newWorkspace: 'Uus tööruum', + openWorkspace: 'Ava {{title}}', + openingWorkspace: '{{title}} avamine', + }, + descriptions: { + editorDefault: 'Õppekontekst.', + editorVisual: 'Vali selle tööruumi visuaalne ankur.', + emptyList: 'Eralda pakid, märkmed ja kordamisjärjekorrad õppekonteksti järgi.', + }, + dialogs: { + deleteWorkspaceDescription: 'See teisaldab "{{title}}" prügikasti. Saad selle hiljem taastada.', + deleteWorkspaceFallbackDescription: 'See teisaldab selle tööruumi prügikasti. Saad selle hiljem taastada.', + deleteWorkspaceFallbackTitle: 'Kas kustutada tööruum?', + deleteWorkspaceTitle: 'Kas kustutada "{{title}}"?', + }, + empty: { + startWithWorkspace: 'Alusta tööruumiga', + }, + errors: { + couldNotCreateWorkspace: 'Tööruumi ei saanud luua', + couldNotDeleteWorkspace: 'Tööruumi ei saanud kustutada', + couldNotOpenWorkspace: 'Tööruumi ei saanud avada', + couldNotSaveWorkspace: 'Tööruumi ei saanud salvestada', + workspaceCouldNotLoad: 'Tööruumi ei saanud laadida', + workspacesCouldNotLoad: 'Tööruume ei saanud laadida', + }, + fields: { + descriptionLabel: 'Tööruumi kirjeldus', + descriptionPlaceholder: 'Mis sellesse tööruumi kuulub?', + namePlaceholder: 'Tööruumi nimi', + untitledWorkspace: 'Pealkirjata tööruum', + }, + labels: { + createWorkspaceTitle: 'Loo tööruum', + loadingWorkspaces: 'Tööruumide laadimine', + workspace: 'Tööruum', + workspaces: 'Tööruumid', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/fa.ts b/ui/src/core/i18n/resources/fa.ts new file mode 100644 index 0000000..667267b --- /dev/null +++ b/ui/src/core/i18n/resources/fa.ts @@ -0,0 +1,623 @@ +export const fa = { + bootstrap: { + error: { + fallbackMessage: 'دوباره تلاش کنید. اگر این مشکل ادامه داشت، Clear را دوباره باز کنید.', + title: 'شروع نشد', + }, + loadingTitle: 'در حال آماده کردن فضای مطالعه شما', + }, + common: { + actions: { + back: 'بازگشت', + cancel: 'لغو', + checkAgain: 'بررسی دوباره', + close: 'بستن', + create: 'ایجاد', + delete: 'حذف', + dismissError: 'بستن خطا', + dismissStatus: 'بستن وضعیت', + edit: 'ویرایش', + itemActions: 'اقدام‌های {{title}}', + reset: 'بازنشانی', + review: 'مرور', + save: 'ذخیره', + saveChanges: 'ذخیره تغییرات', + tryAgain: 'تلاش دوباره', + }, + labels: { + active: 'فعال', + clear: 'Clear', + custom: 'سفارشی', + default: 'پیش‌فرض', + loadingEditor: 'در حال بارگیری ویرایشگر', + name: 'نام', + completedTask: 'کار تکمیل‌شده', + description: 'توضیحات', + incompleteTask: 'کار ناتمام', + percentageInput: 'درصد {{label}}', + visual: 'نمایه', + }, + status: { + actionFailed: 'اقدام ناموفق بود', + actionInProgress: 'اقدام در حال انجام است', + }, + sort: { + ascending: 'صعودی', + column: 'ستون', + descending: 'نزولی', + direction: 'جهت', + sort: 'مرتب‌سازی', + }, + search: { + label: 'جستجو', + }, + visualPicker: { + allLucideIcons: 'همه آیکن‌های Lucide', + browseIconsFor: 'آیکن‌های {{label}} را مرور یا جستجو کنید.', + chooseIcon: 'انتخاب آیکن', + iconPicker: 'انتخابگر آیکن {{label}}', + iconSearch: 'جستجوی آیکن {{label}}', + iconsCouldNotLoad: 'آیکن‌ها بارگیری نشدند.', + loadingIcons: 'در حال بارگیری آیکن‌ها', + loadingMoreIcons: 'در حال بارگیری آیکن‌های بیشتر', + moreIcons: 'آیکن‌های بیشتر', + noIconsMatch: 'هیچ آیکنی با "{{query}}" مطابقت ندارد.', + searchIconsPlaceholder: 'جستجوی آیکن‌ها…', + selectedIcon: '{{label}} انتخاب‌شده', + }, + }, + dashboard: { + actions: { + create: 'ایجاد', + newDeck: 'دسته جدید', + newFolder: 'پوشه جدید', + }, + descriptions: { + defaultWorkspace: 'دسته‌ها، پوشه‌ها و یادداشت‌ها را کنار هم نگه دارید.', + emptyWorkspace: 'یک دسته بسازید، سپس یادداشت اضافه کنید تا صف مرور را شکل دهید.', + emptyFolder: 'یک دسته بسازید، سپس یادداشت اضافه کنید تا صف مرور شکل بگیرد.', + searchPlaceholder: 'جستجو در پوشه‌ها، دسته‌ها و یادداشت‌ها…', + }, + empty: { + createFirstDeck: 'اولین دسته خود را بسازید', + }, + errors: { + couldNotDeleteDeck: 'دسته حذف نشد', + couldNotDeleteFolder: 'پوشه حذف نشد', + couldNotDeleteWorkspace: 'فضای کاری حذف نشد', + dashboardCouldNotOpen: 'داشبورد باز نشد', + decksCouldNotLoad: 'دسته‌ها بارگیری نشدند', + decksMayBeOutOfDate: 'ممکن است دسته‌ها به‌روز نباشند', + foldersCouldNotLoad: 'پوشه‌ها بارگیری نشدند', + foldersMayBeOutOfDate: 'ممکن است پوشه‌ها به‌روز نباشند', + workspaceCouldNotLoad: 'فضای کاری بارگیری نشد', + }, + labels: { + dashboard: 'داشبورد', + loadingDashboard: 'در حال بارگیری داشبورد', + newItem: 'مورد جدید', + }, + }, + dates: { + absolute: { + unavailable: 'تاریخ در دسترس نیست', + }, + age: { + dayAgo_one: '{{count}} روز پیش', + dayAgo_other: '{{count}} روز پیش', + hourAgo_one: '{{count}} ساعت پیش', + hourAgo_other: '{{count}} ساعت پیش', + justNow: 'همین حالا', + minuteAgo_one: '{{count}} دقیقه پیش', + minuteAgo_other: '{{count}} دقیقه پیش', + unavailable: 'تاریخ در دسترس نیست', + weekAgo_one: '{{count}} هفته پیش', + weekAgo_other: '{{count}} هفته پیش', + }, + labels: { + deleted: 'حذف‌شده {{value}}', + due: 'موعد: {{value}}', + reviewed: 'مرور شد: {{value}}', + updated: 'به‌روزرسانی‌شده {{value}}', + updatedUppercase: 'به‌روزرسانی‌شده {{value}}', + }, + relative: { + dayAgo_one: '{{count}} روز پیش', + dayAgo_other: '{{count}} روز پیش', + inAMoment: 'تا لحظاتی دیگر', + inDay_one: 'در {{count}} روز', + inDay_other: 'در {{count}} روز', + inMonth_one: 'در {{count}} ماه', + inMonth_other: 'در {{count}} ماه', + inWeek_one: 'در {{count}} هفته', + inWeek_other: 'در {{count}} هفته', + justNow: 'همین حالا', + monthAgo_one: '{{count}} ماه پیش', + monthAgo_other: '{{count}} ماه پیش', + secondsAgoShort: '{{count}}ث پیش', + minutesAgoShort: '{{count}}د پیش', + hoursAgoShort: '{{count}}س پیش', + today: 'امروز', + tomorrow: 'فردا', + weekAgo_one: '{{count}} هفته پیش', + weekAgo_other: '{{count}} هفته پیش', + yesterday: 'دیروز', + }, + }, + decks: { + actions: { + actionMenu: 'اقدام‌های {{title}}', + createDeck: 'ایجاد دسته', + createNote: 'ایجاد یادداشت', + deleteDeck: 'حذف دسته', + editDeck: 'ویرایش دسته', + newNote: 'یادداشت جدید', + openDeck: 'باز کردن دسته {{title}}', + saveDeck: 'دسته ذخیره نشد', + studyNow: 'اکنون مطالعه کن', + }, + descriptions: { + emptyDeck: 'یک یادداشت اضافه کنید تا این دسته محتوایی برای مرور داشته باشد.', + editorDefault: 'دسته مطالعه متمرکز.', + editorVisual: 'یک نماد جلد برای این دسته انتخاب کنید.', + notesSearchPlaceholder: 'جستجو در یادداشت‌ها…', + }, + dialogs: { + deleteDeckDescription: '"{{title}}" به سطل زباله منتقل می‌شود. بعدا می‌توانید آن را بازیابی کنید.', + deleteDeckFallbackDescription: 'این دسته به سطل زباله منتقل می‌شود. بعدا می‌توانید آن را بازیابی کنید.', + deleteDeckFallbackTitle: 'دسته حذف شود؟', + deleteDeckTitle: '"{{title}}" حذف شود؟', + deleteNoteDescription: '"{{title}}" به سطل زباله منتقل می‌شود. بعدا می‌توانید آن را بازیابی کنید.', + deleteNoteFallbackTitle: 'یادداشت حذف شود؟', + deleteNoteTitle: '"{{title}}" حذف شود؟', + }, + empty: { + noMatchingNotes: 'یادداشت مطابقی نیست', + noMatchingNotesDescription: 'هیچ یادداشتی با "{{query}}" مطابقت نداشت.', + thisDeckIsEmpty: 'این دسته خالی است', + }, + errors: { + couldNotCreateDeck: 'دسته ایجاد نشد', + couldNotDeleteDeck: 'دسته حذف نشد', + couldNotDeleteNote: 'یادداشت حذف نشد', + couldNotLoadFolderPath: 'مسیر پوشه بارگیری نشد', + couldNotSaveDeck: 'دسته ذخیره نشد', + deckCouldNotLoad: 'دسته بارگیری نشد', + notesCouldNotLoad: 'یادداشت‌ها بارگیری نشدند', + notesMayBeOutOfDate: 'ممکن است یادداشت‌ها به‌روز نباشند', + }, + fields: { + descriptionLabel: 'توضیحات دسته', + descriptionPlaceholder: 'این دسته به مرور چه چیزی کمک می‌کند؟', + namePlaceholder: 'نام دسته', + untitledDeck: 'دسته بدون عنوان', + untitledDeckLower: 'دسته بدون عنوان', + }, + labels: { + createDeckTitle: 'ایجاد دسته', + deck: 'دسته', + deckNotesSearch: 'جستجوی یادداشت‌های دسته', + deckOverview: 'نمای کلی دسته', + decks: 'دسته‌ها', + due: 'موعد', + dueToday: 'موعد امروز', + loadingDeck: 'در حال بارگیری دسته', + mastery: 'تسلط', + notes: 'یادداشت‌ها', + }, + sort: { + ariaLabel: 'مرتب‌سازی دسته‌ها', + dueToday: 'موعد امروز', + title: 'عنوان', + updated: 'به‌روزرسانی‌شده', + }, + }, + errors: { + byType: { + conflict: 'داده‌ها تغییر کرده‌اند. تازه‌سازی کنید و دوباره تلاش کنید.', + forbidden: 'اجازه انجام این کار را ندارید.', + notFound: 'این مورد پیدا نشد.', + offline: 'دسترسی به سرویس ممکن نیست.', + timeout: 'این کار بیش از حد طول کشید. دوباره تلاش کنید.', + unauthorized: 'برای ادامه وارد شوید.', + unavailable: 'سرویس موقتا در دسترس نیست.', + }, + fallback: { + unexpected: 'خطای غیرمنتظره', + }, + }, + folders: { + actions: { + createFolder: 'ایجاد پوشه', + deleteFolder: 'حذف پوشه', + editFolder: 'ویرایش پوشه', + }, + descriptions: { + editorDefault: 'پوشه‌ای برای دسته‌های مرتبط.', + }, + dialogs: { + deleteFolderDescription: '"{{name}}" به سطل زباله منتقل می‌شود. بعدا می‌توانید آن را بازیابی کنید.', + deleteFolderFallbackDescription: 'این پوشه به سطل زباله منتقل می‌شود. بعدا می‌توانید آن را بازیابی کنید.', + deleteFolderFallbackTitle: 'پوشه حذف شود؟', + deleteFolderTitle: '"{{name}}" حذف شود؟', + }, + empty: { + noMatchesInFolder: 'در این پوشه نتیجه‌ای نیست', + noMatchesInFolderDescription: 'هیچ پوشه، دسته یا یادداشتی با "{{query}}" مطابقت نداشت.', + }, + errors: { + couldNotCreateFolder: 'پوشه ایجاد نشد', + couldNotDeleteFolder: 'پوشه حذف نشد', + couldNotLoadFolderPath: 'مسیر پوشه بارگیری نشد', + couldNotSaveFolder: 'پوشه ذخیره نشد', + folderCouldNotLoad: 'پوشه بارگیری نشد', + }, + fields: { + descriptionLabel: 'توضیحات پوشه', + descriptionPlaceholder: 'چه چیزی در این پوشه قرار می‌گیرد؟', + namePlaceholder: 'نام پوشه', + untitledFolder: 'پوشه بدون عنوان', + }, + labels: { + createFolderTitle: 'ایجاد پوشه', + folder: 'پوشه', + folders: 'پوشه‌ها', + loadingFolder: 'در حال بارگیری پوشه', + name: 'نام', + updated: 'به‌روزرسانی‌شده', + }, + sort: { + ariaLabel: 'مرتب‌سازی پوشه‌ها', + name: 'نام', + updated: 'به‌روزرسانی‌شده', + }, + }, + menu: { + conflicts: { + description: 'اگر داده‌های محلی و همگام‌سازی‌شده تفاوت داشته باشند، مورد اینجا ظاهر می‌شود.', + heading: 'وضعیت همگام‌سازی', + title: 'تعارض‌ها', + noConflicts: 'تعارضی پیدا نشد', + }, + labels: { + menu: 'منو', + }, + sections: { + settings: { + description: 'محیط و ترجیحات خود را شخصی‌سازی کنید', + title: 'تنظیمات', + }, + trash: { + description: 'موارد حذف‌شده را بازیابی یا برای همیشه حذف کنید', + title: 'سطل زباله', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'بستن ویرایشگر', + openActions: 'باز کردن اقدام‌ها', + openWorkspaces: 'باز کردن فضاهای کاری', + }, + items: { + home: 'خانه', + menu: 'منو', + primary: 'اصلی', + settings: 'تنظیمات', + spaces: 'فضاها', + trash: 'سطل زباله', + workspaces: 'فضاهای کاری', + }, + }, + notes: { + actions: { + addCloze: 'افزودن جای خالی', + deleteNote: 'حذف یادداشت', + editNote: 'ویرایش یادداشت', + hideDerivedCardsNote: 'پنهان کردن یادداشت کارت‌های مشتق‌شده', + openNote: 'باز کردن {{title}}', + saveNote: 'ذخیره یادداشت', + showDerivedCardsNote: 'نمایش یادداشت کارت‌های مشتق‌شده', + }, + descriptions: { + clozeFormat: 'هر بخش پنهان پس از ذخیره به یک کارت مرور تبدیل می‌شود.', + clozeFormatPrefix: 'متن پنهان را با این قالب بنویسید', + derivedCardsHelper: 'یادداشت‌ها منبع اصلی کارت‌های مشتق‌شده هستند.', + }, + dialogs: { + deleteNoteDescription: '"{{title}}" به سطل زباله منتقل می‌شود. بعدا می‌توانید آن را بازیابی کنید.', + deleteNoteFallbackDescription: 'این یادداشت به سطل زباله منتقل می‌شود. بعدا می‌توانید آن را بازیابی کنید.', + deleteNoteFallbackTitle: 'یادداشت حذف شود؟', + deleteNoteTitle: '"{{title}}" حذف شود؟', + }, + errors: { + couldNotCreateNote: 'یادداشت ایجاد نشد', + couldNotDeleteNote: 'یادداشت حذف نشد', + couldNotSaveNote: 'یادداشت ذخیره نشد', + noteCouldNotLoad: 'یادداشت بارگیری نشد', + }, + fields: { + back: 'پشت', + backPlaceholder: 'متن پشت را وارد کنید', + bodyPlaceholder: 'متن یادداشت را با حذف‌های جای خالی بنویسید…', + front: 'رو', + frontPlaceholder: 'متن رو را وارد کنید', + noteBody: 'متن یادداشت', + title: 'عنوان', + titlePlaceholder: 'عنوان یادداشت را اضافه کنید', + untitledCloze: 'جای خالی بدون عنوان', + untitledNote: 'یادداشت بدون عنوان', + }, + labels: { + backUppercase: 'پشت', + basic: 'ساده', + basicLower: 'ساده', + basicUppercase: 'ساده', + cloze: 'جای خالی', + clozeLower: 'جای خالی', + clozeFormat: 'قالب جای خالی', + clozeUppercase: 'جای خالی', + deck: 'دسته', + derivedCards: 'کارت‌های مشتق‌شده', + due: 'موعد', + frontUppercase: 'رو', + inProgress: 'در حال انجام', + inProgressUppercase: 'در حال انجام', + loadingNote: 'در حال بارگیری یادداشت', + loadingNoteEditor: 'در حال بارگیری ویرایشگر یادداشت', + markdownFormatting: 'قالب‌بندی Markdown', + mastered: 'مسلط', + masteredUppercase: 'مسلط', + newNote: 'یادداشت جدید', + noteBody: 'متن یادداشت', + noteContent: 'محتوای یادداشت', + noteDetails: 'جزئیات یادداشت', + noteMetadata: 'فراداده یادداشت', + noteType: 'نوع یادداشت', + notes: 'یادداشت‌ها', + reviewed: 'مرور شد', + studyProgress: 'پیشرفت مطالعه', + studyProgressUppercase: 'پیشرفت مطالعه', + titleUppercase: 'عنوان', + updated: 'به‌روزرسانی‌شده', + }, + sort: { + ariaLabel: 'مرتب‌سازی یادداشت‌ها', + title: 'عنوان', + updated: 'به‌روزرسانی‌شده', + }, + toolbar: { + bold: 'پررنگ', + italic: 'کج', + link: 'پیوند', + list: 'فهرست', + }, + }, + review: { + actions: { + again: 'دوباره', + backToDeck: 'بازگشت به دسته', + continueReview: 'ادامه مرور', + easy: 'آسان', + good: 'خوب', + hard: 'سخت', + newNote: 'یادداشت جدید', + showAnswer: 'نمایش پاسخ', + }, + errors: { + couldNotGradeCard: 'کارت ارزیابی نشد', + reviewCouldNotLoad: 'مرور بارگیری نشد', + reviewCouldNotStart: 'مرور شروع نشد', + summaryCouldNotLoad: 'خلاصه مرور بارگیری نشد', + summaryNotAvailable: 'خلاصه مرور در دسترس نیست', + summaryNotComplete: 'این مرور هنوز کامل نشده است.', + }, + labels: { + cardsReviewed: 'کارت‌های مرورشده', + deck: 'دسته', + duration: 'مدت', + loadingReview: 'در حال بارگیری مرور', + loadingSummary: 'در حال بارگیری خلاصه', + progress: 'پیشرفت مرور', + review: 'مرور', + reviewComplete: 'مرور کامل شد', + reviewed_one: '{{count}} مرور شد', + reviewed_other: '{{count}} مرور شد', + }, + summary: { + durationHoursMinutes: '{{hours}}س {{minutes}}د', + durationMinutes: '{{minutes}}د', + durationSeconds: '{{seconds}}ث', + saved: 'پیشرفت شما در این دسته ذخیره شد.', + }, + unavailable: { + description: 'یک یادداشت اضافه کنید تا این دسته وارد صف مرور شود.', + title: 'کارتی برای مرور نیست', + }, + }, + search: { + actions: { + clearSearch: 'پاک کردن جستجو', + }, + empty: { + noMatchesInWorkspace: 'در این فضای کاری نتیجه‌ای نیست', + noMatchesInWorkspaceDescription: 'هیچ پوشه، دسته یا یادداشتی با "{{query}}" مطابقت نداشت.', + }, + errors: { + couldNotComplete: 'جستجو کامل نشد', + }, + labels: { + results: 'نتایج جستجو', + resultsFor: 'نتایج برای "{{query}}"', + searchingContent: 'در حال جستجو در محتوا', + }, + resultGroups: { + deck: 'دسته‌ها', + folder: 'پوشه‌ها', + note: 'یادداشت‌ها', + }, + resultKinds: { + deck: 'دسته', + folder: 'پوشه', + note: 'یادداشت', + }, + }, + settings: { + actions: { + resetAll: 'بازنشانی همه تنظیمات', + resetSettings: 'بازنشانی تنظیمات', + resetToDefaults: 'بازنشانی به پیش‌فرض‌ها', + }, + dialogs: { + fsrsErrorInvalidJson: 'JSON معتبر با 21 مقدار عددی وارد کنید.', + fsrsErrorInvalidParams_one: 'یک آرایه JSON با دقیقا {{count}} عدد محدود وارد کنید.', + fsrsErrorInvalidParams_other: 'یک آرایه JSON با دقیقا {{count}} عدد محدود وارد کنید.', + fsrsHelper: 'این یک تنظیم پیشرفته است. مقدارها باید به ترتیب بمانند.', + fsrsJsonLabel: 'JSON پارامترهای FSRS', + fsrsTitle: 'ویرایش پارامترهای FSRS', + fsrsDescription: 'برای بازنویسی وزن‌های زمان‌بند، یک آرایه JSON با 21 عدد وارد کنید.', + resetDescription: 'این کار منطقه زمانی، محدودیت‌های مطالعه و تنظیمات FSRS را بازمی‌گرداند.', + resetDescriptionWithLanguage: 'این کار زبان، منطقه زمانی، محدودیت‌های مطالعه و تنظیمات FSRS را بازمی‌گرداند.', + resetTitle: 'همه تنظیمات بازنشانی شوند؟', + timezoneDescription: 'نام شهر یا شناسه منطقه زمانی را جستجو کنید.', + timezoneSearchLabel: 'جستجوی مناطق زمانی', + timezoneSearchPlaceholder: 'جستجوی مناطق زمانی…', + timezoneTitle: 'انتخاب منطقه زمانی', + }, + errors: { + couldNotResetSettings: 'تنظیمات بازنشانی نشد', + couldNotSaveSettings: 'تنظیمات ذخیره نشد', + settingsCouldNotLoad: 'تنظیمات بارگیری نشد', + settingsUnavailable: 'تنظیمات در دسترس نیست.', + }, + labels: { + appearance: 'ظاهر', + automatic: 'خودکار', + fsrsParameters: 'پارامترهای FSRS', + general: 'عمومی', + language: 'زبان', + loadingSettings: 'در حال بارگیری تنظیمات', + masteryHorizon: 'افق تسلط', + newCardOrder: 'ترتیب کارت‌های جدید', + newCardsPerDay: 'کارت جدید در روز', + reviewCardsPerDay: 'کارت مرور در روز', + savingSettings: 'در حال ذخیره تنظیمات', + schedule: 'زمان‌بندی', + searchNoTimezones: 'منطقه زمانی مطابقی نیست.', + settings: 'تنظیمات', + settingsReset: 'بازنشانی تنظیمات', + study: 'مطالعه', + targetRecallProbability: 'احتمال یادآوری هدف', + theme: 'پوسته', + timezone: 'منطقه زمانی', + }, + options: { + languageEnUs: 'انگلیسی (آمریکا)', + newCardsAfterReviews: 'بعد از مرورها', + newCardsBeforeReviews: 'قبل از مرورها', + newCardsMixed: 'ترکیبی', + themeDark: 'تیره', + themeLight: 'روشن', + themeSystem: 'سیستم', + timezoneSystem: 'استفاده از منطقه زمانی سیستم', + }, + rows: { + fsrsDescription: 'وزن‌های مدل پیشرفته', + languageDescription: 'زبان رابط', + masteryHorizonDescription: 'تعداد روزهایی که کارت باید در احتمال هدف یا بالاتر قابل یادآوری بماند تا مسلط محسوب شود', + newCardOrderDescription: 'ترتیب کارت‌های جدید نسبت به مرورها', + newCardsPerDayDescription: 'حداکثر کارت‌های جدید در روز', + reviewCardsPerDayDescription: 'حداکثر کارت‌های مرور در روز', + targetRecallProbabilityDescription: 'حداقل احتمال یادآوری در مرور زمان‌بندی‌شده بعدی', + timezoneDescription: 'از منطقه زمانی خودکار استفاده کنید یا یک شهر انتخاب کنید.', + }, + }, + trash: { + actions: { + deletePermanently: 'حذف دائمی', + empty: 'خالی کردن', + emptyTrash: 'خالی کردن سطل زباله', + restore: 'بازیابی', + restoringItem: 'در حال بازیابی {{title}}', + }, + dialogs: { + deleteItemDescription: '"{{title}}" برای همیشه حذف می‌شود. این کار قابل بازگشت نیست.', + deleteItemFallbackDescription: 'این مورد برای همیشه حذف می‌شود. این کار قابل بازگشت نیست.', + deleteItemFallbackTitle: 'مورد حذف شود؟', + deleteItemTitle: '"{{title}}" حذف شود؟', + emptyTrashDescription: 'همه چیز در سطل زباله برای همیشه حذف می‌شود. این کار قابل بازگشت نیست.', + emptyTrashTitle: 'سطل زباله خالی شود؟', + }, + empty: { + description: 'مواردی که حذف می‌کنید پیش از حذف دائمی اینجا ظاهر می‌شوند.', + title: 'سطل زباله خالی است', + }, + errors: { + couldNotDeleteItem: 'مورد حذف نشد', + couldNotEmptyTrash: 'سطل زباله خالی نشد', + couldNotRestoreItem: 'مورد بازیابی نشد', + trashCouldNotLoad: 'سطل زباله بارگیری نشد', + trashMayBeOutOfDate: 'ممکن است سطل زباله به‌روز نباشد', + }, + labels: { + deletedAge: 'حذف‌شده {{value}}', + itemCount_one: '{{count}} مورد', + itemCount_other: '{{count}} مورد', + lastEmptied: 'آخرین خالی‌سازی {{value}}', + loadingTrash: 'در حال بارگیری سطل زباله', + originalLocation: 'مکان اصلی: {{location}}', + title: 'سطل زباله', + trashActions: 'اقدام‌های سطل زباله {{title}}', + }, + kinds: { + deck: 'دسته', + folder: 'پوشه', + note: 'یادداشت', + workspace: 'فضای کاری', + }, + }, + workspaces: { + actions: { + createWorkspace: 'ایجاد فضای کاری', + deleteWorkspace: 'حذف فضای کاری', + editWorkspace: 'ویرایش فضای کاری', + newWorkspace: 'فضای کاری جدید', + openWorkspace: 'باز کردن {{title}}', + openingWorkspace: 'در حال باز کردن {{title}}', + }, + descriptions: { + editorDefault: 'زمینه مطالعه.', + editorVisual: 'یک نشانه بصری برای این فضای کاری انتخاب کنید.', + emptyList: 'دسته‌ها، یادداشت‌ها و صف‌های مرور را بر اساس زمینه مطالعه جدا کنید.', + }, + dialogs: { + deleteWorkspaceDescription: '"{{title}}" به سطل زباله منتقل می‌شود. بعدا می‌توانید آن را بازیابی کنید.', + deleteWorkspaceFallbackDescription: 'این فضای کاری به سطل زباله منتقل می‌شود. بعدا می‌توانید آن را بازیابی کنید.', + deleteWorkspaceFallbackTitle: 'فضای کاری حذف شود؟', + deleteWorkspaceTitle: '"{{title}}" حذف شود؟', + }, + empty: { + startWithWorkspace: 'با یک فضای کاری شروع کنید', + }, + errors: { + couldNotCreateWorkspace: 'فضای کاری ایجاد نشد', + couldNotDeleteWorkspace: 'فضای کاری حذف نشد', + couldNotOpenWorkspace: 'فضای کاری باز نشد', + couldNotSaveWorkspace: 'فضای کاری ذخیره نشد', + workspaceCouldNotLoad: 'فضای کاری بارگیری نشد', + workspacesCouldNotLoad: 'فضاهای کاری بارگیری نشدند', + }, + fields: { + descriptionLabel: 'توضیحات فضای کاری', + descriptionPlaceholder: 'چه چیزی در این فضای کاری قرار می‌گیرد؟', + namePlaceholder: 'نام فضای کاری', + untitledWorkspace: 'فضای کاری بدون عنوان', + }, + labels: { + createWorkspaceTitle: 'ایجاد فضای کاری', + loadingWorkspaces: 'در حال بارگیری فضاهای کاری', + workspace: 'فضای کاری', + workspaces: 'فضاهای کاری', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/fi.ts b/ui/src/core/i18n/resources/fi.ts new file mode 100644 index 0000000..540de32 --- /dev/null +++ b/ui/src/core/i18n/resources/fi.ts @@ -0,0 +1,623 @@ +export const fi = { + bootstrap: { + error: { + fallbackMessage: 'Yritä uudelleen. Jos tämä jatkuu, avaa Clear uudelleen.', + title: 'Käynnistys epäonnistui', + }, + loadingTitle: 'Valmistellaan opiskelutilaasi', + }, + common: { + actions: { + back: 'Takaisin', + cancel: 'Peruuta', + checkAgain: 'Tarkista uudelleen', + close: 'Sulje', + create: 'Luo', + delete: 'Poista', + dismissError: 'Piilota virhe', + dismissStatus: 'Piilota tila', + edit: 'Muokkaa', + itemActions: '{{title}}: toiminnot', + reset: 'Palauta', + review: 'Kertaa', + save: 'Tallenna', + saveChanges: 'Tallenna muutokset', + tryAgain: 'Yritä uudelleen', + }, + labels: { + active: 'Aktiivinen', + clear: 'Clear', + custom: 'Mukautettu', + default: 'Oletus', + loadingEditor: 'Ladataan editoria', + name: 'Nimi', + completedTask: 'Valmis tehtävä', + description: 'Kuvaus', + incompleteTask: 'Keskeneräinen tehtävä', + percentageInput: '{{label}} prosentteina', + visual: 'Visuaalinen', + }, + status: { + actionFailed: 'Toiminto epäonnistui', + actionInProgress: 'Toiminto käynnissä', + }, + sort: { + ascending: 'Nouseva', + column: 'Sarake', + descending: 'Laskeva', + direction: 'Suunta', + sort: 'Lajittelu', + }, + search: { + label: 'Haku', + }, + visualPicker: { + allLucideIcons: 'Kaikki Lucide-kuvakkeet', + browseIconsFor: 'Selaa tai hae kuvakkeita kohteelle {{label}}.', + chooseIcon: 'Valitse kuvake', + iconPicker: '{{label}}: kuvakkeen valinta', + iconSearch: '{{label}}: kuvakehaku', + iconsCouldNotLoad: 'Kuvakkeita ei voitu ladata.', + loadingIcons: 'Ladataan kuvakkeita', + loadingMoreIcons: 'Ladataan lisää kuvakkeita', + moreIcons: 'Lisää kuvakkeita', + noIconsMatch: 'Mikään kuvake ei vastaa hakua "{{query}}".', + searchIconsPlaceholder: 'Hae kuvakkeita…', + selectedIcon: 'Valittu {{label}}', + }, + }, + dashboard: { + actions: { + create: 'Luo', + newDeck: 'Uusi pakka', + newFolder: 'Uusi kansio', + }, + descriptions: { + defaultWorkspace: 'Pidä pakat, kansiot ja muistiinpanot yhdessä.', + emptyWorkspace: 'Luo pakka ja lisää sitten muistiinpanoja kertausta varten.', + emptyFolder: 'Luo pakka ja lisää sitten muistiinpanoja kertausta varten.', + searchPlaceholder: 'Hae kansioita, pakkoja ja muistiinpanoja…', + }, + empty: { + createFirstDeck: 'Luo ensimmäinen pakkasi', + }, + errors: { + couldNotDeleteDeck: 'Pakkaa ei voitu poistaa', + couldNotDeleteFolder: 'Kansiota ei voitu poistaa', + couldNotDeleteWorkspace: 'Työtilaa ei voitu poistaa', + dashboardCouldNotOpen: 'Koontinäkymää ei voitu avata', + decksCouldNotLoad: 'Pakkoja ei voitu ladata', + decksMayBeOutOfDate: 'Pakat voivat olla vanhentuneita', + foldersCouldNotLoad: 'Kansioita ei voitu ladata', + foldersMayBeOutOfDate: 'Kansiot voivat olla vanhentuneita', + workspaceCouldNotLoad: 'Työtilaa ei voitu ladata', + }, + labels: { + dashboard: 'Koontinäkymä', + loadingDashboard: 'Ladataan koontinäkymää', + newItem: 'Uusi kohde', + }, + }, + dates: { + absolute: { + unavailable: 'Päivämäärä ei ole saatavilla', + }, + age: { + dayAgo_one: '{{count}} päivä sitten', + dayAgo_other: '{{count}} päivää sitten', + hourAgo_one: '{{count}} tunti sitten', + hourAgo_other: '{{count}} tuntia sitten', + justNow: 'juuri nyt', + minuteAgo_one: '{{count}} minuutti sitten', + minuteAgo_other: '{{count}} minuuttia sitten', + unavailable: 'päivämäärä ei ole saatavilla', + weekAgo_one: '{{count}} viikko sitten', + weekAgo_other: '{{count}} viikkoa sitten', + }, + labels: { + deleted: 'Poistettu {{value}}', + due: 'Erääntyy: {{value}}', + reviewed: 'Kerrattu: {{value}}', + updated: 'Päivitetty {{value}}', + updatedUppercase: 'PÄIVITETTY {{value}}', + }, + relative: { + dayAgo_one: '{{count}} päivä sitten', + dayAgo_other: '{{count}} päivää sitten', + inAMoment: 'Hetken kuluttua', + inDay_one: '{{count}} päivän päästä', + inDay_other: '{{count}} päivän päästä', + inMonth_one: '{{count}} kuukauden päästä', + inMonth_other: '{{count}} kuukauden päästä', + inWeek_one: '{{count}} viikon päästä', + inWeek_other: '{{count}} viikon päästä', + justNow: 'Juuri nyt', + monthAgo_one: '{{count}} kuukausi sitten', + monthAgo_other: '{{count}} kuukautta sitten', + secondsAgoShort: '{{count}} s sitten', + minutesAgoShort: '{{count}} min sitten', + hoursAgoShort: '{{count}} h sitten', + today: 'Tänään', + tomorrow: 'Huomenna', + weekAgo_one: '{{count}} viikko sitten', + weekAgo_other: '{{count}} viikkoa sitten', + yesterday: 'Eilen', + }, + }, + decks: { + actions: { + actionMenu: '{{title}}: toiminnot', + createDeck: 'Luo pakka', + createNote: 'Luo muistiinpano', + deleteDeck: 'Poista pakka', + editDeck: 'Muokkaa pakkaa', + newNote: 'Uusi muistiinpano', + openDeck: 'Avaa pakka {{title}}', + saveDeck: 'Pakkaa ei voitu tallentaa', + studyNow: 'Opiskele nyt', + }, + descriptions: { + emptyDeck: 'Lisää muistiinpano, jotta tässä pakassa on kerrattavaa.', + editorDefault: 'Keskittynyt opiskelupakka.', + editorVisual: 'Valitse tälle pakalle kansikuvake.', + notesSearchPlaceholder: 'Hae muistiinpanoja…', + }, + dialogs: { + deleteDeckDescription: 'Tämä siirtää kohteen "{{title}}" roskakoriin. Voit palauttaa sen myöhemmin.', + deleteDeckFallbackDescription: 'Tämä siirtää tämän pakan roskakoriin. Voit palauttaa sen myöhemmin.', + deleteDeckFallbackTitle: 'Poistetaanko pakka?', + deleteDeckTitle: 'Poistetaanko "{{title}}"?', + deleteNoteDescription: 'Tämä siirtää kohteen "{{title}}" roskakoriin. Voit palauttaa sen myöhemmin.', + deleteNoteFallbackTitle: 'Poistetaanko muistiinpano?', + deleteNoteTitle: 'Poistetaanko "{{title}}"?', + }, + empty: { + noMatchingNotes: 'Ei vastaavia muistiinpanoja', + noMatchingNotesDescription: 'Yksikään muistiinpano ei vastannut hakua "{{query}}".', + thisDeckIsEmpty: 'Tämä pakka on tyhjä', + }, + errors: { + couldNotCreateDeck: 'Pakkaa ei voitu luoda', + couldNotDeleteDeck: 'Pakkaa ei voitu poistaa', + couldNotDeleteNote: 'Muistiinpanoa ei voitu poistaa', + couldNotLoadFolderPath: 'Kansiopolkua ei voitu ladata', + couldNotSaveDeck: 'Pakkaa ei voitu tallentaa', + deckCouldNotLoad: 'Pakkaa ei voitu ladata', + notesCouldNotLoad: 'Muistiinpanoja ei voitu ladata', + notesMayBeOutOfDate: 'Muistiinpanot voivat olla vanhentuneita', + }, + fields: { + descriptionLabel: 'Pakan kuvaus', + descriptionPlaceholder: 'Mitä tämä pakka auttaa sinua kertaamaan?', + namePlaceholder: 'Pakan nimi', + untitledDeck: 'Nimetön pakka', + untitledDeckLower: 'nimetön pakka', + }, + labels: { + createDeckTitle: 'Luo pakka', + deck: 'Pakka', + deckNotesSearch: 'Pakan muistiinpanojen haku', + deckOverview: 'Pakan yleiskatsaus', + decks: 'Pakat', + due: 'Erääntyy', + dueToday: 'Erääntyy tänään', + loadingDeck: 'Ladataan pakkaa', + mastery: 'Hallinta', + notes: 'Muistiinpanot', + }, + sort: { + ariaLabel: 'Lajittele pakat', + dueToday: 'Erääntyy tänään', + title: 'Otsikko', + updated: 'Päivitetty', + }, + }, + errors: { + byType: { + conflict: 'Tiedot muuttuivat. Päivitä ja yritä uudelleen.', + forbidden: 'Sinulla ei ole oikeutta tehdä tätä.', + notFound: 'Emme löytäneet tätä kohdetta.', + offline: 'Palveluun ei saada yhteyttä.', + timeout: 'Tässä kesti liian kauan. Yritä uudelleen.', + unauthorized: 'Kirjaudu sisään jatkaaksesi.', + unavailable: 'Palvelu ei ole tilapäisesti saatavilla.', + }, + fallback: { + unexpected: 'Odottamaton virhe', + }, + }, + folders: { + actions: { + createFolder: 'Luo kansio', + deleteFolder: 'Poista kansio', + editFolder: 'Muokkaa kansiota', + }, + descriptions: { + editorDefault: 'Kansio toisiinsa liittyville pakoille.', + }, + dialogs: { + deleteFolderDescription: 'Tämä siirtää kohteen "{{name}}" roskakoriin. Voit palauttaa sen myöhemmin.', + deleteFolderFallbackDescription: 'Tämä siirtää tämän kansion roskakoriin. Voit palauttaa sen myöhemmin.', + deleteFolderFallbackTitle: 'Poistetaanko kansio?', + deleteFolderTitle: 'Poistetaanko "{{name}}"?', + }, + empty: { + noMatchesInFolder: 'Ei osumia tässä kansiossa', + noMatchesInFolderDescription: 'Yksikään kansio, pakka tai muistiinpano ei vastannut hakua "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'Kansiota ei voitu luoda', + couldNotDeleteFolder: 'Kansiota ei voitu poistaa', + couldNotLoadFolderPath: 'Kansiopolkua ei voitu ladata', + couldNotSaveFolder: 'Kansiota ei voitu tallentaa', + folderCouldNotLoad: 'Kansiota ei voitu ladata', + }, + fields: { + descriptionLabel: 'Kansion kuvaus', + descriptionPlaceholder: 'Mitä tähän kansioon kuuluu?', + namePlaceholder: 'Kansion nimi', + untitledFolder: 'Nimetön kansio', + }, + labels: { + createFolderTitle: 'Luo kansio', + folder: 'Kansio', + folders: 'Kansiot', + loadingFolder: 'Ladataan kansiota', + name: 'Nimi', + updated: 'Päivitetty', + }, + sort: { + ariaLabel: 'Lajittele kansiot', + name: 'Nimi', + updated: 'Päivitetty', + }, + }, + menu: { + conflicts: { + description: 'Jos paikalliset ja synkronoidut tiedot eroavat toisistaan, kohde näkyy täällä.', + heading: 'Synkronoinnin tila', + title: 'Ristiriidat', + noConflicts: 'Ristiriitoja ei löytynyt', + }, + labels: { + menu: 'Valikko', + }, + sections: { + settings: { + description: 'Mukauta ympäristöäsi ja asetuksiasi', + title: 'Asetukset', + }, + trash: { + description: 'Palauta tai poista poistettuja kohteita pysyvästi', + title: 'Roskakori', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Sulje editori', + openActions: 'Avaa toiminnot', + openWorkspaces: 'Avaa työtilat', + }, + items: { + home: 'Etusivu', + menu: 'Valikko', + primary: 'Ensisijainen', + settings: 'Asetukset', + spaces: 'Tilat', + trash: 'Roskakori', + workspaces: 'Työtilat', + }, + }, + notes: { + actions: { + addCloze: 'Lisää cloze', + deleteNote: 'Poista muistiinpano', + editNote: 'Muokkaa muistiinpanoa', + hideDerivedCardsNote: 'Piilota johdettujen korttien huomautus', + openNote: 'Avaa {{title}}', + saveNote: 'Tallenna muistiinpano', + showDerivedCardsNote: 'Näytä johdettujen korttien huomautus', + }, + descriptions: { + clozeFormat: 'Jokaisesta piilotetusta osasta tulee kertauskortti, kun tallennat.', + clozeFormatPrefix: 'Kääri piilotettu teksti merkinnällä', + derivedCardsHelper: 'Muistiinpanot ovat johdettujen korttien totuuden lähde.', + }, + dialogs: { + deleteNoteDescription: 'Tämä siirtää kohteen "{{title}}" roskakoriin. Voit palauttaa sen myöhemmin.', + deleteNoteFallbackDescription: 'Tämä siirtää tämän muistiinpanon roskakoriin. Voit palauttaa sen myöhemmin.', + deleteNoteFallbackTitle: 'Poistetaanko muistiinpano?', + deleteNoteTitle: 'Poistetaanko "{{title}}"?', + }, + errors: { + couldNotCreateNote: 'Muistiinpanoa ei voitu luoda', + couldNotDeleteNote: 'Muistiinpanoa ei voitu poistaa', + couldNotSaveNote: 'Muistiinpanoa ei voitu tallentaa', + noteCouldNotLoad: 'Muistiinpanoa ei voitu ladata', + }, + fields: { + back: 'Kääntöpuoli', + backPlaceholder: 'Kirjoita kääntöpuoli', + bodyPlaceholder: 'Kirjoita muistiinpanon sisältö cloze-poistoilla…', + front: 'Etupuoli', + frontPlaceholder: 'Kirjoita etupuoli', + noteBody: 'Muistiinpanon sisältö', + title: 'Otsikko', + titlePlaceholder: 'Lisää muistiinpanon otsikko', + untitledCloze: 'Nimetön cloze', + untitledNote: 'Nimetön muistiinpano', + }, + labels: { + backUppercase: 'KÄÄNTÖPUOLI', + basic: 'Perus', + basicLower: 'perus', + basicUppercase: 'PERUS', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Cloze-muoto', + clozeUppercase: 'CLOZE', + deck: 'Pakka', + derivedCards: 'JOHDETUT KORTIT', + due: 'Erääntyy', + frontUppercase: 'ETUPUOLI', + inProgress: 'Kesken', + inProgressUppercase: 'KESKEN', + loadingNote: 'Ladataan muistiinpanoa', + loadingNoteEditor: 'Ladataan muistiinpanoeditoria', + markdownFormatting: 'Markdown-muotoilu', + mastered: 'Hallittu', + masteredUppercase: 'HALLITTU', + newNote: 'Uusi muistiinpano', + noteBody: 'MUISTIINPANON SISÄLTÖ', + noteContent: 'Muistiinpanon sisältö', + noteDetails: 'Muistiinpanon tiedot', + noteMetadata: 'Muistiinpanon metatiedot', + noteType: 'Muistiinpanon tyyppi', + notes: 'Muistiinpanot', + reviewed: 'Kerrattu', + studyProgress: 'Opiskelun edistyminen', + studyProgressUppercase: 'OPISKELUN EDISTYMINEN', + titleUppercase: 'OTSIKKO', + updated: 'Päivitetty', + }, + sort: { + ariaLabel: 'Lajittele muistiinpanot', + title: 'Otsikko', + updated: 'Päivitetty', + }, + toolbar: { + bold: 'Lihavointi', + italic: 'Kursivointi', + link: 'Linkki', + list: 'Luettelo', + }, + }, + review: { + actions: { + again: 'Uudelleen', + backToDeck: 'Takaisin pakkaan', + continueReview: 'Jatka kertausta', + easy: 'Helppo', + good: 'Hyvä', + hard: 'Vaikea', + newNote: 'Uusi muistiinpano', + showAnswer: 'Näytä vastaus', + }, + errors: { + couldNotGradeCard: 'Korttia ei voitu arvioida', + reviewCouldNotLoad: 'Kertausta ei voitu ladata', + reviewCouldNotStart: 'Kertausta ei voitu aloittaa', + summaryCouldNotLoad: 'Kertauksen yhteenvetoa ei voitu ladata', + summaryNotAvailable: 'Kertauksen yhteenveto ei ole saatavilla', + summaryNotComplete: 'Tämä kertaus ei ole vielä valmis.', + }, + labels: { + cardsReviewed: 'Kerratut kortit', + deck: 'Pakka', + duration: 'Kesto', + loadingReview: 'Ladataan kertausta', + loadingSummary: 'Ladataan yhteenvetoa', + progress: 'Kertauksen edistyminen', + review: 'Kertaus', + reviewComplete: 'Kertaus valmis', + reviewed_one: 'Kerrattu {{count}}', + reviewed_other: 'Kerrattu {{count}}', + }, + summary: { + durationHoursMinutes: '{{hours}} h {{minutes}} min', + durationMinutes: '{{minutes}} min', + durationSeconds: '{{seconds}} s', + saved: 'Edistymisesi tallennettiin tähän pakkaan.', + }, + unavailable: { + description: 'Lisää muistiinpano, jotta tämä pakka voi siirtyä kertausjonoon.', + title: 'Ei kortteja kerrattavaksi', + }, + }, + search: { + actions: { + clearSearch: 'Tyhjennä haku', + }, + empty: { + noMatchesInWorkspace: 'Ei osumia tässä työtilassa', + noMatchesInWorkspaceDescription: 'Yksikään kansio, pakka tai muistiinpano ei vastannut hakua "{{query}}".', + }, + errors: { + couldNotComplete: 'Hakua ei voitu suorittaa', + }, + labels: { + results: 'Hakutulokset', + resultsFor: 'Tulokset haulle "{{query}}"', + searchingContent: 'Haetaan sisältöä', + }, + resultGroups: { + deck: 'Pakat', + folder: 'Kansiot', + note: 'Muistiinpanot', + }, + resultKinds: { + deck: 'pakka', + folder: 'kansio', + note: 'muistiinpano', + }, + }, + settings: { + actions: { + resetAll: 'Palauta kaikki asetukset', + resetSettings: 'Palauta asetukset', + resetToDefaults: 'Palauta oletukset', + }, + dialogs: { + fsrsErrorInvalidJson: 'Liitä kelvollinen JSON, jossa on 21 numeerista arvoa.', + fsrsErrorInvalidParams_one: 'Syötä JSON-taulukko, jossa on täsmälleen {{count}} äärellinen luku.', + fsrsErrorInvalidParams_other: 'Syötä JSON-taulukko, jossa on täsmälleen {{count}} äärellistä lukua.', + fsrsHelper: 'Tämä on asiantuntijan ohitus. Arvojen on pysyttävä järjestyksessä.', + fsrsJsonLabel: 'FSRS-parametrit JSON', + fsrsTitle: 'Muokkaa FSRS-parametreja', + fsrsDescription: 'Liitä JSON-taulukko, jossa on 21 lukua, korvataksesi ajoituspainot.', + resetDescription: 'Tämä palauttaa aikavyöhykkeen, opiskelurajat ja FSRS-asetukset.', + resetDescriptionWithLanguage: 'Tämä palauttaa kielen, aikavyöhykkeen, opiskelurajat ja FSRS-asetukset.', + resetTitle: 'Palautetaanko kaikki asetukset?', + timezoneDescription: 'Hae kaupunkia tai aikavyöhykkeen tunnistetta.', + timezoneSearchLabel: 'Hae aikavyöhykkeitä', + timezoneSearchPlaceholder: 'Hae aikavyöhykkeitä…', + timezoneTitle: 'Valitse aikavyöhyke', + }, + errors: { + couldNotResetSettings: 'Asetuksia ei voitu palauttaa', + couldNotSaveSettings: 'Asetuksia ei voitu tallentaa', + settingsCouldNotLoad: 'Asetuksia ei voitu ladata', + settingsUnavailable: 'Asetukset eivät ole saatavilla.', + }, + labels: { + appearance: 'Ulkoasu', + automatic: 'Automaattinen', + fsrsParameters: 'FSRS-parametrit', + general: 'Yleiset', + language: 'Kieli', + loadingSettings: 'Ladataan asetuksia', + masteryHorizon: 'Hallinnan aikahorisontti', + newCardOrder: 'Uusien korttien järjestys', + newCardsPerDay: 'Uusia kortteja päivässä', + reviewCardsPerDay: 'Kertauskortteja päivässä', + savingSettings: 'Tallennetaan asetuksia', + schedule: 'Aikataulu', + searchNoTimezones: 'Ei vastaavia aikavyöhykkeitä.', + settings: 'Asetukset', + settingsReset: 'Asetukset palautettu', + study: 'Opiskelu', + targetRecallProbability: 'Tavoiteltu muistamisen todennäköisyys', + theme: 'Teema', + timezone: 'Aikavyöhyke', + }, + options: { + languageEnUs: 'Englanti (Yhdysvallat)', + newCardsAfterReviews: 'Kertausten jälkeen', + newCardsBeforeReviews: 'Ennen kertauksia', + newCardsMixed: 'Sekoitettu', + themeDark: 'Tumma', + themeLight: 'Vaalea', + themeSystem: 'Järjestelmä', + timezoneSystem: 'Käytä järjestelmän aikavyöhykettä', + }, + rows: { + fsrsDescription: 'Asiantuntijamallin painot', + languageDescription: 'Käyttöliittymän kieli', + masteryHorizonDescription: 'Päivien määrä, joiden ajan kortin on pysyttävä muistettavissa tavoitetodennäköisyydellä tai sitä paremmin, jotta se lasketaan hallituksi', + newCardOrderDescription: 'Uusien korttien järjestys suhteessa kertauksiin', + newCardsPerDayDescription: 'Uusien korttien enimmäismäärä päivässä', + reviewCardsPerDayDescription: 'Kertauskorttien enimmäismäärä päivässä', + targetRecallProbabilityDescription: 'Muistamisen vähimmäistodennäköisyys seuraavassa ajoitetussa kertauksessa', + timezoneDescription: 'Käytä automaattista aikavyöhykettä tai valitse kaupunki.', + }, + }, + trash: { + actions: { + deletePermanently: 'Poista pysyvästi', + empty: 'Tyhjennä', + emptyTrash: 'Tyhjennä roskakori', + restore: 'Palauta', + restoringItem: 'Palautetaan {{title}}', + }, + dialogs: { + deleteItemDescription: 'Tämä poistaa kohteen "{{title}}" pysyvästi. Tätä ei voi kumota.', + deleteItemFallbackDescription: 'Tämä poistaa tämän kohteen pysyvästi. Tätä ei voi kumota.', + deleteItemFallbackTitle: 'Poistetaanko kohde?', + deleteItemTitle: 'Poistetaanko "{{title}}"?', + emptyTrashDescription: 'Tämä poistaa pysyvästi kaiken roskakorista. Tätä ei voi kumota.', + emptyTrashTitle: 'Tyhjennetäänkö roskakori?', + }, + empty: { + description: 'Poistamasi kohteet näkyvät täällä ennen pysyvää poistamista.', + title: 'Roskakori on tyhjä', + }, + errors: { + couldNotDeleteItem: 'Kohdetta ei voitu poistaa', + couldNotEmptyTrash: 'Roskakoria ei voitu tyhjentää', + couldNotRestoreItem: 'Kohdetta ei voitu palauttaa', + trashCouldNotLoad: 'Roskakoria ei voitu ladata', + trashMayBeOutOfDate: 'Roskakori voi olla vanhentunut', + }, + labels: { + deletedAge: 'Poistettu {{value}}', + itemCount_one: '{{count}} kohde', + itemCount_other: '{{count}} kohdetta', + lastEmptied: 'Viimeksi tyhjennetty {{value}}', + loadingTrash: 'Ladataan roskakoria', + originalLocation: 'Alkuperäinen sijainti: {{location}}', + title: 'Roskakori', + trashActions: '{{title}}: roskakoritoiminnot', + }, + kinds: { + deck: 'Pakka', + folder: 'Kansio', + note: 'Muistiinpano', + workspace: 'Työtila', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Luo työtila', + deleteWorkspace: 'Poista työtila', + editWorkspace: 'Muokkaa työtilaa', + newWorkspace: 'Uusi työtila', + openWorkspace: 'Avaa {{title}}', + openingWorkspace: 'Avataan {{title}}', + }, + descriptions: { + editorDefault: 'Opiskelukonteksti.', + editorVisual: 'Valitse tälle työtilalle visuaalinen ankkuri.', + emptyList: 'Erota pakat, muistiinpanot ja kertausjonot opiskelukontekstin mukaan.', + }, + dialogs: { + deleteWorkspaceDescription: 'Tämä siirtää kohteen "{{title}}" roskakoriin. Voit palauttaa sen myöhemmin.', + deleteWorkspaceFallbackDescription: 'Tämä siirtää tämän työtilan roskakoriin. Voit palauttaa sen myöhemmin.', + deleteWorkspaceFallbackTitle: 'Poistetaanko työtila?', + deleteWorkspaceTitle: 'Poistetaanko "{{title}}"?', + }, + empty: { + startWithWorkspace: 'Aloita työtilalla', + }, + errors: { + couldNotCreateWorkspace: 'Työtilaa ei voitu luoda', + couldNotDeleteWorkspace: 'Työtilaa ei voitu poistaa', + couldNotOpenWorkspace: 'Työtilaa ei voitu avata', + couldNotSaveWorkspace: 'Työtilaa ei voitu tallentaa', + workspaceCouldNotLoad: 'Työtilaa ei voitu ladata', + workspacesCouldNotLoad: 'Työtiloja ei voitu ladata', + }, + fields: { + descriptionLabel: 'Työtilan kuvaus', + descriptionPlaceholder: 'Mitä tähän työtilaan kuuluu?', + namePlaceholder: 'Työtilan nimi', + untitledWorkspace: 'Nimetön työtila', + }, + labels: { + createWorkspaceTitle: 'Luo työtila', + loadingWorkspaces: 'Ladataan työtiloja', + workspace: 'Työtila', + workspaces: 'Työtilat', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/fr.ts b/ui/src/core/i18n/resources/fr.ts new file mode 100644 index 0000000..bb780f1 --- /dev/null +++ b/ui/src/core/i18n/resources/fr.ts @@ -0,0 +1,623 @@ +export const fr = { + bootstrap: { + error: { + fallbackMessage: 'Réessayez. Si le problème persiste, rouvrez Clear.', + title: 'Impossible de démarrer', + }, + loadingTitle: 'Préparation de votre espace d’étude', + }, + common: { + actions: { + back: 'Retour', + cancel: 'Annuler', + checkAgain: 'Vérifier à nouveau', + close: 'Fermer', + create: 'Créer', + delete: 'Supprimer', + dismissError: 'Masquer l’erreur', + dismissStatus: 'Masquer l’état', + edit: 'Modifier', + itemActions: 'Actions pour {{title}}', + reset: 'Réinitialiser', + review: 'Réviser', + save: 'Enregistrer', + saveChanges: 'Enregistrer les modifications', + tryAgain: 'Réessayer', + }, + labels: { + active: 'Actif', + clear: 'Clear', + custom: 'Personnalisé', + default: 'Par défaut', + loadingEditor: 'Chargement de l’éditeur', + name: 'Nom', + completedTask: 'Tâche terminée', + description: 'Description', + incompleteTask: 'Tâche incomplète', + percentageInput: 'Pourcentage de {{label}}', + visual: 'Visuel', + }, + status: { + actionFailed: 'L’action a échoué', + actionInProgress: 'Action en cours', + }, + sort: { + ascending: 'Asc', + column: 'Colonne', + descending: 'Desc', + direction: 'Sens', + sort: 'Trier', + }, + search: { + label: 'Rechercher', + }, + visualPicker: { + allLucideIcons: 'Toutes les icônes Lucide', + browseIconsFor: 'Parcourez ou recherchez des icônes pour {{label}}.', + chooseIcon: 'Choisir une icône', + iconPicker: 'Sélecteur d’icône pour {{label}}', + iconSearch: 'Recherche d’icône pour {{label}}', + iconsCouldNotLoad: 'Les icônes n’ont pas pu être chargées.', + loadingIcons: 'Chargement des icônes', + loadingMoreIcons: 'Chargement d’autres icônes', + moreIcons: 'Plus d’icônes', + noIconsMatch: 'Aucune icône ne correspond à "{{query}}".', + searchIconsPlaceholder: 'Rechercher des icônes…', + selectedIcon: '{{label}} sélectionné', + }, + }, + dashboard: { + actions: { + create: 'Créer', + newDeck: 'Nouveau paquet', + newFolder: 'Nouveau dossier', + }, + descriptions: { + defaultWorkspace: 'Gardez paquets, dossiers et notes ensemble.', + emptyWorkspace: 'Créez un paquet, puis ajoutez des notes pour constituer votre file de révision.', + emptyFolder: 'Créez un paquet, puis ajoutez des notes pour constituer une file de révision.', + searchPlaceholder: 'Rechercher dossiers, paquets et notes…', + }, + empty: { + createFirstDeck: 'Créez votre premier paquet', + }, + errors: { + couldNotDeleteDeck: 'Impossible de supprimer le paquet', + couldNotDeleteFolder: 'Impossible de supprimer le dossier', + couldNotDeleteWorkspace: 'Impossible de supprimer l’espace de travail', + dashboardCouldNotOpen: 'Impossible d’ouvrir le tableau de bord', + decksCouldNotLoad: 'Impossible de charger les paquets', + decksMayBeOutOfDate: 'Les paquets peuvent être obsolètes', + foldersCouldNotLoad: 'Impossible de charger les dossiers', + foldersMayBeOutOfDate: 'Les dossiers peuvent être obsolètes', + workspaceCouldNotLoad: 'Impossible de charger l’espace de travail', + }, + labels: { + dashboard: 'Tableau de bord', + loadingDashboard: 'Chargement du tableau de bord', + newItem: 'Nouvel élément', + }, + }, + dates: { + absolute: { + unavailable: 'Date indisponible', + }, + age: { + dayAgo_one: 'il y a {{count}} jour', + dayAgo_other: 'il y a {{count}} jours', + hourAgo_one: 'il y a {{count}} heure', + hourAgo_other: 'il y a {{count}} heures', + justNow: 'à l’instant', + minuteAgo_one: 'il y a {{count}} minute', + minuteAgo_other: 'il y a {{count}} minutes', + unavailable: 'date indisponible', + weekAgo_one: 'il y a {{count}} semaine', + weekAgo_other: 'il y a {{count}} semaines', + }, + labels: { + deleted: 'Supprimé {{value}}', + due: 'À réviser : {{value}}', + reviewed: 'Révisé : {{value}}', + updated: 'Mis à jour {{value}}', + updatedUppercase: 'MIS À JOUR {{value}}', + }, + relative: { + dayAgo_one: 'il y a {{count}} jour', + dayAgo_other: 'il y a {{count}} jours', + inAMoment: 'Dans un instant', + inDay_one: 'Dans {{count}} jour', + inDay_other: 'Dans {{count}} jours', + inMonth_one: 'Dans {{count}} mois', + inMonth_other: 'Dans {{count}} mois', + inWeek_one: 'Dans {{count}} semaine', + inWeek_other: 'Dans {{count}} semaines', + justNow: 'À l’instant', + monthAgo_one: 'il y a {{count}} mois', + monthAgo_other: 'il y a {{count}} mois', + secondsAgoShort: 'il y a {{count}} s', + minutesAgoShort: 'il y a {{count}} min', + hoursAgoShort: 'il y a {{count}} h', + today: 'Aujourd’hui', + tomorrow: 'Demain', + weekAgo_one: 'il y a {{count}} semaine', + weekAgo_other: 'il y a {{count}} semaines', + yesterday: 'Hier', + }, + }, + decks: { + actions: { + actionMenu: 'Actions pour {{title}}', + createDeck: 'Créer un paquet', + createNote: 'Créer une note', + deleteDeck: 'Supprimer le paquet', + editDeck: 'Modifier le paquet', + newNote: 'Nouvelle note', + openDeck: 'Ouvrir le paquet {{title}}', + saveDeck: 'Impossible d’enregistrer le paquet', + studyNow: 'Étudier maintenant', + }, + descriptions: { + emptyDeck: 'Ajoutez une note pour donner du contenu à réviser à ce paquet.', + editorDefault: 'Paquet d’étude ciblé.', + editorVisual: 'Choisissez un glyphe de couverture pour ce paquet.', + notesSearchPlaceholder: 'Rechercher des notes…', + }, + dialogs: { + deleteDeckDescription: 'Cela déplace "{{title}}" vers la corbeille. Vous pourrez le restaurer plus tard.', + deleteDeckFallbackDescription: 'Cela déplace ce paquet vers la corbeille. Vous pourrez le restaurer plus tard.', + deleteDeckFallbackTitle: 'Supprimer le paquet ?', + deleteDeckTitle: 'Supprimer "{{title}}" ?', + deleteNoteDescription: 'Cela déplace "{{title}}" vers la corbeille. Vous pourrez la restaurer plus tard.', + deleteNoteFallbackTitle: 'Supprimer la note ?', + deleteNoteTitle: 'Supprimer "{{title}}" ?', + }, + empty: { + noMatchingNotes: 'Aucune note correspondante', + noMatchingNotesDescription: 'Aucune note ne correspond à "{{query}}".', + thisDeckIsEmpty: 'Ce paquet est vide', + }, + errors: { + couldNotCreateDeck: 'Impossible de créer le paquet', + couldNotDeleteDeck: 'Impossible de supprimer le paquet', + couldNotDeleteNote: 'Impossible de supprimer la note', + couldNotLoadFolderPath: 'Impossible de charger le chemin du dossier', + couldNotSaveDeck: 'Impossible d’enregistrer le paquet', + deckCouldNotLoad: 'Impossible de charger le paquet', + notesCouldNotLoad: 'Impossible de charger les notes', + notesMayBeOutOfDate: 'Les notes peuvent être obsolètes', + }, + fields: { + descriptionLabel: 'Description du paquet', + descriptionPlaceholder: 'Que ce paquet vous aidera-t-il à réviser ?', + namePlaceholder: 'Nom du paquet', + untitledDeck: 'Paquet sans titre', + untitledDeckLower: 'paquet sans titre', + }, + labels: { + createDeckTitle: 'Créer un paquet', + deck: 'Paquet', + deckNotesSearch: 'Recherche des notes du paquet', + deckOverview: 'Aperçu du paquet', + decks: 'Paquets', + due: 'À réviser', + dueToday: 'À réviser aujourd’hui', + loadingDeck: 'Chargement du paquet', + mastery: 'Maîtrise', + notes: 'Notes', + }, + sort: { + ariaLabel: 'Trier les paquets', + dueToday: 'À réviser aujourd’hui', + title: 'Titre', + updated: 'Mis à jour', + }, + }, + errors: { + byType: { + conflict: 'Les données ont changé. Actualisez et réessayez.', + forbidden: 'Vous n’avez pas l’autorisation de faire cela.', + notFound: 'Nous n’avons pas trouvé cet élément.', + offline: 'Impossible de joindre le service.', + timeout: 'Cela a pris trop de temps. Réessayez.', + unauthorized: 'Connectez-vous pour continuer.', + unavailable: 'Le service est temporairement indisponible.', + }, + fallback: { + unexpected: 'Erreur inattendue', + }, + }, + folders: { + actions: { + createFolder: 'Créer un dossier', + deleteFolder: 'Supprimer le dossier', + editFolder: 'Modifier le dossier', + }, + descriptions: { + editorDefault: 'Dossier pour paquets associés.', + }, + dialogs: { + deleteFolderDescription: 'Cela déplace "{{name}}" vers la corbeille. Vous pourrez le restaurer plus tard.', + deleteFolderFallbackDescription: 'Cela déplace ce dossier vers la corbeille. Vous pourrez le restaurer plus tard.', + deleteFolderFallbackTitle: 'Supprimer le dossier ?', + deleteFolderTitle: 'Supprimer "{{name}}" ?', + }, + empty: { + noMatchesInFolder: 'Aucune correspondance dans ce dossier', + noMatchesInFolderDescription: 'Aucun dossier, paquet ou note ne correspond à "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'Impossible de créer le dossier', + couldNotDeleteFolder: 'Impossible de supprimer le dossier', + couldNotLoadFolderPath: 'Impossible de charger le chemin du dossier', + couldNotSaveFolder: 'Impossible d’enregistrer le dossier', + folderCouldNotLoad: 'Impossible de charger le dossier', + }, + fields: { + descriptionLabel: 'Description du dossier', + descriptionPlaceholder: 'Qu’est-ce qui appartient à ce dossier ?', + namePlaceholder: 'Nom du dossier', + untitledFolder: 'Dossier sans titre', + }, + labels: { + createFolderTitle: 'Créer un dossier', + folder: 'Dossier', + folders: 'Dossiers', + loadingFolder: 'Chargement du dossier', + name: 'Nom', + updated: 'Mis à jour', + }, + sort: { + ariaLabel: 'Trier les dossiers', + name: 'Nom', + updated: 'Mis à jour', + }, + }, + menu: { + conflicts: { + description: 'Si les données locales et synchronisées divergent, l’élément apparaîtra ici.', + heading: 'État de synchronisation', + title: 'Conflits', + noConflicts: 'Aucun conflit trouvé', + }, + labels: { + menu: 'Menu', + }, + sections: { + settings: { + description: 'Personnalisez votre environnement et vos préférences', + title: 'Paramètres', + }, + trash: { + description: 'Restaurez ou supprimez définitivement les éléments retirés', + title: 'Corbeille', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Fermer l’éditeur', + openActions: 'Ouvrir les actions', + openWorkspaces: 'Ouvrir les espaces de travail', + }, + items: { + home: 'Accueil', + menu: 'Menu', + primary: 'Principal', + settings: 'Paramètres', + spaces: 'Espaces', + trash: 'Corbeille', + workspaces: 'Espaces de travail', + }, + }, + notes: { + actions: { + addCloze: 'Ajouter un cloze', + deleteNote: 'Supprimer la note', + editNote: 'Modifier la note', + hideDerivedCardsNote: 'Masquer la note des cartes dérivées', + openNote: 'Ouvrir {{title}}', + saveNote: 'Enregistrer la note', + showDerivedCardsNote: 'Afficher la note des cartes dérivées', + }, + descriptions: { + clozeFormat: 'Chaque partie masquée devient une carte de révision à l’enregistrement.', + clozeFormatPrefix: 'Entourez le texte masqué avec', + derivedCardsHelper: 'Les notes sont la source de vérité des cartes dérivées.', + }, + dialogs: { + deleteNoteDescription: 'Cela déplace "{{title}}" vers la corbeille. Vous pourrez la restaurer plus tard.', + deleteNoteFallbackDescription: 'Cela déplace cette note vers la corbeille. Vous pourrez la restaurer plus tard.', + deleteNoteFallbackTitle: 'Supprimer la note ?', + deleteNoteTitle: 'Supprimer "{{title}}" ?', + }, + errors: { + couldNotCreateNote: 'Impossible de créer la note', + couldNotDeleteNote: 'Impossible de supprimer la note', + couldNotSaveNote: 'Impossible d’enregistrer la note', + noteCouldNotLoad: 'Impossible de charger la note', + }, + fields: { + back: 'Verso', + backPlaceholder: 'Saisissez le verso', + bodyPlaceholder: 'Rédigez le corps de la note avec des cloze deletions…', + front: 'Recto', + frontPlaceholder: 'Saisissez le recto', + noteBody: 'Corps de la note', + title: 'Titre', + titlePlaceholder: 'Ajoutez un titre de note', + untitledCloze: 'Cloze sans titre', + untitledNote: 'Note sans titre', + }, + labels: { + backUppercase: 'VERSO', + basic: 'Basique', + basicLower: 'basique', + basicUppercase: 'BASIQUE', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Format cloze', + clozeUppercase: 'CLOZE', + deck: 'Paquet', + derivedCards: 'CARTES DÉRIVÉES', + due: 'À réviser', + frontUppercase: 'RECTO', + inProgress: 'En cours', + inProgressUppercase: 'EN COURS', + loadingNote: 'Chargement de la note', + loadingNoteEditor: 'Chargement de l’éditeur de notes', + markdownFormatting: 'Mise en forme Markdown', + mastered: 'Maîtrisé', + masteredUppercase: 'MAÎTRISÉ', + newNote: 'Nouvelle note', + noteBody: 'CORPS DE LA NOTE', + noteContent: 'Contenu de la note', + noteDetails: 'Détails de la note', + noteMetadata: 'Métadonnées de la note', + noteType: 'Type de note', + notes: 'Notes', + reviewed: 'Révisé', + studyProgress: 'Progression de l’étude', + studyProgressUppercase: 'PROGRESSION DE L’ÉTUDE', + titleUppercase: 'TITRE', + updated: 'Mis à jour', + }, + sort: { + ariaLabel: 'Trier les notes', + title: 'Titre', + updated: 'Mis à jour', + }, + toolbar: { + bold: 'Gras', + italic: 'Italique', + link: 'Lien', + list: 'Liste', + }, + }, + review: { + actions: { + again: 'Encore', + backToDeck: 'Retour au paquet', + continueReview: 'Continuer la révision', + easy: 'Facile', + good: 'Bien', + hard: 'Difficile', + newNote: 'Nouvelle note', + showAnswer: 'Afficher la réponse', + }, + errors: { + couldNotGradeCard: 'Impossible de noter la carte', + reviewCouldNotLoad: 'Impossible de charger la révision', + reviewCouldNotStart: 'Impossible de démarrer la révision', + summaryCouldNotLoad: 'Impossible de charger le résumé de révision', + summaryNotAvailable: 'Le résumé de révision n’est pas disponible', + summaryNotComplete: 'Cette révision n’est pas encore terminée.', + }, + labels: { + cardsReviewed: 'Cartes révisées', + deck: 'Paquet', + duration: 'Durée', + loadingReview: 'Chargement de la révision', + loadingSummary: 'Chargement du résumé', + progress: 'Progression de la révision', + review: 'Révision', + reviewComplete: 'Révision terminée', + reviewed_one: '{{count}} révisée', + reviewed_other: '{{count}} révisées', + }, + summary: { + durationHoursMinutes: '{{hours}} h {{minutes}} min', + durationMinutes: '{{minutes}} min', + durationSeconds: '{{seconds}} s', + saved: 'Votre progression a été enregistrée dans ce paquet.', + }, + unavailable: { + description: 'Ajoutez une note pour que ce paquet puisse entrer dans la file de révision.', + title: 'Aucune carte à réviser', + }, + }, + search: { + actions: { + clearSearch: 'Effacer la recherche', + }, + empty: { + noMatchesInWorkspace: 'Aucune correspondance dans cet espace de travail', + noMatchesInWorkspaceDescription: 'Aucun dossier, paquet ou note ne correspond à "{{query}}".', + }, + errors: { + couldNotComplete: 'La recherche n’a pas pu aboutir', + }, + labels: { + results: 'Résultats de recherche', + resultsFor: 'Résultats pour "{{query}}"', + searchingContent: 'Recherche de contenu', + }, + resultGroups: { + deck: 'Paquets', + folder: 'Dossiers', + note: 'Notes', + }, + resultKinds: { + deck: 'paquet', + folder: 'dossier', + note: 'note', + }, + }, + settings: { + actions: { + resetAll: 'Réinitialiser tous les paramètres', + resetSettings: 'Réinitialiser les paramètres', + resetToDefaults: 'Rétablir les valeurs par défaut', + }, + dialogs: { + fsrsErrorInvalidJson: 'Collez un JSON valide avec 21 valeurs numériques.', + fsrsErrorInvalidParams_one: 'Saisissez un tableau JSON avec exactement {{count}} nombre fini.', + fsrsErrorInvalidParams_other: 'Saisissez un tableau JSON avec exactement {{count}} nombres finis.', + fsrsHelper: 'Il s’agit d’un réglage expert. Les valeurs doivent rester dans l’ordre.', + fsrsJsonLabel: 'JSON des paramètres FSRS', + fsrsTitle: 'Modifier les paramètres FSRS', + fsrsDescription: 'Collez un tableau JSON de 21 nombres pour remplacer les poids du scheduler.', + resetDescription: 'Cela restaure le fuseau horaire, les limites d’étude et les paramètres FSRS.', + resetDescriptionWithLanguage: 'Cela restaure la langue, le fuseau horaire, les limites d’étude et les paramètres FSRS.', + resetTitle: 'Réinitialiser tous les paramètres ?', + timezoneDescription: 'Recherchez une ville ou un identifiant de fuseau horaire.', + timezoneSearchLabel: 'Rechercher des fuseaux horaires', + timezoneSearchPlaceholder: 'Rechercher des fuseaux horaires…', + timezoneTitle: 'Choisir un fuseau horaire', + }, + errors: { + couldNotResetSettings: 'Impossible de réinitialiser les paramètres', + couldNotSaveSettings: 'Impossible d’enregistrer les paramètres', + settingsCouldNotLoad: 'Impossible de charger les paramètres', + settingsUnavailable: 'Les paramètres sont indisponibles.', + }, + labels: { + appearance: 'Apparence', + automatic: 'Automatique', + fsrsParameters: 'Paramètres FSRS', + general: 'Général', + language: 'Langue', + loadingSettings: 'Chargement des paramètres', + masteryHorizon: 'Horizon de maîtrise', + newCardOrder: 'Ordre des nouvelles cartes', + newCardsPerDay: 'Nouvelles cartes par jour', + reviewCardsPerDay: 'Cartes de révision par jour', + savingSettings: 'Enregistrement des paramètres', + schedule: 'Planification', + searchNoTimezones: 'Aucun fuseau horaire correspondant.', + settings: 'Paramètres', + settingsReset: 'Paramètres réinitialisés', + study: 'Étude', + targetRecallProbability: 'Probabilité de rappel cible', + theme: 'Thème', + timezone: 'Fuseau horaire', + }, + options: { + languageEnUs: 'Anglais (États-Unis)', + newCardsAfterReviews: 'Après les révisions', + newCardsBeforeReviews: 'Avant les révisions', + newCardsMixed: 'Mélangé', + themeDark: 'Sombre', + themeLight: 'Clair', + themeSystem: 'Système', + timezoneSystem: 'Utiliser le fuseau horaire du système', + }, + rows: { + fsrsDescription: 'Poids du modèle expert', + languageDescription: 'Langue de l’interface', + masteryHorizonDescription: 'Nombre de jours pendant lesquels une carte doit rester rappelable au seuil cible ou au-dessus pour compter comme maîtrisée', + newCardOrderDescription: 'Ordre des nouvelles cartes par rapport aux révisions', + newCardsPerDayDescription: 'Nombre maximal de nouvelles cartes par jour', + reviewCardsPerDayDescription: 'Nombre maximal de cartes de révision par jour', + targetRecallProbabilityDescription: 'Probabilité minimale de rappel lors de la prochaine révision planifiée', + timezoneDescription: 'Utilisez le fuseau horaire automatique ou choisissez une ville.', + }, + }, + trash: { + actions: { + deletePermanently: 'Supprimer définitivement', + empty: 'Vider', + emptyTrash: 'Vider la corbeille', + restore: 'Restaurer', + restoringItem: 'Restauration de {{title}}', + }, + dialogs: { + deleteItemDescription: 'Cela supprime définitivement "{{title}}". Cette action est irréversible.', + deleteItemFallbackDescription: 'Cela supprime définitivement cet élément. Cette action est irréversible.', + deleteItemFallbackTitle: 'Supprimer l’élément ?', + deleteItemTitle: 'Supprimer "{{title}}" ?', + emptyTrashDescription: 'Cela supprime définitivement tout ce qui se trouve dans la corbeille. Cette action est irréversible.', + emptyTrashTitle: 'Vider la corbeille ?', + }, + empty: { + description: 'Les éléments que vous supprimez apparaissent ici avant leur suppression définitive.', + title: 'La corbeille est vide', + }, + errors: { + couldNotDeleteItem: 'Impossible de supprimer l’élément', + couldNotEmptyTrash: 'Impossible de vider la corbeille', + couldNotRestoreItem: 'Impossible de restaurer l’élément', + trashCouldNotLoad: 'Impossible de charger la corbeille', + trashMayBeOutOfDate: 'La corbeille peut être obsolète', + }, + labels: { + deletedAge: 'Supprimé {{value}}', + itemCount_one: '{{count}} élément', + itemCount_other: '{{count}} éléments', + lastEmptied: 'Vidée pour la dernière fois {{value}}', + loadingTrash: 'Chargement de la corbeille', + originalLocation: 'Emplacement d’origine : {{location}}', + title: 'Corbeille', + trashActions: 'Actions de corbeille pour {{title}}', + }, + kinds: { + deck: 'Paquet', + folder: 'Dossier', + note: 'Note', + workspace: 'Espace de travail', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Créer un espace de travail', + deleteWorkspace: 'Supprimer l’espace de travail', + editWorkspace: 'Modifier l’espace de travail', + newWorkspace: 'Nouvel espace de travail', + openWorkspace: 'Ouvrir {{title}}', + openingWorkspace: 'Ouverture de {{title}}', + }, + descriptions: { + editorDefault: 'Contexte d’étude.', + editorVisual: 'Choisissez un repère visuel pour cet espace de travail.', + emptyList: 'Séparez les paquets, les notes et les files de révision par contexte d’étude.', + }, + dialogs: { + deleteWorkspaceDescription: 'Cela déplace "{{title}}" vers la corbeille. Vous pourrez le restaurer plus tard.', + deleteWorkspaceFallbackDescription: 'Cela déplace cet espace de travail vers la corbeille. Vous pourrez le restaurer plus tard.', + deleteWorkspaceFallbackTitle: 'Supprimer l’espace de travail ?', + deleteWorkspaceTitle: 'Supprimer "{{title}}" ?', + }, + empty: { + startWithWorkspace: 'Commencez avec un espace de travail', + }, + errors: { + couldNotCreateWorkspace: 'Impossible de créer l’espace de travail', + couldNotDeleteWorkspace: 'Impossible de supprimer l’espace de travail', + couldNotOpenWorkspace: 'Impossible d’ouvrir l’espace de travail', + couldNotSaveWorkspace: 'Impossible d’enregistrer l’espace de travail', + workspaceCouldNotLoad: 'Impossible de charger l’espace de travail', + workspacesCouldNotLoad: 'Impossible de charger les espaces de travail', + }, + fields: { + descriptionLabel: 'Description de l’espace de travail', + descriptionPlaceholder: 'Qu’est-ce qui appartient à cet espace de travail ?', + namePlaceholder: 'Nom de l’espace de travail', + untitledWorkspace: 'Espace de travail sans titre', + }, + labels: { + createWorkspaceTitle: 'Créer un espace de travail', + loadingWorkspaces: 'Chargement des espaces de travail', + workspace: 'Espace de travail', + workspaces: 'Espaces de travail', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/he.ts b/ui/src/core/i18n/resources/he.ts new file mode 100644 index 0000000..e90b8f9 --- /dev/null +++ b/ui/src/core/i18n/resources/he.ts @@ -0,0 +1,636 @@ +export const he = { + bootstrap: { + error: { + fallbackMessage: 'נסו שוב. אם זה ממשיך לקרות, פתחו את Clear מחדש.', + title: 'לא ניתן להתחיל', + }, + loadingTitle: 'מכינים את מרחב הלמידה שלכם', + }, + common: { + actions: { + back: 'חזרה', + cancel: 'ביטול', + checkAgain: 'בדיקה חוזרת', + close: 'סגירה', + create: 'יצירה', + delete: 'מחיקה', + dismissError: 'הסתרת שגיאה', + dismissStatus: 'הסתרת סטטוס', + edit: 'עריכה', + itemActions: 'פעולות עבור {{title}}', + reset: 'איפוס', + review: 'סקירה', + save: 'שמירה', + saveChanges: 'שמירת שינויים', + tryAgain: 'נסו שוב', + }, + labels: { + active: 'פעיל', + clear: 'Clear', + custom: 'מותאם אישית', + default: 'ברירת מחדל', + loadingEditor: 'העורך נטען', + name: 'שם', + completedTask: 'משימה שהושלמה', + description: 'תיאור', + incompleteTask: 'משימה שלא הושלמה', + percentageInput: 'אחוז {{label}}', + visual: 'ייצוג חזותי', + }, + status: { + actionFailed: 'הפעולה נכשלה', + actionInProgress: 'הפעולה מתבצעת', + }, + sort: { + ascending: 'עולה', + column: 'עמודה', + descending: 'יורד', + direction: 'כיוון', + sort: 'מיון', + }, + search: { + label: 'חיפוש', + }, + visualPicker: { + allLucideIcons: 'כל סמלי Lucide', + browseIconsFor: 'עיינו או חפשו סמלים עבור {{label}}.', + chooseIcon: 'בחירת סמל', + iconPicker: 'בורר סמלים עבור {{label}}', + iconSearch: 'חיפוש סמלים עבור {{label}}', + iconsCouldNotLoad: 'לא ניתן היה לטעון את הסמלים.', + loadingIcons: 'הסמלים נטענים', + loadingMoreIcons: 'סמלים נוספים נטענים', + moreIcons: 'סמלים נוספים', + noIconsMatch: 'אין סמלים שתואמים ל-"{{query}}".', + searchIconsPlaceholder: 'חיפוש סמלים…', + selectedIcon: '{{label}} נבחר', + }, + }, + dashboard: { + actions: { + create: 'יצירה', + newDeck: 'חפיסה חדשה', + newFolder: 'תיקייה חדשה', + }, + descriptions: { + defaultWorkspace: 'שמרו חפיסות, תיקיות והערות יחד.', + emptyWorkspace: 'צרו חפיסה, ואז הוסיפו הערות כדי לבנות תור סקירה.', + emptyFolder: 'צרו חפיסה, ואז הוסיפו הערות כדי לבנות תור סקירה.', + searchPlaceholder: 'חיפוש תיקיות, חפיסות והערות…', + }, + empty: { + createFirstDeck: 'צרו את החפיסה הראשונה שלכם', + }, + errors: { + couldNotDeleteDeck: 'לא ניתן היה למחוק את החפיסה', + couldNotDeleteFolder: 'לא ניתן היה למחוק את התיקייה', + couldNotDeleteWorkspace: 'לא ניתן היה למחוק את מרחב העבודה', + dashboardCouldNotOpen: 'לא ניתן היה לפתוח את לוח הבקרה', + decksCouldNotLoad: 'לא ניתן היה לטעון חפיסות', + decksMayBeOutOfDate: 'ייתכן שהחפיסות אינן עדכניות', + foldersCouldNotLoad: 'לא ניתן היה לטעון תיקיות', + foldersMayBeOutOfDate: 'ייתכן שהתיקיות אינן עדכניות', + workspaceCouldNotLoad: 'לא ניתן היה לטעון את מרחב העבודה', + }, + labels: { + dashboard: 'לוח בקרה', + loadingDashboard: 'לוח הבקרה נטען', + newItem: 'פריט חדש', + }, + }, + dates: { + absolute: { + unavailable: 'התאריך לא זמין', + }, + age: { + dayAgo_one: 'לפני {{count}} יום', + dayAgo_two: 'לפני {{count}} ימים', + dayAgo_other: 'לפני {{count}} ימים', + hourAgo_one: 'לפני {{count}} שעה', + hourAgo_two: 'לפני {{count}} שעות', + hourAgo_other: 'לפני {{count}} שעות', + justNow: 'ממש עכשיו', + minuteAgo_one: 'לפני {{count}} דקה', + minuteAgo_two: 'לפני {{count}} דקות', + minuteAgo_other: 'לפני {{count}} דקות', + unavailable: 'התאריך לא זמין', + weekAgo_one: 'לפני {{count}} שבוע', + weekAgo_two: 'לפני {{count}} שבועות', + weekAgo_other: 'לפני {{count}} שבועות', + }, + labels: { + deleted: 'נמחק {{value}}', + due: 'מועד: {{value}}', + reviewed: 'נסקר: {{value}}', + updated: 'עודכן {{value}}', + updatedUppercase: 'עודכן {{value}}', + }, + relative: { + dayAgo_one: 'לפני {{count}} יום', + dayAgo_two: 'לפני {{count}} ימים', + dayAgo_other: 'לפני {{count}} ימים', + inAMoment: 'בעוד רגע', + inDay_one: 'בעוד {{count}} יום', + inDay_two: 'בעוד {{count}} ימים', + inDay_other: 'בעוד {{count}} ימים', + inMonth_one: 'בעוד {{count}} חודש', + inMonth_two: 'בעוד {{count}} חודשים', + inMonth_other: 'בעוד {{count}} חודשים', + inWeek_one: 'בעוד {{count}} שבוע', + inWeek_two: 'בעוד {{count}} שבועות', + inWeek_other: 'בעוד {{count}} שבועות', + justNow: 'ממש עכשיו', + monthAgo_one: 'לפני {{count}} חודש', + monthAgo_two: 'לפני {{count}} חודשים', + monthAgo_other: 'לפני {{count}} חודשים', + secondsAgoShort: 'לפני {{count}}ש', + minutesAgoShort: 'לפני {{count}}ד', + hoursAgoShort: 'לפני {{count}}ש׳', + today: 'היום', + tomorrow: 'מחר', + weekAgo_one: 'לפני {{count}} שבוע', + weekAgo_two: 'לפני {{count}} שבועות', + weekAgo_other: 'לפני {{count}} שבועות', + yesterday: 'אתמול', + }, + }, + decks: { + actions: { + actionMenu: 'פעולות עבור {{title}}', + createDeck: 'יצירת חפיסה', + createNote: 'יצירת הערה', + deleteDeck: 'מחיקת חפיסה', + editDeck: 'עריכת חפיסה', + newNote: 'הערה חדשה', + openDeck: 'פתיחת חפיסת {{title}}', + saveDeck: 'לא ניתן היה לשמור את החפיסה', + studyNow: 'ללמוד עכשיו', + }, + descriptions: { + emptyDeck: 'הוסיפו הערה כדי שלחפיסה הזו יהיה חומר לסקירה.', + editorDefault: 'חפיסת לימוד ממוקדת.', + editorVisual: 'בחרו סמל כיסוי לחפיסה הזו.', + notesSearchPlaceholder: 'חיפוש הערות…', + }, + dialogs: { + deleteDeckDescription: '"{{title}}" תועבר לאשפה. ניתן לשחזר אותה מאוחר יותר.', + deleteDeckFallbackDescription: 'החפיסה הזו תועבר לאשפה. ניתן לשחזר אותה מאוחר יותר.', + deleteDeckFallbackTitle: 'למחוק את החפיסה?', + deleteDeckTitle: 'למחוק את "{{title}}"?', + deleteNoteDescription: '"{{title}}" תועבר לאשפה. ניתן לשחזר אותה מאוחר יותר.', + deleteNoteFallbackTitle: 'למחוק את ההערה?', + deleteNoteTitle: 'למחוק את "{{title}}"?', + }, + empty: { + noMatchingNotes: 'אין הערות תואמות', + noMatchingNotesDescription: 'לא נמצאו הערות שתואמות ל-"{{query}}".', + thisDeckIsEmpty: 'החפיסה הזו ריקה', + }, + errors: { + couldNotCreateDeck: 'לא ניתן היה ליצור את החפיסה', + couldNotDeleteDeck: 'לא ניתן היה למחוק את החפיסה', + couldNotDeleteNote: 'לא ניתן היה למחוק את ההערה', + couldNotLoadFolderPath: 'לא ניתן היה לטעון את נתיב התיקייה', + couldNotSaveDeck: 'לא ניתן היה לשמור את החפיסה', + deckCouldNotLoad: 'לא ניתן היה לטעון את החפיסה', + notesCouldNotLoad: 'לא ניתן היה לטעון הערות', + notesMayBeOutOfDate: 'ייתכן שההערות אינן עדכניות', + }, + fields: { + descriptionLabel: 'תיאור החפיסה', + descriptionPlaceholder: 'מה החפיסה הזו תעזור לכם לסקור?', + namePlaceholder: 'שם החפיסה', + untitledDeck: 'חפיסה ללא שם', + untitledDeckLower: 'חפיסה ללא שם', + }, + labels: { + createDeckTitle: 'יצירת חפיסה', + deck: 'חפיסה', + deckNotesSearch: 'חיפוש הערות בחפיסה', + deckOverview: 'סקירת חפיסה', + decks: 'חפיסות', + due: 'מועד', + dueToday: 'מועד היום', + loadingDeck: 'החפיסה נטענת', + mastery: 'שליטה', + notes: 'הערות', + }, + sort: { + ariaLabel: 'מיון חפיסות', + dueToday: 'מועד היום', + title: 'כותרת', + updated: 'עודכן', + }, + }, + errors: { + byType: { + conflict: 'הנתונים השתנו. רעננו ונסו שוב.', + forbidden: 'אין לכם הרשאה לבצע זאת.', + notFound: 'לא הצלחנו למצוא את הפריט הזה.', + offline: 'לא ניתן להגיע לשירות.', + timeout: 'זה נמשך יותר מדי זמן. נסו שוב.', + unauthorized: 'התחברו כדי להמשיך.', + unavailable: 'השירות אינו זמין זמנית.', + }, + fallback: { + unexpected: 'שגיאה בלתי צפויה', + }, + }, + folders: { + actions: { + createFolder: 'יצירת תיקייה', + deleteFolder: 'מחיקת תיקייה', + editFolder: 'עריכת תיקייה', + }, + descriptions: { + editorDefault: 'תיקייה לחפיסות קשורות.', + }, + dialogs: { + deleteFolderDescription: '"{{name}}" תועבר לאשפה. ניתן לשחזר אותה מאוחר יותר.', + deleteFolderFallbackDescription: 'התיקייה הזו תועבר לאשפה. ניתן לשחזר אותה מאוחר יותר.', + deleteFolderFallbackTitle: 'למחוק את התיקייה?', + deleteFolderTitle: 'למחוק את "{{name}}"?', + }, + empty: { + noMatchesInFolder: 'אין תוצאות בתיקייה הזו', + noMatchesInFolderDescription: 'לא נמצאו תיקיות, חפיסות או הערות שתואמות ל-"{{query}}".', + }, + errors: { + couldNotCreateFolder: 'לא ניתן היה ליצור את התיקייה', + couldNotDeleteFolder: 'לא ניתן היה למחוק את התיקייה', + couldNotLoadFolderPath: 'לא ניתן היה לטעון את נתיב התיקייה', + couldNotSaveFolder: 'לא ניתן היה לשמור את התיקייה', + folderCouldNotLoad: 'לא ניתן היה לטעון את התיקייה', + }, + fields: { + descriptionLabel: 'תיאור התיקייה', + descriptionPlaceholder: 'מה שייך לתיקייה הזו?', + namePlaceholder: 'שם התיקייה', + untitledFolder: 'תיקייה ללא שם', + }, + labels: { + createFolderTitle: 'יצירת תיקייה', + folder: 'תיקייה', + folders: 'תיקיות', + loadingFolder: 'התיקייה נטענת', + name: 'שם', + updated: 'עודכן', + }, + sort: { + ariaLabel: 'מיון תיקיות', + name: 'שם', + updated: 'עודכן', + }, + }, + menu: { + conflicts: { + description: 'אם נתונים מקומיים ומסונכרנים יהיו שונים, הפריט יופיע כאן.', + heading: 'סטטוס סנכרון', + title: 'התנגשויות', + noConflicts: 'לא נמצאו התנגשויות', + }, + labels: { + menu: 'תפריט', + }, + sections: { + settings: { + description: 'התאימו את הסביבה וההעדפות שלכם', + title: 'הגדרות', + }, + trash: { + description: 'שחזרו או מחקו לצמיתות פריטים שהוסרו', + title: 'אשפה', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'סגירת העורך', + openActions: 'פתיחת פעולות', + openWorkspaces: 'פתיחת מרחבי עבודה', + }, + items: { + home: 'בית', + menu: 'תפריט', + primary: 'ראשי', + settings: 'הגדרות', + spaces: 'מרחבים', + trash: 'אשפה', + workspaces: 'מרחבי עבודה', + }, + }, + notes: { + actions: { + addCloze: 'הוספת Cloze', + deleteNote: 'מחיקת הערה', + editNote: 'עריכת הערה', + hideDerivedCardsNote: 'הסתרת הערת כרטיסים נגזרים', + openNote: 'פתיחת {{title}}', + saveNote: 'שמירת הערה', + showDerivedCardsNote: 'הצגת הערת כרטיסים נגזרים', + }, + descriptions: { + clozeFormat: 'כל חלק מוסתר יהפוך לכרטיס סקירה לאחר השמירה.', + clozeFormatPrefix: 'עטפו טקסט מוסתר עם', + derivedCardsHelper: 'הערות הן מקור האמת לכרטיסים נגזרים.', + }, + dialogs: { + deleteNoteDescription: '"{{title}}" תועבר לאשפה. ניתן לשחזר אותה מאוחר יותר.', + deleteNoteFallbackDescription: 'ההערה הזו תועבר לאשפה. ניתן לשחזר אותה מאוחר יותר.', + deleteNoteFallbackTitle: 'למחוק את ההערה?', + deleteNoteTitle: 'למחוק את "{{title}}"?', + }, + errors: { + couldNotCreateNote: 'לא ניתן היה ליצור את ההערה', + couldNotDeleteNote: 'לא ניתן היה למחוק את ההערה', + couldNotSaveNote: 'לא ניתן היה לשמור את ההערה', + noteCouldNotLoad: 'לא ניתן היה לטעון את ההערה', + }, + fields: { + back: 'גב', + backPlaceholder: 'הזינו צד גב', + bodyPlaceholder: 'כתבו את גוף ההערה עם מחיקות Cloze…', + front: 'חזית', + frontPlaceholder: 'הזינו צד חזית', + noteBody: 'גוף ההערה', + title: 'כותרת', + titlePlaceholder: 'הוסיפו כותרת להערה', + untitledCloze: 'Cloze ללא שם', + untitledNote: 'הערה ללא שם', + }, + labels: { + backUppercase: 'גב', + basic: 'בסיסי', + basicLower: 'בסיסי', + basicUppercase: 'בסיסי', + cloze: 'Cloze', + clozeLower: 'Cloze', + clozeFormat: 'תבנית Cloze', + clozeUppercase: 'Cloze', + deck: 'חפיסה', + derivedCards: 'כרטיסים נגזרים', + due: 'מועד', + frontUppercase: 'חזית', + inProgress: 'בתהליך', + inProgressUppercase: 'בתהליך', + loadingNote: 'ההערה נטענת', + loadingNoteEditor: 'עורך ההערות נטען', + markdownFormatting: 'עיצוב Markdown', + mastered: 'נשלט', + masteredUppercase: 'נשלט', + newNote: 'הערה חדשה', + noteBody: 'גוף ההערה', + noteContent: 'תוכן ההערה', + noteDetails: 'פרטי ההערה', + noteMetadata: 'מטא־נתוני ההערה', + noteType: 'סוג הערה', + notes: 'הערות', + reviewed: 'נסקר', + studyProgress: 'התקדמות לימוד', + studyProgressUppercase: 'התקדמות לימוד', + titleUppercase: 'כותרת', + updated: 'עודכן', + }, + sort: { + ariaLabel: 'מיון הערות', + title: 'כותרת', + updated: 'עודכן', + }, + toolbar: { + bold: 'מודגש', + italic: 'נטוי', + link: 'קישור', + list: 'רשימה', + }, + }, + review: { + actions: { + again: 'שוב', + backToDeck: 'חזרה לחפיסה', + continueReview: 'המשך סקירה', + easy: 'קל', + good: 'טוב', + hard: 'קשה', + newNote: 'הערה חדשה', + showAnswer: 'הצגת תשובה', + }, + errors: { + couldNotGradeCard: 'לא ניתן היה לדרג את הכרטיס', + reviewCouldNotLoad: 'לא ניתן היה לטעון את הסקירה', + reviewCouldNotStart: 'לא ניתן היה להתחיל את הסקירה', + summaryCouldNotLoad: 'לא ניתן היה לטעון את סיכום הסקירה', + summaryNotAvailable: 'סיכום הסקירה אינו זמין', + summaryNotComplete: 'הסקירה הזו עדיין לא הושלמה.', + }, + labels: { + cardsReviewed: 'כרטיסים שנסקרו', + deck: 'חפיסה', + duration: 'משך', + loadingReview: 'הסקירה נטענת', + loadingSummary: 'הסיכום נטען', + progress: 'התקדמות הסקירה', + review: 'סקירה', + reviewComplete: 'הסקירה הושלמה', + reviewed_one: '{{count}} נסקר', + reviewed_two: '{{count}} נסקרו', + reviewed_other: '{{count}} נסקרו', + }, + summary: { + durationHoursMinutes: '{{hours}}ש {{minutes}}ד', + durationMinutes: '{{minutes}}ד', + durationSeconds: '{{seconds}}שנ', + saved: 'ההתקדמות שלכם נשמרה בחפיסה הזו.', + }, + unavailable: { + description: 'הוסיפו הערה כדי שהחפיסה הזו תוכל להיכנס לתור הסקירה.', + title: 'אין כרטיסים לסקירה', + }, + }, + search: { + actions: { + clearSearch: 'ניקוי חיפוש', + }, + empty: { + noMatchesInWorkspace: 'אין תוצאות במרחב העבודה הזה', + noMatchesInWorkspaceDescription: 'לא נמצאו תיקיות, חפיסות או הערות שתואמות ל-"{{query}}".', + }, + errors: { + couldNotComplete: 'לא ניתן היה להשלים את החיפוש', + }, + labels: { + results: 'תוצאות חיפוש', + resultsFor: 'תוצאות עבור "{{query}}"', + searchingContent: 'מתבצע חיפוש בתוכן', + }, + resultGroups: { + deck: 'חפיסות', + folder: 'תיקיות', + note: 'הערות', + }, + resultKinds: { + deck: 'חפיסה', + folder: 'תיקייה', + note: 'הערה', + }, + }, + settings: { + actions: { + resetAll: 'איפוס כל ההגדרות', + resetSettings: 'איפוס הגדרות', + resetToDefaults: 'איפוס לברירות המחדל', + }, + dialogs: { + fsrsErrorInvalidJson: 'הדביקו JSON תקין עם 21 ערכים מספריים.', + fsrsErrorInvalidParams_one: 'הזינו מערך JSON עם בדיוק {{count}} מספר סופי.', + fsrsErrorInvalidParams_two: 'הזינו מערך JSON עם בדיוק {{count}} מספרים סופיים.', + fsrsErrorInvalidParams_other: 'הזינו מערך JSON עם בדיוק {{count}} מספרים סופיים.', + fsrsHelper: 'זו עקיפה למומחים. הערכים חייבים להישאר לפי הסדר.', + fsrsJsonLabel: 'JSON של פרמטרי FSRS', + fsrsTitle: 'עריכת פרמטרי FSRS', + fsrsDescription: 'הדביקו מערך JSON עם 21 מספרים כדי לעקוף את משקלי המתזמן.', + resetDescription: 'פעולה זו משחזרת אזור זמן, מגבלות לימוד והגדרות FSRS.', + resetDescriptionWithLanguage: 'פעולה זו משחזרת שפה, אזור זמן, מגבלות לימוד והגדרות FSRS.', + resetTitle: 'לאפס את כל ההגדרות?', + timezoneDescription: 'חפשו עיר או מזהה אזור זמן.', + timezoneSearchLabel: 'חיפוש אזורי זמן', + timezoneSearchPlaceholder: 'חיפוש אזורי זמן…', + timezoneTitle: 'בחירת אזור זמן', + }, + errors: { + couldNotResetSettings: 'לא ניתן היה לאפס את ההגדרות', + couldNotSaveSettings: 'לא ניתן היה לשמור את ההגדרות', + settingsCouldNotLoad: 'לא ניתן היה לטעון את ההגדרות', + settingsUnavailable: 'ההגדרות אינן זמינות.', + }, + labels: { + appearance: 'מראה', + automatic: 'אוטומטי', + fsrsParameters: 'פרמטרי FSRS', + general: 'כללי', + language: 'שפה', + loadingSettings: 'ההגדרות נטענות', + masteryHorizon: 'אופק שליטה', + newCardOrder: 'סדר כרטיסים חדשים', + newCardsPerDay: 'כרטיסים חדשים ביום', + reviewCardsPerDay: 'כרטיסי סקירה ביום', + savingSettings: 'ההגדרות נשמרות', + schedule: 'לוח זמנים', + searchNoTimezones: 'אין אזורי זמן תואמים.', + settings: 'הגדרות', + settingsReset: 'איפוס הגדרות', + study: 'לימוד', + targetRecallProbability: 'הסתברות זכירה יעד', + theme: 'ערכת נושא', + timezone: 'אזור זמן', + }, + options: { + languageEnUs: 'אנגלית (ארה״ב)', + newCardsAfterReviews: 'אחרי סקירות', + newCardsBeforeReviews: 'לפני סקירות', + newCardsMixed: 'מעורב', + themeDark: 'כהה', + themeLight: 'בהיר', + themeSystem: 'מערכת', + timezoneSystem: 'שימוש באזור הזמן של המערכת', + }, + rows: { + fsrsDescription: 'משקלי מודל למומחים', + languageDescription: 'שפת הממשק', + masteryHorizonDescription: 'מספר הימים שכרטיס צריך להישאר ניתן לזכירה ברמת הסתברות היעד או מעליה כדי להיחשב נשלט', + newCardOrderDescription: 'סדר הכרטיסים החדשים ביחס לסקירות', + newCardsPerDayDescription: 'מספר מרבי של כרטיסים חדשים ביום', + reviewCardsPerDayDescription: 'מספר מרבי של כרטיסי סקירה ביום', + targetRecallProbabilityDescription: 'הסתברות הזכירה המזערית בסקירה המתוזמנת הבאה', + timezoneDescription: 'השתמשו באזור זמן אוטומטי או בחרו עיר.', + }, + }, + trash: { + actions: { + deletePermanently: 'מחיקה לצמיתות', + empty: 'ריקון', + emptyTrash: 'ריקון האשפה', + restore: 'שחזור', + restoringItem: '{{title}} משוחזר', + }, + dialogs: { + deleteItemDescription: '"{{title}}" יימחק לצמיתות. לא ניתן לבטל פעולה זו.', + deleteItemFallbackDescription: 'הפריט הזה יימחק לצמיתות. לא ניתן לבטל פעולה זו.', + deleteItemFallbackTitle: 'למחוק את הפריט?', + deleteItemTitle: 'למחוק את "{{title}}"?', + emptyTrashDescription: 'כל מה שבאשפה יימחק לצמיתות. לא ניתן לבטל פעולה זו.', + emptyTrashTitle: 'לרוקן את האשפה?', + }, + empty: { + description: 'פריטים שתמחקו יופיעו כאן לפני הסרה לצמיתות.', + title: 'האשפה ריקה', + }, + errors: { + couldNotDeleteItem: 'לא ניתן היה למחוק את הפריט', + couldNotEmptyTrash: 'לא ניתן היה לרוקן את האשפה', + couldNotRestoreItem: 'לא ניתן היה לשחזר את הפריט', + trashCouldNotLoad: 'לא ניתן היה לטעון את האשפה', + trashMayBeOutOfDate: 'ייתכן שהאשפה אינה עדכנית', + }, + labels: { + deletedAge: 'נמחק {{value}}', + itemCount_one: '{{count}} פריט', + itemCount_two: '{{count}} פריטים', + itemCount_other: '{{count}} פריטים', + lastEmptied: 'רוקנה לאחרונה {{value}}', + loadingTrash: 'האשפה נטענת', + originalLocation: 'מיקום מקורי: {{location}}', + title: 'אשפה', + trashActions: 'פעולות אשפה עבור {{title}}', + }, + kinds: { + deck: 'חפיסה', + folder: 'תיקייה', + note: 'הערה', + workspace: 'מרחב עבודה', + }, + }, + workspaces: { + actions: { + createWorkspace: 'יצירת מרחב עבודה', + deleteWorkspace: 'מחיקת מרחב עבודה', + editWorkspace: 'עריכת מרחב עבודה', + newWorkspace: 'מרחב עבודה חדש', + openWorkspace: 'פתיחת {{title}}', + openingWorkspace: '{{title}} נפתח', + }, + descriptions: { + editorDefault: 'הקשר לימוד.', + editorVisual: 'בחרו עוגן חזותי למרחב העבודה הזה.', + emptyList: 'הפרידו חפיסות, הערות ותורי סקירה לפי הקשר לימוד.', + }, + dialogs: { + deleteWorkspaceDescription: '"{{title}}" יועבר לאשפה. ניתן לשחזר אותו מאוחר יותר.', + deleteWorkspaceFallbackDescription: 'מרחב העבודה הזה יועבר לאשפה. ניתן לשחזר אותו מאוחר יותר.', + deleteWorkspaceFallbackTitle: 'למחוק את מרחב העבודה?', + deleteWorkspaceTitle: 'למחוק את "{{title}}"?', + }, + empty: { + startWithWorkspace: 'התחילו עם מרחב עבודה', + }, + errors: { + couldNotCreateWorkspace: 'לא ניתן היה ליצור את מרחב העבודה', + couldNotDeleteWorkspace: 'לא ניתן היה למחוק את מרחב העבודה', + couldNotOpenWorkspace: 'לא ניתן היה לפתוח את מרחב העבודה', + couldNotSaveWorkspace: 'לא ניתן היה לשמור את מרחב העבודה', + workspaceCouldNotLoad: 'לא ניתן היה לטעון את מרחב העבודה', + workspacesCouldNotLoad: 'לא ניתן היה לטעון מרחבי עבודה', + }, + fields: { + descriptionLabel: 'תיאור מרחב העבודה', + descriptionPlaceholder: 'מה שייך למרחב העבודה הזה?', + namePlaceholder: 'שם מרחב העבודה', + untitledWorkspace: 'מרחב עבודה ללא שם', + }, + labels: { + createWorkspaceTitle: 'יצירת מרחב עבודה', + loadingWorkspaces: 'מרחבי העבודה נטענים', + workspace: 'מרחב עבודה', + workspaces: 'מרחבי עבודה', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/hr.ts b/ui/src/core/i18n/resources/hr.ts new file mode 100644 index 0000000..debad50 --- /dev/null +++ b/ui/src/core/i18n/resources/hr.ts @@ -0,0 +1,636 @@ +export const hr = { + bootstrap: { + error: { + fallbackMessage: 'Pokušajte ponovno. Ako se ovo nastavi događati, ponovno otvorite Clear.', + title: 'Pokretanje nije uspjelo', + }, + loadingTitle: 'Priprema se vaš prostor za učenje', + }, + common: { + actions: { + back: 'Natrag', + cancel: 'Odustani', + checkAgain: 'Provjeri ponovno', + close: 'Zatvori', + create: 'Stvori', + delete: 'Izbriši', + dismissError: 'Zatvori pogrešku', + dismissStatus: 'Zatvori status', + edit: 'Uredi', + itemActions: 'Radnje za {{title}}', + reset: 'Vrati na početno', + review: 'Ponavljanje', + save: 'Spremi', + saveChanges: 'Spremi promjene', + tryAgain: 'Pokušaj ponovno', + }, + labels: { + active: 'Aktivno', + clear: 'Clear', + custom: 'Prilagođeno', + default: 'Zadano', + loadingEditor: 'Učitavanje uređivača', + name: 'Naziv', + completedTask: 'Dovršen zadatak', + description: 'Opis', + incompleteTask: 'Nedovršen zadatak', + percentageInput: 'Postotak za {{label}}', + visual: 'Vizual', + }, + status: { + actionFailed: 'Radnja nije uspjela', + actionInProgress: 'Radnja je u tijeku', + }, + sort: { + ascending: 'Uzlazno', + column: 'Stupac', + descending: 'Silazno', + direction: 'Smjer', + sort: 'Sortiraj', + }, + search: { + label: 'Pretraživanje', + }, + visualPicker: { + allLucideIcons: 'Sve Lucide ikone', + browseIconsFor: 'Pregledajte ili pretražite ikone za {{label}}.', + chooseIcon: 'Odaberi ikonu', + iconPicker: 'Odabir ikone za {{label}}', + iconSearch: 'Pretraživanje ikona za {{label}}', + iconsCouldNotLoad: 'Ikone se nisu mogle učitati.', + loadingIcons: 'Učitavanje ikona', + loadingMoreIcons: 'Učitavanje dodatnih ikona', + moreIcons: 'Više ikona', + noIconsMatch: 'Nijedna ikona ne odgovara upitu "{{query}}".', + searchIconsPlaceholder: 'Pretraži ikone…', + selectedIcon: 'Odabrano: {{label}}', + }, + }, + dashboard: { + actions: { + create: 'Stvori', + newDeck: 'Novi špil', + newFolder: 'Nova mapa', + }, + descriptions: { + defaultWorkspace: 'Držite špilove, mape i bilješke zajedno.', + emptyWorkspace: 'Stvorite špil, zatim dodajte bilješke za izgradnju reda za ponavljanje.', + emptyFolder: 'Stvorite špil, zatim dodajte bilješke za izgradnju reda za ponavljanje.', + searchPlaceholder: 'Pretražite mape, špilove i bilješke…', + }, + empty: { + createFirstDeck: 'Stvorite svoj prvi špil', + }, + errors: { + couldNotDeleteDeck: 'Špil se nije mogao izbrisati', + couldNotDeleteFolder: 'Mapa se nije mogla izbrisati', + couldNotDeleteWorkspace: 'Radni prostor se nije mogao izbrisati', + dashboardCouldNotOpen: 'Nadzorna ploča se nije mogla otvoriti', + decksCouldNotLoad: 'Špilovi se nisu mogli učitati', + decksMayBeOutOfDate: 'Špilovi možda nisu ažurni', + foldersCouldNotLoad: 'Mape se nisu mogle učitati', + foldersMayBeOutOfDate: 'Mape možda nisu ažurne', + workspaceCouldNotLoad: 'Radni prostor se nije mogao učitati', + }, + labels: { + dashboard: 'Nadzorna ploča', + loadingDashboard: 'Učitavanje nadzorne ploče', + newItem: 'Nova stavka', + }, + }, + dates: { + absolute: { + unavailable: 'Datum nije dostupan', + }, + age: { + dayAgo_one: 'prije {{count}} dan', + dayAgo_few: 'prije {{count}} dana', + dayAgo_other: 'prije {{count}} dana', + hourAgo_one: 'prije {{count}} sat', + hourAgo_few: 'prije {{count}} sata', + hourAgo_other: 'prije {{count}} sati', + justNow: 'upravo sada', + minuteAgo_one: 'prije {{count}} minutu', + minuteAgo_few: 'prije {{count}} minute', + minuteAgo_other: 'prije {{count}} minuta', + unavailable: 'datum nije dostupan', + weekAgo_one: 'prije {{count}} tjedan', + weekAgo_few: 'prije {{count}} tjedna', + weekAgo_other: 'prije {{count}} tjedana', + }, + labels: { + deleted: 'Izbrisano {{value}}', + due: 'Rok: {{value}}', + reviewed: 'Ponovljeno: {{value}}', + updated: 'Ažurirano {{value}}', + updatedUppercase: 'AŽURIRANO {{value}}', + }, + relative: { + dayAgo_one: 'prije {{count}} dan', + dayAgo_few: 'prije {{count}} dana', + dayAgo_other: 'prije {{count}} dana', + inAMoment: 'Za trenutak', + inDay_one: 'Za {{count}} dan', + inDay_few: 'Za {{count}} dana', + inDay_other: 'Za {{count}} dana', + inMonth_one: 'Za {{count}} mjesec', + inMonth_few: 'Za {{count}} mjeseca', + inMonth_other: 'Za {{count}} mjeseci', + inWeek_one: 'Za {{count}} tjedan', + inWeek_few: 'Za {{count}} tjedna', + inWeek_other: 'Za {{count}} tjedana', + justNow: 'Upravo sada', + monthAgo_one: 'prije {{count}} mjesec', + monthAgo_few: 'prije {{count}} mjeseca', + monthAgo_other: 'prije {{count}} mjeseci', + secondsAgoShort: 'prije {{count}} s', + minutesAgoShort: 'prije {{count}} min', + hoursAgoShort: 'prije {{count}} h', + today: 'Danas', + tomorrow: 'Sutra', + weekAgo_one: 'prije {{count}} tjedan', + weekAgo_few: 'prije {{count}} tjedna', + weekAgo_other: 'prije {{count}} tjedana', + yesterday: 'Jučer', + }, + }, + decks: { + actions: { + actionMenu: 'Radnje za {{title}}', + createDeck: 'Stvori špil', + createNote: 'Stvori bilješku', + deleteDeck: 'Izbriši špil', + editDeck: 'Uredi špil', + newNote: 'Nova bilješka', + openDeck: 'Otvori špil {{title}}', + saveDeck: 'Špil se nije mogao spremiti', + studyNow: 'Uči sada', + }, + descriptions: { + emptyDeck: 'Dodajte bilješku kako bi ovaj špil imao materijal za ponavljanje.', + editorDefault: 'Fokusirani špil za učenje.', + editorVisual: 'Odaberite simbol naslovnice za ovaj špil.', + notesSearchPlaceholder: 'Pretraži bilješke…', + }, + dialogs: { + deleteDeckDescription: 'Ovo premješta "{{title}}" u Smeće. Možete ga vratiti kasnije.', + deleteDeckFallbackDescription: 'Ovo premješta ovaj špil u Smeće. Možete ga vratiti kasnije.', + deleteDeckFallbackTitle: 'Izbrisati špil?', + deleteDeckTitle: 'Izbrisati "{{title}}"?', + deleteNoteDescription: 'Ovo premješta "{{title}}" u Smeće. Možete je vratiti kasnije.', + deleteNoteFallbackTitle: 'Izbrisati bilješku?', + deleteNoteTitle: 'Izbrisati "{{title}}"?', + }, + empty: { + noMatchingNotes: 'Nema odgovarajućih bilješki', + noMatchingNotesDescription: 'Nijedna bilješka ne odgovara upitu "{{query}}".', + thisDeckIsEmpty: 'Ovaj špil je prazan', + }, + errors: { + couldNotCreateDeck: 'Špil se nije mogao stvoriti', + couldNotDeleteDeck: 'Špil se nije mogao izbrisati', + couldNotDeleteNote: 'Bilješka se nije mogla izbrisati', + couldNotLoadFolderPath: 'Putanja mape se nije mogla učitati', + couldNotSaveDeck: 'Špil se nije mogao spremiti', + deckCouldNotLoad: 'Špil se nije mogao učitati', + notesCouldNotLoad: 'Bilješke se nisu mogle učitati', + notesMayBeOutOfDate: 'Bilješke možda nisu ažurne', + }, + fields: { + descriptionLabel: 'Opis špila', + descriptionPlaceholder: 'Što će vam ovaj špil pomoći ponavljati?', + namePlaceholder: 'Naziv špila', + untitledDeck: 'Špil bez naslova', + untitledDeckLower: 'špil bez naslova', + }, + labels: { + createDeckTitle: 'Stvori špil', + deck: 'Špil', + deckNotesSearch: 'Pretraživanje bilješki u špilu', + deckOverview: 'Pregled špila', + decks: 'Špilovi', + due: 'Rok', + dueToday: 'Rok danas', + loadingDeck: 'Učitavanje špila', + mastery: 'Ovladanost', + notes: 'Bilješke', + }, + sort: { + ariaLabel: 'Sortiraj špilove', + dueToday: 'Rok danas', + title: 'Naslov', + updated: 'Ažurirano', + }, + }, + errors: { + byType: { + conflict: 'Podaci su se promijenili. Osvježite i pokušajte ponovno.', + forbidden: 'Nemate dopuštenje za ovu radnju.', + notFound: 'Nismo mogli pronaći ovu stavku.', + offline: 'Usluga nije dostupna.', + timeout: 'Ovo je trajalo predugo. Pokušajte ponovno.', + unauthorized: 'Prijavite se za nastavak.', + unavailable: 'Usluga je privremeno nedostupna.', + }, + fallback: { + unexpected: 'Neočekivana pogreška', + }, + }, + folders: { + actions: { + createFolder: 'Stvori mapu', + deleteFolder: 'Izbriši mapu', + editFolder: 'Uredi mapu', + }, + descriptions: { + editorDefault: 'Mapa za povezane špilove.', + }, + dialogs: { + deleteFolderDescription: 'Ovo premješta "{{name}}" u Smeće. Možete je vratiti kasnije.', + deleteFolderFallbackDescription: 'Ovo premješta ovu mapu u Smeće. Možete je vratiti kasnije.', + deleteFolderFallbackTitle: 'Izbrisati mapu?', + deleteFolderTitle: 'Izbrisati "{{name}}"?', + }, + empty: { + noMatchesInFolder: 'Nema rezultata u ovoj mapi', + noMatchesInFolderDescription: 'Nijedna mapa, špil ili bilješka ne odgovara upitu "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'Mapa se nije mogla stvoriti', + couldNotDeleteFolder: 'Mapa se nije mogla izbrisati', + couldNotLoadFolderPath: 'Putanja mape se nije mogla učitati', + couldNotSaveFolder: 'Mapa se nije mogla spremiti', + folderCouldNotLoad: 'Mapa se nije mogla učitati', + }, + fields: { + descriptionLabel: 'Opis mape', + descriptionPlaceholder: 'Što pripada u ovu mapu?', + namePlaceholder: 'Naziv mape', + untitledFolder: 'Mapa bez naslova', + }, + labels: { + createFolderTitle: 'Stvori mapu', + folder: 'Mapa', + folders: 'Mape', + loadingFolder: 'Učitavanje mape', + name: 'Naziv', + updated: 'Ažurirano', + }, + sort: { + ariaLabel: 'Sortiraj mape', + name: 'Naziv', + updated: 'Ažurirano', + }, + }, + menu: { + conflicts: { + description: 'Ako se lokalni i sinkronizirani podaci ikada razlikuju, stavka će se pojaviti ovdje.', + heading: 'Status sinkronizacije', + title: 'Sukobi', + noConflicts: 'Nema pronađenih sukoba', + }, + labels: { + menu: 'Izbornik', + }, + sections: { + settings: { + description: 'Prilagodite svoje okruženje i postavke', + title: 'Postavke', + }, + trash: { + description: 'Vratite ili trajno izbrišite uklonjene stavke', + title: 'Smeće', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Zatvori uređivač', + openActions: 'Otvori radnje', + openWorkspaces: 'Otvori radne prostore', + }, + items: { + home: 'Početna', + menu: 'Izbornik', + primary: 'Primarno', + settings: 'Postavke', + spaces: 'Prostori', + trash: 'Smeće', + workspaces: 'Radni prostori', + }, + }, + notes: { + actions: { + addCloze: 'Dodaj cloze', + deleteNote: 'Izbriši bilješku', + editNote: 'Uredi bilješku', + hideDerivedCardsNote: 'Sakrij bilješku o izvedenim karticama', + openNote: 'Otvori {{title}}', + saveNote: 'Spremi bilješku', + showDerivedCardsNote: 'Prikaži bilješku o izvedenim karticama', + }, + descriptions: { + clozeFormat: 'Svaki skriveni dio postaje kartica za ponavljanje kada spremite.', + clozeFormatPrefix: 'Označite skriveni tekst pomoću', + derivedCardsHelper: 'Bilješke su izvor istine za izvedene kartice.', + }, + dialogs: { + deleteNoteDescription: 'Ovo premješta "{{title}}" u Smeće. Možete je vratiti kasnije.', + deleteNoteFallbackDescription: 'Ovo premješta ovu bilješku u Smeće. Možete je vratiti kasnije.', + deleteNoteFallbackTitle: 'Izbrisati bilješku?', + deleteNoteTitle: 'Izbrisati "{{title}}"?', + }, + errors: { + couldNotCreateNote: 'Bilješka se nije mogla stvoriti', + couldNotDeleteNote: 'Bilješka se nije mogla izbrisati', + couldNotSaveNote: 'Bilješka se nije mogla spremiti', + noteCouldNotLoad: 'Bilješka se nije mogla učitati', + }, + fields: { + back: 'Poleđina', + backPlaceholder: 'Unesite poleđinu', + bodyPlaceholder: 'Napišite sadržaj bilješke s cloze izostavljanjima…', + front: 'Prednja strana', + frontPlaceholder: 'Unesite prednju stranu', + noteBody: 'Sadržaj bilješke', + title: 'Naslov', + titlePlaceholder: 'Dodajte naslov bilješke', + untitledCloze: 'Cloze bez naslova', + untitledNote: 'Bilješka bez naslova', + }, + labels: { + backUppercase: 'POLEĐINA', + basic: 'Osnovna', + basicLower: 'osnovna', + basicUppercase: 'OSNOVNA', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Cloze format', + clozeUppercase: 'CLOZE', + deck: 'Špil', + derivedCards: 'IZVEDENE KARTICE', + due: 'Rok', + frontUppercase: 'PREDNJA STRANA', + inProgress: 'U tijeku', + inProgressUppercase: 'U TIJEKU', + loadingNote: 'Učitavanje bilješke', + loadingNoteEditor: 'Učitavanje uređivača bilješki', + markdownFormatting: 'Markdown oblikovanje', + mastered: 'Ovladano', + masteredUppercase: 'OVLADANO', + newNote: 'Nova bilješka', + noteBody: 'SADRŽAJ BILJEŠKE', + noteContent: 'Sadržaj bilješke', + noteDetails: 'Pojedinosti bilješke', + noteMetadata: 'Metapodaci bilješke', + noteType: 'Vrsta bilješke', + notes: 'Bilješke', + reviewed: 'Ponovljeno', + studyProgress: 'Napredak u učenju', + studyProgressUppercase: 'NAPREDAK U UČENJU', + titleUppercase: 'NASLOV', + updated: 'Ažurirano', + }, + sort: { + ariaLabel: 'Sortiraj bilješke', + title: 'Naslov', + updated: 'Ažurirano', + }, + toolbar: { + bold: 'Podebljano', + italic: 'Kurziv', + link: 'Poveznica', + list: 'Popis', + }, + }, + review: { + actions: { + again: 'Ponovno', + backToDeck: 'Natrag na špil', + continueReview: 'Nastavi ponavljanje', + easy: 'Lako', + good: 'Dobro', + hard: 'Teško', + newNote: 'Nova bilješka', + showAnswer: 'Prikaži odgovor', + }, + errors: { + couldNotGradeCard: 'Kartica se nije mogla ocijeniti', + reviewCouldNotLoad: 'Ponavljanje se nije moglo učitati', + reviewCouldNotStart: 'Ponavljanje se nije moglo pokrenuti', + summaryCouldNotLoad: 'Sažetak ponavljanja se nije mogao učitati', + summaryNotAvailable: 'Sažetak ponavljanja nije dostupan', + summaryNotComplete: 'Ovo ponavljanje još nije dovršeno.', + }, + labels: { + cardsReviewed: 'Ponovljene kartice', + deck: 'Špil', + duration: 'Trajanje', + loadingReview: 'Učitavanje ponavljanja', + loadingSummary: 'Učitavanje sažetka', + progress: 'Napredak ponavljanja', + review: 'Ponavljanje', + reviewComplete: 'Ponavljanje dovršeno', + reviewed_one: 'Ponovljena {{count}}', + reviewed_few: 'Ponovljene {{count}}', + reviewed_other: 'Ponovljeno {{count}}', + }, + summary: { + durationHoursMinutes: '{{hours}} h {{minutes}} min', + durationMinutes: '{{minutes}} min', + durationSeconds: '{{seconds}} s', + saved: 'Vaš napredak spremljen je u ovaj špil.', + }, + unavailable: { + description: 'Dodajte bilješku kako bi ovaj špil mogao ući u red za ponavljanje.', + title: 'Nema kartica za ponavljanje', + }, + }, + search: { + actions: { + clearSearch: 'Očisti pretraživanje', + }, + empty: { + noMatchesInWorkspace: 'Nema rezultata u ovom radnom prostoru', + noMatchesInWorkspaceDescription: 'Nijedna mapa, špil ili bilješka ne odgovara upitu "{{query}}".', + }, + errors: { + couldNotComplete: 'Pretraživanje se nije moglo dovršiti', + }, + labels: { + results: 'Rezultati pretraživanja', + resultsFor: 'Rezultati za "{{query}}"', + searchingContent: 'Pretraživanje sadržaja', + }, + resultGroups: { + deck: 'Špilovi', + folder: 'Mape', + note: 'Bilješke', + }, + resultKinds: { + deck: 'špil', + folder: 'mapa', + note: 'bilješka', + }, + }, + settings: { + actions: { + resetAll: 'Vrati sve postavke na početno', + resetSettings: 'Vrati postavke na početno', + resetToDefaults: 'Vrati zadane vrijednosti', + }, + dialogs: { + fsrsErrorInvalidJson: 'Zalijepite valjani JSON s 21 brojčanom vrijednošću.', + fsrsErrorInvalidParams_one: 'Unesite JSON polje s točno {{count}} konačnim brojem.', + fsrsErrorInvalidParams_few: 'Unesite JSON polje s točno {{count}} konačna broja.', + fsrsErrorInvalidParams_other: 'Unesite JSON polje s točno {{count}} konačnih brojeva.', + fsrsHelper: 'Ovo je stručna zamjena. Vrijednosti moraju ostati redom.', + fsrsJsonLabel: 'JSON FSRS parametara', + fsrsTitle: 'Uredi FSRS parametre', + fsrsDescription: 'Zalijepite JSON polje s 21 brojem za zamjenu težina planera.', + resetDescription: 'Ovo vraća vremensku zonu, ograničenja učenja i FSRS postavke.', + resetDescriptionWithLanguage: 'Ovo vraća jezik, vremensku zonu, ograničenja učenja i FSRS postavke.', + resetTitle: 'Vratiti sve postavke na početno?', + timezoneDescription: 'Pretražite grad ili identifikator vremenske zone.', + timezoneSearchLabel: 'Pretraži vremenske zone', + timezoneSearchPlaceholder: 'Pretraži vremenske zone…', + timezoneTitle: 'Odaberite vremensku zonu', + }, + errors: { + couldNotResetSettings: 'Postavke se nisu mogle vratiti na početno', + couldNotSaveSettings: 'Postavke se nisu mogle spremiti', + settingsCouldNotLoad: 'Postavke se nisu mogle učitati', + settingsUnavailable: 'Postavke nisu dostupne.', + }, + labels: { + appearance: 'Izgled', + automatic: 'Automatski', + fsrsParameters: 'FSRS parametri', + general: 'Općenito', + language: 'Jezik', + loadingSettings: 'Učitavanje postavki', + masteryHorizon: 'Horizont ovladavanja', + newCardOrder: 'Redoslijed novih kartica', + newCardsPerDay: 'Nove kartice po danu', + reviewCardsPerDay: 'Kartice za ponavljanje po danu', + savingSettings: 'Spremanje postavki', + schedule: 'Raspored', + searchNoTimezones: 'Nema odgovarajućih vremenskih zona.', + settings: 'Postavke', + settingsReset: 'Postavke su vraćene na početno', + study: 'Učenje', + targetRecallProbability: 'Ciljana vjerojatnost prisjećanja', + theme: 'Tema', + timezone: 'Vremenska zona', + }, + options: { + languageEnUs: 'Engleski (SAD)', + newCardsAfterReviews: 'Nakon ponavljanja', + newCardsBeforeReviews: 'Prije ponavljanja', + newCardsMixed: 'Miješano', + themeDark: 'Tamna', + themeLight: 'Svijetla', + themeSystem: 'Sustav', + timezoneSystem: 'Koristi vremensku zonu sustava', + }, + rows: { + fsrsDescription: 'Težine stručnog modela', + languageDescription: 'Jezik sučelja', + masteryHorizonDescription: 'Broj dana tijekom kojih kartica mora ostati prisjetljiva na ciljanoj vjerojatnosti ili iznad nje da bi se smatrala ovladanom', + newCardOrderDescription: 'Redoslijed novih kartica u odnosu na ponavljanja', + newCardsPerDayDescription: 'Maksimalan broj novih kartica po danu', + reviewCardsPerDayDescription: 'Maksimalan broj kartica za ponavljanje po danu', + targetRecallProbabilityDescription: 'Minimalna vjerojatnost prisjećanja pri sljedećem zakazanom ponavljanju', + timezoneDescription: 'Koristite automatsku vremensku zonu ili odaberite grad.', + }, + }, + trash: { + actions: { + deletePermanently: 'Izbriši trajno', + empty: 'Isprazni', + emptyTrash: 'Isprazni smeće', + restore: 'Vrati', + restoringItem: 'Vraćanje {{title}}', + }, + dialogs: { + deleteItemDescription: 'Ovo trajno briše "{{title}}". To se ne može poništiti.', + deleteItemFallbackDescription: 'Ovo trajno briše ovu stavku. To se ne može poništiti.', + deleteItemFallbackTitle: 'Izbrisati stavku?', + deleteItemTitle: 'Izbrisati "{{title}}"?', + emptyTrashDescription: 'Ovo trajno briše sve u Smeću. To se ne može poništiti.', + emptyTrashTitle: 'Isprazniti smeće?', + }, + empty: { + description: 'Stavke koje izbrišete pojavit će se ovdje prije trajnog uklanjanja.', + title: 'Smeće je prazno', + }, + errors: { + couldNotDeleteItem: 'Stavka se nije mogla izbrisati', + couldNotEmptyTrash: 'Smeće se nije moglo isprazniti', + couldNotRestoreItem: 'Stavka se nije mogla vratiti', + trashCouldNotLoad: 'Smeće se nije moglo učitati', + trashMayBeOutOfDate: 'Smeće možda nije ažurno', + }, + labels: { + deletedAge: 'Izbrisano {{value}}', + itemCount_one: '{{count}} stavka', + itemCount_few: '{{count}} stavke', + itemCount_other: '{{count}} stavki', + lastEmptied: 'Zadnje ispražnjeno {{value}}', + loadingTrash: 'Učitavanje Smeća', + originalLocation: 'Izvorna lokacija: {{location}}', + title: 'Smeće', + trashActions: 'Radnje u Smeću za {{title}}', + }, + kinds: { + deck: 'Špil', + folder: 'Mapa', + note: 'Bilješka', + workspace: 'Radni prostor', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Stvori radni prostor', + deleteWorkspace: 'Izbriši radni prostor', + editWorkspace: 'Uredi radni prostor', + newWorkspace: 'Novi radni prostor', + openWorkspace: 'Otvori {{title}}', + openingWorkspace: 'Otvaranje {{title}}', + }, + descriptions: { + editorDefault: 'Kontekst učenja.', + editorVisual: 'Odaberite vizualno sidro za ovaj radni prostor.', + emptyList: 'Odvojite špilove, bilješke i redove za ponavljanje prema kontekstu učenja.', + }, + dialogs: { + deleteWorkspaceDescription: 'Ovo premješta "{{title}}" u Smeće. Možete ga vratiti kasnije.', + deleteWorkspaceFallbackDescription: 'Ovo premješta ovaj radni prostor u Smeće. Možete ga vratiti kasnije.', + deleteWorkspaceFallbackTitle: 'Izbrisati radni prostor?', + deleteWorkspaceTitle: 'Izbrisati "{{title}}"?', + }, + empty: { + startWithWorkspace: 'Počnite s radnim prostorom', + }, + errors: { + couldNotCreateWorkspace: 'Radni prostor se nije mogao stvoriti', + couldNotDeleteWorkspace: 'Radni prostor se nije mogao izbrisati', + couldNotOpenWorkspace: 'Radni prostor se nije mogao otvoriti', + couldNotSaveWorkspace: 'Radni prostor se nije mogao spremiti', + workspaceCouldNotLoad: 'Radni prostor se nije mogao učitati', + workspacesCouldNotLoad: 'Radni prostori se nisu mogli učitati', + }, + fields: { + descriptionLabel: 'Opis radnog prostora', + descriptionPlaceholder: 'Što pripada u ovaj radni prostor?', + namePlaceholder: 'Naziv radnog prostora', + untitledWorkspace: 'Radni prostor bez naslova', + }, + labels: { + createWorkspaceTitle: 'Stvori radni prostor', + loadingWorkspaces: 'Učitavanje radnih prostora', + workspace: 'Radni prostor', + workspaces: 'Radni prostori', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/hu.ts b/ui/src/core/i18n/resources/hu.ts new file mode 100644 index 0000000..90aa9c9 --- /dev/null +++ b/ui/src/core/i18n/resources/hu.ts @@ -0,0 +1,623 @@ +export const hu = { + bootstrap: { + error: { + fallbackMessage: 'Próbálja újra. Ha ez továbbra is előfordul, nyissa meg újra a Clear alkalmazást.', + title: 'Nem sikerült elindítani', + }, + loadingTitle: 'A tanulási tér előkészítése', + }, + common: { + actions: { + back: 'Vissza', + cancel: 'Mégse', + checkAgain: 'Ellenőrzés újra', + close: 'Bezárás', + create: 'Létrehozás', + delete: 'Törlés', + dismissError: 'Hiba bezárása', + dismissStatus: 'Állapot bezárása', + edit: 'Szerkesztés', + itemActions: '{{title}} műveletei', + reset: 'Visszaállítás', + review: 'Ismétlés', + save: 'Mentés', + saveChanges: 'Módosítások mentése', + tryAgain: 'Próbálja újra', + }, + labels: { + active: 'Aktív', + clear: 'Clear', + custom: 'Egyéni', + default: 'Alapértelmezett', + loadingEditor: 'Szerkesztő betöltése', + name: 'Név', + completedTask: 'Befejezett feladat', + description: 'Leírás', + incompleteTask: 'Befejezetlen feladat', + percentageInput: '{{label}} százaléka', + visual: 'Vizuális elem', + }, + status: { + actionFailed: 'A művelet sikertelen', + actionInProgress: 'Művelet folyamatban', + }, + sort: { + ascending: 'Növ.', + column: 'Oszlop', + descending: 'Csökk.', + direction: 'Irány', + sort: 'Rendezés', + }, + search: { + label: 'Keresés', + }, + visualPicker: { + allLucideIcons: 'Minden Lucide ikon', + browseIconsFor: 'Böngésszen vagy keressen ikonokat ehhez: {{label}}.', + chooseIcon: 'Ikon kiválasztása', + iconPicker: '{{label}} ikonválasztó', + iconSearch: '{{label}} ikonkeresés', + iconsCouldNotLoad: 'Az ikonokat nem sikerült betölteni.', + loadingIcons: 'Ikonok betöltése', + loadingMoreIcons: 'További ikonok betöltése', + moreIcons: 'További ikonok', + noIconsMatch: 'Nincs ikon ehhez: "{{query}}".', + searchIconsPlaceholder: 'Ikonok keresése…', + selectedIcon: '{{label}} kiválasztva', + }, + }, + dashboard: { + actions: { + create: 'Létrehozás', + newDeck: 'Új pakli', + newFolder: 'Új mappa', + }, + descriptions: { + defaultWorkspace: 'Tartsa együtt a paklikat, mappákat és jegyzeteket.', + emptyWorkspace: 'Hozzon létre egy paklit, majd adjon hozzá jegyzeteket az ismétlési sor felépítéséhez.', + emptyFolder: 'Hozzon létre egy paklit, majd adjon hozzá jegyzeteket az ismétlési sor felépítéséhez.', + searchPlaceholder: 'Mappák, paklik és jegyzetek keresése…', + }, + empty: { + createFirstDeck: 'Hozza létre az első paklit', + }, + errors: { + couldNotDeleteDeck: 'A paklit nem sikerült törölni', + couldNotDeleteFolder: 'A mappát nem sikerült törölni', + couldNotDeleteWorkspace: 'A munkaterületet nem sikerült törölni', + dashboardCouldNotOpen: 'Az irányítópult nem nyitható meg', + decksCouldNotLoad: 'A paklikat nem sikerült betölteni', + decksMayBeOutOfDate: 'A paklik elavultak lehetnek', + foldersCouldNotLoad: 'A mappákat nem sikerült betölteni', + foldersMayBeOutOfDate: 'A mappák elavultak lehetnek', + workspaceCouldNotLoad: 'A munkaterületet nem sikerült betölteni', + }, + labels: { + dashboard: 'Irányítópult', + loadingDashboard: 'Irányítópult betöltése', + newItem: 'Új elem', + }, + }, + dates: { + absolute: { + unavailable: 'A dátum nem érhető el', + }, + age: { + dayAgo_one: '{{count}} nappal ezelőtt', + dayAgo_other: '{{count}} nappal ezelőtt', + hourAgo_one: '{{count}} órája', + hourAgo_other: '{{count}} órája', + justNow: 'éppen most', + minuteAgo_one: '{{count}} perce', + minuteAgo_other: '{{count}} perce', + unavailable: 'a dátum nem érhető el', + weekAgo_one: '{{count}} hete', + weekAgo_other: '{{count}} hete', + }, + labels: { + deleted: 'Törölve {{value}}', + due: 'Esedékes: {{value}}', + reviewed: 'Ismételve: {{value}}', + updated: 'Frissítve {{value}}', + updatedUppercase: 'FRISSÍTVE {{value}}', + }, + relative: { + dayAgo_one: '{{count}} nappal ezelőtt', + dayAgo_other: '{{count}} nappal ezelőtt', + inAMoment: 'Hamarosan', + inDay_one: '{{count}} nap múlva', + inDay_other: '{{count}} nap múlva', + inMonth_one: '{{count}} hónap múlva', + inMonth_other: '{{count}} hónap múlva', + inWeek_one: '{{count}} hét múlva', + inWeek_other: '{{count}} hét múlva', + justNow: 'Éppen most', + monthAgo_one: '{{count}} hónapja', + monthAgo_other: '{{count}} hónapja', + secondsAgoShort: '{{count}} mp', + minutesAgoShort: '{{count}} p', + hoursAgoShort: '{{count}} ó', + today: 'Ma', + tomorrow: 'Holnap', + weekAgo_one: '{{count}} hete', + weekAgo_other: '{{count}} hete', + yesterday: 'Tegnap', + }, + }, + decks: { + actions: { + actionMenu: '{{title}} műveletei', + createDeck: 'Pakli létrehozása', + createNote: 'Jegyzet létrehozása', + deleteDeck: 'Pakli törlése', + editDeck: 'Pakli szerkesztése', + newNote: 'Új jegyzet', + openDeck: '{{title}} pakli megnyitása', + saveDeck: 'A paklit nem sikerült menteni', + studyNow: 'Tanulás most', + }, + descriptions: { + emptyDeck: 'Adjon hozzá jegyzetet, hogy legyen mit ismételni ebben a pakliban.', + editorDefault: 'Fókuszált tanulási pakli.', + editorVisual: 'Válasszon borítójelet ehhez a paklihoz.', + notesSearchPlaceholder: 'Jegyzetek keresése…', + }, + dialogs: { + deleteDeckDescription: 'Ez áthelyezi a következőt a Kukába: "{{title}}". Később visszaállítható.', + deleteDeckFallbackDescription: 'Ez áthelyezi ezt a paklit a Kukába. Később visszaállítható.', + deleteDeckFallbackTitle: 'Törli a paklit?', + deleteDeckTitle: 'Törli ezt: "{{title}}"?', + deleteNoteDescription: 'Ez áthelyezi a következőt a Kukába: "{{title}}". Később visszaállítható.', + deleteNoteFallbackTitle: 'Törli a jegyzetet?', + deleteNoteTitle: 'Törli ezt: "{{title}}"?', + }, + empty: { + noMatchingNotes: 'Nincs megfelelő jegyzet', + noMatchingNotesDescription: 'Nincs jegyzet ehhez: "{{query}}".', + thisDeckIsEmpty: 'Ez a pakli üres', + }, + errors: { + couldNotCreateDeck: 'A paklit nem sikerült létrehozni', + couldNotDeleteDeck: 'A paklit nem sikerült törölni', + couldNotDeleteNote: 'A jegyzetet nem sikerült törölni', + couldNotLoadFolderPath: 'A mappa útvonalát nem sikerült betölteni', + couldNotSaveDeck: 'A paklit nem sikerült menteni', + deckCouldNotLoad: 'A paklit nem sikerült betölteni', + notesCouldNotLoad: 'A jegyzeteket nem sikerült betölteni', + notesMayBeOutOfDate: 'A jegyzetek elavultak lehetnek', + }, + fields: { + descriptionLabel: 'Pakli leírása', + descriptionPlaceholder: 'Mit segít ismételni ez a pakli?', + namePlaceholder: 'Pakli neve', + untitledDeck: 'Névtelen pakli', + untitledDeckLower: 'névtelen pakli', + }, + labels: { + createDeckTitle: 'Pakli létrehozása', + deck: 'Pakli', + deckNotesSearch: 'Paklijegyzetek keresése', + deckOverview: 'Pakli áttekintése', + decks: 'Paklik', + due: 'Esedékes', + dueToday: 'Ma esedékes', + loadingDeck: 'Pakli betöltése', + mastery: 'Elsajátítás', + notes: 'Jegyzetek', + }, + sort: { + ariaLabel: 'Paklik rendezése', + dueToday: 'Ma esedékes', + title: 'Cím', + updated: 'Frissítve', + }, + }, + errors: { + byType: { + conflict: 'Az adatok megváltoztak. Frissítsen, majd próbálja újra.', + forbidden: 'Nincs jogosultsága ehhez.', + notFound: 'Ezt az elemet nem találtuk.', + offline: 'A szolgáltatás nem érhető el.', + timeout: 'Ez túl sokáig tartott. Próbálja újra.', + unauthorized: 'A folytatáshoz jelentkezzen be.', + unavailable: 'A szolgáltatás átmenetileg nem érhető el.', + }, + fallback: { + unexpected: 'Váratlan hiba', + }, + }, + folders: { + actions: { + createFolder: 'Mappa létrehozása', + deleteFolder: 'Mappa törlése', + editFolder: 'Mappa szerkesztése', + }, + descriptions: { + editorDefault: 'Mappa kapcsolódó paklikhoz.', + }, + dialogs: { + deleteFolderDescription: 'Ez áthelyezi a következőt a Kukába: "{{name}}". Később visszaállítható.', + deleteFolderFallbackDescription: 'Ez áthelyezi ezt a mappát a Kukába. Később visszaállítható.', + deleteFolderFallbackTitle: 'Törli a mappát?', + deleteFolderTitle: 'Törli ezt: "{{name}}"?', + }, + empty: { + noMatchesInFolder: 'Nincs találat ebben a mappában', + noMatchesInFolderDescription: 'Nincs mappa, pakli vagy jegyzet ehhez: "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'A mappát nem sikerült létrehozni', + couldNotDeleteFolder: 'A mappát nem sikerült törölni', + couldNotLoadFolderPath: 'A mappa útvonalát nem sikerült betölteni', + couldNotSaveFolder: 'A mappát nem sikerült menteni', + folderCouldNotLoad: 'A mappát nem sikerült betölteni', + }, + fields: { + descriptionLabel: 'Mappa leírása', + descriptionPlaceholder: 'Mi tartozik ebbe a mappába?', + namePlaceholder: 'Mappa neve', + untitledFolder: 'Névtelen mappa', + }, + labels: { + createFolderTitle: 'Mappa létrehozása', + folder: 'Mappa', + folders: 'Mappák', + loadingFolder: 'Mappa betöltése', + name: 'Név', + updated: 'Frissítve', + }, + sort: { + ariaLabel: 'Mappák rendezése', + name: 'Név', + updated: 'Frissítve', + }, + }, + menu: { + conflicts: { + description: 'Ha a helyi és a szinkronizált adatok eltérnek, az elem itt jelenik meg.', + heading: 'Szinkronizálási állapot', + title: 'Ütközések', + noConflicts: 'Nem találhatók ütközések', + }, + labels: { + menu: 'Menü', + }, + sections: { + settings: { + description: 'Személyre szabhatja a környezetét és beállításait', + title: 'Beállítások', + }, + trash: { + description: 'Visszaállíthatja vagy végleg törölheti az eltávolított elemeket', + title: 'Kuka', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Szerkesztő bezárása', + openActions: 'Műveletek megnyitása', + openWorkspaces: 'Munkaterületek megnyitása', + }, + items: { + home: 'Kezdőlap', + menu: 'Menü', + primary: 'Elsődleges', + settings: 'Beállítások', + spaces: 'Terek', + trash: 'Kuka', + workspaces: 'Munkaterületek', + }, + }, + notes: { + actions: { + addCloze: 'Cloze hozzáadása', + deleteNote: 'Jegyzet törlése', + editNote: 'Jegyzet szerkesztése', + hideDerivedCardsNote: 'Származtatott kártyák jegyzetének elrejtése', + openNote: '{{title}} megnyitása', + saveNote: 'Jegyzet mentése', + showDerivedCardsNote: 'Származtatott kártyák jegyzetének megjelenítése', + }, + descriptions: { + clozeFormat: 'Mentéskor minden rejtett rész ismétlőkártyává válik.', + clozeFormatPrefix: 'A rejtett szöveget ezzel vegye körbe:', + derivedCardsHelper: 'A jegyzetek a származtatott kártyák igazságforrásai.', + }, + dialogs: { + deleteNoteDescription: 'Ez áthelyezi a következőt a Kukába: "{{title}}". Később visszaállítható.', + deleteNoteFallbackDescription: 'Ez áthelyezi ezt a jegyzetet a Kukába. Később visszaállítható.', + deleteNoteFallbackTitle: 'Törli a jegyzetet?', + deleteNoteTitle: 'Törli ezt: "{{title}}"?', + }, + errors: { + couldNotCreateNote: 'A jegyzetet nem sikerült létrehozni', + couldNotDeleteNote: 'A jegyzetet nem sikerült törölni', + couldNotSaveNote: 'A jegyzetet nem sikerült menteni', + noteCouldNotLoad: 'A jegyzetet nem sikerült betölteni', + }, + fields: { + back: 'Hátoldal', + backPlaceholder: 'Adja meg a hátoldalt', + bodyPlaceholder: 'Írja meg a jegyzet törzsét cloze törlésekkel…', + front: 'Előlap', + frontPlaceholder: 'Adja meg az előlapot', + noteBody: 'Jegyzet törzse', + title: 'Cím', + titlePlaceholder: 'Adjon címet a jegyzetnek', + untitledCloze: 'Névtelen cloze', + untitledNote: 'Névtelen jegyzet', + }, + labels: { + backUppercase: 'HÁTOLDAL', + basic: 'Alap', + basicLower: 'alap', + basicUppercase: 'ALAP', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Cloze formátum', + clozeUppercase: 'CLOZE', + deck: 'Pakli', + derivedCards: 'SZÁRMAZTATOTT KÁRTYÁK', + due: 'Esedékes', + frontUppercase: 'ELŐLAP', + inProgress: 'Folyamatban', + inProgressUppercase: 'FOLYAMATBAN', + loadingNote: 'Jegyzet betöltése', + loadingNoteEditor: 'Jegyzetszerkesztő betöltése', + markdownFormatting: 'Markdown formázás', + mastered: 'Elsajátítva', + masteredUppercase: 'ELSAJÁTÍTVA', + newNote: 'Új jegyzet', + noteBody: 'JEGYZET TÖRZSE', + noteContent: 'Jegyzet tartalma', + noteDetails: 'Jegyzet részletei', + noteMetadata: 'Jegyzet metaadatai', + noteType: 'Jegyzet típusa', + notes: 'Jegyzetek', + reviewed: 'Ismételve', + studyProgress: 'Tanulási előrehaladás', + studyProgressUppercase: 'TANULÁSI ELŐREHALADÁS', + titleUppercase: 'CÍM', + updated: 'Frissítve', + }, + sort: { + ariaLabel: 'Jegyzetek rendezése', + title: 'Cím', + updated: 'Frissítve', + }, + toolbar: { + bold: 'Félkövér', + italic: 'Dőlt', + link: 'Hivatkozás', + list: 'Lista', + }, + }, + review: { + actions: { + again: 'Újra', + backToDeck: 'Vissza a paklihoz', + continueReview: 'Ismétlés folytatása', + easy: 'Könnyű', + good: 'Jó', + hard: 'Nehéz', + newNote: 'Új jegyzet', + showAnswer: 'Válasz megjelenítése', + }, + errors: { + couldNotGradeCard: 'A kártyát nem sikerült értékelni', + reviewCouldNotLoad: 'Az ismétlést nem sikerült betölteni', + reviewCouldNotStart: 'Az ismétlést nem sikerült elindítani', + summaryCouldNotLoad: 'Az ismétlési összegzést nem sikerült betölteni', + summaryNotAvailable: 'Az ismétlési összegzés nem érhető el', + summaryNotComplete: 'Ez az ismétlés még nem fejeződött be.', + }, + labels: { + cardsReviewed: 'Ismételt kártyák', + deck: 'Pakli', + duration: 'Időtartam', + loadingReview: 'Ismétlés betöltése', + loadingSummary: 'Összegzés betöltése', + progress: 'Ismétlési előrehaladás', + review: 'Ismétlés', + reviewComplete: 'Ismétlés kész', + reviewed_one: 'Ismételve {{count}}', + reviewed_other: 'Ismételve {{count}}', + }, + summary: { + durationHoursMinutes: '{{hours}} ó {{minutes}} p', + durationMinutes: '{{minutes}} p', + durationSeconds: '{{seconds}} mp', + saved: 'Az előrehaladása mentve lett ebbe a pakliba.', + }, + unavailable: { + description: 'Adjon hozzá jegyzetet, hogy ez a pakli bekerülhessen az ismétlési sorba.', + title: 'Nincs ismételhető kártya', + }, + }, + search: { + actions: { + clearSearch: 'Keresés törlése', + }, + empty: { + noMatchesInWorkspace: 'Nincs találat ezen a munkaterületen', + noMatchesInWorkspaceDescription: 'Nincs mappa, pakli vagy jegyzet ehhez: "{{query}}".', + }, + errors: { + couldNotComplete: 'A keresést nem sikerült befejezni', + }, + labels: { + results: 'Keresési eredmények', + resultsFor: 'Találatok erre: "{{query}}"', + searchingContent: 'Tartalom keresése', + }, + resultGroups: { + deck: 'Paklik', + folder: 'Mappák', + note: 'Jegyzetek', + }, + resultKinds: { + deck: 'pakli', + folder: 'mappa', + note: 'jegyzet', + }, + }, + settings: { + actions: { + resetAll: 'Összes beállítás visszaállítása', + resetSettings: 'Beállítások visszaállítása', + resetToDefaults: 'Alapértelmezések visszaállítása', + }, + dialogs: { + fsrsErrorInvalidJson: 'Illesszen be érvényes JSON-t 21 numerikus értékkel.', + fsrsErrorInvalidParams_one: 'Adjon meg egy JSON tömböt pontosan {{count}} véges számmal.', + fsrsErrorInvalidParams_other: 'Adjon meg egy JSON tömböt pontosan {{count}} véges számmal.', + fsrsHelper: 'Ez egy szakértői felülírás. Az értékeknek sorrendben kell maradniuk.', + fsrsJsonLabel: 'FSRS-paraméterek JSON', + fsrsTitle: 'FSRS-paraméterek szerkesztése', + fsrsDescription: 'Illesszen be egy 21 számból álló JSON tömböt a scheduler súlyainak felülírásához.', + resetDescription: 'Ez visszaállítja az időzónát, a tanulási korlátokat és az FSRS-beállításokat.', + resetDescriptionWithLanguage: 'Ez visszaállítja a nyelvet, az időzónát, a tanulási korlátokat és az FSRS-beállításokat.', + resetTitle: 'Visszaállítja az összes beállítást?', + timezoneDescription: 'Keressen várost vagy időzóna-azonosítót.', + timezoneSearchLabel: 'Időzónák keresése', + timezoneSearchPlaceholder: 'Időzónák keresése…', + timezoneTitle: 'Időzóna kiválasztása', + }, + errors: { + couldNotResetSettings: 'A beállításokat nem sikerült visszaállítani', + couldNotSaveSettings: 'A beállításokat nem sikerült menteni', + settingsCouldNotLoad: 'A beállításokat nem sikerült betölteni', + settingsUnavailable: 'A beállítások nem érhetők el.', + }, + labels: { + appearance: 'Megjelenés', + automatic: 'Automatikus', + fsrsParameters: 'FSRS-paraméterek', + general: 'Általános', + language: 'Nyelv', + loadingSettings: 'Beállítások betöltése', + masteryHorizon: 'Elsajátítási horizont', + newCardOrder: 'Új kártyák sorrendje', + newCardsPerDay: 'Új kártyák naponta', + reviewCardsPerDay: 'Ismétlőkártyák naponta', + savingSettings: 'Beállítások mentése', + schedule: 'Ütemezés', + searchNoTimezones: 'Nincs megfelelő időzóna.', + settings: 'Beállítások', + settingsReset: 'Beállítások visszaállítva', + study: 'Tanulás', + targetRecallProbability: 'Cél felidézési valószínűség', + theme: 'Téma', + timezone: 'Időzóna', + }, + options: { + languageEnUs: 'Angol (USA)', + newCardsAfterReviews: 'Ismétlések után', + newCardsBeforeReviews: 'Ismétlések előtt', + newCardsMixed: 'Vegyes', + themeDark: 'Sötét', + themeLight: 'Világos', + themeSystem: 'Rendszer', + timezoneSystem: 'Rendszer időzónájának használata', + }, + rows: { + fsrsDescription: 'Szakértői modell súlyai', + languageDescription: 'Felület nyelve', + masteryHorizonDescription: 'Hány napig kell egy kártyának a célvalószínűségen vagy felette felidézhetőnek maradnia ahhoz, hogy elsajátítottnak számítson', + newCardOrderDescription: 'Az új kártyák sorrendje az ismétlésekhez képest', + newCardsPerDayDescription: 'Új kártyák maximális száma naponta', + reviewCardsPerDayDescription: 'Ismétlőkártyák maximális száma naponta', + targetRecallProbabilityDescription: 'Minimális felidézési valószínűség a következő ütemezett ismétlésnél', + timezoneDescription: 'Használjon automatikus időzónát, vagy válasszon várost.', + }, + }, + trash: { + actions: { + deletePermanently: 'Végleges törlés', + empty: 'Ürítés', + emptyTrash: 'Kuka ürítése', + restore: 'Visszaállítás', + restoringItem: '{{title}} visszaállítása', + }, + dialogs: { + deleteItemDescription: 'Ez végleg törli a következőt: "{{title}}". Nem vonható vissza.', + deleteItemFallbackDescription: 'Ez végleg törli ezt az elemet. Nem vonható vissza.', + deleteItemFallbackTitle: 'Törli az elemet?', + deleteItemTitle: 'Törli ezt: "{{title}}"?', + emptyTrashDescription: 'Ez végleg töröl mindent a Kukából. Nem vonható vissza.', + emptyTrashTitle: 'Kiüríti a Kukát?', + }, + empty: { + description: 'A törölt elemek itt jelennek meg a végleges eltávolítás előtt.', + title: 'A Kuka üres', + }, + errors: { + couldNotDeleteItem: 'Az elemet nem sikerült törölni', + couldNotEmptyTrash: 'A Kukát nem sikerült kiüríteni', + couldNotRestoreItem: 'Az elemet nem sikerült visszaállítani', + trashCouldNotLoad: 'A Kukát nem sikerült betölteni', + trashMayBeOutOfDate: 'A Kuka elavult lehet', + }, + labels: { + deletedAge: 'Törölve {{value}}', + itemCount_one: '{{count}} elem', + itemCount_other: '{{count}} elem', + lastEmptied: 'Utoljára ürítve {{value}}', + loadingTrash: 'Kuka betöltése', + originalLocation: 'Eredeti hely: {{location}}', + title: 'Kuka', + trashActions: '{{title}} kuka műveletei', + }, + kinds: { + deck: 'Pakli', + folder: 'Mappa', + note: 'Jegyzet', + workspace: 'Munkaterület', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Munkaterület létrehozása', + deleteWorkspace: 'Munkaterület törlése', + editWorkspace: 'Munkaterület szerkesztése', + newWorkspace: 'Új munkaterület', + openWorkspace: '{{title}} megnyitása', + openingWorkspace: '{{title}} megnyitása', + }, + descriptions: { + editorDefault: 'Tanulási kontextus.', + editorVisual: 'Válasszon vizuális horgonyt ehhez a munkaterülethez.', + emptyList: 'Válassza szét a paklikat, jegyzeteket és ismétlési sorokat tanulási kontextus szerint.', + }, + dialogs: { + deleteWorkspaceDescription: 'Ez áthelyezi a következőt a Kukába: "{{title}}". Később visszaállítható.', + deleteWorkspaceFallbackDescription: 'Ez áthelyezi ezt a munkaterületet a Kukába. Később visszaállítható.', + deleteWorkspaceFallbackTitle: 'Törli a munkaterületet?', + deleteWorkspaceTitle: 'Törli ezt: "{{title}}"?', + }, + empty: { + startWithWorkspace: 'Kezdjen egy munkaterülettel', + }, + errors: { + couldNotCreateWorkspace: 'A munkaterületet nem sikerült létrehozni', + couldNotDeleteWorkspace: 'A munkaterületet nem sikerült törölni', + couldNotOpenWorkspace: 'A munkaterületet nem sikerült megnyitni', + couldNotSaveWorkspace: 'A munkaterületet nem sikerült menteni', + workspaceCouldNotLoad: 'A munkaterületet nem sikerült betölteni', + workspacesCouldNotLoad: 'A munkaterületeket nem sikerült betölteni', + }, + fields: { + descriptionLabel: 'Munkaterület leírása', + descriptionPlaceholder: 'Mi tartozik ebbe a munkaterületbe?', + namePlaceholder: 'Munkaterület neve', + untitledWorkspace: 'Névtelen munkaterület', + }, + labels: { + createWorkspaceTitle: 'Munkaterület létrehozása', + loadingWorkspaces: 'Munkaterületek betöltése', + workspace: 'Munkaterület', + workspaces: 'Munkaterületek', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/id.ts b/ui/src/core/i18n/resources/id.ts new file mode 100644 index 0000000..3b488b7 --- /dev/null +++ b/ui/src/core/i18n/resources/id.ts @@ -0,0 +1,623 @@ +export const id = { + bootstrap: { + error: { + fallbackMessage: 'Coba lagi. Jika terus terjadi, buka ulang Clear.', + title: 'Tidak dapat memulai', + }, + loadingTitle: 'Menyiapkan ruang belajar Anda', + }, + common: { + actions: { + back: 'Kembali', + cancel: 'Batal', + checkAgain: 'Periksa lagi', + close: 'Tutup', + create: 'Buat', + delete: 'Hapus', + dismissError: 'Tutup error', + dismissStatus: 'Tutup status', + edit: 'Edit', + itemActions: 'Tindakan {{title}}', + reset: 'Reset', + review: 'Ulas', + save: 'Simpan', + saveChanges: 'Simpan perubahan', + tryAgain: 'Coba lagi', + }, + labels: { + active: 'Aktif', + clear: 'Clear', + custom: 'Kustom', + default: 'Default', + loadingEditor: 'Memuat editor', + name: 'Nama', + completedTask: 'Tugas selesai', + description: 'Deskripsi', + incompleteTask: 'Tugas belum selesai', + percentageInput: 'Persentase {{label}}', + visual: 'Visual', + }, + status: { + actionFailed: 'Tindakan gagal', + actionInProgress: 'Tindakan berlangsung', + }, + sort: { + ascending: 'Naik', + column: 'Kolom', + descending: 'Turun', + direction: 'Arah', + sort: 'Urutkan', + }, + search: { + label: 'Cari', + }, + visualPicker: { + allLucideIcons: 'Semua ikon Lucide', + browseIconsFor: 'Jelajahi atau cari ikon untuk {{label}}.', + chooseIcon: 'Pilih ikon', + iconPicker: 'Pemilih ikon {{label}}', + iconSearch: 'Pencarian ikon {{label}}', + iconsCouldNotLoad: 'Ikon tidak dapat dimuat.', + loadingIcons: 'Memuat ikon', + loadingMoreIcons: 'Memuat ikon lainnya', + moreIcons: 'Ikon lainnya', + noIconsMatch: 'Tidak ada ikon yang cocok dengan "{{query}}".', + searchIconsPlaceholder: 'Cari ikon…', + selectedIcon: '{{label}} dipilih', + }, + }, + dashboard: { + actions: { + create: 'Buat', + newDeck: 'Deck baru', + newFolder: 'Folder baru', + }, + descriptions: { + defaultWorkspace: 'Simpan deck, folder, dan catatan bersama.', + emptyWorkspace: 'Buat deck, lalu tambahkan catatan untuk membangun antrean ulasan.', + emptyFolder: 'Buat deck, lalu tambahkan catatan untuk membangun antrean ulasan.', + searchPlaceholder: 'Cari folder, deck, dan catatan…', + }, + empty: { + createFirstDeck: 'Buat deck pertama Anda', + }, + errors: { + couldNotDeleteDeck: 'Deck tidak dapat dihapus', + couldNotDeleteFolder: 'Folder tidak dapat dihapus', + couldNotDeleteWorkspace: 'Workspace tidak dapat dihapus', + dashboardCouldNotOpen: 'Dashboard tidak dapat dibuka', + decksCouldNotLoad: 'Deck tidak dapat dimuat', + decksMayBeOutOfDate: 'Deck mungkin tidak terbaru', + foldersCouldNotLoad: 'Folder tidak dapat dimuat', + foldersMayBeOutOfDate: 'Folder mungkin tidak terbaru', + workspaceCouldNotLoad: 'Workspace tidak dapat dimuat', + }, + labels: { + dashboard: 'Dashboard', + loadingDashboard: 'Memuat dashboard', + newItem: 'Item baru', + }, + }, + dates: { + absolute: { + unavailable: 'Tanggal tidak tersedia', + }, + age: { + dayAgo_one: '{{count}} hari lalu', + dayAgo_other: '{{count}} hari lalu', + hourAgo_one: '{{count}} jam lalu', + hourAgo_other: '{{count}} jam lalu', + justNow: 'baru saja', + minuteAgo_one: '{{count}} menit lalu', + minuteAgo_other: '{{count}} menit lalu', + unavailable: 'tanggal tidak tersedia', + weekAgo_one: '{{count}} minggu lalu', + weekAgo_other: '{{count}} minggu lalu', + }, + labels: { + deleted: 'Dihapus {{value}}', + due: 'Jatuh tempo: {{value}}', + reviewed: 'Diulas: {{value}}', + updated: 'Diperbarui {{value}}', + updatedUppercase: 'DIPERBARUI {{value}}', + }, + relative: { + dayAgo_one: '{{count}} hari lalu', + dayAgo_other: '{{count}} hari lalu', + inAMoment: 'Sebentar lagi', + inDay_one: 'Dalam {{count}} hari', + inDay_other: 'Dalam {{count}} hari', + inMonth_one: 'Dalam {{count}} bulan', + inMonth_other: 'Dalam {{count}} bulan', + inWeek_one: 'Dalam {{count}} minggu', + inWeek_other: 'Dalam {{count}} minggu', + justNow: 'Baru saja', + monthAgo_one: '{{count}} bulan lalu', + monthAgo_other: '{{count}} bulan lalu', + secondsAgoShort: '{{count}} dtk lalu', + minutesAgoShort: '{{count}} mnt lalu', + hoursAgoShort: '{{count}} jam lalu', + today: 'Hari ini', + tomorrow: 'Besok', + weekAgo_one: '{{count}} minggu lalu', + weekAgo_other: '{{count}} minggu lalu', + yesterday: 'Kemarin', + }, + }, + decks: { + actions: { + actionMenu: 'Tindakan {{title}}', + createDeck: 'Buat deck', + createNote: 'Buat catatan', + deleteDeck: 'Hapus deck', + editDeck: 'Edit deck', + newNote: 'Catatan baru', + openDeck: 'Buka deck {{title}}', + saveDeck: 'Deck tidak dapat disimpan', + studyNow: 'Belajar sekarang', + }, + descriptions: { + emptyDeck: 'Tambahkan catatan agar deck ini memiliki materi untuk diulas.', + editorDefault: 'Deck belajar terfokus.', + editorVisual: 'Pilih glif sampul untuk deck ini.', + notesSearchPlaceholder: 'Cari catatan…', + }, + dialogs: { + deleteDeckDescription: 'Ini memindahkan "{{title}}" ke Sampah. Anda dapat memulihkannya nanti.', + deleteDeckFallbackDescription: 'Ini memindahkan deck ini ke Sampah. Anda dapat memulihkannya nanti.', + deleteDeckFallbackTitle: 'Hapus deck?', + deleteDeckTitle: 'Hapus "{{title}}"?', + deleteNoteDescription: 'Ini memindahkan "{{title}}" ke Sampah. Anda dapat memulihkannya nanti.', + deleteNoteFallbackTitle: 'Hapus catatan?', + deleteNoteTitle: 'Hapus "{{title}}"?', + }, + empty: { + noMatchingNotes: 'Tidak ada catatan yang cocok', + noMatchingNotesDescription: 'Tidak ada catatan yang cocok dengan "{{query}}".', + thisDeckIsEmpty: 'Deck ini kosong', + }, + errors: { + couldNotCreateDeck: 'Deck tidak dapat dibuat', + couldNotDeleteDeck: 'Deck tidak dapat dihapus', + couldNotDeleteNote: 'Catatan tidak dapat dihapus', + couldNotLoadFolderPath: 'Jalur folder tidak dapat dimuat', + couldNotSaveDeck: 'Deck tidak dapat disimpan', + deckCouldNotLoad: 'Deck tidak dapat dimuat', + notesCouldNotLoad: 'Catatan tidak dapat dimuat', + notesMayBeOutOfDate: 'Catatan mungkin tidak terbaru', + }, + fields: { + descriptionLabel: 'Deskripsi deck', + descriptionPlaceholder: 'Apa yang akan dibantu deck ini untuk Anda ulas?', + namePlaceholder: 'Nama deck', + untitledDeck: 'Deck tanpa judul', + untitledDeckLower: 'deck tanpa judul', + }, + labels: { + createDeckTitle: 'Buat deck', + deck: 'Deck', + deckNotesSearch: 'Pencarian catatan deck', + deckOverview: 'Ringkasan deck', + decks: 'Deck', + due: 'Jatuh tempo', + dueToday: 'Jatuh tempo hari ini', + loadingDeck: 'Memuat deck', + mastery: 'Penguasaan', + notes: 'Catatan', + }, + sort: { + ariaLabel: 'Urutkan deck', + dueToday: 'Jatuh tempo hari ini', + title: 'Judul', + updated: 'Diperbarui', + }, + }, + errors: { + byType: { + conflict: 'Data telah berubah. Segarkan dan coba lagi.', + forbidden: 'Anda tidak memiliki izin untuk melakukan ini.', + notFound: 'Kami tidak dapat menemukan item ini.', + offline: 'Tidak dapat menjangkau layanan.', + timeout: 'Ini terlalu lama. Coba lagi.', + unauthorized: 'Masuk untuk melanjutkan.', + unavailable: 'Layanan sementara tidak tersedia.', + }, + fallback: { + unexpected: 'Error tidak terduga', + }, + }, + folders: { + actions: { + createFolder: 'Buat folder', + deleteFolder: 'Hapus folder', + editFolder: 'Edit folder', + }, + descriptions: { + editorDefault: 'Folder untuk deck terkait.', + }, + dialogs: { + deleteFolderDescription: 'Ini memindahkan "{{name}}" ke Sampah. Anda dapat memulihkannya nanti.', + deleteFolderFallbackDescription: 'Ini memindahkan folder ini ke Sampah. Anda dapat memulihkannya nanti.', + deleteFolderFallbackTitle: 'Hapus folder?', + deleteFolderTitle: 'Hapus "{{name}}"?', + }, + empty: { + noMatchesInFolder: 'Tidak ada kecocokan di folder ini', + noMatchesInFolderDescription: 'Tidak ada folder, deck, atau catatan yang cocok dengan "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'Folder tidak dapat dibuat', + couldNotDeleteFolder: 'Folder tidak dapat dihapus', + couldNotLoadFolderPath: 'Jalur folder tidak dapat dimuat', + couldNotSaveFolder: 'Folder tidak dapat disimpan', + folderCouldNotLoad: 'Folder tidak dapat dimuat', + }, + fields: { + descriptionLabel: 'Deskripsi folder', + descriptionPlaceholder: 'Apa yang termasuk dalam folder ini?', + namePlaceholder: 'Nama folder', + untitledFolder: 'Folder tanpa judul', + }, + labels: { + createFolderTitle: 'Buat folder', + folder: 'Folder', + folders: 'Folder', + loadingFolder: 'Memuat folder', + name: 'Nama', + updated: 'Diperbarui', + }, + sort: { + ariaLabel: 'Urutkan folder', + name: 'Nama', + updated: 'Diperbarui', + }, + }, + menu: { + conflicts: { + description: 'Jika data lokal dan data tersinkron berbeda, item akan muncul di sini.', + heading: 'Status sinkronisasi', + title: 'Konflik', + noConflicts: 'Tidak ada konflik ditemukan', + }, + labels: { + menu: 'Menu', + }, + sections: { + settings: { + description: 'Personalisasi lingkungan dan preferensi Anda', + title: 'Pengaturan', + }, + trash: { + description: 'Pulihkan atau hapus permanen item yang dihapus', + title: 'Sampah', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Tutup editor', + openActions: 'Buka tindakan', + openWorkspaces: 'Buka workspace', + }, + items: { + home: 'Beranda', + menu: 'Menu', + primary: 'Utama', + settings: 'Pengaturan', + spaces: 'Ruang', + trash: 'Sampah', + workspaces: 'Workspace', + }, + }, + notes: { + actions: { + addCloze: 'Tambah cloze', + deleteNote: 'Hapus catatan', + editNote: 'Edit catatan', + hideDerivedCardsNote: 'Sembunyikan catatan kartu turunan', + openNote: 'Buka {{title}}', + saveNote: 'Simpan catatan', + showDerivedCardsNote: 'Tampilkan catatan kartu turunan', + }, + descriptions: { + clozeFormat: 'Setiap bagian tersembunyi menjadi kartu ulasan saat Anda menyimpan.', + clozeFormatPrefix: 'Bungkus teks tersembunyi dengan', + derivedCardsHelper: 'Catatan adalah sumber kebenaran untuk kartu turunan.', + }, + dialogs: { + deleteNoteDescription: 'Ini memindahkan "{{title}}" ke Sampah. Anda dapat memulihkannya nanti.', + deleteNoteFallbackDescription: 'Ini memindahkan catatan ini ke Sampah. Anda dapat memulihkannya nanti.', + deleteNoteFallbackTitle: 'Hapus catatan?', + deleteNoteTitle: 'Hapus "{{title}}"?', + }, + errors: { + couldNotCreateNote: 'Catatan tidak dapat dibuat', + couldNotDeleteNote: 'Catatan tidak dapat dihapus', + couldNotSaveNote: 'Catatan tidak dapat disimpan', + noteCouldNotLoad: 'Catatan tidak dapat dimuat', + }, + fields: { + back: 'Belakang', + backPlaceholder: 'Masukkan sisi belakang', + bodyPlaceholder: 'Tulis isi catatan dengan cloze deletions…', + front: 'Depan', + frontPlaceholder: 'Masukkan sisi depan', + noteBody: 'Isi catatan', + title: 'Judul', + titlePlaceholder: 'Tambahkan judul catatan', + untitledCloze: 'Cloze tanpa judul', + untitledNote: 'Catatan tanpa judul', + }, + labels: { + backUppercase: 'BELAKANG', + basic: 'Dasar', + basicLower: 'dasar', + basicUppercase: 'DASAR', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Format cloze', + clozeUppercase: 'CLOZE', + deck: 'Deck', + derivedCards: 'KARTU TURUNAN', + due: 'Jatuh tempo', + frontUppercase: 'DEPAN', + inProgress: 'Berlangsung', + inProgressUppercase: 'BERLANGSUNG', + loadingNote: 'Memuat catatan', + loadingNoteEditor: 'Memuat editor catatan', + markdownFormatting: 'Pemformatan Markdown', + mastered: 'Dikuasai', + masteredUppercase: 'DIKUASAI', + newNote: 'Catatan baru', + noteBody: 'ISI CATATAN', + noteContent: 'Konten catatan', + noteDetails: 'Detail catatan', + noteMetadata: 'Metadata catatan', + noteType: 'Jenis catatan', + notes: 'Catatan', + reviewed: 'Diulas', + studyProgress: 'Progres belajar', + studyProgressUppercase: 'PROGRES BELAJAR', + titleUppercase: 'JUDUL', + updated: 'Diperbarui', + }, + sort: { + ariaLabel: 'Urutkan catatan', + title: 'Judul', + updated: 'Diperbarui', + }, + toolbar: { + bold: 'Tebal', + italic: 'Miring', + link: 'Tautan', + list: 'Daftar', + }, + }, + review: { + actions: { + again: 'Lagi', + backToDeck: 'Kembali ke deck', + continueReview: 'Lanjutkan ulasan', + easy: 'Mudah', + good: 'Baik', + hard: 'Sulit', + newNote: 'Catatan baru', + showAnswer: 'Tampilkan jawaban', + }, + errors: { + couldNotGradeCard: 'Kartu tidak dapat dinilai', + reviewCouldNotLoad: 'Ulasan tidak dapat dimuat', + reviewCouldNotStart: 'Ulasan tidak dapat dimulai', + summaryCouldNotLoad: 'Ringkasan ulasan tidak dapat dimuat', + summaryNotAvailable: 'Ringkasan ulasan tidak tersedia', + summaryNotComplete: 'Ulasan ini belum selesai.', + }, + labels: { + cardsReviewed: 'Kartu diulas', + deck: 'Deck', + duration: 'Durasi', + loadingReview: 'Memuat ulasan', + loadingSummary: 'Memuat ringkasan', + progress: 'Progres ulasan', + review: 'Ulasan', + reviewComplete: 'Ulasan selesai', + reviewed_one: '{{count}} diulas', + reviewed_other: '{{count}} diulas', + }, + summary: { + durationHoursMinutes: '{{hours}} j {{minutes}} mnt', + durationMinutes: '{{minutes}} mnt', + durationSeconds: '{{seconds}} dtk', + saved: 'Progres Anda disimpan ke deck ini.', + }, + unavailable: { + description: 'Tambahkan catatan agar deck ini dapat masuk antrean ulasan.', + title: 'Tidak ada kartu untuk diulas', + }, + }, + search: { + actions: { + clearSearch: 'Bersihkan pencarian', + }, + empty: { + noMatchesInWorkspace: 'Tidak ada kecocokan di workspace ini', + noMatchesInWorkspaceDescription: 'Tidak ada folder, deck, atau catatan yang cocok dengan "{{query}}".', + }, + errors: { + couldNotComplete: 'Pencarian tidak dapat diselesaikan', + }, + labels: { + results: 'Hasil pencarian', + resultsFor: 'Hasil untuk "{{query}}"', + searchingContent: 'Mencari konten', + }, + resultGroups: { + deck: 'Deck', + folder: 'Folder', + note: 'Catatan', + }, + resultKinds: { + deck: 'deck', + folder: 'folder', + note: 'catatan', + }, + }, + settings: { + actions: { + resetAll: 'Reset semua pengaturan', + resetSettings: 'Reset pengaturan', + resetToDefaults: 'Kembalikan default', + }, + dialogs: { + fsrsErrorInvalidJson: 'Tempel JSON valid dengan 21 nilai numerik.', + fsrsErrorInvalidParams_one: 'Masukkan array JSON dengan tepat {{count}} angka finite.', + fsrsErrorInvalidParams_other: 'Masukkan array JSON dengan tepat {{count}} angka finite.', + fsrsHelper: 'Ini adalah override ahli. Nilai harus tetap berurutan.', + fsrsJsonLabel: 'JSON parameter FSRS', + fsrsTitle: 'Edit parameter FSRS', + fsrsDescription: 'Tempel array JSON dengan 21 angka untuk override bobot scheduler.', + resetDescription: 'Ini memulihkan zona waktu, batas belajar, dan pengaturan FSRS.', + resetDescriptionWithLanguage: 'Ini memulihkan bahasa, zona waktu, batas belajar, dan pengaturan FSRS.', + resetTitle: 'Reset semua pengaturan?', + timezoneDescription: 'Cari kota atau identifier zona waktu.', + timezoneSearchLabel: 'Cari zona waktu', + timezoneSearchPlaceholder: 'Cari zona waktu…', + timezoneTitle: 'Pilih zona waktu', + }, + errors: { + couldNotResetSettings: 'Pengaturan tidak dapat direset', + couldNotSaveSettings: 'Pengaturan tidak dapat disimpan', + settingsCouldNotLoad: 'Pengaturan tidak dapat dimuat', + settingsUnavailable: 'Pengaturan tidak tersedia.', + }, + labels: { + appearance: 'Tampilan', + automatic: 'Otomatis', + fsrsParameters: 'Parameter FSRS', + general: 'Umum', + language: 'Bahasa', + loadingSettings: 'Memuat pengaturan', + masteryHorizon: 'Horizon penguasaan', + newCardOrder: 'Urutan kartu baru', + newCardsPerDay: 'Kartu baru per hari', + reviewCardsPerDay: 'Kartu ulasan per hari', + savingSettings: 'Menyimpan pengaturan', + schedule: 'Jadwal', + searchNoTimezones: 'Tidak ada zona waktu yang cocok.', + settings: 'Pengaturan', + settingsReset: 'Pengaturan direset', + study: 'Belajar', + targetRecallProbability: 'Probabilitas ingat target', + theme: 'Tema', + timezone: 'Zona waktu', + }, + options: { + languageEnUs: 'Inggris (AS)', + newCardsAfterReviews: 'Setelah ulasan', + newCardsBeforeReviews: 'Sebelum ulasan', + newCardsMixed: 'Campur', + themeDark: 'Gelap', + themeLight: 'Terang', + themeSystem: 'Sistem', + timezoneSystem: 'Gunakan zona waktu sistem', + }, + rows: { + fsrsDescription: 'Bobot model ahli', + languageDescription: 'Bahasa antarmuka', + masteryHorizonDescription: 'Jumlah hari kartu harus tetap dapat diingat pada atau di atas probabilitas target agar dihitung dikuasai', + newCardOrderDescription: 'Urutan kartu baru relatif terhadap ulasan', + newCardsPerDayDescription: 'Maksimum kartu baru per hari', + reviewCardsPerDayDescription: 'Maksimum kartu ulasan per hari', + targetRecallProbabilityDescription: 'Probabilitas minimum untuk mengingat pada ulasan terjadwal berikutnya', + timezoneDescription: 'Gunakan zona waktu otomatis atau pilih kota.', + }, + }, + trash: { + actions: { + deletePermanently: 'Hapus permanen', + empty: 'Kosongkan', + emptyTrash: 'Kosongkan sampah', + restore: 'Pulihkan', + restoringItem: 'Memulihkan {{title}}', + }, + dialogs: { + deleteItemDescription: 'Ini menghapus "{{title}}" secara permanen. Tindakan ini tidak dapat dibatalkan.', + deleteItemFallbackDescription: 'Ini menghapus item ini secara permanen. Tindakan ini tidak dapat dibatalkan.', + deleteItemFallbackTitle: 'Hapus item?', + deleteItemTitle: 'Hapus "{{title}}"?', + emptyTrashDescription: 'Ini menghapus semua isi Sampah secara permanen. Tindakan ini tidak dapat dibatalkan.', + emptyTrashTitle: 'Kosongkan sampah?', + }, + empty: { + description: 'Item yang Anda hapus akan muncul di sini sebelum dihapus permanen.', + title: 'Sampah kosong', + }, + errors: { + couldNotDeleteItem: 'Item tidak dapat dihapus', + couldNotEmptyTrash: 'Sampah tidak dapat dikosongkan', + couldNotRestoreItem: 'Item tidak dapat dipulihkan', + trashCouldNotLoad: 'Sampah tidak dapat dimuat', + trashMayBeOutOfDate: 'Sampah mungkin tidak terbaru', + }, + labels: { + deletedAge: 'Dihapus {{value}}', + itemCount_one: '{{count}} item', + itemCount_other: '{{count}} item', + lastEmptied: 'Terakhir dikosongkan {{value}}', + loadingTrash: 'Memuat Sampah', + originalLocation: 'Lokasi asal: {{location}}', + title: 'Sampah', + trashActions: 'Tindakan sampah {{title}}', + }, + kinds: { + deck: 'Deck', + folder: 'Folder', + note: 'Catatan', + workspace: 'Workspace', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Buat workspace', + deleteWorkspace: 'Hapus workspace', + editWorkspace: 'Edit workspace', + newWorkspace: 'Workspace baru', + openWorkspace: 'Buka {{title}}', + openingWorkspace: 'Membuka {{title}}', + }, + descriptions: { + editorDefault: 'Konteks belajar.', + editorVisual: 'Pilih jangkar visual untuk workspace ini.', + emptyList: 'Pisahkan deck, catatan, dan antrean ulasan berdasarkan konteks belajar.', + }, + dialogs: { + deleteWorkspaceDescription: 'Ini memindahkan "{{title}}" ke Sampah. Anda dapat memulihkannya nanti.', + deleteWorkspaceFallbackDescription: 'Ini memindahkan workspace ini ke Sampah. Anda dapat memulihkannya nanti.', + deleteWorkspaceFallbackTitle: 'Hapus workspace?', + deleteWorkspaceTitle: 'Hapus "{{title}}"?', + }, + empty: { + startWithWorkspace: 'Mulai dengan workspace', + }, + errors: { + couldNotCreateWorkspace: 'Workspace tidak dapat dibuat', + couldNotDeleteWorkspace: 'Workspace tidak dapat dihapus', + couldNotOpenWorkspace: 'Workspace tidak dapat dibuka', + couldNotSaveWorkspace: 'Workspace tidak dapat disimpan', + workspaceCouldNotLoad: 'Workspace tidak dapat dimuat', + workspacesCouldNotLoad: 'Workspace tidak dapat dimuat', + }, + fields: { + descriptionLabel: 'Deskripsi workspace', + descriptionPlaceholder: 'Apa yang termasuk dalam workspace ini?', + namePlaceholder: 'Nama workspace', + untitledWorkspace: 'Workspace tanpa judul', + }, + labels: { + createWorkspaceTitle: 'Buat workspace', + loadingWorkspaces: 'Memuat workspace', + workspace: 'Workspace', + workspaces: 'Workspace', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/index.ts b/ui/src/core/i18n/resources/index.ts index d9b74bb..621cb23 100644 --- a/ui/src/core/i18n/resources/index.ts +++ b/ui/src/core/i18n/resources/index.ts @@ -1,12 +1,164 @@ import { defaultLocale } from '../locales' +import { ar } from './ar' +import { bg } from './bg' +import { bs } from './bs' +import { ca } from './ca' +import { cs } from './cs' +import { da } from './da' +import { de } from './de' +import { el } from './el' import { enUS } from './en-US' +import { es } from './es' +import { et } from './et' +import { fa } from './fa' +import { fi } from './fi' +import { fr } from './fr' +import { he } from './he' +import { hr } from './hr' +import { hu } from './hu' +import { id } from './id' +import { it } from './it' +import { ja } from './ja' +import { ko } from './ko' +import { lt } from './lt' +import { lv } from './lv' +import { nb } from './nb' +import { nl } from './nl' +import { pl } from './pl' +import { ptBR } from './pt-BR' +import { ro } from './ro' +import { ru } from './ru' +import { sk } from './sk' +import { sl } from './sl' +import { srLatn } from './sr-Latn' +import { sv } from './sv' +import { th } from './th' +import { tr } from './tr' +import { uk } from './uk' +import { vi } from './vi' +import { zhHans } from './zh-Hans' +import { zhHant } from './zh-Hant' export const defaultNamespace = 'translation' export const resources = { + ar: { + [defaultNamespace]: ar, + }, + bg: { + [defaultNamespace]: bg, + }, + bs: { + [defaultNamespace]: bs, + }, + ca: { + [defaultNamespace]: ca, + }, + cs: { + [defaultNamespace]: cs, + }, + da: { + [defaultNamespace]: da, + }, + de: { + [defaultNamespace]: de, + }, + el: { + [defaultNamespace]: el, + }, [defaultLocale]: { [defaultNamespace]: enUS, }, + es: { + [defaultNamespace]: es, + }, + et: { + [defaultNamespace]: et, + }, + fa: { + [defaultNamespace]: fa, + }, + fi: { + [defaultNamespace]: fi, + }, + fr: { + [defaultNamespace]: fr, + }, + he: { + [defaultNamespace]: he, + }, + hr: { + [defaultNamespace]: hr, + }, + hu: { + [defaultNamespace]: hu, + }, + id: { + [defaultNamespace]: id, + }, + it: { + [defaultNamespace]: it, + }, + ja: { + [defaultNamespace]: ja, + }, + ko: { + [defaultNamespace]: ko, + }, + lt: { + [defaultNamespace]: lt, + }, + lv: { + [defaultNamespace]: lv, + }, + nb: { + [defaultNamespace]: nb, + }, + nl: { + [defaultNamespace]: nl, + }, + pl: { + [defaultNamespace]: pl, + }, + 'pt-BR': { + [defaultNamespace]: ptBR, + }, + ro: { + [defaultNamespace]: ro, + }, + ru: { + [defaultNamespace]: ru, + }, + sk: { + [defaultNamespace]: sk, + }, + sl: { + [defaultNamespace]: sl, + }, + 'sr-Latn': { + [defaultNamespace]: srLatn, + }, + sv: { + [defaultNamespace]: sv, + }, + th: { + [defaultNamespace]: th, + }, + tr: { + [defaultNamespace]: tr, + }, + uk: { + [defaultNamespace]: uk, + }, + vi: { + [defaultNamespace]: vi, + }, + 'zh-Hans': { + [defaultNamespace]: zhHans, + }, + 'zh-Hant': { + [defaultNamespace]: zhHant, + }, } as const export type TranslationResources = (typeof resources)[typeof defaultLocale] diff --git a/ui/src/core/i18n/resources/it.ts b/ui/src/core/i18n/resources/it.ts new file mode 100644 index 0000000..cbec46c --- /dev/null +++ b/ui/src/core/i18n/resources/it.ts @@ -0,0 +1,636 @@ +export const it = { + bootstrap: { + error: { + fallbackMessage: 'Riprova. Se continua a succedere, riapri Clear.', + title: 'Impossibile avviare', + }, + loadingTitle: 'Preparazione del tuo spazio di studio', + }, + common: { + actions: { + back: 'Indietro', + cancel: 'Annulla', + checkAgain: 'Controlla di nuovo', + close: 'Chiudi', + create: 'Crea', + delete: 'Elimina', + dismissError: 'Ignora errore', + dismissStatus: 'Ignora stato', + edit: 'Modifica', + itemActions: 'Azioni per {{title}}', + reset: 'Reimposta', + review: 'Ripassa', + save: 'Salva', + saveChanges: 'Salva modifiche', + tryAgain: 'Riprova', + }, + labels: { + active: 'Attivo', + clear: 'Clear', + custom: 'Personalizzato', + default: 'Predefinito', + loadingEditor: 'Caricamento editor', + name: 'Nome', + completedTask: 'Attività completata', + description: 'Descrizione', + incompleteTask: 'Attività incompleta', + percentageInput: 'Percentuale di {{label}}', + visual: 'Visuale', + }, + status: { + actionFailed: 'Azione non riuscita', + actionInProgress: 'Azione in corso', + }, + sort: { + ascending: 'Cresc.', + column: 'Colonna', + descending: 'Decresc.', + direction: 'Direzione', + sort: 'Ordina', + }, + search: { + label: 'Cerca', + }, + visualPicker: { + allLucideIcons: 'Tutte le icone Lucide', + browseIconsFor: 'Sfoglia o cerca icone per {{label}}.', + chooseIcon: 'Scegli icona', + iconPicker: 'Selettore icone per {{label}}', + iconSearch: 'Ricerca icone per {{label}}', + iconsCouldNotLoad: 'Impossibile caricare le icone.', + loadingIcons: 'Caricamento icone', + loadingMoreIcons: 'Caricamento di altre icone', + moreIcons: 'Altre icone', + noIconsMatch: 'Nessuna icona corrisponde a "{{query}}".', + searchIconsPlaceholder: 'Cerca icone…', + selectedIcon: '{{label}} selezionato', + }, + }, + dashboard: { + actions: { + create: 'Crea', + newDeck: 'Nuovo mazzo', + newFolder: 'Nuova cartella', + }, + descriptions: { + defaultWorkspace: 'Tieni insieme mazzi, cartelle e note.', + emptyWorkspace: 'Crea un mazzo, poi aggiungi note per costruire la coda di ripasso.', + emptyFolder: 'Crea un mazzo, poi aggiungi note per costruire una coda di ripasso.', + searchPlaceholder: 'Cerca cartelle, mazzi e note…', + }, + empty: { + createFirstDeck: 'Crea il tuo primo mazzo', + }, + errors: { + couldNotDeleteDeck: 'Impossibile eliminare il mazzo', + couldNotDeleteFolder: 'Impossibile eliminare la cartella', + couldNotDeleteWorkspace: 'Impossibile eliminare lo spazio di lavoro', + dashboardCouldNotOpen: 'Impossibile aprire la dashboard', + decksCouldNotLoad: 'Impossibile caricare i mazzi', + decksMayBeOutOfDate: 'I mazzi potrebbero non essere aggiornati', + foldersCouldNotLoad: 'Impossibile caricare le cartelle', + foldersMayBeOutOfDate: 'Le cartelle potrebbero non essere aggiornate', + workspaceCouldNotLoad: 'Impossibile caricare lo spazio di lavoro', + }, + labels: { + dashboard: 'Dashboard', + loadingDashboard: 'Caricamento dashboard', + newItem: 'Nuovo elemento', + }, + }, + dates: { + absolute: { + unavailable: 'Data non disponibile', + }, + age: { + dayAgo_one: '{{count}} giorno fa', + dayAgo_many: '{{count}} giorni fa', + dayAgo_other: '{{count}} giorni fa', + hourAgo_one: '{{count}} ora fa', + hourAgo_many: '{{count}} ore fa', + hourAgo_other: '{{count}} ore fa', + justNow: 'adesso', + minuteAgo_one: '{{count}} minuto fa', + minuteAgo_many: '{{count}} minuti fa', + minuteAgo_other: '{{count}} minuti fa', + unavailable: 'data non disponibile', + weekAgo_one: '{{count}} settimana fa', + weekAgo_many: '{{count}} settimane fa', + weekAgo_other: '{{count}} settimane fa', + }, + labels: { + deleted: 'Eliminato {{value}}', + due: 'In scadenza: {{value}}', + reviewed: 'Ripassato: {{value}}', + updated: 'Aggiornato {{value}}', + updatedUppercase: 'AGGIORNATO {{value}}', + }, + relative: { + dayAgo_one: '{{count}} giorno fa', + dayAgo_many: '{{count}} giorni fa', + dayAgo_other: '{{count}} giorni fa', + inAMoment: 'Tra un momento', + inDay_one: 'Tra {{count}} giorno', + inDay_many: 'Tra {{count}} giorni', + inDay_other: 'Tra {{count}} giorni', + inMonth_one: 'Tra {{count}} mese', + inMonth_many: 'Tra {{count}} mesi', + inMonth_other: 'Tra {{count}} mesi', + inWeek_one: 'Tra {{count}} settimana', + inWeek_many: 'Tra {{count}} settimane', + inWeek_other: 'Tra {{count}} settimane', + justNow: 'Adesso', + monthAgo_one: '{{count}} mese fa', + monthAgo_many: '{{count}} mesi fa', + monthAgo_other: '{{count}} mesi fa', + secondsAgoShort: '{{count}} s fa', + minutesAgoShort: '{{count}} min fa', + hoursAgoShort: '{{count}} h fa', + today: 'Oggi', + tomorrow: 'Domani', + weekAgo_one: '{{count}} settimana fa', + weekAgo_many: '{{count}} settimane fa', + weekAgo_other: '{{count}} settimane fa', + yesterday: 'Ieri', + }, + }, + decks: { + actions: { + actionMenu: 'Azioni per {{title}}', + createDeck: 'Crea mazzo', + createNote: 'Crea nota', + deleteDeck: 'Elimina mazzo', + editDeck: 'Modifica mazzo', + newNote: 'Nuova nota', + openDeck: 'Apri il mazzo {{title}}', + saveDeck: 'Impossibile salvare il mazzo', + studyNow: 'Studia ora', + }, + descriptions: { + emptyDeck: 'Aggiungi una nota per dare a questo mazzo materiale da ripassare.', + editorDefault: 'Mazzo di studio focalizzato.', + editorVisual: 'Scegli un glifo di copertina per questo mazzo.', + notesSearchPlaceholder: 'Cerca note…', + }, + dialogs: { + deleteDeckDescription: 'Questo sposta "{{title}}" nel Cestino. Puoi ripristinarlo più tardi.', + deleteDeckFallbackDescription: 'Questo sposta questo mazzo nel Cestino. Puoi ripristinarlo più tardi.', + deleteDeckFallbackTitle: 'Eliminare mazzo?', + deleteDeckTitle: 'Eliminare "{{title}}"?', + deleteNoteDescription: 'Questo sposta "{{title}}" nel Cestino. Puoi ripristinarla più tardi.', + deleteNoteFallbackTitle: 'Eliminare nota?', + deleteNoteTitle: 'Eliminare "{{title}}"?', + }, + empty: { + noMatchingNotes: 'Nessuna nota corrispondente', + noMatchingNotesDescription: 'Nessuna nota corrisponde a "{{query}}".', + thisDeckIsEmpty: 'Questo mazzo è vuoto', + }, + errors: { + couldNotCreateDeck: 'Impossibile creare il mazzo', + couldNotDeleteDeck: 'Impossibile eliminare il mazzo', + couldNotDeleteNote: 'Impossibile eliminare la nota', + couldNotLoadFolderPath: 'Impossibile caricare il percorso della cartella', + couldNotSaveDeck: 'Impossibile salvare il mazzo', + deckCouldNotLoad: 'Impossibile caricare il mazzo', + notesCouldNotLoad: 'Impossibile caricare le note', + notesMayBeOutOfDate: 'Le note potrebbero non essere aggiornate', + }, + fields: { + descriptionLabel: 'Descrizione del mazzo', + descriptionPlaceholder: 'Cosa ti aiuterà a ripassare questo mazzo?', + namePlaceholder: 'Nome del mazzo', + untitledDeck: 'Mazzo senza titolo', + untitledDeckLower: 'mazzo senza titolo', + }, + labels: { + createDeckTitle: 'Crea mazzo', + deck: 'Mazzo', + deckNotesSearch: 'Ricerca note del mazzo', + deckOverview: 'Panoramica del mazzo', + decks: 'Mazzi', + due: 'In scadenza', + dueToday: 'In scadenza oggi', + loadingDeck: 'Caricamento mazzo', + mastery: 'Padronanza', + notes: 'Note', + }, + sort: { + ariaLabel: 'Ordina mazzi', + dueToday: 'In scadenza oggi', + title: 'Titolo', + updated: 'Aggiornato', + }, + }, + errors: { + byType: { + conflict: 'I dati sono cambiati. Aggiorna e riprova.', + forbidden: 'Non hai il permesso di farlo.', + notFound: 'Non siamo riusciti a trovare questo elemento.', + offline: 'Impossibile raggiungere il servizio.', + timeout: 'Ci sta mettendo troppo tempo. Riprova.', + unauthorized: 'Accedi per continuare.', + unavailable: 'Il servizio è temporaneamente non disponibile.', + }, + fallback: { + unexpected: 'Errore imprevisto', + }, + }, + folders: { + actions: { + createFolder: 'Crea cartella', + deleteFolder: 'Elimina cartella', + editFolder: 'Modifica cartella', + }, + descriptions: { + editorDefault: 'Cartella per mazzi correlati.', + }, + dialogs: { + deleteFolderDescription: 'Questo sposta "{{name}}" nel Cestino. Puoi ripristinarla più tardi.', + deleteFolderFallbackDescription: 'Questo sposta questa cartella nel Cestino. Puoi ripristinarla più tardi.', + deleteFolderFallbackTitle: 'Eliminare cartella?', + deleteFolderTitle: 'Eliminare "{{name}}"?', + }, + empty: { + noMatchesInFolder: 'Nessuna corrispondenza in questa cartella', + noMatchesInFolderDescription: 'Nessuna cartella, mazzo o nota corrisponde a "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'Impossibile creare la cartella', + couldNotDeleteFolder: 'Impossibile eliminare la cartella', + couldNotLoadFolderPath: 'Impossibile caricare il percorso della cartella', + couldNotSaveFolder: 'Impossibile salvare la cartella', + folderCouldNotLoad: 'Impossibile caricare la cartella', + }, + fields: { + descriptionLabel: 'Descrizione della cartella', + descriptionPlaceholder: 'Cosa appartiene a questa cartella?', + namePlaceholder: 'Nome della cartella', + untitledFolder: 'Cartella senza titolo', + }, + labels: { + createFolderTitle: 'Crea cartella', + folder: 'Cartella', + folders: 'Cartelle', + loadingFolder: 'Caricamento cartella', + name: 'Nome', + updated: 'Aggiornato', + }, + sort: { + ariaLabel: 'Ordina cartelle', + name: 'Nome', + updated: 'Aggiornato', + }, + }, + menu: { + conflicts: { + description: 'Se i dati locali e sincronizzati non coincidono, l\'elemento apparirà qui.', + heading: 'Stato sincronizzazione', + title: 'Conflitti', + noConflicts: 'Nessun conflitto trovato', + }, + labels: { + menu: 'Menu', + }, + sections: { + settings: { + description: 'Personalizza ambiente e preferenze', + title: 'Impostazioni', + }, + trash: { + description: 'Ripristina o elimina definitivamente gli elementi rimossi', + title: 'Cestino', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Chiudi editor', + openActions: 'Apri azioni', + openWorkspaces: 'Apri spazi di lavoro', + }, + items: { + home: 'Home', + menu: 'Menu', + primary: 'Principale', + settings: 'Impostazioni', + spaces: 'Spazi', + trash: 'Cestino', + workspaces: 'Spazi di lavoro', + }, + }, + notes: { + actions: { + addCloze: 'Aggiungi cloze', + deleteNote: 'Elimina nota', + editNote: 'Modifica nota', + hideDerivedCardsNote: 'Nascondi nota sulle carte derivate', + openNote: 'Apri {{title}}', + saveNote: 'Salva nota', + showDerivedCardsNote: 'Mostra nota sulle carte derivate', + }, + descriptions: { + clozeFormat: 'Ogni parte nascosta diventa una carta di ripasso quando salvi.', + clozeFormatPrefix: 'Racchiudi il testo nascosto con', + derivedCardsHelper: 'Le note sono la fonte di verità per le carte derivate.', + }, + dialogs: { + deleteNoteDescription: 'Questo sposta "{{title}}" nel Cestino. Puoi ripristinarla più tardi.', + deleteNoteFallbackDescription: 'Questo sposta questa nota nel Cestino. Puoi ripristinarla più tardi.', + deleteNoteFallbackTitle: 'Eliminare nota?', + deleteNoteTitle: 'Eliminare "{{title}}"?', + }, + errors: { + couldNotCreateNote: 'Impossibile creare la nota', + couldNotDeleteNote: 'Impossibile eliminare la nota', + couldNotSaveNote: 'Impossibile salvare la nota', + noteCouldNotLoad: 'Impossibile caricare la nota', + }, + fields: { + back: 'Retro', + backPlaceholder: 'Inserisci il retro', + bodyPlaceholder: 'Scrivi il corpo della nota con cloze deletion…', + front: 'Fronte', + frontPlaceholder: 'Inserisci il fronte', + noteBody: 'Corpo della nota', + title: 'Titolo', + titlePlaceholder: 'Aggiungi un titolo alla nota', + untitledCloze: 'Cloze senza titolo', + untitledNote: 'Nota senza titolo', + }, + labels: { + backUppercase: 'RETRO', + basic: 'Base', + basicLower: 'base', + basicUppercase: 'BASE', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Formato cloze', + clozeUppercase: 'CLOZE', + deck: 'Mazzo', + derivedCards: 'CARTE DERIVATE', + due: 'In scadenza', + frontUppercase: 'FRONTE', + inProgress: 'In corso', + inProgressUppercase: 'IN CORSO', + loadingNote: 'Caricamento nota', + loadingNoteEditor: 'Caricamento editor note', + markdownFormatting: 'Formattazione Markdown', + mastered: 'Acquisita', + masteredUppercase: 'ACQUISITA', + newNote: 'Nuova nota', + noteBody: 'CORPO NOTA', + noteContent: 'Contenuto nota', + noteDetails: 'Dettagli nota', + noteMetadata: 'Metadati nota', + noteType: 'Tipo di nota', + notes: 'Note', + reviewed: 'Ripassata', + studyProgress: 'Progresso di studio', + studyProgressUppercase: 'PROGRESSO DI STUDIO', + titleUppercase: 'TITOLO', + updated: 'Aggiornata', + }, + sort: { + ariaLabel: 'Ordina note', + title: 'Titolo', + updated: 'Aggiornata', + }, + toolbar: { + bold: 'Grassetto', + italic: 'Corsivo', + link: 'Link', + list: 'Elenco', + }, + }, + review: { + actions: { + again: 'Di nuovo', + backToDeck: 'Torna al mazzo', + continueReview: 'Continua ripasso', + easy: 'Facile', + good: 'Buono', + hard: 'Difficile', + newNote: 'Nuova nota', + showAnswer: 'Mostra risposta', + }, + errors: { + couldNotGradeCard: 'Impossibile valutare la carta', + reviewCouldNotLoad: 'Impossibile caricare il ripasso', + reviewCouldNotStart: 'Impossibile avviare il ripasso', + summaryCouldNotLoad: 'Impossibile caricare il riepilogo del ripasso', + summaryNotAvailable: 'Il riepilogo del ripasso non è disponibile', + summaryNotComplete: 'Questo ripasso non è ancora completo.', + }, + labels: { + cardsReviewed: 'Carte ripassate', + deck: 'Mazzo', + duration: 'Durata', + loadingReview: 'Caricamento ripasso', + loadingSummary: 'Caricamento riepilogo', + progress: 'Progresso ripasso', + review: 'Ripasso', + reviewComplete: 'Ripasso completato', + reviewed_one: 'Ripassata {{count}}', + reviewed_many: 'Ripassate {{count}}', + reviewed_other: 'Ripassate {{count}}', + }, + summary: { + durationHoursMinutes: '{{hours}} h {{minutes}} min', + durationMinutes: '{{minutes}} min', + durationSeconds: '{{seconds}} s', + saved: 'I tuoi progressi sono stati salvati in questo mazzo.', + }, + unavailable: { + description: 'Aggiungi una nota per far entrare questo mazzo nella coda di ripasso.', + title: 'Nessuna carta da ripassare', + }, + }, + search: { + actions: { + clearSearch: 'Cancella ricerca', + }, + empty: { + noMatchesInWorkspace: 'Nessuna corrispondenza in questo spazio di lavoro', + noMatchesInWorkspaceDescription: 'Nessuna cartella, mazzo o nota corrisponde a "{{query}}".', + }, + errors: { + couldNotComplete: 'Impossibile completare la ricerca', + }, + labels: { + results: 'Risultati ricerca', + resultsFor: 'Risultati per "{{query}}"', + searchingContent: 'Ricerca contenuti', + }, + resultGroups: { + deck: 'Mazzi', + folder: 'Cartelle', + note: 'Note', + }, + resultKinds: { + deck: 'mazzo', + folder: 'cartella', + note: 'nota', + }, + }, + settings: { + actions: { + resetAll: 'Reimposta tutte le impostazioni', + resetSettings: 'Reimposta impostazioni', + resetToDefaults: 'Ripristina predefiniti', + }, + dialogs: { + fsrsErrorInvalidJson: 'Incolla JSON valido con 21 valori numerici.', + fsrsErrorInvalidParams_one: 'Inserisci un array JSON con esattamente {{count}} numero finito.', + fsrsErrorInvalidParams_many: 'Inserisci un array JSON con esattamente {{count}} numeri finiti.', + fsrsErrorInvalidParams_other: 'Inserisci un array JSON con esattamente {{count}} numeri finiti.', + fsrsHelper: 'Questa è una modifica esperta. I valori devono restare in ordine.', + fsrsJsonLabel: 'JSON parametri FSRS', + fsrsTitle: 'Modifica parametri FSRS', + fsrsDescription: 'Incolla un array JSON con 21 numeri per sovrascrivere i pesi dello scheduler.', + resetDescription: 'Ripristina fuso orario, limiti di studio e impostazioni FSRS.', + resetDescriptionWithLanguage: 'Ripristina lingua, fuso orario, limiti di studio e impostazioni FSRS.', + resetTitle: 'Reimpostare tutte le impostazioni?', + timezoneDescription: 'Cerca una città o un identificatore di fuso orario.', + timezoneSearchLabel: 'Cerca fusi orari', + timezoneSearchPlaceholder: 'Cerca fusi orari…', + timezoneTitle: 'Scegli fuso orario', + }, + errors: { + couldNotResetSettings: 'Impossibile reimpostare le impostazioni', + couldNotSaveSettings: 'Impossibile salvare le impostazioni', + settingsCouldNotLoad: 'Impossibile caricare le impostazioni', + settingsUnavailable: 'Le impostazioni non sono disponibili.', + }, + labels: { + appearance: 'Aspetto', + automatic: 'Automatico', + fsrsParameters: 'Parametri FSRS', + general: 'Generali', + language: 'Lingua', + loadingSettings: 'Caricamento impostazioni', + masteryHorizon: 'Orizzonte di padronanza', + newCardOrder: 'Ordine nuove carte', + newCardsPerDay: 'Nuove carte al giorno', + reviewCardsPerDay: 'Carte di ripasso al giorno', + savingSettings: 'Salvataggio impostazioni', + schedule: 'Programma', + searchNoTimezones: 'Nessun fuso orario corrispondente.', + settings: 'Impostazioni', + settingsReset: 'Impostazioni reimpostate', + study: 'Studio', + targetRecallProbability: 'Probabilità di richiamo target', + theme: 'Tema', + timezone: 'Fuso orario', + }, + options: { + languageEnUs: 'Inglese (USA)', + newCardsAfterReviews: 'Dopo i ripassi', + newCardsBeforeReviews: 'Prima dei ripassi', + newCardsMixed: 'Misto', + themeDark: 'Scuro', + themeLight: 'Chiaro', + themeSystem: 'Sistema', + timezoneSystem: 'Usa fuso orario di sistema', + }, + rows: { + fsrsDescription: 'Pesi del modello esperto', + languageDescription: 'Lingua dell\'interfaccia', + masteryHorizonDescription: 'Giorni in cui una carta deve restare richiamabile alla probabilità target o superiore per contare come acquisita', + newCardOrderDescription: 'Ordine delle nuove carte rispetto ai ripassi', + newCardsPerDayDescription: 'Massimo di nuove carte al giorno', + reviewCardsPerDayDescription: 'Massimo di carte di ripasso al giorno', + targetRecallProbabilityDescription: 'Probabilita minima di richiamo al prossimo ripasso programmato', + timezoneDescription: 'Usa il fuso orario automatico o scegli una città.', + }, + }, + trash: { + actions: { + deletePermanently: 'Elimina definitivamente', + empty: 'Svuota', + emptyTrash: 'Svuota cestino', + restore: 'Ripristina', + restoringItem: 'Ripristino di {{title}}', + }, + dialogs: { + deleteItemDescription: 'Questo elimina definitivamente "{{title}}". Non può essere annullato.', + deleteItemFallbackDescription: 'Questo elimina definitivamente questo elemento. Non può essere annullato.', + deleteItemFallbackTitle: 'Eliminare elemento?', + deleteItemTitle: 'Eliminare "{{title}}"?', + emptyTrashDescription: 'Questo elimina definitivamente tutto nel Cestino. Non può essere annullato.', + emptyTrashTitle: 'Svuotare cestino?', + }, + empty: { + description: 'Gli elementi eliminati appariranno qui prima della rimozione definitiva.', + title: 'Il Cestino è vuoto', + }, + errors: { + couldNotDeleteItem: 'Impossibile eliminare l\'elemento', + couldNotEmptyTrash: 'Impossibile svuotare il Cestino', + couldNotRestoreItem: 'Impossibile ripristinare l\'elemento', + trashCouldNotLoad: 'Impossibile caricare il Cestino', + trashMayBeOutOfDate: 'Il Cestino potrebbe non essere aggiornato', + }, + labels: { + deletedAge: 'Eliminato {{value}}', + itemCount_one: '{{count}} elemento', + itemCount_many: '{{count}} elementi', + itemCount_other: '{{count}} elementi', + lastEmptied: 'Ultimo svuotamento {{value}}', + loadingTrash: 'Caricamento Cestino', + originalLocation: 'Posizione originale: {{location}}', + title: 'Cestino', + trashActions: 'Azioni cestino per {{title}}', + }, + kinds: { + deck: 'Mazzo', + folder: 'Cartella', + note: 'Nota', + workspace: 'Spazio di lavoro', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Crea spazio di lavoro', + deleteWorkspace: 'Elimina spazio di lavoro', + editWorkspace: 'Modifica spazio di lavoro', + newWorkspace: 'Nuovo spazio di lavoro', + openWorkspace: 'Apri {{title}}', + openingWorkspace: 'Apertura di {{title}}', + }, + descriptions: { + editorDefault: 'Contesto di studio.', + editorVisual: 'Scegli un riferimento visivo per questo spazio di lavoro.', + emptyList: 'Separa mazzi, note e code di ripasso per contesto di studio.', + }, + dialogs: { + deleteWorkspaceDescription: 'Questo sposta "{{title}}" nel Cestino. Puoi ripristinarlo più tardi.', + deleteWorkspaceFallbackDescription: 'Questo sposta questo spazio di lavoro nel Cestino. Puoi ripristinarlo più tardi.', + deleteWorkspaceFallbackTitle: 'Eliminare spazio di lavoro?', + deleteWorkspaceTitle: 'Eliminare "{{title}}"?', + }, + empty: { + startWithWorkspace: 'Inizia con uno spazio di lavoro', + }, + errors: { + couldNotCreateWorkspace: 'Impossibile creare lo spazio di lavoro', + couldNotDeleteWorkspace: 'Impossibile eliminare lo spazio di lavoro', + couldNotOpenWorkspace: 'Impossibile aprire lo spazio di lavoro', + couldNotSaveWorkspace: 'Impossibile salvare lo spazio di lavoro', + workspaceCouldNotLoad: 'Impossibile caricare lo spazio di lavoro', + workspacesCouldNotLoad: 'Impossibile caricare gli spazi di lavoro', + }, + fields: { + descriptionLabel: 'Descrizione dello spazio di lavoro', + descriptionPlaceholder: 'Cosa appartiene a questo spazio di lavoro?', + namePlaceholder: 'Nome dello spazio di lavoro', + untitledWorkspace: 'Spazio di lavoro senza titolo', + }, + labels: { + createWorkspaceTitle: 'Crea spazio di lavoro', + loadingWorkspaces: 'Caricamento spazi di lavoro', + workspace: 'Spazio di lavoro', + workspaces: 'Spazi di lavoro', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/ja.ts b/ui/src/core/i18n/resources/ja.ts new file mode 100644 index 0000000..f889300 --- /dev/null +++ b/ui/src/core/i18n/resources/ja.ts @@ -0,0 +1,623 @@ +export const ja = { + bootstrap: { + error: { + fallbackMessage: 'もう一度お試しください。問題が続く場合は Clear を開き直してください。', + title: '開始できませんでした', + }, + loadingTitle: '学習スペースを準備しています', + }, + common: { + actions: { + back: '戻る', + cancel: 'キャンセル', + checkAgain: '再確認', + close: '閉じる', + create: '作成', + delete: '削除', + dismissError: 'エラーを閉じる', + dismissStatus: 'ステータスを閉じる', + edit: '編集', + itemActions: '{{title}} の操作', + reset: 'リセット', + review: '復習', + save: '保存', + saveChanges: '変更を保存', + tryAgain: 'もう一度試す', + }, + labels: { + active: '有効', + clear: 'Clear', + custom: 'カスタム', + default: 'デフォルト', + loadingEditor: 'エディターを読み込み中', + name: '名前', + completedTask: '完了したタスク', + description: '説明', + incompleteTask: '未完了のタスク', + percentageInput: '{{label}} の割合', + visual: 'ビジュアル', + }, + status: { + actionFailed: '操作に失敗しました', + actionInProgress: '操作中', + }, + sort: { + ascending: '昇順', + column: '列', + descending: '降順', + direction: '方向', + sort: '並べ替え', + }, + search: { + label: '検索', + }, + visualPicker: { + allLucideIcons: 'すべての Lucide アイコン', + browseIconsFor: '{{label}} のアイコンを参照または検索します。', + chooseIcon: 'アイコンを選択', + iconPicker: '{{label}} のアイコン選択', + iconSearch: '{{label}} のアイコン検索', + iconsCouldNotLoad: 'アイコンを読み込めませんでした。', + loadingIcons: 'アイコンを読み込み中', + loadingMoreIcons: 'さらにアイコンを読み込み中', + moreIcons: 'さらに表示', + noIconsMatch: '"{{query}}" に一致するアイコンはありません。', + searchIconsPlaceholder: 'アイコンを検索…', + selectedIcon: '選択中の {{label}}', + }, + }, + dashboard: { + actions: { + create: '作成', + newDeck: '新しいデッキ', + newFolder: '新しいフォルダー', + }, + descriptions: { + defaultWorkspace: 'デッキ、フォルダー、ノートをまとめて管理します。', + emptyWorkspace: 'デッキを作成し、ノートを追加して復習キューを作りましょう。', + emptyFolder: 'デッキを作成し、ノートを追加して復習キューを作りましょう。', + searchPlaceholder: 'フォルダー、デッキ、ノートを検索…', + }, + empty: { + createFirstDeck: '最初のデッキを作成', + }, + errors: { + couldNotDeleteDeck: 'デッキを削除できませんでした', + couldNotDeleteFolder: 'フォルダーを削除できませんでした', + couldNotDeleteWorkspace: 'ワークスペースを削除できませんでした', + dashboardCouldNotOpen: 'ダッシュボードを開けませんでした', + decksCouldNotLoad: 'デッキを読み込めませんでした', + decksMayBeOutOfDate: 'デッキが最新でない可能性があります', + foldersCouldNotLoad: 'フォルダーを読み込めませんでした', + foldersMayBeOutOfDate: 'フォルダーが最新でない可能性があります', + workspaceCouldNotLoad: 'ワークスペースを読み込めませんでした', + }, + labels: { + dashboard: 'ダッシュボード', + loadingDashboard: 'ダッシュボードを読み込み中', + newItem: '新しい項目', + }, + }, + dates: { + absolute: { + unavailable: '日付を利用できません', + }, + age: { + dayAgo_one: '{{count}}日前', + dayAgo_other: '{{count}}日前', + hourAgo_one: '{{count}}時間前', + hourAgo_other: '{{count}}時間前', + justNow: 'たった今', + minuteAgo_one: '{{count}}分前', + minuteAgo_other: '{{count}}分前', + unavailable: '日付を利用できません', + weekAgo_one: '{{count}}週間前', + weekAgo_other: '{{count}}週間前', + }, + labels: { + deleted: '{{value}}に削除', + due: '期限: {{value}}', + reviewed: '復習済み: {{value}}', + updated: '{{value}}に更新', + updatedUppercase: '{{value}}に更新', + }, + relative: { + dayAgo_one: '{{count}}日前', + dayAgo_other: '{{count}}日前', + inAMoment: 'まもなく', + inDay_one: '{{count}}日後', + inDay_other: '{{count}}日後', + inMonth_one: '{{count}}か月後', + inMonth_other: '{{count}}か月後', + inWeek_one: '{{count}}週間後', + inWeek_other: '{{count}}週間後', + justNow: 'たった今', + monthAgo_one: '{{count}}か月前', + monthAgo_other: '{{count}}か月前', + secondsAgoShort: '{{count}}秒前', + minutesAgoShort: '{{count}}分前', + hoursAgoShort: '{{count}}時間前', + today: '今日', + tomorrow: '明日', + weekAgo_one: '{{count}}週間前', + weekAgo_other: '{{count}}週間前', + yesterday: '昨日', + }, + }, + decks: { + actions: { + actionMenu: '{{title}} の操作', + createDeck: 'デッキを作成', + createNote: 'ノートを作成', + deleteDeck: 'デッキを削除', + editDeck: 'デッキを編集', + newNote: '新しいノート', + openDeck: '{{title}} デッキを開く', + saveDeck: 'デッキを保存できませんでした', + studyNow: '今すぐ学習', + }, + descriptions: { + emptyDeck: '復習する内容を作るためにノートを追加してください。', + editorDefault: '集中学習用のデッキ。', + editorVisual: 'このデッキのカバーグリフを選びます。', + notesSearchPlaceholder: 'ノートを検索…', + }, + dialogs: { + deleteDeckDescription: '"{{title}}" をゴミ箱に移動します。後で復元できます。', + deleteDeckFallbackDescription: 'このデッキをゴミ箱に移動します。後で復元できます。', + deleteDeckFallbackTitle: 'デッキを削除しますか?', + deleteDeckTitle: '"{{title}}" を削除しますか?', + deleteNoteDescription: '"{{title}}" をゴミ箱に移動します。後で復元できます。', + deleteNoteFallbackTitle: 'ノートを削除しますか?', + deleteNoteTitle: '"{{title}}" を削除しますか?', + }, + empty: { + noMatchingNotes: '一致するノートはありません', + noMatchingNotesDescription: '"{{query}}" に一致するノートはありません。', + thisDeckIsEmpty: 'このデッキは空です', + }, + errors: { + couldNotCreateDeck: 'デッキを作成できませんでした', + couldNotDeleteDeck: 'デッキを削除できませんでした', + couldNotDeleteNote: 'ノートを削除できませんでした', + couldNotLoadFolderPath: 'フォルダーのパスを読み込めませんでした', + couldNotSaveDeck: 'デッキを保存できませんでした', + deckCouldNotLoad: 'デッキを読み込めませんでした', + notesCouldNotLoad: 'ノートを読み込めませんでした', + notesMayBeOutOfDate: 'ノートが最新でない可能性があります', + }, + fields: { + descriptionLabel: 'デッキの説明', + descriptionPlaceholder: 'このデッキで何を復習しますか?', + namePlaceholder: 'デッキ名', + untitledDeck: '無題のデッキ', + untitledDeckLower: '無題のデッキ', + }, + labels: { + createDeckTitle: 'デッキを作成', + deck: 'デッキ', + deckNotesSearch: 'デッキ内ノート検索', + deckOverview: 'デッキ概要', + decks: 'デッキ', + due: '期限', + dueToday: '今日が期限', + loadingDeck: 'デッキを読み込み中', + mastery: '習熟度', + notes: 'ノート', + }, + sort: { + ariaLabel: 'デッキを並べ替え', + dueToday: '今日が期限', + title: 'タイトル', + updated: '更新日', + }, + }, + errors: { + byType: { + conflict: 'データが変更されました。更新してからもう一度お試しください。', + forbidden: 'この操作を行う権限がありません。', + notFound: 'この項目が見つかりませんでした。', + offline: 'サービスに接続できません。', + timeout: '時間がかかりすぎました。もう一度お試しください。', + unauthorized: '続行するにはサインインしてください。', + unavailable: 'サービスは一時的に利用できません。', + }, + fallback: { + unexpected: '予期しないエラー', + }, + }, + folders: { + actions: { + createFolder: 'フォルダーを作成', + deleteFolder: 'フォルダーを削除', + editFolder: 'フォルダーを編集', + }, + descriptions: { + editorDefault: '関連するデッキ用のフォルダー。', + }, + dialogs: { + deleteFolderDescription: '"{{name}}" をゴミ箱に移動します。後で復元できます。', + deleteFolderFallbackDescription: 'このフォルダーをゴミ箱に移動します。後で復元できます。', + deleteFolderFallbackTitle: 'フォルダーを削除しますか?', + deleteFolderTitle: '"{{name}}" を削除しますか?', + }, + empty: { + noMatchesInFolder: 'このフォルダーに一致する項目はありません', + noMatchesInFolderDescription: '"{{query}}" に一致するフォルダー、デッキ、ノートはありません。', + }, + errors: { + couldNotCreateFolder: 'フォルダーを作成できませんでした', + couldNotDeleteFolder: 'フォルダーを削除できませんでした', + couldNotLoadFolderPath: 'フォルダーのパスを読み込めませんでした', + couldNotSaveFolder: 'フォルダーを保存できませんでした', + folderCouldNotLoad: 'フォルダーを読み込めませんでした', + }, + fields: { + descriptionLabel: 'フォルダーの説明', + descriptionPlaceholder: 'このフォルダーには何を入れますか?', + namePlaceholder: 'フォルダー名', + untitledFolder: '無題のフォルダー', + }, + labels: { + createFolderTitle: 'フォルダーを作成', + folder: 'フォルダー', + folders: 'フォルダー', + loadingFolder: 'フォルダーを読み込み中', + name: '名前', + updated: '更新日', + }, + sort: { + ariaLabel: 'フォルダーを並べ替え', + name: '名前', + updated: '更新日', + }, + }, + menu: { + conflicts: { + description: 'ローカルデータと同期済みデータが一致しない場合、項目はここに表示されます。', + heading: '同期ステータス', + title: '競合', + noConflicts: '競合はありません', + }, + labels: { + menu: 'メニュー', + }, + sections: { + settings: { + description: '環境と設定をカスタマイズ', + title: '設定', + }, + trash: { + description: '削除した項目を復元または完全に削除', + title: 'ゴミ箱', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'エディターを閉じる', + openActions: '操作を開く', + openWorkspaces: 'ワークスペースを開く', + }, + items: { + home: 'ホーム', + menu: 'メニュー', + primary: 'メイン', + settings: '設定', + spaces: 'スペース', + trash: 'ゴミ箱', + workspaces: 'ワークスペース', + }, + }, + notes: { + actions: { + addCloze: '穴埋めを追加', + deleteNote: 'ノートを削除', + editNote: 'ノートを編集', + hideDerivedCardsNote: '派生カードの注記を非表示', + openNote: '{{title}} を開く', + saveNote: 'ノートを保存', + showDerivedCardsNote: '派生カードの注記を表示', + }, + descriptions: { + clozeFormat: '保存すると、隠した各部分が復習カードになります。', + clozeFormatPrefix: '隠すテキストを次で囲みます', + derivedCardsHelper: 'ノートは派生カードの信頼できる元データです。', + }, + dialogs: { + deleteNoteDescription: '"{{title}}" をゴミ箱に移動します。後で復元できます。', + deleteNoteFallbackDescription: 'このノートをゴミ箱に移動します。後で復元できます。', + deleteNoteFallbackTitle: 'ノートを削除しますか?', + deleteNoteTitle: '"{{title}}" を削除しますか?', + }, + errors: { + couldNotCreateNote: 'ノートを作成できませんでした', + couldNotDeleteNote: 'ノートを削除できませんでした', + couldNotSaveNote: 'ノートを保存できませんでした', + noteCouldNotLoad: 'ノートを読み込めませんでした', + }, + fields: { + back: '裏面', + backPlaceholder: '裏面を入力', + bodyPlaceholder: '穴埋め削除を使ってノート本文を書く…', + front: '表面', + frontPlaceholder: '表面を入力', + noteBody: 'ノート本文', + title: 'タイトル', + titlePlaceholder: 'ノートのタイトルを追加', + untitledCloze: '無題の穴埋め', + untitledNote: '無題のノート', + }, + labels: { + backUppercase: '裏面', + basic: '基本', + basicLower: '基本', + basicUppercase: '基本', + cloze: '穴埋め', + clozeLower: '穴埋め', + clozeFormat: '穴埋め形式', + clozeUppercase: '穴埋め', + deck: 'デッキ', + derivedCards: '派生カード', + due: '期限', + frontUppercase: '表面', + inProgress: '進行中', + inProgressUppercase: '進行中', + loadingNote: 'ノートを読み込み中', + loadingNoteEditor: 'ノートエディターを読み込み中', + markdownFormatting: 'Markdown 書式', + mastered: '習得済み', + masteredUppercase: '習得済み', + newNote: '新しいノート', + noteBody: 'ノート本文', + noteContent: 'ノート内容', + noteDetails: 'ノート詳細', + noteMetadata: 'ノートメタデータ', + noteType: 'ノートタイプ', + notes: 'ノート', + reviewed: '復習済み', + studyProgress: '学習進捗', + studyProgressUppercase: '学習進捗', + titleUppercase: 'タイトル', + updated: '更新日', + }, + sort: { + ariaLabel: 'ノートを並べ替え', + title: 'タイトル', + updated: '更新日', + }, + toolbar: { + bold: '太字', + italic: '斜体', + link: 'リンク', + list: 'リスト', + }, + }, + review: { + actions: { + again: 'もう一度', + backToDeck: 'デッキに戻る', + continueReview: '復習を続ける', + easy: '簡単', + good: '良い', + hard: '難しい', + newNote: '新しいノート', + showAnswer: '答えを表示', + }, + errors: { + couldNotGradeCard: 'カードを採点できませんでした', + reviewCouldNotLoad: '復習を読み込めませんでした', + reviewCouldNotStart: '復習を開始できませんでした', + summaryCouldNotLoad: '復習サマリーを読み込めませんでした', + summaryNotAvailable: '復習サマリーは利用できません', + summaryNotComplete: 'この復習はまだ完了していません。', + }, + labels: { + cardsReviewed: '復習したカード', + deck: 'デッキ', + duration: '時間', + loadingReview: '復習を読み込み中', + loadingSummary: 'サマリーを読み込み中', + progress: '復習の進捗', + review: '復習', + reviewComplete: '復習完了', + reviewed_one: '{{count}} 件復習済み', + reviewed_other: '{{count}} 件復習済み', + }, + summary: { + durationHoursMinutes: '{{hours}}時間 {{minutes}}分', + durationMinutes: '{{minutes}}分', + durationSeconds: '{{seconds}}秒', + saved: '進捗はこのデッキに保存されました。', + }, + unavailable: { + description: 'このデッキを復習キューに入れるにはノートを追加してください。', + title: '復習するカードがありません', + }, + }, + search: { + actions: { + clearSearch: '検索をクリア', + }, + empty: { + noMatchesInWorkspace: 'このワークスペースに一致する項目はありません', + noMatchesInWorkspaceDescription: '"{{query}}" に一致するフォルダー、デッキ、ノートはありません。', + }, + errors: { + couldNotComplete: '検索を完了できませんでした', + }, + labels: { + results: '検索結果', + resultsFor: '"{{query}}" の結果', + searchingContent: 'コンテンツを検索中', + }, + resultGroups: { + deck: 'デッキ', + folder: 'フォルダー', + note: 'ノート', + }, + resultKinds: { + deck: 'デッキ', + folder: 'フォルダー', + note: 'ノート', + }, + }, + settings: { + actions: { + resetAll: 'すべての設定をリセット', + resetSettings: '設定をリセット', + resetToDefaults: 'デフォルトに戻す', + }, + dialogs: { + fsrsErrorInvalidJson: '21 個の数値を含む有効な JSON を貼り付けてください。', + fsrsErrorInvalidParams_one: 'ちょうど {{count}} 個の有限数を含む JSON 配列を入力してください。', + fsrsErrorInvalidParams_other: 'ちょうど {{count}} 個の有限数を含む JSON 配列を入力してください。', + fsrsHelper: 'これは上級者向けの上書き設定です。値の順序を保ってください。', + fsrsJsonLabel: 'FSRS パラメーター JSON', + fsrsTitle: 'FSRS パラメーターを編集', + fsrsDescription: 'scheduler の重みを上書きするには、21 個の数値を含む JSON 配列を貼り付けます。', + resetDescription: 'タイムゾーン、学習上限、FSRS 設定を復元します。', + resetDescriptionWithLanguage: '言語、タイムゾーン、学習上限、FSRS 設定を復元します。', + resetTitle: 'すべての設定をリセットしますか?', + timezoneDescription: '都市またはタイムゾーン識別子を検索します。', + timezoneSearchLabel: 'タイムゾーンを検索', + timezoneSearchPlaceholder: 'タイムゾーンを検索…', + timezoneTitle: 'タイムゾーンを選択', + }, + errors: { + couldNotResetSettings: '設定をリセットできませんでした', + couldNotSaveSettings: '設定を保存できませんでした', + settingsCouldNotLoad: '設定を読み込めませんでした', + settingsUnavailable: '設定を利用できません。', + }, + labels: { + appearance: '外観', + automatic: '自動', + fsrsParameters: 'FSRS パラメーター', + general: '一般', + language: '言語', + loadingSettings: '設定を読み込み中', + masteryHorizon: '習熟判定期間', + newCardOrder: '新規カードの順序', + newCardsPerDay: '1日の新規カード', + reviewCardsPerDay: '1日の復習カード', + savingSettings: '設定を保存中', + schedule: 'スケジュール', + searchNoTimezones: '一致するタイムゾーンはありません。', + settings: '設定', + settingsReset: '設定をリセットしました', + study: '学習', + targetRecallProbability: '目標想起確率', + theme: 'テーマ', + timezone: 'タイムゾーン', + }, + options: { + languageEnUs: '英語(米国)', + newCardsAfterReviews: '復習の後', + newCardsBeforeReviews: '復習の前', + newCardsMixed: '混在', + themeDark: 'ダーク', + themeLight: 'ライト', + themeSystem: 'システム', + timezoneSystem: 'システムのタイムゾーンを使用', + }, + rows: { + fsrsDescription: '上級モデルの重み', + languageDescription: 'インターフェイスの言語', + masteryHorizonDescription: 'カードが目標確率以上で想起可能な状態を保つ必要がある日数', + newCardOrderDescription: '復習に対する新規カードの順序', + newCardsPerDayDescription: '1日あたりの新規カード上限', + reviewCardsPerDayDescription: '1日あたりの復習カード上限', + targetRecallProbabilityDescription: '次回予定復習での最小想起確率', + timezoneDescription: '自動タイムゾーンを使うか、都市を選択します。', + }, + }, + trash: { + actions: { + deletePermanently: '完全に削除', + empty: '空にする', + emptyTrash: 'ゴミ箱を空にする', + restore: '復元', + restoringItem: '{{title}} を復元中', + }, + dialogs: { + deleteItemDescription: '"{{title}}" を完全に削除します。元に戻せません。', + deleteItemFallbackDescription: 'この項目を完全に削除します。元に戻せません。', + deleteItemFallbackTitle: '項目を削除しますか?', + deleteItemTitle: '"{{title}}" を削除しますか?', + emptyTrashDescription: 'ゴミ箱内のすべてを完全に削除します。元に戻せません。', + emptyTrashTitle: 'ゴミ箱を空にしますか?', + }, + empty: { + description: '削除した項目は完全に削除される前にここに表示されます。', + title: 'ゴミ箱は空です', + }, + errors: { + couldNotDeleteItem: '項目を削除できませんでした', + couldNotEmptyTrash: 'ゴミ箱を空にできませんでした', + couldNotRestoreItem: '項目を復元できませんでした', + trashCouldNotLoad: 'ゴミ箱を読み込めませんでした', + trashMayBeOutOfDate: 'ゴミ箱が最新でない可能性があります', + }, + labels: { + deletedAge: '{{value}}に削除', + itemCount_one: '{{count}} 件', + itemCount_other: '{{count}} 件', + lastEmptied: '最後に空にした日時: {{value}}', + loadingTrash: 'ゴミ箱を読み込み中', + originalLocation: '元の場所: {{location}}', + title: 'ゴミ箱', + trashActions: '{{title}} のゴミ箱操作', + }, + kinds: { + deck: 'デッキ', + folder: 'フォルダー', + note: 'ノート', + workspace: 'ワークスペース', + }, + }, + workspaces: { + actions: { + createWorkspace: 'ワークスペースを作成', + deleteWorkspace: 'ワークスペースを削除', + editWorkspace: 'ワークスペースを編集', + newWorkspace: '新しいワークスペース', + openWorkspace: '{{title}} を開く', + openingWorkspace: '{{title}} を開いています', + }, + descriptions: { + editorDefault: '学習コンテキスト。', + editorVisual: 'このワークスペースの視覚的な目印を選びます。', + emptyList: 'デッキ、ノート、復習キューを学習コンテキストごとに分けます。', + }, + dialogs: { + deleteWorkspaceDescription: '"{{title}}" をゴミ箱に移動します。後で復元できます。', + deleteWorkspaceFallbackDescription: 'このワークスペースをゴミ箱に移動します。後で復元できます。', + deleteWorkspaceFallbackTitle: 'ワークスペースを削除しますか?', + deleteWorkspaceTitle: '"{{title}}" を削除しますか?', + }, + empty: { + startWithWorkspace: 'ワークスペースから始める', + }, + errors: { + couldNotCreateWorkspace: 'ワークスペースを作成できませんでした', + couldNotDeleteWorkspace: 'ワークスペースを削除できませんでした', + couldNotOpenWorkspace: 'ワークスペースを開けませんでした', + couldNotSaveWorkspace: 'ワークスペースを保存できませんでした', + workspaceCouldNotLoad: 'ワークスペースを読み込めませんでした', + workspacesCouldNotLoad: 'ワークスペースを読み込めませんでした', + }, + fields: { + descriptionLabel: 'ワークスペースの説明', + descriptionPlaceholder: 'このワークスペースには何を入れますか?', + namePlaceholder: 'ワークスペース名', + untitledWorkspace: '無題のワークスペース', + }, + labels: { + createWorkspaceTitle: 'ワークスペースを作成', + loadingWorkspaces: 'ワークスペースを読み込み中', + workspace: 'ワークスペース', + workspaces: 'ワークスペース', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/ko.ts b/ui/src/core/i18n/resources/ko.ts new file mode 100644 index 0000000..1a3580f --- /dev/null +++ b/ui/src/core/i18n/resources/ko.ts @@ -0,0 +1,623 @@ +export const ko = { + bootstrap: { + error: { + fallbackMessage: '다시 시도하세요. 문제가 계속되면 Clear를 다시 여세요.', + title: '시작할 수 없음', + }, + loadingTitle: '학습 공간을 준비하는 중', + }, + common: { + actions: { + back: '뒤로', + cancel: '취소', + checkAgain: '다시 확인', + close: '닫기', + create: '만들기', + delete: '삭제', + dismissError: '오류 닫기', + dismissStatus: '상태 닫기', + edit: '편집', + itemActions: '{{title}} 작업', + reset: '초기화', + review: '복습', + save: '저장', + saveChanges: '변경 사항 저장', + tryAgain: '다시 시도', + }, + labels: { + active: '활성', + clear: 'Clear', + custom: '사용자 지정', + default: '기본값', + loadingEditor: '편집기 로드 중', + name: '이름', + completedTask: '완료된 작업', + description: '설명', + incompleteTask: '미완료 작업', + percentageInput: '{{label}} 백분율', + visual: '시각 요소', + }, + status: { + actionFailed: '작업 실패', + actionInProgress: '작업 진행 중', + }, + sort: { + ascending: '오름차순', + column: '열', + descending: '내림차순', + direction: '방향', + sort: '정렬', + }, + search: { + label: '검색', + }, + visualPicker: { + allLucideIcons: '모든 Lucide 아이콘', + browseIconsFor: '{{label}} 아이콘을 둘러보거나 검색하세요.', + chooseIcon: '아이콘 선택', + iconPicker: '{{label}} 아이콘 선택기', + iconSearch: '{{label}} 아이콘 검색', + iconsCouldNotLoad: '아이콘을 불러올 수 없습니다.', + loadingIcons: '아이콘 로드 중', + loadingMoreIcons: '아이콘 더 불러오는 중', + moreIcons: '아이콘 더 보기', + noIconsMatch: '"{{query}}"와 일치하는 아이콘이 없습니다.', + searchIconsPlaceholder: '아이콘 검색…', + selectedIcon: '선택한 {{label}}', + }, + }, + dashboard: { + actions: { + create: '만들기', + newDeck: '새 덱', + newFolder: '새 폴더', + }, + descriptions: { + defaultWorkspace: '덱, 폴더, 노트를 함께 보관하세요.', + emptyWorkspace: '덱을 만든 다음 노트를 추가해 복습 대기열을 만드세요.', + emptyFolder: '덱을 만든 다음 노트를 추가해 복습 대기열을 만드세요.', + searchPlaceholder: '폴더, 덱, 노트 검색…', + }, + empty: { + createFirstDeck: '첫 덱 만들기', + }, + errors: { + couldNotDeleteDeck: '덱을 삭제할 수 없습니다', + couldNotDeleteFolder: '폴더를 삭제할 수 없습니다', + couldNotDeleteWorkspace: '워크스페이스를 삭제할 수 없습니다', + dashboardCouldNotOpen: '대시보드를 열 수 없습니다', + decksCouldNotLoad: '덱을 불러올 수 없습니다', + decksMayBeOutOfDate: '덱이 최신 상태가 아닐 수 있습니다', + foldersCouldNotLoad: '폴더를 불러올 수 없습니다', + foldersMayBeOutOfDate: '폴더가 최신 상태가 아닐 수 있습니다', + workspaceCouldNotLoad: '워크스페이스를 불러올 수 없습니다', + }, + labels: { + dashboard: '대시보드', + loadingDashboard: '대시보드 로드 중', + newItem: '새 항목', + }, + }, + dates: { + absolute: { + unavailable: '날짜를 사용할 수 없음', + }, + age: { + dayAgo_one: '{{count}}일 전', + dayAgo_other: '{{count}}일 전', + hourAgo_one: '{{count}}시간 전', + hourAgo_other: '{{count}}시간 전', + justNow: '방금', + minuteAgo_one: '{{count}}분 전', + minuteAgo_other: '{{count}}분 전', + unavailable: '날짜를 사용할 수 없음', + weekAgo_one: '{{count}}주 전', + weekAgo_other: '{{count}}주 전', + }, + labels: { + deleted: '{{value}} 삭제됨', + due: '기한: {{value}}', + reviewed: '복습함: {{value}}', + updated: '{{value}} 업데이트됨', + updatedUppercase: '{{value}} 업데이트됨', + }, + relative: { + dayAgo_one: '{{count}}일 전', + dayAgo_other: '{{count}}일 전', + inAMoment: '잠시 후', + inDay_one: '{{count}}일 후', + inDay_other: '{{count}}일 후', + inMonth_one: '{{count}}개월 후', + inMonth_other: '{{count}}개월 후', + inWeek_one: '{{count}}주 후', + inWeek_other: '{{count}}주 후', + justNow: '방금', + monthAgo_one: '{{count}}개월 전', + monthAgo_other: '{{count}}개월 전', + secondsAgoShort: '{{count}}초 전', + minutesAgoShort: '{{count}}분 전', + hoursAgoShort: '{{count}}시간 전', + today: '오늘', + tomorrow: '내일', + weekAgo_one: '{{count}}주 전', + weekAgo_other: '{{count}}주 전', + yesterday: '어제', + }, + }, + decks: { + actions: { + actionMenu: '{{title}} 작업', + createDeck: '덱 만들기', + createNote: '노트 만들기', + deleteDeck: '덱 삭제', + editDeck: '덱 편집', + newNote: '새 노트', + openDeck: '{{title}} 덱 열기', + saveDeck: '덱을 저장할 수 없습니다', + studyNow: '지금 학습', + }, + descriptions: { + emptyDeck: '이 덱에 복습할 자료가 생기도록 노트를 추가하세요.', + editorDefault: '집중 학습 덱.', + editorVisual: '이 덱의 표지 글리프를 선택하세요.', + notesSearchPlaceholder: '노트 검색…', + }, + dialogs: { + deleteDeckDescription: '"{{title}}"을 휴지통으로 이동합니다. 나중에 복원할 수 있습니다.', + deleteDeckFallbackDescription: '이 덱을 휴지통으로 이동합니다. 나중에 복원할 수 있습니다.', + deleteDeckFallbackTitle: '덱을 삭제할까요?', + deleteDeckTitle: '"{{title}}"을 삭제할까요?', + deleteNoteDescription: '"{{title}}"을 휴지통으로 이동합니다. 나중에 복원할 수 있습니다.', + deleteNoteFallbackTitle: '노트를 삭제할까요?', + deleteNoteTitle: '"{{title}}"을 삭제할까요?', + }, + empty: { + noMatchingNotes: '일치하는 노트 없음', + noMatchingNotesDescription: '"{{query}}"와 일치하는 노트가 없습니다.', + thisDeckIsEmpty: '이 덱은 비어 있습니다', + }, + errors: { + couldNotCreateDeck: '덱을 만들 수 없습니다', + couldNotDeleteDeck: '덱을 삭제할 수 없습니다', + couldNotDeleteNote: '노트를 삭제할 수 없습니다', + couldNotLoadFolderPath: '폴더 경로를 불러올 수 없습니다', + couldNotSaveDeck: '덱을 저장할 수 없습니다', + deckCouldNotLoad: '덱을 불러올 수 없습니다', + notesCouldNotLoad: '노트를 불러올 수 없습니다', + notesMayBeOutOfDate: '노트가 최신 상태가 아닐 수 있습니다', + }, + fields: { + descriptionLabel: '덱 설명', + descriptionPlaceholder: '이 덱은 무엇을 복습하는 데 도움이 되나요?', + namePlaceholder: '덱 이름', + untitledDeck: '제목 없는 덱', + untitledDeckLower: '제목 없는 덱', + }, + labels: { + createDeckTitle: '덱 만들기', + deck: '덱', + deckNotesSearch: '덱 노트 검색', + deckOverview: '덱 개요', + decks: '덱', + due: '기한', + dueToday: '오늘 기한', + loadingDeck: '덱 로드 중', + mastery: '숙련도', + notes: '노트', + }, + sort: { + ariaLabel: '덱 정렬', + dueToday: '오늘 기한', + title: '제목', + updated: '업데이트', + }, + }, + errors: { + byType: { + conflict: '데이터가 변경되었습니다. 새로고침한 뒤 다시 시도하세요.', + forbidden: '이 작업을 수행할 권한이 없습니다.', + notFound: '이 항목을 찾을 수 없습니다.', + offline: '서비스에 연결할 수 없습니다.', + timeout: '너무 오래 걸렸습니다. 다시 시도하세요.', + unauthorized: '계속하려면 로그인하세요.', + unavailable: '서비스를 일시적으로 사용할 수 없습니다.', + }, + fallback: { + unexpected: '예상치 못한 오류', + }, + }, + folders: { + actions: { + createFolder: '폴더 만들기', + deleteFolder: '폴더 삭제', + editFolder: '폴더 편집', + }, + descriptions: { + editorDefault: '관련 덱을 위한 폴더.', + }, + dialogs: { + deleteFolderDescription: '"{{name}}"을 휴지통으로 이동합니다. 나중에 복원할 수 있습니다.', + deleteFolderFallbackDescription: '이 폴더를 휴지통으로 이동합니다. 나중에 복원할 수 있습니다.', + deleteFolderFallbackTitle: '폴더를 삭제할까요?', + deleteFolderTitle: '"{{name}}"을 삭제할까요?', + }, + empty: { + noMatchesInFolder: '이 폴더에 일치하는 항목 없음', + noMatchesInFolderDescription: '"{{query}}"와 일치하는 폴더, 덱 또는 노트가 없습니다.', + }, + errors: { + couldNotCreateFolder: '폴더를 만들 수 없습니다', + couldNotDeleteFolder: '폴더를 삭제할 수 없습니다', + couldNotLoadFolderPath: '폴더 경로를 불러올 수 없습니다', + couldNotSaveFolder: '폴더를 저장할 수 없습니다', + folderCouldNotLoad: '폴더를 불러올 수 없습니다', + }, + fields: { + descriptionLabel: '폴더 설명', + descriptionPlaceholder: '이 폴더에는 무엇이 들어가나요?', + namePlaceholder: '폴더 이름', + untitledFolder: '제목 없는 폴더', + }, + labels: { + createFolderTitle: '폴더 만들기', + folder: '폴더', + folders: '폴더', + loadingFolder: '폴더 로드 중', + name: '이름', + updated: '업데이트', + }, + sort: { + ariaLabel: '폴더 정렬', + name: '이름', + updated: '업데이트', + }, + }, + menu: { + conflicts: { + description: '로컬 데이터와 동기화된 데이터가 서로 다르면 항목이 여기에 표시됩니다.', + heading: '동기화 상태', + title: '충돌', + noConflicts: '충돌이 없습니다', + }, + labels: { + menu: '메뉴', + }, + sections: { + settings: { + description: '환경과 기본 설정을 개인화하세요', + title: '설정', + }, + trash: { + description: '제거된 항목을 복원하거나 영구 삭제하세요', + title: '휴지통', + }, + }, + }, + navigation: { + actions: { + closeEditor: '편집기 닫기', + openActions: '작업 열기', + openWorkspaces: '워크스페이스 열기', + }, + items: { + home: '홈', + menu: '메뉴', + primary: '기본', + settings: '설정', + spaces: '공간', + trash: '휴지통', + workspaces: '워크스페이스', + }, + }, + notes: { + actions: { + addCloze: '빈칸 추가', + deleteNote: '노트 삭제', + editNote: '노트 편집', + hideDerivedCardsNote: '파생 카드 안내 숨기기', + openNote: '{{title}} 열기', + saveNote: '노트 저장', + showDerivedCardsNote: '파생 카드 안내 보기', + }, + descriptions: { + clozeFormat: '저장하면 숨긴 각 부분이 복습 카드가 됩니다.', + clozeFormatPrefix: '숨길 텍스트를 다음으로 감싸세요', + derivedCardsHelper: '노트는 파생 카드의 기준 데이터입니다.', + }, + dialogs: { + deleteNoteDescription: '"{{title}}"을 휴지통으로 이동합니다. 나중에 복원할 수 있습니다.', + deleteNoteFallbackDescription: '이 노트를 휴지통으로 이동합니다. 나중에 복원할 수 있습니다.', + deleteNoteFallbackTitle: '노트를 삭제할까요?', + deleteNoteTitle: '"{{title}}"을 삭제할까요?', + }, + errors: { + couldNotCreateNote: '노트를 만들 수 없습니다', + couldNotDeleteNote: '노트를 삭제할 수 없습니다', + couldNotSaveNote: '노트를 저장할 수 없습니다', + noteCouldNotLoad: '노트를 불러올 수 없습니다', + }, + fields: { + back: '뒷면', + backPlaceholder: '뒷면 입력', + bodyPlaceholder: '빈칸 삭제를 사용해 노트 본문 작성…', + front: '앞면', + frontPlaceholder: '앞면 입력', + noteBody: '노트 본문', + title: '제목', + titlePlaceholder: '노트 제목 추가', + untitledCloze: '제목 없는 빈칸', + untitledNote: '제목 없는 노트', + }, + labels: { + backUppercase: '뒷면', + basic: '기본', + basicLower: '기본', + basicUppercase: '기본', + cloze: '빈칸', + clozeLower: '빈칸', + clozeFormat: '빈칸 형식', + clozeUppercase: '빈칸', + deck: '덱', + derivedCards: '파생 카드', + due: '기한', + frontUppercase: '앞면', + inProgress: '진행 중', + inProgressUppercase: '진행 중', + loadingNote: '노트 로드 중', + loadingNoteEditor: '노트 편집기 로드 중', + markdownFormatting: 'Markdown 서식', + mastered: '숙달됨', + masteredUppercase: '숙달됨', + newNote: '새 노트', + noteBody: '노트 본문', + noteContent: '노트 내용', + noteDetails: '노트 세부 정보', + noteMetadata: '노트 메타데이터', + noteType: '노트 유형', + notes: '노트', + reviewed: '복습함', + studyProgress: '학습 진행률', + studyProgressUppercase: '학습 진행률', + titleUppercase: '제목', + updated: '업데이트', + }, + sort: { + ariaLabel: '노트 정렬', + title: '제목', + updated: '업데이트', + }, + toolbar: { + bold: '굵게', + italic: '기울임', + link: '링크', + list: '목록', + }, + }, + review: { + actions: { + again: '다시', + backToDeck: '덱으로 돌아가기', + continueReview: '복습 계속', + easy: '쉬움', + good: '좋음', + hard: '어려움', + newNote: '새 노트', + showAnswer: '답 보기', + }, + errors: { + couldNotGradeCard: '카드를 평가할 수 없습니다', + reviewCouldNotLoad: '복습을 불러올 수 없습니다', + reviewCouldNotStart: '복습을 시작할 수 없습니다', + summaryCouldNotLoad: '복습 요약을 불러올 수 없습니다', + summaryNotAvailable: '복습 요약을 사용할 수 없습니다', + summaryNotComplete: '이 복습은 아직 완료되지 않았습니다.', + }, + labels: { + cardsReviewed: '복습한 카드', + deck: '덱', + duration: '소요 시간', + loadingReview: '복습 로드 중', + loadingSummary: '요약 로드 중', + progress: '복습 진행률', + review: '복습', + reviewComplete: '복습 완료', + reviewed_one: '{{count}}개 복습함', + reviewed_other: '{{count}}개 복습함', + }, + summary: { + durationHoursMinutes: '{{hours}}시간 {{minutes}}분', + durationMinutes: '{{minutes}}분', + durationSeconds: '{{seconds}}초', + saved: '진행 상황이 이 덱에 저장되었습니다.', + }, + unavailable: { + description: '이 덱이 복습 대기열에 들어가도록 노트를 추가하세요.', + title: '복습할 카드가 없습니다', + }, + }, + search: { + actions: { + clearSearch: '검색 지우기', + }, + empty: { + noMatchesInWorkspace: '이 워크스페이스에 일치하는 항목 없음', + noMatchesInWorkspaceDescription: '"{{query}}"와 일치하는 폴더, 덱 또는 노트가 없습니다.', + }, + errors: { + couldNotComplete: '검색을 완료할 수 없습니다', + }, + labels: { + results: '검색 결과', + resultsFor: '"{{query}}" 결과', + searchingContent: '콘텐츠 검색 중', + }, + resultGroups: { + deck: '덱', + folder: '폴더', + note: '노트', + }, + resultKinds: { + deck: '덱', + folder: '폴더', + note: '노트', + }, + }, + settings: { + actions: { + resetAll: '모든 설정 초기화', + resetSettings: '설정 초기화', + resetToDefaults: '기본값으로 되돌리기', + }, + dialogs: { + fsrsErrorInvalidJson: '21개의 숫자 값이 있는 유효한 JSON을 붙여넣으세요.', + fsrsErrorInvalidParams_one: '정확히 {{count}}개의 유한 숫자가 있는 JSON 배열을 입력하세요.', + fsrsErrorInvalidParams_other: '정확히 {{count}}개의 유한 숫자가 있는 JSON 배열을 입력하세요.', + fsrsHelper: '전문가용 재정의입니다. 값의 순서를 유지해야 합니다.', + fsrsJsonLabel: 'FSRS 매개변수 JSON', + fsrsTitle: 'FSRS 매개변수 편집', + fsrsDescription: 'scheduler 가중치를 재정의하려면 21개의 숫자가 있는 JSON 배열을 붙여넣으세요.', + resetDescription: '시간대, 학습 제한, FSRS 설정을 복원합니다.', + resetDescriptionWithLanguage: '언어, 시간대, 학습 제한, FSRS 설정을 복원합니다.', + resetTitle: '모든 설정을 초기화할까요?', + timezoneDescription: '도시 또는 시간대 식별자를 검색하세요.', + timezoneSearchLabel: '시간대 검색', + timezoneSearchPlaceholder: '시간대 검색…', + timezoneTitle: '시간대 선택', + }, + errors: { + couldNotResetSettings: '설정을 초기화할 수 없습니다', + couldNotSaveSettings: '설정을 저장할 수 없습니다', + settingsCouldNotLoad: '설정을 불러올 수 없습니다', + settingsUnavailable: '설정을 사용할 수 없습니다.', + }, + labels: { + appearance: '모양', + automatic: '자동', + fsrsParameters: 'FSRS 매개변수', + general: '일반', + language: '언어', + loadingSettings: '설정 로드 중', + masteryHorizon: '숙달 기간', + newCardOrder: '새 카드 순서', + newCardsPerDay: '일일 새 카드', + reviewCardsPerDay: '일일 복습 카드', + savingSettings: '설정 저장 중', + schedule: '일정', + searchNoTimezones: '일치하는 시간대가 없습니다.', + settings: '설정', + settingsReset: '설정 초기화됨', + study: '학습', + targetRecallProbability: '목표 회상 확률', + theme: '테마', + timezone: '시간대', + }, + options: { + languageEnUs: '영어(미국)', + newCardsAfterReviews: '복습 후', + newCardsBeforeReviews: '복습 전', + newCardsMixed: '섞기', + themeDark: '어둡게', + themeLight: '밝게', + themeSystem: '시스템', + timezoneSystem: '시스템 시간대 사용', + }, + rows: { + fsrsDescription: '전문가 모델 가중치', + languageDescription: '인터페이스 언어', + masteryHorizonDescription: '카드가 숙달된 것으로 간주되려면 목표 확률 이상으로 회상 가능해야 하는 일수', + newCardOrderDescription: '복습에 대한 새 카드의 순서', + newCardsPerDayDescription: '하루 최대 새 카드 수', + reviewCardsPerDayDescription: '하루 최대 복습 카드 수', + targetRecallProbabilityDescription: '다음 예정 복습에서의 최소 회상 확률', + timezoneDescription: '자동 시간대를 사용하거나 도시를 선택하세요.', + }, + }, + trash: { + actions: { + deletePermanently: '영구 삭제', + empty: '비우기', + emptyTrash: '휴지통 비우기', + restore: '복원', + restoringItem: '{{title}} 복원 중', + }, + dialogs: { + deleteItemDescription: '"{{title}}"을 영구 삭제합니다. 되돌릴 수 없습니다.', + deleteItemFallbackDescription: '이 항목을 영구 삭제합니다. 되돌릴 수 없습니다.', + deleteItemFallbackTitle: '항목을 삭제할까요?', + deleteItemTitle: '"{{title}}"을 삭제할까요?', + emptyTrashDescription: '휴지통의 모든 항목을 영구 삭제합니다. 되돌릴 수 없습니다.', + emptyTrashTitle: '휴지통을 비울까요?', + }, + empty: { + description: '삭제한 항목은 영구 제거되기 전에 여기에 표시됩니다.', + title: '휴지통이 비어 있습니다', + }, + errors: { + couldNotDeleteItem: '항목을 삭제할 수 없습니다', + couldNotEmptyTrash: '휴지통을 비울 수 없습니다', + couldNotRestoreItem: '항목을 복원할 수 없습니다', + trashCouldNotLoad: '휴지통을 불러올 수 없습니다', + trashMayBeOutOfDate: '휴지통이 최신 상태가 아닐 수 있습니다', + }, + labels: { + deletedAge: '{{value}} 삭제됨', + itemCount_one: '{{count}}개 항목', + itemCount_other: '{{count}}개 항목', + lastEmptied: '마지막으로 비운 시각 {{value}}', + loadingTrash: '휴지통 로드 중', + originalLocation: '원래 위치: {{location}}', + title: '휴지통', + trashActions: '{{title}} 휴지통 작업', + }, + kinds: { + deck: '덱', + folder: '폴더', + note: '노트', + workspace: '워크스페이스', + }, + }, + workspaces: { + actions: { + createWorkspace: '워크스페이스 만들기', + deleteWorkspace: '워크스페이스 삭제', + editWorkspace: '워크스페이스 편집', + newWorkspace: '새 워크스페이스', + openWorkspace: '{{title}} 열기', + openingWorkspace: '{{title}} 여는 중', + }, + descriptions: { + editorDefault: '학습 컨텍스트.', + editorVisual: '이 워크스페이스의 시각적 기준을 선택하세요.', + emptyList: '덱, 노트, 복습 대기열을 학습 컨텍스트별로 나누세요.', + }, + dialogs: { + deleteWorkspaceDescription: '"{{title}}"을 휴지통으로 이동합니다. 나중에 복원할 수 있습니다.', + deleteWorkspaceFallbackDescription: '이 워크스페이스를 휴지통으로 이동합니다. 나중에 복원할 수 있습니다.', + deleteWorkspaceFallbackTitle: '워크스페이스를 삭제할까요?', + deleteWorkspaceTitle: '"{{title}}"을 삭제할까요?', + }, + empty: { + startWithWorkspace: '워크스페이스로 시작하기', + }, + errors: { + couldNotCreateWorkspace: '워크스페이스를 만들 수 없습니다', + couldNotDeleteWorkspace: '워크스페이스를 삭제할 수 없습니다', + couldNotOpenWorkspace: '워크스페이스를 열 수 없습니다', + couldNotSaveWorkspace: '워크스페이스를 저장할 수 없습니다', + workspaceCouldNotLoad: '워크스페이스를 불러올 수 없습니다', + workspacesCouldNotLoad: '워크스페이스를 불러올 수 없습니다', + }, + fields: { + descriptionLabel: '워크스페이스 설명', + descriptionPlaceholder: '이 워크스페이스에는 무엇이 들어가나요?', + namePlaceholder: '워크스페이스 이름', + untitledWorkspace: '제목 없는 워크스페이스', + }, + labels: { + createWorkspaceTitle: '워크스페이스 만들기', + loadingWorkspaces: '워크스페이스 로드 중', + workspace: '워크스페이스', + workspaces: '워크스페이스', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/lt.ts b/ui/src/core/i18n/resources/lt.ts new file mode 100644 index 0000000..35e5954 --- /dev/null +++ b/ui/src/core/i18n/resources/lt.ts @@ -0,0 +1,649 @@ +export const lt = { + bootstrap: { + error: { + fallbackMessage: 'Bandykite dar kartą. Jei tai kartojasi, iš naujo atidarykite Clear.', + title: 'Nepavyko paleisti', + }, + loadingTitle: 'Ruošiama jūsų mokymosi erdvė', + }, + common: { + actions: { + back: 'Atgal', + cancel: 'Atšaukti', + checkAgain: 'Patikrinti dar kartą', + close: 'Uždaryti', + create: 'Sukurti', + delete: 'Ištrinti', + dismissError: 'Uždaryti klaidą', + dismissStatus: 'Uždaryti būseną', + edit: 'Redaguoti', + itemActions: '{{title}} veiksmai', + reset: 'Atstatyti', + review: 'Kartoti', + save: 'Įrašyti', + saveChanges: 'Įrašyti pakeitimus', + tryAgain: 'Bandyti dar kartą', + }, + labels: { + active: 'Aktyvu', + clear: 'Clear', + custom: 'Pasirinktinis', + default: 'Numatytasis', + loadingEditor: 'Įkeliamas redaktorius', + name: 'Pavadinimas', + completedTask: 'Atlikta užduotis', + description: 'Aprašas', + incompleteTask: 'Nebaigta užduotis', + percentageInput: '{{label}} procentais', + visual: 'Vizualas', + }, + status: { + actionFailed: 'Veiksmas nepavyko', + actionInProgress: 'Veiksmas vykdomas', + }, + sort: { + ascending: 'Didėj.', + column: 'Stulpelis', + descending: 'Mažėj.', + direction: 'Kryptis', + sort: 'Rikiuoti', + }, + search: { + label: 'Paieška', + }, + visualPicker: { + allLucideIcons: 'Visos Lucide piktogramos', + browseIconsFor: 'Naršykite arba ieškokite piktogramų: {{label}}.', + chooseIcon: 'Pasirinkti piktogramą', + iconPicker: '{{label}} piktogramos parinkiklis', + iconSearch: '{{label}} piktogramų paieška', + iconsCouldNotLoad: 'Piktogramų nepavyko įkelti.', + loadingIcons: 'Įkeliamos piktogramos', + loadingMoreIcons: 'Įkeliama daugiau piktogramų', + moreIcons: 'Daugiau piktogramų', + noIconsMatch: 'Nėra piktogramų, atitinkančių "{{query}}".', + searchIconsPlaceholder: 'Ieškoti piktogramų…', + selectedIcon: 'Pasirinkta {{label}}', + }, + }, + dashboard: { + actions: { + create: 'Sukurti', + newDeck: 'Nauja kaladė', + newFolder: 'Naujas aplankas', + }, + descriptions: { + defaultWorkspace: 'Laikykite kalades, aplankus ir pastabas kartu.', + emptyWorkspace: 'Sukurkite kaladę, tada pridėkite pastabų, kad sudarytumėte kartojimo eilę.', + emptyFolder: 'Sukurkite kaladę, tada pridėkite pastabų, kad sudarytumėte kartojimo eilę.', + searchPlaceholder: 'Ieškoti aplankų, kaladžių ir pastabų…', + }, + empty: { + createFirstDeck: 'Sukurkite pirmąją kaladę', + }, + errors: { + couldNotDeleteDeck: 'Kaladės nepavyko ištrinti', + couldNotDeleteFolder: 'Aplanko nepavyko ištrinti', + couldNotDeleteWorkspace: 'Darbo srities nepavyko ištrinti', + dashboardCouldNotOpen: 'Skydelio nepavyko atidaryti', + decksCouldNotLoad: 'Kaladžių nepavyko įkelti', + decksMayBeOutOfDate: 'Kaladės gali būti pasenusios', + foldersCouldNotLoad: 'Aplankų nepavyko įkelti', + foldersMayBeOutOfDate: 'Aplankai gali būti pasenę', + workspaceCouldNotLoad: 'Darbo srities nepavyko įkelti', + }, + labels: { + dashboard: 'Skydelis', + loadingDashboard: 'Įkeliamas skydelis', + newItem: 'Naujas elementas', + }, + }, + dates: { + absolute: { + unavailable: 'Data nepasiekiama', + }, + age: { + dayAgo_one: 'prieš {{count}} dieną', + dayAgo_few: 'prieš {{count}} dienas', + dayAgo_many: 'prieš {{count}} dienos', + dayAgo_other: 'prieš {{count}} dienų', + hourAgo_one: 'prieš {{count}} valandą', + hourAgo_few: 'prieš {{count}} valandas', + hourAgo_many: 'prieš {{count}} valandos', + hourAgo_other: 'prieš {{count}} valandų', + justNow: 'ką tik', + minuteAgo_one: 'prieš {{count}} minutę', + minuteAgo_few: 'prieš {{count}} minutes', + minuteAgo_many: 'prieš {{count}} minutės', + minuteAgo_other: 'prieš {{count}} minučių', + unavailable: 'data nepasiekiama', + weekAgo_one: 'prieš {{count}} savaitę', + weekAgo_few: 'prieš {{count}} savaites', + weekAgo_many: 'prieš {{count}} savaitės', + weekAgo_other: 'prieš {{count}} savaičių', + }, + labels: { + deleted: 'Ištrinta {{value}}', + due: 'Terminas: {{value}}', + reviewed: 'Kartota: {{value}}', + updated: 'Atnaujinta {{value}}', + updatedUppercase: 'ATNAUJINTA {{value}}', + }, + relative: { + dayAgo_one: 'prieš {{count}} dieną', + dayAgo_few: 'prieš {{count}} dienas', + dayAgo_many: 'prieš {{count}} dienos', + dayAgo_other: 'prieš {{count}} dienų', + inAMoment: 'Netrukus', + inDay_one: 'Po {{count}} dienos', + inDay_few: 'Po {{count}} dienų', + inDay_many: 'Po {{count}} dienos', + inDay_other: 'Po {{count}} dienų', + inMonth_one: 'Po {{count}} mėnesio', + inMonth_few: 'Po {{count}} mėnesių', + inMonth_many: 'Po {{count}} mėnesio', + inMonth_other: 'Po {{count}} mėnesių', + inWeek_one: 'Po {{count}} savaitės', + inWeek_few: 'Po {{count}} savaičių', + inWeek_many: 'Po {{count}} savaitės', + inWeek_other: 'Po {{count}} savaičių', + justNow: 'Ką tik', + monthAgo_one: 'prieš {{count}} mėnesį', + monthAgo_few: 'prieš {{count}} mėnesius', + monthAgo_many: 'prieš {{count}} mėnesio', + monthAgo_other: 'prieš {{count}} mėnesių', + secondsAgoShort: 'prieš {{count}} sek.', + minutesAgoShort: 'prieš {{count}} min.', + hoursAgoShort: 'prieš {{count}} val.', + today: 'Šiandien', + tomorrow: 'Rytoj', + weekAgo_one: 'prieš {{count}} savaitę', + weekAgo_few: 'prieš {{count}} savaites', + weekAgo_many: 'prieš {{count}} savaitės', + weekAgo_other: 'prieš {{count}} savaičių', + yesterday: 'Vakar', + }, + }, + decks: { + actions: { + actionMenu: '{{title}} veiksmai', + createDeck: 'Sukurti kaladę', + createNote: 'Sukurti pastabą', + deleteDeck: 'Ištrinti kaladę', + editDeck: 'Redaguoti kaladę', + newNote: 'Nauja pastaba', + openDeck: 'Atidaryti kaladę {{title}}', + saveDeck: 'Kaladės nepavyko įrašyti', + studyNow: 'Mokytis dabar', + }, + descriptions: { + emptyDeck: 'Pridėkite pastabą, kad ši kaladė turėtų medžiagos kartojimui.', + editorDefault: 'Sutelktam mokymuisi skirta kaladė.', + editorVisual: 'Pasirinkite šios kaladės viršelio simbolį.', + notesSearchPlaceholder: 'Ieškoti pastabų…', + }, + dialogs: { + deleteDeckDescription: 'Tai perkels "{{title}}" į Šiukšlinę. Galėsite atkurti vėliau.', + deleteDeckFallbackDescription: 'Tai perkels šią kaladę į Šiukšlinę. Galėsite atkurti vėliau.', + deleteDeckFallbackTitle: 'Ištrinti kaladę?', + deleteDeckTitle: 'Ištrinti "{{title}}"?', + deleteNoteDescription: 'Tai perkels "{{title}}" į Šiukšlinę. Galėsite atkurti vėliau.', + deleteNoteFallbackTitle: 'Ištrinti pastabą?', + deleteNoteTitle: 'Ištrinti "{{title}}"?', + }, + empty: { + noMatchingNotes: 'Nėra atitinkančių pastabų', + noMatchingNotesDescription: 'Jokia pastaba neatitiko "{{query}}".', + thisDeckIsEmpty: 'Ši kaladė tuščia', + }, + errors: { + couldNotCreateDeck: 'Kaladės nepavyko sukurti', + couldNotDeleteDeck: 'Kaladės nepavyko ištrinti', + couldNotDeleteNote: 'Pastabos nepavyko ištrinti', + couldNotLoadFolderPath: 'Aplanko kelio nepavyko įkelti', + couldNotSaveDeck: 'Kaladės nepavyko įrašyti', + deckCouldNotLoad: 'Kaladės nepavyko įkelti', + notesCouldNotLoad: 'Pastabų nepavyko įkelti', + notesMayBeOutOfDate: 'Pastabos gali būti pasenusios', + }, + fields: { + descriptionLabel: 'Kaladės aprašas', + descriptionPlaceholder: 'Ką ši kaladė padės jums kartoti?', + namePlaceholder: 'Kaladės pavadinimas', + untitledDeck: 'Kaladė be pavadinimo', + untitledDeckLower: 'kaladė be pavadinimo', + }, + labels: { + createDeckTitle: 'Sukurti kaladę', + deck: 'Kaladė', + deckNotesSearch: 'Kaladės pastabų paieška', + deckOverview: 'Kaladės apžvalga', + decks: 'Kaladės', + due: 'Terminas', + dueToday: 'Terminas šiandien', + loadingDeck: 'Įkeliama kaladė', + mastery: 'Įsisavinimas', + notes: 'Pastabos', + }, + sort: { + ariaLabel: 'Rikiuoti kalades', + dueToday: 'Terminas šiandien', + title: 'Pavadinimas', + updated: 'Atnaujinta', + }, + }, + errors: { + byType: { + conflict: 'Duomenys pasikeitė. Atnaujinkite ir bandykite dar kartą.', + forbidden: 'Neturite leidimo tai atlikti.', + notFound: 'Nepavyko rasti šio elemento.', + offline: 'Nepavyksta pasiekti paslaugos.', + timeout: 'Tai užtruko per ilgai. Bandykite dar kartą.', + unauthorized: 'Prisijunkite, kad tęstumėte.', + unavailable: 'Paslauga laikinai nepasiekiama.', + }, + fallback: { + unexpected: 'Netikėta klaida', + }, + }, + folders: { + actions: { + createFolder: 'Sukurti aplanką', + deleteFolder: 'Ištrinti aplanką', + editFolder: 'Redaguoti aplanką', + }, + descriptions: { + editorDefault: 'Aplankas susijusioms kaladėms.', + }, + dialogs: { + deleteFolderDescription: 'Tai perkels "{{name}}" į Šiukšlinę. Galėsite atkurti vėliau.', + deleteFolderFallbackDescription: 'Tai perkels šį aplanką į Šiukšlinę. Galėsite atkurti vėliau.', + deleteFolderFallbackTitle: 'Ištrinti aplanką?', + deleteFolderTitle: 'Ištrinti "{{name}}"?', + }, + empty: { + noMatchesInFolder: 'Šiame aplanke nėra atitikmenų', + noMatchesInFolderDescription: 'Joks aplankas, kaladė ar pastaba neatitiko "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'Aplanko nepavyko sukurti', + couldNotDeleteFolder: 'Aplanko nepavyko ištrinti', + couldNotLoadFolderPath: 'Aplanko kelio nepavyko įkelti', + couldNotSaveFolder: 'Aplanko nepavyko įrašyti', + folderCouldNotLoad: 'Aplanko nepavyko įkelti', + }, + fields: { + descriptionLabel: 'Aplanko aprašas', + descriptionPlaceholder: 'Kas priklauso šiam aplankui?', + namePlaceholder: 'Aplanko pavadinimas', + untitledFolder: 'Aplankas be pavadinimo', + }, + labels: { + createFolderTitle: 'Sukurti aplanką', + folder: 'Aplankas', + folders: 'Aplankai', + loadingFolder: 'Įkeliamas aplankas', + name: 'Pavadinimas', + updated: 'Atnaujinta', + }, + sort: { + ariaLabel: 'Rikiuoti aplankus', + name: 'Pavadinimas', + updated: 'Atnaujinta', + }, + }, + menu: { + conflicts: { + description: 'Jei vietiniai ir sinchronizuoti duomenys kada nors nesutaps, elementas bus rodomas čia.', + heading: 'Sinchronizavimo būsena', + title: 'Konfliktai', + noConflicts: 'Konfliktų nerasta', + }, + labels: { + menu: 'Meniu', + }, + sections: { + settings: { + description: 'Pritaikykite aplinką ir nuostatas', + title: 'Nustatymai', + }, + trash: { + description: 'Atkurkite arba visam laikui ištrinkite pašalintus elementus', + title: 'Šiukšlinė', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Uždaryti redaktorių', + openActions: 'Atidaryti veiksmus', + openWorkspaces: 'Atidaryti darbo sritis', + }, + items: { + home: 'Pradžia', + menu: 'Meniu', + primary: 'Pagrindinis', + settings: 'Nustatymai', + spaces: 'Sritys', + trash: 'Šiukšlinė', + workspaces: 'Darbo sritys', + }, + }, + notes: { + actions: { + addCloze: 'Pridėti cloze', + deleteNote: 'Ištrinti pastabą', + editNote: 'Redaguoti pastabą', + hideDerivedCardsNote: 'Slėpti pastabą apie išvestines korteles', + openNote: 'Atidaryti {{title}}', + saveNote: 'Įrašyti pastabą', + showDerivedCardsNote: 'Rodyti pastabą apie išvestines korteles', + }, + descriptions: { + clozeFormat: 'Kiekviena paslėpta dalis įrašius tampa kartojimo kortele.', + clozeFormatPrefix: 'Apgaubkite paslėptą tekstą', + derivedCardsHelper: 'Pastabos yra pagrindinis išvestinių kortelių šaltinis.', + }, + dialogs: { + deleteNoteDescription: 'Tai perkels "{{title}}" į Šiukšlinę. Galėsite atkurti vėliau.', + deleteNoteFallbackDescription: 'Tai perkels šią pastabą į Šiukšlinę. Galėsite atkurti vėliau.', + deleteNoteFallbackTitle: 'Ištrinti pastabą?', + deleteNoteTitle: 'Ištrinti "{{title}}"?', + }, + errors: { + couldNotCreateNote: 'Pastabos nepavyko sukurti', + couldNotDeleteNote: 'Pastabos nepavyko ištrinti', + couldNotSaveNote: 'Pastabos nepavyko įrašyti', + noteCouldNotLoad: 'Pastabos nepavyko įkelti', + }, + fields: { + back: 'Kita pusė', + backPlaceholder: 'Įveskite kitą pusę', + bodyPlaceholder: 'Rašykite pastabos turinį su cloze ištrynimais…', + front: 'Priekinė pusė', + frontPlaceholder: 'Įveskite priekinę pusę', + noteBody: 'Pastabos turinys', + title: 'Pavadinimas', + titlePlaceholder: 'Pridėkite pastabos pavadinimą', + untitledCloze: 'Cloze be pavadinimo', + untitledNote: 'Pastaba be pavadinimo', + }, + labels: { + backUppercase: 'KITA PUSĖ', + basic: 'Paprasta', + basicLower: 'paprasta', + basicUppercase: 'PAPRASTA', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Cloze formatas', + clozeUppercase: 'CLOZE', + deck: 'Kaladė', + derivedCards: 'IŠVESTINĖS KORTELĖS', + due: 'Terminas', + frontUppercase: 'PRIEKINĖ PUSĖ', + inProgress: 'Vykdoma', + inProgressUppercase: 'VYKDOMA', + loadingNote: 'Įkeliama pastaba', + loadingNoteEditor: 'Įkeliamas pastabų redaktorius', + markdownFormatting: 'Markdown formatavimas', + mastered: 'Įsisavinta', + masteredUppercase: 'ĮSISAVINTA', + newNote: 'Nauja pastaba', + noteBody: 'PASTABOS TURINYS', + noteContent: 'Pastabos turinys', + noteDetails: 'Pastabos informacija', + noteMetadata: 'Pastabos metaduomenys', + noteType: 'Pastabos tipas', + notes: 'Pastabos', + reviewed: 'Kartota', + studyProgress: 'Mokymosi pažanga', + studyProgressUppercase: 'MOKYMOSI PAŽANGA', + titleUppercase: 'PAVADINIMAS', + updated: 'Atnaujinta', + }, + sort: { + ariaLabel: 'Rikiuoti pastabas', + title: 'Pavadinimas', + updated: 'Atnaujinta', + }, + toolbar: { + bold: 'Paryškintas', + italic: 'Kursyvas', + link: 'Nuoroda', + list: 'Sąrašas', + }, + }, + review: { + actions: { + again: 'Vėl', + backToDeck: 'Grįžti į kaladę', + continueReview: 'Tęsti kartojimą', + easy: 'Lengva', + good: 'Gerai', + hard: 'Sunku', + newNote: 'Nauja pastaba', + showAnswer: 'Rodyti atsakymą', + }, + errors: { + couldNotGradeCard: 'Kortelės nepavyko įvertinti', + reviewCouldNotLoad: 'Kartojimo nepavyko įkelti', + reviewCouldNotStart: 'Kartojimo nepavyko pradėti', + summaryCouldNotLoad: 'Kartojimo suvestinės nepavyko įkelti', + summaryNotAvailable: 'Kartojimo suvestinė nepasiekiama', + summaryNotComplete: 'Šis kartojimas dar nebaigtas.', + }, + labels: { + cardsReviewed: 'Kartotos kortelės', + deck: 'Kaladė', + duration: 'Trukmė', + loadingReview: 'Įkeliamas kartojimas', + loadingSummary: 'Įkeliama suvestinė', + progress: 'Kartojimo pažanga', + review: 'Kartojimas', + reviewComplete: 'Kartojimas baigtas', + reviewed_one: 'Kartota {{count}}', + reviewed_few: 'Kartotos {{count}}', + reviewed_many: 'Kartota {{count}}', + reviewed_other: 'Kartota {{count}}', + }, + summary: { + durationHoursMinutes: '{{hours}} val. {{minutes}} min.', + durationMinutes: '{{minutes}} min.', + durationSeconds: '{{seconds}} sek.', + saved: 'Jūsų pažanga įrašyta į šią kaladę.', + }, + unavailable: { + description: 'Pridėkite pastabą, kad ši kaladė galėtų patekti į kartojimo eilę.', + title: 'Nėra kortelių kartojimui', + }, + }, + search: { + actions: { + clearSearch: 'Išvalyti paiešką', + }, + empty: { + noMatchesInWorkspace: 'Šioje darbo srityje nėra atitikmenų', + noMatchesInWorkspaceDescription: 'Joks aplankas, kaladė ar pastaba neatitiko "{{query}}".', + }, + errors: { + couldNotComplete: 'Paieškos nepavyko užbaigti', + }, + labels: { + results: 'Paieškos rezultatai', + resultsFor: '"{{query}}" rezultatai', + searchingContent: 'Ieškoma turinyje', + }, + resultGroups: { + deck: 'Kaladės', + folder: 'Aplankai', + note: 'Pastabos', + }, + resultKinds: { + deck: 'kaladė', + folder: 'aplankas', + note: 'pastaba', + }, + }, + settings: { + actions: { + resetAll: 'Atstatyti visus nustatymus', + resetSettings: 'Atstatyti nustatymus', + resetToDefaults: 'Atstatyti numatytuosius', + }, + dialogs: { + fsrsErrorInvalidJson: 'Įklijuokite tinkamą JSON su 21 skaitine reikšme.', + fsrsErrorInvalidParams_one: 'Įveskite JSON masyvą su tiksliai {{count}} baigtiniu skaičiumi.', + fsrsErrorInvalidParams_few: 'Įveskite JSON masyvą su tiksliai {{count}} baigtiniais skaičiais.', + fsrsErrorInvalidParams_many: 'Įveskite JSON masyvą su tiksliai {{count}} baigtinio skaičiaus.', + fsrsErrorInvalidParams_other: 'Įveskite JSON masyvą su tiksliai {{count}} baigtinių skaičių.', + fsrsHelper: 'Tai ekspertinis perrašymas. Reikšmės turi likti tokia pačia tvarka.', + fsrsJsonLabel: 'FSRS parametrų JSON', + fsrsTitle: 'Redaguoti FSRS parametrus', + fsrsDescription: 'Įklijuokite JSON masyvą su 21 skaičiumi, kad perrašytumėte planuoklio svorius.', + resetDescription: 'Tai atstatys laiko juostą, mokymosi limitus ir FSRS nustatymus.', + resetDescriptionWithLanguage: 'Tai atstatys kalbą, laiko juostą, mokymosi limitus ir FSRS nustatymus.', + resetTitle: 'Atstatyti visus nustatymus?', + timezoneDescription: 'Ieškokite miesto arba laiko juostos identifikatoriaus.', + timezoneSearchLabel: 'Ieškoti laiko juostų', + timezoneSearchPlaceholder: 'Ieškoti laiko juostų…', + timezoneTitle: 'Pasirinkti laiko juostą', + }, + errors: { + couldNotResetSettings: 'Nustatymų nepavyko atstatyti', + couldNotSaveSettings: 'Nustatymų nepavyko įrašyti', + settingsCouldNotLoad: 'Nustatymų nepavyko įkelti', + settingsUnavailable: 'Nustatymai nepasiekiami.', + }, + labels: { + appearance: 'Išvaizda', + automatic: 'Automatiškai', + fsrsParameters: 'FSRS parametrai', + general: 'Bendra', + language: 'Kalba', + loadingSettings: 'Įkeliami nustatymai', + masteryHorizon: 'Įsisavinimo horizontas', + newCardOrder: 'Naujų kortelių tvarka', + newCardsPerDay: 'Naujos kortelės per dieną', + reviewCardsPerDay: 'Kartojimo kortelės per dieną', + savingSettings: 'Įrašomi nustatymai', + schedule: 'Tvarkaraštis', + searchNoTimezones: 'Nėra atitinkančių laiko juostų.', + settings: 'Nustatymai', + settingsReset: 'Nustatymai atstatyti', + study: 'Mokymasis', + targetRecallProbability: 'Tikslinė prisiminimo tikimybė', + theme: 'Tema', + timezone: 'Laiko juosta', + }, + options: { + languageEnUs: 'Anglų (JAV)', + newCardsAfterReviews: 'Po kartojimų', + newCardsBeforeReviews: 'Prieš kartojimus', + newCardsMixed: 'Mišriai', + themeDark: 'Tamsi', + themeLight: 'Šviesi', + themeSystem: 'Sistema', + timezoneSystem: 'Naudoti sistemos laiko juostą', + }, + rows: { + fsrsDescription: 'Ekspertinio modelio svoriai', + languageDescription: 'Sąsajos kalba', + masteryHorizonDescription: 'Dienų skaičius, kurį kortelė turi išlikti prisimenama tiksline tikimybe arba didesne, kad būtų laikoma įsisavinta', + newCardOrderDescription: 'Naujų kortelių tvarka kartojimų atžvilgiu', + newCardsPerDayDescription: 'Didžiausias naujų kortelių skaičius per dieną', + reviewCardsPerDayDescription: 'Didžiausias kartojimo kortelių skaičius per dieną', + targetRecallProbabilityDescription: 'Mažiausia prisiminimo tikimybė per kitą suplanuotą kartojimą', + timezoneDescription: 'Naudokite automatinę laiko juostą arba pasirinkite miestą.', + }, + }, + trash: { + actions: { + deletePermanently: 'Ištrinti visam laikui', + empty: 'Ištuštinti', + emptyTrash: 'Ištuštinti šiukšlinę', + restore: 'Atkurti', + restoringItem: 'Atkuriama {{title}}', + }, + dialogs: { + deleteItemDescription: 'Tai visam laikui ištrins "{{title}}". To negalima atšaukti.', + deleteItemFallbackDescription: 'Tai visam laikui ištrins šį elementą. To negalima atšaukti.', + deleteItemFallbackTitle: 'Ištrinti elementą?', + deleteItemTitle: 'Ištrinti "{{title}}"?', + emptyTrashDescription: 'Tai visam laikui ištrins viską Šiukšlinėje. To negalima atšaukti.', + emptyTrashTitle: 'Ištuštinti šiukšlinę?', + }, + empty: { + description: 'Elementai, kuriuos ištrinsite, čia bus rodomi prieš pašalinant visam laikui.', + title: 'Šiukšlinė tuščia', + }, + errors: { + couldNotDeleteItem: 'Elemento nepavyko ištrinti', + couldNotEmptyTrash: 'Šiukšlinės nepavyko ištuštinti', + couldNotRestoreItem: 'Elemento nepavyko atkurti', + trashCouldNotLoad: 'Šiukšlinės nepavyko įkelti', + trashMayBeOutOfDate: 'Šiukšlinė gali būti pasenusi', + }, + labels: { + deletedAge: 'Ištrinta {{value}}', + itemCount_one: '{{count}} elementas', + itemCount_few: '{{count}} elementai', + itemCount_many: '{{count}} elemento', + itemCount_other: '{{count}} elementų', + lastEmptied: 'Paskutinį kartą ištuštinta {{value}}', + loadingTrash: 'Įkeliama Šiukšlinė', + originalLocation: 'Pradinė vieta: {{location}}', + title: 'Šiukšlinė', + trashActions: '{{title}} šiukšlinės veiksmai', + }, + kinds: { + deck: 'Kaladė', + folder: 'Aplankas', + note: 'Pastaba', + workspace: 'Darbo sritis', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Sukurti darbo sritį', + deleteWorkspace: 'Ištrinti darbo sritį', + editWorkspace: 'Redaguoti darbo sritį', + newWorkspace: 'Nauja darbo sritis', + openWorkspace: 'Atidaryti {{title}}', + openingWorkspace: 'Atidaroma {{title}}', + }, + descriptions: { + editorDefault: 'Mokymosi kontekstas.', + editorVisual: 'Pasirinkite šios darbo srities vizualinį orientyrą.', + emptyList: 'Atskirkite kalades, pastabas ir kartojimo eiles pagal mokymosi kontekstą.', + }, + dialogs: { + deleteWorkspaceDescription: 'Tai perkels "{{title}}" į Šiukšlinę. Galėsite atkurti vėliau.', + deleteWorkspaceFallbackDescription: 'Tai perkels šią darbo sritį į Šiukšlinę. Galėsite atkurti vėliau.', + deleteWorkspaceFallbackTitle: 'Ištrinti darbo sritį?', + deleteWorkspaceTitle: 'Ištrinti "{{title}}"?', + }, + empty: { + startWithWorkspace: 'Pradėkite nuo darbo srities', + }, + errors: { + couldNotCreateWorkspace: 'Darbo srities nepavyko sukurti', + couldNotDeleteWorkspace: 'Darbo srities nepavyko ištrinti', + couldNotOpenWorkspace: 'Darbo srities nepavyko atidaryti', + couldNotSaveWorkspace: 'Darbo srities nepavyko įrašyti', + workspaceCouldNotLoad: 'Darbo srities nepavyko įkelti', + workspacesCouldNotLoad: 'Darbo sričių nepavyko įkelti', + }, + fields: { + descriptionLabel: 'Darbo srities aprašas', + descriptionPlaceholder: 'Kas priklauso šiai darbo sričiai?', + namePlaceholder: 'Darbo srities pavadinimas', + untitledWorkspace: 'Darbo sritis be pavadinimo', + }, + labels: { + createWorkspaceTitle: 'Sukurti darbo sritį', + loadingWorkspaces: 'Įkeliamos darbo sritys', + workspace: 'Darbo sritis', + workspaces: 'Darbo sritys', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/lv.ts b/ui/src/core/i18n/resources/lv.ts new file mode 100644 index 0000000..17bddfa --- /dev/null +++ b/ui/src/core/i18n/resources/lv.ts @@ -0,0 +1,636 @@ +export const lv = { + bootstrap: { + error: { + fallbackMessage: 'Mēģiniet vēlreiz. Ja tas turpinās, vēlreiz atveriet Clear.', + title: 'Neizdevās startēt', + }, + loadingTitle: 'Sagatavo jūsu mācību vietu', + }, + common: { + actions: { + back: 'Atpakaļ', + cancel: 'Atcelt', + checkAgain: 'Pārbaudīt vēlreiz', + close: 'Aizvērt', + create: 'Izveidot', + delete: 'Dzēst', + dismissError: 'Aizvērt kļūdu', + dismissStatus: 'Aizvērt statusu', + edit: 'Rediģēt', + itemActions: '{{title}} darbības', + reset: 'Atiestatīt', + review: 'Atkārtot', + save: 'Saglabāt', + saveChanges: 'Saglabāt izmaiņas', + tryAgain: 'Mēģināt vēlreiz', + }, + labels: { + active: 'Aktīvs', + clear: 'Clear', + custom: 'Pielāgots', + default: 'Noklusējums', + loadingEditor: 'Ielādē redaktoru', + name: 'Nosaukums', + completedTask: 'Pabeigts uzdevums', + description: 'Apraksts', + incompleteTask: 'Nepabeigts uzdevums', + percentageInput: '{{label}} procentos', + visual: 'Vizuāls', + }, + status: { + actionFailed: 'Darbība neizdevās', + actionInProgress: 'Darbība notiek', + }, + sort: { + ascending: 'Augošā', + column: 'Kolonna', + descending: 'Dilstošā', + direction: 'Virziens', + sort: 'Kārtot', + }, + search: { + label: 'Meklēšana', + }, + visualPicker: { + allLucideIcons: 'Visas Lucide ikonas', + browseIconsFor: 'Pārlūkojiet vai meklējiet ikonas: {{label}}.', + chooseIcon: 'Izvēlēties ikonu', + iconPicker: '{{label}} ikonas izvēle', + iconSearch: '{{label}} ikonu meklēšana', + iconsCouldNotLoad: 'Ikonas neizdevās ielādēt.', + loadingIcons: 'Ielādē ikonas', + loadingMoreIcons: 'Ielādē papildu ikonas', + moreIcons: 'Vairāk ikonu', + noIconsMatch: 'Neviena ikona neatbilst "{{query}}".', + searchIconsPlaceholder: 'Meklēt ikonas…', + selectedIcon: 'Izvēlēts {{label}}', + }, + }, + dashboard: { + actions: { + create: 'Izveidot', + newDeck: 'Jauna kava', + newFolder: 'Jauna mape', + }, + descriptions: { + defaultWorkspace: 'Glabājiet kavas, mapes un piezīmes kopā.', + emptyWorkspace: 'Izveidojiet kavu un pēc tam pievienojiet piezīmes, lai izveidotu atkārtošanas rindu.', + emptyFolder: 'Izveidojiet kavu un pēc tam pievienojiet piezīmes, lai izveidotu atkārtošanas rindu.', + searchPlaceholder: 'Meklēt mapes, kavas un piezīmes…', + }, + empty: { + createFirstDeck: 'Izveidojiet savu pirmo kavu', + }, + errors: { + couldNotDeleteDeck: 'Neizdevās dzēst kavu', + couldNotDeleteFolder: 'Neizdevās dzēst mapi', + couldNotDeleteWorkspace: 'Neizdevās dzēst darbvietu', + dashboardCouldNotOpen: 'Neizdevās atvērt informācijas paneli', + decksCouldNotLoad: 'Neizdevās ielādēt kavas', + decksMayBeOutOfDate: 'Kavas var būt novecojušas', + foldersCouldNotLoad: 'Neizdevās ielādēt mapes', + foldersMayBeOutOfDate: 'Mapes var būt novecojušas', + workspaceCouldNotLoad: 'Neizdevās ielādēt darbvietu', + }, + labels: { + dashboard: 'Informācijas panelis', + loadingDashboard: 'Ielādē informācijas paneli', + newItem: 'Jauns vienums', + }, + }, + dates: { + absolute: { + unavailable: 'Datums nav pieejams', + }, + age: { + dayAgo_zero: 'pirms {{count}} dienām', + dayAgo_one: 'pirms {{count}} dienas', + dayAgo_other: 'pirms {{count}} dienām', + hourAgo_zero: 'pirms {{count}} stundām', + hourAgo_one: 'pirms {{count}} stundas', + hourAgo_other: 'pirms {{count}} stundām', + justNow: 'tikko', + minuteAgo_zero: 'pirms {{count}} minūtēm', + minuteAgo_one: 'pirms {{count}} minūtes', + minuteAgo_other: 'pirms {{count}} minūtēm', + unavailable: 'datums nav pieejams', + weekAgo_zero: 'pirms {{count}} nedēļām', + weekAgo_one: 'pirms {{count}} nedēļas', + weekAgo_other: 'pirms {{count}} nedēļām', + }, + labels: { + deleted: 'Dzēsts {{value}}', + due: 'Termiņš: {{value}}', + reviewed: 'Atkārtots: {{value}}', + updated: 'Atjaunināts {{value}}', + updatedUppercase: 'ATJAUNINĀTS {{value}}', + }, + relative: { + dayAgo_zero: 'pirms {{count}} dienām', + dayAgo_one: 'pirms {{count}} dienas', + dayAgo_other: 'pirms {{count}} dienām', + inAMoment: 'Pēc brīža', + inDay_zero: 'Pēc {{count}} dienām', + inDay_one: 'Pēc {{count}} dienas', + inDay_other: 'Pēc {{count}} dienām', + inMonth_zero: 'Pēc {{count}} mēnešiem', + inMonth_one: 'Pēc {{count}} mēneša', + inMonth_other: 'Pēc {{count}} mēnešiem', + inWeek_zero: 'Pēc {{count}} nedēļām', + inWeek_one: 'Pēc {{count}} nedēļas', + inWeek_other: 'Pēc {{count}} nedēļām', + justNow: 'Tikko', + monthAgo_zero: 'pirms {{count}} mēnešiem', + monthAgo_one: 'pirms {{count}} mēneša', + monthAgo_other: 'pirms {{count}} mēnešiem', + secondsAgoShort: 'pirms {{count}} s', + minutesAgoShort: 'pirms {{count}} min', + hoursAgoShort: 'pirms {{count}} st', + today: 'Šodien', + tomorrow: 'Rīt', + weekAgo_zero: 'pirms {{count}} nedēļām', + weekAgo_one: 'pirms {{count}} nedēļas', + weekAgo_other: 'pirms {{count}} nedēļām', + yesterday: 'Vakar', + }, + }, + decks: { + actions: { + actionMenu: '{{title}} darbības', + createDeck: 'Izveidot kavu', + createNote: 'Izveidot piezīmi', + deleteDeck: 'Dzēst kavu', + editDeck: 'Rediģēt kavu', + newNote: 'Jauna piezīme', + openDeck: 'Atvērt kavu {{title}}', + saveDeck: 'Neizdevās saglabāt kavu', + studyNow: 'Mācīties tagad', + }, + descriptions: { + emptyDeck: 'Pievienojiet piezīmi, lai šai kavai būtu materiāls atkārtošanai.', + editorDefault: 'Mērķēta mācību kava.', + editorVisual: 'Izvēlieties vāka simbolu šai kavai.', + notesSearchPlaceholder: 'Meklēt piezīmes…', + }, + dialogs: { + deleteDeckDescription: 'Tas pārvieto "{{title}}" uz Atkritni. Vēlāk to varēsiet atjaunot.', + deleteDeckFallbackDescription: 'Tas pārvieto šo kavu uz Atkritni. Vēlāk to varēsiet atjaunot.', + deleteDeckFallbackTitle: 'Dzēst kavu?', + deleteDeckTitle: 'Dzēst "{{title}}"?', + deleteNoteDescription: 'Tas pārvieto "{{title}}" uz Atkritni. Vēlāk to varēsiet atjaunot.', + deleteNoteFallbackTitle: 'Dzēst piezīmi?', + deleteNoteTitle: 'Dzēst "{{title}}"?', + }, + empty: { + noMatchingNotes: 'Nav atbilstošu piezīmju', + noMatchingNotesDescription: 'Neviena piezīme neatbilda "{{query}}".', + thisDeckIsEmpty: 'Šī kava ir tukša', + }, + errors: { + couldNotCreateDeck: 'Neizdevās izveidot kavu', + couldNotDeleteDeck: 'Neizdevās dzēst kavu', + couldNotDeleteNote: 'Neizdevās dzēst piezīmi', + couldNotLoadFolderPath: 'Neizdevās ielādēt mapes ceļu', + couldNotSaveDeck: 'Neizdevās saglabāt kavu', + deckCouldNotLoad: 'Neizdevās ielādēt kavu', + notesCouldNotLoad: 'Neizdevās ielādēt piezīmes', + notesMayBeOutOfDate: 'Piezīmes var būt novecojušas', + }, + fields: { + descriptionLabel: 'Kavas apraksts', + descriptionPlaceholder: 'Ko šī kava palīdzēs atkārtot?', + namePlaceholder: 'Kavas nosaukums', + untitledDeck: 'Kava bez nosaukuma', + untitledDeckLower: 'kava bez nosaukuma', + }, + labels: { + createDeckTitle: 'Izveidot kavu', + deck: 'Kava', + deckNotesSearch: 'Kavas piezīmju meklēšana', + deckOverview: 'Kavas pārskats', + decks: 'Kavas', + due: 'Termiņš', + dueToday: 'Termiņš šodien', + loadingDeck: 'Ielādē kavu', + mastery: 'Apgūšana', + notes: 'Piezīmes', + }, + sort: { + ariaLabel: 'Kārtot kavas', + dueToday: 'Termiņš šodien', + title: 'Nosaukums', + updated: 'Atjaunināts', + }, + }, + errors: { + byType: { + conflict: 'Dati ir mainījušies. Atsvaidziniet un mēģiniet vēlreiz.', + forbidden: 'Jums nav atļaujas to darīt.', + notFound: 'Neizdevās atrast šo vienumu.', + offline: 'Nevar sasniegt pakalpojumu.', + timeout: 'Tas aizņēma pārāk ilgu laiku. Mēģiniet vēlreiz.', + unauthorized: 'Pierakstieties, lai turpinātu.', + unavailable: 'Pakalpojums īslaicīgi nav pieejams.', + }, + fallback: { + unexpected: 'Negaidīta kļūda', + }, + }, + folders: { + actions: { + createFolder: 'Izveidot mapi', + deleteFolder: 'Dzēst mapi', + editFolder: 'Rediģēt mapi', + }, + descriptions: { + editorDefault: 'Mape saistītām kavām.', + }, + dialogs: { + deleteFolderDescription: 'Tas pārvieto "{{name}}" uz Atkritni. Vēlāk to varēsiet atjaunot.', + deleteFolderFallbackDescription: 'Tas pārvieto šo mapi uz Atkritni. Vēlāk to varēsiet atjaunot.', + deleteFolderFallbackTitle: 'Dzēst mapi?', + deleteFolderTitle: 'Dzēst "{{name}}"?', + }, + empty: { + noMatchesInFolder: 'Šajā mapē nav atbilstību', + noMatchesInFolderDescription: 'Neviena mape, kava vai piezīme neatbilda "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'Neizdevās izveidot mapi', + couldNotDeleteFolder: 'Neizdevās dzēst mapi', + couldNotLoadFolderPath: 'Neizdevās ielādēt mapes ceļu', + couldNotSaveFolder: 'Neizdevās saglabāt mapi', + folderCouldNotLoad: 'Neizdevās ielādēt mapi', + }, + fields: { + descriptionLabel: 'Mapes apraksts', + descriptionPlaceholder: 'Kas pieder šai mapei?', + namePlaceholder: 'Mapes nosaukums', + untitledFolder: 'Mape bez nosaukuma', + }, + labels: { + createFolderTitle: 'Izveidot mapi', + folder: 'Mape', + folders: 'Mapes', + loadingFolder: 'Ielādē mapi', + name: 'Nosaukums', + updated: 'Atjaunināts', + }, + sort: { + ariaLabel: 'Kārtot mapes', + name: 'Nosaukums', + updated: 'Atjaunināts', + }, + }, + menu: { + conflicts: { + description: 'Ja vietējie un sinhronizētie dati kādreiz nesakritīs, vienums parādīsies šeit.', + heading: 'Sinhronizācijas statuss', + title: 'Konflikti', + noConflicts: 'Konflikti nav atrasti', + }, + labels: { + menu: 'Izvēlne', + }, + sections: { + settings: { + description: 'Pielāgojiet vidi un preferences', + title: 'Iestatījumi', + }, + trash: { + description: 'Atjaunojiet vai neatgriezeniski dzēsiet noņemtos vienumus', + title: 'Atkritne', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Aizvērt redaktoru', + openActions: 'Atvērt darbības', + openWorkspaces: 'Atvērt darbvietas', + }, + items: { + home: 'Sākums', + menu: 'Izvēlne', + primary: 'Galvenais', + settings: 'Iestatījumi', + spaces: 'Vietas', + trash: 'Atkritne', + workspaces: 'Darbvietas', + }, + }, + notes: { + actions: { + addCloze: 'Pievienot cloze', + deleteNote: 'Dzēst piezīmi', + editNote: 'Rediģēt piezīmi', + hideDerivedCardsNote: 'Paslēpt piezīmi par atvasinātajām kartītēm', + openNote: 'Atvērt {{title}}', + saveNote: 'Saglabāt piezīmi', + showDerivedCardsNote: 'Rādīt piezīmi par atvasinātajām kartītēm', + }, + descriptions: { + clozeFormat: 'Katra paslēptā daļa pēc saglabāšanas kļūst par atkārtošanas kartīti.', + clozeFormatPrefix: 'Ievietojiet paslēpto tekstu starp', + derivedCardsHelper: 'Piezīmes ir patiesības avots atvasinātajām kartītēm.', + }, + dialogs: { + deleteNoteDescription: 'Tas pārvieto "{{title}}" uz Atkritni. Vēlāk to varēsiet atjaunot.', + deleteNoteFallbackDescription: 'Tas pārvieto šo piezīmi uz Atkritni. Vēlāk to varēsiet atjaunot.', + deleteNoteFallbackTitle: 'Dzēst piezīmi?', + deleteNoteTitle: 'Dzēst "{{title}}"?', + }, + errors: { + couldNotCreateNote: 'Neizdevās izveidot piezīmi', + couldNotDeleteNote: 'Neizdevās dzēst piezīmi', + couldNotSaveNote: 'Neizdevās saglabāt piezīmi', + noteCouldNotLoad: 'Neizdevās ielādēt piezīmi', + }, + fields: { + back: 'Aizmugure', + backPlaceholder: 'Ievadiet aizmuguri', + bodyPlaceholder: 'Rakstiet piezīmes saturu ar cloze dzēsumiem…', + front: 'Priekšpuse', + frontPlaceholder: 'Ievadiet priekšpusi', + noteBody: 'Piezīmes saturs', + title: 'Nosaukums', + titlePlaceholder: 'Pievienojiet piezīmes nosaukumu', + untitledCloze: 'Cloze bez nosaukuma', + untitledNote: 'Piezīme bez nosaukuma', + }, + labels: { + backUppercase: 'AIZMUGURE', + basic: 'Pamata', + basicLower: 'pamata', + basicUppercase: 'PAMATA', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Cloze formāts', + clozeUppercase: 'CLOZE', + deck: 'Kava', + derivedCards: 'ATVASINĀTĀS KARTĪTES', + due: 'Termiņš', + frontUppercase: 'PRIEKŠPUSE', + inProgress: 'Notiek', + inProgressUppercase: 'NOTIEK', + loadingNote: 'Ielādē piezīmi', + loadingNoteEditor: 'Ielādē piezīmju redaktoru', + markdownFormatting: 'Markdown formatēšana', + mastered: 'Apgūts', + masteredUppercase: 'APGŪTS', + newNote: 'Jauna piezīme', + noteBody: 'PIEZĪMES SATURS', + noteContent: 'Piezīmes saturs', + noteDetails: 'Piezīmes informācija', + noteMetadata: 'Piezīmes metadati', + noteType: 'Piezīmes tips', + notes: 'Piezīmes', + reviewed: 'Atkārtots', + studyProgress: 'Mācību progress', + studyProgressUppercase: 'MĀCĪBU PROGRESS', + titleUppercase: 'NOSAUKUMS', + updated: 'Atjaunināts', + }, + sort: { + ariaLabel: 'Kārtot piezīmes', + title: 'Nosaukums', + updated: 'Atjaunināts', + }, + toolbar: { + bold: 'Treknraksts', + italic: 'Slīpraksts', + link: 'Saite', + list: 'Saraksts', + }, + }, + review: { + actions: { + again: 'Vēlreiz', + backToDeck: 'Atpakaļ uz kavu', + continueReview: 'Turpināt atkārtošanu', + easy: 'Viegli', + good: 'Labi', + hard: 'Grūti', + newNote: 'Jauna piezīme', + showAnswer: 'Rādīt atbildi', + }, + errors: { + couldNotGradeCard: 'Neizdevās novērtēt kartīti', + reviewCouldNotLoad: 'Neizdevās ielādēt atkārtošanu', + reviewCouldNotStart: 'Neizdevās sākt atkārtošanu', + summaryCouldNotLoad: 'Neizdevās ielādēt atkārtošanas kopsavilkumu', + summaryNotAvailable: 'Atkārtošanas kopsavilkums nav pieejams', + summaryNotComplete: 'Šī atkārtošana vēl nav pabeigta.', + }, + labels: { + cardsReviewed: 'Atkārtotas kartītes', + deck: 'Kava', + duration: 'Ilgums', + loadingReview: 'Ielādē atkārtošanu', + loadingSummary: 'Ielādē kopsavilkumu', + progress: 'Atkārtošanas progress', + review: 'Atkārtošana', + reviewComplete: 'Atkārtošana pabeigta', + reviewed_zero: 'Atkārtots {{count}}', + reviewed_one: 'Atkārtota {{count}}', + reviewed_other: 'Atkārtotas {{count}}', + }, + summary: { + durationHoursMinutes: '{{hours}} st {{minutes}} min', + durationMinutes: '{{minutes}} min', + durationSeconds: '{{seconds}} s', + saved: 'Jūsu progress tika saglabāts šajā kavā.', + }, + unavailable: { + description: 'Pievienojiet piezīmi, lai šī kava varētu nonākt atkārtošanas rindā.', + title: 'Nav kartīšu atkārtošanai', + }, + }, + search: { + actions: { + clearSearch: 'Notīrīt meklēšanu', + }, + empty: { + noMatchesInWorkspace: 'Šajā darbvietā nav atbilstību', + noMatchesInWorkspaceDescription: 'Neviena mape, kava vai piezīme neatbilda "{{query}}".', + }, + errors: { + couldNotComplete: 'Neizdevās pabeigt meklēšanu', + }, + labels: { + results: 'Meklēšanas rezultāti', + resultsFor: 'Rezultāti vaicājumam "{{query}}"', + searchingContent: 'Meklē saturā', + }, + resultGroups: { + deck: 'Kavas', + folder: 'Mapes', + note: 'Piezīmes', + }, + resultKinds: { + deck: 'kava', + folder: 'mape', + note: 'piezīme', + }, + }, + settings: { + actions: { + resetAll: 'Atiestatīt visus iestatījumus', + resetSettings: 'Atiestatīt iestatījumus', + resetToDefaults: 'Atiestatīt uz noklusējumu', + }, + dialogs: { + fsrsErrorInvalidJson: 'Ielīmējiet derīgu JSON ar 21 skaitlisku vērtību.', + fsrsErrorInvalidParams_zero: 'Ievadiet JSON masīvu tieši ar {{count}} galīgiem skaitļiem.', + fsrsErrorInvalidParams_one: 'Ievadiet JSON masīvu tieši ar {{count}} galīgu skaitli.', + fsrsErrorInvalidParams_other: 'Ievadiet JSON masīvu tieši ar {{count}} galīgiem skaitļiem.', + fsrsHelper: 'Šī ir eksperta pārrakstīšana. Vērtībām jāpaliek secībā.', + fsrsJsonLabel: 'FSRS parametru JSON', + fsrsTitle: 'Rediģēt FSRS parametrus', + fsrsDescription: 'Ielīmējiet JSON masīvu ar 21 skaitli, lai pārrakstītu plānotāja svarus.', + resetDescription: 'Tas atjauno laika joslu, mācību limitus un FSRS iestatījumus.', + resetDescriptionWithLanguage: 'Tas atjauno valodu, laika joslu, mācību limitus un FSRS iestatījumus.', + resetTitle: 'Atiestatīt visus iestatījumus?', + timezoneDescription: 'Meklējiet pilsētu vai laika joslas identifikatoru.', + timezoneSearchLabel: 'Meklēt laika joslas', + timezoneSearchPlaceholder: 'Meklēt laika joslas…', + timezoneTitle: 'Izvēlieties laika joslu', + }, + errors: { + couldNotResetSettings: 'Neizdevās atiestatīt iestatījumus', + couldNotSaveSettings: 'Neizdevās saglabāt iestatījumus', + settingsCouldNotLoad: 'Neizdevās ielādēt iestatījumus', + settingsUnavailable: 'Iestatījumi nav pieejami.', + }, + labels: { + appearance: 'Izskats', + automatic: 'Automātiski', + fsrsParameters: 'FSRS parametri', + general: 'Vispārīgi', + language: 'Valoda', + loadingSettings: 'Ielādē iestatījumus', + masteryHorizon: 'Apgūšanas horizonts', + newCardOrder: 'Jauno kartīšu secība', + newCardsPerDay: 'Jaunas kartītes dienā', + reviewCardsPerDay: 'Atkārtošanas kartītes dienā', + savingSettings: 'Saglabā iestatījumus', + schedule: 'Grafiks', + searchNoTimezones: 'Nav atbilstošu laika joslu.', + settings: 'Iestatījumi', + settingsReset: 'Iestatījumi atiestatīti', + study: 'Mācības', + targetRecallProbability: 'Mērķa atcerēšanās varbūtība', + theme: 'Motīvs', + timezone: 'Laika josla', + }, + options: { + languageEnUs: 'Angļu (ASV)', + newCardsAfterReviews: 'Pēc atkārtošanām', + newCardsBeforeReviews: 'Pirms atkārtošanām', + newCardsMixed: 'Jaukti', + themeDark: 'Tumšs', + themeLight: 'Gaišs', + themeSystem: 'Sistēma', + timezoneSystem: 'Izmantot sistēmas laika joslu', + }, + rows: { + fsrsDescription: 'Eksperta modeļa svari', + languageDescription: 'Saskarnes valoda', + masteryHorizonDescription: 'Dienu skaits, cik ilgi kartītei jāpaliek atceramai pie mērķa varbūtības vai virs tās, lai tā skaitītos apgūta', + newCardOrderDescription: 'Jauno kartīšu secība attiecībā pret atkārtošanām', + newCardsPerDayDescription: 'Maksimālais jauno kartīšu skaits dienā', + reviewCardsPerDayDescription: 'Maksimālais atkārtošanas kartīšu skaits dienā', + targetRecallProbabilityDescription: 'Minimālā atcerēšanās varbūtība nākamajā ieplānotajā atkārtošanā', + timezoneDescription: 'Izmantojiet automātisku laika joslu vai izvēlieties pilsētu.', + }, + }, + trash: { + actions: { + deletePermanently: 'Dzēst neatgriezeniski', + empty: 'Iztukšot', + emptyTrash: 'Iztukšot atkritni', + restore: 'Atjaunot', + restoringItem: 'Atjauno {{title}}', + }, + dialogs: { + deleteItemDescription: 'Tas neatgriezeniski dzēsīs "{{title}}". To nevar atsaukt.', + deleteItemFallbackDescription: 'Tas neatgriezeniski dzēsīs šo vienumu. To nevar atsaukt.', + deleteItemFallbackTitle: 'Dzēst vienumu?', + deleteItemTitle: 'Dzēst "{{title}}"?', + emptyTrashDescription: 'Tas neatgriezeniski dzēsīs visu Atkritnē. To nevar atsaukt.', + emptyTrashTitle: 'Iztukšot atkritni?', + }, + empty: { + description: 'Dzēstie vienumi parādīsies šeit pirms neatgriezeniskas noņemšanas.', + title: 'Atkritne ir tukša', + }, + errors: { + couldNotDeleteItem: 'Neizdevās dzēst vienumu', + couldNotEmptyTrash: 'Neizdevās iztukšot atkritni', + couldNotRestoreItem: 'Neizdevās atjaunot vienumu', + trashCouldNotLoad: 'Neizdevās ielādēt atkritni', + trashMayBeOutOfDate: 'Atkritne var būt novecojusi', + }, + labels: { + deletedAge: 'Dzēsts {{value}}', + itemCount_zero: '{{count}} vienumu', + itemCount_one: '{{count}} vienums', + itemCount_other: '{{count}} vienumi', + lastEmptied: 'Pēdējoreiz iztukšots {{value}}', + loadingTrash: 'Ielādē Atkritni', + originalLocation: 'Sākotnējā atrašanās vieta: {{location}}', + title: 'Atkritne', + trashActions: '{{title}} atkritnes darbības', + }, + kinds: { + deck: 'Kava', + folder: 'Mape', + note: 'Piezīme', + workspace: 'Darbvieta', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Izveidot darbvietu', + deleteWorkspace: 'Dzēst darbvietu', + editWorkspace: 'Rediģēt darbvietu', + newWorkspace: 'Jauna darbvieta', + openWorkspace: 'Atvērt {{title}}', + openingWorkspace: 'Atver {{title}}', + }, + descriptions: { + editorDefault: 'Mācību konteksts.', + editorVisual: 'Izvēlieties vizuālo enkuru šai darbvietai.', + emptyList: 'Atdaliet kavas, piezīmes un atkārtošanas rindas pēc mācību konteksta.', + }, + dialogs: { + deleteWorkspaceDescription: 'Tas pārvieto "{{title}}" uz Atkritni. Vēlāk to varēsiet atjaunot.', + deleteWorkspaceFallbackDescription: 'Tas pārvieto šo darbvietu uz Atkritni. Vēlāk to varēsiet atjaunot.', + deleteWorkspaceFallbackTitle: 'Dzēst darbvietu?', + deleteWorkspaceTitle: 'Dzēst "{{title}}"?', + }, + empty: { + startWithWorkspace: 'Sāciet ar darbvietu', + }, + errors: { + couldNotCreateWorkspace: 'Neizdevās izveidot darbvietu', + couldNotDeleteWorkspace: 'Neizdevās dzēst darbvietu', + couldNotOpenWorkspace: 'Neizdevās atvērt darbvietu', + couldNotSaveWorkspace: 'Neizdevās saglabāt darbvietu', + workspaceCouldNotLoad: 'Neizdevās ielādēt darbvietu', + workspacesCouldNotLoad: 'Neizdevās ielādēt darbvietas', + }, + fields: { + descriptionLabel: 'Darbvietas apraksts', + descriptionPlaceholder: 'Kas pieder šai darbvietai?', + namePlaceholder: 'Darbvietas nosaukums', + untitledWorkspace: 'Darbvieta bez nosaukuma', + }, + labels: { + createWorkspaceTitle: 'Izveidot darbvietu', + loadingWorkspaces: 'Ielādē darbvietas', + workspace: 'Darbvieta', + workspaces: 'Darbvietas', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/nb.ts b/ui/src/core/i18n/resources/nb.ts new file mode 100644 index 0000000..a4d7d01 --- /dev/null +++ b/ui/src/core/i18n/resources/nb.ts @@ -0,0 +1,623 @@ +export const nb = { + bootstrap: { + error: { + fallbackMessage: 'Prøv igjen. Hvis dette fortsetter, åpner du Clear på nytt.', + title: 'Kunne ikke starte', + }, + loadingTitle: 'Forbereder studieområdet ditt', + }, + common: { + actions: { + back: 'Tilbake', + cancel: 'Avbryt', + checkAgain: 'Sjekk igjen', + close: 'Lukk', + create: 'Opprett', + delete: 'Slett', + dismissError: 'Lukk feil', + dismissStatus: 'Lukk status', + edit: 'Rediger', + itemActions: 'Handlinger for {{title}}', + reset: 'Tilbakestill', + review: 'Repetisjon', + save: 'Lagre', + saveChanges: 'Lagre endringer', + tryAgain: 'Prøv igjen', + }, + labels: { + active: 'Aktiv', + clear: 'Clear', + custom: 'Tilpasset', + default: 'Standard', + loadingEditor: 'Laster redigerer', + name: 'Navn', + completedTask: 'Fullført oppgave', + description: 'Beskrivelse', + incompleteTask: 'Ufullført oppgave', + percentageInput: '{{label}} i prosent', + visual: 'Visuell', + }, + status: { + actionFailed: 'Handlingen mislyktes', + actionInProgress: 'Handling pågår', + }, + sort: { + ascending: 'Stig.', + column: 'Kolonne', + descending: 'Synk.', + direction: 'Retning', + sort: 'Sorter', + }, + search: { + label: 'Søk', + }, + visualPicker: { + allLucideIcons: 'Alle Lucide-ikoner', + browseIconsFor: 'Bla gjennom eller søk etter ikoner for {{label}}.', + chooseIcon: 'Velg ikon', + iconPicker: 'Ikonvelger for {{label}}', + iconSearch: 'Ikonsøk for {{label}}', + iconsCouldNotLoad: 'Ikonene kunne ikke lastes inn.', + loadingIcons: 'Laster ikoner', + loadingMoreIcons: 'Laster flere ikoner', + moreIcons: 'Flere ikoner', + noIconsMatch: 'Ingen ikoner samsvarer med "{{query}}".', + searchIconsPlaceholder: 'Søk etter ikoner…', + selectedIcon: 'Valgt {{label}}', + }, + }, + dashboard: { + actions: { + create: 'Opprett', + newDeck: 'Ny kortstokk', + newFolder: 'Ny mappe', + }, + descriptions: { + defaultWorkspace: 'Hold kortstokker, mapper og notater samlet.', + emptyWorkspace: 'Opprett en kortstokk, og legg deretter til notater for å bygge repetisjonskøen din.', + emptyFolder: 'Opprett en kortstokk, og legg deretter til notater for å bygge en repetisjonskø.', + searchPlaceholder: 'Søk i mapper, kortstokker og notater…', + }, + empty: { + createFirstDeck: 'Opprett din første kortstokk', + }, + errors: { + couldNotDeleteDeck: 'Kortstokken kunne ikke slettes', + couldNotDeleteFolder: 'Mappen kunne ikke slettes', + couldNotDeleteWorkspace: 'Arbeidsområdet kunne ikke slettes', + dashboardCouldNotOpen: 'Dashbordet kunne ikke åpnes', + decksCouldNotLoad: 'Kortstokker kunne ikke lastes inn', + decksMayBeOutOfDate: 'Kortstokker kan være utdaterte', + foldersCouldNotLoad: 'Mapper kunne ikke lastes inn', + foldersMayBeOutOfDate: 'Mapper kan være utdaterte', + workspaceCouldNotLoad: 'Arbeidsområdet kunne ikke lastes inn', + }, + labels: { + dashboard: 'Dashbord', + loadingDashboard: 'Laster dashbord', + newItem: 'Nytt element', + }, + }, + dates: { + absolute: { + unavailable: 'Dato utilgjengelig', + }, + age: { + dayAgo_one: '{{count}} dag siden', + dayAgo_other: '{{count}} dager siden', + hourAgo_one: '{{count}} time siden', + hourAgo_other: '{{count}} timer siden', + justNow: 'akkurat nå', + minuteAgo_one: '{{count}} minutt siden', + minuteAgo_other: '{{count}} minutter siden', + unavailable: 'dato utilgjengelig', + weekAgo_one: '{{count}} uke siden', + weekAgo_other: '{{count}} uker siden', + }, + labels: { + deleted: 'Slettet {{value}}', + due: 'Frist: {{value}}', + reviewed: 'Repetert: {{value}}', + updated: 'Oppdatert {{value}}', + updatedUppercase: 'OPPDATERT {{value}}', + }, + relative: { + dayAgo_one: '{{count}} dag siden', + dayAgo_other: '{{count}} dager siden', + inAMoment: 'Om et øyeblikk', + inDay_one: 'Om {{count}} dag', + inDay_other: 'Om {{count}} dager', + inMonth_one: 'Om {{count}} måned', + inMonth_other: 'Om {{count}} måneder', + inWeek_one: 'Om {{count}} uke', + inWeek_other: 'Om {{count}} uker', + justNow: 'Akkurat nå', + monthAgo_one: '{{count}} måned siden', + monthAgo_other: '{{count}} måneder siden', + secondsAgoShort: '{{count}} s siden', + minutesAgoShort: '{{count}} min siden', + hoursAgoShort: '{{count}} t siden', + today: 'I dag', + tomorrow: 'I morgen', + weekAgo_one: '{{count}} uke siden', + weekAgo_other: '{{count}} uker siden', + yesterday: 'I går', + }, + }, + decks: { + actions: { + actionMenu: 'Handlinger for {{title}}', + createDeck: 'Opprett kortstokk', + createNote: 'Opprett notat', + deleteDeck: 'Slett kortstokk', + editDeck: 'Rediger kortstokk', + newNote: 'Nytt notat', + openDeck: 'Åpne kortstokken {{title}}', + saveDeck: 'Kortstokken kunne ikke lagres', + studyNow: 'Studer nå', + }, + descriptions: { + emptyDeck: 'Legg til et notat, så denne kortstokken har materiale å repetere.', + editorDefault: 'Fokusert studiekortstokk.', + editorVisual: 'Velg et omslagssymbol for denne kortstokken.', + notesSearchPlaceholder: 'Søk i notater…', + }, + dialogs: { + deleteDeckDescription: 'Dette flytter "{{title}}" til Papirkurv. Du kan gjenopprette den senere.', + deleteDeckFallbackDescription: 'Dette flytter denne kortstokken til Papirkurv. Du kan gjenopprette den senere.', + deleteDeckFallbackTitle: 'Slette kortstokk?', + deleteDeckTitle: 'Slette "{{title}}"?', + deleteNoteDescription: 'Dette flytter "{{title}}" til Papirkurv. Du kan gjenopprette det senere.', + deleteNoteFallbackTitle: 'Slette notat?', + deleteNoteTitle: 'Slette "{{title}}"?', + }, + empty: { + noMatchingNotes: 'Ingen samsvarende notater', + noMatchingNotesDescription: 'Ingen notater samsvarte med "{{query}}".', + thisDeckIsEmpty: 'Denne kortstokken er tom', + }, + errors: { + couldNotCreateDeck: 'Kortstokken kunne ikke opprettes', + couldNotDeleteDeck: 'Kortstokken kunne ikke slettes', + couldNotDeleteNote: 'Notatet kunne ikke slettes', + couldNotLoadFolderPath: 'Mappestien kunne ikke lastes inn', + couldNotSaveDeck: 'Kortstokken kunne ikke lagres', + deckCouldNotLoad: 'Kortstokken kunne ikke lastes inn', + notesCouldNotLoad: 'Notater kunne ikke lastes inn', + notesMayBeOutOfDate: 'Notater kan være utdaterte', + }, + fields: { + descriptionLabel: 'Kortstokkbeskrivelse', + descriptionPlaceholder: 'Hva skal denne kortstokken hjelpe deg med å repetere?', + namePlaceholder: 'Navn på kortstokk', + untitledDeck: 'Kortstokk uten tittel', + untitledDeckLower: 'kortstokk uten tittel', + }, + labels: { + createDeckTitle: 'Opprett kortstokk', + deck: 'Kortstokk', + deckNotesSearch: 'Søk i kortstokknotater', + deckOverview: 'Kortstokkoversikt', + decks: 'Kortstokker', + due: 'Frist', + dueToday: 'Frist i dag', + loadingDeck: 'Laster kortstokk', + mastery: 'Mestring', + notes: 'Notater', + }, + sort: { + ariaLabel: 'Sorter kortstokker', + dueToday: 'Frist i dag', + title: 'Tittel', + updated: 'Oppdatert', + }, + }, + errors: { + byType: { + conflict: 'Dataene ble endret. Oppdater og prøv igjen.', + forbidden: 'Du har ikke tillatelse til å gjøre dette.', + notFound: 'Vi fant ikke dette elementet.', + offline: 'Kan ikke nå tjenesten.', + timeout: 'Dette tok for lang tid. Prøv igjen.', + unauthorized: 'Logg inn for å fortsette.', + unavailable: 'Tjenesten er midlertidig utilgjengelig.', + }, + fallback: { + unexpected: 'Uventet feil', + }, + }, + folders: { + actions: { + createFolder: 'Opprett mappe', + deleteFolder: 'Slett mappe', + editFolder: 'Rediger mappe', + }, + descriptions: { + editorDefault: 'Mappe for relaterte kortstokker.', + }, + dialogs: { + deleteFolderDescription: 'Dette flytter "{{name}}" til Papirkurv. Du kan gjenopprette den senere.', + deleteFolderFallbackDescription: 'Dette flytter denne mappen til Papirkurv. Du kan gjenopprette den senere.', + deleteFolderFallbackTitle: 'Slette mappe?', + deleteFolderTitle: 'Slette "{{name}}"?', + }, + empty: { + noMatchesInFolder: 'Ingen treff i denne mappen', + noMatchesInFolderDescription: 'Ingen mapper, kortstokker eller notater samsvarte med "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'Mappen kunne ikke opprettes', + couldNotDeleteFolder: 'Mappen kunne ikke slettes', + couldNotLoadFolderPath: 'Mappestien kunne ikke lastes inn', + couldNotSaveFolder: 'Mappen kunne ikke lagres', + folderCouldNotLoad: 'Mappen kunne ikke lastes inn', + }, + fields: { + descriptionLabel: 'Mappebeskrivelse', + descriptionPlaceholder: 'Hva hører hjemme i denne mappen?', + namePlaceholder: 'Mappenavn', + untitledFolder: 'Mappe uten tittel', + }, + labels: { + createFolderTitle: 'Opprett mappe', + folder: 'Mappe', + folders: 'Mapper', + loadingFolder: 'Laster mappe', + name: 'Navn', + updated: 'Oppdatert', + }, + sort: { + ariaLabel: 'Sorter mapper', + name: 'Navn', + updated: 'Oppdatert', + }, + }, + menu: { + conflicts: { + description: 'Hvis lokale og synkroniserte data noen gang er uenige, vises elementet her.', + heading: 'Synkroniseringsstatus', + title: 'Konflikter', + noConflicts: 'Ingen konflikter funnet', + }, + labels: { + menu: 'Meny', + }, + sections: { + settings: { + description: 'Tilpass miljøet og innstillingene dine', + title: 'Innstillinger', + }, + trash: { + description: 'Gjenopprett eller slett fjernede elementer permanent', + title: 'Papirkurv', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Lukk redigerer', + openActions: 'Åpne handlinger', + openWorkspaces: 'Åpne arbeidsområder', + }, + items: { + home: 'Hjem', + menu: 'Meny', + primary: 'Primær', + settings: 'Innstillinger', + spaces: 'Områder', + trash: 'Papirkurv', + workspaces: 'Arbeidsområder', + }, + }, + notes: { + actions: { + addCloze: 'Legg til cloze', + deleteNote: 'Slett notat', + editNote: 'Rediger notat', + hideDerivedCardsNote: 'Skjul notat om avledede kort', + openNote: 'Åpne {{title}}', + saveNote: 'Lagre notat', + showDerivedCardsNote: 'Vis notat om avledede kort', + }, + descriptions: { + clozeFormat: 'Hver skjulte del blir et repetisjonskort når du lagrer.', + clozeFormatPrefix: 'Pakk skjult tekst inn med', + derivedCardsHelper: 'Notater er sannhetskilden for avledede kort.', + }, + dialogs: { + deleteNoteDescription: 'Dette flytter "{{title}}" til Papirkurv. Du kan gjenopprette det senere.', + deleteNoteFallbackDescription: 'Dette flytter dette notatet til Papirkurv. Du kan gjenopprette det senere.', + deleteNoteFallbackTitle: 'Slette notat?', + deleteNoteTitle: 'Slette "{{title}}"?', + }, + errors: { + couldNotCreateNote: 'Notatet kunne ikke opprettes', + couldNotDeleteNote: 'Notatet kunne ikke slettes', + couldNotSaveNote: 'Notatet kunne ikke lagres', + noteCouldNotLoad: 'Notatet kunne ikke lastes inn', + }, + fields: { + back: 'Bakside', + backPlaceholder: 'Skriv inn bakside', + bodyPlaceholder: 'Skriv notatinnholdet med cloze-slettinger…', + front: 'Forside', + frontPlaceholder: 'Skriv inn forside', + noteBody: 'Notatinnhold', + title: 'Tittel', + titlePlaceholder: 'Legg til en notattittel', + untitledCloze: 'Cloze uten tittel', + untitledNote: 'Notat uten tittel', + }, + labels: { + backUppercase: 'BAKSIDE', + basic: 'Grunnleggende', + basicLower: 'grunnleggende', + basicUppercase: 'GRUNNLEGGENDE', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Cloze-format', + clozeUppercase: 'CLOZE', + deck: 'Kortstokk', + derivedCards: 'AVLEDEDE KORT', + due: 'Frist', + frontUppercase: 'FORSIDE', + inProgress: 'Pågår', + inProgressUppercase: 'PÅGÅR', + loadingNote: 'Laster notat', + loadingNoteEditor: 'Laster notatredigerer', + markdownFormatting: 'Markdown-formatering', + mastered: 'Mestret', + masteredUppercase: 'MESTRET', + newNote: 'Nytt notat', + noteBody: 'NOTATINNHOLD', + noteContent: 'Notatinnhold', + noteDetails: 'Notatdetaljer', + noteMetadata: 'Notatmetadata', + noteType: 'Notattype', + notes: 'Notater', + reviewed: 'Repetert', + studyProgress: 'Studiefremgang', + studyProgressUppercase: 'STUDIEFREMGANG', + titleUppercase: 'TITTEL', + updated: 'Oppdatert', + }, + sort: { + ariaLabel: 'Sorter notater', + title: 'Tittel', + updated: 'Oppdatert', + }, + toolbar: { + bold: 'Fet', + italic: 'Kursiv', + link: 'Lenke', + list: 'Liste', + }, + }, + review: { + actions: { + again: 'Igjen', + backToDeck: 'Tilbake til kortstokk', + continueReview: 'Fortsett repetisjon', + easy: 'Lett', + good: 'Bra', + hard: 'Vanskelig', + newNote: 'Nytt notat', + showAnswer: 'Vis svar', + }, + errors: { + couldNotGradeCard: 'Kortet kunne ikke vurderes', + reviewCouldNotLoad: 'Repetisjonen kunne ikke lastes inn', + reviewCouldNotStart: 'Repetisjonen kunne ikke startes', + summaryCouldNotLoad: 'Repetisjonssammendraget kunne ikke lastes inn', + summaryNotAvailable: 'Repetisjonssammendraget er ikke tilgjengelig', + summaryNotComplete: 'Denne repetisjonen er ikke fullført ennå.', + }, + labels: { + cardsReviewed: 'Kort repetert', + deck: 'Kortstokk', + duration: 'Varighet', + loadingReview: 'Laster repetisjon', + loadingSummary: 'Laster sammendrag', + progress: 'Repetisjonsfremgang', + review: 'Repetisjon', + reviewComplete: 'Repetisjon fullført', + reviewed_one: 'Repetert {{count}}', + reviewed_other: 'Repetert {{count}}', + }, + summary: { + durationHoursMinutes: '{{hours}} t {{minutes}} min', + durationMinutes: '{{minutes}} min', + durationSeconds: '{{seconds}} s', + saved: 'Fremgangen din ble lagret i denne kortstokken.', + }, + unavailable: { + description: 'Legg til et notat, så denne kortstokken kan gå inn i repetisjonskøen.', + title: 'Ingen kort å repetere', + }, + }, + search: { + actions: { + clearSearch: 'Tøm søk', + }, + empty: { + noMatchesInWorkspace: 'Ingen treff i dette arbeidsområdet', + noMatchesInWorkspaceDescription: 'Ingen mapper, kortstokker eller notater samsvarte med "{{query}}".', + }, + errors: { + couldNotComplete: 'Søket kunne ikke fullføres', + }, + labels: { + results: 'Søkeresultater', + resultsFor: 'Resultater for "{{query}}"', + searchingContent: 'Søker i innhold', + }, + resultGroups: { + deck: 'Kortstokker', + folder: 'Mapper', + note: 'Notater', + }, + resultKinds: { + deck: 'kortstokk', + folder: 'mappe', + note: 'notat', + }, + }, + settings: { + actions: { + resetAll: 'Tilbakestill alle innstillinger', + resetSettings: 'Tilbakestill innstillinger', + resetToDefaults: 'Tilbakestill til standard', + }, + dialogs: { + fsrsErrorInvalidJson: 'Lim inn gyldig JSON med 21 numeriske verdier.', + fsrsErrorInvalidParams_one: 'Skriv inn en JSON-matrise med nøyaktig {{count}} endelig tall.', + fsrsErrorInvalidParams_other: 'Skriv inn en JSON-matrise med nøyaktig {{count}} endelige tall.', + fsrsHelper: 'Dette er en ekspert-overstyring. Verdiene må beholde rekkefølgen.', + fsrsJsonLabel: 'FSRS-parametere JSON', + fsrsTitle: 'Rediger FSRS-parametere', + fsrsDescription: 'Lim inn en JSON-matrise med 21 tall for å overstyre planleggervektene.', + resetDescription: 'Dette tilbakestiller tidssone, studiegrenser og FSRS-innstillinger.', + resetDescriptionWithLanguage: 'Dette tilbakestiller språk, tidssone, studiegrenser og FSRS-innstillinger.', + resetTitle: 'Tilbakestille alle innstillinger?', + timezoneDescription: 'Søk etter en by eller tidssoneidentifikator.', + timezoneSearchLabel: 'Søk tidssoner', + timezoneSearchPlaceholder: 'Søk tidssoner…', + timezoneTitle: 'Velg tidssone', + }, + errors: { + couldNotResetSettings: 'Innstillingene kunne ikke tilbakestilles', + couldNotSaveSettings: 'Innstillingene kunne ikke lagres', + settingsCouldNotLoad: 'Innstillingene kunne ikke lastes inn', + settingsUnavailable: 'Innstillinger er utilgjengelige.', + }, + labels: { + appearance: 'Utseende', + automatic: 'Automatisk', + fsrsParameters: 'FSRS-parametere', + general: 'Generelt', + language: 'Språk', + loadingSettings: 'Laster innstillinger', + masteryHorizon: 'Mestringshorisont', + newCardOrder: 'Rekkefølge for nye kort', + newCardsPerDay: 'Nye kort per dag', + reviewCardsPerDay: 'Repetisjonskort per dag', + savingSettings: 'Lagrer innstillinger', + schedule: 'Plan', + searchNoTimezones: 'Ingen samsvarende tidssoner.', + settings: 'Innstillinger', + settingsReset: 'Innstillinger tilbakestilt', + study: 'Studie', + targetRecallProbability: 'Mål for sannsynlighet for gjenkalling', + theme: 'Tema', + timezone: 'Tidssone', + }, + options: { + languageEnUs: 'Engelsk (USA)', + newCardsAfterReviews: 'Etter repetisjoner', + newCardsBeforeReviews: 'Før repetisjoner', + newCardsMixed: 'Blandet', + themeDark: 'Mørk', + themeLight: 'Lys', + themeSystem: 'System', + timezoneSystem: 'Bruk systemets tidssone', + }, + rows: { + fsrsDescription: 'Ekspertmodellvekter', + languageDescription: 'Grensesnittspråk', + masteryHorizonDescription: 'Antall dager et kort må forbli gjenkallbart ved eller over målsannsynligheten for å telle som mestret', + newCardOrderDescription: 'Rekkefølge for nye kort i forhold til repetisjoner', + newCardsPerDayDescription: 'Maksimalt antall nye kort per dag', + reviewCardsPerDayDescription: 'Maksimalt antall repetisjonskort per dag', + targetRecallProbabilityDescription: 'Minimum sannsynlighet for gjenkalling ved neste planlagte repetisjon', + timezoneDescription: 'Bruk automatisk tidssone eller velg en by.', + }, + }, + trash: { + actions: { + deletePermanently: 'Slett permanent', + empty: 'Tøm', + emptyTrash: 'Tøm papirkurv', + restore: 'Gjenopprett', + restoringItem: 'Gjenoppretter {{title}}', + }, + dialogs: { + deleteItemDescription: 'Dette sletter "{{title}}" permanent. Dette kan ikke angres.', + deleteItemFallbackDescription: 'Dette sletter dette elementet permanent. Dette kan ikke angres.', + deleteItemFallbackTitle: 'Slette element?', + deleteItemTitle: 'Slette "{{title}}"?', + emptyTrashDescription: 'Dette sletter alt i Papirkurv permanent. Dette kan ikke angres.', + emptyTrashTitle: 'Tømme papirkurv?', + }, + empty: { + description: 'Elementer du sletter, vises her før permanent fjerning.', + title: 'Papirkurven er tom', + }, + errors: { + couldNotDeleteItem: 'Elementet kunne ikke slettes', + couldNotEmptyTrash: 'Papirkurven kunne ikke tømmes', + couldNotRestoreItem: 'Elementet kunne ikke gjenopprettes', + trashCouldNotLoad: 'Papirkurven kunne ikke lastes inn', + trashMayBeOutOfDate: 'Papirkurven kan være utdatert', + }, + labels: { + deletedAge: 'Slettet {{value}}', + itemCount_one: '{{count}} element', + itemCount_other: '{{count}} elementer', + lastEmptied: 'Sist tømt {{value}}', + loadingTrash: 'Laster Papirkurv', + originalLocation: 'Opprinnelig plassering: {{location}}', + title: 'Papirkurv', + trashActions: 'Papirkurvhandlinger for {{title}}', + }, + kinds: { + deck: 'Kortstokk', + folder: 'Mappe', + note: 'Notat', + workspace: 'Arbeidsområde', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Opprett arbeidsområde', + deleteWorkspace: 'Slett arbeidsområde', + editWorkspace: 'Rediger arbeidsområde', + newWorkspace: 'Nytt arbeidsområde', + openWorkspace: 'Åpne {{title}}', + openingWorkspace: 'Åpner {{title}}', + }, + descriptions: { + editorDefault: 'Studiekontekst.', + editorVisual: 'Velg et visuelt anker for dette arbeidsområdet.', + emptyList: 'Skill kortstokker, notater og repetisjonskøer etter studiekontekst.', + }, + dialogs: { + deleteWorkspaceDescription: 'Dette flytter "{{title}}" til Papirkurv. Du kan gjenopprette det senere.', + deleteWorkspaceFallbackDescription: 'Dette flytter dette arbeidsområdet til Papirkurv. Du kan gjenopprette det senere.', + deleteWorkspaceFallbackTitle: 'Slette arbeidsområde?', + deleteWorkspaceTitle: 'Slette "{{title}}"?', + }, + empty: { + startWithWorkspace: 'Start med et arbeidsområde', + }, + errors: { + couldNotCreateWorkspace: 'Arbeidsområdet kunne ikke opprettes', + couldNotDeleteWorkspace: 'Arbeidsområdet kunne ikke slettes', + couldNotOpenWorkspace: 'Arbeidsområdet kunne ikke åpnes', + couldNotSaveWorkspace: 'Arbeidsområdet kunne ikke lagres', + workspaceCouldNotLoad: 'Arbeidsområdet kunne ikke lastes inn', + workspacesCouldNotLoad: 'Arbeidsområder kunne ikke lastes inn', + }, + fields: { + descriptionLabel: 'Arbeidsområdebeskrivelse', + descriptionPlaceholder: 'Hva hører hjemme i dette arbeidsområdet?', + namePlaceholder: 'Navn på arbeidsområde', + untitledWorkspace: 'Arbeidsområde uten tittel', + }, + labels: { + createWorkspaceTitle: 'Opprett arbeidsområde', + loadingWorkspaces: 'Laster arbeidsområder', + workspace: 'Arbeidsområde', + workspaces: 'Arbeidsområder', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/nl.ts b/ui/src/core/i18n/resources/nl.ts new file mode 100644 index 0000000..f8c9c82 --- /dev/null +++ b/ui/src/core/i18n/resources/nl.ts @@ -0,0 +1,623 @@ +export const nl = { + bootstrap: { + error: { + fallbackMessage: 'Probeer het opnieuw. Als dit blijft gebeuren, open Clear opnieuw.', + title: 'Kan niet starten', + }, + loadingTitle: 'Je studieruimte voorbereiden', + }, + common: { + actions: { + back: 'Terug', + cancel: 'Annuleren', + checkAgain: 'Opnieuw controleren', + close: 'Sluiten', + create: 'Maken', + delete: 'Verwijderen', + dismissError: 'Fout sluiten', + dismissStatus: 'Status sluiten', + edit: 'Bewerken', + itemActions: 'Acties voor {{title}}', + reset: 'Resetten', + review: 'Herhalen', + save: 'Opslaan', + saveChanges: 'Wijzigingen opslaan', + tryAgain: 'Opnieuw proberen', + }, + labels: { + active: 'Actief', + clear: 'Clear', + custom: 'Aangepast', + default: 'Standaard', + loadingEditor: 'Editor laden', + name: 'Naam', + completedTask: 'Voltooide taak', + description: 'Beschrijving', + incompleteTask: 'Onvoltooide taak', + percentageInput: 'Percentage voor {{label}}', + visual: 'Visueel', + }, + status: { + actionFailed: 'Actie mislukt', + actionInProgress: 'Actie bezig', + }, + sort: { + ascending: 'Opl.', + column: 'Kolom', + descending: 'Afl.', + direction: 'Richting', + sort: 'Sorteren', + }, + search: { + label: 'Zoeken', + }, + visualPicker: { + allLucideIcons: 'Alle Lucide-iconen', + browseIconsFor: 'Blader door iconen of zoek iconen voor {{label}}.', + chooseIcon: 'Icoon kiezen', + iconPicker: 'Iconenkiezer voor {{label}}', + iconSearch: 'Iconen zoeken voor {{label}}', + iconsCouldNotLoad: 'Iconen konden niet worden geladen.', + loadingIcons: 'Iconen laden', + loadingMoreIcons: 'Meer iconen laden', + moreIcons: 'Meer iconen', + noIconsMatch: 'Geen iconen gevonden voor "{{query}}".', + searchIconsPlaceholder: 'Iconen zoeken…', + selectedIcon: '{{label}} geselecteerd', + }, + }, + dashboard: { + actions: { + create: 'Maken', + newDeck: 'Nieuwe kaartenset', + newFolder: 'Nieuwe map', + }, + descriptions: { + defaultWorkspace: 'Houd kaartensets, mappen en notities bij elkaar.', + emptyWorkspace: 'Maak een kaartenset en voeg daarna notities toe om je herhaalwachtrij op te bouwen.', + emptyFolder: 'Maak een kaartenset en voeg daarna notities toe om een herhaalwachtrij op te bouwen.', + searchPlaceholder: 'Mappen, kaartensets en notities zoeken…', + }, + empty: { + createFirstDeck: 'Maak je eerste kaartenset', + }, + errors: { + couldNotDeleteDeck: 'Kan kaartenset niet verwijderen', + couldNotDeleteFolder: 'Kan map niet verwijderen', + couldNotDeleteWorkspace: 'Kan werkruimte niet verwijderen', + dashboardCouldNotOpen: 'Dashboard kon niet worden geopend', + decksCouldNotLoad: 'Kaartensets konden niet worden geladen', + decksMayBeOutOfDate: 'Kaartensets zijn mogelijk verouderd', + foldersCouldNotLoad: 'Mappen konden niet worden geladen', + foldersMayBeOutOfDate: 'Mappen zijn mogelijk verouderd', + workspaceCouldNotLoad: 'Werkruimte kon niet worden geladen', + }, + labels: { + dashboard: 'Dashboard', + loadingDashboard: 'Dashboard laden', + newItem: 'Nieuw item', + }, + }, + dates: { + absolute: { + unavailable: 'Datum niet beschikbaar', + }, + age: { + dayAgo_one: '{{count}} dag geleden', + dayAgo_other: '{{count}} dagen geleden', + hourAgo_one: '{{count}} uur geleden', + hourAgo_other: '{{count}} uur geleden', + justNow: 'zojuist', + minuteAgo_one: '{{count}} minuut geleden', + minuteAgo_other: '{{count}} minuten geleden', + unavailable: 'datum niet beschikbaar', + weekAgo_one: '{{count}} week geleden', + weekAgo_other: '{{count}} weken geleden', + }, + labels: { + deleted: 'Verwijderd {{value}}', + due: 'Te doen: {{value}}', + reviewed: 'Herhaald: {{value}}', + updated: 'Bijgewerkt {{value}}', + updatedUppercase: 'BIJGEWERKT {{value}}', + }, + relative: { + dayAgo_one: '{{count}} dag geleden', + dayAgo_other: '{{count}} dagen geleden', + inAMoment: 'Zo meteen', + inDay_one: 'Over {{count}} dag', + inDay_other: 'Over {{count}} dagen', + inMonth_one: 'Over {{count}} maand', + inMonth_other: 'Over {{count}} maanden', + inWeek_one: 'Over {{count}} week', + inWeek_other: 'Over {{count}} weken', + justNow: 'Zojuist', + monthAgo_one: '{{count}} maand geleden', + monthAgo_other: '{{count}} maanden geleden', + secondsAgoShort: '{{count}} s geleden', + minutesAgoShort: '{{count}} min geleden', + hoursAgoShort: '{{count}} u geleden', + today: 'Vandaag', + tomorrow: 'Morgen', + weekAgo_one: '{{count}} week geleden', + weekAgo_other: '{{count}} weken geleden', + yesterday: 'Gisteren', + }, + }, + decks: { + actions: { + actionMenu: 'Acties voor {{title}}', + createDeck: 'Kaartenset maken', + createNote: 'Notitie maken', + deleteDeck: 'Kaartenset verwijderen', + editDeck: 'Kaartenset bewerken', + newNote: 'Nieuwe notitie', + openDeck: 'Kaartenset {{title}} openen', + saveDeck: 'Kan kaartenset niet opslaan', + studyNow: 'Nu studeren', + }, + descriptions: { + emptyDeck: 'Voeg een notitie toe zodat deze kaartenset materiaal heeft om te herhalen.', + editorDefault: 'Gerichte studiekaartenset.', + editorVisual: 'Kies een omslagicoon voor deze kaartenset.', + notesSearchPlaceholder: 'Notities zoeken…', + }, + dialogs: { + deleteDeckDescription: 'Dit verplaatst "{{title}}" naar de Prullenbak. Je kunt het later herstellen.', + deleteDeckFallbackDescription: 'Dit verplaatst deze kaartenset naar de Prullenbak. Je kunt hem later herstellen.', + deleteDeckFallbackTitle: 'Kaartenset verwijderen?', + deleteDeckTitle: '"{{title}}" verwijderen?', + deleteNoteDescription: 'Dit verplaatst "{{title}}" naar de Prullenbak. Je kunt hem later herstellen.', + deleteNoteFallbackTitle: 'Notitie verwijderen?', + deleteNoteTitle: '"{{title}}" verwijderen?', + }, + empty: { + noMatchingNotes: 'Geen overeenkomende notities', + noMatchingNotesDescription: 'Geen notities gevonden voor "{{query}}".', + thisDeckIsEmpty: 'Deze kaartenset is leeg', + }, + errors: { + couldNotCreateDeck: 'Kan kaartenset niet maken', + couldNotDeleteDeck: 'Kan kaartenset niet verwijderen', + couldNotDeleteNote: 'Kan notitie niet verwijderen', + couldNotLoadFolderPath: 'Kan mappad niet laden', + couldNotSaveDeck: 'Kan kaartenset niet opslaan', + deckCouldNotLoad: 'Kaartenset kon niet worden geladen', + notesCouldNotLoad: 'Notities konden niet worden geladen', + notesMayBeOutOfDate: 'Notities zijn mogelijk verouderd', + }, + fields: { + descriptionLabel: 'Beschrijving van kaartenset', + descriptionPlaceholder: 'Wat helpt deze kaartenset je te herhalen?', + namePlaceholder: 'Naam van kaartenset', + untitledDeck: 'Naamloze kaartenset', + untitledDeckLower: 'naamloze kaartenset', + }, + labels: { + createDeckTitle: 'Kaartenset maken', + deck: 'Kaartenset', + deckNotesSearch: 'Notities in kaartenset zoeken', + deckOverview: 'Overzicht van kaartenset', + decks: 'Kaartensets', + due: 'Te doen', + dueToday: 'Vandaag te doen', + loadingDeck: 'Kaartenset laden', + mastery: 'Beheersing', + notes: 'Notities', + }, + sort: { + ariaLabel: 'Kaartensets sorteren', + dueToday: 'Vandaag te doen', + title: 'Titel', + updated: 'Bijgewerkt', + }, + }, + errors: { + byType: { + conflict: 'De gegevens zijn gewijzigd. Vernieuw en probeer opnieuw.', + forbidden: 'Je hebt geen toestemming om dit te doen.', + notFound: 'We konden dit item niet vinden.', + offline: 'Kan de service niet bereiken.', + timeout: 'Dit duurt te lang. Probeer opnieuw.', + unauthorized: 'Log in om door te gaan.', + unavailable: 'De service is tijdelijk niet beschikbaar.', + }, + fallback: { + unexpected: 'Onverwachte fout', + }, + }, + folders: { + actions: { + createFolder: 'Map maken', + deleteFolder: 'Map verwijderen', + editFolder: 'Map bewerken', + }, + descriptions: { + editorDefault: 'Map voor verwante kaartensets.', + }, + dialogs: { + deleteFolderDescription: 'Dit verplaatst "{{name}}" naar de Prullenbak. Je kunt hem later herstellen.', + deleteFolderFallbackDescription: 'Dit verplaatst deze map naar de Prullenbak. Je kunt hem later herstellen.', + deleteFolderFallbackTitle: 'Map verwijderen?', + deleteFolderTitle: '"{{name}}" verwijderen?', + }, + empty: { + noMatchesInFolder: 'Geen resultaten in deze map', + noMatchesInFolderDescription: 'Geen mappen, kaartensets of notities gevonden voor "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'Kan map niet maken', + couldNotDeleteFolder: 'Kan map niet verwijderen', + couldNotLoadFolderPath: 'Kan mappad niet laden', + couldNotSaveFolder: 'Kan map niet opslaan', + folderCouldNotLoad: 'Map kon niet worden geladen', + }, + fields: { + descriptionLabel: 'Mapbeschrijving', + descriptionPlaceholder: 'Wat hoort in deze map?', + namePlaceholder: 'Mapnaam', + untitledFolder: 'Naamloze map', + }, + labels: { + createFolderTitle: 'Map maken', + folder: 'Map', + folders: 'Mappen', + loadingFolder: 'Map laden', + name: 'Naam', + updated: 'Bijgewerkt', + }, + sort: { + ariaLabel: 'Mappen sorteren', + name: 'Naam', + updated: 'Bijgewerkt', + }, + }, + menu: { + conflicts: { + description: 'Als lokale en gesynchroniseerde gegevens verschillen, verschijnt het item hier.', + heading: 'Synchronisatiestatus', + title: 'Conflicten', + noConflicts: 'Geen conflicten gevonden', + }, + labels: { + menu: 'Menu', + }, + sections: { + settings: { + description: 'Personaliseer je omgeving en voorkeuren', + title: 'Instellingen', + }, + trash: { + description: 'Herstel of verwijder verwijderde items definitief', + title: 'Prullenbak', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Editor sluiten', + openActions: 'Acties openen', + openWorkspaces: 'Werkruimten openen', + }, + items: { + home: 'Home', + menu: 'Menu', + primary: 'Primair', + settings: 'Instellingen', + spaces: 'Ruimten', + trash: 'Prullenbak', + workspaces: 'Werkruimten', + }, + }, + notes: { + actions: { + addCloze: 'Cloze toevoegen', + deleteNote: 'Notitie verwijderen', + editNote: 'Notitie bewerken', + hideDerivedCardsNote: 'Notitie over afgeleide kaarten verbergen', + openNote: '{{title}} openen', + saveNote: 'Notitie opslaan', + showDerivedCardsNote: 'Notitie over afgeleide kaarten tonen', + }, + descriptions: { + clozeFormat: 'Elk verborgen deel wordt een herhaalkaart wanneer je opslaat.', + clozeFormatPrefix: 'Zet verborgen tekst tussen', + derivedCardsHelper: 'Notities zijn de bron van waarheid voor afgeleide kaarten.', + }, + dialogs: { + deleteNoteDescription: 'Dit verplaatst "{{title}}" naar de Prullenbak. Je kunt hem later herstellen.', + deleteNoteFallbackDescription: 'Dit verplaatst deze notitie naar de Prullenbak. Je kunt hem later herstellen.', + deleteNoteFallbackTitle: 'Notitie verwijderen?', + deleteNoteTitle: '"{{title}}" verwijderen?', + }, + errors: { + couldNotCreateNote: 'Kan notitie niet maken', + couldNotDeleteNote: 'Kan notitie niet verwijderen', + couldNotSaveNote: 'Kan notitie niet opslaan', + noteCouldNotLoad: 'Notitie kon niet worden geladen', + }, + fields: { + back: 'Achterkant', + backPlaceholder: 'Voer achterkant in', + bodyPlaceholder: 'Schrijf de notitietekst met cloze-verwijderingen…', + front: 'Voorkant', + frontPlaceholder: 'Voer voorkant in', + noteBody: 'Notitietekst', + title: 'Titel', + titlePlaceholder: 'Voeg een notitietitel toe', + untitledCloze: 'Naamloze cloze', + untitledNote: 'Naamloze notitie', + }, + labels: { + backUppercase: 'ACHTERKANT', + basic: 'Basis', + basicLower: 'basis', + basicUppercase: 'BASIS', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Cloze-indeling', + clozeUppercase: 'CLOZE', + deck: 'Kaartenset', + derivedCards: 'AFGELEIDE KAARTEN', + due: 'Te doen', + frontUppercase: 'VOORKANT', + inProgress: 'Bezig', + inProgressUppercase: 'BEZIG', + loadingNote: 'Notitie laden', + loadingNoteEditor: 'Notitie-editor laden', + markdownFormatting: 'Markdown-opmaak', + mastered: 'Beheerst', + masteredUppercase: 'BEHEERST', + newNote: 'Nieuwe notitie', + noteBody: 'NOTITIETEKST', + noteContent: 'Notitie-inhoud', + noteDetails: 'Notitiedetails', + noteMetadata: 'Notitiemetadata', + noteType: 'Notitietype', + notes: 'Notities', + reviewed: 'Herhaald', + studyProgress: 'Studievoortgang', + studyProgressUppercase: 'STUDIEVOORTGANG', + titleUppercase: 'TITEL', + updated: 'Bijgewerkt', + }, + sort: { + ariaLabel: 'Notities sorteren', + title: 'Titel', + updated: 'Bijgewerkt', + }, + toolbar: { + bold: 'Vet', + italic: 'Cursief', + link: 'Link', + list: 'Lijst', + }, + }, + review: { + actions: { + again: 'Opnieuw', + backToDeck: 'Terug naar kaartenset', + continueReview: 'Doorgaan met herhalen', + easy: 'Makkelijk', + good: 'Goed', + hard: 'Moeilijk', + newNote: 'Nieuwe notitie', + showAnswer: 'Antwoord tonen', + }, + errors: { + couldNotGradeCard: 'Kan kaart niet beoordelen', + reviewCouldNotLoad: 'Herhaling kon niet worden geladen', + reviewCouldNotStart: 'Herhaling kon niet worden gestart', + summaryCouldNotLoad: 'Herhalingsoverzicht kon niet worden geladen', + summaryNotAvailable: 'Herhalingsoverzicht is niet beschikbaar', + summaryNotComplete: 'Deze herhaling is nog niet voltooid.', + }, + labels: { + cardsReviewed: 'Kaarten herhaald', + deck: 'Kaartenset', + duration: 'Duur', + loadingReview: 'Herhaling laden', + loadingSummary: 'Overzicht laden', + progress: 'Herhalingsvoortgang', + review: 'Herhaling', + reviewComplete: 'Herhaling voltooid', + reviewed_one: '{{count}} herhaald', + reviewed_other: '{{count}} herhaald', + }, + summary: { + durationHoursMinutes: '{{hours}} u {{minutes}} min', + durationMinutes: '{{minutes}} min', + durationSeconds: '{{seconds}} s', + saved: 'Je voortgang is opgeslagen in deze kaartenset.', + }, + unavailable: { + description: 'Voeg een notitie toe zodat deze kaartenset in de herhaalwachtrij kan komen.', + title: 'Geen kaarten om te herhalen', + }, + }, + search: { + actions: { + clearSearch: 'Zoekopdracht wissen', + }, + empty: { + noMatchesInWorkspace: 'Geen resultaten in deze werkruimte', + noMatchesInWorkspaceDescription: 'Geen mappen, kaartensets of notities gevonden voor "{{query}}".', + }, + errors: { + couldNotComplete: 'Zoekopdracht kon niet worden voltooid', + }, + labels: { + results: 'Zoekresultaten', + resultsFor: 'Resultaten voor "{{query}}"', + searchingContent: 'Inhoud zoeken', + }, + resultGroups: { + deck: 'Kaartensets', + folder: 'Mappen', + note: 'Notities', + }, + resultKinds: { + deck: 'kaartenset', + folder: 'map', + note: 'notitie', + }, + }, + settings: { + actions: { + resetAll: 'Alle instellingen resetten', + resetSettings: 'Instellingen resetten', + resetToDefaults: 'Standaardwaarden herstellen', + }, + dialogs: { + fsrsErrorInvalidJson: 'Plak geldige JSON met 21 numerieke waarden.', + fsrsErrorInvalidParams_one: 'Voer een JSON-array in met precies {{count}} eindig getal.', + fsrsErrorInvalidParams_other: 'Voer een JSON-array in met precies {{count}} eindige getallen.', + fsrsHelper: 'Dit is een expertinstelling. Waarden moeten in volgorde blijven.', + fsrsJsonLabel: 'JSON voor FSRS-parameters', + fsrsTitle: 'FSRS-parameters bewerken', + fsrsDescription: 'Plak een JSON-array met 21 getallen om de scheduler-gewichten te overschrijven.', + resetDescription: 'Dit herstelt tijdzone, studielimieten en FSRS-instellingen.', + resetDescriptionWithLanguage: 'Dit herstelt taal, tijdzone, studielimieten en FSRS-instellingen.', + resetTitle: 'Alle instellingen resetten?', + timezoneDescription: 'Zoek naar een stad of tijdzone-id.', + timezoneSearchLabel: 'Tijdzones zoeken', + timezoneSearchPlaceholder: 'Tijdzones zoeken…', + timezoneTitle: 'Tijdzone kiezen', + }, + errors: { + couldNotResetSettings: 'Kan instellingen niet resetten', + couldNotSaveSettings: 'Kan instellingen niet opslaan', + settingsCouldNotLoad: 'Instellingen konden niet worden geladen', + settingsUnavailable: 'Instellingen zijn niet beschikbaar.', + }, + labels: { + appearance: 'Weergave', + automatic: 'Automatisch', + fsrsParameters: 'FSRS-parameters', + general: 'Algemeen', + language: 'Taal', + loadingSettings: 'Instellingen laden', + masteryHorizon: 'Beheersingshorizon', + newCardOrder: 'Volgorde nieuwe kaarten', + newCardsPerDay: 'Nieuwe kaarten per dag', + reviewCardsPerDay: 'Herhaalkaarten per dag', + savingSettings: 'Instellingen opslaan', + schedule: 'Planning', + searchNoTimezones: 'Geen overeenkomende tijdzones.', + settings: 'Instellingen', + settingsReset: 'Instellingen gereset', + study: 'Studie', + targetRecallProbability: 'Doelherinneringskans', + theme: 'Thema', + timezone: 'Tijdzone', + }, + options: { + languageEnUs: 'Engels (VS)', + newCardsAfterReviews: 'Na herhalingen', + newCardsBeforeReviews: 'Voor herhalingen', + newCardsMixed: 'Gemengd', + themeDark: 'Donker', + themeLight: 'Licht', + themeSystem: 'Systeem', + timezoneSystem: 'Systeemtijdzone gebruiken', + }, + rows: { + fsrsDescription: 'Gewichten van expertmodel', + languageDescription: 'Interfacetaal', + masteryHorizonDescription: 'Aantal dagen dat een kaart op of boven de doelkans oproepbaar moet blijven om als beheerst te tellen', + newCardOrderDescription: 'Volgorde van nieuwe kaarten ten opzichte van herhalingen', + newCardsPerDayDescription: 'Maximumaantal nieuwe kaarten per dag', + reviewCardsPerDayDescription: 'Maximumaantal herhaalkaarten per dag', + targetRecallProbabilityDescription: 'Minimale kans op herinnering bij de volgende geplande herhaling', + timezoneDescription: 'Gebruik automatische tijdzone of kies een stad.', + }, + }, + trash: { + actions: { + deletePermanently: 'Definitief verwijderen', + empty: 'Leegmaken', + emptyTrash: 'Prullenbak legen', + restore: 'Herstellen', + restoringItem: '{{title}} herstellen', + }, + dialogs: { + deleteItemDescription: 'Dit verwijdert "{{title}}" definitief. Dit kan niet ongedaan worden gemaakt.', + deleteItemFallbackDescription: 'Dit verwijdert dit item definitief. Dit kan niet ongedaan worden gemaakt.', + deleteItemFallbackTitle: 'Item verwijderen?', + deleteItemTitle: '"{{title}}" verwijderen?', + emptyTrashDescription: 'Dit verwijdert alles in de Prullenbak definitief. Dit kan niet ongedaan worden gemaakt.', + emptyTrashTitle: 'Prullenbak legen?', + }, + empty: { + description: 'Items die je verwijdert verschijnen hier voordat ze definitief worden verwijderd.', + title: 'Prullenbak is leeg', + }, + errors: { + couldNotDeleteItem: 'Kan item niet verwijderen', + couldNotEmptyTrash: 'Kan Prullenbak niet legen', + couldNotRestoreItem: 'Kan item niet herstellen', + trashCouldNotLoad: 'Prullenbak kon niet worden geladen', + trashMayBeOutOfDate: 'Prullenbak is mogelijk verouderd', + }, + labels: { + deletedAge: 'Verwijderd {{value}}', + itemCount_one: '{{count}} item', + itemCount_other: '{{count}} items', + lastEmptied: 'Laatst geleegd {{value}}', + loadingTrash: 'Prullenbak laden', + originalLocation: 'Oorspronkelijke locatie: {{location}}', + title: 'Prullenbak', + trashActions: 'Prullenbakacties voor {{title}}', + }, + kinds: { + deck: 'Kaartenset', + folder: 'Map', + note: 'Notitie', + workspace: 'Werkruimte', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Werkruimte maken', + deleteWorkspace: 'Werkruimte verwijderen', + editWorkspace: 'Werkruimte bewerken', + newWorkspace: 'Nieuwe werkruimte', + openWorkspace: '{{title}} openen', + openingWorkspace: '{{title}} openen', + }, + descriptions: { + editorDefault: 'Studiecontext.', + editorVisual: 'Kies een visueel anker voor deze werkruimte.', + emptyList: 'Scheid kaartensets, notities en herhaalwachtrijen per studiecontext.', + }, + dialogs: { + deleteWorkspaceDescription: 'Dit verplaatst "{{title}}" naar de Prullenbak. Je kunt hem later herstellen.', + deleteWorkspaceFallbackDescription: 'Dit verplaatst deze werkruimte naar de Prullenbak. Je kunt hem later herstellen.', + deleteWorkspaceFallbackTitle: 'Werkruimte verwijderen?', + deleteWorkspaceTitle: '"{{title}}" verwijderen?', + }, + empty: { + startWithWorkspace: 'Begin met een werkruimte', + }, + errors: { + couldNotCreateWorkspace: 'Kan werkruimte niet maken', + couldNotDeleteWorkspace: 'Kan werkruimte niet verwijderen', + couldNotOpenWorkspace: 'Kan werkruimte niet openen', + couldNotSaveWorkspace: 'Kan werkruimte niet opslaan', + workspaceCouldNotLoad: 'Werkruimte kon niet worden geladen', + workspacesCouldNotLoad: 'Werkruimten konden niet worden geladen', + }, + fields: { + descriptionLabel: 'Beschrijving van werkruimte', + descriptionPlaceholder: 'Wat hoort in deze werkruimte?', + namePlaceholder: 'Naam van werkruimte', + untitledWorkspace: 'Naamloze werkruimte', + }, + labels: { + createWorkspaceTitle: 'Werkruimte maken', + loadingWorkspaces: 'Werkruimten laden', + workspace: 'Werkruimte', + workspaces: 'Werkruimten', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/pl.ts b/ui/src/core/i18n/resources/pl.ts new file mode 100644 index 0000000..161052d --- /dev/null +++ b/ui/src/core/i18n/resources/pl.ts @@ -0,0 +1,649 @@ +export const pl = { + bootstrap: { + error: { + fallbackMessage: 'Spróbuj ponownie. Jeśli problem będzie się powtarzał, otwórz Clear jeszcze raz.', + title: 'Nie udało się uruchomić', + }, + loadingTitle: 'Przygotowywanie przestrzeni do nauki', + }, + common: { + actions: { + back: 'Wstecz', + cancel: 'Anuluj', + checkAgain: 'Sprawdź ponownie', + close: 'Zamknij', + create: 'Utwórz', + delete: 'Usuń', + dismissError: 'Zamknij błąd', + dismissStatus: 'Zamknij status', + edit: 'Edytuj', + itemActions: 'Działania dla {{title}}', + reset: 'Resetuj', + review: 'Powtarzaj', + save: 'Zapisz', + saveChanges: 'Zapisz zmiany', + tryAgain: 'Spróbuj ponownie', + }, + labels: { + active: 'Aktywne', + clear: 'Clear', + custom: 'Niestandardowe', + default: 'Domyślne', + loadingEditor: 'Ładowanie edytora', + name: 'Nazwa', + completedTask: 'Zadanie ukończone', + description: 'Opis', + incompleteTask: 'Zadanie nieukończone', + percentageInput: 'Procent dla {{label}}', + visual: 'Wizualizacja', + }, + status: { + actionFailed: 'Działanie nie powiodło się', + actionInProgress: 'Działanie w toku', + }, + sort: { + ascending: 'Rosn.', + column: 'Kolumna', + descending: 'Mal.', + direction: 'Kierunek', + sort: 'Sortuj', + }, + search: { + label: 'Szukaj', + }, + visualPicker: { + allLucideIcons: 'Wszystkie ikony Lucide', + browseIconsFor: 'Przeglądaj lub wyszukuj ikony dla {{label}}.', + chooseIcon: 'Wybierz ikonę', + iconPicker: 'Wybór ikony dla {{label}}', + iconSearch: 'Wyszukiwanie ikon dla {{label}}', + iconsCouldNotLoad: 'Nie udało się załadować ikon.', + loadingIcons: 'Ładowanie ikon', + loadingMoreIcons: 'Ładowanie kolejnych ikon', + moreIcons: 'Więcej ikon', + noIconsMatch: 'Brak ikon pasujących do "{{query}}".', + searchIconsPlaceholder: 'Szukaj ikon…', + selectedIcon: 'Wybrano {{label}}', + }, + }, + dashboard: { + actions: { + create: 'Utwórz', + newDeck: 'Nowy zestaw', + newFolder: 'Nowy folder', + }, + descriptions: { + defaultWorkspace: 'Trzymaj zestawy, foldery i notatki razem.', + emptyWorkspace: 'Utwórz zestaw, a potem dodaj notatki, aby zbudować kolejkę powtórek.', + emptyFolder: 'Utwórz zestaw, a potem dodaj notatki, aby zbudować kolejkę powtórek.', + searchPlaceholder: 'Szukaj folderów, zestawów i notatek…', + }, + empty: { + createFirstDeck: 'Utwórz pierwszy zestaw', + }, + errors: { + couldNotDeleteDeck: 'Nie udało się usunąć zestawu', + couldNotDeleteFolder: 'Nie udało się usunąć folderu', + couldNotDeleteWorkspace: 'Nie udało się usunąć obszaru roboczego', + dashboardCouldNotOpen: 'Nie udało się otworzyć pulpitu', + decksCouldNotLoad: 'Nie udało się załadować zestawów', + decksMayBeOutOfDate: 'Zestawy mogą być nieaktualne', + foldersCouldNotLoad: 'Nie udało się załadować folderów', + foldersMayBeOutOfDate: 'Foldery mogą być nieaktualne', + workspaceCouldNotLoad: 'Nie udało się załadować obszaru roboczego', + }, + labels: { + dashboard: 'Pulpit', + loadingDashboard: 'Ładowanie pulpitu', + newItem: 'Nowy element', + }, + }, + dates: { + absolute: { + unavailable: 'Data niedostępna', + }, + age: { + dayAgo_one: '{{count}} dzień temu', + dayAgo_few: '{{count}} dni temu', + dayAgo_many: '{{count}} dni temu', + dayAgo_other: '{{count}} dnia temu', + hourAgo_one: '{{count}} godzinę temu', + hourAgo_few: '{{count}} godziny temu', + hourAgo_many: '{{count}} godzin temu', + hourAgo_other: '{{count}} godziny temu', + justNow: 'przed chwilą', + minuteAgo_one: '{{count}} minutę temu', + minuteAgo_few: '{{count}} minuty temu', + minuteAgo_many: '{{count}} minut temu', + minuteAgo_other: '{{count}} minuty temu', + unavailable: 'data niedostępna', + weekAgo_one: '{{count}} tydzień temu', + weekAgo_few: '{{count}} tygodnie temu', + weekAgo_many: '{{count}} tygodni temu', + weekAgo_other: '{{count}} tygodnia temu', + }, + labels: { + deleted: 'Usunięto {{value}}', + due: 'Do powtórki: {{value}}', + reviewed: 'Powtórzono: {{value}}', + updated: 'Zaktualizowano {{value}}', + updatedUppercase: 'ZAKTUALIZOWANO {{value}}', + }, + relative: { + dayAgo_one: '{{count}} dzień temu', + dayAgo_few: '{{count}} dni temu', + dayAgo_many: '{{count}} dni temu', + dayAgo_other: '{{count}} dnia temu', + inAMoment: 'Za chwilę', + inDay_one: 'Za {{count}} dzień', + inDay_few: 'Za {{count}} dni', + inDay_many: 'Za {{count}} dni', + inDay_other: 'Za {{count}} dnia', + inMonth_one: 'Za {{count}} miesiąc', + inMonth_few: 'Za {{count}} miesiące', + inMonth_many: 'Za {{count}} miesięcy', + inMonth_other: 'Za {{count}} miesiąca', + inWeek_one: 'Za {{count}} tydzień', + inWeek_few: 'Za {{count}} tygodnie', + inWeek_many: 'Za {{count}} tygodni', + inWeek_other: 'Za {{count}} tygodnia', + justNow: 'Przed chwilą', + monthAgo_one: '{{count}} miesiąc temu', + monthAgo_few: '{{count}} miesiące temu', + monthAgo_many: '{{count}} miesięcy temu', + monthAgo_other: '{{count}} miesiąca temu', + secondsAgoShort: '{{count}} s temu', + minutesAgoShort: '{{count}} min temu', + hoursAgoShort: '{{count}} godz. temu', + today: 'Dzisiaj', + tomorrow: 'Jutro', + weekAgo_one: '{{count}} tydzień temu', + weekAgo_few: '{{count}} tygodnie temu', + weekAgo_many: '{{count}} tygodni temu', + weekAgo_other: '{{count}} tygodnia temu', + yesterday: 'Wczoraj', + }, + }, + decks: { + actions: { + actionMenu: 'Działania dla {{title}}', + createDeck: 'Utwórz zestaw', + createNote: 'Utwórz notatkę', + deleteDeck: 'Usuń zestaw', + editDeck: 'Edytuj zestaw', + newNote: 'Nowa notatka', + openDeck: 'Otwórz zestaw {{title}}', + saveDeck: 'Nie udało się zapisać zestawu', + studyNow: 'Ucz się teraz', + }, + descriptions: { + emptyDeck: 'Dodaj notatkę, aby ten zestaw miał materiał do powtórek.', + editorDefault: 'Skupiony zestaw do nauki.', + editorVisual: 'Wybierz glif okładki dla tego zestawu.', + notesSearchPlaceholder: 'Szukaj notatek…', + }, + dialogs: { + deleteDeckDescription: 'To przeniesie "{{title}}" do Kosza. Możesz przywrócić go później.', + deleteDeckFallbackDescription: 'To przeniesie ten zestaw do Kosza. Możesz przywrócić go później.', + deleteDeckFallbackTitle: 'Usunąć zestaw?', + deleteDeckTitle: 'Usunąć "{{title}}"?', + deleteNoteDescription: 'To przeniesie "{{title}}" do Kosza. Możesz przywrócić ją później.', + deleteNoteFallbackTitle: 'Usunąć notatkę?', + deleteNoteTitle: 'Usunąć "{{title}}"?', + }, + empty: { + noMatchingNotes: 'Brak pasujących notatek', + noMatchingNotesDescription: 'Żadna notatka nie pasuje do "{{query}}".', + thisDeckIsEmpty: 'Ten zestaw jest pusty', + }, + errors: { + couldNotCreateDeck: 'Nie udało się utworzyć zestawu', + couldNotDeleteDeck: 'Nie udało się usunąć zestawu', + couldNotDeleteNote: 'Nie udało się usunąć notatki', + couldNotLoadFolderPath: 'Nie udało się załadować ścieżki folderu', + couldNotSaveDeck: 'Nie udało się zapisać zestawu', + deckCouldNotLoad: 'Nie udało się załadować zestawu', + notesCouldNotLoad: 'Nie udało się załadować notatek', + notesMayBeOutOfDate: 'Notatki mogą być nieaktualne', + }, + fields: { + descriptionLabel: 'Opis zestawu', + descriptionPlaceholder: 'Co ten zestaw pomoże Ci powtórzyć?', + namePlaceholder: 'Nazwa zestawu', + untitledDeck: 'Zestaw bez tytułu', + untitledDeckLower: 'zestaw bez tytułu', + }, + labels: { + createDeckTitle: 'Utwórz zestaw', + deck: 'Zestaw', + deckNotesSearch: 'Wyszukiwanie notatek w zestawie', + deckOverview: 'Przegląd zestawu', + decks: 'Zestawy', + due: 'Do powtórki', + dueToday: 'Do powtórki dziś', + loadingDeck: 'Ładowanie zestawu', + mastery: 'Opanowanie', + notes: 'Notatki', + }, + sort: { + ariaLabel: 'Sortuj zestawy', + dueToday: 'Do powtórki dziś', + title: 'Tytuł', + updated: 'Zaktualizowano', + }, + }, + errors: { + byType: { + conflict: 'Dane uległy zmianie. Odśwież i spróbuj ponownie.', + forbidden: 'Nie masz uprawnień, aby to zrobić.', + notFound: 'Nie udało się znaleźć tego elementu.', + offline: 'Nie można połączyć się z usługą.', + timeout: 'To trwa zbyt długo. Spróbuj ponownie.', + unauthorized: 'Zaloguj się, aby kontynuować.', + unavailable: 'Usługa jest tymczasowo niedostępna.', + }, + fallback: { + unexpected: 'Nieoczekiwany błąd', + }, + }, + folders: { + actions: { + createFolder: 'Utwórz folder', + deleteFolder: 'Usuń folder', + editFolder: 'Edytuj folder', + }, + descriptions: { + editorDefault: 'Folder na powiązane zestawy.', + }, + dialogs: { + deleteFolderDescription: 'To przeniesie "{{name}}" do Kosza. Możesz przywrócić go później.', + deleteFolderFallbackDescription: 'To przeniesie ten folder do Kosza. Możesz przywrócić go później.', + deleteFolderFallbackTitle: 'Usunąć folder?', + deleteFolderTitle: 'Usunąć "{{name}}"?', + }, + empty: { + noMatchesInFolder: 'Brak wyników w tym folderze', + noMatchesInFolderDescription: 'Żaden folder, zestaw ani notatka nie pasuje do "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'Nie udało się utworzyć folderu', + couldNotDeleteFolder: 'Nie udało się usunąć folderu', + couldNotLoadFolderPath: 'Nie udało się załadować ścieżki folderu', + couldNotSaveFolder: 'Nie udało się zapisać folderu', + folderCouldNotLoad: 'Nie udało się załadować folderu', + }, + fields: { + descriptionLabel: 'Opis folderu', + descriptionPlaceholder: 'Co należy do tego folderu?', + namePlaceholder: 'Nazwa folderu', + untitledFolder: 'Folder bez tytułu', + }, + labels: { + createFolderTitle: 'Utwórz folder', + folder: 'Folder', + folders: 'Foldery', + loadingFolder: 'Ładowanie folderu', + name: 'Nazwa', + updated: 'Zaktualizowano', + }, + sort: { + ariaLabel: 'Sortuj foldery', + name: 'Nazwa', + updated: 'Zaktualizowano', + }, + }, + menu: { + conflicts: { + description: 'Jeśli dane lokalne i zsynchronizowane będą się różnić, element pojawi się tutaj.', + heading: 'Status synchronizacji', + title: 'Konflikty', + noConflicts: 'Nie znaleziono konfliktów', + }, + labels: { + menu: 'Menu', + }, + sections: { + settings: { + description: 'Dostosuj środowisko i preferencje', + title: 'Ustawienia', + }, + trash: { + description: 'Przywróć lub trwale usuń usunięte elementy', + title: 'Kosz', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Zamknij edytor', + openActions: 'Otwórz działania', + openWorkspaces: 'Otwórz obszary robocze', + }, + items: { + home: 'Start', + menu: 'Menu', + primary: 'Główne', + settings: 'Ustawienia', + spaces: 'Obszary', + trash: 'Kosz', + workspaces: 'Obszary robocze', + }, + }, + notes: { + actions: { + addCloze: 'Dodaj cloze', + deleteNote: 'Usuń notatkę', + editNote: 'Edytuj notatkę', + hideDerivedCardsNote: 'Ukryj notatkę o kartach pochodnych', + openNote: 'Otwórz {{title}}', + saveNote: 'Zapisz notatkę', + showDerivedCardsNote: 'Pokaż notatkę o kartach pochodnych', + }, + descriptions: { + clozeFormat: 'Każdy ukryty fragment stanie się kartą do powtórki po zapisaniu.', + clozeFormatPrefix: 'Otocz ukryty tekst za pomocą', + derivedCardsHelper: 'Notatki są źródłem prawdy dla kart pochodnych.', + }, + dialogs: { + deleteNoteDescription: 'To przeniesie "{{title}}" do Kosza. Możesz przywrócić ją później.', + deleteNoteFallbackDescription: 'To przeniesie tę notatkę do Kosza. Możesz przywrócić ją później.', + deleteNoteFallbackTitle: 'Usunąć notatkę?', + deleteNoteTitle: 'Usunąć "{{title}}"?', + }, + errors: { + couldNotCreateNote: 'Nie udało się utworzyć notatki', + couldNotDeleteNote: 'Nie udało się usunąć notatki', + couldNotSaveNote: 'Nie udało się zapisać notatki', + noteCouldNotLoad: 'Nie udało się załadować notatki', + }, + fields: { + back: 'Tył', + backPlaceholder: 'Wpisz tylną stronę', + bodyPlaceholder: 'Napisz treść notatki z lukami cloze…', + front: 'Przód', + frontPlaceholder: 'Wpisz przednią stronę', + noteBody: 'Treść notatki', + title: 'Tytuł', + titlePlaceholder: 'Dodaj tytuł notatki', + untitledCloze: 'Cloze bez tytułu', + untitledNote: 'Notatka bez tytułu', + }, + labels: { + backUppercase: 'TYŁ', + basic: 'Podstawowa', + basicLower: 'podstawowa', + basicUppercase: 'PODSTAWOWA', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Format cloze', + clozeUppercase: 'CLOZE', + deck: 'Zestaw', + derivedCards: 'KARTY POCHODNE', + due: 'Do powtórki', + frontUppercase: 'PRZÓD', + inProgress: 'W toku', + inProgressUppercase: 'W TOKU', + loadingNote: 'Ładowanie notatki', + loadingNoteEditor: 'Ładowanie edytora notatek', + markdownFormatting: 'Formatowanie Markdown', + mastered: 'Opanowane', + masteredUppercase: 'OPANOWANE', + newNote: 'Nowa notatka', + noteBody: 'TREŚĆ NOTATKI', + noteContent: 'Zawartość notatki', + noteDetails: 'Szczegóły notatki', + noteMetadata: 'Metadane notatki', + noteType: 'Typ notatki', + notes: 'Notatki', + reviewed: 'Powtórzono', + studyProgress: 'Postęp nauki', + studyProgressUppercase: 'POSTĘP NAUKI', + titleUppercase: 'TYTUŁ', + updated: 'Zaktualizowano', + }, + sort: { + ariaLabel: 'Sortuj notatki', + title: 'Tytuł', + updated: 'Zaktualizowano', + }, + toolbar: { + bold: 'Pogrubienie', + italic: 'Kursywa', + link: 'Link', + list: 'Lista', + }, + }, + review: { + actions: { + again: 'Znowu', + backToDeck: 'Wróć do zestawu', + continueReview: 'Kontynuuj powtórkę', + easy: 'Łatwe', + good: 'Dobrze', + hard: 'Trudne', + newNote: 'Nowa notatka', + showAnswer: 'Pokaż odpowiedź', + }, + errors: { + couldNotGradeCard: 'Nie udało się ocenić karty', + reviewCouldNotLoad: 'Nie udało się załadować powtórki', + reviewCouldNotStart: 'Nie udało się rozpocząć powtórki', + summaryCouldNotLoad: 'Nie udało się załadować podsumowania powtórki', + summaryNotAvailable: 'Podsumowanie powtórki jest niedostępne', + summaryNotComplete: 'Ta powtórka nie jest jeszcze ukończona.', + }, + labels: { + cardsReviewed: 'Powtórzone karty', + deck: 'Zestaw', + duration: 'Czas trwania', + loadingReview: 'Ładowanie powtórki', + loadingSummary: 'Ładowanie podsumowania', + progress: 'Postęp powtórki', + review: 'Powtórka', + reviewComplete: 'Powtórka ukończona', + reviewed_one: 'Powtórzono {{count}}', + reviewed_few: 'Powtórzono {{count}}', + reviewed_many: 'Powtórzono {{count}}', + reviewed_other: 'Powtórzono {{count}}', + }, + summary: { + durationHoursMinutes: '{{hours}} godz. {{minutes}} min', + durationMinutes: '{{minutes}} min', + durationSeconds: '{{seconds}} s', + saved: 'Twój postęp został zapisany w tym zestawie.', + }, + unavailable: { + description: 'Dodaj notatkę, aby ten zestaw mógł trafić do kolejki powtórek.', + title: 'Brak kart do powtórki', + }, + }, + search: { + actions: { + clearSearch: 'Wyczyść wyszukiwanie', + }, + empty: { + noMatchesInWorkspace: 'Brak wyników w tym obszarze roboczym', + noMatchesInWorkspaceDescription: 'Żaden folder, zestaw ani notatka nie pasuje do "{{query}}".', + }, + errors: { + couldNotComplete: 'Nie udało się ukończyć wyszukiwania', + }, + labels: { + results: 'Wyniki wyszukiwania', + resultsFor: 'Wyniki dla "{{query}}"', + searchingContent: 'Wyszukiwanie treści', + }, + resultGroups: { + deck: 'Zestawy', + folder: 'Foldery', + note: 'Notatki', + }, + resultKinds: { + deck: 'zestaw', + folder: 'folder', + note: 'notatka', + }, + }, + settings: { + actions: { + resetAll: 'Resetuj wszystkie ustawienia', + resetSettings: 'Resetuj ustawienia', + resetToDefaults: 'Przywróć domyślne', + }, + dialogs: { + fsrsErrorInvalidJson: 'Wklej prawidłowy JSON z 21 wartościami liczbowymi.', + fsrsErrorInvalidParams_one: 'Wpisz tablicę JSON z dokładnie {{count}} skończoną liczbą.', + fsrsErrorInvalidParams_few: 'Wpisz tablicę JSON z dokładnie {{count}} skończonymi liczbami.', + fsrsErrorInvalidParams_many: 'Wpisz tablicę JSON z dokładnie {{count}} skończonymi liczbami.', + fsrsErrorInvalidParams_other: 'Wpisz tablicę JSON z dokładnie {{count}} skończonej liczby.', + fsrsHelper: 'To ustawienie eksperckie. Wartości muszą pozostać w kolejności.', + fsrsJsonLabel: 'JSON parametrów FSRS', + fsrsTitle: 'Edytuj parametry FSRS', + fsrsDescription: 'Wklej tablicę JSON z 21 liczbami, aby nadpisać wagi scheduler.', + resetDescription: 'To przywróci strefę czasową, limity nauki i ustawienia FSRS.', + resetDescriptionWithLanguage: 'To przywróci język, strefę czasową, limity nauki i ustawienia FSRS.', + resetTitle: 'Zresetować wszystkie ustawienia?', + timezoneDescription: 'Szukaj miasta lub identyfikatora strefy czasowej.', + timezoneSearchLabel: 'Szukaj stref czasowych', + timezoneSearchPlaceholder: 'Szukaj stref czasowych…', + timezoneTitle: 'Wybierz strefę czasową', + }, + errors: { + couldNotResetSettings: 'Nie udało się zresetować ustawień', + couldNotSaveSettings: 'Nie udało się zapisać ustawień', + settingsCouldNotLoad: 'Nie udało się załadować ustawień', + settingsUnavailable: 'Ustawienia są niedostępne.', + }, + labels: { + appearance: 'Wygląd', + automatic: 'Automatycznie', + fsrsParameters: 'Parametry FSRS', + general: 'Ogólne', + language: 'Język', + loadingSettings: 'Ładowanie ustawień', + masteryHorizon: 'Horyzont opanowania', + newCardOrder: 'Kolejność nowych kart', + newCardsPerDay: 'Nowe karty dziennie', + reviewCardsPerDay: 'Karty do powtórki dziennie', + savingSettings: 'Zapisywanie ustawień', + schedule: 'Harmonogram', + searchNoTimezones: 'Brak pasujących stref czasowych.', + settings: 'Ustawienia', + settingsReset: 'Ustawienia zresetowane', + study: 'Nauka', + targetRecallProbability: 'Docelowe prawdopodobieństwo przypomnienia', + theme: 'Motyw', + timezone: 'Strefa czasowa', + }, + options: { + languageEnUs: 'Angielski (USA)', + newCardsAfterReviews: 'Po powtórkach', + newCardsBeforeReviews: 'Przed powtórkami', + newCardsMixed: 'Mieszane', + themeDark: 'Ciemny', + themeLight: 'Jasny', + themeSystem: 'Systemowy', + timezoneSystem: 'Użyj systemowej strefy czasowej', + }, + rows: { + fsrsDescription: 'Wagi modelu eksperckiego', + languageDescription: 'Język interfejsu', + masteryHorizonDescription: 'Liczba dni, przez które karta musi pozostać możliwa do przypomnienia na poziomie docelowego prawdopodobieństwa lub wyżej, aby została uznana za opanowaną', + newCardOrderDescription: 'Kolejność nowych kart względem powtórek', + newCardsPerDayDescription: 'Maksymalna liczba nowych kart dziennie', + reviewCardsPerDayDescription: 'Maksymalna liczba kart do powtórki dziennie', + targetRecallProbabilityDescription: 'Minimalne prawdopodobieństwo przypomnienia przy następnej zaplanowanej powtórce', + timezoneDescription: 'Użyj automatycznej strefy czasowej lub wybierz miasto.', + }, + }, + trash: { + actions: { + deletePermanently: 'Usuń trwale', + empty: 'Opróżnij', + emptyTrash: 'Opróżnij kosz', + restore: 'Przywróć', + restoringItem: 'Przywracanie {{title}}', + }, + dialogs: { + deleteItemDescription: 'To trwale usunie "{{title}}". Tej czynności nie można cofnąć.', + deleteItemFallbackDescription: 'To trwale usunie ten element. Tej czynności nie można cofnąć.', + deleteItemFallbackTitle: 'Usunąć element?', + deleteItemTitle: 'Usunąć "{{title}}"?', + emptyTrashDescription: 'To trwale usunie wszystko z Kosza. Tej czynności nie można cofnąć.', + emptyTrashTitle: 'Opróżnić kosz?', + }, + empty: { + description: 'Usunięte elementy pojawią się tutaj przed trwałym usunięciem.', + title: 'Kosz jest pusty', + }, + errors: { + couldNotDeleteItem: 'Nie udało się usunąć elementu', + couldNotEmptyTrash: 'Nie udało się opróżnić Kosza', + couldNotRestoreItem: 'Nie udało się przywrócić elementu', + trashCouldNotLoad: 'Nie udało się załadować Kosza', + trashMayBeOutOfDate: 'Kosz może być nieaktualny', + }, + labels: { + deletedAge: 'Usunięto {{value}}', + itemCount_one: '{{count}} element', + itemCount_few: '{{count}} elementy', + itemCount_many: '{{count}} elementów', + itemCount_other: '{{count}} elementu', + lastEmptied: 'Ostatnio opróżniono {{value}}', + loadingTrash: 'Ładowanie Kosza', + originalLocation: 'Oryginalna lokalizacja: {{location}}', + title: 'Kosz', + trashActions: 'Działania kosza dla {{title}}', + }, + kinds: { + deck: 'Zestaw', + folder: 'Folder', + note: 'Notatka', + workspace: 'Obszar roboczy', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Utwórz obszar roboczy', + deleteWorkspace: 'Usuń obszar roboczy', + editWorkspace: 'Edytuj obszar roboczy', + newWorkspace: 'Nowy obszar roboczy', + openWorkspace: 'Otwórz {{title}}', + openingWorkspace: 'Otwieranie {{title}}', + }, + descriptions: { + editorDefault: 'Kontekst nauki.', + editorVisual: 'Wybierz wizualny punkt odniesienia dla tego obszaru roboczego.', + emptyList: 'Oddziel zestawy, notatki i kolejki powtórek według kontekstu nauki.', + }, + dialogs: { + deleteWorkspaceDescription: 'To przeniesie "{{title}}" do Kosza. Możesz przywrócić go później.', + deleteWorkspaceFallbackDescription: 'To przeniesie ten obszar roboczy do Kosza. Możesz przywrócić go później.', + deleteWorkspaceFallbackTitle: 'Usunąć obszar roboczy?', + deleteWorkspaceTitle: 'Usunąć "{{title}}"?', + }, + empty: { + startWithWorkspace: 'Zacznij od obszaru roboczego', + }, + errors: { + couldNotCreateWorkspace: 'Nie udało się utworzyć obszaru roboczego', + couldNotDeleteWorkspace: 'Nie udało się usunąć obszaru roboczego', + couldNotOpenWorkspace: 'Nie udało się otworzyć obszaru roboczego', + couldNotSaveWorkspace: 'Nie udało się zapisać obszaru roboczego', + workspaceCouldNotLoad: 'Nie udało się załadować obszaru roboczego', + workspacesCouldNotLoad: 'Nie udało się załadować obszarów roboczych', + }, + fields: { + descriptionLabel: 'Opis obszaru roboczego', + descriptionPlaceholder: 'Co należy do tego obszaru roboczego?', + namePlaceholder: 'Nazwa obszaru roboczego', + untitledWorkspace: 'Obszar roboczy bez tytułu', + }, + labels: { + createWorkspaceTitle: 'Utwórz obszar roboczy', + loadingWorkspaces: 'Ładowanie obszarów roboczych', + workspace: 'Obszar roboczy', + workspaces: 'Obszary robocze', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/pt-BR.ts b/ui/src/core/i18n/resources/pt-BR.ts new file mode 100644 index 0000000..6899753 --- /dev/null +++ b/ui/src/core/i18n/resources/pt-BR.ts @@ -0,0 +1,623 @@ +export const ptBR = { + bootstrap: { + error: { + fallbackMessage: 'Tente novamente. Se isso continuar acontecendo, reabra o Clear.', + title: 'Não foi possível iniciar', + }, + loadingTitle: 'Preparando seu espaço de estudo', + }, + common: { + actions: { + back: 'Voltar', + cancel: 'Cancelar', + checkAgain: 'Verificar novamente', + close: 'Fechar', + create: 'Criar', + delete: 'Excluir', + dismissError: 'Dispensar erro', + dismissStatus: 'Dispensar status', + edit: 'Editar', + itemActions: 'Ações de {{title}}', + reset: 'Redefinir', + review: 'Revisar', + save: 'Salvar', + saveChanges: 'Salvar alterações', + tryAgain: 'Tentar novamente', + }, + labels: { + active: 'Ativo', + clear: 'Clear', + custom: 'Personalizado', + default: 'Padrão', + loadingEditor: 'Carregando editor', + name: 'Nome', + completedTask: 'Tarefa concluída', + description: 'Descrição', + incompleteTask: 'Tarefa incompleta', + percentageInput: 'Percentual de {{label}}', + visual: 'Visual', + }, + status: { + actionFailed: 'A ação falhou', + actionInProgress: 'Ação em andamento', + }, + sort: { + ascending: 'Asc', + column: 'Coluna', + descending: 'Desc', + direction: 'Direção', + sort: 'Ordenar', + }, + search: { + label: 'Pesquisar', + }, + visualPicker: { + allLucideIcons: 'Todos os ícones do Lucide', + browseIconsFor: 'Explore ou pesquise ícones para {{label}}.', + chooseIcon: 'Escolher ícone', + iconPicker: 'Seletor de ícones de {{label}}', + iconSearch: 'Pesquisa de ícones de {{label}}', + iconsCouldNotLoad: 'Não foi possível carregar os ícones.', + loadingIcons: 'Carregando ícones', + loadingMoreIcons: 'Carregando mais ícones', + moreIcons: 'Mais ícones', + noIconsMatch: 'Nenhum ícone corresponde a "{{query}}".', + searchIconsPlaceholder: 'Pesquisar ícones…', + selectedIcon: '{{label}} selecionado', + }, + }, + dashboard: { + actions: { + create: 'Criar', + newDeck: 'Novo baralho', + newFolder: 'Nova pasta', + }, + descriptions: { + defaultWorkspace: 'Mantenha baralhos, pastas e notas juntos.', + emptyWorkspace: 'Crie um baralho e depois adicione notas para montar sua fila de revisão.', + emptyFolder: 'Crie um baralho e depois adicione notas para montar uma fila de revisão.', + searchPlaceholder: 'Pesquisar pastas, baralhos e notas…', + }, + empty: { + createFirstDeck: 'Crie seu primeiro baralho', + }, + errors: { + couldNotDeleteDeck: 'Não foi possível excluir o baralho', + couldNotDeleteFolder: 'Não foi possível excluir a pasta', + couldNotDeleteWorkspace: 'Não foi possível excluir o espaço de trabalho', + dashboardCouldNotOpen: 'Não foi possível abrir o painel', + decksCouldNotLoad: 'Não foi possível carregar os baralhos', + decksMayBeOutOfDate: 'Os baralhos podem estar desatualizados', + foldersCouldNotLoad: 'Não foi possível carregar as pastas', + foldersMayBeOutOfDate: 'As pastas podem estar desatualizadas', + workspaceCouldNotLoad: 'Não foi possível carregar o espaço de trabalho', + }, + labels: { + dashboard: 'Painel', + loadingDashboard: 'Carregando painel', + newItem: 'Novo item', + }, + }, + dates: { + absolute: { + unavailable: 'Data indisponível', + }, + age: { + dayAgo_one: 'há {{count}} dia', + dayAgo_other: 'há {{count}} dias', + hourAgo_one: 'há {{count}} hora', + hourAgo_other: 'há {{count}} horas', + justNow: 'agora mesmo', + minuteAgo_one: 'há {{count}} minuto', + minuteAgo_other: 'há {{count}} minutos', + unavailable: 'data indisponível', + weekAgo_one: 'há {{count}} semana', + weekAgo_other: 'há {{count}} semanas', + }, + labels: { + deleted: 'Excluído {{value}}', + due: 'Vence: {{value}}', + reviewed: 'Revisado: {{value}}', + updated: 'Atualizado {{value}}', + updatedUppercase: 'ATUALIZADO {{value}}', + }, + relative: { + dayAgo_one: 'há {{count}} dia', + dayAgo_other: 'há {{count}} dias', + inAMoment: 'Em instantes', + inDay_one: 'Em {{count}} dia', + inDay_other: 'Em {{count}} dias', + inMonth_one: 'Em {{count}} mês', + inMonth_other: 'Em {{count}} meses', + inWeek_one: 'Em {{count}} semana', + inWeek_other: 'Em {{count}} semanas', + justNow: 'Agora mesmo', + monthAgo_one: 'há {{count}} mês', + monthAgo_other: 'há {{count}} meses', + secondsAgoShort: 'há {{count}} s', + minutesAgoShort: 'há {{count}} min', + hoursAgoShort: 'há {{count}} h', + today: 'Hoje', + tomorrow: 'Amanhã', + weekAgo_one: 'há {{count}} semana', + weekAgo_other: 'há {{count}} semanas', + yesterday: 'Ontem', + }, + }, + decks: { + actions: { + actionMenu: 'Ações de {{title}}', + createDeck: 'Criar baralho', + createNote: 'Criar nota', + deleteDeck: 'Excluir baralho', + editDeck: 'Editar baralho', + newNote: 'Nova nota', + openDeck: 'Abrir baralho {{title}}', + saveDeck: 'Não foi possível salvar o baralho', + studyNow: 'Estudar agora', + }, + descriptions: { + emptyDeck: 'Adicione uma nota para que este baralho tenha material para revisão.', + editorDefault: 'Baralho de estudo focado.', + editorVisual: 'Escolha um glifo de capa para este baralho.', + notesSearchPlaceholder: 'Pesquisar notas…', + }, + dialogs: { + deleteDeckDescription: 'Isso move "{{title}}" para a Lixeira. Você pode restaurá-lo depois.', + deleteDeckFallbackDescription: 'Isso move este baralho para a Lixeira. Você pode restaurá-lo depois.', + deleteDeckFallbackTitle: 'Excluir baralho?', + deleteDeckTitle: 'Excluir "{{title}}"?', + deleteNoteDescription: 'Isso move "{{title}}" para a Lixeira. Você pode restaurá-la depois.', + deleteNoteFallbackTitle: 'Excluir nota?', + deleteNoteTitle: 'Excluir "{{title}}"?', + }, + empty: { + noMatchingNotes: 'Nenhuma nota correspondente', + noMatchingNotesDescription: 'Nenhuma nota correspondeu a "{{query}}".', + thisDeckIsEmpty: 'Este baralho está vazio', + }, + errors: { + couldNotCreateDeck: 'Não foi possível criar o baralho', + couldNotDeleteDeck: 'Não foi possível excluir o baralho', + couldNotDeleteNote: 'Não foi possível excluir a nota', + couldNotLoadFolderPath: 'Não foi possível carregar o caminho da pasta', + couldNotSaveDeck: 'Não foi possível salvar o baralho', + deckCouldNotLoad: 'Não foi possível carregar o baralho', + notesCouldNotLoad: 'Não foi possível carregar as notas', + notesMayBeOutOfDate: 'As notas podem estar desatualizadas', + }, + fields: { + descriptionLabel: 'Descrição do baralho', + descriptionPlaceholder: 'O que este baralho vai ajudar você a revisar?', + namePlaceholder: 'Nome do baralho', + untitledDeck: 'Baralho sem título', + untitledDeckLower: 'baralho sem título', + }, + labels: { + createDeckTitle: 'Criar baralho', + deck: 'Baralho', + deckNotesSearch: 'Pesquisa de notas do baralho', + deckOverview: 'Visão geral do baralho', + decks: 'Baralhos', + due: 'Vence', + dueToday: 'Vence hoje', + loadingDeck: 'Carregando baralho', + mastery: 'Domínio', + notes: 'Notas', + }, + sort: { + ariaLabel: 'Ordenar baralhos', + dueToday: 'Vence hoje', + title: 'Título', + updated: 'Atualizado', + }, + }, + errors: { + byType: { + conflict: 'Os dados mudaram. Atualize e tente novamente.', + forbidden: 'Você não tem permissão para fazer isso.', + notFound: 'Não encontramos este item.', + offline: 'Não é possível acessar o serviço.', + timeout: 'Isso demorou demais. Tente novamente.', + unauthorized: 'Entre para continuar.', + unavailable: 'O serviço está temporariamente indisponível.', + }, + fallback: { + unexpected: 'Erro inesperado', + }, + }, + folders: { + actions: { + createFolder: 'Criar pasta', + deleteFolder: 'Excluir pasta', + editFolder: 'Editar pasta', + }, + descriptions: { + editorDefault: 'Pasta para baralhos relacionados.', + }, + dialogs: { + deleteFolderDescription: 'Isso move "{{name}}" para a Lixeira. Você pode restaurá-la depois.', + deleteFolderFallbackDescription: 'Isso move esta pasta para a Lixeira. Você pode restaurá-la depois.', + deleteFolderFallbackTitle: 'Excluir pasta?', + deleteFolderTitle: 'Excluir "{{name}}"?', + }, + empty: { + noMatchesInFolder: 'Nenhuma correspondência nesta pasta', + noMatchesInFolderDescription: 'Nenhuma pasta, baralho ou nota correspondeu a "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'Não foi possível criar a pasta', + couldNotDeleteFolder: 'Não foi possível excluir a pasta', + couldNotLoadFolderPath: 'Não foi possível carregar o caminho da pasta', + couldNotSaveFolder: 'Não foi possível salvar a pasta', + folderCouldNotLoad: 'Não foi possível carregar a pasta', + }, + fields: { + descriptionLabel: 'Descrição da pasta', + descriptionPlaceholder: 'O que pertence a esta pasta?', + namePlaceholder: 'Nome da pasta', + untitledFolder: 'Pasta sem título', + }, + labels: { + createFolderTitle: 'Criar pasta', + folder: 'Pasta', + folders: 'Pastas', + loadingFolder: 'Carregando pasta', + name: 'Nome', + updated: 'Atualizado', + }, + sort: { + ariaLabel: 'Ordenar pastas', + name: 'Nome', + updated: 'Atualizado', + }, + }, + menu: { + conflicts: { + description: 'Se os dados locais e sincronizados discordarem, o item aparecerá aqui.', + heading: 'Status de sincronização', + title: 'Conflitos', + noConflicts: 'Nenhum conflito encontrado', + }, + labels: { + menu: 'Menu', + }, + sections: { + settings: { + description: 'Personalize seu ambiente e suas preferências', + title: 'Configurações', + }, + trash: { + description: 'Restaure ou exclua permanentemente itens removidos', + title: 'Lixeira', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Fechar editor', + openActions: 'Abrir ações', + openWorkspaces: 'Abrir espaços de trabalho', + }, + items: { + home: 'Início', + menu: 'Menu', + primary: 'Principal', + settings: 'Configurações', + spaces: 'Espaços', + trash: 'Lixeira', + workspaces: 'Espaços de trabalho', + }, + }, + notes: { + actions: { + addCloze: 'Adicionar cloze', + deleteNote: 'Excluir nota', + editNote: 'Editar nota', + hideDerivedCardsNote: 'Ocultar nota de cartões derivados', + openNote: 'Abrir {{title}}', + saveNote: 'Salvar nota', + showDerivedCardsNote: 'Mostrar nota de cartões derivados', + }, + descriptions: { + clozeFormat: 'Cada parte oculta vira um cartão de revisão quando você salva.', + clozeFormatPrefix: 'Envolva o texto oculto com', + derivedCardsHelper: 'As notas são a fonte da verdade para cartões derivados.', + }, + dialogs: { + deleteNoteDescription: 'Isso move "{{title}}" para a Lixeira. Você pode restaurá-la depois.', + deleteNoteFallbackDescription: 'Isso move esta nota para a Lixeira. Você pode restaurá-la depois.', + deleteNoteFallbackTitle: 'Excluir nota?', + deleteNoteTitle: 'Excluir "{{title}}"?', + }, + errors: { + couldNotCreateNote: 'Não foi possível criar a nota', + couldNotDeleteNote: 'Não foi possível excluir a nota', + couldNotSaveNote: 'Não foi possível salvar a nota', + noteCouldNotLoad: 'Não foi possível carregar a nota', + }, + fields: { + back: 'Verso', + backPlaceholder: 'Digite o verso', + bodyPlaceholder: 'Escreva o corpo da nota com cloze deletions…', + front: 'Frente', + frontPlaceholder: 'Digite a frente', + noteBody: 'Corpo da nota', + title: 'Título', + titlePlaceholder: 'Adicione um título à nota', + untitledCloze: 'Cloze sem título', + untitledNote: 'Nota sem título', + }, + labels: { + backUppercase: 'VERSO', + basic: 'Básica', + basicLower: 'básica', + basicUppercase: 'BÁSICA', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Formato cloze', + clozeUppercase: 'CLOZE', + deck: 'Baralho', + derivedCards: 'CARTÕES DERIVADOS', + due: 'Vence', + frontUppercase: 'FRENTE', + inProgress: 'Em andamento', + inProgressUppercase: 'EM ANDAMENTO', + loadingNote: 'Carregando nota', + loadingNoteEditor: 'Carregando editor de notas', + markdownFormatting: 'Formatação Markdown', + mastered: 'Dominado', + masteredUppercase: 'DOMINADO', + newNote: 'Nova nota', + noteBody: 'CORPO DA NOTA', + noteContent: 'Conteúdo da nota', + noteDetails: 'Detalhes da nota', + noteMetadata: 'Metadados da nota', + noteType: 'Tipo de nota', + notes: 'Notas', + reviewed: 'Revisado', + studyProgress: 'Progresso de estudo', + studyProgressUppercase: 'PROGRESSO DE ESTUDO', + titleUppercase: 'TÍTULO', + updated: 'Atualizado', + }, + sort: { + ariaLabel: 'Ordenar notas', + title: 'Título', + updated: 'Atualizado', + }, + toolbar: { + bold: 'Negrito', + italic: 'Itálico', + link: 'Link', + list: 'Lista', + }, + }, + review: { + actions: { + again: 'De novo', + backToDeck: 'Voltar ao baralho', + continueReview: 'Continuar revisão', + easy: 'Fácil', + good: 'Bom', + hard: 'Difícil', + newNote: 'Nova nota', + showAnswer: 'Mostrar resposta', + }, + errors: { + couldNotGradeCard: 'Não foi possível avaliar o cartão', + reviewCouldNotLoad: 'Não foi possível carregar a revisão', + reviewCouldNotStart: 'Não foi possível iniciar a revisão', + summaryCouldNotLoad: 'Não foi possível carregar o resumo da revisão', + summaryNotAvailable: 'O resumo da revisão não está disponível', + summaryNotComplete: 'Esta revisão ainda não foi concluída.', + }, + labels: { + cardsReviewed: 'Cartões revisados', + deck: 'Baralho', + duration: 'Duração', + loadingReview: 'Carregando revisão', + loadingSummary: 'Carregando resumo', + progress: 'Progresso da revisão', + review: 'Revisão', + reviewComplete: 'Revisão concluída', + reviewed_one: '{{count}} revisado', + reviewed_other: '{{count}} revisados', + }, + summary: { + durationHoursMinutes: '{{hours}} h {{minutes}} min', + durationMinutes: '{{minutes}} min', + durationSeconds: '{{seconds}} s', + saved: 'Seu progresso foi salvo neste baralho.', + }, + unavailable: { + description: 'Adicione uma nota para que este baralho possa entrar na fila de revisão.', + title: 'Nenhum cartão para revisar', + }, + }, + search: { + actions: { + clearSearch: 'Limpar pesquisa', + }, + empty: { + noMatchesInWorkspace: 'Nenhuma correspondência neste espaço de trabalho', + noMatchesInWorkspaceDescription: 'Nenhuma pasta, baralho ou nota correspondeu a "{{query}}".', + }, + errors: { + couldNotComplete: 'Não foi possível concluir a pesquisa', + }, + labels: { + results: 'Resultados da pesquisa', + resultsFor: 'Resultados para "{{query}}"', + searchingContent: 'Pesquisando conteúdo', + }, + resultGroups: { + deck: 'Baralhos', + folder: 'Pastas', + note: 'Notas', + }, + resultKinds: { + deck: 'baralho', + folder: 'pasta', + note: 'nota', + }, + }, + settings: { + actions: { + resetAll: 'Redefinir todas as configurações', + resetSettings: 'Redefinir configurações', + resetToDefaults: 'Restaurar padrões', + }, + dialogs: { + fsrsErrorInvalidJson: 'Cole um JSON válido com 21 valores numéricos.', + fsrsErrorInvalidParams_one: 'Insira um array JSON com exatamente {{count}} número finito.', + fsrsErrorInvalidParams_other: 'Insira um array JSON com exatamente {{count}} números finitos.', + fsrsHelper: 'Esta é uma substituição avançada. Os valores devem permanecer em ordem.', + fsrsJsonLabel: 'JSON de parâmetros FSRS', + fsrsTitle: 'Editar parâmetros FSRS', + fsrsDescription: 'Cole um array JSON com 21 números para substituir os pesos do scheduler.', + resetDescription: 'Isso restaura fuso horário, limites de estudo e configurações de FSRS.', + resetDescriptionWithLanguage: 'Isso restaura idioma, fuso horário, limites de estudo e configurações de FSRS.', + resetTitle: 'Redefinir todas as configurações?', + timezoneDescription: 'Pesquise uma cidade ou identificador de fuso horário.', + timezoneSearchLabel: 'Pesquisar fusos horários', + timezoneSearchPlaceholder: 'Pesquisar fusos horários…', + timezoneTitle: 'Escolher fuso horário', + }, + errors: { + couldNotResetSettings: 'Não foi possível redefinir as configurações', + couldNotSaveSettings: 'Não foi possível salvar as configurações', + settingsCouldNotLoad: 'Não foi possível carregar as configurações', + settingsUnavailable: 'As configurações estão indisponíveis.', + }, + labels: { + appearance: 'Aparência', + automatic: 'Automático', + fsrsParameters: 'Parâmetros FSRS', + general: 'Geral', + language: 'Idioma', + loadingSettings: 'Carregando configurações', + masteryHorizon: 'Horizonte de domínio', + newCardOrder: 'Ordem de cartões novos', + newCardsPerDay: 'Cartões novos por dia', + reviewCardsPerDay: 'Cartões de revisão por dia', + savingSettings: 'Salvando configurações', + schedule: 'Agenda', + searchNoTimezones: 'Nenhum fuso horário correspondente.', + settings: 'Configurações', + settingsReset: 'Configurações redefinidas', + study: 'Estudo', + targetRecallProbability: 'Probabilidade-alvo de lembrança', + theme: 'Tema', + timezone: 'Fuso horário', + }, + options: { + languageEnUs: 'Inglês (EUA)', + newCardsAfterReviews: 'Depois das revisões', + newCardsBeforeReviews: 'Antes das revisões', + newCardsMixed: 'Misturados', + themeDark: 'Escuro', + themeLight: 'Claro', + themeSystem: 'Sistema', + timezoneSystem: 'Usar fuso horário do sistema', + }, + rows: { + fsrsDescription: 'Pesos do modelo avançado', + languageDescription: 'Idioma da interface', + masteryHorizonDescription: 'Dias em que um cartão deve permanecer recuperável no alvo ou acima dele para contar como dominado', + newCardOrderDescription: 'Ordem dos cartões novos em relação às revisões', + newCardsPerDayDescription: 'Máximo de cartões novos por dia', + reviewCardsPerDayDescription: 'Máximo de cartões de revisão por dia', + targetRecallProbabilityDescription: 'Probabilidade mínima de lembrança na próxima revisão agendada', + timezoneDescription: 'Use o fuso horário automático ou escolha uma cidade.', + }, + }, + trash: { + actions: { + deletePermanently: 'Excluir permanentemente', + empty: 'Esvaziar', + emptyTrash: 'Esvaziar lixeira', + restore: 'Restaurar', + restoringItem: 'Restaurando {{title}}', + }, + dialogs: { + deleteItemDescription: 'Isso exclui "{{title}}" permanentemente. Não é possível desfazer.', + deleteItemFallbackDescription: 'Isso exclui este item permanentemente. Não é possível desfazer.', + deleteItemFallbackTitle: 'Excluir item?', + deleteItemTitle: 'Excluir "{{title}}"?', + emptyTrashDescription: 'Isso exclui permanentemente tudo na Lixeira. Não é possível desfazer.', + emptyTrashTitle: 'Esvaziar lixeira?', + }, + empty: { + description: 'Os itens que você excluir aparecerão aqui antes da remoção permanente.', + title: 'A Lixeira está vazia', + }, + errors: { + couldNotDeleteItem: 'Não foi possível excluir o item', + couldNotEmptyTrash: 'Não foi possível esvaziar a Lixeira', + couldNotRestoreItem: 'Não foi possível restaurar o item', + trashCouldNotLoad: 'Não foi possível carregar a Lixeira', + trashMayBeOutOfDate: 'A Lixeira pode estar desatualizada', + }, + labels: { + deletedAge: 'Excluído {{value}}', + itemCount_one: '{{count}} item', + itemCount_other: '{{count}} itens', + lastEmptied: 'Esvaziada pela última vez {{value}}', + loadingTrash: 'Carregando Lixeira', + originalLocation: 'Local original: {{location}}', + title: 'Lixeira', + trashActions: 'Ações de lixeira de {{title}}', + }, + kinds: { + deck: 'Baralho', + folder: 'Pasta', + note: 'Nota', + workspace: 'Espaço de trabalho', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Criar espaço de trabalho', + deleteWorkspace: 'Excluir espaço de trabalho', + editWorkspace: 'Editar espaço de trabalho', + newWorkspace: 'Novo espaço de trabalho', + openWorkspace: 'Abrir {{title}}', + openingWorkspace: 'Abrindo {{title}}', + }, + descriptions: { + editorDefault: 'Contexto de estudo.', + editorVisual: 'Escolha uma âncora visual para este espaço de trabalho.', + emptyList: 'Separe baralhos, notas e filas de revisão por contexto de estudo.', + }, + dialogs: { + deleteWorkspaceDescription: 'Isso move "{{title}}" para a Lixeira. Você pode restaurá-lo depois.', + deleteWorkspaceFallbackDescription: 'Isso move este espaço de trabalho para a Lixeira. Você pode restaurá-lo depois.', + deleteWorkspaceFallbackTitle: 'Excluir espaço de trabalho?', + deleteWorkspaceTitle: 'Excluir "{{title}}"?', + }, + empty: { + startWithWorkspace: 'Comece com um espaço de trabalho', + }, + errors: { + couldNotCreateWorkspace: 'Não foi possível criar o espaço de trabalho', + couldNotDeleteWorkspace: 'Não foi possível excluir o espaço de trabalho', + couldNotOpenWorkspace: 'Não foi possível abrir o espaço de trabalho', + couldNotSaveWorkspace: 'Não foi possível salvar o espaço de trabalho', + workspaceCouldNotLoad: 'Não foi possível carregar o espaço de trabalho', + workspacesCouldNotLoad: 'Não foi possível carregar os espaços de trabalho', + }, + fields: { + descriptionLabel: 'Descrição do espaço de trabalho', + descriptionPlaceholder: 'O que pertence a este espaço de trabalho?', + namePlaceholder: 'Nome do espaço de trabalho', + untitledWorkspace: 'Espaço de trabalho sem título', + }, + labels: { + createWorkspaceTitle: 'Criar espaço de trabalho', + loadingWorkspaces: 'Carregando espaços de trabalho', + workspace: 'Espaço de trabalho', + workspaces: 'Espaços de trabalho', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/ro.ts b/ui/src/core/i18n/resources/ro.ts new file mode 100644 index 0000000..a485893 --- /dev/null +++ b/ui/src/core/i18n/resources/ro.ts @@ -0,0 +1,636 @@ +export const ro = { + bootstrap: { + error: { + fallbackMessage: 'Încearcă din nou. Dacă se repetă, redeschide Clear.', + title: 'Nu s-a putut porni', + }, + loadingTitle: 'Se pregătește spațiul tău de studiu', + }, + common: { + actions: { + back: 'Înapoi', + cancel: 'Anulează', + checkAgain: 'Verifică din nou', + close: 'Închide', + create: 'Creează', + delete: 'Șterge', + dismissError: 'Închide eroarea', + dismissStatus: 'Închide starea', + edit: 'Editează', + itemActions: 'Acțiuni pentru {{title}}', + reset: 'Resetează', + review: 'Recapitulează', + save: 'Salvează', + saveChanges: 'Salvează modificările', + tryAgain: 'Încearcă din nou', + }, + labels: { + active: 'Activ', + clear: 'Clear', + custom: 'Personalizat', + default: 'Implicit', + loadingEditor: 'Se încarcă editorul', + name: 'Nume', + completedTask: 'Sarcină finalizată', + description: 'Descriere', + incompleteTask: 'Sarcină nefinalizată', + percentageInput: 'Procent pentru {{label}}', + visual: 'Vizual', + }, + status: { + actionFailed: 'Acțiunea a eșuat', + actionInProgress: 'Acțiune în curs', + }, + sort: { + ascending: 'Asc.', + column: 'Coloană', + descending: 'Desc.', + direction: 'Direcție', + sort: 'Sortează', + }, + search: { + label: 'Caută', + }, + visualPicker: { + allLucideIcons: 'Toate pictogramele Lucide', + browseIconsFor: 'Răsfoiește sau caută pictograme pentru {{label}}.', + chooseIcon: 'Alege pictograma', + iconPicker: 'Selector de pictograme pentru {{label}}', + iconSearch: 'Căutare pictograme pentru {{label}}', + iconsCouldNotLoad: 'Pictogramele nu au putut fi încărcate.', + loadingIcons: 'Se încarcă pictogramele', + loadingMoreIcons: 'Se încarcă mai multe pictograme', + moreIcons: 'Mai multe pictograme', + noIconsMatch: 'Nicio pictogramă nu se potrivește cu "{{query}}".', + searchIconsPlaceholder: 'Caută pictograme…', + selectedIcon: '{{label}} selectat', + }, + }, + dashboard: { + actions: { + create: 'Creează', + newDeck: 'Pachet nou', + newFolder: 'Folder nou', + }, + descriptions: { + defaultWorkspace: 'Ține pachetele, folderele și notițele împreună.', + emptyWorkspace: 'Creează un pachet, apoi adaugă notițe pentru a construi coada de recapitulare.', + emptyFolder: 'Creează un pachet, apoi adaugă notițe pentru a construi o coadă de recapitulare.', + searchPlaceholder: 'Caută foldere, pachete și notițe…', + }, + empty: { + createFirstDeck: 'Creează primul pachet', + }, + errors: { + couldNotDeleteDeck: 'Pachetul nu a putut fi șters', + couldNotDeleteFolder: 'Folderul nu a putut fi șters', + couldNotDeleteWorkspace: 'Spațiul de lucru nu a putut fi șters', + dashboardCouldNotOpen: 'Panoul nu a putut fi deschis', + decksCouldNotLoad: 'Pachetele nu au putut fi încărcate', + decksMayBeOutOfDate: 'Pachetele pot fi neactualizate', + foldersCouldNotLoad: 'Folderele nu au putut fi încărcate', + foldersMayBeOutOfDate: 'Folderele pot fi neactualizate', + workspaceCouldNotLoad: 'Spațiul de lucru nu a putut fi încărcat', + }, + labels: { + dashboard: 'Panou', + loadingDashboard: 'Se încarcă panoul', + newItem: 'Element nou', + }, + }, + dates: { + absolute: { + unavailable: 'Data nu este disponibilă', + }, + age: { + dayAgo_one: 'acum {{count}} zi', + dayAgo_few: 'acum {{count}} zile', + dayAgo_other: 'acum {{count}} de zile', + hourAgo_one: 'acum {{count}} oră', + hourAgo_few: 'acum {{count}} ore', + hourAgo_other: 'acum {{count}} de ore', + justNow: 'chiar acum', + minuteAgo_one: 'acum {{count}} minut', + minuteAgo_few: 'acum {{count}} minute', + minuteAgo_other: 'acum {{count}} de minute', + unavailable: 'data nu este disponibilă', + weekAgo_one: 'acum {{count}} săptămână', + weekAgo_few: 'acum {{count}} săptămâni', + weekAgo_other: 'acum {{count}} de săptămâni', + }, + labels: { + deleted: 'Șters {{value}}', + due: 'Scadent: {{value}}', + reviewed: 'Recapitulat: {{value}}', + updated: 'Actualizat {{value}}', + updatedUppercase: 'ACTUALIZAT {{value}}', + }, + relative: { + dayAgo_one: 'acum {{count}} zi', + dayAgo_few: 'acum {{count}} zile', + dayAgo_other: 'acum {{count}} de zile', + inAMoment: 'Într-o clipă', + inDay_one: 'În {{count}} zi', + inDay_few: 'În {{count}} zile', + inDay_other: 'În {{count}} de zile', + inMonth_one: 'În {{count}} lună', + inMonth_few: 'În {{count}} luni', + inMonth_other: 'În {{count}} de luni', + inWeek_one: 'În {{count}} săptămână', + inWeek_few: 'În {{count}} săptămâni', + inWeek_other: 'În {{count}} de săptămâni', + justNow: 'Chiar acum', + monthAgo_one: 'acum {{count}} lună', + monthAgo_few: 'acum {{count}} luni', + monthAgo_other: 'acum {{count}} de luni', + secondsAgoShort: 'acum {{count}} s', + minutesAgoShort: 'acum {{count}} min', + hoursAgoShort: 'acum {{count}} h', + today: 'Astăzi', + tomorrow: 'Mâine', + weekAgo_one: 'acum {{count}} săptămână', + weekAgo_few: 'acum {{count}} săptămâni', + weekAgo_other: 'acum {{count}} de săptămâni', + yesterday: 'Ieri', + }, + }, + decks: { + actions: { + actionMenu: 'Acțiuni pentru {{title}}', + createDeck: 'Creează pachet', + createNote: 'Creează notiță', + deleteDeck: 'Șterge pachetul', + editDeck: 'Editează pachetul', + newNote: 'Notiță nouă', + openDeck: 'Deschide pachetul {{title}}', + saveDeck: 'Pachetul nu a putut fi salvat', + studyNow: 'Studiază acum', + }, + descriptions: { + emptyDeck: 'Adaugă o notiță pentru ca acest pachet să aibă material de recapitulat.', + editorDefault: 'Pachet de studiu concentrat.', + editorVisual: 'Alege un simbol de copertă pentru acest pachet.', + notesSearchPlaceholder: 'Caută notițe…', + }, + dialogs: { + deleteDeckDescription: 'Aceasta mută "{{title}}" în Coș. Îl poți restaura mai târziu.', + deleteDeckFallbackDescription: 'Aceasta mută acest pachet în Coș. Îl poți restaura mai târziu.', + deleteDeckFallbackTitle: 'Ștergi pachetul?', + deleteDeckTitle: 'Ștergi "{{title}}"?', + deleteNoteDescription: 'Aceasta mută "{{title}}" în Coș. O poți restaura mai târziu.', + deleteNoteFallbackTitle: 'Ștergi notița?', + deleteNoteTitle: 'Ștergi "{{title}}"?', + }, + empty: { + noMatchingNotes: 'Nicio notiță potrivită', + noMatchingNotesDescription: 'Nicio notiță nu se potrivește cu "{{query}}".', + thisDeckIsEmpty: 'Acest pachet este gol', + }, + errors: { + couldNotCreateDeck: 'Pachetul nu a putut fi creat', + couldNotDeleteDeck: 'Pachetul nu a putut fi șters', + couldNotDeleteNote: 'Notița nu a putut fi ștearsă', + couldNotLoadFolderPath: 'Calea folderului nu a putut fi încărcată', + couldNotSaveDeck: 'Pachetul nu a putut fi salvat', + deckCouldNotLoad: 'Pachetul nu a putut fi încărcat', + notesCouldNotLoad: 'Notițele nu au putut fi încărcate', + notesMayBeOutOfDate: 'Notițele pot fi neactualizate', + }, + fields: { + descriptionLabel: 'Descrierea pachetului', + descriptionPlaceholder: 'Ce te va ajuta să recapitulezi acest pachet?', + namePlaceholder: 'Numele pachetului', + untitledDeck: 'Pachet fără titlu', + untitledDeckLower: 'pachet fără titlu', + }, + labels: { + createDeckTitle: 'Creează pachet', + deck: 'Pachet', + deckNotesSearch: 'Căutare notițe în pachet', + deckOverview: 'Prezentare pachet', + decks: 'Pachete', + due: 'Scadent', + dueToday: 'Scadent astăzi', + loadingDeck: 'Se încarcă pachetul', + mastery: 'Stăpânire', + notes: 'Notițe', + }, + sort: { + ariaLabel: 'Sortează pachetele', + dueToday: 'Scadent astăzi', + title: 'Titlu', + updated: 'Actualizat', + }, + }, + errors: { + byType: { + conflict: 'Datele s-au schimbat. Reîmprospătează și încearcă din nou.', + forbidden: 'Nu ai permisiunea să faci asta.', + notFound: 'Nu am putut găsi acest element.', + offline: 'Serviciul nu poate fi contactat.', + timeout: 'A durat prea mult. Încearcă din nou.', + unauthorized: 'Conectează-te pentru a continua.', + unavailable: 'Serviciul este temporar indisponibil.', + }, + fallback: { + unexpected: 'Eroare neașteptată', + }, + }, + folders: { + actions: { + createFolder: 'Creează folder', + deleteFolder: 'Șterge folderul', + editFolder: 'Editează folderul', + }, + descriptions: { + editorDefault: 'Folder pentru pachete asociate.', + }, + dialogs: { + deleteFolderDescription: 'Aceasta mută "{{name}}" în Coș. Îl poți restaura mai târziu.', + deleteFolderFallbackDescription: 'Aceasta mută acest folder în Coș. Îl poți restaura mai târziu.', + deleteFolderFallbackTitle: 'Ștergi folderul?', + deleteFolderTitle: 'Ștergi "{{name}}"?', + }, + empty: { + noMatchesInFolder: 'Nicio potrivire în acest folder', + noMatchesInFolderDescription: 'Niciun folder, pachet sau nicio notiță nu se potrivește cu "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'Folderul nu a putut fi creat', + couldNotDeleteFolder: 'Folderul nu a putut fi șters', + couldNotLoadFolderPath: 'Calea folderului nu a putut fi încărcată', + couldNotSaveFolder: 'Folderul nu a putut fi salvat', + folderCouldNotLoad: 'Folderul nu a putut fi încărcat', + }, + fields: { + descriptionLabel: 'Descrierea folderului', + descriptionPlaceholder: 'Ce aparține acestui folder?', + namePlaceholder: 'Numele folderului', + untitledFolder: 'Folder fără titlu', + }, + labels: { + createFolderTitle: 'Creează folder', + folder: 'Folder', + folders: 'Foldere', + loadingFolder: 'Se încarcă folderul', + name: 'Nume', + updated: 'Actualizat', + }, + sort: { + ariaLabel: 'Sortează folderele', + name: 'Nume', + updated: 'Actualizat', + }, + }, + menu: { + conflicts: { + description: 'Dacă datele locale și cele sincronizate diferă, elementul va apărea aici.', + heading: 'Stare sincronizare', + title: 'Conflicte', + noConflicts: 'Nu s-au găsit conflicte', + }, + labels: { + menu: 'Meniu', + }, + sections: { + settings: { + description: 'Personalizează mediul și preferințele', + title: 'Setări', + }, + trash: { + description: 'Restaurează sau șterge definitiv elementele eliminate', + title: 'Coș', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Închide editorul', + openActions: 'Deschide acțiunile', + openWorkspaces: 'Deschide spațiile de lucru', + }, + items: { + home: 'Acasă', + menu: 'Meniu', + primary: 'Principal', + settings: 'Setări', + spaces: 'Spații', + trash: 'Coș', + workspaces: 'Spații de lucru', + }, + }, + notes: { + actions: { + addCloze: 'Adaugă cloze', + deleteNote: 'Șterge notița', + editNote: 'Editează notița', + hideDerivedCardsNote: 'Ascunde nota despre cardurile derivate', + openNote: 'Deschide {{title}}', + saveNote: 'Salvează notița', + showDerivedCardsNote: 'Arată nota despre cardurile derivate', + }, + descriptions: { + clozeFormat: 'Fiecare parte ascunsă devine un card de recapitulare când salvezi.', + clozeFormatPrefix: 'Încadrează textul ascuns cu', + derivedCardsHelper: 'Notițele sunt sursa de adevăr pentru cardurile derivate.', + }, + dialogs: { + deleteNoteDescription: 'Aceasta mută "{{title}}" în Coș. O poți restaura mai târziu.', + deleteNoteFallbackDescription: 'Aceasta mută această notiță în Coș. O poți restaura mai târziu.', + deleteNoteFallbackTitle: 'Ștergi notița?', + deleteNoteTitle: 'Ștergi "{{title}}"?', + }, + errors: { + couldNotCreateNote: 'Notița nu a putut fi creată', + couldNotDeleteNote: 'Notița nu a putut fi ștearsă', + couldNotSaveNote: 'Notița nu a putut fi salvată', + noteCouldNotLoad: 'Notița nu a putut fi încărcată', + }, + fields: { + back: 'Verso', + backPlaceholder: 'Introdu verso', + bodyPlaceholder: 'Scrie conținutul notiței cu ștergeri cloze…', + front: 'Față', + frontPlaceholder: 'Introdu fața', + noteBody: 'Conținutul notiței', + title: 'Titlu', + titlePlaceholder: 'Adaugă un titlu pentru notiță', + untitledCloze: 'Cloze fără titlu', + untitledNote: 'Notiță fără titlu', + }, + labels: { + backUppercase: 'VERSO', + basic: 'De bază', + basicLower: 'de bază', + basicUppercase: 'DE BAZĂ', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Format cloze', + clozeUppercase: 'CLOZE', + deck: 'Pachet', + derivedCards: 'CARDURI DERIVATE', + due: 'Scadent', + frontUppercase: 'FAȚĂ', + inProgress: 'În curs', + inProgressUppercase: 'ÎN CURS', + loadingNote: 'Se încarcă notița', + loadingNoteEditor: 'Se încarcă editorul de notițe', + markdownFormatting: 'Formatare Markdown', + mastered: 'Stăpânit', + masteredUppercase: 'STĂPÂNIT', + newNote: 'Notiță nouă', + noteBody: 'CONȚINUTUL NOTIȚEI', + noteContent: 'Conținut notiță', + noteDetails: 'Detalii notiță', + noteMetadata: 'Metadate notiță', + noteType: 'Tip notiță', + notes: 'Notițe', + reviewed: 'Recapitulat', + studyProgress: 'Progresul studiului', + studyProgressUppercase: 'PROGRESUL STUDIULUI', + titleUppercase: 'TITLU', + updated: 'Actualizat', + }, + sort: { + ariaLabel: 'Sortează notițele', + title: 'Titlu', + updated: 'Actualizat', + }, + toolbar: { + bold: 'Aldin', + italic: 'Cursiv', + link: 'Link', + list: 'Listă', + }, + }, + review: { + actions: { + again: 'Din nou', + backToDeck: 'Înapoi la pachet', + continueReview: 'Continuă recapitularea', + easy: 'Ușor', + good: 'Bine', + hard: 'Greu', + newNote: 'Notiță nouă', + showAnswer: 'Arată răspunsul', + }, + errors: { + couldNotGradeCard: 'Cardul nu a putut fi evaluat', + reviewCouldNotLoad: 'Recapitularea nu a putut fi încărcată', + reviewCouldNotStart: 'Recapitularea nu a putut fi pornită', + summaryCouldNotLoad: 'Rezumatul recapitulării nu a putut fi încărcat', + summaryNotAvailable: 'Rezumatul recapitulării nu este disponibil', + summaryNotComplete: 'Această recapitulare nu este încă finalizată.', + }, + labels: { + cardsReviewed: 'Carduri recapitulate', + deck: 'Pachet', + duration: 'Durată', + loadingReview: 'Se încarcă recapitularea', + loadingSummary: 'Se încarcă rezumatul', + progress: 'Progres recapitulare', + review: 'Recapitulare', + reviewComplete: 'Recapitulare finalizată', + reviewed_one: 'Recapitulat {{count}}', + reviewed_few: 'Recapitulate {{count}}', + reviewed_other: 'Recapitulate {{count}}', + }, + summary: { + durationHoursMinutes: '{{hours}} h {{minutes}} min', + durationMinutes: '{{minutes}} min', + durationSeconds: '{{seconds}} s', + saved: 'Progresul tău a fost salvat în acest pachet.', + }, + unavailable: { + description: 'Adaugă o notiță pentru ca acest pachet să intre în coada de recapitulare.', + title: 'Nu există carduri de recapitulat', + }, + }, + search: { + actions: { + clearSearch: 'Golește căutarea', + }, + empty: { + noMatchesInWorkspace: 'Nicio potrivire în acest spațiu de lucru', + noMatchesInWorkspaceDescription: 'Niciun folder, pachet sau nicio notiță nu se potrivește cu "{{query}}".', + }, + errors: { + couldNotComplete: 'Căutarea nu a putut fi finalizată', + }, + labels: { + results: 'Rezultatele căutării', + resultsFor: 'Rezultate pentru "{{query}}"', + searchingContent: 'Se caută conținut', + }, + resultGroups: { + deck: 'Pachete', + folder: 'Foldere', + note: 'Notițe', + }, + resultKinds: { + deck: 'pachet', + folder: 'folder', + note: 'notiță', + }, + }, + settings: { + actions: { + resetAll: 'Resetează toate setările', + resetSettings: 'Resetează setările', + resetToDefaults: 'Revino la valorile implicite', + }, + dialogs: { + fsrsErrorInvalidJson: 'Lipește JSON valid cu 21 de valori numerice.', + fsrsErrorInvalidParams_one: 'Introdu un array JSON cu exact {{count}} număr finit.', + fsrsErrorInvalidParams_few: 'Introdu un array JSON cu exact {{count}} numere finite.', + fsrsErrorInvalidParams_other: 'Introdu un array JSON cu exact {{count}} de numere finite.', + fsrsHelper: 'Aceasta este o suprascriere expert. Valorile trebuie să rămână în ordine.', + fsrsJsonLabel: 'JSON parametri FSRS', + fsrsTitle: 'Editează parametrii FSRS', + fsrsDescription: 'Lipește un array JSON cu 21 de numere pentru a suprascrie ponderile scheduler.', + resetDescription: 'Aceasta restaurează fusul orar, limitele de studiu și setările FSRS.', + resetDescriptionWithLanguage: 'Aceasta restaurează limba, fusul orar, limitele de studiu și setările FSRS.', + resetTitle: 'Resetezi toate setările?', + timezoneDescription: 'Caută un oraș sau un identificator de fus orar.', + timezoneSearchLabel: 'Caută fusuri orare', + timezoneSearchPlaceholder: 'Caută fusuri orare…', + timezoneTitle: 'Alege fusul orar', + }, + errors: { + couldNotResetSettings: 'Setările nu au putut fi resetate', + couldNotSaveSettings: 'Setările nu au putut fi salvate', + settingsCouldNotLoad: 'Setările nu au putut fi încărcate', + settingsUnavailable: 'Setările nu sunt disponibile.', + }, + labels: { + appearance: 'Aspect', + automatic: 'Automat', + fsrsParameters: 'Parametri FSRS', + general: 'General', + language: 'Limbă', + loadingSettings: 'Se încarcă setările', + masteryHorizon: 'Orizont de stăpânire', + newCardOrder: 'Ordinea cardurilor noi', + newCardsPerDay: 'Carduri noi pe zi', + reviewCardsPerDay: 'Carduri de recapitulat pe zi', + savingSettings: 'Se salvează setările', + schedule: 'Program', + searchNoTimezones: 'Niciun fus orar potrivit.', + settings: 'Setări', + settingsReset: 'Setări resetate', + study: 'Studiu', + targetRecallProbability: 'Probabilitate țintă de reamintire', + theme: 'Temă', + timezone: 'Fus orar', + }, + options: { + languageEnUs: 'Engleză (SUA)', + newCardsAfterReviews: 'După recapitulări', + newCardsBeforeReviews: 'Înainte de recapitulări', + newCardsMixed: 'Amestecat', + themeDark: 'Întunecată', + themeLight: 'Luminoasă', + themeSystem: 'Sistem', + timezoneSystem: 'Folosește fusul orar al sistemului', + }, + rows: { + fsrsDescription: 'Ponderi ale modelului expert', + languageDescription: 'Limba interfeței', + masteryHorizonDescription: 'Numărul de zile în care un card trebuie să rămână reamintibil la probabilitatea țintă sau peste pentru a fi considerat stăpânit', + newCardOrderDescription: 'Ordinea cardurilor noi față de recapitulări', + newCardsPerDayDescription: 'Numărul maxim de carduri noi pe zi', + reviewCardsPerDayDescription: 'Numărul maxim de carduri de recapitulat pe zi', + targetRecallProbabilityDescription: 'Probabilitatea minimă de reamintire la următoarea recapitulare programată', + timezoneDescription: 'Folosește fusul orar automat sau alege un oraș.', + }, + }, + trash: { + actions: { + deletePermanently: 'Șterge definitiv', + empty: 'Golește', + emptyTrash: 'Golește coșul', + restore: 'Restaurează', + restoringItem: 'Se restaurează {{title}}', + }, + dialogs: { + deleteItemDescription: 'Aceasta șterge definitiv "{{title}}". Acțiunea nu poate fi anulată.', + deleteItemFallbackDescription: 'Aceasta șterge definitiv acest element. Acțiunea nu poate fi anulată.', + deleteItemFallbackTitle: 'Ștergi elementul?', + deleteItemTitle: 'Ștergi "{{title}}"?', + emptyTrashDescription: 'Aceasta șterge definitiv tot din Coș. Acțiunea nu poate fi anulată.', + emptyTrashTitle: 'Golești coșul?', + }, + empty: { + description: 'Elementele pe care le ștergi vor apărea aici înainte de eliminarea definitivă.', + title: 'Coșul este gol', + }, + errors: { + couldNotDeleteItem: 'Elementul nu a putut fi șters', + couldNotEmptyTrash: 'Coșul nu a putut fi golit', + couldNotRestoreItem: 'Elementul nu a putut fi restaurat', + trashCouldNotLoad: 'Coșul nu a putut fi încărcat', + trashMayBeOutOfDate: 'Coșul poate fi neactualizat', + }, + labels: { + deletedAge: 'Șters {{value}}', + itemCount_one: '{{count}} element', + itemCount_few: '{{count}} elemente', + itemCount_other: '{{count}} de elemente', + lastEmptied: 'Golit ultima dată {{value}}', + loadingTrash: 'Se încarcă Coșul', + originalLocation: 'Locația originală: {{location}}', + title: 'Coș', + trashActions: 'Acțiuni în coș pentru {{title}}', + }, + kinds: { + deck: 'Pachet', + folder: 'Folder', + note: 'Notiță', + workspace: 'Spațiu de lucru', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Creează spațiu de lucru', + deleteWorkspace: 'Șterge spațiul de lucru', + editWorkspace: 'Editează spațiul de lucru', + newWorkspace: 'Spațiu de lucru nou', + openWorkspace: 'Deschide {{title}}', + openingWorkspace: 'Se deschide {{title}}', + }, + descriptions: { + editorDefault: 'Context de studiu.', + editorVisual: 'Alege o ancoră vizuală pentru acest spațiu de lucru.', + emptyList: 'Separă pachetele, notițele și cozile de recapitulare după contextul de studiu.', + }, + dialogs: { + deleteWorkspaceDescription: 'Aceasta mută "{{title}}" în Coș. Îl poți restaura mai târziu.', + deleteWorkspaceFallbackDescription: 'Aceasta mută acest spațiu de lucru în Coș. Îl poți restaura mai târziu.', + deleteWorkspaceFallbackTitle: 'Ștergi spațiul de lucru?', + deleteWorkspaceTitle: 'Ștergi "{{title}}"?', + }, + empty: { + startWithWorkspace: 'Începe cu un spațiu de lucru', + }, + errors: { + couldNotCreateWorkspace: 'Spațiul de lucru nu a putut fi creat', + couldNotDeleteWorkspace: 'Spațiul de lucru nu a putut fi șters', + couldNotOpenWorkspace: 'Spațiul de lucru nu a putut fi deschis', + couldNotSaveWorkspace: 'Spațiul de lucru nu a putut fi salvat', + workspaceCouldNotLoad: 'Spațiul de lucru nu a putut fi încărcat', + workspacesCouldNotLoad: 'Spațiile de lucru nu au putut fi încărcate', + }, + fields: { + descriptionLabel: 'Descrierea spațiului de lucru', + descriptionPlaceholder: 'Ce aparține acestui spațiu de lucru?', + namePlaceholder: 'Numele spațiului de lucru', + untitledWorkspace: 'Spațiu de lucru fără titlu', + }, + labels: { + createWorkspaceTitle: 'Creează spațiu de lucru', + loadingWorkspaces: 'Se încarcă spațiile de lucru', + workspace: 'Spațiu de lucru', + workspaces: 'Spații de lucru', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/ru.ts b/ui/src/core/i18n/resources/ru.ts new file mode 100644 index 0000000..01942ed --- /dev/null +++ b/ui/src/core/i18n/resources/ru.ts @@ -0,0 +1,649 @@ +export const ru = { + bootstrap: { + error: { + fallbackMessage: 'Попробуйте еще раз. Если ошибка повторится, откройте Clear заново.', + title: 'Не удалось запустить', + }, + loadingTitle: 'Готовим пространство для учебы', + }, + common: { + actions: { + back: 'Назад', + cancel: 'Отмена', + checkAgain: 'Проверить снова', + close: 'Закрыть', + create: 'Создать', + delete: 'Удалить', + dismissError: 'Скрыть ошибку', + dismissStatus: 'Скрыть статус', + edit: 'Изменить', + itemActions: 'Действия для {{title}}', + reset: 'Сбросить', + review: 'Повторять', + save: 'Сохранить', + saveChanges: 'Сохранить изменения', + tryAgain: 'Попробовать снова', + }, + labels: { + active: 'Активно', + clear: 'Clear', + custom: 'Пользовательский', + default: 'По умолчанию', + loadingEditor: 'Загрузка редактора', + name: 'Название', + completedTask: 'Завершенная задача', + description: 'Описание', + incompleteTask: 'Незавершенная задача', + percentageInput: '{{label}}, процент', + visual: 'Визуал', + }, + status: { + actionFailed: 'Действие не выполнено', + actionInProgress: 'Действие выполняется', + }, + sort: { + ascending: 'Возр.', + column: 'Столбец', + descending: 'Убыв.', + direction: 'Порядок', + sort: 'Сортировка', + }, + search: { + label: 'Поиск', + }, + visualPicker: { + allLucideIcons: 'Все иконки Lucide', + browseIconsFor: 'Просматривайте или ищите иконки для {{label}}.', + chooseIcon: 'Выбрать иконку', + iconPicker: 'Выбор иконки для {{label}}', + iconSearch: 'Поиск иконок для {{label}}', + iconsCouldNotLoad: 'Не удалось загрузить иконки.', + loadingIcons: 'Загрузка иконок', + loadingMoreIcons: 'Загрузка дополнительных иконок', + moreIcons: 'Еще иконки', + noIconsMatch: 'Нет иконок по запросу "{{query}}".', + searchIconsPlaceholder: 'Искать иконки…', + selectedIcon: 'Выбрано: {{label}}', + }, + }, + dashboard: { + actions: { + create: 'Создать', + newDeck: 'Новая колода', + newFolder: 'Новая папка', + }, + descriptions: { + defaultWorkspace: 'Храните колоды, папки и заметки вместе.', + emptyWorkspace: 'Создайте колоду, затем добавьте заметки, чтобы собрать очередь повторения.', + emptyFolder: 'Создайте колоду, затем добавьте заметки, чтобы собрать очередь повторения.', + searchPlaceholder: 'Искать папки, колоды и заметки…', + }, + empty: { + createFirstDeck: 'Создайте первую колоду', + }, + errors: { + couldNotDeleteDeck: 'Не удалось удалить колоду', + couldNotDeleteFolder: 'Не удалось удалить папку', + couldNotDeleteWorkspace: 'Не удалось удалить рабочее пространство', + dashboardCouldNotOpen: 'Не удалось открыть панель', + decksCouldNotLoad: 'Не удалось загрузить колоды', + decksMayBeOutOfDate: 'Колоды могут быть устаревшими', + foldersCouldNotLoad: 'Не удалось загрузить папки', + foldersMayBeOutOfDate: 'Папки могут быть устаревшими', + workspaceCouldNotLoad: 'Не удалось загрузить рабочее пространство', + }, + labels: { + dashboard: 'Панель', + loadingDashboard: 'Загрузка панели', + newItem: 'Новый элемент', + }, + }, + dates: { + absolute: { + unavailable: 'Дата недоступна', + }, + age: { + dayAgo_one: '{{count}} день назад', + dayAgo_few: '{{count}} дня назад', + dayAgo_many: '{{count}} дней назад', + dayAgo_other: '{{count}} дня назад', + hourAgo_one: '{{count}} час назад', + hourAgo_few: '{{count}} часа назад', + hourAgo_many: '{{count}} часов назад', + hourAgo_other: '{{count}} часа назад', + justNow: 'только что', + minuteAgo_one: '{{count}} минуту назад', + minuteAgo_few: '{{count}} минуты назад', + minuteAgo_many: '{{count}} минут назад', + minuteAgo_other: '{{count}} минуты назад', + unavailable: 'дата недоступна', + weekAgo_one: '{{count}} неделю назад', + weekAgo_few: '{{count}} недели назад', + weekAgo_many: '{{count}} недель назад', + weekAgo_other: '{{count}} недели назад', + }, + labels: { + deleted: 'Удалено {{value}}', + due: 'К повторению: {{value}}', + reviewed: 'Повторено: {{value}}', + updated: 'Обновлено {{value}}', + updatedUppercase: 'ОБНОВЛЕНО {{value}}', + }, + relative: { + dayAgo_one: '{{count}} день назад', + dayAgo_few: '{{count}} дня назад', + dayAgo_many: '{{count}} дней назад', + dayAgo_other: '{{count}} дня назад', + inAMoment: 'Сейчас', + inDay_one: 'Через {{count}} день', + inDay_few: 'Через {{count}} дня', + inDay_many: 'Через {{count}} дней', + inDay_other: 'Через {{count}} дня', + inMonth_one: 'Через {{count}} месяц', + inMonth_few: 'Через {{count}} месяца', + inMonth_many: 'Через {{count}} месяцев', + inMonth_other: 'Через {{count}} месяца', + inWeek_one: 'Через {{count}} неделю', + inWeek_few: 'Через {{count}} недели', + inWeek_many: 'Через {{count}} недель', + inWeek_other: 'Через {{count}} недели', + justNow: 'Только что', + monthAgo_one: '{{count}} месяц назад', + monthAgo_few: '{{count}} месяца назад', + monthAgo_many: '{{count}} месяцев назад', + monthAgo_other: '{{count}} месяца назад', + secondsAgoShort: '{{count}} с назад', + minutesAgoShort: '{{count}} мин назад', + hoursAgoShort: '{{count}} ч назад', + today: 'Сегодня', + tomorrow: 'Завтра', + weekAgo_one: '{{count}} неделю назад', + weekAgo_few: '{{count}} недели назад', + weekAgo_many: '{{count}} недель назад', + weekAgo_other: '{{count}} недели назад', + yesterday: 'Вчера', + }, + }, + decks: { + actions: { + actionMenu: 'Действия для {{title}}', + createDeck: 'Создать колоду', + createNote: 'Создать заметку', + deleteDeck: 'Удалить колоду', + editDeck: 'Изменить колоду', + newNote: 'Новая заметка', + openDeck: 'Открыть колоду {{title}}', + saveDeck: 'Не удалось сохранить колоду', + studyNow: 'Учиться сейчас', + }, + descriptions: { + emptyDeck: 'Добавьте заметку, чтобы в этой колоде был материал для повторения.', + editorDefault: 'Колода для сфокусированного обучения.', + editorVisual: 'Выберите символ обложки для этой колоды.', + notesSearchPlaceholder: 'Искать заметки…', + }, + dialogs: { + deleteDeckDescription: 'Это переместит "{{title}}" в Корзину. Вы сможете восстановить ее позже.', + deleteDeckFallbackDescription: 'Это переместит эту колоду в Корзину. Вы сможете восстановить ее позже.', + deleteDeckFallbackTitle: 'Удалить колоду?', + deleteDeckTitle: 'Удалить "{{title}}"?', + deleteNoteDescription: 'Это переместит "{{title}}" в Корзину. Вы сможете восстановить ее позже.', + deleteNoteFallbackTitle: 'Удалить заметку?', + deleteNoteTitle: 'Удалить "{{title}}"?', + }, + empty: { + noMatchingNotes: 'Нет подходящих заметок', + noMatchingNotesDescription: 'Нет заметок по запросу "{{query}}".', + thisDeckIsEmpty: 'Эта колода пуста', + }, + errors: { + couldNotCreateDeck: 'Не удалось создать колоду', + couldNotDeleteDeck: 'Не удалось удалить колоду', + couldNotDeleteNote: 'Не удалось удалить заметку', + couldNotLoadFolderPath: 'Не удалось загрузить путь к папке', + couldNotSaveDeck: 'Не удалось сохранить колоду', + deckCouldNotLoad: 'Не удалось загрузить колоду', + notesCouldNotLoad: 'Не удалось загрузить заметки', + notesMayBeOutOfDate: 'Заметки могут быть устаревшими', + }, + fields: { + descriptionLabel: 'Описание колоды', + descriptionPlaceholder: 'Что эта колода поможет вам повторять?', + namePlaceholder: 'Название колоды', + untitledDeck: 'Колода без названия', + untitledDeckLower: 'колода без названия', + }, + labels: { + createDeckTitle: 'Создать колоду', + deck: 'Колода', + deckNotesSearch: 'Поиск заметок в колоде', + deckOverview: 'Обзор колоды', + decks: 'Колоды', + due: 'Повторить', + dueToday: 'К повторению сегодня', + loadingDeck: 'Загрузка колоды', + mastery: 'Освоение', + notes: 'Заметки', + }, + sort: { + ariaLabel: 'Сортировать колоды', + dueToday: 'К повторению сегодня', + title: 'Название', + updated: 'Обновлено', + }, + }, + errors: { + byType: { + conflict: 'Данные изменились. Обновите и попробуйте снова.', + forbidden: 'У вас нет разрешения на это действие.', + notFound: 'Мы не нашли этот элемент.', + offline: 'Не удается подключиться к сервису.', + timeout: 'Это заняло слишком много времени. Попробуйте снова.', + unauthorized: 'Войдите, чтобы продолжить.', + unavailable: 'Сервис временно недоступен.', + }, + fallback: { + unexpected: 'Неожиданная ошибка', + }, + }, + folders: { + actions: { + createFolder: 'Создать папку', + deleteFolder: 'Удалить папку', + editFolder: 'Изменить папку', + }, + descriptions: { + editorDefault: 'Папка для связанных колод.', + }, + dialogs: { + deleteFolderDescription: 'Это переместит "{{name}}" в Корзину. Вы сможете восстановить ее позже.', + deleteFolderFallbackDescription: 'Это переместит эту папку в Корзину. Вы сможете восстановить ее позже.', + deleteFolderFallbackTitle: 'Удалить папку?', + deleteFolderTitle: 'Удалить "{{name}}"?', + }, + empty: { + noMatchesInFolder: 'В этой папке ничего не найдено', + noMatchesInFolderDescription: 'Нет папок, колод или заметок по запросу "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'Не удалось создать папку', + couldNotDeleteFolder: 'Не удалось удалить папку', + couldNotLoadFolderPath: 'Не удалось загрузить путь к папке', + couldNotSaveFolder: 'Не удалось сохранить папку', + folderCouldNotLoad: 'Не удалось загрузить папку', + }, + fields: { + descriptionLabel: 'Описание папки', + descriptionPlaceholder: 'Что относится к этой папке?', + namePlaceholder: 'Название папки', + untitledFolder: 'Папка без названия', + }, + labels: { + createFolderTitle: 'Создать папку', + folder: 'Папка', + folders: 'Папки', + loadingFolder: 'Загрузка папки', + name: 'Название', + updated: 'Обновлено', + }, + sort: { + ariaLabel: 'Сортировать папки', + name: 'Название', + updated: 'Обновлено', + }, + }, + menu: { + conflicts: { + description: 'Если локальные и синхронизированные данные разойдутся, элемент появится здесь.', + heading: 'Статус синхронизации', + title: 'Конфликты', + noConflicts: 'Конфликтов не найдено', + }, + labels: { + menu: 'Меню', + }, + sections: { + settings: { + description: 'Настройте среду и предпочтения', + title: 'Настройки', + }, + trash: { + description: 'Восстановить или навсегда удалить удаленные элементы', + title: 'Корзина', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Закрыть редактор', + openActions: 'Открыть действия', + openWorkspaces: 'Открыть рабочие пространства', + }, + items: { + home: 'Главная', + menu: 'Меню', + primary: 'Основное', + settings: 'Настройки', + spaces: 'Пространства', + trash: 'Корзина', + workspaces: 'Рабочие пространства', + }, + }, + notes: { + actions: { + addCloze: 'Добавить cloze', + deleteNote: 'Удалить заметку', + editNote: 'Изменить заметку', + hideDerivedCardsNote: 'Скрыть заметку о производных карточках', + openNote: 'Открыть {{title}}', + saveNote: 'Сохранить заметку', + showDerivedCardsNote: 'Показать заметку о производных карточках', + }, + descriptions: { + clozeFormat: 'Каждая скрытая часть станет карточкой для повторения после сохранения.', + clozeFormatPrefix: 'Оберните скрытый текст в', + derivedCardsHelper: 'Заметки — источник истины для производных карточек.', + }, + dialogs: { + deleteNoteDescription: 'Это переместит "{{title}}" в Корзину. Вы сможете восстановить ее позже.', + deleteNoteFallbackDescription: 'Это переместит эту заметку в Корзину. Вы сможете восстановить ее позже.', + deleteNoteFallbackTitle: 'Удалить заметку?', + deleteNoteTitle: 'Удалить "{{title}}"?', + }, + errors: { + couldNotCreateNote: 'Не удалось создать заметку', + couldNotDeleteNote: 'Не удалось удалить заметку', + couldNotSaveNote: 'Не удалось сохранить заметку', + noteCouldNotLoad: 'Не удалось загрузить заметку', + }, + fields: { + back: 'Оборот', + backPlaceholder: 'Введите оборот', + bodyPlaceholder: 'Напишите текст заметки с cloze-удалениями…', + front: 'Лицевая сторона', + frontPlaceholder: 'Введите лицевую сторону', + noteBody: 'Текст заметки', + title: 'Название', + titlePlaceholder: 'Добавьте название заметки', + untitledCloze: 'Cloze без названия', + untitledNote: 'Заметка без названия', + }, + labels: { + backUppercase: 'ОБОРОТ', + basic: 'Базовая', + basicLower: 'базовая', + basicUppercase: 'БАЗОВАЯ', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Формат cloze', + clozeUppercase: 'CLOZE', + deck: 'Колода', + derivedCards: 'ПРОИЗВОДНЫЕ КАРТОЧКИ', + due: 'К повторению', + frontUppercase: 'ЛИЦЕВАЯ СТОРОНА', + inProgress: 'В процессе', + inProgressUppercase: 'В ПРОЦЕССЕ', + loadingNote: 'Загрузка заметки', + loadingNoteEditor: 'Загрузка редактора заметок', + markdownFormatting: 'Форматирование Markdown', + mastered: 'Освоено', + masteredUppercase: 'ОСВОЕНО', + newNote: 'Новая заметка', + noteBody: 'ТЕКСТ ЗАМЕТКИ', + noteContent: 'Содержимое заметки', + noteDetails: 'Детали заметки', + noteMetadata: 'Метаданные заметки', + noteType: 'Тип заметки', + notes: 'Заметки', + reviewed: 'Повторено', + studyProgress: 'Учебный прогресс', + studyProgressUppercase: 'УЧЕБНЫЙ ПРОГРЕСС', + titleUppercase: 'НАЗВАНИЕ', + updated: 'Обновлено', + }, + sort: { + ariaLabel: 'Сортировать заметки', + title: 'Название', + updated: 'Обновлено', + }, + toolbar: { + bold: 'Жирный', + italic: 'Курсив', + link: 'Ссылка', + list: 'Список', + }, + }, + review: { + actions: { + again: 'Снова', + backToDeck: 'Назад к колоде', + continueReview: 'Продолжить повторение', + easy: 'Легко', + good: 'Хорошо', + hard: 'Трудно', + newNote: 'Новая заметка', + showAnswer: 'Показать ответ', + }, + errors: { + couldNotGradeCard: 'Не удалось оценить карточку', + reviewCouldNotLoad: 'Не удалось загрузить повторение', + reviewCouldNotStart: 'Не удалось начать повторение', + summaryCouldNotLoad: 'Не удалось загрузить итог повторения', + summaryNotAvailable: 'Итог повторения недоступен', + summaryNotComplete: 'Это повторение еще не завершено.', + }, + labels: { + cardsReviewed: 'Карточек повторено', + deck: 'Колода', + duration: 'Длительность', + loadingReview: 'Загрузка повторения', + loadingSummary: 'Загрузка итога', + progress: 'Прогресс повторения', + review: 'Повторение', + reviewComplete: 'Повторение завершено', + reviewed_one: 'Повторено {{count}}', + reviewed_few: 'Повторено {{count}}', + reviewed_many: 'Повторено {{count}}', + reviewed_other: 'Повторено {{count}}', + }, + summary: { + durationHoursMinutes: '{{hours}} ч {{minutes}} мин', + durationMinutes: '{{minutes}} мин', + durationSeconds: '{{seconds}} с', + saved: 'Ваш прогресс сохранен в этой колоде.', + }, + unavailable: { + description: 'Добавьте заметку, чтобы эта колода попала в очередь повторения.', + title: 'Нет карточек для повторения', + }, + }, + search: { + actions: { + clearSearch: 'Очистить поиск', + }, + empty: { + noMatchesInWorkspace: 'В этом пространстве ничего не найдено', + noMatchesInWorkspaceDescription: 'Нет папок, колод или заметок по запросу "{{query}}".', + }, + errors: { + couldNotComplete: 'Не удалось выполнить поиск', + }, + labels: { + results: 'Результаты поиска', + resultsFor: 'Результаты для "{{query}}"', + searchingContent: 'Поиск содержимого', + }, + resultGroups: { + deck: 'Колоды', + folder: 'Папки', + note: 'Заметки', + }, + resultKinds: { + deck: 'колода', + folder: 'папка', + note: 'заметка', + }, + }, + settings: { + actions: { + resetAll: 'Сбросить все настройки', + resetSettings: 'Сбросить настройки', + resetToDefaults: 'Вернуть значения по умолчанию', + }, + dialogs: { + fsrsErrorInvalidJson: 'Вставьте корректный JSON с 21 числовым значением.', + fsrsErrorInvalidParams_one: 'Введите JSON-массив ровно с {{count}} конечным числом.', + fsrsErrorInvalidParams_few: 'Введите JSON-массив ровно с {{count}} конечными числами.', + fsrsErrorInvalidParams_many: 'Введите JSON-массив ровно с {{count}} конечными числами.', + fsrsErrorInvalidParams_other: 'Введите JSON-массив ровно с {{count}} конечными числами.', + fsrsHelper: 'Это экспертная настройка. Значения должны оставаться в порядке.', + fsrsJsonLabel: 'JSON параметров FSRS', + fsrsTitle: 'Изменить параметры FSRS', + fsrsDescription: 'Вставьте JSON-массив с 21 числом, чтобы переопределить веса scheduler.', + resetDescription: 'Это восстановит часовой пояс, лимиты учебы и настройки FSRS.', + resetDescriptionWithLanguage: 'Это восстановит язык, часовой пояс, лимиты учебы и настройки FSRS.', + resetTitle: 'Сбросить все настройки?', + timezoneDescription: 'Ищите город или идентификатор часового пояса.', + timezoneSearchLabel: 'Поиск часовых поясов', + timezoneSearchPlaceholder: 'Искать часовые пояса…', + timezoneTitle: 'Выберите часовой пояс', + }, + errors: { + couldNotResetSettings: 'Не удалось сбросить настройки', + couldNotSaveSettings: 'Не удалось сохранить настройки', + settingsCouldNotLoad: 'Не удалось загрузить настройки', + settingsUnavailable: 'Настройки недоступны.', + }, + labels: { + appearance: 'Оформление', + automatic: 'Автоматически', + fsrsParameters: 'Параметры FSRS', + general: 'Основные', + language: 'Язык', + loadingSettings: 'Загрузка настроек', + masteryHorizon: 'Горизонт освоения', + newCardOrder: 'Порядок новых карточек', + newCardsPerDay: 'Новых карточек в день', + reviewCardsPerDay: 'Карточек для повторения в день', + savingSettings: 'Сохранение настроек', + schedule: 'Расписание', + searchNoTimezones: 'Нет подходящих часовых поясов.', + settings: 'Настройки', + settingsReset: 'Настройки сброшены', + study: 'Учеба', + targetRecallProbability: 'Целевая вероятность вспоминания', + theme: 'Тема', + timezone: 'Часовой пояс', + }, + options: { + languageEnUs: 'Английский (США)', + newCardsAfterReviews: 'После повторений', + newCardsBeforeReviews: 'Перед повторениями', + newCardsMixed: 'Смешанно', + themeDark: 'Темная', + themeLight: 'Светлая', + themeSystem: 'Системная', + timezoneSystem: 'Использовать системный часовой пояс', + }, + rows: { + fsrsDescription: 'Веса экспертной модели', + languageDescription: 'Язык интерфейса', + masteryHorizonDescription: 'Сколько дней карточка должна оставаться вспоминаемой на целевой вероятности или выше, чтобы считаться освоенной', + newCardOrderDescription: 'Порядок новых карточек относительно повторений', + newCardsPerDayDescription: 'Максимум новых карточек в день', + reviewCardsPerDayDescription: 'Максимум карточек для повторения в день', + targetRecallProbabilityDescription: 'Минимальная вероятность вспоминания на следующем запланированном повторении', + timezoneDescription: 'Используйте автоматический часовой пояс или выберите город.', + }, + }, + trash: { + actions: { + deletePermanently: 'Удалить навсегда', + empty: 'Очистить', + emptyTrash: 'Очистить корзину', + restore: 'Восстановить', + restoringItem: 'Восстановление {{title}}', + }, + dialogs: { + deleteItemDescription: 'Это навсегда удалит "{{title}}". Отменить действие нельзя.', + deleteItemFallbackDescription: 'Это навсегда удалит этот элемент. Отменить действие нельзя.', + deleteItemFallbackTitle: 'Удалить элемент?', + deleteItemTitle: 'Удалить "{{title}}"?', + emptyTrashDescription: 'Это навсегда удалит все из Корзины. Отменить действие нельзя.', + emptyTrashTitle: 'Очистить корзину?', + }, + empty: { + description: 'Удаленные элементы появятся здесь перед окончательным удалением.', + title: 'Корзина пуста', + }, + errors: { + couldNotDeleteItem: 'Не удалось удалить элемент', + couldNotEmptyTrash: 'Не удалось очистить Корзину', + couldNotRestoreItem: 'Не удалось восстановить элемент', + trashCouldNotLoad: 'Не удалось загрузить Корзину', + trashMayBeOutOfDate: 'Корзина может быть устаревшей', + }, + labels: { + deletedAge: 'Удалено {{value}}', + itemCount_one: '{{count}} элемент', + itemCount_few: '{{count}} элемента', + itemCount_many: '{{count}} элементов', + itemCount_other: '{{count}} элемента', + lastEmptied: 'Последняя очистка {{value}}', + loadingTrash: 'Загрузка Корзины', + originalLocation: 'Исходное расположение: {{location}}', + title: 'Корзина', + trashActions: 'Действия корзины для {{title}}', + }, + kinds: { + deck: 'Колода', + folder: 'Папка', + note: 'Заметка', + workspace: 'Рабочее пространство', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Создать рабочее пространство', + deleteWorkspace: 'Удалить рабочее пространство', + editWorkspace: 'Изменить рабочее пространство', + newWorkspace: 'Новое рабочее пространство', + openWorkspace: 'Открыть {{title}}', + openingWorkspace: 'Открытие {{title}}', + }, + descriptions: { + editorDefault: 'Учебный контекст.', + editorVisual: 'Выберите визуальный якорь для этого пространства.', + emptyList: 'Разделяйте колоды, заметки и очереди повторения по учебному контексту.', + }, + dialogs: { + deleteWorkspaceDescription: 'Это переместит "{{title}}" в Корзину. Вы сможете восстановить его позже.', + deleteWorkspaceFallbackDescription: 'Это переместит это рабочее пространство в Корзину. Вы сможете восстановить его позже.', + deleteWorkspaceFallbackTitle: 'Удалить рабочее пространство?', + deleteWorkspaceTitle: 'Удалить "{{title}}"?', + }, + empty: { + startWithWorkspace: 'Начните с рабочего пространства', + }, + errors: { + couldNotCreateWorkspace: 'Не удалось создать рабочее пространство', + couldNotDeleteWorkspace: 'Не удалось удалить рабочее пространство', + couldNotOpenWorkspace: 'Не удалось открыть рабочее пространство', + couldNotSaveWorkspace: 'Не удалось сохранить рабочее пространство', + workspaceCouldNotLoad: 'Не удалось загрузить рабочее пространство', + workspacesCouldNotLoad: 'Не удалось загрузить рабочие пространства', + }, + fields: { + descriptionLabel: 'Описание рабочего пространства', + descriptionPlaceholder: 'Что относится к этому рабочему пространству?', + namePlaceholder: 'Название рабочего пространства', + untitledWorkspace: 'Рабочее пространство без названия', + }, + labels: { + createWorkspaceTitle: 'Создать рабочее пространство', + loadingWorkspaces: 'Загрузка рабочих пространств', + workspace: 'Рабочее пространство', + workspaces: 'Рабочие пространства', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/sk.ts b/ui/src/core/i18n/resources/sk.ts new file mode 100644 index 0000000..cb9e183 --- /dev/null +++ b/ui/src/core/i18n/resources/sk.ts @@ -0,0 +1,649 @@ +export const sk = { + bootstrap: { + error: { + fallbackMessage: 'Skúste to znova. Ak sa to bude opakovať, znova otvorte Clear.', + title: 'Nepodarilo sa spustiť', + }, + loadingTitle: 'Pripravuje sa váš študijný priestor', + }, + common: { + actions: { + back: 'Späť', + cancel: 'Zrušiť', + checkAgain: 'Skontrolovať znova', + close: 'Zavrieť', + create: 'Vytvoriť', + delete: 'Odstrániť', + dismissError: 'Zavrieť chybu', + dismissStatus: 'Zavrieť stav', + edit: 'Upraviť', + itemActions: 'Akcie pre {{title}}', + reset: 'Resetovať', + review: 'Opakovať', + save: 'Uložiť', + saveChanges: 'Uložiť zmeny', + tryAgain: 'Skúsiť znova', + }, + labels: { + active: 'Aktívne', + clear: 'Clear', + custom: 'Vlastné', + default: 'Predvolené', + loadingEditor: 'Načítava sa editor', + name: 'Názov', + completedTask: 'Dokončená úloha', + description: 'Popis', + incompleteTask: 'Nedokončená úloha', + percentageInput: 'Percento pre {{label}}', + visual: 'Vizuál', + }, + status: { + actionFailed: 'Akcia zlyhala', + actionInProgress: 'Akcia prebieha', + }, + sort: { + ascending: 'Vzost.', + column: 'Stĺpec', + descending: 'Zost.', + direction: 'Smer', + sort: 'Triediť', + }, + search: { + label: 'Hľadať', + }, + visualPicker: { + allLucideIcons: 'Všetky ikony Lucide', + browseIconsFor: 'Prehliadajte alebo hľadajte ikony pre {{label}}.', + chooseIcon: 'Vybrať ikonu', + iconPicker: 'Výber ikony pre {{label}}', + iconSearch: 'Hľadanie ikon pre {{label}}', + iconsCouldNotLoad: 'Ikony sa nepodarilo načítať.', + loadingIcons: 'Načítavajú sa ikony', + loadingMoreIcons: 'Načítavajú sa ďalšie ikony', + moreIcons: 'Ďalšie ikony', + noIconsMatch: 'Žiadne ikony nezodpovedajú "{{query}}".', + searchIconsPlaceholder: 'Hľadať ikony…', + selectedIcon: 'Vybraté {{label}}', + }, + }, + dashboard: { + actions: { + create: 'Vytvoriť', + newDeck: 'Nový balíček', + newFolder: 'Nový priečinok', + }, + descriptions: { + defaultWorkspace: 'Majte balíčky, priečinky a poznámky spolu.', + emptyWorkspace: 'Vytvorte balíček a potom pridajte poznámky na zostavenie frontu opakovania.', + emptyFolder: 'Vytvorte balíček a potom pridajte poznámky na zostavenie frontu opakovania.', + searchPlaceholder: 'Hľadať priečinky, balíčky a poznámky…', + }, + empty: { + createFirstDeck: 'Vytvorte svoj prvý balíček', + }, + errors: { + couldNotDeleteDeck: 'Balíček sa nepodarilo odstrániť', + couldNotDeleteFolder: 'Priečinok sa nepodarilo odstrániť', + couldNotDeleteWorkspace: 'Pracovný priestor sa nepodarilo odstrániť', + dashboardCouldNotOpen: 'Prehľad sa nepodarilo otvoriť', + decksCouldNotLoad: 'Balíčky sa nepodarilo načítať', + decksMayBeOutOfDate: 'Balíčky môžu byť zastarané', + foldersCouldNotLoad: 'Priečinky sa nepodarilo načítať', + foldersMayBeOutOfDate: 'Priečinky môžu byť zastarané', + workspaceCouldNotLoad: 'Pracovný priestor sa nepodarilo načítať', + }, + labels: { + dashboard: 'Prehľad', + loadingDashboard: 'Načítava sa prehľad', + newItem: 'Nová položka', + }, + }, + dates: { + absolute: { + unavailable: 'Dátum nie je dostupný', + }, + age: { + dayAgo_one: 'pred {{count}} dňom', + dayAgo_few: 'pred {{count}} dňami', + dayAgo_many: 'pred {{count}} dňa', + dayAgo_other: 'pred {{count}} dňami', + hourAgo_one: 'pred {{count}} hodinou', + hourAgo_few: 'pred {{count}} hodinami', + hourAgo_many: 'pred {{count}} hodiny', + hourAgo_other: 'pred {{count}} hodinami', + justNow: 'práve teraz', + minuteAgo_one: 'pred {{count}} minútou', + minuteAgo_few: 'pred {{count}} minútami', + minuteAgo_many: 'pred {{count}} minúty', + minuteAgo_other: 'pred {{count}} minútami', + unavailable: 'dátum nie je dostupný', + weekAgo_one: 'pred {{count}} týždňom', + weekAgo_few: 'pred {{count}} týždňami', + weekAgo_many: 'pred {{count}} týždňa', + weekAgo_other: 'pred {{count}} týždňami', + }, + labels: { + deleted: 'Odstránené {{value}}', + due: 'Termín: {{value}}', + reviewed: 'Opakované: {{value}}', + updated: 'Aktualizované {{value}}', + updatedUppercase: 'AKTUALIZOVANÉ {{value}}', + }, + relative: { + dayAgo_one: 'pred {{count}} dňom', + dayAgo_few: 'pred {{count}} dňami', + dayAgo_many: 'pred {{count}} dňa', + dayAgo_other: 'pred {{count}} dňami', + inAMoment: 'O chvíľu', + inDay_one: 'O {{count}} deň', + inDay_few: 'O {{count}} dni', + inDay_many: 'O {{count}} dňa', + inDay_other: 'O {{count}} dní', + inMonth_one: 'O {{count}} mesiac', + inMonth_few: 'O {{count}} mesiace', + inMonth_many: 'O {{count}} mesiaca', + inMonth_other: 'O {{count}} mesiacov', + inWeek_one: 'O {{count}} týždeň', + inWeek_few: 'O {{count}} týždne', + inWeek_many: 'O {{count}} týždňa', + inWeek_other: 'O {{count}} týždňov', + justNow: 'Práve teraz', + monthAgo_one: 'pred {{count}} mesiacom', + monthAgo_few: 'pred {{count}} mesiacmi', + monthAgo_many: 'pred {{count}} mesiaca', + monthAgo_other: 'pred {{count}} mesiacmi', + secondsAgoShort: 'pred {{count}} s', + minutesAgoShort: 'pred {{count}} min', + hoursAgoShort: 'pred {{count}} h', + today: 'Dnes', + tomorrow: 'Zajtra', + weekAgo_one: 'pred {{count}} týždňom', + weekAgo_few: 'pred {{count}} týždňami', + weekAgo_many: 'pred {{count}} týždňa', + weekAgo_other: 'pred {{count}} týždňami', + yesterday: 'Včera', + }, + }, + decks: { + actions: { + actionMenu: 'Akcie pre {{title}}', + createDeck: 'Vytvoriť balíček', + createNote: 'Vytvoriť poznámku', + deleteDeck: 'Odstrániť balíček', + editDeck: 'Upraviť balíček', + newNote: 'Nová poznámka', + openDeck: 'Otvoriť balíček {{title}}', + saveDeck: 'Balíček sa nepodarilo uložiť', + studyNow: 'Študovať teraz', + }, + descriptions: { + emptyDeck: 'Pridajte poznámku, aby mal tento balíček materiál na opakovanie.', + editorDefault: 'Sústredený študijný balíček.', + editorVisual: 'Vyberte symbol obalu pre tento balíček.', + notesSearchPlaceholder: 'Hľadať poznámky…', + }, + dialogs: { + deleteDeckDescription: 'Toto presunie "{{title}}" do Koša. Neskôr ho môžete obnoviť.', + deleteDeckFallbackDescription: 'Toto presunie tento balíček do Koša. Neskôr ho môžete obnoviť.', + deleteDeckFallbackTitle: 'Odstrániť balíček?', + deleteDeckTitle: 'Odstrániť "{{title}}"?', + deleteNoteDescription: 'Toto presunie "{{title}}" do Koša. Neskôr ju môžete obnoviť.', + deleteNoteFallbackTitle: 'Odstrániť poznámku?', + deleteNoteTitle: 'Odstrániť "{{title}}"?', + }, + empty: { + noMatchingNotes: 'Žiadne zodpovedajúce poznámky', + noMatchingNotesDescription: 'Žiadne poznámky nezodpovedali "{{query}}".', + thisDeckIsEmpty: 'Tento balíček je prázdny', + }, + errors: { + couldNotCreateDeck: 'Balíček sa nepodarilo vytvoriť', + couldNotDeleteDeck: 'Balíček sa nepodarilo odstrániť', + couldNotDeleteNote: 'Poznámku sa nepodarilo odstrániť', + couldNotLoadFolderPath: 'Cestu priečinka sa nepodarilo načítať', + couldNotSaveDeck: 'Balíček sa nepodarilo uložiť', + deckCouldNotLoad: 'Balíček sa nepodarilo načítať', + notesCouldNotLoad: 'Poznámky sa nepodarilo načítať', + notesMayBeOutOfDate: 'Poznámky môžu byť zastarané', + }, + fields: { + descriptionLabel: 'Popis balíčka', + descriptionPlaceholder: 'Čo vám tento balíček pomôže opakovať?', + namePlaceholder: 'Názov balíčka', + untitledDeck: 'Balíček bez názvu', + untitledDeckLower: 'balíček bez názvu', + }, + labels: { + createDeckTitle: 'Vytvoriť balíček', + deck: 'Balíček', + deckNotesSearch: 'Hľadanie poznámok v balíčku', + deckOverview: 'Prehľad balíčka', + decks: 'Balíčky', + due: 'Termín', + dueToday: 'Termín dnes', + loadingDeck: 'Načítava sa balíček', + mastery: 'Zvládnutie', + notes: 'Poznámky', + }, + sort: { + ariaLabel: 'Triediť balíčky', + dueToday: 'Termín dnes', + title: 'Názov', + updated: 'Aktualizované', + }, + }, + errors: { + byType: { + conflict: 'Údaje sa zmenili. Obnovte ich a skúste to znova.', + forbidden: 'Na túto akciu nemáte povolenie.', + notFound: 'Túto položku sa nám nepodarilo nájsť.', + offline: 'Služba je nedostupná.', + timeout: 'Trvalo to príliš dlho. Skúste to znova.', + unauthorized: 'Ak chcete pokračovať, prihláste sa.', + unavailable: 'Služba je dočasne nedostupná.', + }, + fallback: { + unexpected: 'Neočakávaná chyba', + }, + }, + folders: { + actions: { + createFolder: 'Vytvoriť priečinok', + deleteFolder: 'Odstrániť priečinok', + editFolder: 'Upraviť priečinok', + }, + descriptions: { + editorDefault: 'Priečinok pre súvisiace balíčky.', + }, + dialogs: { + deleteFolderDescription: 'Toto presunie "{{name}}" do Koša. Neskôr ho môžete obnoviť.', + deleteFolderFallbackDescription: 'Toto presunie tento priečinok do Koša. Neskôr ho môžete obnoviť.', + deleteFolderFallbackTitle: 'Odstrániť priečinok?', + deleteFolderTitle: 'Odstrániť "{{name}}"?', + }, + empty: { + noMatchesInFolder: 'V tomto priečinku nie sú žiadne zhody', + noMatchesInFolderDescription: 'Žiadne priečinky, balíčky ani poznámky nezodpovedali "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'Priečinok sa nepodarilo vytvoriť', + couldNotDeleteFolder: 'Priečinok sa nepodarilo odstrániť', + couldNotLoadFolderPath: 'Cestu priečinka sa nepodarilo načítať', + couldNotSaveFolder: 'Priečinok sa nepodarilo uložiť', + folderCouldNotLoad: 'Priečinok sa nepodarilo načítať', + }, + fields: { + descriptionLabel: 'Popis priečinka', + descriptionPlaceholder: 'Čo patrí do tohto priečinka?', + namePlaceholder: 'Názov priečinka', + untitledFolder: 'Priečinok bez názvu', + }, + labels: { + createFolderTitle: 'Vytvoriť priečinok', + folder: 'Priečinok', + folders: 'Priečinky', + loadingFolder: 'Načítava sa priečinok', + name: 'Názov', + updated: 'Aktualizované', + }, + sort: { + ariaLabel: 'Triediť priečinky', + name: 'Názov', + updated: 'Aktualizované', + }, + }, + menu: { + conflicts: { + description: 'Ak sa lokálne a synchronizované údaje niekedy nezhodnú, položka sa zobrazí tu.', + heading: 'Stav synchronizácie', + title: 'Konflikty', + noConflicts: 'Nenašli sa žiadne konflikty', + }, + labels: { + menu: 'Menu', + }, + sections: { + settings: { + description: 'Prispôsobte si prostredie a predvoľby', + title: 'Nastavenia', + }, + trash: { + description: 'Obnovte alebo natrvalo odstráňte odstránené položky', + title: 'Kôš', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Zavrieť editor', + openActions: 'Otvoriť akcie', + openWorkspaces: 'Otvoriť pracovné priestory', + }, + items: { + home: 'Domov', + menu: 'Menu', + primary: 'Primárne', + settings: 'Nastavenia', + spaces: 'Priestory', + trash: 'Kôš', + workspaces: 'Pracovné priestory', + }, + }, + notes: { + actions: { + addCloze: 'Pridať cloze', + deleteNote: 'Odstrániť poznámku', + editNote: 'Upraviť poznámku', + hideDerivedCardsNote: 'Skryť poznámku o odvodených kartách', + openNote: 'Otvoriť {{title}}', + saveNote: 'Uložiť poznámku', + showDerivedCardsNote: 'Zobraziť poznámku o odvodených kartách', + }, + descriptions: { + clozeFormat: 'Každá skrytá časť sa po uložení zmení na kartu na opakovanie.', + clozeFormatPrefix: 'Skrytý text obaľte pomocou', + derivedCardsHelper: 'Poznámky sú zdrojom pravdy pre odvodené karty.', + }, + dialogs: { + deleteNoteDescription: 'Toto presunie "{{title}}" do Koša. Neskôr ju môžete obnoviť.', + deleteNoteFallbackDescription: 'Toto presunie túto poznámku do Koša. Neskôr ju môžete obnoviť.', + deleteNoteFallbackTitle: 'Odstrániť poznámku?', + deleteNoteTitle: 'Odstrániť "{{title}}"?', + }, + errors: { + couldNotCreateNote: 'Poznámku sa nepodarilo vytvoriť', + couldNotDeleteNote: 'Poznámku sa nepodarilo odstrániť', + couldNotSaveNote: 'Poznámku sa nepodarilo uložiť', + noteCouldNotLoad: 'Poznámku sa nepodarilo načítať', + }, + fields: { + back: 'Zadná strana', + backPlaceholder: 'Zadajte zadnú stranu', + bodyPlaceholder: 'Napíšte telo poznámky s cloze vynechávkami…', + front: 'Predná strana', + frontPlaceholder: 'Zadajte prednú stranu', + noteBody: 'Telo poznámky', + title: 'Názov', + titlePlaceholder: 'Pridajte názov poznámky', + untitledCloze: 'Cloze bez názvu', + untitledNote: 'Poznámka bez názvu', + }, + labels: { + backUppercase: 'ZADNÁ STRANA', + basic: 'Základná', + basicLower: 'základná', + basicUppercase: 'ZÁKLADNÁ', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Formát cloze', + clozeUppercase: 'CLOZE', + deck: 'Balíček', + derivedCards: 'ODVODENÉ KARTY', + due: 'Termín', + frontUppercase: 'PREDNÁ STRANA', + inProgress: 'Prebieha', + inProgressUppercase: 'PREBIEHA', + loadingNote: 'Načítava sa poznámka', + loadingNoteEditor: 'Načítava sa editor poznámok', + markdownFormatting: 'Formátovanie Markdown', + mastered: 'Zvládnuté', + masteredUppercase: 'ZVLÁDNUTÉ', + newNote: 'Nová poznámka', + noteBody: 'TELO POZNÁMKY', + noteContent: 'Obsah poznámky', + noteDetails: 'Podrobnosti poznámky', + noteMetadata: 'Metadáta poznámky', + noteType: 'Typ poznámky', + notes: 'Poznámky', + reviewed: 'Opakované', + studyProgress: 'Študijný pokrok', + studyProgressUppercase: 'ŠTUDIJNÝ POKROK', + titleUppercase: 'NÁZOV', + updated: 'Aktualizované', + }, + sort: { + ariaLabel: 'Triediť poznámky', + title: 'Názov', + updated: 'Aktualizované', + }, + toolbar: { + bold: 'Tučné', + italic: 'Kurzíva', + link: 'Odkaz', + list: 'Zoznam', + }, + }, + review: { + actions: { + again: 'Znova', + backToDeck: 'Späť na balíček', + continueReview: 'Pokračovať v opakovaní', + easy: 'Ľahké', + good: 'Dobré', + hard: 'Ťažké', + newNote: 'Nová poznámka', + showAnswer: 'Zobraziť odpoveď', + }, + errors: { + couldNotGradeCard: 'Kartu sa nepodarilo ohodnotiť', + reviewCouldNotLoad: 'Opakovanie sa nepodarilo načítať', + reviewCouldNotStart: 'Opakovanie sa nepodarilo spustiť', + summaryCouldNotLoad: 'Súhrn opakovania sa nepodarilo načítať', + summaryNotAvailable: 'Súhrn opakovania nie je dostupný', + summaryNotComplete: 'Toto opakovanie ešte nie je dokončené.', + }, + labels: { + cardsReviewed: 'Opakované karty', + deck: 'Balíček', + duration: 'Trvanie', + loadingReview: 'Načítava sa opakovanie', + loadingSummary: 'Načítava sa súhrn', + progress: 'Pokrok opakovania', + review: 'Opakovanie', + reviewComplete: 'Opakovanie dokončené', + reviewed_one: 'Opakovaná {{count}}', + reviewed_few: 'Opakované {{count}}', + reviewed_many: 'Opakované {{count}}', + reviewed_other: 'Opakované {{count}}', + }, + summary: { + durationHoursMinutes: '{{hours}} h {{minutes}} min', + durationMinutes: '{{minutes}} min', + durationSeconds: '{{seconds}} s', + saved: 'Váš pokrok bol uložený do tohto balíčka.', + }, + unavailable: { + description: 'Pridajte poznámku, aby sa tento balíček mohol dostať do frontu opakovania.', + title: 'Žiadne karty na opakovanie', + }, + }, + search: { + actions: { + clearSearch: 'Vymazať hľadanie', + }, + empty: { + noMatchesInWorkspace: 'V tomto pracovnom priestore nie sú žiadne zhody', + noMatchesInWorkspaceDescription: 'Žiadne priečinky, balíčky ani poznámky nezodpovedali "{{query}}".', + }, + errors: { + couldNotComplete: 'Hľadanie sa nepodarilo dokončiť', + }, + labels: { + results: 'Výsledky hľadania', + resultsFor: 'Výsledky pre "{{query}}"', + searchingContent: 'Hľadá sa obsah', + }, + resultGroups: { + deck: 'Balíčky', + folder: 'Priečinky', + note: 'Poznámky', + }, + resultKinds: { + deck: 'balíček', + folder: 'priečinok', + note: 'poznámka', + }, + }, + settings: { + actions: { + resetAll: 'Resetovať všetky nastavenia', + resetSettings: 'Resetovať nastavenia', + resetToDefaults: 'Obnoviť predvolené', + }, + dialogs: { + fsrsErrorInvalidJson: 'Vložte platný JSON s 21 číselnými hodnotami.', + fsrsErrorInvalidParams_one: 'Zadajte pole JSON s presne {{count}} konečným číslom.', + fsrsErrorInvalidParams_few: 'Zadajte pole JSON s presne {{count}} konečnými číslami.', + fsrsErrorInvalidParams_many: 'Zadajte pole JSON s presne {{count}} konečného čísla.', + fsrsErrorInvalidParams_other: 'Zadajte pole JSON s presne {{count}} konečnými číslami.', + fsrsHelper: 'Toto je expertné prepísanie. Hodnoty musia zostať v poradí.', + fsrsJsonLabel: 'JSON parametrov FSRS', + fsrsTitle: 'Upraviť parametre FSRS', + fsrsDescription: 'Vložte pole JSON s 21 číslami na prepísanie váh plánovača.', + resetDescription: 'Toto obnoví časové pásmo, študijné limity a nastavenia FSRS.', + resetDescriptionWithLanguage: 'Toto obnoví jazyk, časové pásmo, študijné limity a nastavenia FSRS.', + resetTitle: 'Resetovať všetky nastavenia?', + timezoneDescription: 'Hľadajte mesto alebo identifikátor časového pásma.', + timezoneSearchLabel: 'Hľadať časové pásma', + timezoneSearchPlaceholder: 'Hľadať časové pásma…', + timezoneTitle: 'Vybrať časové pásmo', + }, + errors: { + couldNotResetSettings: 'Nastavenia sa nepodarilo resetovať', + couldNotSaveSettings: 'Nastavenia sa nepodarilo uložiť', + settingsCouldNotLoad: 'Nastavenia sa nepodarilo načítať', + settingsUnavailable: 'Nastavenia nie sú dostupné.', + }, + labels: { + appearance: 'Vzhľad', + automatic: 'Automaticky', + fsrsParameters: 'Parametre FSRS', + general: 'Všeobecné', + language: 'Jazyk', + loadingSettings: 'Načítavajú sa nastavenia', + masteryHorizon: 'Horizont zvládnutia', + newCardOrder: 'Poradie nových kariet', + newCardsPerDay: 'Nové karty za deň', + reviewCardsPerDay: 'Karty na opakovanie za deň', + savingSettings: 'Ukladajú sa nastavenia', + schedule: 'Plán', + searchNoTimezones: 'Žiadne zodpovedajúce časové pásma.', + settings: 'Nastavenia', + settingsReset: 'Nastavenia resetované', + study: 'Štúdium', + targetRecallProbability: 'Cieľová pravdepodobnosť vybavenia', + theme: 'Motív', + timezone: 'Časové pásmo', + }, + options: { + languageEnUs: 'Angličtina (USA)', + newCardsAfterReviews: 'Po opakovaniach', + newCardsBeforeReviews: 'Pred opakovaniami', + newCardsMixed: 'Zmiešané', + themeDark: 'Tmavý', + themeLight: 'Svetlý', + themeSystem: 'Systém', + timezoneSystem: 'Použiť systémové časové pásmo', + }, + rows: { + fsrsDescription: 'Váhy expertného modelu', + languageDescription: 'Jazyk rozhrania', + masteryHorizonDescription: 'Počet dní, počas ktorých musí karta zostať vybaviteľná na cieľovej pravdepodobnosti alebo nad ňou, aby sa počítala ako zvládnutá', + newCardOrderDescription: 'Poradie nových kariet vzhľadom na opakovania', + newCardsPerDayDescription: 'Maximálny počet nových kariet za deň', + reviewCardsPerDayDescription: 'Maximálny počet kariet na opakovanie za deň', + targetRecallProbabilityDescription: 'Minimálna pravdepodobnosť vybavenia pri najbližšom naplánovanom opakovaní', + timezoneDescription: 'Použiť automatické časové pásmo alebo vybrať mesto.', + }, + }, + trash: { + actions: { + deletePermanently: 'Odstrániť natrvalo', + empty: 'Vyprázdniť', + emptyTrash: 'Vyprázdniť kôš', + restore: 'Obnoviť', + restoringItem: 'Obnovuje sa {{title}}', + }, + dialogs: { + deleteItemDescription: 'Toto natrvalo odstráni "{{title}}". Nedá sa to vrátiť späť.', + deleteItemFallbackDescription: 'Toto natrvalo odstráni túto položku. Nedá sa to vrátiť späť.', + deleteItemFallbackTitle: 'Odstrániť položku?', + deleteItemTitle: 'Odstrániť "{{title}}"?', + emptyTrashDescription: 'Toto natrvalo odstráni všetko v Koši. Nedá sa to vrátiť späť.', + emptyTrashTitle: 'Vyprázdniť kôš?', + }, + empty: { + description: 'Položky, ktoré odstránite, sa tu zobrazia pred trvalým odstránením.', + title: 'Kôš je prázdny', + }, + errors: { + couldNotDeleteItem: 'Položku sa nepodarilo odstrániť', + couldNotEmptyTrash: 'Kôš sa nepodarilo vyprázdniť', + couldNotRestoreItem: 'Položku sa nepodarilo obnoviť', + trashCouldNotLoad: 'Kôš sa nepodarilo načítať', + trashMayBeOutOfDate: 'Kôš môže byť zastaraný', + }, + labels: { + deletedAge: 'Odstránené {{value}}', + itemCount_one: '{{count}} položka', + itemCount_few: '{{count}} položky', + itemCount_many: '{{count}} položky', + itemCount_other: '{{count}} položiek', + lastEmptied: 'Naposledy vyprázdnené {{value}}', + loadingTrash: 'Načítava sa kôš', + originalLocation: 'Pôvodné umiestnenie: {{location}}', + title: 'Kôš', + trashActions: 'Akcie Koša pre {{title}}', + }, + kinds: { + deck: 'Balíček', + folder: 'Priečinok', + note: 'Poznámka', + workspace: 'Pracovný priestor', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Vytvoriť pracovný priestor', + deleteWorkspace: 'Odstrániť pracovný priestor', + editWorkspace: 'Upraviť pracovný priestor', + newWorkspace: 'Nový pracovný priestor', + openWorkspace: 'Otvoriť {{title}}', + openingWorkspace: 'Otvára sa {{title}}', + }, + descriptions: { + editorDefault: 'Študijný kontext.', + editorVisual: 'Vyberte vizuálnu kotvu pre tento pracovný priestor.', + emptyList: 'Oddeľte balíčky, poznámky a fronty opakovania podľa študijného kontextu.', + }, + dialogs: { + deleteWorkspaceDescription: 'Toto presunie "{{title}}" do Koša. Neskôr ho môžete obnoviť.', + deleteWorkspaceFallbackDescription: 'Toto presunie tento pracovný priestor do Koša. Neskôr ho môžete obnoviť.', + deleteWorkspaceFallbackTitle: 'Odstrániť pracovný priestor?', + deleteWorkspaceTitle: 'Odstrániť "{{title}}"?', + }, + empty: { + startWithWorkspace: 'Začnite pracovným priestorom', + }, + errors: { + couldNotCreateWorkspace: 'Pracovný priestor sa nepodarilo vytvoriť', + couldNotDeleteWorkspace: 'Pracovný priestor sa nepodarilo odstrániť', + couldNotOpenWorkspace: 'Pracovný priestor sa nepodarilo otvoriť', + couldNotSaveWorkspace: 'Pracovný priestor sa nepodarilo uložiť', + workspaceCouldNotLoad: 'Pracovný priestor sa nepodarilo načítať', + workspacesCouldNotLoad: 'Pracovné priestory sa nepodarilo načítať', + }, + fields: { + descriptionLabel: 'Popis pracovného priestoru', + descriptionPlaceholder: 'Čo patrí do tohto pracovného priestoru?', + namePlaceholder: 'Názov pracovného priestoru', + untitledWorkspace: 'Pracovný priestor bez názvu', + }, + labels: { + createWorkspaceTitle: 'Vytvoriť pracovný priestor', + loadingWorkspaces: 'Načítavajú sa pracovné priestory', + workspace: 'Pracovný priestor', + workspaces: 'Pracovné priestory', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/sl.ts b/ui/src/core/i18n/resources/sl.ts new file mode 100644 index 0000000..9ed9767 --- /dev/null +++ b/ui/src/core/i18n/resources/sl.ts @@ -0,0 +1,649 @@ +export const sl = { + bootstrap: { + error: { + fallbackMessage: 'Poskusite znova. Če se to ponavlja, znova odprite Clear.', + title: 'Zagon ni uspel', + }, + loadingTitle: 'Pripravljamo vaš učni prostor', + }, + common: { + actions: { + back: 'Nazaj', + cancel: 'Prekliči', + checkAgain: 'Preveri znova', + close: 'Zapri', + create: 'Ustvari', + delete: 'Izbriši', + dismissError: 'Zapri napako', + dismissStatus: 'Zapri stanje', + edit: 'Uredi', + itemActions: 'Dejanja za {{title}}', + reset: 'Ponastavi', + review: 'Ponavljanje', + save: 'Shrani', + saveChanges: 'Shrani spremembe', + tryAgain: 'Poskusi znova', + }, + labels: { + active: 'Aktivno', + clear: 'Clear', + custom: 'Po meri', + default: 'Privzeto', + loadingEditor: 'Nalaganje urejevalnika', + name: 'Ime', + completedTask: 'Dokončano opravilo', + description: 'Opis', + incompleteTask: 'Nedokončano opravilo', + percentageInput: 'Odstotek za {{label}}', + visual: 'Vizualno', + }, + status: { + actionFailed: 'Dejanje ni uspelo', + actionInProgress: 'Dejanje poteka', + }, + sort: { + ascending: 'Narašč.', + column: 'Stolpec', + descending: 'Padaj.', + direction: 'Smer', + sort: 'Razvrsti', + }, + search: { + label: 'Iskanje', + }, + visualPicker: { + allLucideIcons: 'Vse ikone Lucide', + browseIconsFor: 'Brskajte ali iščite ikone za {{label}}.', + chooseIcon: 'Izberi ikono', + iconPicker: 'Izbirnik ikon za {{label}}', + iconSearch: 'Iskanje ikon za {{label}}', + iconsCouldNotLoad: 'Ikon ni bilo mogoče naložiti.', + loadingIcons: 'Nalaganje ikon', + loadingMoreIcons: 'Nalaganje dodatnih ikon', + moreIcons: 'Več ikon', + noIconsMatch: 'Nobena ikona se ne ujema z "{{query}}".', + searchIconsPlaceholder: 'Išči ikone…', + selectedIcon: 'Izbrano {{label}}', + }, + }, + dashboard: { + actions: { + create: 'Ustvari', + newDeck: 'Nov komplet', + newFolder: 'Nova mapa', + }, + descriptions: { + defaultWorkspace: 'Komplete, mape in zapiske imejte skupaj.', + emptyWorkspace: 'Ustvarite komplet in nato dodajte zapiske, da sestavite čakalno vrsto za ponavljanje.', + emptyFolder: 'Ustvarite komplet in nato dodajte zapiske, da sestavite čakalno vrsto za ponavljanje.', + searchPlaceholder: 'Išči mape, komplete in zapiske…', + }, + empty: { + createFirstDeck: 'Ustvarite svoj prvi komplet', + }, + errors: { + couldNotDeleteDeck: 'Kompleta ni bilo mogoče izbrisati', + couldNotDeleteFolder: 'Mape ni bilo mogoče izbrisati', + couldNotDeleteWorkspace: 'Delovnega prostora ni bilo mogoče izbrisati', + dashboardCouldNotOpen: 'Nadzorne plošče ni bilo mogoče odpreti', + decksCouldNotLoad: 'Kompletov ni bilo mogoče naložiti', + decksMayBeOutOfDate: 'Kompleti so morda zastareli', + foldersCouldNotLoad: 'Map ni bilo mogoče naložiti', + foldersMayBeOutOfDate: 'Mape so morda zastarele', + workspaceCouldNotLoad: 'Delovnega prostora ni bilo mogoče naložiti', + }, + labels: { + dashboard: 'Nadzorna plošča', + loadingDashboard: 'Nalaganje nadzorne plošče', + newItem: 'Nov element', + }, + }, + dates: { + absolute: { + unavailable: 'Datum ni na voljo', + }, + age: { + dayAgo_one: 'pred {{count}} dnem', + dayAgo_two: 'pred {{count}} dnevoma', + dayAgo_few: 'pred {{count}} dnevi', + dayAgo_other: 'pred {{count}} dnevi', + hourAgo_one: 'pred {{count}} uro', + hourAgo_two: 'pred {{count}} urama', + hourAgo_few: 'pred {{count}} urami', + hourAgo_other: 'pred {{count}} urami', + justNow: 'pravkar', + minuteAgo_one: 'pred {{count}} minuto', + minuteAgo_two: 'pred {{count}} minutama', + minuteAgo_few: 'pred {{count}} minutami', + minuteAgo_other: 'pred {{count}} minutami', + unavailable: 'datum ni na voljo', + weekAgo_one: 'pred {{count}} tednom', + weekAgo_two: 'pred {{count}} tednoma', + weekAgo_few: 'pred {{count}} tedni', + weekAgo_other: 'pred {{count}} tedni', + }, + labels: { + deleted: 'Izbrisano {{value}}', + due: 'Rok: {{value}}', + reviewed: 'Ponovljeno: {{value}}', + updated: 'Posodobljeno {{value}}', + updatedUppercase: 'POSODOBLJENO {{value}}', + }, + relative: { + dayAgo_one: 'pred {{count}} dnem', + dayAgo_two: 'pred {{count}} dnevoma', + dayAgo_few: 'pred {{count}} dnevi', + dayAgo_other: 'pred {{count}} dnevi', + inAMoment: 'Čez trenutek', + inDay_one: 'Čez {{count}} dan', + inDay_two: 'Čez {{count}} dneva', + inDay_few: 'Čez {{count}} dni', + inDay_other: 'Čez {{count}} dni', + inMonth_one: 'Čez {{count}} mesec', + inMonth_two: 'Čez {{count}} meseca', + inMonth_few: 'Čez {{count}} mesece', + inMonth_other: 'Čez {{count}} mesecev', + inWeek_one: 'Čez {{count}} teden', + inWeek_two: 'Čez {{count}} tedna', + inWeek_few: 'Čez {{count}} tedne', + inWeek_other: 'Čez {{count}} tednov', + justNow: 'Pravkar', + monthAgo_one: 'pred {{count}} mesecem', + monthAgo_two: 'pred {{count}} mesecema', + monthAgo_few: 'pred {{count}} meseci', + monthAgo_other: 'pred {{count}} meseci', + secondsAgoShort: 'pred {{count}} s', + minutesAgoShort: 'pred {{count}} min', + hoursAgoShort: 'pred {{count}} h', + today: 'Danes', + tomorrow: 'Jutri', + weekAgo_one: 'pred {{count}} tednom', + weekAgo_two: 'pred {{count}} tednoma', + weekAgo_few: 'pred {{count}} tedni', + weekAgo_other: 'pred {{count}} tedni', + yesterday: 'Včeraj', + }, + }, + decks: { + actions: { + actionMenu: 'Dejanja za {{title}}', + createDeck: 'Ustvari komplet', + createNote: 'Ustvari zapisek', + deleteDeck: 'Izbriši komplet', + editDeck: 'Uredi komplet', + newNote: 'Nov zapisek', + openDeck: 'Odpri komplet {{title}}', + saveDeck: 'Kompleta ni bilo mogoče shraniti', + studyNow: 'Uči se zdaj', + }, + descriptions: { + emptyDeck: 'Dodajte zapisek, da bo imel ta komplet gradivo za ponavljanje.', + editorDefault: 'Osredotočen učni komplet.', + editorVisual: 'Izberite simbol naslovnice za ta komplet.', + notesSearchPlaceholder: 'Išči zapiske…', + }, + dialogs: { + deleteDeckDescription: 'To premakne "{{title}}" v Koš. Pozneje ga lahko obnovite.', + deleteDeckFallbackDescription: 'To premakne ta komplet v Koš. Pozneje ga lahko obnovite.', + deleteDeckFallbackTitle: 'Izbrisati komplet?', + deleteDeckTitle: 'Izbrisati "{{title}}"?', + deleteNoteDescription: 'To premakne "{{title}}" v Koš. Pozneje ga lahko obnovite.', + deleteNoteFallbackTitle: 'Izbrisati zapisek?', + deleteNoteTitle: 'Izbrisati "{{title}}"?', + }, + empty: { + noMatchingNotes: 'Ni ujemajočih se zapiskov', + noMatchingNotesDescription: 'Noben zapisek se ne ujema z "{{query}}".', + thisDeckIsEmpty: 'Ta komplet je prazen', + }, + errors: { + couldNotCreateDeck: 'Kompleta ni bilo mogoče ustvariti', + couldNotDeleteDeck: 'Kompleta ni bilo mogoče izbrisati', + couldNotDeleteNote: 'Zapiska ni bilo mogoče izbrisati', + couldNotLoadFolderPath: 'Poti mape ni bilo mogoče naložiti', + couldNotSaveDeck: 'Kompleta ni bilo mogoče shraniti', + deckCouldNotLoad: 'Kompleta ni bilo mogoče naložiti', + notesCouldNotLoad: 'Zapiskov ni bilo mogoče naložiti', + notesMayBeOutOfDate: 'Zapiski so morda zastareli', + }, + fields: { + descriptionLabel: 'Opis kompleta', + descriptionPlaceholder: 'Kaj vam bo ta komplet pomagal ponavljati?', + namePlaceholder: 'Ime kompleta', + untitledDeck: 'Komplet brez naslova', + untitledDeckLower: 'komplet brez naslova', + }, + labels: { + createDeckTitle: 'Ustvari komplet', + deck: 'Komplet', + deckNotesSearch: 'Iskanje zapiskov v kompletu', + deckOverview: 'Pregled kompleta', + decks: 'Kompleti', + due: 'Rok', + dueToday: 'Rok danes', + loadingDeck: 'Nalaganje kompleta', + mastery: 'Obvladovanje', + notes: 'Zapiski', + }, + sort: { + ariaLabel: 'Razvrsti komplete', + dueToday: 'Rok danes', + title: 'Naslov', + updated: 'Posodobljeno', + }, + }, + errors: { + byType: { + conflict: 'Podatki so se spremenili. Osvežite in poskusite znova.', + forbidden: 'Nimate dovoljenja za to dejanje.', + notFound: 'Tega elementa nismo mogli najti.', + offline: 'Storitve ni mogoče doseči.', + timeout: 'To je trajalo predolgo. Poskusite znova.', + unauthorized: 'Za nadaljevanje se prijavite.', + unavailable: 'Storitev začasno ni na voljo.', + }, + fallback: { + unexpected: 'Nepričakovana napaka', + }, + }, + folders: { + actions: { + createFolder: 'Ustvari mapo', + deleteFolder: 'Izbriši mapo', + editFolder: 'Uredi mapo', + }, + descriptions: { + editorDefault: 'Mapa za povezane komplete.', + }, + dialogs: { + deleteFolderDescription: 'To premakne "{{name}}" v Koš. Pozneje jo lahko obnovite.', + deleteFolderFallbackDescription: 'To premakne to mapo v Koš. Pozneje jo lahko obnovite.', + deleteFolderFallbackTitle: 'Izbrisati mapo?', + deleteFolderTitle: 'Izbrisati "{{name}}"?', + }, + empty: { + noMatchesInFolder: 'V tej mapi ni zadetkov', + noMatchesInFolderDescription: 'Nobena mapa, komplet ali zapisek se ne ujema z "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'Mape ni bilo mogoče ustvariti', + couldNotDeleteFolder: 'Mape ni bilo mogoče izbrisati', + couldNotLoadFolderPath: 'Poti mape ni bilo mogoče naložiti', + couldNotSaveFolder: 'Mape ni bilo mogoče shraniti', + folderCouldNotLoad: 'Mape ni bilo mogoče naložiti', + }, + fields: { + descriptionLabel: 'Opis mape', + descriptionPlaceholder: 'Kaj spada v to mapo?', + namePlaceholder: 'Ime mape', + untitledFolder: 'Mapa brez naslova', + }, + labels: { + createFolderTitle: 'Ustvari mapo', + folder: 'Mapa', + folders: 'Mape', + loadingFolder: 'Nalaganje mape', + name: 'Ime', + updated: 'Posodobljeno', + }, + sort: { + ariaLabel: 'Razvrsti mape', + name: 'Ime', + updated: 'Posodobljeno', + }, + }, + menu: { + conflicts: { + description: 'Če se lokalni in sinhronizirani podatki kdaj ne ujemajo, se bo element prikazal tukaj.', + heading: 'Stanje sinhronizacije', + title: 'Spori', + noConflicts: 'Ni najdenih sporov', + }, + labels: { + menu: 'Meni', + }, + sections: { + settings: { + description: 'Prilagodite svoje okolje in nastavitve', + title: 'Nastavitve', + }, + trash: { + description: 'Obnovite ali trajno izbrišite odstranjene elemente', + title: 'Koš', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Zapri urejevalnik', + openActions: 'Odpri dejanja', + openWorkspaces: 'Odpri delovne prostore', + }, + items: { + home: 'Domov', + menu: 'Meni', + primary: 'Glavno', + settings: 'Nastavitve', + spaces: 'Prostori', + trash: 'Koš', + workspaces: 'Delovni prostori', + }, + }, + notes: { + actions: { + addCloze: 'Dodaj cloze', + deleteNote: 'Izbriši zapisek', + editNote: 'Uredi zapisek', + hideDerivedCardsNote: 'Skrij opombo o izpeljanih karticah', + openNote: 'Odpri {{title}}', + saveNote: 'Shrani zapisek', + showDerivedCardsNote: 'Prikaži opombo o izpeljanih karticah', + }, + descriptions: { + clozeFormat: 'Vsak skriti del po shranjevanju postane kartica za ponavljanje.', + clozeFormatPrefix: 'Skrito besedilo obdajte z', + derivedCardsHelper: 'Zapiski so vir resnice za izpeljane kartice.', + }, + dialogs: { + deleteNoteDescription: 'To premakne "{{title}}" v Koš. Pozneje ga lahko obnovite.', + deleteNoteFallbackDescription: 'To premakne ta zapisek v Koš. Pozneje ga lahko obnovite.', + deleteNoteFallbackTitle: 'Izbrisati zapisek?', + deleteNoteTitle: 'Izbrisati "{{title}}"?', + }, + errors: { + couldNotCreateNote: 'Zapiska ni bilo mogoče ustvariti', + couldNotDeleteNote: 'Zapiska ni bilo mogoče izbrisati', + couldNotSaveNote: 'Zapiska ni bilo mogoče shraniti', + noteCouldNotLoad: 'Zapiska ni bilo mogoče naložiti', + }, + fields: { + back: 'Hrbtna stran', + backPlaceholder: 'Vnesite hrbtno stran', + bodyPlaceholder: 'Napišite vsebino zapiska z izbrisi cloze…', + front: 'Sprednja stran', + frontPlaceholder: 'Vnesite sprednjo stran', + noteBody: 'Vsebina zapiska', + title: 'Naslov', + titlePlaceholder: 'Dodajte naslov zapiska', + untitledCloze: 'Cloze brez naslova', + untitledNote: 'Zapisek brez naslova', + }, + labels: { + backUppercase: 'HRBTNA STRAN', + basic: 'Osnovno', + basicLower: 'osnovno', + basicUppercase: 'OSNOVNO', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Oblika cloze', + clozeUppercase: 'CLOZE', + deck: 'Komplet', + derivedCards: 'IZPELJANE KARTICE', + due: 'Rok', + frontUppercase: 'SPREDNJA STRAN', + inProgress: 'V teku', + inProgressUppercase: 'V TEKU', + loadingNote: 'Nalaganje zapiska', + loadingNoteEditor: 'Nalaganje urejevalnika zapiskov', + markdownFormatting: 'Oblikovanje Markdown', + mastered: 'Obvladano', + masteredUppercase: 'OBVLADANO', + newNote: 'Nov zapisek', + noteBody: 'VSEBINA ZAPISKA', + noteContent: 'Vsebina zapiska', + noteDetails: 'Podrobnosti zapiska', + noteMetadata: 'Metapodatki zapiska', + noteType: 'Vrsta zapiska', + notes: 'Zapiski', + reviewed: 'Ponovljeno', + studyProgress: 'Napredek učenja', + studyProgressUppercase: 'NAPREDEK UČENJA', + titleUppercase: 'NASLOV', + updated: 'Posodobljeno', + }, + sort: { + ariaLabel: 'Razvrsti zapiske', + title: 'Naslov', + updated: 'Posodobljeno', + }, + toolbar: { + bold: 'Krepko', + italic: 'Ležeče', + link: 'Povezava', + list: 'Seznam', + }, + }, + review: { + actions: { + again: 'Znova', + backToDeck: 'Nazaj na komplet', + continueReview: 'Nadaljuj ponavljanje', + easy: 'Lahko', + good: 'Dobro', + hard: 'Težko', + newNote: 'Nov zapisek', + showAnswer: 'Prikaži odgovor', + }, + errors: { + couldNotGradeCard: 'Kartice ni bilo mogoče oceniti', + reviewCouldNotLoad: 'Ponavljanja ni bilo mogoče naložiti', + reviewCouldNotStart: 'Ponavljanja ni bilo mogoče začeti', + summaryCouldNotLoad: 'Povzetka ponavljanja ni bilo mogoče naložiti', + summaryNotAvailable: 'Povzetek ponavljanja ni na voljo', + summaryNotComplete: 'To ponavljanje še ni dokončano.', + }, + labels: { + cardsReviewed: 'Ponovljene kartice', + deck: 'Komplet', + duration: 'Trajanje', + loadingReview: 'Nalaganje ponavljanja', + loadingSummary: 'Nalaganje povzetka', + progress: 'Napredek ponavljanja', + review: 'Ponavljanje', + reviewComplete: 'Ponavljanje dokončano', + reviewed_one: 'Ponovljena {{count}}', + reviewed_two: 'Ponovljeni {{count}}', + reviewed_few: 'Ponovljene {{count}}', + reviewed_other: 'Ponovljeno {{count}}', + }, + summary: { + durationHoursMinutes: '{{hours}} h {{minutes}} min', + durationMinutes: '{{minutes}} min', + durationSeconds: '{{seconds}} s', + saved: 'Vaš napredek je bil shranjen v ta komplet.', + }, + unavailable: { + description: 'Dodajte zapisek, da lahko ta komplet vstopi v čakalno vrsto za ponavljanje.', + title: 'Ni kartic za ponavljanje', + }, + }, + search: { + actions: { + clearSearch: 'Počisti iskanje', + }, + empty: { + noMatchesInWorkspace: 'V tem delovnem prostoru ni zadetkov', + noMatchesInWorkspaceDescription: 'Nobena mapa, komplet ali zapisek se ne ujema z "{{query}}".', + }, + errors: { + couldNotComplete: 'Iskanja ni bilo mogoče dokončati', + }, + labels: { + results: 'Rezultati iskanja', + resultsFor: 'Rezultati za "{{query}}"', + searchingContent: 'Iskanje vsebine', + }, + resultGroups: { + deck: 'Kompleti', + folder: 'Mape', + note: 'Zapiski', + }, + resultKinds: { + deck: 'komplet', + folder: 'mapa', + note: 'zapisek', + }, + }, + settings: { + actions: { + resetAll: 'Ponastavi vse nastavitve', + resetSettings: 'Ponastavi nastavitve', + resetToDefaults: 'Ponastavi na privzeto', + }, + dialogs: { + fsrsErrorInvalidJson: 'Prilepite veljaven JSON z 21 številskimi vrednostmi.', + fsrsErrorInvalidParams_one: 'Vnesite polje JSON z natanko {{count}} končnim številom.', + fsrsErrorInvalidParams_two: 'Vnesite polje JSON z natanko {{count}} končnima številoma.', + fsrsErrorInvalidParams_few: 'Vnesite polje JSON z natanko {{count}} končnimi števili.', + fsrsErrorInvalidParams_other: 'Vnesite polje JSON z natanko {{count}} končnimi števili.', + fsrsHelper: 'To je strokovna preglasitev. Vrednosti morajo ostati v zaporedju.', + fsrsJsonLabel: 'JSON parametrov FSRS', + fsrsTitle: 'Uredi parametre FSRS', + fsrsDescription: 'Prilepite polje JSON z 21 števili, da preglasite uteži razporejevalnika.', + resetDescription: 'To obnovi časovni pas, učne omejitve in nastavitve FSRS.', + resetDescriptionWithLanguage: 'To obnovi jezik, časovni pas, učne omejitve in nastavitve FSRS.', + resetTitle: 'Ponastaviti vse nastavitve?', + timezoneDescription: 'Poiščite mesto ali identifikator časovnega pasu.', + timezoneSearchLabel: 'Išči časovne pasove', + timezoneSearchPlaceholder: 'Išči časovne pasove…', + timezoneTitle: 'Izberi časovni pas', + }, + errors: { + couldNotResetSettings: 'Nastavitev ni bilo mogoče ponastaviti', + couldNotSaveSettings: 'Nastavitev ni bilo mogoče shraniti', + settingsCouldNotLoad: 'Nastavitev ni bilo mogoče naložiti', + settingsUnavailable: 'Nastavitve niso na voljo.', + }, + labels: { + appearance: 'Videz', + automatic: 'Samodejno', + fsrsParameters: 'Parametri FSRS', + general: 'Splošno', + language: 'Jezik', + loadingSettings: 'Nalaganje nastavitev', + masteryHorizon: 'Obzorje obvladovanja', + newCardOrder: 'Vrstni red novih kartic', + newCardsPerDay: 'Nove kartice na dan', + reviewCardsPerDay: 'Kartice za ponavljanje na dan', + savingSettings: 'Shranjevanje nastavitev', + schedule: 'Razpored', + searchNoTimezones: 'Ni ujemajočih se časovnih pasov.', + settings: 'Nastavitve', + settingsReset: 'Nastavitve ponastavljene', + study: 'Učenje', + targetRecallProbability: 'Ciljna verjetnost priklica', + theme: 'Tema', + timezone: 'Časovni pas', + }, + options: { + languageEnUs: 'Angleščina (ZDA)', + newCardsAfterReviews: 'Po ponavljanjih', + newCardsBeforeReviews: 'Pred ponavljanji', + newCardsMixed: 'Mešano', + themeDark: 'Temna', + themeLight: 'Svetla', + themeSystem: 'Sistem', + timezoneSystem: 'Uporabi sistemski časovni pas', + }, + rows: { + fsrsDescription: 'Uteži strokovnega modela', + languageDescription: 'Jezik vmesnika', + masteryHorizonDescription: 'Število dni, ko mora kartica ostati priklicljiva pri ciljni verjetnosti ali nad njo, da šteje kot obvladana', + newCardOrderDescription: 'Vrstni red novih kartic glede na ponavljanja', + newCardsPerDayDescription: 'Največje število novih kartic na dan', + reviewCardsPerDayDescription: 'Največje število kartic za ponavljanje na dan', + targetRecallProbabilityDescription: 'Najmanjša verjetnost priklica pri naslednjem načrtovanem ponavljanju', + timezoneDescription: 'Uporabite samodejni časovni pas ali izberite mesto.', + }, + }, + trash: { + actions: { + deletePermanently: 'Trajno izbriši', + empty: 'Izprazni', + emptyTrash: 'Izprazni koš', + restore: 'Obnovi', + restoringItem: 'Obnavljanje {{title}}', + }, + dialogs: { + deleteItemDescription: 'To trajno izbriše "{{title}}". Tega ni mogoče razveljaviti.', + deleteItemFallbackDescription: 'To trajno izbriše ta element. Tega ni mogoče razveljaviti.', + deleteItemFallbackTitle: 'Izbrisati element?', + deleteItemTitle: 'Izbrisati "{{title}}"?', + emptyTrashDescription: 'To trajno izbriše vse v Košu. Tega ni mogoče razveljaviti.', + emptyTrashTitle: 'Izprazniti koš?', + }, + empty: { + description: 'Elementi, ki jih izbrišete, se bodo prikazali tukaj pred trajno odstranitvijo.', + title: 'Koš je prazen', + }, + errors: { + couldNotDeleteItem: 'Elementa ni bilo mogoče izbrisati', + couldNotEmptyTrash: 'Koša ni bilo mogoče izprazniti', + couldNotRestoreItem: 'Elementa ni bilo mogoče obnoviti', + trashCouldNotLoad: 'Koša ni bilo mogoče naložiti', + trashMayBeOutOfDate: 'Koš je morda zastarel', + }, + labels: { + deletedAge: 'Izbrisano {{value}}', + itemCount_one: '{{count}} element', + itemCount_two: '{{count}} elementa', + itemCount_few: '{{count}} elementi', + itemCount_other: '{{count}} elementov', + lastEmptied: 'Nazadnje izpraznjeno {{value}}', + loadingTrash: 'Nalaganje Koša', + originalLocation: 'Izvorna lokacija: {{location}}', + title: 'Koš', + trashActions: 'Dejanja Koša za {{title}}', + }, + kinds: { + deck: 'Komplet', + folder: 'Mapa', + note: 'Zapisek', + workspace: 'Delovni prostor', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Ustvari delovni prostor', + deleteWorkspace: 'Izbriši delovni prostor', + editWorkspace: 'Uredi delovni prostor', + newWorkspace: 'Nov delovni prostor', + openWorkspace: 'Odpri {{title}}', + openingWorkspace: 'Odpiranje {{title}}', + }, + descriptions: { + editorDefault: 'Učni kontekst.', + editorVisual: 'Izberite vizualno sidro za ta delovni prostor.', + emptyList: 'Ločite komplete, zapiske in čakalne vrste za ponavljanje po učnem kontekstu.', + }, + dialogs: { + deleteWorkspaceDescription: 'To premakne "{{title}}" v Koš. Pozneje ga lahko obnovite.', + deleteWorkspaceFallbackDescription: 'To premakne ta delovni prostor v Koš. Pozneje ga lahko obnovite.', + deleteWorkspaceFallbackTitle: 'Izbrisati delovni prostor?', + deleteWorkspaceTitle: 'Izbrisati "{{title}}"?', + }, + empty: { + startWithWorkspace: 'Začnite z delovnim prostorom', + }, + errors: { + couldNotCreateWorkspace: 'Delovnega prostora ni bilo mogoče ustvariti', + couldNotDeleteWorkspace: 'Delovnega prostora ni bilo mogoče izbrisati', + couldNotOpenWorkspace: 'Delovnega prostora ni bilo mogoče odpreti', + couldNotSaveWorkspace: 'Delovnega prostora ni bilo mogoče shraniti', + workspaceCouldNotLoad: 'Delovnega prostora ni bilo mogoče naložiti', + workspacesCouldNotLoad: 'Delovnih prostorov ni bilo mogoče naložiti', + }, + fields: { + descriptionLabel: 'Opis delovnega prostora', + descriptionPlaceholder: 'Kaj spada v ta delovni prostor?', + namePlaceholder: 'Ime delovnega prostora', + untitledWorkspace: 'Delovni prostor brez naslova', + }, + labels: { + createWorkspaceTitle: 'Ustvari delovni prostor', + loadingWorkspaces: 'Nalaganje delovnih prostorov', + workspace: 'Delovni prostor', + workspaces: 'Delovni prostori', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/sr-Latn.ts b/ui/src/core/i18n/resources/sr-Latn.ts new file mode 100644 index 0000000..cff69bf --- /dev/null +++ b/ui/src/core/i18n/resources/sr-Latn.ts @@ -0,0 +1,636 @@ +export const srLatn = { + bootstrap: { + error: { + fallbackMessage: 'Pokušajte ponovo. Ako se ovo i dalje dešava, ponovo otvorite Clear.', + title: 'Pokretanje nije uspelo', + }, + loadingTitle: 'Priprema se vaš prostor za učenje', + }, + common: { + actions: { + back: 'Nazad', + cancel: 'Otkaži', + checkAgain: 'Proveri ponovo', + close: 'Zatvori', + create: 'Napravi', + delete: 'Obriši', + dismissError: 'Zatvori grešku', + dismissStatus: 'Zatvori status', + edit: 'Uredi', + itemActions: 'Radnje za {{title}}', + reset: 'Resetuj', + review: 'Ponavljanje', + save: 'Sačuvaj', + saveChanges: 'Sačuvaj izmene', + tryAgain: 'Pokušaj ponovo', + }, + labels: { + active: 'Aktivno', + clear: 'Clear', + custom: 'Prilagođeno', + default: 'Podrazumevano', + loadingEditor: 'Učitavanje uređivača', + name: 'Naziv', + completedTask: 'Završen zadatak', + description: 'Opis', + incompleteTask: 'Nedovršen zadatak', + percentageInput: 'Procenat za {{label}}', + visual: 'Vizuelno', + }, + status: { + actionFailed: 'Radnja nije uspela', + actionInProgress: 'Radnja je u toku', + }, + sort: { + ascending: 'Rast.', + column: 'Kolona', + descending: 'Opad.', + direction: 'Smer', + sort: 'Sortiraj', + }, + search: { + label: 'Pretraga', + }, + visualPicker: { + allLucideIcons: 'Sve Lucide ikonice', + browseIconsFor: 'Pregledajte ili pretražite ikonice za {{label}}.', + chooseIcon: 'Izaberi ikonicu', + iconPicker: 'Birač ikonice za {{label}}', + iconSearch: 'Pretraga ikonica za {{label}}', + iconsCouldNotLoad: 'Ikonice nisu mogle da se učitaju.', + loadingIcons: 'Učitavanje ikonica', + loadingMoreIcons: 'Učitavanje dodatnih ikonica', + moreIcons: 'Još ikonica', + noIconsMatch: 'Nijedna ikonica ne odgovara upitu "{{query}}".', + searchIconsPlaceholder: 'Pretraži ikonice…', + selectedIcon: 'Izabrano {{label}}', + }, + }, + dashboard: { + actions: { + create: 'Napravi', + newDeck: 'Novi špil', + newFolder: 'Nova fascikla', + }, + descriptions: { + defaultWorkspace: 'Držite špilove, fascikle i beleške zajedno.', + emptyWorkspace: 'Napravite špil, pa dodajte beleške da izgradite red za ponavljanje.', + emptyFolder: 'Napravite špil, pa dodajte beleške da izgradite red za ponavljanje.', + searchPlaceholder: 'Pretraži fascikle, špilove i beleške…', + }, + empty: { + createFirstDeck: 'Napravite svoj prvi špil', + }, + errors: { + couldNotDeleteDeck: 'Špil nije mogao da se obriše', + couldNotDeleteFolder: 'Fascikla nije mogla da se obriše', + couldNotDeleteWorkspace: 'Radni prostor nije mogao da se obriše', + dashboardCouldNotOpen: 'Kontrolna tabla nije mogla da se otvori', + decksCouldNotLoad: 'Špilovi nisu mogli da se učitaju', + decksMayBeOutOfDate: 'Špilovi možda nisu ažurni', + foldersCouldNotLoad: 'Fascikle nisu mogle da se učitaju', + foldersMayBeOutOfDate: 'Fascikle možda nisu ažurne', + workspaceCouldNotLoad: 'Radni prostor nije mogao da se učita', + }, + labels: { + dashboard: 'Kontrolna tabla', + loadingDashboard: 'Učitavanje kontrolne table', + newItem: 'Nova stavka', + }, + }, + dates: { + absolute: { + unavailable: 'Datum nije dostupan', + }, + age: { + dayAgo_one: 'pre {{count}} dan', + dayAgo_few: 'pre {{count}} dana', + dayAgo_other: 'pre {{count}} dana', + hourAgo_one: 'pre {{count}} sat', + hourAgo_few: 'pre {{count}} sata', + hourAgo_other: 'pre {{count}} sati', + justNow: 'upravo sada', + minuteAgo_one: 'pre {{count}} minut', + minuteAgo_few: 'pre {{count}} minuta', + minuteAgo_other: 'pre {{count}} minuta', + unavailable: 'datum nije dostupan', + weekAgo_one: 'pre {{count}} nedelju', + weekAgo_few: 'pre {{count}} nedelje', + weekAgo_other: 'pre {{count}} nedelja', + }, + labels: { + deleted: 'Obrisano {{value}}', + due: 'Rok: {{value}}', + reviewed: 'Ponovljeno: {{value}}', + updated: 'Ažurirano {{value}}', + updatedUppercase: 'AŽURIRANO {{value}}', + }, + relative: { + dayAgo_one: 'pre {{count}} dan', + dayAgo_few: 'pre {{count}} dana', + dayAgo_other: 'pre {{count}} dana', + inAMoment: 'Za trenutak', + inDay_one: 'Za {{count}} dan', + inDay_few: 'Za {{count}} dana', + inDay_other: 'Za {{count}} dana', + inMonth_one: 'Za {{count}} mesec', + inMonth_few: 'Za {{count}} meseca', + inMonth_other: 'Za {{count}} meseci', + inWeek_one: 'Za {{count}} nedelju', + inWeek_few: 'Za {{count}} nedelje', + inWeek_other: 'Za {{count}} nedelja', + justNow: 'Upravo sada', + monthAgo_one: 'pre {{count}} mesec', + monthAgo_few: 'pre {{count}} meseca', + monthAgo_other: 'pre {{count}} meseci', + secondsAgoShort: 'pre {{count}} s', + minutesAgoShort: 'pre {{count}} min', + hoursAgoShort: 'pre {{count}} h', + today: 'Danas', + tomorrow: 'Sutra', + weekAgo_one: 'pre {{count}} nedelju', + weekAgo_few: 'pre {{count}} nedelje', + weekAgo_other: 'pre {{count}} nedelja', + yesterday: 'Juče', + }, + }, + decks: { + actions: { + actionMenu: 'Radnje za {{title}}', + createDeck: 'Napravi špil', + createNote: 'Napravi belešku', + deleteDeck: 'Obriši špil', + editDeck: 'Uredi špil', + newNote: 'Nova beleška', + openDeck: 'Otvori špil {{title}}', + saveDeck: 'Špil nije mogao da se sačuva', + studyNow: 'Uči sada', + }, + descriptions: { + emptyDeck: 'Dodajte belešku da bi ovaj špil imao materijal za ponavljanje.', + editorDefault: 'Fokusiran špil za učenje.', + editorVisual: 'Izaberite simbol naslovnice za ovaj špil.', + notesSearchPlaceholder: 'Pretraži beleške…', + }, + dialogs: { + deleteDeckDescription: 'Ovo premešta "{{title}}" u Smeće. Možete ga vratiti kasnije.', + deleteDeckFallbackDescription: 'Ovo premešta ovaj špil u Smeće. Možete ga vratiti kasnije.', + deleteDeckFallbackTitle: 'Obrisati špil?', + deleteDeckTitle: 'Obrisati "{{title}}"?', + deleteNoteDescription: 'Ovo premešta "{{title}}" u Smeće. Možete je vratiti kasnije.', + deleteNoteFallbackTitle: 'Obrisati belešku?', + deleteNoteTitle: 'Obrisati "{{title}}"?', + }, + empty: { + noMatchingNotes: 'Nema odgovarajućih beleški', + noMatchingNotesDescription: 'Nijedna beleška ne odgovara upitu "{{query}}".', + thisDeckIsEmpty: 'Ovaj špil je prazan', + }, + errors: { + couldNotCreateDeck: 'Špil nije mogao da se napravi', + couldNotDeleteDeck: 'Špil nije mogao da se obriše', + couldNotDeleteNote: 'Beleška nije mogla da se obriše', + couldNotLoadFolderPath: 'Putanja fascikle nije mogla da se učita', + couldNotSaveDeck: 'Špil nije mogao da se sačuva', + deckCouldNotLoad: 'Špil nije mogao da se učita', + notesCouldNotLoad: 'Beleške nisu mogle da se učitaju', + notesMayBeOutOfDate: 'Beleške možda nisu ažurne', + }, + fields: { + descriptionLabel: 'Opis špila', + descriptionPlaceholder: 'Šta će vam ovaj špil pomoći da ponavljate?', + namePlaceholder: 'Naziv špila', + untitledDeck: 'Špil bez naslova', + untitledDeckLower: 'špil bez naslova', + }, + labels: { + createDeckTitle: 'Napravi špil', + deck: 'Špil', + deckNotesSearch: 'Pretraga beleški u špilu', + deckOverview: 'Pregled špila', + decks: 'Špilovi', + due: 'Rok', + dueToday: 'Rok danas', + loadingDeck: 'Učitavanje špila', + mastery: 'Savladanost', + notes: 'Beleške', + }, + sort: { + ariaLabel: 'Sortiraj špilove', + dueToday: 'Rok danas', + title: 'Naslov', + updated: 'Ažurirano', + }, + }, + errors: { + byType: { + conflict: 'Podaci su se promenili. Osvežite i pokušajte ponovo.', + forbidden: 'Nemate dozvolu za ovu radnju.', + notFound: 'Nismo mogli da pronađemo ovu stavku.', + offline: 'Usluga nije dostupna.', + timeout: 'Ovo je trajalo predugo. Pokušajte ponovo.', + unauthorized: 'Prijavite se da nastavite.', + unavailable: 'Usluga je privremeno nedostupna.', + }, + fallback: { + unexpected: 'Neočekivana greška', + }, + }, + folders: { + actions: { + createFolder: 'Napravi fasciklu', + deleteFolder: 'Obriši fasciklu', + editFolder: 'Uredi fasciklu', + }, + descriptions: { + editorDefault: 'Fascikla za povezane špilove.', + }, + dialogs: { + deleteFolderDescription: 'Ovo premešta "{{name}}" u Smeće. Možete je vratiti kasnije.', + deleteFolderFallbackDescription: 'Ovo premešta ovu fasciklu u Smeće. Možete je vratiti kasnije.', + deleteFolderFallbackTitle: 'Obrisati fasciklu?', + deleteFolderTitle: 'Obrisati "{{name}}"?', + }, + empty: { + noMatchesInFolder: 'Nema rezultata u ovoj fascikli', + noMatchesInFolderDescription: 'Nijedna fascikla, špil ili beleška ne odgovara upitu "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'Fascikla nije mogla da se napravi', + couldNotDeleteFolder: 'Fascikla nije mogla da se obriše', + couldNotLoadFolderPath: 'Putanja fascikle nije mogla da se učita', + couldNotSaveFolder: 'Fascikla nije mogla da se sačuva', + folderCouldNotLoad: 'Fascikla nije mogla da se učita', + }, + fields: { + descriptionLabel: 'Opis fascikle', + descriptionPlaceholder: 'Šta pripada ovoj fascikli?', + namePlaceholder: 'Naziv fascikle', + untitledFolder: 'Fascikla bez naslova', + }, + labels: { + createFolderTitle: 'Napravi fasciklu', + folder: 'Fascikla', + folders: 'Fascikle', + loadingFolder: 'Učitavanje fascikle', + name: 'Naziv', + updated: 'Ažurirano', + }, + sort: { + ariaLabel: 'Sortiraj fascikle', + name: 'Naziv', + updated: 'Ažurirano', + }, + }, + menu: { + conflicts: { + description: 'Ako se lokalni i sinhronizovani podaci ikada razlikuju, stavka će se pojaviti ovde.', + heading: 'Status sinhronizacije', + title: 'Sukobi', + noConflicts: 'Nisu pronađeni sukobi', + }, + labels: { + menu: 'Meni', + }, + sections: { + settings: { + description: 'Prilagodite okruženje i podešavanja', + title: 'Podešavanja', + }, + trash: { + description: 'Vratite ili trajno obrišite uklonjene stavke', + title: 'Smeće', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Zatvori uređivač', + openActions: 'Otvori radnje', + openWorkspaces: 'Otvori radne prostore', + }, + items: { + home: 'Početna', + menu: 'Meni', + primary: 'Primarno', + settings: 'Podešavanja', + spaces: 'Prostori', + trash: 'Smeće', + workspaces: 'Radni prostori', + }, + }, + notes: { + actions: { + addCloze: 'Dodaj cloze', + deleteNote: 'Obriši belešku', + editNote: 'Uredi belešku', + hideDerivedCardsNote: 'Sakrij belešku o izvedenim karticama', + openNote: 'Otvori {{title}}', + saveNote: 'Sačuvaj belešku', + showDerivedCardsNote: 'Prikaži belešku o izvedenim karticama', + }, + descriptions: { + clozeFormat: 'Svaki skriveni deo postaje kartica za ponavljanje kada sačuvate.', + clozeFormatPrefix: 'Označite skriveni tekst pomoću', + derivedCardsHelper: 'Beleške su izvor istine za izvedene kartice.', + }, + dialogs: { + deleteNoteDescription: 'Ovo premešta "{{title}}" u Smeće. Možete je vratiti kasnije.', + deleteNoteFallbackDescription: 'Ovo premešta ovu belešku u Smeće. Možete je vratiti kasnije.', + deleteNoteFallbackTitle: 'Obrisati belešku?', + deleteNoteTitle: 'Obrisati "{{title}}"?', + }, + errors: { + couldNotCreateNote: 'Beleška nije mogla da se napravi', + couldNotDeleteNote: 'Beleška nije mogla da se obriše', + couldNotSaveNote: 'Beleška nije mogla da se sačuva', + noteCouldNotLoad: 'Beleška nije mogla da se učita', + }, + fields: { + back: 'Poleđina', + backPlaceholder: 'Unesite poleđinu', + bodyPlaceholder: 'Napišite sadržaj beleške sa cloze izostavljanjima…', + front: 'Prednja strana', + frontPlaceholder: 'Unesite prednju stranu', + noteBody: 'Sadržaj beleške', + title: 'Naslov', + titlePlaceholder: 'Dodajte naslov beleške', + untitledCloze: 'Cloze bez naslova', + untitledNote: 'Beleška bez naslova', + }, + labels: { + backUppercase: 'POLEĐINA', + basic: 'Osnovna', + basicLower: 'osnovna', + basicUppercase: 'OSNOVNA', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Cloze format', + clozeUppercase: 'CLOZE', + deck: 'Špil', + derivedCards: 'IZVEDENE KARTICE', + due: 'Rok', + frontUppercase: 'PREDNJA STRANA', + inProgress: 'U toku', + inProgressUppercase: 'U TOKU', + loadingNote: 'Učitavanje beleške', + loadingNoteEditor: 'Učitavanje uređivača beleški', + markdownFormatting: 'Markdown formatiranje', + mastered: 'Savladano', + masteredUppercase: 'SAVLADANO', + newNote: 'Nova beleška', + noteBody: 'SADRŽAJ BELEŠKE', + noteContent: 'Sadržaj beleške', + noteDetails: 'Detalji beleške', + noteMetadata: 'Metapodaci beleške', + noteType: 'Tip beleške', + notes: 'Beleške', + reviewed: 'Ponovljeno', + studyProgress: 'Napredak u učenju', + studyProgressUppercase: 'NAPREDAK U UČENJU', + titleUppercase: 'NASLOV', + updated: 'Ažurirano', + }, + sort: { + ariaLabel: 'Sortiraj beleške', + title: 'Naslov', + updated: 'Ažurirano', + }, + toolbar: { + bold: 'Podebljano', + italic: 'Kurziv', + link: 'Link', + list: 'Lista', + }, + }, + review: { + actions: { + again: 'Ponovo', + backToDeck: 'Nazad na špil', + continueReview: 'Nastavi ponavljanje', + easy: 'Lako', + good: 'Dobro', + hard: 'Teško', + newNote: 'Nova beleška', + showAnswer: 'Prikaži odgovor', + }, + errors: { + couldNotGradeCard: 'Kartica nije mogla da se oceni', + reviewCouldNotLoad: 'Ponavljanje nije moglo da se učita', + reviewCouldNotStart: 'Ponavljanje nije moglo da se pokrene', + summaryCouldNotLoad: 'Sažetak ponavljanja nije mogao da se učita', + summaryNotAvailable: 'Sažetak ponavljanja nije dostupan', + summaryNotComplete: 'Ovo ponavljanje još nije završeno.', + }, + labels: { + cardsReviewed: 'Ponovljene kartice', + deck: 'Špil', + duration: 'Trajanje', + loadingReview: 'Učitavanje ponavljanja', + loadingSummary: 'Učitavanje sažetka', + progress: 'Napredak ponavljanja', + review: 'Ponavljanje', + reviewComplete: 'Ponavljanje završeno', + reviewed_one: 'Ponovljena {{count}}', + reviewed_few: 'Ponovljene {{count}}', + reviewed_other: 'Ponovljeno {{count}}', + }, + summary: { + durationHoursMinutes: '{{hours}} h {{minutes}} min', + durationMinutes: '{{minutes}} min', + durationSeconds: '{{seconds}} s', + saved: 'Vaš napredak je sačuvan u ovom špilu.', + }, + unavailable: { + description: 'Dodajte belešku da bi ovaj špil mogao da uđe u red za ponavljanje.', + title: 'Nema kartica za ponavljanje', + }, + }, + search: { + actions: { + clearSearch: 'Obriši pretragu', + }, + empty: { + noMatchesInWorkspace: 'Nema rezultata u ovom radnom prostoru', + noMatchesInWorkspaceDescription: 'Nijedna fascikla, špil ili beleška ne odgovara upitu "{{query}}".', + }, + errors: { + couldNotComplete: 'Pretraga nije mogla da se završi', + }, + labels: { + results: 'Rezultati pretrage', + resultsFor: 'Rezultati za "{{query}}"', + searchingContent: 'Pretraga sadržaja', + }, + resultGroups: { + deck: 'Špilovi', + folder: 'Fascikle', + note: 'Beleške', + }, + resultKinds: { + deck: 'špil', + folder: 'fascikla', + note: 'beleška', + }, + }, + settings: { + actions: { + resetAll: 'Resetuj sva podešavanja', + resetSettings: 'Resetuj podešavanja', + resetToDefaults: 'Vrati podrazumevano', + }, + dialogs: { + fsrsErrorInvalidJson: 'Nalepite važeći JSON sa 21 numeričkom vrednošću.', + fsrsErrorInvalidParams_one: 'Unesite JSON niz sa tačno {{count}} konačnim brojem.', + fsrsErrorInvalidParams_few: 'Unesite JSON niz sa tačno {{count}} konačna broja.', + fsrsErrorInvalidParams_other: 'Unesite JSON niz sa tačno {{count}} konačnih brojeva.', + fsrsHelper: 'Ovo je stručno prepisivanje. Vrednosti moraju ostati redom.', + fsrsJsonLabel: 'JSON FSRS parametara', + fsrsTitle: 'Uredi FSRS parametre', + fsrsDescription: 'Nalepite JSON niz sa 21 brojem da zamenite težine planera.', + resetDescription: 'Ovo vraća vremensku zonu, ograničenja učenja i FSRS podešavanja.', + resetDescriptionWithLanguage: 'Ovo vraća jezik, vremensku zonu, ograničenja učenja i FSRS podešavanja.', + resetTitle: 'Resetovati sva podešavanja?', + timezoneDescription: 'Pretražite grad ili identifikator vremenske zone.', + timezoneSearchLabel: 'Pretraži vremenske zone', + timezoneSearchPlaceholder: 'Pretraži vremenske zone…', + timezoneTitle: 'Izaberite vremensku zonu', + }, + errors: { + couldNotResetSettings: 'Podešavanja nisu mogla da se resetuju', + couldNotSaveSettings: 'Podešavanja nisu mogla da se sačuvaju', + settingsCouldNotLoad: 'Podešavanja nisu mogla da se učitaju', + settingsUnavailable: 'Podešavanja nisu dostupna.', + }, + labels: { + appearance: 'Izgled', + automatic: 'Automatski', + fsrsParameters: 'FSRS parametri', + general: 'Opšte', + language: 'Jezik', + loadingSettings: 'Učitavanje podešavanja', + masteryHorizon: 'Horizont savladavanja', + newCardOrder: 'Redosled novih kartica', + newCardsPerDay: 'Nove kartice dnevno', + reviewCardsPerDay: 'Kartice za ponavljanje dnevno', + savingSettings: 'Čuvanje podešavanja', + schedule: 'Raspored', + searchNoTimezones: 'Nema odgovarajućih vremenskih zona.', + settings: 'Podešavanja', + settingsReset: 'Podešavanja su resetovana', + study: 'Učenje', + targetRecallProbability: 'Ciljna verovatnoća prisećanja', + theme: 'Tema', + timezone: 'Vremenska zona', + }, + options: { + languageEnUs: 'Engleski (SAD)', + newCardsAfterReviews: 'Posle ponavljanja', + newCardsBeforeReviews: 'Pre ponavljanja', + newCardsMixed: 'Mešano', + themeDark: 'Tamna', + themeLight: 'Svetla', + themeSystem: 'Sistem', + timezoneSystem: 'Koristi vremensku zonu sistema', + }, + rows: { + fsrsDescription: 'Težine stručnog modela', + languageDescription: 'Jezik interfejsa', + masteryHorizonDescription: 'Broj dana tokom kojih kartica mora ostati prisećiva na ciljnoj verovatnoći ili iznad nje da bi se računala kao savladana', + newCardOrderDescription: 'Redosled novih kartica u odnosu na ponavljanja', + newCardsPerDayDescription: 'Maksimalan broj novih kartica dnevno', + reviewCardsPerDayDescription: 'Maksimalan broj kartica za ponavljanje dnevno', + targetRecallProbabilityDescription: 'Minimalna verovatnoća prisećanja pri sledećem zakazanom ponavljanju', + timezoneDescription: 'Koristite automatsku vremensku zonu ili izaberite grad.', + }, + }, + trash: { + actions: { + deletePermanently: 'Obriši trajno', + empty: 'Isprazni', + emptyTrash: 'Isprazni smeće', + restore: 'Vrati', + restoringItem: 'Vraćanje {{title}}', + }, + dialogs: { + deleteItemDescription: 'Ovo trajno briše "{{title}}". To ne može da se poništi.', + deleteItemFallbackDescription: 'Ovo trajno briše ovu stavku. To ne može da se poništi.', + deleteItemFallbackTitle: 'Obrisati stavku?', + deleteItemTitle: 'Obrisati "{{title}}"?', + emptyTrashDescription: 'Ovo trajno briše sve iz Smeća. To ne može da se poništi.', + emptyTrashTitle: 'Isprazniti smeće?', + }, + empty: { + description: 'Stavke koje obrišete pojaviće se ovde pre trajnog uklanjanja.', + title: 'Smeće je prazno', + }, + errors: { + couldNotDeleteItem: 'Stavka nije mogla da se obriše', + couldNotEmptyTrash: 'Smeće nije moglo da se isprazni', + couldNotRestoreItem: 'Stavka nije mogla da se vrati', + trashCouldNotLoad: 'Smeće nije moglo da se učita', + trashMayBeOutOfDate: 'Smeće možda nije ažurno', + }, + labels: { + deletedAge: 'Obrisano {{value}}', + itemCount_one: '{{count}} stavka', + itemCount_few: '{{count}} stavke', + itemCount_other: '{{count}} stavki', + lastEmptied: 'Poslednje pražnjenje {{value}}', + loadingTrash: 'Učitavanje Smeća', + originalLocation: 'Originalna lokacija: {{location}}', + title: 'Smeće', + trashActions: 'Radnje u Smeću za {{title}}', + }, + kinds: { + deck: 'Špil', + folder: 'Fascikla', + note: 'Beleška', + workspace: 'Radni prostor', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Napravi radni prostor', + deleteWorkspace: 'Obriši radni prostor', + editWorkspace: 'Uredi radni prostor', + newWorkspace: 'Novi radni prostor', + openWorkspace: 'Otvori {{title}}', + openingWorkspace: 'Otvaranje {{title}}', + }, + descriptions: { + editorDefault: 'Kontekst učenja.', + editorVisual: 'Izaberite vizuelno sidro za ovaj radni prostor.', + emptyList: 'Odvojite špilove, beleške i redove za ponavljanje po kontekstu učenja.', + }, + dialogs: { + deleteWorkspaceDescription: 'Ovo premešta "{{title}}" u Smeće. Možete ga vratiti kasnije.', + deleteWorkspaceFallbackDescription: 'Ovo premešta ovaj radni prostor u Smeće. Možete ga vratiti kasnije.', + deleteWorkspaceFallbackTitle: 'Obrisati radni prostor?', + deleteWorkspaceTitle: 'Obrisati "{{title}}"?', + }, + empty: { + startWithWorkspace: 'Počnite sa radnim prostorom', + }, + errors: { + couldNotCreateWorkspace: 'Radni prostor nije mogao da se napravi', + couldNotDeleteWorkspace: 'Radni prostor nije mogao da se obriše', + couldNotOpenWorkspace: 'Radni prostor nije mogao da se otvori', + couldNotSaveWorkspace: 'Radni prostor nije mogao da se sačuva', + workspaceCouldNotLoad: 'Radni prostor nije mogao da se učita', + workspacesCouldNotLoad: 'Radni prostori nisu mogli da se učitaju', + }, + fields: { + descriptionLabel: 'Opis radnog prostora', + descriptionPlaceholder: 'Šta pripada ovom radnom prostoru?', + namePlaceholder: 'Naziv radnog prostora', + untitledWorkspace: 'Radni prostor bez naslova', + }, + labels: { + createWorkspaceTitle: 'Napravi radni prostor', + loadingWorkspaces: 'Učitavanje radnih prostora', + workspace: 'Radni prostor', + workspaces: 'Radni prostori', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/sv.ts b/ui/src/core/i18n/resources/sv.ts new file mode 100644 index 0000000..0204bd0 --- /dev/null +++ b/ui/src/core/i18n/resources/sv.ts @@ -0,0 +1,623 @@ +export const sv = { + bootstrap: { + error: { + fallbackMessage: 'Försök igen. Om det fortsätter att hända, öppna Clear igen.', + title: 'Kunde inte starta', + }, + loadingTitle: 'Förbereder din studieyta', + }, + common: { + actions: { + back: 'Tillbaka', + cancel: 'Avbryt', + checkAgain: 'Kontrollera igen', + close: 'Stäng', + create: 'Skapa', + delete: 'Ta bort', + dismissError: 'Stäng fel', + dismissStatus: 'Stäng status', + edit: 'Redigera', + itemActions: 'Åtgärder för {{title}}', + reset: 'Återställ', + review: 'Repetera', + save: 'Spara', + saveChanges: 'Spara ändringar', + tryAgain: 'Försök igen', + }, + labels: { + active: 'Aktiv', + clear: 'Clear', + custom: 'Anpassad', + default: 'Standard', + loadingEditor: 'Läser in redigerare', + name: 'Namn', + completedTask: 'Slutförd uppgift', + description: 'Beskrivning', + incompleteTask: 'Oslutförd uppgift', + percentageInput: '{{label}} procent', + visual: 'Visuell', + }, + status: { + actionFailed: 'Åtgärden misslyckades', + actionInProgress: 'Åtgärd pågår', + }, + sort: { + ascending: 'Stig.', + column: 'Kolumn', + descending: 'Fall.', + direction: 'Riktning', + sort: 'Sortera', + }, + search: { + label: 'Sök', + }, + visualPicker: { + allLucideIcons: 'Alla Lucide-ikoner', + browseIconsFor: 'Bläddra eller sök efter ikoner för {{label}}.', + chooseIcon: 'Välj ikon', + iconPicker: 'Ikonväljare för {{label}}', + iconSearch: 'Ikonsökning för {{label}}', + iconsCouldNotLoad: 'Ikonerna kunde inte läsas in.', + loadingIcons: 'Läser in ikoner', + loadingMoreIcons: 'Läser in fler ikoner', + moreIcons: 'Fler ikoner', + noIconsMatch: 'Inga ikoner matchar "{{query}}".', + searchIconsPlaceholder: 'Sök ikoner…', + selectedIcon: '{{label}} vald', + }, + }, + dashboard: { + actions: { + create: 'Skapa', + newDeck: 'Ny kortlek', + newFolder: 'Ny mapp', + }, + descriptions: { + defaultWorkspace: 'Håll kortlekar, mappar och anteckningar samlade.', + emptyWorkspace: 'Skapa en kortlek och lägg sedan till anteckningar för att bygga din repetitionskö.', + emptyFolder: 'Skapa en kortlek och lägg sedan till anteckningar för att bygga en repetitionskö.', + searchPlaceholder: 'Sök mappar, kortlekar och anteckningar…', + }, + empty: { + createFirstDeck: 'Skapa din första kortlek', + }, + errors: { + couldNotDeleteDeck: 'Kunde inte ta bort kortlek', + couldNotDeleteFolder: 'Kunde inte ta bort mapp', + couldNotDeleteWorkspace: 'Kunde inte ta bort arbetsyta', + dashboardCouldNotOpen: 'Instrumentpanelen kunde inte öppnas', + decksCouldNotLoad: 'Kortlekar kunde inte läsas in', + decksMayBeOutOfDate: 'Kortlekar kan vara inaktuella', + foldersCouldNotLoad: 'Mappar kunde inte läsas in', + foldersMayBeOutOfDate: 'Mappar kan vara inaktuella', + workspaceCouldNotLoad: 'Arbetsytan kunde inte läsas in', + }, + labels: { + dashboard: 'Instrumentpanel', + loadingDashboard: 'Läser in instrumentpanel', + newItem: 'Nytt objekt', + }, + }, + dates: { + absolute: { + unavailable: 'Datum saknas', + }, + age: { + dayAgo_one: '{{count}} dag sedan', + dayAgo_other: '{{count}} dagar sedan', + hourAgo_one: '{{count}} timme sedan', + hourAgo_other: '{{count}} timmar sedan', + justNow: 'nyss', + minuteAgo_one: '{{count}} minut sedan', + minuteAgo_other: '{{count}} minuter sedan', + unavailable: 'datum saknas', + weekAgo_one: '{{count}} vecka sedan', + weekAgo_other: '{{count}} veckor sedan', + }, + labels: { + deleted: 'Borttaget {{value}}', + due: 'Förfaller: {{value}}', + reviewed: 'Repeterat: {{value}}', + updated: 'Uppdaterat {{value}}', + updatedUppercase: 'UPPDATERAT {{value}}', + }, + relative: { + dayAgo_one: '{{count}} dag sedan', + dayAgo_other: '{{count}} dagar sedan', + inAMoment: 'Om ett ögonblick', + inDay_one: 'Om {{count}} dag', + inDay_other: 'Om {{count}} dagar', + inMonth_one: 'Om {{count}} månad', + inMonth_other: 'Om {{count}} månader', + inWeek_one: 'Om {{count}} vecka', + inWeek_other: 'Om {{count}} veckor', + justNow: 'Nyss', + monthAgo_one: '{{count}} månad sedan', + monthAgo_other: '{{count}} månader sedan', + secondsAgoShort: '{{count}} s sedan', + minutesAgoShort: '{{count}} min sedan', + hoursAgoShort: '{{count}} h sedan', + today: 'I dag', + tomorrow: 'I morgon', + weekAgo_one: '{{count}} vecka sedan', + weekAgo_other: '{{count}} veckor sedan', + yesterday: 'I går', + }, + }, + decks: { + actions: { + actionMenu: 'Åtgärder för {{title}}', + createDeck: 'Skapa kortlek', + createNote: 'Skapa anteckning', + deleteDeck: 'Ta bort kortlek', + editDeck: 'Redigera kortlek', + newNote: 'Ny anteckning', + openDeck: 'Öppna kortleken {{title}}', + saveDeck: 'Kunde inte spara kortlek', + studyNow: 'Studera nu', + }, + descriptions: { + emptyDeck: 'Lägg till en anteckning så att kortleken har material att repetera.', + editorDefault: 'Fokuserad studiekortlek.', + editorVisual: 'Välj en omslagsikon för den här kortleken.', + notesSearchPlaceholder: 'Sök anteckningar…', + }, + dialogs: { + deleteDeckDescription: 'Detta flyttar "{{title}}" till Papperskorgen. Du kan återställa den senare.', + deleteDeckFallbackDescription: 'Detta flyttar den här kortleken till Papperskorgen. Du kan återställa den senare.', + deleteDeckFallbackTitle: 'Ta bort kortlek?', + deleteDeckTitle: 'Ta bort "{{title}}"?', + deleteNoteDescription: 'Detta flyttar "{{title}}" till Papperskorgen. Du kan återställa den senare.', + deleteNoteFallbackTitle: 'Ta bort anteckning?', + deleteNoteTitle: 'Ta bort "{{title}}"?', + }, + empty: { + noMatchingNotes: 'Inga matchande anteckningar', + noMatchingNotesDescription: 'Inga anteckningar matchade "{{query}}".', + thisDeckIsEmpty: 'Den här kortleken är tom', + }, + errors: { + couldNotCreateDeck: 'Kunde inte skapa kortlek', + couldNotDeleteDeck: 'Kunde inte ta bort kortlek', + couldNotDeleteNote: 'Kunde inte ta bort anteckning', + couldNotLoadFolderPath: 'Kunde inte läsa in mappsökväg', + couldNotSaveDeck: 'Kunde inte spara kortlek', + deckCouldNotLoad: 'Kortleken kunde inte läsas in', + notesCouldNotLoad: 'Anteckningar kunde inte läsas in', + notesMayBeOutOfDate: 'Anteckningar kan vara inaktuella', + }, + fields: { + descriptionLabel: 'Kortleksbeskrivning', + descriptionPlaceholder: 'Vad hjälper den här kortleken dig att repetera?', + namePlaceholder: 'Kortleksnamn', + untitledDeck: 'Namnlös kortlek', + untitledDeckLower: 'namnlös kortlek', + }, + labels: { + createDeckTitle: 'Skapa kortlek', + deck: 'Kortlek', + deckNotesSearch: 'Sök anteckningar i kortlek', + deckOverview: 'Kortleksöversikt', + decks: 'Kortlekar', + due: 'Förfaller', + dueToday: 'Förfaller i dag', + loadingDeck: 'Läser in kortlek', + mastery: 'Behärskning', + notes: 'Anteckningar', + }, + sort: { + ariaLabel: 'Sortera kortlekar', + dueToday: 'Förfaller i dag', + title: 'Titel', + updated: 'Uppdaterad', + }, + }, + errors: { + byType: { + conflict: 'Datan ändrades. Uppdatera och försök igen.', + forbidden: 'Du har inte behörighet att göra detta.', + notFound: 'Vi kunde inte hitta det här objektet.', + offline: 'Kan inte nå tjänsten.', + timeout: 'Detta tog för lång tid. Försök igen.', + unauthorized: 'Logga in för att fortsätta.', + unavailable: 'Tjänsten är tillfälligt otillgänglig.', + }, + fallback: { + unexpected: 'Oväntat fel', + }, + }, + folders: { + actions: { + createFolder: 'Skapa mapp', + deleteFolder: 'Ta bort mapp', + editFolder: 'Redigera mapp', + }, + descriptions: { + editorDefault: 'Mapp för relaterade kortlekar.', + }, + dialogs: { + deleteFolderDescription: 'Detta flyttar "{{name}}" till Papperskorgen. Du kan återställa den senare.', + deleteFolderFallbackDescription: 'Detta flyttar den här mappen till Papperskorgen. Du kan återställa den senare.', + deleteFolderFallbackTitle: 'Ta bort mapp?', + deleteFolderTitle: 'Ta bort "{{name}}"?', + }, + empty: { + noMatchesInFolder: 'Inga träffar i den här mappen', + noMatchesInFolderDescription: 'Inga mappar, kortlekar eller anteckningar matchade "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'Kunde inte skapa mapp', + couldNotDeleteFolder: 'Kunde inte ta bort mapp', + couldNotLoadFolderPath: 'Kunde inte läsa in mappsökväg', + couldNotSaveFolder: 'Kunde inte spara mapp', + folderCouldNotLoad: 'Mappen kunde inte läsas in', + }, + fields: { + descriptionLabel: 'Mappbeskrivning', + descriptionPlaceholder: 'Vad hör hemma i den här mappen?', + namePlaceholder: 'Mappnamn', + untitledFolder: 'Namnlös mapp', + }, + labels: { + createFolderTitle: 'Skapa mapp', + folder: 'Mapp', + folders: 'Mappar', + loadingFolder: 'Läser in mapp', + name: 'Namn', + updated: 'Uppdaterad', + }, + sort: { + ariaLabel: 'Sortera mappar', + name: 'Namn', + updated: 'Uppdaterad', + }, + }, + menu: { + conflicts: { + description: 'Om lokal och synkroniserad data skiljer sig åt visas objektet här.', + heading: 'Synkroniseringsstatus', + title: 'Konflikter', + noConflicts: 'Inga konflikter hittades', + }, + labels: { + menu: 'Meny', + }, + sections: { + settings: { + description: 'Anpassa din miljö och dina inställningar', + title: 'Inställningar', + }, + trash: { + description: 'Återställ eller ta bort borttagna objekt permanent', + title: 'Papperskorg', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Stäng redigerare', + openActions: 'Öppna åtgärder', + openWorkspaces: 'Öppna arbetsytor', + }, + items: { + home: 'Hem', + menu: 'Meny', + primary: 'Primär', + settings: 'Inställningar', + spaces: 'Ytor', + trash: 'Papperskorg', + workspaces: 'Arbetsytor', + }, + }, + notes: { + actions: { + addCloze: 'Lägg till cloze', + deleteNote: 'Ta bort anteckning', + editNote: 'Redigera anteckning', + hideDerivedCardsNote: 'Dölj anteckning om härledda kort', + openNote: 'Öppna {{title}}', + saveNote: 'Spara anteckning', + showDerivedCardsNote: 'Visa anteckning om härledda kort', + }, + descriptions: { + clozeFormat: 'Varje dold del blir ett repetitionskort när du sparar.', + clozeFormatPrefix: 'Omslut dold text med', + derivedCardsHelper: 'Anteckningar är källan till sanning för härledda kort.', + }, + dialogs: { + deleteNoteDescription: 'Detta flyttar "{{title}}" till Papperskorgen. Du kan återställa den senare.', + deleteNoteFallbackDescription: 'Detta flyttar den här anteckningen till Papperskorgen. Du kan återställa den senare.', + deleteNoteFallbackTitle: 'Ta bort anteckning?', + deleteNoteTitle: 'Ta bort "{{title}}"?', + }, + errors: { + couldNotCreateNote: 'Kunde inte skapa anteckning', + couldNotDeleteNote: 'Kunde inte ta bort anteckning', + couldNotSaveNote: 'Kunde inte spara anteckning', + noteCouldNotLoad: 'Anteckningen kunde inte läsas in', + }, + fields: { + back: 'Baksida', + backPlaceholder: 'Ange baksida', + bodyPlaceholder: 'Skriv anteckningens innehåll med cloze-borttagningar…', + front: 'Framsida', + frontPlaceholder: 'Ange framsida', + noteBody: 'Anteckningens innehåll', + title: 'Titel', + titlePlaceholder: 'Lägg till en anteckningstitel', + untitledCloze: 'Namnlös cloze', + untitledNote: 'Namnlös anteckning', + }, + labels: { + backUppercase: 'BAKSIDA', + basic: 'Grundläggande', + basicLower: 'grundläggande', + basicUppercase: 'GRUNDLÄGGANDE', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Cloze-format', + clozeUppercase: 'CLOZE', + deck: 'Kortlek', + derivedCards: 'HÄRLEDDA KORT', + due: 'Förfaller', + frontUppercase: 'FRAMSIDA', + inProgress: 'Pågår', + inProgressUppercase: 'PÅGÅR', + loadingNote: 'Läser in anteckning', + loadingNoteEditor: 'Läser in anteckningsredigerare', + markdownFormatting: 'Markdown-formatering', + mastered: 'Behärskad', + masteredUppercase: 'BEHÄRSKAD', + newNote: 'Ny anteckning', + noteBody: 'ANTECKNINGENS INNEHÅLL', + noteContent: 'Anteckningsinnehåll', + noteDetails: 'Anteckningsdetaljer', + noteMetadata: 'Anteckningsmetadata', + noteType: 'Anteckningstyp', + notes: 'Anteckningar', + reviewed: 'Repeterad', + studyProgress: 'Studieframsteg', + studyProgressUppercase: 'STUDIEFRAMSTEG', + titleUppercase: 'TITEL', + updated: 'Uppdaterad', + }, + sort: { + ariaLabel: 'Sortera anteckningar', + title: 'Titel', + updated: 'Uppdaterad', + }, + toolbar: { + bold: 'Fet', + italic: 'Kursiv', + link: 'Länk', + list: 'Lista', + }, + }, + review: { + actions: { + again: 'Igen', + backToDeck: 'Tillbaka till kortlek', + continueReview: 'Fortsätt repetition', + easy: 'Lätt', + good: 'Bra', + hard: 'Svår', + newNote: 'Ny anteckning', + showAnswer: 'Visa svar', + }, + errors: { + couldNotGradeCard: 'Kunde inte betygsätta kort', + reviewCouldNotLoad: 'Repetition kunde inte läsas in', + reviewCouldNotStart: 'Repetition kunde inte startas', + summaryCouldNotLoad: 'Repetitionssammanfattning kunde inte läsas in', + summaryNotAvailable: 'Repetitionssammanfattning är inte tillgänglig', + summaryNotComplete: 'Den här repetitionen är inte klar än.', + }, + labels: { + cardsReviewed: 'Repeterade kort', + deck: 'Kortlek', + duration: 'Varaktighet', + loadingReview: 'Läser in repetition', + loadingSummary: 'Läser in sammanfattning', + progress: 'Repetitionsframsteg', + review: 'Repetition', + reviewComplete: 'Repetition slutförd', + reviewed_one: 'Repeterat {{count}}', + reviewed_other: 'Repeterat {{count}}', + }, + summary: { + durationHoursMinutes: '{{hours}} h {{minutes}} min', + durationMinutes: '{{minutes}} min', + durationSeconds: '{{seconds}} s', + saved: 'Dina framsteg sparades i den här kortleken.', + }, + unavailable: { + description: 'Lägg till en anteckning så att kortleken kan hamna i repetitionskön.', + title: 'Inga kort att repetera', + }, + }, + search: { + actions: { + clearSearch: 'Rensa sökning', + }, + empty: { + noMatchesInWorkspace: 'Inga träffar i den här arbetsytan', + noMatchesInWorkspaceDescription: 'Inga mappar, kortlekar eller anteckningar matchade "{{query}}".', + }, + errors: { + couldNotComplete: 'Sökningen kunde inte slutföras', + }, + labels: { + results: 'Sökresultat', + resultsFor: 'Resultat för "{{query}}"', + searchingContent: 'Söker innehåll', + }, + resultGroups: { + deck: 'Kortlekar', + folder: 'Mappar', + note: 'Anteckningar', + }, + resultKinds: { + deck: 'kortlek', + folder: 'mapp', + note: 'anteckning', + }, + }, + settings: { + actions: { + resetAll: 'Återställ alla inställningar', + resetSettings: 'Återställ inställningar', + resetToDefaults: 'Återställ standardvärden', + }, + dialogs: { + fsrsErrorInvalidJson: 'Klistra in giltig JSON med 21 numeriska värden.', + fsrsErrorInvalidParams_one: 'Ange en JSON-array med exakt {{count}} ändligt tal.', + fsrsErrorInvalidParams_other: 'Ange en JSON-array med exakt {{count}} ändliga tal.', + fsrsHelper: 'Detta är en expertåsidosättning. Värdena måste behålla ordningen.', + fsrsJsonLabel: 'FSRS-parametrar JSON', + fsrsTitle: 'Redigera FSRS-parametrar', + fsrsDescription: 'Klistra in en JSON-array med 21 tal för att åsidosätta scheduler-vikterna.', + resetDescription: 'Detta återställer tidszon, studiegränser och FSRS-inställningar.', + resetDescriptionWithLanguage: 'Detta återställer språk, tidszon, studiegränser och FSRS-inställningar.', + resetTitle: 'Återställa alla inställningar?', + timezoneDescription: 'Sök efter en stad eller tidszonsidentifierare.', + timezoneSearchLabel: 'Sök tidszoner', + timezoneSearchPlaceholder: 'Sök tidszoner…', + timezoneTitle: 'Välj tidszon', + }, + errors: { + couldNotResetSettings: 'Kunde inte återställa inställningar', + couldNotSaveSettings: 'Kunde inte spara inställningar', + settingsCouldNotLoad: 'Inställningar kunde inte läsas in', + settingsUnavailable: 'Inställningar är inte tillgängliga.', + }, + labels: { + appearance: 'Utseende', + automatic: 'Automatisk', + fsrsParameters: 'FSRS-parametrar', + general: 'Allmänt', + language: 'Språk', + loadingSettings: 'Läser in inställningar', + masteryHorizon: 'Behärskningshorisont', + newCardOrder: 'Ordning för nya kort', + newCardsPerDay: 'Nya kort per dag', + reviewCardsPerDay: 'Repetitionskort per dag', + savingSettings: 'Sparar inställningar', + schedule: 'Schema', + searchNoTimezones: 'Inga matchande tidszoner.', + settings: 'Inställningar', + settingsReset: 'Inställningar återställda', + study: 'Studier', + targetRecallProbability: 'Målsannolikhet för återkallelse', + theme: 'Tema', + timezone: 'Tidszon', + }, + options: { + languageEnUs: 'Engelska (USA)', + newCardsAfterReviews: 'Efter repetitioner', + newCardsBeforeReviews: 'Före repetitioner', + newCardsMixed: 'Blandat', + themeDark: 'Mörkt', + themeLight: 'Ljust', + themeSystem: 'System', + timezoneSystem: 'Använd systemets tidszon', + }, + rows: { + fsrsDescription: 'Expertmodellens vikter', + languageDescription: 'Gränssnittsspråk', + masteryHorizonDescription: 'Antal dagar ett kort måste vara återkalleligt vid eller över målsannolikheten för att räknas som behärskat', + newCardOrderDescription: 'Ordning för nya kort relativt repetitioner', + newCardsPerDayDescription: 'Maximalt antal nya kort per dag', + reviewCardsPerDayDescription: 'Maximalt antal repetitionskort per dag', + targetRecallProbabilityDescription: 'Minsta sannolikhet för återkallelse vid nästa schemalagda repetition', + timezoneDescription: 'Använd automatisk tidszon eller välj en stad.', + }, + }, + trash: { + actions: { + deletePermanently: 'Ta bort permanent', + empty: 'Töm', + emptyTrash: 'Töm papperskorg', + restore: 'Återställ', + restoringItem: 'Återställer {{title}}', + }, + dialogs: { + deleteItemDescription: 'Detta tar bort "{{title}}" permanent. Det kan inte ångras.', + deleteItemFallbackDescription: 'Detta tar bort objektet permanent. Det kan inte ångras.', + deleteItemFallbackTitle: 'Ta bort objekt?', + deleteItemTitle: 'Ta bort "{{title}}"?', + emptyTrashDescription: 'Detta tar bort allt i Papperskorgen permanent. Det kan inte ångras.', + emptyTrashTitle: 'Tömma papperskorgen?', + }, + empty: { + description: 'Objekt du tar bort visas här innan de tas bort permanent.', + title: 'Papperskorgen är tom', + }, + errors: { + couldNotDeleteItem: 'Kunde inte ta bort objekt', + couldNotEmptyTrash: 'Kunde inte tömma Papperskorgen', + couldNotRestoreItem: 'Kunde inte återställa objekt', + trashCouldNotLoad: 'Papperskorgen kunde inte läsas in', + trashMayBeOutOfDate: 'Papperskorgen kan vara inaktuell', + }, + labels: { + deletedAge: 'Borttaget {{value}}', + itemCount_one: '{{count}} objekt', + itemCount_other: '{{count}} objekt', + lastEmptied: 'Senast tömd {{value}}', + loadingTrash: 'Läser in Papperskorgen', + originalLocation: 'Ursprunglig plats: {{location}}', + title: 'Papperskorg', + trashActions: 'Papperskorgsåtgärder för {{title}}', + }, + kinds: { + deck: 'Kortlek', + folder: 'Mapp', + note: 'Anteckning', + workspace: 'Arbetsyta', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Skapa arbetsyta', + deleteWorkspace: 'Ta bort arbetsyta', + editWorkspace: 'Redigera arbetsyta', + newWorkspace: 'Ny arbetsyta', + openWorkspace: 'Öppna {{title}}', + openingWorkspace: 'Öppnar {{title}}', + }, + descriptions: { + editorDefault: 'Studiekontext.', + editorVisual: 'Välj ett visuellt ankare för den här arbetsytan.', + emptyList: 'Separera kortlekar, anteckningar och repetitionsköer efter studiekontext.', + }, + dialogs: { + deleteWorkspaceDescription: 'Detta flyttar "{{title}}" till Papperskorgen. Du kan återställa den senare.', + deleteWorkspaceFallbackDescription: 'Detta flyttar den här arbetsytan till Papperskorgen. Du kan återställa den senare.', + deleteWorkspaceFallbackTitle: 'Ta bort arbetsyta?', + deleteWorkspaceTitle: 'Ta bort "{{title}}"?', + }, + empty: { + startWithWorkspace: 'Börja med en arbetsyta', + }, + errors: { + couldNotCreateWorkspace: 'Kunde inte skapa arbetsyta', + couldNotDeleteWorkspace: 'Kunde inte ta bort arbetsyta', + couldNotOpenWorkspace: 'Kunde inte öppna arbetsyta', + couldNotSaveWorkspace: 'Kunde inte spara arbetsyta', + workspaceCouldNotLoad: 'Arbetsytan kunde inte läsas in', + workspacesCouldNotLoad: 'Arbetsytor kunde inte läsas in', + }, + fields: { + descriptionLabel: 'Beskrivning av arbetsyta', + descriptionPlaceholder: 'Vad hör hemma i den här arbetsytan?', + namePlaceholder: 'Namn på arbetsyta', + untitledWorkspace: 'Namnlös arbetsyta', + }, + labels: { + createWorkspaceTitle: 'Skapa arbetsyta', + loadingWorkspaces: 'Läser in arbetsytor', + workspace: 'Arbetsyta', + workspaces: 'Arbetsytor', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/th.ts b/ui/src/core/i18n/resources/th.ts new file mode 100644 index 0000000..477695a --- /dev/null +++ b/ui/src/core/i18n/resources/th.ts @@ -0,0 +1,623 @@ +export const th = { + bootstrap: { + error: { + fallbackMessage: 'ลองอีกครั้ง หากยังเกิดขึ้นอยู่ ให้เปิด Clear ใหม่', + title: 'ไม่สามารถเริ่มต้นได้', + }, + loadingTitle: 'กำลังเตรียมพื้นที่เรียนของคุณ', + }, + common: { + actions: { + back: 'กลับ', + cancel: 'ยกเลิก', + checkAgain: 'ตรวจสอบอีกครั้ง', + close: 'ปิด', + create: 'สร้าง', + delete: 'ลบ', + dismissError: 'ปิดข้อผิดพลาด', + dismissStatus: 'ปิดสถานะ', + edit: 'แก้ไข', + itemActions: 'การทำงานของ {{title}}', + reset: 'รีเซ็ต', + review: 'ทบทวน', + save: 'บันทึก', + saveChanges: 'บันทึกการเปลี่ยนแปลง', + tryAgain: 'ลองอีกครั้ง', + }, + labels: { + active: 'ใช้งานอยู่', + clear: 'Clear', + custom: 'กำหนดเอง', + default: 'ค่าเริ่มต้น', + loadingEditor: 'กำลังโหลดตัวแก้ไข', + name: 'ชื่อ', + completedTask: 'งานที่เสร็จแล้ว', + description: 'คำอธิบาย', + incompleteTask: 'งานที่ยังไม่เสร็จ', + percentageInput: 'เปอร์เซ็นต์ของ {{label}}', + visual: 'ภาพ', + }, + status: { + actionFailed: 'การทำงานล้มเหลว', + actionInProgress: 'กำลังดำเนินการ', + }, + sort: { + ascending: 'น้อยไปมาก', + column: 'คอลัมน์', + descending: 'มากไปน้อย', + direction: 'ทิศทาง', + sort: 'เรียงลำดับ', + }, + search: { + label: 'ค้นหา', + }, + visualPicker: { + allLucideIcons: 'ไอคอน Lucide ทั้งหมด', + browseIconsFor: 'เรียกดูหรือค้นหาไอคอนสำหรับ {{label}}', + chooseIcon: 'เลือกไอคอน', + iconPicker: 'ตัวเลือกไอคอนสำหรับ {{label}}', + iconSearch: 'ค้นหาไอคอนสำหรับ {{label}}', + iconsCouldNotLoad: 'ไม่สามารถโหลดไอคอนได้', + loadingIcons: 'กำลังโหลดไอคอน', + loadingMoreIcons: 'กำลังโหลดไอคอนเพิ่มเติม', + moreIcons: 'ไอคอนเพิ่มเติม', + noIconsMatch: 'ไม่มีไอคอนที่ตรงกับ "{{query}}"', + searchIconsPlaceholder: 'ค้นหาไอคอน…', + selectedIcon: 'เลือก {{label}} แล้ว', + }, + }, + dashboard: { + actions: { + create: 'สร้าง', + newDeck: 'สำรับใหม่', + newFolder: 'โฟลเดอร์ใหม่', + }, + descriptions: { + defaultWorkspace: 'เก็บสำรับ โฟลเดอร์ และโน้ตไว้ด้วยกัน', + emptyWorkspace: 'สร้างสำรับ แล้วเพิ่มโน้ตเพื่อสร้างคิวทบทวนของคุณ', + emptyFolder: 'สร้างสำรับ แล้วเพิ่มโน้ตเพื่อสร้างคิวทบทวน', + searchPlaceholder: 'ค้นหาโฟลเดอร์ สำรับ และโน้ต…', + }, + empty: { + createFirstDeck: 'สร้างสำรับแรกของคุณ', + }, + errors: { + couldNotDeleteDeck: 'ไม่สามารถลบสำรับได้', + couldNotDeleteFolder: 'ไม่สามารถลบโฟลเดอร์ได้', + couldNotDeleteWorkspace: 'ไม่สามารถลบพื้นที่ทำงานได้', + dashboardCouldNotOpen: 'ไม่สามารถเปิดแดชบอร์ดได้', + decksCouldNotLoad: 'ไม่สามารถโหลดสำรับได้', + decksMayBeOutOfDate: 'สำรับอาจล้าสมัย', + foldersCouldNotLoad: 'ไม่สามารถโหลดโฟลเดอร์ได้', + foldersMayBeOutOfDate: 'โฟลเดอร์อาจล้าสมัย', + workspaceCouldNotLoad: 'ไม่สามารถโหลดพื้นที่ทำงานได้', + }, + labels: { + dashboard: 'แดชบอร์ด', + loadingDashboard: 'กำลังโหลดแดชบอร์ด', + newItem: 'รายการใหม่', + }, + }, + dates: { + absolute: { + unavailable: 'ไม่มีวันที่', + }, + age: { + dayAgo_one: '{{count}} วันที่แล้ว', + dayAgo_other: '{{count}} วันที่แล้ว', + hourAgo_one: '{{count}} ชั่วโมงที่แล้ว', + hourAgo_other: '{{count}} ชั่วโมงที่แล้ว', + justNow: 'เมื่อสักครู่', + minuteAgo_one: '{{count}} นาทีที่แล้ว', + minuteAgo_other: '{{count}} นาทีที่แล้ว', + unavailable: 'ไม่มีวันที่', + weekAgo_one: '{{count}} สัปดาห์ที่แล้ว', + weekAgo_other: '{{count}} สัปดาห์ที่แล้ว', + }, + labels: { + deleted: 'ลบแล้ว {{value}}', + due: 'ครบกำหนด: {{value}}', + reviewed: 'ทบทวนแล้ว: {{value}}', + updated: 'อัปเดตแล้ว {{value}}', + updatedUppercase: 'อัปเดตแล้ว {{value}}', + }, + relative: { + dayAgo_one: '{{count}} วันที่แล้ว', + dayAgo_other: '{{count}} วันที่แล้ว', + inAMoment: 'อีกสักครู่', + inDay_one: 'อีก {{count}} วัน', + inDay_other: 'อีก {{count}} วัน', + inMonth_one: 'อีก {{count}} เดือน', + inMonth_other: 'อีก {{count}} เดือน', + inWeek_one: 'อีก {{count}} สัปดาห์', + inWeek_other: 'อีก {{count}} สัปดาห์', + justNow: 'เมื่อสักครู่', + monthAgo_one: '{{count}} เดือนที่แล้ว', + monthAgo_other: '{{count}} เดือนที่แล้ว', + secondsAgoShort: '{{count}} วิที่แล้ว', + minutesAgoShort: '{{count}} นาทีที่แล้ว', + hoursAgoShort: '{{count}} ชม.ที่แล้ว', + today: 'วันนี้', + tomorrow: 'พรุ่งนี้', + weekAgo_one: '{{count}} สัปดาห์ที่แล้ว', + weekAgo_other: '{{count}} สัปดาห์ที่แล้ว', + yesterday: 'เมื่อวาน', + }, + }, + decks: { + actions: { + actionMenu: 'การทำงานของ {{title}}', + createDeck: 'สร้างสำรับ', + createNote: 'สร้างโน้ต', + deleteDeck: 'ลบสำรับ', + editDeck: 'แก้ไขสำรับ', + newNote: 'โน้ตใหม่', + openDeck: 'เปิดสำรับ {{title}}', + saveDeck: 'ไม่สามารถบันทึกสำรับได้', + studyNow: 'เรียนตอนนี้', + }, + descriptions: { + emptyDeck: 'เพิ่มโน้ตเพื่อให้สำรับนี้มีเนื้อหาสำหรับทบทวน', + editorDefault: 'สำรับเรียนแบบโฟกัส', + editorVisual: 'เลือกสัญลักษณ์หน้าปกสำหรับสำรับนี้', + notesSearchPlaceholder: 'ค้นหาโน้ต…', + }, + dialogs: { + deleteDeckDescription: 'การทำงานนี้จะย้าย "{{title}}" ไปที่ถังขยะ คุณสามารถกู้คืนได้ภายหลัง', + deleteDeckFallbackDescription: 'การทำงานนี้จะย้ายสำรับนี้ไปที่ถังขยะ คุณสามารถกู้คืนได้ภายหลัง', + deleteDeckFallbackTitle: 'ลบสำรับหรือไม่', + deleteDeckTitle: 'ลบ "{{title}}" หรือไม่', + deleteNoteDescription: 'การทำงานนี้จะย้าย "{{title}}" ไปที่ถังขยะ คุณสามารถกู้คืนได้ภายหลัง', + deleteNoteFallbackTitle: 'ลบโน้ตหรือไม่', + deleteNoteTitle: 'ลบ "{{title}}" หรือไม่', + }, + empty: { + noMatchingNotes: 'ไม่มีโน้ตที่ตรงกัน', + noMatchingNotesDescription: 'ไม่มีโน้ตที่ตรงกับ "{{query}}"', + thisDeckIsEmpty: 'สำรับนี้ว่างเปล่า', + }, + errors: { + couldNotCreateDeck: 'ไม่สามารถสร้างสำรับได้', + couldNotDeleteDeck: 'ไม่สามารถลบสำรับได้', + couldNotDeleteNote: 'ไม่สามารถลบโน้ตได้', + couldNotLoadFolderPath: 'ไม่สามารถโหลดเส้นทางโฟลเดอร์ได้', + couldNotSaveDeck: 'ไม่สามารถบันทึกสำรับได้', + deckCouldNotLoad: 'ไม่สามารถโหลดสำรับได้', + notesCouldNotLoad: 'ไม่สามารถโหลดโน้ตได้', + notesMayBeOutOfDate: 'โน้ตอาจล้าสมัย', + }, + fields: { + descriptionLabel: 'คำอธิบายสำรับ', + descriptionPlaceholder: 'สำรับนี้จะช่วยคุณทบทวนอะไร', + namePlaceholder: 'ชื่อสำรับ', + untitledDeck: 'สำรับไม่มีชื่อ', + untitledDeckLower: 'สำรับไม่มีชื่อ', + }, + labels: { + createDeckTitle: 'สร้างสำรับ', + deck: 'สำรับ', + deckNotesSearch: 'ค้นหาโน้ตในสำรับ', + deckOverview: 'ภาพรวมสำรับ', + decks: 'สำรับ', + due: 'ครบกำหนด', + dueToday: 'ครบกำหนดวันนี้', + loadingDeck: 'กำลังโหลดสำรับ', + mastery: 'ความเชี่ยวชาญ', + notes: 'โน้ต', + }, + sort: { + ariaLabel: 'เรียงลำดับสำรับ', + dueToday: 'ครบกำหนดวันนี้', + title: 'ชื่อเรื่อง', + updated: 'อัปเดตแล้ว', + }, + }, + errors: { + byType: { + conflict: 'ข้อมูลมีการเปลี่ยนแปลง รีเฟรชแล้วลองอีกครั้ง', + forbidden: 'คุณไม่มีสิทธิ์ทำสิ่งนี้', + notFound: 'เราไม่พบรายการนี้', + offline: 'ไม่สามารถติดต่อบริการได้', + timeout: 'ใช้เวลานานเกินไป ลองอีกครั้ง', + unauthorized: 'ลงชื่อเข้าใช้เพื่อดำเนินการต่อ', + unavailable: 'บริการไม่พร้อมใช้งานชั่วคราว', + }, + fallback: { + unexpected: 'ข้อผิดพลาดที่ไม่คาดคิด', + }, + }, + folders: { + actions: { + createFolder: 'สร้างโฟลเดอร์', + deleteFolder: 'ลบโฟลเดอร์', + editFolder: 'แก้ไขโฟลเดอร์', + }, + descriptions: { + editorDefault: 'โฟลเดอร์สำหรับสำรับที่เกี่ยวข้องกัน', + }, + dialogs: { + deleteFolderDescription: 'การทำงานนี้จะย้าย "{{name}}" ไปที่ถังขยะ คุณสามารถกู้คืนได้ภายหลัง', + deleteFolderFallbackDescription: 'การทำงานนี้จะย้ายโฟลเดอร์นี้ไปที่ถังขยะ คุณสามารถกู้คืนได้ภายหลัง', + deleteFolderFallbackTitle: 'ลบโฟลเดอร์หรือไม่', + deleteFolderTitle: 'ลบ "{{name}}" หรือไม่', + }, + empty: { + noMatchesInFolder: 'ไม่มีรายการที่ตรงกันในโฟลเดอร์นี้', + noMatchesInFolderDescription: 'ไม่มีโฟลเดอร์ สำรับ หรือโน้ตที่ตรงกับ "{{query}}"', + }, + errors: { + couldNotCreateFolder: 'ไม่สามารถสร้างโฟลเดอร์ได้', + couldNotDeleteFolder: 'ไม่สามารถลบโฟลเดอร์ได้', + couldNotLoadFolderPath: 'ไม่สามารถโหลดเส้นทางโฟลเดอร์ได้', + couldNotSaveFolder: 'ไม่สามารถบันทึกโฟลเดอร์ได้', + folderCouldNotLoad: 'ไม่สามารถโหลดโฟลเดอร์ได้', + }, + fields: { + descriptionLabel: 'คำอธิบายโฟลเดอร์', + descriptionPlaceholder: 'อะไรอยู่ในโฟลเดอร์นี้', + namePlaceholder: 'ชื่อโฟลเดอร์', + untitledFolder: 'โฟลเดอร์ไม่มีชื่อ', + }, + labels: { + createFolderTitle: 'สร้างโฟลเดอร์', + folder: 'โฟลเดอร์', + folders: 'โฟลเดอร์', + loadingFolder: 'กำลังโหลดโฟลเดอร์', + name: 'ชื่อ', + updated: 'อัปเดตแล้ว', + }, + sort: { + ariaLabel: 'เรียงลำดับโฟลเดอร์', + name: 'ชื่อ', + updated: 'อัปเดตแล้ว', + }, + }, + menu: { + conflicts: { + description: 'หากข้อมูลในเครื่องและข้อมูลที่ซิงค์ไม่ตรงกัน รายการจะปรากฏที่นี่', + heading: 'สถานะการซิงค์', + title: 'ข้อขัดแย้ง', + noConflicts: 'ไม่พบข้อขัดแย้ง', + }, + labels: { + menu: 'เมนู', + }, + sections: { + settings: { + description: 'ปรับแต่งสภาพแวดล้อมและค่ากำหนดของคุณ', + title: 'การตั้งค่า', + }, + trash: { + description: 'กู้คืนหรือลบรายการที่ถูกลบอย่างถาวร', + title: 'ถังขยะ', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'ปิดตัวแก้ไข', + openActions: 'เปิดการทำงาน', + openWorkspaces: 'เปิดพื้นที่ทำงาน', + }, + items: { + home: 'หน้าแรก', + menu: 'เมนู', + primary: 'หลัก', + settings: 'การตั้งค่า', + spaces: 'พื้นที่', + trash: 'ถังขยะ', + workspaces: 'พื้นที่ทำงาน', + }, + }, + notes: { + actions: { + addCloze: 'เพิ่ม cloze', + deleteNote: 'ลบโน้ต', + editNote: 'แก้ไขโน้ต', + hideDerivedCardsNote: 'ซ่อนโน้ตเกี่ยวกับการ์ดที่สร้างตามมา', + openNote: 'เปิด {{title}}', + saveNote: 'บันทึกโน้ต', + showDerivedCardsNote: 'แสดงโน้ตเกี่ยวกับการ์ดที่สร้างตามมา', + }, + descriptions: { + clozeFormat: 'แต่ละส่วนที่ซ่อนจะกลายเป็นการ์ดทบทวนเมื่อคุณบันทึก', + clozeFormatPrefix: 'ครอบข้อความที่ซ่อนด้วย', + derivedCardsHelper: 'โน้ตคือแหล่งข้อมูลหลักสำหรับการ์ดที่สร้างตามมา', + }, + dialogs: { + deleteNoteDescription: 'การทำงานนี้จะย้าย "{{title}}" ไปที่ถังขยะ คุณสามารถกู้คืนได้ภายหลัง', + deleteNoteFallbackDescription: 'การทำงานนี้จะย้ายโน้ตนี้ไปที่ถังขยะ คุณสามารถกู้คืนได้ภายหลัง', + deleteNoteFallbackTitle: 'ลบโน้ตหรือไม่', + deleteNoteTitle: 'ลบ "{{title}}" หรือไม่', + }, + errors: { + couldNotCreateNote: 'ไม่สามารถสร้างโน้ตได้', + couldNotDeleteNote: 'ไม่สามารถลบโน้ตได้', + couldNotSaveNote: 'ไม่สามารถบันทึกโน้ตได้', + noteCouldNotLoad: 'ไม่สามารถโหลดโน้ตได้', + }, + fields: { + back: 'ด้านหลัง', + backPlaceholder: 'ป้อนด้านหลัง', + bodyPlaceholder: 'เขียนเนื้อหาโน้ตพร้อม cloze deletions…', + front: 'ด้านหน้า', + frontPlaceholder: 'ป้อนด้านหน้า', + noteBody: 'เนื้อหาโน้ต', + title: 'ชื่อเรื่อง', + titlePlaceholder: 'เพิ่มชื่อโน้ต', + untitledCloze: 'Cloze ไม่มีชื่อ', + untitledNote: 'โน้ตไม่มีชื่อ', + }, + labels: { + backUppercase: 'ด้านหลัง', + basic: 'พื้นฐาน', + basicLower: 'พื้นฐาน', + basicUppercase: 'พื้นฐาน', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'รูปแบบ Cloze', + clozeUppercase: 'CLOZE', + deck: 'สำรับ', + derivedCards: 'การ์ดที่สร้างตามมา', + due: 'ครบกำหนด', + frontUppercase: 'ด้านหน้า', + inProgress: 'กำลังดำเนินการ', + inProgressUppercase: 'กำลังดำเนินการ', + loadingNote: 'กำลังโหลดโน้ต', + loadingNoteEditor: 'กำลังโหลดตัวแก้ไขโน้ต', + markdownFormatting: 'การจัดรูปแบบ Markdown', + mastered: 'เชี่ยวชาญแล้ว', + masteredUppercase: 'เชี่ยวชาญแล้ว', + newNote: 'โน้ตใหม่', + noteBody: 'เนื้อหาโน้ต', + noteContent: 'เนื้อหาโน้ต', + noteDetails: 'รายละเอียดโน้ต', + noteMetadata: 'เมตาดาต้าโน้ต', + noteType: 'ประเภทโน้ต', + notes: 'โน้ต', + reviewed: 'ทบทวนแล้ว', + studyProgress: 'ความคืบหน้าการเรียน', + studyProgressUppercase: 'ความคืบหน้าการเรียน', + titleUppercase: 'ชื่อเรื่อง', + updated: 'อัปเดตแล้ว', + }, + sort: { + ariaLabel: 'เรียงลำดับโน้ต', + title: 'ชื่อเรื่อง', + updated: 'อัปเดตแล้ว', + }, + toolbar: { + bold: 'ตัวหนา', + italic: 'ตัวเอียง', + link: 'ลิงก์', + list: 'รายการ', + }, + }, + review: { + actions: { + again: 'อีกครั้ง', + backToDeck: 'กลับไปที่สำรับ', + continueReview: 'ทบทวนต่อ', + easy: 'ง่าย', + good: 'ดี', + hard: 'ยาก', + newNote: 'โน้ตใหม่', + showAnswer: 'แสดงคำตอบ', + }, + errors: { + couldNotGradeCard: 'ไม่สามารถให้คะแนนการ์ดได้', + reviewCouldNotLoad: 'ไม่สามารถโหลดการทบทวนได้', + reviewCouldNotStart: 'ไม่สามารถเริ่มการทบทวนได้', + summaryCouldNotLoad: 'ไม่สามารถโหลดสรุปการทบทวนได้', + summaryNotAvailable: 'สรุปการทบทวนไม่พร้อมใช้งาน', + summaryNotComplete: 'การทบทวนนี้ยังไม่เสร็จสมบูรณ์', + }, + labels: { + cardsReviewed: 'การ์ดที่ทบทวนแล้ว', + deck: 'สำรับ', + duration: 'ระยะเวลา', + loadingReview: 'กำลังโหลดการทบทวน', + loadingSummary: 'กำลังโหลดสรุป', + progress: 'ความคืบหน้าการทบทวน', + review: 'ทบทวน', + reviewComplete: 'ทบทวนเสร็จแล้ว', + reviewed_one: 'ทบทวนแล้ว {{count}}', + reviewed_other: 'ทบทวนแล้ว {{count}}', + }, + summary: { + durationHoursMinutes: '{{hours}} ชม. {{minutes}} นาที', + durationMinutes: '{{minutes}} นาที', + durationSeconds: '{{seconds}} วิ', + saved: 'บันทึกความคืบหน้าของคุณลงในสำรับนี้แล้ว', + }, + unavailable: { + description: 'เพิ่มโน้ตเพื่อให้สำรับนี้เข้าสู่คิวทบทวนได้', + title: 'ไม่มีการ์ดให้ทบทวน', + }, + }, + search: { + actions: { + clearSearch: 'ล้างการค้นหา', + }, + empty: { + noMatchesInWorkspace: 'ไม่มีรายการที่ตรงกันในพื้นที่ทำงานนี้', + noMatchesInWorkspaceDescription: 'ไม่มีโฟลเดอร์ สำรับ หรือโน้ตที่ตรงกับ "{{query}}"', + }, + errors: { + couldNotComplete: 'ไม่สามารถค้นหาให้เสร็จได้', + }, + labels: { + results: 'ผลการค้นหา', + resultsFor: 'ผลลัพธ์สำหรับ "{{query}}"', + searchingContent: 'กำลังค้นหาเนื้อหา', + }, + resultGroups: { + deck: 'สำรับ', + folder: 'โฟลเดอร์', + note: 'โน้ต', + }, + resultKinds: { + deck: 'สำรับ', + folder: 'โฟลเดอร์', + note: 'โน้ต', + }, + }, + settings: { + actions: { + resetAll: 'รีเซ็ตการตั้งค่าทั้งหมด', + resetSettings: 'รีเซ็ตการตั้งค่า', + resetToDefaults: 'กลับเป็นค่าเริ่มต้น', + }, + dialogs: { + fsrsErrorInvalidJson: 'วาง JSON ที่ถูกต้องพร้อมค่าตัวเลข 21 ค่า', + fsrsErrorInvalidParams_one: 'ป้อนอาร์เรย์ JSON ที่มีตัวเลขจำกัดจำนวน {{count}} ค่า', + fsrsErrorInvalidParams_other: 'ป้อนอาร์เรย์ JSON ที่มีตัวเลขจำกัดจำนวน {{count}} ค่า', + fsrsHelper: 'นี่คือการตั้งค่าขั้นสูง ค่าต้องคงลำดับเดิม', + fsrsJsonLabel: 'JSON พารามิเตอร์ FSRS', + fsrsTitle: 'แก้ไขพารามิเตอร์ FSRS', + fsrsDescription: 'วางอาร์เรย์ JSON ที่มีตัวเลข 21 ค่าเพื่อแทนที่น้ำหนักของตัวจัดตาราง', + resetDescription: 'การทำงานนี้จะคืนค่าเขตเวลา ขีดจำกัดการเรียน และการตั้งค่า FSRS', + resetDescriptionWithLanguage: 'การทำงานนี้จะคืนค่าภาษา เขตเวลา ขีดจำกัดการเรียน และการตั้งค่า FSRS', + resetTitle: 'รีเซ็ตการตั้งค่าทั้งหมดหรือไม่', + timezoneDescription: 'ค้นหาเมืองหรือตัวระบุเขตเวลา', + timezoneSearchLabel: 'ค้นหาเขตเวลา', + timezoneSearchPlaceholder: 'ค้นหาเขตเวลา…', + timezoneTitle: 'เลือกเขตเวลา', + }, + errors: { + couldNotResetSettings: 'ไม่สามารถรีเซ็ตการตั้งค่าได้', + couldNotSaveSettings: 'ไม่สามารถบันทึกการตั้งค่าได้', + settingsCouldNotLoad: 'ไม่สามารถโหลดการตั้งค่าได้', + settingsUnavailable: 'การตั้งค่าไม่พร้อมใช้งาน', + }, + labels: { + appearance: 'รูปลักษณ์', + automatic: 'อัตโนมัติ', + fsrsParameters: 'พารามิเตอร์ FSRS', + general: 'ทั่วไป', + language: 'ภาษา', + loadingSettings: 'กำลังโหลดการตั้งค่า', + masteryHorizon: 'ช่วงเวลาความเชี่ยวชาญ', + newCardOrder: 'ลำดับการ์ดใหม่', + newCardsPerDay: 'การ์ดใหม่ต่อวัน', + reviewCardsPerDay: 'การ์ดทบทวนต่อวัน', + savingSettings: 'กำลังบันทึกการตั้งค่า', + schedule: 'ตารางเวลา', + searchNoTimezones: 'ไม่มีเขตเวลาที่ตรงกัน', + settings: 'การตั้งค่า', + settingsReset: 'รีเซ็ตการตั้งค่าแล้ว', + study: 'การเรียน', + targetRecallProbability: 'ความน่าจะเป็นเป้าหมายในการจำได้', + theme: 'ธีม', + timezone: 'เขตเวลา', + }, + options: { + languageEnUs: 'อังกฤษ (สหรัฐฯ)', + newCardsAfterReviews: 'หลังการทบทวน', + newCardsBeforeReviews: 'ก่อนการทบทวน', + newCardsMixed: 'ผสม', + themeDark: 'มืด', + themeLight: 'สว่าง', + themeSystem: 'ระบบ', + timezoneSystem: 'ใช้เขตเวลาของระบบ', + }, + rows: { + fsrsDescription: 'น้ำหนักโมเดลขั้นสูง', + languageDescription: 'ภาษาของอินเทอร์เฟซ', + masteryHorizonDescription: 'จำนวนวันที่การ์ดต้องยังจำได้ที่หรือสูงกว่าความน่าจะเป็นเป้าหมายเพื่อให้นับว่าเชี่ยวชาญ', + newCardOrderDescription: 'ลำดับการ์ดใหม่เทียบกับการทบทวน', + newCardsPerDayDescription: 'จำนวนการ์ดใหม่สูงสุดต่อวัน', + reviewCardsPerDayDescription: 'จำนวนการ์ดทบทวนสูงสุดต่อวัน', + targetRecallProbabilityDescription: 'ความน่าจะเป็นขั้นต่ำในการจำได้ในการทบทวนที่กำหนดไว้ครั้งถัดไป', + timezoneDescription: 'ใช้เขตเวลาอัตโนมัติหรือเลือกเมือง', + }, + }, + trash: { + actions: { + deletePermanently: 'ลบถาวร', + empty: 'ล้าง', + emptyTrash: 'ล้างถังขยะ', + restore: 'กู้คืน', + restoringItem: 'กำลังกู้คืน {{title}}', + }, + dialogs: { + deleteItemDescription: 'การทำงานนี้จะลบ "{{title}}" อย่างถาวร และย้อนกลับไม่ได้', + deleteItemFallbackDescription: 'การทำงานนี้จะลบรายการนี้อย่างถาวร และย้อนกลับไม่ได้', + deleteItemFallbackTitle: 'ลบรายการหรือไม่', + deleteItemTitle: 'ลบ "{{title}}" หรือไม่', + emptyTrashDescription: 'การทำงานนี้จะลบทุกอย่างในถังขยะอย่างถาวร และย้อนกลับไม่ได้', + emptyTrashTitle: 'ล้างถังขยะหรือไม่', + }, + empty: { + description: 'รายการที่คุณลบจะปรากฏที่นี่ก่อนถูกลบถาวร', + title: 'ถังขยะว่างเปล่า', + }, + errors: { + couldNotDeleteItem: 'ไม่สามารถลบรายการได้', + couldNotEmptyTrash: 'ไม่สามารถล้างถังขยะได้', + couldNotRestoreItem: 'ไม่สามารถกู้คืนรายการได้', + trashCouldNotLoad: 'ไม่สามารถโหลดถังขยะได้', + trashMayBeOutOfDate: 'ถังขยะอาจล้าสมัย', + }, + labels: { + deletedAge: 'ลบแล้ว {{value}}', + itemCount_one: '{{count}} รายการ', + itemCount_other: '{{count}} รายการ', + lastEmptied: 'ล้างครั้งล่าสุด {{value}}', + loadingTrash: 'กำลังโหลดถังขยะ', + originalLocation: 'ตำแหน่งเดิม: {{location}}', + title: 'ถังขยะ', + trashActions: 'การทำงานในถังขยะของ {{title}}', + }, + kinds: { + deck: 'สำรับ', + folder: 'โฟลเดอร์', + note: 'โน้ต', + workspace: 'พื้นที่ทำงาน', + }, + }, + workspaces: { + actions: { + createWorkspace: 'สร้างพื้นที่ทำงาน', + deleteWorkspace: 'ลบพื้นที่ทำงาน', + editWorkspace: 'แก้ไขพื้นที่ทำงาน', + newWorkspace: 'พื้นที่ทำงานใหม่', + openWorkspace: 'เปิด {{title}}', + openingWorkspace: 'กำลังเปิด {{title}}', + }, + descriptions: { + editorDefault: 'บริบทการเรียน', + editorVisual: 'เลือกจุดยึดภาพสำหรับพื้นที่ทำงานนี้', + emptyList: 'แยกสำรับ โน้ต และคิวทบทวนตามบริบทการเรียน', + }, + dialogs: { + deleteWorkspaceDescription: 'การทำงานนี้จะย้าย "{{title}}" ไปที่ถังขยะ คุณสามารถกู้คืนได้ภายหลัง', + deleteWorkspaceFallbackDescription: 'การทำงานนี้จะย้ายพื้นที่ทำงานนี้ไปที่ถังขยะ คุณสามารถกู้คืนได้ภายหลัง', + deleteWorkspaceFallbackTitle: 'ลบพื้นที่ทำงานหรือไม่', + deleteWorkspaceTitle: 'ลบ "{{title}}" หรือไม่', + }, + empty: { + startWithWorkspace: 'เริ่มด้วยพื้นที่ทำงาน', + }, + errors: { + couldNotCreateWorkspace: 'ไม่สามารถสร้างพื้นที่ทำงานได้', + couldNotDeleteWorkspace: 'ไม่สามารถลบพื้นที่ทำงานได้', + couldNotOpenWorkspace: 'ไม่สามารถเปิดพื้นที่ทำงานได้', + couldNotSaveWorkspace: 'ไม่สามารถบันทึกพื้นที่ทำงานได้', + workspaceCouldNotLoad: 'ไม่สามารถโหลดพื้นที่ทำงานได้', + workspacesCouldNotLoad: 'ไม่สามารถโหลดพื้นที่ทำงานได้', + }, + fields: { + descriptionLabel: 'คำอธิบายพื้นที่ทำงาน', + descriptionPlaceholder: 'อะไรอยู่ในพื้นที่ทำงานนี้', + namePlaceholder: 'ชื่อพื้นที่ทำงาน', + untitledWorkspace: 'พื้นที่ทำงานไม่มีชื่อ', + }, + labels: { + createWorkspaceTitle: 'สร้างพื้นที่ทำงาน', + loadingWorkspaces: 'กำลังโหลดพื้นที่ทำงาน', + workspace: 'พื้นที่ทำงาน', + workspaces: 'พื้นที่ทำงาน', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/tr.ts b/ui/src/core/i18n/resources/tr.ts new file mode 100644 index 0000000..2d8c7d7 --- /dev/null +++ b/ui/src/core/i18n/resources/tr.ts @@ -0,0 +1,623 @@ +export const tr = { + bootstrap: { + error: { + fallbackMessage: 'Tekrar deneyin. Bu devam ederse Clear uygulamasını yeniden açın.', + title: 'Başlatılamadı', + }, + loadingTitle: 'Çalışma alanınız hazırlanıyor', + }, + common: { + actions: { + back: 'Geri', + cancel: 'İptal', + checkAgain: 'Tekrar kontrol et', + close: 'Kapat', + create: 'Oluştur', + delete: 'Sil', + dismissError: 'Hatayı kapat', + dismissStatus: 'Durumu kapat', + edit: 'Düzenle', + itemActions: '{{title}} işlemleri', + reset: 'Sıfırla', + review: 'Tekrar et', + save: 'Kaydet', + saveChanges: 'Değişiklikleri kaydet', + tryAgain: 'Tekrar dene', + }, + labels: { + active: 'Etkin', + clear: 'Clear', + custom: 'Özel', + default: 'Varsayılan', + loadingEditor: 'Düzenleyici yükleniyor', + name: 'Ad', + completedTask: 'Tamamlanan görev', + description: 'Açıklama', + incompleteTask: 'Tamamlanmayan görev', + percentageInput: '{{label}} yüzdesi', + visual: 'Görsel', + }, + status: { + actionFailed: 'İşlem başarısız oldu', + actionInProgress: 'İşlem devam ediyor', + }, + sort: { + ascending: 'Artan', + column: 'Sütun', + descending: 'Azalan', + direction: 'Yön', + sort: 'Sırala', + }, + search: { + label: 'Ara', + }, + visualPicker: { + allLucideIcons: 'Tüm Lucide simgeleri', + browseIconsFor: '{{label}} için simgelere göz atın veya arayın.', + chooseIcon: 'Simge seç', + iconPicker: '{{label}} simge seçici', + iconSearch: '{{label}} simge araması', + iconsCouldNotLoad: 'Simgeler yüklenemedi.', + loadingIcons: 'Simgeler yükleniyor', + loadingMoreIcons: 'Daha fazla simge yükleniyor', + moreIcons: 'Daha fazla simge', + noIconsMatch: '"{{query}}" ile eşleşen simge yok.', + searchIconsPlaceholder: 'Simge ara…', + selectedIcon: '{{label}} seçildi', + }, + }, + dashboard: { + actions: { + create: 'Oluştur', + newDeck: 'Yeni deste', + newFolder: 'Yeni klasör', + }, + descriptions: { + defaultWorkspace: 'Desteleri, klasörleri ve notları bir arada tutun.', + emptyWorkspace: 'Bir deste oluşturun, ardından tekrar sıranızı kurmak için notlar ekleyin.', + emptyFolder: 'Bir deste oluşturun, ardından bir tekrar sırası kurmak için notlar ekleyin.', + searchPlaceholder: 'Klasör, deste ve not ara…', + }, + empty: { + createFirstDeck: 'İlk destenizi oluşturun', + }, + errors: { + couldNotDeleteDeck: 'Deste silinemedi', + couldNotDeleteFolder: 'Klasör silinemedi', + couldNotDeleteWorkspace: 'Çalışma alanı silinemedi', + dashboardCouldNotOpen: 'Panel açılamadı', + decksCouldNotLoad: 'Desteler yüklenemedi', + decksMayBeOutOfDate: 'Desteler güncel olmayabilir', + foldersCouldNotLoad: 'Klasörler yüklenemedi', + foldersMayBeOutOfDate: 'Klasörler güncel olmayabilir', + workspaceCouldNotLoad: 'Çalışma alanı yüklenemedi', + }, + labels: { + dashboard: 'Panel', + loadingDashboard: 'Panel yükleniyor', + newItem: 'Yeni öğe', + }, + }, + dates: { + absolute: { + unavailable: 'Tarih kullanılamıyor', + }, + age: { + dayAgo_one: '{{count}} gün önce', + dayAgo_other: '{{count}} gün önce', + hourAgo_one: '{{count}} saat önce', + hourAgo_other: '{{count}} saat önce', + justNow: 'az önce', + minuteAgo_one: '{{count}} dakika önce', + minuteAgo_other: '{{count}} dakika önce', + unavailable: 'tarih kullanılamıyor', + weekAgo_one: '{{count}} hafta önce', + weekAgo_other: '{{count}} hafta önce', + }, + labels: { + deleted: '{{value}} silindi', + due: 'Sıra zamanı: {{value}}', + reviewed: 'Tekrarlandı: {{value}}', + updated: '{{value}} güncellendi', + updatedUppercase: '{{value}} GÜNCELLENDİ', + }, + relative: { + dayAgo_one: '{{count}} gün önce', + dayAgo_other: '{{count}} gün önce', + inAMoment: 'Birazdan', + inDay_one: '{{count}} gün içinde', + inDay_other: '{{count}} gün içinde', + inMonth_one: '{{count}} ay içinde', + inMonth_other: '{{count}} ay içinde', + inWeek_one: '{{count}} hafta içinde', + inWeek_other: '{{count}} hafta içinde', + justNow: 'Az önce', + monthAgo_one: '{{count}} ay önce', + monthAgo_other: '{{count}} ay önce', + secondsAgoShort: '{{count}} sn önce', + minutesAgoShort: '{{count}} dk önce', + hoursAgoShort: '{{count}} sa önce', + today: 'Bugün', + tomorrow: 'Yarın', + weekAgo_one: '{{count}} hafta önce', + weekAgo_other: '{{count}} hafta önce', + yesterday: 'Dün', + }, + }, + decks: { + actions: { + actionMenu: '{{title}} işlemleri', + createDeck: 'Deste oluştur', + createNote: 'Not oluştur', + deleteDeck: 'Desteyi sil', + editDeck: 'Desteyi düzenle', + newNote: 'Yeni not', + openDeck: '{{title}} destesini aç', + saveDeck: 'Deste kaydedilemedi', + studyNow: 'Şimdi çalış', + }, + descriptions: { + emptyDeck: 'Bu destede tekrar edilecek materyal olması için bir not ekleyin.', + editorDefault: 'Odaklı çalışma destesi.', + editorVisual: 'Bu deste için bir kapak glifi seçin.', + notesSearchPlaceholder: 'Not ara…', + }, + dialogs: { + deleteDeckDescription: 'Bu, "{{title}}" öğesini Çöp Kutusu\'na taşır. Daha sonra geri yükleyebilirsiniz.', + deleteDeckFallbackDescription: 'Bu, bu desteyi Çöp Kutusu\'na taşır. Daha sonra geri yükleyebilirsiniz.', + deleteDeckFallbackTitle: 'Deste silinsin mi?', + deleteDeckTitle: '"{{title}}" silinsin mi?', + deleteNoteDescription: 'Bu, "{{title}}" öğesini Çöp Kutusu\'na taşır. Daha sonra geri yükleyebilirsiniz.', + deleteNoteFallbackTitle: 'Not silinsin mi?', + deleteNoteTitle: '"{{title}}" silinsin mi?', + }, + empty: { + noMatchingNotes: 'Eşleşen not yok', + noMatchingNotesDescription: '"{{query}}" ile eşleşen not yok.', + thisDeckIsEmpty: 'Bu deste boş', + }, + errors: { + couldNotCreateDeck: 'Deste oluşturulamadı', + couldNotDeleteDeck: 'Deste silinemedi', + couldNotDeleteNote: 'Not silinemedi', + couldNotLoadFolderPath: 'Klasör yolu yüklenemedi', + couldNotSaveDeck: 'Deste kaydedilemedi', + deckCouldNotLoad: 'Deste yüklenemedi', + notesCouldNotLoad: 'Notlar yüklenemedi', + notesMayBeOutOfDate: 'Notlar güncel olmayabilir', + }, + fields: { + descriptionLabel: 'Deste açıklaması', + descriptionPlaceholder: 'Bu deste neyi tekrar etmenize yardımcı olacak?', + namePlaceholder: 'Deste adı', + untitledDeck: 'Adsız deste', + untitledDeckLower: 'adsız deste', + }, + labels: { + createDeckTitle: 'Deste oluştur', + deck: 'Deste', + deckNotesSearch: 'Deste notlarında ara', + deckOverview: 'Deste özeti', + decks: 'Desteler', + due: 'Sırası geldi', + dueToday: 'Bugün sırası geldi', + loadingDeck: 'Deste yükleniyor', + mastery: 'Uzmanlık', + notes: 'Notlar', + }, + sort: { + ariaLabel: 'Desteleri sırala', + dueToday: 'Bugün sırası geldi', + title: 'Başlık', + updated: 'Güncellendi', + }, + }, + errors: { + byType: { + conflict: 'Veriler değişti. Yenileyin ve tekrar deneyin.', + forbidden: 'Bunu yapma izniniz yok.', + notFound: 'Bu öğeyi bulamadık.', + offline: 'Hizmete ulaşılamıyor.', + timeout: 'Bu işlem çok uzun sürdü. Tekrar deneyin.', + unauthorized: 'Devam etmek için oturum açın.', + unavailable: 'Hizmet geçici olarak kullanılamıyor.', + }, + fallback: { + unexpected: 'Beklenmeyen hata', + }, + }, + folders: { + actions: { + createFolder: 'Klasör oluştur', + deleteFolder: 'Klasörü sil', + editFolder: 'Klasörü düzenle', + }, + descriptions: { + editorDefault: 'İlgili desteler için klasör.', + }, + dialogs: { + deleteFolderDescription: 'Bu, "{{name}}" öğesini Çöp Kutusu\'na taşır. Daha sonra geri yükleyebilirsiniz.', + deleteFolderFallbackDescription: 'Bu, bu klasörü Çöp Kutusu\'na taşır. Daha sonra geri yükleyebilirsiniz.', + deleteFolderFallbackTitle: 'Klasör silinsin mi?', + deleteFolderTitle: '"{{name}}" silinsin mi?', + }, + empty: { + noMatchesInFolder: 'Bu klasörde eşleşme yok', + noMatchesInFolderDescription: '"{{query}}" ile eşleşen klasör, deste veya not yok.', + }, + errors: { + couldNotCreateFolder: 'Klasör oluşturulamadı', + couldNotDeleteFolder: 'Klasör silinemedi', + couldNotLoadFolderPath: 'Klasör yolu yüklenemedi', + couldNotSaveFolder: 'Klasör kaydedilemedi', + folderCouldNotLoad: 'Klasör yüklenemedi', + }, + fields: { + descriptionLabel: 'Klasör açıklaması', + descriptionPlaceholder: 'Bu klasöre neler ait?', + namePlaceholder: 'Klasör adı', + untitledFolder: 'Adsız klasör', + }, + labels: { + createFolderTitle: 'Klasör oluştur', + folder: 'Klasör', + folders: 'Klasörler', + loadingFolder: 'Klasör yükleniyor', + name: 'Ad', + updated: 'Güncellendi', + }, + sort: { + ariaLabel: 'Klasörleri sırala', + name: 'Ad', + updated: 'Güncellendi', + }, + }, + menu: { + conflicts: { + description: 'Yerel ve senkronize veriler farklılaşırsa öğe burada görünür.', + heading: 'Senkronizasyon durumu', + title: 'Çakışmalar', + noConflicts: 'Çakışma bulunamadı', + }, + labels: { + menu: 'Menü', + }, + sections: { + settings: { + description: 'Ortamınızı ve tercihlerinizi kişiselleştirin', + title: 'Ayarlar', + }, + trash: { + description: 'Kaldırılan öğeleri geri yükleyin veya kalıcı olarak silin', + title: 'Çöp Kutusu', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Düzenleyiciyi kapat', + openActions: 'İşlemleri aç', + openWorkspaces: 'Çalışma alanlarını aç', + }, + items: { + home: 'Ana sayfa', + menu: 'Menü', + primary: 'Birincil', + settings: 'Ayarlar', + spaces: 'Alanlar', + trash: 'Çöp Kutusu', + workspaces: 'Çalışma alanları', + }, + }, + notes: { + actions: { + addCloze: 'Cloze ekle', + deleteNote: 'Notu sil', + editNote: 'Notu düzenle', + hideDerivedCardsNote: 'Türetilen kart notunu gizle', + openNote: '{{title}} aç', + saveNote: 'Notu kaydet', + showDerivedCardsNote: 'Türetilen kart notunu göster', + }, + descriptions: { + clozeFormat: 'Her gizli bölüm, kaydettiğinizde bir tekrar kartına dönüşür.', + clozeFormatPrefix: 'Gizli metni şununla sarın:', + derivedCardsHelper: 'Notlar, türetilen kartlar için doğruluk kaynağıdır.', + }, + dialogs: { + deleteNoteDescription: 'Bu, "{{title}}" öğesini Çöp Kutusu\'na taşır. Daha sonra geri yükleyebilirsiniz.', + deleteNoteFallbackDescription: 'Bu, bu notu Çöp Kutusu\'na taşır. Daha sonra geri yükleyebilirsiniz.', + deleteNoteFallbackTitle: 'Not silinsin mi?', + deleteNoteTitle: '"{{title}}" silinsin mi?', + }, + errors: { + couldNotCreateNote: 'Not oluşturulamadı', + couldNotDeleteNote: 'Not silinemedi', + couldNotSaveNote: 'Not kaydedilemedi', + noteCouldNotLoad: 'Not yüklenemedi', + }, + fields: { + back: 'Arka', + backPlaceholder: 'Arka yüzü girin', + bodyPlaceholder: 'Not gövdesini cloze silmeleriyle yazın…', + front: 'Ön', + frontPlaceholder: 'Ön yüzü girin', + noteBody: 'Not gövdesi', + title: 'Başlık', + titlePlaceholder: 'Not başlığı ekle', + untitledCloze: 'Adsız cloze', + untitledNote: 'Adsız not', + }, + labels: { + backUppercase: 'ARKA', + basic: 'Temel', + basicLower: 'temel', + basicUppercase: 'TEMEL', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Cloze biçimi', + clozeUppercase: 'CLOZE', + deck: 'Deste', + derivedCards: 'TÜRETİLEN KARTLAR', + due: 'Sırası geldi', + frontUppercase: 'ÖN', + inProgress: 'Devam ediyor', + inProgressUppercase: 'DEVAM EDİYOR', + loadingNote: 'Not yükleniyor', + loadingNoteEditor: 'Not düzenleyici yükleniyor', + markdownFormatting: 'Markdown biçimlendirme', + mastered: 'Uzmanlaşıldı', + masteredUppercase: 'UZMANLAŞILDI', + newNote: 'Yeni not', + noteBody: 'NOT GÖVDESİ', + noteContent: 'Not içeriği', + noteDetails: 'Not ayrıntıları', + noteMetadata: 'Not meta verileri', + noteType: 'Not türü', + notes: 'Notlar', + reviewed: 'Tekrarlandı', + studyProgress: 'Çalışma ilerlemesi', + studyProgressUppercase: 'ÇALIŞMA İLERLEMESİ', + titleUppercase: 'BAŞLIK', + updated: 'Güncellendi', + }, + sort: { + ariaLabel: 'Notları sırala', + title: 'Başlık', + updated: 'Güncellendi', + }, + toolbar: { + bold: 'Kalın', + italic: 'İtalik', + link: 'Bağlantı', + list: 'Liste', + }, + }, + review: { + actions: { + again: 'Tekrar', + backToDeck: 'Desteye dön', + continueReview: 'Tekrara devam et', + easy: 'Kolay', + good: 'İyi', + hard: 'Zor', + newNote: 'Yeni not', + showAnswer: 'Yanıtı göster', + }, + errors: { + couldNotGradeCard: 'Kart değerlendirilemedi', + reviewCouldNotLoad: 'Tekrar yüklenemedi', + reviewCouldNotStart: 'Tekrar başlatılamadı', + summaryCouldNotLoad: 'Tekrar özeti yüklenemedi', + summaryNotAvailable: 'Tekrar özeti kullanılamıyor', + summaryNotComplete: 'Bu tekrar henüz tamamlanmadı.', + }, + labels: { + cardsReviewed: 'Tekrar edilen kartlar', + deck: 'Deste', + duration: 'Süre', + loadingReview: 'Tekrar yükleniyor', + loadingSummary: 'Özet yükleniyor', + progress: 'Tekrar ilerlemesi', + review: 'Tekrar', + reviewComplete: 'Tekrar tamamlandı', + reviewed_one: '{{count}} tekrarlandı', + reviewed_other: '{{count}} tekrarlandı', + }, + summary: { + durationHoursMinutes: '{{hours}} sa {{minutes}} dk', + durationMinutes: '{{minutes}} dk', + durationSeconds: '{{seconds}} sn', + saved: 'İlerlemeniz bu desteye kaydedildi.', + }, + unavailable: { + description: 'Bu destenin tekrar sırasına girebilmesi için bir not ekleyin.', + title: 'Tekrar edilecek kart yok', + }, + }, + search: { + actions: { + clearSearch: 'Aramayı temizle', + }, + empty: { + noMatchesInWorkspace: 'Bu çalışma alanında eşleşme yok', + noMatchesInWorkspaceDescription: '"{{query}}" ile eşleşen klasör, deste veya not yok.', + }, + errors: { + couldNotComplete: 'Arama tamamlanamadı', + }, + labels: { + results: 'Arama sonuçları', + resultsFor: '"{{query}}" için sonuçlar', + searchingContent: 'İçerik aranıyor', + }, + resultGroups: { + deck: 'Desteler', + folder: 'Klasörler', + note: 'Notlar', + }, + resultKinds: { + deck: 'deste', + folder: 'klasör', + note: 'not', + }, + }, + settings: { + actions: { + resetAll: 'Tüm ayarları sıfırla', + resetSettings: 'Ayarları sıfırla', + resetToDefaults: 'Varsayılanlara dön', + }, + dialogs: { + fsrsErrorInvalidJson: '21 sayısal değer içeren geçerli JSON yapıştırın.', + fsrsErrorInvalidParams_one: 'Tam olarak {{count}} sonlu sayı içeren bir JSON dizisi girin.', + fsrsErrorInvalidParams_other: 'Tam olarak {{count}} sonlu sayı içeren bir JSON dizisi girin.', + fsrsHelper: 'Bu bir uzman geçersiz kılmasıdır. Değerler sırasını korumalıdır.', + fsrsJsonLabel: 'FSRS Parametreleri JSON', + fsrsTitle: 'FSRS parametrelerini düzenle', + fsrsDescription: 'Zamanlayıcı ağırlıklarını geçersiz kılmak için 21 sayı içeren bir JSON dizisi yapıştırın.', + resetDescription: 'Bu, saat dilimi, çalışma sınırları ve FSRS ayarlarını geri yükler.', + resetDescriptionWithLanguage: 'Bu, dil, saat dilimi, çalışma sınırları ve FSRS ayarlarını geri yükler.', + resetTitle: 'Tüm ayarlar sıfırlansın mı?', + timezoneDescription: 'Bir şehir veya saat dilimi tanımlayıcısı arayın.', + timezoneSearchLabel: 'Saat dilimlerinde ara', + timezoneSearchPlaceholder: 'Saat dilimlerinde ara…', + timezoneTitle: 'Saat dilimi seç', + }, + errors: { + couldNotResetSettings: 'Ayarlar sıfırlanamadı', + couldNotSaveSettings: 'Ayarlar kaydedilemedi', + settingsCouldNotLoad: 'Ayarlar yüklenemedi', + settingsUnavailable: 'Ayarlar kullanılamıyor.', + }, + labels: { + appearance: 'Görünüm', + automatic: 'Otomatik', + fsrsParameters: 'FSRS Parametreleri', + general: 'Genel', + language: 'Dil', + loadingSettings: 'Ayarlar yükleniyor', + masteryHorizon: 'Uzmanlık ufku', + newCardOrder: 'Yeni kart sırası', + newCardsPerDay: 'Günlük yeni kart', + reviewCardsPerDay: 'Günlük tekrar kartı', + savingSettings: 'Ayarlar kaydediliyor', + schedule: 'Program', + searchNoTimezones: 'Eşleşen saat dilimi yok.', + settings: 'Ayarlar', + settingsReset: 'Ayarlar sıfırlandı', + study: 'Çalışma', + targetRecallProbability: 'Hedef hatırlama olasılığı', + theme: 'Tema', + timezone: 'Saat dilimi', + }, + options: { + languageEnUs: 'İngilizce (ABD)', + newCardsAfterReviews: 'Tekrarlardan sonra', + newCardsBeforeReviews: 'Tekrarlardan önce', + newCardsMixed: 'Karışık', + themeDark: 'Koyu', + themeLight: 'Açık', + themeSystem: 'Sistem', + timezoneSystem: 'Sistem saat dilimini kullan', + }, + rows: { + fsrsDescription: 'Uzman model ağırlıkları', + languageDescription: 'Arayüz dili', + masteryHorizonDescription: 'Bir kartın öğrenilmiş sayılması için hedef olasılıkta veya üstünde hatırlanabilir kalması gereken gün sayısı', + newCardOrderDescription: 'Yeni kartların tekrarlara göre sırası', + newCardsPerDayDescription: 'Günlük maksimum yeni kart', + reviewCardsPerDayDescription: 'Günlük maksimum tekrar kartı', + targetRecallProbabilityDescription: 'Bir sonraki planlı tekrarda minimum hatırlama olasılığı', + timezoneDescription: 'Otomatik saat dilimini kullanın veya bir şehir seçin.', + }, + }, + trash: { + actions: { + deletePermanently: 'Kalıcı olarak sil', + empty: 'Boşalt', + emptyTrash: 'Çöp Kutusu\'nu boşalt', + restore: 'Geri yükle', + restoringItem: '{{title}} geri yükleniyor', + }, + dialogs: { + deleteItemDescription: 'Bu, "{{title}}" öğesini kalıcı olarak siler. Bu işlem geri alınamaz.', + deleteItemFallbackDescription: 'Bu, bu öğeyi kalıcı olarak siler. Bu işlem geri alınamaz.', + deleteItemFallbackTitle: 'Öğe silinsin mi?', + deleteItemTitle: '"{{title}}" silinsin mi?', + emptyTrashDescription: 'Bu, Çöp Kutusu\'ndaki her şeyi kalıcı olarak siler. Bu işlem geri alınamaz.', + emptyTrashTitle: 'Çöp Kutusu boşaltılsın mı?', + }, + empty: { + description: 'Sildiğiniz öğeler kalıcı olarak kaldırılmadan önce burada görünür.', + title: 'Çöp Kutusu boş', + }, + errors: { + couldNotDeleteItem: 'Öğe silinemedi', + couldNotEmptyTrash: 'Çöp Kutusu boşaltılamadı', + couldNotRestoreItem: 'Öğe geri yüklenemedi', + trashCouldNotLoad: 'Çöp Kutusu yüklenemedi', + trashMayBeOutOfDate: 'Çöp Kutusu güncel olmayabilir', + }, + labels: { + deletedAge: '{{value}} silindi', + itemCount_one: '{{count}} öğe', + itemCount_other: '{{count}} öğe', + lastEmptied: 'Son boşaltma {{value}}', + loadingTrash: 'Çöp Kutusu yükleniyor', + originalLocation: 'Orijinal konum: {{location}}', + title: 'Çöp Kutusu', + trashActions: '{{title}} çöp kutusu işlemleri', + }, + kinds: { + deck: 'Deste', + folder: 'Klasör', + note: 'Not', + workspace: 'Çalışma alanı', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Çalışma alanı oluştur', + deleteWorkspace: 'Çalışma alanını sil', + editWorkspace: 'Çalışma alanını düzenle', + newWorkspace: 'Yeni çalışma alanı', + openWorkspace: '{{title}} aç', + openingWorkspace: '{{title}} açılıyor', + }, + descriptions: { + editorDefault: 'Çalışma bağlamı.', + editorVisual: 'Bu çalışma alanı için görsel bir işaret seçin.', + emptyList: 'Desteleri, notları ve tekrar sıralarını çalışma bağlamına göre ayırın.', + }, + dialogs: { + deleteWorkspaceDescription: 'Bu, "{{title}}" öğesini Çöp Kutusu\'na taşır. Daha sonra geri yükleyebilirsiniz.', + deleteWorkspaceFallbackDescription: 'Bu, bu çalışma alanını Çöp Kutusu\'na taşır. Daha sonra geri yükleyebilirsiniz.', + deleteWorkspaceFallbackTitle: 'Çalışma alanı silinsin mi?', + deleteWorkspaceTitle: '"{{title}}" silinsin mi?', + }, + empty: { + startWithWorkspace: 'Bir çalışma alanıyla başlayın', + }, + errors: { + couldNotCreateWorkspace: 'Çalışma alanı oluşturulamadı', + couldNotDeleteWorkspace: 'Çalışma alanı silinemedi', + couldNotOpenWorkspace: 'Çalışma alanı açılamadı', + couldNotSaveWorkspace: 'Çalışma alanı kaydedilemedi', + workspaceCouldNotLoad: 'Çalışma alanı yüklenemedi', + workspacesCouldNotLoad: 'Çalışma alanları yüklenemedi', + }, + fields: { + descriptionLabel: 'Çalışma alanı açıklaması', + descriptionPlaceholder: 'Bu çalışma alanına neler ait?', + namePlaceholder: 'Çalışma alanı adı', + untitledWorkspace: 'Adsız çalışma alanı', + }, + labels: { + createWorkspaceTitle: 'Çalışma alanı oluştur', + loadingWorkspaces: 'Çalışma alanları yükleniyor', + workspace: 'Çalışma alanı', + workspaces: 'Çalışma alanları', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/uk.ts b/ui/src/core/i18n/resources/uk.ts new file mode 100644 index 0000000..f6d25ac --- /dev/null +++ b/ui/src/core/i18n/resources/uk.ts @@ -0,0 +1,649 @@ +export const uk = { + bootstrap: { + error: { + fallbackMessage: 'Спробуйте ще раз. Якщо це повториться, відкрийте Clear знову.', + title: 'Не вдалося запустити', + }, + loadingTitle: 'Готуємо ваш простір для навчання', + }, + common: { + actions: { + back: 'Назад', + cancel: 'Скасувати', + checkAgain: 'Перевірити знову', + close: 'Закрити', + create: 'Створити', + delete: 'Видалити', + dismissError: 'Закрити помилку', + dismissStatus: 'Закрити статус', + edit: 'Редагувати', + itemActions: 'Дії для {{title}}', + reset: 'Скинути', + review: 'Повторювати', + save: 'Зберегти', + saveChanges: 'Зберегти зміни', + tryAgain: 'Спробувати ще раз', + }, + labels: { + active: 'Активно', + clear: 'Clear', + custom: 'Власне', + default: 'Типово', + loadingEditor: 'Завантаження редактора', + name: 'Назва', + completedTask: 'Завершене завдання', + description: 'Опис', + incompleteTask: 'Незавершене завдання', + percentageInput: 'Відсоток для {{label}}', + visual: 'Візуал', + }, + status: { + actionFailed: 'Дію не виконано', + actionInProgress: 'Дія виконується', + }, + sort: { + ascending: 'Зрост.', + column: 'Стовпець', + descending: 'Спад.', + direction: 'Напрям', + sort: 'Сортувати', + }, + search: { + label: 'Пошук', + }, + visualPicker: { + allLucideIcons: 'Усі іконки Lucide', + browseIconsFor: 'Переглядайте або шукайте іконки для {{label}}.', + chooseIcon: 'Вибрати іконку', + iconPicker: 'Вибір іконки для {{label}}', + iconSearch: 'Пошук іконок для {{label}}', + iconsCouldNotLoad: 'Не вдалося завантажити іконки.', + loadingIcons: 'Завантаження іконок', + loadingMoreIcons: 'Завантаження додаткових іконок', + moreIcons: 'Більше іконок', + noIconsMatch: 'Немає іконок за запитом "{{query}}".', + searchIconsPlaceholder: 'Шукати іконки…', + selectedIcon: 'Вибрано {{label}}', + }, + }, + dashboard: { + actions: { + create: 'Створити', + newDeck: 'Нова колода', + newFolder: 'Нова папка', + }, + descriptions: { + defaultWorkspace: 'Тримайте колоди, папки й нотатки разом.', + emptyWorkspace: 'Створіть колоду, а потім додайте нотатки, щоб зібрати чергу повторення.', + emptyFolder: 'Створіть колоду, а потім додайте нотатки, щоб зібрати чергу повторення.', + searchPlaceholder: 'Шукати папки, колоди й нотатки…', + }, + empty: { + createFirstDeck: 'Створіть першу колоду', + }, + errors: { + couldNotDeleteDeck: 'Не вдалося видалити колоду', + couldNotDeleteFolder: 'Не вдалося видалити папку', + couldNotDeleteWorkspace: 'Не вдалося видалити робочий простір', + dashboardCouldNotOpen: 'Не вдалося відкрити панель', + decksCouldNotLoad: 'Не вдалося завантажити колоди', + decksMayBeOutOfDate: 'Колоди можуть бути застарілими', + foldersCouldNotLoad: 'Не вдалося завантажити папки', + foldersMayBeOutOfDate: 'Папки можуть бути застарілими', + workspaceCouldNotLoad: 'Не вдалося завантажити робочий простір', + }, + labels: { + dashboard: 'Панель', + loadingDashboard: 'Завантаження панелі', + newItem: 'Новий елемент', + }, + }, + dates: { + absolute: { + unavailable: 'Дата недоступна', + }, + age: { + dayAgo_one: '{{count}} день тому', + dayAgo_few: '{{count}} дні тому', + dayAgo_many: '{{count}} днів тому', + dayAgo_other: '{{count}} дня тому', + hourAgo_one: '{{count}} годину тому', + hourAgo_few: '{{count}} години тому', + hourAgo_many: '{{count}} годин тому', + hourAgo_other: '{{count}} години тому', + justNow: 'щойно', + minuteAgo_one: '{{count}} хвилину тому', + minuteAgo_few: '{{count}} хвилини тому', + minuteAgo_many: '{{count}} хвилин тому', + minuteAgo_other: '{{count}} хвилини тому', + unavailable: 'дата недоступна', + weekAgo_one: '{{count}} тиждень тому', + weekAgo_few: '{{count}} тижні тому', + weekAgo_many: '{{count}} тижнів тому', + weekAgo_other: '{{count}} тижня тому', + }, + labels: { + deleted: 'Видалено {{value}}', + due: 'До повторення: {{value}}', + reviewed: 'Повторено: {{value}}', + updated: 'Оновлено {{value}}', + updatedUppercase: 'ОНОВЛЕНО {{value}}', + }, + relative: { + dayAgo_one: '{{count}} день тому', + dayAgo_few: '{{count}} дні тому', + dayAgo_many: '{{count}} днів тому', + dayAgo_other: '{{count}} дня тому', + inAMoment: 'Невдовзі', + inDay_one: 'Через {{count}} день', + inDay_few: 'Через {{count}} дні', + inDay_many: 'Через {{count}} днів', + inDay_other: 'Через {{count}} дня', + inMonth_one: 'Через {{count}} місяць', + inMonth_few: 'Через {{count}} місяці', + inMonth_many: 'Через {{count}} місяців', + inMonth_other: 'Через {{count}} місяця', + inWeek_one: 'Через {{count}} тиждень', + inWeek_few: 'Через {{count}} тижні', + inWeek_many: 'Через {{count}} тижнів', + inWeek_other: 'Через {{count}} тижня', + justNow: 'Щойно', + monthAgo_one: '{{count}} місяць тому', + monthAgo_few: '{{count}} місяці тому', + monthAgo_many: '{{count}} місяців тому', + monthAgo_other: '{{count}} місяця тому', + secondsAgoShort: '{{count}} с тому', + minutesAgoShort: '{{count}} хв тому', + hoursAgoShort: '{{count}} год тому', + today: 'Сьогодні', + tomorrow: 'Завтра', + weekAgo_one: '{{count}} тиждень тому', + weekAgo_few: '{{count}} тижні тому', + weekAgo_many: '{{count}} тижнів тому', + weekAgo_other: '{{count}} тижня тому', + yesterday: 'Вчора', + }, + }, + decks: { + actions: { + actionMenu: 'Дії для {{title}}', + createDeck: 'Створити колоду', + createNote: 'Створити нотатку', + deleteDeck: 'Видалити колоду', + editDeck: 'Редагувати колоду', + newNote: 'Нова нотатка', + openDeck: 'Відкрити колоду {{title}}', + saveDeck: 'Не вдалося зберегти колоду', + studyNow: 'Вчитися зараз', + }, + descriptions: { + emptyDeck: 'Додайте нотатку, щоб у цій колоді був матеріал для повторення.', + editorDefault: 'Сфокусована навчальна колода.', + editorVisual: 'Виберіть символ обкладинки для цієї колоди.', + notesSearchPlaceholder: 'Шукати нотатки…', + }, + dialogs: { + deleteDeckDescription: 'Це перемістить "{{title}}" до Кошика. Ви зможете відновити її пізніше.', + deleteDeckFallbackDescription: 'Це перемістить цю колоду до Кошика. Ви зможете відновити її пізніше.', + deleteDeckFallbackTitle: 'Видалити колоду?', + deleteDeckTitle: 'Видалити "{{title}}"?', + deleteNoteDescription: 'Це перемістить "{{title}}" до Кошика. Ви зможете відновити її пізніше.', + deleteNoteFallbackTitle: 'Видалити нотатку?', + deleteNoteTitle: 'Видалити "{{title}}"?', + }, + empty: { + noMatchingNotes: 'Немає відповідних нотаток', + noMatchingNotesDescription: 'Немає нотаток за запитом "{{query}}".', + thisDeckIsEmpty: 'Ця колода порожня', + }, + errors: { + couldNotCreateDeck: 'Не вдалося створити колоду', + couldNotDeleteDeck: 'Не вдалося видалити колоду', + couldNotDeleteNote: 'Не вдалося видалити нотатку', + couldNotLoadFolderPath: 'Не вдалося завантажити шлях до папки', + couldNotSaveDeck: 'Не вдалося зберегти колоду', + deckCouldNotLoad: 'Не вдалося завантажити колоду', + notesCouldNotLoad: 'Не вдалося завантажити нотатки', + notesMayBeOutOfDate: 'Нотатки можуть бути застарілими', + }, + fields: { + descriptionLabel: 'Опис колоди', + descriptionPlaceholder: 'Що ця колода допоможе вам повторювати?', + namePlaceholder: 'Назва колоди', + untitledDeck: 'Колода без назви', + untitledDeckLower: 'колода без назви', + }, + labels: { + createDeckTitle: 'Створити колоду', + deck: 'Колода', + deckNotesSearch: 'Пошук нотаток у колоді', + deckOverview: 'Огляд колоди', + decks: 'Колоди', + due: 'Повторити', + dueToday: 'До повторення сьогодні', + loadingDeck: 'Завантаження колоди', + mastery: 'Опанування', + notes: 'Нотатки', + }, + sort: { + ariaLabel: 'Сортувати колоди', + dueToday: 'До повторення сьогодні', + title: 'Назва', + updated: 'Оновлено', + }, + }, + errors: { + byType: { + conflict: 'Дані змінилися. Оновіть і спробуйте ще раз.', + forbidden: 'У вас немає дозволу на цю дію.', + notFound: 'Не вдалося знайти цей елемент.', + offline: 'Не вдається зв’язатися із сервісом.', + timeout: 'Це зайняло забагато часу. Спробуйте ще раз.', + unauthorized: 'Увійдіть, щоб продовжити.', + unavailable: 'Сервіс тимчасово недоступний.', + }, + fallback: { + unexpected: 'Неочікувана помилка', + }, + }, + folders: { + actions: { + createFolder: 'Створити папку', + deleteFolder: 'Видалити папку', + editFolder: 'Редагувати папку', + }, + descriptions: { + editorDefault: 'Папка для пов’язаних колод.', + }, + dialogs: { + deleteFolderDescription: 'Це перемістить "{{name}}" до Кошика. Ви зможете відновити її пізніше.', + deleteFolderFallbackDescription: 'Це перемістить цю папку до Кошика. Ви зможете відновити її пізніше.', + deleteFolderFallbackTitle: 'Видалити папку?', + deleteFolderTitle: 'Видалити "{{name}}"?', + }, + empty: { + noMatchesInFolder: 'У цій папці немає збігів', + noMatchesInFolderDescription: 'Немає папок, колод або нотаток за запитом "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'Не вдалося створити папку', + couldNotDeleteFolder: 'Не вдалося видалити папку', + couldNotLoadFolderPath: 'Не вдалося завантажити шлях до папки', + couldNotSaveFolder: 'Не вдалося зберегти папку', + folderCouldNotLoad: 'Не вдалося завантажити папку', + }, + fields: { + descriptionLabel: 'Опис папки', + descriptionPlaceholder: 'Що належить до цієї папки?', + namePlaceholder: 'Назва папки', + untitledFolder: 'Папка без назви', + }, + labels: { + createFolderTitle: 'Створити папку', + folder: 'Папка', + folders: 'Папки', + loadingFolder: 'Завантаження папки', + name: 'Назва', + updated: 'Оновлено', + }, + sort: { + ariaLabel: 'Сортувати папки', + name: 'Назва', + updated: 'Оновлено', + }, + }, + menu: { + conflicts: { + description: 'Якщо локальні й синхронізовані дані відрізнятимуться, елемент з’явиться тут.', + heading: 'Статус синхронізації', + title: 'Конфлікти', + noConflicts: 'Конфліктів не знайдено', + }, + labels: { + menu: 'Меню', + }, + sections: { + settings: { + description: 'Персоналізуйте середовище й уподобання', + title: 'Налаштування', + }, + trash: { + description: 'Відновлюйте або остаточно видаляйте вилучені елементи', + title: 'Кошик', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Закрити редактор', + openActions: 'Відкрити дії', + openWorkspaces: 'Відкрити робочі простори', + }, + items: { + home: 'Головна', + menu: 'Меню', + primary: 'Основне', + settings: 'Налаштування', + spaces: 'Простори', + trash: 'Кошик', + workspaces: 'Робочі простори', + }, + }, + notes: { + actions: { + addCloze: 'Додати cloze', + deleteNote: 'Видалити нотатку', + editNote: 'Редагувати нотатку', + hideDerivedCardsNote: 'Сховати примітку про похідні картки', + openNote: 'Відкрити {{title}}', + saveNote: 'Зберегти нотатку', + showDerivedCardsNote: 'Показати примітку про похідні картки', + }, + descriptions: { + clozeFormat: 'Кожна прихована частина стане карткою для повторення після збереження.', + clozeFormatPrefix: 'Оберніть прихований текст у', + derivedCardsHelper: 'Нотатки є джерелом істини для похідних карток.', + }, + dialogs: { + deleteNoteDescription: 'Це перемістить "{{title}}" до Кошика. Ви зможете відновити її пізніше.', + deleteNoteFallbackDescription: 'Це перемістить цю нотатку до Кошика. Ви зможете відновити її пізніше.', + deleteNoteFallbackTitle: 'Видалити нотатку?', + deleteNoteTitle: 'Видалити "{{title}}"?', + }, + errors: { + couldNotCreateNote: 'Не вдалося створити нотатку', + couldNotDeleteNote: 'Не вдалося видалити нотатку', + couldNotSaveNote: 'Не вдалося зберегти нотатку', + noteCouldNotLoad: 'Не вдалося завантажити нотатку', + }, + fields: { + back: 'Зворот', + backPlaceholder: 'Введіть зворотний бік', + bodyPlaceholder: 'Напишіть тіло нотатки з cloze-пропусками…', + front: 'Лицьовий бік', + frontPlaceholder: 'Введіть лицьовий бік', + noteBody: 'Тіло нотатки', + title: 'Назва', + titlePlaceholder: 'Додайте назву нотатки', + untitledCloze: 'Cloze без назви', + untitledNote: 'Нотатка без назви', + }, + labels: { + backUppercase: 'ЗВОРОТ', + basic: 'Базова', + basicLower: 'базова', + basicUppercase: 'БАЗОВА', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Формат cloze', + clozeUppercase: 'CLOZE', + deck: 'Колода', + derivedCards: 'ПОХІДНІ КАРТКИ', + due: 'До повторення', + frontUppercase: 'ЛИЦЬОВИЙ БІК', + inProgress: 'У процесі', + inProgressUppercase: 'У ПРОЦЕСІ', + loadingNote: 'Завантаження нотатки', + loadingNoteEditor: 'Завантаження редактора нотаток', + markdownFormatting: 'Форматування Markdown', + mastered: 'Опановано', + masteredUppercase: 'ОПАНОВАНО', + newNote: 'Нова нотатка', + noteBody: 'ТІЛО НОТАТКИ', + noteContent: 'Вміст нотатки', + noteDetails: 'Деталі нотатки', + noteMetadata: 'Метадані нотатки', + noteType: 'Тип нотатки', + notes: 'Нотатки', + reviewed: 'Повторено', + studyProgress: 'Прогрес навчання', + studyProgressUppercase: 'ПРОГРЕС НАВЧАННЯ', + titleUppercase: 'НАЗВА', + updated: 'Оновлено', + }, + sort: { + ariaLabel: 'Сортувати нотатки', + title: 'Назва', + updated: 'Оновлено', + }, + toolbar: { + bold: 'Жирний', + italic: 'Курсив', + link: 'Посилання', + list: 'Список', + }, + }, + review: { + actions: { + again: 'Знову', + backToDeck: 'Назад до колоди', + continueReview: 'Продовжити повторення', + easy: 'Легко', + good: 'Добре', + hard: 'Важко', + newNote: 'Нова нотатка', + showAnswer: 'Показати відповідь', + }, + errors: { + couldNotGradeCard: 'Не вдалося оцінити картку', + reviewCouldNotLoad: 'Не вдалося завантажити повторення', + reviewCouldNotStart: 'Не вдалося почати повторення', + summaryCouldNotLoad: 'Не вдалося завантажити підсумок повторення', + summaryNotAvailable: 'Підсумок повторення недоступний', + summaryNotComplete: 'Це повторення ще не завершене.', + }, + labels: { + cardsReviewed: 'Повторені картки', + deck: 'Колода', + duration: 'Тривалість', + loadingReview: 'Завантаження повторення', + loadingSummary: 'Завантаження підсумку', + progress: 'Прогрес повторення', + review: 'Повторення', + reviewComplete: 'Повторення завершено', + reviewed_one: 'Повторено {{count}}', + reviewed_few: 'Повторено {{count}}', + reviewed_many: 'Повторено {{count}}', + reviewed_other: 'Повторено {{count}}', + }, + summary: { + durationHoursMinutes: '{{hours}} год {{minutes}} хв', + durationMinutes: '{{minutes}} хв', + durationSeconds: '{{seconds}} с', + saved: 'Ваш прогрес збережено в цій колоді.', + }, + unavailable: { + description: 'Додайте нотатку, щоб ця колода потрапила до черги повторення.', + title: 'Немає карток для повторення', + }, + }, + search: { + actions: { + clearSearch: 'Очистити пошук', + }, + empty: { + noMatchesInWorkspace: 'У цьому робочому просторі немає збігів', + noMatchesInWorkspaceDescription: 'Немає папок, колод або нотаток за запитом "{{query}}".', + }, + errors: { + couldNotComplete: 'Не вдалося завершити пошук', + }, + labels: { + results: 'Результати пошуку', + resultsFor: 'Результати для "{{query}}"', + searchingContent: 'Пошук вмісту', + }, + resultGroups: { + deck: 'Колоди', + folder: 'Папки', + note: 'Нотатки', + }, + resultKinds: { + deck: 'колода', + folder: 'папка', + note: 'нотатка', + }, + }, + settings: { + actions: { + resetAll: 'Скинути всі налаштування', + resetSettings: 'Скинути налаштування', + resetToDefaults: 'Відновити типові', + }, + dialogs: { + fsrsErrorInvalidJson: 'Вставте коректний JSON з 21 числовим значенням.', + fsrsErrorInvalidParams_one: 'Введіть JSON-масив рівно з {{count}} скінченним числом.', + fsrsErrorInvalidParams_few: 'Введіть JSON-масив рівно з {{count}} скінченними числами.', + fsrsErrorInvalidParams_many: 'Введіть JSON-масив рівно з {{count}} скінченними числами.', + fsrsErrorInvalidParams_other: 'Введіть JSON-масив рівно з {{count}} скінченного числа.', + fsrsHelper: 'Це експертне перевизначення. Значення мають залишатися в порядку.', + fsrsJsonLabel: 'JSON параметрів FSRS', + fsrsTitle: 'Редагувати параметри FSRS', + fsrsDescription: 'Вставте JSON-масив з 21 числом, щоб перевизначити ваги scheduler.', + resetDescription: 'Це відновить часовий пояс, ліміти навчання й налаштування FSRS.', + resetDescriptionWithLanguage: 'Це відновить мову, часовий пояс, ліміти навчання й налаштування FSRS.', + resetTitle: 'Скинути всі налаштування?', + timezoneDescription: 'Шукайте місто або ідентифікатор часового поясу.', + timezoneSearchLabel: 'Пошук часових поясів', + timezoneSearchPlaceholder: 'Шукати часові пояси…', + timezoneTitle: 'Виберіть часовий пояс', + }, + errors: { + couldNotResetSettings: 'Не вдалося скинути налаштування', + couldNotSaveSettings: 'Не вдалося зберегти налаштування', + settingsCouldNotLoad: 'Не вдалося завантажити налаштування', + settingsUnavailable: 'Налаштування недоступні.', + }, + labels: { + appearance: 'Вигляд', + automatic: 'Автоматично', + fsrsParameters: 'Параметри FSRS', + general: 'Загальні', + language: 'Мова', + loadingSettings: 'Завантаження налаштувань', + masteryHorizon: 'Горизонт опанування', + newCardOrder: 'Порядок нових карток', + newCardsPerDay: 'Нових карток на день', + reviewCardsPerDay: 'Карток для повторення на день', + savingSettings: 'Збереження налаштувань', + schedule: 'Розклад', + searchNoTimezones: 'Немає відповідних часових поясів.', + settings: 'Налаштування', + settingsReset: 'Налаштування скинуто', + study: 'Навчання', + targetRecallProbability: 'Цільова ймовірність пригадування', + theme: 'Тема', + timezone: 'Часовий пояс', + }, + options: { + languageEnUs: 'Англійська (США)', + newCardsAfterReviews: 'Після повторень', + newCardsBeforeReviews: 'Перед повтореннями', + newCardsMixed: 'Змішано', + themeDark: 'Темна', + themeLight: 'Світла', + themeSystem: 'Системна', + timezoneSystem: 'Використовувати системний часовий пояс', + }, + rows: { + fsrsDescription: 'Ваги експертної моделі', + languageDescription: 'Мова інтерфейсу', + masteryHorizonDescription: 'Скільки днів картка має залишатися пригадуваною на цільовій імовірності або вище, щоб вважатися опанованою', + newCardOrderDescription: 'Порядок нових карток відносно повторень', + newCardsPerDayDescription: 'Максимум нових карток на день', + reviewCardsPerDayDescription: 'Максимум карток для повторення на день', + targetRecallProbabilityDescription: 'Мінімальна ймовірність пригадування на наступному запланованому повторенні', + timezoneDescription: 'Використовуйте автоматичний часовий пояс або виберіть місто.', + }, + }, + trash: { + actions: { + deletePermanently: 'Видалити назавжди', + empty: 'Очистити', + emptyTrash: 'Очистити кошик', + restore: 'Відновити', + restoringItem: 'Відновлення {{title}}', + }, + dialogs: { + deleteItemDescription: 'Це назавжди видалить "{{title}}". Дію не можна скасувати.', + deleteItemFallbackDescription: 'Це назавжди видалить цей елемент. Дію не можна скасувати.', + deleteItemFallbackTitle: 'Видалити елемент?', + deleteItemTitle: 'Видалити "{{title}}"?', + emptyTrashDescription: 'Це назавжди видалить усе з Кошика. Дію не можна скасувати.', + emptyTrashTitle: 'Очистити кошик?', + }, + empty: { + description: 'Елементи, які ви видаляєте, з’являтимуться тут перед остаточним видаленням.', + title: 'Кошик порожній', + }, + errors: { + couldNotDeleteItem: 'Не вдалося видалити елемент', + couldNotEmptyTrash: 'Не вдалося очистити Кошик', + couldNotRestoreItem: 'Не вдалося відновити елемент', + trashCouldNotLoad: 'Не вдалося завантажити Кошик', + trashMayBeOutOfDate: 'Кошик може бути застарілим', + }, + labels: { + deletedAge: 'Видалено {{value}}', + itemCount_one: '{{count}} елемент', + itemCount_few: '{{count}} елементи', + itemCount_many: '{{count}} елементів', + itemCount_other: '{{count}} елемента', + lastEmptied: 'Останнє очищення {{value}}', + loadingTrash: 'Завантаження Кошика', + originalLocation: 'Початкове розташування: {{location}}', + title: 'Кошик', + trashActions: 'Дії кошика для {{title}}', + }, + kinds: { + deck: 'Колода', + folder: 'Папка', + note: 'Нотатка', + workspace: 'Робочий простір', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Створити робочий простір', + deleteWorkspace: 'Видалити робочий простір', + editWorkspace: 'Редагувати робочий простір', + newWorkspace: 'Новий робочий простір', + openWorkspace: 'Відкрити {{title}}', + openingWorkspace: 'Відкриття {{title}}', + }, + descriptions: { + editorDefault: 'Навчальний контекст.', + editorVisual: 'Виберіть візуальний орієнтир для цього робочого простору.', + emptyList: 'Розділяйте колоди, нотатки й черги повторення за навчальним контекстом.', + }, + dialogs: { + deleteWorkspaceDescription: 'Це перемістить "{{title}}" до Кошика. Ви зможете відновити його пізніше.', + deleteWorkspaceFallbackDescription: 'Це перемістить цей робочий простір до Кошика. Ви зможете відновити його пізніше.', + deleteWorkspaceFallbackTitle: 'Видалити робочий простір?', + deleteWorkspaceTitle: 'Видалити "{{title}}"?', + }, + empty: { + startWithWorkspace: 'Почніть з робочого простору', + }, + errors: { + couldNotCreateWorkspace: 'Не вдалося створити робочий простір', + couldNotDeleteWorkspace: 'Не вдалося видалити робочий простір', + couldNotOpenWorkspace: 'Не вдалося відкрити робочий простір', + couldNotSaveWorkspace: 'Не вдалося зберегти робочий простір', + workspaceCouldNotLoad: 'Не вдалося завантажити робочий простір', + workspacesCouldNotLoad: 'Не вдалося завантажити робочі простори', + }, + fields: { + descriptionLabel: 'Опис робочого простору', + descriptionPlaceholder: 'Що належить до цього робочого простору?', + namePlaceholder: 'Назва робочого простору', + untitledWorkspace: 'Робочий простір без назви', + }, + labels: { + createWorkspaceTitle: 'Створити робочий простір', + loadingWorkspaces: 'Завантаження робочих просторів', + workspace: 'Робочий простір', + workspaces: 'Робочі простори', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/vi.ts b/ui/src/core/i18n/resources/vi.ts new file mode 100644 index 0000000..a0a7069 --- /dev/null +++ b/ui/src/core/i18n/resources/vi.ts @@ -0,0 +1,623 @@ +export const vi = { + bootstrap: { + error: { + fallbackMessage: 'Thử lại. Nếu lỗi vẫn xảy ra, hãy mở lại Clear.', + title: 'Không thể khởi động', + }, + loadingTitle: 'Đang chuẩn bị không gian học tập của bạn', + }, + common: { + actions: { + back: 'Quay lại', + cancel: 'Hủy', + checkAgain: 'Kiểm tra lại', + close: 'Đóng', + create: 'Tạo', + delete: 'Xóa', + dismissError: 'Đóng lỗi', + dismissStatus: 'Đóng trạng thái', + edit: 'Chỉnh sửa', + itemActions: 'Thao tác cho {{title}}', + reset: 'Đặt lại', + review: 'Ôn tập', + save: 'Lưu', + saveChanges: 'Lưu thay đổi', + tryAgain: 'Thử lại', + }, + labels: { + active: 'Đang hoạt động', + clear: 'Clear', + custom: 'Tùy chỉnh', + default: 'Mặc định', + loadingEditor: 'Đang tải trình chỉnh sửa', + name: 'Tên', + completedTask: 'Tác vụ đã hoàn tất', + description: 'Mô tả', + incompleteTask: 'Tác vụ chưa hoàn tất', + percentageInput: 'Phần trăm của {{label}}', + visual: 'Hình ảnh', + }, + status: { + actionFailed: 'Thao tác thất bại', + actionInProgress: 'Đang thực hiện thao tác', + }, + sort: { + ascending: 'Tăng', + column: 'Cột', + descending: 'Giảm', + direction: 'Hướng', + sort: 'Sắp xếp', + }, + search: { + label: 'Tìm kiếm', + }, + visualPicker: { + allLucideIcons: 'Tất cả biểu tượng Lucide', + browseIconsFor: 'Duyệt hoặc tìm biểu tượng cho {{label}}.', + chooseIcon: 'Chọn biểu tượng', + iconPicker: 'Bộ chọn biểu tượng cho {{label}}', + iconSearch: 'Tìm biểu tượng cho {{label}}', + iconsCouldNotLoad: 'Không thể tải biểu tượng.', + loadingIcons: 'Đang tải biểu tượng', + loadingMoreIcons: 'Đang tải thêm biểu tượng', + moreIcons: 'Thêm biểu tượng', + noIconsMatch: 'Không có biểu tượng nào khớp với "{{query}}".', + searchIconsPlaceholder: 'Tìm biểu tượng…', + selectedIcon: 'Đã chọn {{label}}', + }, + }, + dashboard: { + actions: { + create: 'Tạo', + newDeck: 'Bộ thẻ mới', + newFolder: 'Thư mục mới', + }, + descriptions: { + defaultWorkspace: 'Giữ bộ thẻ, thư mục và ghi chú cùng nhau.', + emptyWorkspace: 'Tạo một bộ thẻ, rồi thêm ghi chú để xây dựng hàng đợi ôn tập.', + emptyFolder: 'Tạo một bộ thẻ, rồi thêm ghi chú để xây dựng hàng đợi ôn tập.', + searchPlaceholder: 'Tìm thư mục, bộ thẻ và ghi chú…', + }, + empty: { + createFirstDeck: 'Tạo bộ thẻ đầu tiên', + }, + errors: { + couldNotDeleteDeck: 'Không thể xóa bộ thẻ', + couldNotDeleteFolder: 'Không thể xóa thư mục', + couldNotDeleteWorkspace: 'Không thể xóa không gian làm việc', + dashboardCouldNotOpen: 'Không thể mở bảng điều khiển', + decksCouldNotLoad: 'Không thể tải bộ thẻ', + decksMayBeOutOfDate: 'Bộ thẻ có thể đã lỗi thời', + foldersCouldNotLoad: 'Không thể tải thư mục', + foldersMayBeOutOfDate: 'Thư mục có thể đã lỗi thời', + workspaceCouldNotLoad: 'Không thể tải không gian làm việc', + }, + labels: { + dashboard: 'Bảng điều khiển', + loadingDashboard: 'Đang tải bảng điều khiển', + newItem: 'Mục mới', + }, + }, + dates: { + absolute: { + unavailable: 'Ngày không khả dụng', + }, + age: { + dayAgo_one: '{{count}} ngày trước', + dayAgo_other: '{{count}} ngày trước', + hourAgo_one: '{{count}} giờ trước', + hourAgo_other: '{{count}} giờ trước', + justNow: 'vừa xong', + minuteAgo_one: '{{count}} phút trước', + minuteAgo_other: '{{count}} phút trước', + unavailable: 'ngày không khả dụng', + weekAgo_one: '{{count}} tuần trước', + weekAgo_other: '{{count}} tuần trước', + }, + labels: { + deleted: 'Đã xóa {{value}}', + due: 'Đến hạn: {{value}}', + reviewed: 'Đã ôn tập: {{value}}', + updated: 'Đã cập nhật {{value}}', + updatedUppercase: 'ĐÃ CẬP NHẬT {{value}}', + }, + relative: { + dayAgo_one: '{{count}} ngày trước', + dayAgo_other: '{{count}} ngày trước', + inAMoment: 'Trong giây lát', + inDay_one: 'Trong {{count}} ngày', + inDay_other: 'Trong {{count}} ngày', + inMonth_one: 'Trong {{count}} tháng', + inMonth_other: 'Trong {{count}} tháng', + inWeek_one: 'Trong {{count}} tuần', + inWeek_other: 'Trong {{count}} tuần', + justNow: 'Vừa xong', + monthAgo_one: '{{count}} tháng trước', + monthAgo_other: '{{count}} tháng trước', + secondsAgoShort: '{{count}} giây trước', + minutesAgoShort: '{{count}} phút trước', + hoursAgoShort: '{{count}} giờ trước', + today: 'Hôm nay', + tomorrow: 'Ngày mai', + weekAgo_one: '{{count}} tuần trước', + weekAgo_other: '{{count}} tuần trước', + yesterday: 'Hôm qua', + }, + }, + decks: { + actions: { + actionMenu: 'Thao tác cho {{title}}', + createDeck: 'Tạo bộ thẻ', + createNote: 'Tạo ghi chú', + deleteDeck: 'Xóa bộ thẻ', + editDeck: 'Chỉnh sửa bộ thẻ', + newNote: 'Ghi chú mới', + openDeck: 'Mở bộ thẻ {{title}}', + saveDeck: 'Không thể lưu bộ thẻ', + studyNow: 'Học ngay', + }, + descriptions: { + emptyDeck: 'Thêm ghi chú để bộ thẻ này có nội dung ôn tập.', + editorDefault: 'Bộ thẻ học tập tập trung.', + editorVisual: 'Chọn một glyph bìa cho bộ thẻ này.', + notesSearchPlaceholder: 'Tìm ghi chú…', + }, + dialogs: { + deleteDeckDescription: 'Thao tác này chuyển "{{title}}" vào Thùng rác. Bạn có thể khôi phục sau.', + deleteDeckFallbackDescription: 'Thao tác này chuyển bộ thẻ này vào Thùng rác. Bạn có thể khôi phục sau.', + deleteDeckFallbackTitle: 'Xóa bộ thẻ?', + deleteDeckTitle: 'Xóa "{{title}}"?', + deleteNoteDescription: 'Thao tác này chuyển "{{title}}" vào Thùng rác. Bạn có thể khôi phục sau.', + deleteNoteFallbackTitle: 'Xóa ghi chú?', + deleteNoteTitle: 'Xóa "{{title}}"?', + }, + empty: { + noMatchingNotes: 'Không có ghi chú phù hợp', + noMatchingNotesDescription: 'Không có ghi chú nào khớp với "{{query}}".', + thisDeckIsEmpty: 'Bộ thẻ này đang trống', + }, + errors: { + couldNotCreateDeck: 'Không thể tạo bộ thẻ', + couldNotDeleteDeck: 'Không thể xóa bộ thẻ', + couldNotDeleteNote: 'Không thể xóa ghi chú', + couldNotLoadFolderPath: 'Không thể tải đường dẫn thư mục', + couldNotSaveDeck: 'Không thể lưu bộ thẻ', + deckCouldNotLoad: 'Không thể tải bộ thẻ', + notesCouldNotLoad: 'Không thể tải ghi chú', + notesMayBeOutOfDate: 'Ghi chú có thể đã lỗi thời', + }, + fields: { + descriptionLabel: 'Mô tả bộ thẻ', + descriptionPlaceholder: 'Bộ thẻ này giúp bạn ôn tập điều gì?', + namePlaceholder: 'Tên bộ thẻ', + untitledDeck: 'Bộ thẻ chưa đặt tên', + untitledDeckLower: 'bộ thẻ chưa đặt tên', + }, + labels: { + createDeckTitle: 'Tạo bộ thẻ', + deck: 'Bộ thẻ', + deckNotesSearch: 'Tìm ghi chú trong bộ thẻ', + deckOverview: 'Tổng quan bộ thẻ', + decks: 'Bộ thẻ', + due: 'Đến hạn', + dueToday: 'Đến hạn hôm nay', + loadingDeck: 'Đang tải bộ thẻ', + mastery: 'Mức thành thạo', + notes: 'Ghi chú', + }, + sort: { + ariaLabel: 'Sắp xếp bộ thẻ', + dueToday: 'Đến hạn hôm nay', + title: 'Tiêu đề', + updated: 'Đã cập nhật', + }, + }, + errors: { + byType: { + conflict: 'Dữ liệu đã thay đổi. Làm mới rồi thử lại.', + forbidden: 'Bạn không có quyền thực hiện việc này.', + notFound: 'Chúng tôi không tìm thấy mục này.', + offline: 'Không thể kết nối tới dịch vụ.', + timeout: 'Thao tác này mất quá lâu. Hãy thử lại.', + unauthorized: 'Đăng nhập để tiếp tục.', + unavailable: 'Dịch vụ tạm thời không khả dụng.', + }, + fallback: { + unexpected: 'Lỗi không mong muốn', + }, + }, + folders: { + actions: { + createFolder: 'Tạo thư mục', + deleteFolder: 'Xóa thư mục', + editFolder: 'Chỉnh sửa thư mục', + }, + descriptions: { + editorDefault: 'Thư mục cho các bộ thẻ liên quan.', + }, + dialogs: { + deleteFolderDescription: 'Thao tác này chuyển "{{name}}" vào Thùng rác. Bạn có thể khôi phục sau.', + deleteFolderFallbackDescription: 'Thao tác này chuyển thư mục này vào Thùng rác. Bạn có thể khôi phục sau.', + deleteFolderFallbackTitle: 'Xóa thư mục?', + deleteFolderTitle: 'Xóa "{{name}}"?', + }, + empty: { + noMatchesInFolder: 'Không có kết quả trong thư mục này', + noMatchesInFolderDescription: 'Không có thư mục, bộ thẻ hoặc ghi chú nào khớp với "{{query}}".', + }, + errors: { + couldNotCreateFolder: 'Không thể tạo thư mục', + couldNotDeleteFolder: 'Không thể xóa thư mục', + couldNotLoadFolderPath: 'Không thể tải đường dẫn thư mục', + couldNotSaveFolder: 'Không thể lưu thư mục', + folderCouldNotLoad: 'Không thể tải thư mục', + }, + fields: { + descriptionLabel: 'Mô tả thư mục', + descriptionPlaceholder: 'Những gì thuộc về thư mục này?', + namePlaceholder: 'Tên thư mục', + untitledFolder: 'Thư mục chưa đặt tên', + }, + labels: { + createFolderTitle: 'Tạo thư mục', + folder: 'Thư mục', + folders: 'Thư mục', + loadingFolder: 'Đang tải thư mục', + name: 'Tên', + updated: 'Đã cập nhật', + }, + sort: { + ariaLabel: 'Sắp xếp thư mục', + name: 'Tên', + updated: 'Đã cập nhật', + }, + }, + menu: { + conflicts: { + description: 'Nếu dữ liệu cục bộ và dữ liệu đã đồng bộ khác nhau, mục đó sẽ xuất hiện ở đây.', + heading: 'Trạng thái đồng bộ', + title: 'Xung đột', + noConflicts: 'Không tìm thấy xung đột', + }, + labels: { + menu: 'Menu', + }, + sections: { + settings: { + description: 'Cá nhân hóa môi trường và tùy chọn của bạn', + title: 'Cài đặt', + }, + trash: { + description: 'Khôi phục hoặc xóa vĩnh viễn các mục đã xóa', + title: 'Thùng rác', + }, + }, + }, + navigation: { + actions: { + closeEditor: 'Đóng trình chỉnh sửa', + openActions: 'Mở thao tác', + openWorkspaces: 'Mở không gian làm việc', + }, + items: { + home: 'Trang chủ', + menu: 'Menu', + primary: 'Chính', + settings: 'Cài đặt', + spaces: 'Không gian', + trash: 'Thùng rác', + workspaces: 'Không gian làm việc', + }, + }, + notes: { + actions: { + addCloze: 'Thêm cloze', + deleteNote: 'Xóa ghi chú', + editNote: 'Chỉnh sửa ghi chú', + hideDerivedCardsNote: 'Ẩn ghi chú về thẻ phát sinh', + openNote: 'Mở {{title}}', + saveNote: 'Lưu ghi chú', + showDerivedCardsNote: 'Hiện ghi chú về thẻ phát sinh', + }, + descriptions: { + clozeFormat: 'Mỗi phần bị ẩn sẽ trở thành thẻ ôn tập khi bạn lưu.', + clozeFormatPrefix: 'Bọc văn bản bị ẩn bằng', + derivedCardsHelper: 'Ghi chú là nguồn sự thật cho các thẻ phát sinh.', + }, + dialogs: { + deleteNoteDescription: 'Thao tác này chuyển "{{title}}" vào Thùng rác. Bạn có thể khôi phục sau.', + deleteNoteFallbackDescription: 'Thao tác này chuyển ghi chú này vào Thùng rác. Bạn có thể khôi phục sau.', + deleteNoteFallbackTitle: 'Xóa ghi chú?', + deleteNoteTitle: 'Xóa "{{title}}"?', + }, + errors: { + couldNotCreateNote: 'Không thể tạo ghi chú', + couldNotDeleteNote: 'Không thể xóa ghi chú', + couldNotSaveNote: 'Không thể lưu ghi chú', + noteCouldNotLoad: 'Không thể tải ghi chú', + }, + fields: { + back: 'Mặt sau', + backPlaceholder: 'Nhập mặt sau', + bodyPlaceholder: 'Viết nội dung ghi chú với cloze deletion…', + front: 'Mặt trước', + frontPlaceholder: 'Nhập mặt trước', + noteBody: 'Nội dung ghi chú', + title: 'Tiêu đề', + titlePlaceholder: 'Thêm tiêu đề ghi chú', + untitledCloze: 'Cloze chưa đặt tên', + untitledNote: 'Ghi chú chưa đặt tên', + }, + labels: { + backUppercase: 'MẶT SAU', + basic: 'Cơ bản', + basicLower: 'cơ bản', + basicUppercase: 'CƠ BẢN', + cloze: 'Cloze', + clozeLower: 'cloze', + clozeFormat: 'Định dạng cloze', + clozeUppercase: 'CLOZE', + deck: 'Bộ thẻ', + derivedCards: 'THẺ PHÁT SINH', + due: 'Đến hạn', + frontUppercase: 'MẶT TRƯỚC', + inProgress: 'Đang tiến hành', + inProgressUppercase: 'ĐANG TIẾN HÀNH', + loadingNote: 'Đang tải ghi chú', + loadingNoteEditor: 'Đang tải trình chỉnh sửa ghi chú', + markdownFormatting: 'Định dạng Markdown', + mastered: 'Đã thành thạo', + masteredUppercase: 'ĐÃ THÀNH THẠO', + newNote: 'Ghi chú mới', + noteBody: 'NỘI DUNG GHI CHÚ', + noteContent: 'Nội dung ghi chú', + noteDetails: 'Chi tiết ghi chú', + noteMetadata: 'Siêu dữ liệu ghi chú', + noteType: 'Loại ghi chú', + notes: 'Ghi chú', + reviewed: 'Đã ôn tập', + studyProgress: 'Tiến độ học tập', + studyProgressUppercase: 'TIẾN ĐỘ HỌC TẬP', + titleUppercase: 'TIÊU ĐỀ', + updated: 'Đã cập nhật', + }, + sort: { + ariaLabel: 'Sắp xếp ghi chú', + title: 'Tiêu đề', + updated: 'Đã cập nhật', + }, + toolbar: { + bold: 'Đậm', + italic: 'Nghiêng', + link: 'Liên kết', + list: 'Danh sách', + }, + }, + review: { + actions: { + again: 'Lại', + backToDeck: 'Quay lại bộ thẻ', + continueReview: 'Tiếp tục ôn tập', + easy: 'Dễ', + good: 'Tốt', + hard: 'Khó', + newNote: 'Ghi chú mới', + showAnswer: 'Hiện đáp án', + }, + errors: { + couldNotGradeCard: 'Không thể chấm thẻ', + reviewCouldNotLoad: 'Không thể tải phiên ôn tập', + reviewCouldNotStart: 'Không thể bắt đầu phiên ôn tập', + summaryCouldNotLoad: 'Không thể tải tóm tắt ôn tập', + summaryNotAvailable: 'Tóm tắt ôn tập không khả dụng', + summaryNotComplete: 'Phiên ôn tập này chưa hoàn tất.', + }, + labels: { + cardsReviewed: 'Thẻ đã ôn tập', + deck: 'Bộ thẻ', + duration: 'Thời lượng', + loadingReview: 'Đang tải phiên ôn tập', + loadingSummary: 'Đang tải tóm tắt', + progress: 'Tiến độ ôn tập', + review: 'Ôn tập', + reviewComplete: 'Ôn tập hoàn tất', + reviewed_one: 'Đã ôn tập {{count}}', + reviewed_other: 'Đã ôn tập {{count}}', + }, + summary: { + durationHoursMinutes: '{{hours}} giờ {{minutes}} phút', + durationMinutes: '{{minutes}} phút', + durationSeconds: '{{seconds}} giây', + saved: 'Tiến độ của bạn đã được lưu vào bộ thẻ này.', + }, + unavailable: { + description: 'Thêm ghi chú để bộ thẻ này có thể vào hàng đợi ôn tập.', + title: 'Không có thẻ để ôn tập', + }, + }, + search: { + actions: { + clearSearch: 'Xóa tìm kiếm', + }, + empty: { + noMatchesInWorkspace: 'Không có kết quả trong không gian làm việc này', + noMatchesInWorkspaceDescription: 'Không có thư mục, bộ thẻ hoặc ghi chú nào khớp với "{{query}}".', + }, + errors: { + couldNotComplete: 'Không thể hoàn tất tìm kiếm', + }, + labels: { + results: 'Kết quả tìm kiếm', + resultsFor: 'Kết quả cho "{{query}}"', + searchingContent: 'Đang tìm nội dung', + }, + resultGroups: { + deck: 'Bộ thẻ', + folder: 'Thư mục', + note: 'Ghi chú', + }, + resultKinds: { + deck: 'bộ thẻ', + folder: 'thư mục', + note: 'ghi chú', + }, + }, + settings: { + actions: { + resetAll: 'Đặt lại tất cả cài đặt', + resetSettings: 'Đặt lại cài đặt', + resetToDefaults: 'Khôi phục mặc định', + }, + dialogs: { + fsrsErrorInvalidJson: 'Dán JSON hợp lệ với 21 giá trị số.', + fsrsErrorInvalidParams_one: 'Nhập một mảng JSON có đúng {{count}} số hữu hạn.', + fsrsErrorInvalidParams_other: 'Nhập một mảng JSON có đúng {{count}} số hữu hạn.', + fsrsHelper: 'Đây là ghi đè nâng cao. Các giá trị phải giữ đúng thứ tự.', + fsrsJsonLabel: 'JSON tham số FSRS', + fsrsTitle: 'Chỉnh sửa tham số FSRS', + fsrsDescription: 'Dán một mảng JSON gồm 21 số để ghi đè trọng số của scheduler.', + resetDescription: 'Thao tác này khôi phục múi giờ, giới hạn học tập và cài đặt FSRS.', + resetDescriptionWithLanguage: 'Thao tác này khôi phục ngôn ngữ, múi giờ, giới hạn học tập và cài đặt FSRS.', + resetTitle: 'Đặt lại tất cả cài đặt?', + timezoneDescription: 'Tìm kiếm thành phố hoặc mã định danh múi giờ.', + timezoneSearchLabel: 'Tìm múi giờ', + timezoneSearchPlaceholder: 'Tìm múi giờ…', + timezoneTitle: 'Chọn múi giờ', + }, + errors: { + couldNotResetSettings: 'Không thể đặt lại cài đặt', + couldNotSaveSettings: 'Không thể lưu cài đặt', + settingsCouldNotLoad: 'Không thể tải cài đặt', + settingsUnavailable: 'Cài đặt không khả dụng.', + }, + labels: { + appearance: 'Giao diện', + automatic: 'Tự động', + fsrsParameters: 'Tham số FSRS', + general: 'Chung', + language: 'Ngôn ngữ', + loadingSettings: 'Đang tải cài đặt', + masteryHorizon: 'Ngưỡng thành thạo', + newCardOrder: 'Thứ tự thẻ mới', + newCardsPerDay: 'Thẻ mới mỗi ngày', + reviewCardsPerDay: 'Thẻ ôn tập mỗi ngày', + savingSettings: 'Đang lưu cài đặt', + schedule: 'Lịch', + searchNoTimezones: 'Không có múi giờ phù hợp.', + settings: 'Cài đặt', + settingsReset: 'Đã đặt lại cài đặt', + study: 'Học tập', + targetRecallProbability: 'Xác suất nhớ mục tiêu', + theme: 'Chủ đề', + timezone: 'Múi giờ', + }, + options: { + languageEnUs: 'Tiếng Anh (Mỹ)', + newCardsAfterReviews: 'Sau ôn tập', + newCardsBeforeReviews: 'Trước ôn tập', + newCardsMixed: 'Trộn', + themeDark: 'Tối', + themeLight: 'Sáng', + themeSystem: 'Hệ thống', + timezoneSystem: 'Dùng múi giờ hệ thống', + }, + rows: { + fsrsDescription: 'Trọng số mô hình nâng cao', + languageDescription: 'Ngôn ngữ giao diện', + masteryHorizonDescription: 'Số ngày một thẻ phải duy trì khả năng nhớ ở mức xác suất mục tiêu hoặc cao hơn để được tính là đã thành thạo', + newCardOrderDescription: 'Thứ tự thẻ mới so với thẻ ôn tập', + newCardsPerDayDescription: 'Số thẻ mới tối đa mỗi ngày', + reviewCardsPerDayDescription: 'Số thẻ ôn tập tối đa mỗi ngày', + targetRecallProbabilityDescription: 'Xác suất nhớ tối thiểu ở lần ôn tập đã lên lịch tiếp theo', + timezoneDescription: 'Dùng múi giờ tự động hoặc chọn một thành phố.', + }, + }, + trash: { + actions: { + deletePermanently: 'Xóa vĩnh viễn', + empty: 'Dọn sạch', + emptyTrash: 'Dọn Thùng rác', + restore: 'Khôi phục', + restoringItem: 'Đang khôi phục {{title}}', + }, + dialogs: { + deleteItemDescription: 'Thao tác này xóa vĩnh viễn "{{title}}". Không thể hoàn tác.', + deleteItemFallbackDescription: 'Thao tác này xóa vĩnh viễn mục này. Không thể hoàn tác.', + deleteItemFallbackTitle: 'Xóa mục?', + deleteItemTitle: 'Xóa "{{title}}"?', + emptyTrashDescription: 'Thao tác này xóa vĩnh viễn mọi thứ trong Thùng rác. Không thể hoàn tác.', + emptyTrashTitle: 'Dọn Thùng rác?', + }, + empty: { + description: 'Các mục bạn xóa sẽ xuất hiện ở đây trước khi bị xóa vĩnh viễn.', + title: 'Thùng rác đang trống', + }, + errors: { + couldNotDeleteItem: 'Không thể xóa mục', + couldNotEmptyTrash: 'Không thể dọn Thùng rác', + couldNotRestoreItem: 'Không thể khôi phục mục', + trashCouldNotLoad: 'Không thể tải Thùng rác', + trashMayBeOutOfDate: 'Thùng rác có thể đã lỗi thời', + }, + labels: { + deletedAge: 'Đã xóa {{value}}', + itemCount_one: '{{count}} mục', + itemCount_other: '{{count}} mục', + lastEmptied: 'Dọn lần cuối {{value}}', + loadingTrash: 'Đang tải Thùng rác', + originalLocation: 'Vị trí ban đầu: {{location}}', + title: 'Thùng rác', + trashActions: 'Thao tác Thùng rác cho {{title}}', + }, + kinds: { + deck: 'Bộ thẻ', + folder: 'Thư mục', + note: 'Ghi chú', + workspace: 'Không gian làm việc', + }, + }, + workspaces: { + actions: { + createWorkspace: 'Tạo không gian làm việc', + deleteWorkspace: 'Xóa không gian làm việc', + editWorkspace: 'Chỉnh sửa không gian làm việc', + newWorkspace: 'Không gian làm việc mới', + openWorkspace: 'Mở {{title}}', + openingWorkspace: 'Đang mở {{title}}', + }, + descriptions: { + editorDefault: 'Ngữ cảnh học tập.', + editorVisual: 'Chọn điểm neo hình ảnh cho không gian làm việc này.', + emptyList: 'Tách bộ thẻ, ghi chú và hàng đợi ôn tập theo ngữ cảnh học tập.', + }, + dialogs: { + deleteWorkspaceDescription: 'Thao tác này chuyển "{{title}}" vào Thùng rác. Bạn có thể khôi phục sau.', + deleteWorkspaceFallbackDescription: 'Thao tác này chuyển không gian làm việc này vào Thùng rác. Bạn có thể khôi phục sau.', + deleteWorkspaceFallbackTitle: 'Xóa không gian làm việc?', + deleteWorkspaceTitle: 'Xóa "{{title}}"?', + }, + empty: { + startWithWorkspace: 'Bắt đầu với một không gian làm việc', + }, + errors: { + couldNotCreateWorkspace: 'Không thể tạo không gian làm việc', + couldNotDeleteWorkspace: 'Không thể xóa không gian làm việc', + couldNotOpenWorkspace: 'Không thể mở không gian làm việc', + couldNotSaveWorkspace: 'Không thể lưu không gian làm việc', + workspaceCouldNotLoad: 'Không thể tải không gian làm việc', + workspacesCouldNotLoad: 'Không thể tải không gian làm việc', + }, + fields: { + descriptionLabel: 'Mô tả không gian làm việc', + descriptionPlaceholder: 'Những gì thuộc về không gian làm việc này?', + namePlaceholder: 'Tên không gian làm việc', + untitledWorkspace: 'Không gian làm việc chưa đặt tên', + }, + labels: { + createWorkspaceTitle: 'Tạo không gian làm việc', + loadingWorkspaces: 'Đang tải không gian làm việc', + workspace: 'Không gian làm việc', + workspaces: 'Không gian làm việc', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/zh-Hans.ts b/ui/src/core/i18n/resources/zh-Hans.ts new file mode 100644 index 0000000..002ad43 --- /dev/null +++ b/ui/src/core/i18n/resources/zh-Hans.ts @@ -0,0 +1,623 @@ +export const zhHans = { + bootstrap: { + error: { + fallbackMessage: '请重试。如果问题仍然存在,请重新打开 Clear。', + title: '无法启动', + }, + loadingTitle: '正在准备你的学习空间', + }, + common: { + actions: { + back: '返回', + cancel: '取消', + checkAgain: '再次检查', + close: '关闭', + create: '创建', + delete: '删除', + dismissError: '关闭错误', + dismissStatus: '关闭状态', + edit: '编辑', + itemActions: '{{title}} 操作', + reset: '重置', + review: '复习', + save: '保存', + saveChanges: '保存更改', + tryAgain: '重试', + }, + labels: { + active: '启用', + clear: 'Clear', + custom: '自定义', + default: '默认', + loadingEditor: '正在加载编辑器', + name: '名称', + completedTask: '已完成任务', + description: '描述', + incompleteTask: '未完成任务', + percentageInput: '{{label}} 百分比', + visual: '视觉', + }, + status: { + actionFailed: '操作失败', + actionInProgress: '操作进行中', + }, + sort: { + ascending: '升序', + column: '列', + descending: '降序', + direction: '方向', + sort: '排序', + }, + search: { + label: '搜索', + }, + visualPicker: { + allLucideIcons: '所有 Lucide 图标', + browseIconsFor: '浏览或搜索 {{label}} 的图标。', + chooseIcon: '选择图标', + iconPicker: '{{label}} 图标选择器', + iconSearch: '{{label}} 图标搜索', + iconsCouldNotLoad: '无法加载图标。', + loadingIcons: '正在加载图标', + loadingMoreIcons: '正在加载更多图标', + moreIcons: '更多图标', + noIconsMatch: '没有图标匹配 "{{query}}"。', + searchIconsPlaceholder: '搜索图标…', + selectedIcon: '已选择 {{label}}', + }, + }, + dashboard: { + actions: { + create: '创建', + newDeck: '新建牌组', + newFolder: '新建文件夹', + }, + descriptions: { + defaultWorkspace: '将牌组、文件夹和笔记放在一起。', + emptyWorkspace: '创建一个牌组,然后添加笔记来建立复习队列。', + emptyFolder: '创建一个牌组,然后添加笔记来建立复习队列。', + searchPlaceholder: '搜索文件夹、牌组和笔记…', + }, + empty: { + createFirstDeck: '创建你的第一个牌组', + }, + errors: { + couldNotDeleteDeck: '无法删除牌组', + couldNotDeleteFolder: '无法删除文件夹', + couldNotDeleteWorkspace: '无法删除工作区', + dashboardCouldNotOpen: '无法打开仪表板', + decksCouldNotLoad: '无法加载牌组', + decksMayBeOutOfDate: '牌组可能已过期', + foldersCouldNotLoad: '无法加载文件夹', + foldersMayBeOutOfDate: '文件夹可能已过期', + workspaceCouldNotLoad: '无法加载工作区', + }, + labels: { + dashboard: '仪表板', + loadingDashboard: '正在加载仪表板', + newItem: '新项目', + }, + }, + dates: { + absolute: { + unavailable: '日期不可用', + }, + age: { + dayAgo_one: '{{count}} 天前', + dayAgo_other: '{{count}} 天前', + hourAgo_one: '{{count}} 小时前', + hourAgo_other: '{{count}} 小时前', + justNow: '刚刚', + minuteAgo_one: '{{count}} 分钟前', + minuteAgo_other: '{{count}} 分钟前', + unavailable: '日期不可用', + weekAgo_one: '{{count}} 周前', + weekAgo_other: '{{count}} 周前', + }, + labels: { + deleted: '已删除 {{value}}', + due: '到期:{{value}}', + reviewed: '已复习:{{value}}', + updated: '已更新 {{value}}', + updatedUppercase: '已更新 {{value}}', + }, + relative: { + dayAgo_one: '{{count}} 天前', + dayAgo_other: '{{count}} 天前', + inAMoment: '马上', + inDay_one: '{{count}} 天后', + inDay_other: '{{count}} 天后', + inMonth_one: '{{count}} 个月后', + inMonth_other: '{{count}} 个月后', + inWeek_one: '{{count}} 周后', + inWeek_other: '{{count}} 周后', + justNow: '刚刚', + monthAgo_one: '{{count}} 个月前', + monthAgo_other: '{{count}} 个月前', + secondsAgoShort: '{{count}} 秒前', + minutesAgoShort: '{{count}} 分钟前', + hoursAgoShort: '{{count}} 小时前', + today: '今天', + tomorrow: '明天', + weekAgo_one: '{{count}} 周前', + weekAgo_other: '{{count}} 周前', + yesterday: '昨天', + }, + }, + decks: { + actions: { + actionMenu: '{{title}} 操作', + createDeck: '创建牌组', + createNote: '创建笔记', + deleteDeck: '删除牌组', + editDeck: '编辑牌组', + newNote: '新建笔记', + openDeck: '打开 {{title}} 牌组', + saveDeck: '无法保存牌组', + studyNow: '立即学习', + }, + descriptions: { + emptyDeck: '添加一条笔记,让这个牌组有可复习的内容。', + editorDefault: '专注学习牌组。', + editorVisual: '为这个牌组选择封面符号。', + notesSearchPlaceholder: '搜索笔记…', + }, + dialogs: { + deleteDeckDescription: '这会将 "{{title}}" 移至回收站。你稍后可以恢复它。', + deleteDeckFallbackDescription: '这会将此牌组移至回收站。你稍后可以恢复它。', + deleteDeckFallbackTitle: '删除牌组?', + deleteDeckTitle: '删除 "{{title}}"?', + deleteNoteDescription: '这会将 "{{title}}" 移至回收站。你稍后可以恢复它。', + deleteNoteFallbackTitle: '删除笔记?', + deleteNoteTitle: '删除 "{{title}}"?', + }, + empty: { + noMatchingNotes: '没有匹配的笔记', + noMatchingNotesDescription: '没有笔记匹配 "{{query}}"。', + thisDeckIsEmpty: '这个牌组是空的', + }, + errors: { + couldNotCreateDeck: '无法创建牌组', + couldNotDeleteDeck: '无法删除牌组', + couldNotDeleteNote: '无法删除笔记', + couldNotLoadFolderPath: '无法加载文件夹路径', + couldNotSaveDeck: '无法保存牌组', + deckCouldNotLoad: '无法加载牌组', + notesCouldNotLoad: '无法加载笔记', + notesMayBeOutOfDate: '笔记可能已过期', + }, + fields: { + descriptionLabel: '牌组描述', + descriptionPlaceholder: '这个牌组会帮助你复习什么?', + namePlaceholder: '牌组名称', + untitledDeck: '未命名牌组', + untitledDeckLower: '未命名牌组', + }, + labels: { + createDeckTitle: '创建牌组', + deck: '牌组', + deckNotesSearch: '牌组笔记搜索', + deckOverview: '牌组概览', + decks: '牌组', + due: '到期', + dueToday: '今日到期', + loadingDeck: '正在加载牌组', + mastery: '掌握度', + notes: '笔记', + }, + sort: { + ariaLabel: '排序牌组', + dueToday: '今日到期', + title: '标题', + updated: '更新时间', + }, + }, + errors: { + byType: { + conflict: '数据已更改。请刷新后重试。', + forbidden: '你没有权限执行此操作。', + notFound: '找不到此项目。', + offline: '无法连接到服务。', + timeout: '耗时过长。请重试。', + unauthorized: '请登录以继续。', + unavailable: '服务暂时不可用。', + }, + fallback: { + unexpected: '意外错误', + }, + }, + folders: { + actions: { + createFolder: '创建文件夹', + deleteFolder: '删除文件夹', + editFolder: '编辑文件夹', + }, + descriptions: { + editorDefault: '用于相关牌组的文件夹。', + }, + dialogs: { + deleteFolderDescription: '这会将 "{{name}}" 移至回收站。你稍后可以恢复它。', + deleteFolderFallbackDescription: '这会将此文件夹移至回收站。你稍后可以恢复它。', + deleteFolderFallbackTitle: '删除文件夹?', + deleteFolderTitle: '删除 "{{name}}"?', + }, + empty: { + noMatchesInFolder: '此文件夹中没有匹配项', + noMatchesInFolderDescription: '没有文件夹、牌组或笔记匹配 "{{query}}"。', + }, + errors: { + couldNotCreateFolder: '无法创建文件夹', + couldNotDeleteFolder: '无法删除文件夹', + couldNotLoadFolderPath: '无法加载文件夹路径', + couldNotSaveFolder: '无法保存文件夹', + folderCouldNotLoad: '无法加载文件夹', + }, + fields: { + descriptionLabel: '文件夹描述', + descriptionPlaceholder: '这个文件夹里放什么?', + namePlaceholder: '文件夹名称', + untitledFolder: '未命名文件夹', + }, + labels: { + createFolderTitle: '创建文件夹', + folder: '文件夹', + folders: '文件夹', + loadingFolder: '正在加载文件夹', + name: '名称', + updated: '更新时间', + }, + sort: { + ariaLabel: '排序文件夹', + name: '名称', + updated: '更新时间', + }, + }, + menu: { + conflicts: { + description: '如果本地数据和同步数据不一致,项目会显示在这里。', + heading: '同步状态', + title: '冲突', + noConflicts: '未发现冲突', + }, + labels: { + menu: '菜单', + }, + sections: { + settings: { + description: '个性化你的环境和偏好', + title: '设置', + }, + trash: { + description: '恢复或永久删除已移除的项目', + title: '回收站', + }, + }, + }, + navigation: { + actions: { + closeEditor: '关闭编辑器', + openActions: '打开操作', + openWorkspaces: '打开工作区', + }, + items: { + home: '首页', + menu: '菜单', + primary: '主要', + settings: '设置', + spaces: '空间', + trash: '回收站', + workspaces: '工作区', + }, + }, + notes: { + actions: { + addCloze: '添加填空', + deleteNote: '删除笔记', + editNote: '编辑笔记', + hideDerivedCardsNote: '隐藏派生卡片提示', + openNote: '打开 {{title}}', + saveNote: '保存笔记', + showDerivedCardsNote: '显示派生卡片提示', + }, + descriptions: { + clozeFormat: '保存后,每个隐藏部分都会成为一张复习卡片。', + clozeFormatPrefix: '用以下标记包裹隐藏文本', + derivedCardsHelper: '笔记是派生卡片的事实来源。', + }, + dialogs: { + deleteNoteDescription: '这会将 "{{title}}" 移至回收站。你稍后可以恢复它。', + deleteNoteFallbackDescription: '这会将此笔记移至回收站。你稍后可以恢复它。', + deleteNoteFallbackTitle: '删除笔记?', + deleteNoteTitle: '删除 "{{title}}"?', + }, + errors: { + couldNotCreateNote: '无法创建笔记', + couldNotDeleteNote: '无法删除笔记', + couldNotSaveNote: '无法保存笔记', + noteCouldNotLoad: '无法加载笔记', + }, + fields: { + back: '背面', + backPlaceholder: '输入背面', + bodyPlaceholder: '用填空删除编写笔记正文…', + front: '正面', + frontPlaceholder: '输入正面', + noteBody: '笔记正文', + title: '标题', + titlePlaceholder: '添加笔记标题', + untitledCloze: '未命名填空', + untitledNote: '未命名笔记', + }, + labels: { + backUppercase: '背面', + basic: '基础', + basicLower: '基础', + basicUppercase: '基础', + cloze: '填空', + clozeLower: '填空', + clozeFormat: '填空格式', + clozeUppercase: '填空', + deck: '牌组', + derivedCards: '派生卡片', + due: '到期', + frontUppercase: '正面', + inProgress: '进行中', + inProgressUppercase: '进行中', + loadingNote: '正在加载笔记', + loadingNoteEditor: '正在加载笔记编辑器', + markdownFormatting: 'Markdown 格式', + mastered: '已掌握', + masteredUppercase: '已掌握', + newNote: '新建笔记', + noteBody: '笔记正文', + noteContent: '笔记内容', + noteDetails: '笔记详情', + noteMetadata: '笔记元数据', + noteType: '笔记类型', + notes: '笔记', + reviewed: '已复习', + studyProgress: '学习进度', + studyProgressUppercase: '学习进度', + titleUppercase: '标题', + updated: '更新时间', + }, + sort: { + ariaLabel: '排序笔记', + title: '标题', + updated: '更新时间', + }, + toolbar: { + bold: '加粗', + italic: '斜体', + link: '链接', + list: '列表', + }, + }, + review: { + actions: { + again: '重来', + backToDeck: '返回牌组', + continueReview: '继续复习', + easy: '简单', + good: '良好', + hard: '困难', + newNote: '新建笔记', + showAnswer: '显示答案', + }, + errors: { + couldNotGradeCard: '无法评分卡片', + reviewCouldNotLoad: '无法加载复习', + reviewCouldNotStart: '无法开始复习', + summaryCouldNotLoad: '无法加载复习总结', + summaryNotAvailable: '复习总结不可用', + summaryNotComplete: '这次复习尚未完成。', + }, + labels: { + cardsReviewed: '已复习卡片', + deck: '牌组', + duration: '时长', + loadingReview: '正在加载复习', + loadingSummary: '正在加载总结', + progress: '复习进度', + review: '复习', + reviewComplete: '复习完成', + reviewed_one: '已复习 {{count}} 张', + reviewed_other: '已复习 {{count}} 张', + }, + summary: { + durationHoursMinutes: '{{hours}} 小时 {{minutes}} 分钟', + durationMinutes: '{{minutes}} 分钟', + durationSeconds: '{{seconds}} 秒', + saved: '你的进度已保存到这个牌组。', + }, + unavailable: { + description: '添加一条笔记,让这个牌组可以进入复习队列。', + title: '没有可复习的卡片', + }, + }, + search: { + actions: { + clearSearch: '清除搜索', + }, + empty: { + noMatchesInWorkspace: '此工作区中没有匹配项', + noMatchesInWorkspaceDescription: '没有文件夹、牌组或笔记匹配 "{{query}}"。', + }, + errors: { + couldNotComplete: '无法完成搜索', + }, + labels: { + results: '搜索结果', + resultsFor: '"{{query}}" 的结果', + searchingContent: '正在搜索内容', + }, + resultGroups: { + deck: '牌组', + folder: '文件夹', + note: '笔记', + }, + resultKinds: { + deck: '牌组', + folder: '文件夹', + note: '笔记', + }, + }, + settings: { + actions: { + resetAll: '重置所有设置', + resetSettings: '重置设置', + resetToDefaults: '恢复默认值', + }, + dialogs: { + fsrsErrorInvalidJson: '请粘贴包含 21 个数值的有效 JSON。', + fsrsErrorInvalidParams_one: '请输入正好包含 {{count}} 个有限数的 JSON 数组。', + fsrsErrorInvalidParams_other: '请输入正好包含 {{count}} 个有限数的 JSON 数组。', + fsrsHelper: '这是专家级覆盖设置。值必须保持顺序。', + fsrsJsonLabel: 'FSRS 参数 JSON', + fsrsTitle: '编辑 FSRS 参数', + fsrsDescription: '粘贴包含 21 个数字的 JSON 数组以覆盖 scheduler 权重。', + resetDescription: '这会恢复时区、学习上限和 FSRS 设置。', + resetDescriptionWithLanguage: '这会恢复语言、时区、学习上限和 FSRS 设置。', + resetTitle: '重置所有设置?', + timezoneDescription: '搜索城市或时区标识符。', + timezoneSearchLabel: '搜索时区', + timezoneSearchPlaceholder: '搜索时区…', + timezoneTitle: '选择时区', + }, + errors: { + couldNotResetSettings: '无法重置设置', + couldNotSaveSettings: '无法保存设置', + settingsCouldNotLoad: '无法加载设置', + settingsUnavailable: '设置不可用。', + }, + labels: { + appearance: '外观', + automatic: '自动', + fsrsParameters: 'FSRS 参数', + general: '通用', + language: '语言', + loadingSettings: '正在加载设置', + masteryHorizon: '掌握期限', + newCardOrder: '新卡顺序', + newCardsPerDay: '每日新卡', + reviewCardsPerDay: '每日复习卡', + savingSettings: '正在保存设置', + schedule: '计划', + searchNoTimezones: '没有匹配的时区。', + settings: '设置', + settingsReset: '设置已重置', + study: '学习', + targetRecallProbability: '目标回忆概率', + theme: '主题', + timezone: '时区', + }, + options: { + languageEnUs: '英语(美国)', + newCardsAfterReviews: '复习之后', + newCardsBeforeReviews: '复习之前', + newCardsMixed: '混合', + themeDark: '深色', + themeLight: '浅色', + themeSystem: '系统', + timezoneSystem: '使用系统时区', + }, + rows: { + fsrsDescription: '专家模型权重', + languageDescription: '界面语言', + masteryHorizonDescription: '卡片必须在目标概率或以上保持可回忆的天数,才算已掌握', + newCardOrderDescription: '新卡相对于复习的顺序', + newCardsPerDayDescription: '每日最多新卡数', + reviewCardsPerDayDescription: '每日最多复习卡数', + targetRecallProbabilityDescription: '下次计划复习时的最低回忆概率', + timezoneDescription: '使用自动时区或选择城市。', + }, + }, + trash: { + actions: { + deletePermanently: '永久删除', + empty: '清空', + emptyTrash: '清空回收站', + restore: '恢复', + restoringItem: '正在恢复 {{title}}', + }, + dialogs: { + deleteItemDescription: '这会永久删除 "{{title}}"。此操作无法撤销。', + deleteItemFallbackDescription: '这会永久删除此项目。此操作无法撤销。', + deleteItemFallbackTitle: '删除项目?', + deleteItemTitle: '删除 "{{title}}"?', + emptyTrashDescription: '这会永久删除回收站中的所有内容。此操作无法撤销。', + emptyTrashTitle: '清空回收站?', + }, + empty: { + description: '你删除的项目会在永久移除前显示在这里。', + title: '回收站为空', + }, + errors: { + couldNotDeleteItem: '无法删除项目', + couldNotEmptyTrash: '无法清空回收站', + couldNotRestoreItem: '无法恢复项目', + trashCouldNotLoad: '无法加载回收站', + trashMayBeOutOfDate: '回收站可能已过期', + }, + labels: { + deletedAge: '已删除 {{value}}', + itemCount_one: '{{count}} 个项目', + itemCount_other: '{{count}} 个项目', + lastEmptied: '上次清空 {{value}}', + loadingTrash: '正在加载回收站', + originalLocation: '原位置:{{location}}', + title: '回收站', + trashActions: '{{title}} 回收站操作', + }, + kinds: { + deck: '牌组', + folder: '文件夹', + note: '笔记', + workspace: '工作区', + }, + }, + workspaces: { + actions: { + createWorkspace: '创建工作区', + deleteWorkspace: '删除工作区', + editWorkspace: '编辑工作区', + newWorkspace: '新建工作区', + openWorkspace: '打开 {{title}}', + openingWorkspace: '正在打开 {{title}}', + }, + descriptions: { + editorDefault: '学习上下文。', + editorVisual: '为此工作区选择视觉锚点。', + emptyList: '按学习上下文分隔牌组、笔记和复习队列。', + }, + dialogs: { + deleteWorkspaceDescription: '这会将 "{{title}}" 移至回收站。你稍后可以恢复它。', + deleteWorkspaceFallbackDescription: '这会将此工作区移至回收站。你稍后可以恢复它。', + deleteWorkspaceFallbackTitle: '删除工作区?', + deleteWorkspaceTitle: '删除 "{{title}}"?', + }, + empty: { + startWithWorkspace: '从工作区开始', + }, + errors: { + couldNotCreateWorkspace: '无法创建工作区', + couldNotDeleteWorkspace: '无法删除工作区', + couldNotOpenWorkspace: '无法打开工作区', + couldNotSaveWorkspace: '无法保存工作区', + workspaceCouldNotLoad: '无法加载工作区', + workspacesCouldNotLoad: '无法加载工作区', + }, + fields: { + descriptionLabel: '工作区描述', + descriptionPlaceholder: '这个工作区里放什么?', + namePlaceholder: '工作区名称', + untitledWorkspace: '未命名工作区', + }, + labels: { + createWorkspaceTitle: '创建工作区', + loadingWorkspaces: '正在加载工作区', + workspace: '工作区', + workspaces: '工作区', + }, + }, +} as const diff --git a/ui/src/core/i18n/resources/zh-Hant.ts b/ui/src/core/i18n/resources/zh-Hant.ts new file mode 100644 index 0000000..8672755 --- /dev/null +++ b/ui/src/core/i18n/resources/zh-Hant.ts @@ -0,0 +1,623 @@ +export const zhHant = { + bootstrap: { + error: { + fallbackMessage: '請重試。如果問題仍然存在,請重新打開 Clear。', + title: '無法啟動', + }, + loadingTitle: '正在準備你的學習空間', + }, + common: { + actions: { + back: '返回', + cancel: '取消', + checkAgain: '再次檢查', + close: '關閉', + create: '建立', + delete: '刪除', + dismissError: '關閉錯誤', + dismissStatus: '關閉狀態', + edit: '編輯', + itemActions: '{{title}} 操作', + reset: '重置', + review: '複習', + save: '儲存', + saveChanges: '儲存變更', + tryAgain: '重試', + }, + labels: { + active: '啟用', + clear: 'Clear', + custom: '自訂', + default: '預設', + loadingEditor: '正在載入編輯器', + name: '名稱', + completedTask: '已完成任務', + description: '描述', + incompleteTask: '未完成任務', + percentageInput: '{{label}} 百分比', + visual: '視覺', + }, + status: { + actionFailed: '操作失敗', + actionInProgress: '操作進行中', + }, + sort: { + ascending: '升冪', + column: '列', + descending: '降冪', + direction: '方向', + sort: '排序', + }, + search: { + label: '搜尋', + }, + visualPicker: { + allLucideIcons: '所有 Lucide 圖示', + browseIconsFor: '瀏覽或搜尋 {{label}} 的圖示。', + chooseIcon: '選擇圖示', + iconPicker: '{{label}} 圖示選擇器', + iconSearch: '{{label}} 圖示搜尋', + iconsCouldNotLoad: '無法載入圖示。', + loadingIcons: '正在載入圖示', + loadingMoreIcons: '正在載入更多圖示', + moreIcons: '更多圖示', + noIconsMatch: '沒有圖示符合 "{{query}}"。', + searchIconsPlaceholder: '搜尋圖示…', + selectedIcon: '已選擇 {{label}}', + }, + }, + dashboard: { + actions: { + create: '建立', + newDeck: '新建牌組', + newFolder: '新建資料夾', + }, + descriptions: { + defaultWorkspace: '將牌組、資料夾和筆記放在一起。', + emptyWorkspace: '建立一個牌組,然後新增筆記來建立複習佇列。', + emptyFolder: '建立一個牌組,然後新增筆記來建立複習佇列。', + searchPlaceholder: '搜尋資料夾、牌組和筆記…', + }, + empty: { + createFirstDeck: '建立你的第一個牌組', + }, + errors: { + couldNotDeleteDeck: '無法刪除牌組', + couldNotDeleteFolder: '無法刪除資料夾', + couldNotDeleteWorkspace: '無法刪除工作區', + dashboardCouldNotOpen: '無法打開儀表板', + decksCouldNotLoad: '無法載入牌組', + decksMayBeOutOfDate: '牌組可能已過期', + foldersCouldNotLoad: '無法載入資料夾', + foldersMayBeOutOfDate: '資料夾可能已過期', + workspaceCouldNotLoad: '無法載入工作區', + }, + labels: { + dashboard: '儀表板', + loadingDashboard: '正在載入儀表板', + newItem: '新項目', + }, + }, + dates: { + absolute: { + unavailable: '日期不可用', + }, + age: { + dayAgo_one: '{{count}} 天前', + dayAgo_other: '{{count}} 天前', + hourAgo_one: '{{count}} 小時前', + hourAgo_other: '{{count}} 小時前', + justNow: '剛剛', + minuteAgo_one: '{{count}} 分鐘前', + minuteAgo_other: '{{count}} 分鐘前', + unavailable: '日期不可用', + weekAgo_one: '{{count}} 週前', + weekAgo_other: '{{count}} 週前', + }, + labels: { + deleted: '已刪除 {{value}}', + due: '到期:{{value}}', + reviewed: '已複習:{{value}}', + updated: '已更新 {{value}}', + updatedUppercase: '已更新 {{value}}', + }, + relative: { + dayAgo_one: '{{count}} 天前', + dayAgo_other: '{{count}} 天前', + inAMoment: '马上', + inDay_one: '{{count}} 天後', + inDay_other: '{{count}} 天後', + inMonth_one: '{{count}} 個月後', + inMonth_other: '{{count}} 個月後', + inWeek_one: '{{count}} 週後', + inWeek_other: '{{count}} 週後', + justNow: '剛剛', + monthAgo_one: '{{count}} 個月前', + monthAgo_other: '{{count}} 個月前', + secondsAgoShort: '{{count}} 秒前', + minutesAgoShort: '{{count}} 分鐘前', + hoursAgoShort: '{{count}} 小時前', + today: '今天', + tomorrow: '明天', + weekAgo_one: '{{count}} 週前', + weekAgo_other: '{{count}} 週前', + yesterday: '昨天', + }, + }, + decks: { + actions: { + actionMenu: '{{title}} 操作', + createDeck: '建立牌組', + createNote: '建立筆記', + deleteDeck: '刪除牌組', + editDeck: '編輯牌組', + newNote: '新建筆記', + openDeck: '打開 {{title}} 牌組', + saveDeck: '無法儲存牌組', + studyNow: '立即學習', + }, + descriptions: { + emptyDeck: '新增一則筆記,让這個牌組有可複習的內容。', + editorDefault: '专注學習牌組。', + editorVisual: '為這個牌組選擇封面符號。', + notesSearchPlaceholder: '搜尋筆記…', + }, + dialogs: { + deleteDeckDescription: '這會將 "{{title}}" 移至回收站。你稍後可以還原它。', + deleteDeckFallbackDescription: '這會將此牌組移至回收站。你稍後可以還原它。', + deleteDeckFallbackTitle: '刪除牌組?', + deleteDeckTitle: '刪除 "{{title}}"?', + deleteNoteDescription: '這會將 "{{title}}" 移至回收站。你稍後可以還原它。', + deleteNoteFallbackTitle: '刪除筆記?', + deleteNoteTitle: '刪除 "{{title}}"?', + }, + empty: { + noMatchingNotes: '沒有符合的筆記', + noMatchingNotesDescription: '沒有筆記符合 "{{query}}"。', + thisDeckIsEmpty: '這個牌組是空的', + }, + errors: { + couldNotCreateDeck: '無法建立牌組', + couldNotDeleteDeck: '無法刪除牌組', + couldNotDeleteNote: '無法刪除筆記', + couldNotLoadFolderPath: '無法載入資料夾路径', + couldNotSaveDeck: '無法儲存牌組', + deckCouldNotLoad: '無法載入牌組', + notesCouldNotLoad: '無法載入筆記', + notesMayBeOutOfDate: '筆記可能已過期', + }, + fields: { + descriptionLabel: '牌組描述', + descriptionPlaceholder: '這個牌組會帮助你複習什么?', + namePlaceholder: '牌組名稱', + untitledDeck: '未命名牌組', + untitledDeckLower: '未命名牌組', + }, + labels: { + createDeckTitle: '建立牌組', + deck: '牌組', + deckNotesSearch: '牌組筆記搜尋', + deckOverview: '牌組概覽', + decks: '牌組', + due: '到期', + dueToday: '今日到期', + loadingDeck: '正在載入牌組', + mastery: '掌握度', + notes: '筆記', + }, + sort: { + ariaLabel: '排序牌組', + dueToday: '今日到期', + title: '標題', + updated: '更新時間', + }, + }, + errors: { + byType: { + conflict: '資料已變更。請重新整理後重試。', + forbidden: '你沒有權限执行此操作。', + notFound: '找不到此項目。', + offline: '無法連線到服務。', + timeout: '耗時過长。請重試。', + unauthorized: '請登入以继续。', + unavailable: '服務暫時不可用。', + }, + fallback: { + unexpected: '意外錯誤', + }, + }, + folders: { + actions: { + createFolder: '建立資料夾', + deleteFolder: '刪除資料夾', + editFolder: '編輯資料夾', + }, + descriptions: { + editorDefault: '用于相關牌組的資料夾。', + }, + dialogs: { + deleteFolderDescription: '這會將 "{{name}}" 移至回收站。你稍後可以還原它。', + deleteFolderFallbackDescription: '這會將此資料夾移至回收站。你稍後可以還原它。', + deleteFolderFallbackTitle: '刪除資料夾?', + deleteFolderTitle: '刪除 "{{name}}"?', + }, + empty: { + noMatchesInFolder: '此資料夾中沒有符合項', + noMatchesInFolderDescription: '沒有資料夾、牌組或筆記符合 "{{query}}"。', + }, + errors: { + couldNotCreateFolder: '無法建立資料夾', + couldNotDeleteFolder: '無法刪除資料夾', + couldNotLoadFolderPath: '無法載入資料夾路径', + couldNotSaveFolder: '無法儲存資料夾', + folderCouldNotLoad: '無法載入資料夾', + }, + fields: { + descriptionLabel: '資料夾描述', + descriptionPlaceholder: '這個資料夾裡放什么?', + namePlaceholder: '資料夾名稱', + untitledFolder: '未命名資料夾', + }, + labels: { + createFolderTitle: '建立資料夾', + folder: '資料夾', + folders: '資料夾', + loadingFolder: '正在載入資料夾', + name: '名稱', + updated: '更新時間', + }, + sort: { + ariaLabel: '排序資料夾', + name: '名稱', + updated: '更新時間', + }, + }, + menu: { + conflicts: { + description: '如果本地資料和同步資料不一致,項目會顯示在這裡。', + heading: '同步狀態', + title: '衝突', + noConflicts: '未發現衝突', + }, + labels: { + menu: '選單', + }, + sections: { + settings: { + description: '個人化你的環境和偏好', + title: '設定', + }, + trash: { + description: '還原或永久刪除已移除的項目', + title: '回收站', + }, + }, + }, + navigation: { + actions: { + closeEditor: '關閉編輯器', + openActions: '打開操作', + openWorkspaces: '打開工作區', + }, + items: { + home: '首頁', + menu: '選單', + primary: '主要', + settings: '設定', + spaces: '空間', + trash: '回收站', + workspaces: '工作區', + }, + }, + notes: { + actions: { + addCloze: '新增克漏字', + deleteNote: '刪除筆記', + editNote: '編輯筆記', + hideDerivedCardsNote: '隱藏衍生卡片提示', + openNote: '打開 {{title}}', + saveNote: '儲存筆記', + showDerivedCardsNote: '顯示衍生卡片提示', + }, + descriptions: { + clozeFormat: '儲存後,每個隱藏部分都會成為一張複習卡片。', + clozeFormatPrefix: '用以下標記包裹隱藏文本', + derivedCardsHelper: '筆記是衍生卡片的事實來源。', + }, + dialogs: { + deleteNoteDescription: '這會將 "{{title}}" 移至回收站。你稍後可以還原它。', + deleteNoteFallbackDescription: '這會將此筆記移至回收站。你稍後可以還原它。', + deleteNoteFallbackTitle: '刪除筆記?', + deleteNoteTitle: '刪除 "{{title}}"?', + }, + errors: { + couldNotCreateNote: '無法建立筆記', + couldNotDeleteNote: '無法刪除筆記', + couldNotSaveNote: '無法儲存筆記', + noteCouldNotLoad: '無法載入筆記', + }, + fields: { + back: '背面', + backPlaceholder: '輸入背面', + bodyPlaceholder: '用克漏字刪除编寫筆記內文…', + front: '正面', + frontPlaceholder: '輸入正面', + noteBody: '筆記內文', + title: '標題', + titlePlaceholder: '新增筆記標題', + untitledCloze: '未命名克漏字', + untitledNote: '未命名筆記', + }, + labels: { + backUppercase: '背面', + basic: '基本', + basicLower: '基本', + basicUppercase: '基本', + cloze: '克漏字', + clozeLower: '克漏字', + clozeFormat: '克漏字格式', + clozeUppercase: '克漏字', + deck: '牌組', + derivedCards: '衍生卡片', + due: '到期', + frontUppercase: '正面', + inProgress: '進行中', + inProgressUppercase: '進行中', + loadingNote: '正在載入筆記', + loadingNoteEditor: '正在載入筆記編輯器', + markdownFormatting: 'Markdown 格式', + mastered: '已掌握', + masteredUppercase: '已掌握', + newNote: '新建筆記', + noteBody: '筆記內文', + noteContent: '筆記內容', + noteDetails: '筆記详情', + noteMetadata: '筆記元資料', + noteType: '筆記类型', + notes: '筆記', + reviewed: '已複習', + studyProgress: '學習進度', + studyProgressUppercase: '學習進度', + titleUppercase: '標題', + updated: '更新時間', + }, + sort: { + ariaLabel: '排序筆記', + title: '標題', + updated: '更新時間', + }, + toolbar: { + bold: '粗體', + italic: '斜體', + link: '連結', + list: '清單', + }, + }, + review: { + actions: { + again: '重來', + backToDeck: '返回牌組', + continueReview: '继续複習', + easy: '简單', + good: '良好', + hard: '困难', + newNote: '新建筆記', + showAnswer: '顯示答案', + }, + errors: { + couldNotGradeCard: '無法評分卡片', + reviewCouldNotLoad: '無法載入複習', + reviewCouldNotStart: '無法開始複習', + summaryCouldNotLoad: '無法載入複習摘要', + summaryNotAvailable: '複習摘要不可用', + summaryNotComplete: '這次複習尚未完成。', + }, + labels: { + cardsReviewed: '已複習卡片', + deck: '牌組', + duration: '時长', + loadingReview: '正在載入複習', + loadingSummary: '正在載入摘要', + progress: '複習進度', + review: '複習', + reviewComplete: '複習完成', + reviewed_one: '已複習 {{count}} 張', + reviewed_other: '已複習 {{count}} 張', + }, + summary: { + durationHoursMinutes: '{{hours}} 小時 {{minutes}} 分鐘', + durationMinutes: '{{minutes}} 分鐘', + durationSeconds: '{{seconds}} 秒', + saved: '你的進度已儲存到這個牌組。', + }, + unavailable: { + description: '新增一則筆記,让這個牌組可以進入複習佇列。', + title: '沒有可複習的卡片', + }, + }, + search: { + actions: { + clearSearch: '清除搜尋', + }, + empty: { + noMatchesInWorkspace: '此工作區中沒有符合項', + noMatchesInWorkspaceDescription: '沒有資料夾、牌組或筆記符合 "{{query}}"。', + }, + errors: { + couldNotComplete: '無法完成搜尋', + }, + labels: { + results: '搜尋結果', + resultsFor: '"{{query}}" 的結果', + searchingContent: '正在搜尋內容', + }, + resultGroups: { + deck: '牌組', + folder: '資料夾', + note: '筆記', + }, + resultKinds: { + deck: '牌組', + folder: '資料夾', + note: '筆記', + }, + }, + settings: { + actions: { + resetAll: '重設所有設定', + resetSettings: '重設設定', + resetToDefaults: '還原預設值', + }, + dialogs: { + fsrsErrorInvalidJson: '請貼上包含 21 個數值的有效 JSON。', + fsrsErrorInvalidParams_one: '請輸入正好包含 {{count}} 個有限數的 JSON 陣列。', + fsrsErrorInvalidParams_other: '請輸入正好包含 {{count}} 個有限數的 JSON 陣列。', + fsrsHelper: '這是專家級覆寫設定。值必須保持順序。', + fsrsJsonLabel: 'FSRS 參數 JSON', + fsrsTitle: '編輯 FSRS 參數', + fsrsDescription: '貼上包含 21 個數字的 JSON 陣列以覆寫 scheduler 權重。', + resetDescription: '這會還原時區、學習上限和 FSRS 設定。', + resetDescriptionWithLanguage: '這會還原語言、時區、學習上限和 FSRS 設定。', + resetTitle: '重設所有設定?', + timezoneDescription: '搜尋城市或時區識別碼。', + timezoneSearchLabel: '搜尋時區', + timezoneSearchPlaceholder: '搜尋時區…', + timezoneTitle: '選擇時區', + }, + errors: { + couldNotResetSettings: '無法重設設定', + couldNotSaveSettings: '無法儲存設定', + settingsCouldNotLoad: '無法載入設定', + settingsUnavailable: '設定不可用。', + }, + labels: { + appearance: '外觀', + automatic: '自動', + fsrsParameters: 'FSRS 參數', + general: '一般', + language: '語言', + loadingSettings: '正在載入設定', + masteryHorizon: '掌握期限', + newCardOrder: '新卡順序', + newCardsPerDay: '每日新卡', + reviewCardsPerDay: '每日複習卡', + savingSettings: '正在儲存設定', + schedule: '排程', + searchNoTimezones: '沒有符合的時區。', + settings: '設定', + settingsReset: '設定已重設', + study: '學習', + targetRecallProbability: '目標回憶機率', + theme: '主題', + timezone: '時區', + }, + options: { + languageEnUs: '英語(美國)', + newCardsAfterReviews: '複習之後', + newCardsBeforeReviews: '複習之前', + newCardsMixed: '混合', + themeDark: '深色', + themeLight: '淺色', + themeSystem: '系統', + timezoneSystem: '使用系統時區', + }, + rows: { + fsrsDescription: '專家模型權重', + languageDescription: '介面語言', + masteryHorizonDescription: '卡片必須在目標機率或以上保持可回憶的天數,才算已掌握', + newCardOrderDescription: '新卡相對於複習的順序', + newCardsPerDayDescription: '每日最多新卡數', + reviewCardsPerDayDescription: '每日最多複習卡數', + targetRecallProbabilityDescription: '下次排程複習時的最低回憶機率', + timezoneDescription: '使用自動時區或選擇城市。', + }, + }, + trash: { + actions: { + deletePermanently: '永久刪除', + empty: '清空', + emptyTrash: '清空回收站', + restore: '還原', + restoringItem: '正在還原 {{title}}', + }, + dialogs: { + deleteItemDescription: '這會永久刪除 "{{title}}"。此操作無法撤销。', + deleteItemFallbackDescription: '這會永久刪除此項目。此操作無法撤销。', + deleteItemFallbackTitle: '刪除項目?', + deleteItemTitle: '刪除 "{{title}}"?', + emptyTrashDescription: '這會永久刪除回收站中的所有內容。此操作無法撤销。', + emptyTrashTitle: '清空回收站?', + }, + empty: { + description: '你刪除的項目會在永久移除前顯示在這裡。', + title: '回收站為空', + }, + errors: { + couldNotDeleteItem: '無法刪除項目', + couldNotEmptyTrash: '無法清空回收站', + couldNotRestoreItem: '無法還原項目', + trashCouldNotLoad: '無法載入回收站', + trashMayBeOutOfDate: '回收站可能已過期', + }, + labels: { + deletedAge: '已刪除 {{value}}', + itemCount_one: '{{count}} 個項目', + itemCount_other: '{{count}} 個項目', + lastEmptied: '上次清空 {{value}}', + loadingTrash: '正在載入回收站', + originalLocation: '原始位置:{{location}}', + title: '回收站', + trashActions: '{{title}} 回收站操作', + }, + kinds: { + deck: '牌組', + folder: '資料夾', + note: '筆記', + workspace: '工作區', + }, + }, + workspaces: { + actions: { + createWorkspace: '建立工作區', + deleteWorkspace: '刪除工作區', + editWorkspace: '編輯工作區', + newWorkspace: '新建工作區', + openWorkspace: '打開 {{title}}', + openingWorkspace: '正在打開 {{title}}', + }, + descriptions: { + editorDefault: '學習脈絡。', + editorVisual: '為此工作區選擇視覺锚点。', + emptyList: '按學習脈絡分隔牌組、筆記和複習佇列。', + }, + dialogs: { + deleteWorkspaceDescription: '這會將 "{{title}}" 移至回收站。你稍後可以還原它。', + deleteWorkspaceFallbackDescription: '這會將此工作區移至回收站。你稍後可以還原它。', + deleteWorkspaceFallbackTitle: '刪除工作區?', + deleteWorkspaceTitle: '刪除 "{{title}}"?', + }, + empty: { + startWithWorkspace: '從工作區開始', + }, + errors: { + couldNotCreateWorkspace: '無法建立工作區', + couldNotDeleteWorkspace: '無法刪除工作區', + couldNotOpenWorkspace: '無法打開工作區', + couldNotSaveWorkspace: '無法儲存工作區', + workspaceCouldNotLoad: '無法載入工作區', + workspacesCouldNotLoad: '無法載入工作區', + }, + fields: { + descriptionLabel: '工作區描述', + descriptionPlaceholder: '這個工作區裡放什么?', + namePlaceholder: '工作區名稱', + untitledWorkspace: '未命名工作區', + }, + labels: { + createWorkspaceTitle: '建立工作區', + loadingWorkspaces: '正在載入工作區', + workspace: '工作區', + workspaces: '工作區', + }, + }, +} as const diff --git a/ui/src/features/settings/components/SettingsPageContent.tsx b/ui/src/features/settings/components/SettingsPageContent.tsx index 79f2c0f..3cb5f15 100644 --- a/ui/src/features/settings/components/SettingsPageContent.tsx +++ b/ui/src/features/settings/components/SettingsPageContent.tsx @@ -1,4 +1,5 @@ import type { ThemePreference } from '@core/theme' +import { getDocumentLocale } from '@core/i18n' import { Button } from '@shared/components/ui/button' import { useTranslation } from 'react-i18next' @@ -86,7 +87,7 @@ const SettingsPageContentInner = ({ description={t(($) => $.settings.rows.languageDescription)} label={t(($) => $.settings.labels.language)} options={settingsLanguageOptions} - value={settings.language} + value={getDocumentLocale(settings.language)} onSelect={(language) => { onUpdateSettings({ language }) }} diff --git a/ui/src/features/settings/constants/settings-options.test.ts b/ui/src/features/settings/constants/settings-options.test.ts new file mode 100644 index 0000000..0ba034c --- /dev/null +++ b/ui/src/features/settings/constants/settings-options.test.ts @@ -0,0 +1,59 @@ +import { describe, expect, it } from 'vitest' + +import { publicLocales } from '@core/i18n' + +import { settingsLanguageOptions } from './settings-options' + +describe('settings options', () => { + it('lists public locales with English language labels sorted alphabetically', () => { + expect(settingsLanguageOptions).toEqual([ + { label: 'Arabic', value: 'ar' }, + { label: 'Bosnian', value: 'bs' }, + { label: 'Bulgarian', value: 'bg' }, + { label: 'Catalan', value: 'ca' }, + { label: 'Chinese (Simplified)', value: 'zh-Hans' }, + { label: 'Chinese (Traditional)', value: 'zh-Hant' }, + { label: 'Croatian', value: 'hr' }, + { label: 'Czech', value: 'cs' }, + { label: 'Danish', value: 'da' }, + { label: 'Dutch', value: 'nl' }, + { label: 'English', value: 'en-US' }, + { label: 'Estonian', value: 'et' }, + { label: 'Finnish', value: 'fi' }, + { label: 'French', value: 'fr' }, + { label: 'German', value: 'de' }, + { label: 'Greek', value: 'el' }, + { label: 'Hebrew', value: 'he' }, + { label: 'Hungarian', value: 'hu' }, + { label: 'Indonesian', value: 'id' }, + { label: 'Italian', value: 'it' }, + { label: 'Japanese', value: 'ja' }, + { label: 'Korean', value: 'ko' }, + { label: 'Latvian', value: 'lv' }, + { label: 'Lithuanian', value: 'lt' }, + { label: 'Norwegian Bokmål', value: 'nb' }, + { label: 'Persian', value: 'fa' }, + { label: 'Polish', value: 'pl' }, + { label: 'Portuguese (Brazil)', value: 'pt-BR' }, + { label: 'Romanian', value: 'ro' }, + { label: 'Russian', value: 'ru' }, + { label: 'Serbian', value: 'sr-Latn' }, + { label: 'Slovak', value: 'sk' }, + { label: 'Slovenian', value: 'sl' }, + { label: 'Spanish', value: 'es' }, + { label: 'Swedish', value: 'sv' }, + { label: 'Thai', value: 'th' }, + { label: 'Turkish', value: 'tr' }, + { label: 'Ukrainian', value: 'uk' }, + { label: 'Vietnamese', value: 'vi' }, + ]) + expect(settingsLanguageOptions.map((option) => option.label)).toEqual( + settingsLanguageOptions + .map((option) => option.label) + .sort((left, right) => left.localeCompare(right)), + ) + expect([...settingsLanguageOptions.map((option) => option.value)].sort()).toEqual( + [...publicLocales].sort(), + ) + }) +}) diff --git a/ui/src/features/settings/constants/settings-options.ts b/ui/src/features/settings/constants/settings-options.ts index d34b42f..2ed4aaa 100644 --- a/ui/src/features/settings/constants/settings-options.ts +++ b/ui/src/features/settings/constants/settings-options.ts @@ -1,36 +1,52 @@ +import type { PublicLocale } from '@core/i18n' + import type { SettingsNewCardsOrder } from '../types/settings.types' export type SettingsLanguageOption = Readonly<{ label: string - value: string + value: PublicLocale }> export const settingsLanguageOptions: SettingsLanguageOption[] = [ - { label: 'English (US)', value: 'en-US' }, - { label: 'English (UK)', value: 'en-GB' }, - { label: 'Spanish', value: 'es' }, + { label: 'Arabic', value: 'ar' }, + { label: 'Bosnian', value: 'bs' }, + { label: 'Bulgarian', value: 'bg' }, + { label: 'Catalan', value: 'ca' }, + { label: 'Chinese (Simplified)', value: 'zh-Hans' }, + { label: 'Chinese (Traditional)', value: 'zh-Hant' }, + { label: 'Croatian', value: 'hr' }, + { label: 'Czech', value: 'cs' }, + { label: 'Danish', value: 'da' }, + { label: 'Dutch', value: 'nl' }, + { label: 'English', value: 'en-US' }, + { label: 'Estonian', value: 'et' }, + { label: 'Finnish', value: 'fi' }, { label: 'French', value: 'fr' }, { label: 'German', value: 'de' }, - { label: 'Russian', value: 'ru' }, + { label: 'Greek', value: 'el' }, + { label: 'Hebrew', value: 'he' }, + { label: 'Hungarian', value: 'hu' }, + { label: 'Indonesian', value: 'id' }, { label: 'Italian', value: 'it' }, - { label: 'Portuguese (Brazil)', value: 'pt-BR' }, - { label: 'Portuguese (Portugal)', value: 'pt-PT' }, { label: 'Japanese', value: 'ja' }, - { label: 'Chinese (Simplified)', value: 'zh-Hans' }, - { label: 'Chinese (Traditional)', value: 'zh-Hant' }, { label: 'Korean', value: 'ko' }, - { label: 'Arabic', value: 'ar' }, - { label: 'Hindi', value: 'hi' }, - { label: 'Turkish', value: 'tr' }, - { label: 'Dutch', value: 'nl' }, + { label: 'Latvian', value: 'lv' }, + { label: 'Lithuanian', value: 'lt' }, + { label: 'Norwegian Bokmål', value: 'nb' }, + { label: 'Persian', value: 'fa' }, { label: 'Polish', value: 'pl' }, + { label: 'Portuguese (Brazil)', value: 'pt-BR' }, + { label: 'Romanian', value: 'ro' }, + { label: 'Russian', value: 'ru' }, + { label: 'Serbian', value: 'sr-Latn' }, + { label: 'Slovak', value: 'sk' }, + { label: 'Slovenian', value: 'sl' }, + { label: 'Spanish', value: 'es' }, { label: 'Swedish', value: 'sv' }, - { label: 'Greek', value: 'el' }, - { label: 'Hebrew', value: 'he' }, - { label: 'Indonesian', value: 'id' }, - { label: 'Vietnamese', value: 'vi' }, { label: 'Thai', value: 'th' }, + { label: 'Turkish', value: 'tr' }, { label: 'Ukrainian', value: 'uk' }, + { label: 'Vietnamese', value: 'vi' }, ] export const settingsNewCardsOrderOptions: Array<{ diff --git a/ui/src/features/settings/constants/settings-ui.ts b/ui/src/features/settings/constants/settings-ui.ts index f9b6fe1..74f3ab7 100644 --- a/ui/src/features/settings/constants/settings-ui.ts +++ b/ui/src/features/settings/constants/settings-ui.ts @@ -1 +1 @@ -export const showSettingsLanguageControl = false +export const showSettingsLanguageControl = true diff --git a/ui/src/features/settings/pages/SettingsPage.test.tsx b/ui/src/features/settings/pages/SettingsPage.test.tsx index 8cbe52a..76b0b3c 100644 --- a/ui/src/features/settings/pages/SettingsPage.test.tsx +++ b/ui/src/features/settings/pages/SettingsPage.test.tsx @@ -119,7 +119,7 @@ describe('SettingsPage', () => { }) expect(screen.getByRole('button', { name: 'Timezone' })).toBeInTheDocument() - expect(screen.queryByRole('button', { name: 'Language' })).not.toBeInTheDocument() + expect(screen.getByRole('button', { name: 'Language' })).toBeInTheDocument() await act(async () => { await vi.advanceTimersByTimeAsync(180) @@ -138,7 +138,7 @@ describe('SettingsPage', () => { expect(screen.getByText('Appearance')).toBeInTheDocument() expect(screen.getByText('Study')).toBeInTheDocument() expect(screen.getByText('FSRS Parameters')).toBeInTheDocument() - expect(screen.queryByRole('button', { name: 'Language' })).not.toBeInTheDocument() + expect(screen.getByRole('button', { name: 'Language' })).toHaveTextContent('English') await user.click(await screen.findByRole('button', { name: 'Timezone' })) const timezoneDialog = await screen.findByRole('dialog', { name: 'Choose Timezone' }) @@ -163,6 +163,37 @@ describe('SettingsPage', () => { ) }) + it('switches the interface language when a language option is selected', async () => { + const user = userEvent.setup() + const baseServices = createAppServices('mock') + const write = vi.fn(baseServices.settings.write) + const services = { + ...baseServices, + settings: { + ...baseServices.settings, + write, + }, + } + + renderRoute('/menu/settings', { services }) + + const languageButton = await screen.findByRole('button', { name: 'Language' }) + + expect(languageButton).toHaveTextContent('English') + expect(document.documentElement).toHaveAttribute('lang', 'en-US') + expect(document.documentElement).toHaveAttribute('dir', 'ltr') + + await user.click(languageButton) + await user.click(await screen.findByRole('menuitem', { name: 'Arabic' })) + + expect(await screen.findByRole('heading', { name: 'الإعدادات' })).toBeInTheDocument() + expect(document.documentElement).toHaveAttribute('lang', 'ar') + expect(document.documentElement).toHaveAttribute('dir', 'rtl') + await waitFor(() => { + expect(write).toHaveBeenCalledWith(expect.objectContaining({ language: 'ar' })) + }) + }) + it('renders in the desktop sidebar layout', async () => { const user = userEvent.setup() mockMatchMedia(true) @@ -171,7 +202,7 @@ describe('SettingsPage', () => { const heading = await screen.findByRole('heading', { name: 'Settings' }) expect(heading).toBeInTheDocument() expect(await screen.findByRole('button', { name: 'Timezone' })).toBeInTheDocument() - expect(screen.queryByRole('button', { name: 'Language' })).not.toBeInTheDocument() + expect(screen.getByRole('button', { name: 'Language' })).toHaveTextContent('English') expect(heading.closest('div.mx-auto')).toHaveClass('max-w-page-narrow') expect(screen.getByText('General')).toBeInTheDocument() expect(screen.getByText('Appearance')).toBeInTheDocument() @@ -189,7 +220,9 @@ describe('SettingsPage', () => { await user.click(resetButton) const dialog = await screen.findByRole('dialog', { name: 'Reset all settings?' }) expect(dialog).toBeInTheDocument() - expect(dialog).toHaveTextContent('This restores timezone, study limits, and FSRS settings.') + expect(dialog).toHaveTextContent( + 'This restores language, timezone, study limits, and FSRS settings.', + ) expect(screen.getByRole('link', { name: 'Settings', hidden: true })).toHaveAttribute( 'aria-current', 'page', diff --git a/ui/src/features/settings/pages/SettingsPage.tsx b/ui/src/features/settings/pages/SettingsPage.tsx index 9ab3bd9..6512e15 100644 --- a/ui/src/features/settings/pages/SettingsPage.tsx +++ b/ui/src/features/settings/pages/SettingsPage.tsx @@ -5,6 +5,7 @@ import { BottomActionErrorStatus, desktopBottomStatusStackClassName, } from '@shared/components/feedback/BottomActionErrorStatus' +import { getDocumentLocale } from '@core/i18n' import { useThemeStore } from '@core/theme' import { LoadErrorState } from '@shared/components/feedback/LoadErrorState' import { PendingSpinner } from '@shared/components/feedback/PendingSpinner' @@ -26,7 +27,7 @@ import { import type { Settings } from '../types/settings.types' export const SettingsPage = () => { - const { t } = useTranslation() + const { i18n, t } = useTranslation() const activeWorkspaceIdQuery = useActiveWorkspaceId() const homeTarget = activeWorkspaceIdQuery.data ? { to: `/dashboard/${activeWorkspaceIdQuery.data}` } @@ -53,8 +54,9 @@ export const SettingsPage = () => { useEffect(() => { if (settingsQuery.data) { setSettings(settingsQuery.data) + void i18n.changeLanguage(getDocumentLocale(settingsQuery.data.language)) } - }, [settingsQuery.data]) + }, [i18n, settingsQuery.data]) const isInitialLoading = settingsQuery.isLoading || (!settings && !settingsQuery.isError) const showInitialLoading = useDelayedBoolean(isInitialLoading, 180) @@ -104,6 +106,9 @@ export const SettingsPage = () => { const nextSettings = { ...settings, ...patch } setSettings(nextSettings) + if (typeof patch.language === 'string') { + void i18n.changeLanguage(getDocumentLocale(patch.language)) + } writeSettings.mutate(nextSettings) } @@ -170,6 +175,7 @@ export const SettingsPage = () => { resetSettings.mutate(undefined, { onSuccess: (nextSettings) => { setSettings(nextSettings) + void i18n.changeLanguage(getDocumentLocale(nextSettings.language)) setIsResetSettingsDialogOpen(false) }, }) diff --git a/ui/src/features/trash/pages/TrashPage.tsx b/ui/src/features/trash/pages/TrashPage.tsx index d2279e2..5fb738f 100644 --- a/ui/src/features/trash/pages/TrashPage.tsx +++ b/ui/src/features/trash/pages/TrashPage.tsx @@ -100,10 +100,7 @@ export const TrashPage = () => { lastEmptiedAt: new Date().toISOString(), } const itemCount = trashState.items.length - const summaryLabel = - itemCount === 1 - ? t(($) => $.trash.labels.itemCount, { count: itemCount }) - : t(($) => $.trash.labels.itemCountPlural, { count: itemCount }) + const summaryLabel = t(($) => $.trash.labels.itemCount, { count: itemCount }) const summaryAge = t(($) => $.trash.labels.lastEmptied, { value: formatRelativeAge(trashState.lastEmptiedAt), }) diff --git a/ui/src/shared/lib/translated-date-format.ts b/ui/src/shared/lib/translated-date-format.ts index e31be14..b1a1661 100644 --- a/ui/src/shared/lib/translated-date-format.ts +++ b/ui/src/shared/lib/translated-date-format.ts @@ -43,8 +43,8 @@ const formatRelativeDayCount = ( } return tense === 'past' - ? t(($) => $.dates.relative.daysAgo, { count }) - : t(($) => $.dates.relative.inDays, { count }) + ? t(($) => $.dates.relative.dayAgo, { count }) + : t(($) => $.dates.relative.inDay, { count }) } const formatRelativeWeekCount = ( @@ -53,8 +53,8 @@ const formatRelativeWeekCount = ( tense: 'past' | 'future', ) => { return tense === 'past' - ? t(($) => $.dates.relative.weeksAgo, { count }) - : t(($) => $.dates.relative.inWeeks, { count }) + ? t(($) => $.dates.relative.weekAgo, { count }) + : t(($) => $.dates.relative.inWeek, { count }) } const formatRelativeMonthCount = ( @@ -62,15 +62,9 @@ const formatRelativeMonthCount = ( count: number, tense: 'past' | 'future', ) => { - if (count === 1) { - return tense === 'past' - ? t(($) => $.dates.relative.monthAgo, { count }) - : t(($) => $.dates.relative.inMonth, { count }) - } - return tense === 'past' - ? t(($) => $.dates.relative.monthsAgo, { count }) - : t(($) => $.dates.relative.inMonths, { count }) + ? t(($) => $.dates.relative.monthAgo, { count }) + : t(($) => $.dates.relative.inMonth, { count }) } const formatRelativeAgeValue = (t: TFunction, isoDate: string) => { @@ -88,17 +82,13 @@ const formatRelativeAgeValue = (t: TFunction, isoDate: string) => { } if (diffMinutes < 60) { - return diffMinutes === 1 - ? t(($) => $.dates.age.minuteAgo, { count: diffMinutes }) - : t(($) => $.dates.age.minutesAgo, { count: diffMinutes }) + return t(($) => $.dates.age.minuteAgo, { count: diffMinutes }) } const diffHours = Math.max(1, Math.round(diffMinutes / 60)) if (diffHours < 24) { - return diffHours === 1 - ? t(($) => $.dates.age.hourAgo, { count: diffHours }) - : t(($) => $.dates.age.hoursAgo, { count: diffHours }) + return t(($) => $.dates.age.hourAgo, { count: diffHours }) } const diffDays = Math.max(1, Math.round(diffMs / dayMs)) @@ -106,14 +96,10 @@ const formatRelativeAgeValue = (t: TFunction, isoDate: string) => { if (diffDays >= 7 && diffDays % 7 === 0) { const weeks = diffDays / 7 - return weeks === 1 - ? t(($) => $.dates.age.weekAgo, { count: weeks }) - : t(($) => $.dates.age.weeksAgo, { count: weeks }) + return t(($) => $.dates.age.weekAgo, { count: weeks }) } - return diffDays === 1 - ? t(($) => $.dates.age.dayAgo, { count: diffDays }) - : t(($) => $.dates.age.daysAgo, { count: diffDays }) + return t(($) => $.dates.age.dayAgo, { count: diffDays }) } const formatUpdatedAgeValue = (t: TFunction, value: string) => { @@ -146,9 +132,7 @@ const formatUpdatedAgeValue = (t: TFunction, value: string) => { if (diffMs < weekMs) { const days = Math.max(1, Math.round(diffMs / dayMs)) - return days === 1 - ? t(($) => $.dates.relative.dayAgo, { count: days }) - : t(($) => $.dates.relative.daysAgo, { count: days }) + return t(($) => $.dates.relative.dayAgo, { count: days }) } return formatAbsoluteDate(value) diff --git a/ui/src/test/setup.ts b/ui/src/test/setup.ts index c2f9bab..0f149e7 100644 --- a/ui/src/test/setup.ts +++ b/ui/src/test/setup.ts @@ -2,6 +2,7 @@ import '@testing-library/jest-dom/vitest' import { cleanup } from '@testing-library/react' import { afterEach, beforeEach, vi } from 'vitest' +import { setI18n } from 'react-i18next' import { queryClient } from '@core/query/query-client' import { resetThemeStoreForTests } from '@core/theme' @@ -69,6 +70,7 @@ beforeEach(async () => { window.sessionStorage.clear() resetThemeStoreForTests() await appI18n.changeLanguage(defaultLocale) + setI18n(appI18n) await mockStateRepository.reset() queryClient.clear() })