diff --git a/packages/core/dev-test/config.yml b/packages/core/dev-test/config.yml index ae845d87..4c84d177 100644 --- a/packages/core/dev-test/config.yml +++ b/packages/core/dev-test/config.yml @@ -4,7 +4,7 @@ site_url: 'https://example.com' media_folder: assets/uploads media_library: folder_support: true -locale: en +locale: fr i18n: # Required and can be one of multiple_folders, multiple_files or single_file # multiple_folders - persists files in `//.` diff --git a/packages/core/src/components/collections/entries/EntryListing.tsx b/packages/core/src/components/collections/entries/EntryListing.tsx index 2b4802d4..b8adddf9 100644 --- a/packages/core/src/components/collections/entries/EntryListing.tsx +++ b/packages/core/src/components/collections/entries/EntryListing.tsx @@ -1,8 +1,9 @@ import React, { useCallback, useMemo } from 'react'; -import { translate } from 'react-polyglot'; import { VIEW_STYLE_TABLE } from '@staticcms/core/constants/views'; +import useTranslate from '@staticcms/core/lib/hooks/useTranslate'; import { selectFields, selectInferredField } from '@staticcms/core/lib/util/collection.util'; +import { isNullish } from '@staticcms/core/lib/util/null.util'; import { toTitleCaseFromKey } from '@staticcms/core/lib/util/string.util'; import entriesClasses from './Entries.classes'; import EntryListingGrid from './EntryListingGrid'; @@ -15,7 +16,6 @@ import type { Collections, Entry, Field, - TranslatedProps, } from '@staticcms/core/interface'; import type Cursor from '@staticcms/core/lib/util/Cursor'; import type { FC } from 'react'; @@ -42,16 +42,17 @@ export type EntryListingProps = | SingleCollectionEntryListingProps | MultipleCollectionEntryListingProps; -const EntryListing: FC> = ({ +const EntryListing: FC = ({ entries, cursor, viewStyle, isLoadingEntries, filterTerm, handleCursorActions, - t, ...otherProps }) => { + const t = useTranslate(); + const hasMore = useMemo(() => cursor?.actions?.has('append_next'), [cursor?.actions]); const handleLoadMore = useCallback(() => { @@ -84,20 +85,47 @@ const EntryListing: FC> = ({ [], ); - const summaryFields = useMemo(() => { - let fields: string[] | undefined; - if ('collection' in otherProps) { - fields = otherProps.collection.summary_fields; - } - - return fields ?? ['summary']; - }, [otherProps]); - const isSingleCollectionInList = useMemo( () => !('collections' in otherProps) || Object.keys(otherProps.collections).length === 1, [otherProps], ); + const summaryFields: { + name: string; + label: string; + }[] = useMemo(() => { + const summaryField = [ + { + name: 'summary', + label: t('collection.table.summary'), + }, + ]; + + if (!isSingleCollectionInList) { + return summaryField; + } + + if (!('collection' in otherProps) || isNullish(otherProps.collection.summary_fields)) { + return summaryField; + } + + const fieldNames = otherProps.collection.summary_fields; + const collectionFields = selectFields(otherProps.collection).reduce((acc, f) => { + acc[f.name] = f; + return acc; + }, {} as Record); + + return fieldNames.map(summaryField => { + const field = collectionFields[summaryField]; + return { + name: summaryField, + label: !field + ? toTitleCaseFromKey(summaryField) + : field.label ?? toTitleCaseFromKey(field.name), + }; + }); + }, [isSingleCollectionInList, otherProps, t]); + const entryData: CollectionEntryData[] = useMemo(() => { if ('collection' in otherProps) { const inferredFields = inferFields(otherProps.collection); @@ -108,7 +136,6 @@ const EntryListing: FC> = ({ viewStyle, entry, key: entry.slug, - summaryFields, })); } @@ -129,29 +156,11 @@ const EntryListing: FC> = ({ viewStyle, collectionLabel, key: entry.slug, - summaryFields, } : null; }) .filter(e => e) as CollectionEntryData[]; - }, [entries, inferFields, isSingleCollectionInList, otherProps, summaryFields, viewStyle]); - - const summaryFieldHeaders = useMemo(() => { - if ('collection' in otherProps) { - const collectionFields = selectFields(otherProps.collection).reduce((acc, f) => { - acc[f.name] = f; - return acc; - }, {} as Record); - return summaryFields.map(summaryField => { - const field = collectionFields[summaryField]; - return !field - ? toTitleCaseFromKey(summaryField) - : field.label ?? toTitleCaseFromKey(field.name); - }); - } - - return []; - }, [otherProps, summaryFields]); + }, [entries, inferFields, isSingleCollectionInList, otherProps, viewStyle]); if (viewStyle === VIEW_STYLE_TABLE) { return ( @@ -160,7 +169,7 @@ const EntryListing: FC> = ({ key="table" entryData={entryData} isSingleCollectionInList={isSingleCollectionInList} - summaryFieldHeaders={summaryFieldHeaders} + summaryFields={summaryFields} loadNext={handleLoadMore} canLoadMore={Boolean(hasMore && handleLoadMore)} isLoadingEntries={isLoadingEntries} @@ -182,4 +191,4 @@ const EntryListing: FC> = ({ ); }; -export default translate()(EntryListing) as FC; +export default EntryListing; diff --git a/packages/core/src/components/collections/entries/EntryListingTable.tsx b/packages/core/src/components/collections/entries/EntryListingTable.tsx index b2abd546..69767f2d 100644 --- a/packages/core/src/components/collections/entries/EntryListingTable.tsx +++ b/packages/core/src/components/collections/entries/EntryListingTable.tsx @@ -16,7 +16,10 @@ import type { t } from 'react-polyglot'; export interface EntryListingTableProps { isSingleCollectionInList: boolean; entryData: CollectionEntryData[]; - summaryFieldHeaders: string[]; + summaryFields: { + name: string; + label: string; + }[]; canLoadMore: boolean; isLoadingEntries: boolean; loadNext: () => void; @@ -26,7 +29,7 @@ export interface EntryListingTableProps { const EntryListingTable: FC = ({ isSingleCollectionInList, entryData, - summaryFieldHeaders, + summaryFields, canLoadMore, isLoadingEntries, loadNext, @@ -70,6 +73,18 @@ const EntryListingTable: FC = ({ fetchMoreOnBottomReached(scrollHeight, scrollTop, clientHeight); }, [clientHeight, fetchMoreOnBottomReached, scrollHeight, scrollTop]); + const baseColumnHeaders = useMemo(() => { + const cols = [...summaryFields.map(f => f.label), '']; + + if (!isSingleCollectionInList) { + cols.unshift(t('collection.table.collection')); + } + + return cols; + }, [isSingleCollectionInList, summaryFields, t]); + + const columnFields = useMemo(() => [...summaryFields.map(f => f.name)], [summaryFields]); + return (
= ({ 'CMS_Scrollbar_secondary', )} > - +
{paddingTop > 0 && (
@@ -98,8 +107,9 @@ const EntryListingTable: FC = ({ ); diff --git a/packages/core/src/components/collections/entries/EntryRow.tsx b/packages/core/src/components/collections/entries/EntryRow.tsx index c77a1a7a..b6580319 100644 --- a/packages/core/src/components/collections/entries/EntryRow.tsx +++ b/packages/core/src/components/collections/entries/EntryRow.tsx @@ -25,14 +25,14 @@ export interface EntryRowProps { entry: Entry; collection: Collection; collectionLabel?: string; - summaryFields: string[]; + columnFields: string[]; } const EntryRow: FC> = ({ collection, entry, collectionLabel, - summaryFields, + columnFields, t, }) => { const path = useMemo( @@ -89,7 +89,7 @@ const EntryRow: FC> = ({ {collectionLabel} ) : null} - {summaryFields.map(fieldName => { + {columnFields.map(fieldName => { if (fieldName === 'summary') { return ( diff --git a/packages/core/src/interface.ts b/packages/core/src/interface.ts index 68b9fcf1..91b79c32 100644 --- a/packages/core/src/interface.ts +++ b/packages/core/src/interface.ts @@ -568,11 +568,6 @@ export abstract class BackendClass { }>; } -export interface LocalePhrasesRoot { - [property: string]: LocalePhrases; -} -export type LocalePhrases = string | { [property: string]: LocalePhrases }; - export type CustomIcon = FunctionComponent; export type WidgetValueSerializer = { @@ -1193,6 +1188,5 @@ export interface CollectionEntryData { viewStyle: ViewStyle; entry: Entry; key: string; - summaryFields: string[]; collectionLabel?: string; } diff --git a/packages/core/src/lib/hooks/index.ts b/packages/core/src/lib/hooks/index.ts index a2a7a79a..4d4a538c 100644 --- a/packages/core/src/lib/hooks/index.ts +++ b/packages/core/src/lib/hooks/index.ts @@ -8,3 +8,4 @@ export { default as useMediaFiles } from './useMediaFiles'; export { default as useMediaInsert } from './useMediaInsert'; export { default as useMediaPersist } from './useMediaPersist'; export { default as useUUID } from './useUUID'; +export { default as useTranslate } from './useTranslate'; diff --git a/packages/core/src/lib/hooks/useTranslate.ts b/packages/core/src/lib/hooks/useTranslate.ts new file mode 100644 index 00000000..15c4397d --- /dev/null +++ b/packages/core/src/lib/hooks/useTranslate.ts @@ -0,0 +1,7 @@ +import { useTranslate as useReactPolyglotTranslate } from 'react-polyglot'; + +import type { t } from 'react-polyglot'; + +export default function useTranslate(): t { + return useReactPolyglotTranslate() as t; +} diff --git a/packages/core/src/lib/registry.ts b/packages/core/src/lib/registry.ts index 17f24f47..c274a576 100644 --- a/packages/core/src/lib/registry.ts +++ b/packages/core/src/lib/registry.ts @@ -17,7 +17,6 @@ import type { EventData, EventListener, FieldPreviewComponent, - LocalePhrasesRoot, LoginEventListener, LogoutEventListener, MountedEventListener, @@ -36,6 +35,7 @@ import type { WidgetParam, WidgetValueSerializer, } from '../interface'; +import type { LocalePhrasesRoot } from '../locales/types'; export const allowedEvents = [ 'mounted', diff --git a/packages/core/src/locales/bg/index.ts b/packages/core/src/locales/bg/index.ts index a95cd23b..8e1ff903 100644 --- a/packages/core/src/locales/bg/index.ts +++ b/packages/core/src/locales/bg/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const bg: LocalePhrasesRoot = { auth: { @@ -12,6 +12,9 @@ const bg: LocalePhrasesRoot = { errors: { email: 'Въведете вашия имейл.', password: 'Въведете паролата.', + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' identitySettings: 'Няма достъп до настройките. Ако използвате git-gateway, не забравяйте да активирате услугата Identity и Git Gateway.', }, @@ -25,6 +28,7 @@ const bg: LocalePhrasesRoot = { app: { errorHeader: 'Грешка при зареждането на конфигурацията на CMS', configErrors: 'Грешки в конфигурацията', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: 'Проверете вашия файл config.yml.', loadingConfig: 'Зареждане на конфигурация ...', waitingBackend: 'В очакване на отговор от бекенда ...', @@ -61,6 +65,10 @@ const bg: LocalePhrasesRoot = { other: 'Други', negateLabel: 'Не %{label}', }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, defaultFields: { author: { label: 'Автор', @@ -69,6 +77,7 @@ const bg: LocalePhrasesRoot = { label: 'Обновено', }, }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -81,15 +90,17 @@ const bg: LocalePhrasesRoot = { required: '%{fieldLabel} е задължително.', regexPattern: '%{fieldLabel} не съответства на модела: %{pattern}.', processing: '%{fieldLabel} се обработва.', - min: '%{fieldLabel} трябва да бъде поне %{minValue}.', range: '%{fieldLabel} трябва да бъде между %{minValue} и %{maxValue}.', + min: '%{fieldLabel} трябва да бъде поне %{minValue}.', max: '%{fieldLabel} трябва да бъде %{maxValue} или по-малко.', rangeCount: '%{fieldLabel} трябва да има между %{minCount} и %{maxCount} елемент(и).', rangeCountExact: '%{fieldLabel} трябва да има точно %{count} елемент(и).', - minCount: '%{fieldLabel} трябва да бъде поне %{minCount} елемент(и).', - maxCount: '%{fieldLabel} трябва да бъде %{maxCount} или по-малко елемент(и).', - invalidPath: `'%{path}' не е валиден път`, - pathExists: `Пътят '%{path}' вече съществува`, + rangeMin: undefined, // English translation: '%{fieldLabel} must have at least %{minCount} item(s).' + rangeMax: undefined, // English translation: '%{fieldLabel} must have %{maxCount} or less item(s).' + invalidPath: "'%{path}' не е валиден път", + pathExists: "Пътят '%{path}' вече съществува", + invalidColor: undefined, // English translation: 'Color '%{color}' is invalid.' + invalidHexCode: undefined, // English translation: 'Hex codes must start with a # sign.' }, i18n: { writingInLocale: 'Писане на %{locale}', @@ -97,12 +108,16 @@ const bg: LocalePhrasesRoot = { }, editor: { onLeavePage: 'Наистина ли искате да напуснете тази страница?', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'Delete this published entry?' onDeleteWithUnsavedChangesBody: 'Наистина ли искате да изтриете този публикуван запис, както и незаписаните промени от текущата сесия?', + onDeletePublishedEntryTitle: undefined, // English translation: 'Delete this published entry?' onDeletePublishedEntryBody: 'Наистина ли искате да изтриете този публикуван запис?', loadingEntry: 'Зареждане на запис...', }, editorInterface: { + sideBySideI18n: undefined, // English translation: 'I18n Side by Side' + preview: undefined, // English translation: 'Preview' toggleI18n: 'Превключване i18n', togglePreview: 'Превключване на визуализация', toggleScrollSync: 'Синхронизирай превъртане', @@ -115,6 +130,9 @@ const bg: LocalePhrasesRoot = { publishAndDuplicate: 'Публикувай и дублирай', deleteEntry: 'Изтрий запис', publishNow: 'Публикувай сега', + discardChanges: undefined, // English translation: 'Discard changes' + discardChangesTitle: undefined, // English translation: 'Discard changes' + discardChangesBody: undefined, // English translation: 'Are you sure you want to discard the unsaved changed?' }, editorWidgets: { markdown: { @@ -130,22 +148,40 @@ const bg: LocalePhrasesRoot = { addComponent: 'Добави Компонент', richText: 'Форматиране на текст', markdown: 'Markdown', + type: undefined, // English translation: 'Type...' }, image: { choose: 'Избери изображение', + chooseMultiple: undefined, // English translation: 'Choose images' chooseUrl: 'Вмъкване от URL', replaceUrl: 'Замяна с URL', promptUrl: 'Въведете URL адреса на изображението', chooseDifferent: 'Избери различно изображение', + addMore: undefined, // English translation: 'Add more images' remove: 'Премахни изображение', + removeAll: undefined, // English translation: 'Remove all images' }, file: { choose: 'Избери файл file', chooseUrl: 'Вмъкване от URL', + chooseMultiple: undefined, // English translation: 'Choose files' replaceUrl: 'Замяна с URL', promptUrl: 'Въведете URL адреса на файла', chooseDifferent: 'Избери различен файл', + addMore: undefined, // English translation: 'Add more files' remove: 'Премахни файл', + removeAll: undefined, // English translation: 'Remove all files' + }, + folder: { + choose: undefined, // English translation: 'Choose a folder' + chooseUrl: undefined, // English translation: 'Insert folder path' + chooseMultiple: undefined, // English translation: 'Choose folders' + replaceUrl: undefined, // English translation: 'Replace with path' + promptUrl: undefined, // English translation: 'Enter path of the folder' + chooseDifferent: undefined, // English translation: 'Choose different folder' + addMore: undefined, // English translation: 'Add more folders' + remove: undefined, // English translation: 'Remove folder' + removeAll: undefined, // English translation: 'Remove all folders' }, unknownControl: { noControl: "Няма контрол за приспособлението '%{widget}'.", @@ -163,6 +199,18 @@ const bg: LocalePhrasesRoot = { }, datetime: { now: 'Сега', + invalidDateTitle: undefined, // English translation: 'Invalid date' + invalidDateBody: undefined, // English translation: 'The date you entered is invalid.' + }, + list: { + add: undefined, // English translation: 'Add %{item}' + addType: undefined, // English translation: 'Add %{item}' + noValue: undefined, // English translation: 'No value' + }, + keyvalue: { + key: undefined, // English translation: 'Key' + value: undefined, // English translation: 'Value' + uniqueKeys: undefined, // English translation: '%{keyLabel} must be unique' }, }, }, @@ -176,9 +224,13 @@ const bg: LocalePhrasesRoot = { copied: 'Копирано', }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: 'Наистина ли искате да изтриете избрания медиен файл?', + fileTooLargeTitle: undefined, // English translation: 'File too large' fileTooLargeBody: 'Файлът е твърде голям.\nНастройките не позволяват запазване на файлове по-големи от %{size} kB.', + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: 'Зареждане...', @@ -194,12 +246,30 @@ const bg: LocalePhrasesRoot = { deleting: 'Изтриване...', deleteSelected: 'Изтрай избрани', chooseSelected: 'Избери избрани', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, default: { goBackToSite: 'Обратно към сайта', }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: 'Грешка', details: 'Възникна грешка - моля ', @@ -214,13 +284,15 @@ const bg: LocalePhrasesRoot = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: 'Изход', }, toast: { onFailToLoadEntries: 'Неуспешно зареждане на записа: %{details}', - onFailToLoadDeployPreview: 'Неуспешно зареждане на визуализация: %{details}', onFailToPersist: 'Неуспешно запазване на записа: %{details}', + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: 'Неуспешно изтриване на записа: %{details}', + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: 'Неуспешно актуализиране на състоянието: %{details}', missingRequiredField: 'Извинете, пропуснахте задължително поле. Моля, попълнете преди запазване.', diff --git a/packages/core/src/locales/ca/index.ts b/packages/core/src/locales/ca/index.ts index 00ac0ea5..91e078a6 100644 --- a/packages/core/src/locales/ca/index.ts +++ b/packages/core/src/locales/ca/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const ca: LocalePhrasesRoot = { auth: { @@ -12,6 +12,9 @@ const ca: LocalePhrasesRoot = { errors: { email: 'Comprova que has escrit el teu email.', password: 'Si us plau escriu la teva contrasenya.', + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' identitySettings: "No s'ha pogut obtenir accés a les configuracions d'identitat. Quan feu servir backend de git-gateway, assegureu-vos que activeu el servei d’identitat i la passarel·la de Git.", }, @@ -25,6 +28,7 @@ const ca: LocalePhrasesRoot = { app: { errorHeader: 'Error al carregar la configuració del CMS', configErrors: 'Errors de configuració', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: "Comprovi l'arxiu config.yml.", loadingConfig: 'Carregant configuració....', waitingBackend: 'Esperant al servidor...', @@ -61,6 +65,10 @@ const ca: LocalePhrasesRoot = { other: 'Altre', negateLabel: 'No %{label}', }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, defaultFields: { author: { label: 'Autor', @@ -69,6 +77,7 @@ const ca: LocalePhrasesRoot = { label: 'Actualitzat el', }, }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -88,8 +97,10 @@ const ca: LocalePhrasesRoot = { rangeCountExact: '%{fieldLabel} ha de tenir exactament %{count} element(s).', rangeMin: "%{fieldLabel} ha de tenir com a mínim %{minCount} d'element(s).", rangeMax: '%{fieldLabel} ha de ser %{maxCount} o inferior.', - invalidPath: `'%{path}' no és una ruta valida`, - pathExists: `'%{path}' ja existeix`, + invalidPath: "'%{path}' no és una ruta valida", + pathExists: "'%{path}' ja existeix", + invalidColor: undefined, // English translation: 'Color '%{color}' is invalid.' + invalidHexCode: undefined, // English translation: 'Hex codes must start with a # sign.' }, i18n: { writingInLocale: 'Escriure en %{locale}', @@ -97,14 +108,19 @@ const ca: LocalePhrasesRoot = { }, editor: { onLeavePage: 'Estàs segur que vols deixar aquesta pàgina?', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'Delete this published entry?' onDeleteWithUnsavedChangesBody: 'Està segur que vol eliminar aquesta entrada publicada, així com els canvis no guardats de la sessió actual?', + onDeletePublishedEntryTitle: undefined, // English translation: 'Delete this published entry?' onDeletePublishedEntryBody: 'Està segur que vol eliminar aquesta entrada publicada?', loadingEntry: 'Carregant entrada...', }, editorInterface: { + sideBySideI18n: undefined, // English translation: 'I18n Side by Side' + preview: undefined, // English translation: 'Preview' toggleI18n: 'Mostrar/Amagar traduccions', togglePreview: 'Mostrar/Amagar previsualització', + toggleScrollSync: undefined, // English translation: 'Sync scrolling' }, editorToolbar: { publish: 'Publicar', @@ -114,6 +130,9 @@ const ca: LocalePhrasesRoot = { publishAndDuplicate: 'Publica i duplica', deleteEntry: 'Eliminar entrada', publishNow: 'Publicar ara', + discardChanges: undefined, // English translation: 'Discard changes' + discardChangesTitle: undefined, // English translation: 'Discard changes' + discardChangesBody: undefined, // English translation: 'Are you sure you want to discard the unsaved changed?' }, editorWidgets: { markdown: { @@ -123,27 +142,46 @@ const ca: LocalePhrasesRoot = { link: 'Enllaç', linkPrompt: "Introdueix l'URL de l'enllaç", headings: 'Encapçalaments', + quote: undefined, // English translation: 'Quote' bulletedList: 'Llista', numberedList: 'Llista numèrica', addComponent: 'Afegir component', richText: 'Text enriquit', markdown: 'Markdown', + type: undefined, // English translation: 'Type...' }, image: { choose: 'Escull una imatge', + chooseMultiple: undefined, // English translation: 'Choose images' chooseUrl: 'Introdueix una URL', replaceUrl: 'Substitueix per una URL', promptUrl: "Introdueix l'URL de la imatge", chooseDifferent: 'Escull una imatge diferent', + addMore: undefined, // English translation: 'Add more images' remove: 'Treu la imatge', + removeAll: undefined, // English translation: 'Remove all images' }, file: { choose: 'Escull un arxiu', chooseUrl: 'Introdueix una URL', + chooseMultiple: undefined, // English translation: 'Choose files' replaceUrl: 'Substitueix per una URL', promptUrl: "Introdueix l'URL de l'arxiu", chooseDifferent: 'Escull un arxiu diferent', + addMore: undefined, // English translation: 'Add more files' remove: 'Esborrar arxiu', + removeAll: undefined, // English translation: 'Remove all files' + }, + folder: { + choose: undefined, // English translation: 'Choose a folder' + chooseUrl: undefined, // English translation: 'Insert folder path' + chooseMultiple: undefined, // English translation: 'Choose folders' + replaceUrl: undefined, // English translation: 'Replace with path' + promptUrl: undefined, // English translation: 'Enter path of the folder' + chooseDifferent: undefined, // English translation: 'Choose different folder' + addMore: undefined, // English translation: 'Add more folders' + remove: undefined, // English translation: 'Remove folder' + removeAll: undefined, // English translation: 'Remove all folders' }, unknownControl: { noControl: "No existeix un control per al widget '%{widget}'.", @@ -161,6 +199,18 @@ const ca: LocalePhrasesRoot = { }, datetime: { now: 'Ara', + invalidDateTitle: undefined, // English translation: 'Invalid date' + invalidDateBody: undefined, // English translation: 'The date you entered is invalid.' + }, + list: { + add: undefined, // English translation: 'Add %{item}' + addType: undefined, // English translation: 'Add %{item}' + noValue: undefined, // English translation: 'No value' + }, + keyvalue: { + key: undefined, // English translation: 'Key' + value: undefined, // English translation: 'Value' + uniqueKeys: undefined, // English translation: '%{keyLabel} must be unique' }, }, }, @@ -174,9 +224,13 @@ const ca: LocalePhrasesRoot = { copied: 'Copiat', }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: 'Està segur de que vol eliminar el mitjà seleccionat?', + fileTooLargeTitle: undefined, // English translation: 'File too large' fileTooLargeBody: 'El fitxer és massa gran.\nLa configuració no permet fitxers més grans de %{size} kB.', + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: 'Carregant...', @@ -192,17 +246,36 @@ const ca: LocalePhrasesRoot = { deleting: 'Eliminant...', deleteSelected: 'Eliminar selecció', chooseSelected: 'Confirmar selecció', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, default: { goBackToSite: 'Torna enrere al lloc', }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: 'Error', details: "S'ha produït un error - si us plau ", reportIt: "Informa'ns d'això a GitHub.", detailsHeading: 'Detalls', + privacyWarning: undefined, // English translation: 'Opening an issue pre-populates it with the error message and debugging data.\nPlease verify the information is correct and remove sensitive data if exists.' recoveredEntry: { heading: 'Document recuperat', warning: @@ -211,13 +284,15 @@ const ca: LocalePhrasesRoot = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: 'Tancar sessió', }, toast: { onFailToLoadEntries: "No s'ha ha pogut carregar l'entrada: %{details}", - onFailToLoadDeployPreview: "No s'ha pogut carregar la vista prèvia: %{details}", onFailToPersist: "No s'ha pogut guardar l'entrada: %{details}", + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: "No s'ha pogut eliminar l'entrada: %{details}", + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: "No s'ha pogut actualitzar l'estat: %{details}", missingRequiredField: "Ups, no ha omplert un camp obligatori. Si us plau, ompli'l abans de guardar.", diff --git a/packages/core/src/locales/cs/index.ts b/packages/core/src/locales/cs/index.ts index b9caf814..10702bc3 100644 --- a/packages/core/src/locales/cs/index.ts +++ b/packages/core/src/locales/cs/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const cs: LocalePhrasesRoot = { auth: { @@ -12,9 +12,11 @@ const cs: LocalePhrasesRoot = { errors: { email: 'Vyplňte e-mailovou adresu.', password: 'Vyplňte heslo.', + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' identitySettings: - 'Nastavení identity nenalezeno. Používáte-li git-gateway server nezapomeňte aktivovat službu Identity a Git Gateway' + - '.', + 'Nastavení identity nenalezeno. Používáte-li git-gateway server nezapomeňte aktivovat službu Identity a Git Gateway.', }, }, app: { @@ -26,6 +28,7 @@ const cs: LocalePhrasesRoot = { app: { errorHeader: 'Chyba při načítání CMS konfigurace', configErrors: 'Chyba konfigurace', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: 'Zkontrolujte soubor config.yml.', loadingConfig: 'Načítání konfigurace…', waitingBackend: 'Čekání na server…', @@ -62,6 +65,10 @@ const cs: LocalePhrasesRoot = { other: 'Ostatní', negateLabel: 'Není %{label}', }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, defaultFields: { author: { label: 'Autor', @@ -70,6 +77,7 @@ const cs: LocalePhrasesRoot = { label: 'Poslední aktualizace', }, }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -89,8 +97,10 @@ const cs: LocalePhrasesRoot = { rangeCountExact: '%{fieldLabel} musí mít přesně %{count} položek.', rangeMin: '%{fieldLabel} musí mít nejméně %{minCount} položky.', rangeMax: '%{fieldLabel} musí mít %{maxCount} nebo méně položek.', - invalidPath: `'%{path}' není platnou cestou.`, - pathExists: `Cesta '%{path}' už existuje.`, + invalidPath: "'%{path}' není platnou cestou.", + pathExists: "Cesta '%{path}' už existuje.", + invalidColor: undefined, // English translation: 'Color '%{color}' is invalid.' + invalidHexCode: undefined, // English translation: 'Hex codes must start with a # sign.' }, i18n: { writingInLocale: 'Psát v %{locale}', @@ -98,12 +108,16 @@ const cs: LocalePhrasesRoot = { }, editor: { onLeavePage: 'Chcete opravdu opustit tuto stránku?', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'Delete this published entry?' onDeleteWithUnsavedChangesBody: 'Chcete opravdu vymazat tento publikovaný záznam a všechny neuložené změny z této relace?', + onDeletePublishedEntryTitle: undefined, // English translation: 'Delete this published entry?' onDeletePublishedEntryBody: 'Chcete opravdu smazat tento publikovaný záznam?', loadingEntry: 'Načítání záznamu…', }, editorInterface: { + sideBySideI18n: undefined, // English translation: 'I18n Side by Side' + preview: undefined, // English translation: 'Preview' toggleI18n: 'Přepnout lokalizaci', togglePreview: 'Přepnout náhled', toggleScrollSync: 'Sladit skrolování', @@ -116,6 +130,9 @@ const cs: LocalePhrasesRoot = { publishAndDuplicate: 'Publikovat a duplikovat', deleteEntry: 'Vymazat záznam', publishNow: 'Publikovat teď', + discardChanges: undefined, // English translation: 'Discard changes' + discardChangesTitle: undefined, // English translation: 'Discard changes' + discardChangesBody: undefined, // English translation: 'Are you sure you want to discard the unsaved changed?' }, editorWidgets: { markdown: { @@ -131,22 +148,40 @@ const cs: LocalePhrasesRoot = { addComponent: 'Přidat součástku', richText: 'Rich Text', markdown: 'Markdown', + type: undefined, // English translation: 'Type...' }, image: { choose: 'Vyberte obrázek', + chooseMultiple: undefined, // English translation: 'Choose images' chooseUrl: 'Přidat z URL', replaceUrl: 'Nahradit z URL', promptUrl: 'Zadejte URL obrázku', chooseDifferent: 'Vyberte jiný obrázek', + addMore: undefined, // English translation: 'Add more images' remove: 'Odstranit obrázek', + removeAll: undefined, // English translation: 'Remove all images' }, file: { choose: 'Vyberte soubor', chooseUrl: 'Přidat z URL', + chooseMultiple: undefined, // English translation: 'Choose files' replaceUrl: 'Nahradit z URL', promptUrl: 'Zadejte URL souboru', chooseDifferent: 'Vyberte jiný soubor', + addMore: undefined, // English translation: 'Add more files' remove: 'Odebrat soubor', + removeAll: undefined, // English translation: 'Remove all files' + }, + folder: { + choose: undefined, // English translation: 'Choose a folder' + chooseUrl: undefined, // English translation: 'Insert folder path' + chooseMultiple: undefined, // English translation: 'Choose folders' + replaceUrl: undefined, // English translation: 'Replace with path' + promptUrl: undefined, // English translation: 'Enter path of the folder' + chooseDifferent: undefined, // English translation: 'Choose different folder' + addMore: undefined, // English translation: 'Add more folders' + remove: undefined, // English translation: 'Remove folder' + removeAll: undefined, // English translation: 'Remove all folders' }, unknownControl: { noControl: "Žádné ovládání pro widget '%{widget}'.", @@ -164,6 +199,18 @@ const cs: LocalePhrasesRoot = { }, datetime: { now: 'Teď', + invalidDateTitle: undefined, // English translation: 'Invalid date' + invalidDateBody: undefined, // English translation: 'The date you entered is invalid.' + }, + list: { + add: undefined, // English translation: 'Add %{item}' + addType: undefined, // English translation: 'Add %{item}' + noValue: undefined, // English translation: 'No value' + }, + keyvalue: { + key: undefined, // English translation: 'Key' + value: undefined, // English translation: 'Value' + uniqueKeys: undefined, // English translation: '%{keyLabel} must be unique' }, }, }, @@ -177,8 +224,12 @@ const cs: LocalePhrasesRoot = { copied: 'Zkopírováno', }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: 'Chcete skutečně vymazat označená média?', + fileTooLargeTitle: undefined, // English translation: 'File too large' fileTooLargeBody: 'Soubor je příliš velký.\nSoubor musí být menší než %{size} kB.', + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: 'Načítání…', @@ -194,12 +245,30 @@ const cs: LocalePhrasesRoot = { deleting: 'Vymazávání…', deleteSelected: 'Smazat označené', chooseSelected: 'Vybrat označené', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, default: { goBackToSite: 'Vrátit se na stránku', }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: 'Chyba', details: 'Nastala chyba – prosím ', @@ -214,13 +283,15 @@ const cs: LocalePhrasesRoot = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: 'Odhlásit', }, toast: { onFailToLoadEntries: 'Chyba při načítání záznamu: %{details}', - onFailToLoadDeployPreview: 'Chyba při načítání náhledu: %{details}', onFailToPersist: 'Chyba při ukládání záznamu: %{details}', + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: 'Chyba při vymazávání záznamu: %{details}', + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: 'Chyba při změně stavu záznamu: %{details}', missingRequiredField: 'Vynechali jste povinné pole. Prosím vyplňte ho.', entrySaved: 'Záznam uložen', diff --git a/packages/core/src/locales/da/index.ts b/packages/core/src/locales/da/index.ts index f1287e7a..010c2665 100644 --- a/packages/core/src/locales/da/index.ts +++ b/packages/core/src/locales/da/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const da: LocalePhrasesRoot = { auth: { @@ -12,6 +12,9 @@ const da: LocalePhrasesRoot = { errors: { email: 'Vær sikker på du har indtastet din e-mail.', password: 'Indtast dit kodeord.', + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' identitySettings: 'Kunne ikke tilgå identity opsætning. Ved brug af git-gateway som bagvedliggende service, sørg for at aktivere Identity service og Git Gateway.', }, @@ -25,6 +28,7 @@ const da: LocalePhrasesRoot = { app: { errorHeader: 'Fejl ved indlæsning af CMS opsætningen', configErrors: 'Opsætningsfejl', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: 'Kontroller din config.yml fil.', loadingConfig: 'Indlæser opsætning...', waitingBackend: 'Venter på bagvedliggende service...', @@ -61,6 +65,10 @@ const da: LocalePhrasesRoot = { other: 'Anden', negateLabel: 'Ikke %{label}', }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, defaultFields: { author: { label: 'Forfatter', @@ -69,6 +77,7 @@ const da: LocalePhrasesRoot = { label: 'Opdateret ', }, }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -88,8 +97,10 @@ const da: LocalePhrasesRoot = { rangeCountExact: '%{fieldLabel} skal have præcis %{count} element(er).', rangeMin: '%{fieldLabel} skal have mindst %{minCount} element(er).', rangeMax: '%{fieldLabel} skal have %{maxCount} eller færre element(er).', - invalidPath: `'%{path}' er ikke en gyldig sti`, - pathExists: `Stien '%{path}' findes allerede`, + invalidPath: "'%{path}' er ikke en gyldig sti", + pathExists: "Stien '%{path}' findes allerede", + invalidColor: undefined, // English translation: 'Color '%{color}' is invalid.' + invalidHexCode: undefined, // English translation: 'Hex codes must start with a # sign.' }, i18n: { writingInLocale: 'Skriver på %{locale}', @@ -97,12 +108,21 @@ const da: LocalePhrasesRoot = { }, editor: { onLeavePage: 'Er du sikker på at du vil forlade siden?', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'Delete this published entry?' onDeleteWithUnsavedChangesBody: 'Er du sikker på at du vil slette dette tidliere publiceret dokument, samt dine nuværende ugemte ændringer fra denne session?', + onDeletePublishedEntryTitle: undefined, // English translation: 'Delete this published entry?' onDeletePublishedEntryBody: 'Er du sikker på at du vil slette dette tidliere publiceret dokument?', loadingEntry: 'Indlæser dokument...', }, + editorInterface: { + sideBySideI18n: undefined, // English translation: 'I18n Side by Side' + preview: undefined, // English translation: 'Preview' + toggleI18n: undefined, // English translation: 'Toggle i18n' + togglePreview: undefined, // English translation: 'Toggle preview' + toggleScrollSync: undefined, // English translation: 'Sync scrolling' + }, editorToolbar: { publish: 'Publicer', published: 'Publiceret', @@ -111,6 +131,9 @@ const da: LocalePhrasesRoot = { publishAndDuplicate: 'Publicer og kopier', deleteEntry: 'Slet dokument', publishNow: 'Publicer nu', + discardChanges: undefined, // English translation: 'Discard changes' + discardChangesTitle: undefined, // English translation: 'Discard changes' + discardChangesBody: undefined, // English translation: 'Are you sure you want to discard the unsaved changed?' }, editorWidgets: { markdown: { @@ -126,16 +149,40 @@ const da: LocalePhrasesRoot = { addComponent: 'Tilføj komponent', richText: 'Formatteret tekst', markdown: 'Markdown', + type: undefined, // English translation: 'Type...' }, image: { choose: 'Vælg et billede', + chooseMultiple: undefined, // English translation: 'Choose images' + chooseUrl: undefined, // English translation: 'Insert from URL' + replaceUrl: undefined, // English translation: 'Replace with URL' + promptUrl: undefined, // English translation: 'Enter the URL of the image' chooseDifferent: 'Vælg et andet billede', + addMore: undefined, // English translation: 'Add more images' remove: 'Fjern billede', + removeAll: undefined, // English translation: 'Remove all images' }, file: { choose: 'Vælg fil', + chooseUrl: undefined, // English translation: 'Insert from URL' + chooseMultiple: undefined, // English translation: 'Choose files' + replaceUrl: undefined, // English translation: 'Replace with URL' + promptUrl: undefined, // English translation: 'Enter the URL of the file' chooseDifferent: 'Vælg en anden fil', + addMore: undefined, // English translation: 'Add more files' remove: 'Fjern fil', + removeAll: undefined, // English translation: 'Remove all files' + }, + folder: { + choose: undefined, // English translation: 'Choose a folder' + chooseUrl: undefined, // English translation: 'Insert folder path' + chooseMultiple: undefined, // English translation: 'Choose folders' + replaceUrl: undefined, // English translation: 'Replace with path' + promptUrl: undefined, // English translation: 'Enter path of the folder' + chooseDifferent: undefined, // English translation: 'Choose different folder' + addMore: undefined, // English translation: 'Add more folders' + remove: undefined, // English translation: 'Remove folder' + removeAll: undefined, // English translation: 'Remove all folders' }, unknownControl: { noControl: "Ingen kontrol finden for '%{widget}'.", @@ -153,17 +200,38 @@ const da: LocalePhrasesRoot = { }, datetime: { now: 'Nu', + invalidDateTitle: undefined, // English translation: 'Invalid date' + invalidDateBody: undefined, // English translation: 'The date you entered is invalid.' + }, + list: { + add: undefined, // English translation: 'Add %{item}' + addType: undefined, // English translation: 'Add %{item}' + noValue: undefined, // English translation: 'No value' + }, + keyvalue: { + key: undefined, // English translation: 'Key' + value: undefined, // English translation: 'Value' + uniqueKeys: undefined, // English translation: '%{keyLabel} must be unique' }, }, }, mediaLibrary: { mediaLibraryCard: { draft: 'Kladde', + copy: undefined, // English translation: 'Copy' + copyUrl: undefined, // English translation: 'Copy URL' + copyPath: undefined, // English translation: 'Copy Path' + copyName: undefined, // English translation: 'Copy Name' + copied: undefined, // English translation: 'Copied' }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: 'Er du sikker på at du vil slette det valgte medie?', + fileTooLargeTitle: undefined, // English translation: 'File too large' fileTooLargeBody: 'Filen er for stor.\nOpsætningen tillader ikke filer større end %{size} kB.', + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: 'Indlæser...', @@ -179,12 +247,30 @@ const da: LocalePhrasesRoot = { deleting: 'Slet...', deleteSelected: 'Slet valgte', chooseSelected: 'Anvend valgte', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, default: { goBackToSite: 'Tilbage til hjemmesiden', }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: 'Fejl', details: 'Der opstod en fejl - venligst ', @@ -199,13 +285,15 @@ const da: LocalePhrasesRoot = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: 'Log af', }, toast: { onFailToLoadEntries: 'Fejl ved indlæsning af dokumenter: %{details}', - onFailToLoadDeployPreview: 'Preview kunne ikke indlæses: %{details}', onFailToPersist: 'Dokumentet kunne ikke gemmes: %{details}', + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: 'Dokumentet kunne ikke slettes: %{details}', + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: 'Status kunne ikke opdateres: %{details}', missingRequiredField: 'Ups, du mangler et påkrævet felt. Udfyld de påkrævede felter før dokumentet gemmes.', diff --git a/packages/core/src/locales/de/index.ts b/packages/core/src/locales/de/index.ts index 4c1aca64..b1474228 100644 --- a/packages/core/src/locales/de/index.ts +++ b/packages/core/src/locales/de/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const de: LocalePhrasesRoot = { auth: { @@ -12,6 +12,7 @@ const de: LocalePhrasesRoot = { errors: { email: 'Stellen Sie sicher, Ihre E-Mail-Adresse einzugeben.', password: 'Bitte geben Sie Ihr Passwort ein.', + authTitle: undefined, // English translation: 'Error logging in' authBody: 'Fehler beim Anmelden', netlifyIdentityNotFound: 'Das Netlify Identity Plugin wurde nicht gefunden', identitySettings: @@ -64,6 +65,10 @@ const de: LocalePhrasesRoot = { other: 'Andere', negateLabel: 'Nicht %{label}', }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, defaultFields: { author: { label: 'Autor', @@ -72,6 +77,7 @@ const de: LocalePhrasesRoot = { label: 'Änderungsdatum', }, }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -91,10 +97,10 @@ const de: LocalePhrasesRoot = { rangeCountExact: '%{fieldLabel} muss exakt %{count} Element(e) enthalten.', rangeMin: '%{fieldLabel} muss mindestens %{minCount} Element(e) enthalten.', rangeMax: '%{fieldLabel} darf maximal %{maxCount} Element(e) enthalten.', - invalidPath: `'%{path}' ist kein gültiger Pfad`, - pathExists: `Pfad '%{path}' existiert bereits`, - invalidColor: `Farbe '%{color}' is ungültig`, - invalidHexCode: `Hex Codes müssen mit einem #-Zeichen anfangen`, + invalidPath: "'%{path}' ist kein gültiger Pfad", + pathExists: "Pfad '%{path}' existiert bereits", + invalidColor: "Farbe '%{color}' is ungültig", + invalidHexCode: 'Hex Codes müssen mit einem #-Zeichen anfangen', }, i18n: { writingInLocale: 'Aktuelle Sprache: %{locale}', @@ -142,6 +148,7 @@ const de: LocalePhrasesRoot = { addComponent: 'Komponente hinzufügen', richText: 'Rich Text', markdown: 'Markdown', + type: undefined, // English translation: 'Type...' }, image: { choose: 'Bild wählen', @@ -192,12 +199,18 @@ const de: LocalePhrasesRoot = { }, datetime: { now: 'Jetzt', - invalitDateTitle: 'Ungültiges Datum', + invalidDateTitle: undefined, // English translation: 'Invalid date' invalidDateBody: 'Das eingegebene Datum ist ungültig.', }, list: { add: '%{item} hinzufügen', addType: '%{item} hinzufügen', + noValue: undefined, // English translation: 'No value' + }, + keyvalue: { + key: undefined, // English translation: 'Key' + value: undefined, // English translation: 'Value' + uniqueKeys: undefined, // English translation: '%{keyLabel} must be unique' }, }, }, @@ -232,6 +245,8 @@ const de: LocalePhrasesRoot = { deleting: 'Löschen...', deleteSelected: 'Ausgewähltes Element löschen', chooseSelected: 'Ausgewähltes Element verwenden', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' }, folderSupport: { newFolder: 'Neuer Ordner', @@ -246,6 +261,7 @@ const de: LocalePhrasesRoot = { common: { yes: 'Ja', no: 'Nein', + okay: undefined, // English translation: 'OK' }, default: { goBackToSite: 'Zurück zur Seite', diff --git a/packages/core/src/locales/en/index.ts b/packages/core/src/locales/en/index.ts index b22d67ba..7e33787a 100644 --- a/packages/core/src/locales/en/index.ts +++ b/packages/core/src/locales/en/index.ts @@ -1,6 +1,6 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { BaseLocalePhrasesRoot } from '../types'; -const en: LocalePhrasesRoot = { +const en: BaseLocalePhrasesRoot = { auth: { login: 'Login', loggingIn: 'Logging in...', @@ -65,6 +65,10 @@ const en: LocalePhrasesRoot = { other: 'Other', negateLabel: 'Not %{label}', }, + table: { + summary: 'Summary', + collection: 'Collection', + }, defaultFields: { author: { label: 'Author', diff --git a/packages/core/src/locales/es/index.ts b/packages/core/src/locales/es/index.ts index 468646e5..260d102a 100644 --- a/packages/core/src/locales/es/index.ts +++ b/packages/core/src/locales/es/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const es: LocalePhrasesRoot = { auth: { @@ -12,6 +12,9 @@ const es: LocalePhrasesRoot = { errors: { email: 'Asegúrate de introducir tu correo electrónico.', password: 'Por favor introduce tu contraseña.', + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' identitySettings: 'No se pudo acceder a la configuración de Identity. Cuando uses el backend git-gateway asegurate de habilitar el servicio Identity y Git Gateway.', }, @@ -25,6 +28,7 @@ const es: LocalePhrasesRoot = { app: { errorHeader: 'Error al cargar la configuración del CMS', configErrors: 'Errores de configuración', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: 'Compruebe el archivo config.yml.', loadingConfig: 'Cargando configuración....', waitingBackend: 'Esperando al servidor...', @@ -36,7 +40,9 @@ const es: LocalePhrasesRoot = { collection: { sidebar: { collections: 'Colecciones', + allCollections: undefined, // English translation: 'All Collections' searchAll: 'Buscar todas', + searchIn: undefined, // English translation: 'Search in' }, collectionTop: { sortBy: 'Ordenar por', @@ -44,6 +50,10 @@ const es: LocalePhrasesRoot = { newButton: 'Nuevo %{collectionLabel}', ascending: 'Ascendente', descending: 'Descendente', + searchResults: undefined, // English translation: 'Search Results for "%{searchTerm}"' + searchResultsInCollection: undefined, // English translation: 'Search Results for "%{searchTerm}" in %{collection}' + filterBy: undefined, // English translation: 'Filter by' + groupBy: undefined, // English translation: 'Group by' }, entries: { loadingEntries: 'Cargando entradas', @@ -51,6 +61,14 @@ const es: LocalePhrasesRoot = { longerLoading: 'Esto puede tardar varios minutos', noEntries: 'Ninguna entrada', }, + groups: { + other: undefined, // English translation: 'Other' + negateLabel: undefined, // English translation: 'Not %{label}' + }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, defaultFields: { author: { label: 'Autor', @@ -59,6 +77,7 @@ const es: LocalePhrasesRoot = { label: 'Actualizado en', }, }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -78,39 +97,91 @@ const es: LocalePhrasesRoot = { rangeCountExact: '%{fieldLabel} debe tener exactamente %{count} elemento(s).', rangeMin: '%{fieldLabel} debe ser por lo menos %{minCount} elemento(s).', rangeMax: '%{fieldLabel} debe ser %{maxCount} o menos elemento(s).', + invalidPath: undefined, // English translation: ''%{path}' is not a valid path.' + pathExists: undefined, // English translation: 'Path '%{path}' already exists.' + invalidColor: undefined, // English translation: 'Color '%{color}' is invalid.' + invalidHexCode: undefined, // English translation: 'Hex codes must start with a # sign.' + }, + i18n: { + writingInLocale: undefined, // English translation: 'Writing in %{locale}' }, }, editor: { onLeavePage: '¿Estás seguro de que quieres dejar esta página?', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'Delete this published entry?' onDeleteWithUnsavedChangesBody: '¿Está seguro de que desea eliminar esta entrada publicada, así como los cambios no guardados de la sesión actual?', + onDeletePublishedEntryTitle: undefined, // English translation: 'Delete this published entry?' onDeletePublishedEntryBody: '¿Estás seguro de que quieres borrar esta entrada publicada?', loadingEntry: 'Cargando entrada...', }, + editorInterface: { + sideBySideI18n: undefined, // English translation: 'I18n Side by Side' + preview: undefined, // English translation: 'Preview' + toggleI18n: undefined, // English translation: 'Toggle i18n' + togglePreview: undefined, // English translation: 'Toggle preview' + toggleScrollSync: undefined, // English translation: 'Sync scrolling' + }, editorToolbar: { publish: 'Publicar', published: 'Publicado', - unpublish: 'Retirar', duplicate: 'Duplicar', publishAndCreateNew: 'Publicar y crear nuevo', publishAndDuplicate: 'Publicar y duplicar', deleteEntry: 'Eliminar entrada', publishNow: 'Publicar ahora', + discardChanges: undefined, // English translation: 'Discard changes' + discardChangesTitle: undefined, // English translation: 'Discard changes' + discardChangesBody: undefined, // English translation: 'Are you sure you want to discard the unsaved changed?' }, editorWidgets: { markdown: { + bold: undefined, // English translation: 'Bold' + italic: undefined, // English translation: 'Italic' + code: undefined, // English translation: 'Code' + link: undefined, // English translation: 'Link' + linkPrompt: undefined, // English translation: 'Enter the URL of the link' + headings: undefined, // English translation: 'Headings' + quote: undefined, // English translation: 'Quote' + bulletedList: undefined, // English translation: 'Bulleted List' + numberedList: undefined, // English translation: 'Numbered List' + addComponent: undefined, // English translation: 'Add Component' richText: 'Texto enriquecido', markdown: 'Markdown', + type: undefined, // English translation: 'Type...' }, image: { choose: 'Elige una imagen', + chooseMultiple: undefined, // English translation: 'Choose images' + chooseUrl: undefined, // English translation: 'Insert from URL' + replaceUrl: undefined, // English translation: 'Replace with URL' + promptUrl: undefined, // English translation: 'Enter the URL of the image' chooseDifferent: 'Elige una imagen diferente', + addMore: undefined, // English translation: 'Add more images' remove: 'Quita la imagen', + removeAll: undefined, // English translation: 'Remove all images' }, file: { choose: 'Escoge un archivo', + chooseUrl: undefined, // English translation: 'Insert from URL' + chooseMultiple: undefined, // English translation: 'Choose files' + replaceUrl: undefined, // English translation: 'Replace with URL' + promptUrl: undefined, // English translation: 'Enter the URL of the file' chooseDifferent: 'Elige un archivo diferente', + addMore: undefined, // English translation: 'Add more files' remove: 'Remover archivo', + removeAll: undefined, // English translation: 'Remove all files' + }, + folder: { + choose: undefined, // English translation: 'Choose a folder' + chooseUrl: undefined, // English translation: 'Insert folder path' + chooseMultiple: undefined, // English translation: 'Choose folders' + replaceUrl: undefined, // English translation: 'Replace with path' + promptUrl: undefined, // English translation: 'Enter path of the folder' + chooseDifferent: undefined, // English translation: 'Choose different folder' + addMore: undefined, // English translation: 'Add more folders' + remove: undefined, // English translation: 'Remove folder' + removeAll: undefined, // English translation: 'Remove all folders' }, unknownControl: { noControl: "No existe un control para el widget '%{widget}'.", @@ -128,17 +199,38 @@ const es: LocalePhrasesRoot = { }, datetime: { now: 'Ahora', + invalidDateTitle: undefined, // English translation: 'Invalid date' + invalidDateBody: undefined, // English translation: 'The date you entered is invalid.' + }, + list: { + add: undefined, // English translation: 'Add %{item}' + addType: undefined, // English translation: 'Add %{item}' + noValue: undefined, // English translation: 'No value' + }, + keyvalue: { + key: undefined, // English translation: 'Key' + value: undefined, // English translation: 'Value' + uniqueKeys: undefined, // English translation: '%{keyLabel} must be unique' }, }, }, mediaLibrary: { mediaLibraryCard: { draft: 'Borrador', + copy: undefined, // English translation: 'Copy' + copyUrl: undefined, // English translation: 'Copy URL' + copyPath: undefined, // English translation: 'Copy Path' + copyName: undefined, // English translation: 'Copy Name' + copied: undefined, // English translation: 'Copied' }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: '¿Está seguro de que desea eliminar el archivo seleccionado?', + fileTooLargeTitle: undefined, // English translation: 'File too large' fileTooLargeBody: 'Archivo muy pesado.\nConfigurado para no permitir archivos más pesados que %{size} kB.', + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: 'Cargando...', @@ -154,12 +246,30 @@ const es: LocalePhrasesRoot = { deleting: 'Eliminando...', deleteSelected: 'Eliminar selección', chooseSelected: 'Confirmar selección', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, default: { goBackToSite: 'Regresar al sitio', }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: 'Error', details: 'Se ha producido un error - por favor ', @@ -174,13 +284,15 @@ const es: LocalePhrasesRoot = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: 'Cerrar sesión', }, toast: { onFailToLoadEntries: 'No se ha podido cargar la entrada: %{details}', - onFailToLoadDeployPreview: 'No se ha podido cargar la vista previa: %{details}', onFailToPersist: 'No se ha podido guardar la entrada: %{details}', + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: 'No se ha podido borrar la entrada: %{details}', + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: 'No se ha podido actualizar el estado: %{details}', missingRequiredField: 'Oops, no ha rellenado un campo obligatorio. Por favor, rellénelo antes de guardar.', @@ -189,6 +301,8 @@ const es: LocalePhrasesRoot = { onFailToPublishEntry: 'No se ha podido publicar: %{details}', entryUpdated: 'Estado de entrada actualizado', onFailToAuth: '%{details}', + onLoggedOut: undefined, // English translation: 'You have been logged out, please back up any data and login again' + onBackendDown: undefined, // English translation: 'The backend service is experiencing an outage. See %{details} for more information' }, }, }; diff --git a/packages/core/src/locales/fr/index.ts b/packages/core/src/locales/fr/index.ts index ffc63455..7423dff4 100644 --- a/packages/core/src/locales/fr/index.ts +++ b/packages/core/src/locales/fr/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const fr: LocalePhrasesRoot = { auth: { @@ -12,6 +12,9 @@ const fr: LocalePhrasesRoot = { errors: { email: "Assurez-vous d'avoir entré votre email.", password: 'Merci de saisir votre mot de passe.', + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' identitySettings: "Impsosible d'accéder aux paramètres d'identité. Si vous utilisez le backend git-gateway, merci de vous assurer que vous avez bien activé le service Identity et la passerelle Git.", }, @@ -25,6 +28,7 @@ const fr: LocalePhrasesRoot = { app: { errorHeader: 'Erreur au chargement de la configuration du CMS', configErrors: 'Erreurs de configuration', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: 'Vérifiez votre fichier config.yml.', loadingConfig: 'Chargement de la configuration...', waitingBackend: 'En attente du serveur...', @@ -62,6 +66,10 @@ const fr: LocalePhrasesRoot = { other: 'Autre', negateLabel: 'Non %{label}', }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, defaultFields: { author: { label: 'Auteur', @@ -70,6 +78,7 @@ const fr: LocalePhrasesRoot = { label: 'Mis à jour le', }, }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -89,8 +98,10 @@ const fr: LocalePhrasesRoot = { rangeCountExact: '%{fieldLabel} doit avoir exactement %{count} éléments(s).', rangeMin: '%{fieldLabel} doit avoir au moins %{minCount} éléments(s).', rangeMax: '%{fieldLabel} doit avoir %{maxCount} éléments(s) ou moins.', - invalidPath: `'%{path}' n'est pas un chemin valide`, - pathExists: `Le chemin '%{path}' existe déjà`, + invalidPath: "'%{path}' n'est pas un chemin valide", + pathExists: "Le chemin '%{path}' existe déjà", + invalidColor: undefined, // English translation: 'Color '%{color}' is invalid.' + invalidHexCode: undefined, // English translation: 'Hex codes must start with a # sign.' }, i18n: { writingInLocale: 'Écrire en %{locale}', @@ -98,12 +109,16 @@ const fr: LocalePhrasesRoot = { }, editor: { onLeavePage: 'Voulez-vous vraiment quitter cette page ?', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'Delete this published entry?' onDeleteWithUnsavedChangesBody: 'Voulez-vous vraiment supprimer cette entrée publiée ainsi que vos modifications non enregistrées de cette session ?', + onDeletePublishedEntryTitle: undefined, // English translation: 'Delete this published entry?' onDeletePublishedEntryBody: 'Voulez-vous vraiment supprimer cette entrée publiée ?', loadingEntry: "Chargement de l'entrée...", }, editorInterface: { + sideBySideI18n: undefined, // English translation: 'I18n Side by Side' + preview: undefined, // English translation: 'Preview' toggleI18n: 'Édition multilingue', togglePreview: 'Aperçu', toggleScrollSync: 'Défilement synchronisé', @@ -111,12 +126,14 @@ const fr: LocalePhrasesRoot = { editorToolbar: { publish: 'Publier', published: 'Publiée', - unpublish: 'Dépublier', duplicate: 'Dupliquer', publishAndCreateNew: 'Publier et créer une nouvelle entrée', publishAndDuplicate: 'Publier et dupliquer', deleteEntry: "Supprimer l'entrée", publishNow: 'Publier maintenant', + discardChanges: undefined, // English translation: 'Discard changes' + discardChangesTitle: undefined, // English translation: 'Discard changes' + discardChangesBody: undefined, // English translation: 'Are you sure you want to discard the unsaved changed?' }, editorWidgets: { markdown: { @@ -132,22 +149,40 @@ const fr: LocalePhrasesRoot = { addComponent: 'Ajouter un composant', richText: 'Texte enrichi', markdown: 'Markdown', + type: undefined, // English translation: 'Type...' }, image: { choose: 'Choisir une image', + chooseMultiple: undefined, // English translation: 'Choose images' chooseUrl: 'Insérer depuis une adresse web', replaceUrl: 'Remplacer depuis une adresse web', promptUrl: "Entrer l'adresse web de l'image", chooseDifferent: 'Choisir une image différente', + addMore: undefined, // English translation: 'Add more images' remove: "Supprimer l'image", + removeAll: undefined, // English translation: 'Remove all images' }, file: { choose: 'Choisir un fichier', chooseUrl: 'Insérer depuis une adresse web', + chooseMultiple: undefined, // English translation: 'Choose files' replaceUrl: 'Remplacer depuis une adresse web', promptUrl: "Entrer l'adresse web du fichier", chooseDifferent: 'Choisir un fichier différent', + addMore: undefined, // English translation: 'Add more files' remove: 'Effacer le fichier', + removeAll: undefined, // English translation: 'Remove all files' + }, + folder: { + choose: undefined, // English translation: 'Choose a folder' + chooseUrl: undefined, // English translation: 'Insert folder path' + chooseMultiple: undefined, // English translation: 'Choose folders' + replaceUrl: undefined, // English translation: 'Replace with path' + promptUrl: undefined, // English translation: 'Enter path of the folder' + chooseDifferent: undefined, // English translation: 'Choose different folder' + addMore: undefined, // English translation: 'Add more folders' + remove: undefined, // English translation: 'Remove folder' + removeAll: undefined, // English translation: 'Remove all folders' }, unknownControl: { noControl: "Pas de contrôle pour le gadget '%{widget}'.", @@ -165,10 +200,18 @@ const fr: LocalePhrasesRoot = { }, datetime: { now: 'Maintenant', + invalidDateTitle: undefined, // English translation: 'Invalid date' + invalidDateBody: undefined, // English translation: 'The date you entered is invalid.' }, list: { add: 'Ajouter %{item}', addType: 'Ajouter une entrée de type %{item}', + noValue: undefined, // English translation: 'No value' + }, + keyvalue: { + key: undefined, // English translation: 'Key' + value: undefined, // English translation: 'Value' + uniqueKeys: undefined, // English translation: '%{keyLabel} must be unique' }, }, }, @@ -182,9 +225,13 @@ const fr: LocalePhrasesRoot = { copied: 'Copié', }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: 'Voulez-vous vraiment supprimer la ressource sélectionné ?', + fileTooLargeTitle: undefined, // English translation: 'File too large' fileTooLargeBody: "Le fichier est trop volumineux.\nL'instance est configurée pour bloquer les envois de plus de %{size} kB.", + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: 'Chargement...', @@ -200,12 +247,30 @@ const fr: LocalePhrasesRoot = { deleting: 'Suppression...', deleteSelected: 'Supprimer les éléments sélectionnés', chooseSelected: 'Choisir les éléments sélectionnés', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, default: { goBackToSite: 'Retourner sur le site', }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: 'Erreur', details: 'Une erreur est survenue, veuillez ', @@ -220,13 +285,15 @@ const fr: LocalePhrasesRoot = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: 'Déconnexion', }, toast: { onFailToLoadEntries: "Échec du chargement de l'entrée : %{details}", - onFailToLoadDeployPreview: "Échec du chargement de l'aperçu : %{details}", onFailToPersist: "Échec de l'enregistrement de l'entrée : %{details}", + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: "Échec de la suppression de l'entrée : %{details}", + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: 'Échec de la mise à jour du statut : %{details}', missingRequiredField: 'Oops, il manque un champ requis. Veuillez le renseigner avant de soumettre.', diff --git a/packages/core/src/locales/gr/index.ts b/packages/core/src/locales/gr/index.ts index 5f940bac..8e3cef8e 100644 --- a/packages/core/src/locales/gr/index.ts +++ b/packages/core/src/locales/gr/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const gr: LocalePhrasesRoot = { auth: { @@ -12,6 +12,9 @@ const gr: LocalePhrasesRoot = { errors: { email: 'Βεβαιωθείτε ότι έχετε εισαγάγει το email σας.', password: 'Παρακαλώ εισάγετε τον κωδικό πρόσβασής σας.', + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' identitySettings: 'Δεν είναι δυνατή η πρόσβαση στις ρυθμίσεις ταυτότητας. Όταν χρησιμοποιείτε το παρασκήνιο του git Gateway, φροντίστε να ενεργοποιήσετε την υπηρεσία Identity και το git Gateway.', }, @@ -25,6 +28,7 @@ const gr: LocalePhrasesRoot = { app: { errorHeader: 'Σφάλμα κατά τη φόρτωση της ρύθμισης παραμέτρων CMS', configErrors: 'Σφάλματα ρύθμισης παραμέτρων', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: 'Ελέγξτε το αρχείο config.yml.', loadingConfig: 'Φόρτωση ρύθμισης παραμέτρων...', waitingBackend: 'Αναμονή για παρασκηνιακό...', @@ -36,17 +40,44 @@ const gr: LocalePhrasesRoot = { collection: { sidebar: { collections: 'Συλλογές', + allCollections: undefined, // English translation: 'All Collections' searchAll: 'Αναζήτηση όλων', + searchIn: undefined, // English translation: 'Search in' }, collectionTop: { + sortBy: undefined, // English translation: 'Sort by' viewAs: 'Προβολή ως', newButton: 'Νέο %{collectionLabel}', + ascending: undefined, // English translation: 'Ascending' + descending: undefined, // English translation: 'Descending' + searchResults: undefined, // English translation: 'Search Results for "%{searchTerm}"' + searchResultsInCollection: undefined, // English translation: 'Search Results for "%{searchTerm}" in %{collection}' + filterBy: undefined, // English translation: 'Filter by' + groupBy: undefined, // English translation: 'Group by' }, entries: { loadingEntries: 'Εγγραφές φόρτωσης', cachingEntries: 'Εγγραφές προσωρινής αποθήκευσης', longerLoading: 'Αυτό μπορεί να διαρκέσει αρκετά λεπτά', + noEntries: undefined, // English translation: 'No Entries' }, + groups: { + other: undefined, // English translation: 'Other' + negateLabel: undefined, // English translation: 'Not %{label}' + }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, + defaultFields: { + author: { + label: undefined, // English translation: 'Author' + }, + updatedOn: { + label: undefined, // English translation: 'Updated On' + }, + }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -62,36 +93,96 @@ const gr: LocalePhrasesRoot = { range: 'Το %{fieldLabel} πρέπει να είναι μεταξύ %{minValue} και %{maxValue}.', min: 'Το %{fieldLabel} πρέπει να είναι τουλάχιστον %{minValue}.', max: 'Το %{fieldLabel} πρέπει να είναι %{maxValue} ή μικρότερο.', + rangeCount: undefined, // English translation: '%{fieldLabel} must have between %{minCount} and %{maxCount} item(s).' + rangeCountExact: undefined, // English translation: '%{fieldLabel} must have exactly %{count} item(s).' + rangeMin: undefined, // English translation: '%{fieldLabel} must have at least %{minCount} item(s).' + rangeMax: undefined, // English translation: '%{fieldLabel} must have %{maxCount} or less item(s).' + invalidPath: undefined, // English translation: ''%{path}' is not a valid path.' + pathExists: undefined, // English translation: 'Path '%{path}' already exists.' + invalidColor: undefined, // English translation: 'Color '%{color}' is invalid.' + invalidHexCode: undefined, // English translation: 'Hex codes must start with a # sign.' + }, + i18n: { + writingInLocale: undefined, // English translation: 'Writing in %{locale}' }, }, editor: { onLeavePage: 'Είστε βέβαιοι ότι θέλετε να αφήσετε αυτήν τη σελίδα;', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'Delete this published entry?' onDeleteWithUnsavedChangesBody: 'Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν τη δημοσιευμένη καταχώρηση, καθώς και τις αλλαγές που δεν αποθηκεύσατε από την τρέχουσα περίοδο λειτουργίας;', + onDeletePublishedEntryTitle: undefined, // English translation: 'Delete this published entry?' onDeletePublishedEntryBody: 'Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν τη δημοσιευμένη καταχώρηση;', loadingEntry: 'Φόρτωση εισόδου...', }, + editorInterface: { + sideBySideI18n: undefined, // English translation: 'I18n Side by Side' + preview: undefined, // English translation: 'Preview' + toggleI18n: undefined, // English translation: 'Toggle i18n' + togglePreview: undefined, // English translation: 'Toggle preview' + toggleScrollSync: undefined, // English translation: 'Sync scrolling' + }, editorToolbar: { publish: 'Δημοσίευση', published: 'Δημοσιεύθηκε', - unpublish: 'Κατάργηση δημοσίευσης', duplicate: 'Διπλότυπο', publishAndCreateNew: 'Δημοσίευση και δημιουργία νέων', publishAndDuplicate: 'Δημοσίευση και αντίγραφο', deleteEntry: 'Διαγραφή καταχώρησης', publishNow: 'Δημοσίευση τώρα', + discardChanges: undefined, // English translation: 'Discard changes' + discardChangesTitle: undefined, // English translation: 'Discard changes' + discardChangesBody: undefined, // English translation: 'Are you sure you want to discard the unsaved changed?' }, editorWidgets: { + markdown: { + bold: undefined, // English translation: 'Bold' + italic: undefined, // English translation: 'Italic' + code: undefined, // English translation: 'Code' + link: undefined, // English translation: 'Link' + linkPrompt: undefined, // English translation: 'Enter the URL of the link' + headings: undefined, // English translation: 'Headings' + quote: undefined, // English translation: 'Quote' + bulletedList: undefined, // English translation: 'Bulleted List' + numberedList: undefined, // English translation: 'Numbered List' + addComponent: undefined, // English translation: 'Add Component' + richText: undefined, // English translation: 'Rich Text' + markdown: undefined, // English translation: 'Markdown' + type: undefined, // English translation: 'Type...' + }, image: { choose: 'Επιλέξτε μια εικόνα', + chooseMultiple: undefined, // English translation: 'Choose images' + chooseUrl: undefined, // English translation: 'Insert from URL' + replaceUrl: undefined, // English translation: 'Replace with URL' + promptUrl: undefined, // English translation: 'Enter the URL of the image' chooseDifferent: 'Επιλέξτε διαφορετική εικόνα', + addMore: undefined, // English translation: 'Add more images' remove: 'Αφαιρέστε την εικόνα', + removeAll: undefined, // English translation: 'Remove all images' }, file: { choose: 'Επιλέξτε ένα αρχείο', + chooseUrl: undefined, // English translation: 'Insert from URL' + chooseMultiple: undefined, // English translation: 'Choose files' + replaceUrl: undefined, // English translation: 'Replace with URL' + promptUrl: undefined, // English translation: 'Enter the URL of the file' chooseDifferent: 'Επιλέξτε διαφορετικό αρχείο', + addMore: undefined, // English translation: 'Add more files' remove: 'Αφαιρέστε το αρχείο', + removeAll: undefined, // English translation: 'Remove all files' + }, + folder: { + choose: undefined, // English translation: 'Choose a folder' + chooseUrl: undefined, // English translation: 'Insert folder path' + chooseMultiple: undefined, // English translation: 'Choose folders' + replaceUrl: undefined, // English translation: 'Replace with path' + promptUrl: undefined, // English translation: 'Enter path of the folder' + chooseDifferent: undefined, // English translation: 'Choose different folder' + addMore: undefined, // English translation: 'Add more folders' + remove: undefined, // English translation: 'Remove folder' + removeAll: undefined, // English translation: 'Remove all folders' }, unknownControl: { noControl: "Δεν υπάρχει έλεγχος για το widget '%{widget}'.", @@ -107,16 +198,40 @@ const gr: LocalePhrasesRoot = { headingFive: 'Heading 5', headingSix: 'Heading 6', }, + datetime: { + now: undefined, // English translation: 'Now' + invalidDateTitle: undefined, // English translation: 'Invalid date' + invalidDateBody: undefined, // English translation: 'The date you entered is invalid.' + }, + list: { + add: undefined, // English translation: 'Add %{item}' + addType: undefined, // English translation: 'Add %{item}' + noValue: undefined, // English translation: 'No value' + }, + keyvalue: { + key: undefined, // English translation: 'Key' + value: undefined, // English translation: 'Value' + uniqueKeys: undefined, // English translation: '%{keyLabel} must be unique' + }, }, }, mediaLibrary: { mediaLibraryCard: { draft: 'Προσχέδιο', + copy: undefined, // English translation: 'Copy' + copyUrl: undefined, // English translation: 'Copy URL' + copyPath: undefined, // English translation: 'Copy Path' + copyName: undefined, // English translation: 'Copy Name' + copied: undefined, // English translation: 'Copied' }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: 'Είστε βέβαιοι ότι θέλετε να διαγράψετε τα επιλεγμένα πολυμέσα;', + fileTooLargeTitle: undefined, // English translation: 'File too large' fileTooLargeBody: 'Το αρχείο είναι πολύ μεγάλο.\nΔεν επιτρέπονται αρχεία μεγαλύτερα από %{size} kB.', + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: 'Φόρτωση...', @@ -128,17 +243,40 @@ const gr: LocalePhrasesRoot = { search: 'Αναζήτηση...', uploading: 'Φόρτωμα...', upload: 'Ανεβάστε νέα', + download: undefined, // English translation: 'Download' deleting: 'Διαγραφή...', deleteSelected: 'Διαγραφή επιλεγμένου', chooseSelected: 'Επιλέξτε επιλεγμένο', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, + default: { + goBackToSite: undefined, // English translation: 'Go back to site' + }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: 'Σφάλμα', details: 'Υπάρχει ένα λάθος ', reportIt: 'παρακαλώ να το αναφέρετε.', detailsHeading: 'Λεπτομέρειες', + privacyWarning: undefined, // English translation: 'Opening an issue pre-populates it with the error message and debugging data.\nPlease verify the information is correct and remove sensitive data if exists.' recoveredEntry: { heading: 'Ανακτημένο έγγραφο', warning: 'Παρακαλώ αντιγράψτε/επικολλήστε αυτό κάπου πριν πλοηγηθείτε μακριά!', @@ -146,13 +284,15 @@ const gr: LocalePhrasesRoot = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: 'Αποσύνδεση', }, toast: { onFailToLoadEntries: 'Απέτυχε η φόρτωση της καταχώρησης: %{details}', - onFailToLoadDeployPreview: 'Απέτυχε η φόρτωση της προεπισκόπησης: %{details}', onFailToPersist: 'Απέτυχε η διατήρηση της καταχώρησης:% {Details}', + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: 'Απέτυχε η διαγραφή της καταχώρησης: %{details}', + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: 'Απέτυχε η ενημέρωση της κατάστασης: %{details}', missingRequiredField: 'Ουπς, ξεχάσατε ένα απαιτούμενο πεδίο. Συμπληρώστε το πριν από την αποθήκευση.', @@ -161,6 +301,8 @@ const gr: LocalePhrasesRoot = { onFailToPublishEntry: 'Η δημοσίευση απέτυχε: %{details}', entryUpdated: 'Η κατάσταση εισόδου ενημερώθηκε', onFailToAuth: '%{details}', + onLoggedOut: undefined, // English translation: 'You have been logged out, please back up any data and login again' + onBackendDown: undefined, // English translation: 'The backend service is experiencing an outage. See %{details} for more information' }, }, }; diff --git a/packages/core/src/locales/he/index.ts b/packages/core/src/locales/he/index.ts index f523b423..672c8c83 100644 --- a/packages/core/src/locales/he/index.ts +++ b/packages/core/src/locales/he/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const he: LocalePhrasesRoot = { auth: { @@ -12,6 +12,9 @@ const he: LocalePhrasesRoot = { errors: { email: 'נא לא לשכוח להקליד את כתובת המייל', password: 'נא להקליד את הסיסמה.', + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' identitySettings: 'הגדרות אימות הזהות אינן נגישות. כאשר משתמשים ב-git-gateway כשירות ה-backend יש לוודא ששירות אימות הזהות ו-Git Gateway הופעלו.', }, @@ -25,6 +28,7 @@ const he: LocalePhrasesRoot = { app: { errorHeader: 'אירעה שגיאה בטעינת הגדרות מערכת ניהול התוכן', configErrors: 'שגיאות בהגדרות', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: 'יש לבדוק את הקובץ config.yml.', loadingConfig: 'טעינת הגדרות...', waitingBackend: 'ממתין לטעינת ה-backend...', @@ -61,6 +65,10 @@ const he: LocalePhrasesRoot = { other: 'אחר', negateLabel: 'לא %{label}', }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, defaultFields: { author: { label: 'מאת', @@ -69,6 +77,7 @@ const he: LocalePhrasesRoot = { label: 'עודכן בתאריך', }, }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -88,8 +97,10 @@ const he: LocalePhrasesRoot = { rangeCountExact: '%{fieldLabel} חייב לכלול בדיוק %{count} אייטמים.', rangeMin: '%{fieldLabel} חייב לכלול לפחות %{minCount} אייטמים', rangeMax: '%{fieldLabel} חייב לכלול %{maxCount} אייטמים לכל היותר.', - invalidPath: `'%{path}' אינו URL תקין`, - pathExists: `'%{path}' כבר קיים`, + invalidPath: "'%{path}' אינו URL תקין", + pathExists: "'%{path}' כבר קיים", + invalidColor: undefined, // English translation: 'Color '%{color}' is invalid.' + invalidHexCode: undefined, // English translation: 'Hex codes must start with a # sign.' }, i18n: { writingInLocale: 'כתיבה בשפה ה%{locale}', @@ -97,12 +108,16 @@ const he: LocalePhrasesRoot = { }, editor: { onLeavePage: 'האם ברצונך לעבור לעמוד אחר ללא שמירה?', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'Delete this published entry?' onDeleteWithUnsavedChangesBody: 'האם ברצונך למחוק את האייטם הזה לפני פרסומו, וכן את השינויים שבוצעו כעת וטרם נשמרו?', + onDeletePublishedEntryTitle: undefined, // English translation: 'Delete this published entry?' onDeletePublishedEntryBody: 'האם ברצונך למחוק את האייטם הזה לאחר פרסומו?', loadingEntry: 'טעינת אייטם...', }, editorInterface: { + sideBySideI18n: undefined, // English translation: 'I18n Side by Side' + preview: undefined, // English translation: 'Preview' toggleI18n: 'החלפת שפות', togglePreview: 'הפעלת תצוגה מקדימה', toggleScrollSync: 'סנכרון הגלילה', @@ -110,12 +125,14 @@ const he: LocalePhrasesRoot = { editorToolbar: { publish: 'פרסום', published: 'פורסם', - unpublish: 'ביטול הפרסום', duplicate: 'שכפול', publishAndCreateNew: 'פרסום ויצירת אייטם חדש', publishAndDuplicate: 'פרסום ושכפול', deleteEntry: 'מחיקת האייטם', publishNow: 'פרסום מיידי', + discardChanges: undefined, // English translation: 'Discard changes' + discardChangesTitle: undefined, // English translation: 'Discard changes' + discardChangesBody: undefined, // English translation: 'Are you sure you want to discard the unsaved changed?' }, editorWidgets: { markdown: { @@ -131,22 +148,40 @@ const he: LocalePhrasesRoot = { addComponent: 'הוספת רכיב', richText: 'טקסט עשיר', markdown: 'Markdown', + type: undefined, // English translation: 'Type...' }, image: { choose: 'בחירת תמונה', + chooseMultiple: undefined, // English translation: 'Choose images' chooseUrl: 'הוספה מכתובת אינטרנט', replaceUrl: 'החלפת תמונה מכתובת אינטרנט', promptUrl: 'נא להכניס את ה-URL של התמונה', chooseDifferent: 'בחירת תמונה אחרת', + addMore: undefined, // English translation: 'Add more images' remove: 'הסרת תמונה', + removeAll: undefined, // English translation: 'Remove all images' }, file: { choose: 'בחירת קובץ', chooseUrl: 'הוספה מכתובת אינטרנט', + chooseMultiple: undefined, // English translation: 'Choose files' replaceUrl: 'החלפת קובץ מכתובת אינטרנט', promptUrl: 'נא להכניס את ה-URL של הקובץ', chooseDifferent: 'בחירת קובץ אחר', + addMore: undefined, // English translation: 'Add more files' remove: 'הסרת קובץ', + removeAll: undefined, // English translation: 'Remove all files' + }, + folder: { + choose: undefined, // English translation: 'Choose a folder' + chooseUrl: undefined, // English translation: 'Insert folder path' + chooseMultiple: undefined, // English translation: 'Choose folders' + replaceUrl: undefined, // English translation: 'Replace with path' + promptUrl: undefined, // English translation: 'Enter path of the folder' + chooseDifferent: undefined, // English translation: 'Choose different folder' + addMore: undefined, // English translation: 'Add more folders' + remove: undefined, // English translation: 'Remove folder' + removeAll: undefined, // English translation: 'Remove all folders' }, unknownControl: { noControl: "לא הוגדרו פעולות ל'%{widget}'.", @@ -164,10 +199,18 @@ const he: LocalePhrasesRoot = { }, datetime: { now: 'עכשיו', + invalidDateTitle: undefined, // English translation: 'Invalid date' + invalidDateBody: undefined, // English translation: 'The date you entered is invalid.' }, list: { add: 'הוספת %{item}', addType: 'הוספת אייטם מסוג %{item}', + noValue: undefined, // English translation: 'No value' + }, + keyvalue: { + key: undefined, // English translation: 'Key' + value: undefined, // English translation: 'Value' + uniqueKeys: undefined, // English translation: '%{keyLabel} must be unique' }, }, }, @@ -181,8 +224,12 @@ const he: LocalePhrasesRoot = { copied: 'העתקה הושלמה', }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: 'האם ברצונך למחוק את פריט המדיה הזה?', + fileTooLargeTitle: undefined, // English translation: 'File too large' fileTooLargeBody: 'הקובץ גדול מדי.\nמוגדר לא לאפשר העלאת קבצים גדולים מ-%{size} קילובייט.', + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: 'טעינה...', @@ -198,12 +245,30 @@ const he: LocalePhrasesRoot = { deleting: 'מחיקה...', deleteSelected: 'למחוק את הקובץ המסומן', chooseSelected: 'לבחור את הקובץ המסומן', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, default: { goBackToSite: 'בחזרה לאתר', }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: 'שגיאה', details: 'אירעה שגיאה. נא ', @@ -218,19 +283,20 @@ const he: LocalePhrasesRoot = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: 'התנתקות', }, toast: { onFailToLoadEntries: 'טעינת האייטם %{details} נכשלה', - onFailToLoadDeployPreview: 'טעינת התצוגה המקדימה של האייטם %{details} נכשלה', onFailToPersist: 'אחסון האייטם %{details} נכשל', + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: 'מחיקת האייטם %{details} נכשלה', + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: 'עדכון מצב האייטם %{details} נכשל', missingRequiredField: 'אופס, שכחת למלא שדה חובה. נא להשלים את המידע החסר לפני השמירה', entrySaved: 'האייטם נשמר', entryPublished: 'האייטם פורסם', onFailToPublishEntry: 'פרסום האייטם %{details} נכשל', - onFailToUnpublishEntry: 'ביטול פרסום האייטם %{details} נכשל', entryUpdated: 'מצב האייטם עודכן', onFailToAuth: '%{details}', onLoggedOut: 'נותקת מהמערכת. יש לגבות מידע לא שמור ולהתחבר שוב', diff --git a/packages/core/src/locales/hr/index.ts b/packages/core/src/locales/hr/index.ts index a5598e86..ad918b3f 100644 --- a/packages/core/src/locales/hr/index.ts +++ b/packages/core/src/locales/hr/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const hr: LocalePhrasesRoot = { auth: { @@ -12,6 +12,9 @@ const hr: LocalePhrasesRoot = { errors: { email: 'Unesite email.', password: 'Molimo unisite lozinku.', + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' identitySettings: 'Nemoguće pristupiti postavkama identita. Kod korištenja git-gateway backenda morate uključiti "Identity service" te "Git Gateway"', }, @@ -25,6 +28,7 @@ const hr: LocalePhrasesRoot = { app: { errorHeader: 'Greška pri učitavanju CMS konfiguracije', configErrors: 'Greška u konfiguraciji', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: 'Provjeri config.yml datoteku.', loadingConfig: 'Učitavanje konfiguracije...', waitingBackend: 'Čekanje na backend...', @@ -61,6 +65,10 @@ const hr: LocalePhrasesRoot = { other: 'Ostalo', negateLabel: 'Nije %{label}', }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, defaultFields: { author: { label: 'Autor', @@ -69,6 +77,7 @@ const hr: LocalePhrasesRoot = { label: 'Ažurirano na', }, }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -88,8 +97,10 @@ const hr: LocalePhrasesRoot = { rangeCountExact: '%{fieldLabel} mora imati točno %{count} predmeta.', rangeMin: '%{fieldLabel} mora imati najmanje %{minCount} predmet(a).', rangeMax: '%{fieldLabel} mora imate %{maxCount} ili manje predmeta.', - invalidPath: `'%{path}' nije valjana putanja`, - pathExists: `Putanja '%{path}' već postoji`, + invalidPath: "'%{path}' nije valjana putanja", + pathExists: "Putanja '%{path}' već postoji", + invalidColor: undefined, // English translation: 'Color '%{color}' is invalid.' + invalidHexCode: undefined, // English translation: 'Hex codes must start with a # sign.' }, i18n: { writingInLocale: 'Pisanje na %{locale}', @@ -97,31 +108,31 @@ const hr: LocalePhrasesRoot = { }, editor: { onLeavePage: 'Jeste li sigurni da želite napustiti stranicu?', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'Delete this published entry?' onDeleteWithUnsavedChangesBody: 'Jeste li sigurni da želite obrisati objavljeni unos, te nespremljene promjene u trenutnoj sesiji?', + onDeletePublishedEntryTitle: undefined, // English translation: 'Delete this published entry?' onDeletePublishedEntryBody: 'Jeste li sigurni da želite obrisati ovaj objavljeni unos?', loadingEntry: 'Učitavanje unosa...', }, + editorInterface: { + sideBySideI18n: undefined, // English translation: 'I18n Side by Side' + preview: undefined, // English translation: 'Preview' + toggleI18n: undefined, // English translation: 'Toggle i18n' + togglePreview: undefined, // English translation: 'Toggle preview' + toggleScrollSync: undefined, // English translation: 'Sync scrolling' + }, editorToolbar: { publish: 'Objavi', published: 'Objavljeno', - unpublish: 'Obriši iz objava', duplicate: 'Dupliciraj', publishAndCreateNew: 'Objavi i kreiraj novo', publishAndDuplicate: 'Objavi i dupliciraj', deleteEntry: 'Obriši unos', - saving: 'Spremanje...', - save: 'Spremi', - deleting: 'Brisanje...', - updating: 'Ažuriranje...', - status: 'Status: %{status}', - backCollection: 'Pisanje u %{collectionLabel} zbirci', - unsavedChanges: 'Nespremljene promjene', - changesSaved: 'Promjene spremljene', - draft: 'Skica', - inReview: 'Osvrt', - ready: 'Spremno', publishNow: 'Objavi sad', + discardChanges: undefined, // English translation: 'Discard changes' + discardChangesTitle: undefined, // English translation: 'Discard changes' + discardChangesBody: undefined, // English translation: 'Are you sure you want to discard the unsaved changed?' }, editorWidgets: { markdown: { @@ -137,16 +148,40 @@ const hr: LocalePhrasesRoot = { addComponent: 'Dodaj komponentu', richText: 'Bogati tekst', markdown: 'Markdown', + type: undefined, // English translation: 'Type...' }, image: { choose: 'Odaberi sliku', + chooseMultiple: undefined, // English translation: 'Choose images' + chooseUrl: undefined, // English translation: 'Insert from URL' + replaceUrl: undefined, // English translation: 'Replace with URL' + promptUrl: undefined, // English translation: 'Enter the URL of the image' chooseDifferent: 'Odaberi drugu sliku', + addMore: undefined, // English translation: 'Add more images' remove: 'Izbriši sliku', + removeAll: undefined, // English translation: 'Remove all images' }, file: { choose: 'Odaberi datoteku', + chooseUrl: undefined, // English translation: 'Insert from URL' + chooseMultiple: undefined, // English translation: 'Choose files' + replaceUrl: undefined, // English translation: 'Replace with URL' + promptUrl: undefined, // English translation: 'Enter the URL of the file' chooseDifferent: 'Odaberi drugu datoteku', + addMore: undefined, // English translation: 'Add more files' remove: 'Obriši datoteku', + removeAll: undefined, // English translation: 'Remove all files' + }, + folder: { + choose: undefined, // English translation: 'Choose a folder' + chooseUrl: undefined, // English translation: 'Insert folder path' + chooseMultiple: undefined, // English translation: 'Choose folders' + replaceUrl: undefined, // English translation: 'Replace with path' + promptUrl: undefined, // English translation: 'Enter path of the folder' + chooseDifferent: undefined, // English translation: 'Choose different folder' + addMore: undefined, // English translation: 'Add more folders' + remove: undefined, // English translation: 'Remove folder' + removeAll: undefined, // English translation: 'Remove all folders' }, unknownControl: { noControl: "Kontrola nije pronađena za widget '%{widget}'.", @@ -164,17 +199,38 @@ const hr: LocalePhrasesRoot = { }, datetime: { now: 'Sad', + invalidDateTitle: undefined, // English translation: 'Invalid date' + invalidDateBody: undefined, // English translation: 'The date you entered is invalid.' + }, + list: { + add: undefined, // English translation: 'Add %{item}' + addType: undefined, // English translation: 'Add %{item}' + noValue: undefined, // English translation: 'No value' + }, + keyvalue: { + key: undefined, // English translation: 'Key' + value: undefined, // English translation: 'Value' + uniqueKeys: undefined, // English translation: '%{keyLabel} must be unique' }, }, }, mediaLibrary: { mediaLibraryCard: { draft: 'Skica', + copy: undefined, // English translation: 'Copy' + copyUrl: undefined, // English translation: 'Copy URL' + copyPath: undefined, // English translation: 'Copy Path' + copyName: undefined, // English translation: 'Copy Name' + copied: undefined, // English translation: 'Copied' }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: 'Jeste li sigurni da želite obrisati odabrane medijske datoteke?', + fileTooLargeTitle: undefined, // English translation: 'File too large' fileTooLargeBody: 'Datoteka prevelika.\nKonfigurirano da ne podržava datoteke veće od %{size} kB.', + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: 'Učitavanje...', @@ -190,12 +246,30 @@ const hr: LocalePhrasesRoot = { deleting: 'Brisanje...', deleteSelected: 'Obriši označeno', chooseSelected: 'Odaberi označeno', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, default: { goBackToSite: 'Povratak na stranicu', }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: 'Greška', details: 'Dogodila se greška - molimo ', @@ -210,19 +284,20 @@ const hr: LocalePhrasesRoot = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: 'Odjava', }, toast: { onFailToLoadEntries: 'Neuspjelo dohvaćanje unosa: %{details}', - onFailToLoadDeployPreview: 'Neuspjelo dohvaćanje pregleda: %{details}', onFailToPersist: 'Neuspjelo spremanje unosa: %{details}', + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: 'Neuspjelo brisanje unosa: %{details}', + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: 'Neuspjelo ažuriranje statusa: %{details}', missingRequiredField: 'Uups, preskočili ste obvezno polje. Molimo popunite prije spremanja.', entrySaved: 'Unos spremljen', entryPublished: 'Unos objavljen', onFailToPublishEntry: 'Neuspjelo objavljivanje unosa: %{details}', - onFailToUnpublishEntry: 'Neuspjelo brisanje unosa: %{details}', entryUpdated: 'Status unosa ažuriran', onFailToAuth: '%{details}', onLoggedOut: 'Odjavljeni ste, molimo spremite sve podatke i prijavite se ponovno', diff --git a/packages/core/src/locales/hu/index.ts b/packages/core/src/locales/hu/index.ts index b21c3b56..f8864605 100644 --- a/packages/core/src/locales/hu/index.ts +++ b/packages/core/src/locales/hu/index.ts @@ -1,6 +1,23 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const hu: LocalePhrasesRoot = { + auth: { + login: undefined, // English translation: 'Login' + loggingIn: undefined, // English translation: 'Logging in...' + loginWithNetlifyIdentity: undefined, // English translation: 'Login with Netlify Identity' + loginWithBitbucket: undefined, // English translation: 'Login with Bitbucket' + loginWithGitHub: undefined, // English translation: 'Login with GitHub' + loginWithGitLab: undefined, // English translation: 'Login with GitLab' + loginWithGitea: undefined, // English translation: 'Login with Gitea' + errors: { + email: undefined, // English translation: 'Make sure to enter your email.' + password: undefined, // English translation: 'Please enter your password.' + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' + identitySettings: undefined, // English translation: 'Unable to access identity settings. When using git-gateway backend make sure to enable Identity service and Git Gateway.' + }, + }, app: { header: { content: 'Tartalom', @@ -10,6 +27,7 @@ const hu: LocalePhrasesRoot = { app: { errorHeader: 'Hiba történt a CMS konfiguráció betöltése közben', configErrors: 'Configurációs hibák', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: 'Ellenőrizd a config.yml filet.', loadingConfig: 'Konfiguráció betöltése...', waitingBackend: 'Várakozás hattérrendszerekre...', @@ -21,17 +39,44 @@ const hu: LocalePhrasesRoot = { collection: { sidebar: { collections: 'Gyűjtemények', + allCollections: undefined, // English translation: 'All Collections' searchAll: 'Keresés mindenre', + searchIn: undefined, // English translation: 'Search in' }, collectionTop: { + sortBy: undefined, // English translation: 'Sort by' viewAs: 'Nézet mint', newButton: 'Új %{collectionLabel}', + ascending: undefined, // English translation: 'Ascending' + descending: undefined, // English translation: 'Descending' + searchResults: undefined, // English translation: 'Search Results for "%{searchTerm}"' + searchResultsInCollection: undefined, // English translation: 'Search Results for "%{searchTerm}" in %{collection}' + filterBy: undefined, // English translation: 'Filter by' + groupBy: undefined, // English translation: 'Group by' }, entries: { loadingEntries: 'Bejegyzések betöltése', cachingEntries: 'Bejegyzések cacheelése', longerLoading: 'Ez még eltarthat néhany percig', + noEntries: undefined, // English translation: 'No Entries' }, + groups: { + other: undefined, // English translation: 'Other' + negateLabel: undefined, // English translation: 'Not %{label}' + }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, + defaultFields: { + author: { + label: undefined, // English translation: 'Author' + }, + updatedOn: { + label: undefined, // English translation: 'Updated On' + }, + }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -47,46 +92,95 @@ const hu: LocalePhrasesRoot = { range: '%{fieldLabel}, %{minValue} és %{maxValue} értékek között kell legyen.', min: '%{fieldLabel} legalább %{minValue} kell legyen vagy több.', max: '%{fieldLabel} legalabb %{maxValue} vagy kevesebb kell legyen.', + rangeCount: undefined, // English translation: 'undefined' + rangeCountExact: undefined, // English translation: 'undefined' + rangeMin: undefined, // English translation: 'undefined' + rangeMax: undefined, // English translation: 'undefined' + invalidPath: undefined, // English translation: 'undefined' + pathExists: undefined, // English translation: 'undefined' + invalidColor: undefined, // English translation: 'undefined' + invalidHexCode: undefined, // English translation: 'undefined' + }, + i18n: { + writingInLocale: undefined, // English translation: 'undefined' }, }, editor: { onLeavePage: 'Biztos hogy el akarod hagyni az oldalt?', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'undefined' onDeleteWithUnsavedChangesBody: 'Töröljük ezt a publikált bejegyzést, a többi mentetlen modositással együtt?', + onDeletePublishedEntryTitle: undefined, // English translation: 'undefined' onDeletePublishedEntryBody: 'Töröljük ezt a publikált bejegyzést?', loadingEntry: 'Bejegyzés betöltése...', }, + editorInterface: { + sideBySideI18n: undefined, // English translation: 'undefined' + preview: undefined, // English translation: 'undefined' + toggleI18n: undefined, // English translation: 'undefined' + togglePreview: undefined, // English translation: 'undefined' + toggleScrollSync: undefined, // English translation: 'undefined' + }, editorToolbar: { publish: 'Publikáció', published: 'Publikálás', - unpublish: 'Publikálás visszavonása', duplicate: 'Duplikált', publishAndCreateNew: 'Publikálás és új létrehozása', publishAndDuplicate: 'Publikálás és duplikál', deleteEntry: 'Bejegyzés törlése', - saving: 'Mentés...', - save: 'Mentés', - deleting: 'Törlés...', - updating: 'Frissítés...', - status: 'Beállitása: %{status}', - backCollection: ' Írás a %{collectionLabel} gyűjteménybe', - unsavedChanges: 'Nemmentett változtatások', - changesSaved: 'Változások elmentve', - draft: 'Piszkozat', - inReview: 'Felülvizsgálat alatt', - ready: 'Kész', publishNow: 'Publikálás most', + discardChanges: undefined, // English translation: 'undefined' + discardChangesTitle: undefined, // English translation: 'undefined' + discardChangesBody: undefined, // English translation: 'undefined' }, editorWidgets: { + markdown: { + bold: undefined, // English translation: 'undefined' + italic: undefined, // English translation: 'undefined' + code: undefined, // English translation: 'undefined' + link: undefined, // English translation: 'undefined' + linkPrompt: undefined, // English translation: 'undefined' + headings: undefined, // English translation: 'undefined' + quote: undefined, // English translation: 'undefined' + bulletedList: undefined, // English translation: 'undefined' + numberedList: undefined, // English translation: 'undefined' + addComponent: undefined, // English translation: 'undefined' + richText: undefined, // English translation: 'undefined' + markdown: undefined, // English translation: 'undefined' + type: undefined, // English translation: 'undefined' + }, image: { choose: 'Válasszon képet', + chooseMultiple: undefined, // English translation: 'undefined' + chooseUrl: undefined, // English translation: 'undefined' + replaceUrl: undefined, // English translation: 'undefined' + promptUrl: undefined, // English translation: 'undefined' chooseDifferent: 'Válasszon másik képet', + addMore: undefined, // English translation: 'undefined' remove: 'Távolítsa el a képet', + removeAll: undefined, // English translation: 'undefined' }, file: { choose: 'Válasszon fájlt', + chooseUrl: undefined, // English translation: 'undefined' + chooseMultiple: undefined, // English translation: 'undefined' + replaceUrl: undefined, // English translation: 'undefined' + promptUrl: undefined, // English translation: 'undefined' chooseDifferent: 'Válasszon másik fájlt', + addMore: undefined, // English translation: 'undefined' remove: 'Távolítsa el a fájlt', + removeAll: undefined, // English translation: 'undefined' + }, + folder: { + choose: undefined, // English translation: 'undefined' + chooseUrl: undefined, // English translation: 'undefined' + chooseMultiple: undefined, // English translation: 'undefined' + replaceUrl: undefined, // English translation: 'undefined' + promptUrl: undefined, // English translation: 'undefined' + chooseDifferent: undefined, // English translation: 'undefined' + addMore: undefined, // English translation: 'undefined' + remove: undefined, // English translation: 'undefined' + removeAll: undefined, // English translation: 'undefined' }, unknownControl: { noControl: "Nincs vezérlés a '%{widget}' widget számára.", @@ -102,18 +196,39 @@ const hu: LocalePhrasesRoot = { headingFive: 'Heading 5', headingSix: 'Heading 6', }, + datetime: { + now: undefined, // English translation: 'undefined' + invalidDateTitle: undefined, // English translation: 'undefined' + invalidDateBody: undefined, // English translation: 'undefined' + }, list: { add: 'Új %{item}', addType: 'Új típus %{item}', + noValue: undefined, // English translation: 'undefined' + }, + keyvalue: { + key: undefined, // English translation: 'undefined' + value: undefined, // English translation: 'undefined' + uniqueKeys: undefined, // English translation: 'undefined' }, }, }, mediaLibrary: { mediaLibraryCard: { draft: 'Piszkozat', + copy: undefined, // English translation: 'Copy' + copyUrl: undefined, // English translation: 'Copy URL' + copyPath: undefined, // English translation: 'Copy Path' + copyName: undefined, // English translation: 'Copy Name' + copied: undefined, // English translation: 'Copied' }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: 'Biztos törli a kiválasztott média tartalmat?', + fileTooLargeTitle: undefined, // English translation: 'File too large' + fileTooLargeBody: undefined, // English translation: 'File too large.\nConfigured to not allow files greater than %{size} kB.' + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: 'Betöltés...', @@ -125,17 +240,40 @@ const hu: LocalePhrasesRoot = { search: 'Keresés...', uploading: 'Feltöltés...', upload: 'Új feltöltés', + download: undefined, // English translation: 'Download' deleting: 'Törlés...', deleteSelected: 'Kijelöltek törlése', chooseSelected: 'Kijelöl', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, + default: { + goBackToSite: undefined, // English translation: 'Go back to site' + }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: 'Hiba', details: 'Hiba történt - kérjük ', reportIt: 'jelentse.', detailsHeading: 'Részletek', + privacyWarning: undefined, // English translation: 'Opening an issue pre-populates it with the error message and debugging data.\nPlease verify the information is correct and remove sensitive data if exists.' recoveredEntry: { heading: 'Helyreállitott dokumentum', warning: 'Kérjük mentse ezt el (vágólapra) mielőtt elhagyná az oldalt!', @@ -143,13 +281,15 @@ const hu: LocalePhrasesRoot = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: 'Kijelentkezés', }, toast: { onFailToLoadEntries: 'A bejegyzés betöltése nem sikerült: %{details}', - onFailToLoadDeployPreview: 'Az előnézet betöltése nem sikerült: %{details}', onFailToPersist: 'Bejegyzés megtartása sikertelen: %{details}', + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: 'A bejegyzés törlése sikertelen: %{details}', + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: 'Az állapot frissítése nem sikerült: %{details}', missingRequiredField: 'Hoppá, kihagytál egy kötelező mezőt. Mentés előtt töltsd ki.', entrySaved: 'Bejegyzés elmentve', @@ -157,6 +297,8 @@ const hu: LocalePhrasesRoot = { onFailToPublishEntry: 'Bejegyzés publikálása sikertelen: %{details}', entryUpdated: 'Bejegyzés állapota frissült', onFailToAuth: '%{details}', + onLoggedOut: undefined, // English translation: 'You have been logged out, please back up any data and login again' + onBackendDown: undefined, // English translation: 'The backend service is experiencing an outage. See %{details} for more information' }, }, }; diff --git a/packages/core/src/locales/index.ts b/packages/core/src/locales/index.ts index 038c1761..ca13b13b 100644 --- a/packages/core/src/locales/index.ts +++ b/packages/core/src/locales/index.ts @@ -30,7 +30,9 @@ import bg from './bg'; import zh_Hans from './zh_Hans'; import he from './he'; -import type { LocalePhrasesRoot } from '../interface'; +import type { LocalePhrasesRoot } from './types'; + +export * from './types'; const locales: Record = { cs, diff --git a/packages/core/src/locales/it/index.ts b/packages/core/src/locales/it/index.ts index 6e16de7f..f19d9358 100644 --- a/packages/core/src/locales/it/index.ts +++ b/packages/core/src/locales/it/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const it: LocalePhrasesRoot = { auth: { @@ -12,6 +12,9 @@ const it: LocalePhrasesRoot = { errors: { email: 'Assicurati di inserire la tua mail.', password: 'Inserisci la tua password.', + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' identitySettings: 'Impossibile accedere alle impostazioni di Identity. Quando usi git-gateway come backend assicurati di abilitare il servizio Itentity e Git Gateway.', }, @@ -25,6 +28,7 @@ const it: LocalePhrasesRoot = { app: { errorHeader: 'Errore nel caricamento della configurazione CMS', configErrors: 'Errori di Configurazione', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: 'Controlla il tuo file config.yml.', loadingConfig: 'Caricando la configurazione...', waitingBackend: 'Attendi il backend...', @@ -36,17 +40,44 @@ const it: LocalePhrasesRoot = { collection: { sidebar: { collections: 'Collezioni', + allCollections: undefined, // English translation: 'All Collections' searchAll: 'Cerca su tutto', + searchIn: undefined, // English translation: 'Search in' }, collectionTop: { + sortBy: undefined, // English translation: 'Sort by' viewAs: 'Vedi come', newButton: 'Nuovo/a %{collectionLabel}', + ascending: undefined, // English translation: 'Ascending' + descending: undefined, // English translation: 'Descending' + searchResults: undefined, // English translation: 'Search Results for "%{searchTerm}"' + searchResultsInCollection: undefined, // English translation: 'Search Results for "%{searchTerm}" in %{collection}' + filterBy: undefined, // English translation: 'Filter by' + groupBy: undefined, // English translation: 'Group by' }, entries: { loadingEntries: 'Caricando le voci', cachingEntries: 'Cachando le voci', longerLoading: 'Questa operazione potrebbe durare diversi minuti', + noEntries: undefined, // English translation: 'No Entries' }, + groups: { + other: undefined, // English translation: 'Other' + negateLabel: undefined, // English translation: 'Not %{label}' + }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, + defaultFields: { + author: { + label: undefined, // English translation: 'Author' + }, + updatedOn: { + label: undefined, // English translation: 'Updated On' + }, + }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -62,35 +93,95 @@ const it: LocalePhrasesRoot = { range: '%{fieldLabel} deve essere tra %{minValue} e %{maxValue}.', min: '%{fieldLabel} deve essere almeno %{minValue}.', max: '%{fieldLabel} deve essere %{maxValue} o meno.', + rangeCount: undefined, // English translation: '%{fieldLabel} must have between %{minCount} and %{maxCount} item(s).' + rangeCountExact: undefined, // English translation: '%{fieldLabel} must have exactly %{count} item(s).' + rangeMin: undefined, // English translation: '%{fieldLabel} must have at least %{minCount} item(s).' + rangeMax: undefined, // English translation: '%{fieldLabel} must have %{maxCount} or less item(s).' + invalidPath: undefined, // English translation: ''%{path}' is not a valid path.' + pathExists: undefined, // English translation: 'Path '%{path}' already exists.' + invalidColor: undefined, // English translation: 'Color '%{color}' is invalid.' + invalidHexCode: undefined, // English translation: 'Hex codes must start with a # sign.' + }, + i18n: { + writingInLocale: undefined, // English translation: 'Writing in %{locale}' }, }, editor: { onLeavePage: 'Sei sicuro di voler lasciare questa pagina?', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'Delete this published entry?' onDeleteWithUnsavedChangesBody: 'Sei sicuro di voler cancellare questa voce pubblicata e tutte le modifiche non salvate della tua sessione corrente?', + onDeletePublishedEntryTitle: undefined, // English translation: 'Delete this published entry?' onDeletePublishedEntryBody: 'Sei sicuro di voler cancellare questa voce pubblicata?', loadingEntry: 'Caricando la voce...', }, + editorInterface: { + sideBySideI18n: undefined, // English translation: 'I18n Side by Side' + preview: undefined, // English translation: 'Preview' + toggleI18n: undefined, // English translation: 'Toggle i18n' + togglePreview: undefined, // English translation: 'Toggle preview' + toggleScrollSync: undefined, // English translation: 'Sync scrolling' + }, editorToolbar: { publish: 'Pubblica', published: 'Pubblicato', - unpublish: 'Rimuovi dalla pubblicazione', duplicate: 'Duplica', publishAndCreateNew: 'Pubblica e creane uno nuovo', publishAndDuplicate: 'Pubblica e duplica', deleteEntry: 'Cancella voce', publishNow: 'Pubblica ora', + discardChanges: undefined, // English translation: 'Discard changes' + discardChangesTitle: undefined, // English translation: 'Discard changes' + discardChangesBody: undefined, // English translation: 'Are you sure you want to discard the unsaved changed?' }, editorWidgets: { + markdown: { + bold: undefined, // English translation: 'Bold' + italic: undefined, // English translation: 'Italic' + code: undefined, // English translation: 'Code' + link: undefined, // English translation: 'Link' + linkPrompt: undefined, // English translation: 'Enter the URL of the link' + headings: undefined, // English translation: 'Headings' + quote: undefined, // English translation: 'Quote' + bulletedList: undefined, // English translation: 'Bulleted List' + numberedList: undefined, // English translation: 'Numbered List' + addComponent: undefined, // English translation: 'Add Component' + richText: undefined, // English translation: 'Rich Text' + markdown: undefined, // English translation: 'Markdown' + type: undefined, // English translation: 'Type...' + }, image: { choose: "Scegli un'immagine", + chooseMultiple: undefined, // English translation: 'Choose images' + chooseUrl: undefined, // English translation: 'Insert from URL' + replaceUrl: undefined, // English translation: 'Replace with URL' + promptUrl: undefined, // English translation: 'Enter the URL of the image' chooseDifferent: "Scegli un'immagine diversa", + addMore: undefined, // English translation: 'Add more images' remove: 'Rimuovi immagine', + removeAll: undefined, // English translation: 'Remove all images' }, file: { choose: 'Scegli un file', + chooseUrl: undefined, // English translation: 'Insert from URL' + chooseMultiple: undefined, // English translation: 'Choose files' + replaceUrl: undefined, // English translation: 'Replace with URL' + promptUrl: undefined, // English translation: 'Enter the URL of the file' chooseDifferent: 'Scegli un altro file', + addMore: undefined, // English translation: 'Add more files' remove: 'Rimuovi il file', + removeAll: undefined, // English translation: 'Remove all files' + }, + folder: { + choose: undefined, // English translation: 'Choose a folder' + chooseUrl: undefined, // English translation: 'Insert folder path' + chooseMultiple: undefined, // English translation: 'Choose folders' + replaceUrl: undefined, // English translation: 'Replace with path' + promptUrl: undefined, // English translation: 'Enter path of the folder' + chooseDifferent: undefined, // English translation: 'Choose different folder' + addMore: undefined, // English translation: 'Add more folders' + remove: undefined, // English translation: 'Remove folder' + removeAll: undefined, // English translation: 'Remove all folders' }, unknownControl: { noControl: "Nessun controllo per il widget '%{widget}'.", @@ -106,16 +197,40 @@ const it: LocalePhrasesRoot = { headingFive: 'Heading 5', headingSix: 'Heading 6', }, + datetime: { + now: undefined, // English translation: 'Now' + invalidDateTitle: undefined, // English translation: 'Invalid date' + invalidDateBody: undefined, // English translation: 'The date you entered is invalid.' + }, + list: { + add: undefined, // English translation: 'Add %{item}' + addType: undefined, // English translation: 'Add %{item}' + noValue: undefined, // English translation: 'No value' + }, + keyvalue: { + key: undefined, // English translation: 'Key' + value: undefined, // English translation: 'Value' + uniqueKeys: undefined, // English translation: '%{keyLabel} must be unique' + }, }, }, mediaLibrary: { mediaLibraryCard: { draft: 'Bozza', + copy: undefined, // English translation: 'Copy' + copyUrl: undefined, // English translation: 'Copy URL' + copyPath: undefined, // English translation: 'Copy Path' + copyName: undefined, // English translation: 'Copy Name' + copied: undefined, // English translation: 'Copied' }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: 'Sei sicuro di voler cancellare il media selezionato?', + fileTooLargeTitle: undefined, // English translation: 'File too large' fileTooLargeBody: 'File troppo grande.\nConfigurato per non accettare file piú grandi di %{size} kB.', + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: 'Caricamento...', @@ -127,17 +242,40 @@ const it: LocalePhrasesRoot = { search: 'Cerca...', uploading: 'Uploading...', upload: 'Upload', + download: undefined, // English translation: 'Download' deleting: 'Deleting...', deleteSelected: 'Cancella selezionato', chooseSelected: 'Prendi selezionato', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, + default: { + goBackToSite: undefined, // English translation: 'Go back to site' + }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: 'Errore', details: "C'è stato un errore - per favore ", reportIt: 'riportalo.', detailsHeading: 'Dettagli', + privacyWarning: undefined, // English translation: 'Opening an issue pre-populates it with the error message and debugging data.\nPlease verify the information is correct and remove sensitive data if exists.' recoveredEntry: { heading: 'Documento recuperato', warning: 'Per favore copia/incollalo da qualche parte prima di navigare altrove!', @@ -145,13 +283,15 @@ const it: LocalePhrasesRoot = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: 'Esci', }, toast: { onFailToLoadEntries: 'Caricamento voce non riuscito: %{details}', - onFailToLoadDeployPreview: 'Caricamento della preview non riuscito: %{details}', onFailToPersist: 'Salvataggio della voce non riuscito: %{details}', + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: 'Cancellazione della voce non riuscita: %{details}', + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: 'Aggiornamento dello status non riuscito: %{details}', missingRequiredField: 'Oops, ti sei perso un campo obbligatorio. Per favore completalo prima di salvare.', @@ -160,6 +300,8 @@ const it: LocalePhrasesRoot = { onFailToPublishEntry: 'Pubblicazione fallita: %{details}', entryUpdated: 'Status della voce aggiornato', onFailToAuth: '%{details}', + onLoggedOut: undefined, // English translation: 'You have been logged out, please back up any data and login again' + onBackendDown: undefined, // English translation: 'The backend service is experiencing an outage. See %{details} for more information' }, }, }; diff --git a/packages/core/src/locales/ja/index.ts b/packages/core/src/locales/ja/index.ts index 8e9be97c..76e3d31b 100644 --- a/packages/core/src/locales/ja/index.ts +++ b/packages/core/src/locales/ja/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const ja: LocalePhrasesRoot = { auth: { @@ -12,6 +12,9 @@ const ja: LocalePhrasesRoot = { errors: { email: 'メールアドレスを確認してください。', password: 'パスワードを入力してください。', + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' identitySettings: '認証情報にアクセスできませんでした。git-gateway backend を利用している場合は、認証サービスと Git Gateway が有効になっているかを確認してください。', }, @@ -25,6 +28,7 @@ const ja: LocalePhrasesRoot = { app: { errorHeader: 'CMS設定の読み込みエラー', configErrors: '設定エラー', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: 'config.ymlを確認してください。', loadingConfig: '設定を読み込んでいます...', waitingBackend: 'バックエンドの応答を待機しています...', @@ -61,6 +65,10 @@ const ja: LocalePhrasesRoot = { other: 'その他', negateLabel: '%{label}以外', }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, defaultFields: { author: { label: '作成者', @@ -69,6 +77,7 @@ const ja: LocalePhrasesRoot = { label: '最終更新', }, }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -88,8 +97,10 @@ const ja: LocalePhrasesRoot = { rangeCountExact: '%{fieldLabel}はちょうど%{count}個選択してください。', rangeMin: '%{fieldLabel}は%{minCount}個以上選択してください。', rangeMax: '%{fieldLabel}は%{maxCount}個以下選択してください。', - invalidPath: `'%{path}'は有効なパスではありません。`, - pathExists: `'%{path}'というパスはすでに存在しています。`, + invalidPath: "'%{path}'は有効なパスではありません。", + pathExists: "'%{path}'というパスはすでに存在しています。", + invalidColor: undefined, // English translation: 'Color '%{color}' is invalid.' + invalidHexCode: undefined, // English translation: 'Hex codes must start with a # sign.' }, i18n: { writingInLocale: '言語: %{locale}', @@ -97,12 +108,16 @@ const ja: LocalePhrasesRoot = { }, editor: { onLeavePage: 'このページから遷移しますか?', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'Delete this published entry?' onDeleteWithUnsavedChangesBody: '保存されていない変更も削除されますが、この公開エントリを削除しますか?', + onDeletePublishedEntryTitle: undefined, // English translation: 'Delete this published entry?' onDeletePublishedEntryBody: 'この公開エントリを削除しますか?', loadingEntry: 'エントリの読込中...', }, editorInterface: { + sideBySideI18n: undefined, // English translation: 'I18n Side by Side' + preview: undefined, // English translation: 'Preview' toggleI18n: '言語を切り替える', togglePreview: 'プレビュー表示を切り替える', toggleScrollSync: 'スクロール同期を切り替える', @@ -110,12 +125,14 @@ const ja: LocalePhrasesRoot = { editorToolbar: { publish: '公開', published: '公開済', - unpublish: '未公開', duplicate: '複製', publishAndCreateNew: '公開して新規作成', publishAndDuplicate: '公開して複製する', deleteEntry: 'エントリを削除', publishNow: '公開する', + discardChanges: undefined, // English translation: 'Discard changes' + discardChangesTitle: undefined, // English translation: 'Discard changes' + discardChangesBody: undefined, // English translation: 'Are you sure you want to discard the unsaved changed?' }, editorWidgets: { markdown: { @@ -131,22 +148,40 @@ const ja: LocalePhrasesRoot = { addComponent: 'コンポーネント追加', richText: 'リッチテキスト', markdown: 'マークダウン', + type: undefined, // English translation: 'Type...' }, image: { choose: '画像を選択', + chooseMultiple: undefined, // English translation: 'Choose images' chooseUrl: 'URLを入力する', replaceUrl: 'URLを変更する', promptUrl: '画像のURLを入力してください', chooseDifferent: '他の画像を選択', + addMore: undefined, // English translation: 'Add more images' remove: '画像を削除', + removeAll: undefined, // English translation: 'Remove all images' }, file: { choose: 'ファイルを選択', chooseUrl: 'URLを入力する', + chooseMultiple: undefined, // English translation: 'Choose files' replaceUrl: 'URLを変更する', promptUrl: 'ファイルのURLを入力してください', chooseDifferent: '他のファイルを選択', + addMore: undefined, // English translation: 'Add more files' remove: 'ファイルを削除', + removeAll: undefined, // English translation: 'Remove all files' + }, + folder: { + choose: undefined, // English translation: 'Choose a folder' + chooseUrl: undefined, // English translation: 'Insert folder path' + chooseMultiple: undefined, // English translation: 'Choose folders' + replaceUrl: undefined, // English translation: 'Replace with path' + promptUrl: undefined, // English translation: 'Enter path of the folder' + chooseDifferent: undefined, // English translation: 'Choose different folder' + addMore: undefined, // English translation: 'Add more folders' + remove: undefined, // English translation: 'Remove folder' + removeAll: undefined, // English translation: 'Remove all folders' }, unknownControl: { noControl: "'%{widget}'はウィジェットとして利用できません。", @@ -164,6 +199,18 @@ const ja: LocalePhrasesRoot = { }, datetime: { now: '現時刻', + invalidDateTitle: undefined, // English translation: 'Invalid date' + invalidDateBody: undefined, // English translation: 'The date you entered is invalid.' + }, + list: { + add: undefined, // English translation: 'Add %{item}' + addType: undefined, // English translation: 'Add %{item}' + noValue: undefined, // English translation: 'No value' + }, + keyvalue: { + key: undefined, // English translation: 'Key' + value: undefined, // English translation: 'Value' + uniqueKeys: undefined, // English translation: '%{keyLabel} must be unique' }, }, }, @@ -177,8 +224,12 @@ const ja: LocalePhrasesRoot = { copied: 'コピーしました', }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: '選択しているデータを削除しますか?', + fileTooLargeTitle: undefined, // English translation: 'File too large' fileTooLargeBody: 'ファイルサイズが大きすぎます。\n%{size} kB 以下にしてください。', + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: '読込中...', @@ -194,12 +245,30 @@ const ja: LocalePhrasesRoot = { deleting: '削除中...', deleteSelected: '削除する', chooseSelected: '選択する', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, default: { goBackToSite: 'サイトに戻る', }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: 'エラー', details: 'エラーが発生しました。', @@ -214,13 +283,15 @@ const ja: LocalePhrasesRoot = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: 'ログアウト', }, toast: { onFailToLoadEntries: 'エントリの読み込みに失敗しました。%{details}', - onFailToLoadDeployPreview: 'プレビューの読み込みに失敗しました。%{details}', onFailToPersist: 'エントリの保存に失敗しました。%{details}', + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: 'エントリの削除に失敗しました。%{details}', + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: 'エントリのステータス更新に失敗しました。%{details}', missingRequiredField: 'すべての必須項目を入力してください。', entrySaved: '保存しました。', diff --git a/packages/core/src/locales/ko/index.ts b/packages/core/src/locales/ko/index.ts index 638e46cb..8bb2d6ee 100644 --- a/packages/core/src/locales/ko/index.ts +++ b/packages/core/src/locales/ko/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const ko: LocalePhrasesRoot = { auth: { @@ -12,6 +12,9 @@ const ko: LocalePhrasesRoot = { errors: { email: '반드시 이메일을 입력해 주세요.', password: '암호를 입력해 주세요.', + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' identitySettings: '설정에 접근할 수 없습니다. git-gateway 백엔드 사용시 Identity service와 Git Gateway를 활성화 해야 합니다.', }, @@ -25,6 +28,7 @@ const ko: LocalePhrasesRoot = { app: { errorHeader: 'CMS 구성을 불러오는 중 오류가 발생했습니다.', configErrors: '구성 오류', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: 'config.yml 파일을 확인하세요.', loadingConfig: '구성 불러오는 중...', waitingBackend: '백엔드 기다리는 중...', @@ -49,6 +53,7 @@ const ko: LocalePhrasesRoot = { searchResults: '"%{searchTerm}"에 대한 검색결과', searchResultsInCollection: '%{collection} 컬랙션에서 "%{searchTerm}"에 대한 검색결과', filterBy: '필터 기준', + groupBy: undefined, // English translation: 'Group by' }, entries: { loadingEntries: '항목 불러오는 중...', @@ -56,6 +61,14 @@ const ko: LocalePhrasesRoot = { longerLoading: '몇 분 정도 걸릴 수 있습니다.', noEntries: '항목 없음', }, + groups: { + other: undefined, // English translation: 'Other' + negateLabel: undefined, // English translation: 'Not %{label}' + }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, defaultFields: { author: { label: '저자', @@ -64,6 +77,7 @@ const ko: LocalePhrasesRoot = { label: '업데이트 시각', }, }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -83,41 +97,91 @@ const ko: LocalePhrasesRoot = { rangeCountExact: '%{fieldLabel} 개수는 정확히 %{count} 개 여야 합니다.', rangeMin: '%{fieldLabel} 개수는 적어도 %{minCount} 개 이상 이여야 합니다.', rangeMax: '%{fieldLabel} 개수는 최대 %{maxCount} 개 여야 합니다.', - invalidPath: `'%{path}' 은(는) 올바른 경로가 아닙니다.`, - pathExists: `'%{path}' 경로가 이미 존재합니다.`, + invalidPath: "'%{path}' 은(는) 올바른 경로가 아닙니다.", + pathExists: "'%{path}' 경로가 이미 존재합니다.", + invalidColor: undefined, // English translation: 'Color '%{color}' is invalid.' + invalidHexCode: undefined, // English translation: 'Hex codes must start with a # sign.' + }, + i18n: { + writingInLocale: undefined, // English translation: 'Writing in %{locale}' }, }, editor: { onLeavePage: '이 페이지를 떠나시겠습니까?', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'Delete this published entry?' onDeleteWithUnsavedChangesBody: '현재 세션에서의 저장되지 않은 변경사항과 이 게시된 항목을 삭제하시겠습니까?', + onDeletePublishedEntryTitle: undefined, // English translation: 'Delete this published entry?' onDeletePublishedEntryBody: '이 게시된 항목을 삭제하시겠습니까?', loadingEntry: '항목 불러오는 중...', }, + editorInterface: { + sideBySideI18n: undefined, // English translation: 'I18n Side by Side' + preview: undefined, // English translation: 'Preview' + toggleI18n: undefined, // English translation: 'Toggle i18n' + togglePreview: undefined, // English translation: 'Toggle preview' + toggleScrollSync: undefined, // English translation: 'Sync scrolling' + }, editorToolbar: { publish: '게시', published: '게시됨', - unpublish: '게시 철회', duplicate: '복제', publishAndCreateNew: '게시하고 새로 만들기', publishAndDuplicate: '게시하고 복제', deleteEntry: '항목 삭제', publishNow: '지금 게시', + discardChanges: undefined, // English translation: 'Discard changes' + discardChangesTitle: undefined, // English translation: 'Discard changes' + discardChangesBody: undefined, // English translation: 'Are you sure you want to discard the unsaved changed?' }, editorWidgets: { markdown: { + bold: undefined, // English translation: 'Bold' + italic: undefined, // English translation: 'Italic' + code: undefined, // English translation: 'Code' + link: undefined, // English translation: 'Link' + linkPrompt: undefined, // English translation: 'Enter the URL of the link' + headings: undefined, // English translation: 'Headings' + quote: undefined, // English translation: 'Quote' + bulletedList: undefined, // English translation: 'Bulleted List' + numberedList: undefined, // English translation: 'Numbered List' + addComponent: undefined, // English translation: 'Add Component' richText: '리치 텍스트', markdown: '마크다운', + type: undefined, // English translation: 'Type...' }, image: { choose: '이미지 선택', + chooseMultiple: undefined, // English translation: 'Choose images' + chooseUrl: undefined, // English translation: 'Insert from URL' + replaceUrl: undefined, // English translation: 'Replace with URL' + promptUrl: undefined, // English translation: 'Enter the URL of the image' chooseDifferent: '다른 이미지 선택', + addMore: undefined, // English translation: 'Add more images' remove: '이미지 삭제', + removeAll: undefined, // English translation: 'Remove all images' }, file: { choose: '파일 선택', + chooseUrl: undefined, // English translation: 'Insert from URL' + chooseMultiple: undefined, // English translation: 'Choose files' + replaceUrl: undefined, // English translation: 'Replace with URL' + promptUrl: undefined, // English translation: 'Enter the URL of the file' chooseDifferent: '다른 파일 선택', + addMore: undefined, // English translation: 'Add more files' remove: '파일 삭제', + removeAll: undefined, // English translation: 'Remove all files' + }, + folder: { + choose: undefined, // English translation: 'Choose a folder' + chooseUrl: undefined, // English translation: 'Insert folder path' + chooseMultiple: undefined, // English translation: 'Choose folders' + replaceUrl: undefined, // English translation: 'Replace with path' + promptUrl: undefined, // English translation: 'Enter path of the folder' + chooseDifferent: undefined, // English translation: 'Choose different folder' + addMore: undefined, // English translation: 'Add more folders' + remove: undefined, // English translation: 'Remove folder' + removeAll: undefined, // English translation: 'Remove all folders' }, unknownControl: { noControl: "'%{widget}' 위젝에 대한 컨트롤이 없습니다.", @@ -135,17 +199,38 @@ const ko: LocalePhrasesRoot = { }, datetime: { now: '현재시각', + invalidDateTitle: undefined, // English translation: 'Invalid date' + invalidDateBody: undefined, // English translation: 'The date you entered is invalid.' + }, + list: { + add: undefined, // English translation: 'Add %{item}' + addType: undefined, // English translation: 'Add %{item}' + noValue: undefined, // English translation: 'No value' + }, + keyvalue: { + key: undefined, // English translation: 'Key' + value: undefined, // English translation: 'Value' + uniqueKeys: undefined, // English translation: '%{keyLabel} must be unique' }, }, }, mediaLibrary: { mediaLibraryCard: { draft: '초안', + copy: undefined, // English translation: 'Copy' + copyUrl: undefined, // English translation: 'Copy URL' + copyPath: undefined, // English translation: 'Copy Path' + copyName: undefined, // English translation: 'Copy Name' + copied: undefined, // English translation: 'Copied' }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: '선택하신 미디어를 삭제하시겠습니까?', + fileTooLargeTitle: undefined, // English translation: 'File too large' fileTooLargeBody: '파일이 너무 큽니다.\n%{size} kB 보다 큰 파일을 허용하지 않도록 구성되어 있습니다.', + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: '불러오는 중...', @@ -161,12 +246,30 @@ const ko: LocalePhrasesRoot = { deleting: '삭제 중...', deleteSelected: '선택항목 삭제', chooseSelected: '선택한 것으로 결정', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, default: { goBackToSite: '사이트로 돌아가기', }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: '오류', details: '오류가 발생했습니다.', @@ -181,13 +284,15 @@ const ko: LocalePhrasesRoot = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: '로그아웃', }, toast: { onFailToLoadEntries: '항목 불러오기 실패: %{details}', - onFailToLoadDeployPreview: '미리보기 불러오기 실패: %{details}', onFailToPersist: '항목 저장 실패: %{details}', + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: '항목 삭제 실패: %{details}', + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: '상태 업데이트 실패: %{details}', missingRequiredField: '이런! 필수 필드를 놓치셨습니다. 저장하기 전에 먼저 채우세요.', entrySaved: '항목 저장됨', diff --git a/packages/core/src/locales/lt/index.ts b/packages/core/src/locales/lt/index.ts index 8a74539a..e32def74 100644 --- a/packages/core/src/locales/lt/index.ts +++ b/packages/core/src/locales/lt/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const lt: LocalePhrasesRoot = { auth: { @@ -12,6 +12,9 @@ const lt: LocalePhrasesRoot = { errors: { email: 'Įveskite savo elektroninį paštą.', password: 'Įveskite savo slaptažodį.', + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' identitySettings: 'Deja, nepavyksta pasiekti Identity paslaugos nustatymus. Kai naudojate git-gateway backend metodą, įjunkite „Identity service“ ir „Git Gateway“.', }, @@ -25,6 +28,7 @@ const lt: LocalePhrasesRoot = { app: { errorHeader: 'Klaida, neišėjo užkrauti/pasiekti CMS konfigūracijos failą', configErrors: 'Konfigūracijos (nustatymų) klaidos', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: 'Patikrinkite config.yml balsą.', loadingConfig: 'Kraunamas nustatymų (konfigūracijos) failas...', waitingBackend: 'Laukiama serverio...', @@ -61,6 +65,10 @@ const lt: LocalePhrasesRoot = { other: 'Kita', negateLabel: 'Ne %{label}', }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, defaultFields: { author: { label: 'Autorius', @@ -69,6 +77,7 @@ const lt: LocalePhrasesRoot = { label: 'Atnaujinta', }, }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -89,8 +98,10 @@ const lt: LocalePhrasesRoot = { rangeCountExact: '%{fieldLabel} turi turėti būtent tik %{count} elementų/-us.', rangeMin: '%{fieldLabel} turi būti bent %{minCount} elementų.', rangeMax: '%{fieldLabel} turi būti %{maxCount} arba mažiau elementų.', - invalidPath: `'%{path}' nėra taisyklinga nuoroda/adresas į resursą/-us`, - pathExists: `Adresas '%{path}' jau egzistuoja`, + invalidPath: "'%{path}' nėra taisyklinga nuoroda/adresas į resursą/-us", + pathExists: "Adresas '%{path}' jau egzistuoja", + invalidColor: undefined, // English translation: 'Color '%{color}' is invalid.' + invalidHexCode: undefined, // English translation: 'Hex codes must start with a # sign.' }, i18n: { writingInLocale: 'Rašome %{locale} kalboje', @@ -98,20 +109,31 @@ const lt: LocalePhrasesRoot = { }, editor: { onLeavePage: 'Ar tikrai norite uždaryti šį puslapį?', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'Delete this published entry?' onDeleteWithUnsavedChangesBody: 'Tikrai norite panaikinti publikuotą įrašą ir Jūsų pakeiitmus iš dabartinės sesijos?', + onDeletePublishedEntryTitle: undefined, // English translation: 'Delete this published entry?' onDeletePublishedEntryBody: 'Tikrai norite ištrinti šį publikuotą įrašą?', loadingEntry: 'Kraunamas įrašas...', }, + editorInterface: { + sideBySideI18n: undefined, // English translation: 'I18n Side by Side' + preview: undefined, // English translation: 'Preview' + toggleI18n: undefined, // English translation: 'Toggle i18n' + togglePreview: undefined, // English translation: 'Toggle preview' + toggleScrollSync: undefined, // English translation: 'Sync scrolling' + }, editorToolbar: { publish: 'Publikuoti', published: 'Jau publikuota', - unpublish: 'Atšaukti paskelbimą', duplicate: 'Daryti dublį', publishAndCreateNew: 'Publikuoti šitą, po to kurti kažką naujo', publishAndDuplicate: 'Publikuoti šitą, po to kurti šito dublį', deleteEntry: 'Panaikinti įrašą', publishNow: 'Skelbti naują', + discardChanges: undefined, // English translation: 'Discard changes' + discardChangesTitle: undefined, // English translation: 'Discard changes' + discardChangesBody: undefined, // English translation: 'Are you sure you want to discard the unsaved changed?' }, editorWidgets: { markdown: { @@ -127,16 +149,40 @@ const lt: LocalePhrasesRoot = { addComponent: 'Pridėti komponentą', richText: 'Normali peržiūra', markdown: 'Rodyti be formatavimo (Markdown)', + type: undefined, // English translation: 'Type...' }, image: { choose: 'Pasirinkti vaizdą', + chooseMultiple: undefined, // English translation: 'Choose images' + chooseUrl: undefined, // English translation: 'Insert from URL' + replaceUrl: undefined, // English translation: 'Replace with URL' + promptUrl: undefined, // English translation: 'Enter the URL of the image' chooseDifferent: 'Pasirinkti skirtingą vaizdą', + addMore: undefined, // English translation: 'Add more images' remove: 'Panaikinti vaizdą', + removeAll: undefined, // English translation: 'Remove all images' }, file: { choose: 'Pasirinkti failą', + chooseUrl: undefined, // English translation: 'Insert from URL' + chooseMultiple: undefined, // English translation: 'Choose files' + replaceUrl: undefined, // English translation: 'Replace with URL' + promptUrl: undefined, // English translation: 'Enter the URL of the file' chooseDifferent: 'Pasirinkti kitą failą', + addMore: undefined, // English translation: 'Add more files' remove: 'Panaikinti failą', + removeAll: undefined, // English translation: 'Remove all files' + }, + folder: { + choose: undefined, // English translation: 'Choose a folder' + chooseUrl: undefined, // English translation: 'Insert folder path' + chooseMultiple: undefined, // English translation: 'Choose folders' + replaceUrl: undefined, // English translation: 'Replace with path' + promptUrl: undefined, // English translation: 'Enter path of the folder' + chooseDifferent: undefined, // English translation: 'Choose different folder' + addMore: undefined, // English translation: 'Add more folders' + remove: undefined, // English translation: 'Remove folder' + removeAll: undefined, // English translation: 'Remove all folders' }, unknownControl: { noControl: "Klaida: valdiklis taisyklingai neveikia. No control for widget '%{widget}'.", @@ -154,17 +200,38 @@ const lt: LocalePhrasesRoot = { }, datetime: { now: 'Dabar', + invalidDateTitle: undefined, // English translation: 'Invalid date' + invalidDateBody: undefined, // English translation: 'The date you entered is invalid.' + }, + list: { + add: undefined, // English translation: 'Add %{item}' + addType: undefined, // English translation: 'Add %{item}' + noValue: undefined, // English translation: 'No value' + }, + keyvalue: { + key: undefined, // English translation: 'Key' + value: undefined, // English translation: 'Value' + uniqueKeys: undefined, // English translation: '%{keyLabel} must be unique' }, }, }, mediaLibrary: { mediaLibraryCard: { draft: 'Juodraštis', + copy: undefined, // English translation: 'Copy' + copyUrl: undefined, // English translation: 'Copy URL' + copyPath: undefined, // English translation: 'Copy Path' + copyName: undefined, // English translation: 'Copy Name' + copied: undefined, // English translation: 'Copied' }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: 'Ar jūs tikrai norite ištrinti pasirinktą mediją?', + fileTooLargeTitle: undefined, // English translation: 'File too large' fileTooLargeBody: 'Failas per didelis.\nNustatymuose (konfigūracijoje) nurodyta, kad failai negali viršyti %{size} kB.', + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: 'Kraunama...', @@ -180,12 +247,30 @@ const lt: LocalePhrasesRoot = { deleting: 'Trinama...', deleteSelected: 'Ištrinti parinktus', chooseSelected: 'Pasirinkti parinktus', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, default: { goBackToSite: 'Grįžti atgal į tinklalapį', }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: 'Klaida', details: 'Buvo klaida - jeigu galite, prašome ', @@ -200,13 +285,15 @@ const lt: LocalePhrasesRoot = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: 'Atsijungti', }, toast: { onFailToLoadEntries: 'Nepavyko užkrauti įrašo: %{details}', - onFailToLoadDeployPreview: 'Nepavyko užkrauti demonstracijos lango: %{details}', onFailToPersist: 'Nepavyko išlaikyti įrašo: %{details}', + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: 'Nepayvko ištrinti: %{details}', + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: 'Nepavyko pakeisti statusą: %{details}', missingRequiredField: 'Pasitikrinkite — kažkurio (ar kelių) laukelių neužpildėte. Tai padarius galėsite išsaugoti įrašą.', diff --git a/packages/core/src/locales/nb_no/index.ts b/packages/core/src/locales/nb_no/index.ts index d7cae51a..498f6805 100644 --- a/packages/core/src/locales/nb_no/index.ts +++ b/packages/core/src/locales/nb_no/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const nb_no: LocalePhrasesRoot = { auth: { @@ -12,6 +12,9 @@ const nb_no: LocalePhrasesRoot = { errors: { email: 'Du må skrive inn e-posten din.', password: 'Du må skrive inn passordet ditt.', + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' identitySettings: 'Fant ingen innstillinger for Identity. Hvis du skal bruke git-gateway må du skru på Identity service og Git Gateway.', }, @@ -25,6 +28,7 @@ const nb_no: LocalePhrasesRoot = { app: { errorHeader: 'Det oppstod en feil under lastingen av CMS konfigurasjonen', configErrors: 'Konfigurasjonsfeil', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: 'Sjekk config.yml filen.', loadingConfig: 'Laster konfigurasjon...', waitingBackend: 'Venter på backend...', @@ -36,7 +40,9 @@ const nb_no: LocalePhrasesRoot = { collection: { sidebar: { collections: 'Samlinger', + allCollections: undefined, // English translation: 'All Collections' searchAll: 'Søk i alle', + searchIn: undefined, // English translation: 'Search in' }, collectionTop: { sortBy: 'Sorter etter', @@ -44,6 +50,10 @@ const nb_no: LocalePhrasesRoot = { newButton: 'Ny %{collectionLabel}', ascending: 'Stigende', descending: 'Synkende', + searchResults: undefined, // English translation: 'Search Results for "%{searchTerm}"' + searchResultsInCollection: undefined, // English translation: 'Search Results for "%{searchTerm}" in %{collection}' + filterBy: undefined, // English translation: 'Filter by' + groupBy: undefined, // English translation: 'Group by' }, entries: { loadingEntries: 'Laster innlegg...', @@ -51,6 +61,14 @@ const nb_no: LocalePhrasesRoot = { longerLoading: 'Dette kan ta opptil flere minutter', noEntries: 'Ingen innlegg', }, + groups: { + other: undefined, // English translation: 'Other' + negateLabel: undefined, // English translation: 'Not %{label}' + }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, defaultFields: { author: { label: 'Forfatter', @@ -59,6 +77,7 @@ const nb_no: LocalePhrasesRoot = { label: 'Oppdatert', }, }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -78,39 +97,91 @@ const nb_no: LocalePhrasesRoot = { rangeCountExact: '%{fieldLabel} må ha nøyaktig %{count} element(er).', rangeMin: '%{fieldLabel} må minst ha %{minCount} element(er).', rangeMax: '%{fieldLabel} må ha %{maxCount} eller færre element(er).', + invalidPath: undefined, // English translation: ''%{path}' is not a valid path.' + pathExists: undefined, // English translation: 'Path '%{path}' already exists.' + invalidColor: undefined, // English translation: 'Color '%{color}' is invalid.' + invalidHexCode: undefined, // English translation: 'Hex codes must start with a # sign.' + }, + i18n: { + writingInLocale: undefined, // English translation: 'Writing in %{locale}' }, }, editor: { onLeavePage: 'Er du sikker på du vil navigere bort fra denne siden?', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'Delete this published entry?' onDeleteWithUnsavedChangesBody: 'Er du sikker på at du vil slette et publisert innlegg med tilhørende ulagrede endringer?', + onDeletePublishedEntryTitle: undefined, // English translation: 'Delete this published entry?' onDeletePublishedEntryBody: 'Er du sikker på at du vil slette dette publiserte innlegget?', loadingEntry: 'Laster innlegg...', }, + editorInterface: { + sideBySideI18n: undefined, // English translation: 'I18n Side by Side' + preview: undefined, // English translation: 'Preview' + toggleI18n: undefined, // English translation: 'Toggle i18n' + togglePreview: undefined, // English translation: 'Toggle preview' + toggleScrollSync: undefined, // English translation: 'Sync scrolling' + }, editorToolbar: { publish: 'Publiser', published: 'Publisert', - unpublish: 'Avpubliser', duplicate: 'Dupliser', publishAndCreateNew: 'Publiser og lag nytt', publishAndDuplicate: 'Publiser og dupliser', deleteEntry: 'Slett innlegg', publishNow: 'Publiser nå', + discardChanges: undefined, // English translation: 'Discard changes' + discardChangesTitle: undefined, // English translation: 'Discard changes' + discardChangesBody: undefined, // English translation: 'Are you sure you want to discard the unsaved changed?' }, editorWidgets: { markdown: { + bold: undefined, // English translation: 'Bold' + italic: undefined, // English translation: 'Italic' + code: undefined, // English translation: 'Code' + link: undefined, // English translation: 'Link' + linkPrompt: undefined, // English translation: 'Enter the URL of the link' + headings: undefined, // English translation: 'Headings' + quote: undefined, // English translation: 'Quote' + bulletedList: undefined, // English translation: 'Bulleted List' + numberedList: undefined, // English translation: 'Numbered List' + addComponent: undefined, // English translation: 'Add Component' richText: 'Rik-tekst', markdown: 'Markdown', + type: undefined, // English translation: 'Type...' }, image: { choose: 'Velg et bilde', + chooseMultiple: undefined, // English translation: 'Choose images' + chooseUrl: undefined, // English translation: 'Insert from URL' + replaceUrl: undefined, // English translation: 'Replace with URL' + promptUrl: undefined, // English translation: 'Enter the URL of the image' chooseDifferent: 'Velg et annet bilde', + addMore: undefined, // English translation: 'Add more images' remove: 'Fjern bilde', + removeAll: undefined, // English translation: 'Remove all images' }, file: { choose: 'Velg en fil', + chooseUrl: undefined, // English translation: 'Insert from URL' + chooseMultiple: undefined, // English translation: 'Choose files' + replaceUrl: undefined, // English translation: 'Replace with URL' + promptUrl: undefined, // English translation: 'Enter the URL of the file' chooseDifferent: 'Velg en annen fil', + addMore: undefined, // English translation: 'Add more files' remove: 'Fjern fil', + removeAll: undefined, // English translation: 'Remove all files' + }, + folder: { + choose: undefined, // English translation: 'Choose a folder' + chooseUrl: undefined, // English translation: 'Insert folder path' + chooseMultiple: undefined, // English translation: 'Choose folders' + replaceUrl: undefined, // English translation: 'Replace with path' + promptUrl: undefined, // English translation: 'Enter path of the folder' + chooseDifferent: undefined, // English translation: 'Choose different folder' + addMore: undefined, // English translation: 'Add more folders' + remove: undefined, // English translation: 'Remove folder' + removeAll: undefined, // English translation: 'Remove all folders' }, unknownControl: { noControl: "Ingen konfigurasjon for widget '%{widget}'.", @@ -128,16 +199,37 @@ const nb_no: LocalePhrasesRoot = { }, datetime: { now: 'Nå', + invalidDateTitle: undefined, // English translation: 'Invalid date' + invalidDateBody: undefined, // English translation: 'The date you entered is invalid.' + }, + list: { + add: undefined, // English translation: 'Add %{item}' + addType: undefined, // English translation: 'Add %{item}' + noValue: undefined, // English translation: 'No value' + }, + keyvalue: { + key: undefined, // English translation: 'Key' + value: undefined, // English translation: 'Value' + uniqueKeys: undefined, // English translation: '%{keyLabel} must be unique' }, }, }, mediaLibrary: { mediaLibraryCard: { draft: 'Kladd', + copy: undefined, // English translation: 'Copy' + copyUrl: undefined, // English translation: 'Copy URL' + copyPath: undefined, // English translation: 'Copy Path' + copyName: undefined, // English translation: 'Copy Name' + copied: undefined, // English translation: 'Copied' }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: 'Er du sikker på at du vil slette markert element?', + fileTooLargeTitle: undefined, // English translation: 'File too large' fileTooLargeBody: 'Filen er for stor.\nMaksimal konfiguert filstørrelse er %{size} kB.', + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: 'Laster...', @@ -153,12 +245,30 @@ const nb_no: LocalePhrasesRoot = { deleting: 'Sletter...', deleteSelected: 'Slett markert', chooseSelected: 'Velg markert', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, default: { goBackToSite: 'Gå tilbake til siden', }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: 'Feil', details: 'Det har oppstått en feil. Det er fint om du ', @@ -173,13 +283,15 @@ const nb_no: LocalePhrasesRoot = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: 'Logg ut', }, toast: { onFailToLoadEntries: 'Kunne ikke laste innlegg: %{details}', - onFailToLoadDeployPreview: 'Kunne ikke laste forhåndsvisning: %{details}', onFailToPersist: 'Kunne ikke lagre: %{details}', + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: 'Kunne ikke slette: %{details}', + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: 'Kunne ikke laste opp: %{details}', missingRequiredField: 'Oisann, ser ut som du glemte et påkrevd felt. Du må fylle det ut før du kan fortsette.', @@ -188,6 +300,8 @@ const nb_no: LocalePhrasesRoot = { onFailToPublishEntry: 'Kunne ikke publisere: %{details}', entryUpdated: 'Innleggsstatus oppdatert', onFailToAuth: '%{details}', + onLoggedOut: undefined, // English translation: 'You have been logged out, please back up any data and login again' + onBackendDown: undefined, // English translation: 'The backend service is experiencing an outage. See %{details} for more information' }, }, }; diff --git a/packages/core/src/locales/nl/index.ts b/packages/core/src/locales/nl/index.ts index 33cbb51b..737c6be6 100644 --- a/packages/core/src/locales/nl/index.ts +++ b/packages/core/src/locales/nl/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const nl: LocalePhrasesRoot = { auth: { @@ -12,6 +12,9 @@ const nl: LocalePhrasesRoot = { errors: { email: 'Voer uw email in.', password: 'Voer uw wachtwoord in.', + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' identitySettings: 'Netlify Identity instellingen niet gevonden. Wanneer u git-gateway als backend gebruikt moet u de Identity service en Git Gateway activeren in uw Netlify instellingen.', }, @@ -25,6 +28,7 @@ const nl: LocalePhrasesRoot = { app: { errorHeader: 'Fout bij het laden van de CMS configuratie', configErrors: 'configuratiefouten', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: 'Controleer je config.yml bestand', loadingConfig: 'Configuatie laden...', waitingBackend: 'Wachten op server...', @@ -61,6 +65,10 @@ const nl: LocalePhrasesRoot = { other: 'Anders', negateLabel: 'Geen %{label}', }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, defaultFields: { author: { label: 'Auteur', @@ -69,6 +77,7 @@ const nl: LocalePhrasesRoot = { label: 'Bijgewerkt op', }, }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -88,6 +97,10 @@ const nl: LocalePhrasesRoot = { rangeCountExact: '%{fieldLabel} moet exact %{count} item(s) bevatten.', rangeMin: '%{fieldLabel} moet tenminste %{minCount} item(s) bevatten.', rangeMax: '%{fieldLabel} moet hoogstens %{maxCount} item(s) bevatten.', + invalidPath: undefined, // English translation: ''%{path}' is not a valid path.' + pathExists: undefined, // English translation: 'Path '%{path}' already exists.' + invalidColor: undefined, // English translation: 'Color '%{color}' is invalid.' + invalidHexCode: undefined, // English translation: 'Hex codes must start with a # sign.' }, i18n: { writingInLocale: '%{locale} aan het bewerken', @@ -95,12 +108,16 @@ const nl: LocalePhrasesRoot = { }, editor: { onLeavePage: 'Weet je zeker dat je deze pagina wilt verlaten?', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'Delete this published entry?' onDeleteWithUnsavedChangesBody: 'Weet u zeker dat u dit gepubliceerde item en uw niet-opgeslagen wijzigingen uit de huidige sessie wilt verwijderen?', + onDeletePublishedEntryTitle: undefined, // English translation: 'Delete this published entry?' onDeletePublishedEntryBody: 'Weet u zeker dat u dit gepubliceerde item wilt verwijderen?', loadingEntry: 'Item laden...', }, editorInterface: { + sideBySideI18n: undefined, // English translation: 'I18n Side by Side' + preview: undefined, // English translation: 'Preview' toggleI18n: 'Wissel i18n', togglePreview: 'Wissel voorvertoning', toggleScrollSync: 'Synchroniseer scrollen', @@ -113,6 +130,9 @@ const nl: LocalePhrasesRoot = { publishAndDuplicate: 'Publiceer en dupliceer item', deleteEntry: 'Item verwijderen', publishNow: 'Publiceer nu', + discardChanges: undefined, // English translation: 'Discard changes' + discardChangesTitle: undefined, // English translation: 'Discard changes' + discardChangesBody: undefined, // English translation: 'Are you sure you want to discard the unsaved changed?' }, editorWidgets: { markdown: { @@ -128,22 +148,40 @@ const nl: LocalePhrasesRoot = { addComponent: 'Voeg component toe', richText: 'Rijke tekst', markdown: 'Markdown', + type: undefined, // English translation: 'Type...' }, image: { choose: 'Kies een afbeelding', + chooseMultiple: undefined, // English translation: 'Choose images' chooseUrl: 'Voeg toe via URL', replaceUrl: 'Vervang met URL', promptUrl: 'Voer de URL van de afbeelding in', chooseDifferent: 'Kies een andere afbeelding', + addMore: undefined, // English translation: 'Add more images' remove: 'Verwijder afbeelding', + removeAll: undefined, // English translation: 'Remove all images' }, file: { choose: 'Kies een bestand', chooseUrl: 'Voeg toe via URL', + chooseMultiple: undefined, // English translation: 'Choose files' replaceUrl: 'Vervang met URL', promptUrl: 'Voer de URL van het bestand in', chooseDifferent: 'Kies een ander bestand', + addMore: undefined, // English translation: 'Add more files' remove: 'Verwijder bestand', + removeAll: undefined, // English translation: 'Remove all files' + }, + folder: { + choose: undefined, // English translation: 'Choose a folder' + chooseUrl: undefined, // English translation: 'Insert folder path' + chooseMultiple: undefined, // English translation: 'Choose folders' + replaceUrl: undefined, // English translation: 'Replace with path' + promptUrl: undefined, // English translation: 'Enter path of the folder' + chooseDifferent: undefined, // English translation: 'Choose different folder' + addMore: undefined, // English translation: 'Add more folders' + remove: undefined, // English translation: 'Remove folder' + removeAll: undefined, // English translation: 'Remove all folders' }, unknownControl: { noControl: "Geen control voor widget '%{widget}'.", @@ -161,9 +199,18 @@ const nl: LocalePhrasesRoot = { }, datetime: { now: 'Nu', + invalidDateTitle: undefined, // English translation: 'Invalid date' + invalidDateBody: undefined, // English translation: 'The date you entered is invalid.' }, list: { add: 'Voeg %{item} toe', + addType: undefined, // English translation: 'Add %{item}' + noValue: undefined, // English translation: 'No value' + }, + keyvalue: { + key: undefined, // English translation: 'Key' + value: undefined, // English translation: 'Value' + uniqueKeys: undefined, // English translation: '%{keyLabel} must be unique' }, }, }, @@ -177,9 +224,13 @@ const nl: LocalePhrasesRoot = { copied: 'Gekopieerd', }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: 'Weet u zeker dat u de geselecteerde media wilt verwijderen?', + fileTooLargeTitle: undefined, // English translation: 'File too large' fileTooLargeBody: 'Het bestand is te groot.\n De instellingen staan geen bestanden toe groter dan %{size} kB.', + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: 'Laden...', @@ -195,12 +246,30 @@ const nl: LocalePhrasesRoot = { deleting: 'Verwijderen...', deleteSelected: 'Verwijder selectie', chooseSelected: 'Gebruik selectie', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, default: { goBackToSite: 'Ga terug naar site', }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: 'Fout', details: 'Er is een fout opgetreden - ', @@ -215,13 +284,15 @@ const nl: LocalePhrasesRoot = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: 'Uitloggen', }, toast: { onFailToLoadEntries: 'Kan item niet laden: %{details}', - onFailToLoadDeployPreview: 'Kan voorvertoning niet laden: %{details}', onFailToPersist: 'Kan item niet opslaan: %{details}', + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: 'Kan item niet verwijderen: %{details}', + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: 'Kan status niet updaten: %{details}', missingRequiredField: 'Oeps, sommige verplichte velden zijn niet ingevuld.', entrySaved: 'Item opgeslagen', diff --git a/packages/core/src/locales/nn_no/index.ts b/packages/core/src/locales/nn_no/index.ts index 005f05ba..cdf2f5f5 100644 --- a/packages/core/src/locales/nn_no/index.ts +++ b/packages/core/src/locales/nn_no/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const nn_no: LocalePhrasesRoot = { auth: { @@ -12,6 +12,9 @@ const nn_no: LocalePhrasesRoot = { errors: { email: 'Du må skriva inn e-posten din.', password: 'Du må skriva inn passordet ditt.', + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' identitySettings: 'Fann ingen innstillingar for Identity. Om du ynskjer å nytte git-gateway må du hugse å skru på Identity service og Git Gateway', }, @@ -25,6 +28,7 @@ const nn_no: LocalePhrasesRoot = { app: { errorHeader: 'Noko gjekk gale under lastinga av CMS konfigurasjonen', configErrors: 'Konfigurasjonsfeil', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: 'Sjå over config.yml fila.', loadingConfig: 'Lastar konfigurasjon...', waitingBackend: 'Ventar på backend...', @@ -36,7 +40,9 @@ const nn_no: LocalePhrasesRoot = { collection: { sidebar: { collections: 'Samlingar', + allCollections: undefined, // English translation: 'All Collections' searchAll: 'Søk i alle', + searchIn: undefined, // English translation: 'Search in' }, collectionTop: { sortBy: 'Sorter etter', @@ -44,6 +50,10 @@ const nn_no: LocalePhrasesRoot = { newButton: 'Ny %{collectionLabel}', ascending: 'Stigande', descending: 'Synkande', + searchResults: undefined, // English translation: 'Search Results for "%{searchTerm}"' + searchResultsInCollection: undefined, // English translation: 'Search Results for "%{searchTerm}" in %{collection}' + filterBy: undefined, // English translation: 'Filter by' + groupBy: undefined, // English translation: 'Group by' }, entries: { loadingEntries: 'Laster innlegg...', @@ -51,6 +61,14 @@ const nn_no: LocalePhrasesRoot = { longerLoading: 'Dette kan ta fleire minutt', noEntries: 'Ingen innlegg', }, + groups: { + other: undefined, // English translation: 'Other' + negateLabel: undefined, // English translation: 'Not %{label}' + }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, defaultFields: { author: { label: 'Forfatter', @@ -59,6 +77,7 @@ const nn_no: LocalePhrasesRoot = { label: 'Oppdatert', }, }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -78,39 +97,91 @@ const nn_no: LocalePhrasesRoot = { rangeCountExact: '%{fieldLabel} må ha nøyaktig %{count} element.', rangeMin: '%{fieldLabel} må minst ha %{minCount} element.', rangeMax: '%{fieldLabel} må ha %{maxCount} eller færre element.', + invalidPath: undefined, // English translation: ''%{path}' is not a valid path.' + pathExists: undefined, // English translation: 'Path '%{path}' already exists.' + invalidColor: undefined, // English translation: 'Color '%{color}' is invalid.' + invalidHexCode: undefined, // English translation: 'Hex codes must start with a # sign.' + }, + i18n: { + writingInLocale: undefined, // English translation: 'Writing in %{locale}' }, }, editor: { onLeavePage: 'Er du sikker på at du vil navigere bort frå denne sida?', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'Delete this published entry?' onDeleteWithUnsavedChangesBody: 'Er du sikkert på at du vil slette eit publisert innlegg med tilhøyrande ulagra endringar?', + onDeletePublishedEntryTitle: undefined, // English translation: 'Delete this published entry?' onDeletePublishedEntryBody: 'Er du sikker på at du vil slette dette publiserte innlegget?', loadingEntry: 'Lastar innlegg...', }, + editorInterface: { + sideBySideI18n: undefined, // English translation: 'I18n Side by Side' + preview: undefined, // English translation: 'Preview' + toggleI18n: undefined, // English translation: 'Toggle i18n' + togglePreview: undefined, // English translation: 'Toggle preview' + toggleScrollSync: undefined, // English translation: 'Sync scrolling' + }, editorToolbar: { publish: 'Publiser', published: 'Publisert', - unpublish: 'Avpubliser', duplicate: 'Dupliser', publishAndCreateNew: 'Publiser og lag nytt', publishAndDuplicate: 'Publiser og dupliser', deleteEntry: 'Slettar innlegg', publishNow: 'Publiser no', + discardChanges: undefined, // English translation: 'Discard changes' + discardChangesTitle: undefined, // English translation: 'Discard changes' + discardChangesBody: undefined, // English translation: 'Are you sure you want to discard the unsaved changed?' }, editorWidgets: { markdown: { + bold: undefined, // English translation: 'Bold' + italic: undefined, // English translation: 'Italic' + code: undefined, // English translation: 'Code' + link: undefined, // English translation: 'Link' + linkPrompt: undefined, // English translation: 'Enter the URL of the link' + headings: undefined, // English translation: 'Headings' + quote: undefined, // English translation: 'Quote' + bulletedList: undefined, // English translation: 'Bulleted List' + numberedList: undefined, // English translation: 'Numbered List' + addComponent: undefined, // English translation: 'Add Component' richText: 'Rik-tekst', markdown: 'Markdown', + type: undefined, // English translation: 'Type...' }, image: { choose: 'Vel bilete', + chooseMultiple: undefined, // English translation: 'Choose images' + chooseUrl: undefined, // English translation: 'Insert from URL' + replaceUrl: undefined, // English translation: 'Replace with URL' + promptUrl: undefined, // English translation: 'Enter the URL of the image' chooseDifferent: 'Vel eit anna bilete', + addMore: undefined, // English translation: 'Add more images' remove: 'Fjern bilete', + removeAll: undefined, // English translation: 'Remove all images' }, file: { choose: 'Vel fil', + chooseUrl: undefined, // English translation: 'Insert from URL' + chooseMultiple: undefined, // English translation: 'Choose files' + replaceUrl: undefined, // English translation: 'Replace with URL' + promptUrl: undefined, // English translation: 'Enter the URL of the file' chooseDifferent: 'Vel ei anna fil', + addMore: undefined, // English translation: 'Add more files' remove: 'Fjern fil', + removeAll: undefined, // English translation: 'Remove all files' + }, + folder: { + choose: undefined, // English translation: 'Choose a folder' + chooseUrl: undefined, // English translation: 'Insert folder path' + chooseMultiple: undefined, // English translation: 'Choose folders' + replaceUrl: undefined, // English translation: 'Replace with path' + promptUrl: undefined, // English translation: 'Enter path of the folder' + chooseDifferent: undefined, // English translation: 'Choose different folder' + addMore: undefined, // English translation: 'Add more folders' + remove: undefined, // English translation: 'Remove folder' + removeAll: undefined, // English translation: 'Remove all folders' }, unknownControl: { noControl: "Ingen konfigurasjon for widget '%{widget}'.", @@ -128,16 +199,37 @@ const nn_no: LocalePhrasesRoot = { }, datetime: { now: 'No', + invalidDateTitle: undefined, // English translation: 'Invalid date' + invalidDateBody: undefined, // English translation: 'The date you entered is invalid.' + }, + list: { + add: undefined, // English translation: 'Add %{item}' + addType: undefined, // English translation: 'Add %{item}' + noValue: undefined, // English translation: 'No value' + }, + keyvalue: { + key: undefined, // English translation: 'Key' + value: undefined, // English translation: 'Value' + uniqueKeys: undefined, // English translation: '%{keyLabel} must be unique' }, }, }, mediaLibrary: { mediaLibraryCard: { draft: 'Kladd', + copy: undefined, // English translation: 'Copy' + copyUrl: undefined, // English translation: 'Copy URL' + copyPath: undefined, // English translation: 'Copy Path' + copyName: undefined, // English translation: 'Copy Name' + copied: undefined, // English translation: 'Copied' }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: 'Er du sikker på at du vil slette markert element?', + fileTooLargeTitle: undefined, // English translation: 'File too large' fileTooLargeBody: 'Fila er for stor.\nMaksimal konfiguert filstorleik er %{size} kB.', + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: 'Lastar...', @@ -153,12 +245,30 @@ const nn_no: LocalePhrasesRoot = { deleting: 'Slettar...', deleteSelected: 'Slett markert', chooseSelected: 'Vel markert', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, default: { goBackToSite: 'Attende til sida', }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: 'Feil', details: 'Ein feil har oppstått. Det er fint om du ', @@ -173,13 +283,15 @@ const nn_no: LocalePhrasesRoot = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: 'Logg ut', }, toast: { onFailToLoadEntries: 'Kunne ikkje laste innlegg: %{details}', - onFailToLoadDeployPreview: 'Kunne ikkje laste førehandsvisning: %{details}', onFailToPersist: 'Kunne ikkje lagre: %{details}', + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: 'Kunne ikkje slette: %{details}', + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: 'Kunne ikkje laste opp: %{details}', missingRequiredField: 'Oisann, gløymte du noko? Alle påkrevde felt må fyllast ut før du kan halde fram', @@ -188,6 +300,8 @@ const nn_no: LocalePhrasesRoot = { onFailToPublishEntry: 'Kunne ikkje publisere: %{details}', entryUpdated: 'Innleggsstatus oppdatert', onFailToAuth: '%{details}', + onLoggedOut: undefined, // English translation: 'You have been logged out, please back up any data and login again' + onBackendDown: undefined, // English translation: 'The backend service is experiencing an outage. See %{details} for more information' }, }, }; diff --git a/packages/core/src/locales/pl/index.ts b/packages/core/src/locales/pl/index.ts index 79e668a9..aa7956d8 100644 --- a/packages/core/src/locales/pl/index.ts +++ b/packages/core/src/locales/pl/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const pl: LocalePhrasesRoot = { auth: { @@ -12,6 +12,9 @@ const pl: LocalePhrasesRoot = { errors: { email: 'Wprowadź swój adres email', password: 'Wprowadź swoje hasło', + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' identitySettings: 'Brak dostępu do ustawień tożsamości. Jeśli używasza backendu git-gateway upewnij się, że usługa tożsamośći (Identity service) oraz Git Gateway są włączone.', }, @@ -25,6 +28,7 @@ const pl: LocalePhrasesRoot = { app: { errorHeader: 'Błąd ładowania konfiguracji CMS', configErrors: 'Błędy konfiguracji', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: 'Sprawdź plik config.yml.', loadingConfig: 'Ładowanie konfiguracji...', waitingBackend: 'Oczekiwanie na backend...', @@ -61,6 +65,10 @@ const pl: LocalePhrasesRoot = { other: 'Inne', negateLabel: 'Nie %{label}', }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, defaultFields: { author: { label: 'Autor', @@ -69,6 +77,7 @@ const pl: LocalePhrasesRoot = { label: 'Zaktualizowano', }, }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -88,8 +97,10 @@ const pl: LocalePhrasesRoot = { rangeCountExact: '%{fieldLabel} musi mieć %{count} elementów', rangeMin: '%{fieldLabel} musi mieć przynajmniej %{minCount} elementów', rangeMax: '%{fieldLabel} może mieć maksymalnie %{maxCount} elementów', - invalidPath: `'%{path}' nie jest poprawna`, - pathExists: `Ścieżka '%{path}' już istnieje`, + invalidPath: "'%{path}' nie jest poprawna", + pathExists: "Ścieżka '%{path}' już istnieje", + invalidColor: undefined, // English translation: 'Color '%{color}' is invalid.' + invalidHexCode: undefined, // English translation: 'Hex codes must start with a # sign.' }, i18n: { writingInLocale: 'Pisz w języku %{locale}', @@ -97,12 +108,16 @@ const pl: LocalePhrasesRoot = { }, editor: { onLeavePage: 'Czy na pewno chcesz opuścić tę stronę?', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'Delete this published entry?' onDeleteWithUnsavedChangesBody: 'Czy na pewno chcesz usunąć tę opublikowaną pozycję, a także niezapisane zmiany z bieżącej sesji?', + onDeletePublishedEntryTitle: undefined, // English translation: 'Delete this published entry?' onDeletePublishedEntryBody: 'Czy na pewno chcesz usunąć tę opublikowaną pozycję?', loadingEntry: 'Ładowanie pozycji...', }, editorInterface: { + sideBySideI18n: undefined, // English translation: 'I18n Side by Side' + preview: undefined, // English translation: 'Preview' toggleI18n: 'Przełącz i18n', togglePreview: 'Przełącz podgląd', toggleScrollSync: 'Synchroniczne przesuwanie', @@ -110,12 +125,14 @@ const pl: LocalePhrasesRoot = { editorToolbar: { publish: 'Opublikuj', published: 'Opublikowane', - unpublish: 'Cofnij publikację', duplicate: 'Zduplikuj', publishAndCreateNew: 'Opublikuj i dodaj nowy', publishAndDuplicate: 'Opublikuj i zduplikuj', deleteEntry: 'Usuń pozycję', publishNow: 'Opublikuj teraz', + discardChanges: undefined, // English translation: 'Discard changes' + discardChangesTitle: undefined, // English translation: 'Discard changes' + discardChangesBody: undefined, // English translation: 'Are you sure you want to discard the unsaved changed?' }, editorWidgets: { markdown: { @@ -131,22 +148,40 @@ const pl: LocalePhrasesRoot = { addComponent: 'Dodaj komponent', richText: 'Tekst sformatowany', markdown: 'Markdown', + type: undefined, // English translation: 'Type...' }, image: { choose: 'Wybierz zdjęcie', + chooseMultiple: undefined, // English translation: 'Choose images' chooseUrl: 'Dodaj adres URL zdjęcia', replaceUrl: 'Zmień adres URL zdjęcia', promptUrl: 'Wprować adres URL zdjęcia', chooseDifferent: 'Zmień zdjęcie', + addMore: undefined, // English translation: 'Add more images' remove: 'Usuń zdjęcie', + removeAll: undefined, // English translation: 'Remove all images' }, file: { choose: 'Wybierz plik', chooseUrl: 'Dodaj adres URL pliku', + chooseMultiple: undefined, // English translation: 'Choose files' replaceUrl: 'Zmień adres URL zdjęcia', promptUrl: 'Dodaj adres URL pliku', chooseDifferent: 'Wybierz inny plik', + addMore: undefined, // English translation: 'Add more files' remove: 'Usuń plik', + removeAll: undefined, // English translation: 'Remove all files' + }, + folder: { + choose: undefined, // English translation: 'Choose a folder' + chooseUrl: undefined, // English translation: 'Insert folder path' + chooseMultiple: undefined, // English translation: 'Choose folders' + replaceUrl: undefined, // English translation: 'Replace with path' + promptUrl: undefined, // English translation: 'Enter path of the folder' + chooseDifferent: undefined, // English translation: 'Choose different folder' + addMore: undefined, // English translation: 'Add more folders' + remove: undefined, // English translation: 'Remove folder' + removeAll: undefined, // English translation: 'Remove all folders' }, unknownControl: { noControl: "Brak kontrolki dla widżetu '%{widget}'.", @@ -164,10 +199,18 @@ const pl: LocalePhrasesRoot = { }, datetime: { now: 'Teraz', + invalidDateTitle: undefined, // English translation: 'Invalid date' + invalidDateBody: undefined, // English translation: 'The date you entered is invalid.' }, list: { add: 'Dodaj %{item}', addType: 'Dodaj nowy %{item}', + noValue: undefined, // English translation: 'No value' + }, + keyvalue: { + key: undefined, // English translation: 'Key' + value: undefined, // English translation: 'Value' + uniqueKeys: undefined, // English translation: '%{keyLabel} must be unique' }, }, }, @@ -181,8 +224,12 @@ const pl: LocalePhrasesRoot = { copied: 'Skopiowano', }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: 'Czy na pewno chcesz usunąć zaznaczone multimedia?', + fileTooLargeTitle: undefined, // English translation: 'File too large' fileTooLargeBody: 'Plik jest za duży.\nUstawiony maksymalny rozmiar pliku: %{size} kB.', + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: 'Ładowanie...', @@ -198,12 +245,30 @@ const pl: LocalePhrasesRoot = { deleting: 'Usuwanie...', deleteSelected: 'Usuń zaznaczone', chooseSelected: 'Wybierz zaznaczone', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, default: { goBackToSite: 'Wróć do strony', }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: 'Błąd', details: 'Wystąpił błąd - proszę ', @@ -218,13 +283,15 @@ const pl: LocalePhrasesRoot = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: 'Wyloguj się', }, toast: { onFailToLoadEntries: 'Nie udało się załadować pozycji: %{details}', - onFailToLoadDeployPreview: 'Nie udało się załadować podglądu: %{details}', onFailToPersist: 'Nie udało się zapisać pozycji: %{details}', + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: 'Nie udało się usunąć pozycji: %{details}', + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: 'Nie udało się zaktualizować statusu: %{details}', missingRequiredField: 'Ups, przegapiłeś wymagane pole. Proszę uzupełnij przed zapisaniem.', entrySaved: 'Pozycja zapisana', diff --git a/packages/core/src/locales/pt/index.ts b/packages/core/src/locales/pt/index.ts index a8e75363..1dde1585 100644 --- a/packages/core/src/locales/pt/index.ts +++ b/packages/core/src/locales/pt/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const pt: LocalePhrasesRoot = { auth: { @@ -12,6 +12,9 @@ const pt: LocalePhrasesRoot = { errors: { email: 'Certifique-se de inserir seu e-mail.', password: 'Por favor, insira sua senha.', + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' identitySettings: 'Não foi possível acessar as configurações de identidade. Ao usar o back-end git-gateway, certifique-se de habilitar o serviço Identity e o Git Gateway.', }, @@ -25,6 +28,7 @@ const pt: LocalePhrasesRoot = { app: { errorHeader: 'Erro ao carregar a configuração do CMS', configErrors: 'Erros de configuração', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: 'Verifique o arquivo config.yml.', loadingConfig: 'Carregando configuração...', waitingBackend: 'Aguardando o back-end...', @@ -61,6 +65,10 @@ const pt: LocalePhrasesRoot = { other: 'Outro', negateLabel: 'Não %{label}', }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, defaultFields: { author: { label: 'Autor', @@ -69,6 +77,7 @@ const pt: LocalePhrasesRoot = { label: 'Atualizado em', }, }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -88,8 +97,10 @@ const pt: LocalePhrasesRoot = { rangeCountExact: '%{fieldLabel} deve ser exatamente %{count}.', rangeMin: '%{fieldLabel} deve ter, pelo menos, %{minCount}.', rangeMax: '%{fieldLabel} deve ter %{maxCount} ou menos.', - invalidPath: `'%{path}' não é um caminho válido`, - pathExists: `O caminho '%{path}' já existe`, + invalidPath: "'%{path}' não é um caminho válido", + pathExists: "O caminho '%{path}' já existe", + invalidColor: undefined, // English translation: 'Color '%{color}' is invalid.' + invalidHexCode: undefined, // English translation: 'Hex codes must start with a # sign.' }, i18n: { writingInLocale: 'Escrevendo em %{locale}', @@ -97,12 +108,16 @@ const pt: LocalePhrasesRoot = { }, editor: { onLeavePage: 'Tem certeza que deseja sair desta página?', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'Delete this published entry?' onDeleteWithUnsavedChangesBody: 'Tem certeza de que deseja excluir esta entrada publicada, bem como as alterações não salvas da sessão atual?', + onDeletePublishedEntryTitle: undefined, // English translation: 'Delete this published entry?' onDeletePublishedEntryBody: 'Tem certeza de que deseja excluir esta entrada publicada?', loadingEntry: 'Carregando entrada...', }, editorInterface: { + sideBySideI18n: undefined, // English translation: 'I18n Side by Side' + preview: undefined, // English translation: 'Preview' toggleI18n: 'Mudar i18n', togglePreview: 'Mudar pré-visualização', toggleScrollSync: 'Sincronizar rolagem', @@ -110,12 +125,14 @@ const pt: LocalePhrasesRoot = { editorToolbar: { publish: 'Publicar', published: 'Publicado', - unpublish: 'Despublicar', duplicate: 'Duplicado', publishAndCreateNew: 'Publicar e criar novo(a)', publishAndDuplicate: 'Publicar e duplicar', deleteEntry: 'Excluir entrada', publishNow: 'Publicar agora', + discardChanges: undefined, // English translation: 'Discard changes' + discardChangesTitle: undefined, // English translation: 'Discard changes' + discardChangesBody: undefined, // English translation: 'Are you sure you want to discard the unsaved changed?' }, editorWidgets: { markdown: { @@ -131,22 +148,40 @@ const pt: LocalePhrasesRoot = { addComponent: 'Adicionar Componente', richText: 'Rich Text', markdown: 'Markdown', + type: undefined, // English translation: 'Type...' }, image: { choose: 'Escolha uma imagem', + chooseMultiple: undefined, // English translation: 'Choose images' chooseUrl: 'Inserir de uma URL', replaceUrl: 'Substituir com uma URL', promptUrl: 'Insira a URL da imagem', chooseDifferent: 'Escolha uma imagem diferente', + addMore: undefined, // English translation: 'Add more images' remove: 'Remover imagem', + removeAll: undefined, // English translation: 'Remove all images' }, file: { choose: 'Escolha um arquivo', chooseUrl: 'Inserir de uma URL', + chooseMultiple: undefined, // English translation: 'Choose files' replaceUrl: 'Substituir com uma URL', promptUrl: 'Insira a URL do arquivo', chooseDifferent: 'Escolha um arquivo diferente', + addMore: undefined, // English translation: 'Add more files' remove: 'Remover arquivo', + removeAll: undefined, // English translation: 'Remove all files' + }, + folder: { + choose: undefined, // English translation: 'Choose a folder' + chooseUrl: undefined, // English translation: 'Insert folder path' + chooseMultiple: undefined, // English translation: 'Choose folders' + replaceUrl: undefined, // English translation: 'Replace with path' + promptUrl: undefined, // English translation: 'Enter path of the folder' + chooseDifferent: undefined, // English translation: 'Choose different folder' + addMore: undefined, // English translation: 'Add more folders' + remove: undefined, // English translation: 'Remove folder' + removeAll: undefined, // English translation: 'Remove all folders' }, unknownControl: { noControl: "Nenhum controle para o widget '%{widget}'.", @@ -164,10 +199,18 @@ const pt: LocalePhrasesRoot = { }, datetime: { now: 'Agora', + invalidDateTitle: undefined, // English translation: 'Invalid date' + invalidDateBody: undefined, // English translation: 'The date you entered is invalid.' }, list: { add: 'Adicionar %{item}', addType: 'Adicionar %{item} item', + noValue: undefined, // English translation: 'No value' + }, + keyvalue: { + key: undefined, // English translation: 'Key' + value: undefined, // English translation: 'Value' + uniqueKeys: undefined, // English translation: '%{keyLabel} must be unique' }, }, }, @@ -181,9 +224,13 @@ const pt: LocalePhrasesRoot = { copied: 'Copiado', }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: 'Tem certeza de que deseja excluir a mídia selecionada?', + fileTooLargeTitle: undefined, // English translation: 'File too large' fileTooLargeBody: 'Arquivo muito grande.\nConfigurado para não permitir arquivos maiores que %{size} kB.', + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: 'Carregando...', @@ -199,12 +246,30 @@ const pt: LocalePhrasesRoot = { deleting: 'Excluindo...', deleteSelected: 'Excluir selecionado', chooseSelected: 'Escolher selecionado', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, default: { goBackToSite: 'Voltar ao site', }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: 'Erro', details: 'Ocorreu um erro - por favor ', @@ -219,13 +284,15 @@ const pt: LocalePhrasesRoot = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: 'Sair', }, toast: { onFailToLoadEntries: 'Falha ao carregar a entrada: %{details}', - onFailToLoadDeployPreview: 'Falha ao carregar a pré-visualização: %{details}', onFailToPersist: 'Falha ao persistir na entrada: %{details}', + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: 'Falha ao excluir a entrada: %{details}', + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: 'Falha ao atualizar status: %{details}', missingRequiredField: 'Ops, você perdeu um campo obrigatório. Por favor, preencha antes de salvar.', diff --git a/packages/core/src/locales/ro/index.ts b/packages/core/src/locales/ro/index.ts index 6b9482e4..1e9e5c88 100644 --- a/packages/core/src/locales/ro/index.ts +++ b/packages/core/src/locales/ro/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const ro: LocalePhrasesRoot = { auth: { @@ -12,6 +12,9 @@ const ro: LocalePhrasesRoot = { errors: { email: 'Asigură-te că ai introdus email-ul.', password: 'Te rugăm introdu parola.', + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' identitySettings: 'Nu s-a putut accesa serviciul de autentificare. Dacă folosești git-gateway, asigură-te că ai activat serviciul Identity și Git-Gateway.', }, @@ -25,6 +28,7 @@ const ro: LocalePhrasesRoot = { app: { errorHeader: 'A apărut o eroare cu configurarea CMS-ului.', configErrors: 'Au apărut erori de configurare.', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: 'Verifică fișierul de configurare (config.yml).', loadingConfig: 'Se încarcă configurările...', waitingBackend: 'Așteptăm după backend...', @@ -61,6 +65,10 @@ const ro: LocalePhrasesRoot = { other: 'Altul', negateLabel: 'Nu %{label}', }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, defaultFields: { author: { label: 'Autor', @@ -69,6 +77,7 @@ const ro: LocalePhrasesRoot = { label: 'Actualizat la', }, }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -86,10 +95,12 @@ const ro: LocalePhrasesRoot = { max: '%{fieldLabel} poate fi mai mic sau egal cu %{maxValue}.', rangeCount: '%{fieldLabel} poate avea între %{minCount} și %{maxCount} intrări.', rangeCountExact: '%{fieldLabel} trebuie să conțină exact %{count} intrări.', - minCount: '%{fieldLabel} trebuie să conțină cel puțin %{minCount} intrări.', - maxCount: '%{fieldLabel} trebuie să conțină cel mult %{maxCount} intrări.', - invalidPath: `'%{path}' nu este o cale validă.`, - pathExists: `Calea '%{path}' există deja.`, + rangeMin: undefined, // English translation: '%{fieldLabel} must have at least %{minCount} item(s).' + rangeMax: undefined, // English translation: '%{fieldLabel} must have %{maxCount} or less item(s).' + invalidPath: "'%{path}' nu este o cale validă.", + pathExists: "Calea '%{path}' există deja.", + invalidColor: undefined, // English translation: 'Color '%{color}' is invalid.' + invalidHexCode: undefined, // English translation: 'Hex codes must start with a # sign.' }, i18n: { writingInLocale: 'Scrii în limba %{locale}', @@ -97,12 +108,16 @@ const ro: LocalePhrasesRoot = { }, editor: { onLeavePage: 'Ești sigur/ă că dorești să părăsești pagina?', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'Delete this published entry?' onDeleteWithUnsavedChangesBody: 'Ești sigur/ă că dorești să ștergi această publicare, dar și modificările nesalvate din sesiunea curentă?', + onDeletePublishedEntryTitle: undefined, // English translation: 'Delete this published entry?' onDeletePublishedEntryBody: 'Ești sigur/ă că dorești să ștergi această publicare?', loadingEntry: 'Se încarcă...', }, editorInterface: { + sideBySideI18n: undefined, // English translation: 'I18n Side by Side' + preview: undefined, // English translation: 'Preview' toggleI18n: 'Comută limba', togglePreview: 'Comută previzualizarea', toggleScrollSync: 'Sincronizează scroll-ul', @@ -110,12 +125,14 @@ const ro: LocalePhrasesRoot = { editorToolbar: { publish: 'Publicare', published: 'Publicat', - unpublish: 'Anulează publicarea', duplicate: 'Duplifică', publishAndCreateNew: 'Publicare apoi crează altul', publishAndDuplicate: 'Publicare apoi duplifică', deleteEntry: 'Șterge intrare', publishNow: 'Publicare', + discardChanges: undefined, // English translation: 'Discard changes' + discardChangesTitle: undefined, // English translation: 'Discard changes' + discardChangesBody: undefined, // English translation: 'Are you sure you want to discard the unsaved changed?' }, editorWidgets: { markdown: { @@ -131,22 +148,40 @@ const ro: LocalePhrasesRoot = { addComponent: 'Adaugă componentă', richText: 'Rich Text', markdown: 'Markdown', + type: undefined, // English translation: 'Type...' }, image: { choose: 'Alege o imagine', + chooseMultiple: undefined, // English translation: 'Choose images' chooseUrl: 'Inserează din URL', replaceUrl: 'Schimbă cu URL', promptUrl: 'Introdu URL-ul imaginii', chooseDifferent: 'Alege altă imagine', + addMore: undefined, // English translation: 'Add more images' remove: 'Șterge imaginea', + removeAll: undefined, // English translation: 'Remove all images' }, file: { choose: 'Alege un fișier', chooseUrl: 'Inserează din URL', + chooseMultiple: undefined, // English translation: 'Choose files' replaceUrl: 'Schimbă cu URL', promptUrl: 'Introdu URL-ul fișierului', chooseDifferent: 'Alege alt fișier', + addMore: undefined, // English translation: 'Add more files' remove: 'Șterge fișier', + removeAll: undefined, // English translation: 'Remove all files' + }, + folder: { + choose: undefined, // English translation: 'Choose a folder' + chooseUrl: undefined, // English translation: 'Insert folder path' + chooseMultiple: undefined, // English translation: 'Choose folders' + replaceUrl: undefined, // English translation: 'Replace with path' + promptUrl: undefined, // English translation: 'Enter path of the folder' + chooseDifferent: undefined, // English translation: 'Choose different folder' + addMore: undefined, // English translation: 'Add more folders' + remove: undefined, // English translation: 'Remove folder' + removeAll: undefined, // English translation: 'Remove all folders' }, unknownControl: { noControl: 'Widget-ul „%{widget}” nu are configurări valabile.', @@ -164,6 +199,18 @@ const ro: LocalePhrasesRoot = { }, datetime: { now: 'Acum', + invalidDateTitle: undefined, // English translation: 'Invalid date' + invalidDateBody: undefined, // English translation: 'The date you entered is invalid.' + }, + list: { + add: undefined, // English translation: 'Add %{item}' + addType: undefined, // English translation: 'Add %{item}' + noValue: undefined, // English translation: 'No value' + }, + keyvalue: { + key: undefined, // English translation: 'Key' + value: undefined, // English translation: 'Value' + uniqueKeys: undefined, // English translation: '%{keyLabel} must be unique' }, }, }, @@ -177,9 +224,13 @@ const ro: LocalePhrasesRoot = { copied: 'Copiat', }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: 'Ești sigur/ă că dorești să ștergi fișierul selectat?', + fileTooLargeTitle: undefined, // English translation: 'File too large' fileTooLargeBody: 'Fișier prea mare.\nConfigurarea nu permite fișiere mai mari de %{size} KB.', + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: 'Se încarcă...', @@ -195,12 +246,30 @@ const ro: LocalePhrasesRoot = { deleting: 'Se șterge...', deleteSelected: 'Șterge fișierele selectate', chooseSelected: 'Alege fișierele selectate', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, default: { goBackToSite: 'Înapoi la site', }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: 'Eroare', details: 'A apărut o eroare - te rugăm ', @@ -215,13 +284,15 @@ const ro: LocalePhrasesRoot = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: 'Ieșire din cont', }, toast: { onFailToLoadEntries: 'A eșuat încărcarea intrării: %{details}', - onFailToLoadDeployPreview: 'A eșuat încărcarea previzualizării: %{details}', onFailToPersist: 'A eșuat persistarea intrării: %{details}', + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: 'A eșuat ștergerea intrării: %{details}', + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: 'A eșuat actualizarea status-ului: %{details}', missingRequiredField: 'Oops, ai ratat un câmp obligatoriu. Completează-l pentru a salva.', entrySaved: 'Intrare salvată', diff --git a/packages/core/src/locales/ru/index.ts b/packages/core/src/locales/ru/index.ts index d67d794e..0c78f43f 100644 --- a/packages/core/src/locales/ru/index.ts +++ b/packages/core/src/locales/ru/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const ru: LocalePhrasesRoot = { auth: { @@ -12,6 +12,9 @@ const ru: LocalePhrasesRoot = { errors: { email: 'Введите ваш email.', password: 'Введите пароль.', + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' identitySettings: 'Нет доступа к настройкам. Если используете git-gateway, убедитесь, что включили Identity service и Git Gateway.', }, @@ -25,6 +28,7 @@ const ru: LocalePhrasesRoot = { app: { errorHeader: 'Ошибка загрузки конфигурации CMS', configErrors: 'Ошибки конфигурации', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: 'Проверьте свой config.yml файл.', loadingConfig: 'Загрузка конфигурации…', waitingBackend: 'Ожидание ответа от бэкенда…', @@ -61,6 +65,10 @@ const ru: LocalePhrasesRoot = { other: 'Другая', negateLabel: 'Не %{label}', }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, defaultFields: { author: { label: 'Автор', @@ -69,6 +77,7 @@ const ru: LocalePhrasesRoot = { label: 'Обновлено', }, }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -88,8 +97,10 @@ const ru: LocalePhrasesRoot = { rangeCountExact: '%{fieldLabel} должно содержать строго %{count} элементов.', rangeMin: '%{fieldLabel} должно содержать не менее %{minCount} элементов.', rangeMax: '%{fieldLabel} должно содержать %{maxCount} или менее элементов.', - invalidPath: `Путь '%{path}' содежрит ошибки`, - pathExists: `Путь '%{path}' уже существует`, + invalidPath: "Путь '%{path}' содежрит ошибки", + pathExists: "Путь '%{path}' уже существует", + invalidColor: undefined, // English translation: 'Color '%{color}' is invalid.' + invalidHexCode: undefined, // English translation: 'Hex codes must start with a # sign.' }, i18n: { writingInLocale: 'Пишем на %{locale}', @@ -97,20 +108,31 @@ const ru: LocalePhrasesRoot = { }, editor: { onLeavePage: 'Вы уверены, что хотите покинуть эту страницу?', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'Delete this published entry?' onDeleteWithUnsavedChangesBody: 'Вы уверены, что хотите удалить эту опубликованную запись, а также несохраненные изменения из текущего сеанса?', + onDeletePublishedEntryTitle: undefined, // English translation: 'Delete this published entry?' onDeletePublishedEntryBody: 'Вы уверены, что хотите удалить эту опубликованную запись?', loadingEntry: 'Загрузка записи…', }, + editorInterface: { + sideBySideI18n: undefined, // English translation: 'I18n Side by Side' + preview: undefined, // English translation: 'Preview' + toggleI18n: undefined, // English translation: 'Toggle i18n' + togglePreview: undefined, // English translation: 'Toggle preview' + toggleScrollSync: undefined, // English translation: 'Sync scrolling' + }, editorToolbar: { publish: 'Опубликовать', published: 'Опубликовано', - unpublish: 'Отменить публикацию', duplicate: 'Дублировать', publishAndCreateNew: 'Опубликовать и создать новую', publishAndDuplicate: 'Опубликовать и дублировать', deleteEntry: 'Удалить запись', publishNow: 'Опубликовать сейчас', + discardChanges: undefined, // English translation: 'Discard changes' + discardChangesTitle: undefined, // English translation: 'Discard changes' + discardChangesBody: undefined, // English translation: 'Are you sure you want to discard the unsaved changed?' }, editorWidgets: { markdown: { @@ -126,22 +148,40 @@ const ru: LocalePhrasesRoot = { addComponent: 'Добавить компонент', richText: 'Форматированный текст', markdown: 'Markdown', + type: undefined, // English translation: 'Type...' }, image: { choose: 'Выберите изображение', + chooseMultiple: undefined, // English translation: 'Choose images' chooseUrl: 'Вставить из URL', replaceUrl: 'Заменить на URL', promptUrl: 'Введите URL изображения', chooseDifferent: 'Выберите другое изображение', + addMore: undefined, // English translation: 'Add more images' remove: 'Удалить изображение', + removeAll: undefined, // English translation: 'Remove all images' }, file: { choose: 'Выберите файл', chooseUrl: 'Вставить из URL', + chooseMultiple: undefined, // English translation: 'Choose files' replaceUrl: 'Заменить на URL', promptUrl: 'Введите URL файла', chooseDifferent: 'Выберите другой файл', + addMore: undefined, // English translation: 'Add more files' remove: 'Удалить файл', + removeAll: undefined, // English translation: 'Remove all files' + }, + folder: { + choose: undefined, // English translation: 'Choose a folder' + chooseUrl: undefined, // English translation: 'Insert folder path' + chooseMultiple: undefined, // English translation: 'Choose folders' + replaceUrl: undefined, // English translation: 'Replace with path' + promptUrl: undefined, // English translation: 'Enter path of the folder' + chooseDifferent: undefined, // English translation: 'Choose different folder' + addMore: undefined, // English translation: 'Add more folders' + remove: undefined, // English translation: 'Remove folder' + removeAll: undefined, // English translation: 'Remove all folders' }, unknownControl: { noControl: "Нет контрола для виджета '%{widget}'.", @@ -159,6 +199,18 @@ const ru: LocalePhrasesRoot = { }, datetime: { now: 'Сейчас', + invalidDateTitle: undefined, // English translation: 'Invalid date' + invalidDateBody: undefined, // English translation: 'The date you entered is invalid.' + }, + list: { + add: undefined, // English translation: 'Add %{item}' + addType: undefined, // English translation: 'Add %{item}' + noValue: undefined, // English translation: 'No value' + }, + keyvalue: { + key: undefined, // English translation: 'Key' + value: undefined, // English translation: 'Value' + uniqueKeys: undefined, // English translation: '%{keyLabel} must be unique' }, }, }, @@ -172,9 +224,13 @@ const ru: LocalePhrasesRoot = { copied: 'Скопировано', }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: 'Вы уверены, что хотите удалить выбранный медиафайл?', + fileTooLargeTitle: undefined, // English translation: 'File too large' fileTooLargeBody: 'Файл слишком большой.\nНастройки не позволяют сохранять файлы более %{size} kB.', + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: 'Загрузка медифайлов…', @@ -190,12 +246,30 @@ const ru: LocalePhrasesRoot = { deleting: 'Удаление…', deleteSelected: 'Удалить помеченные', chooseSelected: 'Выбрать помеченные', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, default: { goBackToSite: 'Вернуться на сайт', }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: 'Ошибка', details: 'Произошла ошибка. Пожалуйста, ', @@ -210,13 +284,15 @@ const ru: LocalePhrasesRoot = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: 'Выйти', }, toast: { onFailToLoadEntries: 'Не удалось загрузить запись: %{details}', - onFailToLoadDeployPreview: 'Не удалось загрузить превью: %{details}', onFailToPersist: 'Не удалось сохранить запись: %{details}', + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: 'Не удалось удалить запись: %{details}', + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: 'Не удалось обновить статус: %{details}', missingRequiredField: 'К сожалению, вы пропустили обязательное поле. Пожалуйста, заполните перед сохранением.', diff --git a/packages/core/src/locales/sl/index.ts b/packages/core/src/locales/sl/index.ts index e0805cd8..5616e702 100644 --- a/packages/core/src/locales/sl/index.ts +++ b/packages/core/src/locales/sl/index.ts @@ -1,15 +1,20 @@ -const sl = { +import type { LocalePhrasesRoot } from '../types'; + +const sl: LocalePhrasesRoot = { auth: { login: 'Vpiši se', loggingIn: 'Prijavljanje...', loginWithNetlifyIdentity: 'Prijavi se z Netlify Identity', - loginWithAzure: 'Prijavi se z Azure računom', loginWithBitbucket: 'Prijavi se z BitBucket računom', loginWithGitHub: 'Prijavi se z GitHub računom', loginWithGitLab: 'Prijavi se z Gitlab računom', + loginWithGitea: undefined, // English translation: 'Login with Gitea' errors: { email: 'Vnesi svoj pravi e-poštni naslov.', password: 'Vnesi svoje geslo.', + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' identitySettings: 'Ni mogoče dostopati do nastavitev identitete. Ko uporabljate Git-Gateway zaledje, se prepričajte, da omogočite Identity Service in Git Gateway.', }, @@ -17,13 +22,13 @@ const sl = { app: { header: { content: 'Vsebina', - workflow: 'Potek dela', media: 'Media', quickAdd: 'Hitro dodajanje', }, app: { errorHeader: 'Napaka pri nalaganju CMS konfiguracije', configErrors: 'Konfiguracijske napake', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: 'Preverite svojo datoteko config.yml.', loadingConfig: 'Nalaganje konfiguracije ...', waitingBackend: 'Čakanje na zaledje ...', @@ -60,6 +65,10 @@ const sl = { other: 'Drugo', negateLabel: 'Ne %{label}', }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, defaultFields: { author: { label: 'Avtor', @@ -68,6 +77,7 @@ const sl = { label: 'Nazadnje posodobljeno', }, }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -87,71 +97,42 @@ const sl = { rangeCountExact: '%{fieldLabel} mora imeti točno %{count} elemente.', rangeMin: '%{fieldLabel} mora imeti vsaj %{minCount} elementov.', rangeMax: '%{fieldLabel} mora imeti %{maxCount} ali manj elementov.', - invalidPath: `'%{path}' ni veljavna pot`, - pathExists: `Pot '%{path}' že obstaja`, + invalidPath: "'%{path}' ni veljavna pot", + pathExists: "Pot '%{path}' že obstaja", + invalidColor: undefined, // English translation: 'Color '%{color}' is invalid.' + invalidHexCode: undefined, // English translation: 'Hex codes must start with a # sign.' }, i18n: { writingInLocale: 'Pisanje v %{locale}', - copyFromLocale: 'Izpolnite iz drugega jezika', - copyFromLocaleConfirm: - 'Ali želiš izpolniti podatke iz %{locale} jezika?\nVsa obstoječa vsebina bo prepisana.', }, }, editor: { onLeavePage: 'Ste prepričani, da želite zapustiti to stran?', - onUpdatingWithUnsavedChanges: 'Imaš neshranjene spremembe. Shrani pred posodobitvijo stanja.', - onPublishingNotReady: 'Pred objavo posodobi status na "pripravljen".', - onPublishingWithUnsavedChanges: 'Imaš neshranjene spremembe. Shrani pred objavo.', - onPublishing: 'Ste prepričani, da želite objaviti ta vnos?', - onUnpublishing: 'Ste prepričani, da želite preklicati objavo tega vnosa?', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'Delete this published entry?' onDeleteWithUnsavedChangesBody: 'Ste prepričani, da želite izbrisati ta objavljen vnos, pa tudi neshrannjene spremembe iz trenutne seje?', + onDeletePublishedEntryTitle: undefined, // English translation: 'Delete this published entry?' onDeletePublishedEntryBody: 'Ste prepričani, da želite izbrisati ta objavljeni vnos?', - onDeleteUnpublishedChangesWithUnsavedChanges: - 'To bo izbrisalo vse neobjavljene spremembe tega vnosa, pa tudi neshranjene spremembe iz trenutne seje. Ali še vedno želiš izbrisati?', - onDeleteUnpublishedChanges: - 'Vse neobjavljene spremembe tega vnosa bodo izbrisane. Ali še vedno želiš izbrisati?', loadingEntry: 'Nalaganje vnosa ...', - confirmLoadBackup: - 'Za ta vnos je bila povrnjena lokalna varnostna kopija, ali bi jo radi uporabili?', }, editorInterface: { + sideBySideI18n: undefined, // English translation: 'I18n Side by Side' + preview: undefined, // English translation: 'Preview' toggleI18n: 'Preklopi i18n', togglePreview: 'Preklopi predogled', toggleScrollSync: 'Sinhroniziraj drsenje', }, editorToolbar: { - publishing: 'Objavljanje ...', publish: 'Objavi', published: 'Objavljeno', - unpublish: 'Prekliči objavo', duplicate: 'Podvoji', - unpublishing: 'Preklicevanje objave ...', publishAndCreateNew: 'Objavi in ustvari novo', publishAndDuplicate: 'Objavi in podvoji', - deleteUnpublishedChanges: 'Izbriši neobjavljene spremembe', - deleteUnpublishedEntry: 'Izbriši neobjavljen vnos', - deletePublishedEntry: 'Izbriši objavljen vnos', deleteEntry: 'Izbriši vnos', - saving: 'Shranjevanje ...', - save: 'Shrani', - statusInfoTooltipDraft: - 'Status vnosa je nastavljen na osnutek. Če ga želiš dokončati in predložiti v pregled, nastavi stanje na „v pregledu“', - statusInfoTooltipInReview: - 'Vnos je v pregledu, nadaljnja dejanja niso potrebna. Vendar lahko med pregledovanjem še vedno narediš spremembe.', - deleting: 'Brisanje ...', - updating: 'Posodabljanje ...', - status: 'status: %{status}', - backCollection: ' Pisanje v %{collectionLabel} zbirko', - unsavedChanges: 'Neshranjene spremembe', - changesSaved: 'Spremembe shranjene', - draft: 'Osnutek', - inReview: 'V pregledu', - ready: 'Pripravljen', publishNow: 'Objavi zdaj', - deployPreviewPendingButtonLabel: 'Preveri za predogled', - deployPreviewButtonLabel: 'Ogled predogleda', - deployButtonLabel: 'Pogled v živo', + discardChanges: undefined, // English translation: 'Discard changes' + discardChangesTitle: undefined, // English translation: 'Discard changes' + discardChangesBody: undefined, // English translation: 'Are you sure you want to discard the unsaved changed?' }, editorWidgets: { markdown: { @@ -167,6 +148,7 @@ const sl = { addComponent: 'Dodaj komponento', richText: 'Bogato besedilo', markdown: 'Markdown', + type: undefined, // English translation: 'Type...' }, image: { choose: 'Izberi sliko', @@ -190,6 +172,17 @@ const sl = { remove: 'Odstrani datoteko', removeAll: 'Odstrani vse datoteke', }, + folder: { + choose: undefined, // English translation: 'Choose a folder' + chooseUrl: undefined, // English translation: 'Insert folder path' + chooseMultiple: undefined, // English translation: 'Choose folders' + replaceUrl: undefined, // English translation: 'Replace with path' + promptUrl: undefined, // English translation: 'Enter path of the folder' + chooseDifferent: undefined, // English translation: 'Choose different folder' + addMore: undefined, // English translation: 'Add more folders' + remove: undefined, // English translation: 'Remove folder' + removeAll: undefined, // English translation: 'Remove all folders' + }, unknownControl: { noControl: "Ni kontrole za gradnik '%{widget}'.", }, @@ -206,10 +199,18 @@ const sl = { }, datetime: { now: 'Zdaj', + invalidDateTitle: undefined, // English translation: 'Invalid date' + invalidDateBody: undefined, // English translation: 'The date you entered is invalid.' }, list: { add: 'Dodaj %{item}', addType: 'Dodaj %{item}', + noValue: undefined, // English translation: 'No value' + }, + keyvalue: { + key: undefined, // English translation: 'Key' + value: undefined, // English translation: 'Value' + uniqueKeys: undefined, // English translation: '%{keyLabel} must be unique' }, }, }, @@ -223,15 +224,18 @@ const sl = { copied: 'Kopirano', }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: 'Ste prepričani, da želite izbrisati izbrane medije?', + fileTooLargeTitle: undefined, // English translation: 'File too large' fileTooLargeBody: 'Datoteka je prevelika.\n Ne sme biti večja od %{size} kb.', + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: 'Nalaganje...', noResults: 'Ni rezultatov.', noAssetsFound: 'Ni najdenih sredstev.', noImagesFound: 'Ni najdenih slik.', - private: 'Private', images: 'Slike', mediaAssets: 'Multimedijska sredstva', search: 'Iskanje ...', @@ -241,12 +245,30 @@ const sl = { deleting: 'Brisanje ...', deleteSelected: 'Izbriši izbrano', chooseSelected: 'Dodaj izbrano', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, default: { goBackToSite: 'Vrni se na spletno mesto', }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: 'Napaka', details: 'Prišlo je do napake.', @@ -261,56 +283,26 @@ const sl = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: 'Odjava', }, toast: { onFailToLoadEntries: 'Ni naložilo vnosa: %{details}', - onFailToLoadDeployPreview: 'Ni naložilo predogleda: %{details}', onFailToPersist: 'Ni uspelo vztrajati: %{details}', + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: 'Ni uspelo izbrisati vnosa: %{details}', + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: 'Ni uspelo posodobiti stanja: %{details}', missingRequiredField: 'Ups, zgrešili ste obvezno polje. Pred shranjevanjem izpolnite.', entrySaved: 'Vnos shranjen', entryPublished: 'Vnos objavljen', - entryUnpublished: 'Objava vnosa preklicana', onFailToPublishEntry: 'Vnosa ni uspelo objaviti: %{details}', - onFailToUnpublishEntry: 'Preklicanje objave vnosa ni uspelo: %{details}', entryUpdated: 'Status vnosa posodobljen', - onDeleteUnpublishedChanges: 'Neobjavljene spremembe izbrisane', onFailToAuth: '%{details}', onLoggedOut: 'Bili ste odjavljeni, varnostno kopirate vse podatke in se ponovno prijavite', onBackendDown: 'Zaledna storitev doživlja izpad. Glejte %{details} za več informacij', }, }, - workflow: { - workflow: { - loading: 'Nalaganje uredniških vnosov', - workflowHeading: 'Uredniški potek dela', - newPost: 'Nov vnos', - description: - '%{smart_count} vnos čaka na pregled, %{readyCount} pripravljen za objavo. |||| %{smart_count} vnosov čaka na pregled, %{readyCount} pripravljenih za objavo.', - dateFormat: 'DD. MM. YYYY', - }, - workflowCard: { - lastChange: '%{date} by %{author}', - lastChangeNoAuthor: '%{date}', - lastChangeNoDate: 'by %{author}', - deleteChanges: 'Izbriši spremembe', - deleteNewEntry: 'Izbriši nov vnos', - publishChanges: 'Objavi spremembe', - publishNewEntry: 'Objavi nov vnos', - }, - workflowList: { - onDeleteEntry: 'Ali ste prepričani, da želite izbrisati ta vnos?', - onPublishingNotReadyEntry: - 'Objavijo se lahko samo elementi s statusom "pripravljen". Prosimo, povlecite kartico v stolpec "pripravljen", da omogočite objavo.', - onPublishEntry: 'Ste prepričani, da želite objaviti ta vnos?', - draftHeader: 'Osnutki', - inReviewHeader: 'V pregledu', - readyHeader: 'Pripravljen', - currentEntries: '%{smart_count} vnos |||| %{smart_count} vnosov', - }, - }, }; export default sl; diff --git a/packages/core/src/locales/sv/index.ts b/packages/core/src/locales/sv/index.ts index 771b2cf6..eb70ea8d 100644 --- a/packages/core/src/locales/sv/index.ts +++ b/packages/core/src/locales/sv/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const sv: LocalePhrasesRoot = { auth: { @@ -12,6 +12,9 @@ const sv: LocalePhrasesRoot = { errors: { email: 'Fyll i din epostadress.', password: 'Vänligen skriv ditt lösenord.', + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' identitySettings: 'Kan inte hämta inställningar för Identity. Vid användade av git-gateway backend, kontrollera att Identity service och Git Gateway är aktiverade.', }, @@ -25,6 +28,7 @@ const sv: LocalePhrasesRoot = { app: { errorHeader: 'Ett fel uppstod vid hämtning av CMS-konfigurationen', configErrors: 'Konfigurationsfel', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: 'Kontrollera din config.yml-fil.', loadingConfig: 'Hämtar konfiguration...', waitingBackend: 'Väntar på backend...', @@ -61,6 +65,10 @@ const sv: LocalePhrasesRoot = { other: 'Annat', negateLabel: 'Inte %{label}', }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, defaultFields: { author: { label: 'Författare', @@ -69,6 +77,7 @@ const sv: LocalePhrasesRoot = { label: 'Uppdaterad vid', }, }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -88,8 +97,10 @@ const sv: LocalePhrasesRoot = { rangeCountExact: '%{fieldLabel} måste ha exakt %{count} element.', rangeMin: '%{fieldLabel} måste ha åtminstone %{minCount} element.', rangeMax: '%{fieldLabel} måste ha %{maxCount} eller färre element.', - invalidPath: `'%{path}' är inte en giltig sökväg`, - pathExists: `Sökvägen '%{path}' existerar redan`, + invalidPath: "'%{path}' är inte en giltig sökväg", + pathExists: "Sökvägen '%{path}' existerar redan", + invalidColor: undefined, // English translation: 'Color '%{color}' is invalid.' + invalidHexCode: undefined, // English translation: 'Hex codes must start with a # sign.' }, i18n: { writingInLocale: 'Skriver i %{locale}', @@ -97,12 +108,16 @@ const sv: LocalePhrasesRoot = { }, editor: { onLeavePage: 'Är du säker på att du vill lämna sidan?', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'Delete this published entry?' onDeleteWithUnsavedChangesBody: 'Är du säker på att du vill radera det här publicerade inlägget, inklusive dina osparade ändringar från nuvarande session?', + onDeletePublishedEntryTitle: undefined, // English translation: 'Delete this published entry?' onDeletePublishedEntryBody: 'Är du säker på att du vill radera det här publicerade inlägget?', loadingEntry: 'Hämtar inlägg...', }, editorInterface: { + sideBySideI18n: undefined, // English translation: 'I18n Side by Side' + preview: undefined, // English translation: 'Preview' toggleI18n: 'Slå på/av i18n', togglePreview: 'Visa/Dölj förhandsvisning', toggleScrollSync: 'Synka scrollning', @@ -110,12 +125,14 @@ const sv: LocalePhrasesRoot = { editorToolbar: { publish: 'Publicera', published: 'Publicerad', - unpublish: 'Avpublicera', duplicate: 'Duplicera', publishAndCreateNew: 'Publicera och skapa ny', publishAndDuplicate: 'Publicera och duplicera', deleteEntry: 'Radera inlägg', publishNow: 'Publicera nu', + discardChanges: undefined, // English translation: 'Discard changes' + discardChangesTitle: undefined, // English translation: 'Discard changes' + discardChangesBody: undefined, // English translation: 'Are you sure you want to discard the unsaved changed?' }, editorWidgets: { markdown: { @@ -131,22 +148,40 @@ const sv: LocalePhrasesRoot = { addComponent: 'Lägg till komponent', richText: 'Rich Text', markdown: 'Markdown', + type: undefined, // English translation: 'Type...' }, image: { choose: 'Välj en bild', + chooseMultiple: undefined, // English translation: 'Choose images' chooseUrl: 'Infoga från URL', replaceUrl: 'Ersätt med URL', promptUrl: 'Ange en URL för bilden', chooseDifferent: 'Välj en annan bild', + addMore: undefined, // English translation: 'Add more images' remove: 'Ta bort bild', + removeAll: undefined, // English translation: 'Remove all images' }, file: { choose: 'Välj en fil', chooseUrl: 'Infoga från URL', + chooseMultiple: undefined, // English translation: 'Choose files' replaceUrl: 'Ersätt med URL', promptUrl: 'Ange en URL för filen', chooseDifferent: 'Välj en annan fil', + addMore: undefined, // English translation: 'Add more files' remove: 'Ta bort fil', + removeAll: undefined, // English translation: 'Remove all files' + }, + folder: { + choose: undefined, // English translation: 'Choose a folder' + chooseUrl: undefined, // English translation: 'Insert folder path' + chooseMultiple: undefined, // English translation: 'Choose folders' + replaceUrl: undefined, // English translation: 'Replace with path' + promptUrl: undefined, // English translation: 'Enter path of the folder' + chooseDifferent: undefined, // English translation: 'Choose different folder' + addMore: undefined, // English translation: 'Add more folders' + remove: undefined, // English translation: 'Remove folder' + removeAll: undefined, // English translation: 'Remove all folders' }, unknownControl: { noControl: "Inget reglage för widget '%{widget}'.", @@ -164,6 +199,18 @@ const sv: LocalePhrasesRoot = { }, datetime: { now: 'Nu', + invalidDateTitle: undefined, // English translation: 'Invalid date' + invalidDateBody: undefined, // English translation: 'The date you entered is invalid.' + }, + list: { + add: undefined, // English translation: 'Add %{item}' + addType: undefined, // English translation: 'Add %{item}' + noValue: undefined, // English translation: 'No value' + }, + keyvalue: { + key: undefined, // English translation: 'Key' + value: undefined, // English translation: 'Value' + uniqueKeys: undefined, // English translation: '%{keyLabel} must be unique' }, }, }, @@ -177,9 +224,13 @@ const sv: LocalePhrasesRoot = { copied: 'Kopierad', }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: 'Är du säker på att du vill radera valt mediaobjekt?', + fileTooLargeTitle: undefined, // English translation: 'File too large' fileTooLargeBody: 'Maximal filstorlek överskriden.\nKonfigurerad att inte tillåta filer större än %{size} kB.', + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: 'Hämtar...', @@ -195,12 +246,30 @@ const sv: LocalePhrasesRoot = { deleting: 'Raderar...', deleteSelected: 'Radera markerad', chooseSelected: 'Välj markerad', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, default: { goBackToSite: 'Tillbaka till sida', }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: 'Fel', details: 'Ett fel har uppstått - vänligen ', @@ -215,13 +284,15 @@ const sv: LocalePhrasesRoot = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: 'Logga ut', }, toast: { onFailToLoadEntries: 'Kunde inte hämta inlägg: %{details}', - onFailToLoadDeployPreview: 'Kunde inte ladda förhandsvisning: %{details}', onFailToPersist: 'Kunde inte spara inlägg: %{details}', + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: 'Kunde inte radera inlägg: %{details}', + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: 'Kunde inte uppdatera status: %{details}', missingRequiredField: 'Oops, du har missat ett obligatoriskt fält. Vänligen fyll i det innan du sparar.', diff --git a/packages/core/src/locales/th/index.ts b/packages/core/src/locales/th/index.ts index 5fffb92f..95d68697 100644 --- a/packages/core/src/locales/th/index.ts +++ b/packages/core/src/locales/th/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const th: LocalePhrasesRoot = { auth: { @@ -12,6 +12,9 @@ const th: LocalePhrasesRoot = { errors: { email: 'ตรวจสอบให้แน่ใจว่าได้ใส่อีเมลล์แล้ว', password: 'โปรดใส่รหัสผ่านของคุณ', + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' identitySettings: 'ไม่สามารถเข้าถึงการตั้งค่าส่วนตัว เมื่อใช้ git-gateway backend ตรวจสอบให้แน่ใจว่าได้เปิดใช้งานระบบยืนยันตัวตนและ Git Gateway.', }, @@ -25,6 +28,7 @@ const th: LocalePhrasesRoot = { app: { errorHeader: 'เกิดข้อผิดพลาดในการโหลดการตั้งค่า CMS', configErrors: 'คอนฟิกมีข้อผิดพลาด', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: 'กรุณาตรวจสอบไฟล์ config.yml ของคุณ', loadingConfig: 'กำลังโหลดการตั้งค่า...', waitingBackend: 'กำลังรอการตอบกลับจาก backend...', @@ -49,6 +53,7 @@ const th: LocalePhrasesRoot = { searchResults: 'ค้นหาผลลัพธ์สำหรับ "%{searchTerm}"', searchResultsInCollection: 'ค้นหาผลลัพธ์สำหรับ "%{searchTerm}" ใน %{collection}', filterBy: 'กรองตาม', + groupBy: undefined, // English translation: 'Group by' }, entries: { loadingEntries: 'กำลังโหลดเนิ้อหา...', @@ -56,6 +61,14 @@ const th: LocalePhrasesRoot = { longerLoading: 'อาจจะโหลดนานหลายนาที', noEntries: 'ไม่มีเนื้อหา', }, + groups: { + other: undefined, // English translation: 'Other' + negateLabel: undefined, // English translation: 'Not %{label}' + }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, defaultFields: { author: { label: 'ผู้เขียน', @@ -64,6 +77,7 @@ const th: LocalePhrasesRoot = { label: 'อัพเดตเมื่อ', }, }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -83,8 +97,10 @@ const th: LocalePhrasesRoot = { rangeCountExact: '%{fieldLabel} จะต้องมี %{count} รายการ', rangeMin: '%{fieldLabel} จะต้องมีไม่ต่ำกว่า %{minCount} รายการ', rangeMax: '%{fieldLabel} จะต้องมีไม่มากกว่า %{maxCount} รายการ', - invalidPath: `'%{path}' พาทไม่ถูกต้อง`, - pathExists: `พาท '%{path}' มีอยู่แล้ว`, + invalidPath: "'%{path}' พาทไม่ถูกต้อง", + pathExists: "พาท '%{path}' มีอยู่แล้ว", + invalidColor: undefined, // English translation: 'Color '%{color}' is invalid.' + invalidHexCode: undefined, // English translation: 'Hex codes must start with a # sign.' }, i18n: { writingInLocale: 'เขียนด้วยภาษา %{locale}', @@ -92,35 +108,80 @@ const th: LocalePhrasesRoot = { }, editor: { onLeavePage: 'คุณแน่ใจหรือว่าจะออกจากหน้านี้?', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'Delete this published entry?' onDeleteWithUnsavedChangesBody: 'คุณแน่ใจหรือว่าจะต้องการลบการเผยแพร่เนื้อหานี้ รวมถึงการเปลี่ยนแปลงที่ยังไม่ได้บันทึก?', + onDeletePublishedEntryTitle: undefined, // English translation: 'Delete this published entry?' onDeletePublishedEntryBody: 'คุณแน่ใจหรือว่าจะต้องการลบการเผยแพร่เนื้อหานี้?', loadingEntry: 'กำลังโหลดเนื้อหา...', }, + editorInterface: { + sideBySideI18n: undefined, // English translation: 'I18n Side by Side' + preview: undefined, // English translation: 'Preview' + toggleI18n: undefined, // English translation: 'Toggle i18n' + togglePreview: undefined, // English translation: 'Toggle preview' + toggleScrollSync: undefined, // English translation: 'Sync scrolling' + }, editorToolbar: { publish: 'เผยแพร่', published: 'เผยแพร่แล้ว', - unpublish: 'ไม่ได้เผยแพร่', duplicate: 'ทำซ้ำ', publishAndCreateNew: 'เผยแพร่ และ สร้างใหม่', publishAndDuplicate: 'เผยแพร่ และ ทำซ้ำ', deleteEntry: 'ลบเนื้อหา', publishNow: 'เผยแพร่ตอนนี้', + discardChanges: undefined, // English translation: 'Discard changes' + discardChangesTitle: undefined, // English translation: 'Discard changes' + discardChangesBody: undefined, // English translation: 'Are you sure you want to discard the unsaved changed?' }, editorWidgets: { markdown: { + bold: undefined, // English translation: 'Bold' + italic: undefined, // English translation: 'Italic' + code: undefined, // English translation: 'Code' + link: undefined, // English translation: 'Link' + linkPrompt: undefined, // English translation: 'Enter the URL of the link' + headings: undefined, // English translation: 'Headings' + quote: undefined, // English translation: 'Quote' + bulletedList: undefined, // English translation: 'Bulleted List' + numberedList: undefined, // English translation: 'Numbered List' + addComponent: undefined, // English translation: 'Add Component' richText: 'Rich Text', markdown: 'Markdown', + type: undefined, // English translation: 'Type...' }, image: { choose: 'เลือกรูปภาพ', + chooseMultiple: undefined, // English translation: 'Choose images' + chooseUrl: undefined, // English translation: 'Insert from URL' + replaceUrl: undefined, // English translation: 'Replace with URL' + promptUrl: undefined, // English translation: 'Enter the URL of the image' chooseDifferent: 'เลือกรูปภาพอื่น', + addMore: undefined, // English translation: 'Add more images' remove: 'เอารูปภาพออก', + removeAll: undefined, // English translation: 'Remove all images' }, file: { choose: 'เลือกไฟล์', + chooseUrl: undefined, // English translation: 'Insert from URL' + chooseMultiple: undefined, // English translation: 'Choose files' + replaceUrl: undefined, // English translation: 'Replace with URL' + promptUrl: undefined, // English translation: 'Enter the URL of the file' chooseDifferent: 'เลือกไฟล์อื่น', + addMore: undefined, // English translation: 'Add more files' remove: 'เอาไฟล์ออก', + removeAll: undefined, // English translation: 'Remove all files' + }, + folder: { + choose: undefined, // English translation: 'Choose a folder' + chooseUrl: undefined, // English translation: 'Insert folder path' + chooseMultiple: undefined, // English translation: 'Choose folders' + replaceUrl: undefined, // English translation: 'Replace with path' + promptUrl: undefined, // English translation: 'Enter path of the folder' + chooseDifferent: undefined, // English translation: 'Choose different folder' + addMore: undefined, // English translation: 'Add more folders' + remove: undefined, // English translation: 'Remove folder' + removeAll: undefined, // English translation: 'Remove all folders' }, unknownControl: { noControl: "ไม่มีการควบคุม widget '%{widget}'.", @@ -138,16 +199,37 @@ const th: LocalePhrasesRoot = { }, datetime: { now: 'เวลาตอนนี้', + invalidDateTitle: undefined, // English translation: 'Invalid date' + invalidDateBody: undefined, // English translation: 'The date you entered is invalid.' + }, + list: { + add: undefined, // English translation: 'Add %{item}' + addType: undefined, // English translation: 'Add %{item}' + noValue: undefined, // English translation: 'No value' + }, + keyvalue: { + key: undefined, // English translation: 'Key' + value: undefined, // English translation: 'Value' + uniqueKeys: undefined, // English translation: '%{keyLabel} must be unique' }, }, }, mediaLibrary: { mediaLibraryCard: { draft: 'ร่าง', + copy: undefined, // English translation: 'Copy' + copyUrl: undefined, // English translation: 'Copy URL' + copyPath: undefined, // English translation: 'Copy Path' + copyName: undefined, // English translation: 'Copy Name' + copied: undefined, // English translation: 'Copied' }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: 'คุณแน่ใจหรือว่าจะลบมีเดียที่ถูกเลือก?', + fileTooLargeTitle: undefined, // English translation: 'File too large' fileTooLargeBody: 'ไฟล์ใหญ่เกินไป\n ค่าที่ตั้งไว้ไม่ยอมรับไฟล์ที่ใหญ่กว่า %{size} kB.', + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: 'กำลังโหลด...', @@ -163,12 +245,30 @@ const th: LocalePhrasesRoot = { deleting: 'กำลังลบ...', deleteSelected: 'ลบข้อมูลที่เลือก', chooseSelected: 'เลือกข้อมูลที่ถูกเลือก', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, default: { goBackToSite: 'กลับไปยังเว็บไซต์', }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: 'มีข้อผิดพลาด', details: 'มีข้อผิดพลาดเกิดขึ้น', @@ -183,19 +283,20 @@ const th: LocalePhrasesRoot = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: 'ออกจากระบบ', }, toast: { onFailToLoadEntries: 'ล้มเหลวในการโหลดเนื้อหา: %{details}', - onFailToLoadDeployPreview: 'ล้มเหลวในการโหลดตัวอย่าง: %{details}', onFailToPersist: 'ล้มเหลวในการยืนยันเนื้อหา: %{details}', + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: 'ล้มเหลวในการลบเนื้อหา: %{details}', + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: 'ล้มเหลวในการอัปเดตสถานะ: %{details}', missingRequiredField: 'คุณไม่ได้ใส่ข้อมูลในช่องที่ต้องการ กรุณาใส่ข้อมูลก่อนบันทึก', entrySaved: 'เนื้อหาถูกบันทึก', entryPublished: 'เนื้อหาถูกเผยแพร่', onFailToPublishEntry: 'ล้มเหลวในการเผยแพร่เนื้อหา: %{details}', - onFailToUnpublishEntry: 'ล้มเหลวในการไม่เผยแพร่เนื้อหา: %{details}', entryUpdated: 'สถานะเนื้อหาถูกอัปเดต', onFailToAuth: '%{details}', onLoggedOut: 'คุณได้ออกจากระบบ โปรดสำรองข้อมูลแล้วเข้าสู่ระบบอีกครั้ง', diff --git a/packages/core/src/locales/tr/index.ts b/packages/core/src/locales/tr/index.ts index 26516552..b08dbd0f 100644 --- a/packages/core/src/locales/tr/index.ts +++ b/packages/core/src/locales/tr/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const tr: LocalePhrasesRoot = { auth: { @@ -12,6 +12,9 @@ const tr: LocalePhrasesRoot = { errors: { email: 'E-postanızı girdiğinizden emin olun.', password: 'Lütfen şifrenizi girin.', + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' identitySettings: "Identity ayarlarına erişilemiyor. Git-gateway sunucusunu kullanmak için Identity servisi ve Git Gateway'in etkin olduğundan emin olun.", }, @@ -25,6 +28,7 @@ const tr: LocalePhrasesRoot = { app: { errorHeader: 'CMS yapılandırması yüklenirken hata oluştu', configErrors: 'Yapılandırma Hataları', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: 'config.yml dosyanızı kontrol edin.', loadingConfig: 'Yapılandırma yükleniyor...', waitingBackend: 'Arka uç bekleniyor...', @@ -62,6 +66,10 @@ const tr: LocalePhrasesRoot = { other: 'Diğer', negateLabel: '%{label} hariç', }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, defaultFields: { author: { label: 'Yazar', @@ -70,6 +78,7 @@ const tr: LocalePhrasesRoot = { label: 'Güncellenme Tarihi', }, }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -89,8 +98,10 @@ const tr: LocalePhrasesRoot = { rangeCountExact: '%{fieldLabel}, %{count} öğe olmalıdır.', rangeMin: '%{fieldLabel}, en az %{minCount} öğe olmalıdır.', rangeMax: '%{fieldLabel}, %{maxCount} veya daha az öğe olmalıdır.', - invalidPath: `'%{path}' geçerli bir yol değil`, - pathExists: `'%{path}' yolu zaten var`, + invalidPath: "'%{path}' geçerli bir yol değil", + pathExists: "'%{path}' yolu zaten var", + invalidColor: undefined, // English translation: 'undefined' + invalidHexCode: undefined, // English translation: 'undefined' }, i18n: { writingInLocale: '%{locale} için yazılıyor', @@ -98,12 +109,16 @@ const tr: LocalePhrasesRoot = { }, editor: { onLeavePage: 'Bu sayfadan ayrılmak istediğinize emin misiniz?', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'undefined' onDeleteWithUnsavedChangesBody: 'Bu oturumda kaydedilmiş değişikliklerin yanı sıra geçerli oturumdaki kaydedilmemiş değişikliklerinizi silmek istediğinize emin misiniz?', + onDeletePublishedEntryTitle: undefined, // English translation: 'undefined' onDeletePublishedEntryBody: 'Bu yayınlanmış girdiyi silmek istediğinize emin misiniz?', loadingEntry: 'Girdiler yükleniyor...', }, editorInterface: { + sideBySideI18n: undefined, // English translation: 'undefined' + preview: undefined, // English translation: 'undefined' toggleI18n: 'i18n değiştir', togglePreview: 'Önizlemeyi değiştir', toggleScrollSync: 'Kaydırmayı senkronize et', @@ -111,12 +126,14 @@ const tr: LocalePhrasesRoot = { editorToolbar: { publish: 'Yayınla', published: 'Yayınlanan', - unpublish: 'Yayından Kaldır', duplicate: 'Kopyala', publishAndCreateNew: 'Yayınla ve yeni oluştur', publishAndDuplicate: 'Yayınla ve kopya oluştur', deleteEntry: 'Girdiyi sil', publishNow: 'Şimdi yayımla', + discardChanges: undefined, // English translation: 'undefined' + discardChangesTitle: undefined, // English translation: 'undefined' + discardChangesBody: undefined, // English translation: 'undefined' }, editorWidgets: { markdown: { @@ -132,22 +149,40 @@ const tr: LocalePhrasesRoot = { addComponent: 'Bileşen Ekle', richText: 'Zengin Metin', markdown: 'Markdown', + type: undefined, // English translation: 'undefined' }, image: { choose: 'Bir resim seçin', + chooseMultiple: undefined, // English translation: 'undefined' chooseUrl: "URL'den ekle", replaceUrl: 'URL ile değiştir', promptUrl: "Resmin URL'sini girin", chooseDifferent: 'Farklı bir resim seçin', + addMore: undefined, // English translation: 'undefined' remove: 'Resmi kaldır', + removeAll: undefined, // English translation: 'undefined' }, file: { choose: 'Bir dosya seçin', chooseUrl: "URL'den ekle", + chooseMultiple: undefined, // English translation: 'undefined' replaceUrl: 'URL ile değiştir', promptUrl: "Dosyanın URL'sini girin", chooseDifferent: 'Farklı bir dosya seçin', + addMore: undefined, // English translation: 'undefined' remove: 'Dosyayı kaldır', + removeAll: undefined, // English translation: 'undefined' + }, + folder: { + choose: undefined, // English translation: 'undefined' + chooseUrl: undefined, // English translation: 'undefined' + chooseMultiple: undefined, // English translation: 'undefined' + replaceUrl: undefined, // English translation: 'undefined' + promptUrl: undefined, // English translation: 'undefined' + chooseDifferent: undefined, // English translation: 'undefined' + addMore: undefined, // English translation: 'undefined' + remove: undefined, // English translation: 'undefined' + removeAll: undefined, // English translation: 'undefined' }, unknownControl: { noControl: "'%{widget}' bileşeni için kontrol yok.", @@ -165,10 +200,18 @@ const tr: LocalePhrasesRoot = { }, datetime: { now: 'Şimdi', + invalidDateTitle: undefined, // English translation: 'undefined' + invalidDateBody: undefined, // English translation: 'undefined' }, list: { add: '%{item} Ekle', addType: '%{item} Ekle', + noValue: undefined, // English translation: 'undefined' + }, + keyvalue: { + key: undefined, // English translation: 'undefined' + value: undefined, // English translation: 'undefined' + uniqueKeys: undefined, // English translation: 'undefined' }, }, }, @@ -182,9 +225,13 @@ const tr: LocalePhrasesRoot = { copied: 'Kopyalandı', }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: 'Seçilen medyayı silmek istediğinize emin misiniz?', + fileTooLargeTitle: undefined, // English translation: 'File too large' fileTooLargeBody: 'Dosya çok büyük.\n%{size} kilobaytdan daha büyük dosyaların yüklenmemesi için ayarlanmış.', + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: 'Yükleniyor...', @@ -200,12 +247,30 @@ const tr: LocalePhrasesRoot = { deleting: 'Siliniyor...', deleteSelected: 'Seçileni sil', chooseSelected: 'Seçileni kullan', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, default: { goBackToSite: 'Siteye geri git', }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: 'Hata', details: 'Bir hata oluştu - lütfen ', @@ -220,13 +285,15 @@ const tr: LocalePhrasesRoot = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: 'Çıkış Yap', }, toast: { onFailToLoadEntries: 'Girdi yüklenemedi: %{details}', - onFailToLoadDeployPreview: 'Önizleme yüklenemedi: %{details}', onFailToPersist: 'Girdi devam ettirilemedi: %{details}', + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: 'Girdi silinemedi: %{details}', + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: 'Durum güncellenemedi: %{details}', missingRequiredField: 'Gerekli bir alan eksik. Lütfen kaydetmeden önce tamamlayın.', entrySaved: 'Girdi kaydedildi', diff --git a/packages/core/src/locales/types.ts b/packages/core/src/locales/types.ts new file mode 100644 index 00000000..1abcffbb --- /dev/null +++ b/packages/core/src/locales/types.ts @@ -0,0 +1,11 @@ +export interface LocalePhrasesRoot { + [property: string]: LocalePhrases; +} +export type LocalePharsesSection = { [property: string]: LocalePhrases }; +export type LocalePhrases = string | undefined | LocalePharsesSection; + +export interface BaseLocalePhrasesRoot { + [property: string]: BaseLocalePhrases; +} +export type BaseLocalePharsesSection = { [property: string]: BaseLocalePhrases }; +export type BaseLocalePhrases = string | BaseLocalePharsesSection; diff --git a/packages/core/src/locales/uk/index.ts b/packages/core/src/locales/uk/index.ts index aafddcc1..18372f77 100644 --- a/packages/core/src/locales/uk/index.ts +++ b/packages/core/src/locales/uk/index.ts @@ -1,6 +1,23 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const uk: LocalePhrasesRoot = { + auth: { + login: undefined, // English translation: 'Login' + loggingIn: undefined, // English translation: 'Logging in...' + loginWithNetlifyIdentity: undefined, // English translation: 'Login with Netlify Identity' + loginWithBitbucket: undefined, // English translation: 'Login with Bitbucket' + loginWithGitHub: undefined, // English translation: 'Login with GitHub' + loginWithGitLab: undefined, // English translation: 'Login with GitLab' + loginWithGitea: undefined, // English translation: 'Login with Gitea' + errors: { + email: undefined, // English translation: 'Make sure to enter your email.' + password: undefined, // English translation: 'Please enter your password.' + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' + identitySettings: undefined, // English translation: 'Unable to access identity settings. When using git-gateway backend make sure to enable Identity service and Git Gateway.' + }, + }, app: { header: { content: 'Зміст', @@ -10,6 +27,7 @@ const uk: LocalePhrasesRoot = { app: { errorHeader: 'Помилка завантаження конфігурації', configErrors: 'Помилка конфігурації', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: 'Перевірте config.yml файл.', loadingConfig: 'Завантаження конфігурації...', waitingBackend: 'Очікування серверу...', @@ -21,17 +39,44 @@ const uk: LocalePhrasesRoot = { collection: { sidebar: { collections: 'Колекції', + allCollections: undefined, // English translation: 'All Collections' searchAll: 'Пошук', + searchIn: undefined, // English translation: 'Search in' }, collectionTop: { + sortBy: undefined, // English translation: 'Sort by' viewAs: 'Змінити вигляд', newButton: 'Створити %{collectionLabel}', + ascending: undefined, // English translation: 'Ascending' + descending: undefined, // English translation: 'Descending' + searchResults: undefined, // English translation: 'Search Results for "%{searchTerm}"' + searchResultsInCollection: undefined, // English translation: 'Search Results for "%{searchTerm}" in %{collection}' + filterBy: undefined, // English translation: 'Filter by' + groupBy: undefined, // English translation: 'Group by' }, entries: { loadingEntries: 'Завантаження записів', cachingEntries: 'Кешування записів', longerLoading: 'Це може зайняти декілька хвилинок', + noEntries: undefined, // English translation: 'No Entries' }, + groups: { + other: undefined, // English translation: 'Other' + negateLabel: undefined, // English translation: 'Not %{label}' + }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, + defaultFields: { + author: { + label: undefined, // English translation: 'Author' + }, + updatedOn: { + label: undefined, // English translation: 'Updated On' + }, + }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -47,38 +92,95 @@ const uk: LocalePhrasesRoot = { range: 'значення %{fieldLabel} повинне бути від %{minValue} до %{maxValue}.', min: 'значення %{fieldLabel} має бути від %{minValue}.', max: 'значення %{fieldLabel} має бути %{maxValue} та менше.', + rangeCount: undefined, // English translation: '%{fieldLabel} must have between %{minCount} and %{maxCount} item(s).' + rangeCountExact: undefined, // English translation: '%{fieldLabel} must have exactly %{count} item(s).' + rangeMin: undefined, // English translation: '%{fieldLabel} must have at least %{minCount} item(s).' + rangeMax: undefined, // English translation: '%{fieldLabel} must have %{maxCount} or less item(s).' + invalidPath: undefined, // English translation: ''%{path}' is not a valid path.' + pathExists: undefined, // English translation: 'Path '%{path}' already exists.' + invalidColor: undefined, // English translation: 'Color '%{color}' is invalid.' + invalidHexCode: undefined, // English translation: 'Hex codes must start with a # sign.' + }, + i18n: { + writingInLocale: undefined, // English translation: 'Writing in %{locale}' }, }, editor: { onLeavePage: 'Ви дійсно бажаєте залишити сторінку?', - onUpdatingWithUnsavedChangesBody: - 'Присутні незбережені зміни, будь ласка збережіть перед зміною статусу.', - onPublishingNotReadyBody: 'Будь ласка, встановіть статус "Готово" перед публікацією.', - onPublishingWithUnsavedChangesBody: - 'Присутні незбережені зміни, будь ласка збережіть їх перед публікацією.', - onPublishingBody: 'Ви дійсно бажаєте опублікувати запис?', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'Delete this published entry?' onDeleteWithUnsavedChangesBody: 'Ви дійсно бажаєте видалити опублікований запис, як і всі незбережені зміни під час поточної сесії?', + onDeletePublishedEntryTitle: undefined, // English translation: 'Delete this published entry?' onDeletePublishedEntryBody: 'Ви дійсно бажаєте видалити опублікований запис?', loadingEntry: 'Завантаження...', }, + editorInterface: { + sideBySideI18n: undefined, // English translation: 'I18n Side by Side' + preview: undefined, // English translation: 'Preview' + toggleI18n: undefined, // English translation: 'Toggle i18n' + togglePreview: undefined, // English translation: 'Toggle preview' + toggleScrollSync: undefined, // English translation: 'Sync scrolling' + }, editorToolbar: { publish: 'Опублікувати', published: 'Опубліковано', + duplicate: undefined, // English translation: 'Duplicate' publishAndCreateNew: 'Опублікувати і створити нову', + publishAndDuplicate: undefined, // English translation: 'Publish and duplicate' deleteEntry: 'Видалити', publishNow: 'Опублікувати', + discardChanges: undefined, // English translation: 'Discard changes' + discardChangesTitle: undefined, // English translation: 'Discard changes' + discardChangesBody: undefined, // English translation: 'Are you sure you want to discard the unsaved changed?' }, editorWidgets: { + markdown: { + bold: undefined, // English translation: 'Bold' + italic: undefined, // English translation: 'Italic' + code: undefined, // English translation: 'Code' + link: undefined, // English translation: 'Link' + linkPrompt: undefined, // English translation: 'Enter the URL of the link' + headings: undefined, // English translation: 'Headings' + quote: undefined, // English translation: 'Quote' + bulletedList: undefined, // English translation: 'Bulleted List' + numberedList: undefined, // English translation: 'Numbered List' + addComponent: undefined, // English translation: 'Add Component' + richText: undefined, // English translation: 'Rich Text' + markdown: undefined, // English translation: 'Markdown' + type: undefined, // English translation: 'Type...' + }, image: { choose: 'Виберіть зображення', + chooseMultiple: undefined, // English translation: 'Choose images' + chooseUrl: undefined, // English translation: 'Insert from URL' + replaceUrl: undefined, // English translation: 'Replace with URL' + promptUrl: undefined, // English translation: 'Enter the URL of the image' chooseDifferent: 'Виберіть інше зображення', + addMore: undefined, // English translation: 'Add more images' remove: 'Видалити зображення', + removeAll: undefined, // English translation: 'Remove all images' }, file: { choose: 'Виберіть файл', + chooseUrl: undefined, // English translation: 'Insert from URL' + chooseMultiple: undefined, // English translation: 'Choose files' + replaceUrl: undefined, // English translation: 'Replace with URL' + promptUrl: undefined, // English translation: 'Enter the URL of the file' chooseDifferent: 'Виберіть інший файл', + addMore: undefined, // English translation: 'Add more files' remove: 'Видалити файл', + removeAll: undefined, // English translation: 'Remove all files' + }, + folder: { + choose: undefined, // English translation: 'Choose a folder' + chooseUrl: undefined, // English translation: 'Insert folder path' + chooseMultiple: undefined, // English translation: 'Choose folders' + replaceUrl: undefined, // English translation: 'Replace with path' + promptUrl: undefined, // English translation: 'Enter path of the folder' + chooseDifferent: undefined, // English translation: 'Choose different folder' + addMore: undefined, // English translation: 'Add more folders' + remove: undefined, // English translation: 'Remove folder' + removeAll: undefined, // English translation: 'Remove all folders' }, unknownControl: { noControl: "Відсутній модуль для '%{widget}'.", @@ -94,14 +196,39 @@ const uk: LocalePhrasesRoot = { headingFive: 'Heading 5', headingSix: 'Heading 6', }, + datetime: { + now: undefined, // English translation: 'Now' + invalidDateTitle: undefined, // English translation: 'Invalid date' + invalidDateBody: undefined, // English translation: 'The date you entered is invalid.' + }, + list: { + add: undefined, // English translation: 'Add %{item}' + addType: undefined, // English translation: 'Add %{item}' + noValue: undefined, // English translation: 'No value' + }, + keyvalue: { + key: undefined, // English translation: 'Key' + value: undefined, // English translation: 'Value' + uniqueKeys: undefined, // English translation: '%{keyLabel} must be unique' + }, }, }, mediaLibrary: { mediaLibraryCard: { draft: 'В роботі', + copy: undefined, // English translation: 'Copy' + copyUrl: undefined, // English translation: 'Copy URL' + copyPath: undefined, // English translation: 'Copy Path' + copyName: undefined, // English translation: 'Copy Name' + copied: undefined, // English translation: 'Copied' }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: 'Ви дійсно бажаєте видалити обрані матеріали?', + fileTooLargeTitle: undefined, // English translation: 'File too large' + fileTooLargeBody: undefined, // English translation: 'File too large.\nConfigured to not allow files greater than %{size} kB.' + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: 'Завантаження...', @@ -113,17 +240,40 @@ const uk: LocalePhrasesRoot = { search: 'Пошук...', uploading: 'Завантаження...', upload: 'Завантажити', + download: undefined, // English translation: 'Download' deleting: 'Видалення...', deleteSelected: 'Видалити обране', chooseSelected: 'Додати обране', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, + default: { + goBackToSite: undefined, // English translation: 'Go back to site' + }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: 'Помилка', details: 'Відбулась помилка - будь ласка ', reportIt: 'надішліть нам деталі.', detailsHeading: 'Деталі', + privacyWarning: undefined, // English translation: 'Opening an issue pre-populates it with the error message and debugging data.\nPlease verify the information is correct and remove sensitive data if exists.' recoveredEntry: { heading: 'Відновлено документ', warning: 'Будь ласка, збережіть це десь перед тим як піти!', @@ -131,13 +281,15 @@ const uk: LocalePhrasesRoot = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: 'Вихід', }, toast: { onFailToLoadEntries: 'Помилка завантаження: %{details}', - onFailToLoadDeployPreview: 'Помилка завантаження перегляду: %{details}', onFailToPersist: 'Помилка перезапису: %{details}', + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: 'Помилка видалення: %{details}', + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: 'Помилка оновлення статусу: %{details}', missingRequiredField: "Йой, здається пропущено обов'язкове поле. Будь ласка, заповніть перед збереженням.", @@ -146,6 +298,8 @@ const uk: LocalePhrasesRoot = { onFailToPublishEntry: 'Помилка публікації: %{details}', entryUpdated: 'Статус оновлено', onFailToAuth: '%{details}', + onLoggedOut: undefined, // English translation: 'You have been logged out, please back up any data and login again' + onBackendDown: undefined, // English translation: 'The backend service is experiencing an outage. See %{details} for more information' }, }, }; diff --git a/packages/core/src/locales/vi/index.ts b/packages/core/src/locales/vi/index.ts index 2857dca7..af97d2b4 100644 --- a/packages/core/src/locales/vi/index.ts +++ b/packages/core/src/locales/vi/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const vi: LocalePhrasesRoot = { auth: { @@ -12,6 +12,9 @@ const vi: LocalePhrasesRoot = { errors: { email: 'Hãy nhập email của bạn.', password: 'Hãy nhập mật khẩu của bạn.', + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' identitySettings: 'Không thể truy cập thiêt lập danh tính. Hãy chắc chắn rằng bạn đã bật dịch vụ Identity và Git Gateway khi sử dụng git-gateway.', }, @@ -25,6 +28,7 @@ const vi: LocalePhrasesRoot = { app: { errorHeader: 'Xảy ra lỗi khi tải cấu hình CMS', configErrors: 'Lỗi cấu hình', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: 'Kiểm tra lại file config.yml của bạn.', loadingConfig: 'Đang tải cấu hình...', waitingBackend: 'Đang chờ backend...', @@ -49,6 +53,7 @@ const vi: LocalePhrasesRoot = { searchResults: 'Kết quả tìm kiếm cho "%{searchTerm}"', searchResultsInCollection: 'Kết quả tìm kiếm cho "%{searchTerm}" trong %{collection}', filterBy: 'Lọc theo', + groupBy: undefined, // English translation: 'Group by' }, entries: { loadingEntries: 'Đang tải...', @@ -56,6 +61,14 @@ const vi: LocalePhrasesRoot = { longerLoading: 'Sẽ mất vài phút', noEntries: 'Không có mục nào', }, + groups: { + other: undefined, // English translation: 'Other' + negateLabel: undefined, // English translation: 'Not %{label}' + }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, defaultFields: { author: { label: 'Tác giả', @@ -64,6 +77,7 @@ const vi: LocalePhrasesRoot = { label: 'Ngày cập nhật', }, }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -83,41 +97,91 @@ const vi: LocalePhrasesRoot = { rangeCountExact: '%{fieldLabel} phải có %{count} mục.', rangeMin: '%{fieldLabel} phải có ít nhất %{minCount} mục.', rangeMax: '%{fieldLabel} phải có tối đa %{maxCount} mục hoặc ít hơn.', - invalidPath: `Đường dẫn '%{path}' không hợp lệ`, - pathExists: `Đường dẫn '%{path}' đã tồn tại`, + invalidPath: "Đường dẫn '%{path}' không hợp lệ", + pathExists: "Đường dẫn '%{path}' đã tồn tại", + invalidColor: undefined, // English translation: 'Color '%{color}' is invalid.' + invalidHexCode: undefined, // English translation: 'Hex codes must start with a # sign.' + }, + i18n: { + writingInLocale: undefined, // English translation: 'Writing in %{locale}' }, }, editor: { onLeavePage: 'Bạn có chắc rằng bạn muốn rời khỏi trang này?', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'Delete this published entry?' onDeleteWithUnsavedChangesBody: 'Bạn có chắc rằng bạn muốn xoá mục đã được công bố này, cũng như là những thay đổi chưa lưu của bạn trong phiên làm việc này?', + onDeletePublishedEntryTitle: undefined, // English translation: 'Delete this published entry?' onDeletePublishedEntryBody: 'Bạn có chắc rằng bạn muốn xoá mục đã được công bố này?', loadingEntry: 'Đang tải...', }, + editorInterface: { + sideBySideI18n: undefined, // English translation: 'I18n Side by Side' + preview: undefined, // English translation: 'Preview' + toggleI18n: undefined, // English translation: 'Toggle i18n' + togglePreview: undefined, // English translation: 'Toggle preview' + toggleScrollSync: undefined, // English translation: 'Sync scrolling' + }, editorToolbar: { publish: 'Công bố', published: 'Đã công bố', - unpublish: 'Ngừng công bố', duplicate: 'Sao chép', publishAndCreateNew: 'Công bố và tạo mới', publishAndDuplicate: 'Công bố và sao chép', deleteEntry: 'Xoá mục này', publishNow: 'Công bố ngay', + discardChanges: undefined, // English translation: 'Discard changes' + discardChangesTitle: undefined, // English translation: 'Discard changes' + discardChangesBody: undefined, // English translation: 'Are you sure you want to discard the unsaved changed?' }, editorWidgets: { markdown: { + bold: undefined, // English translation: 'Bold' + italic: undefined, // English translation: 'Italic' + code: undefined, // English translation: 'Code' + link: undefined, // English translation: 'Link' + linkPrompt: undefined, // English translation: 'Enter the URL of the link' + headings: undefined, // English translation: 'Headings' + quote: undefined, // English translation: 'Quote' + bulletedList: undefined, // English translation: 'Bulleted List' + numberedList: undefined, // English translation: 'Numbered List' + addComponent: undefined, // English translation: 'Add Component' richText: 'Văn bản định dạng', markdown: 'Markdown', + type: undefined, // English translation: 'Type...' }, image: { choose: 'Chọn một hình', + chooseMultiple: undefined, // English translation: 'Choose images' + chooseUrl: undefined, // English translation: 'Insert from URL' + replaceUrl: undefined, // English translation: 'Replace with URL' + promptUrl: undefined, // English translation: 'Enter the URL of the image' chooseDifferent: 'Chọn hình khác', + addMore: undefined, // English translation: 'Add more images' remove: 'Gỡ bỏ hình', + removeAll: undefined, // English translation: 'Remove all images' }, file: { choose: 'Chọn một tập tin', + chooseUrl: undefined, // English translation: 'Insert from URL' + chooseMultiple: undefined, // English translation: 'Choose files' + replaceUrl: undefined, // English translation: 'Replace with URL' + promptUrl: undefined, // English translation: 'Enter the URL of the file' chooseDifferent: 'Chọn tập tin khác', + addMore: undefined, // English translation: 'Add more files' remove: 'Gỡ bỏ tập tin', + removeAll: undefined, // English translation: 'Remove all files' + }, + folder: { + choose: undefined, // English translation: 'Choose a folder' + chooseUrl: undefined, // English translation: 'Insert folder path' + chooseMultiple: undefined, // English translation: 'Choose folders' + replaceUrl: undefined, // English translation: 'Replace with path' + promptUrl: undefined, // English translation: 'Enter path of the folder' + chooseDifferent: undefined, // English translation: 'Choose different folder' + addMore: undefined, // English translation: 'Add more folders' + remove: undefined, // English translation: 'Remove folder' + removeAll: undefined, // English translation: 'Remove all folders' }, unknownControl: { noControl: "Không tìm thấy control cho widget '%{widget}'.", @@ -135,17 +199,38 @@ const vi: LocalePhrasesRoot = { }, datetime: { now: 'Ngay lúc này', + invalidDateTitle: undefined, // English translation: 'Invalid date' + invalidDateBody: undefined, // English translation: 'The date you entered is invalid.' + }, + list: { + add: undefined, // English translation: 'Add %{item}' + addType: undefined, // English translation: 'Add %{item}' + noValue: undefined, // English translation: 'No value' + }, + keyvalue: { + key: undefined, // English translation: 'Key' + value: undefined, // English translation: 'Value' + uniqueKeys: undefined, // English translation: '%{keyLabel} must be unique' }, }, }, mediaLibrary: { mediaLibraryCard: { draft: 'Bản nháp', + copy: undefined, // English translation: 'Copy' + copyUrl: undefined, // English translation: 'Copy URL' + copyPath: undefined, // English translation: 'Copy Path' + copyName: undefined, // English translation: 'Copy Name' + copied: undefined, // English translation: 'Copied' }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: 'Bạn có chắc rằng bạn muốn xoá tập tin này?', + fileTooLargeTitle: undefined, // English translation: 'File too large' fileTooLargeBody: 'Tập tin quá lớn.\nCấu hình không cho phép những tập tin lớn hơn %{size} kB.', + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: 'Đang tải...', @@ -161,12 +246,30 @@ const vi: LocalePhrasesRoot = { deleting: 'Đang xoá...', deleteSelected: 'Xoá những cái đã chọn', chooseSelected: 'Lấy những cái đã chọn', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, default: { goBackToSite: 'Quay về trang web', }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: 'Lỗi', details: 'Đã xảy ra lỗi - xin hãy ', @@ -181,19 +284,20 @@ const vi: LocalePhrasesRoot = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: 'Đăng xuất', }, toast: { onFailToLoadEntries: 'Không thể tải mục: %{details}', - onFailToLoadDeployPreview: 'Không thể tải xem trước: %{details}', onFailToPersist: 'Không thể giữ lại mục: %{details}', + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: 'Không thể xoá mục: %{details}', + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: 'Không thể cập nhật trạng thái: %{details}', missingRequiredField: 'Bạn còn thiếu vài thông tin bắt buộc. Hãy hoàn thành trước khi lưu.', entrySaved: 'Mục đã được lưu', entryPublished: 'Mục đã được công bố', onFailToPublishEntry: 'Không thể công bố: %{details}', - onFailToUnpublishEntry: 'Không thể ngừng công bố mục: %{details}', entryUpdated: 'Trạng thái của mục đã được cập nhật', onFailToAuth: '%{details}', onLoggedOut: 'Bạn đã đăng xuất, hãy sao lưu dữ liệu và đăng nhập lại', diff --git a/packages/core/src/locales/zh_Hans/index.ts b/packages/core/src/locales/zh_Hans/index.ts index d3a68451..d205431c 100644 --- a/packages/core/src/locales/zh_Hans/index.ts +++ b/packages/core/src/locales/zh_Hans/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const zh_Hans: LocalePhrasesRoot = { auth: { @@ -12,6 +12,9 @@ const zh_Hans: LocalePhrasesRoot = { errors: { email: '请输入电子邮箱', password: '请输入密码', + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' identitySettings: '无法连接账户认证系统(如果正在使用 git-gateway 作为 backend,请确保已经开启 Netlify Identity 服务以及 Git Gateway)', }, @@ -25,6 +28,7 @@ const zh_Hans: LocalePhrasesRoot = { app: { errorHeader: '加载 CMS 配置时发生错误', configErrors: '配置错误', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: '请检查 config.yml 文件是否配置正确', loadingConfig: '正在加载配置...', waitingBackend: '等待 backend 数据...', @@ -61,6 +65,10 @@ const zh_Hans: LocalePhrasesRoot = { other: '其他', negateLabel: '非%{label}', }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, defaultFields: { author: { label: '作者', @@ -69,6 +77,7 @@ const zh_Hans: LocalePhrasesRoot = { label: '更新于', }, }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -86,10 +95,12 @@ const zh_Hans: LocalePhrasesRoot = { max: '“%{fieldLabel}”必须小于等于 %{maxValue}', rangeCount: '“%{fieldLabel}”必须包含 %{minCount} 到 %{maxCount} 个项目', rangeCountExact: '“%{fieldLabel}”必须且只能包含 %{count} 个项目', - minCount: '“%{fieldLabel}”必须为至少 %{minCount} 个项目', - maxCount: '“%{fieldLabel}”必须为小于等于 %{maxCount} 个项目', - invalidPath: `“%{path}”为无效路径`, - pathExists: `路径“%{path}”已经存在`, + rangeMin: undefined, // English translation: '%{fieldLabel} must have at least %{minCount} item(s).' + rangeMax: undefined, // English translation: '%{fieldLabel} must have %{maxCount} or less item(s).' + invalidPath: '“%{path}”为无效路径', + pathExists: '路径“%{path}”已经存在', + invalidColor: undefined, // English translation: 'Color '%{color}' is invalid.' + invalidHexCode: undefined, // English translation: 'Hex codes must start with a # sign.' }, i18n: { writingInLocale: '正在使用%{locale}撰写', @@ -97,11 +108,15 @@ const zh_Hans: LocalePhrasesRoot = { }, editor: { onLeavePage: '你确定要离开此页面吗?', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'Delete this published entry?' onDeleteWithUnsavedChangesBody: '你确定要删除这个已经发布的内容,以及当前尚未保存的修改吗?', + onDeletePublishedEntryTitle: undefined, // English translation: 'Delete this published entry?' onDeletePublishedEntryBody: '你确定要删除这个已经发布的内容吗?', loadingEntry: '正在加载内容...', }, editorInterface: { + sideBySideI18n: undefined, // English translation: 'I18n Side by Side' + preview: undefined, // English translation: 'Preview' toggleI18n: '打开/关闭国际化', togglePreview: '打开/关闭预览', toggleScrollSync: '同步滚动', @@ -109,12 +124,14 @@ const zh_Hans: LocalePhrasesRoot = { editorToolbar: { publish: '发布', published: '已发布', - unpublish: '撤销发布', duplicate: '复制', publishAndCreateNew: '发布,然后新建内容', publishAndDuplicate: '发布,然后复制内容', deleteEntry: '删除内容', publishNow: '立即发布', + discardChanges: undefined, // English translation: 'Discard changes' + discardChangesTitle: undefined, // English translation: 'Discard changes' + discardChangesBody: undefined, // English translation: 'Are you sure you want to discard the unsaved changed?' }, editorWidgets: { markdown: { @@ -130,22 +147,40 @@ const zh_Hans: LocalePhrasesRoot = { addComponent: '添加组件', richText: '富文本', markdown: 'Markdown', + type: undefined, // English translation: 'Type...' }, image: { choose: '选择图片', + chooseMultiple: undefined, // English translation: 'Choose images' chooseUrl: '从 URL 插入', replaceUrl: '用 URL 替代', promptUrl: '输入图片的 URL', chooseDifferent: '选择其他图片', + addMore: undefined, // English translation: 'Add more images' remove: '移除图片', + removeAll: undefined, // English translation: 'Remove all images' }, file: { choose: '选择文件', chooseUrl: '从 URL 插入', + chooseMultiple: undefined, // English translation: 'Choose files' replaceUrl: '用 URL 替代', promptUrl: '输入文件的 URL', chooseDifferent: '选择其他文件', + addMore: undefined, // English translation: 'Add more files' remove: '移除文件', + removeAll: undefined, // English translation: 'Remove all files' + }, + folder: { + choose: undefined, // English translation: 'Choose a folder' + chooseUrl: undefined, // English translation: 'Insert folder path' + chooseMultiple: undefined, // English translation: 'Choose folders' + replaceUrl: undefined, // English translation: 'Replace with path' + promptUrl: undefined, // English translation: 'Enter path of the folder' + chooseDifferent: undefined, // English translation: 'Choose different folder' + addMore: undefined, // English translation: 'Add more folders' + remove: undefined, // English translation: 'Remove folder' + removeAll: undefined, // English translation: 'Remove all folders' }, unknownControl: { noControl: "'%{widget}'的控件不存在", @@ -163,6 +198,18 @@ const zh_Hans: LocalePhrasesRoot = { }, datetime: { now: '现在', + invalidDateTitle: undefined, // English translation: 'Invalid date' + invalidDateBody: undefined, // English translation: 'The date you entered is invalid.' + }, + list: { + add: undefined, // English translation: 'Add %{item}' + addType: undefined, // English translation: 'Add %{item}' + noValue: undefined, // English translation: 'No value' + }, + keyvalue: { + key: undefined, // English translation: 'Key' + value: undefined, // English translation: 'Value' + uniqueKeys: undefined, // English translation: '%{keyLabel} must be unique' }, }, }, @@ -176,8 +223,12 @@ const zh_Hans: LocalePhrasesRoot = { copied: '已复制', }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: '你确定要删除此媒体项目吗?', + fileTooLargeTitle: undefined, // English translation: 'File too large' fileTooLargeBody: '文件体积过大\n目前的配置中不允许文件体积超过 %{size} kB', + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: '正在加载...', @@ -193,12 +244,30 @@ const zh_Hans: LocalePhrasesRoot = { deleting: '正在下载...', deleteSelected: '删除已选中项目', chooseSelected: '选用已选中项目', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, default: { goBackToSite: '返回主页', }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: '错误', details: '程序发生了一个错误,请', @@ -213,19 +282,20 @@ const zh_Hans: LocalePhrasesRoot = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: '注销', }, toast: { onFailToLoadEntries: '加载内容失败: %{details}', - onFailToLoadDeployPreview: '加载预览失败: %{details}', onFailToPersist: '保存内容失败: %{details}', + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: '删除内容失败: %{details}', + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: '更新状态失败: %{details}', missingRequiredField: '你漏掉了一个必填项,请在保存之前将它填写好', entrySaved: '内容已保存', entryPublished: '内容已发布', onFailToPublishEntry: '发布失败: %{details}', - onFailToUnpublishEntry: '撤销发布失败: %{details}', entryUpdated: '内容状态已更新', onFailToAuth: '%{details}', onLoggedOut: '你已注销,请先保存好数据然后再次登录', diff --git a/packages/core/src/locales/zh_Hant/index.ts b/packages/core/src/locales/zh_Hant/index.ts index be577fe8..d99f94a6 100644 --- a/packages/core/src/locales/zh_Hant/index.ts +++ b/packages/core/src/locales/zh_Hant/index.ts @@ -1,4 +1,4 @@ -import type { LocalePhrasesRoot } from '@staticcms/core/interface'; +import type { LocalePhrasesRoot } from '../types'; const zh_Hant: LocalePhrasesRoot = { auth: { @@ -12,6 +12,9 @@ const zh_Hant: LocalePhrasesRoot = { errors: { email: '請確認你已經輸入你的電子郵件。', password: '請輸入你的密碼。', + authTitle: undefined, // English translation: 'Error logging in' + authBody: '%{details}', + netlifyIdentityNotFound: undefined, // English translation: 'Netlify Identity plugin not found' identitySettings: '無法連接認證系統!當使用 git-gateway 作為後端資料庫時,請確認您已開啟認證服務及 Git Gateway。', }, @@ -25,6 +28,7 @@ const zh_Hant: LocalePhrasesRoot = { app: { errorHeader: '載入 CMS 設定時發生錯誤', configErrors: '設定錯誤', + configNotFound: undefined, // English translation: 'Config not found' checkConfigYml: '請確認你的 config.yml 設定檔的內容是否正確', loadingConfig: '正在載入設定...', waitingBackend: '正在等待後端資料連接...', @@ -49,6 +53,7 @@ const zh_Hant: LocalePhrasesRoot = { searchResults: '搜尋 "%{searchTerm}" 的結果', searchResultsInCollection: '在 %{collection} 中搜尋 %{searchTerm}" 的結果', filterBy: '篩選方式', + groupBy: undefined, // English translation: 'Group by' }, entries: { loadingEntries: '載入內容', @@ -56,6 +61,14 @@ const zh_Hant: LocalePhrasesRoot = { longerLoading: '這可能需要幾分鐘的時間', noEntries: '沒有內容', }, + groups: { + other: undefined, // English translation: 'Other' + negateLabel: undefined, // English translation: 'Not %{label}' + }, + table: { + summary: undefined, // English translation: 'Summary' + collection: undefined, // English translation: 'Collection' + }, defaultFields: { author: { label: '作者', @@ -64,6 +77,7 @@ const zh_Hant: LocalePhrasesRoot = { label: '更新於', }, }, + notFound: undefined, // English translation: 'Collection not found' }, editor: { editorControl: { @@ -83,8 +97,10 @@ const zh_Hant: LocalePhrasesRoot = { rangeCountExact: '%{fieldLabel} 必須正好有 %{count} 個項目。', rangeMin: '%{fieldLabel} 必須至少有 %{minCount} 個項目。', rangeMax: '%{fieldLabel} 最多只能有 %{maxCount} 個項目。', - invalidPath: `'%{path}' 不是有效的路徑`, - pathExists: `路徑 '%{path}' 已經存在`, + invalidPath: "'%{path}' 不是有效的路徑", + pathExists: "路徑 '%{path}' 已經存在", + invalidColor: undefined, // English translation: 'Color '%{color}' is invalid.' + invalidHexCode: undefined, // English translation: 'Hex codes must start with a # sign.' }, i18n: { writingInLocale: '以 %{locale} 書寫', @@ -92,19 +108,30 @@ const zh_Hant: LocalePhrasesRoot = { }, editor: { onLeavePage: '您確定要離開這頁嗎?', + onDeleteWithUnsavedChangesTitle: undefined, // English translation: 'Delete this published entry?' onDeleteWithUnsavedChangesBody: '你確定要刪除這篇已發布的內容以及你尚未儲存的變更?', + onDeletePublishedEntryTitle: undefined, // English translation: 'Delete this published entry?' onDeletePublishedEntryBody: '你確定要刪除這篇已發布的內容?', loadingEntry: '載入內容中...', }, + editorInterface: { + sideBySideI18n: undefined, // English translation: 'I18n Side by Side' + preview: undefined, // English translation: 'Preview' + toggleI18n: undefined, // English translation: 'Toggle i18n' + togglePreview: undefined, // English translation: 'Toggle preview' + toggleScrollSync: undefined, // English translation: 'Sync scrolling' + }, editorToolbar: { publish: '發布', published: '已發布', - unpublish: '取消發布', duplicate: '建立新內容', publishAndCreateNew: '發布並建立內容', publishAndDuplicate: '發布並複製內容', deleteEntry: '刪除內容', publishNow: '立即發布', + discardChanges: undefined, // English translation: 'Discard changes' + discardChangesTitle: undefined, // English translation: 'Discard changes' + discardChangesBody: undefined, // English translation: 'Are you sure you want to discard the unsaved changed?' }, editorWidgets: { markdown: { @@ -120,16 +147,40 @@ const zh_Hant: LocalePhrasesRoot = { addComponent: '加入元件', richText: 'Rich Text', markdown: 'Markdown', + type: undefined, // English translation: 'Type...' }, image: { choose: '選擇一張圖片', + chooseMultiple: undefined, // English translation: 'Choose images' + chooseUrl: undefined, // English translation: 'Insert from URL' + replaceUrl: undefined, // English translation: 'Replace with URL' + promptUrl: undefined, // English translation: 'Enter the URL of the image' chooseDifferent: '選擇其他圖片', + addMore: undefined, // English translation: 'Add more images' remove: '刪除圖片', + removeAll: undefined, // English translation: 'Remove all images' }, file: { choose: '選擇一個檔案', + chooseUrl: undefined, // English translation: 'Insert from URL' + chooseMultiple: undefined, // English translation: 'Choose files' + replaceUrl: undefined, // English translation: 'Replace with URL' + promptUrl: undefined, // English translation: 'Enter the URL of the file' chooseDifferent: '選擇其他檔案', + addMore: undefined, // English translation: 'Add more files' remove: '刪除檔案', + removeAll: undefined, // English translation: 'Remove all files' + }, + folder: { + choose: undefined, // English translation: 'Choose a folder' + chooseUrl: undefined, // English translation: 'Insert folder path' + chooseMultiple: undefined, // English translation: 'Choose folders' + replaceUrl: undefined, // English translation: 'Replace with path' + promptUrl: undefined, // English translation: 'Enter path of the folder' + chooseDifferent: undefined, // English translation: 'Choose different folder' + addMore: undefined, // English translation: 'Add more folders' + remove: undefined, // English translation: 'Remove folder' + removeAll: undefined, // English translation: 'Remove all folders' }, unknownControl: { noControl: "無法控制元件: '%{widget}'.", @@ -147,16 +198,37 @@ const zh_Hant: LocalePhrasesRoot = { }, datetime: { now: '現在', + invalidDateTitle: undefined, // English translation: 'Invalid date' + invalidDateBody: undefined, // English translation: 'The date you entered is invalid.' + }, + list: { + add: undefined, // English translation: 'Add %{item}' + addType: undefined, // English translation: 'Add %{item}' + noValue: undefined, // English translation: 'No value' + }, + keyvalue: { + key: undefined, // English translation: 'Key' + value: undefined, // English translation: 'Value' + uniqueKeys: undefined, // English translation: '%{keyLabel} must be unique' }, }, }, mediaLibrary: { mediaLibraryCard: { draft: '草稿', + copy: undefined, // English translation: 'Copy' + copyUrl: undefined, // English translation: 'Copy URL' + copyPath: undefined, // English translation: 'Copy Path' + copyName: undefined, // English translation: 'Copy Name' + copied: undefined, // English translation: 'Copied' }, mediaLibrary: { + onDeleteTitle: undefined, // English translation: 'Delete selected media?' onDeleteBody: '你確定要刪除已選擇的媒體嗎?', + fileTooLargeTitle: undefined, // English translation: 'File too large' fileTooLargeBody: '檔案太大。\n已設定不允許大於 %{size} kB 的檔案。', + alreadyExistsTitle: undefined, // English translation: 'File already exists' + alreadyExistsBody: undefined, // English translation: '%{filename} already exists. Do you want to replace it?' }, mediaLibraryModal: { loading: '載入中...', @@ -172,12 +244,30 @@ const zh_Hant: LocalePhrasesRoot = { deleting: '刪除中...', deleteSelected: '刪除已選擇的項目', chooseSelected: '選擇已選擇的項目', + dropImages: undefined, // English translation: 'Drop images to upload' + dropFiles: undefined, // English translation: 'Drop files to upload' + }, + folderSupport: { + newFolder: undefined, // English translation: 'New folder' + createNewFolder: undefined, // English translation: 'Create new folder' + enterFolderName: undefined, // English translation: 'Enter folder name...' + home: undefined, // English translation: 'Home' + up: undefined, // English translation: 'Up' + upToFolder: undefined, // English translation: 'Up to %{folder}' }, }, ui: { + common: { + yes: undefined, // English translation: 'Yes' + no: undefined, // English translation: 'No' + okay: undefined, // English translation: 'OK' + }, default: { goBackToSite: '回到網站', }, + localBackup: { + hasLocalBackup: undefined, // English translation: 'Has local backup' + }, errorBoundary: { title: '錯誤', details: '發生錯誤!請 ', @@ -192,13 +282,15 @@ const zh_Hant: LocalePhrasesRoot = { }, }, settingsDropdown: { + darkMode: undefined, // English translation: 'Dark Mode' logOut: '登出', }, toast: { onFailToLoadEntries: '無法載入內容: %{details}', - onFailToLoadDeployPreview: '無法預覽內容: %{details}', onFailToPersist: '無法暫存內容: %{details}', + onFailToPersistMedia: undefined, // English translation: 'Failed to persist media: %{details}' onFailToDelete: '無法刪除內容: %{details}', + onFailToDeleteMedia: undefined, // English translation: 'Failed to delete media: %{details}' onFailToUpdateStatus: '無法更新狀態: %{details}', missingRequiredField: '糟了!你漏填了一個必須填入的欄位,在儲存前請先填完所有內容', entrySaved: '已儲存內容', diff --git a/packages/tools/.gitignore b/packages/tools/.gitignore new file mode 100644 index 00000000..2f87433c --- /dev/null +++ b/packages/tools/.gitignore @@ -0,0 +1,56 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts + +dist/ +bin/ +.tern-project +.vscode/ +.idea/ +manifest.yml +.imdone/ +data/contributors.json +cypress/videos +cypress/screenshots +__diff_output__ +.cache +*.log +.env +.temp/ +*.tgz +public/sw.js +public/workbox*.js + diff --git a/packages/tools/.prettierrc b/packages/tools/.prettierrc new file mode 100644 index 00000000..30e01f34 --- /dev/null +++ b/packages/tools/.prettierrc @@ -0,0 +1,6 @@ +{ + "arrowParens": "avoid", + "trailingComma": "all", + "singleQuote": true, + "printWidth": 100 +} diff --git a/packages/tools/babel.config.js b/packages/tools/babel.config.js new file mode 100644 index 00000000..40a4d8b8 --- /dev/null +++ b/packages/tools/babel.config.js @@ -0,0 +1,96 @@ +const path = require('path'); + +const coreVersion = require('./package.json').version; +const isProduction = process.env.NODE_ENV === 'production'; +const isTest = process.env.NODE_ENV === 'test'; +const isESM = process.env.NODE_ENV === 'esm'; + +console.info('Build Package:', path.basename(process.cwd())); + +const defaultPlugins = [ + 'lodash', + [ + 'babel-plugin-transform-builtin-extend', + { + globals: ['Error'], + }, + ], + 'transform-export-extensions', + '@babel/plugin-proposal-class-properties', + '@babel/plugin-proposal-object-rest-spread', + '@babel/plugin-proposal-export-default-from', + '@babel/plugin-proposal-nullish-coalescing-operator', + '@babel/plugin-proposal-optional-chaining', + '@babel/plugin-syntax-dynamic-import', + 'babel-plugin-inline-json-import', +]; + +const svgo = { + plugins: [ + { + name: 'preset-default', + params: { + overrides: { + removeViewBox: false, + }, + }, + }, + ], +}; + +function presets() { + return [ + '@babel/preset-react', + '@babel/preset-env', + [ + '@emotion/babel-preset-css-prop', + { + autoLabel: 'always', + }, + ], + '@babel/typescript', + ]; +} + +function plugins() { + if (isESM) { + return [ + ...defaultPlugins, + [ + 'transform-define', + { + STATIC_CMS_CORE_VERSION: `${coreVersion}`, + }, + ], + [ + 'inline-react-svg', + { + svgo, + }, + ], + ]; + } + + if (isTest) { + return [ + ...defaultPlugins, + [ + 'inline-react-svg', + { + svgo, + }, + ], + ]; + } + + if (!isProduction) { + return [...defaultPlugins]; + } + + return defaultPlugins; +} + +module.exports = { + presets: presets(), + plugins: plugins(), +}; diff --git a/packages/tools/package.json b/packages/tools/package.json new file mode 100644 index 00000000..7860d744 --- /dev/null +++ b/packages/tools/package.json @@ -0,0 +1,40 @@ +{ + "name": "@staticcms/tools", + "version": "1.0.0", + "license": "MIT", + "private": true, + "scripts": { + "format": "prettier \"src/**/*.{js,jsx,ts,tsx,css}\" --write", + "lint": "prettier \"src/**/*.{js,jsx,ts,tsx,css}\" --list-different", + "sync-locales": "ts-node -r tsconfig-paths/register src/localeSync.ts", + "type-check": "tsc --watch" + }, + "dependencies": { + "@staticcms/core": "^3.3.3", + "lodash": "4.17.21", + "prettier": "2.8.8", + "ts-node": "10.9.1", + "typescript": "5.0.4" + }, + "devDependencies": { + "@types/common-tags": "1.8.1", + "@types/create-react-class": "15.6.3", + "@types/fs-extra": "11.0.1", + "@types/is-hotkey": "0.1.7", + "@types/jest": "29.5.1", + "@types/js-yaml": "4.0.5", + "@types/jwt-decode": "2.2.1", + "@types/lodash": "4.14.194", + "@types/minimatch": "5.1.2", + "@types/node": "18.16.14", + "@types/node-fetch": "2.6.4", + "@types/react": "18.2.0", + "@types/react-color": "3.0.6", + "@types/react-dom": "18.2.1", + "@types/react-virtualized-auto-sizer": "1.0.1", + "@types/react-window": "1.8.5", + "@types/styled-components": "5.1.26", + "@types/url-join": "4.0.1", + "@types/uuid": "9.0.1" + } +} diff --git a/packages/tools/src/localeSync.ts b/packages/tools/src/localeSync.ts new file mode 100644 index 00000000..2b87a65b --- /dev/null +++ b/packages/tools/src/localeSync.ts @@ -0,0 +1,110 @@ +import { join } from 'path'; +import get from 'lodash/get'; +import prettier from 'prettier'; + +import locales from '@staticcms/core/locales'; +import baseLocale from '@staticcms/core/locales/en'; + +import type { BaseLocalePhrases, LocalePhrases, LocalePhrasesRoot } from '@staticcms/core/locales'; +import { readFileSync, writeFileSync } from 'fs'; + +// const localesDir = "../core/src/locales"; + +function processLocaleSection( + baseSection: BaseLocalePhrases, + localeSection: LocalePhrases, +): LocalePhrases { + if (typeof baseSection === 'string') { + return localeSection ?? undefined; + } + + return Object.keys(baseSection).reduce((acc, section) => { + acc[section] = processLocaleSection( + baseSection[section], + typeof localeSection === 'string' ? undefined : localeSection?.[section], + ); + + return acc; + }, {} as LocalePhrasesRoot); +} + +function processLocale(name: string, locale: LocalePhrasesRoot) { + const newLocale = Object.keys(baseLocale).reduce((acc, section) => { + acc[section] = processLocaleSection(baseLocale[section], locale[section]); + + return acc; + }, {} as LocalePhrasesRoot); + + const path = join(__dirname, '../../core/src/locales', name, `/index.ts`); + + const formattedCode = prettier.format( + `import type { LocalePhrasesRoot } from '../types'; + +const ${name}: LocalePhrasesRoot = ${JSON.stringify( + newLocale, + function (_k, v) { + return v === undefined ? null : v; + }, + 2, + )}; + +export default ${name}; +`, + { + parser: 'typescript', + arrowParens: 'avoid', + trailingComma: 'all', + singleQuote: true, + printWidth: 100, + }, + ); + + writeFileSync(path, formattedCode); + + const lines = readFileSync(path, 'utf-8').split('\n'); + + const outputLines: string[] = []; + const parentPath: string[] = []; + + for (const line of lines) { + const parentOpenMatch = /([a-zA-Z0-9_]+): {/.exec(line); + if (parentOpenMatch && parentOpenMatch.length === 2) { + parentPath.push(parentOpenMatch[1]); + outputLines.push(line); + continue; + } + + const parentCloseMatch = /},/.exec(line); + if (parentCloseMatch && parentCloseMatch.length === 1) { + parentPath.pop(); + outputLines.push(line); + continue; + } + + const emptyLine = /([ ]*)([a-zA-Z0-9_]+): null,/.exec(line); + if (emptyLine && emptyLine.length === 3) { + const englishTranslation = String( + get(baseLocale, [...parentPath, emptyLine[2]].join('.')), + ).replace(/\n/g, '\\n'); + + outputLines.push( + `${emptyLine[1]}${emptyLine[2]}: undefined, // English translation: '${englishTranslation}'`, + ); + continue; + } + + outputLines.push(line); + } + + writeFileSync(path, outputLines.join('\n')); +} + +(async function () { + Object.keys(locales).forEach(locale => { + if (locale === 'en') { + return; + } + + processLocale(locale, locales[locale]); + }); +})(); diff --git a/packages/tools/tsconfig.json b/packages/tools/tsconfig.json new file mode 100644 index 00000000..c02422a3 --- /dev/null +++ b/packages/tools/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "sourceMap": true, + "declaration": true, + "declarationDir": "dist", + "emitDeclarationOnly": true, + "jsx": "react", + "target": "ES2017", + "module": "commonjs", + "moduleResolution": "node", + "esModuleInterop": true, + "preserveSymlinks": true, + "noEmit": false, + "strict": true, + "isolatedModules": true, + "skipLibCheck": true, + "allowJs": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "allowImportingTsExtensions": true, + "baseUrl": "./", + "lib": ["DOM", "es6", "ES2015", "ES2020"], + "paths": { + "@staticcms/core/locales": ["../core/src/locales"], + "@staticcms/core/locales/*": ["../core/src/locales/*"] + } + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "../../node_modules"] +}