From 2a89bc2461b2aa59fc5ab50c11d2617684a8a7d5 Mon Sep 17 00:00:00 2001 From: g-cheishvili Date: Sat, 16 Sep 2023 18:28:42 +0400 Subject: [PATCH 01/21] chore: using ICU expressions in language files --- libs/i18n/src/lib/languages/albanian.ts | 187 +++++---- libs/i18n/src/lib/languages/bulgarian.ts | 254 +++++------- libs/i18n/src/lib/languages/chinese.ts | 174 +++++---- libs/i18n/src/lib/languages/czech.ts | 178 +++++---- libs/i18n/src/lib/languages/english.ts | 181 +++++---- libs/i18n/src/lib/languages/french.ts | 177 +++++---- libs/i18n/src/lib/languages/georgian.ts | 178 +++++---- libs/i18n/src/lib/languages/hindi.ts | 172 ++++----- libs/i18n/src/lib/languages/italian.ts | 192 +++++----- libs/i18n/src/lib/languages/polish.ts | 182 +++++---- libs/i18n/src/lib/languages/russian.ts | 467 +++++------------------ libs/i18n/src/lib/languages/turkish.ts | 177 +++++---- libs/i18n/src/lib/languages/ukrainian.ts | 466 +++++----------------- libs/i18n/src/lib/models/lang.ts | 6 +- 14 files changed, 1173 insertions(+), 1818 deletions(-) diff --git a/libs/i18n/src/lib/languages/albanian.ts b/libs/i18n/src/lib/languages/albanian.ts index feb8f5f7241..2321df002dc 100644 --- a/libs/i18n/src/lib/languages/albanian.ts +++ b/libs/i18n/src/lib/languages/albanian.ts @@ -5,7 +5,7 @@ import { FdLanguage } from '../models/lang'; */ export const FD_LANGUAGE_ALBANIAN: FdLanguage = { coreMultiComboBox: { - selectAllLabel: 'Selekto të gjitha ({{ selectedItems }} nga {{ totalItems }})' + selectAllLabel: 'Selekto të gjitha ({selectedItems} nga {totalItems})' }, coreCarousel: { leftNavigationBtnLabel: 'Shko te artikulli i mëparshëm', @@ -34,8 +34,8 @@ export const FD_LANGUAGE_ALBANIAN: FdLanguage = { }, coreGridList: { filterBarCancelButtonTitle: 'Anulo', - listItemStatusAriaLabel: 'Artikulli ka status. Statusi: {{ status }}.', - listItemCounterAriaLabel: 'Artikulli ka {{ count }} nënartikuj.', + listItemStatusAriaLabel: 'Artikulli ka status. Statusi: {status}.', + listItemCounterAriaLabel: 'Artikulli ka {count} nënartikuj.', listItemButtonDetailsTitle: 'Detaje', listItemButtonDeleteTitle: 'Fshi', listItemStatusContainsErrors: 'Përmban gabime.', @@ -47,37 +47,31 @@ export const FD_LANGUAGE_ALBANIAN: FdLanguage = { }, coreMultiInput: { multiInputAriaLabel: 'Multi Value Input', - tokensCountText: ({ length }) => `Contains ${length || 'no'} token${length === 1 ? '' : 's'}.` + tokensCountText: 'Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.' }, coreNavigation: { mainNavigation: 'Main Navigation', navigationPath: 'Navigation Path' }, coreNestedList: { - linkItemAriaLabel: 'Artikulli i pemës {{ itemDetails }}, {{ index }} nga {{ total }}{{ selectedDescription }}' + linkItemAriaLabel: 'Artikulli i pemës {itemDetails}, {index} nga {total}{selectedDescription}' }, coreOverflowLayout: { - moreItemsButton: (params) => { - const count = params['count']; - if (count === 1) { - return '1 artikuj më shumë'; - } - return `${count} artikuj të tjerë`; - } + moreItemsButton: '{count} artikuj { count, plural, one {më shumë} other {të tjerë} }' }, corePagination: { - pageLabel: 'Faqja {{ pageNumber }}', - currentPageAriaLabel: 'Faqja {{ pageNumber }} është faqja aktuale', + pageLabel: 'Faqja {pageNumber}', + currentPageAriaLabel: 'Faqja {pageNumber} është faqja aktuale', labelBeforeInputMobile: 'Faqja:', - labelAfterInputMobile: 'nga {{ totalCount }}', - inputAriaLabel: 'Hyrja e faqes, Faqja aktuale, Faqja {{pageNumber }} nga {{ TotalCount }}', + labelAfterInputMobile: 'nga {totalCount}', + inputAriaLabel: 'Hyrja e faqes, Faqja aktuale, Faqja {pageNumber} nga {TotalCount}', itemsPerPageLabel: 'Rezultatet për faqe:', firstLabel: 'Së pari', previousLabel: 'E mëparshme', nextLabel: 'Tjetër', lastLabel: 'E fundit', ariaLabel: 'Faqimi', - totalResultsLabel: '{{ totalCount }} Rezultate' + totalResultsLabel: '{totalCount} Rezultate' }, coreProductSwitch: { ariaLabel: 'Ndërprerësi i produktit' @@ -88,18 +82,18 @@ export const FD_LANGUAGE_ALBANIAN: FdLanguage = { search: 'Search' }, coreSlider: { - singleMinMaxDetails: 'Vlera minimale e rrëshqitësit është {{ min }}, vlera maksimale është {{ max }}', - singleValueminDetails: 'Vlera është {{ value }}', - singleValuemaxDetails: 'Vlera është {{ value }}', - singleValueNowDetails: 'Vlera aktuale është {{ value }}', - multipleHandle1MinMaxDetails: 'Vlera minimale e rrëshqitësit është {{ min }}, vlera maksimale është {{ max }}', - multipleHandle1ValueminDetails: 'Vlera është {{ value }}', - multipleHandle1ValuemaxDetails: 'Vlera është {{ value }}', - multipleHandle1ValueNowDetails: 'Vlera aktuale është{{ value }}', - multipleHandle2MinMaxDetails: 'Vlera minimale e rrëshqitësit është {{ min }}, vlera maksimale është{{ max }}', - multipleHandle2ValueminDetails: 'Vlera është {{ value }}', - multipleHandle2ValuemaxDetails: 'Vlera është {{ value }}', - multipleHandle2ValueNowDetails: 'Vlera aktuale është {{ value }}' + singleMinMaxDetails: 'Vlera minimale e rrëshqitësit është {min}, vlera maksimale është {max}', + singleValueminDetails: 'Vlera është {value}', + singleValuemaxDetails: 'Vlera është {value}', + singleValueNowDetails: 'Vlera aktuale është {value}', + multipleHandle1MinMaxDetails: 'Vlera minimale e rrëshqitësit është {min}, vlera maksimale është {max}', + multipleHandle1ValueminDetails: 'Vlera është {value}', + multipleHandle1ValuemaxDetails: 'Vlera është {value}', + multipleHandle1ValueNowDetails: 'Vlera aktuale është{value}', + multipleHandle2MinMaxDetails: 'Vlera minimale e rrëshqitësit është {min}, vlera maksimale është{max}', + multipleHandle2ValueminDetails: 'Vlera është {value}', + multipleHandle2ValuemaxDetails: 'Vlera është {value}', + multipleHandle2ValueNowDetails: 'Vlera aktuale është {value}' }, coreSplitButton: { expandButtonAriaLabel: 'Më shumë veprime', @@ -151,13 +145,7 @@ export const FD_LANGUAGE_ALBANIAN: FdLanguage = { ariaRoleDescription: 'shenjë' }, coreTokenizer: { - moreLabel: (params) => { - const count = params['count']; - if (count === 1) { - return '1 artikuj më shumë'; - } - return `${count} artikuj të tjerë`; - } + moreLabel: '{count} artikuj { count, plural, one {më shumë} other {të tjerë} }' }, coreUploadCollection: { menuOkText: 'Ok', @@ -219,11 +207,11 @@ export const FD_LANGUAGE_ALBANIAN: FdLanguage = { messagesErrorBuildGraph: 'Pati një gabim gjatë përpjekjes për të ndërtuar grafikun. Kontrolloni të dhënat fillestare.', messagesUndoAction: 'Zhbëj', - nodeMembersCount: '{{ count }} anëtarë', + nodeMembersCount: '{count} anëtarë', nodeVariousTeams: 'Skuadra të ndryshme', nodeStatusDueToday: 'Afati kohor është sot', - nodeStatusDueInXDays: ' Afati kohor në {{ count }} ditë', - nodeStatusXDaysOverdue: '{{ count }} ditë me vonesë', + nodeStatusDueInXDays: ' Afati kohor në {count} ditë', + nodeStatusXDaysOverdue: '{count} ditë me vonesë', nodeActionAddApproversBefore: 'Shto miratues më parë', nodeActionAddApproversAfter: 'Shto miratues më pas', nodeActionAddApproversParallel: 'Shto miratues paralel', @@ -244,7 +232,7 @@ export const FD_LANGUAGE_ALBANIAN: FdLanguage = { toolbarEditApprover: 'Redakto miratuesin', watchersInputPlaceholder: 'Kërko këtu..', userListSelectedItemsCountSingular: '1 artikull i zgjedhur', - userListSelectedItemsCountPlural: '{{ count }} artikujt të zgjedhur', + userListSelectedItemsCountPlural: '{count} artikujt të zgjedhur', statusApproved: 'approved', statusRejected: 'rejected', statusInProgress: 'in progress', @@ -268,15 +256,15 @@ export const FD_LANGUAGE_ALBANIAN: FdLanguage = { searchHideAdvancedSearchLabel: 'Fshih filtrat', searchShowAllAdvancedSearchLabel: 'Shfaq të gjithë filtrat', searchHideAllAdvancedSearchLabel: 'Fshih të gjithë filtrat', - selectTabDisplayCountLabel: 'Artikujt ({{ count }})', + selectTabDisplayCountLabel: 'Artikujt ({count})', selectTabMoreBtnLabel: 'Më shumë', - selectTabCountHiddenA11yLabel: 'përmban {{ rowCount }} rreshta dhe {{ colCount }} kolona', + selectTabCountHiddenA11yLabel: 'përmban {rowCount} rreshta dhe {colCount} kolona', selectMobileTabBackBtnTitle: 'Pas', selectMobileTabBtnOpenDialogLabel: 'Hap dialogun', - selectMobileTabTitle: '{{ title }} skeda', + selectMobileTabTitle: '{title} skeda', selectMobileConditionEmpty: 'Bosh', defineConditionTitle: 'Produkt', - defineConditionSelectedValueHiddenA11yLabel: 'vlera e zgjedhur {{ value }}', + defineConditionSelectedValueHiddenA11yLabel: 'vlera e zgjedhur {value}', defineConditionConditionsGroupHeaderInclude: 'Përfshij', defineConditionConditionsGroupHeaderExclude: 'Përjashto', defineConditionFromPlaceholder: 'nga', @@ -297,14 +285,14 @@ export const FD_LANGUAGE_ALBANIAN: FdLanguage = { defineConditionConditionStrategyLabelEmpty: 'bosh', defineConditionConditionStrategyLabelNotEqualTo: 'jo e barabartë me', defineConditionConditionStrategyLabelNotEmpty: 'jo bosh', - defineConditionMaxCountError: 'Shto një vlerë me jo më shumë se {{ count }} karaktere.', + defineConditionMaxCountError: 'Shto një vlerë me jo më shumë se {count} karaktere.', selectTabTitle: 'Zgjidh nga lista', searchTableEmptyMessage: 'Përdor kërkimin për të marrë rezultate', defineTabTitle: 'Përcaktoni kushtet' }, platformCombobox: { countListResultsSingular: '1 artikull i listës së rezultateve', - countListResultsPlural: '{{ count }} artikujt e listës së rezultateve' + countListResultsPlural: '{count} artikujt e listës së rezultateve' }, platformMultiCombobox: { inputGlyphAriaLabel: 'Zgjidhni Opsionet', @@ -314,12 +302,12 @@ export const FD_LANGUAGE_ALBANIAN: FdLanguage = { }, platformTextarea: { counterMessageCharactersOverTheLimitSingular: '1 karakter mbi limitin ', - counterMessageCharactersOverTheLimitPlural: '{{ count }} karaktere mbi limitin', + counterMessageCharactersOverTheLimitPlural: '{count} karaktere mbi limitin', counterMessageCharactersRemainingSingular: '1 karakter i mbetur', - counterMessageCharactersRemainingPlural: '{{ count }} karaktere të mbetur' + counterMessageCharactersRemainingPlural: '{count} karaktere të mbetur' }, platformLink: { - roleDescriptionWithMedia: 'Media: {{ media }}' + roleDescriptionWithMedia: 'Media: {media}' }, platformList: { loadingAriaLabel: 'duke u ngarkuar' @@ -337,13 +325,13 @@ export const FD_LANGUAGE_ALBANIAN: FdLanguage = { submitButtonTitle: 'Kërko', searchInputLabel: 'Kërko', synchronizeButtonTitle: 'Sinkronizo', - searchSuggestionMessage: '{{ count }} sugjerime u gjetën.', + searchSuggestionMessage: '{count} sugjerime u gjetën.', searchSuggestionNavigateMessage: 'përdor shigjetat lart e poshtë për të lundruar' }, platformSmartFilterBar: { searchPlaceholder: 'Kërko', submitButtonLabel: 'Shko', - filtersButtonLabel: 'Filtrat ({{ filtersCount }})', + filtersButtonLabel: 'Filtrat ({filtersCount})', showFiltersButtonLabel: 'Shfaq filtrat', hideFiltersButtonLabel: 'Fshih filtrat', defineConditionsRemoveConditionButtonTitle: 'Hiq kushtin', @@ -400,7 +388,7 @@ export const FD_LANGUAGE_ALBANIAN: FdLanguage = { P13ColumnsDialogSearchPlaceholder: 'Kërko', P13ColumnsDialogsShowSelected: 'Shfaq të zgjedhurat', P13ColumnsDialogShowAll: 'Shfaq të gjitha', - P13ColumnsDialogSelectAll: 'Përzgjidh të gjitha ({{ selectedColumnsCount }}/{{ selectableColumnsCount }})', + P13ColumnsDialogSelectAll: 'Përzgjidh të gjitha ({selectedColumnsCount}/{selectableColumnsCount})', P13ColumnsDialogConfirmationBtnLabel: 'OK', P13ColumnsDialogCancelBtnLabel: 'Anulo', P13ColumnsDialogMoveToTopBtn: 'Kalo në krye', @@ -425,9 +413,9 @@ export const FD_LANGUAGE_ALBANIAN: FdLanguage = { P13FilterBooleanOptionTrue: 'Po', P13FilterBooleanOptionFalse: 'Jo', P13FilterDialogHeader: 'Filtro sipas', - P13FilterDialogIncludePanelTitleWithCount: 'Përfshi ({{ count }})', + P13FilterDialogIncludePanelTitleWithCount: 'Përfshi ({count})', P13FilterDialogIncludePanelTitleWithoutCount: 'Përfshi', - P13FilterDialogExcludePanelTitleWithCount: 'Përjashto ({{ count }})', + P13FilterDialogExcludePanelTitleWithCount: 'Përjashto ({count})', P13FilterDialogExcludePanelTitleWithoutCount: 'Përjashto', P13FilterDialogRemoveFilterBtnTitle: 'Hiq filtrin', P13FilterDialoAddFilterBtnTitle: 'Shto filtrin', @@ -460,7 +448,7 @@ export const FD_LANGUAGE_ALBANIAN: FdLanguage = { toolbarActionExpandAllButtonTitle: 'Expand all', toolbarActionCollapseAllButtonTitle: 'Collapse all', filterDialogNotFilteredLabel: '(Not Filtered)', - filterDialogFilterByLabel: 'Filtro sipas: {{ filterLabel }}', + filterDialogFilterByLabel: 'Filtro sipas: {filterLabel}', filterDialogFilterTitle: 'Filtro', filterDialogFilterBy: 'Filtro sipas', filterDialogConfirmBtnLabel: 'OK', @@ -503,9 +491,9 @@ export const FD_LANGUAGE_ALBANIAN: FdLanguage = { moveToCloseBtn: 'Anulo', newFolderTitle: 'Dosje e re', newFolderAtRootInputLabel: 'Emëro një dosje të re', - newFolderAtFolderInputLabel: 'Emëro një dosje të re brenda {{ folderName }}', + newFolderAtFolderInputLabel: 'Emëro një dosje të re brenda {folderName}', newFolderInputPlaceholder: 'Shkruaj këtu..', - newFolderInputErrorLabel: 'Maksimuni i karaktereve te lejuara është {{ count }}', + newFolderInputErrorLabel: 'Maksimuni i karaktereve te lejuara është {count}', newFolderDialogCreateBtnLabel: 'Krijo', newFolderDialogCancelBtnLabel: 'Anulo', breadcrumbLabelAllFiles: 'Të gjithë skedarët', @@ -530,54 +518,51 @@ export const FD_LANGUAGE_ALBANIAN: FdLanguage = { dragDropAreaText: 'Tërhiq skedarët për t`i ngarkuar', noDataText: 'Nuk u gjet asnjë skedar', noDataDescription: 'Hidhni skedarët për të ngarkuar ose përdorni butonin "Shto".', - paginationTotal: 'Po shfaqen {{ from }}-{{ to }} nga {{ total }}', + paginationTotal: 'Po shfaqen {from}-{to} nga {total}', resultsPerPage: 'Rezultatet për faqe', - messageCreateFailed: 'Dështoj krijimi i {{ folderName }}.', - messageCreateSuccess: '{{ folderName }} është krijuar.', - messageUpdateVersionFailed: 'Përditësimi i versionit të dështoi {{ folderName }}.', - messageUpdateVersionSuccess: '{{ folderName }} versioni është përditësuar.', - messageFileRenameFailed: 'Riemërtimi nga "{{ from }}" në "{{ to }} dështoi."', - messageFileRenameSuccess: '"{{ from }}" është riemërtuar në "{{ to }}".', - messageRemoveFoldersAndFilesFailed: - 'Dështoi për të hequr {{ foldersCount }} dosje dhe {{ filesCount }} skedare.', - messageRemoveFoldersAndFilesSuccess: '{{ foldersCount }} dojse he {{ filesCount }} skedare janë hequr.', - messageRemoveFoldersFailed: 'Dështoi për të hequr {{ foldersCount }} dosje.', - messageRemoveFoldersSuccess: '{{ foldersCount }} dosje janë hequr.', - messageRemoveFilesFailed: 'Dështoi për të hequr {{ filesCount }} skedare.', - messageRemoveFilesSuccess: '{{ filesCount }} skedare janë hequr.', - messageRemoveFileOrFolderFailed: 'Dështoi për të hequr {{ name }}.', - messageRemoveFileOrFolderSuccess: '{{ name }} ështe hequr.', + messageCreateFailed: 'Dështoj krijimi i {folderName}.', + messageCreateSuccess: '{folderName} është krijuar.', + messageUpdateVersionFailed: 'Përditësimi i versionit të dështoi {folderName}.', + messageUpdateVersionSuccess: '{folderName} versioni është përditësuar.', + messageFileRenameFailed: 'Riemërtimi nga "{from}" në "{to} dështoi."', + messageFileRenameSuccess: '"{from}" është riemërtuar në "{to}".', + messageRemoveFoldersAndFilesFailed: 'Dështoi për të hequr {foldersCount} dosje dhe {filesCount} skedare.', + messageRemoveFoldersAndFilesSuccess: '{foldersCount} dojse he {filesCount} skedare janë hequr.', + messageRemoveFoldersFailed: 'Dështoi për të hequr {foldersCount} dosje.', + messageRemoveFoldersSuccess: '{foldersCount} dosje janë hequr.', + messageRemoveFilesFailed: 'Dështoi për të hequr {filesCount} skedare.', + messageRemoveFilesSuccess: '{filesCount} skedare janë hequr.', + messageRemoveFileOrFolderFailed: 'Dështoi për të hequr {name}.', + messageRemoveFileOrFolderSuccess: '{name} ështe hequr.', messageMoveFoldersAndFilesFailed: - 'Zhvendosja e dosjeve {{ foldersCount }} dhe skedarët {{ filesCount }} në {{ to }} dështoi.', - messageMoveFoldersAndFilesSuccess: '{{ foldersCount }} dosje dhe {{ filesCount }} janë zhvendosur në {{ to }}.', - messageMoveFoldersFailed: 'Zhvendosja e dosjeve {{ foldersCount }} dështoi në {{ to }}.', - messageMoveFoldersSuccess: '{{ foldersCount }} dosje janë zhvendosur në{{ to }}.', - messageMoveFilesFailed: 'Zhvendosja e {{ filesCount }} skedarëve në {{ to }} ka dështuar.', - messageMoveFilesSuccess: '{{ filesCount }} dosje janë zhvendosur në {{ to }}.', - messageMoveFileOrFolderFailed: 'Lëvizja e {{ name }} në {{ to }} ka dështuar.', - messageMoveFileOrFolderSuccess: '{{ name }} është zhvendosur në {{ to }}.', + 'Zhvendosja e dosjeve {foldersCount} dhe skedarët {filesCount} në {to} dështoi.', + messageMoveFoldersAndFilesSuccess: '{foldersCount} dosje dhe {filesCount} janë zhvendosur në {to}.', + messageMoveFoldersFailed: 'Zhvendosja e dosjeve {foldersCount} dështoi në {to}.', + messageMoveFoldersSuccess: '{foldersCount} dosje janë zhvendosur në{to}.', + messageMoveFilesFailed: 'Zhvendosja e {filesCount} skedarëve në {to} ka dështuar.', + messageMoveFilesSuccess: '{filesCount} dosje janë zhvendosur në {to}.', + messageMoveFileOrFolderFailed: 'Lëvizja e {name} në {to} ka dështuar.', + messageMoveFileOrFolderSuccess: '{name} është zhvendosur në {to}.', messageMoveRootFoldersAndFilesFailed: - 'Zhvendosja e skedarëve {{ foldersCount }} dhe {{ filesCount }} në të gjithë skedarët ka dështuar.', + 'Zhvendosja e skedarëve {foldersCount} dhe {filesCount} në të gjithë skedarët ka dështuar.', messageMoveRootFoldersAndFilesSuccess: - '{{ foldersCount }} dosje dhe {{ filesCount }} skedarë janë zhvendosur në të gjithë skedarët.', - messageMoveRootFoldersFailed: 'Zhvendosja e dosjeve {{ foldersCount }} në të gjithë skedarët dështoi.', - messageMoveRootFoldersSuccess: '{{ foldersCount }} dosje janë zhvendosur në të gjithë skedarët.', - messageMoveRootFilesFailed: 'Zhvendosja e skedarëve {{ filesCount }} në të gjithë skedarët dështoi.', - messageMoveRootFilesSuccess: '{{ filesCount }} skedare janë zhvendosur në të gjithë skedarët.', - messageMoveRootFileOrFolderFailed: 'Zhvendosja e {{ emri }} te të gjithë skedarët ka dështuar.', - messageMoveRootFileOrFolderSuccess: '{{ name }} është zhvendosur në të gjithë skedarët.', - messageFileTypeMismatchPlural: - '{{ filesCount }} skedarët kanë llojin e gabuar. Llojet e lejuara: {{ allowedTypes }}.', - messageFileTypeMismatchSingular: - 'Skedari "{{ fileName }}" ka llojin e gabuar. Llojet e lejuara: {{ allowedTypes }}.', + '{foldersCount} dosje dhe {filesCount} skedarë janë zhvendosur në të gjithë skedarët.', + messageMoveRootFoldersFailed: 'Zhvendosja e dosjeve {foldersCount} në të gjithë skedarët dështoi.', + messageMoveRootFoldersSuccess: '{foldersCount} dosje janë zhvendosur në të gjithë skedarët.', + messageMoveRootFilesFailed: 'Zhvendosja e skedarëve {filesCount} në të gjithë skedarët dështoi.', + messageMoveRootFilesSuccess: '{filesCount} skedare janë zhvendosur në të gjithë skedarët.', + messageMoveRootFileOrFolderFailed: 'Zhvendosja e {emri} te të gjithë skedarët ka dështuar.', + messageMoveRootFileOrFolderSuccess: '{name} është zhvendosur në të gjithë skedarët.', + messageFileTypeMismatchPlural: '{filesCount} skedarët kanë llojin e gabuar. Llojet e lejuara: {allowedTypes}.', + messageFileTypeMismatchSingular: 'Skedari "{fileName}" ka llojin e gabuar. Llojet e lejuara: {allowedTypes}.', messageFileSizeExceededPlural: - '{{ filesCount }} skedarët tejkaluan madhësinë maksimale të skedarit. Madhësia maksimale e lejuar e skedarit:{{ maxFileSize }}.', + '{filesCount} skedarët tejkaluan madhësinë maksimale të skedarit. Madhësia maksimale e lejuar e skedarit:{maxFileSize}.', messageFileSizeExceededSingular: - 'Skedari "{{ fileName }}" ka tejkaluar madhësinë maksimale të skedarit. Madhësia maksimale e lejuar e skedarit: {{ maxFileSize }}.', + 'Skedari "{fileName}" ka tejkaluar madhësinë maksimale të skedarit. Madhësia maksimale e lejuar e skedarit: {maxFileSize}.', messageFileNameLengthExceededPlural: - '{{ filesCount }} skedare tejkaluan gjatësinë maksimale të emrit. Gjatësia e lejuar e emrit të skedarit: {{ maxFilenameLength }} karaktere.', + '{filesCount} skedare tejkaluan gjatësinë maksimale të emrit. Gjatësia e lejuar e emrit të skedarit: {maxFilenameLength} karaktere.', messageFileNameLengthExceededSingular: - 'Emri "{{ fileName }}" ka tejkaluar gjatësinë maksimale të emrit. Gjatësia e lejuar e emrit të skedarit: {{ maxFilenameLength }} karaktere.' + 'Emri "{fileName}" ka tejkaluar gjatësinë maksimale të emrit. Gjatësia e lejuar e emrit të skedarit: {maxFilenameLength} karaktere.' }, platformWizardGenerator: { summarySectionEditStep: 'Redakto' @@ -624,10 +609,10 @@ export const FD_LANGUAGE_ALBANIAN: FdLanguage = { selectOptionLabel: 'Zgjidhni një opsion' }, fnSlider: { - minMaxDetails: 'Vlera minimale e rrëshqitësit është {{ min }}, vlera maksimale është {{ max }}', - valueminDetails: 'Vlera është {{ value }}', - valuemaxDetails: 'Vlera është {{ value }}', - valueNowDetails: 'Vlera aktuale është {{ value }}' + minMaxDetails: 'Vlera minimale e rrëshqitësit është {min}, vlera maksimale është {max}', + valueminDetails: 'Vlera është {value}', + valuemaxDetails: 'Vlera është {value}', + valueNowDetails: 'Vlera aktuale është {value}' }, fnSwitch: { semanticAcceptLabel: 'Pranoje', diff --git a/libs/i18n/src/lib/languages/bulgarian.ts b/libs/i18n/src/lib/languages/bulgarian.ts index bf6942c7c25..a5b25063ae6 100644 --- a/libs/i18n/src/lib/languages/bulgarian.ts +++ b/libs/i18n/src/lib/languages/bulgarian.ts @@ -1,14 +1,11 @@ import { FdLanguage } from '../models/lang'; -import { PluralizationSet1 } from './pluralization/set1'; - -const pluralization = new PluralizationSet1(); /** * Default set of translations of Fundamental UI library for Bulgarian language */ export const FD_LANGUAGE_BULGARIAN: FdLanguage = { coreMultiComboBox: { - selectAllLabel: 'Избери всички ({{selectedItems}} от {{totalItems}})' + selectAllLabel: 'Избери всички ({selectedItems} от {totalItems})' }, coreCarousel: { leftNavigationBtnLabel: 'Отиди на предишния елемент', @@ -37,17 +34,8 @@ export const FD_LANGUAGE_BULGARIAN: FdLanguage = { }, coreGridList: { filterBarCancelButtonTitle: 'Отмени', - listItemStatusAriaLabel: 'Артикулът има статус. Статус: {{ status }}.', - listItemCounterAriaLabel: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return 'Артикулът има 1 дете.'; - default: - return 'Артикулът има {{ count }} деца.'; - } - }, + listItemStatusAriaLabel: 'Артикулът има статус. Статус: {status}.', + listItemCounterAriaLabel: 'Артикулът има { count, plural, one {1 дете} other {# деца} }.', listItemButtonDetailsTitle: 'Подробности', listItemButtonDeleteTitle: 'Изтрий', listItemStatusContainsErrors: 'Съдържа грешки', @@ -59,40 +47,31 @@ export const FD_LANGUAGE_BULGARIAN: FdLanguage = { }, coreMultiInput: { multiInputAriaLabel: 'Multi Value Input', - tokensCountText: ({ length }) => `Contains ${length || 'no'} token${length === 1 ? '' : 's'}.` + tokensCountText: 'Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.' }, coreNavigation: { mainNavigation: 'Main Navigation', navigationPath: 'Navigation Path' }, coreNestedList: { - linkItemAriaLabel: 'Елемент от дърво {{ itemDetails }}, {{ index }} от {{ total }}{{ selectedDescription }}' + linkItemAriaLabel: 'Елемент от дърво {itemDetails}, {index} от {total}{selectedDescription}' }, coreOverflowLayout: { - moreItemsButton: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return 'Още 1 елемент'; - default: - return 'Още {{ count }} елемента'; - } - } + moreItemsButton: 'Още { count, plural, one {1 елемент} other {# елемента} }' }, corePagination: { - pageLabel: 'Страница {{ pageNumber }}', - currentPageAriaLabel: 'Страница {{ pageNumber }} е активна', + pageLabel: 'Страница {pageNumber}', + currentPageAriaLabel: 'Страница {pageNumber} е активна', labelBeforeInputMobile: 'Страница:', - labelAfterInputMobile: 'от {{ totalCount }}', - inputAriaLabel: 'Поле за страница, Текуща страница, Page {{ pageNumber }} of {{ totalCount }}', + labelAfterInputMobile: 'от {totalCount}', + inputAriaLabel: 'Поле за страница, Текуща страница, Page {pageNumber} of {totalCount}', itemsPerPageLabel: 'Резултати на Страница:', firstLabel: 'Първа', previousLabel: 'Предна', nextLabel: 'Следваща', lastLabel: 'Последна', ariaLabel: 'Пагинация', - totalResultsLabel: '{{ totalCount }} резултати' + totalResultsLabel: '{totalCount} резултати' }, coreProductSwitch: { ariaLabel: 'Продуктов превключвател' @@ -103,20 +82,20 @@ export const FD_LANGUAGE_BULGARIAN: FdLanguage = { search: 'Search' }, coreSlider: { - singleMinMaxDetails: 'Минималната стойност на плъзгача е {{ min }}, максималната стойност е {{ max }}', - singleValueminDetails: 'Стойността е {{ value }}', - singleValuemaxDetails: 'Стойността е {{ value }}', - singleValueNowDetails: 'Текущата стойност е {{ value }}', + singleMinMaxDetails: 'Минималната стойност на плъзгача е {min}, максималната стойност е {max}', + singleValueminDetails: 'Стойността е {value}', + singleValuemaxDetails: 'Стойността е {value}', + singleValueNowDetails: 'Текущата стойност е {value}', multipleHandle1MinMaxDetails: - 'Минималната стойност на плъзгача за обхват е {{ min }}, максималната стойност е {{ max }}', - multipleHandle1ValueminDetails: 'Стойността е {{ value }}', - multipleHandle1ValuemaxDetails: 'Стойността е {{ value }}', - multipleHandle1ValueNowDetails: 'Текущата стойност е {{ value }}', + 'Минималната стойност на плъзгача за обхват е {min}, максималната стойност е {max}', + multipleHandle1ValueminDetails: 'Стойността е {value}', + multipleHandle1ValuemaxDetails: 'Стойността е {value}', + multipleHandle1ValueNowDetails: 'Текущата стойност е {value}', multipleHandle2MinMaxDetails: - 'Минималната стойност на плъзгача за обхват е {{ min }}, максималната стойност е {{ max }}', - multipleHandle2ValueminDetails: 'Стойността е {{ value }}', - multipleHandle2ValuemaxDetails: 'Стойността е {{ value }}', - multipleHandle2ValueNowDetails: 'Текущата стойност е {{ value }}' + 'Минималната стойност на плъзгача за обхват е {min}, максималната стойност е {max}', + multipleHandle2ValueminDetails: 'Стойността е {value}', + multipleHandle2ValuemaxDetails: 'Стойността е {value}', + multipleHandle2ValueNowDetails: 'Текущата стойност е {value}' }, coreSplitButton: { expandButtonAriaLabel: 'Повече възможности', @@ -168,16 +147,7 @@ export const FD_LANGUAGE_BULGARIAN: FdLanguage = { ariaRoleDescription: 'жетон' }, coreTokenizer: { - moreLabel: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return 'Още 1 елемент'; - default: - return 'Още {{ count }} елемента'; - } - } + moreLabel: 'Още { count, plural, one {1 елемент} other {# елемента} }' }, coreUploadCollection: { menuOkText: 'OK', @@ -238,38 +208,11 @@ export const FD_LANGUAGE_BULGARIAN: FdLanguage = { messagesTeamRemoved: '1 отбор е премахнат', messagesErrorBuildGraph: 'Възникна грешка при опит за изграждане на графиката. Проверете първоначалните данни.', messagesUndoAction: 'Отмяна', - nodeMembersCount: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return '1 член'; - default: - return '{{ count }} членове'; - } - }, + nodeMembersCount: '{ count, plural, one {1 член} other {# членове} }', nodeVariousTeams: 'Различни екипи', nodeStatusDueToday: 'Предстои днес', - nodeStatusDueInXDays: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return 'Предстои след 1 ден'; - default: - return 'Предстои след {{ count }} дни'; - } - }, - nodeStatusXDaysOverdue: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return '1 ден просрочие'; - default: - return '{{ count }} дни просрочие'; - } - }, + nodeStatusDueInXDays: 'Предстои след { count, plural, one {1 ден} other {# дни} }', + nodeStatusXDaysOverdue: '{ count, plural, one {1 ден} other {# дни} } просрочие', nodeActionAddApproversBefore: 'Добавете одобряващи преди', nodeActionAddApproversAfter: 'Добавете одобряващи след това', nodeActionAddApproversParallel: 'Добавете паралелни одобряващи', @@ -290,7 +233,7 @@ export const FD_LANGUAGE_BULGARIAN: FdLanguage = { toolbarEditApprover: 'Редактирай на одобряващия', watchersInputPlaceholder: 'Търси тук...', userListSelectedItemsCountSingular: 'Избран е 1 елемент', - userListSelectedItemsCountPlural: 'Избрани са {{ count }} елементи', + userListSelectedItemsCountPlural: 'Избрани са {count} елементи', statusApproved: 'approved', statusRejected: 'rejected', statusInProgress: 'in progress', @@ -314,15 +257,15 @@ export const FD_LANGUAGE_BULGARIAN: FdLanguage = { searchHideAdvancedSearchLabel: 'Скриване на филтрите', searchShowAllAdvancedSearchLabel: 'Показване на всички филтри', searchHideAllAdvancedSearchLabel: 'Скриване на всички филтри', - selectTabDisplayCountLabel: '({{ count }}) артикули', + selectTabDisplayCountLabel: '({count}) артикули', selectTabMoreBtnLabel: 'Повече', - selectTabCountHiddenA11yLabel: 'съдържа {{ rowCount }} ред(а) и {{ colCount }} колонa/и', + selectTabCountHiddenA11yLabel: 'съдържа {rowCount} ред(а) и {colCount} колонa/и', selectMobileTabBackBtnTitle: 'Обратно', selectMobileTabBtnOpenDialogLabel: 'Отвори диалоговия прозорец', - selectMobileTabTitle: '{{ title }} раздел', + selectMobileTabTitle: '{title} раздел', selectMobileConditionEmpty: 'Празен', defineConditionTitle: 'Продукт', - defineConditionSelectedValueHiddenA11yLabel: 'избрана стойност {{ value }}', + defineConditionSelectedValueHiddenA11yLabel: 'избрана стойност {value}', defineConditionConditionsGroupHeaderInclude: 'Включи', defineConditionConditionsGroupHeaderExclude: 'Изключи', defineConditionFromPlaceholder: 'от', @@ -343,23 +286,15 @@ export const FD_LANGUAGE_BULGARIAN: FdLanguage = { defineConditionConditionStrategyLabelEmpty: 'празно', defineConditionConditionStrategyLabelNotEqualTo: 'не е равно на', defineConditionConditionStrategyLabelNotEmpty: 'не празно', - defineConditionMaxCountError: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return 'Въведи стойност с не повече от 1 символ'; - default: - return 'Въведи стойност с не повече от {{ count }} символа'; - } - }, + defineConditionMaxCountError: + 'Въведи стойност с не повече от { count, plural, one {1 символ} other {# символа} }', selectTabTitle: 'Избери от списъка', searchTableEmptyMessage: 'Use the search to get results', defineTabTitle: 'Дефиниране на условия' }, platformCombobox: { countListResultsSingular: '1 елемент от списъка с резултати', - countListResultsPlural: '{{ count }} елемента от списъка с резултати' + countListResultsPlural: '{count} елемента от списъка с резултати' }, platformMultiCombobox: { inputGlyphAriaLabel: 'Избери Опции', @@ -369,12 +304,12 @@ export const FD_LANGUAGE_BULGARIAN: FdLanguage = { }, platformTextarea: { counterMessageCharactersOverTheLimitSingular: '1 символ над ограничението', - counterMessageCharactersOverTheLimitPlural: '{{ count }} символи над ограничението', + counterMessageCharactersOverTheLimitPlural: '{count} символи над ограничението', counterMessageCharactersRemainingSingular: 'Остава 1 символ', - counterMessageCharactersRemainingPlural: 'Остават {{ count }} символи' + counterMessageCharactersRemainingPlural: 'Остават {count} символи' }, platformLink: { - roleDescriptionWithMedia: 'Медия: {{ media }}' + roleDescriptionWithMedia: 'Медия: {media}' }, platformList: { loadingAriaLabel: 'зареждане' @@ -392,22 +327,13 @@ export const FD_LANGUAGE_BULGARIAN: FdLanguage = { submitButtonTitle: 'Търси', searchInputLabel: 'Търси', synchronizeButtonTitle: 'Синхронизирай', - searchSuggestionMessage: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return 'Намерено е 1 предложение.'; - default: - return 'Намерени са {{ count }} предложения.'; - } - }, + searchSuggestionMessage: '{ count, plural, one {Намерено е 1 предложение} other {Намерени са # предложения} }.', searchSuggestionNavigateMessage: 'използвайте стрелки нагоре и надолу за навигация' }, platformSmartFilterBar: { searchPlaceholder: 'Търси', submitButtonLabel: 'Търси', - filtersButtonLabel: 'Филтри ({{ filtersCount }})', + filtersButtonLabel: 'Филтри ({filtersCount})', showFiltersButtonLabel: 'Покажи филтрите', hideFiltersButtonLabel: 'Скрий филтрите', defineConditionsRemoveConditionButtonTitle: 'Премахни Условие', @@ -464,7 +390,7 @@ export const FD_LANGUAGE_BULGARIAN: FdLanguage = { P13ColumnsDialogSearchPlaceholder: 'Търси', P13ColumnsDialogsShowSelected: 'Покажи избраните', P13ColumnsDialogShowAll: 'Покажи всички', - P13ColumnsDialogSelectAll: 'Покажи всички ({{ selectedColumnsCount }}/{{ selectableColumnsCount }})', + P13ColumnsDialogSelectAll: 'Покажи всички ({selectedColumnsCount}/{selectableColumnsCount})', P13ColumnsDialogConfirmationBtnLabel: 'OK', P13ColumnsDialogCancelBtnLabel: 'Отмени', P13ColumnsDialogMoveToTopBtn: 'Измести най-отгоре', @@ -489,9 +415,9 @@ export const FD_LANGUAGE_BULGARIAN: FdLanguage = { P13FilterBooleanOptionTrue: 'Да', P13FilterBooleanOptionFalse: 'Не', P13FilterDialogHeader: 'Филтрирано от', - P13FilterDialogIncludePanelTitleWithCount: 'Добави ({{ count }})', + P13FilterDialogIncludePanelTitleWithCount: 'Добави ({count})', P13FilterDialogIncludePanelTitleWithoutCount: 'Добави', - P13FilterDialogExcludePanelTitleWithCount: 'Изключи ({{ count }})', + P13FilterDialogExcludePanelTitleWithCount: 'Изключи ({count})', P13FilterDialogExcludePanelTitleWithoutCount: 'Exclude', P13FilterDialogRemoveFilterBtnTitle: 'Премахни Филтър', P13FilterDialoAddFilterBtnTitle: 'Добави Филтър', @@ -524,7 +450,7 @@ export const FD_LANGUAGE_BULGARIAN: FdLanguage = { toolbarActionExpandAllButtonTitle: 'Expand all', toolbarActionCollapseAllButtonTitle: 'Collapse all', filterDialogNotFilteredLabel: '(Нефилтрирано)', - filterDialogFilterByLabel: 'Филтрирано по: {{ filterLabel }}', + filterDialogFilterByLabel: 'Филтрирано по: {filterLabel}', filterDialogFilterTitle: 'Филтър', filterDialogFilterBy: 'Филтрирано по', filterDialogConfirmBtnLabel: 'OK', @@ -567,13 +493,13 @@ export const FD_LANGUAGE_BULGARIAN: FdLanguage = { moveToCloseBtn: 'Отмени', newFolderTitle: 'Нова папка', newFolderAtRootInputLabel: 'Име на новата папка', - newFolderAtFolderInputLabel: 'Име на новата папка вътре в {{ folderName }}', + newFolderAtFolderInputLabel: 'Име на новата папка вътре в {folderName}', newFolderInputPlaceholder: 'Пиши тук...', - newFolderInputErrorLabel: 'Максимум {{ count }} символ(а) позволени', + newFolderInputErrorLabel: 'Максимум {count} символ(а) позволени', newFolderDialogCreateBtnLabel: 'Създай', newFolderDialogCancelBtnLabel: 'Отмени', breadcrumbLabelAllFiles: 'Всички файлове', - breadcrumbLabelAllFilesWithTotal: 'Всички файлове ({{ total }})', + breadcrumbLabelAllFilesWithTotal: 'Всички файлове ({total})', searchPlaceholder: 'Търси', addBtnLabel: 'Добави', newFolderBtnLabel: 'Нова папка', @@ -594,55 +520,51 @@ export const FD_LANGUAGE_BULGARIAN: FdLanguage = { dragDropAreaText: 'Плъзнете файлове за качване', noDataText: 'Няма намерени файлове', noDataDescription: 'Пуснете файлове за качване или използвайте бутона „Добави“.', - paginationTotal: 'Показване {{ from }}-{{ to }} от {{ total }}', + paginationTotal: 'Показване {from}-{to} от {total}', resultsPerPage: 'Резултати на страница', - messageCreateFailed: 'Неуспешно създадена {{ folderName }}.', - messageCreateSuccess: '{{ folderName }} е създаден.', - messageUpdateVersionFailed: 'Неуспешно актуализиране на версията на {{ folderName }}.', - messageUpdateVersionSuccess: 'Версията на {{ folderName }} е актуализирана.', - messageFileRenameFailed: 'Неуспешно преименуване от "{{ from }}" на "{{ to }}."', - messageFileRenameSuccess: '"{{ from }}" беще преименуван на "{{ to }}".', - messageRemoveFoldersAndFilesFailed: - 'Неуспешно премахване на {{ foldersCount }} папки и {{ filesCount }} файлове.', - messageRemoveFoldersAndFilesSuccess: '{{ foldersCount }} папки и {{ filesCount }} файлове бяха изтрити.', - messageRemoveFoldersFailed: 'Неуспешно премахване на {{ foldersCount }} папки.', - messageRemoveFoldersSuccess: '{{ foldersCount }} папки са премахнати.', - messageRemoveFilesFailed: 'Неуспешно премахване на {{ filesCount }} файлове.', - messageRemoveFilesSuccess: '{{ filesCount }} файлове са премахнати.', - messageRemoveFileOrFolderFailed: 'Неуспешно премахване на {{ name }}.', - messageRemoveFileOrFolderSuccess: '{{ name }} беше изтрита.', - messageMoveFoldersAndFilesFailed: - 'Неуспешно преместване {{ foldersCount }} папки и {{ filesCount }} файлове в {{ to }}.', - messageMoveFoldersAndFilesSuccess: - '{{ foldersCount }} папки и {{ filesCount }} файлове са преместени в {{ to }}.', - messageMoveFoldersFailed: 'Неуспешно преместване {{ foldersCount }} папки в {{ to }}.', - messageMoveFoldersSuccess: '{{ foldersCount }} папки беше преместена в {{ to }}.', - messageMoveFilesFailed: 'Неуспешно преместване {{ filesCount }} файлове в {{ to }}.', - messageMoveFilesSuccess: '{{ filesCount }} файлове бяха преместени в {{ to }}.', - messageMoveFileOrFolderFailed: 'Неуспешно преместване {{ name }} в {{ to }}.', - messageMoveFileOrFolderSuccess: '{{ name }} е изместен(а) в {{ to }}.', + messageCreateFailed: 'Неуспешно създадена {folderName}.', + messageCreateSuccess: '{folderName} е създаден.', + messageUpdateVersionFailed: 'Неуспешно актуализиране на версията на {folderName}.', + messageUpdateVersionSuccess: 'Версията на {folderName} е актуализирана.', + messageFileRenameFailed: 'Неуспешно преименуване от "{from}" на "{to}."', + messageFileRenameSuccess: '"{from}" беще преименуван на "{to}".', + messageRemoveFoldersAndFilesFailed: 'Неуспешно премахване на {foldersCount} папки и {filesCount} файлове.', + messageRemoveFoldersAndFilesSuccess: '{foldersCount} папки и {filesCount} файлове бяха изтрити.', + messageRemoveFoldersFailed: 'Неуспешно премахване на {foldersCount} папки.', + messageRemoveFoldersSuccess: '{foldersCount} папки са премахнати.', + messageRemoveFilesFailed: 'Неуспешно премахване на {filesCount} файлове.', + messageRemoveFilesSuccess: '{filesCount} файлове са премахнати.', + messageRemoveFileOrFolderFailed: 'Неуспешно премахване на {name}.', + messageRemoveFileOrFolderSuccess: '{name} беше изтрита.', + messageMoveFoldersAndFilesFailed: 'Неуспешно преместване {foldersCount} папки и {filesCount} файлове в {to}.', + messageMoveFoldersAndFilesSuccess: '{foldersCount} папки и {filesCount} файлове са преместени в {to}.', + messageMoveFoldersFailed: 'Неуспешно преместване {foldersCount} папки в {to}.', + messageMoveFoldersSuccess: '{foldersCount} папки беше преместена в {to}.', + messageMoveFilesFailed: 'Неуспешно преместване {filesCount} файлове в {to}.', + messageMoveFilesSuccess: '{filesCount} файлове бяха преместени в {to}.', + messageMoveFileOrFolderFailed: 'Неуспешно преместване {name} в {to}.', + messageMoveFileOrFolderSuccess: '{name} е изместен(а) в {to}.', messageMoveRootFoldersAndFilesFailed: - 'Неуспешно преместване {{ foldersCount }} папки и {{ filesCount }} файлове от всички файлове.', - messageMoveRootFoldersAndFilesSuccess: - '{{ foldersCount }} папки and {{ filesCount }} файлове успешно преместени.', - messageMoveRootFoldersFailed: 'Неуспешно преместване {{ foldersCount }} папки за всички файлове.', - messageMoveRootFoldersSuccess: '{{ foldersCount }} папки бяха преместени за всички файлове.', - messageMoveRootFilesFailed: 'Неуспешно преместване {{ filesCount }} файлове за всички файлове.', - messageMoveRootFilesSuccess: '{{ filesCount }} файлове бяха изместени за всички файлове.', - messageMoveRootFileOrFolderFailed: 'Неуспешно преместване {{ name }} за всички файлове.', - messageMoveRootFileOrFolderSuccess: '{{ name }} е изместен за всички файлове.', + 'Неуспешно преместване {foldersCount} папки и {filesCount} файлове от всички файлове.', + messageMoveRootFoldersAndFilesSuccess: '{foldersCount} папки and {filesCount} файлове успешно преместени.', + messageMoveRootFoldersFailed: 'Неуспешно преместване {foldersCount} папки за всички файлове.', + messageMoveRootFoldersSuccess: '{foldersCount} папки бяха преместени за всички файлове.', + messageMoveRootFilesFailed: 'Неуспешно преместване {filesCount} файлове за всички файлове.', + messageMoveRootFilesSuccess: '{filesCount} файлове бяха изместени за всички файлове.', + messageMoveRootFileOrFolderFailed: 'Неуспешно преместване {name} за всички файлове.', + messageMoveRootFileOrFolderSuccess: '{name} е изместен за всички файлове.', messageFileTypeMismatchPlural: - '{{ filesCount }} файлове имат грешно разширение. Позволени разширения: {{ allowedTypes }}.', + '{filesCount} файлове имат грешно разширение. Позволени разширения: {allowedTypes}.', messageFileTypeMismatchSingular: - 'Файлът "{{ fileName }}" има грешно разширение. Позволени разширения: {{ allowedTypes }}.', + 'Файлът "{fileName}" има грешно разширение. Позволени разширения: {allowedTypes}.', messageFileSizeExceededPlural: - '{{ filesCount }} файлове надвишават максималната големина на файла. Позволен максимален размер на файла: {{ maxFileSize }}.', + '{filesCount} файлове надвишават максималната големина на файла. Позволен максимален размер на файла: {maxFileSize}.', messageFileSizeExceededSingular: - 'Файлът "{{ fileName }}" надвишава максималната големина на файла. Позволен максимален размер на файла: {{ maxFileSize }}.', + 'Файлът "{fileName}" надвишава максималната големина на файла. Позволен максимален размер на файла: {maxFileSize}.', messageFileNameLengthExceededPlural: - '{{ filesCount }} файлове надвишават максималната дължина на името на файла. Позволена дължина на името на файла: {{ maxFilenameLength }} символа.', + '{filesCount} файлове надвишават максималната дължина на името на файла. Позволена дължина на името на файла: {maxFilenameLength} символа.', messageFileNameLengthExceededSingular: - 'Името "{{ fileName }}" надвишава максималната дължина на името на файла. Позволена дължина на името на файла: {{ maxFilenameLength }} символа.' + 'Името "{fileName}" надвишава максималната дължина на името на файла. Позволена дължина на името на файла: {maxFilenameLength} символа.' }, platformWizardGenerator: { summarySectionEditStep: 'Редактирай' @@ -689,10 +611,10 @@ export const FD_LANGUAGE_BULGARIAN: FdLanguage = { selectOptionLabel: 'Изберете опция' }, fnSlider: { - minMaxDetails: 'Минималната стойност на плъзгача е {{ min }}, максималната стойност е {{ max }}', - valueminDetails: 'Стойността е {{ value }}', - valuemaxDetails: 'Стойността е {{ value }}', - valueNowDetails: 'Текущата стойност е {{ value }}' + minMaxDetails: 'Минималната стойност на плъзгача е {min}, максималната стойност е {max}', + valueminDetails: 'Стойността е {value}', + valuemaxDetails: 'Стойността е {value}', + valueNowDetails: 'Текущата стойност е {value}' }, fnSwitch: { semanticAcceptLabel: 'Приеми', diff --git a/libs/i18n/src/lib/languages/chinese.ts b/libs/i18n/src/lib/languages/chinese.ts index 76f125687df..058a4662dc0 100644 --- a/libs/i18n/src/lib/languages/chinese.ts +++ b/libs/i18n/src/lib/languages/chinese.ts @@ -5,7 +5,7 @@ import { FdLanguage } from '../models/lang'; */ export const FD_LANGUAGE_CHINESE: FdLanguage = { coreMultiComboBox: { - selectAllLabel: '选择全部({{ selectedItems }},共 {{ totalItems }})' + selectAllLabel: '选择全部({selectedItems},共 {totalItems})' }, coreCarousel: { leftNavigationBtnLabel: '上一项', @@ -34,8 +34,8 @@ export const FD_LANGUAGE_CHINESE: FdLanguage = { }, coreGridList: { filterBarCancelButtonTitle: '取消', - listItemStatusAriaLabel: '列表项的状态:{{ status }}。', - listItemCounterAriaLabel: '列表项有{{ count }}个子项。', + listItemStatusAriaLabel: '列表项的状态:{status}。', + listItemCounterAriaLabel: '列表项有{count}个子项。', listItemButtonDetailsTitle: '详情', listItemButtonDeleteTitle: '删除', listItemStatusContainsErrors: '有错误', @@ -54,24 +54,24 @@ export const FD_LANGUAGE_CHINESE: FdLanguage = { navigationPath: 'Navigation Path' }, coreNestedList: { - linkItemAriaLabel: '树项目{{ itemDetails }},{{ index }} / {{ total }} {{ selectedDescription }}' + linkItemAriaLabel: '树项目{itemDetails},{index} / {total} {selectedDescription}' }, coreOverflowLayout: { - moreItemsButton: '{{ count }}项更多' + moreItemsButton: '{count}项更多' }, corePagination: { - pageLabel: '第{{ pageNumber }}页', - currentPageAriaLabel: '目前在第{{ pageNumber }}页', + pageLabel: '第{pageNumber}页', + currentPageAriaLabel: '目前在第{pageNumber}页', labelBeforeInputMobile: '页:', - labelAfterInputMobile: ' / {{ totalCount }}', - inputAriaLabel: '页输入,目前所在页,页 {{ pageNumber }} / {{ totalCount }}', + labelAfterInputMobile: ' / {totalCount}', + inputAriaLabel: '页输入,目前所在页,页 {pageNumber} / {totalCount}', itemsPerPageLabel: '每页显示结果:', firstLabel: '第一页', previousLabel: '上一页', nextLabel: '下一页', lastLabel: '最后一页', ariaLabel: '分页', - totalResultsLabel: '总共{{ totalCount }}个结果' + totalResultsLabel: '总共{totalCount}个结果' }, coreProductSwitch: { ariaLabel: '产品切换' @@ -82,18 +82,18 @@ export const FD_LANGUAGE_CHINESE: FdLanguage = { search: 'Search' }, coreSlider: { - singleMinMaxDetails: '滑动条最小值为{{ min }},最大值为{{ max }}', - singleValueminDetails: '值等于{{ value }}', - singleValuemaxDetails: '值等于{{ value }}', - singleValueNowDetails: '目前值等于{{ value }}', - multipleHandle1MinMaxDetails: '范围滑动条最小值为{{ min }},最大值为{{ max }}', - multipleHandle1ValueminDetails: '值等于{{ value }}', - multipleHandle1ValuemaxDetails: '值等于{{ value }}', - multipleHandle1ValueNowDetails: '目前值等于{{ value }}', - multipleHandle2MinMaxDetails: '范围滑动条最小值为{{ min }},最大值为{{ max }}', - multipleHandle2ValueminDetails: '值等于{{ value }}', - multipleHandle2ValuemaxDetails: '值等于{{ value }}', - multipleHandle2ValueNowDetails: '目前值等于{{ value }}' + singleMinMaxDetails: '滑动条最小值为{min},最大值为{max}', + singleValueminDetails: '值等于{value}', + singleValuemaxDetails: '值等于{value}', + singleValueNowDetails: '目前值等于{value}', + multipleHandle1MinMaxDetails: '范围滑动条最小值为{min},最大值为{max}', + multipleHandle1ValueminDetails: '值等于{value}', + multipleHandle1ValuemaxDetails: '值等于{value}', + multipleHandle1ValueNowDetails: '目前值等于{value}', + multipleHandle2MinMaxDetails: '范围滑动条最小值为{min},最大值为{max}', + multipleHandle2ValueminDetails: '值等于{value}', + multipleHandle2ValuemaxDetails: '值等于{value}', + multipleHandle2ValueNowDetails: '目前值等于{value}' }, coreSplitButton: { expandButtonAriaLabel: '更多动作', @@ -143,7 +143,7 @@ export const FD_LANGUAGE_CHINESE: FdLanguage = { ariaRoleDescription: '标签' }, coreTokenizer: { - moreLabel: '{{ count }}项更多' + moreLabel: '{count}项更多' }, coreUploadCollection: { menuOkText: '确定', @@ -203,11 +203,11 @@ export const FD_LANGUAGE_CHINESE: FdLanguage = { messagesTeamRemoved: '移除了1个队', messagesErrorBuildGraph: '在试图建立图表时出现了一个错误。请检查初始数据。', messagesUndoAction: '撤销', - nodeMembersCount: '{{ count }}个成员', + nodeMembersCount: '{count}个成员', nodeVariousTeams: '多个队', nodeStatusDueToday: '今天到期', - nodeStatusDueInXDays: '{{ count }}日后到期', - nodeStatusXDaysOverdue: '已过期{{ count }}日', + nodeStatusDueInXDays: '{count}日后到期', + nodeStatusXDaysOverdue: '已过期{count}日', nodeActionAddApproversBefore: '在此之前添加审批者', nodeActionAddApproversAfter: '在此之后添加审批者', nodeActionAddApproversParallel: '添加并行的审批者', @@ -228,7 +228,7 @@ export const FD_LANGUAGE_CHINESE: FdLanguage = { toolbarEditApprover: '编辑审批者', watchersInputPlaceholder: '搜索…', userListSelectedItemsCountSingular: '选择了1个项', - userListSelectedItemsCountPlural: '选择了{{ count }}个项', + userListSelectedItemsCountPlural: '选择了{count}个项', statusApproved: 'approved', statusRejected: 'rejected', statusInProgress: 'in progress', @@ -252,15 +252,15 @@ export const FD_LANGUAGE_CHINESE: FdLanguage = { searchHideAdvancedSearchLabel: '隐藏筛选', searchShowAllAdvancedSearchLabel: '显示所有筛选', searchHideAllAdvancedSearchLabel: '隐藏所有筛选', - selectTabDisplayCountLabel: '项({{ count }})', + selectTabDisplayCountLabel: '项({count})', selectTabMoreBtnLabel: '更多', - selectTabCountHiddenA11yLabel: '包含{{ rowCount }}行和{{ colCount }}列', + selectTabCountHiddenA11yLabel: '包含{rowCount}行和{colCount}列', selectMobileTabBackBtnTitle: '返回', selectMobileTabBtnOpenDialogLabel: '打开对话框', - selectMobileTabTitle: '{{ title }}标签页', + selectMobileTabTitle: '{title}标签页', selectMobileConditionEmpty: '空', defineConditionTitle: '产品', - defineConditionSelectedValueHiddenA11yLabel: '选定的值 {{ value }}', + defineConditionSelectedValueHiddenA11yLabel: '选定的值 {value}', defineConditionConditionsGroupHeaderInclude: '包含', defineConditionConditionsGroupHeaderExclude: '不包含', defineConditionFromPlaceholder: '从', @@ -281,14 +281,14 @@ export const FD_LANGUAGE_CHINESE: FdLanguage = { defineConditionConditionStrategyLabelEmpty: '空', defineConditionConditionStrategyLabelNotEqualTo: '不等于', defineConditionConditionStrategyLabelNotEmpty: '不为空', - defineConditionMaxCountError: '请最多输入{{ count }}个字符', + defineConditionMaxCountError: '请最多输入{count}个字符', selectTabTitle: '从列表选', searchTableEmptyMessage: '使用搜索获取结果', defineTabTitle: '定义条件' }, platformCombobox: { countListResultsSingular: '1条搜索结果', - countListResultsPlural: '{{ count }}条搜索结果' + countListResultsPlural: '{count}条搜索结果' }, platformMultiCombobox: { inputGlyphAriaLabel: '选择选项', @@ -298,12 +298,12 @@ export const FD_LANGUAGE_CHINESE: FdLanguage = { }, platformTextarea: { counterMessageCharactersOverTheLimitSingular: '超出1个字符', - counterMessageCharactersOverTheLimitPlural: '超出{{ count }}个字符', + counterMessageCharactersOverTheLimitPlural: '超出{count}个字符', counterMessageCharactersRemainingSingular: '还可以输入1个字符', - counterMessageCharactersRemainingPlural: '还可以输入{{ count }}个字符' + counterMessageCharactersRemainingPlural: '还可以输入{count}个字符' }, platformLink: { - roleDescriptionWithMedia: '媒体:{{ media }}' + roleDescriptionWithMedia: '媒体:{media}' }, platformList: { loadingAriaLabel: '加载中' @@ -321,13 +321,13 @@ export const FD_LANGUAGE_CHINESE: FdLanguage = { submitButtonTitle: '搜索', searchInputLabel: '搜索', synchronizeButtonTitle: '同步', - searchSuggestionMessage: '找到{{ count }}条建议。', + searchSuggestionMessage: '找到{count}条建议。', searchSuggestionNavigateMessage: '用上下方向键来导航' }, platformSmartFilterBar: { searchPlaceholder: '搜索…', submitButtonLabel: '确认', - filtersButtonLabel: '筛选({{ filtersCount }})', + filtersButtonLabel: '筛选({filtersCount})', showFiltersButtonLabel: '显示筛选', hideFiltersButtonLabel: '隐藏筛选', defineConditionsRemoveConditionButtonTitle: '移除条件', @@ -384,7 +384,7 @@ export const FD_LANGUAGE_CHINESE: FdLanguage = { P13ColumnsDialogSearchPlaceholder: '搜索…', P13ColumnsDialogsShowSelected: '显示选定的', P13ColumnsDialogShowAll: '显示全部 ', - P13ColumnsDialogSelectAll: '选择全部({{ selectedColumnsCount }} / {{ selectableColumnsCount }})', + P13ColumnsDialogSelectAll: '选择全部({selectedColumnsCount} / {selectableColumnsCount})', P13ColumnsDialogConfirmationBtnLabel: '确定', P13ColumnsDialogCancelBtnLabel: '取消', P13ColumnsDialogMoveToTopBtn: '移至顶部', @@ -409,9 +409,9 @@ export const FD_LANGUAGE_CHINESE: FdLanguage = { P13FilterBooleanOptionTrue: '是', P13FilterBooleanOptionFalse: '否', P13FilterDialogHeader: '筛选方式', - P13FilterDialogIncludePanelTitleWithCount: '包括({{ count }})', + P13FilterDialogIncludePanelTitleWithCount: '包括({count})', P13FilterDialogIncludePanelTitleWithoutCount: '包括', - P13FilterDialogExcludePanelTitleWithCount: '排除({{ count }})', + P13FilterDialogExcludePanelTitleWithCount: '排除({count})', P13FilterDialogExcludePanelTitleWithoutCount: '排除', P13FilterDialogRemoveFilterBtnTitle: '移除筛选', P13FilterDialoAddFilterBtnTitle: '添加筛选', @@ -444,7 +444,7 @@ export const FD_LANGUAGE_CHINESE: FdLanguage = { toolbarActionExpandAllButtonTitle: 'Expand all', toolbarActionCollapseAllButtonTitle: 'Collapse all', filterDialogNotFilteredLabel: '(未筛选)', - filterDialogFilterByLabel: '筛选方式:{{ filterLabel }}', + filterDialogFilterByLabel: '筛选方式:{filterLabel}', filterDialogFilterTitle: '筛选', filterDialogFilterBy: '筛选方式', filterDialogConfirmBtnLabel: '确定', @@ -487,13 +487,13 @@ export const FD_LANGUAGE_CHINESE: FdLanguage = { moveToCloseBtn: '取消', newFolderTitle: '新建文件夹', newFolderAtRootInputLabel: '新建文件夹名称', - newFolderAtFolderInputLabel: '{{ folderName }}内的新文件夹名称', + newFolderAtFolderInputLabel: '{folderName}内的新文件夹名称', newFolderInputPlaceholder: '在此输入…', - newFolderInputErrorLabel: '请最多输入{{ count }}个字符', + newFolderInputErrorLabel: '请最多输入{count}个字符', newFolderDialogCreateBtnLabel: '新建', newFolderDialogCancelBtnLabel: '取消', breadcrumbLabelAllFiles: '全部文件', - breadcrumbLabelAllFilesWithTotal: '全部文件({{ total }})', + breadcrumbLabelAllFilesWithTotal: '全部文件({total})', searchPlaceholder: '搜索…', addBtnLabel: '添加', newFolderBtnLabel: '新建文件夹', @@ -514,48 +514,46 @@ export const FD_LANGUAGE_CHINESE: FdLanguage = { dragDropAreaText: '拖动文件进行上传', noDataText: '没有发现文件', noDataDescription: '投掷文件进行上传,或使用 "添加 "按钮。', - paginationTotal: '显示{{ from }}-{{ to }}个,总共{{ total }}个', + paginationTotal: '显示{from}-{to}个,总共{total}个', resultsPerPage: '每页结果', - messageCreateFailed: '未能创建{{ folderName }}。', - messageCreateSuccess: '{{ folderName }}已被成功创建。', - messageUpdateVersionFailed: '未能更新{{ folderName }}的版本。', - messageUpdateVersionSuccess: '{{ folderName }}的版本已被更新。', - messageFileRenameFailed: '未能将"{{ from }}"重新命名为"{{ to }}"。', - messageFileRenameSuccess: '"{{ from }}"已被重新命名为"{{ to }}"。', - messageRemoveFoldersAndFilesFailed: '未能移除{{ foldersCount }}个文件夹和{{ filesCount }}个文件。', - messageRemoveFoldersAndFilesSuccess: '{{ foldersCount }}个文件夹和{{ filesCount }}个文件已被移除。', - messageRemoveFoldersFailed: '未能移除{{ foldersCount }}个文件夹。', - messageRemoveFoldersSuccess: '{{ foldersCount }}个文件夹已被移除。', - messageRemoveFilesFailed: '未能移除{{ filesCount }}个文件。', - messageRemoveFilesSuccess: '{{ filesCount }}个未见已被移除。', - messageRemoveFileOrFolderFailed: '未能移除{{ name }}。', - messageRemoveFileOrFolderSuccess: '{{ name }}已被移除。', - messageMoveFoldersAndFilesFailed: '未能将{{ foldersCount }}个文件夹和{{ filesCount }}个文件移至{{ to }}。', - messageMoveFoldersAndFilesSuccess: '{{ foldersCount }}个文件夹和{{ filesCount }}个文件已被移至{{ to }}。', - messageMoveFoldersFailed: '未能将{{ foldersCount }}个文件夹移至{{ to }}。', - messageMoveFoldersSuccess: '{{ foldersCount }}个文件夹已被移至{{ to }}。', - messageMoveFilesFailed: '未能将{{ filesCount }}个文件移至{{ to }}。', - messageMoveFilesSuccess: '{{ filesCount }}个文件已被移至{{ to }}。', - messageMoveFileOrFolderFailed: '未能将{{ name }}移至{{ to }}。', - messageMoveFileOrFolderSuccess: '{{ name }}已被移至{{ to }}。', - messageMoveRootFoldersAndFilesFailed: '未能将{{ foldersCount }}个文件夹和{{ filesCount }}个文件移至全部文件。', - messageMoveRootFoldersAndFilesSuccess: '{{ foldersCount }}个文件夹和{{ filesCount }}个文件已被移至全部文件。', - messageMoveRootFoldersFailed: '未能将{{ foldersCount }}个文件夹移至全部文件。', - messageMoveRootFoldersSuccess: '{{ foldersCount }}个文件夹已被移至到全部文件。', - messageMoveRootFilesFailed: '未能将{{ filesCount }}个文件移至全部文件。', - messageMoveRootFilesSuccess: '{{ filesCount }}个文件已被移至全部文件。', - messageMoveRootFileOrFolderFailed: '未能将{{ name }}移至全部文件。', - messageMoveRootFileOrFolderSuccess: '{{ name }}已被移至全部文件。', - messageFileTypeMismatchPlural: '{{ filesCount }}个文件的类型不符合要求。允许的文件类型:{{ allowedTypes }}。', - messageFileTypeMismatchSingular: '文件"{{ fileName }}"的类型不符合要求。允许的文件类型:{{ allowedTypes }}。', - messageFileSizeExceededPlural: - '{{ filesCount }}个文件超过了文件大小限制。允许的最大文件大小:{{ maxFileSize }}。', - messageFileSizeExceededSingular: - '文件"{{ fileName }}"超过了文件大小限制。允许的最大文件大小:{{ maxFileSize }}。', + messageCreateFailed: '未能创建{folderName}。', + messageCreateSuccess: '{folderName}已被成功创建。', + messageUpdateVersionFailed: '未能更新{folderName}的版本。', + messageUpdateVersionSuccess: '{folderName}的版本已被更新。', + messageFileRenameFailed: '未能将"{from}"重新命名为"{to}"。', + messageFileRenameSuccess: '"{from}"已被重新命名为"{to}"。', + messageRemoveFoldersAndFilesFailed: '未能移除{foldersCount}个文件夹和{filesCount}个文件。', + messageRemoveFoldersAndFilesSuccess: '{foldersCount}个文件夹和{filesCount}个文件已被移除。', + messageRemoveFoldersFailed: '未能移除{foldersCount}个文件夹。', + messageRemoveFoldersSuccess: '{foldersCount}个文件夹已被移除。', + messageRemoveFilesFailed: '未能移除{filesCount}个文件。', + messageRemoveFilesSuccess: '{filesCount}个未见已被移除。', + messageRemoveFileOrFolderFailed: '未能移除{name}。', + messageRemoveFileOrFolderSuccess: '{name}已被移除。', + messageMoveFoldersAndFilesFailed: '未能将{foldersCount}个文件夹和{filesCount}个文件移至{to}。', + messageMoveFoldersAndFilesSuccess: '{foldersCount}个文件夹和{filesCount}个文件已被移至{to}。', + messageMoveFoldersFailed: '未能将{foldersCount}个文件夹移至{to}。', + messageMoveFoldersSuccess: '{foldersCount}个文件夹已被移至{to}。', + messageMoveFilesFailed: '未能将{filesCount}个文件移至{to}。', + messageMoveFilesSuccess: '{filesCount}个文件已被移至{to}。', + messageMoveFileOrFolderFailed: '未能将{name}移至{to}。', + messageMoveFileOrFolderSuccess: '{name}已被移至{to}。', + messageMoveRootFoldersAndFilesFailed: '未能将{foldersCount}个文件夹和{filesCount}个文件移至全部文件。', + messageMoveRootFoldersAndFilesSuccess: '{foldersCount}个文件夹和{filesCount}个文件已被移至全部文件。', + messageMoveRootFoldersFailed: '未能将{foldersCount}个文件夹移至全部文件。', + messageMoveRootFoldersSuccess: '{foldersCount}个文件夹已被移至到全部文件。', + messageMoveRootFilesFailed: '未能将{filesCount}个文件移至全部文件。', + messageMoveRootFilesSuccess: '{filesCount}个文件已被移至全部文件。', + messageMoveRootFileOrFolderFailed: '未能将{name}移至全部文件。', + messageMoveRootFileOrFolderSuccess: '{name}已被移至全部文件。', + messageFileTypeMismatchPlural: '{filesCount}个文件的类型不符合要求。允许的文件类型:{allowedTypes}。', + messageFileTypeMismatchSingular: '文件"{fileName}"的类型不符合要求。允许的文件类型:{allowedTypes}。', + messageFileSizeExceededPlural: '{filesCount}个文件超过了文件大小限制。允许的最大文件大小:{maxFileSize}。', + messageFileSizeExceededSingular: '文件"{fileName}"超过了文件大小限制。允许的最大文件大小:{maxFileSize}。', messageFileNameLengthExceededPlural: - '{{ filesCount }}个文件超过了文件名称长度限制。允许的文件名称长度:{{ maxFilenameLength }}个字符。', + '{filesCount}个文件超过了文件名称长度限制。允许的文件名称长度:{maxFilenameLength}个字符。', messageFileNameLengthExceededSingular: - '名称"{{ fileName }}"超过了文件名称长度限制。允许的文件名称长度:{{ maxFilenameLength }}个字符。' + '名称"{fileName}"超过了文件名称长度限制。允许的文件名称长度:{maxFilenameLength}个字符。' }, platformWizardGenerator: { summarySectionEditStep: '编辑' @@ -602,10 +600,10 @@ export const FD_LANGUAGE_CHINESE: FdLanguage = { selectOptionLabel: '选择一个选项' }, fnSlider: { - minMaxDetails: '滑动条最小值为{{ min }},最大值为{{ max }}', - valueminDetails: '值等于{{ value }}', - valuemaxDetails: '值等于{{ value }}', - valueNowDetails: '目前值等于{{ value }}' + minMaxDetails: '滑动条最小值为{min},最大值为{max}', + valueminDetails: '值等于{value}', + valuemaxDetails: '值等于{value}', + valueNowDetails: '目前值等于{value}' }, fnSwitch: { semanticAcceptLabel: '接受', diff --git a/libs/i18n/src/lib/languages/czech.ts b/libs/i18n/src/lib/languages/czech.ts index 280f47e437a..d7e588f36c6 100644 --- a/libs/i18n/src/lib/languages/czech.ts +++ b/libs/i18n/src/lib/languages/czech.ts @@ -5,7 +5,7 @@ import { FdLanguage } from '../models/lang'; */ export const FD_LANGUAGE_CZECH: FdLanguage = { coreMultiComboBox: { - selectAllLabel: 'Vybrat vše ({{selectedItems}} z {{totalItems}})' + selectAllLabel: 'Vybrat vše ({selectedItems} z {totalItems})' }, coreCarousel: { leftNavigationBtnLabel: 'Přejít na předchozí položku', @@ -34,8 +34,8 @@ export const FD_LANGUAGE_CZECH: FdLanguage = { }, coreGridList: { filterBarCancelButtonTitle: 'Zrušit', - listItemStatusAriaLabel: 'Položka má stav. Stav: {{ status }}', - listItemCounterAriaLabel: 'Položka má {{ count }} potomků.', + listItemStatusAriaLabel: 'Položka má stav. Stav: {status}', + listItemCounterAriaLabel: 'Položka má {count} potomků.', listItemButtonDetailsTitle: 'Podrobnosti', listItemButtonDeleteTitle: 'Vymazat', listItemStatusContainsErrors: 'Obsahuje chyby', @@ -47,31 +47,31 @@ export const FD_LANGUAGE_CZECH: FdLanguage = { }, coreMultiInput: { multiInputAriaLabel: 'Multi Value Input', - tokensCountText: ({ length }) => `Contains ${length || 'no'} token${length === 1 ? '' : 's'}.` + tokensCountText: 'Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.' }, coreNavigation: { mainNavigation: 'Main Navigation', navigationPath: 'Navigation Path' }, coreNestedList: { - linkItemAriaLabel: 'Položka stromu {{ itemDetails }}, {{ index }} z {{ total }}{{ selectedDescription }}' + linkItemAriaLabel: 'Položka stromu {itemDetails}, {index} z {total}{selectedDescription}' }, coreOverflowLayout: { - moreItemsButton: '{{ count }} více' + moreItemsButton: '{count} více' }, corePagination: { - pageLabel: 'Strana {{ pageNumber }}', - currentPageAriaLabel: 'Stránka {{ pageNumber }} je aktuální stránka', + pageLabel: 'Strana {pageNumber}', + currentPageAriaLabel: 'Stránka {pageNumber} je aktuální stránka', labelBeforeInputMobile: 'Strana:', - labelAfterInputMobile: 'z {{ totalCount }}', - inputAriaLabel: 'Vstup stránky, aktuální stránka, stránka {{ pageNumber }} z {{ totalCount }}', + labelAfterInputMobile: 'z {totalCount}', + inputAriaLabel: 'Vstup stránky, aktuální stránka, stránka {pageNumber} z {totalCount}', itemsPerPageLabel: 'Výsledky na stránku:', firstLabel: 'První', previousLabel: 'Předchozí', nextLabel: 'Další', lastLabel: 'Poslední', ariaLabel: 'Stránkování', - totalResultsLabel: '{{ totalCount }} Výsledky' + totalResultsLabel: '{totalCount} Výsledky' }, coreProductSwitch: { ariaLabel: 'Přepínač produktu' @@ -82,20 +82,18 @@ export const FD_LANGUAGE_CZECH: FdLanguage = { search: 'Search' }, coreSlider: { - singleMinMaxDetails: 'Minimální hodnota posuvníku je {{ min }}, maximální hodnota je {{ max }}', - singleValueminDetails: 'Hodnota je {{ value}}', - singleValuemaxDetails: 'Hodnota je {{ value }}', - singleValueNowDetails: 'Aktuální hodnota je {{ value}}', - multipleHandle1MinMaxDetails: - 'Minimální hodnota posuvníku rozsahu je {{ min }}, maximální hodnota je {{ max }}', - multipleHandle1ValueminDetails: 'Hodnota je {{ value}}', - multipleHandle1ValuemaxDetails: 'Hodnota je {{ value}}', - multipleHandle1ValueNowDetails: 'Aktuální hodnota je {{ value}}', - multipleHandle2MinMaxDetails: - 'Minimální hodnota posuvníku rozsahu je {{ min }}, maximální hodnota je {{ max }}', - multipleHandle2ValueminDetails: 'Hodnota je {{ value }}', - multipleHandle2ValuemaxDetails: 'Hodnota je {{ value }}', - multipleHandle2ValueNowDetails: 'Aktuální hodnota je {{ value}}' + singleMinMaxDetails: 'Minimální hodnota posuvníku je {min}, maximální hodnota je {max}', + singleValueminDetails: 'Hodnota je {value}', + singleValuemaxDetails: 'Hodnota je {value}', + singleValueNowDetails: 'Aktuální hodnota je {value}', + multipleHandle1MinMaxDetails: 'Minimální hodnota posuvníku rozsahu je {min}, maximální hodnota je {max}', + multipleHandle1ValueminDetails: 'Hodnota je {value}', + multipleHandle1ValuemaxDetails: 'Hodnota je {value}', + multipleHandle1ValueNowDetails: 'Aktuální hodnota je {value}', + multipleHandle2MinMaxDetails: 'Minimální hodnota posuvníku rozsahu je {min}, maximální hodnota je {max}', + multipleHandle2ValueminDetails: 'Hodnota je {value}', + multipleHandle2ValuemaxDetails: 'Hodnota je {value}', + multipleHandle2ValueNowDetails: 'Aktuální hodnota je {value}' }, coreSplitButton: { expandButtonAriaLabel: 'Více akcí', @@ -147,7 +145,7 @@ export const FD_LANGUAGE_CZECH: FdLanguage = { ariaRoleDescription: 'token' }, coreTokenizer: { - moreLabel: '{{ count }} více' + moreLabel: '{count} více' }, coreUploadCollection: { menuOkText: 'Ok', @@ -208,11 +206,11 @@ export const FD_LANGUAGE_CZECH: FdLanguage = { messagesTeamRemoved: '1 tým byl odstraněn', messagesErrorBuildGraph: 'There was an error when trying to build graph. Check the initial data.', messagesUndoAction: 'Zpět', - nodeMembersCount: '{{ count }} členů', + nodeMembersCount: '{count} členů', nodeVariousTeams: 'Různé týmy', nodeStatusDueToday: 'Ke schválení dnes', - nodeStatusDueInXDays: ' Ke schválení za {{ count }} dní', - nodeStatusXDaysOverdue: '{{ count }} dní po schválení', + nodeStatusDueInXDays: ' Ke schválení za {count} dní', + nodeStatusXDaysOverdue: '{count} dní po schválení', nodeActionAddApproversBefore: 'Přidejte schvalovatele před', nodeActionAddApproversAfter: 'Přidejte schvalovatele za', nodeActionAddApproversParallel: 'Přidejte paralelní schvalovatele', @@ -233,7 +231,7 @@ export const FD_LANGUAGE_CZECH: FdLanguage = { toolbarEditApprover: 'Upravit schvalovatele', watchersInputPlaceholder: 'Hledej tady..', userListSelectedItemsCountSingular: 'Vybrána 1 položka', - userListSelectedItemsCountPlural: 'Počet vybraných položek: {{ count }}', + userListSelectedItemsCountPlural: 'Počet vybraných položek: {count}', statusApproved: 'approved', statusRejected: 'rejected', statusInProgress: 'in progress', @@ -257,15 +255,15 @@ export const FD_LANGUAGE_CZECH: FdLanguage = { searchHideAdvancedSearchLabel: 'Skrýt filtry', searchShowAllAdvancedSearchLabel: 'Zobrazit všechny filtry', searchHideAllAdvancedSearchLabel: 'Skrýt všechny filtry', - selectTabDisplayCountLabel: 'Položky ({{ count }})', + selectTabDisplayCountLabel: 'Položky ({count})', selectTabMoreBtnLabel: 'Více', - selectTabCountHiddenA11yLabel: 'obsahuje {{ rowCount }} řádků a {{ colCount }} sloupců', + selectTabCountHiddenA11yLabel: 'obsahuje {rowCount} řádků a {colCount} sloupců', selectMobileTabBackBtnTitle: 'Zpět', selectMobileTabBtnOpenDialogLabel: 'Otevřít dialog', - selectMobileTabTitle: 'Karta {{ title }}', + selectMobileTabTitle: 'Karta {title}', selectMobileConditionEmpty: 'Prázdný', defineConditionTitle: 'Produkt', - defineConditionSelectedValueHiddenA11yLabel: 'vybraná hodnota {{ hodnota }}', + defineConditionSelectedValueHiddenA11yLabel: 'vybraná hodnota {hodnota}', defineConditionConditionsGroupHeaderInclude: 'Zahrnout', defineConditionConditionsGroupHeaderExclude: 'Vyloučit', defineConditionFromPlaceholder: 'od', @@ -286,14 +284,14 @@ export const FD_LANGUAGE_CZECH: FdLanguage = { defineConditionConditionStrategyLabelEmpty: 'prázdný', defineConditionConditionStrategyLabelNotEqualTo: 'nerovná se', defineConditionConditionStrategyLabelNotEmpty: 'není prázdný', - defineConditionMaxCountError: 'Zadejte hodnotu s maximálně {{ count }} znaků', + defineConditionMaxCountError: 'Zadejte hodnotu s maximálně {count} znaků', selectTabTitle: 'Vyberte ze seznamu', searchTableEmptyMessage: 'K získání výsledků použijte vyhledávání', defineTabTitle: 'Definujte podmínky' }, platformCombobox: { countListResultsSingular: '1 položka výsledkové listiny', - countListResultsPlural: '{{ count }} položek výsledkového seznamu' + countListResultsPlural: '{count} položek výsledkového seznamu' }, platformMultiCombobox: { inputGlyphAriaLabel: 'Vyberte Možnosti', @@ -303,12 +301,12 @@ export const FD_LANGUAGE_CZECH: FdLanguage = { }, platformTextarea: { counterMessageCharactersOverTheLimitSingular: '1 znak nad limit', - counterMessageCharactersOverTheLimitPlural: '{{ count }} znaků překračuje limit', + counterMessageCharactersOverTheLimitPlural: '{count} znaků překračuje limit', counterMessageCharactersRemainingSingular: 'Zbývá 1 znak', - counterMessageCharactersRemainingPlural: 'Zbývá {{ count }} znaků' + counterMessageCharactersRemainingPlural: 'Zbývá {count} znaků' }, platformLink: { - roleDescriptionWithMedia: 'Médium: {{ media }}' + roleDescriptionWithMedia: 'Médium: {media}' }, platformList: { loadingAriaLabel: 'načítání' @@ -326,13 +324,13 @@ export const FD_LANGUAGE_CZECH: FdLanguage = { submitButtonTitle: 'Search', searchInputLabel: 'Search', synchronizeButtonTitle: 'Synchronizovat', - searchSuggestionMessage: 'Počet nalezených návrhů: {{ count }}.', + searchSuggestionMessage: 'Počet nalezených návrhů: {count}.', searchSuggestionNavigateMessage: 'k navigaci použijte šipky nahoru a dolů' }, platformSmartFilterBar: { searchPlaceholder: 'Vyhledávání', submitButtonLabel: 'Jdi', - filtersButtonLabel: 'Filtry ({{ filtersCount }})', + filtersButtonLabel: 'Filtry ({filtersCount})', showFiltersButtonLabel: 'Zobrazit filtry', hideFiltersButtonLabel: 'Skrýt filtry', defineConditionsRemoveConditionButtonTitle: 'Odstraňte podmínku', @@ -389,7 +387,7 @@ export const FD_LANGUAGE_CZECH: FdLanguage = { P13ColumnsDialogSearchPlaceholder: 'Vyhledávání', P13ColumnsDialogsShowSelected: 'Zobrazit vybrané', P13ColumnsDialogShowAll: 'Ukázat vše', - P13ColumnsDialogSelectAll: 'Vybrat vše ({{ selectedColumnsCount }}/{{ selectableColumnsCount }})', + P13ColumnsDialogSelectAll: 'Vybrat vše ({selectedColumnsCount}/{selectableColumnsCount})', P13ColumnsDialogConfirmationBtnLabel: 'OK', P13ColumnsDialogCancelBtnLabel: 'Zrušit', P13ColumnsDialogMoveToTopBtn: 'Přejít na začátek', @@ -414,9 +412,9 @@ export const FD_LANGUAGE_CZECH: FdLanguage = { P13FilterBooleanOptionTrue: 'Ano', P13FilterBooleanOptionFalse: 'Ne', P13FilterDialogHeader: 'Filtrovat podle', - P13FilterDialogIncludePanelTitleWithCount: 'Zahrnout ({{ count }})', + P13FilterDialogIncludePanelTitleWithCount: 'Zahrnout ({count})', P13FilterDialogIncludePanelTitleWithoutCount: 'Zahrnout', - P13FilterDialogExcludePanelTitleWithCount: 'Vyloučit ({{ count }})', + P13FilterDialogExcludePanelTitleWithCount: 'Vyloučit ({count})', P13FilterDialogExcludePanelTitleWithoutCount: 'Vyloučit', P13FilterDialogRemoveFilterBtnTitle: 'Odstraňte filtr', P13FilterDialoAddFilterBtnTitle: 'Přidat filtr', @@ -449,7 +447,7 @@ export const FD_LANGUAGE_CZECH: FdLanguage = { toolbarActionExpandAllButtonTitle: 'Rozbalit vše', toolbarActionCollapseAllButtonTitle: 'Sbalit vše', filterDialogNotFilteredLabel: '(Nefiltrováno)', - filterDialogFilterByLabel: 'Filtrovat podle: {{ filterLabel }}', + filterDialogFilterByLabel: 'Filtrovat podle: {filterLabel}', filterDialogFilterTitle: 'Filtr', filterDialogFilterBy: 'Filtrovat podle', filterDialogConfirmBtnLabel: 'OK', @@ -492,13 +490,13 @@ export const FD_LANGUAGE_CZECH: FdLanguage = { moveToCloseBtn: 'Zrušit', newFolderTitle: 'Nová složka', newFolderAtRootInputLabel: 'Název nové složky', - newFolderAtFolderInputLabel: 'Název nové složky uvnitř {{ folderName }}', + newFolderAtFolderInputLabel: 'Název nové složky uvnitř {folderName}', newFolderInputPlaceholder: 'Napište sem..', - newFolderInputErrorLabel: 'Maximální povolený počet znaků: {{ count }}', + newFolderInputErrorLabel: 'Maximální povolený počet znaků: {count}', newFolderDialogCreateBtnLabel: 'Vytvořit', newFolderDialogCancelBtnLabel: 'Zrušit', breadcrumbLabelAllFiles: 'All files', - breadcrumbLabelAllFilesWithTotal: 'Všechny soubory ({{ total }})', + breadcrumbLabelAllFilesWithTotal: 'Všechny soubory ({total})', searchPlaceholder: 'Vyhledávání', addBtnLabel: 'Přidat', newFolderBtnLabel: 'Nová složka', @@ -519,53 +517,51 @@ export const FD_LANGUAGE_CZECH: FdLanguage = { dragDropAreaText: 'Přetáhněte soubory k nahrání', noDataText: 'Nebyly nalezeny žádné soubory', noDataDescription: 'Přetáhněte soubory, které chcete nahrát, nebo použijte tlačítko „Přidat“.', - paginationTotal: 'Zobrazeno {{ from }}-{{ to }} z {{ to }}', + paginationTotal: 'Zobrazeno {from}-{to} z {to}', resultsPerPage: 'Výsledky na stránku', - messageCreateFailed: 'Vytvoření {{ folderName }} se nezdařilo.', - messageCreateSuccess: '{{ folderName }} byl vytvořen.', - messageUpdateVersionFailed: 'Aktualizace verze {{ folderName }} se nezdařila.', - messageUpdateVersionSuccess: 'Verze {{ folderName }} byla aktualizována.', - messageFileRenameFailed: 'Nepodařilo se přejmenovat "{{ from }}" na "{{ to }}."', - messageFileRenameSuccess: '"{{ from }}" bylo přejmenováno na "{{ to }}".', - messageRemoveFoldersAndFilesFailed: - 'Nepodařilo se odstranit {{ foldersCount }} složky a {{ filesCount }} soubory.', - messageRemoveFoldersAndFilesSuccess: 'Bylo odstraněno {{ foldersCount }} složek a {{ filesCount }} souborů.', - messageRemoveFoldersFailed: 'Nepodařilo se odstranit složky ({{ foldersCount }}).', - messageRemoveFoldersSuccess: 'Složky ({{ foldersCount }}) byly odstraněny.', - messageRemoveFilesFailed: 'Nepodařilo se odstranit {{ filesCount }} soubory.', - messageRemoveFilesSuccess: 'Soubory {{ filesCount }} byly odstraněny.', - messageRemoveFileOrFolderFailed: 'Nepodařilo se odstranit {{ name }}.', - messageRemoveFileOrFolderSuccess: '{{ name }} bylo odstraněno.', + messageCreateFailed: 'Vytvoření {folderName} se nezdařilo.', + messageCreateSuccess: '{folderName} byl vytvořen.', + messageUpdateVersionFailed: 'Aktualizace verze {folderName} se nezdařila.', + messageUpdateVersionSuccess: 'Verze {folderName} byla aktualizována.', + messageFileRenameFailed: 'Nepodařilo se přejmenovat "{from}" na "{to}."', + messageFileRenameSuccess: '"{from}" bylo přejmenováno na "{to}".', + messageRemoveFoldersAndFilesFailed: 'Nepodařilo se odstranit {foldersCount} složky a {filesCount} soubory.', + messageRemoveFoldersAndFilesSuccess: 'Bylo odstraněno {foldersCount} složek a {filesCount} souborů.', + messageRemoveFoldersFailed: 'Nepodařilo se odstranit složky ({foldersCount}).', + messageRemoveFoldersSuccess: 'Složky ({foldersCount}) byly odstraněny.', + messageRemoveFilesFailed: 'Nepodařilo se odstranit {filesCount} soubory.', + messageRemoveFilesSuccess: 'Soubory {filesCount} byly odstraněny.', + messageRemoveFileOrFolderFailed: 'Nepodařilo se odstranit {name}.', + messageRemoveFileOrFolderSuccess: '{name} bylo odstraněno.', messageMoveFoldersAndFilesFailed: - 'Nepodařilo se přesunout {{ foldersCount }} složky a {{ filesCount }} soubory do {{ to }}.', - messageMoveFoldersAndFilesSuccess: - 'Složky {{ foldersCount }} a soubory {{ filesCount }} byly přesunuty do {{ to }}.', - messageMoveFoldersFailed: 'Přesunutí {{ foldersCount }} složek do {{ to }} se nezdařilo.', - messageMoveFoldersSuccess: 'Složky {{ foldersCount }} byly přesunuty do {{ to }}.', - messageMoveFilesFailed: 'Přesunutí {{ filesCount }} souborů do {{ to }} se nezdařilo.', - messageMoveFilesSuccess: 'Soubory {{ filesCount }} byly přesunuty do {{ to }}.', - messageMoveFileOrFolderFailed: 'Nepodařilo se přesunout {{ name }} do {{ do }}.', - messageMoveFileOrFolderSuccess: '{{ name }} bylo přesunuto do {{ do }}.', + 'Nepodařilo se přesunout {foldersCount} složky a {filesCount} soubory do {to}.', + messageMoveFoldersAndFilesSuccess: 'Složky {foldersCount} a soubory {filesCount} byly přesunuty do {to}.', + messageMoveFoldersFailed: 'Přesunutí {foldersCount} složek do {to} se nezdařilo.', + messageMoveFoldersSuccess: 'Složky {foldersCount} byly přesunuty do {to}.', + messageMoveFilesFailed: 'Přesunutí {filesCount} souborů do {to} se nezdařilo.', + messageMoveFilesSuccess: 'Soubory {filesCount} byly přesunuty do {to}.', + messageMoveFileOrFolderFailed: 'Nepodařilo se přesunout {name} do {do}.', + messageMoveFileOrFolderSuccess: '{name} bylo přesunuto do {do}.', messageMoveRootFoldersAndFilesFailed: - 'Nepodařilo se přesunout {{ foldersCount }} složky a {{ filesCount }} soubory do všech souborů.', + 'Nepodařilo se přesunout {foldersCount} složky a {filesCount} soubory do všech souborů.', messageMoveRootFoldersAndFilesSuccess: - '{{ foldersCount }} složky a {{ filesCount }} soubory byly přesunuty do všech souborů.', - messageMoveRootFoldersFailed: 'Přesunutí {{ foldersCount }} složek do všech souborů se nezdařilo.', - messageMoveRootFoldersSuccess: 'Složky {{ foldersCount }} byly přesunuty do všech souborů.', - messageMoveRootFilesFailed: 'Nepodařilo se přesunout {{ filesCount }} soubory do všech souborů.', - messageMoveRootFilesSuccess: 'Soubory {{ filesCount }} byly přesunuty do všech souborů.', - messageMoveRootFileOrFolderFailed: 'Nepodařilo se přesunout {{ name }} do všech souborů.', - messageMoveRootFileOrFolderSuccess: '{{ name }} bylo přesunuto do všech souborů.', - messageFileTypeMismatchPlural: 'Soubory {{ filesCount }} mají nesprávný typ. Povolené typy: {{ allowTypes }}.', - messageFileTypeMismatchSingular: 'Soubor "{{ fileName }}" má nesprávný typ. Povolené typy: {{ allowTypes }}.', + '{foldersCount} složky a {filesCount} soubory byly přesunuty do všech souborů.', + messageMoveRootFoldersFailed: 'Přesunutí {foldersCount} složek do všech souborů se nezdařilo.', + messageMoveRootFoldersSuccess: 'Složky {foldersCount} byly přesunuty do všech souborů.', + messageMoveRootFilesFailed: 'Nepodařilo se přesunout {filesCount} soubory do všech souborů.', + messageMoveRootFilesSuccess: 'Soubory {filesCount} byly přesunuty do všech souborů.', + messageMoveRootFileOrFolderFailed: 'Nepodařilo se přesunout {name} do všech souborů.', + messageMoveRootFileOrFolderSuccess: '{name} bylo přesunuto do všech souborů.', + messageFileTypeMismatchPlural: 'Soubory {filesCount} mají nesprávný typ. Povolené typy: {allowTypes}.', + messageFileTypeMismatchSingular: 'Soubor "{fileName}" má nesprávný typ. Povolené typy: {allowTypes}.', messageFileSizeExceededPlural: - '{{ filesCount }} soubory překročily maximální velikost souboru. Povolená maximální velikost souboru: {{ maxFileSize }}.', + '{filesCount} soubory překročily maximální velikost souboru. Povolená maximální velikost souboru: {maxFileSize}.', messageFileSizeExceededSingular: - 'Soubor "{{ fileName }}" překročil maximální velikost souboru. Povolená maximální velikost souboru: {{ maxFileSize }}.', + 'Soubor "{fileName}" překročil maximální velikost souboru. Povolená maximální velikost souboru: {maxFileSize}.', messageFileNameLengthExceededPlural: - '{{ filesCount }} soubory překročily maximální délku souboru. Povolená délka názvu souboru: {{ maxFilenameLength }} znaků.', + '{filesCount} soubory překročily maximální délku souboru. Povolená délka názvu souboru: {maxFilenameLength} znaků.', messageFileNameLengthExceededSingular: - 'Název "{{ fileName }}" překročil maximální délku souboru. Povolená délka názvu souboru: {{ maxFilenameLength }} znaků.' + 'Název "{fileName}" překročil maximální délku souboru. Povolená délka názvu souboru: {maxFilenameLength} znaků.' }, platformWizardGenerator: { summarySectionEditStep: 'Upravit' @@ -612,10 +608,10 @@ export const FD_LANGUAGE_CZECH: FdLanguage = { selectOptionLabel: 'Vyberte možnost' }, fnSlider: { - minMaxDetails: 'Minimální hodnota posuvníku je {{ min }}, maximální hodnota je {{ max }}', - valueminDetails: 'Hodnota je {{ hodnota }}', - valuemaxDetails: 'Hodnota je {{ hodnota }}', - valueNowDetails: 'Aktuální hodnota je {{ hodnota }}' + minMaxDetails: 'Minimální hodnota posuvníku je {min}, maximální hodnota je {max}', + valueminDetails: 'Hodnota je {hodnota}', + valuemaxDetails: 'Hodnota je {hodnota}', + valueNowDetails: 'Aktuální hodnota je {hodnota}' }, fnSwitch: { semanticAcceptLabel: 'Akceptovat', diff --git a/libs/i18n/src/lib/languages/english.ts b/libs/i18n/src/lib/languages/english.ts index 15b97184524..22280a94cfc 100644 --- a/libs/i18n/src/lib/languages/english.ts +++ b/libs/i18n/src/lib/languages/english.ts @@ -5,7 +5,7 @@ import { FdLanguage } from '../models/lang'; */ export const FD_LANGUAGE_ENGLISH: FdLanguage = { coreMultiComboBox: { - selectAllLabel: 'Select all ({{selectedItems}} of {{totalItems}})' + selectAllLabel: 'Select all ({selectedItems} of {totalItems})' }, coreCarousel: { leftNavigationBtnLabel: 'Go to previous item', @@ -29,13 +29,13 @@ export const FD_LANGUAGE_ENGLISH: FdLanguage = { datetimeCancelLabel: 'Cancel' }, coreFeedListItem: { - moreLabel: '{{count}} more', + moreLabel: '{count} more', lessLabel: 'Less' }, coreGridList: { filterBarCancelButtonTitle: 'Cancel', - listItemStatusAriaLabel: 'Item has status. Status: {{ status }}.', - listItemCounterAriaLabel: 'Item has {{ count }} children.', + listItemStatusAriaLabel: 'Item has status. Status: {status}.', + listItemCounterAriaLabel: 'Item has {count} children.', listItemButtonDetailsTitle: 'Details', listItemButtonDeleteTitle: 'Delete', listItemStatusContainsErrors: 'Contains errors', @@ -47,31 +47,31 @@ export const FD_LANGUAGE_ENGLISH: FdLanguage = { }, coreMultiInput: { multiInputAriaLabel: 'Multi Value Input', - tokensCountText: ({ length }) => `Contains ${length || 'no'} token${length === 1 ? '' : 's'}.` + tokensCountText: 'Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.' }, coreNavigation: { mainNavigation: 'Main Navigation', navigationPath: 'Navigation Path' }, coreNestedList: { - linkItemAriaLabel: 'Tree Item {{ itemDetails }}, {{ index }} of {{ total }}{{ selectedDescription }}' + linkItemAriaLabel: 'Tree Item {itemDetails}, {index} of {total}{selectedDescription}' }, coreOverflowLayout: { - moreItemsButton: '{{ count }} more' + moreItemsButton: '{count} more' }, corePagination: { - pageLabel: 'Page {{ pageNumber }}', - currentPageAriaLabel: 'Page {{ pageNumber }} is current page', + pageLabel: 'Page {pageNumber}', + currentPageAriaLabel: 'Page {pageNumber} is current page', labelBeforeInputMobile: 'Page:', - labelAfterInputMobile: 'of {{ totalCount }}', - inputAriaLabel: 'Page input, Current page, Page {{ pageNumber }} of {{ totalCount }}', + labelAfterInputMobile: 'of {totalCount}', + inputAriaLabel: 'Page input, Current page, Page {pageNumber} of {totalCount}', itemsPerPageLabel: 'Results per Page:', firstLabel: 'First', previousLabel: 'Previous', nextLabel: 'Next', lastLabel: 'Last', ariaLabel: 'Pagination', - totalResultsLabel: '{{ totalCount }} Results' + totalResultsLabel: '{totalCount} Results' }, coreProductSwitch: { ariaLabel: 'Product Switch' @@ -82,18 +82,18 @@ export const FD_LANGUAGE_ENGLISH: FdLanguage = { search: 'Search' }, coreSlider: { - singleMinMaxDetails: 'Slider minimum value is {{ min }}, maximum value is {{ max }}', - singleValueminDetails: 'Value is {{ value }}', - singleValuemaxDetails: 'Value is {{ value }}', - singleValueNowDetails: 'Current value is {{ value }}', - multipleHandle1MinMaxDetails: 'Range slider minimum value is {{ min }}, maximum value is {{ max }}', - multipleHandle1ValueminDetails: 'Value is {{ value }}', - multipleHandle1ValuemaxDetails: 'Value is {{ value }}', - multipleHandle1ValueNowDetails: 'Current value is {{ value }}', - multipleHandle2MinMaxDetails: 'Range slider minimum value is {{ min }}, maximum value is {{ max }}', - multipleHandle2ValueminDetails: 'Value is {{ value }}', - multipleHandle2ValuemaxDetails: 'Value is {{ value }}', - multipleHandle2ValueNowDetails: 'Current value is {{ value }}' + singleMinMaxDetails: 'Slider minimum value is {min}, maximum value is {max}', + singleValueminDetails: 'Value is {value}', + singleValuemaxDetails: 'Value is {value}', + singleValueNowDetails: 'Current value is {value}', + multipleHandle1MinMaxDetails: 'Range slider minimum value is {min}, maximum value is {max}', + multipleHandle1ValueminDetails: 'Value is {value}', + multipleHandle1ValuemaxDetails: 'Value is {value}', + multipleHandle1ValueNowDetails: 'Current value is {value}', + multipleHandle2MinMaxDetails: 'Range slider minimum value is {min}, maximum value is {max}', + multipleHandle2ValueminDetails: 'Value is {value}', + multipleHandle2ValuemaxDetails: 'Value is {value}', + multipleHandle2ValueNowDetails: 'Current value is {value}' }, coreSplitButton: { expandButtonAriaLabel: 'More actions', @@ -115,7 +115,7 @@ export const FD_LANGUAGE_ENGLISH: FdLanguage = { tabListExpandButtonText: 'More' }, coreText: { - moreLabel: '{{count}} more', + moreLabel: '{count} more', lessLabel: 'Less' }, coreTime: { @@ -144,7 +144,7 @@ export const FD_LANGUAGE_ENGLISH: FdLanguage = { ariaRoleDescription: 'token' }, coreTokenizer: { - moreLabel: '{{count}} more' + moreLabel: '{count} more' }, coreUploadCollection: { menuOkText: 'Ok', @@ -204,11 +204,11 @@ export const FD_LANGUAGE_ENGLISH: FdLanguage = { messagesTeamRemoved: '1 team has been removed', messagesErrorBuildGraph: 'There was an error when trying to build graph. Check the initial data.', messagesUndoAction: 'Undo', - nodeMembersCount: '{{ count }} members', + nodeMembersCount: '{count} members', nodeVariousTeams: 'Various teams', nodeStatusDueToday: 'Due today', - nodeStatusDueInXDays: ' Due in {{ count }} days', - nodeStatusXDaysOverdue: '{{ count }} days overdue', + nodeStatusDueInXDays: ' Due in {count} days', + nodeStatusXDaysOverdue: '{count} days overdue', nodeActionAddApproversBefore: 'Add approvers before', nodeActionAddApproversAfter: 'Add approvers after', nodeActionAddApproversParallel: 'Add parallel approvers', @@ -229,7 +229,7 @@ export const FD_LANGUAGE_ENGLISH: FdLanguage = { toolbarEditApprover: 'Edit approver', watchersInputPlaceholder: 'Search here..', userListSelectedItemsCountSingular: '1 item selected', - userListSelectedItemsCountPlural: '{{ count }} items selected', + userListSelectedItemsCountPlural: '{count} items selected', statusApproved: 'approved', statusRejected: 'rejected', statusInProgress: 'in progress', @@ -253,15 +253,15 @@ export const FD_LANGUAGE_ENGLISH: FdLanguage = { searchHideAdvancedSearchLabel: 'Hide filters', searchShowAllAdvancedSearchLabel: 'Show all filters', searchHideAllAdvancedSearchLabel: 'Hide all filters', - selectTabDisplayCountLabel: 'Items ({{ count }})', + selectTabDisplayCountLabel: 'Items ({count})', selectTabMoreBtnLabel: 'More', - selectTabCountHiddenA11yLabel: 'contains {{ rowCount }} rows and {{ colCount }} columns', + selectTabCountHiddenA11yLabel: 'contains {rowCount} rows and {colCount} columns', selectMobileTabBackBtnTitle: 'Back', selectMobileTabBtnOpenDialogLabel: 'Open dialog', - selectMobileTabTitle: '{{ title }} tab', + selectMobileTabTitle: '{title} tab', selectMobileConditionEmpty: 'Empty', defineConditionTitle: 'Product', - defineConditionSelectedValueHiddenA11yLabel: 'selected value {{ value }}', + defineConditionSelectedValueHiddenA11yLabel: 'selected value {value}', defineConditionConditionsGroupHeaderInclude: 'Include', defineConditionConditionsGroupHeaderExclude: 'Exclude', defineConditionFromPlaceholder: 'from', @@ -282,14 +282,14 @@ export const FD_LANGUAGE_ENGLISH: FdLanguage = { defineConditionConditionStrategyLabelEmpty: 'empty', defineConditionConditionStrategyLabelNotEqualTo: 'not equal to', defineConditionConditionStrategyLabelNotEmpty: 'not empty', - defineConditionMaxCountError: 'Enter a value with no more than {{ count }} characters', + defineConditionMaxCountError: 'Enter a value with no more than {count} characters', selectTabTitle: 'Select from list', searchTableEmptyMessage: 'Use the search to get results', defineTabTitle: 'Define Conditions' }, platformCombobox: { countListResultsSingular: '1 result list item', - countListResultsPlural: '{{ count }} result list items' + countListResultsPlural: '{count} result list items' }, platformMultiCombobox: { inputGlyphAriaLabel: 'Select Options', @@ -299,12 +299,12 @@ export const FD_LANGUAGE_ENGLISH: FdLanguage = { }, platformTextarea: { counterMessageCharactersOverTheLimitSingular: '1 character over the limit', - counterMessageCharactersOverTheLimitPlural: '{{ count }} characters over the limit', + counterMessageCharactersOverTheLimitPlural: '{count} characters over the limit', counterMessageCharactersRemainingSingular: '1 character remaining', - counterMessageCharactersRemainingPlural: '{{ count }} characters remaining' + counterMessageCharactersRemainingPlural: '{count} characters remaining' }, platformLink: { - roleDescriptionWithMedia: 'Media: {{ media }}' + roleDescriptionWithMedia: 'Media: {media}' }, platformList: { loadingAriaLabel: 'loading' @@ -322,13 +322,13 @@ export const FD_LANGUAGE_ENGLISH: FdLanguage = { submitButtonTitle: 'Search', searchInputLabel: 'Search', synchronizeButtonTitle: 'Synchronize', - searchSuggestionMessage: '{{ count }} suggestions found.', + searchSuggestionMessage: '{count} suggestions found.', searchSuggestionNavigateMessage: 'use up and down arrows to navigate' }, platformSmartFilterBar: { searchPlaceholder: 'Search', submitButtonLabel: 'Go', - filtersButtonLabel: 'Filters ({{ filtersCount }})', + filtersButtonLabel: 'Filters ({filtersCount})', showFiltersButtonLabel: 'Show filters', hideFiltersButtonLabel: 'Hide filters', defineConditionsRemoveConditionButtonTitle: 'Remove condition', @@ -385,7 +385,7 @@ export const FD_LANGUAGE_ENGLISH: FdLanguage = { P13ColumnsDialogSearchPlaceholder: 'Search', P13ColumnsDialogsShowSelected: 'Show Selected', P13ColumnsDialogShowAll: 'Show all', - P13ColumnsDialogSelectAll: 'Select All ({{ selectedColumnsCount }}/{{ selectableColumnsCount }})', + P13ColumnsDialogSelectAll: 'Select All ({selectedColumnsCount}/{selectableColumnsCount})', P13ColumnsDialogConfirmationBtnLabel: 'OK', P13ColumnsDialogCancelBtnLabel: 'Cancel', P13ColumnsDialogMoveToTopBtn: 'Move to Top', @@ -410,9 +410,9 @@ export const FD_LANGUAGE_ENGLISH: FdLanguage = { P13FilterBooleanOptionTrue: 'Yes', P13FilterBooleanOptionFalse: 'No', P13FilterDialogHeader: 'Filter By', - P13FilterDialogIncludePanelTitleWithCount: 'Include ({{ count }})', + P13FilterDialogIncludePanelTitleWithCount: 'Include ({count})', P13FilterDialogIncludePanelTitleWithoutCount: 'Include', - P13FilterDialogExcludePanelTitleWithCount: 'Exclude ({{ count }})', + P13FilterDialogExcludePanelTitleWithCount: 'Exclude ({count})', P13FilterDialogExcludePanelTitleWithoutCount: 'Exclude', P13FilterDialogRemoveFilterBtnTitle: 'Remove Filter', P13FilterDialoAddFilterBtnTitle: 'Add Filter', @@ -445,7 +445,7 @@ export const FD_LANGUAGE_ENGLISH: FdLanguage = { toolbarActionExpandAllButtonTitle: 'Expand all', toolbarActionCollapseAllButtonTitle: 'Collapse all', filterDialogNotFilteredLabel: '(Not Filtered)', - filterDialogFilterByLabel: 'Filter by: {{ filterLabel }}', + filterDialogFilterByLabel: 'Filter by: {filterLabel}', filterDialogFilterTitle: 'Filter', filterDialogFilterBy: 'Filter By', filterDialogConfirmBtnLabel: 'OK', @@ -488,13 +488,13 @@ export const FD_LANGUAGE_ENGLISH: FdLanguage = { moveToCloseBtn: 'Cancel', newFolderTitle: 'New folder', newFolderAtRootInputLabel: 'Name of new folder', - newFolderAtFolderInputLabel: 'Name of new folder inside of {{ folderName }}', + newFolderAtFolderInputLabel: 'Name of new folder inside of {folderName}', newFolderInputPlaceholder: 'Type here..', - newFolderInputErrorLabel: 'Maximum {{ count }} characters allowed', + newFolderInputErrorLabel: 'Maximum {count} characters allowed', newFolderDialogCreateBtnLabel: 'Create', newFolderDialogCancelBtnLabel: 'Cancel', breadcrumbLabelAllFiles: 'All files', - breadcrumbLabelAllFilesWithTotal: 'All files ({{ total }})', + breadcrumbLabelAllFilesWithTotal: 'All files ({total})', searchPlaceholder: 'Search', addBtnLabel: 'Add', newFolderBtnLabel: 'New Folder', @@ -515,53 +515,50 @@ export const FD_LANGUAGE_ENGLISH: FdLanguage = { dragDropAreaText: 'Drag files to upload', noDataText: 'No files found', noDataDescription: 'Drop files to upload, or use the “Add” button.', - paginationTotal: 'Showing {{ from }}-{{ to }} of {{ total }}', + paginationTotal: 'Showing {from}-{to} of {total}', resultsPerPage: 'Results per page', - messageCreateFailed: 'Failed to create {{ folderName }}.', - messageCreateSuccess: '{{ folderName }} has been created.', - messageUpdateVersionFailed: 'Failed to update version of {{ folderName }}.', - messageUpdateVersionSuccess: '{{ folderName }} version has been updated.', - messageFileRenameFailed: 'Failed to rename "{{ from }}" to "{{ to }}."', - messageFileRenameSuccess: '"{{ from }}" has been renamed to "{{ to }}".', - messageRemoveFoldersAndFilesFailed: 'Failed to remove {{ foldersCount }} folders and {{ filesCount }} files.', - messageRemoveFoldersAndFilesSuccess: '{{ foldersCount }} folders and {{ filesCount }} files have been removed.', - messageRemoveFoldersFailed: 'Failed to remove {{ foldersCount }} folders.', - messageRemoveFoldersSuccess: '{{ foldersCount }} folders have been removed.', - messageRemoveFilesFailed: 'Failed to remove {{ filesCount }} files.', - messageRemoveFilesSuccess: '{{ filesCount }} files have been removed.', - messageRemoveFileOrFolderFailed: 'Failed to remove {{ name }}.', - messageRemoveFileOrFolderSuccess: '{{ name }} has been removed.', - messageMoveFoldersAndFilesFailed: - 'Failed to move {{ foldersCount }} folders and {{ filesCount }} files to {{ to }}.', - messageMoveFoldersAndFilesSuccess: - '{{ foldersCount }} folders and {{ filesCount }} files have been moved to {{ to }}.', - messageMoveFoldersFailed: 'Failed to move {{ foldersCount }} folders to {{ to }}.', - messageMoveFoldersSuccess: '{{ foldersCount }} folders have been moved to {{ to }}.', - messageMoveFilesFailed: 'Failed to move {{ filesCount }} files to {{ to }}.', - messageMoveFilesSuccess: '{{ filesCount }} files have been moved to {{ to }}.', - messageMoveFileOrFolderFailed: 'Failed to move {{ name }} to {{ to }}.', - messageMoveFileOrFolderSuccess: '{{ name }} has been moved to {{ to }}.', + messageCreateFailed: 'Failed to create {folderName}.', + messageCreateSuccess: '{folderName} has been created.', + messageUpdateVersionFailed: 'Failed to update version of {folderName}.', + messageUpdateVersionSuccess: '{folderName} version has been updated.', + messageFileRenameFailed: 'Failed to rename "{from}" to "{to}."', + messageFileRenameSuccess: '"{from}" has been renamed to "{to}".', + messageRemoveFoldersAndFilesFailed: 'Failed to remove {foldersCount} folders and {filesCount} files.', + messageRemoveFoldersAndFilesSuccess: '{foldersCount} folders and {filesCount} files have been removed.', + messageRemoveFoldersFailed: 'Failed to remove {foldersCount} folders.', + messageRemoveFoldersSuccess: '{foldersCount} folders have been removed.', + messageRemoveFilesFailed: 'Failed to remove {filesCount} files.', + messageRemoveFilesSuccess: '{filesCount} files have been removed.', + messageRemoveFileOrFolderFailed: 'Failed to remove {name}.', + messageRemoveFileOrFolderSuccess: '{name} has been removed.', + messageMoveFoldersAndFilesFailed: 'Failed to move {foldersCount} folders and {filesCount} files to {to}.', + messageMoveFoldersAndFilesSuccess: '{foldersCount} folders and {filesCount} files have been moved to {to}.', + messageMoveFoldersFailed: 'Failed to move {foldersCount} folders to {to}.', + messageMoveFoldersSuccess: '{foldersCount} folders have been moved to {to}.', + messageMoveFilesFailed: 'Failed to move {filesCount} files to {to}.', + messageMoveFilesSuccess: '{filesCount} files have been moved to {to}.', + messageMoveFileOrFolderFailed: 'Failed to move {name} to {to}.', + messageMoveFileOrFolderSuccess: '{name} has been moved to {to}.', messageMoveRootFoldersAndFilesFailed: - 'Failed to move {{ foldersCount }} folders and {{ filesCount }} files to all files.', + 'Failed to move {foldersCount} folders and {filesCount} files to all files.', messageMoveRootFoldersAndFilesSuccess: - '{{ foldersCount }} folders and {{ filesCount }} files have been moved to all files.', - messageMoveRootFoldersFailed: 'Failed to move {{ foldersCount }} folders to all files.', - messageMoveRootFoldersSuccess: '{{ foldersCount }} folders have been moved to all files.', - messageMoveRootFilesFailed: 'Failed to move {{ filesCount }} files to all files.', - messageMoveRootFilesSuccess: '{{ filesCount }} files have been moved to all files.', - messageMoveRootFileOrFolderFailed: 'Failed to move {{ name }} to all files.', - messageMoveRootFileOrFolderSuccess: '{{ name }} has been moved to all files.', - messageFileTypeMismatchPlural: '{{ filesCount }} files have the wrong type. Allowed types: {{ allowedTypes }}.', - messageFileTypeMismatchSingular: - 'The file "{{ fileName }}" has the wrong type. Allowed types: {{ allowedTypes }}.', + '{foldersCount} folders and {filesCount} files have been moved to all files.', + messageMoveRootFoldersFailed: 'Failed to move {foldersCount} folders to all files.', + messageMoveRootFoldersSuccess: '{foldersCount} folders have been moved to all files.', + messageMoveRootFilesFailed: 'Failed to move {filesCount} files to all files.', + messageMoveRootFilesSuccess: '{filesCount} files have been moved to all files.', + messageMoveRootFileOrFolderFailed: 'Failed to move {name} to all files.', + messageMoveRootFileOrFolderSuccess: '{name} has been moved to all files.', + messageFileTypeMismatchPlural: '{filesCount} files have the wrong type. Allowed types: {allowedTypes}.', + messageFileTypeMismatchSingular: 'The file "{fileName}" has the wrong type. Allowed types: {allowedTypes}.', messageFileSizeExceededPlural: - '{{ filesCount }} files exceeded the maximum file size. Allowed max file size: {{ maxFileSize }}.', + '{filesCount} files exceeded the maximum file size. Allowed max file size: {maxFileSize}.', messageFileSizeExceededSingular: - 'The file "{{ fileName }}" exceeded the maximum file size. Allowed max file size: {{ maxFileSize }}.', + 'The file "{fileName}" exceeded the maximum file size. Allowed max file size: {maxFileSize}.', messageFileNameLengthExceededPlural: - '{{ filesCount }} files exceeded the maximum filename length. Allowed filename length: {{ maxFilenameLength }} characters.', + '{filesCount} files exceeded the maximum filename length. Allowed filename length: {maxFilenameLength} characters.', messageFileNameLengthExceededSingular: - 'The name "{{ fileName }}" exceeded the maximum filename length. Allowed filename length: {{ maxFilenameLength }} characters.' + 'The name "{fileName}" exceeded the maximum filename length. Allowed filename length: {maxFilenameLength} characters.' }, platformWizardGenerator: { summarySectionEditStep: 'Edit' @@ -608,10 +605,10 @@ export const FD_LANGUAGE_ENGLISH: FdLanguage = { selectOptionLabel: 'Select an Option' }, fnSlider: { - minMaxDetails: 'Slider minimum value is {{ min }}, maximum value is {{ max }}', - valueminDetails: 'Value is {{ value }}', - valuemaxDetails: 'Value is {{ value }}', - valueNowDetails: 'Current value is {{ value }}' + minMaxDetails: 'Slider minimum value is {min}, maximum value is {max}', + valueminDetails: 'Value is {value}', + valuemaxDetails: 'Value is {value}', + valueNowDetails: 'Current value is {value}' }, fnSwitch: { semanticAcceptLabel: 'Accept', diff --git a/libs/i18n/src/lib/languages/french.ts b/libs/i18n/src/lib/languages/french.ts index 5311d60ac0d..bd3648dc077 100644 --- a/libs/i18n/src/lib/languages/french.ts +++ b/libs/i18n/src/lib/languages/french.ts @@ -5,7 +5,7 @@ import { FdLanguage } from '../models/lang'; */ export const FD_LANGUAGE_FRENCH: FdLanguage = { coreMultiComboBox: { - selectAllLabel: 'Tout sélectionner ({{selectedItems}} sur {{totalItems}})' + selectAllLabel: 'Tout sélectionner ({selectedItems} sur {totalItems})' }, coreCarousel: { leftNavigationBtnLabel: "Aller à l'élément précédent", @@ -34,8 +34,8 @@ export const FD_LANGUAGE_FRENCH: FdLanguage = { }, coreGridList: { filterBarCancelButtonTitle: 'Annuler', - listItemStatusAriaLabel: "L'élément a un statut. Statut: {{ status }}.", - listItemCounterAriaLabel: "L'élément a {{ count }} d'enfants.", + listItemStatusAriaLabel: "L'élément a un statut. Statut: {status}.", + listItemCounterAriaLabel: "L'élément a {count} d'enfants.", listItemButtonDetailsTitle: 'Détails', listItemButtonDeleteTitle: 'Supprimer', listItemStatusContainsErrors: 'Comporte des erreurs', @@ -44,7 +44,7 @@ export const FD_LANGUAGE_FRENCH: FdLanguage = { }, coreMultiInput: { multiInputAriaLabel: 'Multi Value Input', - tokensCountText: ({ length }) => `Contains ${length || 'no'} token${length === 1 ? '' : 's'}.` + tokensCountText: 'Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.' }, coreMessageStrip: { dismissLabel: 'Rejeter' @@ -54,25 +54,24 @@ export const FD_LANGUAGE_FRENCH: FdLanguage = { navigationPath: 'Navigation Path' }, coreNestedList: { - linkItemAriaLabel: - "Élément de l'arborescence {{ itemDetails }}, {{ index }} of {{ total }}{{ selectedDescription }}" + linkItemAriaLabel: "Élément de l'arborescence {itemDetails}, {index} of {total}{selectedDescription}" }, coreOverflowLayout: { - moreItemsButton: '{{ count }} plus' + moreItemsButton: '{count} plus' }, corePagination: { - pageLabel: 'Page {{ pageNumber }}', - currentPageAriaLabel: 'Page {{ pageNumber }} est la page en cours', + pageLabel: 'Page {pageNumber}', + currentPageAriaLabel: 'Page {pageNumber} est la page en cours', labelBeforeInputMobile: 'Page:', - labelAfterInputMobile: 'de {{ totalCount }}', - inputAriaLabel: 'Entrée de page, Page actuelle, Page {{ pageNumber }} of {{ totalCount }}', + labelAfterInputMobile: 'de {totalCount}', + inputAriaLabel: 'Entrée de page, Page actuelle, Page {pageNumber} of {totalCount}', itemsPerPageLabel: 'Résultats par pages:', firstLabel: 'Premier', previousLabel: 'Précédent', nextLabel: 'Prochain', lastLabel: 'Dernier', ariaLabel: 'Pagination', - totalResultsLabel: '{{ totalCount }} Résultats' + totalResultsLabel: '{totalCount} Résultats' }, coreProductSwitch: { ariaLabel: 'Échange de produit' @@ -83,18 +82,18 @@ export const FD_LANGUAGE_FRENCH: FdLanguage = { search: 'Search' }, coreSlider: { - singleMinMaxDetails: 'La valeur minimale du curseur est {{ min }}, la valeur maximale est {{ max }}', - singleValueminDetails: 'La valeur est {{ value }}', - singleValuemaxDetails: 'La valeur est {{ value }}', - singleValueNowDetails: 'La valeur actuelle est {{ value }}', - multipleHandle1MinMaxDetails: 'La valeur minimale du curseur est {{ min }}, la valeur maximale est {{ max }}', - multipleHandle1ValueminDetails: 'La valeur est {{ value }}', - multipleHandle1ValuemaxDetails: 'La valeur est {{ value }}', - multipleHandle1ValueNowDetails: 'La valeur actuelle est {{ value }}', - multipleHandle2MinMaxDetails: 'La valeur minimale du curseur est {{ min }}, la valeur maximale est {{ max }}', - multipleHandle2ValueminDetails: 'La valeur est {{ value }}', - multipleHandle2ValuemaxDetails: 'La valeur est {{ value }}', - multipleHandle2ValueNowDetails: 'La valeur actuelle est {{ value }}' + singleMinMaxDetails: 'La valeur minimale du curseur est {min}, la valeur maximale est {max}', + singleValueminDetails: 'La valeur est {value}', + singleValuemaxDetails: 'La valeur est {value}', + singleValueNowDetails: 'La valeur actuelle est {value}', + multipleHandle1MinMaxDetails: 'La valeur minimale du curseur est {min}, la valeur maximale est {max}', + multipleHandle1ValueminDetails: 'La valeur est {value}', + multipleHandle1ValuemaxDetails: 'La valeur est {value}', + multipleHandle1ValueNowDetails: 'La valeur actuelle est {value}', + multipleHandle2MinMaxDetails: 'La valeur minimale du curseur est {min}, la valeur maximale est {max}', + multipleHandle2ValueminDetails: 'La valeur est {value}', + multipleHandle2ValuemaxDetails: 'La valeur est {value}', + multipleHandle2ValueNowDetails: 'La valeur actuelle est {value}' }, coreSplitButton: { expandButtonAriaLabel: "Plus d'actions", @@ -146,7 +145,7 @@ export const FD_LANGUAGE_FRENCH: FdLanguage = { ariaRoleDescription: 'jeton' }, coreTokenizer: { - moreLabel: '{{ count }} plus' + moreLabel: '{count} plus' }, coreUploadCollection: { menuOkText: 'Ok', @@ -208,11 +207,11 @@ export const FD_LANGUAGE_FRENCH: FdLanguage = { messagesErrorBuildGraph: 'Il y a eu une erreur en essayant de construire le graphique. Vérifiez les données initiales', messagesUndoAction: 'Annuler', - nodeMembersCount: '{{nombre }} membres', + nodeMembersCount: '{nombre} membres', nodeVariousTeams: 'Plusieurs équipes', nodeStatusDueToday: "À rendre aujourd'hui", - nodeStatusDueInXDays: ' Échéance dans {{nombre }} jours', - nodeStatusXDaysOverdue: '{{nombre}} jours de retard', + nodeStatusDueInXDays: ' Échéance dans {nombre} jours', + nodeStatusXDaysOverdue: '{nombre} jours de retard', nodeActionAddApproversBefore: 'Ajoutez des approbateurs avant', nodeActionAddApproversAfter: 'Ajoutez des approbateurs après', nodeActionAddApproversParallel: 'Ajouter des approbateurs en parallèle', @@ -233,7 +232,7 @@ export const FD_LANGUAGE_FRENCH: FdLanguage = { toolbarEditApprover: "Editer l'approbateur", watchersInputPlaceholder: 'Rechercher ici..', userListSelectedItemsCountSingular: '1 élément sélectionné', - userListSelectedItemsCountPlural: '{{ count }} éléments sélectionnés', + userListSelectedItemsCountPlural: '{count} éléments sélectionnés', statusApproved: 'approved', statusRejected: 'rejected', statusInProgress: 'in progress', @@ -257,15 +256,15 @@ export const FD_LANGUAGE_FRENCH: FdLanguage = { searchHideAdvancedSearchLabel: 'Masquer les filtres', searchShowAllAdvancedSearchLabel: 'Afficher tous les filtres', searchHideAllAdvancedSearchLabel: 'Masquer tous les filtres', - selectTabDisplayCountLabel: 'Articles ({{ count }})', + selectTabDisplayCountLabel: 'Articles ({count})', selectTabMoreBtnLabel: "Plus d'infos", - selectTabCountHiddenA11yLabel: 'contient {{ rowCount }} lignes et {{ colCount }} colonnes', + selectTabCountHiddenA11yLabel: 'contient {rowCount} lignes et {colCount} colonnes', selectMobileTabBackBtnTitle: 'Retour', selectMobileTabBtnOpenDialogLabel: 'Ouvrir la boîte de dialogue', - selectMobileTabTitle: '{{ title }} onglet', + selectMobileTabTitle: '{title} onglet', selectMobileConditionEmpty: 'Vide', defineConditionTitle: 'Produit', - defineConditionSelectedValueHiddenA11yLabel: 'valeur sélectionnée {{ value }}', + defineConditionSelectedValueHiddenA11yLabel: 'valeur sélectionnée {value}', defineConditionConditionsGroupHeaderInclude: 'Inclure', defineConditionConditionsGroupHeaderExclude: 'Exclure', defineConditionFromPlaceholder: 'de', @@ -286,14 +285,14 @@ export const FD_LANGUAGE_FRENCH: FdLanguage = { defineConditionConditionStrategyLabelEmpty: 'vide', defineConditionConditionStrategyLabelNotEqualTo: 'pas égal à', defineConditionConditionStrategyLabelNotEmpty: 'non vide', - defineConditionMaxCountError: 'Entrez une valeur ne contenant pas plus de {{ count }} caractères', + defineConditionMaxCountError: 'Entrez une valeur ne contenant pas plus de {count} caractères', selectTabTitle: 'Sélectionnez dans la liste', searchTableEmptyMessage: 'Utilisez la recherche pour obtenir des résultats', defineTabTitle: 'Définir les conditions' }, platformCombobox: { countListResultsSingular: "1 resultat sur la liste d'éléments", - countListResultsPlural: '{{ count }} éléments de la liste de résultats' + countListResultsPlural: '{count} éléments de la liste de résultats' }, platformMultiCombobox: { inputGlyphAriaLabel: 'Sélectionnez les options', @@ -303,12 +302,12 @@ export const FD_LANGUAGE_FRENCH: FdLanguage = { }, platformTextarea: { counterMessageCharactersOverTheLimitSingular: '1 caractère au-dessus de la limite', - counterMessageCharactersOverTheLimitPlural: '{{ count }} de caractères au-delà de la limite', + counterMessageCharactersOverTheLimitPlural: '{count} de caractères au-delà de la limite', counterMessageCharactersRemainingSingular: '1 seul caractère restant', - counterMessageCharactersRemainingPlural: '{{ count }} de caractères restants' + counterMessageCharactersRemainingPlural: '{count} de caractères restants' }, platformLink: { - roleDescriptionWithMedia: 'Média: {{ media }}' + roleDescriptionWithMedia: 'Média: {media}' }, platformList: { loadingAriaLabel: 'chargement' @@ -326,13 +325,13 @@ export const FD_LANGUAGE_FRENCH: FdLanguage = { submitButtonTitle: 'Rechercher', searchInputLabel: 'Rechercher', synchronizeButtonTitle: 'Synchroniser', - searchSuggestionMessage: '{{ count }} de suggestions trouvées', + searchSuggestionMessage: '{count} de suggestions trouvées', searchSuggestionNavigateMessage: 'utiliser les flèches haut et bas pour naviguer' }, platformSmartFilterBar: { searchPlaceholder: 'Rechercher', submitButtonLabel: 'Aller', - filtersButtonLabel: 'Filtres ({{ filtersCount }})', + filtersButtonLabel: 'Filtres ({filtersCount})', showFiltersButtonLabel: 'Affichez les filtres', hideFiltersButtonLabel: 'Masquer les filtres', defineConditionsRemoveConditionButtonTitle: 'Supprimer la condition', @@ -389,7 +388,7 @@ export const FD_LANGUAGE_FRENCH: FdLanguage = { P13ColumnsDialogSearchPlaceholder: 'Recherchez', P13ColumnsDialogsShowSelected: 'Afficher la sélection', P13ColumnsDialogShowAll: 'Afficher tout', - P13ColumnsDialogSelectAll: 'Sélectionner tout ({{ selectedColumnsCount }}/{{ selectableColumnsCount }})', + P13ColumnsDialogSelectAll: 'Sélectionner tout ({selectedColumnsCount}/{selectableColumnsCount})', P13ColumnsDialogConfirmationBtnLabel: 'OK', P13ColumnsDialogCancelBtnLabel: 'Annuler', P13ColumnsDialogMoveToTopBtn: 'Haut de page', @@ -414,9 +413,9 @@ export const FD_LANGUAGE_FRENCH: FdLanguage = { P13FilterBooleanOptionTrue: 'Oui', P13FilterBooleanOptionFalse: 'Non', P13FilterDialogHeader: 'Filtrer par', - P13FilterDialogIncludePanelTitleWithCount: 'Inclure ({{ count }})', + P13FilterDialogIncludePanelTitleWithCount: 'Inclure ({count})', P13FilterDialogIncludePanelTitleWithoutCount: 'Inclure', - P13FilterDialogExcludePanelTitleWithCount: 'Exclure ({{ count }})', + P13FilterDialogExcludePanelTitleWithCount: 'Exclure ({count})', P13FilterDialogExcludePanelTitleWithoutCount: 'Exclure', P13FilterDialogRemoveFilterBtnTitle: 'Supprimer le filtre', P13FilterDialoAddFilterBtnTitle: 'Ajouter un filtre', @@ -449,7 +448,7 @@ export const FD_LANGUAGE_FRENCH: FdLanguage = { toolbarActionExpandAllButtonTitle: 'Expand all', toolbarActionCollapseAllButtonTitle: 'Collapse all', filterDialogNotFilteredLabel: '(Non filtré)', - filterDialogFilterByLabel: 'Filtrer par: {{ filterLabel }}', + filterDialogFilterByLabel: 'Filtrer par: {filterLabel}', filterDialogFilterTitle: 'Filtre', filterDialogFilterBy: 'Filtrer par', filterDialogConfirmBtnLabel: 'OK', @@ -492,13 +491,13 @@ export const FD_LANGUAGE_FRENCH: FdLanguage = { moveToCloseBtn: 'Annuler', newFolderTitle: 'Nouveau dossier', newFolderAtRootInputLabel: 'Nom du nouveau dossier', - newFolderAtFolderInputLabel: 'Nom du nouveau dossier dans {{ folderName }}', + newFolderAtFolderInputLabel: 'Nom du nouveau dossier dans {folderName}', newFolderInputPlaceholder: 'Saisissez ici..', - newFolderInputErrorLabel: 'Maximum {{ count }} de caractères autorisés', + newFolderInputErrorLabel: 'Maximum {count} de caractères autorisés', newFolderDialogCreateBtnLabel: 'Créer', newFolderDialogCancelBtnLabel: 'Annuler', breadcrumbLabelAllFiles: 'Tous les fichiers', - breadcrumbLabelAllFilesWithTotal: 'Tous les fichiers ({{ total }})', + breadcrumbLabelAllFilesWithTotal: 'Tous les fichiers ({total})', searchPlaceholder: 'Recherchez', addBtnLabel: 'Ajouter', newFolderBtnLabel: 'Nouveau dossier', @@ -519,57 +518,57 @@ export const FD_LANGUAGE_FRENCH: FdLanguage = { dragDropAreaText: 'Faites glisser les fichiers à télécharger', noDataText: 'Aucun fichier trouvé', noDataDescription: 'Déposez les fichiers à télécharger, ou utilisez le bouton "Ajouter"..', - paginationTotal: 'Affichage de {{ from }}-{ to }} de {{ total }}', + paginationTotal: 'Affichage de {from}-{ to} de {total}', resultsPerPage: 'Résultats par page', - messageCreateFailed: 'Échec de la création de {{ folderName }}.', - messageCreateSuccess: '{{ folderName }} a été créé.', - messageUpdateVersionFailed: 'Impossible de mettre à jour la version de {{ folderName }}.', - messageUpdateVersionSuccess: 'La version de {{ folderName }} a été mise à jour.', - messageFileRenameFailed: 'Impossible de renommer "{{ from }}" en "{{ to }}."', - messageFileRenameSuccess: '"{{ from }}" a été renommé en "{{ to }}".', + messageCreateFailed: 'Échec de la création de {folderName}.', + messageCreateSuccess: '{folderName} a été créé.', + messageUpdateVersionFailed: 'Impossible de mettre à jour la version de {folderName}.', + messageUpdateVersionSuccess: 'La version de {folderName} a été mise à jour.', + messageFileRenameFailed: 'Impossible de renommer "{from}" en "{to}."', + messageFileRenameSuccess: '"{from}" a été renommé en "{to}".', messageRemoveFoldersAndFilesFailed: - 'Échec de la suppression des dossiers {{ foldersCount }} et des fichiers {{ filesCount }}.', + 'Échec de la suppression des dossiers {foldersCount} et des fichiers {filesCount}.', messageRemoveFoldersAndFilesSuccess: - 'Les dossiers {{ foldersCount }} et les fichiers {{ filesCount }} ont été supprimés', - messageRemoveFoldersFailed: 'Échec de la suppression des dossiers {{ foldersCount }}.', - messageRemoveFoldersSuccess: 'Les dossiers {{ foldersCount }} ont été supprimés', - messageRemoveFilesFailed: 'Échec de la suppression des fichiers {{ fichiersCount }}.', - messageRemoveFilesSuccess: 'Les fichiers {{ filesCount }} ont été supprimés', - messageRemoveFileOrFolderFailed: 'Échec de la suppression de {{ name }}.', - messageRemoveFileOrFolderSuccess: '{{ name }} a été supprimé', + 'Les dossiers {foldersCount} et les fichiers {filesCount} ont été supprimés', + messageRemoveFoldersFailed: 'Échec de la suppression des dossiers {foldersCount}.', + messageRemoveFoldersSuccess: 'Les dossiers {foldersCount} ont été supprimés', + messageRemoveFilesFailed: 'Échec de la suppression des fichiers {fichiersCount}.', + messageRemoveFilesSuccess: 'Les fichiers {filesCount} ont été supprimés', + messageRemoveFileOrFolderFailed: 'Échec de la suppression de {name}.', + messageRemoveFileOrFolderSuccess: '{name} a été supprimé', messageMoveFoldersAndFilesFailed: - 'Échec du déplacement des dossiers {{ foldersCount }} et des fichiers {{ filesCount }} vers {{ to }}', + 'Échec du déplacement des dossiers {foldersCount} et des fichiers {filesCount} vers {to}', messageMoveFoldersAndFilesSuccess: - '{{ foldersCount }} dossiers et {{ filesCount }} fichiers ont été déplacés vers {{ to }}.', - messageMoveFoldersFailed: 'Échec du déplacement de {{ foldersCount }} dossiers vers {{ to }}.', - messageMoveFoldersSuccess: '{{ foldersCount }} dossiers ont été déplacés vers {{ to }}.', - messageMoveFilesFailed: 'Échec du déplacement de {{ filesCount }} fichiers vers {{ to }}.', - messageMoveFilesSuccess: '{{ filesCount }} fichiers ont été déplacés vers {{ to }}.', - messageMoveFileOrFolderFailed: 'Échec du déplacement de {{ name }} vers {{ to }}.', - messageMoveFileOrFolderSuccess: '{{ name }} a été déplacé vers {{ to }}.', + '{foldersCount} dossiers et {filesCount} fichiers ont été déplacés vers {to}.', + messageMoveFoldersFailed: 'Échec du déplacement de {foldersCount} dossiers vers {to}.', + messageMoveFoldersSuccess: '{foldersCount} dossiers ont été déplacés vers {to}.', + messageMoveFilesFailed: 'Échec du déplacement de {filesCount} fichiers vers {to}.', + messageMoveFilesSuccess: '{filesCount} fichiers ont été déplacés vers {to}.', + messageMoveFileOrFolderFailed: 'Échec du déplacement de {name} vers {to}.', + messageMoveFileOrFolderSuccess: '{name} a été déplacé vers {to}.', messageMoveRootFoldersAndFilesFailed: - 'Échec du déplacement des {{ foldersCount }} dossiers et des {{ filesCount }} fichiers vers tous les fichiers.', + 'Échec du déplacement des {foldersCount} dossiers et des {filesCount} fichiers vers tous les fichiers.', messageMoveRootFoldersAndFilesSuccess: - '{{ foldersCount }} dossiers et {{ filesCount }} fichiers ont été déplacés vers tous les fichiers.', - messageMoveRootFoldersFailed: 'Impossible de déplacer les dossiers {{ foldersCount }} vers tous les fichiers.', - messageMoveRootFoldersSuccess: '{{ foldersCount }} dossiers ont été déplacés vers tous les fichiers.', - messageMoveRootFilesFailed: 'Impossible de déplacer les {{ filesCount }} fichiers vers tous les fichiers.', - messageMoveRootFilesSuccess: '{{ filesCount }} fichiers ont été déplacés vers tous les fichiers.', - messageMoveRootFileOrFolderFailed: 'Impossible de déplacer {{ name }} vers tous les fichiers.', - messageMoveRootFileOrFolderSuccess: '{{ name }} a été déplacé dans tous les fichiers.', + '{foldersCount} dossiers et {filesCount} fichiers ont été déplacés vers tous les fichiers.', + messageMoveRootFoldersFailed: 'Impossible de déplacer les dossiers {foldersCount} vers tous les fichiers.', + messageMoveRootFoldersSuccess: '{foldersCount} dossiers ont été déplacés vers tous les fichiers.', + messageMoveRootFilesFailed: 'Impossible de déplacer les {filesCount} fichiers vers tous les fichiers.', + messageMoveRootFilesSuccess: '{filesCount} fichiers ont été déplacés vers tous les fichiers.', + messageMoveRootFileOrFolderFailed: 'Impossible de déplacer {name} vers tous les fichiers.', + messageMoveRootFileOrFolderSuccess: '{name} a été déplacé dans tous les fichiers.', messageFileTypeMismatchPlural: - "{{ filesCount }} fichiers n'ont pas le bon type. Types autorisés : {{ allowedTypes }}.", + "{filesCount} fichiers n'ont pas le bon type. Types autorisés : {allowedTypes}.", messageFileTypeMismatchSingular: - 'Le fichier "{{ fileName }}" n\'a pas le bon type. Types autorisés : {{ allowedTypes }}.', + 'Le fichier "{fileName}" n\'a pas le bon type. Types autorisés : {allowedTypes}.', messageFileSizeExceededPlural: - '{{ filesCount }} fichiers ont dépassé la taille maximale du fichier. Taille maximale autorisée du fichier : {{ maxFileSize }}.', + '{filesCount} fichiers ont dépassé la taille maximale du fichier. Taille maximale autorisée du fichier : {maxFileSize}.', messageFileSizeExceededSingular: - 'Le fichier "{{ fileName }}" a dépassé la taille maximale du fichier. Taille maximale autorisée du fichier : {{ maxFileSize }}.', + 'Le fichier "{fileName}" a dépassé la taille maximale du fichier. Taille maximale autorisée du fichier : {maxFileSize}.', messageFileNameLengthExceededPlural: - '{{ filesCount }} fichiers ont dépassé la longueur maximale du nom de fichier. ' + - 'Longueur autorisée du nom de fichier : {{ maxFilenameLength }} caractères.', + '{filesCount} fichiers ont dépassé la longueur maximale du nom de fichier. ' + + 'Longueur autorisée du nom de fichier : {maxFilenameLength} caractères.', messageFileNameLengthExceededSingular: - 'Le nom "{{ fileName }}" a dépassé la longueur maximale. Longueur autorisée du nom de fichier: {{ maxFilenameLength }} caractères.' + 'Le nom "{fileName}" a dépassé la longueur maximale. Longueur autorisée du nom de fichier: {maxFilenameLength} caractères.' }, platformWizardGenerator: { summarySectionEditStep: 'Editer' @@ -616,10 +615,10 @@ export const FD_LANGUAGE_FRENCH: FdLanguage = { selectOptionLabel: 'Sélectionnez une option' }, fnSlider: { - minMaxDetails: 'La valeur minimale du curseur est {{ min }}, la valeur maximale est {{ max }}', - valueminDetails: 'La valeur est {{ value }}', - valuemaxDetails: 'La valeur est {{ value }}', - valueNowDetails: 'La valeur actuelle est {{ value }}' + minMaxDetails: 'La valeur minimale du curseur est {min}, la valeur maximale est {max}', + valueminDetails: 'La valeur est {value}', + valuemaxDetails: 'La valeur est {value}', + valueNowDetails: 'La valeur actuelle est {value}' }, fnSwitch: { semanticAcceptLabel: 'Accepter', diff --git a/libs/i18n/src/lib/languages/georgian.ts b/libs/i18n/src/lib/languages/georgian.ts index 031f92b1152..10a8d7b8ece 100644 --- a/libs/i18n/src/lib/languages/georgian.ts +++ b/libs/i18n/src/lib/languages/georgian.ts @@ -5,7 +5,7 @@ import { FdLanguage } from '../models/lang'; */ export const FD_LANGUAGE_GEORGIAN: FdLanguage = { coreMultiComboBox: { - selectAllLabel: 'ყველას არჩევა ({{selectedItems}} {{totalItems}}-დან)' + selectAllLabel: 'ყველას არჩევა ({selectedItems} {totalItems}-დან)' }, coreCarousel: { leftNavigationBtnLabel: 'წინა ელემენტზე გადასვლა', @@ -34,8 +34,8 @@ export const FD_LANGUAGE_GEORGIAN: FdLanguage = { }, coreGridList: { filterBarCancelButtonTitle: 'გაუქმება', - listItemStatusAriaLabel: 'ელემენტის სტატუსია: {{ status }}.', - listItemCounterAriaLabel: 'ელემენტს აქვს {{ count }} შვილი.', + listItemStatusAriaLabel: 'ელემენტის სტატუსია: {status}.', + listItemCounterAriaLabel: 'ელემენტს აქვს {count} შვილი.', listItemButtonDetailsTitle: 'დეტალები', listItemButtonDeleteTitle: 'წაშლა', listItemStatusContainsErrors: 'შეიცავს შეცდომებს', @@ -47,32 +47,31 @@ export const FD_LANGUAGE_GEORGIAN: FdLanguage = { }, coreMultiInput: { multiInputAriaLabel: 'Multi Value Input', - tokensCountText: ({ length }) => `Contains ${length || 'no'} token${length === 1 ? '' : 's'}.` + tokensCountText: 'Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.' }, coreNavigation: { mainNavigation: 'მთავარი ნავიგაცია', navigationPath: 'ნავიგაციის გზა' }, coreNestedList: { - linkItemAriaLabel: - 'სიის ელემენტი {{ itemDetails }}, ინდექსით {{ index }} {{ total }}-დან {{ selectedDescription }}' + linkItemAriaLabel: 'სიის ელემენტი {itemDetails}, ინდექსით {index} {total}-დან {selectedDescription}' }, coreOverflowLayout: { - moreItemsButton: 'დანარჩენი {{ count }}' + moreItemsButton: 'დანარჩენი {count}' }, corePagination: { - pageLabel: 'გვერდი {{ pageNumber }}', - currentPageAriaLabel: 'მიმდინარე გვერდია {{ pageNumber }}', + pageLabel: 'გვერდი {pageNumber}', + currentPageAriaLabel: 'მიმდინარე გვერდია {pageNumber}', labelBeforeInputMobile: 'გვერდი:', - labelAfterInputMobile: '{{ totalCount }}-დან', - inputAriaLabel: 'გვერდის ველი, მიმდინარე გვერდი, გვერდი {{ pageNumber }} {{ totalCount }}-დან', + labelAfterInputMobile: '{totalCount}-დან', + inputAriaLabel: 'გვერდის ველი, მიმდინარე გვერდი, გვერდი {pageNumber} {totalCount}-დან', itemsPerPageLabel: 'შედეგები გვერდზე:', firstLabel: 'პირველი', previousLabel: 'წინა', nextLabel: 'შემდეგი', lastLabel: 'ბოლო', ariaLabel: 'გვერდები', - totalResultsLabel: 'სულ {{ totalCount }} შედეგი' + totalResultsLabel: 'სულ {totalCount} შედეგი' }, coreProductSwitch: { ariaLabel: 'გადამრთველი' @@ -83,18 +82,18 @@ export const FD_LANGUAGE_GEORGIAN: FdLanguage = { search: 'Search' }, coreSlider: { - singleMinMaxDetails: 'სლაიდერის მინიმალური მნიშვნელობაა {{ min }}, მაქსიმუმი - {{ max }}', - singleValueminDetails: 'მნიშვნელობაა {{ value }}', - singleValuemaxDetails: 'მნიშვნელობაა {{ value }}', - singleValueNowDetails: 'მიმდინარე მნიშვნელობაა {{ value }}', - multipleHandle1MinMaxDetails: 'სლაიდერის მინიმალური მნიშვნელობაა {{ min }}, მაქსიმუმი - {{ max }}', - multipleHandle1ValueminDetails: 'მნიშვნელობაა {{ value }}', - multipleHandle1ValuemaxDetails: 'მნიშვნელობაა {{ value }}', - multipleHandle1ValueNowDetails: 'მიმდინარე მნიშვნელობაა {{ value }}', - multipleHandle2MinMaxDetails: 'სლაიდერის მინიმალური მნიშვნელობაა {{ min }}, მაქსიმუმი - {{ max }}', - multipleHandle2ValueminDetails: 'მნიშვნელობაა {{ value }}', - multipleHandle2ValuemaxDetails: 'მნიშვნელობაა {{ value }}', - multipleHandle2ValueNowDetails: 'მიმდინარე მნიშვნელობაა {{ value }}' + singleMinMaxDetails: 'სლაიდერის მინიმალური მნიშვნელობაა {min}, მაქსიმუმი - {max}', + singleValueminDetails: 'მნიშვნელობაა {value}', + singleValuemaxDetails: 'მნიშვნელობაა {value}', + singleValueNowDetails: 'მიმდინარე მნიშვნელობაა {value}', + multipleHandle1MinMaxDetails: 'სლაიდერის მინიმალური მნიშვნელობაა {min}, მაქსიმუმი - {max}', + multipleHandle1ValueminDetails: 'მნიშვნელობაა {value}', + multipleHandle1ValuemaxDetails: 'მნიშვნელობაა {value}', + multipleHandle1ValueNowDetails: 'მიმდინარე მნიშვნელობაა {value}', + multipleHandle2MinMaxDetails: 'სლაიდერის მინიმალური მნიშვნელობაა {min}, მაქსიმუმი - {max}', + multipleHandle2ValueminDetails: 'მნიშვნელობაა {value}', + multipleHandle2ValuemaxDetails: 'მნიშვნელობაა {value}', + multipleHandle2ValueNowDetails: 'მიმდინარე მნიშვნელობაა {value}' }, coreSplitButton: { expandButtonAriaLabel: 'მეტი ქმედებები', @@ -145,7 +144,7 @@ export const FD_LANGUAGE_GEORGIAN: FdLanguage = { ariaRoleDescription: 'ტოკენი' }, coreTokenizer: { - moreLabel: '{{count}} სხვა' + moreLabel: '{count} სხვა' }, coreUploadCollection: { menuOkText: 'კარგი', @@ -206,11 +205,11 @@ export const FD_LANGUAGE_GEORGIAN: FdLanguage = { messagesTeamRemoved: 'გუნდი წაიშალა', messagesErrorBuildGraph: 'გრაფის დამუშავებისას წარმოიშვა შეცდომა. შეამოწმეთ საწყისი მონაცემები.', messagesUndoAction: 'უკან დაბრუნება', - nodeMembersCount: '{{ count }} წევრი', + nodeMembersCount: '{count} წევრი', nodeVariousTeams: 'სხვადასხვა გუნდი', nodeStatusDueToday: 'ვადა იწურება დღეს', - nodeStatusDueInXDays: ' ვადა იწურება {{ count }} დღეში', - nodeStatusXDaysOverdue: 'ვადას გადაცდა {{ count }} დღე', + nodeStatusDueInXDays: ' ვადა იწურება {count} დღეში', + nodeStatusXDaysOverdue: 'ვადას გადაცდა {count} დღე', nodeActionAddApproversBefore: 'დაამატე დამდასტურებელი წინ', nodeActionAddApproversAfter: 'დაამატე დამდასტურებელი შემდეგ', nodeActionAddApproversParallel: 'დაამატე პარალელური დამდასტურებელი', @@ -231,7 +230,7 @@ export const FD_LANGUAGE_GEORGIAN: FdLanguage = { toolbarEditApprover: 'შეასწორე დამდასტურებელი', watchersInputPlaceholder: 'ძებნა...', userListSelectedItemsCountSingular: '1 ელემენტი არჩეულია', - userListSelectedItemsCountPlural: '{{ count }} ელემენტი არჩეულია', + userListSelectedItemsCountPlural: '{count} ელემენტი არჩეულია', statusApproved: 'დადასტურებული', statusRejected: 'უარყოფილი', statusInProgress: 'მიმდინარე', @@ -255,15 +254,15 @@ export const FD_LANGUAGE_GEORGIAN: FdLanguage = { searchHideAdvancedSearchLabel: 'დამალე ფილტრები', searchShowAllAdvancedSearchLabel: 'მაჩვენე ყველა ფილტრი', searchHideAllAdvancedSearchLabel: 'დამალე ყველა ფილტრი', - selectTabDisplayCountLabel: 'ელემენტები ({{ count }})', + selectTabDisplayCountLabel: 'ელემენტები ({count})', selectTabMoreBtnLabel: 'მეტი', - selectTabCountHiddenA11yLabel: 'შეიცავს {{ rowCount }} სტრიქონს და {{ colCount }} სვეტს', + selectTabCountHiddenA11yLabel: 'შეიცავს {rowCount} სტრიქონს და {colCount} სვეტს', selectMobileTabBackBtnTitle: 'უკან', selectMobileTabBtnOpenDialogLabel: 'დიალოგური ფანჯრის გახსნა', - selectMobileTabTitle: '{{ title }} ტაბი', + selectMobileTabTitle: '{title} ტაბი', selectMobileConditionEmpty: 'ცარიელი', defineConditionTitle: 'სახელი', - defineConditionSelectedValueHiddenA11yLabel: 'არჩეული მნიშვნელობა {{ value }}', + defineConditionSelectedValueHiddenA11yLabel: 'არჩეული მნიშვნელობა {value}', defineConditionConditionsGroupHeaderInclude: 'მოცვა', defineConditionConditionsGroupHeaderExclude: 'გამოყოფა', defineConditionFromPlaceholder: 'საიდან', @@ -284,14 +283,14 @@ export const FD_LANGUAGE_GEORGIAN: FdLanguage = { defineConditionConditionStrategyLabelEmpty: 'ცარიელი', defineConditionConditionStrategyLabelNotEqualTo: 'არ უდრის', defineConditionConditionStrategyLabelNotEmpty: 'არ არის ცარიელი', - defineConditionMaxCountError: 'შეიყვანეთ მნიშვნელობა, არანაკლებ {{ count }} სიმბოლო', + defineConditionMaxCountError: 'შეიყვანეთ მნიშვნელობა, არანაკლებ {count} სიმბოლო', selectTabTitle: 'სიიდან არჩევა', searchTableEmptyMessage: 'გამოიყენეთ ძებნა შედეგების მისაღებად', defineTabTitle: 'პირობის განსაზღვრა' }, platformCombobox: { countListResultsSingular: '1 რეზულტატი', - countListResultsPlural: '{{ count }} რეზულტატი' + countListResultsPlural: '{count} რეზულტატი' }, platformMultiCombobox: { inputGlyphAriaLabel: 'აირჩიეთ ოფციები', @@ -301,12 +300,12 @@ export const FD_LANGUAGE_GEORGIAN: FdLanguage = { }, platformTextarea: { counterMessageCharactersOverTheLimitSingular: '1 სიმბოლო აღემატება ლიმიტს', - counterMessageCharactersOverTheLimitPlural: '{{ count }} სიმბოლო აღემატება ლიმიტს', + counterMessageCharactersOverTheLimitPlural: '{count} სიმბოლო აღემატება ლიმიტს', counterMessageCharactersRemainingSingular: 'დარჩა 1 სიმბოლო', - counterMessageCharactersRemainingPlural: 'დარჩა {{ count }} სიმბოლო' + counterMessageCharactersRemainingPlural: 'დარჩა {count} სიმბოლო' }, platformLink: { - roleDescriptionWithMedia: 'მედია: {{ media }}' + roleDescriptionWithMedia: 'მედია: {media}' }, platformList: { loadingAriaLabel: 'იტვირთება' @@ -324,13 +323,13 @@ export const FD_LANGUAGE_GEORGIAN: FdLanguage = { submitButtonTitle: 'ძებნა', searchInputLabel: 'ძებნა', synchronizeButtonTitle: 'სინქრონიზაცია', - searchSuggestionMessage: 'ნაპოვნია {{ count }} შემოთავაზება.', + searchSuggestionMessage: 'ნაპოვნია {count} შემოთავაზება.', searchSuggestionNavigateMessage: 'ნავიგაციისთვის გამოიყენეთ ზედა და ქვედა ღილაკები' }, platformSmartFilterBar: { searchPlaceholder: 'ძებნა', submitButtonLabel: 'წინ', - filtersButtonLabel: 'ფილტრები ({{ filtersCount }})', + filtersButtonLabel: 'ფილტრები ({filtersCount})', showFiltersButtonLabel: 'მაჩვენე ფილტრები', hideFiltersButtonLabel: 'დამალე ფილტრები', defineConditionsRemoveConditionButtonTitle: 'პირობის ამოღება', @@ -387,7 +386,7 @@ export const FD_LANGUAGE_GEORGIAN: FdLanguage = { P13ColumnsDialogSearchPlaceholder: 'ძებნა', P13ColumnsDialogsShowSelected: 'მაჩვენე არჩეული', P13ColumnsDialogShowAll: 'მაჩვენე ყველა', - P13ColumnsDialogSelectAll: 'აირჩიე ყველა ({{ selectedColumnsCount }}/{{ selectableColumnsCount }})', + P13ColumnsDialogSelectAll: 'აირჩიე ყველა ({selectedColumnsCount}/{selectableColumnsCount})', P13ColumnsDialogConfirmationBtnLabel: 'კარგი', P13ColumnsDialogCancelBtnLabel: 'გაუქმება', P13ColumnsDialogMoveToTopBtn: 'ზემოთ ატანა', @@ -412,9 +411,9 @@ export const FD_LANGUAGE_GEORGIAN: FdLanguage = { P13FilterBooleanOptionTrue: 'დიახ', P13FilterBooleanOptionFalse: 'არა', P13FilterDialogHeader: 'ფილტრი', - P13FilterDialogIncludePanelTitleWithCount: 'ჩართე ({{ count }})', + P13FilterDialogIncludePanelTitleWithCount: 'ჩართე ({count})', P13FilterDialogIncludePanelTitleWithoutCount: 'ჩართე', - P13FilterDialogExcludePanelTitleWithCount: 'გამოტოვე ({{ count }})', + P13FilterDialogExcludePanelTitleWithCount: 'გამოტოვე ({count})', P13FilterDialogExcludePanelTitleWithoutCount: 'გამოტოვე', P13FilterDialogRemoveFilterBtnTitle: 'ფილტრის მოხსნა', P13FilterDialoAddFilterBtnTitle: 'ფილტრის დამატება', @@ -447,7 +446,7 @@ export const FD_LANGUAGE_GEORGIAN: FdLanguage = { toolbarActionExpandAllButtonTitle: 'Expand all', toolbarActionCollapseAllButtonTitle: 'Collapse all', filterDialogNotFilteredLabel: '(გაუფილტრავი)', - filterDialogFilterByLabel: 'გაფილტრე: {{ filterLabel }}', + filterDialogFilterByLabel: 'გაფილტრე: {filterLabel}', filterDialogFilterTitle: 'ფილტრი', filterDialogFilterBy: 'გაფილტრე', filterDialogConfirmBtnLabel: 'კარგი', @@ -490,13 +489,13 @@ export const FD_LANGUAGE_GEORGIAN: FdLanguage = { moveToCloseBtn: 'გაუქმება', newFolderTitle: 'ახალი საქაღალდე', newFolderAtRootInputLabel: 'ახალი საქაღალდის სახელი', - newFolderAtFolderInputLabel: '{{ folderName }}-ში ახალი საქაღალდის სახელი', + newFolderAtFolderInputLabel: '{folderName}-ში ახალი საქაღალდის სახელი', newFolderInputPlaceholder: 'აკრიფეთ აქ...', - newFolderInputErrorLabel: 'ნებადართულია მაქსიმუმ {{ count }} სიმბოლო', + newFolderInputErrorLabel: 'ნებადართულია მაქსიმუმ {count} სიმბოლო', newFolderDialogCreateBtnLabel: 'შექმნა', newFolderDialogCancelBtnLabel: 'გაუქმება', breadcrumbLabelAllFiles: 'ყველა ფაილი', - breadcrumbLabelAllFilesWithTotal: 'ყველა ფაილი ({{ total }})', + breadcrumbLabelAllFilesWithTotal: 'ყველა ფაილი ({total})', searchPlaceholder: 'ძებნა', addBtnLabel: 'დამატება', newFolderBtnLabel: 'ახალი საქაღალდე', @@ -517,54 +516,51 @@ export const FD_LANGUAGE_GEORGIAN: FdLanguage = { dragDropAreaText: 'ჩააგდეთ ფაილი ასატვირთად', noDataText: 'ფაილები არ მოიძებნა', noDataDescription: 'ჩააგდეთ ფაილი ასატვირთად, ან დააჭირეთ "დამატებას"', - paginationTotal: 'ნაჩვენებია {{ from }}-{{ to }} {{ total }}-დან', + paginationTotal: 'ნაჩვენებია {from}-{to} {total}-დან', resultsPerPage: 'რეზულტატი გვერდზე', - messageCreateFailed: '{{ folderName }} ვერ შეიქმნა.', - messageCreateSuccess: '{{ folderName }} შეიქმნა.', - messageUpdateVersionFailed: '{{ folderName }}-ის ვერსიის განახლება ვერ მოხერხდა.', - messageUpdateVersionSuccess: '{{ folderName }}-ის ვერსია განახლდა.', - messageFileRenameFailed: 'სახელის გადარქმევა "{{ from }}"-დან "{{ to }}"-ზე ვერ მოხერხდა.', - messageFileRenameSuccess: '"{{ from }}"-ს დაერქვა "{{ to }}".', - messageRemoveFoldersAndFilesFailed: - '{{ foldersCount }} საქაღალდის და {{ filesCount }} ფაილის წაშლა ვერ მოხერხდა.', - messageRemoveFoldersAndFilesSuccess: '{{ foldersCount }} საქაღალდე და {{ filesCount }} ფაილი წაიშალა.', - messageRemoveFoldersFailed: '{{ foldersCount }} საქაღალდე ვერ წაიშალა.', - messageRemoveFoldersSuccess: '{{ foldersCount }} საქაღალდე წაიშალა.', - messageRemoveFilesFailed: '{{ filesCount }} ფაილი ვერ წაიშალა.', - messageRemoveFilesSuccess: '{{ filesCount }} ფაილი წაიშალა.', - messageRemoveFileOrFolderFailed: '{{ name }} ვერ წაიშალა.', - messageRemoveFileOrFolderSuccess: '{{ name }} წაიშალა.', + messageCreateFailed: '{folderName} ვერ შეიქმნა.', + messageCreateSuccess: '{folderName} შეიქმნა.', + messageUpdateVersionFailed: '{folderName}-ის ვერსიის განახლება ვერ მოხერხდა.', + messageUpdateVersionSuccess: '{folderName}-ის ვერსია განახლდა.', + messageFileRenameFailed: 'სახელის გადარქმევა "{from}"-დან "{to}"-ზე ვერ მოხერხდა.', + messageFileRenameSuccess: '"{from}"-ს დაერქვა "{to}".', + messageRemoveFoldersAndFilesFailed: '{foldersCount} საქაღალდის და {filesCount} ფაილის წაშლა ვერ მოხერხდა.', + messageRemoveFoldersAndFilesSuccess: '{foldersCount} საქაღალდე და {filesCount} ფაილი წაიშალა.', + messageRemoveFoldersFailed: '{foldersCount} საქაღალდე ვერ წაიშალა.', + messageRemoveFoldersSuccess: '{foldersCount} საქაღალდე წაიშალა.', + messageRemoveFilesFailed: '{filesCount} ფაილი ვერ წაიშალა.', + messageRemoveFilesSuccess: '{filesCount} ფაილი წაიშალა.', + messageRemoveFileOrFolderFailed: '{name} ვერ წაიშალა.', + messageRemoveFileOrFolderSuccess: '{name} წაიშალა.', messageMoveFoldersAndFilesFailed: - '{{ foldersCount }} საქაღალდის და {{ filesCount }} ფაილის გადატანა ვერ მოხერხდა {{ to }}-ში.', - messageMoveFoldersAndFilesSuccess: - '{{ foldersCount }} საქაღალდე და {{ filesCount }} ფაილი გადატანილია {{ to }}-ში.', - messageMoveFoldersFailed: '{{ foldersCount }} საქაღალდის გადატანა ვერ მოხერხდა {{ to }}-ში.', - messageMoveFoldersSuccess: '{{ foldersCount }} საქაღალდე გადატანილია {{ to }}-ში.', - messageMoveFilesFailed: '{{ filesCount }} ფაილის გადატანა ვერ მოხერხდა {{ to }}-ში.', - messageMoveFilesSuccess: '{{ filesCount }} ფაილი გადატანილია {{ to }}-ში.', - messageMoveFileOrFolderFailed: '{{ name }}-ის გადატანა ვერ მოხდა {{ to }}-ში.', - messageMoveFileOrFolderSuccess: '{{ name }} გადატანილია {{ to }}-ში.', - messageMoveRootFoldersAndFilesFailed: - '{{ foldersCount }} საქაღალდის და {{ filesCount }} ფაილის გადატანა ვერ მოხერხდა.', - messageMoveRootFoldersAndFilesSuccess: '{{ foldersCount }} საქაღალდე და {{ filesCount }} ფაილი გადატანილია.', - messageMoveRootFoldersFailed: '{{ foldersCount }} საქაღალდის გადატანა ვერ მოხერხდა.', - messageMoveRootFoldersSuccess: '{{ foldersCount }} საქაღალდე გადატანილია.', - messageMoveRootFilesFailed: '{{ filesCount }} ფაილის გადატანა ვერ მოხერხდა.', - messageMoveRootFilesSuccess: '{{ filesCount }} ფაილი გადატანილია.', - messageMoveRootFileOrFolderFailed: '{{ name }}-ის გადატანა ვერ მოხერხდა.', - messageMoveRootFileOrFolderSuccess: '{{ name }} გადატანილია.', + '{foldersCount} საქაღალდის და {filesCount} ფაილის გადატანა ვერ მოხერხდა {to}-ში.', + messageMoveFoldersAndFilesSuccess: '{foldersCount} საქაღალდე და {filesCount} ფაილი გადატანილია {to}-ში.', + messageMoveFoldersFailed: '{foldersCount} საქაღალდის გადატანა ვერ მოხერხდა {to}-ში.', + messageMoveFoldersSuccess: '{foldersCount} საქაღალდე გადატანილია {to}-ში.', + messageMoveFilesFailed: '{filesCount} ფაილის გადატანა ვერ მოხერხდა {to}-ში.', + messageMoveFilesSuccess: '{filesCount} ფაილი გადატანილია {to}-ში.', + messageMoveFileOrFolderFailed: '{name}-ის გადატანა ვერ მოხდა {to}-ში.', + messageMoveFileOrFolderSuccess: '{name} გადატანილია {to}-ში.', + messageMoveRootFoldersAndFilesFailed: '{foldersCount} საქაღალდის და {filesCount} ფაილის გადატანა ვერ მოხერხდა.', + messageMoveRootFoldersAndFilesSuccess: '{foldersCount} საქაღალდე და {filesCount} ფაილი გადატანილია.', + messageMoveRootFoldersFailed: '{foldersCount} საქაღალდის გადატანა ვერ მოხერხდა.', + messageMoveRootFoldersSuccess: '{foldersCount} საქაღალდე გადატანილია.', + messageMoveRootFilesFailed: '{filesCount} ფაილის გადატანა ვერ მოხერხდა.', + messageMoveRootFilesSuccess: '{filesCount} ფაილი გადატანილია.', + messageMoveRootFileOrFolderFailed: '{name}-ის გადატანა ვერ მოხერხდა.', + messageMoveRootFileOrFolderSuccess: '{name} გადატანილია.', messageFileTypeMismatchPlural: - '{{ filesCount }} ფაილს აქვს აკრძალული გაფართოება. ნებადართული გაფართოებებია: {{ allowedTypes }}.', + '{filesCount} ფაილს აქვს აკრძალული გაფართოება. ნებადართული გაფართოებებია: {allowedTypes}.', messageFileTypeMismatchSingular: - 'ფაილს "{{ fileName }}" აქვს აკრძალული გაფართოება. ნებადართული გაფართოებებია: {{ allowedTypes }}.', + 'ფაილს "{fileName}" აქვს აკრძალული გაფართოება. ნებადართული გაფართოებებია: {allowedTypes}.', messageFileSizeExceededPlural: - '{{ filesCount }} ფაილი აჭარბებს მაქსიმალურ მოცულობას. ნებადართული მაქსიმალური ზომაა: {{ maxFileSize }}.', + '{filesCount} ფაილი აჭარბებს მაქსიმალურ მოცულობას. ნებადართული მაქსიმალური ზომაა: {maxFileSize}.', messageFileSizeExceededSingular: - 'ფაილი "{{ fileName }}" აჭარბებს მაქსიმალურ მოცულობას. ნებადართული მაქსიმალური ზომაა: {{ maxFileSize }}.', + 'ფაილი "{fileName}" აჭარბებს მაქსიმალურ მოცულობას. ნებადართული მაქსიმალური ზომაა: {maxFileSize}.', messageFileNameLengthExceededPlural: - '{{ filesCount }} ფაილი აჭარბებს მაქსიმალურ სახელის სიგრძეს. მაქსიმალური სიგრძეა: {{ maxFilenameLength }} characters.', + '{filesCount} ფაილი აჭარბებს მაქსიმალურ სახელის სიგრძეს. მაქსიმალური სიგრძეა: {maxFilenameLength} characters.', messageFileNameLengthExceededSingular: - 'ფაილი "{{ fileName }}" აჭარბებს მაქსიმალურ სახელის სიგრძეს. მაქსიმალური სიგრძეა: {{ maxFilenameLength }} characters.' + 'ფაილი "{fileName}" აჭარბებს მაქსიმალურ სახელის სიგრძეს. მაქსიმალური სიგრძეა: {maxFilenameLength} characters.' }, platformWizardGenerator: { summarySectionEditStep: 'შესწორება' @@ -611,10 +607,10 @@ export const FD_LANGUAGE_GEORGIAN: FdLanguage = { selectOptionLabel: 'აირჩიეთ ვარიანტი' }, fnSlider: { - minMaxDetails: 'სლაიდერის მინიმალური მნიშვნელობაა {{ min }}, მაქსიმალური - {{ max }}', - valueminDetails: 'მნიშვნელობა არის {{ value }}', - valuemaxDetails: 'მნიშვნელობა არის {{ value }}', - valueNowDetails: 'მიმდინარე მნიშვნელობა {{ value }}' + minMaxDetails: 'სლაიდერის მინიმალური მნიშვნელობაა {min}, მაქსიმალური - {max}', + valueminDetails: 'მნიშვნელობა არის {value}', + valuemaxDetails: 'მნიშვნელობა არის {value}', + valueNowDetails: 'მიმდინარე მნიშვნელობა {value}' }, fnSwitch: { semanticAcceptLabel: 'დათანხმება', diff --git a/libs/i18n/src/lib/languages/hindi.ts b/libs/i18n/src/lib/languages/hindi.ts index 0cbc729af2c..6b6d9f2342b 100644 --- a/libs/i18n/src/lib/languages/hindi.ts +++ b/libs/i18n/src/lib/languages/hindi.ts @@ -34,8 +34,8 @@ export const FD_LANGUAGE_HINDI: FdLanguage = { }, coreGridList: { filterBarCancelButtonTitle: 'रद्द करें', - listItemStatusAriaLabel: 'वस्तु की स्थिति है। स्थिति: {{ status }}', - listItemCounterAriaLabel: 'वस्तु के {{ count }} उपसूची है।', + listItemStatusAriaLabel: 'वस्तु की स्थिति है। स्थिति: {status}', + listItemCounterAriaLabel: 'वस्तु के {count} उपसूची है।', listItemButtonDetailsTitle: 'विवरण', listItemButtonDeleteTitle: 'मिटायें', listItemStatusContainsErrors: 'इसमें गलतियां हैं', @@ -47,31 +47,31 @@ export const FD_LANGUAGE_HINDI: FdLanguage = { }, coreMultiInput: { multiInputAriaLabel: 'Multi Value Input', - tokensCountText: ({ length }) => `Contains ${length || 'no'} token${length === 1 ? '' : 's'}.` + tokensCountText: 'Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.' }, coreNavigation: { mainNavigation: 'Main Navigation', navigationPath: 'Navigation Path' }, coreNestedList: { - linkItemAriaLabel: 'ट्री वस्तु {{ itemDetails }}, {{ index }} का {{ total }}{{ selectedDescription }}' + linkItemAriaLabel: 'ट्री वस्तु {itemDetails}, {index} का {total}{selectedDescription}' }, coreOverflowLayout: { - moreItemsButton: '{{ count }} अधिक' + moreItemsButton: '{count} अधिक' }, corePagination: { - pageLabel: 'पृष्ठ {{ pageNumber }}', - currentPageAriaLabel: 'पृष्ठ {{ pageNumber }} वर्तमान पृष्ठ है', + pageLabel: 'पृष्ठ {pageNumber}', + currentPageAriaLabel: 'पृष्ठ {pageNumber} वर्तमान पृष्ठ है', labelBeforeInputMobile: 'पृष्ठ :', - labelAfterInputMobile: 'का {{ totalCount }}', - inputAriaLabel: 'पेज इनपुट, वर्तमान पृष्ठ, पृष्ठ {{ pageNumber }} का {{ totalCount }}', + labelAfterInputMobile: 'का {totalCount}', + inputAriaLabel: 'पेज इनपुट, वर्तमान पृष्ठ, पृष्ठ {pageNumber} का {totalCount}', itemsPerPageLabel: 'प्रति पृष्ठ परिणाम :', firstLabel: 'पहला', previousLabel: 'पिछला', nextLabel: 'अगला', lastLabel: 'अंतिम', ariaLabel: 'पृष्ठ अंकन', - totalResultsLabel: '{{ totalCount }} परिणाम' + totalResultsLabel: '{totalCount} परिणाम' }, coreProductSwitch: { ariaLabel: 'उत्पाद स्विच' @@ -82,18 +82,18 @@ export const FD_LANGUAGE_HINDI: FdLanguage = { search: 'Search' }, coreSlider: { - singleMinMaxDetails: 'स्लाइडर न्यूनतम मूल्य है {{ min }}, अधिकतम मूल्य है {{ max }}', - singleValueminDetails: 'मूल्य है {{ value }}', - singleValuemaxDetails: 'मूल्य है {{ value }}', - singleValueNowDetails: 'वर्तमान मूल्य है {{ value }}', - multipleHandle1MinMaxDetails: 'रेंज स्लाइडर न्यूनतम मूल्य है {{ min }}, अधिकतम मूल्य है {{ max }}', - multipleHandle1ValueminDetails: 'मूल्य है {{ value }}', - multipleHandle1ValuemaxDetails: 'मूल्य है {{ value }}', - multipleHandle1ValueNowDetails: 'वर्तमान मूल्य है {{ value }}', - multipleHandle2MinMaxDetails: 'रेंज स्लाइडर न्यूनतम मूल्य है {{ min }}, अधिकतम मूल्य है {{ max }}', - multipleHandle2ValueminDetails: 'मूल्य है {{ value }}', - multipleHandle2ValuemaxDetails: 'मूल्य है {{ value }}', - multipleHandle2ValueNowDetails: 'वर्तमान मूल्य है {{ value }}' + singleMinMaxDetails: 'स्लाइडर न्यूनतम मूल्य है {min}, अधिकतम मूल्य है {max}', + singleValueminDetails: 'मूल्य है {value}', + singleValuemaxDetails: 'मूल्य है {value}', + singleValueNowDetails: 'वर्तमान मूल्य है {value}', + multipleHandle1MinMaxDetails: 'रेंज स्लाइडर न्यूनतम मूल्य है {min}, अधिकतम मूल्य है {max}', + multipleHandle1ValueminDetails: 'मूल्य है {value}', + multipleHandle1ValuemaxDetails: 'मूल्य है {value}', + multipleHandle1ValueNowDetails: 'वर्तमान मूल्य है {value}', + multipleHandle2MinMaxDetails: 'रेंज स्लाइडर न्यूनतम मूल्य है {min}, अधिकतम मूल्य है {max}', + multipleHandle2ValueminDetails: 'मूल्य है {value}', + multipleHandle2ValuemaxDetails: 'मूल्य है {value}', + multipleHandle2ValueNowDetails: 'वर्तमान मूल्य है {value}' }, coreSplitButton: { expandButtonAriaLabel: 'अधिक क्रियाएं', @@ -144,7 +144,7 @@ export const FD_LANGUAGE_HINDI: FdLanguage = { ariaRoleDescription: 'टोकन' }, coreTokenizer: { - moreLabel: '{{ count }} अधिक' + moreLabel: '{count} अधिक' }, coreUploadCollection: { menuOkText: 'ठीक है', @@ -205,11 +205,11 @@ export const FD_LANGUAGE_HINDI: FdLanguage = { messagesTeamRemoved: '1 समूह को हटा दिया गया है', messagesErrorBuildGraph: 'ग्राफ़ बनाने का प्रयास करते समय एक गलति हुई| प्रारंभिक डेटा की जाँच करें।', messagesUndoAction: 'पूर्ववत करें', - nodeMembersCount: '{{ count }} सदस्य', + nodeMembersCount: '{count} सदस्य', nodeVariousTeams: 'विविध समूह', nodeStatusDueToday: 'नियत तिथि', - nodeStatusDueInXDays: '{{ count }} दिनों में देय है', - nodeStatusXDaysOverdue: '{{ count }} दिन अतिदेय', + nodeStatusDueInXDays: '{count} दिनों में देय है', + nodeStatusXDaysOverdue: '{count} दिन अतिदेय', nodeActionAddApproversBefore: 'पहले अनुमोदक जोड़ें', nodeActionAddApproversAfter: 'बाद में अनुमोदक जोड़ें', nodeActionAddApproversParallel: 'समानांतर अनुमोदक जोड़ें', @@ -230,7 +230,7 @@ export const FD_LANGUAGE_HINDI: FdLanguage = { toolbarEditApprover: 'अनुमोदक संपादित करें', watchersInputPlaceholder: 'यहां खोजें..', userListSelectedItemsCountSingular: '1 आइटम चुना गया', - userListSelectedItemsCountPlural: '{{ count }} आइटम चुने गए', + userListSelectedItemsCountPlural: '{count} आइटम चुने गए', statusApproved: 'approved', statusRejected: 'rejected', statusInProgress: 'in progress', @@ -254,15 +254,15 @@ export const FD_LANGUAGE_HINDI: FdLanguage = { searchHideAdvancedSearchLabel: 'फ़िल्टर छुपाएं', searchShowAllAdvancedSearchLabel: 'सभी फ़िल्टर दिखाएं', searchHideAllAdvancedSearchLabel: 'सभी फ़िल्टर छुपाएं', - selectTabDisplayCountLabel: '({{ count }}) वस्तुएं', + selectTabDisplayCountLabel: '({count}) वस्तुएं', selectTabMoreBtnLabel: 'और', - selectTabCountHiddenA11yLabel: 'इसमें {{ rowCount }} पंक्तियाँ और {{ colCount }} कॉलम हैं', + selectTabCountHiddenA11yLabel: 'इसमें {rowCount} पंक्तियाँ और {colCount} कॉलम हैं', selectMobileTabBackBtnTitle: 'वापस', selectMobileTabBtnOpenDialogLabel: 'डायलॉग खोलें', - selectMobileTabTitle: '{{ title }} टैब', + selectMobileTabTitle: '{title} टैब', selectMobileConditionEmpty: 'खाली', defineConditionTitle: 'उत्पाद', - defineConditionSelectedValueHiddenA11yLabel: 'चयनित मूल्य {{ value }}', + defineConditionSelectedValueHiddenA11yLabel: 'चयनित मूल्य {value}', defineConditionConditionsGroupHeaderInclude: 'शामिल करें', defineConditionConditionsGroupHeaderExclude: 'बहिष्कृत करें', defineConditionFromPlaceholder: 'से', @@ -283,14 +283,14 @@ export const FD_LANGUAGE_HINDI: FdLanguage = { defineConditionConditionStrategyLabelEmpty: 'खाली', defineConditionConditionStrategyLabelNotEqualTo: 'के बराबर नहीं', defineConditionConditionStrategyLabelNotEmpty: 'खाली नही', - defineConditionMaxCountError: '{{ count }} से अधिक अक्षरो वाला कोई मूल्य दर्ज करें', + defineConditionMaxCountError: '{count} से अधिक अक्षरो वाला कोई मूल्य दर्ज करें', selectTabTitle: 'सूची में से चयन करें', searchTableEmptyMessage: 'परिणाम प्राप्त करने के लिए खोज का प्रयोग करें', defineTabTitle: 'शर्तों को परिभाषित करें' }, platformCombobox: { countListResultsSingular: '1 परिणाम सूची आइटम', - countListResultsPlural: '{{ count }} परिणाम सूची आइटम' + countListResultsPlural: '{count} परिणाम सूची आइटम' }, platformMultiCombobox: { inputGlyphAriaLabel: 'विकल्प चुनें', @@ -300,12 +300,12 @@ export const FD_LANGUAGE_HINDI: FdLanguage = { }, platformTextarea: { counterMessageCharactersOverTheLimitSingular: '1 सीमा से अधिक चरित्र', - counterMessageCharactersOverTheLimitPlural: '{{ count }} सीमा से अधिक वर्ण', + counterMessageCharactersOverTheLimitPlural: '{count} सीमा से अधिक वर्ण', counterMessageCharactersRemainingSingular: '1 चरित्र शेष', - counterMessageCharactersRemainingPlural: '{{ count }} शेष वर्ण' + counterMessageCharactersRemainingPlural: '{count} शेष वर्ण' }, platformLink: { - roleDescriptionWithMedia: 'मीडिया: {{ media }}' + roleDescriptionWithMedia: 'मीडिया: {media}' }, platformList: { loadingAriaLabel: 'लोड हो रहा है' @@ -323,13 +323,13 @@ export const FD_LANGUAGE_HINDI: FdLanguage = { submitButtonTitle: 'खोज करें', searchInputLabel: 'खोज करें', synchronizeButtonTitle: 'सिंक्रनाइज़ करें', - searchSuggestionMessage: '{{ count }} सुझाव मिले', + searchSuggestionMessage: '{count} सुझाव मिले', searchSuggestionNavigateMessage: 'नेविगेट करने के लिए ऊपर और नीचे तीरों का उपयोग करें' }, platformSmartFilterBar: { searchPlaceholder: 'खोज करें', submitButtonLabel: 'जाओ', - filtersButtonLabel: 'फिल्टर ({{ filtersCount }})', + filtersButtonLabel: 'फिल्टर ({filtersCount})', showFiltersButtonLabel: 'फ़िल्टर दिखाएं', hideFiltersButtonLabel: 'फ़िल्टर छुपाएं', defineConditionsRemoveConditionButtonTitle: 'शर्त हटाएं', @@ -386,7 +386,7 @@ export const FD_LANGUAGE_HINDI: FdLanguage = { P13ColumnsDialogSearchPlaceholder: 'खोज', P13ColumnsDialogsShowSelected: 'चयनित दिखाएँ', P13ColumnsDialogShowAll: 'सब दिखाएं', - P13ColumnsDialogSelectAll: 'सभी का चयन करे ({{ selectedColumnsCount }}/{{ selectableColumnsCount }})', + P13ColumnsDialogSelectAll: 'सभी का चयन करे ({selectedColumnsCount}/{selectableColumnsCount})', P13ColumnsDialogConfirmationBtnLabel: 'ठीक है', P13ColumnsDialogCancelBtnLabel: 'रद्द करो', P13ColumnsDialogMoveToTopBtn: 'शीर्ष पर जाएं', @@ -411,9 +411,9 @@ export const FD_LANGUAGE_HINDI: FdLanguage = { P13FilterBooleanOptionTrue: 'हां', P13FilterBooleanOptionFalse: 'नहीं', P13FilterDialogHeader: 'के द्वारा छनित', - P13FilterDialogIncludePanelTitleWithCount: 'शामिल ({{ count }})', + P13FilterDialogIncludePanelTitleWithCount: 'शामिल ({count})', P13FilterDialogIncludePanelTitleWithoutCount: 'शामिल', - P13FilterDialogExcludePanelTitleWithCount: 'निकालना ({{ count }})', + P13FilterDialogExcludePanelTitleWithCount: 'निकालना ({count})', P13FilterDialogExcludePanelTitleWithoutCount: 'निकालना', P13FilterDialogRemoveFilterBtnTitle: 'फ़िल्टर हटाएं', P13FilterDialoAddFilterBtnTitle: 'फ़िल्टर जोड़ें', @@ -446,7 +446,7 @@ export const FD_LANGUAGE_HINDI: FdLanguage = { toolbarActionExpandAllButtonTitle: 'Expand all', toolbarActionCollapseAllButtonTitle: 'Collapse all', filterDialogNotFilteredLabel: '(फ़िल्टर नहीं किया गया)', - filterDialogFilterByLabel: 'के द्वारा छनित: {{ filterLabel }}', + filterDialogFilterByLabel: 'के द्वारा छनित: {filterLabel}', filterDialogFilterTitle: 'फ़िल्टर', filterDialogFilterBy: 'के द्वारा छनित', filterDialogConfirmBtnLabel: 'अनुमोदन', @@ -489,13 +489,13 @@ export const FD_LANGUAGE_HINDI: FdLanguage = { moveToCloseBtn: 'रद्द करें', newFolderTitle: 'नया फोल्डर', newFolderAtRootInputLabel: 'नए फोल्डर का नाम', - newFolderAtFolderInputLabel: 'नए फोल्डर का नाम {{ folderName }}', + newFolderAtFolderInputLabel: 'नए फोल्डर का नाम {folderName}', newFolderInputPlaceholder: 'यहा लिखें..', - newFolderInputErrorLabel: 'अधिकतम {{ count }} पात्र अनुमत', + newFolderInputErrorLabel: 'अधिकतम {count} पात्र अनुमत', newFolderDialogCreateBtnLabel: 'सृजन करें', newFolderDialogCancelBtnLabel: 'रद्द करें', breadcrumbLabelAllFiles: 'सभी फाइलें', - breadcrumbLabelAllFilesWithTotal: 'सभी फाइलें ({{ total }})', + breadcrumbLabelAllFilesWithTotal: 'सभी फाइलें ({total})', searchPlaceholder: 'तलाश करें', addBtnLabel: 'जोड़ें', newFolderBtnLabel: 'नया फोल्डर', @@ -516,52 +516,52 @@ export const FD_LANGUAGE_HINDI: FdLanguage = { dragDropAreaText: 'अपलोड करने के लिए फ़ाइलें खींचें', noDataText: 'कोई फाइल नहीं मिली', noDataDescription: 'अपलोड करने के लिए फ़ाइलें छोड़ें, या "जोड़ें" बटन का उपयोग करें।', - paginationTotal: '{{ from }}-{{ to }} of {{ total }} दिखा रहा है', + paginationTotal: '{from}-{to} of {total} दिखा रहा है', resultsPerPage: 'प्रति पेज नतीजे', - messageCreateFailed: '{{ folderName }} बनाने में विफल।', - messageCreateSuccess: '{{ folderName }} बनाया गया है।', - messageUpdateVersionFailed: '{{ folderName }}का संस्करण अपडेट करने में विफल।', - messageUpdateVersionSuccess: '{{ folderName }} संस्करण अद्यतन किया गया है।', - messageFileRenameFailed: '"{{ from }}" तक "{{ to }}" नाम बदलने में विफल।', - messageFileRenameSuccess: '"{{ from }}" का नाम बदलकर कर "{{ to }}" दिया गया है।', - messageRemoveFoldersAndFilesFailed: '{{ foldersCount }} फ़ोल्डर्स और {{ filesCount }} फ़ाइलें हटाने में विफल।', - messageRemoveFoldersAndFilesSuccess: '{{ foldersCount }} फ़ोल्डर्स और {{ filesCount }} फ़ाइलें हटा दी गई हैं।', - messageRemoveFoldersFailed: '{{ foldersCount }} फ़ोल्डर्स हटाने में विफल ।', - messageRemoveFoldersSuccess: '{{ foldersCount }} फ़ोल्डर हटा दिए गए हैं।', - messageRemoveFilesFailed: '{{ filesCount }} फ़ाइलें हटाने में विफल ।', - messageRemoveFilesSuccess: '{{ filesCount }} फ़ाइलें हटा दी गई हैं।', - messageRemoveFileOrFolderFailed: '{{ name }} हटाने में विफल ।', - messageRemoveFileOrFolderSuccess: '{{ name }} निकाल दिया गया है।', + messageCreateFailed: '{folderName} बनाने में विफल।', + messageCreateSuccess: '{folderName} बनाया गया है।', + messageUpdateVersionFailed: '{folderName}का संस्करण अपडेट करने में विफल।', + messageUpdateVersionSuccess: '{folderName} संस्करण अद्यतन किया गया है।', + messageFileRenameFailed: '"{from}" तक "{to}" नाम बदलने में विफल।', + messageFileRenameSuccess: '"{from}" का नाम बदलकर कर "{to}" दिया गया है।', + messageRemoveFoldersAndFilesFailed: '{foldersCount} फ़ोल्डर्स और {filesCount} फ़ाइलें हटाने में विफल।', + messageRemoveFoldersAndFilesSuccess: '{foldersCount} फ़ोल्डर्स और {filesCount} फ़ाइलें हटा दी गई हैं।', + messageRemoveFoldersFailed: '{foldersCount} फ़ोल्डर्स हटाने में विफल ।', + messageRemoveFoldersSuccess: '{foldersCount} फ़ोल्डर हटा दिए गए हैं।', + messageRemoveFilesFailed: '{filesCount} फ़ाइलें हटाने में विफल ।', + messageRemoveFilesSuccess: '{filesCount} फ़ाइलें हटा दी गई हैं।', + messageRemoveFileOrFolderFailed: '{name} हटाने में विफल ।', + messageRemoveFileOrFolderSuccess: '{name} निकाल दिया गया है।', messageMoveFoldersAndFilesFailed: - '{{ to }} तक {{ foldersCount }} फ़ोल्डर्स और {{ filesCount }} फ़ाइलें स्थानांतरित करने में विफल।', + '{to} तक {foldersCount} फ़ोल्डर्स और {filesCount} फ़ाइलें स्थानांतरित करने में विफल।', messageMoveFoldersAndFilesSuccess: - '{{ foldersCount }} फ़ोल्डर्स और {{ filesCount }} फ़ाइलें स्थानांतरित कर दी गई हैं {{ to }}।', - messageMoveFoldersFailed: '{{ to }} तक {{ foldersCount }} फ़ोल्डर्स स्थानांतरित करने में विफल।', - messageMoveFoldersSuccess: '{{ foldersCount }} फ़ोल्डर्स को स्थानांतरित कर दिया गया है {{ to }}।', - messageMoveFilesFailed: '{{ to }} तक {{ filesCount }} फ़ाइलें स्थानांतरित करने में विफल।', - messageMoveFilesSuccess: '{{ filesCount }} फ़ाइलें स्थानांतरित कर दी गई हैं {{ to }}।', - messageMoveFileOrFolderFailed: 'स्थानांतरित करने में विफल {{ name }} प्रति {{ to }}।', - messageMoveFileOrFolderSuccess: '{{ name }} में ले जाया गया है {{ to }}।', + '{foldersCount} फ़ोल्डर्स और {filesCount} फ़ाइलें स्थानांतरित कर दी गई हैं {to}।', + messageMoveFoldersFailed: '{to} तक {foldersCount} फ़ोल्डर्स स्थानांतरित करने में विफल।', + messageMoveFoldersSuccess: '{foldersCount} फ़ोल्डर्स को स्थानांतरित कर दिया गया है {to}।', + messageMoveFilesFailed: '{to} तक {filesCount} फ़ाइलें स्थानांतरित करने में विफल।', + messageMoveFilesSuccess: '{filesCount} फ़ाइलें स्थानांतरित कर दी गई हैं {to}।', + messageMoveFileOrFolderFailed: 'स्थानांतरित करने में विफल {name} प्रति {to}।', + messageMoveFileOrFolderSuccess: '{name} में ले जाया गया है {to}।', messageMoveRootFoldersAndFilesFailed: - 'स्थानांतरित करने में विफल {{ foldersCount }} फ़ोल्डर्स और {{ filesCount }} सभी फाइलों के लिए फ़ाइलें।', + 'स्थानांतरित करने में विफल {foldersCount} फ़ोल्डर्स और {filesCount} सभी फाइलों के लिए फ़ाइलें।', messageMoveRootFoldersAndFilesSuccess: - '{{ foldersCount }} फ़ोल्डर्स और {{ filesCount }} फ़ाइलें सभी फ़ाइलों में ले जाया गया है।', - messageMoveRootFoldersFailed: 'स्थानांतरित करने में विफल {{ foldersCount }} सभी फाइलों के लिए फ़ोल्डर।', - messageMoveRootFoldersSuccess: '{{ foldersCount }} फ़ोल्डर्स को सभी फाइलों में ले जाया गया है।', - messageMoveRootFilesFailed: 'स्थानांतरित करने में विफल {{ filesCount }} सभी फाइलों के लिए फ़ाइलें।', - messageMoveRootFilesSuccess: '{{ filesCount }} फ़ाइलें सभी फ़ाइलों में ले जाया गया है।', - messageMoveRootFileOrFolderFailed: 'स्थानांतरित करने में विफल {{ name }} सभी फाइलों के लिए।', - messageMoveRootFileOrFolderSuccess: '{{ name }} सभी फाइलों में ले जाया गया है।', - messageFileTypeMismatchPlural: '{{ filesCount }} फाइलों का प्रकार गलत है। अनुमत प्रकार: {{ allowedTypes }}।', - messageFileTypeMismatchSingular: 'फ़ाइल "{{ fileName }}" गलत प्रकार है। अनुमत प्रकार: {{ allowedTypes }}।', + '{foldersCount} फ़ोल्डर्स और {filesCount} फ़ाइलें सभी फ़ाइलों में ले जाया गया है।', + messageMoveRootFoldersFailed: 'स्थानांतरित करने में विफल {foldersCount} सभी फाइलों के लिए फ़ोल्डर।', + messageMoveRootFoldersSuccess: '{foldersCount} फ़ोल्डर्स को सभी फाइलों में ले जाया गया है।', + messageMoveRootFilesFailed: 'स्थानांतरित करने में विफल {filesCount} सभी फाइलों के लिए फ़ाइलें।', + messageMoveRootFilesSuccess: '{filesCount} फ़ाइलें सभी फ़ाइलों में ले जाया गया है।', + messageMoveRootFileOrFolderFailed: 'स्थानांतरित करने में विफल {name} सभी फाइलों के लिए।', + messageMoveRootFileOrFolderSuccess: '{name} सभी फाइलों में ले जाया गया है।', + messageFileTypeMismatchPlural: '{filesCount} फाइलों का प्रकार गलत है। अनुमत प्रकार: {allowedTypes}।', + messageFileTypeMismatchSingular: 'फ़ाइल "{fileName}" गलत प्रकार है। अनुमत प्रकार: {allowedTypes}।', messageFileSizeExceededPlural: - '{{ filesCount }} फ़ाइलें अधिकतम फ़ाइल आकार से अधिक हो गईं। अनुमत अधिकतम फ़ाइल आकार: {{ maxFileSize }}।', + '{filesCount} फ़ाइलें अधिकतम फ़ाइल आकार से अधिक हो गईं। अनुमत अधिकतम फ़ाइल आकार: {maxFileSize}।', messageFileSizeExceededSingular: - 'फ़ाइल "{{ fileName }}" अधिकतम फ़ाइल आकार को पार कर गया। अनुमत अधिकतम फ़ाइल आकार: {{ maxFileSize }}।', + 'फ़ाइल "{fileName}" अधिकतम फ़ाइल आकार को पार कर गया। अनुमत अधिकतम फ़ाइल आकार: {maxFileSize}।', messageFileNameLengthExceededPlural: - '{{ filesCount }} फ़ाइलें फ़ाइल नाम की अधिकतम लंबाई को पार कर गई हैं। अनुमत फ़ाइल नाम लंबाई: {{ maxFilenameLength }} पात्र।', + '{filesCount} फ़ाइलें फ़ाइल नाम की अधिकतम लंबाई को पार कर गई हैं। अनुमत फ़ाइल नाम लंबाई: {maxFilenameLength} पात्र।', messageFileNameLengthExceededSingular: - 'नाम "{{ fileName }}" फ़ाइल नाम की अधिकतम लंबाई को पार कर गया। अनुमत फ़ाइल नाम लंबाई: {{ maxFilenameLength }} पात्र।' + 'नाम "{fileName}" फ़ाइल नाम की अधिकतम लंबाई को पार कर गया। अनुमत फ़ाइल नाम लंबाई: {maxFilenameLength} पात्र।' }, platformWizardGenerator: { summarySectionEditStep: 'संपादित करें' @@ -608,10 +608,10 @@ export const FD_LANGUAGE_HINDI: FdLanguage = { selectOptionLabel: 'एक विकल्प चुनें' }, fnSlider: { - minMaxDetails: 'स्लाइडर न्यूनतम मूल्य {{ min }}, अधिकतम मूल्य {{ max }}', - valueminDetails: 'मूल्य {{ value }}', - valuemaxDetails: 'मूल्य {{ value }}', - valueNowDetails: 'वर्तमान मूल्य {{ value }}' + minMaxDetails: 'स्लाइडर न्यूनतम मूल्य {min}, अधिकतम मूल्य {max}', + valueminDetails: 'मूल्य {value}', + valuemaxDetails: 'मूल्य {value}', + valueNowDetails: 'वर्तमान मूल्य {value}' }, fnSwitch: { semanticAcceptLabel: 'स्वीकार करें', diff --git a/libs/i18n/src/lib/languages/italian.ts b/libs/i18n/src/lib/languages/italian.ts index 70389302ccf..7313ead2f9c 100644 --- a/libs/i18n/src/lib/languages/italian.ts +++ b/libs/i18n/src/lib/languages/italian.ts @@ -5,7 +5,7 @@ import { FdLanguage } from '../models/lang'; */ export const FD_LANGUAGE_ITALIAN: FdLanguage = { coreMultiComboBox: { - selectAllLabel: 'Seleziona tutto ({{selectedItems}} di {{totalItems}})' + selectAllLabel: 'Seleziona tutto ({selectedItems} di {totalItems})' }, coreCarousel: { leftNavigationBtnLabel: "Vai all'elemento precedente", @@ -34,8 +34,8 @@ export const FD_LANGUAGE_ITALIAN: FdLanguage = { }, coreGridList: { filterBarCancelButtonTitle: 'Annulla', - listItemStatusAriaLabel: "L'articolo ha uno stato. Stato: {{ status }}.", - listItemCounterAriaLabel: "L'articolo ha {{count}} sottoarticoli.", + listItemStatusAriaLabel: "L'articolo ha uno stato. Stato: {status}.", + listItemCounterAriaLabel: "L'articolo ha {count} sottoarticoli.", listItemButtonDetailsTitle: 'Dettagli', listItemButtonDeleteTitle: 'Elimina', listItemStatusContainsErrors: 'Contiene errori', @@ -47,37 +47,31 @@ export const FD_LANGUAGE_ITALIAN: FdLanguage = { }, coreMultiInput: { multiInputAriaLabel: 'Multi Value Input', - tokensCountText: ({ length }) => `Contains ${length || 'no'} token${length === 1 ? '' : 's'}.` + tokensCountText: 'Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.' }, coreNavigation: { mainNavigation: 'Main Navigation', navigationPath: 'Navigation Path' }, coreNestedList: { - linkItemAriaLabel: "Elemento dell'albero {{ itemDetails }}, {{ index }} di {{ total }}{{ selectedDescription }}" + linkItemAriaLabel: "Elemento dell'albero {itemDetails}, {index} di {total}{selectedDescription}" }, coreOverflowLayout: { - moreItemsButton: (params) => { - const count = params['count']; - if (count === 1) { - return '1 più articoli'; - } - return `Altri ${count} articoli`; - } + moreItemsButton: '{ count, plural, one {1 più} other {Altri #} } articoli' }, corePagination: { - pageLabel: 'Pagina {{ pageNumber }}', - currentPageAriaLabel: 'La pagina {{ pageNumber }} è la pagina corrente', + pageLabel: 'Pagina {pageNumber}', + currentPageAriaLabel: 'La pagina {pageNumber} è la pagina corrente', labelBeforeInputMobile: 'Pagina:', - labelAfterInputMobile: 'di {{ totalCount }}', - inputAriaLabel: 'Inserimento pagina, Pagina corrente, Pagina {{ pageNumber }} di {{ totalCount }}', + labelAfterInputMobile: 'di {totalCount}', + inputAriaLabel: 'Inserimento pagina, Pagina corrente, Pagina {pageNumber} di {totalCount}', itemsPerPageLabel: 'Risultati per pagina:', firstLabel: 'First', previousLabel: 'Precedente', nextLabel: 'Next', lastLabel: 'Ultimo', ariaLabel: 'Impaginazione', - totalResultsLabel: '{{ totalCount }} Risultati' + totalResultsLabel: '{totalCount} Risultati' }, coreProductSwitch: { ariaLabel: 'Commutatore del prodotto' @@ -88,21 +82,20 @@ export const FD_LANGUAGE_ITALIAN: FdLanguage = { search: 'Search' }, coreSlider: { - singleMinMaxDetails: - 'Il valore minimo del dispositivo di scorrimento è {{minimo}}, il valore massimo è {{max}}', - singleValueminDetails: 'Il valore è {{ value }}', - singleValuemaxDetails: 'Il valore è {{ value }}', - singleValueNowDetails: 'Il valore attuale è {{ value }}', + singleMinMaxDetails: 'Il valore minimo del dispositivo di scorrimento è {minimo}, il valore massimo è {max}', + singleValueminDetails: 'Il valore è {value}', + singleValuemaxDetails: 'Il valore è {value}', + singleValueNowDetails: 'Il valore attuale è {value}', multipleHandle1MinMaxDetails: - "Il valore minimo del dispositivo di scorrimento dell'intervallo è {{min}}, il valore massimo è {{max}}", - multipleHandle1ValueminDetails: 'Il valore è {{ value }}', - multipleHandle1ValuemaxDetails: 'Il valore è {{ value }}', - multipleHandle1ValueNowDetails: 'Il valore attuale è {{ value }}', + "Il valore minimo del dispositivo di scorrimento dell'intervallo è {min}, il valore massimo è {max}", + multipleHandle1ValueminDetails: 'Il valore è {value}', + multipleHandle1ValuemaxDetails: 'Il valore è {value}', + multipleHandle1ValueNowDetails: 'Il valore attuale è {value}', multipleHandle2MinMaxDetails: - "Il valore minimo del dispositivo di scorrimento dell'intervallo è {{min}}, il valore massimo è {{max}}", - multipleHandle2ValueminDetails: 'Il valore è {{ value }}', - multipleHandle2ValuemaxDetails: 'Il valore è {{ value }}', - multipleHandle2ValueNowDetails: 'Il valore attuale è {{ value }}' + "Il valore minimo del dispositivo di scorrimento dell'intervallo è {min}, il valore massimo è {max}", + multipleHandle2ValueminDetails: 'Il valore è {value}', + multipleHandle2ValuemaxDetails: 'Il valore è {value}', + multipleHandle2ValueNowDetails: 'Il valore attuale è {value}' }, coreSplitButton: { expandButtonAriaLabel: 'Più azioni', @@ -154,13 +147,7 @@ export const FD_LANGUAGE_ITALIAN: FdLanguage = { ariaRoleDescription: 'gettone' }, coreTokenizer: { - moreLabel: (params) => { - const count = params['count']; - if (count === 1) { - return '1 più articoli'; - } - return `Altri ${count} articoli`; - } + moreLabel: '{ count, plural, one {1 più} other {Altri #} } articoli' }, coreUploadCollection: { menuOkText: 'Ok', @@ -222,11 +209,11 @@ export const FD_LANGUAGE_ITALIAN: FdLanguage = { messagesErrorBuildGraph: 'Si è verificato un errore durante il tentativo di creare un grafico. Controllare i dati iniziali.', messagesUndoAction: 'Anulla', - nodeMembersCount: '{{ count }} membri', + nodeMembersCount: '{count} membri', nodeVariousTeams: 'Varie squadre', nodeStatusDueToday: 'Scadenza oggi', - nodeStatusDueInXDays: ' Scadenza tra {{ count }} giorni', - nodeStatusXDaysOverdue: '{{ count }} giorni scaduti', + nodeStatusDueInXDays: ' Scadenza tra {count} giorni', + nodeStatusXDaysOverdue: '{count} giorni scaduti', nodeActionAddApproversBefore: 'Aggiungi prima gli approvatori', nodeActionAddApproversAfter: 'Aggiungi approvatori dopo', nodeActionAddApproversParallel: 'Aggiungi approvatori paralleli', @@ -247,7 +234,7 @@ export const FD_LANGUAGE_ITALIAN: FdLanguage = { toolbarEditApprover: 'Modifica approvatore', watchersInputPlaceholder: 'Cerca qui..', userListSelectedItemsCountSingular: '1 elemento selezionato', - userListSelectedItemsCountPlural: '{{ count }} elementi selezionati', + userListSelectedItemsCountPlural: '{count} elementi selezionati', statusApproved: 'approved', statusRejected: 'rejected', statusInProgress: 'in progress', @@ -271,15 +258,15 @@ export const FD_LANGUAGE_ITALIAN: FdLanguage = { searchHideAdvancedSearchLabel: 'Nascondi filtri', searchShowAllAdvancedSearchLabel: 'Mostra tutti i filtri', searchHideAllAdvancedSearchLabel: 'Nascondi tutti i filtri', - selectTabDisplayCountLabel: 'Articoli ({{ count }})', + selectTabDisplayCountLabel: 'Articoli ({count})', selectTabMoreBtnLabel: 'Altro', - selectTabCountHiddenA11yLabel: 'contiene {{ rowCount }} righe e {{ colCount }} colonne', + selectTabCountHiddenA11yLabel: 'contiene {rowCount} righe e {colCount} colonne', selectMobileTabBackBtnTitle: 'Indietro', selectMobileTabBtnOpenDialogLabel: 'Apri finestra di dialogo', - selectMobileTabTitle: '{{ title }} scheda', + selectMobileTabTitle: '{title} scheda', selectMobileConditionEmpty: 'Vuoto', defineConditionTitle: 'Prodotto', - defineConditionSelectedValueHiddenA11yLabel: 'valore selezionato {{ value }}', + defineConditionSelectedValueHiddenA11yLabel: 'valore selezionato {value}', defineConditionConditionsGroupHeaderInclude: 'Includi', defineConditionConditionsGroupHeaderExclude: 'Escludi', defineConditionFromPlaceholder: 'da', @@ -300,14 +287,14 @@ export const FD_LANGUAGE_ITALIAN: FdLanguage = { defineConditionConditionStrategyLabelEmpty: 'vuoto', defineConditionConditionStrategyLabelNotEqualTo: 'non uguale a', defineConditionConditionStrategyLabelNotEmpty: 'no vuoto', - defineConditionMaxCountError: 'Immettere un valore con non più di {{ count }} caratteri', + defineConditionMaxCountError: 'Immettere un valore con non più di {count} caratteri', selectTabTitle: "Seleziona dall'elenco", searchTableEmptyMessage: 'Usa la ricerca per ottenere risultati', defineTabTitle: 'Definisci condizioni' }, platformCombobox: { countListResultsSingular: '1 elemento della lista dei risultati', - countListResultsPlural: "{{ count }} elementi dell'elenco dei risultati" + countListResultsPlural: "{count} elementi dell'elenco dei risultati" }, platformMultiCombobox: { inputGlyphAriaLabel: 'Seleziona Opzioni', @@ -317,12 +304,12 @@ export const FD_LANGUAGE_ITALIAN: FdLanguage = { }, platformTextarea: { counterMessageCharactersOverTheLimitSingular: '1 carattere oltre il limite', - counterMessageCharactersOverTheLimitPlural: '{{ count }} caratteri oltre il limite', + counterMessageCharactersOverTheLimitPlural: '{count} caratteri oltre il limite', counterMessageCharactersRemainingSingular: '1 carattere rimanente', - counterMessageCharactersRemainingPlural: '{{ count }} caratteri rimanenti' + counterMessageCharactersRemainingPlural: '{count} caratteri rimanenti' }, platformLink: { - roleDescriptionWithMedia: 'Media: {{ media }}' + roleDescriptionWithMedia: 'Media: {media}' }, platformList: { loadingAriaLabel: 'caricamento in corso' @@ -340,13 +327,13 @@ export const FD_LANGUAGE_ITALIAN: FdLanguage = { submitButtonTitle: 'Cerca', searchInputLabel: 'Cerca', synchronizeButtonTitle: 'Sincronizza', - searchSuggestionMessage: '{{ count }} suggerimenti trovati.', + searchSuggestionMessage: '{count} suggerimenti trovati.', searchSuggestionNavigateMessage: 'usa le frecce su e giù per navigare' }, platformSmartFilterBar: { searchPlaceholder: 'Cerca', submitButtonLabel: 'Vai', - filtersButtonLabel: 'Filtri ({{ filtersCount }})', + filtersButtonLabel: 'Filtri ({filtersCount})', showFiltersButtonLabel: 'Mostra filtri', hideFiltersButtonLabel: 'Nascondi filtri', defineConditionsRemoveConditionButtonTitle: 'Rimuovi condizione', @@ -403,7 +390,7 @@ export const FD_LANGUAGE_ITALIAN: FdLanguage = { P13ColumnsDialogSearchPlaceholder: 'Cerca', P13ColumnsDialogsShowSelected: 'Mostra selezionato', P13ColumnsDialogShowAll: 'Mostra tutto', - P13ColumnsDialogSelectAll: 'Seleziona tutto ({{ selectedColumnsCount }}/{{ selectableColumnsCount }})', + P13ColumnsDialogSelectAll: 'Seleziona tutto ({selectedColumnsCount}/{selectableColumnsCount})', P13ColumnsDialogConfirmationBtnLabel: 'OK', P13ColumnsDialogCancelBtnLabel: 'Annulla', P13ColumnsDialogMoveToTopBtn: 'Sposta in alto', @@ -428,9 +415,9 @@ export const FD_LANGUAGE_ITALIAN: FdLanguage = { P13FilterBooleanOptionTrue: 'Si', P13FilterBooleanOptionFalse: 'No', P13FilterDialogHeader: 'Filtra per', - P13FilterDialogIncludePanelTitleWithCount: 'Includi ({{ count }})', + P13FilterDialogIncludePanelTitleWithCount: 'Includi ({count})', P13FilterDialogIncludePanelTitleWithoutCount: 'Includi', - P13FilterDialogExcludePanelTitleWithCount: 'Escludi ({{ count }})', + P13FilterDialogExcludePanelTitleWithCount: 'Escludi ({count})', P13FilterDialogExcludePanelTitleWithoutCount: 'Escludi', P13FilterDialogRemoveFilterBtnTitle: 'Rimuovi filtro', P13FilterDialoAddFilterBtnTitle: 'Aggiungi filtro', @@ -463,7 +450,7 @@ export const FD_LANGUAGE_ITALIAN: FdLanguage = { toolbarActionExpandAllButtonTitle: 'Expand all', toolbarActionCollapseAllButtonTitle: 'Collapse all', filterDialogNotFilteredLabel: '(Non filtrato)', - filterDialogFilterByLabel: 'Filtra per: {{ filterLabel }}', + filterDialogFilterByLabel: 'Filtra per: {filterLabel}', filterDialogFilterTitle: 'Filtro', filterDialogFilterBy: 'Filtra per', filterDialogConfirmBtnLabel: 'OK', @@ -506,13 +493,13 @@ export const FD_LANGUAGE_ITALIAN: FdLanguage = { moveToCloseBtn: 'Annulla', newFolderTitle: 'Nuova cartella', newFolderAtRootInputLabel: 'Nome della nuova cartella', - newFolderAtFolderInputLabel: "Nome della nuova cartella all'interno di {{ folderName }}", + newFolderAtFolderInputLabel: "Nome della nuova cartella all'interno di {folderName}", newFolderInputPlaceholder: 'Scrivi qui..', - newFolderInputErrorLabel: 'Massimo {{ count }} caratteri consentiti', + newFolderInputErrorLabel: 'Massimo {count} caratteri consentiti', newFolderDialogCreateBtnLabel: 'Crea', newFolderDialogCancelBtnLabel: 'Annulla', breadcrumbLabelAllFiles: 'Tutti i files', - breadcrumbLabelAllFilesWithTotal: 'Tutti i files ({{ total }})', + breadcrumbLabelAllFilesWithTotal: 'Tutti i files ({total})', searchPlaceholder: 'Cerca', addBtnLabel: 'Aggiungi', newFolderBtnLabel: 'Nuova cartella', @@ -533,56 +520,51 @@ export const FD_LANGUAGE_ITALIAN: FdLanguage = { dragDropAreaText: 'Trascina i file per caricarli', noDataText: 'Nessun file trovato', noDataDescription: 'Trascina i file da caricare o usa il pulsante "Aggiungi".', - paginationTotal: 'Visualizzazione di {{ from }}-{{ to }} di {{ total }}', + paginationTotal: 'Visualizzazione di {from}-{to} di {total}', resultsPerPage: 'Risultati per pagina', - messageCreateFailed: 'Impossibile creare {{ folderName }}.', - messageCreateSuccess: '{{ folderName }} è stato creato.', - messageUpdateVersionFailed: 'Impossibile aggiornare la versione di {{ folderName }}.', - messageUpdateVersionSuccess: 'La versione di {{ folderName }} è stata aggiornata.', - messageFileRenameFailed: 'Impossibile rinominare"{{ from }}" in "{{ to }}."', - messageFileRenameSuccess: '"{{ from }}" è stato rinominato in "{{ to }}".', - messageRemoveFoldersAndFilesFailed: - 'Impossibile rimuovere le cartelle {{ foldersCount }} e i file {{ filesCount }}.', - messageRemoveFoldersAndFilesSuccess: - 'Le cartelle {{ foldersCount }} e i file {{ filesCount }} sono state rimosse.', - messageRemoveFoldersFailed: 'Impossibile rimuovere le cartelle {{ foldersount }}.', - messageRemoveFoldersSuccess: 'Le cartelle {{ foldersCount }} sono state rimosse.', - messageRemoveFilesFailed: 'Impossibile rimuovere {{ filesCount }} file.', - messageRemoveFilesSuccess: 'I file {{ filesCount }} sono stati rimossi.', - messageRemoveFileOrFolderFailed: 'Impossibile rimuovere {{ name }}.', - messageRemoveFileOrFolderSuccess: '{{ nome }} è stato rimosso.', + messageCreateFailed: 'Impossibile creare {folderName}.', + messageCreateSuccess: '{folderName} è stato creato.', + messageUpdateVersionFailed: 'Impossibile aggiornare la versione di {folderName}.', + messageUpdateVersionSuccess: 'La versione di {folderName} è stata aggiornata.', + messageFileRenameFailed: 'Impossibile rinominare"{from}" in "{to}."', + messageFileRenameSuccess: '"{from}" è stato rinominato in "{to}".', + messageRemoveFoldersAndFilesFailed: 'Impossibile rimuovere le cartelle {foldersCount} e i file {filesCount}.', + messageRemoveFoldersAndFilesSuccess: 'Le cartelle {foldersCount} e i file {filesCount} sono state rimosse.', + messageRemoveFoldersFailed: 'Impossibile rimuovere le cartelle {foldersount}.', + messageRemoveFoldersSuccess: 'Le cartelle {foldersCount} sono state rimosse.', + messageRemoveFilesFailed: 'Impossibile rimuovere {filesCount} file.', + messageRemoveFilesSuccess: 'I file {filesCount} sono stati rimossi.', + messageRemoveFileOrFolderFailed: 'Impossibile rimuovere {name}.', + messageRemoveFileOrFolderSuccess: '{nome} è stato rimosso.', messageMoveFoldersAndFilesFailed: - 'Impossibile spostare le cartelle {{ foldersCount }} e i file {{ filesCount }} in {{ to }}.', - messageMoveFoldersAndFilesSuccess: - '{{ foldersCount }} cartelle e {{ filesCount }} file sono stati sposati in {{ to }}.', - messageMoveFoldersFailed: 'Impossibile spostare le cartelle {{ foldersCount }} in {{ to }}.', - messageMoveFoldersSuccess: 'Le cartelle {{ foldersCount }} sono state spostate in {{ to }}.', - messageMoveFilesFailed: 'Impossibile spostare i file {{ filesCount }} in {{ to }}.', - messageMoveFilesSuccess: 'I file {{ filesCount }} sono stati spostati in {{ to }}.', - messageMoveFileOrFolderFailed: 'Impossibile spostare {{ name }} in {{ to }}.', - messageMoveFileOrFolderSuccess: '{{ name }} è stato spostato in {{ to }}.', + 'Impossibile spostare le cartelle {foldersCount} e i file {filesCount} in {to}.', + messageMoveFoldersAndFilesSuccess: '{foldersCount} cartelle e {filesCount} file sono stati sposati in {to}.', + messageMoveFoldersFailed: 'Impossibile spostare le cartelle {foldersCount} in {to}.', + messageMoveFoldersSuccess: 'Le cartelle {foldersCount} sono state spostate in {to}.', + messageMoveFilesFailed: 'Impossibile spostare i file {filesCount} in {to}.', + messageMoveFilesSuccess: 'I file {filesCount} sono stati spostati in {to}.', + messageMoveFileOrFolderFailed: 'Impossibile spostare {name} in {to}.', + messageMoveFileOrFolderSuccess: '{name} è stato spostato in {to}.', messageMoveRootFoldersAndFilesFailed: - 'Impossibile spostare le cartelle {{ foldersCount }} e i file {{ filesCount }} in tutti i file.', + 'Impossibile spostare le cartelle {foldersCount} e i file {filesCount} in tutti i file.', messageMoveRootFoldersAndFilesSuccess: - 'Le cartelle {{ foldersCount }} e i file {{ filesCount }} sono state spostate in tutti i file.', - messageMoveRootFoldersFailed: 'Impossibile spostare le cartelle {{ foldersCount }} in tutti i file.', - messageMoveRootFoldersSuccess: '{{ foldersCount }} le cartelle sono state spostate in tutti i file.', - messageMoveRootFilesFailed: 'Impossibile spostare i file {{ filesCount }} in tutti i file.', - messageMoveRootFilesSuccess: '{{ filesCount }} file sono stati spostati in tutti i file.', - messageMoveRootFileOrFolderFailed: 'Impossibile spostare {{ name }} in tutti i file.', - messageMoveRootFileOrFolderSuccess: '{{ name }} è stato spostato in tutti i file.', - messageFileTypeMismatchPlural: - '{{ filesCount }} file hanno il tipo sbagliato. Tipi consentiti: {{ allowedTypes }}', - messageFileTypeMismatchSingular: - 'Il file "{{ fileName }}" ha il tipo errato. Tipi consentiti: {{ allowedTypes }}.', + 'Le cartelle {foldersCount} e i file {filesCount} sono state spostate in tutti i file.', + messageMoveRootFoldersFailed: 'Impossibile spostare le cartelle {foldersCount} in tutti i file.', + messageMoveRootFoldersSuccess: '{foldersCount} le cartelle sono state spostate in tutti i file.', + messageMoveRootFilesFailed: 'Impossibile spostare i file {filesCount} in tutti i file.', + messageMoveRootFilesSuccess: '{filesCount} file sono stati spostati in tutti i file.', + messageMoveRootFileOrFolderFailed: 'Impossibile spostare {name} in tutti i file.', + messageMoveRootFileOrFolderSuccess: '{name} è stato spostato in tutti i file.', + messageFileTypeMismatchPlural: '{filesCount} file hanno il tipo sbagliato. Tipi consentiti: {allowedTypes}', + messageFileTypeMismatchSingular: 'Il file "{fileName}" ha il tipo errato. Tipi consentiti: {allowedTypes}.', messageFileSizeExceededPlural: - '{{ filesCount }} file hanno superato la dimensione massima del file. Dimensione file massima consentita: {{ maxFileSize }}.', + '{filesCount} file hanno superato la dimensione massima del file. Dimensione file massima consentita: {maxFileSize}.', messageFileSizeExceededSingular: - 'Il file "{{ fileName }}" ha superato le dimensioni massime del file. Dimensione file massima consentita: {{ maxFileSize }}.', + 'Il file "{fileName}" ha superato le dimensioni massime del file. Dimensione file massima consentita: {maxFileSize}.', messageFileNameLengthExceededPlural: - '{{ filesCount }} file hanno superato la lunghezza massima del nome file. Lunghezza del nome file consentita: {{ maxFilenameLength }} caratteri.', + '{filesCount} file hanno superato la lunghezza massima del nome file. Lunghezza del nome file consentita: {maxFilenameLength} caratteri.', messageFileNameLengthExceededSingular: - 'Il nome "{{ fileName }}" ha superato la lunghezza massima del nome del file. Lunghezza del nome consentita: {{ maxFilenameLength }} caratteri.' + 'Il nome "{fileName}" ha superato la lunghezza massima del nome del file. Lunghezza del nome consentita: {maxFilenameLength} caratteri.' }, platformWizardGenerator: { summarySectionEditStep: 'Edit' @@ -629,10 +611,10 @@ export const FD_LANGUAGE_ITALIAN: FdLanguage = { selectOptionLabel: 'Seleziona un opzione' }, fnSlider: { - minMaxDetails: 'Il valore minimo dello slider è {{ min }}, il valore massimo è {{ max }}', - valueminDetails: 'Il valore è {{ value }}', - valuemaxDetails: 'Il valore è {{ value }}', - valueNowDetails: 'Il valore attuale è{{ value }}' + minMaxDetails: 'Il valore minimo dello slider è {min}, il valore massimo è {max}', + valueminDetails: 'Il valore è {value}', + valuemaxDetails: 'Il valore è {value}', + valueNowDetails: 'Il valore attuale è{value}' }, fnSwitch: { semanticAcceptLabel: 'Accettare', diff --git a/libs/i18n/src/lib/languages/polish.ts b/libs/i18n/src/lib/languages/polish.ts index ded433c9985..3eaf57410ef 100644 --- a/libs/i18n/src/lib/languages/polish.ts +++ b/libs/i18n/src/lib/languages/polish.ts @@ -5,7 +5,7 @@ import { FdLanguage } from '../models/lang'; */ export const FD_LANGUAGE_POLISH: FdLanguage = { coreMultiComboBox: { - selectAllLabel: 'Zaznacz wszystko ({{selectedItems}} z {{totalItems}})' + selectAllLabel: 'Zaznacz wszystko ({selectedItems} z {totalItems})' }, coreCarousel: { leftNavigationBtnLabel: 'Idź do poprzedniego elementu', @@ -34,8 +34,8 @@ export const FD_LANGUAGE_POLISH: FdLanguage = { }, coreGridList: { filterBarCancelButtonTitle: 'Anuluj', - listItemStatusAriaLabel: 'Status elementu: {{ status }} ', - listItemCounterAriaLabel: 'Element posiada {{ count }} subelementów', + listItemStatusAriaLabel: 'Status elementu: {status} ', + listItemCounterAriaLabel: 'Element posiada {count} subelementów', listItemButtonDetailsTitle: 'Szczegóły', listItemButtonDeleteTitle: 'Usuń', listItemStatusContainsErrors: 'Zawiera błędy', @@ -47,31 +47,31 @@ export const FD_LANGUAGE_POLISH: FdLanguage = { }, coreMultiInput: { multiInputAriaLabel: 'Multi Value Input', - tokensCountText: ({ length }) => `Contains ${length || 'no'} token${length === 1 ? '' : 's'}.` + tokensCountText: 'Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.' }, coreNavigation: { mainNavigation: 'Main Navigation', navigationPath: 'Navigation Path' }, coreNestedList: { - linkItemAriaLabel: 'Element drzewa {{ itemDetails }}, {{ index }} z {{ total }}{{ selectedDescription }}' + linkItemAriaLabel: 'Element drzewa {itemDetails}, {index} z {total}{selectedDescription}' }, coreOverflowLayout: { - moreItemsButton: '{{ count }} więcej' + moreItemsButton: '{count} więcej' }, corePagination: { - pageLabel: 'Strona {{ pageNumber }}', - currentPageAriaLabel: 'Aktualna strona {{ pageNumber }}', + pageLabel: 'Strona {pageNumber}', + currentPageAriaLabel: 'Aktualna strona {pageNumber}', labelBeforeInputMobile: 'Strona:', - labelAfterInputMobile: 'z {{ totalCount }}', - inputAriaLabel: 'Dane strony, Aktualna strona, Strona {{ pageNumber }} z {{ totalCount }}', + labelAfterInputMobile: 'z {totalCount}', + inputAriaLabel: 'Dane strony, Aktualna strona, Strona {pageNumber} z {totalCount}', itemsPerPageLabel: 'Liczba wyników na stronę:', firstLabel: 'Pierwszy', previousLabel: 'Poprzedni', nextLabel: 'Następny', lastLabel: 'Ostatni', ariaLabel: 'Stronicowanie', - totalResultsLabel: 'Liczba wyników: {{ totalCount }}' + totalResultsLabel: 'Liczba wyników: {totalCount}' }, coreProductSwitch: { ariaLabel: 'Przełącznik Produktu' @@ -82,18 +82,18 @@ export const FD_LANGUAGE_POLISH: FdLanguage = { search: 'Search' }, coreSlider: { - singleMinMaxDetails: 'Minimalna wartość {{ min }}, maksymalna wartość {{ max }}', - singleValueminDetails: 'Wartość {{ value }}', - singleValuemaxDetails: 'Wartość {{ value }}', - singleValueNowDetails: 'Aktualna wartość: {{ value }}', - multipleHandle1MinMaxDetails: 'Minimalna wartość {{ min }}, maksymalna wartość {{ max }}', - multipleHandle1ValueminDetails: 'Wartość {{ value }}', - multipleHandle1ValuemaxDetails: 'Wartość {{ value }}', - multipleHandle1ValueNowDetails: 'Aktualna wartość {{ value }}', - multipleHandle2MinMaxDetails: 'Minimalna wartość {{ min }}, maksymalna wartość {{ max }}', - multipleHandle2ValueminDetails: 'Wartość {{ value }}', - multipleHandle2ValuemaxDetails: 'Wartość {{ value }}', - multipleHandle2ValueNowDetails: 'Aktualna wartość {{ max }}' + singleMinMaxDetails: 'Minimalna wartość {min}, maksymalna wartość {max}', + singleValueminDetails: 'Wartość {value}', + singleValuemaxDetails: 'Wartość {value}', + singleValueNowDetails: 'Aktualna wartość: {value}', + multipleHandle1MinMaxDetails: 'Minimalna wartość {min}, maksymalna wartość {max}', + multipleHandle1ValueminDetails: 'Wartość {value}', + multipleHandle1ValuemaxDetails: 'Wartość {value}', + multipleHandle1ValueNowDetails: 'Aktualna wartość {value}', + multipleHandle2MinMaxDetails: 'Minimalna wartość {min}, maksymalna wartość {max}', + multipleHandle2ValueminDetails: 'Wartość {value}', + multipleHandle2ValuemaxDetails: 'Wartość {value}', + multipleHandle2ValueNowDetails: 'Aktualna wartość {max}' }, coreSplitButton: { expandButtonAriaLabel: 'Pokaż więcej', @@ -144,7 +144,7 @@ export const FD_LANGUAGE_POLISH: FdLanguage = { ariaRoleDescription: 'token' }, coreTokenizer: { - moreLabel: '{{ count }} więcej' + moreLabel: '{count} więcej' }, coreUploadCollection: { menuOkText: 'Ok', @@ -205,11 +205,11 @@ export const FD_LANGUAGE_POLISH: FdLanguage = { messagesTeamRemoved: '1 zespół usuniety', messagesErrorBuildGraph: 'Wystąpił błąd podczas budowy grafu. Sprawdź wprowadzone dane.', messagesUndoAction: 'Cofnij', - nodeMembersCount: 'Liczba subnodów {{ count }}', + nodeMembersCount: 'Liczba subnodów {count}', nodeVariousTeams: 'Różne zespoły', nodeStatusDueToday: 'Do dziś', - nodeStatusDueInXDays: 'Termin dni {{ count }}', - nodeStatusXDaysOverdue: 'Liczba dni zaległych {{ count }}', + nodeStatusDueInXDays: 'Termin dni {count}', + nodeStatusXDaysOverdue: 'Liczba dni zaległych {count}', nodeActionAddApproversBefore: 'Dodaj zatwierdzających przed', nodeActionAddApproversAfter: 'Dodaj zatwierdzających po', nodeActionAddApproversParallel: 'Dodaj równolegle zatwierdzających', @@ -229,8 +229,8 @@ export const FD_LANGUAGE_POLISH: FdLanguage = { toolbarRemove: 'Usuń', toolbarEditApprover: 'Edytuj zatwierdzającego', watchersInputPlaceholder: 'Szukaj tutaj..', - userListSelectedItemsCountSingular: 'Liczba zaznaczonych elementów: {{ count }}', - userListSelectedItemsCountPlural: 'Liczba zaznaczonych elementów: {{ count }}', + userListSelectedItemsCountSingular: 'Liczba zaznaczonych elementów: {count}', + userListSelectedItemsCountPlural: 'Liczba zaznaczonych elementów: {count}', statusApproved: 'approved', statusRejected: 'rejected', statusInProgress: 'in progress', @@ -254,15 +254,15 @@ export const FD_LANGUAGE_POLISH: FdLanguage = { searchHideAdvancedSearchLabel: 'Ukryj filtry', searchShowAllAdvancedSearchLabel: 'Pokaż wszystkie filtry', searchHideAllAdvancedSearchLabel: 'Ukryj wszystkie filtry', - selectTabDisplayCountLabel: 'Elementy ({{ count }})', + selectTabDisplayCountLabel: 'Elementy ({count})', selectTabMoreBtnLabel: 'Więcej', - selectTabCountHiddenA11yLabel: 'Liczba wierszy {{ rowCount }}, liczba kolumn {{ colCount }}', + selectTabCountHiddenA11yLabel: 'Liczba wierszy {rowCount}, liczba kolumn {colCount}', selectMobileTabBackBtnTitle: 'Powrót', selectMobileTabBtnOpenDialogLabel: 'Otwórz dialog', - selectMobileTabTitle: '{{ title }} zakładka', + selectMobileTabTitle: '{title} zakładka', selectMobileConditionEmpty: 'Pusty', defineConditionTitle: 'Produkt', - defineConditionSelectedValueHiddenA11yLabel: 'zaznaczona wartość {{ value }}', + defineConditionSelectedValueHiddenA11yLabel: 'zaznaczona wartość {value}', defineConditionConditionsGroupHeaderInclude: 'Zawiera', defineConditionConditionsGroupHeaderExclude: 'Nie zawiera', defineConditionFromPlaceholder: 'od', @@ -283,14 +283,14 @@ export const FD_LANGUAGE_POLISH: FdLanguage = { defineConditionConditionStrategyLabelEmpty: 'pusty', defineConditionConditionStrategyLabelNotEqualTo: 'nie równy', defineConditionConditionStrategyLabelNotEmpty: 'nie pusty', - defineConditionMaxCountError: 'Wprowadź wartość zawierającą nie wiecej niż {{ count }} znaków', + defineConditionMaxCountError: 'Wprowadź wartość zawierającą nie wiecej niż {count} znaków', selectTabTitle: 'Wybierz z listy', searchTableEmptyMessage: 'Użyj wyszukiwania by uzyskać wyniki', defineTabTitle: 'Zdefinjuj warunki' }, platformCombobox: { countListResultsSingular: 'Lista 1 elementowa', - countListResultsPlural: 'Lista {{ count }} elementowa' + countListResultsPlural: 'Lista {count} elementowa' }, platformMultiCombobox: { inputGlyphAriaLabel: 'Zaznacz elementy', @@ -299,13 +299,13 @@ export const FD_LANGUAGE_POLISH: FdLanguage = { mobileShowSelectedItemsButton: 'Pokaż zaznaczone elementy' }, platformTextarea: { - counterMessageCharactersOverTheLimitSingular: 'Liczba znaków powyżej limitu {{ count }}', - counterMessageCharactersOverTheLimitPlural: 'Liczba znaków powyżej limitu {{ count }}', - counterMessageCharactersRemainingSingular: 'Liczba pozostających znaków {{ count }}', - counterMessageCharactersRemainingPlural: 'Liczba pozostających znaków {{ count }}' + counterMessageCharactersOverTheLimitSingular: 'Liczba znaków powyżej limitu {count}', + counterMessageCharactersOverTheLimitPlural: 'Liczba znaków powyżej limitu {count}', + counterMessageCharactersRemainingSingular: 'Liczba pozostających znaków {count}', + counterMessageCharactersRemainingPlural: 'Liczba pozostających znaków {count}' }, platformLink: { - roleDescriptionWithMedia: 'Media: {{ media }}' + roleDescriptionWithMedia: 'Media: {media}' }, platformList: { loadingAriaLabel: 'wczytywanie' @@ -323,13 +323,13 @@ export const FD_LANGUAGE_POLISH: FdLanguage = { submitButtonTitle: 'Szukaj', searchInputLabel: 'Szukaj', synchronizeButtonTitle: 'Synchronizuj', - searchSuggestionMessage: 'Znaleziono {{ count }} możliwych wyników.', + searchSuggestionMessage: 'Znaleziono {count} możliwych wyników.', searchSuggestionNavigateMessage: 'Poruszaj się za pomocą strzałek góra/dół' }, platformSmartFilterBar: { searchPlaceholder: 'Szukaj', submitButtonLabel: 'Idź', - filtersButtonLabel: 'Filtry ({{ filtersCount }})', + filtersButtonLabel: 'Filtry ({filtersCount})', showFiltersButtonLabel: 'Pokaż filtry', hideFiltersButtonLabel: 'Ukryj filtry', defineConditionsRemoveConditionButtonTitle: 'Usuń warunek', @@ -386,7 +386,7 @@ export const FD_LANGUAGE_POLISH: FdLanguage = { P13ColumnsDialogSearchPlaceholder: 'Szukaj', P13ColumnsDialogsShowSelected: 'Pokaż wybrane', P13ColumnsDialogShowAll: 'Pokaż wszystkie', - P13ColumnsDialogSelectAll: 'Pokaż wszystkie ({{ selectedColumnsCount }}/{{ selectableColumnsCount }})', + P13ColumnsDialogSelectAll: 'Pokaż wszystkie ({selectedColumnsCount}/{selectableColumnsCount})', P13ColumnsDialogConfirmationBtnLabel: 'OK', P13ColumnsDialogCancelBtnLabel: 'Anuluj', P13ColumnsDialogMoveToTopBtn: 'Przesuń do samej góry', @@ -411,9 +411,9 @@ export const FD_LANGUAGE_POLISH: FdLanguage = { P13FilterBooleanOptionTrue: 'Tak', P13FilterBooleanOptionFalse: 'Nie', P13FilterDialogHeader: 'Filtruj', - P13FilterDialogIncludePanelTitleWithCount: 'Zawiera ({{ count }})', + P13FilterDialogIncludePanelTitleWithCount: 'Zawiera ({count})', P13FilterDialogIncludePanelTitleWithoutCount: 'Zawiera', - P13FilterDialogExcludePanelTitleWithCount: 'Nie zawiera ({{ count }})', + P13FilterDialogExcludePanelTitleWithCount: 'Nie zawiera ({count})', P13FilterDialogExcludePanelTitleWithoutCount: 'Nie zawiera', P13FilterDialogRemoveFilterBtnTitle: 'Usuń Filtr', P13FilterDialoAddFilterBtnTitle: 'Dodaj Filtr', @@ -446,7 +446,7 @@ export const FD_LANGUAGE_POLISH: FdLanguage = { toolbarActionExpandAllButtonTitle: 'Expand all', toolbarActionCollapseAllButtonTitle: 'Collapse all', filterDialogNotFilteredLabel: '(Nie zastosowano żadnego filtra)', - filterDialogFilterByLabel: 'Użyto filtr: {{ filterLabel }}', + filterDialogFilterByLabel: 'Użyto filtr: {filterLabel}', filterDialogFilterTitle: 'Filtr', filterDialogFilterBy: 'Użyto filtr', filterDialogConfirmBtnLabel: 'OK', @@ -489,13 +489,13 @@ export const FD_LANGUAGE_POLISH: FdLanguage = { moveToCloseBtn: 'Anuluj', newFolderTitle: 'Nowy folder', newFolderAtRootInputLabel: 'Nazwa nowego folderu', - newFolderAtFolderInputLabel: 'Nazwa nowego folderu wewnątrz folderu {{ folderName }}', + newFolderAtFolderInputLabel: 'Nazwa nowego folderu wewnątrz folderu {folderName}', newFolderInputPlaceholder: 'Pisz tutaj...', - newFolderInputErrorLabel: 'Maksymalna liczba znaków {{ count }}', + newFolderInputErrorLabel: 'Maksymalna liczba znaków {count}', newFolderDialogCreateBtnLabel: 'Utwórz', newFolderDialogCancelBtnLabel: 'Anuluj', breadcrumbLabelAllFiles: 'Wszystkie pliki', - breadcrumbLabelAllFilesWithTotal: 'Wszystkie pliki ({{ total }})', + breadcrumbLabelAllFilesWithTotal: 'Wszystkie pliki ({total})', searchPlaceholder: 'Szukaj', addBtnLabel: 'Dodaj`', newFolderBtnLabel: 'Nowy Folder', @@ -516,58 +516,56 @@ export const FD_LANGUAGE_POLISH: FdLanguage = { dragDropAreaText: 'Przeciągnij by przekazać plik', noDataText: 'Nie znaleziono żadnych plików', noDataDescription: 'Upuść pliki żeby przekazać lub użyj przycisku “Dodaj” ', - paginationTotal: 'Widoczne {{ from }}-{{ to }} z {{ total }}', + paginationTotal: 'Widoczne {from}-{to} z {total}', resultsPerPage: 'Liczba wyników na strone', - messageCreateFailed: 'Nie udało się utworzyć {{ folderName }}.', - messageCreateSuccess: '{{ folderName }} został utworzony.', - messageUpdateVersionFailed: 'Nie udało się zaktualizować wersji {{ folderName }}.', - messageUpdateVersionSuccess: '{{ folderName }} wersja zaktualizowana.', - messageFileRenameFailed: 'Nie powiodła się zmiana nazwy z "{{ from }}" na "{{ to }}."', - messageFileRenameSuccess: '"{{ from }}" został zmieniony na "{{ to }}".', + messageCreateFailed: 'Nie udało się utworzyć {folderName}.', + messageCreateSuccess: '{folderName} został utworzony.', + messageUpdateVersionFailed: 'Nie udało się zaktualizować wersji {folderName}.', + messageUpdateVersionSuccess: '{folderName} wersja zaktualizowana.', + messageFileRenameFailed: 'Nie powiodła się zmiana nazwy z "{from}" na "{to}."', + messageFileRenameSuccess: '"{from}" został zmieniony na "{to}".', messageRemoveFoldersAndFilesFailed: - 'Nie powiodło się usunięcie folderów w liczbie {{ foldersCount }} oraz plików w liczbie {{ filesCount }} .', + 'Nie powiodło się usunięcie folderów w liczbie {foldersCount} oraz plików w liczbie {filesCount} .', messageRemoveFoldersAndFilesSuccess: - 'Liczba folderów usunięta {{ foldersCount }} oraz liczba plików usuniętych {{ filesCount }}.', - messageRemoveFoldersFailed: 'Nie powiodło się usunięcie folderów w liczbie {{ foldersCount }}.', - messageRemoveFoldersSuccess: 'Liczba folderów usuniętych {{ foldersCount }}', - messageRemoveFilesFailed: 'Nie powiodło się usunięcie plików w liczbie {{ foldersCount }}.', - messageRemoveFilesSuccess: 'Liczba plików usuniętych {{ foldersCount }}', - messageRemoveFileOrFolderFailed: 'Nie powiodło się usunięcie {{ name }}.', - messageRemoveFileOrFolderSuccess: 'Usunięto {{ name }}.', + 'Liczba folderów usunięta {foldersCount} oraz liczba plików usuniętych {filesCount}.', + messageRemoveFoldersFailed: 'Nie powiodło się usunięcie folderów w liczbie {foldersCount}.', + messageRemoveFoldersSuccess: 'Liczba folderów usuniętych {foldersCount}', + messageRemoveFilesFailed: 'Nie powiodło się usunięcie plików w liczbie {foldersCount}.', + messageRemoveFilesSuccess: 'Liczba plików usuniętych {foldersCount}', + messageRemoveFileOrFolderFailed: 'Nie powiodło się usunięcie {name}.', + messageRemoveFileOrFolderSuccess: 'Usunięto {name}.', messageMoveFoldersAndFilesFailed: - 'Nie powiodło się przeniesienie folderów w liczbie {{ foldersCount }} oraz plików w liczbie {{ filesCount }} do {{ to }}.', + 'Nie powiodło się przeniesienie folderów w liczbie {foldersCount} oraz plików w liczbie {filesCount} do {to}.', messageMoveFoldersAndFilesSuccess: - 'Foldery w liczbie {{ foldersCount }} oraz pliki w liczbie {{ filesCount }} zostały przeniesione do {{ to }}.', - messageMoveFoldersFailed: 'Nie powiodło się przeniesienie folderów w liczbie {{ foldersCount }} do {{ to }}.', - messageMoveFoldersSuccess: 'Foldery w liczbie {{ foldersCount }} zostały przeniesione do {{ to }}.', - messageMoveFilesFailed: 'Nie powiodło się przeniesienie plików w liczbie {{ filesCount }} do {{ to }}.', - messageMoveFilesSuccess: 'Pliki w liczbie {{ filesCount }} zostały przeniesione do {{ to }}.', - messageMoveFileOrFolderFailed: 'Nie powiodło się przeniesienie {{ name }} do {{ to }}.', - messageMoveFileOrFolderSuccess: '{{ name }} przeniesiono do {{ to }}.', + 'Foldery w liczbie {foldersCount} oraz pliki w liczbie {filesCount} zostały przeniesione do {to}.', + messageMoveFoldersFailed: 'Nie powiodło się przeniesienie folderów w liczbie {foldersCount} do {to}.', + messageMoveFoldersSuccess: 'Foldery w liczbie {foldersCount} zostały przeniesione do {to}.', + messageMoveFilesFailed: 'Nie powiodło się przeniesienie plików w liczbie {filesCount} do {to}.', + messageMoveFilesSuccess: 'Pliki w liczbie {filesCount} zostały przeniesione do {to}.', + messageMoveFileOrFolderFailed: 'Nie powiodło się przeniesienie {name} do {to}.', + messageMoveFileOrFolderSuccess: '{name} przeniesiono do {to}.', messageMoveRootFoldersAndFilesFailed: - 'Nie powiodło się przeniesienie folderów w liczbie {{ foldersCount }} oraz plików w liczbie {{ filesCount }} do wszystkich plików.', + 'Nie powiodło się przeniesienie folderów w liczbie {foldersCount} oraz plików w liczbie {filesCount} do wszystkich plików.', messageMoveRootFoldersAndFilesSuccess: - 'Foldery w liczbie {{ foldersCount }} oraz pliki w liczbie {{ filesCount }} zostały przeniesione do wszystkich plików.', + 'Foldery w liczbie {foldersCount} oraz pliki w liczbie {filesCount} zostały przeniesione do wszystkich plików.', messageMoveRootFoldersFailed: - 'Nie powiodło się przeniesienie folderów w liczbie {{ foldersCount }} do wszystkich folderów.', - messageMoveRootFoldersSuccess: - 'Foldery w liczbie {{ foldersCount }} zostały przeniesione do wszystkich folderów.', + 'Nie powiodło się przeniesienie folderów w liczbie {foldersCount} do wszystkich folderów.', + messageMoveRootFoldersSuccess: 'Foldery w liczbie {foldersCount} zostały przeniesione do wszystkich folderów.', messageMoveRootFilesFailed: - 'Nie powiodło się przeniesienie plików w liczbie {{ filesCount }} do wszystkich plików.', - messageMoveRootFilesSuccess: 'Pliki w liczbie {{ filesCount }} zostały przeniesione do wszystkich plików.', - messageMoveRootFileOrFolderFailed: 'Nie powiodło się przeniesienie {{ name }} do wszystkich plików.', - messageMoveRootFileOrFolderSuccess: '{{ name }} przeniesiono do wszystkich plików.', - messageFileTypeMismatchPlural: - 'Liczba plików ze złym typem {{ filesCount }}. Typy dozwolone: {{ allowedTypes }}.', - messageFileTypeMismatchSingular: 'Plik "{{ fileName }}" ma zły typ. Typy dozwolone: {{ allowedTypes }}.', + 'Nie powiodło się przeniesienie plików w liczbie {filesCount} do wszystkich plików.', + messageMoveRootFilesSuccess: 'Pliki w liczbie {filesCount} zostały przeniesione do wszystkich plików.', + messageMoveRootFileOrFolderFailed: 'Nie powiodło się przeniesienie {name} do wszystkich plików.', + messageMoveRootFileOrFolderSuccess: '{name} przeniesiono do wszystkich plików.', + messageFileTypeMismatchPlural: 'Liczba plików ze złym typem {filesCount}. Typy dozwolone: {allowedTypes}.', + messageFileTypeMismatchSingular: 'Plik "{fileName}" ma zły typ. Typy dozwolone: {allowedTypes}.', messageFileSizeExceededPlural: - 'Liczba plików przekraczająca maksymalny rozmiar {{ filesCount }}. Maksymalna wielkość pliku do: {{ maxFileSize }}.', + 'Liczba plików przekraczająca maksymalny rozmiar {filesCount}. Maksymalna wielkość pliku do: {maxFileSize}.', messageFileSizeExceededSingular: - 'Plik "{{ fileName }}" przekroczył maksymalny rozmiar. Maksymalna wielkość pliku: {{ maxFileSize }}.', + 'Plik "{fileName}" przekroczył maksymalny rozmiar. Maksymalna wielkość pliku: {maxFileSize}.', messageFileNameLengthExceededPlural: - 'Liczba plików przekraczająca maksymalną długość nazwy {{ filesCount }}. Maksymalna długość: {{ maxFilenameLength }} znaków.', + 'Liczba plików przekraczająca maksymalną długość nazwy {filesCount}. Maksymalna długość: {maxFilenameLength} znaków.', messageFileNameLengthExceededSingular: - 'Nazwa "{{ fileName }}" przekroczyła maksymalną długość. Maksymalna długość: {{ maxFilenameLength }} znaków.' + 'Nazwa "{fileName}" przekroczyła maksymalną długość. Maksymalna długość: {maxFilenameLength} znaków.' }, platformWizardGenerator: { summarySectionEditStep: 'Edytuj' @@ -614,10 +612,10 @@ export const FD_LANGUAGE_POLISH: FdLanguage = { selectOptionLabel: 'Wybierz opcję' }, fnSlider: { - minMaxDetails: 'Minimalna wartość {{ min }}, maksymalna wartość {{ max }}', - valueminDetails: 'Wartość {{ value }}', - valuemaxDetails: 'Wartość {{ value }}', - valueNowDetails: 'Aktualna wartość: {{ value }}' + minMaxDetails: 'Minimalna wartość {min}, maksymalna wartość {max}', + valueminDetails: 'Wartość {value}', + valuemaxDetails: 'Wartość {value}', + valueNowDetails: 'Aktualna wartość: {value}' }, fnSwitch: { semanticAcceptLabel: 'Zatwierdz', diff --git a/libs/i18n/src/lib/languages/russian.ts b/libs/i18n/src/lib/languages/russian.ts index d9c7e7d0012..4c8824f43cb 100644 --- a/libs/i18n/src/lib/languages/russian.ts +++ b/libs/i18n/src/lib/languages/russian.ts @@ -1,14 +1,11 @@ -import { FdLanguage, FdLanguageKeyArgs } from '../models/lang'; -import { PluralizationSet1 } from './pluralization/set1'; - -const pluralization = new PluralizationSet1(); +import { FdLanguage } from '../models/lang'; /** * Default set of translations of Fundamental UI library for Russian language */ export const FD_LANGUAGE_RUSSIAN: FdLanguage = { coreMultiComboBox: { - selectAllLabel: 'Выбрать все ({{selectedItems}} из {{totalItems}})' + selectAllLabel: 'Выбрать все ({selectedItems} из {totalItems})' }, coreCarousel: { leftNavigationBtnLabel: 'Перейти к предыдущему элементу', @@ -37,19 +34,9 @@ export const FD_LANGUAGE_RUSSIAN: FdLanguage = { }, coreGridList: { filterBarCancelButtonTitle: 'Отмена', - listItemStatusAriaLabel: 'Элемент имеет статус. Статус: {{ status }}.', - listItemCounterAriaLabel: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return `Элемент имеет 1 дочерний элемент.`; - case 'few': - return `Элемент имеет ${count} дочерних элемента.`; - default: - return `Элемент имеет ${count} дочeрних элементов.`; - } - }, + listItemStatusAriaLabel: 'Элемент имеет статус. Статус: {status}.', + listItemCounterAriaLabel: + 'Элемент имеет { count, plural, one {1 дочерний элемент} few {# дочерних элемента} other {# дочерних элементов} }.', listItemButtonDetailsTitle: 'Подробности', listItemButtonDeleteTitle: 'Удалить', listItemStatusContainsErrors: 'Содержит ошибки', @@ -61,54 +48,32 @@ export const FD_LANGUAGE_RUSSIAN: FdLanguage = { }, coreMultiInput: { multiInputAriaLabel: 'Multi Value Input', - tokensCountText: ({ length }) => { - const option = pluralization.process(length); - switch (option) { - case 'zero': - return 'Нет выбранных вариантов.'; - case 'one': - return `Выбран 1 вариант.`; - case 'few': - return `Выбрано ${length} варианта.`; - default: - return `Выбрано ${length} вариантов.`; - } - } + tokensCountText: + '{ length, plural, =0 {Нет выбранных} one {Выбран 1} other {Выбрано #} } { length, plural, one { вариант } few { варианта } other { вариантов } }.' }, coreNavigation: { mainNavigation: 'Главная Навигация', navigationPath: 'Путь навигации' }, coreNestedList: { - linkItemAriaLabel: 'Элемент дерева {{ itemDetails }}, {{ index }} из {{ total }}{{ selectedDescription }}' + linkItemAriaLabel: 'Элемент дерева {itemDetails}, {index} из {total}{selectedDescription}' }, coreOverflowLayout: { - moreItemsButton: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return `Еще 1 елемент`; - case 'few': - return `Еще ${count} елемента`; - default: - return `Еще ${count} елементов`; - } - } + moreItemsButton: 'Еще { count, plural, one {1 елемент} few {# елемента} other {# елементов} }' }, corePagination: { - pageLabel: 'Страница {{ pageNumber }}', - currentPageAriaLabel: 'Страница {{ pageNumber }} активна', + pageLabel: 'Страница {pageNumber}', + currentPageAriaLabel: 'Страница {pageNumber} активна', labelBeforeInputMobile: 'Страница:', - labelAfterInputMobile: 'из {{ totalCount }}', - inputAriaLabel: 'Поле ввода страницы, Текущая страница, Страница {{ pageNumber }} из {{ totalCount }}', + labelAfterInputMobile: 'из {totalCount}', + inputAriaLabel: 'Поле ввода страницы, Текущая страница, Страница {pageNumber} из {totalCount}', itemsPerPageLabel: 'Результатов на странице:', firstLabel: 'Перейти к первой', previousLabel: 'Перейти к предыдущей', nextLabel: 'Перейти к следующей', lastLabel: 'Перейти к последней', ariaLabel: 'Нумерация страниц', - totalResultsLabel: '{{ totalCount }} результатов' + totalResultsLabel: '{totalCount} результатов' }, coreProductSwitch: { ariaLabel: 'Переключатель' @@ -119,18 +84,18 @@ export const FD_LANGUAGE_RUSSIAN: FdLanguage = { search: 'Поиск' }, coreSlider: { - singleMinMaxDetails: 'Минимальное значение слайдера {{ min }}, максимальное значение {{ max }}', - singleValueminDetails: 'Значение равно {{ value }}', - singleValuemaxDetails: 'Значение равно {{ value }}', - singleValueNowDetails: 'Текущее значение: {{ value }}', - multipleHandle1MinMaxDetails: 'Минимальное значение слайдера {{ min }}, максимальное значение {{ max }}', - multipleHandle1ValueminDetails: 'Значение равно {{ value }}', - multipleHandle1ValuemaxDetails: 'Значение равно {{ value }}', - multipleHandle1ValueNowDetails: 'Текущее значение: {{ value }}', - multipleHandle2MinMaxDetails: 'Минимальное значение слайдера {{ min }}, максимальное значение {{ max }}', - multipleHandle2ValueminDetails: 'Значение равно {{ value }}', - multipleHandle2ValuemaxDetails: 'Значение равно {{ value }}', - multipleHandle2ValueNowDetails: 'Текущее значение: {{ value }}' + singleMinMaxDetails: 'Минимальное значение слайдера {min}, максимальное значение {max}', + singleValueminDetails: 'Значение равно {value}', + singleValuemaxDetails: 'Значение равно {value}', + singleValueNowDetails: 'Текущее значение: {value}', + multipleHandle1MinMaxDetails: 'Минимальное значение слайдера {min}, максимальное значение {max}', + multipleHandle1ValueminDetails: 'Значение равно {value}', + multipleHandle1ValuemaxDetails: 'Значение равно {value}', + multipleHandle1ValueNowDetails: 'Текущее значение: {value}', + multipleHandle2MinMaxDetails: 'Минимальное значение слайдера {min}, максимальное значение {max}', + multipleHandle2ValueminDetails: 'Значение равно {value}', + multipleHandle2ValuemaxDetails: 'Значение равно {value}', + multipleHandle2ValueNowDetails: 'Текущее значение: {value}' }, coreSplitButton: { expandButtonAriaLabel: 'Больше действий', @@ -182,18 +147,7 @@ export const FD_LANGUAGE_RUSSIAN: FdLanguage = { ariaRoleDescription: 'токен' }, coreTokenizer: { - moreLabel: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return `Еще 1 елемент`; - case 'few': - return `Еще ${count} елемента`; - default: - return `Еще ${count} елементов`; - } - } + moreLabel: 'Еще { count, plural, one {1 елемент} few {# елемента} other {# елементов} }' }, coreUploadCollection: { menuOkText: 'ОК', @@ -254,44 +208,11 @@ export const FD_LANGUAGE_RUSSIAN: FdLanguage = { messagesTeamRemoved: '1 команда удалена', messagesErrorBuildGraph: 'При попытке построить график произошла ошибка. Проверьте входящие данные.', messagesUndoAction: 'Отменить', - nodeMembersCount: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return `1 член команды`; - case 'few': - return `${count} члена команды`; - default: - return `${count || 0} членов команды`; - } - }, + nodeMembersCount: '{ count, plural, one {1 член} few {# члена} other {# членов} } команды', nodeVariousTeams: 'Различные команды', nodeStatusDueToday: 'Срок выполнения сегодня', - nodeStatusDueInXDays: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return `Срок выполнения через 1 день`; - case 'few': - return `Срок выполнения через ${count} дня`; - default: - return `Срок выполнения через ${count || 0} дней`; - } - }, - nodeStatusXDaysOverdue: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return `Просрочено на 1 день`; - case 'few': - return `Просрочено на ${count} дня`; - default: - return `Просрочено на ${count || 0} дней`; - } - }, + nodeStatusDueInXDays: 'Срок выполнения через { count, plural, one {1 день} few {# дня} other {# дней} }', + nodeStatusXDaysOverdue: 'Просрочено на { count, plural, one {1 день} few {# дня} other {# дней} }', nodeActionAddApproversBefore: 'Добавить утверждающих до', nodeActionAddApproversAfter: 'Добавить утверждающих после', nodeActionAddApproversParallel: 'Добавить параллельных утверждающих', @@ -312,18 +233,8 @@ export const FD_LANGUAGE_RUSSIAN: FdLanguage = { toolbarEditApprover: 'Редактировать утверждающего', watchersInputPlaceholder: 'Поиск', userListSelectedItemsCountSingular: 'Выбран 1 элемент', - userListSelectedItemsCountPlural: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return `Выбрано 1 элемент`; - case 'few': - return `Выбрано ${count} элемента`; - default: - return `Выбрано ${count || 0} элементов`; - } - }, + userListSelectedItemsCountPlural: + 'Выбрано { count, plural, one {1 элемент} few {# элемента} other {# элементов} }', statusApproved: 'approved', statusRejected: 'rejected', statusInProgress: 'in progress', @@ -347,45 +258,17 @@ export const FD_LANGUAGE_RUSSIAN: FdLanguage = { searchHideAdvancedSearchLabel: 'Скрыть фильтры', searchShowAllAdvancedSearchLabel: 'Показать все фильтры', searchHideAllAdvancedSearchLabel: 'Скрыть все фильтры', - selectTabDisplayCountLabel: 'Элементы ({{ count }})', + selectTabDisplayCountLabel: 'Элементы ({count})', selectTabMoreBtnLabel: 'Больше', - selectTabCountHiddenA11yLabel: (params) => { - const rowCount = params['rowCount']; - const rowOption = pluralization.process(rowCount); - let rowPart: string; - switch (rowOption) { - case 'one': - rowPart = 'содержит 1 строку'; - break; - case 'few': - rowPart = `содержит ${rowCount} строки`; - break; - default: - rowPart = `содержит ${rowCount} строк`; - break; - } - const colCount = params['colCount']; - const colOption = pluralization.process(colCount); - let colPart: string; - switch (colOption) { - case 'one': - colPart = '1 столбец'; - break; - case 'few': - colPart = `${colCount} столбца`; - break; - default: - colPart = `${colCount} столбцов`; - break; - } - return `${rowPart} и ${colPart}`; - }, + selectTabCountHiddenA11yLabel: + // eslint-disable-next-line max-len + 'содержит { rowCount, plural, one {1 строку} few {# строки} other {# строк} } и { colCount, plural, one {1 столбец} few {# столбца} other {# столбцов} }', selectMobileTabBackBtnTitle: 'Назад', selectMobileTabBtnOpenDialogLabel: 'Открыть диалоговое окно', - selectMobileTabTitle: '{{ title }} вкладка', + selectMobileTabTitle: '{title} вкладка', selectMobileConditionEmpty: 'Пусто', defineConditionTitle: 'Продукт', - defineConditionSelectedValueHiddenA11yLabel: 'выбранное значение {{ value }}', + defineConditionSelectedValueHiddenA11yLabel: 'выбранное значение {value}', defineConditionConditionsGroupHeaderInclude: 'Включающие условия', defineConditionConditionsGroupHeaderExclude: 'Исключительные условия', defineConditionFromPlaceholder: 'от', @@ -406,34 +289,14 @@ export const FD_LANGUAGE_RUSSIAN: FdLanguage = { defineConditionConditionStrategyLabelEmpty: 'пусто', defineConditionConditionStrategyLabelNotEqualTo: 'не равно', defineConditionConditionStrategyLabelNotEmpty: 'не пусто', - defineConditionMaxCountError: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return `Введите значение не более 1 символа`; - default: - return `Введите значение не более ${count || 0} символов`; - } - }, + defineConditionMaxCountError: 'Введите значение не более { count, plural, one {1 символа} other {# символов} }', selectTabTitle: 'Выбрать из списка', searchTableEmptyMessage: 'Используйте поиск для получения результатов', defineTabTitle: 'Определить условия' }, platformCombobox: { countListResultsSingular: '1 элемент', - countListResultsPlural: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return `1 элемент`; - case 'few': - return `${count} элемента`; - default: - return `${count || 0} элементов`; - } - } + countListResultsPlural: '{ count, plural, one {1 элемент} few {# элемента} other {# элементов} }' }, platformMultiCombobox: { inputGlyphAriaLabel: 'Выбрать опции', @@ -443,35 +306,15 @@ export const FD_LANGUAGE_RUSSIAN: FdLanguage = { }, platformTextarea: { counterMessageCharactersOverTheLimitSingular: 'Превышен лимит на 1 символ', - counterMessageCharactersOverTheLimitPlural: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return `Превышен лимит на 1 символ`; - case 'few': - return `Превышен лимит на ${count} символа`; - default: - return `Превышен лимит на ${count || 0} символов`; - } - }, + counterMessageCharactersOverTheLimitPlural: + 'Превышен лимит на { count, plural, one {1 символ} few {# символа} other {# символов} }', counterMessageCharactersRemainingSingular: 'Остался 1 символ', - counterMessageCharactersRemainingPlural: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return `Остался 1 символ`; - case 'few': - return `Осталось ${count} символа`; - default: - return `Осталось ${count || 0} символов`; - } - } + counterMessageCharactersRemainingPlural: + '{ count, plural, one {Остался 1 символ} few {Осталось # символа} other {Осталось # символов} }' }, platformLink: { - roleDescriptionWithMedia: 'Медиа: {{ media }}' + roleDescriptionWithMedia: 'Медиа: {media}' }, platformList: { loadingAriaLabel: 'загрузка' @@ -489,24 +332,14 @@ export const FD_LANGUAGE_RUSSIAN: FdLanguage = { submitButtonTitle: 'Поиск', searchInputLabel: 'Поиск', synchronizeButtonTitle: 'Синхронизировать', - searchSuggestionMessage: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return `Найден 1 вариант`; - case 'few': - return `Найдено ${count} варианта`; - default: - return `Найдено ${count || 0} вариантов`; - } - }, + searchSuggestionMessage: + '{count, plural, one {Найден 1 вариант} few {Найдено # варианта} other {Найдено # вариантов} }', searchSuggestionNavigateMessage: 'используйте стрелки вверх и вниз для навигации' }, platformSmartFilterBar: { searchPlaceholder: 'Поиск', submitButtonLabel: 'Перейти', - filtersButtonLabel: 'Фильтры ({{ filtersCount }})', + filtersButtonLabel: 'Фильтры ({filtersCount})', showFiltersButtonLabel: 'Показать фильтры', hideFiltersButtonLabel: 'Скрыть фильтры', defineConditionsRemoveConditionButtonTitle: 'Удалить условие', @@ -563,7 +396,7 @@ export const FD_LANGUAGE_RUSSIAN: FdLanguage = { P13ColumnsDialogSearchPlaceholder: 'Поиск', P13ColumnsDialogsShowSelected: 'Показать выбранное', P13ColumnsDialogShowAll: 'Показать все', - P13ColumnsDialogSelectAll: 'Выбрать все ({{ selectedColumnsCount }}/{{ selectableColumnsCount }})', + P13ColumnsDialogSelectAll: 'Выбрать все ({selectedColumnsCount}/{selectableColumnsCount})', P13ColumnsDialogConfirmationBtnLabel: 'ОК', P13ColumnsDialogCancelBtnLabel: 'Отмена', P13ColumnsDialogMoveToTopBtn: 'Переместить вверх', @@ -588,9 +421,9 @@ export const FD_LANGUAGE_RUSSIAN: FdLanguage = { P13FilterBooleanOptionTrue: 'Да', P13FilterBooleanOptionFalse: 'Нет', P13FilterDialogHeader: 'Фильтровать по', - P13FilterDialogIncludePanelTitleWithCount: 'Включающие условия ({{ count }})', + P13FilterDialogIncludePanelTitleWithCount: 'Включающие условия ({count})', P13FilterDialogIncludePanelTitleWithoutCount: 'Включающие условия', - P13FilterDialogExcludePanelTitleWithCount: 'Исключающие условия ({{ count }})', + P13FilterDialogExcludePanelTitleWithCount: 'Исключающие условия ({count})', P13FilterDialogExcludePanelTitleWithoutCount: 'Исключающие условия', P13FilterDialogRemoveFilterBtnTitle: 'Удалить фильтр', P13FilterDialoAddFilterBtnTitle: 'Добавить фильтр', @@ -623,7 +456,7 @@ export const FD_LANGUAGE_RUSSIAN: FdLanguage = { toolbarActionExpandAllButtonTitle: 'Expand all', toolbarActionCollapseAllButtonTitle: 'Collapse all', filterDialogNotFilteredLabel: '(Не отфильтровано)', - filterDialogFilterByLabel: 'Фильтр: {{ filterLabel }}', + filterDialogFilterByLabel: 'Фильтр: {filterLabel}', filterDialogFilterTitle: 'Фильтр', filterDialogFilterBy: 'Фильтровать по', filterDialogConfirmBtnLabel: 'ОК', @@ -666,24 +499,14 @@ export const FD_LANGUAGE_RUSSIAN: FdLanguage = { moveToCloseBtn: 'Отменить', newFolderTitle: 'Новая папка', newFolderAtRootInputLabel: 'Название новой папки', - newFolderAtFolderInputLabel: 'Название новой папки внутри {{ folderName }', + newFolderAtFolderInputLabel: 'Название новой папки внутри {folderName }', newFolderInputPlaceholder: 'Введите имя..', - newFolderInputErrorLabel: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return `Максимально разрешено 1 символ`; - case 'few': - return `Максимально разрешено ${count} символа`; - default: - return `Максимально разрешено ${count} символов`; - } - }, + newFolderInputErrorLabel: + 'Максимально разрешено { count, plural, one {1 символ} few {# символа} other {# символов} }', newFolderDialogCreateBtnLabel: 'Создать', newFolderDialogCancelBtnLabel: 'Отменить', breadcrumbLabelAllFiles: 'Все файлы', - breadcrumbLabelAllFilesWithTotal: 'Все файлы ({{ total }})', + breadcrumbLabelAllFilesWithTotal: 'Все файлы ({total})', searchPlaceholder: 'Поиск', addBtnLabel: 'Добавить', newFolderBtnLabel: 'Новая папка', @@ -704,93 +527,53 @@ export const FD_LANGUAGE_RUSSIAN: FdLanguage = { dragDropAreaText: 'Перетащите файлы для загрузки', noDataText: 'Файлы не найдены', noDataDescription: 'Перетащите файлы для загрузки или воспользуйтесь кнопкой «Добавить».', - paginationTotal: 'Показано {{ from }}-{{ to }} из {{ total }}', + paginationTotal: 'Показано {from}-{to} из {total}', resultsPerPage: 'Результаты на странице', - messageCreateFailed: 'Не удалось создать {{ folderName }}.', - messageCreateSuccess: '{{ folderName }} успешно создано.', - messageUpdateVersionFailed: 'Не удалось обновить версию {{ folderName }}.', - messageUpdateVersionSuccess: 'Версия {{ folderName }} обновлена.', - messageFileRenameFailed: 'Не удалось переименовать "{{ from }}" в "{{ to }}."', - messageFileRenameSuccess: '{{ from }}" переименовано в "{{ to }}".', - messageRemoveFoldersAndFilesFailed: (params) => - `Не удалось удалить ${folderNamePluralization(params)} и ${fileNamePluralization(params)}.`, - messageRemoveFoldersAndFilesSuccess: (params) => - `${folderNamePluralization(params)} и ${fileNamePluralization(params)} удалено.`, - messageRemoveFoldersFailed: (params) => `Не удалось удалить ${folderNamePluralization(params)}.`, - messageRemoveFoldersSuccess: (params) => `Удалено ${folderNamePluralization(params)}.`, - messageRemoveFilesFailed: 'Не удалось удалить файлы {{ filesCount }}.', - messageRemoveFilesSuccess: (params) => `Удалено ${fileNamePluralization(params)}.`, - messageRemoveFileOrFolderFailed: 'Не удалось удалить {{ name }}.', - messageRemoveFileOrFolderSuccess: '{{ name }} удалено.', - messageMoveFoldersAndFilesFailed: (params) => - `Не удалось переместить ${folderNamePluralization(params)} и ${fileNamePluralization(params)} в {{ to }}.`, - messageMoveFoldersAndFilesSuccess: (params) => - `${folderNamePluralization(params)} и ${fileNamePluralization(params)} перемещены в {{ to }}.`, - messageMoveFoldersFailed: (params) => `Не удалось переместить ${folderNamePluralization(params)} в {{ to }}.`, - messageMoveFoldersSuccess: (params) => `${folderNamePluralization(params)} перемещен в {{ to }}.`, - messageMoveFilesFailed: (params) => `Не удалось переместить ${fileNamePluralization(params)} в {{ to }}.`, - messageMoveFilesSuccess: (params) => `${fileNamePluralization(params)} перемещен в {{ to }}.`, - messageMoveFileOrFolderFailed: 'Не удалось переместить {{ name }} в {{ to }}.', - messageMoveFileOrFolderSuccess: '{{ name }} перемещен в {{ to }}.', - messageMoveRootFoldersAndFilesFailed: (params) => - `Не удалось переместить ${folderNamePluralization(params)} и ${fileNamePluralization( - params - )} во все файлы.`, - messageMoveRootFoldersAndFilesSuccess: (params) => - `${folderNamePluralization(params)} и ${fileNamePluralization(params)} перемещены ко всем файлам.`, - messageMoveRootFoldersFailed: (params) => - `Не удалось переместить ${folderNamePluralization(params)} во все файлы.`, - messageMoveRootFoldersSuccess: (params) => `${folderNamePluralization(params)} перемещен ко всем файлам.`, - messageMoveRootFilesFailed: (params) => `Не удалось переместить ${fileNamePluralization(params)} во все файлы.`, - messageMoveRootFilesSuccess: (params) => `${fileNamePluralization(params)} перемещены ко всем файлам.`, - messageMoveRootFileOrFolderFailed: 'Не удалось переместить {{ name }} во все файлы.', - messageMoveRootFileOrFolderSuccess: '{{ name }} перемещен ко всем файлам.', - messageFileTypeMismatchPlural: (params) => { - const filesCount = params['filesCount']; - const foldersCountOption = pluralization.process(filesCount); - switch (foldersCountOption) { - case 'one': - return '1 файл имеет неправильный тип. Разрешенные типы: {{ allowedTypes }}.'; - case 'few': - return `${filesCount} файла имеют неправильный тип. Разрешенные типы: {{ allowedTypes }}.`; - default: - return `${filesCount || 0} файлов имеют неправильный тип. Разрешенные типы: {{ allowedTypes }}.`; - } - }, - messageFileTypeMismatchSingular: - 'Файл "{{ fileName }}" имеет неправильный тип. Разрешенные типы: {{ allowedTypes }}.', - messageFileSizeExceededPlural: (params) => { - const filesCount = params['filesCount']; - const foldersCountOption = pluralization.process(filesCount); - switch (foldersCountOption) { - case 'one': - return '1 файл превышают максимальный размер файла. Разрешен максимальный размер файла: {{ maxFileSize }}.'; - case 'few': - return `${filesCount} файла превышают максимальный размер файла. Разрешен максимальный размер файла: {{ maxFileSize }}.`; - default: - return `${ - filesCount || 0 - } файлов превышают максимальный размер файла. Разрешен максимальный размер файла: {{ maxFileSize }}.`; - } - }, + messageCreateFailed: 'Не удалось создать {folderName}.', + messageCreateSuccess: '{folderName} успешно создано.', + messageUpdateVersionFailed: 'Не удалось обновить версию {folderName}.', + messageUpdateVersionSuccess: 'Версия {folderName} обновлена.', + messageFileRenameFailed: 'Не удалось переименовать "{from}" в "{to}."', + messageFileRenameSuccess: '{from}" переименовано в "{to}".', + folderNamePluralization: '{ foldersCount, plural, one {1 папку} few {# папки} other {# папок} }', + fileNamePluralization: '{ filesCount, plural, one {1 файл} few {# файла} other {# файлов} }', + messageRemoveFoldersAndFilesFailed: `Не удалось удалить {@@platformUploadCollection.folderNamePluralization} и {@@platformUploadCollection.fileNamePluralization}.`, + messageRemoveFoldersAndFilesSuccess: `{@@platformUploadCollection.folderNamePluralization} и {@@platformUploadCollection.fileNamePluralization} удалено.`, + messageRemoveFoldersFailed: `Не удалось удалить {@@platformUploadCollection.folderNamePluralization}.`, + messageRemoveFoldersSuccess: `Удалено {@@platformUploadCollection.folderNamePluralization}.`, + messageRemoveFilesFailed: 'Не удалось удалить файлы {filesCount}.', + messageRemoveFilesSuccess: `Удалено {@@platformUploadCollection.fileNamePluralization}.`, + messageRemoveFileOrFolderFailed: 'Не удалось удалить {name}.', + messageRemoveFileOrFolderSuccess: '{name} удалено.', + messageMoveFoldersAndFilesFailed: `Не удалось переместить {@@platformUploadCollection.folderNamePluralization} и {@@platformUploadCollection.fileNamePluralization} в {to}.`, + messageMoveFoldersAndFilesSuccess: `{@@platformUploadCollection.folderNamePluralization} и {@@platformUploadCollection.fileNamePluralization} перемещены в {to}.`, + messageMoveFoldersFailed: `Не удалось переместить {@@platformUploadCollection.folderNamePluralization} в {to}.`, + messageMoveFoldersSuccess: `{@@platformUploadCollection.folderNamePluralization} перемещен в {to}.`, + messageMoveFilesFailed: `Не удалось переместить {@@platformUploadCollection.fileNamePluralization} в {to}.`, + messageMoveFilesSuccess: `{@@platformUploadCollection.fileNamePluralization} перемещен в {to}.`, + messageMoveFileOrFolderFailed: 'Не удалось переместить {name} в {to}.', + messageMoveFileOrFolderSuccess: '{name} перемещен в {to}.', + messageMoveRootFoldersAndFilesFailed: `Не удалось переместить {@@platformUploadCollection.folderNamePluralization} и {@@platformUploadCollection.fileNamePluralization} во все файлы.`, + messageMoveRootFoldersAndFilesSuccess: `{@@platformUploadCollection.folderNamePluralization} и {@@platformUploadCollection.fileNamePluralization} перемещены ко всем файлам.`, + messageMoveRootFoldersFailed: `Не удалось переместить {@@platformUploadCollection.folderNamePluralization} во все файлы.`, + messageMoveRootFoldersSuccess: `{@@platformUploadCollection.folderNamePluralization} перемещен ко всем файлам.`, + messageMoveRootFilesFailed: `Не удалось переместить {@@platformUploadCollection.fileNamePluralization} во все файлы.`, + messageMoveRootFilesSuccess: `{@@platformUploadCollection.fileNamePluralization} перемещены ко всем файлам.`, + messageMoveRootFileOrFolderFailed: 'Не удалось переместить {name} во все файлы.', + messageMoveRootFileOrFolderSuccess: '{name} перемещен ко всем файлам.', + messageFileTypeMismatchPlural: + '{ filesCount, plural, one {1 файл} few {# файла} other {# файлов} } неправильный тип. Разрешенные типы: {allowedTypes}.', + messageFileTypeMismatchSingular: 'Файл "{fileName}" имеет неправильный тип. Разрешенные типы: {allowedTypes}.', + messageFileSizeExceededPlural: + // eslint-disable-next-line max-len + '{ filesCount, plural, one {1 файл превышает} few {# файла превышают} other {# файлов превышают} } максимальный размер файла. Разрешен максимальный размер файла: {maxFileSize}.', messageFileSizeExceededSingular: - 'Файл "{{ fileName }}" превышает максимальный размер файла. Разрешен максимальный размер файла: {{ maxFileSize }}.', - messageFileNameLengthExceededPlural: (params) => { - const filesCount = params['filesCount']; - const foldersCountOption = pluralization.process(filesCount); - switch (foldersCountOption) { - case 'one': - return '1 файл превысили максимальную длину имени файла. Разрешена длина имени файла: {{ maxFilenameLength }} символов.'; - case 'few': - return `${filesCount} файла превысили максимальную длину имени файла. Разрешена длина имени файла: {{ maxFilenameLength }} символов.`; - default: - return `${ - filesCount || 0 - } файлов превысили максимальную длину имени файла. Разрешена длина имени файла: {{ maxFilenameLength }} символов.`; - } - }, + 'Файл "{fileName}" превышает максимальный размер файла. Разрешен максимальный размер файла: {maxFileSize}.', + messageFileNameLengthExceededPlural: + // eslint-disable-next-line max-len + '{ filesCount, plural, one {1 файл превысил} few {# файла превысили} other {# файлов превысили} } максимальную длину имени файла. Разрешена длина имени файла: {maxFilenameLength} символов.', messageFileNameLengthExceededSingular: - 'Имя "{{ fileName }}" превышает максимальную длину имени файла. Разрешена длина имени файла: {{ maxFilenameLength }} символов.' + 'Имя "{fileName}" превышает максимальную длину имени файла. Разрешена длина имени файла: {maxFilenameLength} символов.' }, platformWizardGenerator: { summarySectionEditStep: 'Редактировать' @@ -837,10 +620,10 @@ export const FD_LANGUAGE_RUSSIAN: FdLanguage = { selectOptionLabel: 'Выберите вариант' }, fnSlider: { - minMaxDetails: 'Минимальное значение слайдера {{ min }}, максимальное значение {{ max }}', - valueminDetails: 'Значение равно {{ value }}', - valuemaxDetails: 'Значение равно {{ value }}', - valueNowDetails: 'Текущее значение: {{ value }}' + minMaxDetails: 'Минимальное значение слайдера {min}, максимальное значение {max}', + valueminDetails: 'Значение равно {value}', + valuemaxDetails: 'Значение равно {value}', + valueNowDetails: 'Текущее значение: {value}' }, fnSwitch: { semanticAcceptLabel: 'Принять', @@ -852,45 +635,3 @@ export const FD_LANGUAGE_RUSSIAN: FdLanguage = { noData: 'Нет данных' } }; - -/** - * Pluralization for "file" word in russian language - * - * Output samples: - * * 1 файл - * * 2 файла - * * 10 файлов - */ -function fileNamePluralization(params: FdLanguageKeyArgs): string { - const filesCount = params['filesCount']; - const filesCountOption = pluralization.process(filesCount); - switch (filesCountOption) { - case 'one': - return '1 файл'; - case 'few': - return `${filesCount} файла`; - default: - return `${filesCount || 0} файлов`; - } -} - -/** - * Pluralization for "folder" word in russian language - * - * Outputs samples: - * * 1 папку - * * 2 папки - * * 10 папок - */ -function folderNamePluralization(params: FdLanguageKeyArgs): string { - const foldersCount = params['foldersCount']; - const foldersCountOption = pluralization.process(foldersCount); - switch (foldersCountOption) { - case 'one': - return '1 папку'; - case 'few': - return `${foldersCount} папки`; - default: - return `${foldersCount || 0} папок`; - } -} diff --git a/libs/i18n/src/lib/languages/turkish.ts b/libs/i18n/src/lib/languages/turkish.ts index f2f1ebc8685..8cbe0dfeda3 100644 --- a/libs/i18n/src/lib/languages/turkish.ts +++ b/libs/i18n/src/lib/languages/turkish.ts @@ -5,7 +5,7 @@ import { FdLanguage } from '../models/lang'; */ export const FD_LANGUAGE_TURKISH: FdLanguage = { coreMultiComboBox: { - selectAllLabel: 'Hepsini seç ({{selectedItems}}/{{totalItems}})' + selectAllLabel: 'Hepsini seç ({selectedItems}/{totalItems})' }, coreCarousel: { leftNavigationBtnLabel: 'Önceki öğeye git', @@ -34,8 +34,8 @@ export const FD_LANGUAGE_TURKISH: FdLanguage = { }, coreGridList: { filterBarCancelButtonTitle: 'Vazgeç', - listItemStatusAriaLabel: 'Eşyayı statü var. Statü: {{ status }}.', - listItemCounterAriaLabel: 'Eşyayı {{ count }} alt eşyası var.', + listItemStatusAriaLabel: 'Eşyayı statü var. Statü: {status}.', + listItemCounterAriaLabel: 'Eşyayı {count} alt eşyası var.', listItemButtonDetailsTitle: 'Detaylar', listItemButtonDeleteTitle: 'Sil', listItemStatusContainsErrors: 'Hata içerir', @@ -47,31 +47,31 @@ export const FD_LANGUAGE_TURKISH: FdLanguage = { }, coreMultiInput: { multiInputAriaLabel: 'Multi Value Input', - tokensCountText: ({ length }) => `Contains ${length || 'no'} token${length === 1 ? '' : 's'}.` + tokensCountText: 'Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.' }, coreNavigation: { mainNavigation: 'Main Navigation', navigationPath: 'Navigation Path' }, coreNestedList: { - linkItemAriaLabel: 'Ağaç Öğesi {{ itemDetails }}, {{ index }} / {{ total }}{{ selectedDescription }}' + linkItemAriaLabel: 'Ağaç Öğesi {itemDetails}, {index} / {total}{selectedDescription}' }, coreOverflowLayout: { - moreItemsButton: '{{ count }} ürün daha' + moreItemsButton: '{count} ürün daha' }, corePagination: { - pageLabel: 'Sayfa {{ pageNumber }}', - currentPageAriaLabel: 'Sayfa {{ pageNumber }} geçerli sayfadır', + pageLabel: 'Sayfa {pageNumber}', + currentPageAriaLabel: 'Sayfa {pageNumber} geçerli sayfadır', labelBeforeInputMobile: 'Sayfa:', - labelAfterInputMobile: 'of {{ totalCount }}', - inputAriaLabel: 'Sayfa girişi, Geçerli sayfa, Sayfa {{ pageNumber }} / {{ totalCount }}', + labelAfterInputMobile: 'of {totalCount}', + inputAriaLabel: 'Sayfa girişi, Geçerli sayfa, Sayfa {pageNumber} / {totalCount}', itemsPerPageLabel: 'Sayfa Başına Sonuçlar:', firstLabel: 'İlk', previousLabel: 'Önceki', nextLabel: 'Sonraki', lastLabel: 'Son', ariaLabel: 'Sayfalandırma', - totalResultsLabel: '{{ totalCount }} Sonuçlar' + totalResultsLabel: '{totalCount} Sonuçlar' }, coreProductSwitch: { ariaLabel: 'Ürün Anahtarı' @@ -82,18 +82,18 @@ export const FD_LANGUAGE_TURKISH: FdLanguage = { search: 'Search' }, coreSlider: { - singleMinMaxDetails: ' Kaydırıcının {{ min }} minimum değeri, {{ max }} maksimum değeri', - singleValueminDetails: 'Değer {{ value }}', - singleValuemaxDetails: 'Değer {{ value }}', - singleValueNowDetails: 'Geçerli değer {{ value }}', - multipleHandle1MinMaxDetails: ' Aralığı kaydırma {{ min }} minimum değeri, {{ max }} maksimum değeri', - multipleHandle1ValueminDetails: 'Değer {{ value }}', - multipleHandle1ValuemaxDetails: 'Değer {{ value }}', - multipleHandle1ValueNowDetails: 'Geçerli değer {{ value }}', - multipleHandle2MinMaxDetails: ' Aralığı kaydırma {{ min }} minimum değeri, {{ max }} maksimum değeri', - multipleHandle2ValueminDetails: 'Değer {{ value }}', - multipleHandle2ValuemaxDetails: 'Değer {{ value }}', - multipleHandle2ValueNowDetails: 'Geçerli değer {{ value }}' + singleMinMaxDetails: ' Kaydırıcının {min} minimum değeri, {max} maksimum değeri', + singleValueminDetails: 'Değer {value}', + singleValuemaxDetails: 'Değer {value}', + singleValueNowDetails: 'Geçerli değer {value}', + multipleHandle1MinMaxDetails: ' Aralığı kaydırma {min} minimum değeri, {max} maksimum değeri', + multipleHandle1ValueminDetails: 'Değer {value}', + multipleHandle1ValuemaxDetails: 'Değer {value}', + multipleHandle1ValueNowDetails: 'Geçerli değer {value}', + multipleHandle2MinMaxDetails: ' Aralığı kaydırma {min} minimum değeri, {max} maksimum değeri', + multipleHandle2ValueminDetails: 'Değer {value}', + multipleHandle2ValuemaxDetails: 'Değer {value}', + multipleHandle2ValueNowDetails: 'Geçerli değer {value}' }, coreSplitButton: { expandButtonAriaLabel: 'Daha fazla hareket', @@ -144,7 +144,7 @@ export const FD_LANGUAGE_TURKISH: FdLanguage = { ariaRoleDescription: 'jeton' }, coreTokenizer: { - moreLabel: '{{ count }} ürün daha' + moreLabel: '{count} ürün daha' }, coreUploadCollection: { menuOkText: 'Tamam', @@ -205,11 +205,11 @@ export const FD_LANGUAGE_TURKISH: FdLanguage = { messagesTeamRemoved: '1 takım kaldırıldı', messagesErrorBuildGraph: 'Grafik oluşturulurken bir hata oluştu. İlk verileri kontrol edi.', messagesUndoAction: 'Geri almak', - nodeMembersCount: '{{ count }} üyeler', + nodeMembersCount: '{count} üyeler', nodeVariousTeams: 'Çeşitli takımlar', nodeStatusDueToday: 'Bugün teslim tarihi', - nodeStatusDueInXDays: ' {{ count }} gün içinde vadesi doluyor', - nodeStatusXDaysOverdue: '{{ count }} gecikmiş gün', + nodeStatusDueInXDays: ' {count} gün içinde vadesi doluyor', + nodeStatusXDaysOverdue: '{count} gecikmiş gün', nodeActionAddApproversBefore: 'Daha önce onaylayanlar ekleme', nodeActionAddApproversAfter: 'Onaylayanları afte ekler', nodeActionAddApproversParallel: 'Paralel onaylayanlar ekleme', @@ -230,7 +230,7 @@ export const FD_LANGUAGE_TURKISH: FdLanguage = { toolbarEditApprover: 'Onaylayanı düzenle', watchersInputPlaceholder: 'Burada ara..', userListSelectedItemsCountSingular: '1 eşyayı seçildi', - userListSelectedItemsCountPlural: '{{ count }} eşyayılar seçildi', + userListSelectedItemsCountPlural: '{count} eşyayılar seçildi', statusApproved: 'approved', statusRejected: 'rejected', statusInProgress: 'in progress', @@ -254,15 +254,15 @@ export const FD_LANGUAGE_TURKISH: FdLanguage = { searchHideAdvancedSearchLabel: 'Filtreleri gizles', searchShowAllAdvancedSearchLabel: 'Tüm filtreleri göster', searchHideAllAdvancedSearchLabel: 'Tüm filtreleri gizle', - selectTabDisplayCountLabel: 'Eşyayı ({{ count }})', + selectTabDisplayCountLabel: 'Eşyayı ({count})', selectTabMoreBtnLabel: 'Daha', - selectTabCountHiddenA11yLabel: '{{ rowCount }} satır ve {{ colCount }} sütun içerir', + selectTabCountHiddenA11yLabel: '{rowCount} satır ve {colCount} sütun içerir', selectMobileTabBackBtnTitle: 'Geri', selectMobileTabBtnOpenDialogLabel: 'İletişim kutusunu aç', - selectMobileTabTitle: '{{ title }} sekmesi', + selectMobileTabTitle: '{title} sekmesi', selectMobileConditionEmpty: 'Boş', defineConditionTitle: 'Ürün', - defineConditionSelectedValueHiddenA11yLabel: ' {{ value }} seçilen değer', + defineConditionSelectedValueHiddenA11yLabel: ' {value} seçilen değer', defineConditionConditionsGroupHeaderInclude: 'Dahil et', defineConditionConditionsGroupHeaderExclude: 'Dışla', defineConditionFromPlaceholder: 'dan', @@ -283,14 +283,14 @@ export const FD_LANGUAGE_TURKISH: FdLanguage = { defineConditionConditionStrategyLabelEmpty: 'boş', defineConditionConditionStrategyLabelNotEqualTo: 'eşit değil', defineConditionConditionStrategyLabelNotEmpty: 'boş değil', - defineConditionMaxCountError: '{{ count }} karakterden fazla olmayan bir değer gir', + defineConditionMaxCountError: '{count} karakterden fazla olmayan bir değer gir', selectTabTitle: 'Listeden seç', searchTableEmptyMessage: 'Sonuçları almak için aramayı kullanın', defineTabTitle: 'Koşulları Tanımla' }, platformCombobox: { countListResultsSingular: '1 sonuç listesi eşyayı', - countListResultsPlural: '{{ count }} sonuç listesi eşyayılar' + countListResultsPlural: '{count} sonuç listesi eşyayılar' }, platformMultiCombobox: { inputGlyphAriaLabel: "Seçenekler'i seçin", @@ -300,12 +300,12 @@ export const FD_LANGUAGE_TURKISH: FdLanguage = { }, platformTextarea: { counterMessageCharactersOverTheLimitSingular: '1 karakter sınırın üzerinde', - counterMessageCharactersOverTheLimitPlural: '{{ count }} karakter sınırı aşıyor', + counterMessageCharactersOverTheLimitPlural: '{count} karakter sınırı aşıyor', counterMessageCharactersRemainingSingular: '1 karakter kaldı', - counterMessageCharactersRemainingPlural: '{{ count }} karakterler kaldı' + counterMessageCharactersRemainingPlural: '{count} karakterler kaldı' }, platformLink: { - roleDescriptionWithMedia: 'Medya: {{ media }}' + roleDescriptionWithMedia: 'Medya: {media}' }, platformList: { loadingAriaLabel: 'yükleniyor' @@ -323,13 +323,13 @@ export const FD_LANGUAGE_TURKISH: FdLanguage = { submitButtonTitle: 'Ara', searchInputLabel: 'Ara', synchronizeButtonTitle: 'Senkronize', - searchSuggestionMessage: '{{ count }} öneri bulundu.', + searchSuggestionMessage: '{count} öneri bulundu.', searchSuggestionNavigateMessage: 'gezinmek için yukarı ve aşağı okları kullanın' }, platformSmartFilterBar: { searchPlaceholder: 'Ara', submitButtonLabel: 'Git', - filtersButtonLabel: 'Filtreler ({{ filtersCount }})', + filtersButtonLabel: 'Filtreler ({filtersCount})', showFiltersButtonLabel: 'Filtreleri göster', hideFiltersButtonLabel: 'Filtreleri gizle', defineConditionsRemoveConditionButtonTitle: 'Koşullu kaldır', @@ -386,7 +386,7 @@ export const FD_LANGUAGE_TURKISH: FdLanguage = { P13ColumnsDialogSearchPlaceholder: 'Ara', P13ColumnsDialogsShowSelected: 'Seçilenleri Göster', P13ColumnsDialogShowAll: 'Hepsini Göster', - P13ColumnsDialogSelectAll: 'Hepsini ({{ selectedColumnsCount }}/{{ selectableColumnsCount }}) seç', + P13ColumnsDialogSelectAll: 'Hepsini ({selectedColumnsCount}/{selectableColumnsCount}) seç', P13ColumnsDialogConfirmationBtnLabel: 'OK', P13ColumnsDialogCancelBtnLabel: 'Vazgeç', P13ColumnsDialogMoveToTopBtn: 'Yukarı Taşı', @@ -411,9 +411,9 @@ export const FD_LANGUAGE_TURKISH: FdLanguage = { P13FilterBooleanOptionTrue: 'Evet', P13FilterBooleanOptionFalse: 'Hayır', P13FilterDialogHeader: 'Tarafından filtre', - P13FilterDialogIncludePanelTitleWithCount: 'Include ({{ count }})', + P13FilterDialogIncludePanelTitleWithCount: 'Include ({count})', P13FilterDialogIncludePanelTitleWithoutCount: 'Include', - P13FilterDialogExcludePanelTitleWithCount: 'Exclude ({{ count }})', + P13FilterDialogExcludePanelTitleWithCount: 'Exclude ({count})', P13FilterDialogExcludePanelTitleWithoutCount: 'Exclude', P13FilterDialogRemoveFilterBtnTitle: 'Filtre kaldır', P13FilterDialoAddFilterBtnTitle: 'Filtre ekle', @@ -446,7 +446,7 @@ export const FD_LANGUAGE_TURKISH: FdLanguage = { toolbarActionExpandAllButtonTitle: 'Expand all', toolbarActionCollapseAllButtonTitle: 'Collapse all', filterDialogNotFilteredLabel: '(Filtrelenmemiş)', - filterDialogFilterByLabel: 'Filtreleme ölçütü: {{ filterLabel }}', + filterDialogFilterByLabel: 'Filtreleme ölçütü: {filterLabel}', filterDialogFilterTitle: 'Filtre', filterDialogFilterBy: 'Filtreleme ölçütü', filterDialogConfirmBtnLabel: 'OK', @@ -489,13 +489,13 @@ export const FD_LANGUAGE_TURKISH: FdLanguage = { moveToCloseBtn: 'Vazgeç', newFolderTitle: 'Yeni Dizinr', newFolderAtRootInputLabel: 'Yeni Dizin adı', - newFolderAtFolderInputLabel: '{{ folderName }} içindeki yeni dizin adı', + newFolderAtFolderInputLabel: '{folderName} içindeki yeni dizin adı', newFolderInputPlaceholder: 'Buraya yaz..', - newFolderInputErrorLabel: 'Maksimum {{ count }} karaktere izin verilir', + newFolderInputErrorLabel: 'Maksimum {count} karaktere izin verilir', newFolderDialogCreateBtnLabel: 'Oluşturma', newFolderDialogCancelBtnLabel: 'Vazgeç', breadcrumbLabelAllFiles: 'Tüm dosyalar', - breadcrumbLabelAllFilesWithTotal: 'Tüm dosyalar ({{ total }})', + breadcrumbLabelAllFilesWithTotal: 'Tüm dosyalar ({total})', searchPlaceholder: 'Ara', addBtnLabel: 'Ekle', newFolderBtnLabel: 'Yeni Dizin', @@ -516,53 +516,50 @@ export const FD_LANGUAGE_TURKISH: FdLanguage = { dragDropAreaText: 'Yüklenecek dosyaları sürükleyin', noDataText: 'Dosya bulunamadı', noDataDescription: 'Yüklenecek dosyaları bırakın veya “Ekle” düğmesini kullanın.', - paginationTotal: '{{ total }}/{{ from }}-{{ to }} arasında gösteriliyor', + paginationTotal: '{total}/{from}-{to} arasında gösteriliyor', resultsPerPage: 'Sayfa başına sonuç', - messageCreateFailed: '{{ folderName }} oluşturulamadı.', - messageCreateSuccess: '{{ folderName }} oluşturuladı.', - messageUpdateVersionFailed: '{{ folderName }} sürümü güncellenemedi.', - messageUpdateVersionSuccess: '{{ folderName }} sürümü güncellendi.', - messageFileRenameFailed: '"{{ from }}" olarak yeniden adlandırılamadı "{{ to }}"', - messageFileRenameSuccess: '"{{ from }}", "{{ to }}" olarak yeniden adlandırıldı.', - messageRemoveFoldersAndFilesFailed: '{{ foldersCount }} dizin ve {{ filesCout }} dosya kaldırılamadı.', - messageRemoveFoldersAndFilesSuccess: '{{ foldersCount }} dizinleri ve {{ filesCount }} dosyaları kaldırıldı.', - messageRemoveFoldersFailed: '{{ foldersCount }} dizinleri kaldırılamadı', - messageRemoveFoldersSuccess: '{{ foldersCount }} dizinleri kaldırıladı.', - messageRemoveFilesFailed: '{{ filesCount }} dosyaları kaldırılamadı.', - messageRemoveFilesSuccess: '{{ filesCount }} dosyaları kaldırıldı.', - messageRemoveFileOrFolderFailed: ' {{ name }} kaldırılamadı.', - messageRemoveFileOrFolderSuccess: '{{ name }} kaldırıldı.', - messageMoveFoldersAndFilesFailed: - '{{ foldersCount }} dizini ve {{ filesCount }} dosyası, {{ to }} taşınamadı.', - messageMoveFoldersAndFilesSuccess: '{{ foldersCount }} dizini ve {{ filesCount }} dosyası, {{ to }} taşınadı.', - messageMoveFoldersFailed: '{{ foldersCount }} dizini, {{ to }} taşınamadı.', - messageMoveFoldersSuccess: '{{ foldersCount }} dizini, {{ to }} taşınadı.', - messageMoveFilesFailed: '{{ filesCount }} dosyası, {{ to }} taşınamadı.', - messageMoveFilesSuccess: '{{ filesCount }} dosyası, {{ to }} taşınadı.', - messageMoveFileOrFolderFailed: '{{ name }}, {{ to }} taşınamadı.', - messageMoveFileOrFolderSuccess: '{{ name }}, {{ to }} taşınadı.', + messageCreateFailed: '{folderName} oluşturulamadı.', + messageCreateSuccess: '{folderName} oluşturuladı.', + messageUpdateVersionFailed: '{folderName} sürümü güncellenemedi.', + messageUpdateVersionSuccess: '{folderName} sürümü güncellendi.', + messageFileRenameFailed: '"{from}" olarak yeniden adlandırılamadı "{to}"', + messageFileRenameSuccess: '"{from}", "{to}" olarak yeniden adlandırıldı.', + messageRemoveFoldersAndFilesFailed: '{foldersCount} dizin ve {filesCout} dosya kaldırılamadı.', + messageRemoveFoldersAndFilesSuccess: '{foldersCount} dizinleri ve {filesCount} dosyaları kaldırıldı.', + messageRemoveFoldersFailed: '{foldersCount} dizinleri kaldırılamadı', + messageRemoveFoldersSuccess: '{foldersCount} dizinleri kaldırıladı.', + messageRemoveFilesFailed: '{filesCount} dosyaları kaldırılamadı.', + messageRemoveFilesSuccess: '{filesCount} dosyaları kaldırıldı.', + messageRemoveFileOrFolderFailed: ' {name} kaldırılamadı.', + messageRemoveFileOrFolderSuccess: '{name} kaldırıldı.', + messageMoveFoldersAndFilesFailed: '{foldersCount} dizini ve {filesCount} dosyası, {to} taşınamadı.', + messageMoveFoldersAndFilesSuccess: '{foldersCount} dizini ve {filesCount} dosyası, {to} taşınadı.', + messageMoveFoldersFailed: '{foldersCount} dizini, {to} taşınamadı.', + messageMoveFoldersSuccess: '{foldersCount} dizini, {to} taşınadı.', + messageMoveFilesFailed: '{filesCount} dosyası, {to} taşınamadı.', + messageMoveFilesSuccess: '{filesCount} dosyası, {to} taşınadı.', + messageMoveFileOrFolderFailed: '{name}, {to} taşınamadı.', + messageMoveFileOrFolderSuccess: '{name}, {to} taşınadı.', messageMoveRootFoldersAndFilesFailed: - '{{ foldersCount }} dizinleri ve {{ filesCount }} dosyaları tüm dosyalara taşınamadı.', + '{foldersCount} dizinleri ve {filesCount} dosyaları tüm dosyalara taşınamadı.', messageMoveRootFoldersAndFilesSuccess: - '{{ foldersCount }} dizinleri ve {{ filesCount }} dosyaları tüm dosyalara taşınadı.', - messageMoveRootFoldersFailed: '{{ foldersCount }} dizini tüm dosyalara taşınamadı.', - messageMoveRootFoldersSuccess: '{{ foldersCount }} dizinler tüm dosyalara taşındı.', - messageMoveRootFilesFailed: '{{ filesCount }} dosyası tüm dosyalara taşınamadı.', - messageMoveRootFilesSuccess: '{{ filesCount }} dizinler tüm dosyalara taşındı.', - messageMoveRootFileOrFolderFailed: '{{ name }} tüm dosyalara taşınamadı.', - messageMoveRootFileOrFolderSuccess: '{{ name }} tüm dosyalara taşındı.', - messageFileTypeMismatchPlural: - '{{ filesCount }} dosyalarının türü yanlış. İzin verilen türler: {{ allowedTypes }}.', - messageFileTypeMismatchSingular: - '"{{ fileName }}" dosyasının türü yanlış. İzin verilen türler: {{ allowedTypes }}.', + '{foldersCount} dizinleri ve {filesCount} dosyaları tüm dosyalara taşınadı.', + messageMoveRootFoldersFailed: '{foldersCount} dizini tüm dosyalara taşınamadı.', + messageMoveRootFoldersSuccess: '{foldersCount} dizinler tüm dosyalara taşındı.', + messageMoveRootFilesFailed: '{filesCount} dosyası tüm dosyalara taşınamadı.', + messageMoveRootFilesSuccess: '{filesCount} dizinler tüm dosyalara taşındı.', + messageMoveRootFileOrFolderFailed: '{name} tüm dosyalara taşınamadı.', + messageMoveRootFileOrFolderSuccess: '{name} tüm dosyalara taşındı.', + messageFileTypeMismatchPlural: '{filesCount} dosyalarının türü yanlış. İzin verilen türler: {allowedTypes}.', + messageFileTypeMismatchSingular: '"{fileName}" dosyasının türü yanlış. İzin verilen türler: {allowedTypes}.', messageFileSizeExceededPlural: - '{{ filesCount }} dosya maksimum dosya boyutunu aştı. İzin verilen maksimum dosya boyutu: {{ maxFileSize }}.', + '{filesCount} dosya maksimum dosya boyutunu aştı. İzin verilen maksimum dosya boyutu: {maxFileSize}.', messageFileSizeExceededSingular: - '"{{ fileName }}" dosyası maksimum dosya boyutunu aştı. İzin verilen maksimum dosya boyutu: {{ maxFileSize }}.', + '"{fileName}" dosyası maksimum dosya boyutunu aştı. İzin verilen maksimum dosya boyutu: {maxFileSize}.', messageFileNameLengthExceededPlural: - '{{ filesCount }} dosya maksimum dosya adı uzunluğunu aştı. İzin verilen dosya adı uzunluğu: {{ maxFilenameLength }} karakter.', + '{filesCount} dosya maksimum dosya adı uzunluğunu aştı. İzin verilen dosya adı uzunluğu: {maxFilenameLength} karakter.', messageFileNameLengthExceededSingular: - '"{{ fileName }}", maksimum dosya adı uzunluğunu aştı. İzin verilen dosya adı uzunluğu: {{ maxFilenameLength }} karakter.' + '"{fileName}", maksimum dosya adı uzunluğunu aştı. İzin verilen dosya adı uzunluğu: {maxFilenameLength} karakter.' }, platformWizardGenerator: { summarySectionEditStep: 'Düzenle' @@ -609,10 +606,10 @@ export const FD_LANGUAGE_TURKISH: FdLanguage = { selectOptionLabel: 'Bir seçenek seçin' }, fnSlider: { - minMaxDetails: 'Kaydırıcının {{ min }} minimum değeri, {{ max }} maksimum değeri', - valueminDetails: 'Değer {{ value }}', - valuemaxDetails: 'Değer {{ value }}', - valueNowDetails: 'Geçerli değer {{ value }}' + minMaxDetails: 'Kaydırıcının {min} minimum değeri, {max} maksimum değeri', + valueminDetails: 'Değer {value}', + valuemaxDetails: 'Değer {value}', + valueNowDetails: 'Geçerli değer {value}' }, fnSwitch: { semanticAcceptLabel: 'Kabul et', diff --git a/libs/i18n/src/lib/languages/ukrainian.ts b/libs/i18n/src/lib/languages/ukrainian.ts index f43e8176c74..2e81ff098a2 100644 --- a/libs/i18n/src/lib/languages/ukrainian.ts +++ b/libs/i18n/src/lib/languages/ukrainian.ts @@ -1,13 +1,11 @@ -import { FdLanguage, FdLanguageKeyArgs } from '../models/lang'; -import { PluralizationSet1 } from './pluralization/set1'; +import { FdLanguage } from '../models/lang'; -const pluralization = new PluralizationSet1(); /** * Default set of translations of Fundamental UI libarary for Ukrainian language */ export const FD_LANGUAGE_UKRAINIAN: FdLanguage = { coreMultiComboBox: { - selectAllLabel: 'Вибрати все ({{selectedItems}} з {{totalItems}})' + selectAllLabel: 'Вибрати все ({selectedItems} з {totalItems})' }, coreCarousel: { leftNavigationBtnLabel: 'Перейти до попереднього елемента', @@ -36,19 +34,9 @@ export const FD_LANGUAGE_UKRAINIAN: FdLanguage = { }, coreGridList: { filterBarCancelButtonTitle: 'Скасувати', - listItemStatusAriaLabel: 'Елемент має статус. Статус: {{ status }}.', - listItemCounterAriaLabel: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return `Елемент має 1 дочірній елемент.`; - case 'few': - return `Елемент має ${count} дочірніх елемента.`; - default: - return `Елемент має ${count} дочірніх елементів.`; - } - }, + listItemStatusAriaLabel: 'Елемент має статус. Статус: {status}.', + listItemCounterAriaLabel: + 'Елемент має {count, plural, one {один дочірній елемент} few {# дочірніх елемента} other {# дочірніх елементів} }.', listItemButtonDetailsTitle: 'Подробиці', listItemButtonDeleteTitle: 'Видалити', listItemStatusContainsErrors: 'Містить помилки', @@ -60,54 +48,32 @@ export const FD_LANGUAGE_UKRAINIAN: FdLanguage = { }, coreMultiInput: { multiInputAriaLabel: 'Multi Value Input', - tokensCountText: ({ length }) => { - const option = pluralization.process(length); - switch (option) { - case 'zero': - return 'Немає вибраних варіантів.'; - case 'one': - return `Обрано 1 варіант.`; - case 'few': - return `Обрано ${length} варіанти.`; - default: - return `Обрано ${length} варіантів.`; - } - } + tokensCountText: + '{ length, plural, =0 {Немає вибраних} other {Обрано #} } { length, plural, one {варіант} few {варіанти} other {варіантів} }.' }, coreNavigation: { mainNavigation: 'Main Navigation', navigationPath: 'Navigation Path' }, coreNestedList: { - linkItemAriaLabel: 'Елемент дерева {{ itemDetails }}, {{ index }} із {{ total }}{{ selectedDescription }}' + linkItemAriaLabel: 'Елемент дерева {itemDetails}, {index} із {total}{selectedDescription}' }, coreOverflowLayout: { - moreItemsButton: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return `Ще 1 елемент`; - case 'few': - return `Ще ${count} елемента`; - default: - return `Ще ${count} елементів`; - } - } + moreItemsButton: `Ще { count, plural, one {елемент} few {елемента} other {елементів} }` }, corePagination: { - pageLabel: 'Сторінка {{ pageNumber }}', - currentPageAriaLabel: 'Сторінка {{ pageNumber }} є активною', + pageLabel: 'Сторінка {pageNumber}', + currentPageAriaLabel: 'Сторінка {pageNumber} є активною', labelBeforeInputMobile: 'Сторінка:', - labelAfterInputMobile: 'із {{ totalCount }}', - inputAriaLabel: 'Поле вводу сторінки, Поточна сторінка, Сторінка {{ pageNumber }} із {{ totalCount }}', + labelAfterInputMobile: 'із {totalCount}', + inputAriaLabel: 'Поле вводу сторінки, Поточна сторінка, Сторінка {pageNumber} із {totalCount}', itemsPerPageLabel: 'Результатів на сторінці:', firstLabel: 'Перейти до першої', previousLabel: 'Перейти до попердньої', nextLabel: 'Перейти до наступної', lastLabel: 'Перейти до останньої', ariaLabel: 'Нумерація сторінок', - totalResultsLabel: '{{ totalCount }} результатів' + totalResultsLabel: '{totalCount} результатів' }, coreProductSwitch: { ariaLabel: 'Перемикач' @@ -118,18 +84,18 @@ export const FD_LANGUAGE_UKRAINIAN: FdLanguage = { search: 'Пошук' }, coreSlider: { - singleMinMaxDetails: 'Мінімальне значення слайдера {{min}}, максимальне значення {{ max }}', - singleValueminDetails: 'Поточне значення: {{ value }}', - singleValuemaxDetails: 'Поточне значення: {{ value }}', - singleValueNowDetails: 'Поточне значення: {{ value }}', - multipleHandle1MinMaxDetails: 'Мінімальне значення слайдера {{ min }}, максимальне значення {{ max }}', - multipleHandle1ValueminDetails: 'Поточне значення: {{ value }}', - multipleHandle1ValuemaxDetails: 'Поточне значення: {{ value }}', - multipleHandle1ValueNowDetails: 'Поточне значення: {{ value }}', - multipleHandle2MinMaxDetails: 'Мінімальне значення слайдера {{ min }}, максимальне значення {{ max }}', - multipleHandle2ValueminDetails: 'Поточне значення: {{ value }}', - multipleHandle2ValuemaxDetails: 'Поточне значення: {{ value }}', - multipleHandle2ValueNowDetails: 'Поточне значення: {{ value }}' + singleMinMaxDetails: 'Мінімальне значення слайдера {min}, максимальне значення {max}', + singleValueminDetails: 'Поточне значення: {value}', + singleValuemaxDetails: 'Поточне значення: {value}', + singleValueNowDetails: 'Поточне значення: {value}', + multipleHandle1MinMaxDetails: 'Мінімальне значення слайдера {min}, максимальне значення {max}', + multipleHandle1ValueminDetails: 'Поточне значення: {value}', + multipleHandle1ValuemaxDetails: 'Поточне значення: {value}', + multipleHandle1ValueNowDetails: 'Поточне значення: {value}', + multipleHandle2MinMaxDetails: 'Мінімальне значення слайдера {min}, максимальне значення {max}', + multipleHandle2ValueminDetails: 'Поточне значення: {value}', + multipleHandle2ValuemaxDetails: 'Поточне значення: {value}', + multipleHandle2ValueNowDetails: 'Поточне значення: {value}' }, coreSplitButton: { expandButtonAriaLabel: 'Більше дій', @@ -181,18 +147,7 @@ export const FD_LANGUAGE_UKRAINIAN: FdLanguage = { ariaRoleDescription: 'токен' }, coreTokenizer: { - moreLabel: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return `Ще 1 елемент`; - case 'few': - return `Ще ${count} елемента`; - default: - return `Ще ${count} елементів`; - } - } + moreLabel: 'Ще { count, plural, one {# елемент} few {# елемента} other {# елементів} }' }, coreUploadCollection: { menuOkText: 'ОК', @@ -253,44 +208,11 @@ export const FD_LANGUAGE_UKRAINIAN: FdLanguage = { messagesTeamRemoved: '1 команду видалено', messagesErrorBuildGraph: 'Під час спроби побудувати графік сталася помилка. Перевірте вхідні дані.', messagesUndoAction: 'Скасувати', - nodeMembersCount: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return `1 член команди`; - case 'few': - return `${count} члена команди`; - default: - return `${count || 0} членів команди`; - } - }, + nodeMembersCount: '{ count, plural, one {1 член}, few {# члена}, other {# членів} } команди', nodeVariousTeams: 'Різні команди', nodeStatusDueToday: 'Термін виконання сьогодні', - nodeStatusDueInXDays: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return `Термін виконання через 1 день`; - case 'few': - return `Термін виконання через ${count} дні`; - default: - return `Термін виконання через ${count || 0} днів`; - } - }, - nodeStatusXDaysOverdue: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return `Прострочено на 1 день`; - case 'few': - return `Прострочено на ${count} дні`; - default: - return `Прострочено на ${count || 0} днів`; - } - }, + nodeStatusDueInXDays: 'Термін виконання через { count, plural, one {1 день} few {# дні} other {# днів} }', + nodeStatusXDaysOverdue: 'Прострочено на { count, plural, one {1 день} few {# дні} other {# днів} }', nodeActionAddApproversBefore: 'Додати стверджувача до', nodeActionAddApproversAfter: 'Додати стверджувача після', nodeActionAddApproversParallel: 'Додати паралельних стверджувачів', @@ -311,18 +233,8 @@ export const FD_LANGUAGE_UKRAINIAN: FdLanguage = { toolbarEditApprover: 'Редагувати стверджувача', watchersInputPlaceholder: 'Пошук', userListSelectedItemsCountSingular: 'Вибрано 1 елемент', - userListSelectedItemsCountPlural: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return `Вибрано 1 елемент`; - case 'few': - return `Вибрано ${count} елементи`; - default: - return `Вибрано ${count || 0} елементів`; - } - }, + userListSelectedItemsCountPlural: + 'Вибрано { count, plural, one {1 елемент} few {# елемента} other {# елементів} }', statusApproved: 'approved', statusRejected: 'rejected', statusInProgress: 'in progress', @@ -346,45 +258,16 @@ export const FD_LANGUAGE_UKRAINIAN: FdLanguage = { searchHideAdvancedSearchLabel: 'Сховати фільтри', searchShowAllAdvancedSearchLabel: 'Показати всі фільтри', searchHideAllAdvancedSearchLabel: 'Сховати всі фільтри', - selectTabDisplayCountLabel: 'Елементи ({{ count }})', + selectTabDisplayCountLabel: 'Елементи ({count})', selectTabMoreBtnLabel: 'Більше', - selectTabCountHiddenA11yLabel: (params) => { - const rowCount = params['rowCount']; - const rowOption = pluralization.process(rowCount); - let rowPart: string; - switch (rowOption) { - case 'one': - rowPart = 'містить 1 ряд'; - break; - case 'few': - rowPart = `містить ${rowCount} ряди`; - break; - default: - rowPart = `містить ${rowCount} рядів`; - break; - } - const colCount = params['colCount']; - const colOption = pluralization.process(colCount); - let colPart: string; - switch (colOption) { - case 'one': - colPart = '1 колонку'; - break; - case 'few': - colPart = `${colCount} колонки`; - break; - default: - colPart = `${colCount} колонок`; - break; - } - return `${rowPart} і ${colPart}`; - }, + selectTabCountHiddenA11yLabel: + 'містить { rowCount, plural, one {1 ряд} few {# ряди} other {# рядів} } і { colCount, plural, one {1 колонку} few {# колонки} other {# колонок} }', selectMobileTabBackBtnTitle: 'Назад', selectMobileTabBtnOpenDialogLabel: 'Відкрити діалогове вікно', - selectMobileTabTitle: '{{ title }} вкладка', + selectMobileTabTitle: '{title} вкладка', selectMobileConditionEmpty: 'Пусто', defineConditionTitle: 'Продукт', - defineConditionSelectedValueHiddenA11yLabel: 'вибране значення {{ value }}', + defineConditionSelectedValueHiddenA11yLabel: 'вибране значення {value}', defineConditionConditionsGroupHeaderInclude: 'Включні умови', defineConditionConditionsGroupHeaderExclude: 'Виключні умови', defineConditionFromPlaceholder: 'від', @@ -405,34 +288,15 @@ export const FD_LANGUAGE_UKRAINIAN: FdLanguage = { defineConditionConditionStrategyLabelEmpty: 'порожнє', defineConditionConditionStrategyLabelNotEqualTo: 'не дорівнює', defineConditionConditionStrategyLabelNotEmpty: 'не порожнє', - defineConditionMaxCountError: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return `Введіть значення не більше ніж 1 символу`; - default: - return `Введіть значення не більше ніж ${count || 0} символів`; - } - }, + defineConditionMaxCountError: + 'Введіть значення не більше ніж { count, plural, one {1 символ} few {# символи} other {# символів} }', selectTabTitle: 'Вибрати зі списку', searchTableEmptyMessage: 'Використовуйте пошук, щоб отримати результати', defineTabTitle: 'Визначити умови' }, platformCombobox: { countListResultsSingular: '1 елемент', - countListResultsPlural: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return `1 елемент`; - case 'few': - return `${count} елементи`; - default: - return `${count || 0} елементів`; - } - } + countListResultsPlural: '{ count, plural, one {1 елемент} few {# елементи} other {# елементів} }' }, platformMultiCombobox: { inputGlyphAriaLabel: 'Вибрати опції', @@ -442,34 +306,14 @@ export const FD_LANGUAGE_UKRAINIAN: FdLanguage = { }, platformTextarea: { counterMessageCharactersOverTheLimitSingular: 'Перевищено ліміт на 1 символ', - counterMessageCharactersOverTheLimitPlural: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return `Перевищено ліміт на 1 символ`; - case 'few': - return `Перевищено ліміт на ${count} символи`; - default: - return `Перевищено ліміт на ${count || 0} символів`; - } - }, + counterMessageCharactersOverTheLimitPlural: + 'Перевищено ліміт на { count, plural, one {1 символ} few {# символи} other {# символів} }', counterMessageCharactersRemainingSingular: 'Залишився 1 символ', - counterMessageCharactersRemainingPlural: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return `Залишилось 1 символ`; - case 'few': - return `Залишилось ${count} символи`; - default: - return `Залишилось ${count || 0} символів`; - } - } + counterMessageCharactersRemainingPlural: + 'Залишилось { count, plural, one {1 символ} few {# символи} other {# символів} }' }, platformLink: { - roleDescriptionWithMedia: 'Медіа: {{ media }}' + roleDescriptionWithMedia: 'Медіа: {media}' }, platformList: { loadingAriaLabel: 'завантаження' @@ -487,24 +331,13 @@ export const FD_LANGUAGE_UKRAINIAN: FdLanguage = { submitButtonTitle: 'Пошук', searchInputLabel: 'Пошук', synchronizeButtonTitle: 'Синхронізувати', - searchSuggestionMessage: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return `Знайдено 1 варіант`; - case 'few': - return `Знайдено ${count} варіанти`; - default: - return `Знайдено ${count || 0} варіантів`; - } - }, + searchSuggestionMessage: 'Знайдено { count, plural, one {1 варіант} few {# варіанти} other {# варіантів} }', searchSuggestionNavigateMessage: 'використовуйте стрілки вгору та вниз для навігації' }, platformSmartFilterBar: { searchPlaceholder: 'Пошук', submitButtonLabel: 'Перейти', - filtersButtonLabel: 'Фільтри ({{ filtersCount }})', + filtersButtonLabel: 'Фільтри ({filtersCount})', showFiltersButtonLabel: 'Показати фільтри', hideFiltersButtonLabel: 'Сховати фільтри', defineConditionsRemoveConditionButtonTitle: 'Видалити умову', @@ -561,7 +394,7 @@ export const FD_LANGUAGE_UKRAINIAN: FdLanguage = { P13ColumnsDialogSearchPlaceholder: 'Пошук', P13ColumnsDialogsShowSelected: 'Показати вибране', P13ColumnsDialogShowAll: 'Показати все', - P13ColumnsDialogSelectAll: 'Вибрати всі ({{ selectedColumnsCount }}/{{ selectableColumnsCount }})', + P13ColumnsDialogSelectAll: 'Вибрати всі ({selectedColumnsCount}/{selectableColumnsCount})', P13ColumnsDialogConfirmationBtnLabel: 'OK', P13ColumnsDialogCancelBtnLabel: 'Скасувати', P13ColumnsDialogMoveToTopBtn: 'Перемістити вгору', @@ -586,9 +419,9 @@ export const FD_LANGUAGE_UKRAINIAN: FdLanguage = { P13FilterBooleanOptionTrue: 'Так', P13FilterBooleanOptionFalse: 'Ні', P13FilterDialogHeader: 'Фільтрувати за', - P13FilterDialogIncludePanelTitleWithCount: 'Включні умови ({{ count }})', + P13FilterDialogIncludePanelTitleWithCount: 'Включні умови ({count})', P13FilterDialogIncludePanelTitleWithoutCount: 'Включні умови', - P13FilterDialogExcludePanelTitleWithCount: 'Виключні умови ({{ count }})', + P13FilterDialogExcludePanelTitleWithCount: 'Виключні умови ({count})', P13FilterDialogExcludePanelTitleWithoutCount: 'Виключні умови', P13FilterDialogRemoveFilterBtnTitle: 'Видалити фільтр', P13FilterDialoAddFilterBtnTitle: 'Додати фільтр', @@ -621,7 +454,7 @@ export const FD_LANGUAGE_UKRAINIAN: FdLanguage = { toolbarActionExpandAllButtonTitle: 'Expand all', toolbarActionCollapseAllButtonTitle: 'Collapse all', filterDialogNotFilteredLabel: '(Не відфільтровано)', - filterDialogFilterByLabel: 'Фільтрувати за: {{ filterLabel }}', + filterDialogFilterByLabel: 'Фільтрувати за: {filterLabel}', filterDialogFilterTitle: 'Фільтр', filterDialogFilterBy: 'Фільтрувати за', filterDialogConfirmBtnLabel: 'OK', @@ -664,24 +497,14 @@ export const FD_LANGUAGE_UKRAINIAN: FdLanguage = { moveToCloseBtn: 'Скасувати', newFolderTitle: 'Нова папка', newFolderAtRootInputLabel: 'Назва нової папки', - newFolderAtFolderInputLabel: 'Назва нової папки усередині {{ folderName }', + newFolderAtFolderInputLabel: 'Назва нової папки усередині {folderName}', newFolderInputPlaceholder: 'Введіть назву..', - newFolderInputErrorLabel: (params) => { - const count = params['count']; - const option = pluralization.process(count); - switch (option) { - case 'one': - return `Максимально дозволено 1 символ`; - case 'few': - return `Максимально дозволено ${count} символи`; - default: - return `Максимально дозволено ${count} символів`; - } - }, + newFolderInputErrorLabel: + 'Максимально дозволено { count, plural, one {1 символ} few {# символи} other {# символів} }', newFolderDialogCreateBtnLabel: 'Створити', newFolderDialogCancelBtnLabel: 'Скасувати', breadcrumbLabelAllFiles: 'Усі файли', - breadcrumbLabelAllFilesWithTotal: 'Усі файли ({{ total }})', + breadcrumbLabelAllFilesWithTotal: 'Усі файли ({total})', searchPlaceholder: 'Пошук', addBtnLabel: 'Додати', newFolderBtnLabel: 'Нова папка', @@ -702,94 +525,53 @@ export const FD_LANGUAGE_UKRAINIAN: FdLanguage = { dragDropAreaText: 'Перетягніть файли для завантаження', noDataText: 'Файлів не знайдено', noDataDescription: 'Перетягніть файли для завантаження або скористайтеся кнопкою «Додати».', - paginationTotal: 'Показано {{ from }}-{{ to }} із {{ total }}', + paginationTotal: 'Показано {from}-{to} із {total}', resultsPerPage: 'Результатів на сторінці', - messageCreateFailed: 'Не вдалося створити {{ folderName }}.', - messageCreateSuccess: '{{ folderName }} успішно створено.', - messageUpdateVersionFailed: 'Не вдалося оновити версію {{ folderName }}.', - messageUpdateVersionSuccess: 'Версія {{ folderName }} оновлена.', - messageFileRenameFailed: 'Не вдалося перейменувати "{{ from }}" на "{{ to }}."', - messageFileRenameSuccess: '{{ from }}" перейменовано на "{{ to }}".', - messageRemoveFoldersAndFilesFailed: (params) => - `Не вдалося видалити ${folderNamePluralization(params)} і ${fileNamePluralization(params)}.`, - messageRemoveFoldersAndFilesSuccess: (params) => - `${folderNamePluralization(params)} і ${fileNamePluralization(params)} видалено.`, - messageRemoveFoldersFailed: (params) => `Не вдалося видалити ${folderNamePluralization(params)}.`, - messageRemoveFoldersSuccess: (params) => `Видалено ${folderNamePluralization(params)}.`, - messageRemoveFilesFailed: (params) => `Не вдалося видалити ${fileNamePluralization(params)}.`, - messageRemoveFilesSuccess: (params) => `Видалено ${fileNamePluralization(params)}.`, - messageRemoveFileOrFolderFailed: 'Не вдалося видалити {{ name }}.', - messageRemoveFileOrFolderSuccess: '{{ name }} видалено.', - messageMoveFoldersAndFilesFailed: (params) => - `Не вдалося перемістити ${folderNamePluralization(params)} і ${fileNamePluralization(params)} до {{ to }}.`, - messageMoveFoldersAndFilesSuccess: (params) => - `${folderNamePluralization(params)} і ${fileNamePluralization(params)} переміщено в {{ to }}.`, - messageMoveFoldersFailed: (params) => `Не вдалося перемістити ${folderNamePluralization(params)} до {{ to }}.`, - messageMoveFoldersSuccess: (params) => `${folderNamePluralization(params)} переміщено до {{ to }}.`, - messageMoveFilesFailed: (params) => `Не вдалося перемістити ${fileNamePluralization(params)} до {{ to }}.`, - messageMoveFilesSuccess: (params) => `${fileNamePluralization(params)} переміщено до {{ to }}.`, - messageMoveFileOrFolderFailed: 'Не вдалося перемістити {{ name }} до {{ to }}.', - messageMoveFileOrFolderSuccess: '{{ name }} переміщено в {{ to }}.', - messageMoveRootFoldersAndFilesFailed: (params) => - `Не вдалося перемістити ${folderNamePluralization(params)} і ${fileNamePluralization( - params - )} до всіх файлів.`, - messageMoveRootFoldersAndFilesSuccess: (params) => - `${folderNamePluralization(params)} і ${fileNamePluralization(params)} переміщено до всіх файлів.`, - messageMoveRootFoldersFailed: (params) => - `Не вдалося перемістити ${folderNamePluralization(params)} до всіх файлів.`, - messageMoveRootFoldersSuccess: (params) => `${folderNamePluralization(params)} переміщено до всіх файлів.`, - messageMoveRootFilesFailed: (params) => - `Не вдалося перемістити ${fileNamePluralization(params)} до всіх файлів.`, - messageMoveRootFilesSuccess: (params) => `${fileNamePluralization(params)} переміщено до всіх файлів.`, - messageMoveRootFileOrFolderFailed: 'Не вдалося перемістити {{ name }} до всіх файлів.', - messageMoveRootFileOrFolderSuccess: '{{ name }} переміщено до всіх файлів.', - messageFileTypeMismatchPlural: (params) => { - const filesCount = params['filesCount']; - const foldersCountOption = pluralization.process(filesCount); - switch (foldersCountOption) { - case 'one': - return '1 файл має неправильний тип. Дозволені типи: {{ allowedTypes }}.'; - case 'few': - return `${filesCount} файли мають неправильний тип. Дозволені типи: {{ allowedTypes }}.`; - default: - return `${filesCount || 0} файлів мають неправильний тип. Дозволені типи: {{ allowedTypes }}.`; - } - }, - messageFileTypeMismatchSingular: - 'Файл "{{ fileName }}" має неправильний тип. Дозволені типи: {{ allowedTypes }}.', - messageFileSizeExceededPlural: (params) => { - const filesCount = params['filesCount']; - const foldersCountOption = pluralization.process(filesCount); - switch (foldersCountOption) { - case 'one': - return '1 файл перевищує максимальний розмір файлу. Дозволений максимальний розмір файлу: {{ maxFileSize }}.'; - case 'few': - return `${filesCount} файли перевищують максимальний розмір файлу. Дозволений максимальний розмір файлу: {{ maxFileSize }}.`; - default: - return `${ - filesCount || 0 - } файлів перевищують максимальний розмір файлу. Дозволений максимальний розмір файлу: {{ maxFileSize }}.`; - } - }, + messageCreateFailed: 'Не вдалося створити {folderName}.', + messageCreateSuccess: '{folderName} успішно створено.', + messageUpdateVersionFailed: 'Не вдалося оновити версію {folderName}.', + messageUpdateVersionSuccess: 'Версія {folderName} оновлена.', + messageFileRenameFailed: 'Не вдалося перейменувати "{from}" на "{to}."', + messageFileRenameSuccess: '{from}" перейменовано на "{to}".', + folderNamePluralization: '{ foldersCount, plural, one {1 папку} few {# папки} other {# папок} }', + fileNamePluralization: '{ filesCount, plural, one {1 файл} few {# файли} other {# файлів} }', + messageRemoveFoldersAndFilesFailed: `Не вдалося видалити {@@platformUploadCollection.folderNamePluralization} і {@@platformUploadCollection.fileNamePluralization}.`, + messageRemoveFoldersAndFilesSuccess: `{@@platformUploadCollection.folderNamePluralization} і {@@platformUploadCollection.fileNamePluralization} видалено.`, + messageRemoveFoldersFailed: `Не вдалося видалити {@@platformUploadCollection.folderNamePluralization}.`, + messageRemoveFoldersSuccess: `Видалено {@@platformUploadCollection.folderNamePluralization}.`, + messageRemoveFilesFailed: `Не вдалося видалити {@@platformUploadCollection.fileNamePluralization}.`, + messageRemoveFilesSuccess: `Видалено {@@platformUploadCollection.fileNamePluralization}.`, + messageRemoveFileOrFolderFailed: 'Не вдалося видалити {name}.', + messageRemoveFileOrFolderSuccess: '{name} видалено.', + messageMoveFoldersAndFilesFailed: `Не вдалося перемістити {@@platformUploadCollection.folderNamePluralization} і {@@platformUploadCollection.fileNamePluralization} до {to}.`, + messageMoveFoldersAndFilesSuccess: `{@@platformUploadCollection.folderNamePluralization} і {@@platformUploadCollection.fileNamePluralization} переміщено в {to}.`, + messageMoveFoldersFailed: `Не вдалося перемістити {@@platformUploadCollection.folderNamePluralization} до {to}.`, + messageMoveFoldersSuccess: `{@@platformUploadCollection.folderNamePluralization} переміщено до {to}.`, + messageMoveFilesFailed: `Не вдалося перемістити {@@platformUploadCollection.fileNamePluralization} до {to}.`, + messageMoveFilesSuccess: `{@@platformUploadCollection.fileNamePluralization} переміщено до {to}.`, + messageMoveFileOrFolderFailed: 'Не вдалося перемістити {name} до {to}.', + messageMoveFileOrFolderSuccess: '{name} переміщено в {to}.', + messageMoveRootFoldersAndFilesFailed: `Не вдалося перемістити {@@platformUploadCollection.folderNamePluralization} і {@@platformUploadCollection.fileNamePluralization} до всіх файлів.`, + messageMoveRootFoldersAndFilesSuccess: `{@@platformUploadCollection.folderNamePluralization} і {@@platformUploadCollection.fileNamePluralization} переміщено до всіх файлів.`, + messageMoveRootFoldersFailed: `Не вдалося перемістити {@@platformUploadCollection.folderNamePluralization} до всіх файлів.`, + messageMoveRootFoldersSuccess: `{@@platformUploadCollection.folderNamePluralization} переміщено до всіх файлів.`, + messageMoveRootFilesFailed: `Не вдалося перемістити {@@platformUploadCollection.fileNamePluralization} до всіх файлів.`, + messageMoveRootFilesSuccess: `{@@platformUploadCollection.fileNamePluralization} переміщено до всіх файлів.`, + messageMoveRootFileOrFolderFailed: 'Не вдалося перемістити {name} до всіх файлів.', + messageMoveRootFileOrFolderSuccess: '{name} переміщено до всіх файлів.', + messageFileTypeMismatchPlural: + '{filesCount, plural, one {1 файл}, few {# файли}, other {# файлів} } мають неправильний тип. Дозволені типи: {allowedTypes}.', + messageFileTypeMismatchSingular: 'Файл "{fileName}" має неправильний тип. Дозволені типи: {allowedTypes}.', + messageFileSizeExceededPlural: + // eslint-disable-next-line max-len + '{ filesCount, plural, one {1 файл перевищує} few {# файли перевищують} other {# файлів перевищують} } максимальний розмір файлу. Дозволений максимальний розмір файлу: {maxFileSize}.', messageFileSizeExceededSingular: - 'Файл "{{ fileName }}" перевищує максимальний розмір файлу. Дозволений максимальний розмір файлу: {{ maxFileSize }}.', - messageFileNameLengthExceededPlural: (params) => { - const filesCount = params['filesCount']; - const foldersCountOption = pluralization.process(filesCount); - switch (foldersCountOption) { - case 'one': - return '1 файл перевищив максимальну довжину імені файлу. Дозволена довжина імені файлу: {{ maxFilenameLength }} символів.'; - case 'few': - return `${filesCount} файли перевищили максимальну довжину імені файлу. Дозволена довжина імені файлу: {{ maxFilenameLength }} символів.`; - default: - return `${ - filesCount || 0 - } файлів перевищили максимальну довжину імені файлу. Дозволена довжина імені файлу: {{ maxFilenameLength }} символів.`; - } - }, + 'Файл "{fileName}" перевищує максимальний розмір файлу. Дозволений максимальний розмір файлу: {maxFileSize}.', + messageFileNameLengthExceededPlural: + // eslint-disable-next-line max-len + '{ filesCount, plural, one {1 файл перевищив} few {# файли перевищили} other {# файлів перевищили} } максимальну довжину імені файлу. Дозволена довжина імені файлу: {maxFilenameLength} символів.', messageFileNameLengthExceededSingular: - 'Назва "{{ fileName }}" перевищує максимальну довжину імені файлу. Дозволена довжина імені файлу: {{ maxFilenameLength }} символів.' + 'Назва "{fileName}" перевищує максимальну довжину імені файлу. Дозволена довжина імені файлу: {maxFilenameLength} символів.' }, platformWizardGenerator: { summarySectionEditStep: 'Редагувати' @@ -836,10 +618,10 @@ export const FD_LANGUAGE_UKRAINIAN: FdLanguage = { selectOptionLabel: 'Виберіть опцію' }, fnSlider: { - minMaxDetails: 'Мінімальне значення слайдера {{min}}, максимальне значення {{ max }}', - valueminDetails: 'Поточне значення: {{ value }}', - valuemaxDetails: 'Поточне значення: {{ value }}', - valueNowDetails: 'Поточне значення: {{ value }}' + minMaxDetails: 'Мінімальне значення слайдера {min}, максимальне значення {max}', + valueminDetails: 'Поточне значення: {value}', + valuemaxDetails: 'Поточне значення: {value}', + valueNowDetails: 'Поточне значення: {value}' }, fnSwitch: { semanticAcceptLabel: 'Прийняти', @@ -851,45 +633,3 @@ export const FD_LANGUAGE_UKRAINIAN: FdLanguage = { noData: 'Немає даних' } }; - -/** - * Pluralization for "file" word in ukrainian language - * - * Output samples: - * * 1 файл - * * 2 файли - * * 10 файлів - */ -function fileNamePluralization(params: FdLanguageKeyArgs): string { - const filesCount = params['filesCount']; - const filesCountOption = pluralization.process(filesCount); - switch (filesCountOption) { - case 'one': - return '1 файл'; - case 'few': - return `${filesCount} файли`; - default: - return `${filesCount || 0} файлів`; - } -} - -/** - * Pluralization for "folder" word in ukrainian language - * - * Outputs samples: - * * 1 папку - * * 2 папки - * * 10 папок - */ -function folderNamePluralization(params: FdLanguageKeyArgs): string { - const foldersCount = params['foldersCount']; - const foldersCountOption = pluralization.process(foldersCount); - switch (foldersCountOption) { - case 'one': - return '1 папку'; - case 'few': - return `${foldersCount} папки`; - default: - return `${foldersCount || 0} папок`; - } -} diff --git a/libs/i18n/src/lib/models/lang.ts b/libs/i18n/src/lib/models/lang.ts index 3bfcaadc29e..2537013eea2 100644 --- a/libs/i18n/src/lib/models/lang.ts +++ b/libs/i18n/src/lib/models/lang.ts @@ -53,7 +53,7 @@ export interface FdLanguage { }; coreMultiInput: { multiInputAriaLabel: FdLanguageKey; - tokensCountText: FdLanguageKeyFunction; + tokensCountText: FdLanguageKey; }; coreNavigation: { mainNavigation: FdLanguageKey; @@ -635,6 +635,10 @@ export interface FdLanguage { messageUpdateVersionFailed: FdLanguageKey; /** @param folderName */ messageUpdateVersionSuccess: FdLanguageKey; + /** @param foldersCount */ + folderNamePluralization?: FdLanguageKey; + /** @param filesCount */ + fileNamePluralization?: FdLanguageKey; /** * @param from * @param to From a8fd5e7549ac71a0a7946dedeacbc9c0826c4d3c Mon Sep 17 00:00:00 2001 From: g-cheishvili Date: Tue, 19 Sep 2023 23:29:06 +0400 Subject: [PATCH 02/21] feat: i18n improvements --- .eslintrc.json | 20 +- apps/docs/project.json | 7 +- apps/docs/src/environments/app.routes.ts | 7 + libs/cdk/src/lib/data-source/project.json | 2 +- libs/cdk/src/lib/forms/project.json | 2 +- libs/cdk/src/lib/project.json | 2 +- libs/cdk/src/lib/utils/project.json | 2 +- libs/docs/cdk/docs-data.ts | 3 +- libs/docs/cdk/docs-routes.ts | 4 - libs/docs/core/docs-data.ts | 3 +- libs/docs/core/docs-routes.ts | 4 - libs/docs/cx/docs-data.ts | 3 +- libs/docs/cx/docs-routes.ts | 4 - .../changing-translations-docs.component.html | 36 + .../changing-translations-docs.component.ts} | 51 +- ...hanging-translations-header.component.html | 9 + .../changing-translations-header.component.ts | 10 + ...18n-language-change-example.component.html | 0 .../i18n-language-change-example.component.ts | 0 libs/docs/i18n/changing-translations/index.ts | 20 + libs/docs/i18n/docs-data.ts | 42 ++ libs/docs/i18n/docs-routes.ts | 45 ++ libs/docs/i18n/index.ts | 19 +- libs/docs/i18n/loading-translations/index.ts | 20 + .../loading-translations-docs.component.html | 16 + .../loading-translations-docs.component.ts | 88 +++ ...loading-translations-header.component.html | 8 + .../loading-translations-header.component.ts | 10 + ...ation-customization-example.component.html | 0 ...slation-customization-example.component.ts | 0 .../translation-wrapper-1.component.ts | 2 +- .../translation-wrapper-2.component.ts | 4 +- libs/docs/i18n/patching-translations/index.ts | 20 + .../patching-translations-docs.component.html | 24 + .../patching-translations-docs.component.ts | 61 ++ ...atching-translations-header.component.html | 7 + .../patching-translations-header.component.ts | 10 + .../i18n/platform-i18n-docs.component.html | 74 -- .../examples/basic-usage-example.component.ts | 43 ++ ...sing-translation-pipe-example.component.ts | 17 + ...ing-utility-functions-example.component.ts | 76 +++ libs/docs/i18n/translation-resolver/index.ts | 21 + .../translation-resolver-docs.component.html | 43 ++ .../translation-resolver-docs.component.ts | 44 ++ ...translation-resolver-header.component.html | 7 + .../translation-resolver-header.component.ts | 10 + .../i18n/writing-translations.component.ts | 141 ++++ libs/docs/platform/docs-routes.ts | 4 - .../core-helpers/toolbar/toolbar.component.ts | 6 + libs/i18n/README.md | 53 +- .../directives/patch-language.directive.ts | 5 +- libs/i18n/src/lib/languages/albanian.ts | 628 +---------------- libs/i18n/src/lib/languages/bulgarian.ts | 630 +---------------- libs/i18n/src/lib/languages/chinese.ts | 619 +---------------- libs/i18n/src/lib/languages/czech.ts | 627 +---------------- libs/i18n/src/lib/languages/english.ts | 624 +---------------- libs/i18n/src/lib/languages/french.ts | 634 +---------------- libs/i18n/src/lib/languages/georgian.ts | 626 +---------------- libs/i18n/src/lib/languages/hindi.ts | 627 +---------------- libs/i18n/src/lib/languages/italian.ts | 630 +---------------- libs/i18n/src/lib/languages/polish.ts | 631 +---------------- libs/i18n/src/lib/languages/russian.ts | 639 +----------------- libs/i18n/src/lib/languages/turkish.ts | 625 +---------------- libs/i18n/src/lib/languages/ukrainian.ts | 637 +---------------- .../src/lib/pipes/fd-translate.pipe.spec.ts | 146 ++-- .../lib/translations/translations_bg-BG.json | 503 ++++++++++++++ .../lib/translations/translations_cs-CZ.json | 503 ++++++++++++++ .../lib/translations/translations_en-US.json | 503 ++++++++++++++ .../lib/translations/translations_fr-FR.json | 503 ++++++++++++++ .../lib/translations/translations_hi-IN.json | 503 ++++++++++++++ .../lib/translations/translations_it-IT.json | 503 ++++++++++++++ .../lib/translations/translations_ka-GE.json | 503 ++++++++++++++ .../lib/translations/translations_pl-PL.json | 503 ++++++++++++++ .../lib/translations/translations_ru-RU.json | 505 ++++++++++++++ .../lib/translations/translations_sq-AL.json | 503 ++++++++++++++ .../lib/translations/translations_tr-TR.json | 503 ++++++++++++++ .../lib/translations/translations_uk-UA.json | 505 ++++++++++++++ .../lib/translations/translations_zh-CN.json | 503 ++++++++++++++ .../src/lib/utils/flatten-translations.ts | 30 + libs/i18n/src/lib/utils/index.ts | 4 +- libs/i18n/src/lib/utils/load-json.spec.ts | 66 ++ libs/i18n/src/lib/utils/load-json.ts | 30 + libs/i18n/src/lib/utils/patch-language.ts | 16 +- .../lib/utils/replace-double-curly-braces.ts | 16 + libs/i18n/src/lib/utils/resolve-helpers.ts | 71 ++ .../lib/utils/translation-resolver.spec.ts | 96 +-- .../src/lib/utils/translation-resolver.ts | 88 ++- package.json | 1 + 88 files changed, 7958 insertions(+), 8435 deletions(-) create mode 100644 libs/docs/i18n/changing-translations/changing-translations-docs.component.html rename libs/docs/i18n/{platform-i18n-docs.component.ts => changing-translations/changing-translations-docs.component.ts} (52%) create mode 100644 libs/docs/i18n/changing-translations/changing-translations-header/changing-translations-header.component.html create mode 100644 libs/docs/i18n/changing-translations/changing-translations-header/changing-translations-header.component.ts rename libs/docs/i18n/{ => changing-translations}/examples/i18n-language-change-example/i18n-language-change-example.component.html (100%) rename libs/docs/i18n/{ => changing-translations}/examples/i18n-language-change-example/i18n-language-change-example.component.ts (100%) create mode 100644 libs/docs/i18n/changing-translations/index.ts create mode 100644 libs/docs/i18n/docs-data.ts create mode 100644 libs/docs/i18n/docs-routes.ts create mode 100644 libs/docs/i18n/loading-translations/index.ts create mode 100644 libs/docs/i18n/loading-translations/loading-translations-docs.component.html create mode 100644 libs/docs/i18n/loading-translations/loading-translations-docs.component.ts create mode 100644 libs/docs/i18n/loading-translations/loading-translations-header/loading-translations-header.component.html create mode 100644 libs/docs/i18n/loading-translations/loading-translations-header/loading-translations-header.component.ts rename libs/docs/i18n/{ => patching-translations}/examples/i18n-translation-customization-example/i18n-translation-customization-example.component.html (100%) rename libs/docs/i18n/{ => patching-translations}/examples/i18n-translation-customization-example/i18n-translation-customization-example.component.ts (100%) rename libs/docs/i18n/{ => patching-translations}/examples/i18n-translation-customization-example/translation-wrapper-1.component.ts (97%) rename libs/docs/i18n/{ => patching-translations}/examples/i18n-translation-customization-example/translation-wrapper-2.component.ts (86%) create mode 100644 libs/docs/i18n/patching-translations/index.ts create mode 100644 libs/docs/i18n/patching-translations/patching-translations-docs.component.html create mode 100644 libs/docs/i18n/patching-translations/patching-translations-docs.component.ts create mode 100644 libs/docs/i18n/patching-translations/patching-translations-header/patching-translations-header.component.html create mode 100644 libs/docs/i18n/patching-translations/patching-translations-header/patching-translations-header.component.ts delete mode 100644 libs/docs/i18n/platform-i18n-docs.component.html create mode 100644 libs/docs/i18n/translation-resolver/examples/basic-usage-example.component.ts create mode 100644 libs/docs/i18n/translation-resolver/examples/using-translation-pipe-example.component.ts create mode 100644 libs/docs/i18n/translation-resolver/examples/using-utility-functions-example.component.ts create mode 100644 libs/docs/i18n/translation-resolver/index.ts create mode 100644 libs/docs/i18n/translation-resolver/translation-resolver-docs.component.html create mode 100644 libs/docs/i18n/translation-resolver/translation-resolver-docs.component.ts create mode 100644 libs/docs/i18n/translation-resolver/translation-resolver-header/translation-resolver-header.component.html create mode 100644 libs/docs/i18n/translation-resolver/translation-resolver-header/translation-resolver-header.component.ts create mode 100644 libs/docs/i18n/writing-translations.component.ts create mode 100644 libs/i18n/src/lib/translations/translations_bg-BG.json create mode 100644 libs/i18n/src/lib/translations/translations_cs-CZ.json create mode 100644 libs/i18n/src/lib/translations/translations_en-US.json create mode 100644 libs/i18n/src/lib/translations/translations_fr-FR.json create mode 100644 libs/i18n/src/lib/translations/translations_hi-IN.json create mode 100644 libs/i18n/src/lib/translations/translations_it-IT.json create mode 100644 libs/i18n/src/lib/translations/translations_ka-GE.json create mode 100644 libs/i18n/src/lib/translations/translations_pl-PL.json create mode 100644 libs/i18n/src/lib/translations/translations_ru-RU.json create mode 100644 libs/i18n/src/lib/translations/translations_sq-AL.json create mode 100644 libs/i18n/src/lib/translations/translations_tr-TR.json create mode 100644 libs/i18n/src/lib/translations/translations_uk-UA.json create mode 100644 libs/i18n/src/lib/translations/translations_zh-CN.json create mode 100644 libs/i18n/src/lib/utils/flatten-translations.ts create mode 100644 libs/i18n/src/lib/utils/load-json.spec.ts create mode 100644 libs/i18n/src/lib/utils/load-json.ts create mode 100644 libs/i18n/src/lib/utils/replace-double-curly-braces.ts create mode 100644 libs/i18n/src/lib/utils/resolve-helpers.ts diff --git a/.eslintrc.json b/.eslintrc.json index 32bf0917c34..b00ebacdcce 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -11,23 +11,23 @@ "depConstraints": [ { "sourceTag": "scope:fd", - "onlyDependOnLibsWithTags": ["scope:fd", "scope:i18n"] + "onlyDependOnLibsWithTags": ["scope:fd", "scope:i18n", "scope:cdk"] }, { "sourceTag": "scope:fdp", - "onlyDependOnLibsWithTags": ["scope:fd", "scope:fdp", "scope:i18n"] - }, - { - "sourceTag": "scope:fn", - "onlyDependOnLibsWithTags": ["scope:fd", "scope:fn", "scope:i18n"] + "onlyDependOnLibsWithTags": ["scope:fd", "scope:fdp", "scope:i18n", "scope:cdk"] }, { "sourceTag": "scope:datetime-adapter", - "onlyDependOnLibsWithTags": ["scope:fd", "scope:i18n"] + "onlyDependOnLibsWithTags": ["scope:fd", "scope:i18n", "scope:cdk"] }, { "sourceTag": "scope:cx", - "onlyDependOnLibsWithTags": ["scope:fd", "scope:cx", "scope:i18n"] + "onlyDependOnLibsWithTags": ["scope:fd", "scope:cx", "scope:i18n", "scope:cdk"] + }, + { + "sourceTag": "scope:i18n", + "onlyDependOnLibsWithTags": ["scope:cdk"] }, { "sourceTag": "scope:docs", @@ -35,10 +35,10 @@ "scope:docs", "scope:fd", "scope:fdp", - "scope:fn", "scope:datetime-adapter", "scope:i18n", - "scope:cx" + "scope:cx", + "scope:cdk" ] } ], diff --git a/apps/docs/project.json b/apps/docs/project.json index 721e55d849d..bd101f84f85 100644 --- a/apps/docs/project.json +++ b/apps/docs/project.json @@ -92,6 +92,11 @@ "glob": "README.md", "output": "./assets/cdk" }, + { + "input": "./libs/i18n", + "glob": "README.md", + "output": "./assets/i18n" + }, { "input": "./libs/docs/typedoc", "glob": "**/*", @@ -130,7 +135,7 @@ { "glob": "**/examples/**/*", "input": "libs/docs/i18n", - "output": "./docs/shared/i18n" + "output": "./docs/i18n" }, { "glob": "**/examples/**/*", diff --git a/apps/docs/src/environments/app.routes.ts b/apps/docs/src/environments/app.routes.ts index 7c6f91d6c43..0e7a588e723 100644 --- a/apps/docs/src/environments/app.routes.ts +++ b/apps/docs/src/environments/app.routes.ts @@ -29,5 +29,12 @@ export const ROUTES: Routes = [ }, loadChildren: () => import('@fundamental-ngx/docs/cdk') }, + { + path: 'i18n', + data: { + library: 'I18n' + }, + loadChildren: () => import('@fundamental-ngx/docs/i18n') + }, { path: '', redirectTo: 'core', pathMatch: 'full' } ]; diff --git a/libs/cdk/src/lib/data-source/project.json b/libs/cdk/src/lib/data-source/project.json index 8ff60bb3a92..7a679315285 100644 --- a/libs/cdk/src/lib/data-source/project.json +++ b/libs/cdk/src/lib/data-source/project.json @@ -40,5 +40,5 @@ } } }, - "tags": ["type:lib", "scope:fd"] + "tags": ["type:lib", "scope:cdk"] } diff --git a/libs/cdk/src/lib/forms/project.json b/libs/cdk/src/lib/forms/project.json index aca4fc74dd0..ec7b3dec513 100644 --- a/libs/cdk/src/lib/forms/project.json +++ b/libs/cdk/src/lib/forms/project.json @@ -40,5 +40,5 @@ } } }, - "tags": ["type:lib", "scope:fd"] + "tags": ["type:lib", "scope:cdk"] } diff --git a/libs/cdk/src/lib/project.json b/libs/cdk/src/lib/project.json index 72c15c66c19..5be23132dd1 100644 --- a/libs/cdk/src/lib/project.json +++ b/libs/cdk/src/lib/project.json @@ -46,5 +46,5 @@ } } }, - "tags": ["type:lib", "scope:fd"] + "tags": ["type:lib", "scope:cdk"] } diff --git a/libs/cdk/src/lib/utils/project.json b/libs/cdk/src/lib/utils/project.json index 6f49d28555b..676e83fba12 100644 --- a/libs/cdk/src/lib/utils/project.json +++ b/libs/cdk/src/lib/utils/project.json @@ -40,5 +40,5 @@ } } }, - "tags": ["type:lib", "scope:fd"] + "tags": ["type:lib", "scope:cdk"] } diff --git a/libs/docs/cdk/docs-data.ts b/libs/docs/cdk/docs-data.ts index 3805fae2179..fd598e2b3d4 100644 --- a/libs/docs/cdk/docs-data.ts +++ b/libs/docs/cdk/docs-data.ts @@ -3,8 +3,7 @@ import { SectionInterface, SectionInterfaceContent } from '@fundamental-ngx/docs export const guides: SectionInterfaceContent[] = [ { url: 'cdk/home', name: 'Home' }, - { url: 'cdk/new-component', name: 'New Component' }, - { url: 'cdk/i18n', name: 'I18n' } + { url: 'cdk/new-component', name: 'New Component' } ]; export const directives: SectionInterfaceContent[] = [ diff --git a/libs/docs/cdk/docs-routes.ts b/libs/docs/cdk/docs-routes.ts index 3cc0491f1e2..19c95f900dd 100644 --- a/libs/docs/cdk/docs-routes.ts +++ b/libs/docs/cdk/docs-routes.ts @@ -47,10 +47,6 @@ export const ROUTES: Routes = [ loadComponent: () => import('@fundamental-ngx/docs/shared-pages').then((m) => m.NewComponentPageComponent) }, - { - path: 'i18n', - loadChildren: () => import('@fundamental-ngx/docs/i18n').then((m) => m.ROUTES) - }, { path: 'control-value-accessor', loadChildren: () => import('@fundamental-ngx/docs/cdk/forms').then(configureCdkRoutes) diff --git a/libs/docs/core/docs-data.ts b/libs/docs/core/docs-data.ts index fbe26981302..ea99c266452 100644 --- a/libs/docs/core/docs-data.ts +++ b/libs/docs/core/docs-data.ts @@ -3,8 +3,7 @@ import { SectionInterface, SectionInterfaceContent } from '@fundamental-ngx/docs export const guides: SectionInterfaceContent[] = [ { url: 'core/home', name: 'Home' }, - { url: 'core/new-component', name: 'New Component' }, - { url: 'core/i18n', name: 'I18n' } + { url: 'core/new-component', name: 'New Component' } ]; export const components: SectionInterfaceContent[] = [ diff --git a/libs/docs/core/docs-routes.ts b/libs/docs/core/docs-routes.ts index 859e96123ba..c4a774584d3 100644 --- a/libs/docs/core/docs-routes.ts +++ b/libs/docs/core/docs-routes.ts @@ -51,10 +51,6 @@ export const ROUTES: Routes = [ loadComponent: () => import('@fundamental-ngx/docs/shared-pages').then((m) => m.NewComponentPageComponent) }, - { - path: 'i18n', - loadChildren: () => import('@fundamental-ngx/docs/i18n').then((m) => m.ROUTES) - }, { path: 'action-bar', loadChildren: () => import('@fundamental-ngx/docs/core/action-bar').then(configureCoreRoutes) diff --git a/libs/docs/cx/docs-data.ts b/libs/docs/cx/docs-data.ts index d602bcfdbf8..30825369258 100644 --- a/libs/docs/cx/docs-data.ts +++ b/libs/docs/cx/docs-data.ts @@ -3,8 +3,7 @@ import { SectionInterface, SectionInterfaceContent } from '@fundamental-ngx/docs export const guides: SectionInterfaceContent[] = [ { url: 'cx/home', name: 'Home' }, - { url: 'cx/new-component', name: 'New Component' }, - { url: 'cx/i18n', name: 'I18n' } + { url: 'cx/new-component', name: 'New Component' } ]; export const components: SectionInterfaceContent[] = [ diff --git a/libs/docs/cx/docs-routes.ts b/libs/docs/cx/docs-routes.ts index bcc8ef3ea6f..c4f79075687 100644 --- a/libs/docs/cx/docs-routes.ts +++ b/libs/docs/cx/docs-routes.ts @@ -47,10 +47,6 @@ export const ROUTES: Routes = [ loadComponent: () => import('@fundamental-ngx/docs/shared-pages').then((m) => m.NewComponentPageComponent) }, - { - path: 'i18n', - loadChildren: () => import('@fundamental-ngx/docs/i18n').then((m) => m.ROUTES) - }, { path: 'side-navigation', loadChildren: () => import('@fundamental-ngx/docs/cx/side-navigation').then(configureCxRoutes) diff --git a/libs/docs/i18n/changing-translations/changing-translations-docs.component.html b/libs/docs/i18n/changing-translations/changing-translations-docs.component.html new file mode 100644 index 00000000000..2967cdf15d2 --- /dev/null +++ b/libs/docs/i18n/changing-translations/changing-translations-docs.component.html @@ -0,0 +1,36 @@ + Changing languages at runtime + +

+ In this particular example such capabilities are shown on the level of a component due to the limitations of the + example itself. The same scenario can and should be used in the root of your app. +

+
+ + + + + + + + + Creating custom translations + + +

+ Although fundamental-ngx library provides a rich set of languages to work with out of the box, it's + possible to also define your own languages when needed. The language object is just a set of key/values, that + are defined per component. This object should implement FdLanguage interface. +

+

+ You may provide both strings with interpolation using double curly brackets ( + {{ '{{' }} paramName {{ "}}" }}) or functions as language values. +

+

+ The list of available keys can be found in the corresponding docs section of each component. The I18n section is + visible only for the components that have translations. The default English value for each translation is also + in this documentation. +

+ + +
diff --git a/libs/docs/i18n/platform-i18n-docs.component.ts b/libs/docs/i18n/changing-translations/changing-translations-docs.component.ts similarity index 52% rename from libs/docs/i18n/platform-i18n-docs.component.ts rename to libs/docs/i18n/changing-translations/changing-translations-docs.component.ts index 03316ffda2d..002ae99d4fe 100644 --- a/libs/docs/i18n/platform-i18n-docs.component.ts +++ b/libs/docs/i18n/changing-translations/changing-translations-docs.component.ts @@ -9,23 +9,11 @@ import { SeparatorComponent, getAssetFromModuleAssets } from '@fundamental-ngx/docs/shared'; +import { PlatformI18nTranslationCustomizationExampleComponent } from '../patching-translations/examples/i18n-translation-customization-example/i18n-translation-customization-example.component'; import { PlatformLanguageChangeExampleComponent } from './examples/i18n-language-change-example/i18n-language-change-example.component'; -import { PlatformI18nTranslationCustomizationExampleComponent } from './examples/i18n-translation-customization-example/i18n-translation-customization-example.component'; - -const translationCustomizationExampleComponentHtml = - 'i18n-translation-customization-example/i18n-translation-customization-example.component.html'; -const translationCustomizationExampleComponentTs = - 'i18n-translation-customization-example/i18n-translation-customization-example.component.ts'; -const translationCustomizationWrapper1Component = - 'i18n-translation-customization-example/translation-wrapper-1.component.ts'; -const translationCustomizationWrapper2Component = - 'i18n-translation-customization-example/translation-wrapper-2.component.ts'; -const languageChangeExampleComponentHtml = 'i18n-language-change-example/i18n-language-change-example.component.html'; -const languageChangeExampleComponentTs = 'i18n-language-change-example/i18n-language-change-example.component.ts'; @Component({ - selector: 'app-button', - templateUrl: './platform-i18n-docs.component.html', + templateUrl: './changing-translations-docs.component.html', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ @@ -39,7 +27,7 @@ const languageChangeExampleComponentTs = 'i18n-language-change-example/i18n-lang PlatformLanguageChangeExampleComponent ] }) -export class PlatformI18nDocsComponent { +export class ChangingTranslationsDocsComponent { basicUsageExample = { language: 'typescript', code: `import { FD_LANGUAGE, FdLanguage, FD_LANGUAGE_UKRAINIAN } from '@fundamental-ngx/i18n'; @@ -81,45 +69,16 @@ export const CUSTOM_LANGUAGE: FdLanguage = { ` }; - translationCustomizationExample: ExampleFile[] = [ - { - language: 'html', - code: getAssetFromModuleAssets(translationCustomizationExampleComponentHtml, 'shared'), - fileName: 'i18n-translation-customization-example' - }, - { - language: 'typescript', - component: 'PlatformI18nTranslationCustomizationExampleComponent', - code: getAssetFromModuleAssets(translationCustomizationExampleComponentTs, 'shared'), - fileName: 'i18n-translation-customization-example', - name: 'Host component' - }, - { - language: 'typescript', - component: 'TranslationWrapper1Component', - code: getAssetFromModuleAssets(translationCustomizationWrapper1Component, 'shared'), - fileName: 'translation-wrapper-1', - name: 'Wrapper component 1' - }, - { - language: 'typescript', - component: 'TranslationWrapper2Component', - code: getAssetFromModuleAssets(translationCustomizationWrapper2Component, 'shared'), - fileName: 'translation-wrapper-2', - name: 'Wrapper component 2' - } - ]; - languageChangeExample: ExampleFile[] = [ { language: 'html', - code: getAssetFromModuleAssets(languageChangeExampleComponentHtml, 'shared'), + code: getAssetFromModuleAssets('i18n-language-change-example/i18n-language-change-example.component.html'), fileName: 'i18n-language-change-example-example' }, { language: 'typescript', component: 'PlatformLanguageChangeExampleComponent', - code: getAssetFromModuleAssets(languageChangeExampleComponentTs, 'shared'), + code: getAssetFromModuleAssets('i18n-language-change-example/i18n-language-change-example.component.ts'), fileName: 'i18n-language-change-example-example' } ]; diff --git a/libs/docs/i18n/changing-translations/changing-translations-header/changing-translations-header.component.html b/libs/docs/i18n/changing-translations/changing-translations-header/changing-translations-header.component.html new file mode 100644 index 00000000000..6f986f9438f --- /dev/null +++ b/libs/docs/i18n/changing-translations/changing-translations-header/changing-translations-header.component.html @@ -0,0 +1,9 @@ +
Changing translations
+ +

+ The FD_LANGUAGE token is an observable, which means you can change the language at runtime using + your own logic. +

+
+ + diff --git a/libs/docs/i18n/changing-translations/changing-translations-header/changing-translations-header.component.ts b/libs/docs/i18n/changing-translations/changing-translations-header/changing-translations-header.component.ts new file mode 100644 index 00000000000..0756f997433 --- /dev/null +++ b/libs/docs/i18n/changing-translations/changing-translations-header/changing-translations-header.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; +import { RouterOutlet } from '@angular/router'; +import { DescriptionComponent, HeaderComponent } from '@fundamental-ngx/docs/shared'; + +@Component({ + templateUrl: './changing-translations-header.component.html', + standalone: true, + imports: [HeaderComponent, DescriptionComponent, RouterOutlet] +}) +export class ChangingTranslationsHeaderComponent {} diff --git a/libs/docs/i18n/examples/i18n-language-change-example/i18n-language-change-example.component.html b/libs/docs/i18n/changing-translations/examples/i18n-language-change-example/i18n-language-change-example.component.html similarity index 100% rename from libs/docs/i18n/examples/i18n-language-change-example/i18n-language-change-example.component.html rename to libs/docs/i18n/changing-translations/examples/i18n-language-change-example/i18n-language-change-example.component.html diff --git a/libs/docs/i18n/examples/i18n-language-change-example/i18n-language-change-example.component.ts b/libs/docs/i18n/changing-translations/examples/i18n-language-change-example/i18n-language-change-example.component.ts similarity index 100% rename from libs/docs/i18n/examples/i18n-language-change-example/i18n-language-change-example.component.ts rename to libs/docs/i18n/changing-translations/examples/i18n-language-change-example/i18n-language-change-example.component.ts diff --git a/libs/docs/i18n/changing-translations/index.ts b/libs/docs/i18n/changing-translations/index.ts new file mode 100644 index 00000000000..9538227bc0f --- /dev/null +++ b/libs/docs/i18n/changing-translations/index.ts @@ -0,0 +1,20 @@ +import { Routes } from '@angular/router'; + +export const LIBRARY_NAME = 'changing-translations'; +export const ROUTES: Routes = [ + { + path: '', + loadComponent: () => + import('./changing-translations-header/changing-translations-header.component').then( + (c) => c.ChangingTranslationsHeaderComponent + ), + data: { primary: true }, + children: [ + { + path: '', + loadComponent: () => + import('./changing-translations-docs.component').then((c) => c.ChangingTranslationsDocsComponent) + } + ] + } +]; diff --git a/libs/docs/i18n/docs-data.ts b/libs/docs/i18n/docs-data.ts new file mode 100644 index 00000000000..e7209fc82fe --- /dev/null +++ b/libs/docs/i18n/docs-data.ts @@ -0,0 +1,42 @@ +import { SectionInterface, SectionInterfaceContent } from '@fundamental-ngx/docs/shared'; + +const guides: SectionInterfaceContent[] = [ + { + name: 'Home', + url: 'i18n/home' + }, + { + name: 'Writing translations', + url: 'i18n/writing-translations' + } +]; + +const utilities: SectionInterfaceContent[] = [ + { + name: 'Loading translations', + url: 'i18n/loading-translations' + }, + { + name: 'Changing translations', + url: 'i18n/changing-translations' + }, + { + name: 'Resolving translations', + url: 'i18n/resolver' + }, + { + name: 'Patch translations', + url: 'i18n/patch' + } +]; + +export const sections: SectionInterface[] = [ + { + header: 'Guides', + content: guides + }, + { + header: 'Utilities', + content: utilities + } +]; diff --git a/libs/docs/i18n/docs-routes.ts b/libs/docs/i18n/docs-routes.ts new file mode 100644 index 00000000000..797e709b7ab --- /dev/null +++ b/libs/docs/i18n/docs-routes.ts @@ -0,0 +1,45 @@ +import { Routes } from '@angular/router'; +import { configureRoutes, CURRENT_LIB, StackblitzService } from '@fundamental-ngx/docs/shared'; +import { sections } from './docs-data'; + +const configureI18nRoutes = configureRoutes({}); + +export const ROUTES: Routes = [ + { + path: '', + loadComponent: () => import('@fundamental-ngx/docs/shared-pages').then((m) => m.LibraryDocShellPageComponent), + data: { + sections + }, + providers: [StackblitzService, { provide: CURRENT_LIB, useValue: 'i18n' }], + children: [ + { path: '', redirectTo: 'home', pathMatch: 'full' }, + { + path: 'home', + loadComponent: () => + import('@fundamental-ngx/docs/shared-pages').then((m) => m.LibraryReadmePageComponent) + }, + { + path: 'writing-translations', + loadComponent: () => + import('./writing-translations.component').then((m) => m.WritingTranslationsComponent) + }, + { + path: 'loading-translations', + loadChildren: () => import('./loading-translations').then(configureI18nRoutes) + }, + { + path: 'changing-translations', + loadChildren: () => import('./changing-translations').then(configureI18nRoutes) + }, + { + path: 'resolver', + loadChildren: () => import('./translation-resolver').then(configureI18nRoutes) + }, + { + path: 'patch', + loadChildren: () => import('./patching-translations').then(configureI18nRoutes) + } + ] + } +]; diff --git a/libs/docs/i18n/index.ts b/libs/docs/i18n/index.ts index 96932b07796..c5c03477e07 100644 --- a/libs/docs/i18n/index.ts +++ b/libs/docs/i18n/index.ts @@ -1,17 +1,2 @@ -import { Routes } from '@angular/router'; -import { currentComponentProvider } from '@fundamental-ngx/docs/shared'; - -export const ROUTES: Routes = [ - { - path: '', - loadComponent: () => - import('./platform-i18n-header/platform-i18n-header.component').then((m) => m.PlatformI18nHeaderComponent), - providers: [currentComponentProvider('i18n')], - children: [ - { - path: '', - loadComponent: () => import('./platform-i18n-docs.component').then((m) => m.PlatformI18nDocsComponent) - } - ] - } -]; +import { ROUTES } from './docs-routes'; +export default ROUTES; diff --git a/libs/docs/i18n/loading-translations/index.ts b/libs/docs/i18n/loading-translations/index.ts new file mode 100644 index 00000000000..b4bda8f5d49 --- /dev/null +++ b/libs/docs/i18n/loading-translations/index.ts @@ -0,0 +1,20 @@ +import { Routes } from '@angular/router'; + +export const LIBRARY_NAME = 'loading-translations'; +export const ROUTES: Routes = [ + { + path: '', + loadComponent: () => + import('./loading-translations-header/loading-translations-header.component').then( + (c) => c.LoadingTranslationsHeaderComponent + ), + data: { primary: true }, + children: [ + { + path: '', + loadComponent: () => + import('./loading-translations-docs.component').then((c) => c.LoadingTranslationsDocsComponent) + } + ] + } +]; diff --git a/libs/docs/i18n/loading-translations/loading-translations-docs.component.html b/libs/docs/i18n/loading-translations/loading-translations-docs.component.html new file mode 100644 index 00000000000..01e3295d058 --- /dev/null +++ b/libs/docs/i18n/loading-translations/loading-translations-docs.component.html @@ -0,0 +1,16 @@ + Basic Usage + + @fundamental-ngx/i18n exports already translated messages for the {{ supportedLanguages }}. To use + them, you simply import FD_LANGUAGE_{{ '{' }}upperCase(languageName){{ '}' }} and provide it to the DI + context of your interest. + + + + + + Loading JSON + + You can also load the language from a JSON file. In order to do this, you will need to use the + loadJson helper function to properly transform the JSON into the FdLanguage interface. + + diff --git a/libs/docs/i18n/loading-translations/loading-translations-docs.component.ts b/libs/docs/i18n/loading-translations/loading-translations-docs.component.ts new file mode 100644 index 00000000000..8b16b964d27 --- /dev/null +++ b/libs/docs/i18n/loading-translations/loading-translations-docs.component.ts @@ -0,0 +1,88 @@ +import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { + CodeExampleComponent, + CodeSnippetComponent, + ComponentExampleComponent, + DescriptionComponent, + DocsSectionTitleComponent, + SeparatorComponent +} from '@fundamental-ngx/docs/shared'; + +@Component({ + templateUrl: './loading-translations-docs.component.html', + changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [ + DocsSectionTitleComponent, + DescriptionComponent, + CodeSnippetComponent, + SeparatorComponent, + ComponentExampleComponent, + CodeExampleComponent + ] +}) +export class LoadingTranslationsDocsComponent { + basicUsageExample = { + language: 'typescript', + code: `import { FD_LANGUAGE, FdLanguage, FD_LANGUAGE_UKRAINIAN } from '@fundamental-ngx/i18n'; + +// app.module +@NgModule({ + // ... + providers: [ + { + provide: FD_LANGUAGE, + useValue: of(FD_LANGUAGE_UKRAINIAN), + }, + ], +}) +export class AppModule {}` + }; + + jsonUsageExample = { + language: 'typescript', + code: ` +import { NgModule, inject } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { of, map } from 'rxjs'; +import { FD_LANGUAGE, FdLanguage, loadJson } from '@fundamental-ngx/i18n'; + +/** + * uk.json content + { + ...other properties + "coreMultiComboBox.selectAllLabel": "Select all label custom" + } +*/ + +@NgModule({ + // ... + providers: [ + { + provide: FD_LANGUAGE, + useFactory: () => { + return inject(HttpClient) + .get>('./assets/i18n/uk.json') + .pipe(map(loadJson)) + } + }, + ], +}) +export class AppModule {} + ` + }; + supportedLanguages = [ + 'Albanian', + 'Bulgarian', + 'Chinese', + 'Czech', + 'English', + 'French', + 'Georgian', + 'Hindi', + 'Italian', + 'Polish', + 'Russian', + 'Ukrainian' + ].join(', '); +} diff --git a/libs/docs/i18n/loading-translations/loading-translations-header/loading-translations-header.component.html b/libs/docs/i18n/loading-translations/loading-translations-header/loading-translations-header.component.html new file mode 100644 index 00000000000..4f6cacb7675 --- /dev/null +++ b/libs/docs/i18n/loading-translations/loading-translations-header/loading-translations-header.component.html @@ -0,0 +1,8 @@ +
Loading translations
+ + Components will load the English language by default. In order to use any other language, you will need to provide + an object that implements the Observable{{ '<' }}FdLanguage{{ '>' }} interface in the DI context of the + application. + + + diff --git a/libs/docs/i18n/loading-translations/loading-translations-header/loading-translations-header.component.ts b/libs/docs/i18n/loading-translations/loading-translations-header/loading-translations-header.component.ts new file mode 100644 index 00000000000..efc6e632eb8 --- /dev/null +++ b/libs/docs/i18n/loading-translations/loading-translations-header/loading-translations-header.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; +import { RouterOutlet } from '@angular/router'; +import { DescriptionComponent, HeaderComponent } from '@fundamental-ngx/docs/shared'; + +@Component({ + templateUrl: './loading-translations-header.component.html', + standalone: true, + imports: [HeaderComponent, DescriptionComponent, RouterOutlet] +}) +export class LoadingTranslationsHeaderComponent {} diff --git a/libs/docs/i18n/examples/i18n-translation-customization-example/i18n-translation-customization-example.component.html b/libs/docs/i18n/patching-translations/examples/i18n-translation-customization-example/i18n-translation-customization-example.component.html similarity index 100% rename from libs/docs/i18n/examples/i18n-translation-customization-example/i18n-translation-customization-example.component.html rename to libs/docs/i18n/patching-translations/examples/i18n-translation-customization-example/i18n-translation-customization-example.component.html diff --git a/libs/docs/i18n/examples/i18n-translation-customization-example/i18n-translation-customization-example.component.ts b/libs/docs/i18n/patching-translations/examples/i18n-translation-customization-example/i18n-translation-customization-example.component.ts similarity index 100% rename from libs/docs/i18n/examples/i18n-translation-customization-example/i18n-translation-customization-example.component.ts rename to libs/docs/i18n/patching-translations/examples/i18n-translation-customization-example/i18n-translation-customization-example.component.ts diff --git a/libs/docs/i18n/examples/i18n-translation-customization-example/translation-wrapper-1.component.ts b/libs/docs/i18n/patching-translations/examples/i18n-translation-customization-example/translation-wrapper-1.component.ts similarity index 97% rename from libs/docs/i18n/examples/i18n-translation-customization-example/translation-wrapper-1.component.ts rename to libs/docs/i18n/patching-translations/examples/i18n-translation-customization-example/translation-wrapper-1.component.ts index ff95a926992..dd87671f64a 100644 --- a/libs/docs/i18n/examples/i18n-translation-customization-example/translation-wrapper-1.component.ts +++ b/libs/docs/i18n/patching-translations/examples/i18n-translation-customization-example/translation-wrapper-1.component.ts @@ -12,7 +12,7 @@ import { patchLanguage } from '@fundamental-ngx/i18n'; // also function can be used to provide complex translation logic platformTextarea: { counterMessageCharactersRemainingSingular: 'You can type 1 more character', - counterMessageCharactersRemainingPlural: 'You can type {{ count }} more characters', + counterMessageCharactersRemainingPlural: 'You can type { count } more characters', counterMessageCharactersOverTheLimitPlural: (params) => { switch (+params.count) { case 2: diff --git a/libs/docs/i18n/examples/i18n-translation-customization-example/translation-wrapper-2.component.ts b/libs/docs/i18n/patching-translations/examples/i18n-translation-customization-example/translation-wrapper-2.component.ts similarity index 86% rename from libs/docs/i18n/examples/i18n-translation-customization-example/translation-wrapper-2.component.ts rename to libs/docs/i18n/patching-translations/examples/i18n-translation-customization-example/translation-wrapper-2.component.ts index 1bc5d34075c..3f0fb770c0c 100644 --- a/libs/docs/i18n/examples/i18n-translation-customization-example/translation-wrapper-2.component.ts +++ b/libs/docs/i18n/patching-translations/examples/i18n-translation-customization-example/translation-wrapper-2.component.ts @@ -22,9 +22,9 @@ import { PlatformTextAreaModule } from '@fundamental-ngx/platform/form'; patchLanguage({ platformTextarea: { counterMessageCharactersOverTheLimitSingular: '1 Zeichen über dem Limit', - counterMessageCharactersOverTheLimitPlural: '{{ count }} Zeichen über dem Limit', + counterMessageCharactersOverTheLimitPlural: '{ count } Zeichen über dem Limit', counterMessageCharactersRemainingSingular: '1 Zeichen übrig', - counterMessageCharactersRemainingPlural: '{{ count }} Zeichen übrig' + counterMessageCharactersRemainingPlural: '{ count } Zeichen übrig' } }) ], diff --git a/libs/docs/i18n/patching-translations/index.ts b/libs/docs/i18n/patching-translations/index.ts new file mode 100644 index 00000000000..83f4f365fb8 --- /dev/null +++ b/libs/docs/i18n/patching-translations/index.ts @@ -0,0 +1,20 @@ +import { Routes } from '@angular/router'; + +export const LIBRARY_NAME = 'patching-translations'; +export const ROUTES: Routes = [ + { + path: '', + loadComponent: () => + import('./patching-translations-header/patching-translations-header.component').then( + (c) => c.PatchingTranslationsHeaderComponent + ), + data: { primary: true }, + children: [ + { + path: '', + loadComponent: () => + import('./patching-translations-docs.component').then((c) => c.PatchingTranslationsDocsComponent) + } + ] + } +]; diff --git a/libs/docs/i18n/patching-translations/patching-translations-docs.component.html b/libs/docs/i18n/patching-translations/patching-translations-docs.component.html new file mode 100644 index 00000000000..3839a4c212d --- /dev/null +++ b/libs/docs/i18n/patching-translations/patching-translations-docs.component.html @@ -0,0 +1,24 @@ + + Customizing language per component + + +

+ In order to provide language customizations on a component-by-component basis, use the + fdLanguagePatch directive. You will also need to import the + @fundamental-ngx/i18n module. +

+

+ It is also possible to easily override the global language for a certain component by providing + FD_LANGUAGE token at any child scope. Use the patchLanguage utility function for this. +

+

+ Note: you should understand that providing an injection token in a certain module will affect the scope + where this module is imported. Thus it's recommended to provide overrides on the level of components or lazy + loaded modules. +

+
+ + + + + diff --git a/libs/docs/i18n/patching-translations/patching-translations-docs.component.ts b/libs/docs/i18n/patching-translations/patching-translations-docs.component.ts new file mode 100644 index 00000000000..ef8caeaff44 --- /dev/null +++ b/libs/docs/i18n/patching-translations/patching-translations-docs.component.ts @@ -0,0 +1,61 @@ +import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { + CodeExampleComponent, + CodeSnippetComponent, + ComponentExampleComponent, + DescriptionComponent, + DocsSectionTitleComponent, + ExampleFile, + SeparatorComponent, + getAssetFromModuleAssets +} from '@fundamental-ngx/docs/shared'; +import { PlatformI18nTranslationCustomizationExampleComponent } from './examples/i18n-translation-customization-example/i18n-translation-customization-example.component'; + +@Component({ + templateUrl: './patching-translations-docs.component.html', + changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [ + DocsSectionTitleComponent, + DescriptionComponent, + CodeSnippetComponent, + SeparatorComponent, + ComponentExampleComponent, + CodeExampleComponent, + PlatformI18nTranslationCustomizationExampleComponent + ] +}) +export class PatchingTranslationsDocsComponent { + translationCustomizationExampleFiles: ExampleFile[] = [ + { + language: 'html', + code: getAssetFromModuleAssets( + 'i18n-translation-customization-example/i18n-translation-customization-example.component.html' + ), + fileName: 'i18n-translation-customization-example' + }, + { + language: 'typescript', + component: 'PlatformI18nTranslationCustomizationExampleComponent', + code: getAssetFromModuleAssets( + 'i18n-translation-customization-example/i18n-translation-customization-example.component.ts' + ), + fileName: 'i18n-translation-customization-example', + name: 'Host component' + }, + { + language: 'typescript', + component: 'TranslationWrapper1Component', + code: getAssetFromModuleAssets('i18n-translation-customization-example/translation-wrapper-1.component.ts'), + fileName: 'translation-wrapper-1', + name: 'Wrapper component 1' + }, + { + language: 'typescript', + component: 'TranslationWrapper2Component', + code: getAssetFromModuleAssets('i18n-translation-customization-example/translation-wrapper-2.component.ts'), + fileName: 'translation-wrapper-2', + name: 'Wrapper component 2' + } + ]; +} diff --git a/libs/docs/i18n/patching-translations/patching-translations-header/patching-translations-header.component.html b/libs/docs/i18n/patching-translations/patching-translations-header/patching-translations-header.component.html new file mode 100644 index 00000000000..30ed3b1797d --- /dev/null +++ b/libs/docs/i18n/patching-translations/patching-translations-header/patching-translations-header.component.html @@ -0,0 +1,7 @@ +
Patching translations
+ + There are cases when you might want to change the translations under a certain context only, for those cases + @fundamental-ngx/i18n exports helpful functions and directives. + + + diff --git a/libs/docs/i18n/patching-translations/patching-translations-header/patching-translations-header.component.ts b/libs/docs/i18n/patching-translations/patching-translations-header/patching-translations-header.component.ts new file mode 100644 index 00000000000..4c1706c09eb --- /dev/null +++ b/libs/docs/i18n/patching-translations/patching-translations-header/patching-translations-header.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; +import { RouterOutlet } from '@angular/router'; +import { DescriptionComponent, HeaderComponent } from '@fundamental-ngx/docs/shared'; + +@Component({ + templateUrl: './patching-translations-header.component.html', + standalone: true, + imports: [HeaderComponent, DescriptionComponent, RouterOutlet] +}) +export class PatchingTranslationsHeaderComponent {} diff --git a/libs/docs/i18n/platform-i18n-docs.component.html b/libs/docs/i18n/platform-i18n-docs.component.html deleted file mode 100644 index 8b954a3a727..00000000000 --- a/libs/docs/i18n/platform-i18n-docs.component.html +++ /dev/null @@ -1,74 +0,0 @@ - Basic usage - - Components will load the English language by default. In order to use any other language, you will need to provide - an object that implements the FdLanguage interface in the root of your app. - - - - - - - Customizing language per component - - -

- In order to provide language customizations on a component-by-component basis, use the - fdLanguagePatch directive. You will also need to import the - @fundamental-ngx/i18n module. -

-

- It is also possible to easily override the global language for a certain component by providing - FD_LANGUAGE token at any child scope. Use the patchLanguage utility function for this. -

-

- Note: you should understand that providing an injection token in a certain module will affect the scope - where this module is imported. Thus it's recommended to provide overrides on the level of components or lazy - loaded modules. -

-
- - - - - - - Changing languages at runtime - -

- The FD_LANGUAGE token is an observable, which means you can change the language at runtime using - your own logic. -

-

- In this particular example such capabilities are shown on the level of a component due to the limitations of the - example itself. The same scenario can and should be used in the root of your app. -

-
- - - - - - - - - Creating custom translations - - -

- Although fundamental-ngx library provides a rich set of languages to work with out of the box, it's - possible to also define your own languages when needed. The language object is just a set of key/values, that - are defined per component. This object should implement FdLanguage interface. -

-

- You may provide both strings with interpolation using double curly brackets ( - {{ '{{ paramName }}' }}) or functions as language values. -

-

- The list of available keys can be found in the corresponding docs section of each component. The I18n section is - visible only for the components that have translations. The default English value for each translation is also - in this documentation. -

- - -
diff --git a/libs/docs/i18n/translation-resolver/examples/basic-usage-example.component.ts b/libs/docs/i18n/translation-resolver/examples/basic-usage-example.component.ts new file mode 100644 index 00000000000..a2e4c94c493 --- /dev/null +++ b/libs/docs/i18n/translation-resolver/examples/basic-usage-example.component.ts @@ -0,0 +1,43 @@ +import { AsyncPipe } from '@angular/common'; +import { Component, inject } from '@angular/core'; +import { FD_LANGUAGE, FD_LANGUAGE_ENGLISH, TranslationResolver } from '@fundamental-ngx/i18n'; +import { BehaviorSubject, map } from 'rxjs'; + +@Component({ + selector: 'fd-translation-resolver-basic-usage-example', + template: ` +
+ Async resolve of the translation +
+ + {{ coreDatePickerDateInputLabel$ | async }} + +
+
+ Sync resolve of the translation +
+ + {{ coreDatePickerDateInputLabel }} + +
+ `, + standalone: true, + imports: [AsyncPipe], + providers: [ + { + provide: FD_LANGUAGE, + useValue: new BehaviorSubject(FD_LANGUAGE_ENGLISH) + } + ] +}) +export class BasicUsageExampleComponent { + lang$ = inject(FD_LANGUAGE); + translationResolver = new TranslationResolver(); + coreDatePickerDateInputLabel$ = this.lang$.pipe( + map((lang) => this.translationResolver.resolve(lang, 'coreDatePicker.dateInputLabel')) + ); + coreDatePickerDateInputLabel = this.translationResolver.resolve( + FD_LANGUAGE_ENGLISH, + 'coreDatePicker.dateInputLabel' + ); +} diff --git a/libs/docs/i18n/translation-resolver/examples/using-translation-pipe-example.component.ts b/libs/docs/i18n/translation-resolver/examples/using-translation-pipe-example.component.ts new file mode 100644 index 00000000000..b4121662cc7 --- /dev/null +++ b/libs/docs/i18n/translation-resolver/examples/using-translation-pipe-example.component.ts @@ -0,0 +1,17 @@ +import { Component } from '@angular/core'; +import { FD_LANGUAGE, FD_LANGUAGE_ENGLISH, FdTranslatePipe } from '@fundamental-ngx/i18n'; +import { BehaviorSubject } from 'rxjs'; + +@Component({ + selector: 'fd-using-translation-pipe-example', + template: `Resolved with pipe: {{ 'coreDatePicker.dateInputLabel' | fdTranslate }}`, + standalone: true, + imports: [FdTranslatePipe], + providers: [ + { + provide: FD_LANGUAGE, + useValue: new BehaviorSubject(FD_LANGUAGE_ENGLISH) + } + ] +}) +export class UsingTranslationPipeExampleComponent {} diff --git a/libs/docs/i18n/translation-resolver/examples/using-utility-functions-example.component.ts b/libs/docs/i18n/translation-resolver/examples/using-utility-functions-example.component.ts new file mode 100644 index 00000000000..c526daeb16d --- /dev/null +++ b/libs/docs/i18n/translation-resolver/examples/using-utility-functions-example.component.ts @@ -0,0 +1,76 @@ +import { AsyncPipe } from '@angular/common'; +import { Component } from '@angular/core'; +import { FD_LANGUAGE, FD_LANGUAGE_ENGLISH, resolveTranslation, resolveTranslation$ } from '@fundamental-ngx/i18n'; +import { BehaviorSubject } from 'rxjs'; + +@Component({ + selector: 'fd-translation-resolver-using-utility-functions-example', + template: ` +
+ Async resolve of the translation +
+ + {{ coreDatePickerDateInputLabel$ | async }} + +
+
+ Sync resolve of the translation +
+ + {{ coreDatePickerDateInputLabel }} + +
+ +
+ + Async resolve of the translation with a function call after injection context + +
+ + {{ resolveTranslation$('coreDatePicker.dateInputLabel') | async }} + +
+ +
+ + Sync resolve of the translation with a function call after injection context + +
+ + {{ resolveTranslation('coreDatePicker.dateInputLabel') }} + +
+ `, + standalone: true, + imports: [AsyncPipe], + providers: [ + { + provide: FD_LANGUAGE, + useValue: new BehaviorSubject(FD_LANGUAGE_ENGLISH) + } + ] +}) +export class UsingUtilityFunctionsExampleComponent { + /** + * Async resolve of the translation. It takes FD_LANGUAGE from the DI token and returns an observable. + */ + coreDatePickerDateInputLabel$ = resolveTranslation$('coreDatePicker.dateInputLabel'); + /** + * Sync resolve of the translation. It takes FD_LANGUAGE from the DI token, subscribes to it + * and returns a string available at the moment of the function call. + */ + coreDatePickerDateInputLabel = resolveTranslation('coreDatePicker.dateInputLabel'); + + /** + * if resolveTranslation$ is called without any parameters, it returns a function, + * which can be used outside the injection context and will be bound to the current DI FD_LANGUAGE instance + * and will return an observable of the translation. + */ + resolveTranslation$ = resolveTranslation$(); + /** + * if resolveTranslation is called without any parameters, it returns a function, + * which can be used outside the injection context and will be bound to the current DI FD_LANGUAGE instance + * latest value and will return a string of the translation. + */ + resolveTranslation = resolveTranslation(); +} diff --git a/libs/docs/i18n/translation-resolver/index.ts b/libs/docs/i18n/translation-resolver/index.ts new file mode 100644 index 00000000000..2ec7846b69a --- /dev/null +++ b/libs/docs/i18n/translation-resolver/index.ts @@ -0,0 +1,21 @@ +import { Routes } from '@angular/router'; + +export const ROUTES: Routes = [ + { + path: '', + loadComponent: () => + import('./translation-resolver-header/translation-resolver-header.component').then( + (c) => c.TranslationResolverHeaderComponent + ), + data: { primary: true }, + children: [ + { + path: '', + loadComponent: () => + import('./translation-resolver-docs.component').then((c) => c.TranslationResolverDocsComponent) + } + ] + } +]; + +export const LIBRARY_NAME = 'translation-resolver'; diff --git a/libs/docs/i18n/translation-resolver/translation-resolver-docs.component.html b/libs/docs/i18n/translation-resolver/translation-resolver-docs.component.html new file mode 100644 index 00000000000..88c731640c6 --- /dev/null +++ b/libs/docs/i18n/translation-resolver/translation-resolver-docs.component.html @@ -0,0 +1,43 @@ + Basic Usage + + You can resolve translations using the TranslationResolver class and a FdLanguage + object any time + + + + + + + + + Using utility functions + +

+ You can resolve translations using the utility functions as well, which are available globally and should be + used inside the + + dependency injection context + +

+ + The observable, returned by the resolveTranslation$ function will get automatically unsubscribed + when the injection context, where it was used, gets destroyed. + +
+ + + + + + + + Using fdTranslate pipe + +

You can resolve provided translations using the fdTranslate pipe

+
+ + + + + + diff --git a/libs/docs/i18n/translation-resolver/translation-resolver-docs.component.ts b/libs/docs/i18n/translation-resolver/translation-resolver-docs.component.ts new file mode 100644 index 00000000000..aec9fb09257 --- /dev/null +++ b/libs/docs/i18n/translation-resolver/translation-resolver-docs.component.ts @@ -0,0 +1,44 @@ +import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { LinkComponent } from '@fundamental-ngx/core/link'; +import { MessageStripComponent } from '@fundamental-ngx/core/message-strip'; +import { + CodeExampleComponent, + CodeSnippetComponent, + ComponentExampleComponent, + DescriptionComponent, + DocsSectionTitleComponent, + ExampleFile, + SeparatorComponent, + getExampleFile +} from '@fundamental-ngx/docs/shared'; +import { BasicUsageExampleComponent } from './examples/basic-usage-example.component'; +import { UsingTranslationPipeExampleComponent } from './examples/using-translation-pipe-example.component'; +import { UsingUtilityFunctionsExampleComponent } from './examples/using-utility-functions-example.component'; + +@Component({ + templateUrl: './translation-resolver-docs.component.html', + changeDetection: ChangeDetectionStrategy.OnPush, + standalone: true, + imports: [ + DocsSectionTitleComponent, + DescriptionComponent, + CodeSnippetComponent, + SeparatorComponent, + ComponentExampleComponent, + CodeExampleComponent, + BasicUsageExampleComponent, + UsingUtilityFunctionsExampleComponent, + LinkComponent, + MessageStripComponent, + UsingTranslationPipeExampleComponent + ] +}) +export class TranslationResolverDocsComponent { + basicTranslationResolverExampleFiles: ExampleFile[] = [getExampleFile('basic-usage-example.component.ts')]; + + utilityTranslationResolverExampleFiles: ExampleFile[] = [ + getExampleFile('using-utility-functions-example.component.ts') + ]; + + usingTranslationPipeExampleFiles: ExampleFile[] = [getExampleFile('using-translation-pipe-example.component.ts')]; +} diff --git a/libs/docs/i18n/translation-resolver/translation-resolver-header/translation-resolver-header.component.html b/libs/docs/i18n/translation-resolver/translation-resolver-header/translation-resolver-header.component.html new file mode 100644 index 00000000000..9faa42b00d7 --- /dev/null +++ b/libs/docs/i18n/translation-resolver/translation-resolver-header/translation-resolver-header.component.html @@ -0,0 +1,7 @@ +
Translation resolver
+ + Loaded translations are accessible in the components and services under the DI context using the + TranslationResolver class. + + + diff --git a/libs/docs/i18n/translation-resolver/translation-resolver-header/translation-resolver-header.component.ts b/libs/docs/i18n/translation-resolver/translation-resolver-header/translation-resolver-header.component.ts new file mode 100644 index 00000000000..d9cf54fe0e8 --- /dev/null +++ b/libs/docs/i18n/translation-resolver/translation-resolver-header/translation-resolver-header.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; +import { RouterOutlet } from '@angular/router'; +import { DescriptionComponent, HeaderComponent } from '@fundamental-ngx/docs/shared'; + +@Component({ + templateUrl: './translation-resolver-header.component.html', + standalone: true, + imports: [HeaderComponent, DescriptionComponent, RouterOutlet] +}) +export class TranslationResolverHeaderComponent {} diff --git a/libs/docs/i18n/writing-translations.component.ts b/libs/docs/i18n/writing-translations.component.ts new file mode 100644 index 00000000000..9ef06c35c7e --- /dev/null +++ b/libs/docs/i18n/writing-translations.component.ts @@ -0,0 +1,141 @@ +/* eslint-disable max-len */ +import { Component } from '@angular/core'; +import { RouterLink } from '@angular/router'; +import { LinkComponent } from '@fundamental-ngx/core/link'; +import { + CodeExampleComponent, + CodeSnippetComponent, + DescriptionComponent, + DocsSectionTitleComponent, + ExampleFile, + HeaderComponent +} from '@fundamental-ngx/docs/shared'; + +@Component({ + template: ` +
Writing translations
+ +

+ Translations consist of two parts: the translation identifier and the translation itself. The + translation identifier is a string that is used to identify the translation. The translation itself is + the string that is displayed to the user. +

+

+ The format in which the translation is written depends on the type of the loader. If you are loading + translations from a JavaScript object, then it can be a function too, along with a string. +

+

+ Let's take example from Platform Upload collection translation identifiers. They have a prefix + platformUploadCollection. Whole list of the identifiers can be found in the + upload collection i18n documentation page. + For the sake of the example, let's take a small list of them from English translations file: +

+ +

+ Here, in the list above, we see 4 translation variants: a simple string, a string with a placeholder, + with internal references and + ICU expression +

+

+ If you'd loaded translation strings using the JavaScript object, you'd have access to functions as well + and above example would take the following form: +

+ +

+ The JavaScript object is a valid translation source, but it is not the most convenient one if you want + to translate your application using a translation service. For that, you need to use format, which is + represented by the raw strings in the example above. The format is called + ICU Message Syntax, and it is a standard for the translation strings. It is supported by most of the translation + services, and it is the recommended format for the translations. +

+

+ Our translation interpolations are using + formatjs + library, which is the most popular ICU Message Syntax implementation for JavaScript. +

+
+ + How does internal references work? + + +

+ Internal references are used to reference other translations. When our translations resolver finds a + reference, it tries to find the translation for the reference and replace the reference with the + translation, if it is found. Then it assembles one big ICU Message Syntax string and passes it to the + formatjs library for the interpolation. One thing to note is that if referenced translation needs some + context, then the context is also needed for the referee translation. For example, if we have a + translation + platformUploadCollection.folderNamePluralization + and it is referenced in another translation + platformUploadCollection.messageRemoveFoldersAndFilesFailed + , then the + platformUploadCollection.messageRemoveFoldersAndFilesFailed + translation needs to have minimum the same context as the + platformUploadCollection.folderNamePluralization + translation, otherwise the interpolation will fail. +

+
+ + How to escape {{ '{' }} and {{ '}' }} characters? + + +

+ If you need to use {{ '{' }} or {{ '}' }} characters in your translation, you + need to wrap them in single or double quotes. +

+

+ For example, if your translation needs to be {{ fromToCodeTranslation }} and your contexts + are from and to, then your translation will look like this: + {{ fromToCode }} +

+
+ `, + imports: [ + HeaderComponent, + DescriptionComponent, + RouterLink, + LinkComponent, + CodeExampleComponent, + CodeSnippetComponent, + DocsSectionTitleComponent + ], + standalone: true +}) +export class WritingTranslationsComponent { + fromToCode = "'{'{from}'}'-'{'{to}'}'"; + fromToCodeTranslation = '{0-12}'; + jsonExample: ExampleFile = { + language: 'json', + code: `{ + "platformUploadCollection.folderNamePluralization": "{folderCount, plural, =1 {1 folder} other {# folders}}", + "platformUploadCollection.fileNamePluralization": "{filesCount, plural, =1 {1 file} other {# files}}", + "platformUploadCollection.removeBtnLabel": "Remove", + "platformUploadCollection.messageUpdateVersionSuccess": "{folderName} version has been updated.", + "platformUploadCollection.messageRemoveFoldersAndFilesFailed": "Failed to remove {@@platformUploadCollection.folderNamePluralization} and {@@platformUploadCollection.fileNamePluralization} files." +}` + }; + jsExample: ExampleFile = { + language: 'js', + code: `const folderNamePluralization = ({folderCount}) => { + return folderCount === 1 ? '1 folder' : \`\${folderCount} folders\`; +}; + +const fileNamePluralization = ({filesCount}) => { + return filesCount === 1 ? '1 file' : \`\${filesCount} files\`; +}; + +const platformUploadCollection = { + folderNamePluralization, + fileNamePluralization, + removeBtnLabel: 'Remove', + messageUpdateVersionSuccess: ({folderName}) => \`\${folderName} version has been updated.\`, + messageRemoveFoldersAndFilesFailed: ({folderName, fileName}) => { + const folders = folderNamePluralization({folderName}); + const files = fileNamePluralization({fileName}); + return \`Failed to remove \${folders} and \${files} files.\`; + } +};` + }; +} diff --git a/libs/docs/platform/docs-routes.ts b/libs/docs/platform/docs-routes.ts index ea8ddf0f22f..f88dd221edc 100755 --- a/libs/docs/platform/docs-routes.ts +++ b/libs/docs/platform/docs-routes.ts @@ -33,10 +33,6 @@ export const ROUTES: Routes = [ loadComponent: () => import('@fundamental-ngx/docs/shared-pages').then((m) => m.NewComponentPageComponent) }, - { - path: 'i18n', - loadChildren: () => import('@fundamental-ngx/docs/i18n').then((m) => m.ROUTES) - }, { path: 'button', loadChildren: () => import('@fundamental-ngx/docs/platform/button').then(configurePlatformRoutes) diff --git a/libs/docs/shared/src/lib/core-helpers/toolbar/toolbar.component.ts b/libs/docs/shared/src/lib/core-helpers/toolbar/toolbar.component.ts index bdf307c2a1d..5570ebbda4b 100644 --- a/libs/docs/shared/src/lib/core-helpers/toolbar/toolbar.component.ts +++ b/libs/docs/shared/src/lib/core-helpers/toolbar/toolbar.component.ts @@ -154,6 +154,12 @@ export class ToolbarDocsComponent implements OnInit, OnDestroy { callback: () => { this._routerService.navigate(['cdk/home']); } + }, + { + name: 'i18n', + callback: () => { + this._routerService.navigate(['i18n/home']); + } } ]; diff --git a/libs/i18n/README.md b/libs/i18n/README.md index 6494d2a7256..ada5c6ad6f5 100644 --- a/libs/i18n/README.md +++ b/libs/i18n/README.md @@ -1,7 +1,52 @@ -# i18n +# @fundamental-ngx/i18n -This library was generated with [Nx](https://nx.dev). +[![npm version](https://badge.fury.io/js/%40fundamental-ngx%2Fcdk.svg)](//www.npmjs.com/package/@fundamental-ngx/cdk) +![Build Status](https://github.com/SAP/fundamental-ngx/actions/workflows/create-release.yml/badge.svg?branch=main) +![npm](https://img.shields.io/npm/dm/@fundamental-ngx/cdk?label=npm%20downloads) +[![Slack](https://img.shields.io/badge/slack-ui--fundamentals-blue.svg?logo=slack)](https://ui-fundamentals.slack.com) +[![REUSE status](https://api.reuse.software/badge/github.com/SAP/fundamental-ngx)](https://api.reuse.software/info/github.com/SAP/fundamental-ngx) -## Running unit tests +## Content -Run `nx test i18n` to execute the unit tests. +- [1. Description](#1-description) +- [2. Requirements](#2-requirements) +- [3. Versioning](#3-versioning) +- [4. Known Issues](#4-known-issues) +- [5. Support](#5-support) +- [6. Contributing](#6-contributing) + +## 1. Description + +`@fundamental-ngx/i18n` is a library that provides translation utilities for the Fundamental-ngx library. +The library is tailored for the use in `fundamental-ngx` components and can be used for modifying the variety of the +components' labels, hints, and descriptions. + +Even though the library is tailored for the use in `fundamental-ngx` components, it can be used in any Angular application, +where the simple translations are needed. + +The library elements are for the runtime, which gives the possibility to swap the translations on the fly, without +having to refresh the pages. + +## 2. Requirements + +To download and use Fundamental Library i18n package, you will first need to install +the [node package manager](https://www.npmjs.com/get-npm). The library is intended for use with +Angular 16.2 or newer. Prior knowledge of Angular is recommended, to use it fully library. + +## 3. Versioning + +Check the [Breaking Changes](https://github.com/SAP/fundamental-ngx/wiki#breaking-changes) for the latest patches changes. + +## 4. Known Issues + +Please see [Issues](https://github.com/SAP/fundamental-ngx/issues). + +## 5. Support + +If you encounter an issue, you can [create a ticket](https://github.com/SAP/fundamental-ngx/issues). + +## 6. Contributing + +If you want to contribute, please check the [CONTRIBUTING.md](https://github.com/SAP/fundamental-ngx/blob/main/CONTRIBUTING.md) documentation for contribution guidelines. Please follow the [Angular commit message guidelines](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#commit). + +Check out the [NEW_COMPONENT.md](https://github.com/SAP/fundamental-ngx/blob/main/NEW_COMPONENT.md) guide on building a new component for the library and creating the necessary documentation for your new component. diff --git a/libs/i18n/src/lib/directives/patch-language.directive.ts b/libs/i18n/src/lib/directives/patch-language.directive.ts index 2b6c83ea33f..3995887d013 100644 --- a/libs/i18n/src/lib/directives/patch-language.directive.ts +++ b/libs/i18n/src/lib/directives/patch-language.directive.ts @@ -4,6 +4,7 @@ import { BehaviorSubject, Observable, Subject, combineLatest } from 'rxjs'; import { map, takeUntil } from 'rxjs/operators'; import { FD_LANGUAGE_ENGLISH } from '../languages'; import { FdLanguage, FdLanguagePatch } from '../models'; +import { patchedObj } from '../utils'; import { FD_LANGUAGE } from '../utils/tokens'; @Directive({ @@ -34,7 +35,9 @@ export class FdPatchLanguageDirective implements OnDestroy { ) { combineLatest([parentFdLanguage$, this._languagePatch$]) .pipe( - map(([parentLang, languagePatch]) => merge(cloneDeep(parentLang), languagePatch)), + map(([parentLang, languagePatch]) => + merge(cloneDeep(parentLang), patchedObj(parentLang, languagePatch || {})) + ), takeUntil(this._onDestroy$) ) .subscribe((translation) => fdLanguageSubject$.next(translation)); diff --git a/libs/i18n/src/lib/languages/albanian.ts b/libs/i18n/src/lib/languages/albanian.ts index 2321df002dc..3898d2ecf38 100644 --- a/libs/i18n/src/lib/languages/albanian.ts +++ b/libs/i18n/src/lib/languages/albanian.ts @@ -1,626 +1,4 @@ -import { FdLanguage } from '../models/lang'; +import json from '../translations/translations_sq-AL.json'; +import { loadJson } from '../utils/load-json'; -/** - * Default set of translations of Fundamental UI libarary for Albanian language - */ -export const FD_LANGUAGE_ALBANIAN: FdLanguage = { - coreMultiComboBox: { - selectAllLabel: 'Selekto të gjitha ({selectedItems} nga {totalItems})' - }, - coreCarousel: { - leftNavigationBtnLabel: 'Shko te artikulli i mëparshëm', - rightNavigationBtnLabel: 'Shko te artikulli tjetër' - }, - coreDatePicker: { - dateInputLabel: 'Hyrja e datës', - dateRangeInputLabel: 'Hyrja e diapazonit të datave', - displayCalendarToggleLabel: 'Hap zgjedhës', - valueStateSuccessMessage: 'Suksesi i gjendjes së vlerës', - valueStateInformationMessage: 'Informacioni i gjendjes së vlerës', - valueStateWarningMessage: 'Paralajmërimi i gjendjes së vlerës', - valueStateErrorMessage: 'Gabim i gjendjes së vlerës' - }, - coreDatetimePicker: { - datetimeInputLabel: 'Hyrja e datës', - displayDatetimeToggleLabel: 'Shfaq ndryshimin e kalendarit', - displayTypeDateLabel: 'Data', - displayTypeTimeLabel: 'Koha', - datetimeOkLabel: 'Ok', - datetimeCancelLabel: 'Anulo' - }, - coreFeedListItem: { - moreLabel: 'Më shumë', - lessLabel: 'Më pak' - }, - coreGridList: { - filterBarCancelButtonTitle: 'Anulo', - listItemStatusAriaLabel: 'Artikulli ka status. Statusi: {status}.', - listItemCounterAriaLabel: 'Artikulli ka {count} nënartikuj.', - listItemButtonDetailsTitle: 'Detaje', - listItemButtonDeleteTitle: 'Fshi', - listItemStatusContainsErrors: 'Përmban gabime.', - listItemStatusLocked: 'I kyçur', - listItemStatusDraft: 'Draft' - }, - coreMessageStrip: { - dismissLabel: 'Largoje' - }, - coreMultiInput: { - multiInputAriaLabel: 'Multi Value Input', - tokensCountText: 'Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.' - }, - coreNavigation: { - mainNavigation: 'Main Navigation', - navigationPath: 'Navigation Path' - }, - coreNestedList: { - linkItemAriaLabel: 'Artikulli i pemës {itemDetails}, {index} nga {total}{selectedDescription}' - }, - coreOverflowLayout: { - moreItemsButton: '{count} artikuj { count, plural, one {më shumë} other {të tjerë} }' - }, - corePagination: { - pageLabel: 'Faqja {pageNumber}', - currentPageAriaLabel: 'Faqja {pageNumber} është faqja aktuale', - labelBeforeInputMobile: 'Faqja:', - labelAfterInputMobile: 'nga {totalCount}', - inputAriaLabel: 'Hyrja e faqes, Faqja aktuale, Faqja {pageNumber} nga {TotalCount}', - itemsPerPageLabel: 'Rezultatet për faqe:', - firstLabel: 'Së pari', - previousLabel: 'E mëparshme', - nextLabel: 'Tjetër', - lastLabel: 'E fundit', - ariaLabel: 'Faqimi', - totalResultsLabel: '{totalCount} Rezultate' - }, - coreProductSwitch: { - ariaLabel: 'Ndërprerësi i produktit' - }, - coreShellbar: { - collapsedItemMenuLabel: 'Menyja e artikullit të palosur', - cancel: 'Cancel', - search: 'Search' - }, - coreSlider: { - singleMinMaxDetails: 'Vlera minimale e rrëshqitësit është {min}, vlera maksimale është {max}', - singleValueminDetails: 'Vlera është {value}', - singleValuemaxDetails: 'Vlera është {value}', - singleValueNowDetails: 'Vlera aktuale është {value}', - multipleHandle1MinMaxDetails: 'Vlera minimale e rrëshqitësit është {min}, vlera maksimale është {max}', - multipleHandle1ValueminDetails: 'Vlera është {value}', - multipleHandle1ValuemaxDetails: 'Vlera është {value}', - multipleHandle1ValueNowDetails: 'Vlera aktuale është{value}', - multipleHandle2MinMaxDetails: 'Vlera minimale e rrëshqitësit është {min}, vlera maksimale është{max}', - multipleHandle2ValueminDetails: 'Vlera është {value}', - multipleHandle2ValuemaxDetails: 'Vlera është {value}', - multipleHandle2ValueNowDetails: 'Vlera aktuale është {value}' - }, - coreSplitButton: { - expandButtonAriaLabel: 'Më shumë veprime', - arialLabel: 'Butoni i ndarjes' - }, - coreSplitter: { - paginationItemAriaLabel: 'Seksioni' - }, - coreStepInput: { - incrementButtonTitle: 'Rritje', - decrementButtonTitle: 'Zvogëlimi', - ariaRoleDescription: 'Hyrja në hap' - }, - coreSwitch: { - semanticAcceptLabel: 'Pranoje', - semanticDeclineLabel: 'Rënia' - }, - coreTabs: { - tabListExpandButtonText: 'Më shumë' - }, - coreText: { - moreLabel: 'Më shumë', - lessLabel: 'Më pak' - }, - coreTime: { - componentAriaName: 'Zgjedhësi i kohës', - increaseHoursLabel: 'Rritja e orëve', - hoursLabel: 'Hrs', - decreaseHoursLabel: 'Ul oraret', - increaseMinutesLabel: 'Rritja e minutave', - minutesLabel: 'Min', - decreaseMinutesLabel: 'Zvogëlo minutat', - increaseSecondsLabel: 'Rritja e sekondave', - secondsLabel: 'Sec', - decreaseSecondsLabel: 'Ul sekonda', - increasePeriodLabel: 'Rritja e periudhës', - periodLabel: 'Periudha', - decreasePeriodLabel: 'Periudha e zvogëlimit', - navigationInstruction: - 'Për të lëvizur midis artikujve në këtë listë, shtypni shigjetën lart ose shigjetën e poshtme. ' + - 'Për të kaluar midis listave, shtypni shigjetën majtas ose shigjetën djathtas.' - }, - coreTimePicker: { - timePickerInputLabel: 'Hyrja e zgjedhësit të kohës', - timePickerButtonLabel: 'Zgjedhësi i hapur' - }, - coreToken: { - deleteButtonLabel: 'E fshishme', - ariaRoleDescription: 'shenjë' - }, - coreTokenizer: { - moreLabel: '{count} artikuj { count, plural, one {më shumë} other {të tjerë} }' - }, - coreUploadCollection: { - menuOkText: 'Ok', - menuCancelText: 'Anulo', - menuEditAriaLabel: 'Ndrysho', - menuDeleteAriaLabel: 'Fshi', - menuOkAriaLabel: 'Ndrysho', - menuCancelAriaLabel: 'Anulo', - formItemPlaceholder: 'Emri i skedarit' - }, - coreWizard: { - ariaLabel: 'Magjistar' - }, - coreBreadcrumb: { - overflowTitleMore: 'Më shumë' - }, - platformActionBar: { - backButtonLabel: 'Kthehu mbrapa' - }, - platformApprovalFlow: { - defaultWatchersLabel: 'Vrojtuesit', - defaultTitle: 'Procesi i aprovimit', - nextButtonAriaLabel: 'Shko te skedari tjetër', - prevButtonAriaLabel: 'Shko te skedari i mëparshëm', - editModeSaveButtonLabel: 'Ruaj', - editModeExitButtonLabel: 'Dalje', - emptyTitle: 'Shto miratues dhe vëzhgues', - emptyHint: - 'Për të shtuar miratues, kliko në "Shto një hap". Për të shtuar vëzhgues, kliko në fushën e Vëzhguesit.', - addNodeDialogHeaderAddApprovers: 'Shto miratues', - addNodeDialogHeaderEditApprover: 'Redakto miratuesin', - addNodeDialogHeaderAddApproverTeam: 'Përdorues/Skuadër', - addNodeDialogHeaderDetail: 'Detaje', - addNodeDialogNodeType: 'Paralel ose në seri', - addNodeDialogNodeTypeSerial: 'Seria', - addNodeDialogNodeTypeParallel: 'Paralel', - addNodeDialogApproverType: 'Lloji miratues', - addNodeDialogApproverTypeUser: 'Përdorues', - addNodeDialogApproverTypeTeamAnyone: 'Kushdo në skuadër', - addNodeDialogApproverTypeTeamEveryone: 'Të gjithë në skuadër', - addNodeDialogUserOrTeam: 'Përdorues/Skuadër', - addNodeDialogAddToNext: 'Shto në nyjen serike tjetër', - addNodeDialogDueDate: 'Afati kohor deri në', - addNodeSearchPlaceholder: 'Kërko', - addNodeAddActionBtnLabel: 'Shto', - addNodeCancelActionBtnLabel: 'Anulo', - addNodeSelectApproverActionBtnLabel: 'Selekto', - addNodeCancelApproverSelectionActionBtnLabel: 'Anulo', - addNodeApproverOrTeamDetailsCloseActionBtnLabel: 'Mbyll', - userDetailsHeader: 'Detaje', - userDetailsSendReminderBtnLabel: 'Dërgo lajmërim', - userDetailsCancelBtnLabel: 'Anulo', - messagesApproverAddedSuccess: '1 miratues është shtuar', - messagesTeamAddedSuccess: '1 skuadër është shtuar', - messagesNodeEdited: '1 miratues është shtuar', - messagesNodeRemovedSingular: '1 miratues është hequr', - messagesNodeRemovedPlural: 'Aprovuesit janë hequr', - messagesTeamRemoved: '1 skuadër është hequr', - messagesErrorBuildGraph: - 'Pati një gabim gjatë përpjekjes për të ndërtuar grafikun. Kontrolloni të dhënat fillestare.', - messagesUndoAction: 'Zhbëj', - nodeMembersCount: '{count} anëtarë', - nodeVariousTeams: 'Skuadra të ndryshme', - nodeStatusDueToday: 'Afati kohor është sot', - nodeStatusDueInXDays: ' Afati kohor në {count} ditë', - nodeStatusXDaysOverdue: '{count} ditë me vonesë', - nodeActionAddApproversBefore: 'Shto miratues më parë', - nodeActionAddApproversAfter: 'Shto miratues më pas', - nodeActionAddApproversParallel: 'Shto miratues paralel', - nodeActionEditApprover: 'Redakto miratuesin', - nodeActionRemove: 'Fshi', - selectTypeDialogMoveApproverAs: 'Zhvendos miratuesin si', - selectTypeDialogParallelOrSerial: 'Paralel ose në seri', - selectTypeDialogNodeTypeParallel: 'Aprovues paralel', - selectTypeDialogNodeTypeSerial: 'Aprovues serial', - selectTypeDialogConfirmButton: 'Konfirmo', - selectTypeDialogCancelButton: 'Anulo', - toolbarAddStepButton: 'Shto një hap', - toolbarEditButton: 'Redakto', - toolbarAddApproversBefore: 'Shto miratues më parë', - toolbarAddApproversAfter: 'Shto miratues më pas', - toolbarAddApproversParallel: 'Shto miratues paralelë', - toolbarRemove: 'Fshi', - toolbarEditApprover: 'Redakto miratuesin', - watchersInputPlaceholder: 'Kërko këtu..', - userListSelectedItemsCountSingular: '1 artikull i zgjedhur', - userListSelectedItemsCountPlural: '{count} artikujt të zgjedhur', - statusApproved: 'approved', - statusRejected: 'rejected', - statusInProgress: 'in progress', - statusNotStarted: 'not started' - }, - platformFeedInput: { - userTitle: 'Përdoruesi' - }, - platformVHD: { - selectionBarLabel: 'Artikujt e zgjedhur dhe të gjendjes', - selectedAndConditionLabel: 'Artikujt e zgjedhur dhe të gjendjes', - footerClearSelectedTitle: 'pastro artikujt e zgjedhur', - footerClearSelectedAriaLabel: 'pastro artikujt e zgjedhur', - searchButtonLabel: 'Shko', - successButtonLabel: 'OK', - cancelButtonLabel: 'Anulo', - selectedEmptyLabel: 'Asnjë Artikull ose Kusht i zgjedhur', - searchPlaceholder: 'Kërko', - searchAdvancedSearchLabel: 'Filtrat', - searchShowAdvancedSearchLabel: 'Shfaq filtrat', - searchHideAdvancedSearchLabel: 'Fshih filtrat', - searchShowAllAdvancedSearchLabel: 'Shfaq të gjithë filtrat', - searchHideAllAdvancedSearchLabel: 'Fshih të gjithë filtrat', - selectTabDisplayCountLabel: 'Artikujt ({count})', - selectTabMoreBtnLabel: 'Më shumë', - selectTabCountHiddenA11yLabel: 'përmban {rowCount} rreshta dhe {colCount} kolona', - selectMobileTabBackBtnTitle: 'Pas', - selectMobileTabBtnOpenDialogLabel: 'Hap dialogun', - selectMobileTabTitle: '{title} skeda', - selectMobileConditionEmpty: 'Bosh', - defineConditionTitle: 'Produkt', - defineConditionSelectedValueHiddenA11yLabel: 'vlera e zgjedhur {value}', - defineConditionConditionsGroupHeaderInclude: 'Përfshij', - defineConditionConditionsGroupHeaderExclude: 'Përjashto', - defineConditionFromPlaceholder: 'nga', - defineConditionToPlaceholder: 'në', - defineConditionValuePlaceholder: 'vlera', - defineConditionRemoveConditionButtonTitle: 'Hiq kushtin', - defineConditionAddConditionButtonLabel: 'Shto', - defineConditionAddConditionButtonTitle: 'Shto kushtin', - defineConditionConditionStrategyLabelContains: 'përmban', - defineConditionConditionStrategyLabelEqualTo: 'e barabartë me', - defineConditionConditionStrategyLabelBetween: 'ndërmjet', - defineConditionConditionStrategyLabelStartsWith: 'fillon me', - defineConditionConditionStrategyLabelEndsWith: 'mbaron me', - defineConditionConditionStrategyLabelLessThan: 'më pak se', - defineConditionConditionStrategyLabelLessThanEqual: 'më pak se e barabartë', - defineConditionConditionStrategyLabelGreaterThan: 'më i madh se', - defineConditionConditionStrategyLabelGreaterThanEqual: 'më i madh ose i barabartë', - defineConditionConditionStrategyLabelEmpty: 'bosh', - defineConditionConditionStrategyLabelNotEqualTo: 'jo e barabartë me', - defineConditionConditionStrategyLabelNotEmpty: 'jo bosh', - defineConditionMaxCountError: 'Shto një vlerë me jo më shumë se {count} karaktere.', - selectTabTitle: 'Zgjidh nga lista', - searchTableEmptyMessage: 'Përdor kërkimin për të marrë rezultate', - defineTabTitle: 'Përcaktoni kushtet' - }, - platformCombobox: { - countListResultsSingular: '1 artikull i listës së rezultateve', - countListResultsPlural: '{count} artikujt e listës së rezultateve' - }, - platformMultiCombobox: { - inputGlyphAriaLabel: 'Zgjidhni Opsionet', - inputIconTitle: 'Zgjidhni Opsionet', - mobileShowAllItemsButton: 'Shfaq të gjithë artikujt', - mobileShowSelectedItemsButton: 'Shfaq artikujt e zgjedhur' - }, - platformTextarea: { - counterMessageCharactersOverTheLimitSingular: '1 karakter mbi limitin ', - counterMessageCharactersOverTheLimitPlural: '{count} karaktere mbi limitin', - counterMessageCharactersRemainingSingular: '1 karakter i mbetur', - counterMessageCharactersRemainingPlural: '{count} karaktere të mbetur' - }, - platformLink: { - roleDescriptionWithMedia: 'Media: {media}' - }, - platformList: { - loadingAriaLabel: 'duke u ngarkuar' - }, - platformObjectListItem: { - detailsActionAriaLabel: 'detaje', - deleteActionAriaLabel: 'fshi' - }, - platformStandardListItem: { - detailsActionAriaLabel: 'detaje', - deleteActionAriaLabel: 'fshi' - }, - platformSearchField: { - clearButtonTitle: 'Pastro', - submitButtonTitle: 'Kërko', - searchInputLabel: 'Kërko', - synchronizeButtonTitle: 'Sinkronizo', - searchSuggestionMessage: '{count} sugjerime u gjetën.', - searchSuggestionNavigateMessage: 'përdor shigjetat lart e poshtë për të lundruar' - }, - platformSmartFilterBar: { - searchPlaceholder: 'Kërko', - submitButtonLabel: 'Shko', - filtersButtonLabel: 'Filtrat ({filtersCount})', - showFiltersButtonLabel: 'Shfaq filtrat', - hideFiltersButtonLabel: 'Fshih filtrat', - defineConditionsRemoveConditionButtonTitle: 'Hiq kushtin', - defineConditionsAddConditionButtonLabel: 'Shto kushtin', - defineConditionsSubmitButtonLabel: 'Shko', - defineConditionsCancelButton: 'Anulo', - selectFiltersHeader: 'Filtrat', - selectFiltersAvailableFiltersText: 'Filtrat e disponueshëm', - selectFiltersFilterColumnLabel: 'Filtri', - selectFiltersActiveColumnLabel: 'Aktive', - selectFiltersSubmitButtonLabel: 'Shko', - selectFiltersCancelButton: 'Anulo', - filterConditionContains: 'përmban', - filterConditionEqualTo: 'e barabartë me', - filterConditionBetween: 'ndërmjet', - filterConditionBeginsWith: 'fillon me', - filterConditionEndsWith: 'mbaron me', - filterConditionLessThan: 'më pak se', - filterConditionLessThanOrEqualTo: 'më pak se ose e barabartë me', - filterConditionGreaterThan: 'më e madhe se', - filterConditionGreaterThanOrEqualTo: 'më e madhe se ose e barabartë me', - filterConditionAfter: 'pas', - filterConditionOnOrAfter: 'në ose pas', - filterConditionBefore: 'para', - filterConditionBeforeOrOn: 'para ose në', - filterConditionValuePlaceholder: 'vlera', - filterConditionValueFromPlaceholder: 'nga', - filterConditionValueToPlaceholder: 'për', - settingsCategoryAll: 'Të gjitha', - settingsCategoryVisible: 'E dukshme', - settingsCategoryActive: 'Aktiv', - settingsCategoryVisibleAndActive: 'E dukshme dhe aktive', - settingsCategoryMandatory: 'I detyrueshëm', - manageFieldConditions: 'Manage field conditions', - refreshButtonAriaLabel: 'Refresh' - }, - platformTable: { - headerMenuSortAsc: 'Rendit në rritje', - headerMenuSortDesc: 'Rendit në zbritje', - headerMenuGroup: 'Groupo', - headerMenuFreeze: 'Blloko', - headerMenuEndFreeze: 'Freeze to End', - headerMenuUnfreeze: 'Menuja "Shkrije"', - headerMenuFilter: 'Filtro', - defaultEmptyMessage: 'No data found', - emptyCell: 'Bosh', - noVisibleColumnsMessage: - 'Right now, there are no visible columns in the table. Please select the columns you need in the table settings.', - resetChangesButtonLabel: 'Rivendos', - editableCellNumberPlaceholder: 'Shto vlerën', - editableCellDatePlaceholder: 'Shto vlerën', - editableCellStringPlaceholder: 'Shto vlerën', - P13ColumnsDialogHeader: 'Kolonat', - P13ColumnsDialogSearchPlaceholder: 'Kërko', - P13ColumnsDialogsShowSelected: 'Shfaq të zgjedhurat', - P13ColumnsDialogShowAll: 'Shfaq të gjitha', - P13ColumnsDialogSelectAll: 'Përzgjidh të gjitha ({selectedColumnsCount}/{selectableColumnsCount})', - P13ColumnsDialogConfirmationBtnLabel: 'OK', - P13ColumnsDialogCancelBtnLabel: 'Anulo', - P13ColumnsDialogMoveToTopBtn: 'Kalo në krye', - P13ColumnsDialogMoveUpBtn: 'Lëviz lartë', - P13ColumnsDialogMoveDownBtn: 'Lëviz poshtë', - P13ColumnsDialogMoveToBottomBtn: 'Lëviz në fund', - P13FilterStrategyLabelBetween: 'midis', - P13FilterStrategyLabelContains: 'përmban', - P13FilterStrategyLabelBeginsWith: 'fillon me', - P13FilterStrategyLabelEndsWith: 'mbaron me', - P13FilterStrategyLabelEqualTo: 'e barabart me', - P13FilterStrategyLabelGreaterThan: 'më e madhe se', - P13FilterStrategyLabelGreaterThanOrEqualTo: 'më e madhe se ose e barabartë', - P13FilterStrategyLabelLessThan: 'më e vogël se', - P13FilterStrategyLabelLessThanOrEqualTo: 'më e vogël se ose e barabartë', - P13FilterStrategyLabelAfter: 'pas', - P13FilterStrategyLabelOnOrAfter: 'mbi ose pas', - P13FilterStrategyLabelBefore: 'përpara', - P13FilterStrategyLabelBeforeOrOn: 'përpara ose mbi', - P13FilterStrategyLabelNotDefined: 'E papërcaktuar', - P13FilterBooleanOptionNotDefined: ' ', - P13FilterBooleanOptionTrue: 'Po', - P13FilterBooleanOptionFalse: 'Jo', - P13FilterDialogHeader: 'Filtro sipas', - P13FilterDialogIncludePanelTitleWithCount: 'Përfshi ({count})', - P13FilterDialogIncludePanelTitleWithoutCount: 'Përfshi', - P13FilterDialogExcludePanelTitleWithCount: 'Përjashto ({count})', - P13FilterDialogExcludePanelTitleWithoutCount: 'Përjashto', - P13FilterDialogRemoveFilterBtnTitle: 'Hiq filtrin', - P13FilterDialoAddFilterBtnTitle: 'Shto filtrin', - P13FilterDialogConfirmationBtnLabel: 'OK', - P13FilterDialogCancelBtnLabel: 'Anulo', - P13GroupDialogHeader: 'Grupo', - P13GroupDialogNoneSelectedColumnSelectPlaceholder: '(none)', - P13GroupDialogShowFieldAsColumnCheckboxLabel: 'Shfaq Fushën si Kolona', - P13GroupDialogRemoveGroupBtnTitle: 'Hiq', - P13GroupDialogAddNewGroupBtnTitle: 'Shto një të re', - P13GroupDialogConfirmationBtnLabel: 'OK', - P13GroupDialogCancelBtnLabel: 'Anulo', - P13SortDialogHeader: 'Rendit', - P13SortDialogNoneSelectedColumn: '(none)', - P13SortDialogNoneSelectedSorting: '(none)', - P13SortDialogSortOrderSelectOptionAsc: 'Në ngritje', - P13SortDialogSortOrderSelectOptionDesc: 'Në zbritje', - P13SortDialogRemoveSortBtnTitle: 'Fshi', - P13SortDialogAddNewSortBtnTitle: 'Shto një të re', - P13SortDialogConfirmationBtnLabel: 'OK', - P13SortDialogCancelBtnLabel: 'Anulo', - toolbarSearchPlaceholder: 'Kërko', - toolbarActionCreateButtonLabel: 'Krijo', - toolbarActionSaveButtonLabel: 'Ruaj', - toolbarActionCancelButtonLabel: 'Anulo', - toolbarActionSortButtonTitle: 'Rendit', - toolbarActionFilterButtonTitle: 'Filtro', - toolbarActionGroupButtonTitle: 'Group', - toolbarActionColumnsButtonTitle: 'Columns', - toolbarActionExpandAllButtonTitle: 'Expand all', - toolbarActionCollapseAllButtonTitle: 'Collapse all', - filterDialogNotFilteredLabel: '(Not Filtered)', - filterDialogFilterByLabel: 'Filtro sipas: {filterLabel}', - filterDialogFilterTitle: 'Filtro', - filterDialogFilterBy: 'Filtro sipas', - filterDialogConfirmBtnLabel: 'OK', - filterDialogCancelBtnLabel: 'Anulo', - groupDialogHeader: 'Grupo', - groupDialogGroupOrderHeader: 'Rendit ne group', - groupDialogGroupOrderAsc: 'Në ngritje', - groupDialogGroupOrderDesc: 'Në zbritje', - groupDialogGroupByHeader: 'Grupo sipas', - groupDialogNotGroupedLabel: '(Not Grouped)', - groupDialogConfirmBtnLabel: 'OK', - groupDialogCancelBtnLabel: 'Anulo', - sortDialogHeader: 'Rendit', - sortDialogSortOrderHeader: 'Sort Order', - sortDialogSortOrderAsc: 'Në ngritje', - sortDialogSortOrderDesc: 'Në zbritje', - sortDialogSortByHeader: 'Rendit sipas', - sortDialogNotSortedLabel: '(Not Sorted)', - sortDialogConfirmBtnLabel: 'OK', - sortDialogCancelBtnLabel: 'Anulo', - selectAllCheckboxLabel: 'Select all', - deselectAllCheckboxLabel: 'Deselect all', - deselectSingleRow: 'To deselect row, press SPACEBAR', - selectSingleRow: 'To select row, press SPACEBAR', - deselectSingleRowTitle: 'Click to deselect', - selectSingleRowTitle: 'Click to select' - }, - platformThumbnail: { - detailsGotoPreviousButtonTitle: 'Shko te paraardhësja', - detailsGotoNextButtonTitle: 'Shko te pasardhëstja', - detailsDialogCloseBtnLabel: 'Mbyll', - roleDescription: 'Imazhi' - }, - platformUploadCollection: { - moveToTitle: 'Lëviz te', - moveToTitleFolder: 'Dosje', - moveToNewFolderBtnLabel: 'Dosje e re', - moveToAllFilesSubHeaderLabel: 'Të gjithë skedarët', - moveToConfirmBtn: 'Lëviz', - moveToCloseBtn: 'Anulo', - newFolderTitle: 'Dosje e re', - newFolderAtRootInputLabel: 'Emëro një dosje të re', - newFolderAtFolderInputLabel: 'Emëro një dosje të re brenda {folderName}', - newFolderInputPlaceholder: 'Shkruaj këtu..', - newFolderInputErrorLabel: 'Maksimuni i karaktereve te lejuara është {count}', - newFolderDialogCreateBtnLabel: 'Krijo', - newFolderDialogCancelBtnLabel: 'Anulo', - breadcrumbLabelAllFiles: 'Të gjithë skedarët', - breadcrumbLabelAllFilesWithTotal: 'Të gjithë skedarët ({{ total }})', - searchPlaceholder: 'Kërko', - addBtnLabel: 'Shto', - newFolderBtnLabel: 'Dosje e re', - moveToBtnLabel: 'Lëviz te', - downloadBtnLabel: 'Shkarko', - updateVersionBtnLabel: 'Ngarko versionin', - removeBtnLabel: 'Fshi', - folderIconTitle: 'Ikona e dosjes', - fileIconTitle: 'Ikona e skedarit', - editFileNameInputPlaceholder: 'Shto emrin', - editFileNameFileAlreadyExistsError: 'Skedari me këtë emër ekziston.', - editFileNameFolderAlreadyExistsError: 'Dosja me këtë emër ekziston.', - itemStatusSuccessful: 'Sukses', - itemStatusUnsuccessful: 'Nuk ka sukses', - uploadNewFileAfterFailAction: 'Ekzekuto', - cancelUploadNewFileAction: 'Anulo', - itemMenuBtnTitle: 'Më shumë', - dragDropAreaText: 'Tërhiq skedarët për t`i ngarkuar', - noDataText: 'Nuk u gjet asnjë skedar', - noDataDescription: 'Hidhni skedarët për të ngarkuar ose përdorni butonin "Shto".', - paginationTotal: 'Po shfaqen {from}-{to} nga {total}', - resultsPerPage: 'Rezultatet për faqe', - messageCreateFailed: 'Dështoj krijimi i {folderName}.', - messageCreateSuccess: '{folderName} është krijuar.', - messageUpdateVersionFailed: 'Përditësimi i versionit të dështoi {folderName}.', - messageUpdateVersionSuccess: '{folderName} versioni është përditësuar.', - messageFileRenameFailed: 'Riemërtimi nga "{from}" në "{to} dështoi."', - messageFileRenameSuccess: '"{from}" është riemërtuar në "{to}".', - messageRemoveFoldersAndFilesFailed: 'Dështoi për të hequr {foldersCount} dosje dhe {filesCount} skedare.', - messageRemoveFoldersAndFilesSuccess: '{foldersCount} dojse he {filesCount} skedare janë hequr.', - messageRemoveFoldersFailed: 'Dështoi për të hequr {foldersCount} dosje.', - messageRemoveFoldersSuccess: '{foldersCount} dosje janë hequr.', - messageRemoveFilesFailed: 'Dështoi për të hequr {filesCount} skedare.', - messageRemoveFilesSuccess: '{filesCount} skedare janë hequr.', - messageRemoveFileOrFolderFailed: 'Dështoi për të hequr {name}.', - messageRemoveFileOrFolderSuccess: '{name} ështe hequr.', - messageMoveFoldersAndFilesFailed: - 'Zhvendosja e dosjeve {foldersCount} dhe skedarët {filesCount} në {to} dështoi.', - messageMoveFoldersAndFilesSuccess: '{foldersCount} dosje dhe {filesCount} janë zhvendosur në {to}.', - messageMoveFoldersFailed: 'Zhvendosja e dosjeve {foldersCount} dështoi në {to}.', - messageMoveFoldersSuccess: '{foldersCount} dosje janë zhvendosur në{to}.', - messageMoveFilesFailed: 'Zhvendosja e {filesCount} skedarëve në {to} ka dështuar.', - messageMoveFilesSuccess: '{filesCount} dosje janë zhvendosur në {to}.', - messageMoveFileOrFolderFailed: 'Lëvizja e {name} në {to} ka dështuar.', - messageMoveFileOrFolderSuccess: '{name} është zhvendosur në {to}.', - messageMoveRootFoldersAndFilesFailed: - 'Zhvendosja e skedarëve {foldersCount} dhe {filesCount} në të gjithë skedarët ka dështuar.', - messageMoveRootFoldersAndFilesSuccess: - '{foldersCount} dosje dhe {filesCount} skedarë janë zhvendosur në të gjithë skedarët.', - messageMoveRootFoldersFailed: 'Zhvendosja e dosjeve {foldersCount} në të gjithë skedarët dështoi.', - messageMoveRootFoldersSuccess: '{foldersCount} dosje janë zhvendosur në të gjithë skedarët.', - messageMoveRootFilesFailed: 'Zhvendosja e skedarëve {filesCount} në të gjithë skedarët dështoi.', - messageMoveRootFilesSuccess: '{filesCount} skedare janë zhvendosur në të gjithë skedarët.', - messageMoveRootFileOrFolderFailed: 'Zhvendosja e {emri} te të gjithë skedarët ka dështuar.', - messageMoveRootFileOrFolderSuccess: '{name} është zhvendosur në të gjithë skedarët.', - messageFileTypeMismatchPlural: '{filesCount} skedarët kanë llojin e gabuar. Llojet e lejuara: {allowedTypes}.', - messageFileTypeMismatchSingular: 'Skedari "{fileName}" ka llojin e gabuar. Llojet e lejuara: {allowedTypes}.', - messageFileSizeExceededPlural: - '{filesCount} skedarët tejkaluan madhësinë maksimale të skedarit. Madhësia maksimale e lejuar e skedarit:{maxFileSize}.', - messageFileSizeExceededSingular: - 'Skedari "{fileName}" ka tejkaluar madhësinë maksimale të skedarit. Madhësia maksimale e lejuar e skedarit: {maxFileSize}.', - messageFileNameLengthExceededPlural: - '{filesCount} skedare tejkaluan gjatësinë maksimale të emrit. Gjatësia e lejuar e emrit të skedarit: {maxFilenameLength} karaktere.', - messageFileNameLengthExceededSingular: - 'Emri "{fileName}" ka tejkaluar gjatësinë maksimale të emrit. Gjatësia e lejuar e emrit të skedarit: {maxFilenameLength} karaktere.' - }, - platformWizardGenerator: { - summarySectionEditStep: 'Redakto' - }, - platformMessagePopover: { - allErrors: 'All', - defaultErrors: { - email: 'Email is invalid', - max: 'The field exceeds maximum value', - maxLength: 'The field exceeds maximum length', - min: 'The field value is less than allowed', - minLength: 'The field length is less than allowed', - pattern: 'The field value is invalid', - required: 'The field is mandatory', - requiredTrue: 'The field is mandatory' - } - }, - platformVariantManagement: { - manage: 'Manage', - saveAs: 'Save as', - saveView: 'Save View', - save: 'Save', - myViews: 'My Views', - view: 'View', - setAsDefault: 'Set as Default', - public: 'Public', - applyAutomatically: 'Apply Automatically', - requiredFieldError: 'This field is required.', - nameTakenFieldError: 'Variant with such name already exists. Please chose a different name.', - cancel: 'Cancel', - manageViews: 'Manage Views', - markAsFavourite: 'Mark as Favourite', - sharing: 'Sharing', - default: 'Default', - createdBy: 'Created By', - removeVariant: 'Remove View', - search: 'Search', - access: { - public: 'Public', - private: 'Private' - } - }, - platformSelect: { - selectOptionLabel: 'Zgjidhni një opsion' - }, - fnSlider: { - minMaxDetails: 'Vlera minimale e rrëshqitësit është {min}, vlera maksimale është {max}', - valueminDetails: 'Vlera është {value}', - valuemaxDetails: 'Vlera është {value}', - valueNowDetails: 'Vlera aktuale është {value}' - }, - fnSwitch: { - semanticAcceptLabel: 'Pranoje', - semanticDeclineLabel: 'Rënia' - }, - coreTree: { - expand: 'Expand node', - collapse: 'Collapse node', - noData: 'No data' - } -}; +export const FD_LANGUAGE_ALBANIAN = loadJson(json); diff --git a/libs/i18n/src/lib/languages/bulgarian.ts b/libs/i18n/src/lib/languages/bulgarian.ts index a5b25063ae6..8101f1e02da 100644 --- a/libs/i18n/src/lib/languages/bulgarian.ts +++ b/libs/i18n/src/lib/languages/bulgarian.ts @@ -1,628 +1,4 @@ -import { FdLanguage } from '../models/lang'; +import json from '../translations/translations_bg-BG.json'; +import { loadJson } from '../utils/load-json'; -/** - * Default set of translations of Fundamental UI library for Bulgarian language - */ -export const FD_LANGUAGE_BULGARIAN: FdLanguage = { - coreMultiComboBox: { - selectAllLabel: 'Избери всички ({selectedItems} от {totalItems})' - }, - coreCarousel: { - leftNavigationBtnLabel: 'Отиди на предишния елемент', - rightNavigationBtnLabel: 'Отиди на следващия елемент' - }, - coreDatePicker: { - dateInputLabel: 'Поле за дата', - dateRangeInputLabel: 'Поле за дата интервал', - displayCalendarToggleLabel: 'Избери дата', - valueStateSuccessMessage: 'Състояние Успех', - valueStateInformationMessage: 'Състояние Информиране', - valueStateWarningMessage: 'Състояние Предупреждение', - valueStateErrorMessage: 'Състояние Грешка' - }, - coreDatetimePicker: { - datetimeInputLabel: 'Поле за дата и час', - displayDatetimeToggleLabel: 'Покажи/Скрий календар', - displayTypeDateLabel: 'Дата', - displayTypeTimeLabel: 'Час', - datetimeOkLabel: 'Ok', - datetimeCancelLabel: 'Отмени' - }, - coreFeedListItem: { - moreLabel: 'Повече', - lessLabel: 'По-малко' - }, - coreGridList: { - filterBarCancelButtonTitle: 'Отмени', - listItemStatusAriaLabel: 'Артикулът има статус. Статус: {status}.', - listItemCounterAriaLabel: 'Артикулът има { count, plural, one {1 дете} other {# деца} }.', - listItemButtonDetailsTitle: 'Подробности', - listItemButtonDeleteTitle: 'Изтрий', - listItemStatusContainsErrors: 'Съдържа грешки', - listItemStatusLocked: 'Заключен', - listItemStatusDraft: 'Чернова' - }, - coreMessageStrip: { - dismissLabel: 'Отхвърляне' - }, - coreMultiInput: { - multiInputAriaLabel: 'Multi Value Input', - tokensCountText: 'Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.' - }, - coreNavigation: { - mainNavigation: 'Main Navigation', - navigationPath: 'Navigation Path' - }, - coreNestedList: { - linkItemAriaLabel: 'Елемент от дърво {itemDetails}, {index} от {total}{selectedDescription}' - }, - coreOverflowLayout: { - moreItemsButton: 'Още { count, plural, one {1 елемент} other {# елемента} }' - }, - corePagination: { - pageLabel: 'Страница {pageNumber}', - currentPageAriaLabel: 'Страница {pageNumber} е активна', - labelBeforeInputMobile: 'Страница:', - labelAfterInputMobile: 'от {totalCount}', - inputAriaLabel: 'Поле за страница, Текуща страница, Page {pageNumber} of {totalCount}', - itemsPerPageLabel: 'Резултати на Страница:', - firstLabel: 'Първа', - previousLabel: 'Предна', - nextLabel: 'Следваща', - lastLabel: 'Последна', - ariaLabel: 'Пагинация', - totalResultsLabel: '{totalCount} резултати' - }, - coreProductSwitch: { - ariaLabel: 'Продуктов превключвател' - }, - coreShellbar: { - collapsedItemMenuLabel: 'Collapsed Item Menu', - cancel: 'Cancel', - search: 'Search' - }, - coreSlider: { - singleMinMaxDetails: 'Минималната стойност на плъзгача е {min}, максималната стойност е {max}', - singleValueminDetails: 'Стойността е {value}', - singleValuemaxDetails: 'Стойността е {value}', - singleValueNowDetails: 'Текущата стойност е {value}', - multipleHandle1MinMaxDetails: - 'Минималната стойност на плъзгача за обхват е {min}, максималната стойност е {max}', - multipleHandle1ValueminDetails: 'Стойността е {value}', - multipleHandle1ValuemaxDetails: 'Стойността е {value}', - multipleHandle1ValueNowDetails: 'Текущата стойност е {value}', - multipleHandle2MinMaxDetails: - 'Минималната стойност на плъзгача за обхват е {min}, максималната стойност е {max}', - multipleHandle2ValueminDetails: 'Стойността е {value}', - multipleHandle2ValuemaxDetails: 'Стойността е {value}', - multipleHandle2ValueNowDetails: 'Текущата стойност е {value}' - }, - coreSplitButton: { - expandButtonAriaLabel: 'Повече възможности', - arialLabel: 'Разделен бутон' - }, - coreSplitter: { - paginationItemAriaLabel: 'Секция' - }, - coreStepInput: { - incrementButtonTitle: 'Увеличи', - decrementButtonTitle: 'Намали', - ariaRoleDescription: 'Поле за стъпка' - }, - coreSwitch: { - semanticAcceptLabel: 'Приеми', - semanticDeclineLabel: 'Отхвърли' - }, - coreTabs: { - tabListExpandButtonText: 'Повече' - }, - coreText: { - moreLabel: 'Повече', - lessLabel: 'По-малко' - }, - coreTime: { - componentAriaName: 'Избери час', - increaseHoursLabel: 'Увеличи часовете', - hoursLabel: 'Час', - decreaseHoursLabel: 'Намали часовете', - increaseMinutesLabel: 'Увеличи минутите', - minutesLabel: 'Мин', - decreaseMinutesLabel: 'Намали минутите', - increaseSecondsLabel: 'Увеличи секундите', - secondsLabel: 'Сек', - decreaseSecondsLabel: 'Намали секундите', - increasePeriodLabel: 'Увеличи интервала', - periodLabel: 'Интервал', - decreasePeriodLabel: 'Намали интервала', - navigationInstruction: - 'За да се придвижвате между елементите в този списък, натиснете горната стрелка или долната стрелка. ' + - 'За да превключвате между списъците, натиснете стрелка наляво или стрелка надясно.' - }, - coreTimePicker: { - timePickerInputLabel: 'Поле за избор на час', - timePickerButtonLabel: 'Избери време' - }, - coreToken: { - deleteButtonLabel: 'Изтриваем', - ariaRoleDescription: 'жетон' - }, - coreTokenizer: { - moreLabel: 'Още { count, plural, one {1 елемент} other {# елемента} }' - }, - coreUploadCollection: { - menuOkText: 'OK', - menuCancelText: 'Отмени', - menuEditAriaLabel: 'Редактирай', - menuDeleteAriaLabel: 'Изтрий', - menuOkAriaLabel: 'Редактирай', - menuCancelAriaLabel: 'Отмени', - formItemPlaceholder: 'Име на файл' - }, - coreWizard: { - ariaLabel: 'Помощник' - }, - coreBreadcrumb: { - overflowTitleMore: 'Повече' - }, - platformActionBar: { - backButtonLabel: 'Върни Се Обратно' - }, - platformApprovalFlow: { - defaultWatchersLabel: 'Наблюдатели', - defaultTitle: 'Процес на одобрение', - nextButtonAriaLabel: 'Преминете към следващия слайд', - prevButtonAriaLabel: 'Отидете на предишния слайд', - editModeSaveButtonLabel: 'Запази', - editModeExitButtonLabel: 'Излез', - emptyTitle: 'Започнете да добавяте одобряващи и наблюдатели', - emptyHint: - 'За да добавите одобряващи, щракнете "Добавете стъпка". За да добавите наблюдатели, щракнете върху полето Наблюдатели.', - addNodeDialogHeaderAddApprovers: 'Добавете одобряващи', - addNodeDialogHeaderEditApprover: 'Редактиране на одобряващия', - addNodeDialogHeaderAddApproverTeam: 'Потребител/Екип', - addNodeDialogHeaderDetail: 'Детайл', - addNodeDialogNodeType: 'Паралелно или последователно', - addNodeDialogNodeTypeSerial: 'Последователно', - addNodeDialogNodeTypeParallel: 'Паралелно', - addNodeDialogApproverType: 'Тип одобряващ', - addNodeDialogApproverTypeUser: 'Потребител', - addNodeDialogApproverTypeTeamAnyone: 'Всеки от екипа', - addNodeDialogApproverTypeTeamEveryone: 'Всички в екипа', - addNodeDialogUserOrTeam: 'Потребител/Екип', - addNodeDialogAddToNext: 'Добавете към следващия последователен възел', - addNodeDialogDueDate: 'Краен срок', - addNodeSearchPlaceholder: 'Търси', - addNodeAddActionBtnLabel: 'Добаве', - addNodeCancelActionBtnLabel: 'Отмени', - addNodeSelectApproverActionBtnLabel: 'Избери', - addNodeCancelApproverSelectionActionBtnLabel: 'Отмени', - addNodeApproverOrTeamDetailsCloseActionBtnLabel: 'Затвори', - userDetailsHeader: 'Детайл', - userDetailsSendReminderBtnLabel: 'Изпрати напомняне', - userDetailsCancelBtnLabel: 'Отмени', - messagesApproverAddedSuccess: 'Добавен е 1 одобряващ', - messagesTeamAddedSuccess: '1 екип е добавен', - messagesNodeEdited: '1 одобряващ е редактиран', - messagesNodeRemovedSingular: '1 одобряващ е премахнат', - messagesNodeRemovedPlural: 'Одобряващите са премахнати', - messagesTeamRemoved: '1 отбор е премахнат', - messagesErrorBuildGraph: 'Възникна грешка при опит за изграждане на графиката. Проверете първоначалните данни.', - messagesUndoAction: 'Отмяна', - nodeMembersCount: '{ count, plural, one {1 член} other {# членове} }', - nodeVariousTeams: 'Различни екипи', - nodeStatusDueToday: 'Предстои днес', - nodeStatusDueInXDays: 'Предстои след { count, plural, one {1 ден} other {# дни} }', - nodeStatusXDaysOverdue: '{ count, plural, one {1 ден} other {# дни} } просрочие', - nodeActionAddApproversBefore: 'Добавете одобряващи преди', - nodeActionAddApproversAfter: 'Добавете одобряващи след това', - nodeActionAddApproversParallel: 'Добавете паралелни одобряващи', - nodeActionEditApprover: 'Редактиране на одобряващия', - nodeActionRemove: 'Изтрий', - selectTypeDialogMoveApproverAs: 'Move approver as', - selectTypeDialogParallelOrSerial: 'Паралелно или последователно', - selectTypeDialogNodeTypeParallel: 'Паралелен одобряващ', - selectTypeDialogNodeTypeSerial: 'Последователен одобряващ', - selectTypeDialogConfirmButton: 'Потвърди', - selectTypeDialogCancelButton: 'Отмени', - toolbarAddStepButton: 'Добавете стъпка', - toolbarEditButton: 'Редактирай', - toolbarAddApproversBefore: 'Добавете одобряващи преди', - toolbarAddApproversAfter: 'Добавете одобряващи след това', - toolbarAddApproversParallel: 'Добавете паралелни одобряващи', - toolbarRemove: 'Изтрий', - toolbarEditApprover: 'Редактирай на одобряващия', - watchersInputPlaceholder: 'Търси тук...', - userListSelectedItemsCountSingular: 'Избран е 1 елемент', - userListSelectedItemsCountPlural: 'Избрани са {count} елементи', - statusApproved: 'approved', - statusRejected: 'rejected', - statusInProgress: 'in progress', - statusNotStarted: 'not started' - }, - platformFeedInput: { - userTitle: 'User' - }, - platformVHD: { - selectionBarLabel: 'Избрани и кондиционирани артикули', - selectedAndConditionLabel: 'Избрани артикули и условия', - footerClearSelectedTitle: 'изчистете избраните елементи', - footerClearSelectedAriaLabel: 'изчистете избраните елементи', - searchButtonLabel: 'Търси', - successButtonLabel: 'ОК', - cancelButtonLabel: 'Отмени', - selectedEmptyLabel: 'Няма избрани елементи или условия', - searchPlaceholder: 'Потърси', - searchAdvancedSearchLabel: 'Филтри', - searchShowAdvancedSearchLabel: 'Показване на филтри', - searchHideAdvancedSearchLabel: 'Скриване на филтрите', - searchShowAllAdvancedSearchLabel: 'Показване на всички филтри', - searchHideAllAdvancedSearchLabel: 'Скриване на всички филтри', - selectTabDisplayCountLabel: '({count}) артикули', - selectTabMoreBtnLabel: 'Повече', - selectTabCountHiddenA11yLabel: 'съдържа {rowCount} ред(а) и {colCount} колонa/и', - selectMobileTabBackBtnTitle: 'Обратно', - selectMobileTabBtnOpenDialogLabel: 'Отвори диалоговия прозорец', - selectMobileTabTitle: '{title} раздел', - selectMobileConditionEmpty: 'Празен', - defineConditionTitle: 'Продукт', - defineConditionSelectedValueHiddenA11yLabel: 'избрана стойност {value}', - defineConditionConditionsGroupHeaderInclude: 'Включи', - defineConditionConditionsGroupHeaderExclude: 'Изключи', - defineConditionFromPlaceholder: 'от', - defineConditionToPlaceholder: 'до', - defineConditionValuePlaceholder: 'стойност', - defineConditionRemoveConditionButtonTitle: 'Премахни Условие', - defineConditionAddConditionButtonLabel: 'Добави', - defineConditionAddConditionButtonTitle: 'Добави Условие', - defineConditionConditionStrategyLabelContains: 'съдържа', - defineConditionConditionStrategyLabelEqualTo: 'равно на', - defineConditionConditionStrategyLabelBetween: 'между', - defineConditionConditionStrategyLabelStartsWith: 'започна с', - defineConditionConditionStrategyLabelEndsWith: 'завършва с', - defineConditionConditionStrategyLabelLessThan: 'по-малко от', - defineConditionConditionStrategyLabelLessThanEqual: 'по-малко или равно от', - defineConditionConditionStrategyLabelGreaterThan: 'по-голямо от', - defineConditionConditionStrategyLabelGreaterThanEqual: 'по-голямо или равно от', - defineConditionConditionStrategyLabelEmpty: 'празно', - defineConditionConditionStrategyLabelNotEqualTo: 'не е равно на', - defineConditionConditionStrategyLabelNotEmpty: 'не празно', - defineConditionMaxCountError: - 'Въведи стойност с не повече от { count, plural, one {1 символ} other {# символа} }', - selectTabTitle: 'Избери от списъка', - searchTableEmptyMessage: 'Use the search to get results', - defineTabTitle: 'Дефиниране на условия' - }, - platformCombobox: { - countListResultsSingular: '1 елемент от списъка с резултати', - countListResultsPlural: '{count} елемента от списъка с резултати' - }, - platformMultiCombobox: { - inputGlyphAriaLabel: 'Избери Опции', - inputIconTitle: 'Избери Опции', - mobileShowAllItemsButton: 'Покажи всички елементи', - mobileShowSelectedItemsButton: 'Покажи избраните елементи' - }, - platformTextarea: { - counterMessageCharactersOverTheLimitSingular: '1 символ над ограничението', - counterMessageCharactersOverTheLimitPlural: '{count} символи над ограничението', - counterMessageCharactersRemainingSingular: 'Остава 1 символ', - counterMessageCharactersRemainingPlural: 'Остават {count} символи' - }, - platformLink: { - roleDescriptionWithMedia: 'Медия: {media}' - }, - platformList: { - loadingAriaLabel: 'зареждане' - }, - platformObjectListItem: { - detailsActionAriaLabel: 'детайл', - deleteActionAriaLabel: 'изтрий' - }, - platformStandardListItem: { - detailsActionAriaLabel: 'детайл', - deleteActionAriaLabel: 'изтрий' - }, - platformSearchField: { - clearButtonTitle: 'Изчисти', - submitButtonTitle: 'Търси', - searchInputLabel: 'Търси', - synchronizeButtonTitle: 'Синхронизирай', - searchSuggestionMessage: '{ count, plural, one {Намерено е 1 предложение} other {Намерени са # предложения} }.', - searchSuggestionNavigateMessage: 'използвайте стрелки нагоре и надолу за навигация' - }, - platformSmartFilterBar: { - searchPlaceholder: 'Търси', - submitButtonLabel: 'Търси', - filtersButtonLabel: 'Филтри ({filtersCount})', - showFiltersButtonLabel: 'Покажи филтрите', - hideFiltersButtonLabel: 'Скрий филтрите', - defineConditionsRemoveConditionButtonTitle: 'Премахни Условие', - defineConditionsAddConditionButtonLabel: 'Добави Условие', - defineConditionsSubmitButtonLabel: 'Търси', - defineConditionsCancelButton: 'Отмени', - selectFiltersHeader: 'Filters', - selectFiltersAvailableFiltersText: 'Налични филтри', - selectFiltersFilterColumnLabel: 'Филтър', - selectFiltersActiveColumnLabel: 'Активни', - selectFiltersSubmitButtonLabel: 'Филтрирай', - selectFiltersCancelButton: 'Отмени', - filterConditionContains: 'съдържа', - filterConditionEqualTo: 'равно на', - filterConditionBetween: 'между', - filterConditionBeginsWith: 'започна с', - filterConditionEndsWith: 'завършва с', - filterConditionLessThan: 'по-малко от', - filterConditionLessThanOrEqualTo: 'по-малко или равно', - filterConditionGreaterThan: 'по-голямо от', - filterConditionGreaterThanOrEqualTo: 'по-голямо или равно от', - filterConditionAfter: 'след', - filterConditionOnOrAfter: 'равно или повече', - filterConditionBefore: 'преди', - filterConditionBeforeOrOn: 'до или равно', - filterConditionValuePlaceholder: 'стойност', - filterConditionValueFromPlaceholder: 'от', - filterConditionValueToPlaceholder: 'до', - settingsCategoryAll: 'Всички', - settingsCategoryVisible: 'Видими', - settingsCategoryActive: 'Активни', - settingsCategoryVisibleAndActive: 'Видими и Активни', - settingsCategoryMandatory: 'Задължителни', - manageFieldConditions: 'Manage field conditions', - refreshButtonAriaLabel: 'Refresh' - }, - platformTable: { - headerMenuSortAsc: 'Сортирай Възходящо', - headerMenuSortDesc: 'Сортирай Нисходящо', - headerMenuGroup: 'Групирай', - headerMenuFreeze: 'Замрази', - headerMenuEndFreeze: 'Freeze to End', - headerMenuUnfreeze: 'Размрази', - headerMenuFilter: 'Филтър', - defaultEmptyMessage: 'Няма намерени данни', - emptyCell: 'Празна', - noVisibleColumnsMessage: - 'В момента в таблицата няма видими колони. Моля, изберете нужните колони в настройките на таблицата.', - resetChangesButtonLabel: 'Нулиране', - editableCellNumberPlaceholder: 'Въведи стойност', - editableCellDatePlaceholder: 'Въведи стойност', - editableCellStringPlaceholder: 'Въведи стойност', - P13ColumnsDialogHeader: 'Колони', - P13ColumnsDialogSearchPlaceholder: 'Търси', - P13ColumnsDialogsShowSelected: 'Покажи избраните', - P13ColumnsDialogShowAll: 'Покажи всички', - P13ColumnsDialogSelectAll: 'Покажи всички ({selectedColumnsCount}/{selectableColumnsCount})', - P13ColumnsDialogConfirmationBtnLabel: 'OK', - P13ColumnsDialogCancelBtnLabel: 'Отмени', - P13ColumnsDialogMoveToTopBtn: 'Измести най-отгоре', - P13ColumnsDialogMoveUpBtn: 'Измести нагоре', - P13ColumnsDialogMoveDownBtn: 'Измести надолу', - P13ColumnsDialogMoveToBottomBtn: 'Измести най-отдолу', - P13FilterStrategyLabelBetween: 'между', - P13FilterStrategyLabelContains: 'съдържа', - P13FilterStrategyLabelBeginsWith: 'започва с', - P13FilterStrategyLabelEndsWith: 'завършва с', - P13FilterStrategyLabelEqualTo: 'равно на', - P13FilterStrategyLabelGreaterThan: 'по-голямо от', - P13FilterStrategyLabelGreaterThanOrEqualTo: 'по-голямо или равно от', - P13FilterStrategyLabelLessThan: 'по-малко от', - P13FilterStrategyLabelLessThanOrEqualTo: 'по-малко или равно от', - P13FilterStrategyLabelAfter: 'след', - P13FilterStrategyLabelOnOrAfter: 'равно или повече', - P13FilterStrategyLabelBefore: 'преди', - P13FilterStrategyLabelBeforeOrOn: 'до или равно', - P13FilterStrategyLabelNotDefined: 'Недефинирано', - P13FilterBooleanOptionNotDefined: ' ', - P13FilterBooleanOptionTrue: 'Да', - P13FilterBooleanOptionFalse: 'Не', - P13FilterDialogHeader: 'Филтрирано от', - P13FilterDialogIncludePanelTitleWithCount: 'Добави ({count})', - P13FilterDialogIncludePanelTitleWithoutCount: 'Добави', - P13FilterDialogExcludePanelTitleWithCount: 'Изключи ({count})', - P13FilterDialogExcludePanelTitleWithoutCount: 'Exclude', - P13FilterDialogRemoveFilterBtnTitle: 'Премахни Филтър', - P13FilterDialoAddFilterBtnTitle: 'Добави Филтър', - P13FilterDialogConfirmationBtnLabel: 'OK', - P13FilterDialogCancelBtnLabel: 'Отмени', - P13GroupDialogHeader: 'Групирай', - P13GroupDialogNoneSelectedColumnSelectPlaceholder: '(нито един)', - P13GroupDialogShowFieldAsColumnCheckboxLabel: 'Show Field as Column', - P13GroupDialogRemoveGroupBtnTitle: 'Премахни', - P13GroupDialogAddNewGroupBtnTitle: 'Добави Нова', - P13GroupDialogConfirmationBtnLabel: 'OK', - P13GroupDialogCancelBtnLabel: 'Отмени', - P13SortDialogHeader: 'Сортирай', - P13SortDialogNoneSelectedColumn: '(нито един)', - P13SortDialogNoneSelectedSorting: '(нито един)', - P13SortDialogSortOrderSelectOptionAsc: 'Възходящ', - P13SortDialogSortOrderSelectOptionDesc: 'Низходящ', - P13SortDialogRemoveSortBtnTitle: 'Премахни', - P13SortDialogAddNewSortBtnTitle: 'Добави Ново', - P13SortDialogConfirmationBtnLabel: 'OK', - P13SortDialogCancelBtnLabel: 'Отмени', - toolbarSearchPlaceholder: 'Търси', - toolbarActionCreateButtonLabel: 'Създай', - toolbarActionSaveButtonLabel: 'Запиши', - toolbarActionCancelButtonLabel: 'Отмени', - toolbarActionSortButtonTitle: 'Сортирай', - toolbarActionFilterButtonTitle: 'Филтрирай', - toolbarActionGroupButtonTitle: 'Групирай', - toolbarActionColumnsButtonTitle: 'Колони', - toolbarActionExpandAllButtonTitle: 'Expand all', - toolbarActionCollapseAllButtonTitle: 'Collapse all', - filterDialogNotFilteredLabel: '(Нефилтрирано)', - filterDialogFilterByLabel: 'Филтрирано по: {filterLabel}', - filterDialogFilterTitle: 'Филтър', - filterDialogFilterBy: 'Филтрирано по', - filterDialogConfirmBtnLabel: 'OK', - filterDialogCancelBtnLabel: 'Отмени', - groupDialogHeader: 'Група', - groupDialogGroupOrderHeader: 'Ред на групиране', - groupDialogGroupOrderAsc: 'Възходяща', - groupDialogGroupOrderDesc: 'Низходяща', - groupDialogGroupByHeader: 'Групирано по', - groupDialogNotGroupedLabel: '(Негрупирано)', - groupDialogConfirmBtnLabel: 'OK', - groupDialogCancelBtnLabel: 'Отмени', - sortDialogHeader: 'Сортирай', - sortDialogSortOrderHeader: 'Сортирано', - sortDialogSortOrderAsc: 'Възходяща', - sortDialogSortOrderDesc: 'Низходяща', - sortDialogSortByHeader: 'Сортирай по', - sortDialogNotSortedLabel: '(Несортирано)', - sortDialogConfirmBtnLabel: 'OK', - sortDialogCancelBtnLabel: 'Отмени', - selectAllCheckboxLabel: 'Select all', - deselectAllCheckboxLabel: 'Deselect all', - deselectSingleRow: 'To deselect row, press SPACEBAR', - selectSingleRow: 'To select row, press SPACEBAR', - deselectSingleRowTitle: 'Click to deselect', - selectSingleRowTitle: 'Click to select' - }, - platformThumbnail: { - detailsGotoPreviousButtonTitle: 'Отиди на предишнита', - detailsGotoNextButtonTitle: 'Отиди на следващата', - detailsDialogCloseBtnLabel: 'Затвори', - roleDescription: 'Картинка' - }, - platformUploadCollection: { - moveToTitle: 'Премести в', - moveToTitleFolder: 'Папка', - moveToNewFolderBtnLabel: 'Нова папка', - moveToAllFilesSubHeaderLabel: 'Всички файлове', - moveToConfirmBtn: 'Премести', - moveToCloseBtn: 'Отмени', - newFolderTitle: 'Нова папка', - newFolderAtRootInputLabel: 'Име на новата папка', - newFolderAtFolderInputLabel: 'Име на новата папка вътре в {folderName}', - newFolderInputPlaceholder: 'Пиши тук...', - newFolderInputErrorLabel: 'Максимум {count} символ(а) позволени', - newFolderDialogCreateBtnLabel: 'Създай', - newFolderDialogCancelBtnLabel: 'Отмени', - breadcrumbLabelAllFiles: 'Всички файлове', - breadcrumbLabelAllFilesWithTotal: 'Всички файлове ({total})', - searchPlaceholder: 'Търси', - addBtnLabel: 'Добави', - newFolderBtnLabel: 'Нова папка', - moveToBtnLabel: 'Премести в', - downloadBtnLabel: 'Изтегли', - updateVersionBtnLabel: 'Актуализирай версията', - removeBtnLabel: 'Премахни', - folderIconTitle: 'Икона на папка', - fileIconTitle: 'Икона на файл', - editFileNameInputPlaceholder: 'Въведи име', - editFileNameFileAlreadyExistsError: 'Файл с това име вече съществува', - editFileNameFolderAlreadyExistsError: 'Папка с това име вече съществува', - itemStatusSuccessful: 'Успешено', - itemStatusUnsuccessful: 'Неуспешно', - uploadNewFileAfterFailAction: 'Изпълни', - cancelUploadNewFileAction: 'Отмени', - itemMenuBtnTitle: 'Повече', - dragDropAreaText: 'Плъзнете файлове за качване', - noDataText: 'Няма намерени файлове', - noDataDescription: 'Пуснете файлове за качване или използвайте бутона „Добави“.', - paginationTotal: 'Показване {from}-{to} от {total}', - resultsPerPage: 'Резултати на страница', - messageCreateFailed: 'Неуспешно създадена {folderName}.', - messageCreateSuccess: '{folderName} е създаден.', - messageUpdateVersionFailed: 'Неуспешно актуализиране на версията на {folderName}.', - messageUpdateVersionSuccess: 'Версията на {folderName} е актуализирана.', - messageFileRenameFailed: 'Неуспешно преименуване от "{from}" на "{to}."', - messageFileRenameSuccess: '"{from}" беще преименуван на "{to}".', - messageRemoveFoldersAndFilesFailed: 'Неуспешно премахване на {foldersCount} папки и {filesCount} файлове.', - messageRemoveFoldersAndFilesSuccess: '{foldersCount} папки и {filesCount} файлове бяха изтрити.', - messageRemoveFoldersFailed: 'Неуспешно премахване на {foldersCount} папки.', - messageRemoveFoldersSuccess: '{foldersCount} папки са премахнати.', - messageRemoveFilesFailed: 'Неуспешно премахване на {filesCount} файлове.', - messageRemoveFilesSuccess: '{filesCount} файлове са премахнати.', - messageRemoveFileOrFolderFailed: 'Неуспешно премахване на {name}.', - messageRemoveFileOrFolderSuccess: '{name} беше изтрита.', - messageMoveFoldersAndFilesFailed: 'Неуспешно преместване {foldersCount} папки и {filesCount} файлове в {to}.', - messageMoveFoldersAndFilesSuccess: '{foldersCount} папки и {filesCount} файлове са преместени в {to}.', - messageMoveFoldersFailed: 'Неуспешно преместване {foldersCount} папки в {to}.', - messageMoveFoldersSuccess: '{foldersCount} папки беше преместена в {to}.', - messageMoveFilesFailed: 'Неуспешно преместване {filesCount} файлове в {to}.', - messageMoveFilesSuccess: '{filesCount} файлове бяха преместени в {to}.', - messageMoveFileOrFolderFailed: 'Неуспешно преместване {name} в {to}.', - messageMoveFileOrFolderSuccess: '{name} е изместен(а) в {to}.', - messageMoveRootFoldersAndFilesFailed: - 'Неуспешно преместване {foldersCount} папки и {filesCount} файлове от всички файлове.', - messageMoveRootFoldersAndFilesSuccess: '{foldersCount} папки and {filesCount} файлове успешно преместени.', - messageMoveRootFoldersFailed: 'Неуспешно преместване {foldersCount} папки за всички файлове.', - messageMoveRootFoldersSuccess: '{foldersCount} папки бяха преместени за всички файлове.', - messageMoveRootFilesFailed: 'Неуспешно преместване {filesCount} файлове за всички файлове.', - messageMoveRootFilesSuccess: '{filesCount} файлове бяха изместени за всички файлове.', - messageMoveRootFileOrFolderFailed: 'Неуспешно преместване {name} за всички файлове.', - messageMoveRootFileOrFolderSuccess: '{name} е изместен за всички файлове.', - messageFileTypeMismatchPlural: - '{filesCount} файлове имат грешно разширение. Позволени разширения: {allowedTypes}.', - messageFileTypeMismatchSingular: - 'Файлът "{fileName}" има грешно разширение. Позволени разширения: {allowedTypes}.', - messageFileSizeExceededPlural: - '{filesCount} файлове надвишават максималната големина на файла. Позволен максимален размер на файла: {maxFileSize}.', - messageFileSizeExceededSingular: - 'Файлът "{fileName}" надвишава максималната големина на файла. Позволен максимален размер на файла: {maxFileSize}.', - messageFileNameLengthExceededPlural: - '{filesCount} файлове надвишават максималната дължина на името на файла. Позволена дължина на името на файла: {maxFilenameLength} символа.', - messageFileNameLengthExceededSingular: - 'Името "{fileName}" надвишава максималната дължина на името на файла. Позволена дължина на името на файла: {maxFilenameLength} символа.' - }, - platformWizardGenerator: { - summarySectionEditStep: 'Редактирай' - }, - platformMessagePopover: { - allErrors: 'All', - defaultErrors: { - email: 'Email is invalid', - max: 'The field exceeds maximum value', - maxLength: 'The field exceeds maximum length', - min: 'The field value is less than allowed', - minLength: 'The field length is less than allowed', - pattern: 'The field value is invalid', - required: 'The field is mandatory', - requiredTrue: 'The field is mandatory' - } - }, - platformVariantManagement: { - manage: 'Manage', - saveAs: 'Save as', - saveView: 'Save View', - save: 'Save', - myViews: 'My Views', - view: 'View', - setAsDefault: 'Set as Default', - public: 'Public', - applyAutomatically: 'Apply Automatically', - requiredFieldError: 'This field is required.', - nameTakenFieldError: 'Variant with such name already exists. Please chose a different name.', - cancel: 'Cancel', - manageViews: 'Manage Views', - markAsFavourite: 'Mark as Favourite', - sharing: 'Sharing', - default: 'Default', - createdBy: 'Created By', - removeVariant: 'Remove View', - search: 'Search', - access: { - public: 'Public', - private: 'Private' - } - }, - platformSelect: { - selectOptionLabel: 'Изберете опция' - }, - fnSlider: { - minMaxDetails: 'Минималната стойност на плъзгача е {min}, максималната стойност е {max}', - valueminDetails: 'Стойността е {value}', - valuemaxDetails: 'Стойността е {value}', - valueNowDetails: 'Текущата стойност е {value}' - }, - fnSwitch: { - semanticAcceptLabel: 'Приеми', - semanticDeclineLabel: 'Отхвърли' - }, - coreTree: { - expand: 'Expand node', - collapse: 'Collapse node', - noData: 'No data' - } -}; +export const FD_LANGUAGE_BULGARIAN = loadJson(json); diff --git a/libs/i18n/src/lib/languages/chinese.ts b/libs/i18n/src/lib/languages/chinese.ts index 058a4662dc0..befa1c0d43a 100644 --- a/libs/i18n/src/lib/languages/chinese.ts +++ b/libs/i18n/src/lib/languages/chinese.ts @@ -1,617 +1,4 @@ -import { FdLanguage } from '../models/lang'; +import json from '../translations/translations_zh-CN.json'; +import { loadJson } from '../utils/load-json'; -/** - * Default set of translations of Fundamental UI library for Chinese language - */ -export const FD_LANGUAGE_CHINESE: FdLanguage = { - coreMultiComboBox: { - selectAllLabel: '选择全部({selectedItems},共 {totalItems})' - }, - coreCarousel: { - leftNavigationBtnLabel: '上一项', - rightNavigationBtnLabel: '下一项' - }, - coreDatePicker: { - dateInputLabel: '日期输入', - dateRangeInputLabel: '日期范围输入', - displayCalendarToggleLabel: '打开选择器', - valueStateSuccessMessage: '值状态成功', - valueStateInformationMessage: '值状态信息', - valueStateWarningMessage: '值状态警告', - valueStateErrorMessage: '值状态错误' - }, - coreDatetimePicker: { - datetimeInputLabel: '日期与时间选择器', - displayDatetimeToggleLabel: '打开选择器', - displayTypeDateLabel: '日期', - displayTypeTimeLabel: '时间', - datetimeOkLabel: '确定', - datetimeCancelLabel: '取消' - }, - coreFeedListItem: { - moreLabel: '显示更多', - lessLabel: '显示更少' - }, - coreGridList: { - filterBarCancelButtonTitle: '取消', - listItemStatusAriaLabel: '列表项的状态:{status}。', - listItemCounterAriaLabel: '列表项有{count}个子项。', - listItemButtonDetailsTitle: '详情', - listItemButtonDeleteTitle: '删除', - listItemStatusContainsErrors: '有错误', - listItemStatusLocked: '被锁定', - listItemStatusDraft: '拟稿' - }, - coreMessageStrip: { - dismissLabel: '关闭' - }, - coreMultiInput: { - multiInputAriaLabel: 'Multi Value Input', - tokensCountText: ({ length }) => `Contains ${length || 'no'} token${length === 1 ? '' : 's'}.` - }, - coreNavigation: { - mainNavigation: 'Main Navigation', - navigationPath: 'Navigation Path' - }, - coreNestedList: { - linkItemAriaLabel: '树项目{itemDetails},{index} / {total} {selectedDescription}' - }, - coreOverflowLayout: { - moreItemsButton: '{count}项更多' - }, - corePagination: { - pageLabel: '第{pageNumber}页', - currentPageAriaLabel: '目前在第{pageNumber}页', - labelBeforeInputMobile: '页:', - labelAfterInputMobile: ' / {totalCount}', - inputAriaLabel: '页输入,目前所在页,页 {pageNumber} / {totalCount}', - itemsPerPageLabel: '每页显示结果:', - firstLabel: '第一页', - previousLabel: '上一页', - nextLabel: '下一页', - lastLabel: '最后一页', - ariaLabel: '分页', - totalResultsLabel: '总共{totalCount}个结果' - }, - coreProductSwitch: { - ariaLabel: '产品切换' - }, - coreShellbar: { - collapsedItemMenuLabel: '折叠的项目菜单', - cancel: 'Cancel', - search: 'Search' - }, - coreSlider: { - singleMinMaxDetails: '滑动条最小值为{min},最大值为{max}', - singleValueminDetails: '值等于{value}', - singleValuemaxDetails: '值等于{value}', - singleValueNowDetails: '目前值等于{value}', - multipleHandle1MinMaxDetails: '范围滑动条最小值为{min},最大值为{max}', - multipleHandle1ValueminDetails: '值等于{value}', - multipleHandle1ValuemaxDetails: '值等于{value}', - multipleHandle1ValueNowDetails: '目前值等于{value}', - multipleHandle2MinMaxDetails: '范围滑动条最小值为{min},最大值为{max}', - multipleHandle2ValueminDetails: '值等于{value}', - multipleHandle2ValuemaxDetails: '值等于{value}', - multipleHandle2ValueNowDetails: '目前值等于{value}' - }, - coreSplitButton: { - expandButtonAriaLabel: '更多动作', - arialLabel: '分体式按钮' - }, - coreSplitter: { - paginationItemAriaLabel: '分节' - }, - coreStepInput: { - incrementButtonTitle: '增加', - decrementButtonTitle: '减少', - ariaRoleDescription: '步进输入' - }, - coreSwitch: { - semanticAcceptLabel: '接受', - semanticDeclineLabel: '拒绝' - }, - coreTabs: { - tabListExpandButtonText: '更多' - }, - coreText: { - moreLabel: '显示更多', - lessLabel: '显示更少' - }, - coreTime: { - componentAriaName: '时间选择器', - increaseHoursLabel: '加一小时', - hoursLabel: '小时', - decreaseHoursLabel: '减一小时', - increaseMinutesLabel: '加一分钟', - minutesLabel: '分钟', - decreaseMinutesLabel: '减一分钟', - increaseSecondsLabel: '加一秒', - secondsLabel: '秒', - decreaseSecondsLabel: '减一秒', - increasePeriodLabel: '更换时间范围', - periodLabel: '时间范围', - decreasePeriodLabel: '更换时间范围', - navigationInstruction: '按上下方向键在列表中的项之间移动。按左右方向键切换列表。' - }, - coreTimePicker: { - timePickerInputLabel: '时间选择器', - timePickerButtonLabel: '打开选择器' - }, - coreToken: { - deleteButtonLabel: '可删除', - ariaRoleDescription: '标签' - }, - coreTokenizer: { - moreLabel: '{count}项更多' - }, - coreUploadCollection: { - menuOkText: '确定', - menuCancelText: '取消', - menuEditAriaLabel: '编辑', - menuDeleteAriaLabel: '删除', - menuOkAriaLabel: '确定', - menuCancelAriaLabel: '取消', - formItemPlaceholder: '文件名' - }, - coreWizard: { - ariaLabel: '向导' - }, - coreBreadcrumb: { - overflowTitleMore: '更多' - }, - platformActionBar: { - backButtonLabel: '返回' - }, - platformApprovalFlow: { - defaultWatchersLabel: '观察者', - defaultTitle: '审批流程', - nextButtonAriaLabel: '下一张', - prevButtonAriaLabel: '上一张', - editModeSaveButtonLabel: '保存', - editModeExitButtonLabel: '退出', - emptyTitle: '开始添加审批者与观察者', - emptyHint: '选择"添加节点"来添加审批者。选择“观察者”输入框来添加观察者。', - addNodeDialogHeaderAddApprovers: '添加审批者', - addNodeDialogHeaderEditApprover: '编辑审批者', - addNodeDialogHeaderAddApproverTeam: '用户/队', - addNodeDialogHeaderDetail: '详情', - addNodeDialogNodeType: '并行或串行', - addNodeDialogNodeTypeSerial: '串行', - addNodeDialogNodeTypeParallel: '并行', - addNodeDialogApproverType: '审批者类型', - addNodeDialogApproverTypeUser: '指定用户', - addNodeDialogApproverTypeTeamAnyone: '队中的任何人', - addNodeDialogApproverTypeTeamEveryone: '队中的所有人', - addNodeDialogUserOrTeam: '用户/队', - addNodeDialogAddToNext: '添加到下一个串行结点', - addNodeDialogDueDate: '到期日', - addNodeSearchPlaceholder: '搜索…', - addNodeAddActionBtnLabel: '添加', - addNodeCancelActionBtnLabel: '取消', - addNodeSelectApproverActionBtnLabel: '选择', - addNodeCancelApproverSelectionActionBtnLabel: '取消', - addNodeApproverOrTeamDetailsCloseActionBtnLabel: '关闭', - userDetailsHeader: '详情', - userDetailsSendReminderBtnLabel: '发送提醒', - userDetailsCancelBtnLabel: '取消', - messagesApproverAddedSuccess: '添加了1个审批者', - messagesTeamAddedSuccess: '添加了1个队', - messagesNodeEdited: '编辑了1个审批者', - messagesNodeRemovedSingular: '移除了1个审批者', - messagesNodeRemovedPlural: '审批者被移除了', - messagesTeamRemoved: '移除了1个队', - messagesErrorBuildGraph: '在试图建立图表时出现了一个错误。请检查初始数据。', - messagesUndoAction: '撤销', - nodeMembersCount: '{count}个成员', - nodeVariousTeams: '多个队', - nodeStatusDueToday: '今天到期', - nodeStatusDueInXDays: '{count}日后到期', - nodeStatusXDaysOverdue: '已过期{count}日', - nodeActionAddApproversBefore: '在此之前添加审批者', - nodeActionAddApproversAfter: '在此之后添加审批者', - nodeActionAddApproversParallel: '添加并行的审批者', - nodeActionEditApprover: '编辑审批者', - nodeActionRemove: '移除', - selectTypeDialogMoveApproverAs: '将审批者移动为', - selectTypeDialogParallelOrSerial: '并行或串行', - selectTypeDialogNodeTypeParallel: '并行审批者', - selectTypeDialogNodeTypeSerial: '串行审批者', - selectTypeDialogConfirmButton: '确认', - selectTypeDialogCancelButton: '取消', - toolbarAddStepButton: '添加结点', - toolbarEditButton: '编辑', - toolbarAddApproversBefore: '在此之前添加审批者', - toolbarAddApproversAfter: '在此之后添加审批者', - toolbarAddApproversParallel: '添加并行审批者', - toolbarRemove: '移除', - toolbarEditApprover: '编辑审批者', - watchersInputPlaceholder: '搜索…', - userListSelectedItemsCountSingular: '选择了1个项', - userListSelectedItemsCountPlural: '选择了{count}个项', - statusApproved: 'approved', - statusRejected: 'rejected', - statusInProgress: 'in progress', - statusNotStarted: 'not started' - }, - platformFeedInput: { - userTitle: '用户' - }, - platformVHD: { - selectionBarLabel: '选定的和有条件的项', - selectedAndConditionLabel: '选定的项和条件', - footerClearSelectedTitle: '清空选定的项', - footerClearSelectedAriaLabel: '清空选定的项', - searchButtonLabel: '搜索', - successButtonLabel: '确认', - cancelButtonLabel: '取消', - selectedEmptyLabel: '无选定的项和条件', - searchPlaceholder: '搜索…', - searchAdvancedSearchLabel: '筛选', - searchShowAdvancedSearchLabel: '显示筛选', - searchHideAdvancedSearchLabel: '隐藏筛选', - searchShowAllAdvancedSearchLabel: '显示所有筛选', - searchHideAllAdvancedSearchLabel: '隐藏所有筛选', - selectTabDisplayCountLabel: '项({count})', - selectTabMoreBtnLabel: '更多', - selectTabCountHiddenA11yLabel: '包含{rowCount}行和{colCount}列', - selectMobileTabBackBtnTitle: '返回', - selectMobileTabBtnOpenDialogLabel: '打开对话框', - selectMobileTabTitle: '{title}标签页', - selectMobileConditionEmpty: '空', - defineConditionTitle: '产品', - defineConditionSelectedValueHiddenA11yLabel: '选定的值 {value}', - defineConditionConditionsGroupHeaderInclude: '包含', - defineConditionConditionsGroupHeaderExclude: '不包含', - defineConditionFromPlaceholder: '从', - defineConditionToPlaceholder: '到', - defineConditionValuePlaceholder: '值', - defineConditionRemoveConditionButtonTitle: '移除条件', - defineConditionAddConditionButtonLabel: '添加', - defineConditionAddConditionButtonTitle: '添加条件', - defineConditionConditionStrategyLabelContains: '含有', - defineConditionConditionStrategyLabelEqualTo: '等于', - defineConditionConditionStrategyLabelBetween: '介于', - defineConditionConditionStrategyLabelStartsWith: '开头为', - defineConditionConditionStrategyLabelEndsWith: '结尾为', - defineConditionConditionStrategyLabelLessThan: '小于', - defineConditionConditionStrategyLabelLessThanEqual: '小于或等于', - defineConditionConditionStrategyLabelGreaterThan: '大于', - defineConditionConditionStrategyLabelGreaterThanEqual: '大于或等于', - defineConditionConditionStrategyLabelEmpty: '空', - defineConditionConditionStrategyLabelNotEqualTo: '不等于', - defineConditionConditionStrategyLabelNotEmpty: '不为空', - defineConditionMaxCountError: '请最多输入{count}个字符', - selectTabTitle: '从列表选', - searchTableEmptyMessage: '使用搜索获取结果', - defineTabTitle: '定义条件' - }, - platformCombobox: { - countListResultsSingular: '1条搜索结果', - countListResultsPlural: '{count}条搜索结果' - }, - platformMultiCombobox: { - inputGlyphAriaLabel: '选择选项', - inputIconTitle: '选择选项', - mobileShowAllItemsButton: '显示所有项', - mobileShowSelectedItemsButton: '显示选定的项' - }, - platformTextarea: { - counterMessageCharactersOverTheLimitSingular: '超出1个字符', - counterMessageCharactersOverTheLimitPlural: '超出{count}个字符', - counterMessageCharactersRemainingSingular: '还可以输入1个字符', - counterMessageCharactersRemainingPlural: '还可以输入{count}个字符' - }, - platformLink: { - roleDescriptionWithMedia: '媒体:{media}' - }, - platformList: { - loadingAriaLabel: '加载中' - }, - platformObjectListItem: { - detailsActionAriaLabel: '详情', - deleteActionAriaLabel: '删除' - }, - platformStandardListItem: { - detailsActionAriaLabel: '详情', - deleteActionAriaLabel: '删除' - }, - platformSearchField: { - clearButtonTitle: '清空', - submitButtonTitle: '搜索', - searchInputLabel: '搜索', - synchronizeButtonTitle: '同步', - searchSuggestionMessage: '找到{count}条建议。', - searchSuggestionNavigateMessage: '用上下方向键来导航' - }, - platformSmartFilterBar: { - searchPlaceholder: '搜索…', - submitButtonLabel: '确认', - filtersButtonLabel: '筛选({filtersCount})', - showFiltersButtonLabel: '显示筛选', - hideFiltersButtonLabel: '隐藏筛选', - defineConditionsRemoveConditionButtonTitle: '移除条件', - defineConditionsAddConditionButtonLabel: '添加条件', - defineConditionsSubmitButtonLabel: '确认', - defineConditionsCancelButton: '取消', - selectFiltersHeader: '筛选', - selectFiltersAvailableFiltersText: '可用的筛选', - selectFiltersFilterColumnLabel: '筛选', - selectFiltersActiveColumnLabel: '使用中', - selectFiltersSubmitButtonLabel: '确认', - selectFiltersCancelButton: '取消', - filterConditionContains: '含有', - filterConditionEqualTo: '等于', - filterConditionBetween: '介于', - filterConditionBeginsWith: '开头为', - filterConditionEndsWith: '结尾为', - filterConditionLessThan: '小于', - filterConditionLessThanOrEqualTo: '小于或等于', - filterConditionGreaterThan: '大于', - filterConditionGreaterThanOrEqualTo: '大于或等于', - filterConditionAfter: '日期之后', - filterConditionOnOrAfter: '此日期或之后', - filterConditionBefore: '日期之前', - filterConditionBeforeOrOn: '此日期或之前', - filterConditionValuePlaceholder: '值', - filterConditionValueFromPlaceholder: '从', - filterConditionValueToPlaceholder: '到', - settingsCategoryAll: '全选', - settingsCategoryVisible: '可见的', - settingsCategoryActive: '使用中的', - settingsCategoryVisibleAndActive: '可见的和使用中的', - settingsCategoryMandatory: '强制性的', - manageFieldConditions: 'Manage field conditions', - refreshButtonAriaLabel: 'Refresh' - }, - platformTable: { - headerMenuSortAsc: '升序排序', - headerMenuSortDesc: '降序排序', - headerMenuGroup: '分组', - headerMenuFreeze: '冻结', - headerMenuEndFreeze: 'Freeze to End', - headerMenuUnfreeze: '解冻标题菜单', - headerMenuFilter: '筛选', - defaultEmptyMessage: '没有找到相关数据', - emptyCell: '空', - noVisibleColumnsMessage: - 'Right now, there are no visible columns in the table. Please select the columns you need in the table settings.', - resetChangesButtonLabel: '重置', - editableCellNumberPlaceholder: '输入值', - editableCellDatePlaceholder: '输入值', - editableCellStringPlaceholder: '输入值', - P13ColumnsDialogHeader: '列', - P13ColumnsDialogSearchPlaceholder: '搜索…', - P13ColumnsDialogsShowSelected: '显示选定的', - P13ColumnsDialogShowAll: '显示全部 ', - P13ColumnsDialogSelectAll: '选择全部({selectedColumnsCount} / {selectableColumnsCount})', - P13ColumnsDialogConfirmationBtnLabel: '确定', - P13ColumnsDialogCancelBtnLabel: '取消', - P13ColumnsDialogMoveToTopBtn: '移至顶部', - P13ColumnsDialogMoveUpBtn: '上移', - P13ColumnsDialogMoveDownBtn: '下移', - P13ColumnsDialogMoveToBottomBtn: '移至底部', - P13FilterStrategyLabelBetween: '介于', - P13FilterStrategyLabelContains: '含有', - P13FilterStrategyLabelBeginsWith: '开头为', - P13FilterStrategyLabelEndsWith: '结尾为', - P13FilterStrategyLabelEqualTo: '等于', - P13FilterStrategyLabelGreaterThan: '大于', - P13FilterStrategyLabelGreaterThanOrEqualTo: '大于或等于', - P13FilterStrategyLabelLessThan: '小于', - P13FilterStrategyLabelLessThanOrEqualTo: '小于或等于', - P13FilterStrategyLabelAfter: '日期之后', - P13FilterStrategyLabelOnOrAfter: '此日期或之后', - P13FilterStrategyLabelBefore: '日期之前', - P13FilterStrategyLabelBeforeOrOn: '此日期或之前', - P13FilterStrategyLabelNotDefined: '未定义', - P13FilterBooleanOptionNotDefined: ' ', - P13FilterBooleanOptionTrue: '是', - P13FilterBooleanOptionFalse: '否', - P13FilterDialogHeader: '筛选方式', - P13FilterDialogIncludePanelTitleWithCount: '包括({count})', - P13FilterDialogIncludePanelTitleWithoutCount: '包括', - P13FilterDialogExcludePanelTitleWithCount: '排除({count})', - P13FilterDialogExcludePanelTitleWithoutCount: '排除', - P13FilterDialogRemoveFilterBtnTitle: '移除筛选', - P13FilterDialoAddFilterBtnTitle: '添加筛选', - P13FilterDialogConfirmationBtnLabel: '确定', - P13FilterDialogCancelBtnLabel: '取消', - P13GroupDialogHeader: '分组', - P13GroupDialogNoneSelectedColumnSelectPlaceholder: '(无)', - P13GroupDialogShowFieldAsColumnCheckboxLabel: '显示领域为列', - P13GroupDialogRemoveGroupBtnTitle: '移除', - P13GroupDialogAddNewGroupBtnTitle: '添加', - P13GroupDialogConfirmationBtnLabel: '确定', - P13GroupDialogCancelBtnLabel: '取消', - P13SortDialogHeader: '排序', - P13SortDialogNoneSelectedColumn: '(无)', - P13SortDialogNoneSelectedSorting: '(无)', - P13SortDialogSortOrderSelectOptionAsc: '升序', - P13SortDialogSortOrderSelectOptionDesc: '降序', - P13SortDialogRemoveSortBtnTitle: '移除', - P13SortDialogAddNewSortBtnTitle: '添加', - P13SortDialogConfirmationBtnLabel: '确定', - P13SortDialogCancelBtnLabel: '取消', - toolbarSearchPlaceholder: '搜索…', - toolbarActionCreateButtonLabel: '新建', - toolbarActionSaveButtonLabel: '保存', - toolbarActionCancelButtonLabel: '取消', - toolbarActionSortButtonTitle: '排序', - toolbarActionFilterButtonTitle: '筛选', - toolbarActionGroupButtonTitle: '分组', - toolbarActionColumnsButtonTitle: '列', - toolbarActionExpandAllButtonTitle: 'Expand all', - toolbarActionCollapseAllButtonTitle: 'Collapse all', - filterDialogNotFilteredLabel: '(未筛选)', - filterDialogFilterByLabel: '筛选方式:{filterLabel}', - filterDialogFilterTitle: '筛选', - filterDialogFilterBy: '筛选方式', - filterDialogConfirmBtnLabel: '确定', - filterDialogCancelBtnLabel: '取消', - groupDialogHeader: '分组', - groupDialogGroupOrderHeader: '分组顺序', - groupDialogGroupOrderAsc: '升序', - groupDialogGroupOrderDesc: '降序', - groupDialogGroupByHeader: '分组方式', - groupDialogNotGroupedLabel: '(未分组)', - groupDialogConfirmBtnLabel: '确定', - groupDialogCancelBtnLabel: '取消', - sortDialogHeader: '排序', - sortDialogSortOrderHeader: '排序顺序', - sortDialogSortOrderAsc: '升序', - sortDialogSortOrderDesc: '降序', - sortDialogSortByHeader: '排序方式', - sortDialogNotSortedLabel: '(未排序)', - sortDialogConfirmBtnLabel: '确定', - sortDialogCancelBtnLabel: '取消', - selectAllCheckboxLabel: 'Select all', - deselectAllCheckboxLabel: 'Deselect all', - deselectSingleRow: 'To deselect row, press SPACEBAR', - selectSingleRow: 'To select row, press SPACEBAR', - deselectSingleRowTitle: 'Click to deselect', - selectSingleRowTitle: 'Click to select' - }, - platformThumbnail: { - detailsGotoPreviousButtonTitle: '上一项', - detailsGotoNextButtonTitle: '下一项', - detailsDialogCloseBtnLabel: '关闭', - roleDescription: '图像' - }, - platformUploadCollection: { - moveToTitle: '移至', - moveToTitleFolder: '文件夹', - moveToNewFolderBtnLabel: '新建文件夹', - moveToAllFilesSubHeaderLabel: '全部文件', - moveToConfirmBtn: '移动', - moveToCloseBtn: '取消', - newFolderTitle: '新建文件夹', - newFolderAtRootInputLabel: '新建文件夹名称', - newFolderAtFolderInputLabel: '{folderName}内的新文件夹名称', - newFolderInputPlaceholder: '在此输入…', - newFolderInputErrorLabel: '请最多输入{count}个字符', - newFolderDialogCreateBtnLabel: '新建', - newFolderDialogCancelBtnLabel: '取消', - breadcrumbLabelAllFiles: '全部文件', - breadcrumbLabelAllFilesWithTotal: '全部文件({total})', - searchPlaceholder: '搜索…', - addBtnLabel: '添加', - newFolderBtnLabel: '新建文件夹', - moveToBtnLabel: '移至', - downloadBtnLabel: '下载', - updateVersionBtnLabel: '更新版本', - removeBtnLabel: '移除', - folderIconTitle: '文件夹图标', - fileIconTitle: '文件图标', - editFileNameInputPlaceholder: '输入一个名称', - editFileNameFileAlreadyExistsError: '该名称的文件已经存在', - editFileNameFolderAlreadyExistsError: '该名称的文件夹已经存在', - itemStatusSuccessful: '成功', - itemStatusUnsuccessful: '未能成功', - uploadNewFileAfterFailAction: 'Run', - cancelUploadNewFileAction: '取消', - itemMenuBtnTitle: '更多', - dragDropAreaText: '拖动文件进行上传', - noDataText: '没有发现文件', - noDataDescription: '投掷文件进行上传,或使用 "添加 "按钮。', - paginationTotal: '显示{from}-{to}个,总共{total}个', - resultsPerPage: '每页结果', - messageCreateFailed: '未能创建{folderName}。', - messageCreateSuccess: '{folderName}已被成功创建。', - messageUpdateVersionFailed: '未能更新{folderName}的版本。', - messageUpdateVersionSuccess: '{folderName}的版本已被更新。', - messageFileRenameFailed: '未能将"{from}"重新命名为"{to}"。', - messageFileRenameSuccess: '"{from}"已被重新命名为"{to}"。', - messageRemoveFoldersAndFilesFailed: '未能移除{foldersCount}个文件夹和{filesCount}个文件。', - messageRemoveFoldersAndFilesSuccess: '{foldersCount}个文件夹和{filesCount}个文件已被移除。', - messageRemoveFoldersFailed: '未能移除{foldersCount}个文件夹。', - messageRemoveFoldersSuccess: '{foldersCount}个文件夹已被移除。', - messageRemoveFilesFailed: '未能移除{filesCount}个文件。', - messageRemoveFilesSuccess: '{filesCount}个未见已被移除。', - messageRemoveFileOrFolderFailed: '未能移除{name}。', - messageRemoveFileOrFolderSuccess: '{name}已被移除。', - messageMoveFoldersAndFilesFailed: '未能将{foldersCount}个文件夹和{filesCount}个文件移至{to}。', - messageMoveFoldersAndFilesSuccess: '{foldersCount}个文件夹和{filesCount}个文件已被移至{to}。', - messageMoveFoldersFailed: '未能将{foldersCount}个文件夹移至{to}。', - messageMoveFoldersSuccess: '{foldersCount}个文件夹已被移至{to}。', - messageMoveFilesFailed: '未能将{filesCount}个文件移至{to}。', - messageMoveFilesSuccess: '{filesCount}个文件已被移至{to}。', - messageMoveFileOrFolderFailed: '未能将{name}移至{to}。', - messageMoveFileOrFolderSuccess: '{name}已被移至{to}。', - messageMoveRootFoldersAndFilesFailed: '未能将{foldersCount}个文件夹和{filesCount}个文件移至全部文件。', - messageMoveRootFoldersAndFilesSuccess: '{foldersCount}个文件夹和{filesCount}个文件已被移至全部文件。', - messageMoveRootFoldersFailed: '未能将{foldersCount}个文件夹移至全部文件。', - messageMoveRootFoldersSuccess: '{foldersCount}个文件夹已被移至到全部文件。', - messageMoveRootFilesFailed: '未能将{filesCount}个文件移至全部文件。', - messageMoveRootFilesSuccess: '{filesCount}个文件已被移至全部文件。', - messageMoveRootFileOrFolderFailed: '未能将{name}移至全部文件。', - messageMoveRootFileOrFolderSuccess: '{name}已被移至全部文件。', - messageFileTypeMismatchPlural: '{filesCount}个文件的类型不符合要求。允许的文件类型:{allowedTypes}。', - messageFileTypeMismatchSingular: '文件"{fileName}"的类型不符合要求。允许的文件类型:{allowedTypes}。', - messageFileSizeExceededPlural: '{filesCount}个文件超过了文件大小限制。允许的最大文件大小:{maxFileSize}。', - messageFileSizeExceededSingular: '文件"{fileName}"超过了文件大小限制。允许的最大文件大小:{maxFileSize}。', - messageFileNameLengthExceededPlural: - '{filesCount}个文件超过了文件名称长度限制。允许的文件名称长度:{maxFilenameLength}个字符。', - messageFileNameLengthExceededSingular: - '名称"{fileName}"超过了文件名称长度限制。允许的文件名称长度:{maxFilenameLength}个字符。' - }, - platformWizardGenerator: { - summarySectionEditStep: '编辑' - }, - platformMessagePopover: { - allErrors: 'All', - defaultErrors: { - email: 'Email is invalid', - max: 'The field exceeds maximum value', - maxLength: 'The field exceeds maximum length', - min: 'The field value is less than allowed', - minLength: 'The field length is less than allowed', - pattern: 'The field value is invalid', - required: 'The field is mandatory', - requiredTrue: 'The field is mandatory' - } - }, - platformVariantManagement: { - manage: 'Manage', - saveAs: 'Save as', - saveView: 'Save View', - save: 'Save', - myViews: 'My Views', - view: 'View', - setAsDefault: 'Set as Default', - public: 'Public', - applyAutomatically: 'Apply Automatically', - requiredFieldError: 'This field is required.', - nameTakenFieldError: 'Variant with such name already exists. Please chose a different name.', - cancel: 'Cancel', - manageViews: 'Manage Views', - markAsFavourite: 'Mark as Favourite', - sharing: 'Sharing', - default: 'Default', - createdBy: 'Created By', - removeVariant: 'Remove View', - search: 'Search', - access: { - public: 'Public', - private: 'Private' - } - }, - platformSelect: { - selectOptionLabel: '选择一个选项' - }, - fnSlider: { - minMaxDetails: '滑动条最小值为{min},最大值为{max}', - valueminDetails: '值等于{value}', - valuemaxDetails: '值等于{value}', - valueNowDetails: '目前值等于{value}' - }, - fnSwitch: { - semanticAcceptLabel: '接受', - semanticDeclineLabel: '拒绝' - }, - coreTree: { - expand: 'Expand node', - collapse: 'Collapse node', - noData: 'No data' - } -}; +export const FD_LANGUAGE_CHINESE = loadJson(json); diff --git a/libs/i18n/src/lib/languages/czech.ts b/libs/i18n/src/lib/languages/czech.ts index d7e588f36c6..42c6af5d89e 100644 --- a/libs/i18n/src/lib/languages/czech.ts +++ b/libs/i18n/src/lib/languages/czech.ts @@ -1,625 +1,4 @@ -import { FdLanguage } from '../models/lang'; +import json from '../translations/translations_cs-CZ.json'; +import { loadJson } from '../utils/load-json'; -/** - * Default set of translations of Fundamental UI library for Czech language - */ -export const FD_LANGUAGE_CZECH: FdLanguage = { - coreMultiComboBox: { - selectAllLabel: 'Vybrat vše ({selectedItems} z {totalItems})' - }, - coreCarousel: { - leftNavigationBtnLabel: 'Přejít na předchozí položku', - rightNavigationBtnLabel: 'Přejít na další položku' - }, - coreDatePicker: { - dateInputLabel: 'Date input', - dateRangeInputLabel: 'Date range input', - displayCalendarToggleLabel: 'Otevřete výběr', - valueStateSuccessMessage: 'Úspěšný stav hodnoty', - valueStateInformationMessage: 'Informativní stav hodnoty', - valueStateWarningMessage: 'Varovný stav hodnoty', - valueStateErrorMessage: 'Chybný stav hodnoty' - }, - coreDatetimePicker: { - datetimeInputLabel: 'Datetime input', - displayDatetimeToggleLabel: 'Přepínač zobrazení kalendáře', - displayTypeDateLabel: 'Datum', - displayTypeTimeLabel: 'Čas', - datetimeOkLabel: 'Ok', - datetimeCancelLabel: 'Zrušit' - }, - coreFeedListItem: { - moreLabel: 'Více', - lessLabel: 'Méně' - }, - coreGridList: { - filterBarCancelButtonTitle: 'Zrušit', - listItemStatusAriaLabel: 'Položka má stav. Stav: {status}', - listItemCounterAriaLabel: 'Položka má {count} potomků.', - listItemButtonDetailsTitle: 'Podrobnosti', - listItemButtonDeleteTitle: 'Vymazat', - listItemStatusContainsErrors: 'Obsahuje chyby', - listItemStatusLocked: 'Zamčený', - listItemStatusDraft: 'Koncept' - }, - coreMessageStrip: { - dismissLabel: 'Zrušit' - }, - coreMultiInput: { - multiInputAriaLabel: 'Multi Value Input', - tokensCountText: 'Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.' - }, - coreNavigation: { - mainNavigation: 'Main Navigation', - navigationPath: 'Navigation Path' - }, - coreNestedList: { - linkItemAriaLabel: 'Položka stromu {itemDetails}, {index} z {total}{selectedDescription}' - }, - coreOverflowLayout: { - moreItemsButton: '{count} více' - }, - corePagination: { - pageLabel: 'Strana {pageNumber}', - currentPageAriaLabel: 'Stránka {pageNumber} je aktuální stránka', - labelBeforeInputMobile: 'Strana:', - labelAfterInputMobile: 'z {totalCount}', - inputAriaLabel: 'Vstup stránky, aktuální stránka, stránka {pageNumber} z {totalCount}', - itemsPerPageLabel: 'Výsledky na stránku:', - firstLabel: 'První', - previousLabel: 'Předchozí', - nextLabel: 'Další', - lastLabel: 'Poslední', - ariaLabel: 'Stránkování', - totalResultsLabel: '{totalCount} Výsledky' - }, - coreProductSwitch: { - ariaLabel: 'Přepínač produktu' - }, - coreShellbar: { - collapsedItemMenuLabel: 'Nabídka sbalených položek', - cancel: 'Cancel', - search: 'Search' - }, - coreSlider: { - singleMinMaxDetails: 'Minimální hodnota posuvníku je {min}, maximální hodnota je {max}', - singleValueminDetails: 'Hodnota je {value}', - singleValuemaxDetails: 'Hodnota je {value}', - singleValueNowDetails: 'Aktuální hodnota je {value}', - multipleHandle1MinMaxDetails: 'Minimální hodnota posuvníku rozsahu je {min}, maximální hodnota je {max}', - multipleHandle1ValueminDetails: 'Hodnota je {value}', - multipleHandle1ValuemaxDetails: 'Hodnota je {value}', - multipleHandle1ValueNowDetails: 'Aktuální hodnota je {value}', - multipleHandle2MinMaxDetails: 'Minimální hodnota posuvníku rozsahu je {min}, maximální hodnota je {max}', - multipleHandle2ValueminDetails: 'Hodnota je {value}', - multipleHandle2ValuemaxDetails: 'Hodnota je {value}', - multipleHandle2ValueNowDetails: 'Aktuální hodnota je {value}' - }, - coreSplitButton: { - expandButtonAriaLabel: 'Více akcí', - arialLabel: 'Split button' - }, - coreSplitter: { - paginationItemAriaLabel: 'Sekce' - }, - coreStepInput: { - incrementButtonTitle: 'Zvýšit', - decrementButtonTitle: 'Snížit', - ariaRoleDescription: 'Step Input' - }, - coreSwitch: { - semanticAcceptLabel: 'Akceptovat', - semanticDeclineLabel: 'Odmítnout' - }, - coreTabs: { - tabListExpandButtonText: 'Více' - }, - coreText: { - moreLabel: 'Více', - lessLabel: 'Méně' - }, - coreTime: { - componentAriaName: 'Time picker', - increaseHoursLabel: 'Zvyšit hodiny', - hoursLabel: 'Hod', - decreaseHoursLabel: 'Snížit hodiny', - increaseMinutesLabel: 'Zvyšit minuty', - minutesLabel: 'Min', - decreaseMinutesLabel: 'Snížit minuty', - increaseSecondsLabel: 'Zvyšit sekundy', - secondsLabel: 'Sec', - decreaseSecondsLabel: 'Snížit sekundy', - increasePeriodLabel: 'Zvýšit období', - periodLabel: 'Období', - decreasePeriodLabel: 'Snížit období', - navigationInstruction: - 'Chcete-li se pohybovat mezi položkami v tomto seznamu, stiskněte horní nebo dolní šipku. ' + - 'Pro přepínání mezi seznamy stiskněte levou nebo pravou šipku.' - }, - coreTimePicker: { - timePickerInputLabel: 'Time picker input', - timePickerButtonLabel: 'Otevřete výběr' - }, - coreToken: { - deleteButtonLabel: 'Smazatelné', - ariaRoleDescription: 'token' - }, - coreTokenizer: { - moreLabel: '{count} více' - }, - coreUploadCollection: { - menuOkText: 'Ok', - menuCancelText: 'Zrušit', - menuEditAriaLabel: 'Upravit', - menuDeleteAriaLabel: 'Smazat', - menuOkAriaLabel: 'Upravit', - menuCancelAriaLabel: 'Zrušit', - formItemPlaceholder: 'Název souboru' - }, - coreWizard: { - ariaLabel: 'Wizard' - }, - coreBreadcrumb: { - overflowTitleMore: 'Více' - }, - platformActionBar: { - backButtonLabel: 'Vraťit se zpět' - }, - platformApprovalFlow: { - defaultWatchersLabel: 'Pozorovatelé', - defaultTitle: 'Schvalovací proces', - nextButtonAriaLabel: 'Přejít na další část', - prevButtonAriaLabel: 'Přejít na předchozí část', - editModeSaveButtonLabel: 'Uložit', - editModeExitButtonLabel: 'Odejít', - emptyTitle: 'Začněte přidávat schvalovatele a pozorovatele', - emptyHint: - 'Chcete-li přidat schvalovatele, klikněte na „Přidat krok“. Chcete-li přidat pozorovatele, klikněte na pole Pozorovatele.', - addNodeDialogHeaderAddApprovers: 'Přidat schvalovatele', - addNodeDialogHeaderEditApprover: 'Upravit schvalovatele', - addNodeDialogHeaderAddApproverTeam: 'Uživatel/Tým', - addNodeDialogHeaderDetail: 'Detail', - addNodeDialogNodeType: 'Paralelní nebo sériové', - addNodeDialogNodeTypeSerial: 'Sériové', - addNodeDialogNodeTypeParallel: 'Paralelní', - addNodeDialogApproverType: 'Typ schvalovatele', - addNodeDialogApproverTypeUser: 'A user', - addNodeDialogApproverTypeTeamAnyone: 'Anyone on the team', - addNodeDialogApproverTypeTeamEveryone: 'Všichni v týmu', - addNodeDialogUserOrTeam: 'Uživatel/Tým', - addNodeDialogAddToNext: 'Přidat k dalšímu sériovému uzlu', - addNodeDialogDueDate: 'Datum schválení', - addNodeSearchPlaceholder: 'Hledat', - addNodeAddActionBtnLabel: 'Přidat', - addNodeCancelActionBtnLabel: 'Zrušit', - addNodeSelectApproverActionBtnLabel: 'Select', - addNodeCancelApproverSelectionActionBtnLabel: 'Zrušit', - addNodeApproverOrTeamDetailsCloseActionBtnLabel: 'Zavřít', - userDetailsHeader: 'Detail', - userDetailsSendReminderBtnLabel: 'Send reminder', - userDetailsCancelBtnLabel: 'Zrušit', - messagesApproverAddedSuccess: 'Byl přidán 1 schvalovatel', - messagesTeamAddedSuccess: '1 tým byl přidán', - messagesNodeEdited: '1 schvalovatel byl upraven', - messagesNodeRemovedSingular: '1 schvalovatel byl odebrán', - messagesNodeRemovedPlural: 'Schvalovatelé byli odebráni', - messagesTeamRemoved: '1 tým byl odstraněn', - messagesErrorBuildGraph: 'There was an error when trying to build graph. Check the initial data.', - messagesUndoAction: 'Zpět', - nodeMembersCount: '{count} členů', - nodeVariousTeams: 'Různé týmy', - nodeStatusDueToday: 'Ke schválení dnes', - nodeStatusDueInXDays: ' Ke schválení za {count} dní', - nodeStatusXDaysOverdue: '{count} dní po schválení', - nodeActionAddApproversBefore: 'Přidejte schvalovatele před', - nodeActionAddApproversAfter: 'Přidejte schvalovatele za', - nodeActionAddApproversParallel: 'Přidejte paralelní schvalovatele', - nodeActionEditApprover: 'Upravit schvalovatele', - nodeActionRemove: 'Odstranit', - selectTypeDialogMoveApproverAs: 'Přesunout schvalovatele jako', - selectTypeDialogParallelOrSerial: 'Paralelní nebo sériové', - selectTypeDialogNodeTypeParallel: 'Paralelní schvalovatel', - selectTypeDialogNodeTypeSerial: 'Sériový schvalovatel', - selectTypeDialogConfirmButton: 'Potvrdit', - selectTypeDialogCancelButton: 'Zrušit', - toolbarAddStepButton: 'Přidat krok', - toolbarEditButton: 'Upravit', - toolbarAddApproversBefore: 'Přidejte schvalovatele před', - toolbarAddApproversAfter: 'Přidejte schvalovatele za', - toolbarAddApproversParallel: 'Přidejte paralelní schvalovatele', - toolbarRemove: 'Odstranit', - toolbarEditApprover: 'Upravit schvalovatele', - watchersInputPlaceholder: 'Hledej tady..', - userListSelectedItemsCountSingular: 'Vybrána 1 položka', - userListSelectedItemsCountPlural: 'Počet vybraných položek: {count}', - statusApproved: 'approved', - statusRejected: 'rejected', - statusInProgress: 'in progress', - statusNotStarted: 'not started' - }, - platformFeedInput: { - userTitle: 'Uživatel' - }, - platformVHD: { - selectionBarLabel: 'Vybrané a podmíněné položky', - selectedAndConditionLabel: 'Vybrané položky a podmínky', - footerClearSelectedTitle: 'vymazat vybrané položky', - footerClearSelectedAriaLabel: 'vymazat vybrané položky', - searchButtonLabel: 'Jdi', - successButtonLabel: 'OK', - cancelButtonLabel: 'Zrušit', - selectedEmptyLabel: 'Nejsou vybrány žádné položky ani podmínky', - searchPlaceholder: 'hledat', - searchAdvancedSearchLabel: 'Filtry', - searchShowAdvancedSearchLabel: 'Zobrazit filtry', - searchHideAdvancedSearchLabel: 'Skrýt filtry', - searchShowAllAdvancedSearchLabel: 'Zobrazit všechny filtry', - searchHideAllAdvancedSearchLabel: 'Skrýt všechny filtry', - selectTabDisplayCountLabel: 'Položky ({count})', - selectTabMoreBtnLabel: 'Více', - selectTabCountHiddenA11yLabel: 'obsahuje {rowCount} řádků a {colCount} sloupců', - selectMobileTabBackBtnTitle: 'Zpět', - selectMobileTabBtnOpenDialogLabel: 'Otevřít dialog', - selectMobileTabTitle: 'Karta {title}', - selectMobileConditionEmpty: 'Prázdný', - defineConditionTitle: 'Produkt', - defineConditionSelectedValueHiddenA11yLabel: 'vybraná hodnota {hodnota}', - defineConditionConditionsGroupHeaderInclude: 'Zahrnout', - defineConditionConditionsGroupHeaderExclude: 'Vyloučit', - defineConditionFromPlaceholder: 'od', - defineConditionToPlaceholder: 'do', - defineConditionValuePlaceholder: 'hodnota', - defineConditionRemoveConditionButtonTitle: 'Odebrat podmínku', - defineConditionAddConditionButtonLabel: 'Přidat', - defineConditionAddConditionButtonTitle: 'Přidat podmínku', - defineConditionConditionStrategyLabelContains: 'obsahuje', - defineConditionConditionStrategyLabelEqualTo: 'rovná', - defineConditionConditionStrategyLabelBetween: 'mezi', - defineConditionConditionStrategyLabelStartsWith: 'začíná s', - defineConditionConditionStrategyLabelEndsWith: 'končí s', - defineConditionConditionStrategyLabelLessThan: 'méně než', - defineConditionConditionStrategyLabelLessThanEqual: 'méně než rovné', - defineConditionConditionStrategyLabelGreaterThan: 'větší než', - defineConditionConditionStrategyLabelGreaterThanEqual: 'větší než rovno', - defineConditionConditionStrategyLabelEmpty: 'prázdný', - defineConditionConditionStrategyLabelNotEqualTo: 'nerovná se', - defineConditionConditionStrategyLabelNotEmpty: 'není prázdný', - defineConditionMaxCountError: 'Zadejte hodnotu s maximálně {count} znaků', - selectTabTitle: 'Vyberte ze seznamu', - searchTableEmptyMessage: 'K získání výsledků použijte vyhledávání', - defineTabTitle: 'Definujte podmínky' - }, - platformCombobox: { - countListResultsSingular: '1 položka výsledkové listiny', - countListResultsPlural: '{count} položek výsledkového seznamu' - }, - platformMultiCombobox: { - inputGlyphAriaLabel: 'Vyberte Možnosti', - inputIconTitle: 'Vyberte Možnosti', - mobileShowAllItemsButton: 'Zobrazit všechny položky', - mobileShowSelectedItemsButton: 'Zobrazit vybrané položky' - }, - platformTextarea: { - counterMessageCharactersOverTheLimitSingular: '1 znak nad limit', - counterMessageCharactersOverTheLimitPlural: '{count} znaků překračuje limit', - counterMessageCharactersRemainingSingular: 'Zbývá 1 znak', - counterMessageCharactersRemainingPlural: 'Zbývá {count} znaků' - }, - platformLink: { - roleDescriptionWithMedia: 'Médium: {media}' - }, - platformList: { - loadingAriaLabel: 'načítání' - }, - platformObjectListItem: { - detailsActionAriaLabel: 'detail', - deleteActionAriaLabel: 'vymazat' - }, - platformStandardListItem: { - detailsActionAriaLabel: 'detail', - deleteActionAriaLabel: 'vymazat' - }, - platformSearchField: { - clearButtonTitle: 'Vymazat', - submitButtonTitle: 'Search', - searchInputLabel: 'Search', - synchronizeButtonTitle: 'Synchronizovat', - searchSuggestionMessage: 'Počet nalezených návrhů: {count}.', - searchSuggestionNavigateMessage: 'k navigaci použijte šipky nahoru a dolů' - }, - platformSmartFilterBar: { - searchPlaceholder: 'Vyhledávání', - submitButtonLabel: 'Jdi', - filtersButtonLabel: 'Filtry ({filtersCount})', - showFiltersButtonLabel: 'Zobrazit filtry', - hideFiltersButtonLabel: 'Skrýt filtry', - defineConditionsRemoveConditionButtonTitle: 'Odstraňte podmínku', - defineConditionsAddConditionButtonLabel: 'Přidat podmínku', - defineConditionsSubmitButtonLabel: 'Jdi', - defineConditionsCancelButton: 'Zrušit', - selectFiltersHeader: 'Filtry', - selectFiltersAvailableFiltersText: 'Dostupné filtry', - selectFiltersFilterColumnLabel: 'Filtr', - selectFiltersActiveColumnLabel: 'Aktivní', - selectFiltersSubmitButtonLabel: 'Jdi', - selectFiltersCancelButton: 'Zrušit', - filterConditionContains: 'obsahuje', - filterConditionEqualTo: 'rovná', - filterConditionBetween: 'mezi', - filterConditionBeginsWith: 'začíná s', - filterConditionEndsWith: 'končí s', - filterConditionLessThan: 'méně než', - filterConditionLessThanOrEqualTo: 'menší nebo rovno', - filterConditionGreaterThan: 'větší než', - filterConditionGreaterThanOrEqualTo: 'větší nebo rovno', - filterConditionAfter: 'po', - filterConditionOnOrAfter: 'na nebo po', - filterConditionBefore: 'před', - filterConditionBeforeOrOn: 'před nebo na', - filterConditionValuePlaceholder: 'hodnota', - filterConditionValueFromPlaceholder: 'z', - filterConditionValueToPlaceholder: 'na', - settingsCategoryAll: 'Všechno', - settingsCategoryVisible: 'Viditelné', - settingsCategoryActive: 'Aktivní', - settingsCategoryVisibleAndActive: 'Viditelné a aktivní', - settingsCategoryMandatory: 'Povinné', - manageFieldConditions: 'Manage field conditions', - refreshButtonAriaLabel: 'Refresh' - }, - platformTable: { - headerMenuSortAsc: 'Seřadit vzestupně', - headerMenuSortDesc: 'Seřadit sestupně', - headerMenuGroup: 'Skupina', - headerMenuFreeze: 'Zmrazit', - headerMenuEndFreeze: 'Freeze to End', - headerMenuUnfreeze: 'HeaderMenuUnfreeze', - headerMenuFilter: 'Filtr', - defaultEmptyMessage: 'Nenalezena žádná data', - emptyCell: 'Prázdnýyoge', - noVisibleColumnsMessage: - 'Right now, there are no visible columns in the table. Please select the columns you need in the table settings.', - resetChangesButtonLabel: 'Resetovat', - editableCellNumberPlaceholder: 'Zadejte hodnotu', - editableCellDatePlaceholder: 'Zadejte hodnotu', - editableCellStringPlaceholder: 'Zadejte hodnotu', - P13ColumnsDialogHeader: 'Sloupce', - P13ColumnsDialogSearchPlaceholder: 'Vyhledávání', - P13ColumnsDialogsShowSelected: 'Zobrazit vybrané', - P13ColumnsDialogShowAll: 'Ukázat vše', - P13ColumnsDialogSelectAll: 'Vybrat vše ({selectedColumnsCount}/{selectableColumnsCount})', - P13ColumnsDialogConfirmationBtnLabel: 'OK', - P13ColumnsDialogCancelBtnLabel: 'Zrušit', - P13ColumnsDialogMoveToTopBtn: 'Přejít na začátek', - P13ColumnsDialogMoveUpBtn: 'Posunout nahoru', - P13ColumnsDialogMoveDownBtn: 'Posunout dolů', - P13ColumnsDialogMoveToBottomBtn: 'Přesunout na konec', - P13FilterStrategyLabelBetween: 'mezi', - P13FilterStrategyLabelContains: 'obsahuje', - P13FilterStrategyLabelBeginsWith: 'začíná s', - P13FilterStrategyLabelEndsWith: 'končí s', - P13FilterStrategyLabelEqualTo: 'rovná', - P13FilterStrategyLabelGreaterThan: 'větší než', - P13FilterStrategyLabelGreaterThanOrEqualTo: 'větší nebo rovno', - P13FilterStrategyLabelLessThan: 'méně než', - P13FilterStrategyLabelLessThanOrEqualTo: 'menší nebo rovno', - P13FilterStrategyLabelAfter: 'po', - P13FilterStrategyLabelOnOrAfter: 'na nebo po', - P13FilterStrategyLabelBefore: 'před', - P13FilterStrategyLabelBeforeOrOn: 'před nebo na', - P13FilterStrategyLabelNotDefined: 'Není definovaný', - P13FilterBooleanOptionNotDefined: ' ', - P13FilterBooleanOptionTrue: 'Ano', - P13FilterBooleanOptionFalse: 'Ne', - P13FilterDialogHeader: 'Filtrovat podle', - P13FilterDialogIncludePanelTitleWithCount: 'Zahrnout ({count})', - P13FilterDialogIncludePanelTitleWithoutCount: 'Zahrnout', - P13FilterDialogExcludePanelTitleWithCount: 'Vyloučit ({count})', - P13FilterDialogExcludePanelTitleWithoutCount: 'Vyloučit', - P13FilterDialogRemoveFilterBtnTitle: 'Odstraňte filtr', - P13FilterDialoAddFilterBtnTitle: 'Přidat filtr', - P13FilterDialogConfirmationBtnLabel: 'OK', - P13FilterDialogCancelBtnLabel: 'Zrušit', - P13GroupDialogHeader: 'Skupina', - P13GroupDialogNoneSelectedColumnSelectPlaceholder: '(žádný)', - P13GroupDialogShowFieldAsColumnCheckboxLabel: 'Zobrazit pole jako sloupec', - P13GroupDialogRemoveGroupBtnTitle: 'Odstranit', - P13GroupDialogAddNewGroupBtnTitle: 'Přidat nový', - P13GroupDialogConfirmationBtnLabel: 'OK', - P13GroupDialogCancelBtnLabel: 'Zrušit', - P13SortDialogHeader: 'Seřadit', - P13SortDialogNoneSelectedColumn: '(žádný)', - P13SortDialogNoneSelectedSorting: '(žádný)', - P13SortDialogSortOrderSelectOptionAsc: 'Vzestupně', - P13SortDialogSortOrderSelectOptionDesc: 'Klesající', - P13SortDialogRemoveSortBtnTitle: 'Odstranit', - P13SortDialogAddNewSortBtnTitle: 'Přidat nový', - P13SortDialogConfirmationBtnLabel: 'OK', - P13SortDialogCancelBtnLabel: 'Zrušit', - toolbarSearchPlaceholder: 'Vyhledávání', - toolbarActionCreateButtonLabel: 'Vytvořit', - toolbarActionSaveButtonLabel: 'Uložit', - toolbarActionCancelButtonLabel: 'Zrušit', - toolbarActionSortButtonTitle: 'Seřadit', - toolbarActionFilterButtonTitle: 'Filtr', - toolbarActionGroupButtonTitle: 'Skupina', - toolbarActionColumnsButtonTitle: 'Sloupce', - toolbarActionExpandAllButtonTitle: 'Rozbalit vše', - toolbarActionCollapseAllButtonTitle: 'Sbalit vše', - filterDialogNotFilteredLabel: '(Nefiltrováno)', - filterDialogFilterByLabel: 'Filtrovat podle: {filterLabel}', - filterDialogFilterTitle: 'Filtr', - filterDialogFilterBy: 'Filtrovat podle', - filterDialogConfirmBtnLabel: 'OK', - filterDialogCancelBtnLabel: 'Zrušení', - groupDialogHeader: 'Skupina', - groupDialogGroupOrderHeader: 'Seřadit Skupinově', - groupDialogGroupOrderAsc: 'Vzestupně', - groupDialogGroupOrderDesc: 'Klesající', - groupDialogGroupByHeader: 'Seskupit podle', - groupDialogNotGroupedLabel: '(Neseskupeno)', - groupDialogConfirmBtnLabel: 'OK', - groupDialogCancelBtnLabel: 'Zrušit', - sortDialogHeader: 'Sort', - sortDialogSortOrderHeader: 'Pořadí řazení', - sortDialogSortOrderAsc: 'Vzestupně', - sortDialogSortOrderDesc: 'Klesající', - sortDialogSortByHeader: 'Seřazeno podle', - sortDialogNotSortedLabel: '(Neřazeno)', - sortDialogConfirmBtnLabel: 'OK', - sortDialogCancelBtnLabel: 'Zrušit', - selectAllCheckboxLabel: 'Select all', - deselectAllCheckboxLabel: 'Deselect all', - deselectSingleRow: 'To deselect row, press SPACEBAR', - selectSingleRow: 'To select row, press SPACEBAR', - deselectSingleRowTitle: 'Click to deselect', - selectSingleRowTitle: 'Click to select' - }, - platformThumbnail: { - detailsGotoPreviousButtonTitle: 'Go to Previous', - detailsGotoNextButtonTitle: 'Přejděte na Další', - detailsDialogCloseBtnLabel: 'Zavřít', - roleDescription: 'Obraz' - }, - platformUploadCollection: { - moveToTitle: 'Přesunout do', - moveToTitleFolder: 'Složka', - moveToNewFolderBtnLabel: 'Nová složka', - moveToAllFilesSubHeaderLabel: 'Všechny soubory', - moveToConfirmBtn: 'Přesunout', - moveToCloseBtn: 'Zrušit', - newFolderTitle: 'Nová složka', - newFolderAtRootInputLabel: 'Název nové složky', - newFolderAtFolderInputLabel: 'Název nové složky uvnitř {folderName}', - newFolderInputPlaceholder: 'Napište sem..', - newFolderInputErrorLabel: 'Maximální povolený počet znaků: {count}', - newFolderDialogCreateBtnLabel: 'Vytvořit', - newFolderDialogCancelBtnLabel: 'Zrušit', - breadcrumbLabelAllFiles: 'All files', - breadcrumbLabelAllFilesWithTotal: 'Všechny soubory ({total})', - searchPlaceholder: 'Vyhledávání', - addBtnLabel: 'Přidat', - newFolderBtnLabel: 'Nová složka', - moveToBtnLabel: 'Přesunout do', - downloadBtnLabel: 'Stažení', - updateVersionBtnLabel: 'Aktualizovat verzi', - removeBtnLabel: 'Odstranit', - folderIconTitle: 'Ikona složky', - fileIconTitle: 'Ikona souboru', - editFileNameInputPlaceholder: 'Zadejte jméno', - editFileNameFileAlreadyExistsError: 'Soubor s tímto názvem již existuje', - editFileNameFolderAlreadyExistsError: 'Složka s tímto názvem již existuje', - itemStatusSuccessful: 'Úspěšný', - itemStatusUnsuccessful: 'Neúspěšný', - uploadNewFileAfterFailAction: 'Spustit', - cancelUploadNewFileAction: 'Zrušit', - itemMenuBtnTitle: 'Více', - dragDropAreaText: 'Přetáhněte soubory k nahrání', - noDataText: 'Nebyly nalezeny žádné soubory', - noDataDescription: 'Přetáhněte soubory, které chcete nahrát, nebo použijte tlačítko „Přidat“.', - paginationTotal: 'Zobrazeno {from}-{to} z {to}', - resultsPerPage: 'Výsledky na stránku', - messageCreateFailed: 'Vytvoření {folderName} se nezdařilo.', - messageCreateSuccess: '{folderName} byl vytvořen.', - messageUpdateVersionFailed: 'Aktualizace verze {folderName} se nezdařila.', - messageUpdateVersionSuccess: 'Verze {folderName} byla aktualizována.', - messageFileRenameFailed: 'Nepodařilo se přejmenovat "{from}" na "{to}."', - messageFileRenameSuccess: '"{from}" bylo přejmenováno na "{to}".', - messageRemoveFoldersAndFilesFailed: 'Nepodařilo se odstranit {foldersCount} složky a {filesCount} soubory.', - messageRemoveFoldersAndFilesSuccess: 'Bylo odstraněno {foldersCount} složek a {filesCount} souborů.', - messageRemoveFoldersFailed: 'Nepodařilo se odstranit složky ({foldersCount}).', - messageRemoveFoldersSuccess: 'Složky ({foldersCount}) byly odstraněny.', - messageRemoveFilesFailed: 'Nepodařilo se odstranit {filesCount} soubory.', - messageRemoveFilesSuccess: 'Soubory {filesCount} byly odstraněny.', - messageRemoveFileOrFolderFailed: 'Nepodařilo se odstranit {name}.', - messageRemoveFileOrFolderSuccess: '{name} bylo odstraněno.', - messageMoveFoldersAndFilesFailed: - 'Nepodařilo se přesunout {foldersCount} složky a {filesCount} soubory do {to}.', - messageMoveFoldersAndFilesSuccess: 'Složky {foldersCount} a soubory {filesCount} byly přesunuty do {to}.', - messageMoveFoldersFailed: 'Přesunutí {foldersCount} složek do {to} se nezdařilo.', - messageMoveFoldersSuccess: 'Složky {foldersCount} byly přesunuty do {to}.', - messageMoveFilesFailed: 'Přesunutí {filesCount} souborů do {to} se nezdařilo.', - messageMoveFilesSuccess: 'Soubory {filesCount} byly přesunuty do {to}.', - messageMoveFileOrFolderFailed: 'Nepodařilo se přesunout {name} do {do}.', - messageMoveFileOrFolderSuccess: '{name} bylo přesunuto do {do}.', - messageMoveRootFoldersAndFilesFailed: - 'Nepodařilo se přesunout {foldersCount} složky a {filesCount} soubory do všech souborů.', - messageMoveRootFoldersAndFilesSuccess: - '{foldersCount} složky a {filesCount} soubory byly přesunuty do všech souborů.', - messageMoveRootFoldersFailed: 'Přesunutí {foldersCount} složek do všech souborů se nezdařilo.', - messageMoveRootFoldersSuccess: 'Složky {foldersCount} byly přesunuty do všech souborů.', - messageMoveRootFilesFailed: 'Nepodařilo se přesunout {filesCount} soubory do všech souborů.', - messageMoveRootFilesSuccess: 'Soubory {filesCount} byly přesunuty do všech souborů.', - messageMoveRootFileOrFolderFailed: 'Nepodařilo se přesunout {name} do všech souborů.', - messageMoveRootFileOrFolderSuccess: '{name} bylo přesunuto do všech souborů.', - messageFileTypeMismatchPlural: 'Soubory {filesCount} mají nesprávný typ. Povolené typy: {allowTypes}.', - messageFileTypeMismatchSingular: 'Soubor "{fileName}" má nesprávný typ. Povolené typy: {allowTypes}.', - messageFileSizeExceededPlural: - '{filesCount} soubory překročily maximální velikost souboru. Povolená maximální velikost souboru: {maxFileSize}.', - messageFileSizeExceededSingular: - 'Soubor "{fileName}" překročil maximální velikost souboru. Povolená maximální velikost souboru: {maxFileSize}.', - messageFileNameLengthExceededPlural: - '{filesCount} soubory překročily maximální délku souboru. Povolená délka názvu souboru: {maxFilenameLength} znaků.', - messageFileNameLengthExceededSingular: - 'Název "{fileName}" překročil maximální délku souboru. Povolená délka názvu souboru: {maxFilenameLength} znaků.' - }, - platformWizardGenerator: { - summarySectionEditStep: 'Upravit' - }, - platformMessagePopover: { - allErrors: 'All', - defaultErrors: { - email: 'Email is invalid', - max: 'The field exceeds maximum value', - maxLength: 'The field exceeds maximum length', - min: 'The field value is less than allowed', - minLength: 'The field length is less than allowed', - pattern: 'The field value is invalid', - required: 'The field is mandatory', - requiredTrue: 'The field is mandatory' - } - }, - platformVariantManagement: { - manage: 'Manage', - saveAs: 'Save as', - saveView: 'Save View', - save: 'Save', - myViews: 'My Views', - view: 'View', - setAsDefault: 'Set as Default', - public: 'Public', - applyAutomatically: 'Apply Automatically', - requiredFieldError: 'This field is required.', - nameTakenFieldError: 'Variant with such name already exists. Please chose a different name.', - cancel: 'Cancel', - manageViews: 'Manage Views', - markAsFavourite: 'Mark as Favourite', - sharing: 'Sharing', - default: 'Default', - createdBy: 'Created By', - removeVariant: 'Remove View', - search: 'Search', - access: { - public: 'Public', - private: 'Private' - } - }, - platformSelect: { - selectOptionLabel: 'Vyberte možnost' - }, - fnSlider: { - minMaxDetails: 'Minimální hodnota posuvníku je {min}, maximální hodnota je {max}', - valueminDetails: 'Hodnota je {hodnota}', - valuemaxDetails: 'Hodnota je {hodnota}', - valueNowDetails: 'Aktuální hodnota je {hodnota}' - }, - fnSwitch: { - semanticAcceptLabel: 'Akceptovat', - semanticDeclineLabel: 'Odmítnout' - }, - coreTree: { - expand: 'Expand node', - collapse: 'Collapse node', - noData: 'No data' - } -}; +export const FD_LANGUAGE_CZECH = loadJson(json); diff --git a/libs/i18n/src/lib/languages/english.ts b/libs/i18n/src/lib/languages/english.ts index 22280a94cfc..597753ea79b 100644 --- a/libs/i18n/src/lib/languages/english.ts +++ b/libs/i18n/src/lib/languages/english.ts @@ -1,622 +1,4 @@ -import { FdLanguage } from '../models/lang'; +import json from '../translations/translations_en-US.json'; +import { loadJson } from '../utils/load-json'; -/** - * Default set of translations of Fundamental UI library for English language - */ -export const FD_LANGUAGE_ENGLISH: FdLanguage = { - coreMultiComboBox: { - selectAllLabel: 'Select all ({selectedItems} of {totalItems})' - }, - coreCarousel: { - leftNavigationBtnLabel: 'Go to previous item', - rightNavigationBtnLabel: 'Go to next item' - }, - coreDatePicker: { - dateInputLabel: 'Date input', - dateRangeInputLabel: 'Date range input', - displayCalendarToggleLabel: 'Open picker', - valueStateSuccessMessage: 'Value state Success', - valueStateInformationMessage: 'Value state Information', - valueStateWarningMessage: 'Value state Warning', - valueStateErrorMessage: 'Value state Error' - }, - coreDatetimePicker: { - datetimeInputLabel: 'Datetime input', - displayDatetimeToggleLabel: 'Display calendar toggle', - displayTypeDateLabel: 'Date', - displayTypeTimeLabel: 'Time', - datetimeOkLabel: 'Ok', - datetimeCancelLabel: 'Cancel' - }, - coreFeedListItem: { - moreLabel: '{count} more', - lessLabel: 'Less' - }, - coreGridList: { - filterBarCancelButtonTitle: 'Cancel', - listItemStatusAriaLabel: 'Item has status. Status: {status}.', - listItemCounterAriaLabel: 'Item has {count} children.', - listItemButtonDetailsTitle: 'Details', - listItemButtonDeleteTitle: 'Delete', - listItemStatusContainsErrors: 'Contains errors', - listItemStatusLocked: 'Locked', - listItemStatusDraft: 'Draft' - }, - coreMessageStrip: { - dismissLabel: 'Dismiss' - }, - coreMultiInput: { - multiInputAriaLabel: 'Multi Value Input', - tokensCountText: 'Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.' - }, - coreNavigation: { - mainNavigation: 'Main Navigation', - navigationPath: 'Navigation Path' - }, - coreNestedList: { - linkItemAriaLabel: 'Tree Item {itemDetails}, {index} of {total}{selectedDescription}' - }, - coreOverflowLayout: { - moreItemsButton: '{count} more' - }, - corePagination: { - pageLabel: 'Page {pageNumber}', - currentPageAriaLabel: 'Page {pageNumber} is current page', - labelBeforeInputMobile: 'Page:', - labelAfterInputMobile: 'of {totalCount}', - inputAriaLabel: 'Page input, Current page, Page {pageNumber} of {totalCount}', - itemsPerPageLabel: 'Results per Page:', - firstLabel: 'First', - previousLabel: 'Previous', - nextLabel: 'Next', - lastLabel: 'Last', - ariaLabel: 'Pagination', - totalResultsLabel: '{totalCount} Results' - }, - coreProductSwitch: { - ariaLabel: 'Product Switch' - }, - coreShellbar: { - collapsedItemMenuLabel: 'Collapsed Item Menu', - cancel: 'Cancel', - search: 'Search' - }, - coreSlider: { - singleMinMaxDetails: 'Slider minimum value is {min}, maximum value is {max}', - singleValueminDetails: 'Value is {value}', - singleValuemaxDetails: 'Value is {value}', - singleValueNowDetails: 'Current value is {value}', - multipleHandle1MinMaxDetails: 'Range slider minimum value is {min}, maximum value is {max}', - multipleHandle1ValueminDetails: 'Value is {value}', - multipleHandle1ValuemaxDetails: 'Value is {value}', - multipleHandle1ValueNowDetails: 'Current value is {value}', - multipleHandle2MinMaxDetails: 'Range slider minimum value is {min}, maximum value is {max}', - multipleHandle2ValueminDetails: 'Value is {value}', - multipleHandle2ValuemaxDetails: 'Value is {value}', - multipleHandle2ValueNowDetails: 'Current value is {value}' - }, - coreSplitButton: { - expandButtonAriaLabel: 'More actions', - arialLabel: 'Split button' - }, - coreSplitter: { - paginationItemAriaLabel: 'Section' - }, - coreStepInput: { - incrementButtonTitle: 'Increment', - decrementButtonTitle: 'Decrement', - ariaRoleDescription: 'Step Input' - }, - coreSwitch: { - semanticAcceptLabel: 'Accept', - semanticDeclineLabel: 'Decline' - }, - coreTabs: { - tabListExpandButtonText: 'More' - }, - coreText: { - moreLabel: '{count} more', - lessLabel: 'Less' - }, - coreTime: { - componentAriaName: 'Time picker', - increaseHoursLabel: 'Increase hours', - hoursLabel: 'Hrs', - decreaseHoursLabel: 'Decrease hours', - increaseMinutesLabel: 'Increase minutes', - minutesLabel: 'Min', - decreaseMinutesLabel: 'Decrease minutes', - increaseSecondsLabel: 'Increase seconds', - secondsLabel: 'Sec', - decreaseSecondsLabel: 'Decrease seconds', - increasePeriodLabel: 'Increase period', - periodLabel: 'Period', - decreasePeriodLabel: 'Decrease period', - navigationInstruction: - 'To move between items in this list, press top arrow or bottom arrow. To switch between lists press left arrow or right arrow.' - }, - coreTimePicker: { - timePickerInputLabel: 'Time picker input', - timePickerButtonLabel: 'Open picker' - }, - coreToken: { - deleteButtonLabel: 'Deletable', - ariaRoleDescription: 'token' - }, - coreTokenizer: { - moreLabel: '{count} more' - }, - coreUploadCollection: { - menuOkText: 'Ok', - menuCancelText: 'Cancel', - menuEditAriaLabel: 'Edit', - menuDeleteAriaLabel: 'Delete', - menuOkAriaLabel: 'Edit', - menuCancelAriaLabel: 'Cancel', - formItemPlaceholder: 'Filename' - }, - coreWizard: { - ariaLabel: 'Wizard' - }, - coreBreadcrumb: { - overflowTitleMore: 'More' - }, - platformActionBar: { - backButtonLabel: 'Go Back' - }, - platformApprovalFlow: { - defaultWatchersLabel: 'Watchers', - defaultTitle: 'Approval process', - nextButtonAriaLabel: 'Go to next slide', - prevButtonAriaLabel: 'Go to previous slide', - editModeSaveButtonLabel: 'Save', - editModeExitButtonLabel: 'Exit', - emptyTitle: 'Start adding approvers and watchers', - emptyHint: 'To add approvers click "Add a step". To add watchers, click the Watchers field.', - addNodeDialogHeaderAddApprovers: 'Add approvers', - addNodeDialogHeaderEditApprover: 'Edit approver', - addNodeDialogHeaderAddApproverTeam: 'User/Team', - addNodeDialogHeaderDetail: 'Detail', - addNodeDialogNodeType: 'Parallel or serial', - addNodeDialogNodeTypeSerial: 'Serial', - addNodeDialogNodeTypeParallel: 'Parallel', - addNodeDialogApproverType: 'Approver type', - addNodeDialogApproverTypeUser: 'A user', - addNodeDialogApproverTypeTeamAnyone: 'Anyone on the team', - addNodeDialogApproverTypeTeamEveryone: 'Everyone on the team', - addNodeDialogUserOrTeam: 'User/Team', - addNodeDialogAddToNext: 'Add to the next serial node', - addNodeDialogDueDate: 'Due date', - addNodeSearchPlaceholder: 'Search', - addNodeAddActionBtnLabel: 'Add', - addNodeCancelActionBtnLabel: 'Cancel', - addNodeSelectApproverActionBtnLabel: 'Select', - addNodeCancelApproverSelectionActionBtnLabel: 'Cancel', - addNodeApproverOrTeamDetailsCloseActionBtnLabel: 'Close', - userDetailsHeader: 'Detail', - userDetailsSendReminderBtnLabel: 'Send reminder', - userDetailsCancelBtnLabel: 'Cancel', - messagesApproverAddedSuccess: '1 approver has been added', - messagesTeamAddedSuccess: '1 team has been added', - messagesNodeEdited: '1 approver has been edited', - messagesNodeRemovedSingular: '1 approver has been removed', - messagesNodeRemovedPlural: 'Approvers have been removed', - messagesTeamRemoved: '1 team has been removed', - messagesErrorBuildGraph: 'There was an error when trying to build graph. Check the initial data.', - messagesUndoAction: 'Undo', - nodeMembersCount: '{count} members', - nodeVariousTeams: 'Various teams', - nodeStatusDueToday: 'Due today', - nodeStatusDueInXDays: ' Due in {count} days', - nodeStatusXDaysOverdue: '{count} days overdue', - nodeActionAddApproversBefore: 'Add approvers before', - nodeActionAddApproversAfter: 'Add approvers after', - nodeActionAddApproversParallel: 'Add parallel approvers', - nodeActionEditApprover: 'Edit approver', - nodeActionRemove: 'Remove', - selectTypeDialogMoveApproverAs: 'Move approver as', - selectTypeDialogParallelOrSerial: 'Parallel or serial', - selectTypeDialogNodeTypeParallel: 'Parallel approver', - selectTypeDialogNodeTypeSerial: 'Serial approver', - selectTypeDialogConfirmButton: 'Confirm', - selectTypeDialogCancelButton: 'Cancel', - toolbarAddStepButton: 'Add a step', - toolbarEditButton: 'Edit', - toolbarAddApproversBefore: 'Add approvers before', - toolbarAddApproversAfter: 'Add approvers after', - toolbarAddApproversParallel: 'Add parallel approvers', - toolbarRemove: 'Remove', - toolbarEditApprover: 'Edit approver', - watchersInputPlaceholder: 'Search here..', - userListSelectedItemsCountSingular: '1 item selected', - userListSelectedItemsCountPlural: '{count} items selected', - statusApproved: 'approved', - statusRejected: 'rejected', - statusInProgress: 'in progress', - statusNotStarted: 'not started' - }, - platformFeedInput: { - userTitle: 'User' - }, - platformVHD: { - selectionBarLabel: 'Selected and condition items', - selectedAndConditionLabel: 'Selected Items and Conditions', - footerClearSelectedTitle: 'clear selected items', - footerClearSelectedAriaLabel: 'clear selected items', - searchButtonLabel: 'Go', - successButtonLabel: 'OK', - cancelButtonLabel: 'Cancel', - selectedEmptyLabel: 'No Items or Conditions Selected', - searchPlaceholder: 'Search', - searchAdvancedSearchLabel: 'Filters', - searchShowAdvancedSearchLabel: 'Show filters', - searchHideAdvancedSearchLabel: 'Hide filters', - searchShowAllAdvancedSearchLabel: 'Show all filters', - searchHideAllAdvancedSearchLabel: 'Hide all filters', - selectTabDisplayCountLabel: 'Items ({count})', - selectTabMoreBtnLabel: 'More', - selectTabCountHiddenA11yLabel: 'contains {rowCount} rows and {colCount} columns', - selectMobileTabBackBtnTitle: 'Back', - selectMobileTabBtnOpenDialogLabel: 'Open dialog', - selectMobileTabTitle: '{title} tab', - selectMobileConditionEmpty: 'Empty', - defineConditionTitle: 'Product', - defineConditionSelectedValueHiddenA11yLabel: 'selected value {value}', - defineConditionConditionsGroupHeaderInclude: 'Include', - defineConditionConditionsGroupHeaderExclude: 'Exclude', - defineConditionFromPlaceholder: 'from', - defineConditionToPlaceholder: 'to', - defineConditionValuePlaceholder: 'value', - defineConditionRemoveConditionButtonTitle: 'Remove Condition', - defineConditionAddConditionButtonLabel: 'Add', - defineConditionAddConditionButtonTitle: 'Add Condition', - defineConditionConditionStrategyLabelContains: 'contains', - defineConditionConditionStrategyLabelEqualTo: 'equal to', - defineConditionConditionStrategyLabelBetween: 'between', - defineConditionConditionStrategyLabelStartsWith: 'starts with', - defineConditionConditionStrategyLabelEndsWith: 'ends with', - defineConditionConditionStrategyLabelLessThan: 'less than', - defineConditionConditionStrategyLabelLessThanEqual: 'less than equal', - defineConditionConditionStrategyLabelGreaterThan: 'greater than', - defineConditionConditionStrategyLabelGreaterThanEqual: 'greater than equal', - defineConditionConditionStrategyLabelEmpty: 'empty', - defineConditionConditionStrategyLabelNotEqualTo: 'not equal to', - defineConditionConditionStrategyLabelNotEmpty: 'not empty', - defineConditionMaxCountError: 'Enter a value with no more than {count} characters', - selectTabTitle: 'Select from list', - searchTableEmptyMessage: 'Use the search to get results', - defineTabTitle: 'Define Conditions' - }, - platformCombobox: { - countListResultsSingular: '1 result list item', - countListResultsPlural: '{count} result list items' - }, - platformMultiCombobox: { - inputGlyphAriaLabel: 'Select Options', - inputIconTitle: 'Select Options', - mobileShowAllItemsButton: 'Show all items', - mobileShowSelectedItemsButton: 'Show selected items' - }, - platformTextarea: { - counterMessageCharactersOverTheLimitSingular: '1 character over the limit', - counterMessageCharactersOverTheLimitPlural: '{count} characters over the limit', - counterMessageCharactersRemainingSingular: '1 character remaining', - counterMessageCharactersRemainingPlural: '{count} characters remaining' - }, - platformLink: { - roleDescriptionWithMedia: 'Media: {media}' - }, - platformList: { - loadingAriaLabel: 'loading' - }, - platformObjectListItem: { - detailsActionAriaLabel: 'detail', - deleteActionAriaLabel: 'delete' - }, - platformStandardListItem: { - detailsActionAriaLabel: 'detail', - deleteActionAriaLabel: 'delete' - }, - platformSearchField: { - clearButtonTitle: 'Clear', - submitButtonTitle: 'Search', - searchInputLabel: 'Search', - synchronizeButtonTitle: 'Synchronize', - searchSuggestionMessage: '{count} suggestions found.', - searchSuggestionNavigateMessage: 'use up and down arrows to navigate' - }, - platformSmartFilterBar: { - searchPlaceholder: 'Search', - submitButtonLabel: 'Go', - filtersButtonLabel: 'Filters ({filtersCount})', - showFiltersButtonLabel: 'Show filters', - hideFiltersButtonLabel: 'Hide filters', - defineConditionsRemoveConditionButtonTitle: 'Remove condition', - defineConditionsAddConditionButtonLabel: 'Add condition', - defineConditionsSubmitButtonLabel: 'Go', - defineConditionsCancelButton: 'Cancel', - selectFiltersHeader: 'Filters', - selectFiltersAvailableFiltersText: 'Available filters', - selectFiltersFilterColumnLabel: 'Filter', - selectFiltersActiveColumnLabel: 'Active', - selectFiltersSubmitButtonLabel: 'Go', - selectFiltersCancelButton: 'Cancel', - filterConditionContains: 'contains', - filterConditionEqualTo: 'equal to', - filterConditionBetween: 'between', - filterConditionBeginsWith: 'starts with', - filterConditionEndsWith: 'ends with', - filterConditionLessThan: 'less than', - filterConditionLessThanOrEqualTo: 'less than or equal to', - filterConditionGreaterThan: 'greater than', - filterConditionGreaterThanOrEqualTo: 'greater than or equal to', - filterConditionAfter: 'after', - filterConditionOnOrAfter: 'on or after', - filterConditionBefore: 'before', - filterConditionBeforeOrOn: 'before or on', - filterConditionValuePlaceholder: 'value', - filterConditionValueFromPlaceholder: 'from', - filterConditionValueToPlaceholder: 'to', - settingsCategoryAll: 'All', - settingsCategoryVisible: 'Visible', - settingsCategoryActive: 'Active', - settingsCategoryVisibleAndActive: 'Visible and active', - settingsCategoryMandatory: 'Mandatory', - manageFieldConditions: 'Manage field conditions', - refreshButtonAriaLabel: 'Refresh' - }, - platformTable: { - headerMenuSortAsc: 'Sort Ascending', - headerMenuSortDesc: 'Sort Descending', - headerMenuGroup: 'Group', - headerMenuFreeze: 'Freeze', - headerMenuEndFreeze: 'Freeze to End', - headerMenuUnfreeze: 'Unfreeze', - headerMenuFilter: 'Filter', - defaultEmptyMessage: 'No data found', - emptyCell: 'Empty', - noVisibleColumnsMessage: - 'Right now, there are no visible columns in the table. Please select the columns you need in the table settings.', - resetChangesButtonLabel: 'Reset', - editableCellNumberPlaceholder: 'Enter value', - editableCellDatePlaceholder: 'Enter value', - editableCellStringPlaceholder: 'Enter value', - P13ColumnsDialogHeader: 'Columns', - P13ColumnsDialogSearchPlaceholder: 'Search', - P13ColumnsDialogsShowSelected: 'Show Selected', - P13ColumnsDialogShowAll: 'Show all', - P13ColumnsDialogSelectAll: 'Select All ({selectedColumnsCount}/{selectableColumnsCount})', - P13ColumnsDialogConfirmationBtnLabel: 'OK', - P13ColumnsDialogCancelBtnLabel: 'Cancel', - P13ColumnsDialogMoveToTopBtn: 'Move to Top', - P13ColumnsDialogMoveUpBtn: 'Move Up', - P13ColumnsDialogMoveDownBtn: 'Move Down', - P13ColumnsDialogMoveToBottomBtn: 'Move to Bottom', - P13FilterStrategyLabelBetween: 'between', - P13FilterStrategyLabelContains: 'contains', - P13FilterStrategyLabelBeginsWith: 'begins with', - P13FilterStrategyLabelEndsWith: 'ends with', - P13FilterStrategyLabelEqualTo: 'equal to', - P13FilterStrategyLabelGreaterThan: 'greater than', - P13FilterStrategyLabelGreaterThanOrEqualTo: 'greater than or equal to', - P13FilterStrategyLabelLessThan: 'less than', - P13FilterStrategyLabelLessThanOrEqualTo: 'less than or equal to', - P13FilterStrategyLabelAfter: 'after', - P13FilterStrategyLabelOnOrAfter: 'on or after', - P13FilterStrategyLabelBefore: 'before', - P13FilterStrategyLabelBeforeOrOn: 'before or on', - P13FilterStrategyLabelNotDefined: 'Not Defined', - P13FilterBooleanOptionNotDefined: ' ', - P13FilterBooleanOptionTrue: 'Yes', - P13FilterBooleanOptionFalse: 'No', - P13FilterDialogHeader: 'Filter By', - P13FilterDialogIncludePanelTitleWithCount: 'Include ({count})', - P13FilterDialogIncludePanelTitleWithoutCount: 'Include', - P13FilterDialogExcludePanelTitleWithCount: 'Exclude ({count})', - P13FilterDialogExcludePanelTitleWithoutCount: 'Exclude', - P13FilterDialogRemoveFilterBtnTitle: 'Remove Filter', - P13FilterDialoAddFilterBtnTitle: 'Add Filter', - P13FilterDialogConfirmationBtnLabel: 'OK', - P13FilterDialogCancelBtnLabel: 'Cancel', - P13GroupDialogHeader: 'Group', - P13GroupDialogNoneSelectedColumnSelectPlaceholder: '(none)', - P13GroupDialogShowFieldAsColumnCheckboxLabel: 'Show Field as Column', - P13GroupDialogRemoveGroupBtnTitle: 'Remove', - P13GroupDialogAddNewGroupBtnTitle: 'Add new', - P13GroupDialogConfirmationBtnLabel: 'OK', - P13GroupDialogCancelBtnLabel: 'Cancel', - P13SortDialogHeader: 'Sort', - P13SortDialogNoneSelectedColumn: '(none)', - P13SortDialogNoneSelectedSorting: '(none)', - P13SortDialogSortOrderSelectOptionAsc: 'Ascending', - P13SortDialogSortOrderSelectOptionDesc: 'Descending', - P13SortDialogRemoveSortBtnTitle: 'Remove', - P13SortDialogAddNewSortBtnTitle: 'Add new', - P13SortDialogConfirmationBtnLabel: 'OK', - P13SortDialogCancelBtnLabel: 'Cancel', - toolbarSearchPlaceholder: 'Search', - toolbarActionCreateButtonLabel: 'Create', - toolbarActionSaveButtonLabel: 'Save', - toolbarActionCancelButtonLabel: 'Cancel', - toolbarActionSortButtonTitle: 'Sort', - toolbarActionFilterButtonTitle: 'Filter', - toolbarActionGroupButtonTitle: 'Group', - toolbarActionColumnsButtonTitle: 'Columns', - toolbarActionExpandAllButtonTitle: 'Expand all', - toolbarActionCollapseAllButtonTitle: 'Collapse all', - filterDialogNotFilteredLabel: '(Not Filtered)', - filterDialogFilterByLabel: 'Filter by: {filterLabel}', - filterDialogFilterTitle: 'Filter', - filterDialogFilterBy: 'Filter By', - filterDialogConfirmBtnLabel: 'OK', - filterDialogCancelBtnLabel: 'Cancel', - groupDialogHeader: 'Group', - groupDialogGroupOrderHeader: 'Group Order', - groupDialogGroupOrderAsc: 'Ascending', - groupDialogGroupOrderDesc: 'Descending', - groupDialogGroupByHeader: 'Group By', - groupDialogNotGroupedLabel: '(Not Grouped)', - groupDialogConfirmBtnLabel: 'OK', - groupDialogCancelBtnLabel: 'Cancel', - sortDialogHeader: 'Sort', - sortDialogSortOrderHeader: 'Sort Order', - sortDialogSortOrderAsc: 'Ascending', - sortDialogSortOrderDesc: 'Descending', - sortDialogSortByHeader: 'Sort By', - sortDialogNotSortedLabel: '(Not Sorted)', - sortDialogConfirmBtnLabel: 'OK', - sortDialogCancelBtnLabel: 'Cancel', - selectAllCheckboxLabel: 'Select all', - deselectAllCheckboxLabel: 'Deselect all', - deselectSingleRow: 'To deselect row, press SPACEBAR', - selectSingleRow: 'To select row, press SPACEBAR', - deselectSingleRowTitle: 'Click to deselect', - selectSingleRowTitle: 'Click to select' - }, - platformThumbnail: { - detailsGotoPreviousButtonTitle: 'Go to Previous', - detailsGotoNextButtonTitle: 'Go to Next', - detailsDialogCloseBtnLabel: 'Close', - roleDescription: 'Image' - }, - platformUploadCollection: { - moveToTitle: 'Move to', - moveToTitleFolder: 'Folder', - moveToNewFolderBtnLabel: 'New Folder', - moveToAllFilesSubHeaderLabel: 'All files', - moveToConfirmBtn: 'Move', - moveToCloseBtn: 'Cancel', - newFolderTitle: 'New folder', - newFolderAtRootInputLabel: 'Name of new folder', - newFolderAtFolderInputLabel: 'Name of new folder inside of {folderName}', - newFolderInputPlaceholder: 'Type here..', - newFolderInputErrorLabel: 'Maximum {count} characters allowed', - newFolderDialogCreateBtnLabel: 'Create', - newFolderDialogCancelBtnLabel: 'Cancel', - breadcrumbLabelAllFiles: 'All files', - breadcrumbLabelAllFilesWithTotal: 'All files ({total})', - searchPlaceholder: 'Search', - addBtnLabel: 'Add', - newFolderBtnLabel: 'New Folder', - moveToBtnLabel: 'Move to', - downloadBtnLabel: 'Download', - updateVersionBtnLabel: 'Update version', - removeBtnLabel: 'Remove', - folderIconTitle: 'Folder icon', - fileIconTitle: 'File icon', - editFileNameInputPlaceholder: 'Enter a name', - editFileNameFileAlreadyExistsError: 'File with this name already exists', - editFileNameFolderAlreadyExistsError: 'Folder with this name already exists', - itemStatusSuccessful: 'Successful', - itemStatusUnsuccessful: 'Unsuccessful', - uploadNewFileAfterFailAction: 'Run', - cancelUploadNewFileAction: 'Cancel', - itemMenuBtnTitle: 'More', - dragDropAreaText: 'Drag files to upload', - noDataText: 'No files found', - noDataDescription: 'Drop files to upload, or use the “Add” button.', - paginationTotal: 'Showing {from}-{to} of {total}', - resultsPerPage: 'Results per page', - messageCreateFailed: 'Failed to create {folderName}.', - messageCreateSuccess: '{folderName} has been created.', - messageUpdateVersionFailed: 'Failed to update version of {folderName}.', - messageUpdateVersionSuccess: '{folderName} version has been updated.', - messageFileRenameFailed: 'Failed to rename "{from}" to "{to}."', - messageFileRenameSuccess: '"{from}" has been renamed to "{to}".', - messageRemoveFoldersAndFilesFailed: 'Failed to remove {foldersCount} folders and {filesCount} files.', - messageRemoveFoldersAndFilesSuccess: '{foldersCount} folders and {filesCount} files have been removed.', - messageRemoveFoldersFailed: 'Failed to remove {foldersCount} folders.', - messageRemoveFoldersSuccess: '{foldersCount} folders have been removed.', - messageRemoveFilesFailed: 'Failed to remove {filesCount} files.', - messageRemoveFilesSuccess: '{filesCount} files have been removed.', - messageRemoveFileOrFolderFailed: 'Failed to remove {name}.', - messageRemoveFileOrFolderSuccess: '{name} has been removed.', - messageMoveFoldersAndFilesFailed: 'Failed to move {foldersCount} folders and {filesCount} files to {to}.', - messageMoveFoldersAndFilesSuccess: '{foldersCount} folders and {filesCount} files have been moved to {to}.', - messageMoveFoldersFailed: 'Failed to move {foldersCount} folders to {to}.', - messageMoveFoldersSuccess: '{foldersCount} folders have been moved to {to}.', - messageMoveFilesFailed: 'Failed to move {filesCount} files to {to}.', - messageMoveFilesSuccess: '{filesCount} files have been moved to {to}.', - messageMoveFileOrFolderFailed: 'Failed to move {name} to {to}.', - messageMoveFileOrFolderSuccess: '{name} has been moved to {to}.', - messageMoveRootFoldersAndFilesFailed: - 'Failed to move {foldersCount} folders and {filesCount} files to all files.', - messageMoveRootFoldersAndFilesSuccess: - '{foldersCount} folders and {filesCount} files have been moved to all files.', - messageMoveRootFoldersFailed: 'Failed to move {foldersCount} folders to all files.', - messageMoveRootFoldersSuccess: '{foldersCount} folders have been moved to all files.', - messageMoveRootFilesFailed: 'Failed to move {filesCount} files to all files.', - messageMoveRootFilesSuccess: '{filesCount} files have been moved to all files.', - messageMoveRootFileOrFolderFailed: 'Failed to move {name} to all files.', - messageMoveRootFileOrFolderSuccess: '{name} has been moved to all files.', - messageFileTypeMismatchPlural: '{filesCount} files have the wrong type. Allowed types: {allowedTypes}.', - messageFileTypeMismatchSingular: 'The file "{fileName}" has the wrong type. Allowed types: {allowedTypes}.', - messageFileSizeExceededPlural: - '{filesCount} files exceeded the maximum file size. Allowed max file size: {maxFileSize}.', - messageFileSizeExceededSingular: - 'The file "{fileName}" exceeded the maximum file size. Allowed max file size: {maxFileSize}.', - messageFileNameLengthExceededPlural: - '{filesCount} files exceeded the maximum filename length. Allowed filename length: {maxFilenameLength} characters.', - messageFileNameLengthExceededSingular: - 'The name "{fileName}" exceeded the maximum filename length. Allowed filename length: {maxFilenameLength} characters.' - }, - platformWizardGenerator: { - summarySectionEditStep: 'Edit' - }, - platformMessagePopover: { - allErrors: 'All', - defaultErrors: { - email: 'Email is invalid', - max: 'The field exceeds maximum value', - maxLength: 'The field exceeds maximum length', - min: 'The field value is less than allowed', - minLength: 'The field length is less than allowed', - pattern: 'The field value is invalid', - required: 'The field is mandatory', - requiredTrue: 'The field is mandatory' - } - }, - platformVariantManagement: { - manage: 'Manage', - saveAs: 'Save as', - saveView: 'Save View', - save: 'Save', - myViews: 'My Views', - view: 'View', - setAsDefault: 'Set as Default', - public: 'Public', - applyAutomatically: 'Apply Automatically', - requiredFieldError: 'This field is required.', - nameTakenFieldError: 'Variant with such name already exists. Please chose a different name.', - cancel: 'Cancel', - manageViews: 'Manage Views', - markAsFavourite: 'Mark as Favourite', - sharing: 'Sharing', - default: 'Default', - createdBy: 'Created By', - removeVariant: 'Remove View', - search: 'Search', - access: { - public: 'Public', - private: 'Private' - } - }, - platformSelect: { - selectOptionLabel: 'Select an Option' - }, - fnSlider: { - minMaxDetails: 'Slider minimum value is {min}, maximum value is {max}', - valueminDetails: 'Value is {value}', - valuemaxDetails: 'Value is {value}', - valueNowDetails: 'Current value is {value}' - }, - fnSwitch: { - semanticAcceptLabel: 'Accept', - semanticDeclineLabel: 'Decline' - }, - coreTree: { - expand: 'Expand node', - collapse: 'Collapse node', - noData: 'No data' - } -}; +export const FD_LANGUAGE_ENGLISH = loadJson(json); diff --git a/libs/i18n/src/lib/languages/french.ts b/libs/i18n/src/lib/languages/french.ts index bd3648dc077..d6a48ac5d66 100644 --- a/libs/i18n/src/lib/languages/french.ts +++ b/libs/i18n/src/lib/languages/french.ts @@ -1,632 +1,4 @@ -import { FdLanguage } from '../models/lang'; +import json from '../translations/translations_fr-FR.json'; +import { loadJson } from '../utils/load-json'; -/** - * Default set of translations of Fundamental UI library for French language - */ -export const FD_LANGUAGE_FRENCH: FdLanguage = { - coreMultiComboBox: { - selectAllLabel: 'Tout sélectionner ({selectedItems} sur {totalItems})' - }, - coreCarousel: { - leftNavigationBtnLabel: "Aller à l'élément précédent", - rightNavigationBtnLabel: "Aller à l'élément suivant" - }, - coreDatePicker: { - dateInputLabel: 'Sélecteur de date', - dateRangeInputLabel: 'Sélecteur de la plage de date', - displayCalendarToggleLabel: 'Ouvrir la sélection', - valueStateSuccessMessage: 'État de la valeur de Succès', - valueStateInformationMessage: "État de la valeur d'Information", - valueStateWarningMessage: "État de la valeur d'Avertissement", - valueStateErrorMessage: "État de la valeur d'Erreur" - }, - coreDatetimePicker: { - datetimeInputLabel: 'Entrée de la date', - displayDatetimeToggleLabel: 'Affichage du Calendrier', - displayTypeDateLabel: 'Date', - displayTypeTimeLabel: 'Heure', - datetimeOkLabel: 'Ok', - datetimeCancelLabel: 'Annuler' - }, - coreFeedListItem: { - moreLabel: 'Plus', - lessLabel: 'Moins' - }, - coreGridList: { - filterBarCancelButtonTitle: 'Annuler', - listItemStatusAriaLabel: "L'élément a un statut. Statut: {status}.", - listItemCounterAriaLabel: "L'élément a {count} d'enfants.", - listItemButtonDetailsTitle: 'Détails', - listItemButtonDeleteTitle: 'Supprimer', - listItemStatusContainsErrors: 'Comporte des erreurs', - listItemStatusLocked: 'Bloqué', - listItemStatusDraft: 'Brouillon' - }, - coreMultiInput: { - multiInputAriaLabel: 'Multi Value Input', - tokensCountText: 'Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.' - }, - coreMessageStrip: { - dismissLabel: 'Rejeter' - }, - coreNavigation: { - mainNavigation: 'Main Navigation', - navigationPath: 'Navigation Path' - }, - coreNestedList: { - linkItemAriaLabel: "Élément de l'arborescence {itemDetails}, {index} of {total}{selectedDescription}" - }, - coreOverflowLayout: { - moreItemsButton: '{count} plus' - }, - corePagination: { - pageLabel: 'Page {pageNumber}', - currentPageAriaLabel: 'Page {pageNumber} est la page en cours', - labelBeforeInputMobile: 'Page:', - labelAfterInputMobile: 'de {totalCount}', - inputAriaLabel: 'Entrée de page, Page actuelle, Page {pageNumber} of {totalCount}', - itemsPerPageLabel: 'Résultats par pages:', - firstLabel: 'Premier', - previousLabel: 'Précédent', - nextLabel: 'Prochain', - lastLabel: 'Dernier', - ariaLabel: 'Pagination', - totalResultsLabel: '{totalCount} Résultats' - }, - coreProductSwitch: { - ariaLabel: 'Échange de produit' - }, - coreShellbar: { - collapsedItemMenuLabel: "Menu d'éléments réduit", - cancel: 'Cancel', - search: 'Search' - }, - coreSlider: { - singleMinMaxDetails: 'La valeur minimale du curseur est {min}, la valeur maximale est {max}', - singleValueminDetails: 'La valeur est {value}', - singleValuemaxDetails: 'La valeur est {value}', - singleValueNowDetails: 'La valeur actuelle est {value}', - multipleHandle1MinMaxDetails: 'La valeur minimale du curseur est {min}, la valeur maximale est {max}', - multipleHandle1ValueminDetails: 'La valeur est {value}', - multipleHandle1ValuemaxDetails: 'La valeur est {value}', - multipleHandle1ValueNowDetails: 'La valeur actuelle est {value}', - multipleHandle2MinMaxDetails: 'La valeur minimale du curseur est {min}, la valeur maximale est {max}', - multipleHandle2ValueminDetails: 'La valeur est {value}', - multipleHandle2ValuemaxDetails: 'La valeur est {value}', - multipleHandle2ValueNowDetails: 'La valeur actuelle est {value}' - }, - coreSplitButton: { - expandButtonAriaLabel: "Plus d'actions", - arialLabel: 'Bouton Fractionner' - }, - coreSplitter: { - paginationItemAriaLabel: 'Section' - }, - coreStepInput: { - incrementButtonTitle: 'Incrément', - decrementButtonTitle: 'Décrément', - ariaRoleDescription: "Entrée de l'étape" - }, - coreSwitch: { - semanticAcceptLabel: 'Accepter', - semanticDeclineLabel: 'Décliner' - }, - coreTabs: { - tabListExpandButtonText: "Plus d'infos" - }, - coreText: { - moreLabel: "Plus d'infos", - lessLabel: 'Moins' - }, - coreTime: { - componentAriaName: 'Sélecteur de temps', - increaseHoursLabel: 'Augmenter les heures', - hoursLabel: 'Hrs', - decreaseHoursLabel: 'Diminuer les heures', - increaseMinutesLabel: 'Augmenter les minutes', - minutesLabel: 'Min', - decreaseMinutesLabel: 'Diminuer les minutes', - increaseSecondsLabel: 'Augmenter les secondes', - secondsLabel: 'Sec', - decreaseSecondsLabel: 'Diminuer les secondes', - increasePeriodLabel: 'Augmenter la durée', - periodLabel: 'Period', - decreasePeriodLabel: 'Diminuer la durée', - navigationInstruction: - 'Pour vous déplacer entre les éléments de cette liste, appuyez sur la flèche du haut ou la flèche du bas. ' + - "Pour passer d'une liste à l'autre, appuyez sur la flèche gauche ou la flèche droite." - }, - coreTimePicker: { - timePickerInputLabel: 'Saisie du sélecteur de temps', - timePickerButtonLabel: 'Ouvrir le sélecteur' - }, - coreToken: { - deleteButtonLabel: 'Supprimable', - ariaRoleDescription: 'jeton' - }, - coreTokenizer: { - moreLabel: '{count} plus' - }, - coreUploadCollection: { - menuOkText: 'Ok', - menuCancelText: 'Annuler', - menuEditAriaLabel: 'Éditer', - menuDeleteAriaLabel: 'Effacer', - menuOkAriaLabel: 'Éditer', - menuCancelAriaLabel: 'Annuler', - formItemPlaceholder: 'Nom de fichier' - }, - coreWizard: { - ariaLabel: 'Assistant' - }, - coreBreadcrumb: { - overflowTitleMore: "Plus d'infos" - }, - platformActionBar: { - backButtonLabel: 'Revenir en arrière' - }, - platformApprovalFlow: { - defaultWatchersLabel: 'Observateurs', - defaultTitle: "Procédure d'approbation", - nextButtonAriaLabel: 'Aller à la diapo suivante', - prevButtonAriaLabel: 'Aller à la diapo précédente', - editModeSaveButtonLabel: 'Sauvegarder', - editModeExitButtonLabel: 'Sortir', - emptyTitle: 'Commencez à ajouter des approbateurs et des observateurs', - emptyHint: - 'Pour ajouter des approbateurs, cliquez sur "Ajouter une étape". Pour ajouter des observateurs, cliquez sur le champ Observateurs', - addNodeDialogHeaderAddApprovers: "Ajout d'approbateurs", - addNodeDialogHeaderEditApprover: "Editer l'approbateur", - addNodeDialogHeaderAddApproverTeam: 'Utilisateur/Équipe', - addNodeDialogHeaderDetail: 'Détail', - addNodeDialogNodeType: 'Parallèle ou en série', - addNodeDialogNodeTypeSerial: 'En Série', - addNodeDialogNodeTypeParallel: 'En Parallèle', - addNodeDialogApproverType: "Type d'approuveur", - addNodeDialogApproverTypeUser: 'Un usager', - addNodeDialogApproverTypeTeamAnyone: "Toute personne de l'équipe", - addNodeDialogApproverTypeTeamEveryone: "Tout le monde dans l'équipe", - addNodeDialogUserOrTeam: 'Utilisateur/Équipe', - addNodeDialogAddToNext: 'Ajouter au nœud de série suivant', - addNodeDialogDueDate: 'Date limite', - addNodeSearchPlaceholder: 'Recherchez', - addNodeAddActionBtnLabel: 'Ajoutez', - addNodeCancelActionBtnLabel: 'Annuler', - addNodeSelectApproverActionBtnLabel: 'Sélectionner', - addNodeCancelApproverSelectionActionBtnLabel: 'Annuler', - addNodeApproverOrTeamDetailsCloseActionBtnLabel: 'Fermer', - userDetailsHeader: 'Détail', - userDetailsSendReminderBtnLabel: 'Envoyer un rappel', - userDetailsCancelBtnLabel: 'Annuler', - messagesApproverAddedSuccess: '1 approbateur a été ajouté', - messagesTeamAddedSuccess: '1 équipe a été ajoutée', - messagesNodeEdited: '1 approbateur a été modifié', - messagesNodeRemovedSingular: '1 approbateur a été supprimé', - messagesNodeRemovedPlural: 'Les approbateurs ont été supprimés', - messagesTeamRemoved: '1 équipe a été retirée', - messagesErrorBuildGraph: - 'Il y a eu une erreur en essayant de construire le graphique. Vérifiez les données initiales', - messagesUndoAction: 'Annuler', - nodeMembersCount: '{nombre} membres', - nodeVariousTeams: 'Plusieurs équipes', - nodeStatusDueToday: "À rendre aujourd'hui", - nodeStatusDueInXDays: ' Échéance dans {nombre} jours', - nodeStatusXDaysOverdue: '{nombre} jours de retard', - nodeActionAddApproversBefore: 'Ajoutez des approbateurs avant', - nodeActionAddApproversAfter: 'Ajoutez des approbateurs après', - nodeActionAddApproversParallel: 'Ajouter des approbateurs en parallèle', - nodeActionEditApprover: "Editer l'approbateur", - nodeActionRemove: 'Supprimer', - selectTypeDialogMoveApproverAs: "Déplacer l'approbateur en tant que", - selectTypeDialogParallelOrSerial: 'Parallèle ou en série', - selectTypeDialogNodeTypeParallel: 'Approbateur en parallèle', - selectTypeDialogNodeTypeSerial: 'Approbateur en série', - selectTypeDialogConfirmButton: 'Confirmer', - selectTypeDialogCancelButton: 'Annuler', - toolbarAddStepButton: 'Ajouter une étape', - toolbarEditButton: 'Modifier', - toolbarAddApproversBefore: 'Ajoutez des approbateurs avant', - toolbarAddApproversAfter: 'Ajoutez des approbateurs après', - toolbarAddApproversParallel: 'Ajouter des approbateurs en parallèle', - toolbarRemove: 'Supprimer', - toolbarEditApprover: "Editer l'approbateur", - watchersInputPlaceholder: 'Rechercher ici..', - userListSelectedItemsCountSingular: '1 élément sélectionné', - userListSelectedItemsCountPlural: '{count} éléments sélectionnés', - statusApproved: 'approved', - statusRejected: 'rejected', - statusInProgress: 'in progress', - statusNotStarted: 'not started' - }, - platformFeedInput: { - userTitle: 'Utilisateur' - }, - platformVHD: { - selectionBarLabel: 'Éléments sélectionnés et conditionnés', - selectedAndConditionLabel: 'Éléments et conditions sélectionnés', - footerClearSelectedTitle: 'supprimer les éléments sélectionnés', - footerClearSelectedAriaLabel: 'supprimer les éléments sélectionnés', - searchButtonLabel: 'Aller', - successButtonLabel: 'OK', - cancelButtonLabel: 'Annuler', - selectedEmptyLabel: 'Aucun élément ou condition sélectionné', - searchPlaceholder: 'Recherchez', - searchAdvancedSearchLabel: 'Filtres', - searchShowAdvancedSearchLabel: 'Afficher les filtres', - searchHideAdvancedSearchLabel: 'Masquer les filtres', - searchShowAllAdvancedSearchLabel: 'Afficher tous les filtres', - searchHideAllAdvancedSearchLabel: 'Masquer tous les filtres', - selectTabDisplayCountLabel: 'Articles ({count})', - selectTabMoreBtnLabel: "Plus d'infos", - selectTabCountHiddenA11yLabel: 'contient {rowCount} lignes et {colCount} colonnes', - selectMobileTabBackBtnTitle: 'Retour', - selectMobileTabBtnOpenDialogLabel: 'Ouvrir la boîte de dialogue', - selectMobileTabTitle: '{title} onglet', - selectMobileConditionEmpty: 'Vide', - defineConditionTitle: 'Produit', - defineConditionSelectedValueHiddenA11yLabel: 'valeur sélectionnée {value}', - defineConditionConditionsGroupHeaderInclude: 'Inclure', - defineConditionConditionsGroupHeaderExclude: 'Exclure', - defineConditionFromPlaceholder: 'de', - defineConditionToPlaceholder: 'à', - defineConditionValuePlaceholder: 'valeur', - defineConditionRemoveConditionButtonTitle: 'Supprimer la condition', - defineConditionAddConditionButtonLabel: 'Ajouter', - defineConditionAddConditionButtonTitle: 'Ajouter une condition', - defineConditionConditionStrategyLabelContains: 'contient', - defineConditionConditionStrategyLabelEqualTo: 'égal à', - defineConditionConditionStrategyLabelBetween: 'entre', - defineConditionConditionStrategyLabelStartsWith: 'commence par', - defineConditionConditionStrategyLabelEndsWith: 'se termine par', - defineConditionConditionStrategyLabelLessThan: 'moins que', - defineConditionConditionStrategyLabelLessThanEqual: 'inférieur à égal', - defineConditionConditionStrategyLabelGreaterThan: 'supérieur à', - defineConditionConditionStrategyLabelGreaterThanEqual: 'plus grand que égal', - defineConditionConditionStrategyLabelEmpty: 'vide', - defineConditionConditionStrategyLabelNotEqualTo: 'pas égal à', - defineConditionConditionStrategyLabelNotEmpty: 'non vide', - defineConditionMaxCountError: 'Entrez une valeur ne contenant pas plus de {count} caractères', - selectTabTitle: 'Sélectionnez dans la liste', - searchTableEmptyMessage: 'Utilisez la recherche pour obtenir des résultats', - defineTabTitle: 'Définir les conditions' - }, - platformCombobox: { - countListResultsSingular: "1 resultat sur la liste d'éléments", - countListResultsPlural: '{count} éléments de la liste de résultats' - }, - platformMultiCombobox: { - inputGlyphAriaLabel: 'Sélectionnez les options', - inputIconTitle: 'Sélectionnez les options', - mobileShowAllItemsButton: 'Afficher tous les éléments', - mobileShowSelectedItemsButton: 'Afficher les éléments sélectionnés' - }, - platformTextarea: { - counterMessageCharactersOverTheLimitSingular: '1 caractère au-dessus de la limite', - counterMessageCharactersOverTheLimitPlural: '{count} de caractères au-delà de la limite', - counterMessageCharactersRemainingSingular: '1 seul caractère restant', - counterMessageCharactersRemainingPlural: '{count} de caractères restants' - }, - platformLink: { - roleDescriptionWithMedia: 'Média: {media}' - }, - platformList: { - loadingAriaLabel: 'chargement' - }, - platformObjectListItem: { - detailsActionAriaLabel: 'détail', - deleteActionAriaLabel: 'supprimer' - }, - platformStandardListItem: { - detailsActionAriaLabel: 'détail', - deleteActionAriaLabel: 'supprimer' - }, - platformSearchField: { - clearButtonTitle: 'Effacer', - submitButtonTitle: 'Rechercher', - searchInputLabel: 'Rechercher', - synchronizeButtonTitle: 'Synchroniser', - searchSuggestionMessage: '{count} de suggestions trouvées', - searchSuggestionNavigateMessage: 'utiliser les flèches haut et bas pour naviguer' - }, - platformSmartFilterBar: { - searchPlaceholder: 'Rechercher', - submitButtonLabel: 'Aller', - filtersButtonLabel: 'Filtres ({filtersCount})', - showFiltersButtonLabel: 'Affichez les filtres', - hideFiltersButtonLabel: 'Masquer les filtres', - defineConditionsRemoveConditionButtonTitle: 'Supprimer la condition', - defineConditionsAddConditionButtonLabel: 'Ajouter une condition', - defineConditionsSubmitButtonLabel: 'Aller', - defineConditionsCancelButton: 'Annuler', - selectFiltersHeader: 'Filtres', - selectFiltersAvailableFiltersText: 'Filtres disponibles', - selectFiltersFilterColumnLabel: 'Filtre', - selectFiltersActiveColumnLabel: 'Actif', - selectFiltersSubmitButtonLabel: 'Aller', - selectFiltersCancelButton: 'Annuler', - filterConditionContains: 'contient', - filterConditionEqualTo: 'égal à', - filterConditionBetween: 'entre', - filterConditionBeginsWith: 'commence par', - filterConditionEndsWith: 'se termine par', - filterConditionLessThan: 'moins de', - filterConditionLessThanOrEqualTo: 'inférieur ou égal à', - filterConditionGreaterThan: 'plus que', - filterConditionGreaterThanOrEqualTo: 'supérieur ou égal à', - filterConditionAfter: 'après', - filterConditionOnOrAfter: 'à partir de', - filterConditionBefore: 'avant', - filterConditionBeforeOrOn: 'avant ou à partir de', - filterConditionValuePlaceholder: 'valeur', - filterConditionValueFromPlaceholder: 'de', - filterConditionValueToPlaceholder: 'à', - settingsCategoryAll: 'Tous', - settingsCategoryVisible: 'Visible', - settingsCategoryActive: 'Actif', - settingsCategoryVisibleAndActive: 'Visible et actif', - settingsCategoryMandatory: 'Obligatoire', - manageFieldConditions: 'Manage field conditions', - refreshButtonAriaLabel: 'Refresh' - }, - platformTable: { - headerMenuSortAsc: 'Tri ascendant', - headerMenuSortDesc: 'Tri décroissant', - headerMenuGroup: 'Grouper', - headerMenuFreeze: 'Geler', - headerMenuEndFreeze: 'Freeze to End', - headerMenuUnfreeze: "Déverrouillage du menu d'en-tête", - headerMenuFilter: 'Filtrer', - defaultEmptyMessage: 'Aucune donnée trouvée', - emptyCell: 'Vide', - noVisibleColumnsMessage: - 'Right now, there are no visible columns in the table. Please select the columns you need in the table settings.', - resetChangesButtonLabel: 'Réinitialiser', - editableCellNumberPlaceholder: 'Entrez une valeur', - editableCellDatePlaceholder: 'Entrez une valeur', - editableCellStringPlaceholder: 'Entrez une valeur', - P13ColumnsDialogHeader: 'Colonnes', - P13ColumnsDialogSearchPlaceholder: 'Recherchez', - P13ColumnsDialogsShowSelected: 'Afficher la sélection', - P13ColumnsDialogShowAll: 'Afficher tout', - P13ColumnsDialogSelectAll: 'Sélectionner tout ({selectedColumnsCount}/{selectableColumnsCount})', - P13ColumnsDialogConfirmationBtnLabel: 'OK', - P13ColumnsDialogCancelBtnLabel: 'Annuler', - P13ColumnsDialogMoveToTopBtn: 'Haut de page', - P13ColumnsDialogMoveUpBtn: 'Monter', - P13ColumnsDialogMoveDownBtn: 'Descendre', - P13ColumnsDialogMoveToBottomBtn: 'Déplacer vers le bas', - P13FilterStrategyLabelBetween: 'entre', - P13FilterStrategyLabelContains: 'contient', - P13FilterStrategyLabelBeginsWith: 'commence par', - P13FilterStrategyLabelEndsWith: 'se termine par', - P13FilterStrategyLabelEqualTo: 'égal à', - P13FilterStrategyLabelGreaterThan: 'supérieur à', - P13FilterStrategyLabelGreaterThanOrEqualTo: 'supérieur ou égal à', - P13FilterStrategyLabelLessThan: 'inférieur à', - P13FilterStrategyLabelLessThanOrEqualTo: 'inférieur ou égal à', - P13FilterStrategyLabelAfter: 'après', - P13FilterStrategyLabelOnOrAfter: 'à partir de', - P13FilterStrategyLabelBefore: 'avant', - P13FilterStrategyLabelBeforeOrOn: 'avant ou à partir de', - P13FilterStrategyLabelNotDefined: 'Non défini', - P13FilterBooleanOptionNotDefined: ' ', - P13FilterBooleanOptionTrue: 'Oui', - P13FilterBooleanOptionFalse: 'Non', - P13FilterDialogHeader: 'Filtrer par', - P13FilterDialogIncludePanelTitleWithCount: 'Inclure ({count})', - P13FilterDialogIncludePanelTitleWithoutCount: 'Inclure', - P13FilterDialogExcludePanelTitleWithCount: 'Exclure ({count})', - P13FilterDialogExcludePanelTitleWithoutCount: 'Exclure', - P13FilterDialogRemoveFilterBtnTitle: 'Supprimer le filtre', - P13FilterDialoAddFilterBtnTitle: 'Ajouter un filtre', - P13FilterDialogConfirmationBtnLabel: 'OK', - P13FilterDialogCancelBtnLabel: 'Annuler', - P13GroupDialogHeader: 'Grouper', - P13GroupDialogNoneSelectedColumnSelectPlaceholder: '(aucun)', - P13GroupDialogShowFieldAsColumnCheckboxLabel: 'Afficher le champ sous forme de colonne', - P13GroupDialogRemoveGroupBtnTitle: 'Supprimer', - P13GroupDialogAddNewGroupBtnTitle: 'Ajouter nouveau', - P13GroupDialogConfirmationBtnLabel: 'OK', - P13GroupDialogCancelBtnLabel: 'Annuler', - P13SortDialogHeader: 'Trier', - P13SortDialogNoneSelectedColumn: '(aucun)', - P13SortDialogNoneSelectedSorting: '(aucun)', - P13SortDialogSortOrderSelectOptionAsc: 'Ascendant', - P13SortDialogSortOrderSelectOptionDesc: 'Descendant', - P13SortDialogRemoveSortBtnTitle: 'Supprimer', - P13SortDialogAddNewSortBtnTitle: 'Ajouter nouveau', - P13SortDialogConfirmationBtnLabel: 'OK', - P13SortDialogCancelBtnLabel: 'Annuler', - toolbarSearchPlaceholder: 'Recherchez', - toolbarActionCreateButtonLabel: 'Créer', - toolbarActionSaveButtonLabel: 'Sauvegarder', - toolbarActionCancelButtonLabel: 'Annuler', - toolbarActionSortButtonTitle: 'Trier', - toolbarActionFilterButtonTitle: 'Filtre', - toolbarActionGroupButtonTitle: 'Grouper', - toolbarActionColumnsButtonTitle: 'Colonnes', - toolbarActionExpandAllButtonTitle: 'Expand all', - toolbarActionCollapseAllButtonTitle: 'Collapse all', - filterDialogNotFilteredLabel: '(Non filtré)', - filterDialogFilterByLabel: 'Filtrer par: {filterLabel}', - filterDialogFilterTitle: 'Filtre', - filterDialogFilterBy: 'Filtrer par', - filterDialogConfirmBtnLabel: 'OK', - filterDialogCancelBtnLabel: 'Annuler', - groupDialogHeader: 'Grouper', - groupDialogGroupOrderHeader: 'Ordre du groupe', - groupDialogGroupOrderAsc: 'Ascendant', - groupDialogGroupOrderDesc: 'Descendant', - groupDialogGroupByHeader: 'Grouper par', - groupDialogNotGroupedLabel: '(Non groupés)', - groupDialogConfirmBtnLabel: 'OK', - groupDialogCancelBtnLabel: 'Annuler', - sortDialogHeader: 'Trier', - sortDialogSortOrderHeader: 'Ordre de tri', - sortDialogSortOrderAsc: 'Ascendant', - sortDialogSortOrderDesc: 'Descendant', - sortDialogSortByHeader: 'Trié par', - sortDialogNotSortedLabel: '(Non trié)', - sortDialogConfirmBtnLabel: 'OK', - sortDialogCancelBtnLabel: 'Annuler', - selectAllCheckboxLabel: 'Select all', - deselectAllCheckboxLabel: 'Deselect all', - deselectSingleRow: 'To deselect row, press SPACEBAR', - selectSingleRow: 'To select row, press SPACEBAR', - deselectSingleRowTitle: 'Click to deselect', - selectSingleRowTitle: 'Click to select' - }, - platformThumbnail: { - detailsGotoPreviousButtonTitle: 'Aller à la page précédente', - detailsGotoNextButtonTitle: 'Aller à la page suivante', - detailsDialogCloseBtnLabel: 'Fermer', - roleDescription: 'Image' - }, - platformUploadCollection: { - moveToTitle: 'Déplacer vers', - moveToTitleFolder: 'Dossier', - moveToNewFolderBtnLabel: 'Nouveau dossier', - moveToAllFilesSubHeaderLabel: 'Tous les fichiers', - moveToConfirmBtn: 'Déplacer', - moveToCloseBtn: 'Annuler', - newFolderTitle: 'Nouveau dossier', - newFolderAtRootInputLabel: 'Nom du nouveau dossier', - newFolderAtFolderInputLabel: 'Nom du nouveau dossier dans {folderName}', - newFolderInputPlaceholder: 'Saisissez ici..', - newFolderInputErrorLabel: 'Maximum {count} de caractères autorisés', - newFolderDialogCreateBtnLabel: 'Créer', - newFolderDialogCancelBtnLabel: 'Annuler', - breadcrumbLabelAllFiles: 'Tous les fichiers', - breadcrumbLabelAllFilesWithTotal: 'Tous les fichiers ({total})', - searchPlaceholder: 'Recherchez', - addBtnLabel: 'Ajouter', - newFolderBtnLabel: 'Nouveau dossier', - moveToBtnLabel: 'Déplacer vers', - downloadBtnLabel: 'Télécharger', - updateVersionBtnLabel: 'Version de la mise à jour', - removeBtnLabel: 'Supprimer', - folderIconTitle: 'Icône de dossier', - fileIconTitle: 'Icône de fichier', - editFileNameInputPlaceholder: 'Entrez un nom', - editFileNameFileAlreadyExistsError: 'Un fichier portant ce nom existe déjà', - editFileNameFolderAlreadyExistsError: 'Un dossier avec ce nom existe déjà', - itemStatusSuccessful: "Succès de l'opération", - itemStatusUnsuccessful: "Échec de l'opération", - uploadNewFileAfterFailAction: 'Exécuter', - cancelUploadNewFileAction: 'Annuler', - itemMenuBtnTitle: "Plus d'infos", - dragDropAreaText: 'Faites glisser les fichiers à télécharger', - noDataText: 'Aucun fichier trouvé', - noDataDescription: 'Déposez les fichiers à télécharger, ou utilisez le bouton "Ajouter"..', - paginationTotal: 'Affichage de {from}-{ to} de {total}', - resultsPerPage: 'Résultats par page', - messageCreateFailed: 'Échec de la création de {folderName}.', - messageCreateSuccess: '{folderName} a été créé.', - messageUpdateVersionFailed: 'Impossible de mettre à jour la version de {folderName}.', - messageUpdateVersionSuccess: 'La version de {folderName} a été mise à jour.', - messageFileRenameFailed: 'Impossible de renommer "{from}" en "{to}."', - messageFileRenameSuccess: '"{from}" a été renommé en "{to}".', - messageRemoveFoldersAndFilesFailed: - 'Échec de la suppression des dossiers {foldersCount} et des fichiers {filesCount}.', - messageRemoveFoldersAndFilesSuccess: - 'Les dossiers {foldersCount} et les fichiers {filesCount} ont été supprimés', - messageRemoveFoldersFailed: 'Échec de la suppression des dossiers {foldersCount}.', - messageRemoveFoldersSuccess: 'Les dossiers {foldersCount} ont été supprimés', - messageRemoveFilesFailed: 'Échec de la suppression des fichiers {fichiersCount}.', - messageRemoveFilesSuccess: 'Les fichiers {filesCount} ont été supprimés', - messageRemoveFileOrFolderFailed: 'Échec de la suppression de {name}.', - messageRemoveFileOrFolderSuccess: '{name} a été supprimé', - messageMoveFoldersAndFilesFailed: - 'Échec du déplacement des dossiers {foldersCount} et des fichiers {filesCount} vers {to}', - messageMoveFoldersAndFilesSuccess: - '{foldersCount} dossiers et {filesCount} fichiers ont été déplacés vers {to}.', - messageMoveFoldersFailed: 'Échec du déplacement de {foldersCount} dossiers vers {to}.', - messageMoveFoldersSuccess: '{foldersCount} dossiers ont été déplacés vers {to}.', - messageMoveFilesFailed: 'Échec du déplacement de {filesCount} fichiers vers {to}.', - messageMoveFilesSuccess: '{filesCount} fichiers ont été déplacés vers {to}.', - messageMoveFileOrFolderFailed: 'Échec du déplacement de {name} vers {to}.', - messageMoveFileOrFolderSuccess: '{name} a été déplacé vers {to}.', - messageMoveRootFoldersAndFilesFailed: - 'Échec du déplacement des {foldersCount} dossiers et des {filesCount} fichiers vers tous les fichiers.', - messageMoveRootFoldersAndFilesSuccess: - '{foldersCount} dossiers et {filesCount} fichiers ont été déplacés vers tous les fichiers.', - messageMoveRootFoldersFailed: 'Impossible de déplacer les dossiers {foldersCount} vers tous les fichiers.', - messageMoveRootFoldersSuccess: '{foldersCount} dossiers ont été déplacés vers tous les fichiers.', - messageMoveRootFilesFailed: 'Impossible de déplacer les {filesCount} fichiers vers tous les fichiers.', - messageMoveRootFilesSuccess: '{filesCount} fichiers ont été déplacés vers tous les fichiers.', - messageMoveRootFileOrFolderFailed: 'Impossible de déplacer {name} vers tous les fichiers.', - messageMoveRootFileOrFolderSuccess: '{name} a été déplacé dans tous les fichiers.', - messageFileTypeMismatchPlural: - "{filesCount} fichiers n'ont pas le bon type. Types autorisés : {allowedTypes}.", - messageFileTypeMismatchSingular: - 'Le fichier "{fileName}" n\'a pas le bon type. Types autorisés : {allowedTypes}.', - messageFileSizeExceededPlural: - '{filesCount} fichiers ont dépassé la taille maximale du fichier. Taille maximale autorisée du fichier : {maxFileSize}.', - messageFileSizeExceededSingular: - 'Le fichier "{fileName}" a dépassé la taille maximale du fichier. Taille maximale autorisée du fichier : {maxFileSize}.', - messageFileNameLengthExceededPlural: - '{filesCount} fichiers ont dépassé la longueur maximale du nom de fichier. ' + - 'Longueur autorisée du nom de fichier : {maxFilenameLength} caractères.', - messageFileNameLengthExceededSingular: - 'Le nom "{fileName}" a dépassé la longueur maximale. Longueur autorisée du nom de fichier: {maxFilenameLength} caractères.' - }, - platformWizardGenerator: { - summarySectionEditStep: 'Editer' - }, - platformMessagePopover: { - allErrors: 'All', - defaultErrors: { - email: 'Email is invalid', - max: 'The field exceeds maximum value', - maxLength: 'The field exceeds maximum length', - min: 'The field value is less than allowed', - minLength: 'The field length is less than allowed', - pattern: 'The field value is invalid', - required: 'The field is mandatory', - requiredTrue: 'The field is mandatory' - } - }, - platformVariantManagement: { - manage: 'Manage', - saveAs: 'Save as', - saveView: 'Save View', - save: 'Save', - myViews: 'My Views', - view: 'View', - setAsDefault: 'Set as Default', - public: 'Public', - applyAutomatically: 'Apply Automatically', - requiredFieldError: 'This field is required.', - nameTakenFieldError: 'Variant with such name already exists. Please chose a different name.', - cancel: 'Cancel', - manageViews: 'Manage Views', - markAsFavourite: 'Mark as Favourite', - sharing: 'Sharing', - default: 'Default', - createdBy: 'Created By', - removeVariant: 'Remove View', - search: 'Search', - access: { - public: 'Public', - private: 'Private' - } - }, - platformSelect: { - selectOptionLabel: 'Sélectionnez une option' - }, - fnSlider: { - minMaxDetails: 'La valeur minimale du curseur est {min}, la valeur maximale est {max}', - valueminDetails: 'La valeur est {value}', - valuemaxDetails: 'La valeur est {value}', - valueNowDetails: 'La valeur actuelle est {value}' - }, - fnSwitch: { - semanticAcceptLabel: 'Accepter', - semanticDeclineLabel: 'Refuser' - }, - coreTree: { - expand: 'Expand node', - collapse: 'Collapse node', - noData: 'No data' - } -}; +export const FD_LANGUAGE_FRENCH = loadJson(json); diff --git a/libs/i18n/src/lib/languages/georgian.ts b/libs/i18n/src/lib/languages/georgian.ts index 10a8d7b8ece..44a054ff0a0 100644 --- a/libs/i18n/src/lib/languages/georgian.ts +++ b/libs/i18n/src/lib/languages/georgian.ts @@ -1,624 +1,4 @@ -import { FdLanguage } from '../models/lang'; +import json from '../translations/translations_ka-GE.json'; +import { loadJson } from '../utils/load-json'; -/** - * Default set of translations of Fundamental UI library for Georgian language - */ -export const FD_LANGUAGE_GEORGIAN: FdLanguage = { - coreMultiComboBox: { - selectAllLabel: 'ყველას არჩევა ({selectedItems} {totalItems}-დან)' - }, - coreCarousel: { - leftNavigationBtnLabel: 'წინა ელემენტზე გადასვლა', - rightNavigationBtnLabel: 'მომდევნო ელემენტზე გადასვლა' - }, - coreDatePicker: { - dateInputLabel: 'თარიღის ველი', - dateRangeInputLabel: 'თარიღის დიაპაზონის ველი', - displayCalendarToggleLabel: 'ასარჩევის გახსნა', - valueStateSuccessMessage: 'მნიშვნელობა სწორია', - valueStateInformationMessage: 'მნიშვნელობა ინფორმატიულია', - valueStateWarningMessage: 'მნიშვნელობა ითხოვს ყურადღებას', - valueStateErrorMessage: 'მნიშვნელობა არასწორია' - }, - coreDatetimePicker: { - datetimeInputLabel: 'თარიღის და დროის შესაყვანი ველი', - displayDatetimeToggleLabel: 'კალენდრის გახსნა/დახურვა', - displayTypeDateLabel: 'თარიღი', - displayTypeTimeLabel: 'დრო', - datetimeOkLabel: 'კარგი', - datetimeCancelLabel: 'გაუქმება' - }, - coreFeedListItem: { - moreLabel: 'მეტი', - lessLabel: 'ნაკლები' - }, - coreGridList: { - filterBarCancelButtonTitle: 'გაუქმება', - listItemStatusAriaLabel: 'ელემენტის სტატუსია: {status}.', - listItemCounterAriaLabel: 'ელემენტს აქვს {count} შვილი.', - listItemButtonDetailsTitle: 'დეტალები', - listItemButtonDeleteTitle: 'წაშლა', - listItemStatusContainsErrors: 'შეიცავს შეცდომებს', - listItemStatusLocked: 'დაბლოკილი', - listItemStatusDraft: 'დაუსრულებელი' - }, - coreMessageStrip: { - dismissLabel: 'გაუქმება' - }, - coreMultiInput: { - multiInputAriaLabel: 'Multi Value Input', - tokensCountText: 'Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.' - }, - coreNavigation: { - mainNavigation: 'მთავარი ნავიგაცია', - navigationPath: 'ნავიგაციის გზა' - }, - coreNestedList: { - linkItemAriaLabel: 'სიის ელემენტი {itemDetails}, ინდექსით {index} {total}-დან {selectedDescription}' - }, - coreOverflowLayout: { - moreItemsButton: 'დანარჩენი {count}' - }, - corePagination: { - pageLabel: 'გვერდი {pageNumber}', - currentPageAriaLabel: 'მიმდინარე გვერდია {pageNumber}', - labelBeforeInputMobile: 'გვერდი:', - labelAfterInputMobile: '{totalCount}-დან', - inputAriaLabel: 'გვერდის ველი, მიმდინარე გვერდი, გვერდი {pageNumber} {totalCount}-დან', - itemsPerPageLabel: 'შედეგები გვერდზე:', - firstLabel: 'პირველი', - previousLabel: 'წინა', - nextLabel: 'შემდეგი', - lastLabel: 'ბოლო', - ariaLabel: 'გვერდები', - totalResultsLabel: 'სულ {totalCount} შედეგი' - }, - coreProductSwitch: { - ariaLabel: 'გადამრთველი' - }, - coreShellbar: { - collapsedItemMenuLabel: 'დამალული ელემენტი', - cancel: 'Cancel', - search: 'Search' - }, - coreSlider: { - singleMinMaxDetails: 'სლაიდერის მინიმალური მნიშვნელობაა {min}, მაქსიმუმი - {max}', - singleValueminDetails: 'მნიშვნელობაა {value}', - singleValuemaxDetails: 'მნიშვნელობაა {value}', - singleValueNowDetails: 'მიმდინარე მნიშვნელობაა {value}', - multipleHandle1MinMaxDetails: 'სლაიდერის მინიმალური მნიშვნელობაა {min}, მაქსიმუმი - {max}', - multipleHandle1ValueminDetails: 'მნიშვნელობაა {value}', - multipleHandle1ValuemaxDetails: 'მნიშვნელობაა {value}', - multipleHandle1ValueNowDetails: 'მიმდინარე მნიშვნელობაა {value}', - multipleHandle2MinMaxDetails: 'სლაიდერის მინიმალური მნიშვნელობაა {min}, მაქსიმუმი - {max}', - multipleHandle2ValueminDetails: 'მნიშვნელობაა {value}', - multipleHandle2ValuemaxDetails: 'მნიშვნელობაა {value}', - multipleHandle2ValueNowDetails: 'მიმდინარე მნიშვნელობაა {value}' - }, - coreSplitButton: { - expandButtonAriaLabel: 'მეტი ქმედებები', - arialLabel: 'გამოყოფილი ღილაკები' - }, - coreSplitter: { - paginationItemAriaLabel: 'სექცია' - }, - coreStepInput: { - incrementButtonTitle: 'მომატება', - decrementButtonTitle: 'დაკლება', - ariaRoleDescription: 'ნაბიჯის შეყვანა' - }, - coreSwitch: { - semanticAcceptLabel: 'მიღება', - semanticDeclineLabel: 'უარყოფა' - }, - coreTabs: { - tabListExpandButtonText: 'მაჩვენე მეტი' - }, - coreText: { - moreLabel: 'მეტი', - lessLabel: 'ნაკლები' - }, - coreTime: { - componentAriaName: 'დროის ველი', - increaseHoursLabel: 'საათის გაზრდა', - hoursLabel: 'სთ', - decreaseHoursLabel: 'საათის შემცირება', - increaseMinutesLabel: 'წუთის გაზრდა', - minutesLabel: 'წთ', - decreaseMinutesLabel: 'წუთის შემცირება', - increaseSecondsLabel: 'წამის გაზრდა', - secondsLabel: 'წმ', - decreaseSecondsLabel: 'წამის შემცირება', - increasePeriodLabel: 'პერიოდის გაზრდა', - periodLabel: 'პერიოდი', - decreasePeriodLabel: 'პერიოდის შემცირება', - navigationInstruction: - 'სიაში სამოძრაოდ დააჭირეთ ზედა და ქვედა ღილაკებს. სიებს შორის სამოძრაოდ - მარჯვენა და მარცხენა ღილაკებს.' - }, - coreTimePicker: { - timePickerInputLabel: 'დროის შესაყვანი ველი', - timePickerButtonLabel: 'ასარჩევის გახსნა' - }, - coreToken: { - deleteButtonLabel: 'წაშლადი', - ariaRoleDescription: 'ტოკენი' - }, - coreTokenizer: { - moreLabel: '{count} სხვა' - }, - coreUploadCollection: { - menuOkText: 'კარგი', - menuCancelText: 'გაუქმება', - menuEditAriaLabel: 'შესწორება', - menuDeleteAriaLabel: 'წაშლა', - menuOkAriaLabel: 'კარგი', - menuCancelAriaLabel: 'გაუქმება', - formItemPlaceholder: 'ფაილი' - }, - coreWizard: { - ariaLabel: 'ოსტატი' - }, - coreBreadcrumb: { - overflowTitleMore: 'მეტი' - }, - platformActionBar: { - backButtonLabel: 'უკან დაბრუნება' - }, - platformApprovalFlow: { - defaultWatchersLabel: 'დამკვირვებლები', - defaultTitle: 'დადასტურების პროცესი', - nextButtonAriaLabel: 'შემდეგ სლაიდზე გადასვლა', - prevButtonAriaLabel: 'წინა სლაიდზე დაბრუნება', - editModeSaveButtonLabel: 'შენახვა', - editModeExitButtonLabel: 'გასვკა', - emptyTitle: 'დაიწყე დამდასტურებლების და დამკვირვებლების დამატება', - emptyHint: - 'დამდასტურებლის დასამატებლად დააჭირეთ "ეტაპის დამატებას". დამკვირვებლის დასამატებლად დააჭირეთ დამკვირვებლების ველს.', - addNodeDialogHeaderAddApprovers: 'დამდასტურებლის დამატება', - addNodeDialogHeaderEditApprover: 'დამდასტურებლის შესწორება', - addNodeDialogHeaderAddApproverTeam: 'მომხმარებელი/გუნდი', - addNodeDialogHeaderDetail: 'დეტალური ინფორმაცია', - addNodeDialogNodeType: 'პარალელური ან თანმიმდევრული', - addNodeDialogNodeTypeSerial: 'თანმიმდევრული', - addNodeDialogNodeTypeParallel: 'პარალელური', - addNodeDialogApproverType: 'დამდასტურებლის ტიპი', - addNodeDialogApproverTypeUser: 'მომხმარებელი', - addNodeDialogApproverTypeTeamAnyone: 'ნებისმიერი გუნდში', - addNodeDialogApproverTypeTeamEveryone: 'ყველა გუნდში', - addNodeDialogUserOrTeam: 'მომხმარებელი/გუნდი', - addNodeDialogAddToNext: 'დაამატე შემდეგ თანმიმდევრობაში', - addNodeDialogDueDate: 'ვადა', - addNodeSearchPlaceholder: 'ძებნა', - addNodeAddActionBtnLabel: 'დამატება', - addNodeCancelActionBtnLabel: 'გაუქმება', - addNodeSelectApproverActionBtnLabel: 'არჩევა', - addNodeCancelApproverSelectionActionBtnLabel: 'გაუქმება', - addNodeApproverOrTeamDetailsCloseActionBtnLabel: 'დახურვა', - userDetailsHeader: 'დეტალურად', - userDetailsSendReminderBtnLabel: 'შეხსენების გაგზავნა', - userDetailsCancelBtnLabel: 'გაუქმება', - messagesApproverAddedSuccess: 'დამდასტურებელი დაემატა', - messagesTeamAddedSuccess: 'გუნდი დაემატა', - messagesNodeEdited: 'დამდასტურებელი შესწორდა', - messagesNodeRemovedSingular: 'დამდასტურებელი წაიშალა', - messagesNodeRemovedPlural: 'დამდასტურებლები წაიშალა', - messagesTeamRemoved: 'გუნდი წაიშალა', - messagesErrorBuildGraph: 'გრაფის დამუშავებისას წარმოიშვა შეცდომა. შეამოწმეთ საწყისი მონაცემები.', - messagesUndoAction: 'უკან დაბრუნება', - nodeMembersCount: '{count} წევრი', - nodeVariousTeams: 'სხვადასხვა გუნდი', - nodeStatusDueToday: 'ვადა იწურება დღეს', - nodeStatusDueInXDays: ' ვადა იწურება {count} დღეში', - nodeStatusXDaysOverdue: 'ვადას გადაცდა {count} დღე', - nodeActionAddApproversBefore: 'დაამატე დამდასტურებელი წინ', - nodeActionAddApproversAfter: 'დაამატე დამდასტურებელი შემდეგ', - nodeActionAddApproversParallel: 'დაამატე პარალელური დამდასტურებელი', - nodeActionEditApprover: 'შეასწორე დამდასტურებელი', - nodeActionRemove: 'ამოღება', - selectTypeDialogMoveApproverAs: 'აქციე დამდასტურებელი როგორც', - selectTypeDialogParallelOrSerial: 'პარალელური ან თანმიმდევრული', - selectTypeDialogNodeTypeParallel: 'პარალელური დამდასტურებელი', - selectTypeDialogNodeTypeSerial: 'თანმიმდევრული დამდასტურებელი', - selectTypeDialogConfirmButton: 'დადასტურება', - selectTypeDialogCancelButton: 'გაუქმება', - toolbarAddStepButton: 'ნაბიჯის დამატება', - toolbarEditButton: 'შესწორება', - toolbarAddApproversBefore: 'დაამატე დამდასტურებელი წინ', - toolbarAddApproversAfter: 'დაამატე დამდასტურებელი შემდეგ', - toolbarAddApproversParallel: 'დაამატე პარალელური დამდასტურებელი', - toolbarRemove: 'ამოღება', - toolbarEditApprover: 'შეასწორე დამდასტურებელი', - watchersInputPlaceholder: 'ძებნა...', - userListSelectedItemsCountSingular: '1 ელემენტი არჩეულია', - userListSelectedItemsCountPlural: '{count} ელემენტი არჩეულია', - statusApproved: 'დადასტურებული', - statusRejected: 'უარყოფილი', - statusInProgress: 'მიმდინარე', - statusNotStarted: 'არ დაწყებულა' - }, - platformFeedInput: { - userTitle: 'მომხმარებელი' - }, - platformVHD: { - selectionBarLabel: 'არჩეული ელემენტები', - selectedAndConditionLabel: 'არჩეული ელემენტები', - footerClearSelectedTitle: 'არჩეული ელემენტების გასუფთავება', - footerClearSelectedAriaLabel: 'არჩეული ელემენტების გასუფთავება', - searchButtonLabel: 'წინ', - successButtonLabel: 'კარგი', - cancelButtonLabel: 'გაუქმება', - selectedEmptyLabel: 'ელემენტები არ არის არჩეული', - searchPlaceholder: 'ძებნა', - searchAdvancedSearchLabel: 'ფილტრები', - searchShowAdvancedSearchLabel: 'მაჩვენე ფილტრები', - searchHideAdvancedSearchLabel: 'დამალე ფილტრები', - searchShowAllAdvancedSearchLabel: 'მაჩვენე ყველა ფილტრი', - searchHideAllAdvancedSearchLabel: 'დამალე ყველა ფილტრი', - selectTabDisplayCountLabel: 'ელემენტები ({count})', - selectTabMoreBtnLabel: 'მეტი', - selectTabCountHiddenA11yLabel: 'შეიცავს {rowCount} სტრიქონს და {colCount} სვეტს', - selectMobileTabBackBtnTitle: 'უკან', - selectMobileTabBtnOpenDialogLabel: 'დიალოგური ფანჯრის გახსნა', - selectMobileTabTitle: '{title} ტაბი', - selectMobileConditionEmpty: 'ცარიელი', - defineConditionTitle: 'სახელი', - defineConditionSelectedValueHiddenA11yLabel: 'არჩეული მნიშვნელობა {value}', - defineConditionConditionsGroupHeaderInclude: 'მოცვა', - defineConditionConditionsGroupHeaderExclude: 'გამოყოფა', - defineConditionFromPlaceholder: 'საიდან', - defineConditionToPlaceholder: 'სადამდე', - defineConditionValuePlaceholder: 'მნიშვნელობა', - defineConditionRemoveConditionButtonTitle: 'პირობის ამოღება', - defineConditionAddConditionButtonLabel: 'დამატება', - defineConditionAddConditionButtonTitle: 'პირობის დამატება', - defineConditionConditionStrategyLabelContains: 'შეიცავს', - defineConditionConditionStrategyLabelEqualTo: 'უდრის', - defineConditionConditionStrategyLabelBetween: 'შორის', - defineConditionConditionStrategyLabelStartsWith: 'იწყება', - defineConditionConditionStrategyLabelEndsWith: 'მთავრდება', - defineConditionConditionStrategyLabelLessThan: 'ნაკლებია', - defineConditionConditionStrategyLabelLessThanEqual: 'ნაკლებია ან ტოლია', - defineConditionConditionStrategyLabelGreaterThan: 'მეტია', - defineConditionConditionStrategyLabelGreaterThanEqual: 'მეტია ან ტოლია', - defineConditionConditionStrategyLabelEmpty: 'ცარიელი', - defineConditionConditionStrategyLabelNotEqualTo: 'არ უდრის', - defineConditionConditionStrategyLabelNotEmpty: 'არ არის ცარიელი', - defineConditionMaxCountError: 'შეიყვანეთ მნიშვნელობა, არანაკლებ {count} სიმბოლო', - selectTabTitle: 'სიიდან არჩევა', - searchTableEmptyMessage: 'გამოიყენეთ ძებნა შედეგების მისაღებად', - defineTabTitle: 'პირობის განსაზღვრა' - }, - platformCombobox: { - countListResultsSingular: '1 რეზულტატი', - countListResultsPlural: '{count} რეზულტატი' - }, - platformMultiCombobox: { - inputGlyphAriaLabel: 'აირჩიეთ ოფციები', - inputIconTitle: 'აირჩიეთ ოფციები', - mobileShowAllItemsButton: 'მაჩვენე ყველა', - mobileShowSelectedItemsButton: 'მაჩვენე არჩეული' - }, - platformTextarea: { - counterMessageCharactersOverTheLimitSingular: '1 სიმბოლო აღემატება ლიმიტს', - counterMessageCharactersOverTheLimitPlural: '{count} სიმბოლო აღემატება ლიმიტს', - counterMessageCharactersRemainingSingular: 'დარჩა 1 სიმბოლო', - counterMessageCharactersRemainingPlural: 'დარჩა {count} სიმბოლო' - }, - platformLink: { - roleDescriptionWithMedia: 'მედია: {media}' - }, - platformList: { - loadingAriaLabel: 'იტვირთება' - }, - platformObjectListItem: { - detailsActionAriaLabel: 'დეტალები', - deleteActionAriaLabel: 'წაშლა' - }, - platformStandardListItem: { - detailsActionAriaLabel: 'დეტალები', - deleteActionAriaLabel: 'წაშლა' - }, - platformSearchField: { - clearButtonTitle: 'გასუფთავება', - submitButtonTitle: 'ძებნა', - searchInputLabel: 'ძებნა', - synchronizeButtonTitle: 'სინქრონიზაცია', - searchSuggestionMessage: 'ნაპოვნია {count} შემოთავაზება.', - searchSuggestionNavigateMessage: 'ნავიგაციისთვის გამოიყენეთ ზედა და ქვედა ღილაკები' - }, - platformSmartFilterBar: { - searchPlaceholder: 'ძებნა', - submitButtonLabel: 'წინ', - filtersButtonLabel: 'ფილტრები ({filtersCount})', - showFiltersButtonLabel: 'მაჩვენე ფილტრები', - hideFiltersButtonLabel: 'დამალე ფილტრები', - defineConditionsRemoveConditionButtonTitle: 'პირობის ამოღება', - defineConditionsAddConditionButtonLabel: 'პირობის დამატება', - defineConditionsSubmitButtonLabel: 'წინ', - defineConditionsCancelButton: 'გაუქმება', - selectFiltersHeader: 'ფილტრები', - selectFiltersAvailableFiltersText: 'ხელმისაწვდომი ფილტრები', - selectFiltersFilterColumnLabel: 'ფილტრი', - selectFiltersActiveColumnLabel: 'აქტიური', - selectFiltersSubmitButtonLabel: 'წინ', - selectFiltersCancelButton: 'გაუქმება', - filterConditionContains: 'შეიცავს', - filterConditionEqualTo: 'უდრის', - filterConditionBetween: 'შორის', - filterConditionBeginsWith: 'იწყება', - filterConditionEndsWith: 'მთავრდება', - filterConditionLessThan: 'ნაკლებია', - filterConditionLessThanOrEqualTo: 'ნაკლებია ან ტოლი', - filterConditionGreaterThan: 'მეტია', - filterConditionGreaterThanOrEqualTo: 'მეტია ან ტოლი', - filterConditionAfter: 'შემდეგ', - filterConditionOnOrAfter: 'თარიღი ტოლია ან მეტი', - filterConditionBefore: 'ადრე', - filterConditionBeforeOrOn: 'ადრე ან თარიღში', - filterConditionValuePlaceholder: 'მნიშვნელობა', - filterConditionValueFromPlaceholder: 'დან', - filterConditionValueToPlaceholder: 'მდე', - settingsCategoryAll: 'ყველა', - settingsCategoryVisible: 'ხილვადი', - settingsCategoryActive: 'აქტიური', - settingsCategoryVisibleAndActive: 'ხილვადი და აქტიური', - settingsCategoryMandatory: 'სავალდებულო', - manageFieldConditions: 'Manage field conditions', - refreshButtonAriaLabel: 'Refresh' - }, - platformTable: { - headerMenuSortAsc: 'ზრდადობით დალაგება', - headerMenuSortDesc: 'კლებადობით დალაგება', - headerMenuGroup: 'ჯგუფი', - headerMenuFreeze: 'გაყინვა', - headerMenuEndFreeze: 'Freeze to End', - headerMenuUnfreeze: 'მენიუს განბლოკვა', - headerMenuFilter: 'ფილტრი', - defaultEmptyMessage: 'მონაცემები ვერ მოიძებნა', - emptyCell: 'ცარიელი', - noVisibleColumnsMessage: - 'ამჟამად, ცხრილში არ არის ხილული სვეტები. გთხოვთ, აირჩიოთ თქვენთვის საჭირო სვეტები ცხრილის პარამეტრებში.', - resetChangesButtonLabel: 'გააუქმეთ ცვლილებები', - editableCellNumberPlaceholder: 'შეიყვანეთ რიცხვი', - editableCellDatePlaceholder: 'შეიყვანეთ თარიღი', - editableCellStringPlaceholder: 'შეიყვანეთ მნიშვნელობა', - P13ColumnsDialogHeader: 'სვეტები', - P13ColumnsDialogSearchPlaceholder: 'ძებნა', - P13ColumnsDialogsShowSelected: 'მაჩვენე არჩეული', - P13ColumnsDialogShowAll: 'მაჩვენე ყველა', - P13ColumnsDialogSelectAll: 'აირჩიე ყველა ({selectedColumnsCount}/{selectableColumnsCount})', - P13ColumnsDialogConfirmationBtnLabel: 'კარგი', - P13ColumnsDialogCancelBtnLabel: 'გაუქმება', - P13ColumnsDialogMoveToTopBtn: 'ზემოთ ატანა', - P13ColumnsDialogMoveUpBtn: 'ზემოთ ატანა', - P13ColumnsDialogMoveDownBtn: 'ქვემოთ ჩატანა', - P13ColumnsDialogMoveToBottomBtn: 'ქვემოთ ჩატანა', - P13FilterStrategyLabelBetween: 'შორის', - P13FilterStrategyLabelContains: 'შეიცავს', - P13FilterStrategyLabelBeginsWith: 'იწყება', - P13FilterStrategyLabelEndsWith: 'მთავრდება', - P13FilterStrategyLabelEqualTo: 'უდრის', - P13FilterStrategyLabelGreaterThan: 'მეტია', - P13FilterStrategyLabelGreaterThanOrEqualTo: 'მეტია ან ტოლი', - P13FilterStrategyLabelLessThan: 'ნაკლებია', - P13FilterStrategyLabelLessThanOrEqualTo: 'ნაკლებია ან ტოლი', - P13FilterStrategyLabelAfter: 'შემდეგ', - P13FilterStrategyLabelOnOrAfter: 'თარიღი ტოლია ან მეტი', - P13FilterStrategyLabelBefore: 'ადრე', - P13FilterStrategyLabelBeforeOrOn: 'ადრე ან თარიღში', - P13FilterStrategyLabelNotDefined: 'არაარის განსაზღვრული', - P13FilterBooleanOptionNotDefined: ' ', - P13FilterBooleanOptionTrue: 'დიახ', - P13FilterBooleanOptionFalse: 'არა', - P13FilterDialogHeader: 'ფილტრი', - P13FilterDialogIncludePanelTitleWithCount: 'ჩართე ({count})', - P13FilterDialogIncludePanelTitleWithoutCount: 'ჩართე', - P13FilterDialogExcludePanelTitleWithCount: 'გამოტოვე ({count})', - P13FilterDialogExcludePanelTitleWithoutCount: 'გამოტოვე', - P13FilterDialogRemoveFilterBtnTitle: 'ფილტრის მოხსნა', - P13FilterDialoAddFilterBtnTitle: 'ფილტრის დამატება', - P13FilterDialogConfirmationBtnLabel: 'კარგი', - P13FilterDialogCancelBtnLabel: 'გაუქმება', - P13GroupDialogHeader: 'ჯგუფი', - P13GroupDialogNoneSelectedColumnSelectPlaceholder: '(ცარიელი)', - P13GroupDialogShowFieldAsColumnCheckboxLabel: 'მაჩვენე ველი როგორც სვეტი', - P13GroupDialogRemoveGroupBtnTitle: 'ამოღება', - P13GroupDialogAddNewGroupBtnTitle: 'ახლის დამატება', - P13GroupDialogConfirmationBtnLabel: 'კარგი', - P13GroupDialogCancelBtnLabel: 'გაუქმება', - P13SortDialogHeader: 'დალაგება', - P13SortDialogNoneSelectedColumn: '(ცარიელი)', - P13SortDialogNoneSelectedSorting: '(ცარიელი)', - P13SortDialogSortOrderSelectOptionAsc: 'ზრდადი', - P13SortDialogSortOrderSelectOptionDesc: 'კლებადი', - P13SortDialogRemoveSortBtnTitle: 'ამოღება', - P13SortDialogAddNewSortBtnTitle: 'ახლის დამატება', - P13SortDialogConfirmationBtnLabel: 'კარგი', - P13SortDialogCancelBtnLabel: 'გაუქმება', - toolbarSearchPlaceholder: 'ძებნა', - toolbarActionCreateButtonLabel: 'შექმნა', - toolbarActionSaveButtonLabel: 'შენახვა', - toolbarActionCancelButtonLabel: 'გაუქმება', - toolbarActionSortButtonTitle: 'დალაგება', - toolbarActionFilterButtonTitle: 'ფილტრაცია', - toolbarActionGroupButtonTitle: 'დაჯგუფება', - toolbarActionColumnsButtonTitle: 'სვეტები', - toolbarActionExpandAllButtonTitle: 'Expand all', - toolbarActionCollapseAllButtonTitle: 'Collapse all', - filterDialogNotFilteredLabel: '(გაუფილტრავი)', - filterDialogFilterByLabel: 'გაფილტრე: {filterLabel}', - filterDialogFilterTitle: 'ფილტრი', - filterDialogFilterBy: 'გაფილტრე', - filterDialogConfirmBtnLabel: 'კარგი', - filterDialogCancelBtnLabel: 'გაუქმება', - groupDialogHeader: 'ჯგუფი', - groupDialogGroupOrderHeader: 'ჯგუფის დალაგება', - groupDialogGroupOrderAsc: 'ზრდადი', - groupDialogGroupOrderDesc: 'კლებადი', - groupDialogGroupByHeader: 'დაჯგუფებულია', - groupDialogNotGroupedLabel: '(დაუჯგუფებელია)', - groupDialogConfirmBtnLabel: 'კარგი', - groupDialogCancelBtnLabel: 'გაუქმება', - sortDialogHeader: 'დალაგება', - sortDialogSortOrderHeader: 'დალაგების წესი', - sortDialogSortOrderAsc: 'ზრდადი', - sortDialogSortOrderDesc: 'კლებადი', - sortDialogSortByHeader: 'დალაგებულია', - sortDialogNotSortedLabel: '(დაულაგებელია)', - sortDialogConfirmBtnLabel: 'კარგი', - sortDialogCancelBtnLabel: 'გაუქმება', - selectAllCheckboxLabel: 'Select all', - deselectAllCheckboxLabel: 'Deselect all', - deselectSingleRow: 'To deselect row, press SPACEBAR', - selectSingleRow: 'To select row, press SPACEBAR', - deselectSingleRowTitle: 'Click to deselect', - selectSingleRowTitle: 'Click to select' - }, - platformThumbnail: { - detailsGotoPreviousButtonTitle: 'წინაზე გადასვლა', - detailsGotoNextButtonTitle: 'მომდევნოზე გადასვლა', - detailsDialogCloseBtnLabel: 'დახურვა', - roleDescription: 'სურათი' - }, - platformUploadCollection: { - moveToTitle: 'გადატანა', - moveToTitleFolder: 'საქაღალდე', - moveToNewFolderBtnLabel: 'ახალი საქაღალდე', - moveToAllFilesSubHeaderLabel: 'ყველა ფაილი', - moveToConfirmBtn: 'გადატანა', - moveToCloseBtn: 'გაუქმება', - newFolderTitle: 'ახალი საქაღალდე', - newFolderAtRootInputLabel: 'ახალი საქაღალდის სახელი', - newFolderAtFolderInputLabel: '{folderName}-ში ახალი საქაღალდის სახელი', - newFolderInputPlaceholder: 'აკრიფეთ აქ...', - newFolderInputErrorLabel: 'ნებადართულია მაქსიმუმ {count} სიმბოლო', - newFolderDialogCreateBtnLabel: 'შექმნა', - newFolderDialogCancelBtnLabel: 'გაუქმება', - breadcrumbLabelAllFiles: 'ყველა ფაილი', - breadcrumbLabelAllFilesWithTotal: 'ყველა ფაილი ({total})', - searchPlaceholder: 'ძებნა', - addBtnLabel: 'დამატება', - newFolderBtnLabel: 'ახალი საქაღალდე', - moveToBtnLabel: 'გადატანა', - downloadBtnLabel: 'ჩამოტვირთვა', - updateVersionBtnLabel: 'ვერსიის განახლება', - removeBtnLabel: 'ამოღება', - folderIconTitle: 'საქაღალდის სურათი', - fileIconTitle: 'ფაილის სურათი', - editFileNameInputPlaceholder: 'შეიყვანეთ სახელი', - editFileNameFileAlreadyExistsError: 'ამ სახელით ფაილი უკვე არსებობს', - editFileNameFolderAlreadyExistsError: 'ამ სახელით საქაღალდე უკვე არსებობს', - itemStatusSuccessful: 'წარმატებული', - itemStatusUnsuccessful: 'წარუმატებელი', - uploadNewFileAfterFailAction: 'გაშვება', - cancelUploadNewFileAction: 'გაუქმება', - itemMenuBtnTitle: 'მეტი', - dragDropAreaText: 'ჩააგდეთ ფაილი ასატვირთად', - noDataText: 'ფაილები არ მოიძებნა', - noDataDescription: 'ჩააგდეთ ფაილი ასატვირთად, ან დააჭირეთ "დამატებას"', - paginationTotal: 'ნაჩვენებია {from}-{to} {total}-დან', - resultsPerPage: 'რეზულტატი გვერდზე', - messageCreateFailed: '{folderName} ვერ შეიქმნა.', - messageCreateSuccess: '{folderName} შეიქმნა.', - messageUpdateVersionFailed: '{folderName}-ის ვერსიის განახლება ვერ მოხერხდა.', - messageUpdateVersionSuccess: '{folderName}-ის ვერსია განახლდა.', - messageFileRenameFailed: 'სახელის გადარქმევა "{from}"-დან "{to}"-ზე ვერ მოხერხდა.', - messageFileRenameSuccess: '"{from}"-ს დაერქვა "{to}".', - messageRemoveFoldersAndFilesFailed: '{foldersCount} საქაღალდის და {filesCount} ფაილის წაშლა ვერ მოხერხდა.', - messageRemoveFoldersAndFilesSuccess: '{foldersCount} საქაღალდე და {filesCount} ფაილი წაიშალა.', - messageRemoveFoldersFailed: '{foldersCount} საქაღალდე ვერ წაიშალა.', - messageRemoveFoldersSuccess: '{foldersCount} საქაღალდე წაიშალა.', - messageRemoveFilesFailed: '{filesCount} ფაილი ვერ წაიშალა.', - messageRemoveFilesSuccess: '{filesCount} ფაილი წაიშალა.', - messageRemoveFileOrFolderFailed: '{name} ვერ წაიშალა.', - messageRemoveFileOrFolderSuccess: '{name} წაიშალა.', - messageMoveFoldersAndFilesFailed: - '{foldersCount} საქაღალდის და {filesCount} ფაილის გადატანა ვერ მოხერხდა {to}-ში.', - messageMoveFoldersAndFilesSuccess: '{foldersCount} საქაღალდე და {filesCount} ფაილი გადატანილია {to}-ში.', - messageMoveFoldersFailed: '{foldersCount} საქაღალდის გადატანა ვერ მოხერხდა {to}-ში.', - messageMoveFoldersSuccess: '{foldersCount} საქაღალდე გადატანილია {to}-ში.', - messageMoveFilesFailed: '{filesCount} ფაილის გადატანა ვერ მოხერხდა {to}-ში.', - messageMoveFilesSuccess: '{filesCount} ფაილი გადატანილია {to}-ში.', - messageMoveFileOrFolderFailed: '{name}-ის გადატანა ვერ მოხდა {to}-ში.', - messageMoveFileOrFolderSuccess: '{name} გადატანილია {to}-ში.', - messageMoveRootFoldersAndFilesFailed: '{foldersCount} საქაღალდის და {filesCount} ფაილის გადატანა ვერ მოხერხდა.', - messageMoveRootFoldersAndFilesSuccess: '{foldersCount} საქაღალდე და {filesCount} ფაილი გადატანილია.', - messageMoveRootFoldersFailed: '{foldersCount} საქაღალდის გადატანა ვერ მოხერხდა.', - messageMoveRootFoldersSuccess: '{foldersCount} საქაღალდე გადატანილია.', - messageMoveRootFilesFailed: '{filesCount} ფაილის გადატანა ვერ მოხერხდა.', - messageMoveRootFilesSuccess: '{filesCount} ფაილი გადატანილია.', - messageMoveRootFileOrFolderFailed: '{name}-ის გადატანა ვერ მოხერხდა.', - messageMoveRootFileOrFolderSuccess: '{name} გადატანილია.', - messageFileTypeMismatchPlural: - '{filesCount} ფაილს აქვს აკრძალული გაფართოება. ნებადართული გაფართოებებია: {allowedTypes}.', - messageFileTypeMismatchSingular: - 'ფაილს "{fileName}" აქვს აკრძალული გაფართოება. ნებადართული გაფართოებებია: {allowedTypes}.', - messageFileSizeExceededPlural: - '{filesCount} ფაილი აჭარბებს მაქსიმალურ მოცულობას. ნებადართული მაქსიმალური ზომაა: {maxFileSize}.', - messageFileSizeExceededSingular: - 'ფაილი "{fileName}" აჭარბებს მაქსიმალურ მოცულობას. ნებადართული მაქსიმალური ზომაა: {maxFileSize}.', - messageFileNameLengthExceededPlural: - '{filesCount} ფაილი აჭარბებს მაქსიმალურ სახელის სიგრძეს. მაქსიმალური სიგრძეა: {maxFilenameLength} characters.', - messageFileNameLengthExceededSingular: - 'ფაილი "{fileName}" აჭარბებს მაქსიმალურ სახელის სიგრძეს. მაქსიმალური სიგრძეა: {maxFilenameLength} characters.' - }, - platformWizardGenerator: { - summarySectionEditStep: 'შესწორება' - }, - platformMessagePopover: { - allErrors: 'ყველა', - defaultErrors: { - email: 'ელ-ფოსტა არასწორია', - max: 'ველის მნიშვნელობა აღემატება დაშვებულ მაქსიმუმს', - maxLength: 'ველის მოცულობა აღემატება დაშვებულ მაქსიმუმს', - min: 'ველის მნიშვნელობა აუცილებელ მინიმუმზე ნაკლებია', - minLength: 'ველის მოცულობა აუცილებელ მინიმუმზე ნაკლებია', - pattern: 'ველის მნიშვნელობა არასწორია', - required: 'ველი სავალდებულოა', - requiredTrue: 'ველის შეყვანა სავალდებულოა' - } - }, - platformVariantManagement: { - manage: 'მართვა', - saveAs: 'შენახვა როგორც', - saveView: 'ვარიანტის შენახვა', - save: 'შენახვა', - myViews: 'ჩემი ვარიანტები', - view: 'ვარიანტი', - setAsDefault: 'ნაგულისხმევად გამოყენება', - public: 'საჯარო', - applyAutomatically: 'ავტომატურად გამოყენება', - requiredFieldError: 'ეს ველი სავალდებულოა.', - nameTakenFieldError: 'ვარიანტი ამ სახელით უკვე არსებობს. გთხოვთ, გამოიყენოთ სხვა სახელი.', - cancel: 'გაუქმება', - manageViews: 'ვარიანტების მართვა', - markAsFavourite: 'ფავორიტად მონიშვნა', - sharing: 'ხილვადობა', - default: 'ნაგულისხმევი', - createdBy: 'შემქმნელი', - removeVariant: 'ვარიანტის წაშლა', - search: 'ძებნა', - access: { - public: 'საჯარო', - private: 'პირადი' - } - }, - platformSelect: { - selectOptionLabel: 'აირჩიეთ ვარიანტი' - }, - fnSlider: { - minMaxDetails: 'სლაიდერის მინიმალური მნიშვნელობაა {min}, მაქსიმალური - {max}', - valueminDetails: 'მნიშვნელობა არის {value}', - valuemaxDetails: 'მნიშვნელობა არის {value}', - valueNowDetails: 'მიმდინარე მნიშვნელობა {value}' - }, - fnSwitch: { - semanticAcceptLabel: 'დათანხმება', - semanticDeclineLabel: 'უარყოფა' - }, - coreTree: { - expand: 'Expand node', - collapse: 'Collapse node', - noData: 'No data' - } -}; +export const FD_LANGUAGE_GEORGIAN = loadJson(json); diff --git a/libs/i18n/src/lib/languages/hindi.ts b/libs/i18n/src/lib/languages/hindi.ts index 6b6d9f2342b..4b96610fb6b 100644 --- a/libs/i18n/src/lib/languages/hindi.ts +++ b/libs/i18n/src/lib/languages/hindi.ts @@ -1,625 +1,4 @@ -import { FdLanguage } from '../models/lang'; +import json from '../translations/translations_hi-IN.json'; +import { loadJson } from '../utils/load-json'; -/** - * Default set of translations of Fundamental UI library for Hindi language - */ -export const FD_LANGUAGE_HINDI: FdLanguage = { - coreMultiComboBox: { - selectAllLabel: 'सबका चयन करें' - }, - coreCarousel: { - leftNavigationBtnLabel: 'पिछले वस्तु पर जाएं', - rightNavigationBtnLabel: 'अगले वस्तु पर जाएं' - }, - coreDatePicker: { - dateInputLabel: 'दिनांक इनपुट', - dateRangeInputLabel: 'दिनांक सीमा इनपुट', - displayCalendarToggleLabel: 'पिकर खोलें', - valueStateSuccessMessage: 'मूल्य स्थिति सफल', - valueStateInformationMessage: 'मूल्य स्थिति सूचना', - valueStateWarningMessage: 'मूल्य स्थिति चेतावनी', - valueStateErrorMessage: 'मूल्य स्थिति गलती' - }, - coreDatetimePicker: { - datetimeInputLabel: 'दिनांक और समय इनपुट', - displayDatetimeToggleLabel: 'कैलेंडर टॉगल दिखाएं', - displayTypeDateLabel: 'दिनांक', - displayTypeTimeLabel: 'समय', - datetimeOkLabel: 'ठीक है', - datetimeCancelLabel: 'रद्द करें' - }, - coreFeedListItem: { - moreLabel: 'अधिक', - lessLabel: 'कम' - }, - coreGridList: { - filterBarCancelButtonTitle: 'रद्द करें', - listItemStatusAriaLabel: 'वस्तु की स्थिति है। स्थिति: {status}', - listItemCounterAriaLabel: 'वस्तु के {count} उपसूची है।', - listItemButtonDetailsTitle: 'विवरण', - listItemButtonDeleteTitle: 'मिटायें', - listItemStatusContainsErrors: 'इसमें गलतियां हैं', - listItemStatusLocked: 'बंद', - listItemStatusDraft: 'प्रालेख' - }, - coreMessageStrip: { - dismissLabel: 'खारिज करें' - }, - coreMultiInput: { - multiInputAriaLabel: 'Multi Value Input', - tokensCountText: 'Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.' - }, - coreNavigation: { - mainNavigation: 'Main Navigation', - navigationPath: 'Navigation Path' - }, - coreNestedList: { - linkItemAriaLabel: 'ट्री वस्तु {itemDetails}, {index} का {total}{selectedDescription}' - }, - coreOverflowLayout: { - moreItemsButton: '{count} अधिक' - }, - corePagination: { - pageLabel: 'पृष्ठ {pageNumber}', - currentPageAriaLabel: 'पृष्ठ {pageNumber} वर्तमान पृष्ठ है', - labelBeforeInputMobile: 'पृष्ठ :', - labelAfterInputMobile: 'का {totalCount}', - inputAriaLabel: 'पेज इनपुट, वर्तमान पृष्ठ, पृष्ठ {pageNumber} का {totalCount}', - itemsPerPageLabel: 'प्रति पृष्ठ परिणाम :', - firstLabel: 'पहला', - previousLabel: 'पिछला', - nextLabel: 'अगला', - lastLabel: 'अंतिम', - ariaLabel: 'पृष्ठ अंकन', - totalResultsLabel: '{totalCount} परिणाम' - }, - coreProductSwitch: { - ariaLabel: 'उत्पाद स्विच' - }, - coreShellbar: { - collapsedItemMenuLabel: 'छोटा किया गया आइटम मेनू', - cancel: 'Cancel', - search: 'Search' - }, - coreSlider: { - singleMinMaxDetails: 'स्लाइडर न्यूनतम मूल्य है {min}, अधिकतम मूल्य है {max}', - singleValueminDetails: 'मूल्य है {value}', - singleValuemaxDetails: 'मूल्य है {value}', - singleValueNowDetails: 'वर्तमान मूल्य है {value}', - multipleHandle1MinMaxDetails: 'रेंज स्लाइडर न्यूनतम मूल्य है {min}, अधिकतम मूल्य है {max}', - multipleHandle1ValueminDetails: 'मूल्य है {value}', - multipleHandle1ValuemaxDetails: 'मूल्य है {value}', - multipleHandle1ValueNowDetails: 'वर्तमान मूल्य है {value}', - multipleHandle2MinMaxDetails: 'रेंज स्लाइडर न्यूनतम मूल्य है {min}, अधिकतम मूल्य है {max}', - multipleHandle2ValueminDetails: 'मूल्य है {value}', - multipleHandle2ValuemaxDetails: 'मूल्य है {value}', - multipleHandle2ValueNowDetails: 'वर्तमान मूल्य है {value}' - }, - coreSplitButton: { - expandButtonAriaLabel: 'अधिक क्रियाएं', - arialLabel: 'बाँटा हुआ बटन' - }, - coreSplitter: { - paginationItemAriaLabel: 'भाग' - }, - coreStepInput: { - incrementButtonTitle: 'इसे बढ़ाएँ', - decrementButtonTitle: 'इसे घटाएं', - ariaRoleDescription: 'स्टेप इनपुट' - }, - coreSwitch: { - semanticAcceptLabel: 'स्वीकार करें', - semanticDeclineLabel: 'अस्वीकार करें' - }, - coreTabs: { - tabListExpandButtonText: 'अधिक' - }, - coreText: { - moreLabel: 'अधिक', - lessLabel: 'कम' - }, - coreTime: { - componentAriaName: 'समय चुनने वाला', - increaseHoursLabel: 'घंटे बढ़ाएँ', - hoursLabel: 'घंटे', - decreaseHoursLabel: 'घंटे घटाएं', - increaseMinutesLabel: 'मिनट बढ़ाएँ', - minutesLabel: 'मिनट', - decreaseMinutesLabel: 'मिनट घटाएं', - increaseSecondsLabel: 'सेकंड बढ़ाएँ', - secondsLabel: 'सेकंड', - decreaseSecondsLabel: 'सेकंड घटाएं', - increasePeriodLabel: 'अवधि बढ़ाएँ', - periodLabel: 'अवधि', - decreasePeriodLabel: 'अवधि घटाएं', - navigationInstruction: - 'इस सूची में वस्तुओं के बीच जाने के लिए, ऊपर तीर या निचला तीर दबाएं। सूचियों के बीच स्विच करने के लिए बायाँ तीर या दायाँ तीर दबाएँ।' - }, - coreTimePicker: { - timePickerInputLabel: 'समय चुनने वाला इनपुट', - timePickerButtonLabel: 'चुनने वाला खोलें' - }, - coreToken: { - deleteButtonLabel: 'हटाने-योग्य', - ariaRoleDescription: 'टोकन' - }, - coreTokenizer: { - moreLabel: '{count} अधिक' - }, - coreUploadCollection: { - menuOkText: 'ठीक है', - menuCancelText: 'रद्द करें', - menuEditAriaLabel: 'संपादित करें', - menuDeleteAriaLabel: 'मिटाऐं', - menuOkAriaLabel: 'संपादित करें', - menuCancelAriaLabel: 'रद्द करें', - formItemPlaceholder: 'फ़ाइल का नाम' - }, - coreWizard: { - ariaLabel: 'विज़ार्ड' - }, - coreBreadcrumb: { - overflowTitleMore: 'और' - }, - platformActionBar: { - backButtonLabel: 'वापस जाएं' - }, - platformApprovalFlow: { - defaultWatchersLabel: 'नजर रखने वाले', - defaultTitle: 'अनुमोदन प्रक्रिया', - nextButtonAriaLabel: 'आगे की स्लाइड पर जाएं', - prevButtonAriaLabel: 'पिछली स्लाइड पर जाएं', - editModeSaveButtonLabel: 'सहेजें', - editModeExitButtonLabel: 'बाहर निकलें', - emptyTitle: 'अनुमोदक और देखने वालों को जोड़ना शुरू करें', - emptyHint: - 'अनुमोदक को जोड़ने के लिए "एक चरण जोड़ें" पर क्लिक करें। देखने वालों को जोड़ने के लिए, नजर रखने वाले फ़ील्ड पर क्लिक करें।', - addNodeDialogHeaderAddApprovers: 'अनुमोदक जोड़ें', - addNodeDialogHeaderEditApprover: 'अनुमोदक संपादित करें', - addNodeDialogHeaderAddApproverTeam: 'उपयोगकर्ता/समूह', - addNodeDialogHeaderDetail: 'विवरण', - addNodeDialogNodeType: 'समानांतर या क्रमिक', - addNodeDialogNodeTypeSerial: 'क्रमिक', - addNodeDialogNodeTypeParallel: 'समानांतर', - addNodeDialogApproverType: 'अनुमोदक के प्रकार', - addNodeDialogApproverTypeUser: 'एक उपयोगकर्ता', - addNodeDialogApproverTypeTeamAnyone: 'समूह में कोई भी', - addNodeDialogApproverTypeTeamEveryone: 'समूह में सभी', - addNodeDialogUserOrTeam: 'उपयोगकर्ता/समूह', - addNodeDialogAddToNext: 'अगले क्रमिक नोड में जोड़ें', - addNodeDialogDueDate: 'नियत तिथि', - addNodeSearchPlaceholder: 'खोजें', - addNodeAddActionBtnLabel: 'जोड़ें', - addNodeCancelActionBtnLabel: 'रद्द करें', - addNodeSelectApproverActionBtnLabel: 'चुने', - addNodeCancelApproverSelectionActionBtnLabel: 'रद्द करें', - addNodeApproverOrTeamDetailsCloseActionBtnLabel: 'बंद करें', - userDetailsHeader: 'विवरण', - userDetailsSendReminderBtnLabel: 'याद दिलाये', - userDetailsCancelBtnLabel: 'रद्द करें', - messagesApproverAddedSuccess: '1 अनुमोदक जोड़ा गया है', - messagesTeamAddedSuccess: '1 समूह जोड़ा गया है', - messagesNodeEdited: '1 अनुमोदनकर्ता संपादित किया गया है', - messagesNodeRemovedSingular: '1 अनुमोदनकर्ता को हटा दिया गया है', - messagesNodeRemovedPlural: 'सभी अनुमोदनकर्ता को हटा दिया गया है', - messagesTeamRemoved: '1 समूह को हटा दिया गया है', - messagesErrorBuildGraph: 'ग्राफ़ बनाने का प्रयास करते समय एक गलति हुई| प्रारंभिक डेटा की जाँच करें।', - messagesUndoAction: 'पूर्ववत करें', - nodeMembersCount: '{count} सदस्य', - nodeVariousTeams: 'विविध समूह', - nodeStatusDueToday: 'नियत तिथि', - nodeStatusDueInXDays: '{count} दिनों में देय है', - nodeStatusXDaysOverdue: '{count} दिन अतिदेय', - nodeActionAddApproversBefore: 'पहले अनुमोदक जोड़ें', - nodeActionAddApproversAfter: 'बाद में अनुमोदक जोड़ें', - nodeActionAddApproversParallel: 'समानांतर अनुमोदक जोड़ें', - nodeActionEditApprover: 'अनुमोदक संपादित करें', - nodeActionRemove: 'हटाएं', - selectTypeDialogMoveApproverAs: 'अनुमोदक को इस रूप में ले जाएँ', - selectTypeDialogParallelOrSerial: 'समानांतर या क्रमिक', - selectTypeDialogNodeTypeParallel: 'समानांतर अनुमोदक', - selectTypeDialogNodeTypeSerial: 'क्रमिक समानांतर अनुमोदक', - selectTypeDialogConfirmButton: 'पुष्टि करें', - selectTypeDialogCancelButton: 'रद्द करें', - toolbarAddStepButton: 'एक चरण जोड़ें', - toolbarEditButton: 'संपादित करें', - toolbarAddApproversBefore: 'पहले अनुमोदक जोड़ें', - toolbarAddApproversAfter: 'बाद में अनुमोदक जोड़ें', - toolbarAddApproversParallel: 'समानांतर अनुमोदक जोड़ें', - toolbarRemove: 'हटाएं', - toolbarEditApprover: 'अनुमोदक संपादित करें', - watchersInputPlaceholder: 'यहां खोजें..', - userListSelectedItemsCountSingular: '1 आइटम चुना गया', - userListSelectedItemsCountPlural: '{count} आइटम चुने गए', - statusApproved: 'approved', - statusRejected: 'rejected', - statusInProgress: 'in progress', - statusNotStarted: 'not started' - }, - platformFeedInput: { - userTitle: 'उपयोगकर्ता' - }, - platformVHD: { - selectionBarLabel: 'निर्वाचित और शर्त आइटम', - selectedAndConditionLabel: 'चयनित आइटम और शर्तें', - footerClearSelectedTitle: 'चयनित आइटम साफ़ करें', - footerClearSelectedAriaLabel: 'चयनित आइटम साफ़ करें', - searchButtonLabel: 'जाएँ', - successButtonLabel: 'ठीक है', - cancelButtonLabel: 'रद्द करें', - selectedEmptyLabel: 'कोई आइटम या शर्तें चयनित नहीं हैं', - searchPlaceholder: 'खोजें', - searchAdvancedSearchLabel: 'फिल्टर', - searchShowAdvancedSearchLabel: 'फ़िल्टर दिखाएं', - searchHideAdvancedSearchLabel: 'फ़िल्टर छुपाएं', - searchShowAllAdvancedSearchLabel: 'सभी फ़िल्टर दिखाएं', - searchHideAllAdvancedSearchLabel: 'सभी फ़िल्टर छुपाएं', - selectTabDisplayCountLabel: '({count}) वस्तुएं', - selectTabMoreBtnLabel: 'और', - selectTabCountHiddenA11yLabel: 'इसमें {rowCount} पंक्तियाँ और {colCount} कॉलम हैं', - selectMobileTabBackBtnTitle: 'वापस', - selectMobileTabBtnOpenDialogLabel: 'डायलॉग खोलें', - selectMobileTabTitle: '{title} टैब', - selectMobileConditionEmpty: 'खाली', - defineConditionTitle: 'उत्पाद', - defineConditionSelectedValueHiddenA11yLabel: 'चयनित मूल्य {value}', - defineConditionConditionsGroupHeaderInclude: 'शामिल करें', - defineConditionConditionsGroupHeaderExclude: 'बहिष्कृत करें', - defineConditionFromPlaceholder: 'से', - defineConditionToPlaceholder: 'तक', - defineConditionValuePlaceholder: 'मूल्य', - defineConditionRemoveConditionButtonTitle: 'शर्त हटाएं', - defineConditionAddConditionButtonLabel: 'जोड़ें', - defineConditionAddConditionButtonTitle: 'शर्त जोड़ें', - defineConditionConditionStrategyLabelContains: 'शामिल काम करता हैं', - defineConditionConditionStrategyLabelEqualTo: 'के बराबर', - defineConditionConditionStrategyLabelBetween: 'के बीच में', - defineConditionConditionStrategyLabelStartsWith: 'से शुरू होता है', - defineConditionConditionStrategyLabelEndsWith: 'के साथ समाप्त होता है', - defineConditionConditionStrategyLabelLessThan: 'से कम', - defineConditionConditionStrategyLabelLessThanEqual: 'बराबर से कम', - defineConditionConditionStrategyLabelGreaterThan: 'से अधिक', - defineConditionConditionStrategyLabelGreaterThanEqual: 'बराबर से अधिक', - defineConditionConditionStrategyLabelEmpty: 'खाली', - defineConditionConditionStrategyLabelNotEqualTo: 'के बराबर नहीं', - defineConditionConditionStrategyLabelNotEmpty: 'खाली नही', - defineConditionMaxCountError: '{count} से अधिक अक्षरो वाला कोई मूल्य दर्ज करें', - selectTabTitle: 'सूची में से चयन करें', - searchTableEmptyMessage: 'परिणाम प्राप्त करने के लिए खोज का प्रयोग करें', - defineTabTitle: 'शर्तों को परिभाषित करें' - }, - platformCombobox: { - countListResultsSingular: '1 परिणाम सूची आइटम', - countListResultsPlural: '{count} परिणाम सूची आइटम' - }, - platformMultiCombobox: { - inputGlyphAriaLabel: 'विकल्प चुनें', - inputIconTitle: 'विकल्प चुनें', - mobileShowAllItemsButton: 'सभी आइटम दिखाएं', - mobileShowSelectedItemsButton: 'सभी आइटम दिखाएं' - }, - platformTextarea: { - counterMessageCharactersOverTheLimitSingular: '1 सीमा से अधिक चरित्र', - counterMessageCharactersOverTheLimitPlural: '{count} सीमा से अधिक वर्ण', - counterMessageCharactersRemainingSingular: '1 चरित्र शेष', - counterMessageCharactersRemainingPlural: '{count} शेष वर्ण' - }, - platformLink: { - roleDescriptionWithMedia: 'मीडिया: {media}' - }, - platformList: { - loadingAriaLabel: 'लोड हो रहा है' - }, - platformObjectListItem: { - detailsActionAriaLabel: 'विवरण', - deleteActionAriaLabel: 'हटाएं' - }, - platformStandardListItem: { - detailsActionAriaLabel: 'विवरण', - deleteActionAriaLabel: 'हटाएं' - }, - platformSearchField: { - clearButtonTitle: 'साफ़ करें', - submitButtonTitle: 'खोज करें', - searchInputLabel: 'खोज करें', - synchronizeButtonTitle: 'सिंक्रनाइज़ करें', - searchSuggestionMessage: '{count} सुझाव मिले', - searchSuggestionNavigateMessage: 'नेविगेट करने के लिए ऊपर और नीचे तीरों का उपयोग करें' - }, - platformSmartFilterBar: { - searchPlaceholder: 'खोज करें', - submitButtonLabel: 'जाओ', - filtersButtonLabel: 'फिल्टर ({filtersCount})', - showFiltersButtonLabel: 'फ़िल्टर दिखाएं', - hideFiltersButtonLabel: 'फ़िल्टर छुपाएं', - defineConditionsRemoveConditionButtonTitle: 'शर्त हटाएं', - defineConditionsAddConditionButtonLabel: 'शर्त जोड़ें', - defineConditionsSubmitButtonLabel: 'जाओ', - defineConditionsCancelButton: 'रद्द करें', - selectFiltersHeader: 'फिल्टर', - selectFiltersAvailableFiltersText: 'उपलब्ध फिल्टर', - selectFiltersFilterColumnLabel: 'फिल्टर', - selectFiltersActiveColumnLabel: 'सक्रिय', - selectFiltersSubmitButtonLabel: 'जाओ', - selectFiltersCancelButton: 'रद्द करें', - filterConditionContains: 'रोकना', - filterConditionEqualTo: 'के बराबर', - filterConditionBetween: 'के बीच', - filterConditionBeginsWith: 'आरंभ है', - filterConditionEndsWith: 'समाप्त है', - filterConditionLessThan: 'से कम', - filterConditionLessThanOrEqualTo: 'कम या बराबर', - filterConditionGreaterThan: 'अधिक', - filterConditionGreaterThanOrEqualTo: 'बड़ा या इसके बराबर', - filterConditionAfter: 'बाद में', - filterConditionOnOrAfter: 'पर या बाद में', - filterConditionBefore: 'इससे पहले', - filterConditionBeforeOrOn: 'पहले या आगे', - filterConditionValuePlaceholder: 'मूल्य', - filterConditionValueFromPlaceholder: 'से', - filterConditionValueToPlaceholder: 'प्रति', - settingsCategoryAll: 'सभी', - settingsCategoryVisible: 'दृश्यमान', - settingsCategoryActive: 'सक्रिय', - settingsCategoryVisibleAndActive: 'दृश्यमान और सक्रिय', - settingsCategoryMandatory: 'अनिवार्य', - manageFieldConditions: 'Manage field conditions', - refreshButtonAriaLabel: 'Refresh' - }, - platformTable: { - headerMenuSortAsc: 'छोटे से बड़े क्रम में क्रमबद्ध करें', - headerMenuSortDesc: 'घटते क्रम', - headerMenuGroup: 'समूह', - headerMenuFreeze: 'फ्रीज करें', - headerMenuEndFreeze: 'Freeze to End', - headerMenuUnfreeze: 'हैडर मेनू अनफ्रीज', - headerMenuFilter: 'फिल्टर', - defaultEmptyMessage: 'डाटा प्राप्त नहीं हुआ', - emptyCell: 'खाली', - noVisibleColumnsMessage: - 'Right now, there are no visible columns in the table. Please select the columns you need in the table settings.', - resetChangesButtonLabel: 'रीसेट करें', - editableCellNumberPlaceholder: 'मूल्य दर्ज करें', - editableCellDatePlaceholder: 'मूल्य दर्ज करें', - editableCellStringPlaceholder: 'मूल्य दर्ज करें', - P13ColumnsDialogHeader: 'कॉलम', - P13ColumnsDialogSearchPlaceholder: 'खोज', - P13ColumnsDialogsShowSelected: 'चयनित दिखाएँ', - P13ColumnsDialogShowAll: 'सब दिखाएं', - P13ColumnsDialogSelectAll: 'सभी का चयन करे ({selectedColumnsCount}/{selectableColumnsCount})', - P13ColumnsDialogConfirmationBtnLabel: 'ठीक है', - P13ColumnsDialogCancelBtnLabel: 'रद्द करो', - P13ColumnsDialogMoveToTopBtn: 'शीर्ष पर जाएं', - P13ColumnsDialogMoveUpBtn: 'बढ़ाना', - P13ColumnsDialogMoveDownBtn: 'नीचे की ओर', - P13ColumnsDialogMoveToBottomBtn: 'नीचे ले जाएँ', - P13FilterStrategyLabelBetween: 'के बीच', - P13FilterStrategyLabelContains: 'रोकना', - P13FilterStrategyLabelBeginsWith: 'साथ शुरू होता है', - P13FilterStrategyLabelEndsWith: 'इसी के साथ समाप्त होता है', - P13FilterStrategyLabelEqualTo: 'के बराबर', - P13FilterStrategyLabelGreaterThan: 'से अधिक', - P13FilterStrategyLabelGreaterThanOrEqualTo: 'इससे बड़ा या इसके बराबर', - P13FilterStrategyLabelLessThan: 'से कम', - P13FilterStrategyLabelLessThanOrEqualTo: 'से कम या बराबर', - P13FilterStrategyLabelAfter: 'बाद में', - P13FilterStrategyLabelOnOrAfter: 'पर या बाद में', - P13FilterStrategyLabelBefore: 'इससे पहले', - P13FilterStrategyLabelBeforeOrOn: 'पहले या आगे', - P13FilterStrategyLabelNotDefined: 'परिभाषित नहीं', - P13FilterBooleanOptionNotDefined: ' ', - P13FilterBooleanOptionTrue: 'हां', - P13FilterBooleanOptionFalse: 'नहीं', - P13FilterDialogHeader: 'के द्वारा छनित', - P13FilterDialogIncludePanelTitleWithCount: 'शामिल ({count})', - P13FilterDialogIncludePanelTitleWithoutCount: 'शामिल', - P13FilterDialogExcludePanelTitleWithCount: 'निकालना ({count})', - P13FilterDialogExcludePanelTitleWithoutCount: 'निकालना', - P13FilterDialogRemoveFilterBtnTitle: 'फ़िल्टर हटाएं', - P13FilterDialoAddFilterBtnTitle: 'फ़िल्टर जोड़ें', - P13FilterDialogConfirmationBtnLabel: 'ठीक है', - P13FilterDialogCancelBtnLabel: 'रद्द करें', - P13GroupDialogHeader: 'समूह', - P13GroupDialogNoneSelectedColumnSelectPlaceholder: '(कोई भी नहीं)', - P13GroupDialogShowFieldAsColumnCheckboxLabel: 'फ़ील्ड को कॉलम के रूप में दिखाएं', - P13GroupDialogRemoveGroupBtnTitle: 'हटाना', - P13GroupDialogAddNewGroupBtnTitle: 'नया जोड़ें', - P13GroupDialogConfirmationBtnLabel: 'ठीक है', - P13GroupDialogCancelBtnLabel: 'रद्द करें', - P13SortDialogHeader: 'क्रम से लगाना', - P13SortDialogNoneSelectedColumn: '(कोई भी नहीं)', - P13SortDialogNoneSelectedSorting: '(कोई भी नहीं)', - P13SortDialogSortOrderSelectOptionAsc: 'बढ़ते क्रम', - P13SortDialogSortOrderSelectOptionDesc: 'घटते क्रम', - P13SortDialogRemoveSortBtnTitle: 'हटाना', - P13SortDialogAddNewSortBtnTitle: 'नया जोड़ें', - P13SortDialogConfirmationBtnLabel: 'ठीक है', - P13SortDialogCancelBtnLabel: 'रद्द करें', - toolbarSearchPlaceholder: 'तलाश', - toolbarActionCreateButtonLabel: 'सृजन करें', - toolbarActionSaveButtonLabel: 'बचाना', - toolbarActionCancelButtonLabel: 'रद्द करें', - toolbarActionSortButtonTitle: 'क्रम से लगाना', - toolbarActionFilterButtonTitle: 'फ़िल्टर', - toolbarActionGroupButtonTitle: 'समूह', - toolbarActionColumnsButtonTitle: 'कॉलम', - toolbarActionExpandAllButtonTitle: 'Expand all', - toolbarActionCollapseAllButtonTitle: 'Collapse all', - filterDialogNotFilteredLabel: '(फ़िल्टर नहीं किया गया)', - filterDialogFilterByLabel: 'के द्वारा छनित: {filterLabel}', - filterDialogFilterTitle: 'फ़िल्टर', - filterDialogFilterBy: 'के द्वारा छनित', - filterDialogConfirmBtnLabel: 'अनुमोदन', - filterDialogCancelBtnLabel: 'रद्द करें', - groupDialogHeader: 'समूह', - groupDialogGroupOrderHeader: 'समूह आदेश', - groupDialogGroupOrderAsc: 'बढ़ते क्रम', - groupDialogGroupOrderDesc: 'घटते क्रम', - groupDialogGroupByHeader: 'समूह द्वारा', - groupDialogNotGroupedLabel: '(समूहीकृत नहीं)', - groupDialogConfirmBtnLabel: 'अनुमोदन', - groupDialogCancelBtnLabel: 'रद्द करें', - sortDialogHeader: 'क्रम से लगाना', - sortDialogSortOrderHeader: 'क्रमबद्ध करें', - sortDialogSortOrderAsc: 'बढ़ते क्रम', - sortDialogSortOrderDesc: 'घटते क्रम', - sortDialogSortByHeader: 'आधार पर छाँटे', - sortDialogNotSortedLabel: '(क्रमबद्ध नहीं)', - sortDialogConfirmBtnLabel: 'अनुमोदन', - sortDialogCancelBtnLabel: 'रद्द करें', - selectAllCheckboxLabel: 'Select all', - deselectAllCheckboxLabel: 'Deselect all', - deselectSingleRow: 'To deselect row, press SPACEBAR', - selectSingleRow: 'To select row, press SPACEBAR', - deselectSingleRowTitle: 'Click to deselect', - selectSingleRowTitle: 'Click to select' - }, - platformThumbnail: { - detailsGotoPreviousButtonTitle: 'पिछले पर जाएं', - detailsGotoNextButtonTitle: 'अगले पर जाएं', - detailsDialogCloseBtnLabel: 'बंद करें', - roleDescription: 'छवि' - }, - platformUploadCollection: { - moveToTitle: 'करने के लिए कदम', - moveToTitleFolder: 'फ़ोल्डर', - moveToNewFolderBtnLabel: 'नया फोल्डर', - moveToAllFilesSubHeaderLabel: 'सभी फाइलें', - moveToConfirmBtn: 'कदम', - moveToCloseBtn: 'रद्द करें', - newFolderTitle: 'नया फोल्डर', - newFolderAtRootInputLabel: 'नए फोल्डर का नाम', - newFolderAtFolderInputLabel: 'नए फोल्डर का नाम {folderName}', - newFolderInputPlaceholder: 'यहा लिखें..', - newFolderInputErrorLabel: 'अधिकतम {count} पात्र अनुमत', - newFolderDialogCreateBtnLabel: 'सृजन करें', - newFolderDialogCancelBtnLabel: 'रद्द करें', - breadcrumbLabelAllFiles: 'सभी फाइलें', - breadcrumbLabelAllFilesWithTotal: 'सभी फाइलें ({total})', - searchPlaceholder: 'तलाश करें', - addBtnLabel: 'जोड़ें', - newFolderBtnLabel: 'नया फोल्डर', - moveToBtnLabel: 'यहाँ ले जाएँ', - downloadBtnLabel: 'डाउनलोड करें', - updateVersionBtnLabel: 'नया संस्करण', - removeBtnLabel: 'हटाएं', - folderIconTitle: 'फ़ोल्डर आइकन', - fileIconTitle: 'फ़ाइल आइकन', - editFileNameInputPlaceholder: 'नाम डालें', - editFileNameFileAlreadyExistsError: 'इस नाम की फ़ाइल पहले से मौजूद है', - editFileNameFolderAlreadyExistsError: 'इस नाम का फोल्डर पहले से मौजूद है', - itemStatusSuccessful: 'सफल', - itemStatusUnsuccessful: 'असफल', - uploadNewFileAfterFailAction: 'चलाएं', - cancelUploadNewFileAction: 'रद्द करें', - itemMenuBtnTitle: 'अधिक', - dragDropAreaText: 'अपलोड करने के लिए फ़ाइलें खींचें', - noDataText: 'कोई फाइल नहीं मिली', - noDataDescription: 'अपलोड करने के लिए फ़ाइलें छोड़ें, या "जोड़ें" बटन का उपयोग करें।', - paginationTotal: '{from}-{to} of {total} दिखा रहा है', - resultsPerPage: 'प्रति पेज नतीजे', - messageCreateFailed: '{folderName} बनाने में विफल।', - messageCreateSuccess: '{folderName} बनाया गया है।', - messageUpdateVersionFailed: '{folderName}का संस्करण अपडेट करने में विफल।', - messageUpdateVersionSuccess: '{folderName} संस्करण अद्यतन किया गया है।', - messageFileRenameFailed: '"{from}" तक "{to}" नाम बदलने में विफल।', - messageFileRenameSuccess: '"{from}" का नाम बदलकर कर "{to}" दिया गया है।', - messageRemoveFoldersAndFilesFailed: '{foldersCount} फ़ोल्डर्स और {filesCount} फ़ाइलें हटाने में विफल।', - messageRemoveFoldersAndFilesSuccess: '{foldersCount} फ़ोल्डर्स और {filesCount} फ़ाइलें हटा दी गई हैं।', - messageRemoveFoldersFailed: '{foldersCount} फ़ोल्डर्स हटाने में विफल ।', - messageRemoveFoldersSuccess: '{foldersCount} फ़ोल्डर हटा दिए गए हैं।', - messageRemoveFilesFailed: '{filesCount} फ़ाइलें हटाने में विफल ।', - messageRemoveFilesSuccess: '{filesCount} फ़ाइलें हटा दी गई हैं।', - messageRemoveFileOrFolderFailed: '{name} हटाने में विफल ।', - messageRemoveFileOrFolderSuccess: '{name} निकाल दिया गया है।', - messageMoveFoldersAndFilesFailed: - '{to} तक {foldersCount} फ़ोल्डर्स और {filesCount} फ़ाइलें स्थानांतरित करने में विफल।', - messageMoveFoldersAndFilesSuccess: - '{foldersCount} फ़ोल्डर्स और {filesCount} फ़ाइलें स्थानांतरित कर दी गई हैं {to}।', - messageMoveFoldersFailed: '{to} तक {foldersCount} फ़ोल्डर्स स्थानांतरित करने में विफल।', - messageMoveFoldersSuccess: '{foldersCount} फ़ोल्डर्स को स्थानांतरित कर दिया गया है {to}।', - messageMoveFilesFailed: '{to} तक {filesCount} फ़ाइलें स्थानांतरित करने में विफल।', - messageMoveFilesSuccess: '{filesCount} फ़ाइलें स्थानांतरित कर दी गई हैं {to}।', - messageMoveFileOrFolderFailed: 'स्थानांतरित करने में विफल {name} प्रति {to}।', - messageMoveFileOrFolderSuccess: '{name} में ले जाया गया है {to}।', - messageMoveRootFoldersAndFilesFailed: - 'स्थानांतरित करने में विफल {foldersCount} फ़ोल्डर्स और {filesCount} सभी फाइलों के लिए फ़ाइलें।', - messageMoveRootFoldersAndFilesSuccess: - '{foldersCount} फ़ोल्डर्स और {filesCount} फ़ाइलें सभी फ़ाइलों में ले जाया गया है।', - messageMoveRootFoldersFailed: 'स्थानांतरित करने में विफल {foldersCount} सभी फाइलों के लिए फ़ोल्डर।', - messageMoveRootFoldersSuccess: '{foldersCount} फ़ोल्डर्स को सभी फाइलों में ले जाया गया है।', - messageMoveRootFilesFailed: 'स्थानांतरित करने में विफल {filesCount} सभी फाइलों के लिए फ़ाइलें।', - messageMoveRootFilesSuccess: '{filesCount} फ़ाइलें सभी फ़ाइलों में ले जाया गया है।', - messageMoveRootFileOrFolderFailed: 'स्थानांतरित करने में विफल {name} सभी फाइलों के लिए।', - messageMoveRootFileOrFolderSuccess: '{name} सभी फाइलों में ले जाया गया है।', - messageFileTypeMismatchPlural: '{filesCount} फाइलों का प्रकार गलत है। अनुमत प्रकार: {allowedTypes}।', - messageFileTypeMismatchSingular: 'फ़ाइल "{fileName}" गलत प्रकार है। अनुमत प्रकार: {allowedTypes}।', - messageFileSizeExceededPlural: - '{filesCount} फ़ाइलें अधिकतम फ़ाइल आकार से अधिक हो गईं। अनुमत अधिकतम फ़ाइल आकार: {maxFileSize}।', - messageFileSizeExceededSingular: - 'फ़ाइल "{fileName}" अधिकतम फ़ाइल आकार को पार कर गया। अनुमत अधिकतम फ़ाइल आकार: {maxFileSize}।', - messageFileNameLengthExceededPlural: - '{filesCount} फ़ाइलें फ़ाइल नाम की अधिकतम लंबाई को पार कर गई हैं। अनुमत फ़ाइल नाम लंबाई: {maxFilenameLength} पात्र।', - messageFileNameLengthExceededSingular: - 'नाम "{fileName}" फ़ाइल नाम की अधिकतम लंबाई को पार कर गया। अनुमत फ़ाइल नाम लंबाई: {maxFilenameLength} पात्र।' - }, - platformWizardGenerator: { - summarySectionEditStep: 'संपादित करें' - }, - platformMessagePopover: { - allErrors: 'All', - defaultErrors: { - email: 'Email is invalid', - max: 'The field exceeds maximum value', - maxLength: 'The field exceeds maximum length', - min: 'The field value is less than allowed', - minLength: 'The field length is less than allowed', - pattern: 'The field value is invalid', - required: 'The field is mandatory', - requiredTrue: 'The field is mandatory' - } - }, - platformVariantManagement: { - manage: 'Manage', - saveAs: 'Save as', - saveView: 'Save View', - save: 'Save', - myViews: 'My Views', - view: 'View', - setAsDefault: 'Set as Default', - public: 'Public', - applyAutomatically: 'Apply Automatically', - requiredFieldError: 'This field is required.', - nameTakenFieldError: 'Variant with such name already exists. Please chose a different name.', - cancel: 'Cancel', - manageViews: 'Manage Views', - markAsFavourite: 'Mark as Favourite', - sharing: 'Sharing', - default: 'Default', - createdBy: 'Created By', - removeVariant: 'Remove View', - search: 'Search', - access: { - public: 'Public', - private: 'Private' - } - }, - platformSelect: { - selectOptionLabel: 'एक विकल्प चुनें' - }, - fnSlider: { - minMaxDetails: 'स्लाइडर न्यूनतम मूल्य {min}, अधिकतम मूल्य {max}', - valueminDetails: 'मूल्य {value}', - valuemaxDetails: 'मूल्य {value}', - valueNowDetails: 'वर्तमान मूल्य {value}' - }, - fnSwitch: { - semanticAcceptLabel: 'स्वीकार करें', - semanticDeclineLabel: 'अस्वीकार करें' - }, - coreTree: { - expand: 'Expand node', - collapse: 'Collapse node', - noData: 'No data' - } -}; +export const FD_LANGUAGE_HINDI = loadJson(json); diff --git a/libs/i18n/src/lib/languages/italian.ts b/libs/i18n/src/lib/languages/italian.ts index 7313ead2f9c..b1cae3c8562 100644 --- a/libs/i18n/src/lib/languages/italian.ts +++ b/libs/i18n/src/lib/languages/italian.ts @@ -1,628 +1,4 @@ -import { FdLanguage } from '../models/lang'; +import json from '../translations/translations_it-IT.json'; +import { loadJson } from '../utils/load-json'; -/** - * Default set of translations of Fundamental UI libarary for Italian language - */ -export const FD_LANGUAGE_ITALIAN: FdLanguage = { - coreMultiComboBox: { - selectAllLabel: 'Seleziona tutto ({selectedItems} di {totalItems})' - }, - coreCarousel: { - leftNavigationBtnLabel: "Vai all'elemento precedente", - rightNavigationBtnLabel: "Vai all'elemento successivo" - }, - coreDatePicker: { - dateInputLabel: 'Inserimento data', - dateRangeInputLabel: 'Inserimento intervallo di date', - displayCalendarToggleLabel: 'Selettore aperto', - valueStateSuccessMessage: 'Stato valore Success', - valueStateInformationMessage: 'Informazioni sullo stato del valore', - valueStateWarningMessage: 'Avviso stato valore', - valueStateErrorMessage: 'Errore stato valore' - }, - coreDatetimePicker: { - datetimeInputLabel: 'Inserimento data/ora', - displayDatetimeToggleLabel: 'Visualizza/disattiva calendario', - displayTypeDateLabel: 'Data', - displayTypeTimeLabel: 'Volta', - datetimeOkLabel: 'Ok', - datetimeCancelLabel: 'Anulla' - }, - coreFeedListItem: { - moreLabel: 'Altro', - lessLabel: 'Meno' - }, - coreGridList: { - filterBarCancelButtonTitle: 'Annulla', - listItemStatusAriaLabel: "L'articolo ha uno stato. Stato: {status}.", - listItemCounterAriaLabel: "L'articolo ha {count} sottoarticoli.", - listItemButtonDetailsTitle: 'Dettagli', - listItemButtonDeleteTitle: 'Elimina', - listItemStatusContainsErrors: 'Contiene errori', - listItemStatusLocked: 'Bloccato', - listItemStatusDraft: 'Bozza' - }, - coreMessageStrip: { - dismissLabel: 'Congedare' - }, - coreMultiInput: { - multiInputAriaLabel: 'Multi Value Input', - tokensCountText: 'Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.' - }, - coreNavigation: { - mainNavigation: 'Main Navigation', - navigationPath: 'Navigation Path' - }, - coreNestedList: { - linkItemAriaLabel: "Elemento dell'albero {itemDetails}, {index} di {total}{selectedDescription}" - }, - coreOverflowLayout: { - moreItemsButton: '{ count, plural, one {1 più} other {Altri #} } articoli' - }, - corePagination: { - pageLabel: 'Pagina {pageNumber}', - currentPageAriaLabel: 'La pagina {pageNumber} è la pagina corrente', - labelBeforeInputMobile: 'Pagina:', - labelAfterInputMobile: 'di {totalCount}', - inputAriaLabel: 'Inserimento pagina, Pagina corrente, Pagina {pageNumber} di {totalCount}', - itemsPerPageLabel: 'Risultati per pagina:', - firstLabel: 'First', - previousLabel: 'Precedente', - nextLabel: 'Next', - lastLabel: 'Ultimo', - ariaLabel: 'Impaginazione', - totalResultsLabel: '{totalCount} Risultati' - }, - coreProductSwitch: { - ariaLabel: 'Commutatore del prodotto' - }, - coreShellbar: { - collapsedItemMenuLabel: 'Menu di voci compresso', - cancel: 'Cancel', - search: 'Search' - }, - coreSlider: { - singleMinMaxDetails: 'Il valore minimo del dispositivo di scorrimento è {minimo}, il valore massimo è {max}', - singleValueminDetails: 'Il valore è {value}', - singleValuemaxDetails: 'Il valore è {value}', - singleValueNowDetails: 'Il valore attuale è {value}', - multipleHandle1MinMaxDetails: - "Il valore minimo del dispositivo di scorrimento dell'intervallo è {min}, il valore massimo è {max}", - multipleHandle1ValueminDetails: 'Il valore è {value}', - multipleHandle1ValuemaxDetails: 'Il valore è {value}', - multipleHandle1ValueNowDetails: 'Il valore attuale è {value}', - multipleHandle2MinMaxDetails: - "Il valore minimo del dispositivo di scorrimento dell'intervallo è {min}, il valore massimo è {max}", - multipleHandle2ValueminDetails: 'Il valore è {value}', - multipleHandle2ValuemaxDetails: 'Il valore è {value}', - multipleHandle2ValueNowDetails: 'Il valore attuale è {value}' - }, - coreSplitButton: { - expandButtonAriaLabel: 'Più azioni', - arialLabel: 'Pulsante Dividi' - }, - coreSplitter: { - paginationItemAriaLabel: 'Sezione' - }, - coreStepInput: { - incrementButtonTitle: 'Incremento', - decrementButtonTitle: 'Decremento', - ariaRoleDescription: 'Ingresso passo' - }, - coreSwitch: { - semanticAcceptLabel: 'Accettare', - semanticDeclineLabel: 'Declino' - }, - coreTabs: { - tabListExpandButtonText: 'Di più' - }, - coreText: { - moreLabel: 'Di più', - lessLabel: 'Meno' - }, - coreTime: { - componentAriaName: 'Selettore tempo', - increaseHoursLabel: 'Aumenta le ore', - hoursLabel: 'Ore', - decreaseHoursLabel: 'Diminuisci ore', - increaseMinutesLabel: 'Aumenta minuti', - minutesLabel: 'Minimo', - decreaseMinutesLabel: 'Diminuisci minuti', - increaseSecondsLabel: 'Aumenta i secondi', - secondsLabel: 'Sec', - decreaseSecondsLabel: 'Diminuisci secondi', - increasePeriodLabel: 'Aumento periodo', - periodLabel: 'Periodo', - decreasePeriodLabel: 'Diminuisci periodo', - navigationInstruction: - 'Per spostarti tra gli elementi di questo elenco, premi la freccia in alto o in basso. ' + - "Per passare da un elenco all'altro, premere la freccia sinistra o la freccia destra." - }, - coreTimePicker: { - timePickerInputLabel: 'Input per la selezione del tempo', - timePickerButtonLabel: 'Selettore aperto' - }, - coreToken: { - deleteButtonLabel: 'Cancellabile', - ariaRoleDescription: 'gettone' - }, - coreTokenizer: { - moreLabel: '{ count, plural, one {1 più} other {Altri #} } articoli' - }, - coreUploadCollection: { - menuOkText: 'Ok', - menuCancelText: 'Annulla', - menuEditAriaLabel: 'Modifica', - menuDeleteAriaLabel: 'Elimina', - menuOkAriaLabel: 'Modifica', - menuCancelAriaLabel: 'Annulla', - formItemPlaceholder: 'Nome file' - }, - coreWizard: { - ariaLabel: 'Procedura guidata' - }, - coreBreadcrumb: { - overflowTitleMore: 'Altro' - }, - platformActionBar: { - backButtonLabel: 'Torna indietro' - }, - platformApprovalFlow: { - defaultWatchersLabel: 'Osservatori', - defaultTitle: 'Processo di approvazione', - nextButtonAriaLabel: 'Vai alla diapositiva successiva', - prevButtonAriaLabel: 'Vai alla diapositiva precedente', - editModeSaveButtonLabel: 'Salva', - editModeExitButtonLabel: 'Uscita', - emptyTitle: 'Inizia ad aggiungere approvatori e osservatori', - emptyHint: - 'Per aggiungere approvatori, fai clic su "Aggiungi un passaggio". Per aggiungere osservatori, fai clic sul campo Osservatori.', - addNodeDialogHeaderAddApprovers: 'Aggiungi approvatori', - addNodeDialogHeaderEditApprover: 'Modifica approvatori', - addNodeDialogHeaderAddApproverTeam: 'Utente/Squadra', - addNodeDialogHeaderDetail: 'Dettaglio', - addNodeDialogNodeType: 'Parallelo o seriale', - addNodeDialogNodeTypeSerial: 'Seriale', - addNodeDialogNodeTypeParallel: 'Parallelo', - addNodeDialogApproverType: 'Tipo di approvatore', - addNodeDialogApproverTypeUser: 'Un utente', - addNodeDialogApproverTypeTeamAnyone: 'Chiunque nel team', - addNodeDialogApproverTypeTeamEveryone: 'Tutti in squadra', - addNodeDialogUserOrTeam: 'Utente/Squadra', - addNodeDialogAddToNext: 'Aggiungi al nodo seriale successivo', - addNodeDialogDueDate: 'Data di scadenza', - addNodeSearchPlaceholder: 'Cerca', - addNodeAddActionBtnLabel: 'Aggiungi', - addNodeCancelActionBtnLabel: 'Annulla', - addNodeSelectApproverActionBtnLabel: 'Seleziona', - addNodeCancelApproverSelectionActionBtnLabel: 'Annulla', - addNodeApproverOrTeamDetailsCloseActionBtnLabel: 'Chiudi', - userDetailsHeader: 'Dettaglio', - userDetailsSendReminderBtnLabel: 'Invia promemoria', - userDetailsCancelBtnLabel: 'Annulla', - messagesApproverAddedSuccess: '1 approvatore è stato aggiunto', - messagesTeamAddedSuccess: '1 squadra è stata aggiunta', - messagesNodeEdited: '1 approvatore è stato modificato', - messagesNodeRemovedSingular: '1 approvatore è stato rimosso', - messagesNodeRemovedPlural: 'Gli approvatori sono stati rimossi', - messagesTeamRemoved: '1 squadra è stata rimossa', - messagesErrorBuildGraph: - 'Si è verificato un errore durante il tentativo di creare un grafico. Controllare i dati iniziali.', - messagesUndoAction: 'Anulla', - nodeMembersCount: '{count} membri', - nodeVariousTeams: 'Varie squadre', - nodeStatusDueToday: 'Scadenza oggi', - nodeStatusDueInXDays: ' Scadenza tra {count} giorni', - nodeStatusXDaysOverdue: '{count} giorni scaduti', - nodeActionAddApproversBefore: 'Aggiungi prima gli approvatori', - nodeActionAddApproversAfter: 'Aggiungi approvatori dopo', - nodeActionAddApproversParallel: 'Aggiungi approvatori paralleli', - nodeActionEditApprover: 'Modifica approvatore', - nodeActionRemove: 'Rimuovi', - selectTypeDialogMoveApproverAs: 'Sposta approvatore come', - selectTypeDialogParallelOrSerial: 'Parallelo o seriale', - selectTypeDialogNodeTypeParallel: 'Approvatore parallelo', - selectTypeDialogNodeTypeSerial: 'Approvatore seriale', - selectTypeDialogConfirmButton: 'Conferma', - selectTypeDialogCancelButton: 'Annulla', - toolbarAddStepButton: 'Aggiungi un passo', - toolbarEditButton: 'Modifica', - toolbarAddApproversBefore: 'Aggiungi prima gli approvatori', - toolbarAddApproversAfter: 'Aggiungi approvatori dopo', - toolbarAddApproversParallel: 'Aggiungi approvatori paralleli', - toolbarRemove: 'Rimuovi', - toolbarEditApprover: 'Modifica approvatore', - watchersInputPlaceholder: 'Cerca qui..', - userListSelectedItemsCountSingular: '1 elemento selezionato', - userListSelectedItemsCountPlural: '{count} elementi selezionati', - statusApproved: 'approved', - statusRejected: 'rejected', - statusInProgress: 'in progress', - statusNotStarted: 'not started' - }, - platformFeedInput: { - userTitle: 'Utente' - }, - platformVHD: { - selectionBarLabel: 'Articoli selezionati e condizionati', - selectedAndConditionLabel: 'Articoli e condizioni selezionati', - footerClearSelectedTitle: 'cancella gli elementi selezionati', - footerClearSelectedAriaLabel: 'cancella gli elementi selezionati', - searchButtonLabel: 'Vai', - successButtonLabel: 'OK', - cancelButtonLabel: 'Annulla', - selectedEmptyLabel: 'Nessun articolo o condizione selezionato', - searchPlaceholder: 'Cerca', - searchAdvancedSearchLabel: 'Filtri', - searchShowAdvancedSearchLabel: 'Mostra filtri', - searchHideAdvancedSearchLabel: 'Nascondi filtri', - searchShowAllAdvancedSearchLabel: 'Mostra tutti i filtri', - searchHideAllAdvancedSearchLabel: 'Nascondi tutti i filtri', - selectTabDisplayCountLabel: 'Articoli ({count})', - selectTabMoreBtnLabel: 'Altro', - selectTabCountHiddenA11yLabel: 'contiene {rowCount} righe e {colCount} colonne', - selectMobileTabBackBtnTitle: 'Indietro', - selectMobileTabBtnOpenDialogLabel: 'Apri finestra di dialogo', - selectMobileTabTitle: '{title} scheda', - selectMobileConditionEmpty: 'Vuoto', - defineConditionTitle: 'Prodotto', - defineConditionSelectedValueHiddenA11yLabel: 'valore selezionato {value}', - defineConditionConditionsGroupHeaderInclude: 'Includi', - defineConditionConditionsGroupHeaderExclude: 'Escludi', - defineConditionFromPlaceholder: 'da', - defineConditionToPlaceholder: 'a', - defineConditionValuePlaceholder: 'valore', - defineConditionRemoveConditionButtonTitle: 'Rimuovi condizione', - defineConditionAddConditionButtonLabel: 'Aggiungi', - defineConditionAddConditionButtonTitle: 'Aggiungi condizione', - defineConditionConditionStrategyLabelContains: 'contiene', - defineConditionConditionStrategyLabelEqualTo: 'uguale a', - defineConditionConditionStrategyLabelBetween: 'fra', - defineConditionConditionStrategyLabelStartsWith: 'inizia con', - defineConditionConditionStrategyLabelEndsWith: 'finisce con', - defineConditionConditionStrategyLabelLessThan: 'meno di', - defineConditionConditionStrategyLabelLessThanEqual: 'meno che uguale', - defineConditionConditionStrategyLabelGreaterThan: 'più grande di', - defineConditionConditionStrategyLabelGreaterThanEqual: 'maggiore di uguale', - defineConditionConditionStrategyLabelEmpty: 'vuoto', - defineConditionConditionStrategyLabelNotEqualTo: 'non uguale a', - defineConditionConditionStrategyLabelNotEmpty: 'no vuoto', - defineConditionMaxCountError: 'Immettere un valore con non più di {count} caratteri', - selectTabTitle: "Seleziona dall'elenco", - searchTableEmptyMessage: 'Usa la ricerca per ottenere risultati', - defineTabTitle: 'Definisci condizioni' - }, - platformCombobox: { - countListResultsSingular: '1 elemento della lista dei risultati', - countListResultsPlural: "{count} elementi dell'elenco dei risultati" - }, - platformMultiCombobox: { - inputGlyphAriaLabel: 'Seleziona Opzioni', - inputIconTitle: 'Seleziona Opzioni', - mobileShowAllItemsButton: 'Mostra tutti gli articoli', - mobileShowSelectedItemsButton: 'Mostra gli articoli selezionati' - }, - platformTextarea: { - counterMessageCharactersOverTheLimitSingular: '1 carattere oltre il limite', - counterMessageCharactersOverTheLimitPlural: '{count} caratteri oltre il limite', - counterMessageCharactersRemainingSingular: '1 carattere rimanente', - counterMessageCharactersRemainingPlural: '{count} caratteri rimanenti' - }, - platformLink: { - roleDescriptionWithMedia: 'Media: {media}' - }, - platformList: { - loadingAriaLabel: 'caricamento in corso' - }, - platformObjectListItem: { - detailsActionAriaLabel: 'dettaglio', - deleteActionAriaLabel: 'elimina' - }, - platformStandardListItem: { - detailsActionAriaLabel: 'dettaglio', - deleteActionAriaLabel: 'elimina' - }, - platformSearchField: { - clearButtonTitle: 'Cancella', - submitButtonTitle: 'Cerca', - searchInputLabel: 'Cerca', - synchronizeButtonTitle: 'Sincronizza', - searchSuggestionMessage: '{count} suggerimenti trovati.', - searchSuggestionNavigateMessage: 'usa le frecce su e giù per navigare' - }, - platformSmartFilterBar: { - searchPlaceholder: 'Cerca', - submitButtonLabel: 'Vai', - filtersButtonLabel: 'Filtri ({filtersCount})', - showFiltersButtonLabel: 'Mostra filtri', - hideFiltersButtonLabel: 'Nascondi filtri', - defineConditionsRemoveConditionButtonTitle: 'Rimuovi condizione', - defineConditionsAddConditionButtonLabel: 'Aggiungi condizione', - defineConditionsSubmitButtonLabel: 'Vai', - defineConditionsCancelButton: 'Annulla', - selectFiltersHeader: 'Filtri', - selectFiltersAvailableFiltersText: 'Filtri disponibili', - selectFiltersFilterColumnLabel: 'Filtro', - selectFiltersActiveColumnLabel: 'Attivo', - selectFiltersSubmitButtonLabel: 'Vai', - selectFiltersCancelButton: 'Annulla', - filterConditionContains: 'contiene', - filterConditionEqualTo: 'uguale a', - filterConditionBetween: 'tra', - filterConditionBeginsWith: 'inizia con', - filterConditionEndsWith: 'finisce con', - filterConditionLessThan: 'minore di', - filterConditionLessThanOrEqualTo: 'minore o uguale a', - filterConditionGreaterThan: 'maggiore di', - filterConditionGreaterThanOrEqualTo: 'maggiore o uguale a', - filterConditionAfter: 'dopo', - filterConditionOnOrAfter: 'su o dopo', - filterConditionBefore: 'prima', - filterConditionBeforeOrOn: 'prima o sopra', - filterConditionValuePlaceholder: 'valore', - filterConditionValueFromPlaceholder: 'da', - filterConditionValueToPlaceholder: 'a', - settingsCategoryAll: 'Tutto', - settingsCategoryVisible: 'Visibile', - settingsCategoryActive: 'Attivo', - settingsCategoryVisibleAndActive: 'Visibile e attivo', - settingsCategoryMandatory: 'Obbligatorio', - manageFieldConditions: 'Manage field conditions', - refreshButtonAriaLabel: 'Refresh' - }, - platformTable: { - headerMenuSortAsc: 'Ordine crescente', - headerMenuSortDesc: 'Ordine decrescente', - headerMenuGroup: 'Gruppo', - headerMenuFreeze: 'Congela', - headerMenuEndFreeze: 'Freeze to End', - headerMenuUnfreeze: 'Sblocca', - headerMenuFilter: 'Filtro', - defaultEmptyMessage: 'Nessun dato trovato', - emptyCell: 'Vuoto', - noVisibleColumnsMessage: - 'Right now, there are no visible columns in the table. Please select the columns you need in the table settings.', - resetChangesButtonLabel: 'Reset', - editableCellNumberPlaceholder: 'Inserisci valore', - editableCellDatePlaceholder: 'Inserisci valore', - editableCellStringPlaceholder: 'Inserisci valoree', - P13ColumnsDialogHeader: 'Colonne', - P13ColumnsDialogSearchPlaceholder: 'Cerca', - P13ColumnsDialogsShowSelected: 'Mostra selezionato', - P13ColumnsDialogShowAll: 'Mostra tutto', - P13ColumnsDialogSelectAll: 'Seleziona tutto ({selectedColumnsCount}/{selectableColumnsCount})', - P13ColumnsDialogConfirmationBtnLabel: 'OK', - P13ColumnsDialogCancelBtnLabel: 'Annulla', - P13ColumnsDialogMoveToTopBtn: 'Sposta in alto', - P13ColumnsDialogMoveUpBtn: 'Sposta su', - P13ColumnsDialogMoveDownBtn: 'Sposta su', - P13ColumnsDialogMoveToBottomBtn: 'Sposta in basso', - P13FilterStrategyLabelBetween: 'fra', - P13FilterStrategyLabelContains: 'contiene', - P13FilterStrategyLabelBeginsWith: 'inizia con', - P13FilterStrategyLabelEndsWith: 'finisce con', - P13FilterStrategyLabelEqualTo: 'uguale a', - P13FilterStrategyLabelGreaterThan: 'più grande di', - P13FilterStrategyLabelGreaterThanOrEqualTo: 'maggiore o uguale a', - P13FilterStrategyLabelLessThan: 'meno di', - P13FilterStrategyLabelLessThanOrEqualTo: 'minore o uguale a', - P13FilterStrategyLabelAfter: 'dopo', - P13FilterStrategyLabelOnOrAfter: 'sopra o dopo', - P13FilterStrategyLabelBefore: 'prima', - P13FilterStrategyLabelBeforeOrOn: 'prima o dopo', - P13FilterStrategyLabelNotDefined: 'Non definito', - P13FilterBooleanOptionNotDefined: ' ', - P13FilterBooleanOptionTrue: 'Si', - P13FilterBooleanOptionFalse: 'No', - P13FilterDialogHeader: 'Filtra per', - P13FilterDialogIncludePanelTitleWithCount: 'Includi ({count})', - P13FilterDialogIncludePanelTitleWithoutCount: 'Includi', - P13FilterDialogExcludePanelTitleWithCount: 'Escludi ({count})', - P13FilterDialogExcludePanelTitleWithoutCount: 'Escludi', - P13FilterDialogRemoveFilterBtnTitle: 'Rimuovi filtro', - P13FilterDialoAddFilterBtnTitle: 'Aggiungi filtro', - P13FilterDialogConfirmationBtnLabel: 'OK', - P13FilterDialogCancelBtnLabel: 'Annulla', - P13GroupDialogHeader: 'Gruppo', - P13GroupDialogNoneSelectedColumnSelectPlaceholder: '(nessuno)', - P13GroupDialogShowFieldAsColumnCheckboxLabel: 'Mostra campo come colonna', - P13GroupDialogRemoveGroupBtnTitle: 'Rimuovi', - P13GroupDialogAddNewGroupBtnTitle: 'Aggiungi nuovo', - P13GroupDialogConfirmationBtnLabel: 'OK', - P13GroupDialogCancelBtnLabel: 'Annulla', - P13SortDialogHeader: 'Ordina', - P13SortDialogNoneSelectedColumn: '(nessuno)', - P13SortDialogNoneSelectedSorting: '(nessuno)', - P13SortDialogSortOrderSelectOptionAsc: 'Crescente', - P13SortDialogSortOrderSelectOptionDesc: 'Decrescente', - P13SortDialogRemoveSortBtnTitle: 'Rimuovi', - P13SortDialogAddNewSortBtnTitle: 'Aggiungi nuovo', - P13SortDialogConfirmationBtnLabel: 'OK', - P13SortDialogCancelBtnLabel: 'Annulla', - toolbarSearchPlaceholder: 'Cerca', - toolbarActionCreateButtonLabel: 'Create', - toolbarActionSaveButtonLabel: 'Salva', - toolbarActionCancelButtonLabel: 'Annulla', - toolbarActionSortButtonTitle: 'Ordina', - toolbarActionFilterButtonTitle: 'Filtro', - toolbarActionGroupButtonTitle: 'Gruppo', - toolbarActionColumnsButtonTitle: 'Colonne', - toolbarActionExpandAllButtonTitle: 'Expand all', - toolbarActionCollapseAllButtonTitle: 'Collapse all', - filterDialogNotFilteredLabel: '(Non filtrato)', - filterDialogFilterByLabel: 'Filtra per: {filterLabel}', - filterDialogFilterTitle: 'Filtro', - filterDialogFilterBy: 'Filtra per', - filterDialogConfirmBtnLabel: 'OK', - filterDialogCancelBtnLabel: 'Annulla', - groupDialogHeader: 'Gruppo', - groupDialogGroupOrderHeader: 'Ordine di gruppo', - groupDialogGroupOrderAsc: 'Crescente', - groupDialogGroupOrderDesc: 'Decrescente', - groupDialogGroupByHeader: 'Gruppo per', - groupDialogNotGroupedLabel: '(Non raggruppato)', - groupDialogConfirmBtnLabel: 'OK', - groupDialogCancelBtnLabel: 'Annulla', - sortDialogHeader: 'Ordina', - sortDialogSortOrderHeader: 'Ordinamento', - sortDialogSortOrderAsc: 'Crescente', - sortDialogSortOrderDesc: 'Decrescente', - sortDialogSortByHeader: 'Ordinato per', - sortDialogNotSortedLabel: '(Non ordinato)', - sortDialogConfirmBtnLabel: 'OK', - sortDialogCancelBtnLabel: 'Annulla', - selectAllCheckboxLabel: 'Select all', - deselectAllCheckboxLabel: 'Deselect all', - deselectSingleRow: 'To deselect row, press SPACEBAR', - selectSingleRow: 'To select row, press SPACEBAR', - deselectSingleRowTitle: 'Click to deselect', - selectSingleRowTitle: 'Click to select' - }, - platformThumbnail: { - detailsGotoPreviousButtonTitle: 'Vai a Precedente', - detailsGotoNextButtonTitle: 'Vai a Avanti', - detailsDialogCloseBtnLabel: 'Chiudi', - roleDescription: 'Immagine' - }, - platformUploadCollection: { - moveToTitle: 'Sposta a', - moveToTitleFolder: 'Cartella', - moveToNewFolderBtnLabel: 'Nuova cartella', - moveToAllFilesSubHeaderLabel: 'Tutti i files', - moveToConfirmBtn: 'Sposta', - moveToCloseBtn: 'Annulla', - newFolderTitle: 'Nuova cartella', - newFolderAtRootInputLabel: 'Nome della nuova cartella', - newFolderAtFolderInputLabel: "Nome della nuova cartella all'interno di {folderName}", - newFolderInputPlaceholder: 'Scrivi qui..', - newFolderInputErrorLabel: 'Massimo {count} caratteri consentiti', - newFolderDialogCreateBtnLabel: 'Crea', - newFolderDialogCancelBtnLabel: 'Annulla', - breadcrumbLabelAllFiles: 'Tutti i files', - breadcrumbLabelAllFilesWithTotal: 'Tutti i files ({total})', - searchPlaceholder: 'Cerca', - addBtnLabel: 'Aggiungi', - newFolderBtnLabel: 'Nuova cartella', - moveToBtnLabel: 'Sposta a', - downloadBtnLabel: 'Scarica', - updateVersionBtnLabel: 'Aggiorna versione', - removeBtnLabel: 'Rimuovi', - folderIconTitle: 'Icona cartella', - fileIconTitle: 'Icona file', - editFileNameInputPlaceholder: 'Inserisci un nome', - editFileNameFileAlreadyExistsError: 'Il file con questo nome esiste già', - editFileNameFolderAlreadyExistsError: 'La cartella con questo nome esiste già', - itemStatusSuccessful: 'Successo', - itemStatusUnsuccessful: 'Non successo', - uploadNewFileAfterFailAction: 'Esegui', - cancelUploadNewFileAction: 'Annulla', - itemMenuBtnTitle: 'Altro', - dragDropAreaText: 'Trascina i file per caricarli', - noDataText: 'Nessun file trovato', - noDataDescription: 'Trascina i file da caricare o usa il pulsante "Aggiungi".', - paginationTotal: 'Visualizzazione di {from}-{to} di {total}', - resultsPerPage: 'Risultati per pagina', - messageCreateFailed: 'Impossibile creare {folderName}.', - messageCreateSuccess: '{folderName} è stato creato.', - messageUpdateVersionFailed: 'Impossibile aggiornare la versione di {folderName}.', - messageUpdateVersionSuccess: 'La versione di {folderName} è stata aggiornata.', - messageFileRenameFailed: 'Impossibile rinominare"{from}" in "{to}."', - messageFileRenameSuccess: '"{from}" è stato rinominato in "{to}".', - messageRemoveFoldersAndFilesFailed: 'Impossibile rimuovere le cartelle {foldersCount} e i file {filesCount}.', - messageRemoveFoldersAndFilesSuccess: 'Le cartelle {foldersCount} e i file {filesCount} sono state rimosse.', - messageRemoveFoldersFailed: 'Impossibile rimuovere le cartelle {foldersount}.', - messageRemoveFoldersSuccess: 'Le cartelle {foldersCount} sono state rimosse.', - messageRemoveFilesFailed: 'Impossibile rimuovere {filesCount} file.', - messageRemoveFilesSuccess: 'I file {filesCount} sono stati rimossi.', - messageRemoveFileOrFolderFailed: 'Impossibile rimuovere {name}.', - messageRemoveFileOrFolderSuccess: '{nome} è stato rimosso.', - messageMoveFoldersAndFilesFailed: - 'Impossibile spostare le cartelle {foldersCount} e i file {filesCount} in {to}.', - messageMoveFoldersAndFilesSuccess: '{foldersCount} cartelle e {filesCount} file sono stati sposati in {to}.', - messageMoveFoldersFailed: 'Impossibile spostare le cartelle {foldersCount} in {to}.', - messageMoveFoldersSuccess: 'Le cartelle {foldersCount} sono state spostate in {to}.', - messageMoveFilesFailed: 'Impossibile spostare i file {filesCount} in {to}.', - messageMoveFilesSuccess: 'I file {filesCount} sono stati spostati in {to}.', - messageMoveFileOrFolderFailed: 'Impossibile spostare {name} in {to}.', - messageMoveFileOrFolderSuccess: '{name} è stato spostato in {to}.', - messageMoveRootFoldersAndFilesFailed: - 'Impossibile spostare le cartelle {foldersCount} e i file {filesCount} in tutti i file.', - messageMoveRootFoldersAndFilesSuccess: - 'Le cartelle {foldersCount} e i file {filesCount} sono state spostate in tutti i file.', - messageMoveRootFoldersFailed: 'Impossibile spostare le cartelle {foldersCount} in tutti i file.', - messageMoveRootFoldersSuccess: '{foldersCount} le cartelle sono state spostate in tutti i file.', - messageMoveRootFilesFailed: 'Impossibile spostare i file {filesCount} in tutti i file.', - messageMoveRootFilesSuccess: '{filesCount} file sono stati spostati in tutti i file.', - messageMoveRootFileOrFolderFailed: 'Impossibile spostare {name} in tutti i file.', - messageMoveRootFileOrFolderSuccess: '{name} è stato spostato in tutti i file.', - messageFileTypeMismatchPlural: '{filesCount} file hanno il tipo sbagliato. Tipi consentiti: {allowedTypes}', - messageFileTypeMismatchSingular: 'Il file "{fileName}" ha il tipo errato. Tipi consentiti: {allowedTypes}.', - messageFileSizeExceededPlural: - '{filesCount} file hanno superato la dimensione massima del file. Dimensione file massima consentita: {maxFileSize}.', - messageFileSizeExceededSingular: - 'Il file "{fileName}" ha superato le dimensioni massime del file. Dimensione file massima consentita: {maxFileSize}.', - messageFileNameLengthExceededPlural: - '{filesCount} file hanno superato la lunghezza massima del nome file. Lunghezza del nome file consentita: {maxFilenameLength} caratteri.', - messageFileNameLengthExceededSingular: - 'Il nome "{fileName}" ha superato la lunghezza massima del nome del file. Lunghezza del nome consentita: {maxFilenameLength} caratteri.' - }, - platformWizardGenerator: { - summarySectionEditStep: 'Edit' - }, - platformMessagePopover: { - allErrors: 'All', - defaultErrors: { - email: 'Email is invalid', - max: 'The field exceeds maximum value', - maxLength: 'The field exceeds maximum length', - min: 'The field value is less than allowed', - minLength: 'The field length is less than allowed', - pattern: 'The field value is invalid', - required: 'The field is mandatory', - requiredTrue: 'The field is mandatory' - } - }, - platformVariantManagement: { - manage: 'Manage', - saveAs: 'Save as', - saveView: 'Save View', - save: 'Save', - myViews: 'My Views', - view: 'View', - setAsDefault: 'Set as Default', - public: 'Public', - applyAutomatically: 'Apply Automatically', - requiredFieldError: 'This field is required.', - nameTakenFieldError: 'Variant with such name already exists. Please chose a different name.', - cancel: 'Cancel', - manageViews: 'Manage Views', - markAsFavourite: 'Mark as Favourite', - sharing: 'Sharing', - default: 'Default', - createdBy: 'Created By', - removeVariant: 'Remove View', - search: 'Search', - access: { - public: 'Public', - private: 'Private' - } - }, - platformSelect: { - selectOptionLabel: 'Seleziona un opzione' - }, - fnSlider: { - minMaxDetails: 'Il valore minimo dello slider è {min}, il valore massimo è {max}', - valueminDetails: 'Il valore è {value}', - valuemaxDetails: 'Il valore è {value}', - valueNowDetails: 'Il valore attuale è{value}' - }, - fnSwitch: { - semanticAcceptLabel: 'Accettare', - semanticDeclineLabel: 'Declino' - }, - coreTree: { - expand: 'Expand node', - collapse: 'Collapse node', - noData: 'No data' - } -}; +export const FD_LANGUAGE_ITALIAN = loadJson(json); diff --git a/libs/i18n/src/lib/languages/polish.ts b/libs/i18n/src/lib/languages/polish.ts index 3eaf57410ef..bdead6c5e38 100644 --- a/libs/i18n/src/lib/languages/polish.ts +++ b/libs/i18n/src/lib/languages/polish.ts @@ -1,629 +1,4 @@ -import { FdLanguage } from '../models/lang'; +import json from '../translations/translations_pl-PL.json'; +import { loadJson } from '../utils/load-json'; -/** - * Default set of translations of Fundamental UI library for Polish language - */ -export const FD_LANGUAGE_POLISH: FdLanguage = { - coreMultiComboBox: { - selectAllLabel: 'Zaznacz wszystko ({selectedItems} z {totalItems})' - }, - coreCarousel: { - leftNavigationBtnLabel: 'Idź do poprzedniego elementu', - rightNavigationBtnLabel: 'Idź do nestępnego elementu' - }, - coreDatePicker: { - dateInputLabel: 'Data', - dateRangeInputLabel: 'Przedział czasowy', - displayCalendarToggleLabel: 'Otwórz selektor', - valueStateSuccessMessage: 'Value state Success', // I have no idea what it is about (?) - valueStateInformationMessage: 'Value state Information', // I have no idea what it is about (?) - valueStateWarningMessage: 'Value state Warning', // I have no idea what it is about (?) - valueStateErrorMessage: 'Value state Error' // I have no idea what it is about (?) - }, - coreDatetimePicker: { - datetimeInputLabel: 'Data i czas', - displayDatetimeToggleLabel: 'Pokaż przełącznik daty', - displayTypeDateLabel: 'Data', - displayTypeTimeLabel: 'Czas', - datetimeOkLabel: 'Ok', - datetimeCancelLabel: 'Anuluj' - }, - coreFeedListItem: { - moreLabel: 'Więcej', - lessLabel: 'Mniej' - }, - coreGridList: { - filterBarCancelButtonTitle: 'Anuluj', - listItemStatusAriaLabel: 'Status elementu: {status} ', - listItemCounterAriaLabel: 'Element posiada {count} subelementów', - listItemButtonDetailsTitle: 'Szczegóły', - listItemButtonDeleteTitle: 'Usuń', - listItemStatusContainsErrors: 'Zawiera błędy', - listItemStatusLocked: 'Zablokowany', - listItemStatusDraft: 'Szkic' - }, - coreMessageStrip: { - dismissLabel: 'Odrzuć' - }, - coreMultiInput: { - multiInputAriaLabel: 'Multi Value Input', - tokensCountText: 'Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.' - }, - coreNavigation: { - mainNavigation: 'Main Navigation', - navigationPath: 'Navigation Path' - }, - coreNestedList: { - linkItemAriaLabel: 'Element drzewa {itemDetails}, {index} z {total}{selectedDescription}' - }, - coreOverflowLayout: { - moreItemsButton: '{count} więcej' - }, - corePagination: { - pageLabel: 'Strona {pageNumber}', - currentPageAriaLabel: 'Aktualna strona {pageNumber}', - labelBeforeInputMobile: 'Strona:', - labelAfterInputMobile: 'z {totalCount}', - inputAriaLabel: 'Dane strony, Aktualna strona, Strona {pageNumber} z {totalCount}', - itemsPerPageLabel: 'Liczba wyników na stronę:', - firstLabel: 'Pierwszy', - previousLabel: 'Poprzedni', - nextLabel: 'Następny', - lastLabel: 'Ostatni', - ariaLabel: 'Stronicowanie', - totalResultsLabel: 'Liczba wyników: {totalCount}' - }, - coreProductSwitch: { - ariaLabel: 'Przełącznik Produktu' - }, - coreShellbar: { - collapsedItemMenuLabel: 'Ukryty Element Menu', - cancel: 'Cancel', - search: 'Search' - }, - coreSlider: { - singleMinMaxDetails: 'Minimalna wartość {min}, maksymalna wartość {max}', - singleValueminDetails: 'Wartość {value}', - singleValuemaxDetails: 'Wartość {value}', - singleValueNowDetails: 'Aktualna wartość: {value}', - multipleHandle1MinMaxDetails: 'Minimalna wartość {min}, maksymalna wartość {max}', - multipleHandle1ValueminDetails: 'Wartość {value}', - multipleHandle1ValuemaxDetails: 'Wartość {value}', - multipleHandle1ValueNowDetails: 'Aktualna wartość {value}', - multipleHandle2MinMaxDetails: 'Minimalna wartość {min}, maksymalna wartość {max}', - multipleHandle2ValueminDetails: 'Wartość {value}', - multipleHandle2ValuemaxDetails: 'Wartość {value}', - multipleHandle2ValueNowDetails: 'Aktualna wartość {max}' - }, - coreSplitButton: { - expandButtonAriaLabel: 'Pokaż więcej', - arialLabel: 'Przycisk podziału' - }, - coreSplitter: { - paginationItemAriaLabel: 'Sekcja' - }, - coreStepInput: { - incrementButtonTitle: 'Zwiększ', - decrementButtonTitle: 'Zmniejsz', - ariaRoleDescription: 'Dane kroku' - }, - coreSwitch: { - semanticAcceptLabel: 'Akceptuj', - semanticDeclineLabel: 'Zrezygnuj' - }, - coreTabs: { - tabListExpandButtonText: 'Więcej' - }, - coreText: { - moreLabel: 'Więcej', - lessLabel: 'Mniej' - }, - coreTime: { - componentAriaName: 'Selector godziny', - increaseHoursLabel: 'Zwiększ godzinę', - hoursLabel: 'Godz.', - decreaseHoursLabel: 'Zmniejsz godzinę', - increaseMinutesLabel: 'Zwiększ minuty', - minutesLabel: 'Min', - decreaseMinutesLabel: 'Zmniejsz minuty', - increaseSecondsLabel: 'Zwiększ sekundy', - secondsLabel: 'Sec', - decreaseSecondsLabel: 'Zmniejsz sekundy', - increasePeriodLabel: 'Zwiększ zakres', - periodLabel: 'Zakres', - decreasePeriodLabel: 'Zmniejsz zakres', - navigationInstruction: - 'Uzyj strzałek góra/dół żeby przechodzić pomiędzy elementami listy. Naciśnij strzłki w lewo/prawo żeby przełączyć się pomiędzy listami.' - }, - coreTimePicker: { - timePickerInputLabel: 'Pole selectora godziny', - timePickerButtonLabel: 'Otwórz selektor' - }, - coreToken: { - deleteButtonLabel: 'Usuń', - ariaRoleDescription: 'token' - }, - coreTokenizer: { - moreLabel: '{count} więcej' - }, - coreUploadCollection: { - menuOkText: 'Ok', - menuCancelText: 'Anuluj', - menuEditAriaLabel: 'Edytuj', - menuDeleteAriaLabel: 'Usuń', - menuOkAriaLabel: 'Edutuj', - menuCancelAriaLabel: 'Anuluj', - formItemPlaceholder: 'Nazwa pliku' - }, - coreWizard: { - ariaLabel: 'Kreator' - }, - coreBreadcrumb: { - overflowTitleMore: 'Więcej' - }, - platformActionBar: { - backButtonLabel: 'Powrót' - }, - platformApprovalFlow: { - defaultWatchersLabel: 'Obserwatorzy', - defaultTitle: 'Proces zatwierdzenia', - nextButtonAriaLabel: 'Idz do nestępnego slajdu', - prevButtonAriaLabel: 'Idz do poprzedniego slajdu', - editModeSaveButtonLabel: 'Zapisz', - editModeExitButtonLabel: 'Wyjdz', - emptyTitle: 'Zacznij dodawać zatwierdzających oraz obserwatorów', - emptyHint: - 'Żeby dodać zatwierdzających kliknij "Dodaj krok". Żeby dodać obserwujących kliknij pole Obserwujący', - addNodeDialogHeaderAddApprovers: 'Dodaj zatwierdzjących', - addNodeDialogHeaderEditApprover: 'Edutuj zatwierdzającego', - addNodeDialogHeaderAddApproverTeam: 'Użytkownik/Zespół', - addNodeDialogHeaderDetail: 'Cecha', - addNodeDialogNodeType: 'Równoległy lub seryjny', - addNodeDialogNodeTypeSerial: 'Seryjny', - addNodeDialogNodeTypeParallel: 'Równoległy', - addNodeDialogApproverType: 'Typ zatwierdzenia', - addNodeDialogApproverTypeUser: 'Użytkownik', - addNodeDialogApproverTypeTeamAnyone: 'Ktokolwiek z zespółu', - addNodeDialogApproverTypeTeamEveryone: 'Każdy z zespołu', - addNodeDialogUserOrTeam: 'Użytkownik/Zespół', - addNodeDialogAddToNext: 'Dodaj do następnego seryjnego noda', - addNodeDialogDueDate: 'Termin', - addNodeSearchPlaceholder: 'Szukaj', - addNodeAddActionBtnLabel: 'Dodaj', - addNodeCancelActionBtnLabel: 'Anuluj', - addNodeSelectApproverActionBtnLabel: 'Zaznacz', - addNodeCancelApproverSelectionActionBtnLabel: 'Anuluj', - addNodeApproverOrTeamDetailsCloseActionBtnLabel: 'Zamknij', - userDetailsHeader: 'Informacje', - userDetailsSendReminderBtnLabel: 'Wyślij przypomnienie', - userDetailsCancelBtnLabel: 'Anuluj', - messagesApproverAddedSuccess: '1 zatwierdzający dodany', - messagesTeamAddedSuccess: '1 zespół dodany', - messagesNodeEdited: '1 zatwierdzający zmodyfinowany', - messagesNodeRemovedSingular: '1 zatwierdzający usunięty', - messagesNodeRemovedPlural: 'Zatwierdzający usunięci', - messagesTeamRemoved: '1 zespół usuniety', - messagesErrorBuildGraph: 'Wystąpił błąd podczas budowy grafu. Sprawdź wprowadzone dane.', - messagesUndoAction: 'Cofnij', - nodeMembersCount: 'Liczba subnodów {count}', - nodeVariousTeams: 'Różne zespoły', - nodeStatusDueToday: 'Do dziś', - nodeStatusDueInXDays: 'Termin dni {count}', - nodeStatusXDaysOverdue: 'Liczba dni zaległych {count}', - nodeActionAddApproversBefore: 'Dodaj zatwierdzających przed', - nodeActionAddApproversAfter: 'Dodaj zatwierdzających po', - nodeActionAddApproversParallel: 'Dodaj równolegle zatwierdzających', - nodeActionEditApprover: 'Edytuj zatwierdzającego', - nodeActionRemove: 'Usuń', - selectTypeDialogMoveApproverAs: 'Przesuń zatwierdzjącego jako', - selectTypeDialogParallelOrSerial: 'Równoległy lub seryjny', - selectTypeDialogNodeTypeParallel: 'Równoległy zatwierdzający', - selectTypeDialogNodeTypeSerial: 'Seryjny zatwierdzający', - selectTypeDialogConfirmButton: 'Potwierdź', - selectTypeDialogCancelButton: 'Anuluj', - toolbarAddStepButton: 'Dodaj krok', - toolbarEditButton: 'Edytuj', - toolbarAddApproversBefore: 'Dodaj zatwierdzających przed', - toolbarAddApproversAfter: 'Dodaj zatwierdzających po', - toolbarAddApproversParallel: 'Dodaj równolegle zatwierdzających', - toolbarRemove: 'Usuń', - toolbarEditApprover: 'Edytuj zatwierdzającego', - watchersInputPlaceholder: 'Szukaj tutaj..', - userListSelectedItemsCountSingular: 'Liczba zaznaczonych elementów: {count}', - userListSelectedItemsCountPlural: 'Liczba zaznaczonych elementów: {count}', - statusApproved: 'approved', - statusRejected: 'rejected', - statusInProgress: 'in progress', - statusNotStarted: 'not started' - }, - platformFeedInput: { - userTitle: 'Użytkownik' - }, - platformVHD: { - selectionBarLabel: 'Zaznaczenia i warunki', - selectedAndConditionLabel: 'Zaznaczenia i Warunki', - footerClearSelectedTitle: 'wyczyść zaznaczenie', - footerClearSelectedAriaLabel: 'wyczyść zaznaczenie', - searchButtonLabel: 'Idź', - successButtonLabel: 'OK', - cancelButtonLabel: 'Anuluj', - selectedEmptyLabel: 'Nie zaznaczono żadnych elementów ani warunków', - searchPlaceholder: 'Szukaj', - searchAdvancedSearchLabel: 'Filtry', - searchShowAdvancedSearchLabel: 'Pokaż filtry', - searchHideAdvancedSearchLabel: 'Ukryj filtry', - searchShowAllAdvancedSearchLabel: 'Pokaż wszystkie filtry', - searchHideAllAdvancedSearchLabel: 'Ukryj wszystkie filtry', - selectTabDisplayCountLabel: 'Elementy ({count})', - selectTabMoreBtnLabel: 'Więcej', - selectTabCountHiddenA11yLabel: 'Liczba wierszy {rowCount}, liczba kolumn {colCount}', - selectMobileTabBackBtnTitle: 'Powrót', - selectMobileTabBtnOpenDialogLabel: 'Otwórz dialog', - selectMobileTabTitle: '{title} zakładka', - selectMobileConditionEmpty: 'Pusty', - defineConditionTitle: 'Produkt', - defineConditionSelectedValueHiddenA11yLabel: 'zaznaczona wartość {value}', - defineConditionConditionsGroupHeaderInclude: 'Zawiera', - defineConditionConditionsGroupHeaderExclude: 'Nie zawiera', - defineConditionFromPlaceholder: 'od', - defineConditionToPlaceholder: 'do', - defineConditionValuePlaceholder: 'wartość', - defineConditionRemoveConditionButtonTitle: 'Usuń warunek', - defineConditionAddConditionButtonLabel: 'Dodaj', - defineConditionAddConditionButtonTitle: 'Dodaj Warunek', - defineConditionConditionStrategyLabelContains: 'zawiera', - defineConditionConditionStrategyLabelEqualTo: 'równy', - defineConditionConditionStrategyLabelBetween: 'pomiędzy', - defineConditionConditionStrategyLabelStartsWith: 'zaczynający się na', - defineConditionConditionStrategyLabelEndsWith: 'kończący się na', - defineConditionConditionStrategyLabelLessThan: 'mniej niż', - defineConditionConditionStrategyLabelLessThanEqual: 'mniej lub równo niż', - defineConditionConditionStrategyLabelGreaterThan: 'więcej niż', - defineConditionConditionStrategyLabelGreaterThanEqual: 'więcej lub równo niż', - defineConditionConditionStrategyLabelEmpty: 'pusty', - defineConditionConditionStrategyLabelNotEqualTo: 'nie równy', - defineConditionConditionStrategyLabelNotEmpty: 'nie pusty', - defineConditionMaxCountError: 'Wprowadź wartość zawierającą nie wiecej niż {count} znaków', - selectTabTitle: 'Wybierz z listy', - searchTableEmptyMessage: 'Użyj wyszukiwania by uzyskać wyniki', - defineTabTitle: 'Zdefinjuj warunki' - }, - platformCombobox: { - countListResultsSingular: 'Lista 1 elementowa', - countListResultsPlural: 'Lista {count} elementowa' - }, - platformMultiCombobox: { - inputGlyphAriaLabel: 'Zaznacz elementy', - inputIconTitle: 'Zaznacz elementy', - mobileShowAllItemsButton: 'Pokaż wszystkie elementy', - mobileShowSelectedItemsButton: 'Pokaż zaznaczone elementy' - }, - platformTextarea: { - counterMessageCharactersOverTheLimitSingular: 'Liczba znaków powyżej limitu {count}', - counterMessageCharactersOverTheLimitPlural: 'Liczba znaków powyżej limitu {count}', - counterMessageCharactersRemainingSingular: 'Liczba pozostających znaków {count}', - counterMessageCharactersRemainingPlural: 'Liczba pozostających znaków {count}' - }, - platformLink: { - roleDescriptionWithMedia: 'Media: {media}' - }, - platformList: { - loadingAriaLabel: 'wczytywanie' - }, - platformObjectListItem: { - detailsActionAriaLabel: 'cecha', - deleteActionAriaLabel: 'usuń' - }, - platformStandardListItem: { - detailsActionAriaLabel: 'cecha', - deleteActionAriaLabel: 'usuń' - }, - platformSearchField: { - clearButtonTitle: 'Wyczyść', - submitButtonTitle: 'Szukaj', - searchInputLabel: 'Szukaj', - synchronizeButtonTitle: 'Synchronizuj', - searchSuggestionMessage: 'Znaleziono {count} możliwych wyników.', - searchSuggestionNavigateMessage: 'Poruszaj się za pomocą strzałek góra/dół' - }, - platformSmartFilterBar: { - searchPlaceholder: 'Szukaj', - submitButtonLabel: 'Idź', - filtersButtonLabel: 'Filtry ({filtersCount})', - showFiltersButtonLabel: 'Pokaż filtry', - hideFiltersButtonLabel: 'Ukryj filtry', - defineConditionsRemoveConditionButtonTitle: 'Usuń warunek', - defineConditionsAddConditionButtonLabel: 'Dodaj warunek', - defineConditionsSubmitButtonLabel: 'Idź', - defineConditionsCancelButton: 'Anuluj', - selectFiltersHeader: 'Filtry', - selectFiltersAvailableFiltersText: 'Dostępne filtry', - selectFiltersFilterColumnLabel: 'Filtr', - selectFiltersActiveColumnLabel: 'Aktywny', - selectFiltersSubmitButtonLabel: 'Idź', - selectFiltersCancelButton: 'Anuluj', - filterConditionContains: 'zawiera', - filterConditionEqualTo: 'równy', - filterConditionBetween: 'pomiędzy', - filterConditionBeginsWith: 'zaczynający się na', - filterConditionEndsWith: 'kończący się na', - filterConditionLessThan: 'mniej niż', - filterConditionLessThanOrEqualTo: 'mniej lub równo niż', - filterConditionGreaterThan: 'więcej niż', - filterConditionGreaterThanOrEqualTo: 'więcej lub równo niż', - filterConditionAfter: 'po', - filterConditionOnOrAfter: 'w lub po', - filterConditionBefore: 'przed', - filterConditionBeforeOrOn: 'przed lub w', - filterConditionValuePlaceholder: 'wartość', - filterConditionValueFromPlaceholder: 'od', - filterConditionValueToPlaceholder: 'do', - settingsCategoryAll: 'Wszystko', - settingsCategoryVisible: 'Widoczny', - settingsCategoryActive: 'Aktywny', - settingsCategoryVisibleAndActive: 'Widoczny i aktywny', - settingsCategoryMandatory: 'Obowiązkowy', - manageFieldConditions: 'Manage field conditions', - refreshButtonAriaLabel: 'Refresh' - }, - platformTable: { - headerMenuSortAsc: 'Sortuj Rosnąco', - headerMenuSortDesc: 'Sortuj Malejąco', - headerMenuGroup: 'Grupa', - headerMenuFreeze: 'Zamrożenie', - headerMenuEndFreeze: 'Freeze to End', - headerMenuUnfreeze: 'HeaderMenuUnfreeze', - headerMenuFilter: 'Filtr', - defaultEmptyMessage: 'Brak wyników', - emptyCell: 'Pusty', - noVisibleColumnsMessage: - 'Right now, there are no visible columns in the table. Please select the columns you need in the table settings.', - resetChangesButtonLabel: 'Reset', - editableCellNumberPlaceholder: 'Wprowadz wartość', - editableCellDatePlaceholder: 'Wprowadz wartość', - editableCellStringPlaceholder: 'Wprowadz wartość', - P13ColumnsDialogHeader: 'Kolumny', - P13ColumnsDialogSearchPlaceholder: 'Szukaj', - P13ColumnsDialogsShowSelected: 'Pokaż wybrane', - P13ColumnsDialogShowAll: 'Pokaż wszystkie', - P13ColumnsDialogSelectAll: 'Pokaż wszystkie ({selectedColumnsCount}/{selectableColumnsCount})', - P13ColumnsDialogConfirmationBtnLabel: 'OK', - P13ColumnsDialogCancelBtnLabel: 'Anuluj', - P13ColumnsDialogMoveToTopBtn: 'Przesuń do samej góry', - P13ColumnsDialogMoveUpBtn: 'Przesuń do góry', - P13ColumnsDialogMoveDownBtn: 'Przesuń na dół', - P13ColumnsDialogMoveToBottomBtn: 'Przesuń na sam dół', - P13FilterStrategyLabelBetween: 'pomiędzy', - P13FilterStrategyLabelContains: 'zawiera', - P13FilterStrategyLabelBeginsWith: 'zaczynający się na', - P13FilterStrategyLabelEndsWith: 'kończący się na', - P13FilterStrategyLabelEqualTo: 'równy', - P13FilterStrategyLabelGreaterThan: 'więcej niż', - P13FilterStrategyLabelGreaterThanOrEqualTo: 'więcej lub równo niż', - P13FilterStrategyLabelLessThan: 'mniej niż', - P13FilterStrategyLabelLessThanOrEqualTo: 'mniej lub równo niż', - P13FilterStrategyLabelAfter: 'po', - P13FilterStrategyLabelOnOrAfter: 'w lub po', - P13FilterStrategyLabelBefore: 'przed', - P13FilterStrategyLabelBeforeOrOn: 'przed lub w', - P13FilterStrategyLabelNotDefined: 'Nie Zdefiniowano', - P13FilterBooleanOptionNotDefined: ' ', - P13FilterBooleanOptionTrue: 'Tak', - P13FilterBooleanOptionFalse: 'Nie', - P13FilterDialogHeader: 'Filtruj', - P13FilterDialogIncludePanelTitleWithCount: 'Zawiera ({count})', - P13FilterDialogIncludePanelTitleWithoutCount: 'Zawiera', - P13FilterDialogExcludePanelTitleWithCount: 'Nie zawiera ({count})', - P13FilterDialogExcludePanelTitleWithoutCount: 'Nie zawiera', - P13FilterDialogRemoveFilterBtnTitle: 'Usuń Filtr', - P13FilterDialoAddFilterBtnTitle: 'Dodaj Filtr', - P13FilterDialogConfirmationBtnLabel: 'OK', - P13FilterDialogCancelBtnLabel: 'Anuluj', - P13GroupDialogHeader: 'Grupa', - P13GroupDialogNoneSelectedColumnSelectPlaceholder: '(nic)', - P13GroupDialogShowFieldAsColumnCheckboxLabel: 'Pokaż Pole jako Kolumnę', - P13GroupDialogRemoveGroupBtnTitle: 'Usuń', - P13GroupDialogAddNewGroupBtnTitle: 'Dodaj nową', - P13GroupDialogConfirmationBtnLabel: 'OK', - P13GroupDialogCancelBtnLabel: 'Anuluj', - P13SortDialogHeader: 'Sortuj', - P13SortDialogNoneSelectedColumn: '(nic)', - P13SortDialogNoneSelectedSorting: '(nic)', - P13SortDialogSortOrderSelectOptionAsc: 'Rosnąco', - P13SortDialogSortOrderSelectOptionDesc: 'Malejąco', - P13SortDialogRemoveSortBtnTitle: 'Usuń', - P13SortDialogAddNewSortBtnTitle: 'Dodaj nowy', - P13SortDialogConfirmationBtnLabel: 'OK', - P13SortDialogCancelBtnLabel: 'Anuluj', - toolbarSearchPlaceholder: 'Szukaj', - toolbarActionCreateButtonLabel: 'Utwórz', - toolbarActionSaveButtonLabel: 'Zapisz', - toolbarActionCancelButtonLabel: 'Anuluj', - toolbarActionSortButtonTitle: 'Sortuj', - toolbarActionFilterButtonTitle: 'Filtr', - toolbarActionGroupButtonTitle: 'Grupa', - toolbarActionColumnsButtonTitle: 'Kolumny', - toolbarActionExpandAllButtonTitle: 'Expand all', - toolbarActionCollapseAllButtonTitle: 'Collapse all', - filterDialogNotFilteredLabel: '(Nie zastosowano żadnego filtra)', - filterDialogFilterByLabel: 'Użyto filtr: {filterLabel}', - filterDialogFilterTitle: 'Filtr', - filterDialogFilterBy: 'Użyto filtr', - filterDialogConfirmBtnLabel: 'OK', - filterDialogCancelBtnLabel: 'Anuluj', - groupDialogHeader: 'Grupa', - groupDialogGroupOrderHeader: 'Kolejność grup', - groupDialogGroupOrderAsc: 'Rosnąco', - groupDialogGroupOrderDesc: 'Malejąco', - groupDialogGroupByHeader: 'Grupuj po', - groupDialogNotGroupedLabel: '(Nie Pogrupowano)', - groupDialogConfirmBtnLabel: 'OK', - groupDialogCancelBtnLabel: 'Anuluj', - sortDialogHeader: 'Sortuj', - sortDialogSortOrderHeader: 'Kolejność sortowania', - sortDialogSortOrderAsc: 'Rosnąco', - sortDialogSortOrderDesc: 'Malejąco', - sortDialogSortByHeader: 'Posortowano po', - sortDialogNotSortedLabel: '(Nie Posortowano)', - sortDialogConfirmBtnLabel: 'OK', - sortDialogCancelBtnLabel: 'Anuluj', - selectAllCheckboxLabel: 'Select all', - deselectAllCheckboxLabel: 'Deselect all', - deselectSingleRow: 'To deselect row, press SPACEBAR', - selectSingleRow: 'To select row, press SPACEBAR', - deselectSingleRowTitle: 'Click to deselect', - selectSingleRowTitle: 'Click to select' - }, - platformThumbnail: { - detailsGotoPreviousButtonTitle: 'Idź do poprzedniego', - detailsGotoNextButtonTitle: 'Idź do następnego', - detailsDialogCloseBtnLabel: 'Zamknij', - roleDescription: 'Obraz' - }, - platformUploadCollection: { - moveToTitle: 'Przenieś do', - moveToTitleFolder: 'Folder', - moveToNewFolderBtnLabel: 'Nowy Folder', - moveToAllFilesSubHeaderLabel: 'Wszystkie pliki', - moveToConfirmBtn: 'Przesuń', - moveToCloseBtn: 'Anuluj', - newFolderTitle: 'Nowy folder', - newFolderAtRootInputLabel: 'Nazwa nowego folderu', - newFolderAtFolderInputLabel: 'Nazwa nowego folderu wewnątrz folderu {folderName}', - newFolderInputPlaceholder: 'Pisz tutaj...', - newFolderInputErrorLabel: 'Maksymalna liczba znaków {count}', - newFolderDialogCreateBtnLabel: 'Utwórz', - newFolderDialogCancelBtnLabel: 'Anuluj', - breadcrumbLabelAllFiles: 'Wszystkie pliki', - breadcrumbLabelAllFilesWithTotal: 'Wszystkie pliki ({total})', - searchPlaceholder: 'Szukaj', - addBtnLabel: 'Dodaj`', - newFolderBtnLabel: 'Nowy Folder', - moveToBtnLabel: 'Przenieś do', - downloadBtnLabel: 'Ściągnij', - updateVersionBtnLabel: 'Aktualizuj wersję', - removeBtnLabel: 'Usuń', - folderIconTitle: 'Obrazek folderu', - fileIconTitle: 'Obrazek pliku', - editFileNameInputPlaceholder: 'Wprowadz nazwę', - editFileNameFileAlreadyExistsError: 'Plik o podanej nazwie już istnieje', - editFileNameFolderAlreadyExistsError: 'Folder o podanej nazwie już istnieje', - itemStatusSuccessful: 'Sukces', - itemStatusUnsuccessful: 'Niepowodzenie', - uploadNewFileAfterFailAction: 'Idź', - cancelUploadNewFileAction: 'Anuluj', - itemMenuBtnTitle: 'Więcej', - dragDropAreaText: 'Przeciągnij by przekazać plik', - noDataText: 'Nie znaleziono żadnych plików', - noDataDescription: 'Upuść pliki żeby przekazać lub użyj przycisku “Dodaj” ', - paginationTotal: 'Widoczne {from}-{to} z {total}', - resultsPerPage: 'Liczba wyników na strone', - messageCreateFailed: 'Nie udało się utworzyć {folderName}.', - messageCreateSuccess: '{folderName} został utworzony.', - messageUpdateVersionFailed: 'Nie udało się zaktualizować wersji {folderName}.', - messageUpdateVersionSuccess: '{folderName} wersja zaktualizowana.', - messageFileRenameFailed: 'Nie powiodła się zmiana nazwy z "{from}" na "{to}."', - messageFileRenameSuccess: '"{from}" został zmieniony na "{to}".', - messageRemoveFoldersAndFilesFailed: - 'Nie powiodło się usunięcie folderów w liczbie {foldersCount} oraz plików w liczbie {filesCount} .', - messageRemoveFoldersAndFilesSuccess: - 'Liczba folderów usunięta {foldersCount} oraz liczba plików usuniętych {filesCount}.', - messageRemoveFoldersFailed: 'Nie powiodło się usunięcie folderów w liczbie {foldersCount}.', - messageRemoveFoldersSuccess: 'Liczba folderów usuniętych {foldersCount}', - messageRemoveFilesFailed: 'Nie powiodło się usunięcie plików w liczbie {foldersCount}.', - messageRemoveFilesSuccess: 'Liczba plików usuniętych {foldersCount}', - messageRemoveFileOrFolderFailed: 'Nie powiodło się usunięcie {name}.', - messageRemoveFileOrFolderSuccess: 'Usunięto {name}.', - messageMoveFoldersAndFilesFailed: - 'Nie powiodło się przeniesienie folderów w liczbie {foldersCount} oraz plików w liczbie {filesCount} do {to}.', - messageMoveFoldersAndFilesSuccess: - 'Foldery w liczbie {foldersCount} oraz pliki w liczbie {filesCount} zostały przeniesione do {to}.', - messageMoveFoldersFailed: 'Nie powiodło się przeniesienie folderów w liczbie {foldersCount} do {to}.', - messageMoveFoldersSuccess: 'Foldery w liczbie {foldersCount} zostały przeniesione do {to}.', - messageMoveFilesFailed: 'Nie powiodło się przeniesienie plików w liczbie {filesCount} do {to}.', - messageMoveFilesSuccess: 'Pliki w liczbie {filesCount} zostały przeniesione do {to}.', - messageMoveFileOrFolderFailed: 'Nie powiodło się przeniesienie {name} do {to}.', - messageMoveFileOrFolderSuccess: '{name} przeniesiono do {to}.', - messageMoveRootFoldersAndFilesFailed: - 'Nie powiodło się przeniesienie folderów w liczbie {foldersCount} oraz plików w liczbie {filesCount} do wszystkich plików.', - messageMoveRootFoldersAndFilesSuccess: - 'Foldery w liczbie {foldersCount} oraz pliki w liczbie {filesCount} zostały przeniesione do wszystkich plików.', - messageMoveRootFoldersFailed: - 'Nie powiodło się przeniesienie folderów w liczbie {foldersCount} do wszystkich folderów.', - messageMoveRootFoldersSuccess: 'Foldery w liczbie {foldersCount} zostały przeniesione do wszystkich folderów.', - messageMoveRootFilesFailed: - 'Nie powiodło się przeniesienie plików w liczbie {filesCount} do wszystkich plików.', - messageMoveRootFilesSuccess: 'Pliki w liczbie {filesCount} zostały przeniesione do wszystkich plików.', - messageMoveRootFileOrFolderFailed: 'Nie powiodło się przeniesienie {name} do wszystkich plików.', - messageMoveRootFileOrFolderSuccess: '{name} przeniesiono do wszystkich plików.', - messageFileTypeMismatchPlural: 'Liczba plików ze złym typem {filesCount}. Typy dozwolone: {allowedTypes}.', - messageFileTypeMismatchSingular: 'Plik "{fileName}" ma zły typ. Typy dozwolone: {allowedTypes}.', - messageFileSizeExceededPlural: - 'Liczba plików przekraczająca maksymalny rozmiar {filesCount}. Maksymalna wielkość pliku do: {maxFileSize}.', - messageFileSizeExceededSingular: - 'Plik "{fileName}" przekroczył maksymalny rozmiar. Maksymalna wielkość pliku: {maxFileSize}.', - messageFileNameLengthExceededPlural: - 'Liczba plików przekraczająca maksymalną długość nazwy {filesCount}. Maksymalna długość: {maxFilenameLength} znaków.', - messageFileNameLengthExceededSingular: - 'Nazwa "{fileName}" przekroczyła maksymalną długość. Maksymalna długość: {maxFilenameLength} znaków.' - }, - platformWizardGenerator: { - summarySectionEditStep: 'Edytuj' - }, - platformMessagePopover: { - allErrors: 'All', - defaultErrors: { - email: 'Email is invalid', - max: 'The field exceeds maximum value', - maxLength: 'The field exceeds maximum length', - min: 'The field value is less than allowed', - minLength: 'The field length is less than allowed', - pattern: 'The field value is invalid', - required: 'The field is mandatory', - requiredTrue: 'The field is mandatory' - } - }, - platformVariantManagement: { - manage: 'Manage', - saveAs: 'Save as', - saveView: 'Save View', - save: 'Save', - myViews: 'My Views', - view: 'View', - setAsDefault: 'Set as Default', - public: 'Public', - applyAutomatically: 'Apply Automatically', - requiredFieldError: 'This field is required.', - nameTakenFieldError: 'Variant with such name already exists. Please chose a different name.', - cancel: 'Cancel', - manageViews: 'Manage Views', - markAsFavourite: 'Mark as Favourite', - sharing: 'Sharing', - default: 'Default', - createdBy: 'Created By', - removeVariant: 'Remove View', - search: 'Search', - access: { - public: 'Public', - private: 'Private' - } - }, - platformSelect: { - selectOptionLabel: 'Wybierz opcję' - }, - fnSlider: { - minMaxDetails: 'Minimalna wartość {min}, maksymalna wartość {max}', - valueminDetails: 'Wartość {value}', - valuemaxDetails: 'Wartość {value}', - valueNowDetails: 'Aktualna wartość: {value}' - }, - fnSwitch: { - semanticAcceptLabel: 'Zatwierdz', - semanticDeclineLabel: 'Odrzuć' - }, - coreTree: { - expand: 'Expand node', - collapse: 'Collapse node', - noData: 'No data' - } -}; +export const FD_LANGUAGE_POLISH = loadJson(json); diff --git a/libs/i18n/src/lib/languages/russian.ts b/libs/i18n/src/lib/languages/russian.ts index 4c8824f43cb..94adb068ed3 100644 --- a/libs/i18n/src/lib/languages/russian.ts +++ b/libs/i18n/src/lib/languages/russian.ts @@ -1,637 +1,4 @@ -import { FdLanguage } from '../models/lang'; +import json from '../translations/translations_ru-RU.json'; +import { loadJson } from '../utils/load-json'; -/** - * Default set of translations of Fundamental UI library for Russian language - */ -export const FD_LANGUAGE_RUSSIAN: FdLanguage = { - coreMultiComboBox: { - selectAllLabel: 'Выбрать все ({selectedItems} из {totalItems})' - }, - coreCarousel: { - leftNavigationBtnLabel: 'Перейти к предыдущему элементу', - rightNavigationBtnLabel: 'Перейти к следующему элементу' - }, - coreDatePicker: { - dateInputLabel: 'Поле ввода даты', - dateRangeInputLabel: 'Поле ввода диапазона дат', - displayCalendarToggleLabel: 'Открыть средство выбора', - valueStateSuccessMessage: 'Значение состояния: Успех', - valueStateInformationMessage: 'Значение состояния: Информационное', - valueStateWarningMessage: 'Значение состояния: Предупреждение', - valueStateErrorMessage: 'Значение состояния: Ошибка' - }, - coreDatetimePicker: { - datetimeInputLabel: 'Поле ввода даты и времени', - displayDatetimeToggleLabel: 'Показать календарь', - displayTypeDateLabel: 'Дата', - displayTypeTimeLabel: 'Время', - datetimeOkLabel: 'ОК', - datetimeCancelLabel: 'Отменить' - }, - coreFeedListItem: { - moreLabel: 'Больше', - lessLabel: 'Меньше' - }, - coreGridList: { - filterBarCancelButtonTitle: 'Отмена', - listItemStatusAriaLabel: 'Элемент имеет статус. Статус: {status}.', - listItemCounterAriaLabel: - 'Элемент имеет { count, plural, one {1 дочерний элемент} few {# дочерних элемента} other {# дочерних элементов} }.', - listItemButtonDetailsTitle: 'Подробности', - listItemButtonDeleteTitle: 'Удалить', - listItemStatusContainsErrors: 'Содержит ошибки', - listItemStatusLocked: 'Заблокировано', - listItemStatusDraft: 'Черновик' - }, - coreMessageStrip: { - dismissLabel: 'Закрыть' - }, - coreMultiInput: { - multiInputAriaLabel: 'Multi Value Input', - tokensCountText: - '{ length, plural, =0 {Нет выбранных} one {Выбран 1} other {Выбрано #} } { length, plural, one { вариант } few { варианта } other { вариантов } }.' - }, - coreNavigation: { - mainNavigation: 'Главная Навигация', - navigationPath: 'Путь навигации' - }, - coreNestedList: { - linkItemAriaLabel: 'Элемент дерева {itemDetails}, {index} из {total}{selectedDescription}' - }, - coreOverflowLayout: { - moreItemsButton: 'Еще { count, plural, one {1 елемент} few {# елемента} other {# елементов} }' - }, - corePagination: { - pageLabel: 'Страница {pageNumber}', - currentPageAriaLabel: 'Страница {pageNumber} активна', - labelBeforeInputMobile: 'Страница:', - labelAfterInputMobile: 'из {totalCount}', - inputAriaLabel: 'Поле ввода страницы, Текущая страница, Страница {pageNumber} из {totalCount}', - itemsPerPageLabel: 'Результатов на странице:', - firstLabel: 'Перейти к первой', - previousLabel: 'Перейти к предыдущей', - nextLabel: 'Перейти к следующей', - lastLabel: 'Перейти к последней', - ariaLabel: 'Нумерация страниц', - totalResultsLabel: '{totalCount} результатов' - }, - coreProductSwitch: { - ariaLabel: 'Переключатель' - }, - coreShellbar: { - collapsedItemMenuLabel: 'Свернутое меню элементов', - cancel: 'Отмена', - search: 'Поиск' - }, - coreSlider: { - singleMinMaxDetails: 'Минимальное значение слайдера {min}, максимальное значение {max}', - singleValueminDetails: 'Значение равно {value}', - singleValuemaxDetails: 'Значение равно {value}', - singleValueNowDetails: 'Текущее значение: {value}', - multipleHandle1MinMaxDetails: 'Минимальное значение слайдера {min}, максимальное значение {max}', - multipleHandle1ValueminDetails: 'Значение равно {value}', - multipleHandle1ValuemaxDetails: 'Значение равно {value}', - multipleHandle1ValueNowDetails: 'Текущее значение: {value}', - multipleHandle2MinMaxDetails: 'Минимальное значение слайдера {min}, максимальное значение {max}', - multipleHandle2ValueminDetails: 'Значение равно {value}', - multipleHandle2ValuemaxDetails: 'Значение равно {value}', - multipleHandle2ValueNowDetails: 'Текущее значение: {value}' - }, - coreSplitButton: { - expandButtonAriaLabel: 'Больше действий', - arialLabel: 'Кнопка разделения' - }, - coreSplitter: { - paginationItemAriaLabel: 'Секция' - }, - coreStepInput: { - incrementButtonTitle: 'Увеличить', - decrementButtonTitle: 'Уменьшить', - ariaRoleDescription: 'Шаг ввода' - }, - coreSwitch: { - semanticAcceptLabel: 'Принять', - semanticDeclineLabel: 'Отклонить' - }, - coreTabs: { - tabListExpandButtonText: 'Больше' - }, - coreText: { - moreLabel: 'Больше', - lessLabel: 'Меньше' - }, - coreTime: { - componentAriaName: 'Выбор времени', - increaseHoursLabel: 'Увеличить часы', - hoursLabel: 'Час', - decreaseHoursLabel: 'Уменьшить часы', - increaseMinutesLabel: 'Увеличить минуты', - minutesLabel: 'Мин', - decreaseMinutesLabel: 'Уменьшить минуты', - increaseSecondsLabel: 'Увеличить секунды', - secondsLabel: 'Сек', - decreaseSecondsLabel: 'Уменьшить секунды', - increasePeriodLabel: 'Увеличить период', - periodLabel: 'Период', - decreasePeriodLabel: 'Уменьшить период', - navigationInstruction: - 'Для перемещения между элементами в этом списке используйте стрелку вверх или вниз. ' + - 'Для переключения между списками используйте стрелку влево или вправо.' - }, - coreTimePicker: { - timePickerInputLabel: 'Поле ввода времени', - timePickerButtonLabel: 'Открыть окно выбора' - }, - coreToken: { - deleteButtonLabel: 'Удаляемый', - ariaRoleDescription: 'токен' - }, - coreTokenizer: { - moreLabel: 'Еще { count, plural, one {1 елемент} few {# елемента} other {# елементов} }' - }, - coreUploadCollection: { - menuOkText: 'ОК', - menuCancelText: 'Отменить', - menuEditAriaLabel: 'Редактировать', - menuDeleteAriaLabel: 'Удалить', - menuOkAriaLabel: 'Редактировать', - menuCancelAriaLabel: 'Отменить', - formItemPlaceholder: 'Имя файла' - }, - coreWizard: { - ariaLabel: 'Мастер' - }, - coreBreadcrumb: { - overflowTitleMore: 'Больше' - }, - platformActionBar: { - backButtonLabel: 'Вернуться назад' - }, - platformApprovalFlow: { - defaultWatchersLabel: 'Наблюдатели', - defaultTitle: 'Процесс утверждения', - nextButtonAriaLabel: 'Перейти к следующему слайд', - prevButtonAriaLabel: 'Перейти к предыдущему слайду', - editModeSaveButtonLabel: 'Сохранить', - editModeExitButtonLabel: 'Выйти', - emptyTitle: 'Начать добавлять утверждающих и наблюдателей', - emptyHint: - 'Чтобы добавить утверждающих, нажмите "Добавить шаг". Чтобы добавить наблюдателей, нажмите поле Наблюдатели.', - addNodeDialogHeaderAddApprovers: 'Добавить утверждающего', - addNodeDialogHeaderEditApprover: 'Редактировать утверждающего', - addNodeDialogHeaderAddApproverTeam: 'Пользователь/Команда', - addNodeDialogHeaderDetail: 'Детали', - addNodeDialogNodeType: 'Параллельный или последовательный', - addNodeDialogNodeTypeSerial: 'Последовательный', - addNodeDialogNodeTypeParallel: 'Параллельный', - addNodeDialogApproverType: 'Тип утверждающего', - addNodeDialogApproverTypeUser: 'Пользователь', - addNodeDialogApproverTypeTeamAnyone: 'Любой из команды', - addNodeDialogApproverTypeTeamEveryone: 'Все в команде', - addNodeDialogUserOrTeam: 'Пользователь/Команда', - addNodeDialogAddToNext: 'Добавить в следующий последовательный узел', - addNodeDialogDueDate: 'Дата выполнения', - addNodeSearchPlaceholder: 'Поиск', - addNodeAddActionBtnLabel: 'Добавить', - addNodeCancelActionBtnLabel: 'Отмена', - addNodeSelectApproverActionBtnLabel: 'Выбрать', - addNodeCancelApproverSelectionActionBtnLabel: 'Выйти', - addNodeApproverOrTeamDetailsCloseActionBtnLabel: 'Закрыть', - userDetailsHeader: 'Детали', - userDetailsSendReminderBtnLabel: 'Отправить напоминание', - userDetailsCancelBtnLabel: 'Отменить', - messagesApproverAddedSuccess: '1 утверждающий добавлен', - messagesTeamAddedSuccess: '1 команда добавлена', - messagesNodeEdited: '1 утверждающий отредактирован', - messagesNodeRemovedSingular: '1 утверждающий удален', - messagesNodeRemovedPlural: 'Утверждающие удалены', - messagesTeamRemoved: '1 команда удалена', - messagesErrorBuildGraph: 'При попытке построить график произошла ошибка. Проверьте входящие данные.', - messagesUndoAction: 'Отменить', - nodeMembersCount: '{ count, plural, one {1 член} few {# члена} other {# членов} } команды', - nodeVariousTeams: 'Различные команды', - nodeStatusDueToday: 'Срок выполнения сегодня', - nodeStatusDueInXDays: 'Срок выполнения через { count, plural, one {1 день} few {# дня} other {# дней} }', - nodeStatusXDaysOverdue: 'Просрочено на { count, plural, one {1 день} few {# дня} other {# дней} }', - nodeActionAddApproversBefore: 'Добавить утверждающих до', - nodeActionAddApproversAfter: 'Добавить утверждающих после', - nodeActionAddApproversParallel: 'Добавить параллельных утверждающих', - nodeActionEditApprover: 'Редактировать утверждающего', - nodeActionRemove: 'Удалить', - selectTypeDialogMoveApproverAs: 'Переместить утверждающего как', - selectTypeDialogParallelOrSerial: 'Параллельный или последовательный', - selectTypeDialogNodeTypeParallel: 'Параллельный утверждающий', - selectTypeDialogNodeTypeSerial: 'Последовательный утверждающий', - selectTypeDialogConfirmButton: 'Подтвердить', - selectTypeDialogCancelButton: 'Отмена', - toolbarAddStepButton: 'Добавить шаг', - toolbarEditButton: 'Редактировать', - toolbarAddApproversBefore: 'Добавить утверждающих до', - toolbarAddApproversAfter: 'Добавить утверждающих после', - toolbarAddApproversParallel: 'Добавить параллельных утверждающих', - toolbarRemove: 'Удалить', - toolbarEditApprover: 'Редактировать утверждающего', - watchersInputPlaceholder: 'Поиск', - userListSelectedItemsCountSingular: 'Выбран 1 элемент', - userListSelectedItemsCountPlural: - 'Выбрано { count, plural, one {1 элемент} few {# элемента} other {# элементов} }', - statusApproved: 'approved', - statusRejected: 'rejected', - statusInProgress: 'in progress', - statusNotStarted: 'not started' - }, - platformFeedInput: { - userTitle: 'Пользователь' - }, - platformVHD: { - selectionBarLabel: 'Выбранные элементы и условия', - selectedAndConditionLabel: 'Выбранные элементы и условия', - footerClearSelectedTitle: 'очистить выбранные элементы', - footerClearSelectedAriaLabel: 'очистить выбранные элементы', - searchButtonLabel: 'Поиск', - successButtonLabel: 'ОК', - cancelButtonLabel: 'Отменить', - selectedEmptyLabel: 'Не выбрано никаких элементов или условий', - searchPlaceholder: 'Поиск', - searchAdvancedSearchLabel: 'Фильтры', - searchShowAdvancedSearchLabel: 'Показать фильтры', - searchHideAdvancedSearchLabel: 'Скрыть фильтры', - searchShowAllAdvancedSearchLabel: 'Показать все фильтры', - searchHideAllAdvancedSearchLabel: 'Скрыть все фильтры', - selectTabDisplayCountLabel: 'Элементы ({count})', - selectTabMoreBtnLabel: 'Больше', - selectTabCountHiddenA11yLabel: - // eslint-disable-next-line max-len - 'содержит { rowCount, plural, one {1 строку} few {# строки} other {# строк} } и { colCount, plural, one {1 столбец} few {# столбца} other {# столбцов} }', - selectMobileTabBackBtnTitle: 'Назад', - selectMobileTabBtnOpenDialogLabel: 'Открыть диалоговое окно', - selectMobileTabTitle: '{title} вкладка', - selectMobileConditionEmpty: 'Пусто', - defineConditionTitle: 'Продукт', - defineConditionSelectedValueHiddenA11yLabel: 'выбранное значение {value}', - defineConditionConditionsGroupHeaderInclude: 'Включающие условия', - defineConditionConditionsGroupHeaderExclude: 'Исключительные условия', - defineConditionFromPlaceholder: 'от', - defineConditionToPlaceholder: 'до', - defineConditionValuePlaceholder: 'значение', - defineConditionRemoveConditionButtonTitle: 'Удалить условие', - defineConditionAddConditionButtonLabel: 'Добавить', - defineConditionAddConditionButtonTitle: 'Добавить условие', - defineConditionConditionStrategyLabelContains: 'содержит', - defineConditionConditionStrategyLabelEqualTo: 'равно', - defineConditionConditionStrategyLabelBetween: 'между', - defineConditionConditionStrategyLabelStartsWith: 'начинается с', - defineConditionConditionStrategyLabelEndsWith: 'заканчивается на', - defineConditionConditionStrategyLabelLessThan: 'меньше чем', - defineConditionConditionStrategyLabelLessThanEqual: 'меньше чем или равно', - defineConditionConditionStrategyLabelGreaterThan: 'больше чем', - defineConditionConditionStrategyLabelGreaterThanEqual: 'больше чем или равно', - defineConditionConditionStrategyLabelEmpty: 'пусто', - defineConditionConditionStrategyLabelNotEqualTo: 'не равно', - defineConditionConditionStrategyLabelNotEmpty: 'не пусто', - defineConditionMaxCountError: 'Введите значение не более { count, plural, one {1 символа} other {# символов} }', - selectTabTitle: 'Выбрать из списка', - searchTableEmptyMessage: 'Используйте поиск для получения результатов', - defineTabTitle: 'Определить условия' - }, - platformCombobox: { - countListResultsSingular: '1 элемент', - countListResultsPlural: '{ count, plural, one {1 элемент} few {# элемента} other {# элементов} }' - }, - platformMultiCombobox: { - inputGlyphAriaLabel: 'Выбрать опции', - inputIconTitle: 'Выбрать опции', - mobileShowAllItemsButton: 'Показать все элементы', - mobileShowSelectedItemsButton: 'Показать выбранные элементы' - }, - platformTextarea: { - counterMessageCharactersOverTheLimitSingular: 'Превышен лимит на 1 символ', - counterMessageCharactersOverTheLimitPlural: - 'Превышен лимит на { count, plural, one {1 символ} few {# символа} other {# символов} }', - counterMessageCharactersRemainingSingular: 'Остался 1 символ', - counterMessageCharactersRemainingPlural: - '{ count, plural, one {Остался 1 символ} few {Осталось # символа} other {Осталось # символов} }' - }, - - platformLink: { - roleDescriptionWithMedia: 'Медиа: {media}' - }, - platformList: { - loadingAriaLabel: 'загрузка' - }, - platformObjectListItem: { - detailsActionAriaLabel: 'детали', - deleteActionAriaLabel: 'удалить' - }, - platformStandardListItem: { - detailsActionAriaLabel: 'детали', - deleteActionAriaLabel: 'удалить' - }, - platformSearchField: { - clearButtonTitle: 'Очистить', - submitButtonTitle: 'Поиск', - searchInputLabel: 'Поиск', - synchronizeButtonTitle: 'Синхронизировать', - searchSuggestionMessage: - '{count, plural, one {Найден 1 вариант} few {Найдено # варианта} other {Найдено # вариантов} }', - searchSuggestionNavigateMessage: 'используйте стрелки вверх и вниз для навигации' - }, - platformSmartFilterBar: { - searchPlaceholder: 'Поиск', - submitButtonLabel: 'Перейти', - filtersButtonLabel: 'Фильтры ({filtersCount})', - showFiltersButtonLabel: 'Показать фильтры', - hideFiltersButtonLabel: 'Скрыть фильтры', - defineConditionsRemoveConditionButtonTitle: 'Удалить условие', - defineConditionsAddConditionButtonLabel: 'Добавить условие', - defineConditionsSubmitButtonLabel: 'Перейти', - defineConditionsCancelButton: 'Отменить', - selectFiltersHeader: 'Фильтры', - selectFiltersAvailableFiltersText: 'Доступные фильтры', - selectFiltersFilterColumnLabel: 'Фильтр', - selectFiltersActiveColumnLabel: 'Активный', - selectFiltersSubmitButtonLabel: 'Перейти', - selectFiltersCancelButton: 'Отменить', - filterConditionContains: 'содержит', - filterConditionEqualTo: 'равно', - filterConditionBetween: 'между', - filterConditionBeginsWith: 'начинается с', - filterConditionEndsWith: 'заканчивается', - filterConditionLessThan: 'меньше чем', - filterConditionLessThanOrEqualTo: 'меньше или равно', - filterConditionGreaterThan: 'больше чем', - filterConditionGreaterThanOrEqualTo: 'больше или равно', - filterConditionAfter: 'после', - filterConditionOnOrAfter: 'равно или после', - filterConditionBefore: 'до', - filterConditionBeforeOrOn: 'до или равно', - filterConditionValuePlaceholder: 'значение', - filterConditionValueFromPlaceholder: 'от', - filterConditionValueToPlaceholder: 'до', - settingsCategoryAll: 'Все', - settingsCategoryVisible: 'Видимые', - settingsCategoryActive: 'Активные', - settingsCategoryVisibleAndActive: 'Видимые и активные', - settingsCategoryMandatory: 'Обязательные', - manageFieldConditions: 'Показать условия для поля', - refreshButtonAriaLabel: 'Обновить' - }, - platformTable: { - headerMenuSortAsc: 'Сортировать по возрастанию', - headerMenuSortDesc: 'Сортировать по убыванию', - headerMenuGroup: 'Сгруппировать', - headerMenuFreeze: 'Заморозить', - headerMenuEndFreeze: 'Freeze to End', - headerMenuUnfreeze: 'Разморозить', - headerMenuFilter: 'Фильтр', - defaultEmptyMessage: 'Ничего не найдено', - emptyCell: 'Пусто', - noVisibleColumnsMessage: - 'Сейчас в таблице нет видимых столбцов. Пожалуйста, выберите нужные столбцы в настройках таблицы.', - resetChangesButtonLabel: 'Сбросить', - editableCellNumberPlaceholder: 'Введите значение', - editableCellDatePlaceholder: 'Введите значение', - editableCellStringPlaceholder: 'Введите значение', - P13ColumnsDialogHeader: 'Столбцы', - P13ColumnsDialogSearchPlaceholder: 'Поиск', - P13ColumnsDialogsShowSelected: 'Показать выбранное', - P13ColumnsDialogShowAll: 'Показать все', - P13ColumnsDialogSelectAll: 'Выбрать все ({selectedColumnsCount}/{selectableColumnsCount})', - P13ColumnsDialogConfirmationBtnLabel: 'ОК', - P13ColumnsDialogCancelBtnLabel: 'Отмена', - P13ColumnsDialogMoveToTopBtn: 'Переместить вверх', - P13ColumnsDialogMoveUpBtn: 'Переместить выше', - P13ColumnsDialogMoveDownBtn: 'Переместить ниже', - P13ColumnsDialogMoveToBottomBtn: 'Переместить вниз', - P13FilterStrategyLabelBetween: 'между', - P13FilterStrategyLabelContains: 'содержит', - P13FilterStrategyLabelBeginsWith: 'начинается с', - P13FilterStrategyLabelEndsWith: 'заканчивается на', - P13FilterStrategyLabelEqualTo: 'равно', - P13FilterStrategyLabelGreaterThan: 'больше чем', - P13FilterStrategyLabelGreaterThanOrEqualTo: 'больше или равно', - P13FilterStrategyLabelLessThan: 'меньше чем', - P13FilterStrategyLabelLessThanOrEqualTo: 'меньше или равно', - P13FilterStrategyLabelAfter: 'после', - P13FilterStrategyLabelOnOrAfter: 'равно или после', - P13FilterStrategyLabelBefore: 'до', - P13FilterStrategyLabelBeforeOrOn: 'до или равно', - P13FilterStrategyLabelNotDefined: 'Не определено', - P13FilterBooleanOptionNotDefined: ' ', - P13FilterBooleanOptionTrue: 'Да', - P13FilterBooleanOptionFalse: 'Нет', - P13FilterDialogHeader: 'Фильтровать по', - P13FilterDialogIncludePanelTitleWithCount: 'Включающие условия ({count})', - P13FilterDialogIncludePanelTitleWithoutCount: 'Включающие условия', - P13FilterDialogExcludePanelTitleWithCount: 'Исключающие условия ({count})', - P13FilterDialogExcludePanelTitleWithoutCount: 'Исключающие условия', - P13FilterDialogRemoveFilterBtnTitle: 'Удалить фильтр', - P13FilterDialoAddFilterBtnTitle: 'Добавить фильтр', - P13FilterDialogConfirmationBtnLabel: 'ОК', - P13FilterDialogCancelBtnLabel: 'Отмена', - P13GroupDialogHeader: 'Группировка', - P13GroupDialogNoneSelectedColumnSelectPlaceholder: '(нету)', - P13GroupDialogShowFieldAsColumnCheckboxLabel: 'Показать поле как столбец', - P13GroupDialogRemoveGroupBtnTitle: 'Удалить', - P13GroupDialogAddNewGroupBtnTitle: 'Добавить', - P13GroupDialogConfirmationBtnLabel: 'ОК', - P13GroupDialogCancelBtnLabel: 'Отмена', - P13SortDialogHeader: 'Сортировка', - P13SortDialogNoneSelectedColumn: '(нету)', - P13SortDialogNoneSelectedSorting: '(нету)', - P13SortDialogSortOrderSelectOptionAsc: 'По возрастанию', - P13SortDialogSortOrderSelectOptionDesc: 'По убыванию', - P13SortDialogRemoveSortBtnTitle: 'Удалить', - P13SortDialogAddNewSortBtnTitle: 'Добавить', - P13SortDialogConfirmationBtnLabel: 'ОК', - P13SortDialogCancelBtnLabel: 'Отмена', - toolbarSearchPlaceholder: 'Поиск', - toolbarActionCreateButtonLabel: 'Создать', - toolbarActionSaveButtonLabel: 'Сохранить', - toolbarActionCancelButtonLabel: 'Отменить', - toolbarActionSortButtonTitle: 'Сортировать', - toolbarActionFilterButtonTitle: 'Фильтр', - toolbarActionGroupButtonTitle: 'Группировка', - toolbarActionColumnsButtonTitle: 'Столбцы', - toolbarActionExpandAllButtonTitle: 'Expand all', - toolbarActionCollapseAllButtonTitle: 'Collapse all', - filterDialogNotFilteredLabel: '(Не отфильтровано)', - filterDialogFilterByLabel: 'Фильтр: {filterLabel}', - filterDialogFilterTitle: 'Фильтр', - filterDialogFilterBy: 'Фильтровать по', - filterDialogConfirmBtnLabel: 'ОК', - filterDialogCancelBtnLabel: 'Отменить', - groupDialogHeader: 'Группировка', - groupDialogGroupOrderHeader: 'Порядок группировки', - groupDialogGroupOrderAsc: 'По возрастанию', - groupDialogGroupOrderDesc: 'По убыванию', - groupDialogGroupByHeader: 'Группировать по', - groupDialogNotGroupedLabel: '(Не сгруппировано)', - groupDialogConfirmBtnLabel: 'ОК', - groupDialogCancelBtnLabel: 'Отменить', - sortDialogHeader: 'Сортировать', - sortDialogSortOrderHeader: 'Порядок сортировки', - sortDialogSortOrderAsc: 'По росту', - sortDialogSortOrderDesc: 'по убыванию', - sortDialogSortByHeader: 'Сортировать по', - sortDialogNotSortedLabel: '(Не отсортировано)', - sortDialogConfirmBtnLabel: 'ОК', - sortDialogCancelBtnLabel: 'Отменить', - selectAllCheckboxLabel: 'Select all', - deselectAllCheckboxLabel: 'Deselect all', - deselectSingleRow: 'To deselect row, press SPACEBAR', - selectSingleRow: 'To select row, press SPACEBAR', - deselectSingleRowTitle: 'Click to deselect', - selectSingleRowTitle: 'Click to select' - }, - platformThumbnail: { - detailsGotoPreviousButtonTitle: 'Перейти к предыдущему', - detailsGotoNextButtonTitle: 'Перейти к следующему', - detailsDialogCloseBtnLabel: 'Закрыть', - roleDescription: 'Изображение' - }, - platformUploadCollection: { - moveToTitle: 'Переместить в', - moveToTitleFolder: 'Папка', - moveToNewFolderBtnLabel: 'Новая папка', - moveToAllFilesSubHeaderLabel: 'Все файлы', - moveToConfirmBtn: 'Переместить', - moveToCloseBtn: 'Отменить', - newFolderTitle: 'Новая папка', - newFolderAtRootInputLabel: 'Название новой папки', - newFolderAtFolderInputLabel: 'Название новой папки внутри {folderName }', - newFolderInputPlaceholder: 'Введите имя..', - newFolderInputErrorLabel: - 'Максимально разрешено { count, plural, one {1 символ} few {# символа} other {# символов} }', - newFolderDialogCreateBtnLabel: 'Создать', - newFolderDialogCancelBtnLabel: 'Отменить', - breadcrumbLabelAllFiles: 'Все файлы', - breadcrumbLabelAllFilesWithTotal: 'Все файлы ({total})', - searchPlaceholder: 'Поиск', - addBtnLabel: 'Добавить', - newFolderBtnLabel: 'Новая папка', - moveToBtnLabel: 'Переместить в', - downloadBtnLabel: 'Загрузить', - updateVersionBtnLabel: 'Обновить версию', - removeBtnLabel: 'Удалить', - folderIconTitle: 'Значок папки', - fileIconTitle: 'Значок файла', - editFileNameInputPlaceholder: 'Введите название', - editFileNameFileAlreadyExistsError: 'Файл с таким названием уже существует', - editFileNameFolderAlreadyExistsError: 'Папка с таким именем уже существует', - itemStatusSuccessful: 'Успешно', - itemStatusUnsuccessful: 'Неудачно', - uploadNewFileAfterFailAction: 'Выполнить', - cancelUploadNewFileAction: 'Отменить', - itemMenuBtnTitle: 'Больше', - dragDropAreaText: 'Перетащите файлы для загрузки', - noDataText: 'Файлы не найдены', - noDataDescription: 'Перетащите файлы для загрузки или воспользуйтесь кнопкой «Добавить».', - paginationTotal: 'Показано {from}-{to} из {total}', - resultsPerPage: 'Результаты на странице', - messageCreateFailed: 'Не удалось создать {folderName}.', - messageCreateSuccess: '{folderName} успешно создано.', - messageUpdateVersionFailed: 'Не удалось обновить версию {folderName}.', - messageUpdateVersionSuccess: 'Версия {folderName} обновлена.', - messageFileRenameFailed: 'Не удалось переименовать "{from}" в "{to}."', - messageFileRenameSuccess: '{from}" переименовано в "{to}".', - folderNamePluralization: '{ foldersCount, plural, one {1 папку} few {# папки} other {# папок} }', - fileNamePluralization: '{ filesCount, plural, one {1 файл} few {# файла} other {# файлов} }', - messageRemoveFoldersAndFilesFailed: `Не удалось удалить {@@platformUploadCollection.folderNamePluralization} и {@@platformUploadCollection.fileNamePluralization}.`, - messageRemoveFoldersAndFilesSuccess: `{@@platformUploadCollection.folderNamePluralization} и {@@platformUploadCollection.fileNamePluralization} удалено.`, - messageRemoveFoldersFailed: `Не удалось удалить {@@platformUploadCollection.folderNamePluralization}.`, - messageRemoveFoldersSuccess: `Удалено {@@platformUploadCollection.folderNamePluralization}.`, - messageRemoveFilesFailed: 'Не удалось удалить файлы {filesCount}.', - messageRemoveFilesSuccess: `Удалено {@@platformUploadCollection.fileNamePluralization}.`, - messageRemoveFileOrFolderFailed: 'Не удалось удалить {name}.', - messageRemoveFileOrFolderSuccess: '{name} удалено.', - messageMoveFoldersAndFilesFailed: `Не удалось переместить {@@platformUploadCollection.folderNamePluralization} и {@@platformUploadCollection.fileNamePluralization} в {to}.`, - messageMoveFoldersAndFilesSuccess: `{@@platformUploadCollection.folderNamePluralization} и {@@platformUploadCollection.fileNamePluralization} перемещены в {to}.`, - messageMoveFoldersFailed: `Не удалось переместить {@@platformUploadCollection.folderNamePluralization} в {to}.`, - messageMoveFoldersSuccess: `{@@platformUploadCollection.folderNamePluralization} перемещен в {to}.`, - messageMoveFilesFailed: `Не удалось переместить {@@platformUploadCollection.fileNamePluralization} в {to}.`, - messageMoveFilesSuccess: `{@@platformUploadCollection.fileNamePluralization} перемещен в {to}.`, - messageMoveFileOrFolderFailed: 'Не удалось переместить {name} в {to}.', - messageMoveFileOrFolderSuccess: '{name} перемещен в {to}.', - messageMoveRootFoldersAndFilesFailed: `Не удалось переместить {@@platformUploadCollection.folderNamePluralization} и {@@platformUploadCollection.fileNamePluralization} во все файлы.`, - messageMoveRootFoldersAndFilesSuccess: `{@@platformUploadCollection.folderNamePluralization} и {@@platformUploadCollection.fileNamePluralization} перемещены ко всем файлам.`, - messageMoveRootFoldersFailed: `Не удалось переместить {@@platformUploadCollection.folderNamePluralization} во все файлы.`, - messageMoveRootFoldersSuccess: `{@@platformUploadCollection.folderNamePluralization} перемещен ко всем файлам.`, - messageMoveRootFilesFailed: `Не удалось переместить {@@platformUploadCollection.fileNamePluralization} во все файлы.`, - messageMoveRootFilesSuccess: `{@@platformUploadCollection.fileNamePluralization} перемещены ко всем файлам.`, - messageMoveRootFileOrFolderFailed: 'Не удалось переместить {name} во все файлы.', - messageMoveRootFileOrFolderSuccess: '{name} перемещен ко всем файлам.', - messageFileTypeMismatchPlural: - '{ filesCount, plural, one {1 файл} few {# файла} other {# файлов} } неправильный тип. Разрешенные типы: {allowedTypes}.', - messageFileTypeMismatchSingular: 'Файл "{fileName}" имеет неправильный тип. Разрешенные типы: {allowedTypes}.', - messageFileSizeExceededPlural: - // eslint-disable-next-line max-len - '{ filesCount, plural, one {1 файл превышает} few {# файла превышают} other {# файлов превышают} } максимальный размер файла. Разрешен максимальный размер файла: {maxFileSize}.', - messageFileSizeExceededSingular: - 'Файл "{fileName}" превышает максимальный размер файла. Разрешен максимальный размер файла: {maxFileSize}.', - messageFileNameLengthExceededPlural: - // eslint-disable-next-line max-len - '{ filesCount, plural, one {1 файл превысил} few {# файла превысили} other {# файлов превысили} } максимальную длину имени файла. Разрешена длина имени файла: {maxFilenameLength} символов.', - messageFileNameLengthExceededSingular: - 'Имя "{fileName}" превышает максимальную длину имени файла. Разрешена длина имени файла: {maxFilenameLength} символов.' - }, - platformWizardGenerator: { - summarySectionEditStep: 'Редактировать' - }, - platformMessagePopover: { - allErrors: 'Все', - defaultErrors: { - email: 'Значение поля не соответствует формату E-mail', - max: 'Значение поля превышает максимально допустимое', - maxLength: 'Длина значения поля превышает максимально допустимое', - min: 'Значение поля меньше минимально допустимого', - minLength: 'Длина значения поля меньше максимально допустимого', - pattern: 'Поле не соответствует формату', - required: 'Обязательное поле', - requiredTrue: 'Обязательное поле' - } - }, - platformVariantManagement: { - manage: 'Управление', - saveAs: 'Сохранить как', - saveView: 'Сохранить Вид', - save: 'Сохранить', - myViews: 'Мои Виды', - view: 'Вид', - setAsDefault: 'Установить по умолчанию', - public: 'Публичный', - applyAutomatically: 'Применять автоматически', - requiredFieldError: 'Обязательное поле.', - nameTakenFieldError: 'Вид с таким именем уже существует. Введите другое имя.', - cancel: 'Отменить', - manageViews: 'Управление видами', - markAsFavourite: 'Отметить как избранное', - sharing: 'Совместное использование', - default: 'По умолчанию', - createdBy: 'Создал(а)', - removeVariant: 'Удалить вид', - search: 'Поиск', - access: { - public: 'Публичное', - private: 'Приватное' - } - }, - platformSelect: { - selectOptionLabel: 'Выберите вариант' - }, - fnSlider: { - minMaxDetails: 'Минимальное значение слайдера {min}, максимальное значение {max}', - valueminDetails: 'Значение равно {value}', - valuemaxDetails: 'Значение равно {value}', - valueNowDetails: 'Текущее значение: {value}' - }, - fnSwitch: { - semanticAcceptLabel: 'Принять', - semanticDeclineLabel: 'Отклонить' - }, - coreTree: { - expand: 'Развернуть узел', - collapse: 'Свернуть узел', - noData: 'Нет данных' - } -}; +export const FD_LANGUAGE_RUSSIAN = loadJson(json); diff --git a/libs/i18n/src/lib/languages/turkish.ts b/libs/i18n/src/lib/languages/turkish.ts index 8cbe0dfeda3..9f681efe324 100644 --- a/libs/i18n/src/lib/languages/turkish.ts +++ b/libs/i18n/src/lib/languages/turkish.ts @@ -1,623 +1,4 @@ -import { FdLanguage } from '../models/lang'; +import json from '../translations/translations_tr-TR.json'; +import { loadJson } from '../utils/load-json'; -/** - * Default set of translations of Fundamental UI libarary for Turkish language - */ -export const FD_LANGUAGE_TURKISH: FdLanguage = { - coreMultiComboBox: { - selectAllLabel: 'Hepsini seç ({selectedItems}/{totalItems})' - }, - coreCarousel: { - leftNavigationBtnLabel: 'Önceki öğeye git', - rightNavigationBtnLabel: 'Sonraki öğeye git' - }, - coreDatePicker: { - dateInputLabel: 'Tarih girişi', - dateRangeInputLabel: 'Tarih aralığı girişi', - displayCalendarToggleLabel: 'Seçiciyi aç', - valueStateSuccessMessage: 'Değer durumu Başarılı', - valueStateInformationMessage: 'Değer durumu Bilgisi', - valueStateWarningMessage: 'Değer durumu Uyarısı', - valueStateErrorMessage: 'Değer durumu Hatası' - }, - coreDatetimePicker: { - datetimeInputLabel: 'Datetime girişi', - displayDatetimeToggleLabel: 'Takvim geçişini görüntüle', - displayTypeDateLabel: 'Tarih', - displayTypeTimeLabel: 'Zaman', - datetimeOkLabel: 'Tamam', - datetimeCancelLabel: 'İptal' - }, - coreFeedListItem: { - moreLabel: 'Daha fazla', - lessLabel: 'Daha az' - }, - coreGridList: { - filterBarCancelButtonTitle: 'Vazgeç', - listItemStatusAriaLabel: 'Eşyayı statü var. Statü: {status}.', - listItemCounterAriaLabel: 'Eşyayı {count} alt eşyası var.', - listItemButtonDetailsTitle: 'Detaylar', - listItemButtonDeleteTitle: 'Sil', - listItemStatusContainsErrors: 'Hata içerir', - listItemStatusLocked: 'Kilitli', - listItemStatusDraft: 'Taslak' - }, - coreMessageStrip: { - dismissLabel: 'Azletmek' - }, - coreMultiInput: { - multiInputAriaLabel: 'Multi Value Input', - tokensCountText: 'Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.' - }, - coreNavigation: { - mainNavigation: 'Main Navigation', - navigationPath: 'Navigation Path' - }, - coreNestedList: { - linkItemAriaLabel: 'Ağaç Öğesi {itemDetails}, {index} / {total}{selectedDescription}' - }, - coreOverflowLayout: { - moreItemsButton: '{count} ürün daha' - }, - corePagination: { - pageLabel: 'Sayfa {pageNumber}', - currentPageAriaLabel: 'Sayfa {pageNumber} geçerli sayfadır', - labelBeforeInputMobile: 'Sayfa:', - labelAfterInputMobile: 'of {totalCount}', - inputAriaLabel: 'Sayfa girişi, Geçerli sayfa, Sayfa {pageNumber} / {totalCount}', - itemsPerPageLabel: 'Sayfa Başına Sonuçlar:', - firstLabel: 'İlk', - previousLabel: 'Önceki', - nextLabel: 'Sonraki', - lastLabel: 'Son', - ariaLabel: 'Sayfalandırma', - totalResultsLabel: '{totalCount} Sonuçlar' - }, - coreProductSwitch: { - ariaLabel: 'Ürün Anahtarı' - }, - coreShellbar: { - collapsedItemMenuLabel: 'Daraltılmış Öğe Menüsü', - cancel: 'Cancel', - search: 'Search' - }, - coreSlider: { - singleMinMaxDetails: ' Kaydırıcının {min} minimum değeri, {max} maksimum değeri', - singleValueminDetails: 'Değer {value}', - singleValuemaxDetails: 'Değer {value}', - singleValueNowDetails: 'Geçerli değer {value}', - multipleHandle1MinMaxDetails: ' Aralığı kaydırma {min} minimum değeri, {max} maksimum değeri', - multipleHandle1ValueminDetails: 'Değer {value}', - multipleHandle1ValuemaxDetails: 'Değer {value}', - multipleHandle1ValueNowDetails: 'Geçerli değer {value}', - multipleHandle2MinMaxDetails: ' Aralığı kaydırma {min} minimum değeri, {max} maksimum değeri', - multipleHandle2ValueminDetails: 'Değer {value}', - multipleHandle2ValuemaxDetails: 'Değer {value}', - multipleHandle2ValueNowDetails: 'Geçerli değer {value}' - }, - coreSplitButton: { - expandButtonAriaLabel: 'Daha fazla hareket', - arialLabel: 'Böl düğmesi' - }, - coreSplitter: { - paginationItemAriaLabel: 'Bölüm' - }, - coreStepInput: { - incrementButtonTitle: 'Artış', - decrementButtonTitle: 'Azaltma', - ariaRoleDescription: 'Adım Girişi' - }, - coreSwitch: { - semanticAcceptLabel: 'Kabul et', - semanticDeclineLabel: 'Reddet' - }, - coreTabs: { - tabListExpandButtonText: 'Daha' - }, - coreText: { - moreLabel: 'Daha', - lessLabel: 'Az' - }, - coreTime: { - componentAriaName: 'Zaman seçici', - increaseHoursLabel: 'Saatleri artır', - hoursLabel: 'Saat', - decreaseHoursLabel: 'Saatleri azalt', - increaseMinutesLabel: 'Dakikaları artır', - minutesLabel: 'Min', - decreaseMinutesLabel: 'Dakikaları azalt', - increaseSecondsLabel: 'Saniyeyi artır', - secondsLabel: 'Sn', - decreaseSecondsLabel: 'Saniyeyi azalt', - increasePeriodLabel: 'Periyodu artırma', - periodLabel: 'Dönem', - decreasePeriodLabel: 'Düşüş periyodu', - navigationInstruction: - 'Bu listedeki öğeler arasında hareket etmek için üst oka veya alt oka basın. Listeler arasında geçiş yapmak için sol ok veya sağ ok tuşuna basın.' - }, - coreTimePicker: { - timePickerInputLabel: 'Zaman seçici girişi', - timePickerButtonLabel: 'Seçiciyi aç' - }, - coreToken: { - deleteButtonLabel: 'Silinebilir', - ariaRoleDescription: 'jeton' - }, - coreTokenizer: { - moreLabel: '{count} ürün daha' - }, - coreUploadCollection: { - menuOkText: 'Tamam', - menuCancelText: 'İptal', - menuEditAriaLabel: 'Düzenle', - menuDeleteAriaLabel: 'Sil', - menuOkAriaLabel: 'Düzenle', - menuCancelAriaLabel: 'İptal', - formItemPlaceholder: 'Dosya adı' - }, - coreWizard: { - ariaLabel: 'Sihirbaz' - }, - coreBreadcrumb: { - overflowTitleMore: 'Daha' - }, - platformActionBar: { - backButtonLabel: 'Geri dön' - }, - platformApprovalFlow: { - defaultWatchersLabel: 'Gözlemciler', - defaultTitle: 'Onay süreci', - nextButtonAriaLabel: 'Sonraki slayta git', - prevButtonAriaLabel: 'Önceki slayta git', - editModeSaveButtonLabel: 'Kaydet', - editModeExitButtonLabel: 'Çıkış', - emptyTitle: 'Onaylayanlar ve Gözlemciler eklemeye başla', - emptyHint: - 'Onaylayanları eklemek için "Adım ekle"yi tıklayın. Gözlemciler eklemek için Gözlemciler alanını tıklayın..', - addNodeDialogHeaderAddApprovers: 'Onaylayanları ekle', - addNodeDialogHeaderEditApprover: 'Onaylayanı düzenle', - addNodeDialogHeaderAddApproverTeam: 'Kullanıcı/Takım', - addNodeDialogHeaderDetail: 'Detay', - addNodeDialogNodeType: 'Paralel veya seri', - addNodeDialogNodeTypeSerial: 'Seri', - addNodeDialogNodeTypeParallel: 'Paralel', - addNodeDialogApproverType: 'Onaylayan türü', - addNodeDialogApproverTypeUser: 'Bir kullanıcı', - addNodeDialogApproverTypeTeamAnyone: 'Takımdaki herhangi biri', - addNodeDialogApproverTypeTeamEveryone: 'Takımdaki herkes', - addNodeDialogUserOrTeam: 'Kullanıcı/Takım', - addNodeDialogAddToNext: 'Sonraki seri düğüme ekle', - addNodeDialogDueDate: 'Bitiş tarihi', - addNodeSearchPlaceholder: 'Ara', - addNodeAddActionBtnLabel: 'Ekle', - addNodeCancelActionBtnLabel: 'Vazgeç', - addNodeSelectApproverActionBtnLabel: 'Seçme', - addNodeCancelApproverSelectionActionBtnLabel: 'Vazgeç', - addNodeApproverOrTeamDetailsCloseActionBtnLabel: 'Kapat', - userDetailsHeader: 'Detay', - userDetailsSendReminderBtnLabel: 'Hatırlatma gönder', - userDetailsCancelBtnLabel: 'Vazgeç', - messagesApproverAddedSuccess: '1 onaylayıcı eklendi', - messagesTeamAddedSuccess: '1 takım eklendi', - messagesNodeEdited: '1 onaylayıcı düzenlendi', - messagesNodeRemovedSingular: '1 onaylayıcı çıkarıldı', - messagesNodeRemovedPlural: 'Onaylayanlar kaldırıldı', - messagesTeamRemoved: '1 takım kaldırıldı', - messagesErrorBuildGraph: 'Grafik oluşturulurken bir hata oluştu. İlk verileri kontrol edi.', - messagesUndoAction: 'Geri almak', - nodeMembersCount: '{count} üyeler', - nodeVariousTeams: 'Çeşitli takımlar', - nodeStatusDueToday: 'Bugün teslim tarihi', - nodeStatusDueInXDays: ' {count} gün içinde vadesi doluyor', - nodeStatusXDaysOverdue: '{count} gecikmiş gün', - nodeActionAddApproversBefore: 'Daha önce onaylayanlar ekleme', - nodeActionAddApproversAfter: 'Onaylayanları afte ekler', - nodeActionAddApproversParallel: 'Paralel onaylayanlar ekleme', - nodeActionEditApprover: 'Onaylayanı düzenle', - nodeActionRemove: 'Kaldır', - selectTypeDialogMoveApproverAs: 'Onaylayanı şu şekilde taşı:', - selectTypeDialogParallelOrSerial: 'Paralel veya seri', - selectTypeDialogNodeTypeParallel: 'Paralel onaylayan', - selectTypeDialogNodeTypeSerial: 'Seri onaylayan', - selectTypeDialogConfirmButton: 'Onayla', - selectTypeDialogCancelButton: 'Vazgeç', - toolbarAddStepButton: 'Bir adım ekle', - toolbarEditButton: 'Düzenle ', - toolbarAddApproversBefore: 'Daha önce onaylayanlar ekleme', - toolbarAddApproversAfter: 'Onaylayanları afte ekle', - toolbarAddApproversParallel: 'Paralel onaylayanlar ekleme', - toolbarRemove: 'Kaldır', - toolbarEditApprover: 'Onaylayanı düzenle', - watchersInputPlaceholder: 'Burada ara..', - userListSelectedItemsCountSingular: '1 eşyayı seçildi', - userListSelectedItemsCountPlural: '{count} eşyayılar seçildi', - statusApproved: 'approved', - statusRejected: 'rejected', - statusInProgress: 'in progress', - statusNotStarted: 'not started' - }, - platformFeedInput: { - userTitle: 'kullanıcı' - }, - platformVHD: { - selectionBarLabel: 'Seçilmiş ve koşullu eşyayılar', - selectedAndConditionLabel: 'Seçilen Eşyayılar ve Koşullar', - footerClearSelectedTitle: 'seçili eşyayı temizle', - footerClearSelectedAriaLabel: 'seçili eşyayılar temile', - searchButtonLabel: 'Git', - successButtonLabel: 'OK', - cancelButtonLabel: 'Vazgeç', - selectedEmptyLabel: 'Hiçbir eşyayı veya Koşul Seçilmedi', - searchPlaceholder: 'Ara', - searchAdvancedSearchLabel: 'Filtreler', - searchShowAdvancedSearchLabel: 'Filtreleri göster', - searchHideAdvancedSearchLabel: 'Filtreleri gizles', - searchShowAllAdvancedSearchLabel: 'Tüm filtreleri göster', - searchHideAllAdvancedSearchLabel: 'Tüm filtreleri gizle', - selectTabDisplayCountLabel: 'Eşyayı ({count})', - selectTabMoreBtnLabel: 'Daha', - selectTabCountHiddenA11yLabel: '{rowCount} satır ve {colCount} sütun içerir', - selectMobileTabBackBtnTitle: 'Geri', - selectMobileTabBtnOpenDialogLabel: 'İletişim kutusunu aç', - selectMobileTabTitle: '{title} sekmesi', - selectMobileConditionEmpty: 'Boş', - defineConditionTitle: 'Ürün', - defineConditionSelectedValueHiddenA11yLabel: ' {value} seçilen değer', - defineConditionConditionsGroupHeaderInclude: 'Dahil et', - defineConditionConditionsGroupHeaderExclude: 'Dışla', - defineConditionFromPlaceholder: 'dan', - defineConditionToPlaceholder: 'ile', - defineConditionValuePlaceholder: 'değer', - defineConditionRemoveConditionButtonTitle: 'Koşul Kaldır', - defineConditionAddConditionButtonLabel: 'Ekle', - defineConditionAddConditionButtonTitle: 'Koşul Ekle', - defineConditionConditionStrategyLabelContains: 'içer', - defineConditionConditionStrategyLabelEqualTo: 'eşit', - defineConditionConditionStrategyLabelBetween: 'arasında', - defineConditionConditionStrategyLabelStartsWith: 'ile başlar', - defineConditionConditionStrategyLabelEndsWith: 'ile biter', - defineConditionConditionStrategyLabelLessThan: 'daha az', - defineConditionConditionStrategyLabelLessThanEqual: 'eşitten daha az', - defineConditionConditionStrategyLabelGreaterThan: 'daha büyük', - defineConditionConditionStrategyLabelGreaterThanEqual: 'eşitten büyük', - defineConditionConditionStrategyLabelEmpty: 'boş', - defineConditionConditionStrategyLabelNotEqualTo: 'eşit değil', - defineConditionConditionStrategyLabelNotEmpty: 'boş değil', - defineConditionMaxCountError: '{count} karakterden fazla olmayan bir değer gir', - selectTabTitle: 'Listeden seç', - searchTableEmptyMessage: 'Sonuçları almak için aramayı kullanın', - defineTabTitle: 'Koşulları Tanımla' - }, - platformCombobox: { - countListResultsSingular: '1 sonuç listesi eşyayı', - countListResultsPlural: '{count} sonuç listesi eşyayılar' - }, - platformMultiCombobox: { - inputGlyphAriaLabel: "Seçenekler'i seçin", - inputIconTitle: "Seçenekler'i seçin", - mobileShowAllItemsButton: 'Tüm eşyayılar göster', - mobileShowSelectedItemsButton: 'Seçili eşyayılar göster' - }, - platformTextarea: { - counterMessageCharactersOverTheLimitSingular: '1 karakter sınırın üzerinde', - counterMessageCharactersOverTheLimitPlural: '{count} karakter sınırı aşıyor', - counterMessageCharactersRemainingSingular: '1 karakter kaldı', - counterMessageCharactersRemainingPlural: '{count} karakterler kaldı' - }, - platformLink: { - roleDescriptionWithMedia: 'Medya: {media}' - }, - platformList: { - loadingAriaLabel: 'yükleniyor' - }, - platformObjectListItem: { - detailsActionAriaLabel: 'detay', - deleteActionAriaLabel: 'sil' - }, - platformStandardListItem: { - detailsActionAriaLabel: 'detay', - deleteActionAriaLabel: 'sil' - }, - platformSearchField: { - clearButtonTitle: 'Temiz', - submitButtonTitle: 'Ara', - searchInputLabel: 'Ara', - synchronizeButtonTitle: 'Senkronize', - searchSuggestionMessage: '{count} öneri bulundu.', - searchSuggestionNavigateMessage: 'gezinmek için yukarı ve aşağı okları kullanın' - }, - platformSmartFilterBar: { - searchPlaceholder: 'Ara', - submitButtonLabel: 'Git', - filtersButtonLabel: 'Filtreler ({filtersCount})', - showFiltersButtonLabel: 'Filtreleri göster', - hideFiltersButtonLabel: 'Filtreleri gizle', - defineConditionsRemoveConditionButtonTitle: 'Koşullu kaldır', - defineConditionsAddConditionButtonLabel: 'Koşul ekle', - defineConditionsSubmitButtonLabel: 'Git', - defineConditionsCancelButton: 'Vazgeç', - selectFiltersHeader: 'Filtreler', - selectFiltersAvailableFiltersText: 'Kullanılabilir filtreler', - selectFiltersFilterColumnLabel: 'Filtre', - selectFiltersActiveColumnLabel: 'Aktif', - selectFiltersSubmitButtonLabel: 'Git', - selectFiltersCancelButton: 'Vazgeç', - filterConditionContains: 'içerir', - filterConditionEqualTo: 'eşittir', - filterConditionBetween: 'arasında', - filterConditionBeginsWith: 'ile başlar', - filterConditionEndsWith: 'ile biter', - filterConditionLessThan: 'küçüktür', - filterConditionLessThanOrEqualTo: 'küçük veya eşittir', - filterConditionGreaterThan: 'büyüktür', - filterConditionGreaterThanOrEqualTo: 'büyüktür veya eşittir', - filterConditionAfter: 'sonra', - filterConditionOnOrAfter: 'on veya after', - filterConditionBefore: 'önce', - filterConditionBeforeOrOn: 'önce veya açık', - filterConditionValuePlaceholder: 'değer', - filterConditionValueFromPlaceholder: 'from', - filterConditionValueToPlaceholder: 'to', - settingsCategoryAll: 'Tümü', - settingsCategoryVisible: 'Görünür', - settingsCategoryActive: 'Etkin', - settingsCategoryVisibleAndActive: 'Görünür ve aktif', - settingsCategoryMandatory: 'Zorunlu', - manageFieldConditions: 'Manage field conditions', - refreshButtonAriaLabel: 'Refresh' - }, - platformTable: { - headerMenuSortAsc: 'Artan Sıralama', - headerMenuSortDesc: 'Azalan Sıralama', - headerMenuGroup: 'Grup', - headerMenuFreeze: 'Donma', - headerMenuEndFreeze: 'Freeze to End', - headerMenuUnfreeze: 'HeaderMenuUnfreeze', - headerMenuFilter: 'Filtre', - defaultEmptyMessage: 'Hiçbir veri bulunamadı', - emptyCell: 'Boş', - noVisibleColumnsMessage: - 'Right now, there are no visible columns in the table. Please select the columns you need in the table settings.', - resetChangesButtonLabel: 'Sıfırla', - editableCellNumberPlaceholder: 'Değer gir', - editableCellDatePlaceholder: 'Değer gir', - editableCellStringPlaceholder: 'Değer gir', - P13ColumnsDialogHeader: 'Kolonlar', - P13ColumnsDialogSearchPlaceholder: 'Ara', - P13ColumnsDialogsShowSelected: 'Seçilenleri Göster', - P13ColumnsDialogShowAll: 'Hepsini Göster', - P13ColumnsDialogSelectAll: 'Hepsini ({selectedColumnsCount}/{selectableColumnsCount}) seç', - P13ColumnsDialogConfirmationBtnLabel: 'OK', - P13ColumnsDialogCancelBtnLabel: 'Vazgeç', - P13ColumnsDialogMoveToTopBtn: 'Yukarı Taşı', - P13ColumnsDialogMoveUpBtn: 'Yukarı Taşı', - P13ColumnsDialogMoveDownBtn: 'Aşağı Taşı', - P13ColumnsDialogMoveToBottomBtn: 'Aşağıya Taşı', - P13FilterStrategyLabelBetween: 'arasında', - P13FilterStrategyLabelContains: 'içerir', - P13FilterStrategyLabelBeginsWith: 'İle baş', - P13FilterStrategyLabelEndsWith: 'ile bit', - P13FilterStrategyLabelEqualTo: 'eşit', - P13FilterStrategyLabelGreaterThan: 'daha büyük', - P13FilterStrategyLabelGreaterThanOrEqualTo: 'büyük veya eşit', - P13FilterStrategyLabelLessThan: 'daha az', - P13FilterStrategyLabelLessThanOrEqualTo: 'daha az veya eşittir', - P13FilterStrategyLabelAfter: 'sonrasında', - P13FilterStrategyLabelOnOrAfter: 'Üzerinde veya sonrasında', - P13FilterStrategyLabelBefore: 'önceki', - P13FilterStrategyLabelBeforeOrOn: 'önce veya üzerinde', - P13FilterStrategyLabelNotDefined: 'Tanımlanmamış', - P13FilterBooleanOptionNotDefined: ' ', - P13FilterBooleanOptionTrue: 'Evet', - P13FilterBooleanOptionFalse: 'Hayır', - P13FilterDialogHeader: 'Tarafından filtre', - P13FilterDialogIncludePanelTitleWithCount: 'Include ({count})', - P13FilterDialogIncludePanelTitleWithoutCount: 'Include', - P13FilterDialogExcludePanelTitleWithCount: 'Exclude ({count})', - P13FilterDialogExcludePanelTitleWithoutCount: 'Exclude', - P13FilterDialogRemoveFilterBtnTitle: 'Filtre kaldır', - P13FilterDialoAddFilterBtnTitle: 'Filtre ekle', - P13FilterDialogConfirmationBtnLabel: 'OK', - P13FilterDialogCancelBtnLabel: 'Vazgeç', - P13GroupDialogHeader: 'Grup', - P13GroupDialogNoneSelectedColumnSelectPlaceholder: '(yok)', - P13GroupDialogShowFieldAsColumnCheckboxLabel: 'Show Field as Column', - P13GroupDialogRemoveGroupBtnTitle: 'Kaldır', - P13GroupDialogAddNewGroupBtnTitle: 'Yeni ekle', - P13GroupDialogConfirmationBtnLabel: 'OK', - P13GroupDialogCancelBtnLabel: 'Vazgeç', - P13SortDialogHeader: ' Sıralama', - P13SortDialogNoneSelectedColumn: '(yok)', - P13SortDialogNoneSelectedSorting: '(yok)', - P13SortDialogSortOrderSelectOptionAsc: 'Artan', - P13SortDialogSortOrderSelectOptionDesc: 'Azalan', - P13SortDialogRemoveSortBtnTitle: 'Kaldır', - P13SortDialogAddNewSortBtnTitle: 'Yeni ekle', - P13SortDialogConfirmationBtnLabel: 'OK', - P13SortDialogCancelBtnLabel: 'Vazgeç', - toolbarSearchPlaceholder: 'Ara', - toolbarActionCreateButtonLabel: 'Oluşturma', - toolbarActionSaveButtonLabel: ' Kaydet', - toolbarActionCancelButtonLabel: 'Vazgeç', - toolbarActionSortButtonTitle: ' Sıralama', - toolbarActionFilterButtonTitle: 'Filtre', - toolbarActionGroupButtonTitle: 'Grup', - toolbarActionColumnsButtonTitle: 'Kolonlar', - toolbarActionExpandAllButtonTitle: 'Expand all', - toolbarActionCollapseAllButtonTitle: 'Collapse all', - filterDialogNotFilteredLabel: '(Filtrelenmemiş)', - filterDialogFilterByLabel: 'Filtreleme ölçütü: {filterLabel}', - filterDialogFilterTitle: 'Filtre', - filterDialogFilterBy: 'Filtreleme ölçütü', - filterDialogConfirmBtnLabel: 'OK', - filterDialogCancelBtnLabel: 'Vazgeç', - groupDialogHeader: 'Grup', - groupDialogGroupOrderHeader: 'Group Order', - groupDialogGroupOrderAsc: 'Artan', - groupDialogGroupOrderDesc: 'Azalan', - groupDialogGroupByHeader: 'Gruplandırma Ölçütü', - groupDialogNotGroupedLabel: '(Gruplandırılmamış)', - groupDialogConfirmBtnLabel: 'OK', - groupDialogCancelBtnLabel: 'Vazgeç', - sortDialogHeader: ' Sıralama', - sortDialogSortOrderHeader: 'Sıralama düzeni', - sortDialogSortOrderAsc: 'Artan', - sortDialogSortOrderDesc: 'Azalan', - sortDialogSortByHeader: 'Sıralama Ölçütü', - sortDialogNotSortedLabel: '(Sıralanmadı)', - sortDialogConfirmBtnLabel: 'OK', - sortDialogCancelBtnLabel: 'Vazgeç', - selectAllCheckboxLabel: 'Select all', - deselectAllCheckboxLabel: 'Deselect all', - deselectSingleRow: 'To deselect row, press SPACEBAR', - selectSingleRow: 'To select row, press SPACEBAR', - deselectSingleRowTitle: 'Click to deselect', - selectSingleRowTitle: 'Click to select' - }, - platformThumbnail: { - detailsGotoPreviousButtonTitle: 'Öncekine Git', - detailsGotoNextButtonTitle: 'Sonrakine Git', - detailsDialogCloseBtnLabel: 'Kapat', - roleDescription: 'resim' - }, - platformUploadCollection: { - moveToTitle: 'Taşınma', - moveToTitleFolder: 'Dizin', - moveToNewFolderBtnLabel: 'Yeni Dizin', - moveToAllFilesSubHeaderLabel: 'Tüm dosyalar', - moveToConfirmBtn: 'Move', - moveToCloseBtn: 'Vazgeç', - newFolderTitle: 'Yeni Dizinr', - newFolderAtRootInputLabel: 'Yeni Dizin adı', - newFolderAtFolderInputLabel: '{folderName} içindeki yeni dizin adı', - newFolderInputPlaceholder: 'Buraya yaz..', - newFolderInputErrorLabel: 'Maksimum {count} karaktere izin verilir', - newFolderDialogCreateBtnLabel: 'Oluşturma', - newFolderDialogCancelBtnLabel: 'Vazgeç', - breadcrumbLabelAllFiles: 'Tüm dosyalar', - breadcrumbLabelAllFilesWithTotal: 'Tüm dosyalar ({total})', - searchPlaceholder: 'Ara', - addBtnLabel: 'Ekle', - newFolderBtnLabel: 'Yeni Dizin', - moveToBtnLabel: 'Taşınma', - downloadBtnLabel: 'İndir', - updateVersionBtnLabel: 'Sürümü güncelle', - removeBtnLabel: 'Kaldır', - folderIconTitle: 'Dizin ikonu', - fileIconTitle: 'Dosya ikonu', - editFileNameInputPlaceholder: 'İsim girin', - editFileNameFileAlreadyExistsError: 'Bu adda dosya zaten var', - editFileNameFolderAlreadyExistsError: 'Bu adda dizin zaten var', - itemStatusSuccessful: 'Başarılı', - itemStatusUnsuccessful: 'Başarısız', - uploadNewFileAfterFailAction: 'Çalıştır', - cancelUploadNewFileAction: 'Vazgeç', - itemMenuBtnTitle: 'Daha', - dragDropAreaText: 'Yüklenecek dosyaları sürükleyin', - noDataText: 'Dosya bulunamadı', - noDataDescription: 'Yüklenecek dosyaları bırakın veya “Ekle” düğmesini kullanın.', - paginationTotal: '{total}/{from}-{to} arasında gösteriliyor', - resultsPerPage: 'Sayfa başına sonuç', - messageCreateFailed: '{folderName} oluşturulamadı.', - messageCreateSuccess: '{folderName} oluşturuladı.', - messageUpdateVersionFailed: '{folderName} sürümü güncellenemedi.', - messageUpdateVersionSuccess: '{folderName} sürümü güncellendi.', - messageFileRenameFailed: '"{from}" olarak yeniden adlandırılamadı "{to}"', - messageFileRenameSuccess: '"{from}", "{to}" olarak yeniden adlandırıldı.', - messageRemoveFoldersAndFilesFailed: '{foldersCount} dizin ve {filesCout} dosya kaldırılamadı.', - messageRemoveFoldersAndFilesSuccess: '{foldersCount} dizinleri ve {filesCount} dosyaları kaldırıldı.', - messageRemoveFoldersFailed: '{foldersCount} dizinleri kaldırılamadı', - messageRemoveFoldersSuccess: '{foldersCount} dizinleri kaldırıladı.', - messageRemoveFilesFailed: '{filesCount} dosyaları kaldırılamadı.', - messageRemoveFilesSuccess: '{filesCount} dosyaları kaldırıldı.', - messageRemoveFileOrFolderFailed: ' {name} kaldırılamadı.', - messageRemoveFileOrFolderSuccess: '{name} kaldırıldı.', - messageMoveFoldersAndFilesFailed: '{foldersCount} dizini ve {filesCount} dosyası, {to} taşınamadı.', - messageMoveFoldersAndFilesSuccess: '{foldersCount} dizini ve {filesCount} dosyası, {to} taşınadı.', - messageMoveFoldersFailed: '{foldersCount} dizini, {to} taşınamadı.', - messageMoveFoldersSuccess: '{foldersCount} dizini, {to} taşınadı.', - messageMoveFilesFailed: '{filesCount} dosyası, {to} taşınamadı.', - messageMoveFilesSuccess: '{filesCount} dosyası, {to} taşınadı.', - messageMoveFileOrFolderFailed: '{name}, {to} taşınamadı.', - messageMoveFileOrFolderSuccess: '{name}, {to} taşınadı.', - messageMoveRootFoldersAndFilesFailed: - '{foldersCount} dizinleri ve {filesCount} dosyaları tüm dosyalara taşınamadı.', - messageMoveRootFoldersAndFilesSuccess: - '{foldersCount} dizinleri ve {filesCount} dosyaları tüm dosyalara taşınadı.', - messageMoveRootFoldersFailed: '{foldersCount} dizini tüm dosyalara taşınamadı.', - messageMoveRootFoldersSuccess: '{foldersCount} dizinler tüm dosyalara taşındı.', - messageMoveRootFilesFailed: '{filesCount} dosyası tüm dosyalara taşınamadı.', - messageMoveRootFilesSuccess: '{filesCount} dizinler tüm dosyalara taşındı.', - messageMoveRootFileOrFolderFailed: '{name} tüm dosyalara taşınamadı.', - messageMoveRootFileOrFolderSuccess: '{name} tüm dosyalara taşındı.', - messageFileTypeMismatchPlural: '{filesCount} dosyalarının türü yanlış. İzin verilen türler: {allowedTypes}.', - messageFileTypeMismatchSingular: '"{fileName}" dosyasının türü yanlış. İzin verilen türler: {allowedTypes}.', - messageFileSizeExceededPlural: - '{filesCount} dosya maksimum dosya boyutunu aştı. İzin verilen maksimum dosya boyutu: {maxFileSize}.', - messageFileSizeExceededSingular: - '"{fileName}" dosyası maksimum dosya boyutunu aştı. İzin verilen maksimum dosya boyutu: {maxFileSize}.', - messageFileNameLengthExceededPlural: - '{filesCount} dosya maksimum dosya adı uzunluğunu aştı. İzin verilen dosya adı uzunluğu: {maxFilenameLength} karakter.', - messageFileNameLengthExceededSingular: - '"{fileName}", maksimum dosya adı uzunluğunu aştı. İzin verilen dosya adı uzunluğu: {maxFilenameLength} karakter.' - }, - platformWizardGenerator: { - summarySectionEditStep: 'Düzenle' - }, - platformMessagePopover: { - allErrors: 'All', - defaultErrors: { - email: 'Email is invalid', - max: 'The field exceeds maximum value', - maxLength: 'The field exceeds maximum length', - min: 'The field value is less than allowed', - minLength: 'The field length is less than allowed', - pattern: 'The field value is invalid', - required: 'The field is mandatory', - requiredTrue: 'The field is mandatory' - } - }, - platformVariantManagement: { - manage: 'Manage', - saveAs: 'Save as', - saveView: 'Save View', - save: 'Save', - myViews: 'My Views', - view: 'View', - setAsDefault: 'Set as Default', - public: 'Public', - applyAutomatically: 'Apply Automatically', - requiredFieldError: 'This field is required.', - nameTakenFieldError: 'Variant with such name already exists. Please chose a different name.', - cancel: 'Cancel', - manageViews: 'Manage Views', - markAsFavourite: 'Mark as Favourite', - sharing: 'Sharing', - default: 'Default', - createdBy: 'Created By', - removeVariant: 'Remove View', - search: 'Search', - access: { - public: 'Public', - private: 'Private' - } - }, - platformSelect: { - selectOptionLabel: 'Bir seçenek seçin' - }, - fnSlider: { - minMaxDetails: 'Kaydırıcının {min} minimum değeri, {max} maksimum değeri', - valueminDetails: 'Değer {value}', - valuemaxDetails: 'Değer {value}', - valueNowDetails: 'Geçerli değer {value}' - }, - fnSwitch: { - semanticAcceptLabel: 'Kabul et', - semanticDeclineLabel: 'Reddet' - }, - coreTree: { - expand: 'Expand node', - collapse: 'Collapse node', - noData: 'No data' - } -}; +export const FD_LANGUAGE_TURKISH = loadJson(json); diff --git a/libs/i18n/src/lib/languages/ukrainian.ts b/libs/i18n/src/lib/languages/ukrainian.ts index 2e81ff098a2..d01f8f9c2cb 100644 --- a/libs/i18n/src/lib/languages/ukrainian.ts +++ b/libs/i18n/src/lib/languages/ukrainian.ts @@ -1,635 +1,4 @@ -import { FdLanguage } from '../models/lang'; +import json from '../translations/translations_uk-UA.json'; +import { loadJson } from '../utils/load-json'; -/** - * Default set of translations of Fundamental UI libarary for Ukrainian language - */ -export const FD_LANGUAGE_UKRAINIAN: FdLanguage = { - coreMultiComboBox: { - selectAllLabel: 'Вибрати все ({selectedItems} з {totalItems})' - }, - coreCarousel: { - leftNavigationBtnLabel: 'Перейти до попереднього елемента', - rightNavigationBtnLabel: 'Перейти до наступного елемента' - }, - coreDatePicker: { - dateInputLabel: 'Поле вводу дати', - dateRangeInputLabel: 'Поле введення діапазону дат', - displayCalendarToggleLabel: 'Відкрити засіб вибору', - valueStateSuccessMessage: 'Значення стану: Успіх', - valueStateInformationMessage: 'Значення стану: Інформаційний', - valueStateWarningMessage: 'Значення стану: Попередження', - valueStateErrorMessage: 'Значення стану: Помилка' - }, - coreDatetimePicker: { - datetimeInputLabel: 'Поле вводу дати та часу', - displayDatetimeToggleLabel: 'Показати календар', - displayTypeDateLabel: 'Дата', - displayTypeTimeLabel: 'Час', - datetimeOkLabel: 'OK', - datetimeCancelLabel: 'Відмінити' - }, - coreFeedListItem: { - moreLabel: 'Більше', - lessLabel: 'Менше' - }, - coreGridList: { - filterBarCancelButtonTitle: 'Скасувати', - listItemStatusAriaLabel: 'Елемент має статус. Статус: {status}.', - listItemCounterAriaLabel: - 'Елемент має {count, plural, one {один дочірній елемент} few {# дочірніх елемента} other {# дочірніх елементів} }.', - listItemButtonDetailsTitle: 'Подробиці', - listItemButtonDeleteTitle: 'Видалити', - listItemStatusContainsErrors: 'Містить помилки', - listItemStatusLocked: 'Заблоковано', - listItemStatusDraft: 'Чернетка' - }, - coreMessageStrip: { - dismissLabel: 'Закрити' - }, - coreMultiInput: { - multiInputAriaLabel: 'Multi Value Input', - tokensCountText: - '{ length, plural, =0 {Немає вибраних} other {Обрано #} } { length, plural, one {варіант} few {варіанти} other {варіантів} }.' - }, - coreNavigation: { - mainNavigation: 'Main Navigation', - navigationPath: 'Navigation Path' - }, - coreNestedList: { - linkItemAriaLabel: 'Елемент дерева {itemDetails}, {index} із {total}{selectedDescription}' - }, - coreOverflowLayout: { - moreItemsButton: `Ще { count, plural, one {елемент} few {елемента} other {елементів} }` - }, - corePagination: { - pageLabel: 'Сторінка {pageNumber}', - currentPageAriaLabel: 'Сторінка {pageNumber} є активною', - labelBeforeInputMobile: 'Сторінка:', - labelAfterInputMobile: 'із {totalCount}', - inputAriaLabel: 'Поле вводу сторінки, Поточна сторінка, Сторінка {pageNumber} із {totalCount}', - itemsPerPageLabel: 'Результатів на сторінці:', - firstLabel: 'Перейти до першої', - previousLabel: 'Перейти до попердньої', - nextLabel: 'Перейти до наступної', - lastLabel: 'Перейти до останньої', - ariaLabel: 'Нумерація сторінок', - totalResultsLabel: '{totalCount} результатів' - }, - coreProductSwitch: { - ariaLabel: 'Перемикач' - }, - coreShellbar: { - collapsedItemMenuLabel: 'Згорнуте меню елементів', - cancel: 'Відміна', - search: 'Пошук' - }, - coreSlider: { - singleMinMaxDetails: 'Мінімальне значення слайдера {min}, максимальне значення {max}', - singleValueminDetails: 'Поточне значення: {value}', - singleValuemaxDetails: 'Поточне значення: {value}', - singleValueNowDetails: 'Поточне значення: {value}', - multipleHandle1MinMaxDetails: 'Мінімальне значення слайдера {min}, максимальне значення {max}', - multipleHandle1ValueminDetails: 'Поточне значення: {value}', - multipleHandle1ValuemaxDetails: 'Поточне значення: {value}', - multipleHandle1ValueNowDetails: 'Поточне значення: {value}', - multipleHandle2MinMaxDetails: 'Мінімальне значення слайдера {min}, максимальне значення {max}', - multipleHandle2ValueminDetails: 'Поточне значення: {value}', - multipleHandle2ValuemaxDetails: 'Поточне значення: {value}', - multipleHandle2ValueNowDetails: 'Поточне значення: {value}' - }, - coreSplitButton: { - expandButtonAriaLabel: 'Більше дій', - arialLabel: 'Кнопка розділення' - }, - coreSplitter: { - paginationItemAriaLabel: 'Секція' - }, - coreStepInput: { - incrementButtonTitle: 'Збільшити', - decrementButtonTitle: 'Зменшити', - ariaRoleDescription: 'Крок вводу' - }, - coreSwitch: { - semanticAcceptLabel: 'Прийняти', - semanticDeclineLabel: 'Відхилити' - }, - coreTabs: { - tabListExpandButtonText: 'Більше' - }, - coreText: { - moreLabel: 'Більше', - lessLabel: 'Менше' - }, - coreTime: { - componentAriaName: 'Вибір часу', - increaseHoursLabel: 'Збільшити години', - hoursLabel: 'Год', - decreaseHoursLabel: 'Зменшити години', - increaseMinutesLabel: 'Збільшити хвилини', - minutesLabel: 'Хв', - decreaseMinutesLabel: 'Зменшити хвилини', - increaseSecondsLabel: 'Збільшити секунди', - secondsLabel: 'Сек', - decreaseSecondsLabel: 'Зменшити секунди', - increasePeriodLabel: 'Збільшити період', - periodLabel: 'Період', - decreasePeriodLabel: 'Зменшити період', - navigationInstruction: - 'Щоб переміщатися між елементами в цьому списку, використовуйте стрілку вверх або вниз. ' + - 'Для переключення між списками використовуйте стрілку вліво або вправо.' - }, - coreTimePicker: { - timePickerInputLabel: 'Поле вводу часу', - timePickerButtonLabel: 'Відкрити вікно вибору' - }, - coreToken: { - deleteButtonLabel: 'Може бути видаленим', - ariaRoleDescription: 'токен' - }, - coreTokenizer: { - moreLabel: 'Ще { count, plural, one {# елемент} few {# елемента} other {# елементів} }' - }, - coreUploadCollection: { - menuOkText: 'ОК', - menuCancelText: 'Відмінити', - menuEditAriaLabel: 'Редагувати', - menuDeleteAriaLabel: 'Видалити', - menuOkAriaLabel: 'Редагувати', - menuCancelAriaLabel: 'Відминити', - formItemPlaceholder: "Ім'я файлу" - }, - coreWizard: { - ariaLabel: 'Майстер' - }, - coreBreadcrumb: { - overflowTitleMore: 'Більше' - }, - platformActionBar: { - backButtonLabel: 'Повернутися назад' - }, - platformApprovalFlow: { - defaultWatchersLabel: 'Спостерігачі', - defaultTitle: 'Процес затвердження', - nextButtonAriaLabel: 'Перейти до наступного слайду', - prevButtonAriaLabel: 'Перейти до попереднього слайду', - editModeSaveButtonLabel: 'Зберегти', - editModeExitButtonLabel: 'Вийти', - emptyTitle: 'Почати додавати стверджувачів і спостерігачів', - emptyHint: - 'Щоб додати стверджувачів, натисніть "Додати крок". Щоб додати спостерігачів, натисніть поле Спостерігачі.', - addNodeDialogHeaderAddApprovers: 'Додати стверджувачів', - addNodeDialogHeaderEditApprover: 'Редагувати стверджувача', - addNodeDialogHeaderAddApproverTeam: 'Користувач/Команда', - addNodeDialogHeaderDetail: 'Деталі', - addNodeDialogNodeType: 'Паралельний або послідовний', - addNodeDialogNodeTypeSerial: 'Послідовний', - addNodeDialogNodeTypeParallel: 'Паралельний', - addNodeDialogApproverType: 'Тип стверджувача', - addNodeDialogApproverTypeUser: 'Користувач', - addNodeDialogApproverTypeTeamAnyone: 'Будь-хто в команді', - addNodeDialogApproverTypeTeamEveryone: 'Усі в команді', - addNodeDialogUserOrTeam: 'Користувач/Команда', - addNodeDialogAddToNext: 'Додати до наступного послідовного вузла', - addNodeDialogDueDate: 'Дата виконання', - addNodeSearchPlaceholder: 'Пошук', - addNodeAddActionBtnLabel: 'Додати', - addNodeCancelActionBtnLabel: 'Скасувати', - addNodeSelectApproverActionBtnLabel: 'Вибрати', - addNodeCancelApproverSelectionActionBtnLabel: 'Вийти', - addNodeApproverOrTeamDetailsCloseActionBtnLabel: 'Закрити', - userDetailsHeader: 'Деталі', - userDetailsSendReminderBtnLabel: 'Надіслати нагадування', - userDetailsCancelBtnLabel: 'Скасувати', - messagesApproverAddedSuccess: '1 стверджувач доданий', - messagesTeamAddedSuccess: '1 команда додана', - messagesNodeEdited: '1 стверджувач відредагований', - messagesNodeRemovedSingular: '1 стверджувач видалений', - messagesNodeRemovedPlural: 'Стверджувачі видалені', - messagesTeamRemoved: '1 команду видалено', - messagesErrorBuildGraph: 'Під час спроби побудувати графік сталася помилка. Перевірте вхідні дані.', - messagesUndoAction: 'Скасувати', - nodeMembersCount: '{ count, plural, one {1 член}, few {# члена}, other {# членів} } команди', - nodeVariousTeams: 'Різні команди', - nodeStatusDueToday: 'Термін виконання сьогодні', - nodeStatusDueInXDays: 'Термін виконання через { count, plural, one {1 день} few {# дні} other {# днів} }', - nodeStatusXDaysOverdue: 'Прострочено на { count, plural, one {1 день} few {# дні} other {# днів} }', - nodeActionAddApproversBefore: 'Додати стверджувача до', - nodeActionAddApproversAfter: 'Додати стверджувача після', - nodeActionAddApproversParallel: 'Додати паралельних стверджувачів', - nodeActionEditApprover: 'Редагувати стверджувача', - nodeActionRemove: 'Видалити', - selectTypeDialogMoveApproverAs: 'Перемістити стверджувача як', - selectTypeDialogParallelOrSerial: 'Паралельний або послідовний', - selectTypeDialogNodeTypeParallel: 'Паралельний стверджувач', - selectTypeDialogNodeTypeSerial: 'Послідовний стверджувач', - selectTypeDialogConfirmButton: 'Підтвердити', - selectTypeDialogCancelButton: 'Скасувати', - toolbarAddStepButton: 'Додати крок', - toolbarEditButton: 'Редагувати', - toolbarAddApproversBefore: 'Додати стверджувачів до', - toolbarAddApproversAfter: 'Додати стверджувачів після', - toolbarAddApproversParallel: 'Додати паралельних стверджувачів', - toolbarRemove: 'Видалити', - toolbarEditApprover: 'Редагувати стверджувача', - watchersInputPlaceholder: 'Пошук', - userListSelectedItemsCountSingular: 'Вибрано 1 елемент', - userListSelectedItemsCountPlural: - 'Вибрано { count, plural, one {1 елемент} few {# елемента} other {# елементів} }', - statusApproved: 'approved', - statusRejected: 'rejected', - statusInProgress: 'in progress', - statusNotStarted: 'not started' - }, - platformFeedInput: { - userTitle: 'Користувач' - }, - platformVHD: { - selectionBarLabel: 'Вибрані елементи та умови', - selectedAndConditionLabel: 'Вибрані елементи та умови', - footerClearSelectedTitle: 'очистити вибрані елементи', - footerClearSelectedAriaLabel: 'очистити вибрані елементи', - searchButtonLabel: 'Пошук', - successButtonLabel: 'OK', - cancelButtonLabel: 'Скасувати', - selectedEmptyLabel: 'Не вибрано жодних елементів або умов', - searchPlaceholder: 'Пошук', - searchAdvancedSearchLabel: 'Фільтри', - searchShowAdvancedSearchLabel: 'Показати фільтри', - searchHideAdvancedSearchLabel: 'Сховати фільтри', - searchShowAllAdvancedSearchLabel: 'Показати всі фільтри', - searchHideAllAdvancedSearchLabel: 'Сховати всі фільтри', - selectTabDisplayCountLabel: 'Елементи ({count})', - selectTabMoreBtnLabel: 'Більше', - selectTabCountHiddenA11yLabel: - 'містить { rowCount, plural, one {1 ряд} few {# ряди} other {# рядів} } і { colCount, plural, one {1 колонку} few {# колонки} other {# колонок} }', - selectMobileTabBackBtnTitle: 'Назад', - selectMobileTabBtnOpenDialogLabel: 'Відкрити діалогове вікно', - selectMobileTabTitle: '{title} вкладка', - selectMobileConditionEmpty: 'Пусто', - defineConditionTitle: 'Продукт', - defineConditionSelectedValueHiddenA11yLabel: 'вибране значення {value}', - defineConditionConditionsGroupHeaderInclude: 'Включні умови', - defineConditionConditionsGroupHeaderExclude: 'Виключні умови', - defineConditionFromPlaceholder: 'від', - defineConditionToPlaceholder: 'до', - defineConditionValuePlaceholder: 'значення', - defineConditionRemoveConditionButtonTitle: 'Видалити умову', - defineConditionAddConditionButtonLabel: 'Додати', - defineConditionAddConditionButtonTitle: 'Додати умову', - defineConditionConditionStrategyLabelContains: 'містить', - defineConditionConditionStrategyLabelEqualTo: 'дорівнює', - defineConditionConditionStrategyLabelBetween: 'між', - defineConditionConditionStrategyLabelStartsWith: 'починається з', - defineConditionConditionStrategyLabelEndsWith: 'закінчується на', - defineConditionConditionStrategyLabelLessThan: 'менше ніж', - defineConditionConditionStrategyLabelLessThanEqual: 'менше ніж або дорівнює', - defineConditionConditionStrategyLabelGreaterThan: 'більше ніж', - defineConditionConditionStrategyLabelGreaterThanEqual: 'більше ніж або дорівнює', - defineConditionConditionStrategyLabelEmpty: 'порожнє', - defineConditionConditionStrategyLabelNotEqualTo: 'не дорівнює', - defineConditionConditionStrategyLabelNotEmpty: 'не порожнє', - defineConditionMaxCountError: - 'Введіть значення не більше ніж { count, plural, one {1 символ} few {# символи} other {# символів} }', - selectTabTitle: 'Вибрати зі списку', - searchTableEmptyMessage: 'Використовуйте пошук, щоб отримати результати', - defineTabTitle: 'Визначити умови' - }, - platformCombobox: { - countListResultsSingular: '1 елемент', - countListResultsPlural: '{ count, plural, one {1 елемент} few {# елементи} other {# елементів} }' - }, - platformMultiCombobox: { - inputGlyphAriaLabel: 'Вибрати опції', - inputIconTitle: 'Вибрати опції', - mobileShowAllItemsButton: 'Показати всі елементи', - mobileShowSelectedItemsButton: 'Показати вибрані елементи' - }, - platformTextarea: { - counterMessageCharactersOverTheLimitSingular: 'Перевищено ліміт на 1 символ', - counterMessageCharactersOverTheLimitPlural: - 'Перевищено ліміт на { count, plural, one {1 символ} few {# символи} other {# символів} }', - counterMessageCharactersRemainingSingular: 'Залишився 1 символ', - counterMessageCharactersRemainingPlural: - 'Залишилось { count, plural, one {1 символ} few {# символи} other {# символів} }' - }, - platformLink: { - roleDescriptionWithMedia: 'Медіа: {media}' - }, - platformList: { - loadingAriaLabel: 'завантаження' - }, - platformObjectListItem: { - detailsActionAriaLabel: 'деталі', - deleteActionAriaLabel: 'видалити' - }, - platformStandardListItem: { - detailsActionAriaLabel: 'деталі', - deleteActionAriaLabel: 'видалити' - }, - platformSearchField: { - clearButtonTitle: 'Очистити', - submitButtonTitle: 'Пошук', - searchInputLabel: 'Пошук', - synchronizeButtonTitle: 'Синхронізувати', - searchSuggestionMessage: 'Знайдено { count, plural, one {1 варіант} few {# варіанти} other {# варіантів} }', - searchSuggestionNavigateMessage: 'використовуйте стрілки вгору та вниз для навігації' - }, - platformSmartFilterBar: { - searchPlaceholder: 'Пошук', - submitButtonLabel: 'Перейти', - filtersButtonLabel: 'Фільтри ({filtersCount})', - showFiltersButtonLabel: 'Показати фільтри', - hideFiltersButtonLabel: 'Сховати фільтри', - defineConditionsRemoveConditionButtonTitle: 'Видалити умову', - defineConditionsAddConditionButtonLabel: 'Додати умову', - defineConditionsSubmitButtonLabel: 'Перейти', - defineConditionsCancelButton: 'Скасувати', - selectFiltersHeader: 'Фільтри', - selectFiltersAvailableFiltersText: 'Доступні фільтри', - selectFiltersFilterColumnLabel: 'Фільтр', - selectFiltersActiveColumnLabel: 'Активний', - selectFiltersSubmitButtonLabel: 'Перейти', - selectFiltersCancelButton: 'Скасувати', - filterConditionContains: 'містить', - filterConditionEqualTo: 'дорівнює', - filterConditionBetween: 'між', - filterConditionBeginsWith: 'починається з', - filterConditionEndsWith: 'закінчується', - filterConditionLessThan: 'менше ніж', - filterConditionLessThanOrEqualTo: 'менше або одно', - filterConditionGreaterThan: 'більше ніж', - filterConditionGreaterThanOrEqualTo: 'більше або дорівнює', - filterConditionAfter: 'після', - filterConditionOnOrAfter: 'дорівнює або після', - filterConditionBefore: 'до', - filterConditionBeforeOrOn: 'до або дорівнює', - filterConditionValuePlaceholder: 'значення', - filterConditionValueFromPlaceholder: 'від', - filterConditionValueToPlaceholder: 'до', - settingsCategoryAll: 'Всі', - settingsCategoryVisible: 'Видимі', - settingsCategoryActive: 'Активні', - settingsCategoryVisibleAndActive: 'Видимі та активні', - settingsCategoryMandatory: "Обов'язкові", - manageFieldConditions: 'Показати умови для поля', - refreshButtonAriaLabel: 'Оновити' - }, - platformTable: { - headerMenuSortAsc: 'Сортувати за зростанням', - headerMenuSortDesc: 'Сортувати за спаданням', - headerMenuGroup: 'Сгрупувати', - headerMenuFreeze: 'Заморозити', - headerMenuEndFreeze: 'Freeze to End', - headerMenuUnfreeze: 'Розморозити', - headerMenuFilter: 'Фільтр', - defaultEmptyMessage: 'Нічого не знайдено', - emptyCell: 'Empty', - noVisibleColumnsMessage: - 'На даний момент у таблиці немає видимих стовпців. Виберіть потрібні стовпці в налаштуваннях таблиці.', - resetChangesButtonLabel: 'Скинути', - editableCellNumberPlaceholder: 'Введіть значення', - editableCellDatePlaceholder: 'Введіть значення', - editableCellStringPlaceholder: 'Введіть значення', - P13ColumnsDialogHeader: 'Стовпці', - P13ColumnsDialogSearchPlaceholder: 'Пошук', - P13ColumnsDialogsShowSelected: 'Показати вибране', - P13ColumnsDialogShowAll: 'Показати все', - P13ColumnsDialogSelectAll: 'Вибрати всі ({selectedColumnsCount}/{selectableColumnsCount})', - P13ColumnsDialogConfirmationBtnLabel: 'OK', - P13ColumnsDialogCancelBtnLabel: 'Скасувати', - P13ColumnsDialogMoveToTopBtn: 'Перемістити вгору', - P13ColumnsDialogMoveUpBtn: 'Перемістити вище', - P13ColumnsDialogMoveDownBtn: 'Перемістити нижче', - P13ColumnsDialogMoveToBottomBtn: 'Перемістити вниз', - P13FilterStrategyLabelBetween: 'між', - P13FilterStrategyLabelContains: 'містить', - P13FilterStrategyLabelBeginsWith: 'починається з', - P13FilterStrategyLabelEndsWith: 'закінчується на', - P13FilterStrategyLabelEqualTo: 'дорівнює', - P13FilterStrategyLabelGreaterThan: 'більше ніж', - P13FilterStrategyLabelGreaterThanOrEqualTo: 'більше або дорівнює', - P13FilterStrategyLabelLessThan: 'менше ніж', - P13FilterStrategyLabelLessThanOrEqualTo: 'менше або дорівнює', - P13FilterStrategyLabelAfter: 'після', - P13FilterStrategyLabelOnOrAfter: 'дорівнює або після', - P13FilterStrategyLabelBefore: 'до', - P13FilterStrategyLabelBeforeOrOn: 'до або дорівнює', - P13FilterStrategyLabelNotDefined: 'Не визначено', - P13FilterBooleanOptionNotDefined: ' ', - P13FilterBooleanOptionTrue: 'Так', - P13FilterBooleanOptionFalse: 'Ні', - P13FilterDialogHeader: 'Фільтрувати за', - P13FilterDialogIncludePanelTitleWithCount: 'Включні умови ({count})', - P13FilterDialogIncludePanelTitleWithoutCount: 'Включні умови', - P13FilterDialogExcludePanelTitleWithCount: 'Виключні умови ({count})', - P13FilterDialogExcludePanelTitleWithoutCount: 'Виключні умови', - P13FilterDialogRemoveFilterBtnTitle: 'Видалити фільтр', - P13FilterDialoAddFilterBtnTitle: 'Додати фільтр', - P13FilterDialogConfirmationBtnLabel: 'OK', - P13FilterDialogCancelBtnLabel: 'Скасувати', - P13GroupDialogHeader: 'Групування', - P13GroupDialogNoneSelectedColumnSelectPlaceholder: '(немає)', - P13GroupDialogShowFieldAsColumnCheckboxLabel: 'Показати поле як стовпець', - P13GroupDialogRemoveGroupBtnTitle: 'Видалити', - P13GroupDialogAddNewGroupBtnTitle: 'Додати новий', - P13GroupDialogConfirmationBtnLabel: 'OK', - P13GroupDialogCancelBtnLabel: 'Скасувати', - P13SortDialogHeader: 'Сортування', - P13SortDialogNoneSelectedColumn: '(немає)', - P13SortDialogNoneSelectedSorting: '(немає)', - P13SortDialogSortOrderSelectOptionAsc: 'За зростанням', - P13SortDialogSortOrderSelectOptionDesc: 'За спаданням', - P13SortDialogRemoveSortBtnTitle: 'Видалити', - P13SortDialogAddNewSortBtnTitle: 'Додати нове', - P13SortDialogConfirmationBtnLabel: 'OK', - P13SortDialogCancelBtnLabel: 'Скасувати', - toolbarSearchPlaceholder: 'Пошук', - toolbarActionCreateButtonLabel: 'Створити', - toolbarActionSaveButtonLabel: 'Зберегти', - toolbarActionCancelButtonLabel: 'Скасувати', - toolbarActionSortButtonTitle: 'Сортувати', - toolbarActionFilterButtonTitle: 'Фільтр', - toolbarActionGroupButtonTitle: 'Сгрупувати', - toolbarActionColumnsButtonTitle: 'Стовпці', - toolbarActionExpandAllButtonTitle: 'Expand all', - toolbarActionCollapseAllButtonTitle: 'Collapse all', - filterDialogNotFilteredLabel: '(Не відфільтровано)', - filterDialogFilterByLabel: 'Фільтрувати за: {filterLabel}', - filterDialogFilterTitle: 'Фільтр', - filterDialogFilterBy: 'Фільтрувати за', - filterDialogConfirmBtnLabel: 'OK', - filterDialogCancelBtnLabel: 'Скасувати', - groupDialogHeader: 'Сгрупувати', - groupDialogGroupOrderHeader: 'Порядок групування', - groupDialogGroupOrderAsc: 'За зростанням', - groupDialogGroupOrderDesc: 'За спаданням', - groupDialogGroupByHeader: 'Групувати за', - groupDialogNotGroupedLabel: '(Не згруповано)', - groupDialogConfirmBtnLabel: 'OK', - groupDialogCancelBtnLabel: 'Скасувати', - sortDialogHeader: 'Сортувати', - sortDialogSortOrderHeader: 'Порядок сортування', - sortDialogSortOrderAsc: 'За зростанням', - sortDialogSortOrderDesc: 'за спаданням', - sortDialogSortByHeader: 'Сортувати за', - sortDialogNotSortedLabel: '(Не відсортовано)', - sortDialogConfirmBtnLabel: 'OK', - sortDialogCancelBtnLabel: 'Скасувати', - selectAllCheckboxLabel: 'Вибрати все', - deselectAllCheckboxLabel: 'Deselect all', - deselectSingleRow: 'Щоб скасувати вибір, натисніть пробіл', - selectSingleRow: 'Щоб вибрати рядок, натисніть пробіл', - deselectSingleRowTitle: 'Клацніть, щоб зняти виділення', - selectSingleRowTitle: 'Клацніть, щоб виділити рядок' - }, - platformThumbnail: { - detailsGotoPreviousButtonTitle: 'Перейти до попереднього', - detailsGotoNextButtonTitle: 'Перейти до наступного', - detailsDialogCloseBtnLabel: 'Закрити', - roleDescription: 'Зображення' - }, - platformUploadCollection: { - moveToTitle: 'Перемістити до', - moveToTitleFolder: 'Папка', - moveToNewFolderBtnLabel: 'Нова папка', - moveToAllFilesSubHeaderLabel: 'Усі файли', - moveToConfirmBtn: 'Перемістити', - moveToCloseBtn: 'Скасувати', - newFolderTitle: 'Нова папка', - newFolderAtRootInputLabel: 'Назва нової папки', - newFolderAtFolderInputLabel: 'Назва нової папки усередині {folderName}', - newFolderInputPlaceholder: 'Введіть назву..', - newFolderInputErrorLabel: - 'Максимально дозволено { count, plural, one {1 символ} few {# символи} other {# символів} }', - newFolderDialogCreateBtnLabel: 'Створити', - newFolderDialogCancelBtnLabel: 'Скасувати', - breadcrumbLabelAllFiles: 'Усі файли', - breadcrumbLabelAllFilesWithTotal: 'Усі файли ({total})', - searchPlaceholder: 'Пошук', - addBtnLabel: 'Додати', - newFolderBtnLabel: 'Нова папка', - moveToBtnLabel: 'Перемістити до', - downloadBtnLabel: 'Завантажити', - updateVersionBtnLabel: 'Оновити версію', - removeBtnLabel: 'Видалити', - folderIconTitle: 'Значок папки', - fileIconTitle: 'Значок файлу', - editFileNameInputPlaceholder: 'Введіть назву', - editFileNameFileAlreadyExistsError: 'Файл з такою назвою вже існує', - editFileNameFolderAlreadyExistsError: 'Папка з такою назвою вже існує', - itemStatusSuccessful: 'Успішно', - itemStatusUnsuccessful: 'Невдало', - uploadNewFileAfterFailAction: 'Виконати', - cancelUploadNewFileAction: 'Скасувати', - itemMenuBtnTitle: 'Більше', - dragDropAreaText: 'Перетягніть файли для завантаження', - noDataText: 'Файлів не знайдено', - noDataDescription: 'Перетягніть файли для завантаження або скористайтеся кнопкою «Додати».', - paginationTotal: 'Показано {from}-{to} із {total}', - resultsPerPage: 'Результатів на сторінці', - messageCreateFailed: 'Не вдалося створити {folderName}.', - messageCreateSuccess: '{folderName} успішно створено.', - messageUpdateVersionFailed: 'Не вдалося оновити версію {folderName}.', - messageUpdateVersionSuccess: 'Версія {folderName} оновлена.', - messageFileRenameFailed: 'Не вдалося перейменувати "{from}" на "{to}."', - messageFileRenameSuccess: '{from}" перейменовано на "{to}".', - folderNamePluralization: '{ foldersCount, plural, one {1 папку} few {# папки} other {# папок} }', - fileNamePluralization: '{ filesCount, plural, one {1 файл} few {# файли} other {# файлів} }', - messageRemoveFoldersAndFilesFailed: `Не вдалося видалити {@@platformUploadCollection.folderNamePluralization} і {@@platformUploadCollection.fileNamePluralization}.`, - messageRemoveFoldersAndFilesSuccess: `{@@platformUploadCollection.folderNamePluralization} і {@@platformUploadCollection.fileNamePluralization} видалено.`, - messageRemoveFoldersFailed: `Не вдалося видалити {@@platformUploadCollection.folderNamePluralization}.`, - messageRemoveFoldersSuccess: `Видалено {@@platformUploadCollection.folderNamePluralization}.`, - messageRemoveFilesFailed: `Не вдалося видалити {@@platformUploadCollection.fileNamePluralization}.`, - messageRemoveFilesSuccess: `Видалено {@@platformUploadCollection.fileNamePluralization}.`, - messageRemoveFileOrFolderFailed: 'Не вдалося видалити {name}.', - messageRemoveFileOrFolderSuccess: '{name} видалено.', - messageMoveFoldersAndFilesFailed: `Не вдалося перемістити {@@platformUploadCollection.folderNamePluralization} і {@@platformUploadCollection.fileNamePluralization} до {to}.`, - messageMoveFoldersAndFilesSuccess: `{@@platformUploadCollection.folderNamePluralization} і {@@platformUploadCollection.fileNamePluralization} переміщено в {to}.`, - messageMoveFoldersFailed: `Не вдалося перемістити {@@platformUploadCollection.folderNamePluralization} до {to}.`, - messageMoveFoldersSuccess: `{@@platformUploadCollection.folderNamePluralization} переміщено до {to}.`, - messageMoveFilesFailed: `Не вдалося перемістити {@@platformUploadCollection.fileNamePluralization} до {to}.`, - messageMoveFilesSuccess: `{@@platformUploadCollection.fileNamePluralization} переміщено до {to}.`, - messageMoveFileOrFolderFailed: 'Не вдалося перемістити {name} до {to}.', - messageMoveFileOrFolderSuccess: '{name} переміщено в {to}.', - messageMoveRootFoldersAndFilesFailed: `Не вдалося перемістити {@@platformUploadCollection.folderNamePluralization} і {@@platformUploadCollection.fileNamePluralization} до всіх файлів.`, - messageMoveRootFoldersAndFilesSuccess: `{@@platformUploadCollection.folderNamePluralization} і {@@platformUploadCollection.fileNamePluralization} переміщено до всіх файлів.`, - messageMoveRootFoldersFailed: `Не вдалося перемістити {@@platformUploadCollection.folderNamePluralization} до всіх файлів.`, - messageMoveRootFoldersSuccess: `{@@platformUploadCollection.folderNamePluralization} переміщено до всіх файлів.`, - messageMoveRootFilesFailed: `Не вдалося перемістити {@@platformUploadCollection.fileNamePluralization} до всіх файлів.`, - messageMoveRootFilesSuccess: `{@@platformUploadCollection.fileNamePluralization} переміщено до всіх файлів.`, - messageMoveRootFileOrFolderFailed: 'Не вдалося перемістити {name} до всіх файлів.', - messageMoveRootFileOrFolderSuccess: '{name} переміщено до всіх файлів.', - messageFileTypeMismatchPlural: - '{filesCount, plural, one {1 файл}, few {# файли}, other {# файлів} } мають неправильний тип. Дозволені типи: {allowedTypes}.', - messageFileTypeMismatchSingular: 'Файл "{fileName}" має неправильний тип. Дозволені типи: {allowedTypes}.', - messageFileSizeExceededPlural: - // eslint-disable-next-line max-len - '{ filesCount, plural, one {1 файл перевищує} few {# файли перевищують} other {# файлів перевищують} } максимальний розмір файлу. Дозволений максимальний розмір файлу: {maxFileSize}.', - messageFileSizeExceededSingular: - 'Файл "{fileName}" перевищує максимальний розмір файлу. Дозволений максимальний розмір файлу: {maxFileSize}.', - messageFileNameLengthExceededPlural: - // eslint-disable-next-line max-len - '{ filesCount, plural, one {1 файл перевищив} few {# файли перевищили} other {# файлів перевищили} } максимальну довжину імені файлу. Дозволена довжина імені файлу: {maxFilenameLength} символів.', - messageFileNameLengthExceededSingular: - 'Назва "{fileName}" перевищує максимальну довжину імені файлу. Дозволена довжина імені файлу: {maxFilenameLength} символів.' - }, - platformWizardGenerator: { - summarySectionEditStep: 'Редагувати' - }, - platformMessagePopover: { - allErrors: 'Всі', - defaultErrors: { - email: 'Значення поля не відповідає формату E-mail', - max: 'Значення поля перевищує максимально допустиме', - maxLength: 'Довжина значення поля перевищує максимально допустиме', - min: 'Значення поля менше мінімально допустимого', - minLength: 'Довжина значення поля менше максимально допустимого', - pattern: 'Поле не відповідає формату', - required: "Обов'язкове поле", - requiredTrue: "Обов'язкове поле" - } - }, - platformVariantManagement: { - manage: 'Управління', - saveAs: 'Зберегти як', - saveView: 'Зберегти Вид', - save: 'Зберегти', - myViews: 'Мої Види', - view: 'Вид', - setAsDefault: 'Встановити за замовчуванням', - public: 'Публічний', - applyAutomatically: 'Застосовувати автоматично', - requiredFieldError: "Обов'язкове поле.", - nameTakenFieldError: "Вид з таким ім'ям вже існує. Введіть інше ім'я.", - cancel: 'Скасувати', - manageViews: 'Управління видами', - markAsFavourite: 'Позначити як обране', - sharing: 'Спільне використання', - default: 'За замовчуванням', - createdBy: 'Створив(ла)', - removeVariant: 'Видалити вид', - search: 'Пошук', - access: { - public: 'Публічне', - private: 'Приватне' - } - }, - platformSelect: { - selectOptionLabel: 'Виберіть опцію' - }, - fnSlider: { - minMaxDetails: 'Мінімальне значення слайдера {min}, максимальне значення {max}', - valueminDetails: 'Поточне значення: {value}', - valuemaxDetails: 'Поточне значення: {value}', - valueNowDetails: 'Поточне значення: {value}' - }, - fnSwitch: { - semanticAcceptLabel: 'Прийняти', - semanticDeclineLabel: 'Відхилити' - }, - coreTree: { - expand: 'Розгорнути вузол', - collapse: 'Згорнути вузол', - noData: 'Немає даних' - } -}; +export const FD_LANGUAGE_UKRAINIAN = loadJson(json); diff --git a/libs/i18n/src/lib/pipes/fd-translate.pipe.spec.ts b/libs/i18n/src/lib/pipes/fd-translate.pipe.spec.ts index 65cdd1a1355..7ff91c10ef8 100644 --- a/libs/i18n/src/lib/pipes/fd-translate.pipe.spec.ts +++ b/libs/i18n/src/lib/pipes/fd-translate.pipe.spec.ts @@ -1,66 +1,115 @@ -import { ChangeDetectorRef, DestroyRef } from '@angular/core'; -import { delay, of } from 'rxjs'; +import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { BehaviorSubject, delay } from 'rxjs'; import { FD_LANGUAGE_ENGLISH } from '../languages'; -import { FdLanguage } from '../models'; +import { FdLanguage, FdLanguageKeyArgs } from '../models'; +import { FD_LANGUAGE } from '../utils/tokens'; import { FdTranslatePipe } from './fd-translate.pipe'; -import { TestBed } from '@angular/core/testing'; + +const lang: FdLanguage = { + ...FD_LANGUAGE_ENGLISH, + platformApprovalFlow: { + ...FD_LANGUAGE_ENGLISH.platformApprovalFlow, + nodeMembersCount: (params) => `${params['count']} members` + } +}; + +@Component({ + template: `{{ testKey | fdTranslate : testArgs }}`, + standalone: true, + imports: [FdTranslatePipe], + changeDetection: ChangeDetectionStrategy.OnPush +}) +class TestComponent { + @Input() testKey: string; + @Input() testArgs: FdLanguageKeyArgs; +} describe('FdTranslate pipe', () => { - let pipe: FdTranslatePipe; - const changeDetectorRefMock = { markForCheck: () => {} } as ChangeDetectorRef; - let destroyRef: DestroyRef; - beforeEach(() => { - TestBed.configureTestingModule({}); - destroyRef = TestBed.inject(DestroyRef); - }); + let lang$: BehaviorSubject; + let testComponentFixture: ComponentFixture; + + function getTranslatedValue(): string { + return testComponentFixture.nativeElement.textContent.trim(); + } + + function setCtx(key: string, args?: FdLanguageKeyArgs): void { + testComponentFixture.componentRef.setInput('testKey', key); + testComponentFixture.componentRef.setInput('testArgs', args); + testComponentFixture.detectChanges(); + } + + function expectValueToBe(v: string): void { + expect(getTranslatedValue()).toBe(v); + } + + const beforeEachTest = (): void => { + lang$ = new BehaviorSubject(lang); + TestBed.configureTestingModule({ + imports: [TestComponent], + providers: [ + { + provide: FD_LANGUAGE, + useValue: lang$ + } + ] + }); + }; + describe('pipe functionality', () => { + beforeEach(async () => { + beforeEachTest(); + await TestBed.compileComponents(); + testComponentFixture = TestBed.createComponent(TestComponent); + }); it("should return value by key, if it's available", () => { - pipe = new FdTranslatePipe(of(FD_LANGUAGE_ENGLISH), destroyRef, changeDetectorRefMock); - expect(pipe.transform('platformApprovalFlow.defaultWatchersLabel')).toBe('Watchers'); - expect(pipe.transform('platformApprovalFlow.nodeMembersCount', { count: 10 })).toBe('10 members'); + setCtx('platformApprovalFlow.defaultWatchersLabel'); + expectValueToBe('Watchers'); + setCtx('platformApprovalFlow.nodeMembersCount', { count: 10 }); + expectValueToBe('10 members'); }); it('should return empty string if value is not found', () => { - pipe = new FdTranslatePipe(of(FD_LANGUAGE_ENGLISH), destroyRef, changeDetectorRefMock); - expect(pipe.transform('wrong')).toBe(''); + setCtx('wrong'); + expectValueToBe(''); }); - it('should work with function values', () => { - const customLang = { + const nodeMembersCount = jest.fn((params) => `${params['count']} function members`); + lang$.next({ ...FD_LANGUAGE_ENGLISH, platformApprovalFlow: { ...FD_LANGUAGE_ENGLISH.platformApprovalFlow, - nodeMembersCount: (params: { count: number }) => `${params.count} function members` + nodeMembersCount } - } as FdLanguage; - const spy = jest.spyOn(customLang.platformApprovalFlow, 'nodeMembersCount'); - pipe = new FdTranslatePipe(of(customLang), destroyRef, changeDetectorRefMock); - expect(pipe.transform('platformApprovalFlow.nodeMembersCount', { count: 15 })).toBe('15 function members'); - expect(spy).toHaveBeenCalledWith({ count: 15 }); - expect(spy).toHaveBeenCalledTimes(1); + }); + setCtx('platformApprovalFlow.nodeMembersCount', { count: 15 }); + expectValueToBe('15 function members'); + expect(nodeMembersCount).toHaveBeenCalledWith({ count: 15 }); + expect(nodeMembersCount).toHaveBeenCalledTimes(1); }); it('should fall back to English dictionary if function value throws', () => { - const customLang = { + const nodeMembersCount = jest.fn(() => { + throw new Error('Oops'); + }); + lang$.next({ ...FD_LANGUAGE_ENGLISH, platformApprovalFlow: { ...FD_LANGUAGE_ENGLISH.platformApprovalFlow, - nodeMembersCount: () => { - throw new Error('Oops'); - } + nodeMembersCount } - } as FdLanguage; - const spy = jest.spyOn(customLang.platformApprovalFlow, 'nodeMembersCount' as any); - pipe = new FdTranslatePipe(of(customLang), destroyRef, changeDetectorRefMock); - expect(pipe.transform('platformApprovalFlow.nodeMembersCount', { count: 15 })).toBe('15 members'); - expect(spy).toHaveBeenCalled(); + }); + setCtx('platformApprovalFlow.nodeMembersCount', { count: 15 }); + expectValueToBe('15 members'); + expect(nodeMembersCount).toHaveBeenCalled(); }); it('should fall back to English dictionary if value was not found', () => { const customLang = { ...FD_LANGUAGE_ENGLISH - } as FdLanguage; + }; delete (customLang).platformApprovalFlow; - pipe = new FdTranslatePipe(of(customLang), destroyRef, changeDetectorRefMock); - expect(pipe.transform('platformApprovalFlow.nodeMembersCount', { count: 15 })).toBe('15 members'); + lang$.next(customLang); + setCtx('platformApprovalFlow.nodeMembersCount', { count: 15 }); + expectValueToBe('15 members'); }); }); @@ -68,22 +117,31 @@ describe('FdTranslate pipe', () => { // cannot use fakeAsync, because rxjs delays are not taken into account with it // https://github.com/angular/angular/issues/44351 const DELAY = 5; - - beforeEach(() => { - pipe = new FdTranslatePipe(of(FD_LANGUAGE_ENGLISH).pipe(delay(DELAY)), destroyRef, changeDetectorRefMock); + beforeEach(async () => { + beforeEachTest(); + TestBed.overrideProvider(FD_LANGUAGE, { + useValue: lang$.pipe(delay(DELAY)) + }); + await TestBed.compileComponents(); + testComponentFixture = TestBed.createComponent(TestComponent); }); it('without params', (done) => { - expect(pipe.transform('platformApprovalFlow.defaultWatchersLabel')).toBe(''); + setCtx('platformApprovalFlow.defaultWatchersLabel'); + expectValueToBe(''); setTimeout(() => { - expect(pipe.transform('platformApprovalFlow.defaultWatchersLabel')).toBe('Watchers'); + testComponentFixture.detectChanges(); + expectValueToBe('Watchers'); done(); }, DELAY + 1); }); + it('with params', (done) => { - expect(pipe.transform('platformApprovalFlow.nodeMembersCount', { count: 10 })).toBe(''); + setCtx('platformApprovalFlow.nodeMembersCount', { count: 10 }); + expectValueToBe(''); setTimeout(() => { - expect(pipe.transform('platformApprovalFlow.nodeMembersCount', { count: 10 })).toBe('10 members'); + testComponentFixture.detectChanges(); + expectValueToBe('10 members'); done(); }, DELAY + 1); }); diff --git a/libs/i18n/src/lib/translations/translations_bg-BG.json b/libs/i18n/src/lib/translations/translations_bg-BG.json new file mode 100644 index 00000000000..64ec6770bbc --- /dev/null +++ b/libs/i18n/src/lib/translations/translations_bg-BG.json @@ -0,0 +1,503 @@ +{ + "coreMultiComboBox.selectAllLabel": "Избери всички ({selectedItems} от {totalItems})", + "coreCarousel.leftNavigationBtnLabel": "Отиди на предишния елемент", + "coreCarousel.rightNavigationBtnLabel": "Отиди на следващия елемент", + "coreDatePicker.dateInputLabel": "Поле за дата", + "coreDatePicker.dateRangeInputLabel": "Поле за дата интервал", + "coreDatePicker.displayCalendarToggleLabel": "Избери дата", + "coreDatePicker.valueStateSuccessMessage": "Състояние Успех", + "coreDatePicker.valueStateInformationMessage": "Състояние Информиране", + "coreDatePicker.valueStateWarningMessage": "Състояние Предупреждение", + "coreDatePicker.valueStateErrorMessage": "Състояние Грешка", + "coreDatetimePicker.datetimeInputLabel": "Поле за дата и час", + "coreDatetimePicker.displayDatetimeToggleLabel": "Покажи/Скрий календар", + "coreDatetimePicker.displayTypeDateLabel": "Дата", + "coreDatetimePicker.displayTypeTimeLabel": "Час", + "coreDatetimePicker.datetimeOkLabel": "Ok", + "coreDatetimePicker.datetimeCancelLabel": "Отмени", + "coreFeedListItem.moreLabel": "Повече", + "coreFeedListItem.lessLabel": "По-малко", + "coreGridList.filterBarCancelButtonTitle": "Отмени", + "coreGridList.listItemStatusAriaLabel": "Артикулът има статус. Статус: {status}.", + "coreGridList.listItemCounterAriaLabel": "Артикулът има { count, plural, one {1 дете} other {# деца} }.", + "coreGridList.listItemButtonDetailsTitle": "Подробности", + "coreGridList.listItemButtonDeleteTitle": "Изтрий", + "coreGridList.listItemStatusContainsErrors": "Съдържа грешки", + "coreGridList.listItemStatusLocked": "Заключен", + "coreGridList.listItemStatusDraft": "Чернова", + "coreMessageStrip.dismissLabel": "Отхвърляне", + "coreMultiInput.multiInputAriaLabel": "Multi Value Input", + "coreMultiInput.tokensCountText": "Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.", + "coreNavigation.mainNavigation": "Main Navigation", + "coreNavigation.navigationPath": "Navigation Path", + "coreNestedList.linkItemAriaLabel": "Елемент от дърво {itemDetails}, {index} от {total}{selectedDescription}", + "coreOverflowLayout.moreItemsButton": "Още { count, plural, one {1 елемент} other {# елемента} }", + "corePagination.pageLabel": "Страница {pageNumber}", + "corePagination.currentPageAriaLabel": "Страница {pageNumber} е активна", + "corePagination.labelBeforeInputMobile": "Страница:", + "corePagination.labelAfterInputMobile": "от {totalCount}", + "corePagination.inputAriaLabel": "Поле за страница, Текуща страница, Page {pageNumber} of {totalCount}", + "corePagination.itemsPerPageLabel": "Резултати на Страница:", + "corePagination.firstLabel": "Първа", + "corePagination.previousLabel": "Предна", + "corePagination.nextLabel": "Следваща", + "corePagination.lastLabel": "Последна", + "corePagination.ariaLabel": "Пагинация", + "corePagination.totalResultsLabel": "{totalCount} резултати", + "coreProductSwitch.ariaLabel": "Продуктов превключвател", + "coreShellbar.collapsedItemMenuLabel": "Collapsed Item Menu", + "coreShellbar.cancel": "Cancel", + "coreShellbar.search": "Search", + "coreSlider.singleMinMaxDetails": "Минималната стойност на плъзгача е {min}, максималната стойност е {max}", + "coreSlider.singleValueminDetails": "Стойността е {value}", + "coreSlider.singleValuemaxDetails": "Стойността е {value}", + "coreSlider.singleValueNowDetails": "Текущата стойност е {value}", + "coreSlider.multipleHandle1MinMaxDetails": "Минималната стойност на плъзгача за обхват е {min}, максималната стойност е {max}", + "coreSlider.multipleHandle1ValueminDetails": "Стойността е {value}", + "coreSlider.multipleHandle1ValuemaxDetails": "Стойността е {value}", + "coreSlider.multipleHandle1ValueNowDetails": "Текущата стойност е {value}", + "coreSlider.multipleHandle2MinMaxDetails": "Минималната стойност на плъзгача за обхват е {min}, максималната стойност е {max}", + "coreSlider.multipleHandle2ValueminDetails": "Стойността е {value}", + "coreSlider.multipleHandle2ValuemaxDetails": "Стойността е {value}", + "coreSlider.multipleHandle2ValueNowDetails": "Текущата стойност е {value}", + "coreSplitButton.expandButtonAriaLabel": "Повече възможности", + "coreSplitButton.arialLabel": "Разделен бутон", + "coreSplitter.paginationItemAriaLabel": "Секция", + "coreStepInput.incrementButtonTitle": "Увеличи", + "coreStepInput.decrementButtonTitle": "Намали", + "coreStepInput.ariaRoleDescription": "Поле за стъпка", + "coreSwitch.semanticAcceptLabel": "Приеми", + "coreSwitch.semanticDeclineLabel": "Отхвърли", + "coreTabs.tabListExpandButtonText": "Повече", + "coreText.moreLabel": "Повече", + "coreText.lessLabel": "По-малко", + "coreTime.componentAriaName": "Избери час", + "coreTime.increaseHoursLabel": "Увеличи часовете", + "coreTime.hoursLabel": "Час", + "coreTime.decreaseHoursLabel": "Намали часовете", + "coreTime.increaseMinutesLabel": "Увеличи минутите", + "coreTime.minutesLabel": "Мин", + "coreTime.decreaseMinutesLabel": "Намали минутите", + "coreTime.increaseSecondsLabel": "Увеличи секундите", + "coreTime.secondsLabel": "Сек", + "coreTime.decreaseSecondsLabel": "Намали секундите", + "coreTime.increasePeriodLabel": "Увеличи интервала", + "coreTime.periodLabel": "Интервал", + "coreTime.decreasePeriodLabel": "Намали интервала", + "coreTime.navigationInstruction": "За да се придвижвате между елементите в този списък, натиснете горната стрелка или долната стрелка. За да превключвате между списъците, натиснете стрелка наляво или стрелка надясно.", + "coreTimePicker.timePickerInputLabel": "Поле за избор на час", + "coreTimePicker.timePickerButtonLabel": "Избери време", + "coreToken.deleteButtonLabel": "Изтриваем", + "coreToken.ariaRoleDescription": "жетон", + "coreTokenizer.moreLabel": "Още { count, plural, one {1 елемент} other {# елемента} }", + "coreUploadCollection.menuOkText": "OK", + "coreUploadCollection.menuCancelText": "Отмени", + "coreUploadCollection.menuEditAriaLabel": "Редактирай", + "coreUploadCollection.menuDeleteAriaLabel": "Изтрий", + "coreUploadCollection.menuOkAriaLabel": "Редактирай", + "coreUploadCollection.menuCancelAriaLabel": "Отмени", + "coreUploadCollection.formItemPlaceholder": "Име на файл", + "coreWizard.ariaLabel": "Помощник", + "coreBreadcrumb.overflowTitleMore": "Повече", + "platformActionBar.backButtonLabel": "Върни Се Обратно", + "platformApprovalFlow.defaultWatchersLabel": "Наблюдатели", + "platformApprovalFlow.defaultTitle": "Процес на одобрение", + "platformApprovalFlow.nextButtonAriaLabel": "Преминете към следващия слайд", + "platformApprovalFlow.prevButtonAriaLabel": "Отидете на предишния слайд", + "platformApprovalFlow.editModeSaveButtonLabel": "Запази", + "platformApprovalFlow.editModeExitButtonLabel": "Излез", + "platformApprovalFlow.emptyTitle": "Започнете да добавяте одобряващи и наблюдатели", + "platformApprovalFlow.emptyHint": "За да добавите одобряващи, щракнете \"Добавете стъпка\". За да добавите наблюдатели, щракнете върху полето Наблюдатели.", + "platformApprovalFlow.addNodeDialogHeaderAddApprovers": "Добавете одобряващи", + "platformApprovalFlow.addNodeDialogHeaderEditApprover": "Редактиране на одобряващия", + "platformApprovalFlow.addNodeDialogHeaderAddApproverTeam": "Потребител/Екип", + "platformApprovalFlow.addNodeDialogHeaderDetail": "Детайл", + "platformApprovalFlow.addNodeDialogNodeType": "Паралелно или последователно", + "platformApprovalFlow.addNodeDialogNodeTypeSerial": "Последователно", + "platformApprovalFlow.addNodeDialogNodeTypeParallel": "Паралелно", + "platformApprovalFlow.addNodeDialogApproverType": "Тип одобряващ", + "platformApprovalFlow.addNodeDialogApproverTypeUser": "Потребител", + "platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone": "Всеки от екипа", + "platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone": "Всички в екипа", + "platformApprovalFlow.addNodeDialogUserOrTeam": "Потребител/Екип", + "platformApprovalFlow.addNodeDialogAddToNext": "Добавете към следващия последователен възел", + "platformApprovalFlow.addNodeDialogDueDate": "Краен срок", + "platformApprovalFlow.addNodeSearchPlaceholder": "Търси", + "platformApprovalFlow.addNodeAddActionBtnLabel": "Добаве", + "platformApprovalFlow.addNodeCancelActionBtnLabel": "Отмени", + "platformApprovalFlow.addNodeSelectApproverActionBtnLabel": "Избери", + "platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel": "Отмени", + "platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel": "Затвори", + "platformApprovalFlow.userDetailsHeader": "Детайл", + "platformApprovalFlow.userDetailsSendReminderBtnLabel": "Изпрати напомняне", + "platformApprovalFlow.userDetailsCancelBtnLabel": "Отмени", + "platformApprovalFlow.messagesApproverAddedSuccess": "Добавен е 1 одобряващ", + "platformApprovalFlow.messagesTeamAddedSuccess": "1 екип е добавен", + "platformApprovalFlow.messagesNodeEdited": "1 одобряващ е редактиран", + "platformApprovalFlow.messagesNodeRemovedSingular": "1 одобряващ е премахнат", + "platformApprovalFlow.messagesNodeRemovedPlural": "Одобряващите са премахнати", + "platformApprovalFlow.messagesTeamRemoved": "1 отбор е премахнат", + "platformApprovalFlow.messagesErrorBuildGraph": "Възникна грешка при опит за изграждане на графиката. Проверете първоначалните данни.", + "platformApprovalFlow.messagesUndoAction": "Отмяна", + "platformApprovalFlow.nodeMembersCount": "{ count, plural, one {1 член} other {# членове} }", + "platformApprovalFlow.nodeVariousTeams": "Различни екипи", + "platformApprovalFlow.nodeStatusDueToday": "Предстои днес", + "platformApprovalFlow.nodeStatusDueInXDays": "Предстои след { count, plural, one {1 ден} other {# дни} }", + "platformApprovalFlow.nodeStatusXDaysOverdue": "{ count, plural, one {1 ден} other {# дни} } просрочие", + "platformApprovalFlow.nodeActionAddApproversBefore": "Добавете одобряващи преди", + "platformApprovalFlow.nodeActionAddApproversAfter": "Добавете одобряващи след това", + "platformApprovalFlow.nodeActionAddApproversParallel": "Добавете паралелни одобряващи", + "platformApprovalFlow.nodeActionEditApprover": "Редактиране на одобряващия", + "platformApprovalFlow.nodeActionRemove": "Изтрий", + "platformApprovalFlow.selectTypeDialogMoveApproverAs": "Move approver as", + "platformApprovalFlow.selectTypeDialogParallelOrSerial": "Паралелно или последователно", + "platformApprovalFlow.selectTypeDialogNodeTypeParallel": "Паралелен одобряващ", + "platformApprovalFlow.selectTypeDialogNodeTypeSerial": "Последователен одобряващ", + "platformApprovalFlow.selectTypeDialogConfirmButton": "Потвърди", + "platformApprovalFlow.selectTypeDialogCancelButton": "Отмени", + "platformApprovalFlow.toolbarAddStepButton": "Добавете стъпка", + "platformApprovalFlow.toolbarEditButton": "Редактирай", + "platformApprovalFlow.toolbarAddApproversBefore": "Добавете одобряващи преди", + "platformApprovalFlow.toolbarAddApproversAfter": "Добавете одобряващи след това", + "platformApprovalFlow.toolbarAddApproversParallel": "Добавете паралелни одобряващи", + "platformApprovalFlow.toolbarRemove": "Изтрий", + "platformApprovalFlow.toolbarEditApprover": "Редактирай на одобряващия", + "platformApprovalFlow.watchersInputPlaceholder": "Търси тук...", + "platformApprovalFlow.userListSelectedItemsCountSingular": "Избран е 1 елемент", + "platformApprovalFlow.userListSelectedItemsCountPlural": "Избрани са {count} елементи", + "platformApprovalFlow.statusApproved": "approved", + "platformApprovalFlow.statusRejected": "rejected", + "platformApprovalFlow.statusInProgress": "in progress", + "platformApprovalFlow.statusNotStarted": "not started", + "platformFeedInput.userTitle": "User", + "platformVHD.selectionBarLabel": "Избрани и кондиционирани артикули", + "platformVHD.selectedAndConditionLabel": "Избрани артикули и условия", + "platformVHD.footerClearSelectedTitle": "изчистете избраните елементи", + "platformVHD.footerClearSelectedAriaLabel": "изчистете избраните елементи", + "platformVHD.searchButtonLabel": "Търси", + "platformVHD.successButtonLabel": "ОК", + "platformVHD.cancelButtonLabel": "Отмени", + "platformVHD.selectedEmptyLabel": "Няма избрани елементи или условия", + "platformVHD.searchPlaceholder": "Потърси", + "platformVHD.searchAdvancedSearchLabel": "Филтри", + "platformVHD.searchShowAdvancedSearchLabel": "Показване на филтри", + "platformVHD.searchHideAdvancedSearchLabel": "Скриване на филтрите", + "platformVHD.searchShowAllAdvancedSearchLabel": "Показване на всички филтри", + "platformVHD.searchHideAllAdvancedSearchLabel": "Скриване на всички филтри", + "platformVHD.selectTabDisplayCountLabel": "({count}) артикули", + "platformVHD.selectTabMoreBtnLabel": "Повече", + "platformVHD.selectTabCountHiddenA11yLabel": "съдържа {rowCount} ред(а) и {colCount} колонa/и", + "platformVHD.selectMobileTabBackBtnTitle": "Обратно", + "platformVHD.selectMobileTabBtnOpenDialogLabel": "Отвори диалоговия прозорец", + "platformVHD.selectMobileTabTitle": "{title} раздел", + "platformVHD.selectMobileConditionEmpty": "Празен", + "platformVHD.defineConditionTitle": "Продукт", + "platformVHD.defineConditionSelectedValueHiddenA11yLabel": "избрана стойност {value}", + "platformVHD.defineConditionConditionsGroupHeaderInclude": "Включи", + "platformVHD.defineConditionConditionsGroupHeaderExclude": "Изключи", + "platformVHD.defineConditionFromPlaceholder": "от", + "platformVHD.defineConditionToPlaceholder": "до", + "platformVHD.defineConditionValuePlaceholder": "стойност", + "platformVHD.defineConditionRemoveConditionButtonTitle": "Премахни Условие", + "platformVHD.defineConditionAddConditionButtonLabel": "Добави", + "platformVHD.defineConditionAddConditionButtonTitle": "Добави Условие", + "platformVHD.defineConditionConditionStrategyLabelContains": "съдържа", + "platformVHD.defineConditionConditionStrategyLabelEqualTo": "равно на", + "platformVHD.defineConditionConditionStrategyLabelBetween": "между", + "platformVHD.defineConditionConditionStrategyLabelStartsWith": "започна с", + "platformVHD.defineConditionConditionStrategyLabelEndsWith": "завършва с", + "platformVHD.defineConditionConditionStrategyLabelLessThan": "по-малко от", + "platformVHD.defineConditionConditionStrategyLabelLessThanEqual": "по-малко или равно от", + "platformVHD.defineConditionConditionStrategyLabelGreaterThan": "по-голямо от", + "platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual": "по-голямо или равно от", + "platformVHD.defineConditionConditionStrategyLabelEmpty": "празно", + "platformVHD.defineConditionConditionStrategyLabelNotEqualTo": "не е равно на", + "platformVHD.defineConditionConditionStrategyLabelNotEmpty": "не празно", + "platformVHD.defineConditionMaxCountError": "Въведи стойност с не повече от { count, plural, one {1 символ} other {# символа} }", + "platformVHD.selectTabTitle": "Избери от списъка", + "platformVHD.searchTableEmptyMessage": "Use the search to get results", + "platformVHD.defineTabTitle": "Дефиниране на условия", + "platformCombobox.countListResultsSingular": "1 елемент от списъка с резултати", + "platformCombobox.countListResultsPlural": "{count} елемента от списъка с резултати", + "platformMultiCombobox.inputGlyphAriaLabel": "Избери Опции", + "platformMultiCombobox.inputIconTitle": "Избери Опции", + "platformMultiCombobox.mobileShowAllItemsButton": "Покажи всички елементи", + "platformMultiCombobox.mobileShowSelectedItemsButton": "Покажи избраните елементи", + "platformTextarea.counterMessageCharactersOverTheLimitSingular": "1 символ над ограничението", + "platformTextarea.counterMessageCharactersOverTheLimitPlural": "{count} символи над ограничението", + "platformTextarea.counterMessageCharactersRemainingSingular": "Остава 1 символ", + "platformTextarea.counterMessageCharactersRemainingPlural": "Остават {count} символи", + "platformLink.roleDescriptionWithMedia": "Медия: {media}", + "platformList.loadingAriaLabel": "зареждане", + "platformObjectListItem.detailsActionAriaLabel": "детайл", + "platformObjectListItem.deleteActionAriaLabel": "изтрий", + "platformStandardListItem.detailsActionAriaLabel": "детайл", + "platformStandardListItem.deleteActionAriaLabel": "изтрий", + "platformSearchField.clearButtonTitle": "Изчисти", + "platformSearchField.submitButtonTitle": "Търси", + "platformSearchField.searchInputLabel": "Търси", + "platformSearchField.synchronizeButtonTitle": "Синхронизирай", + "platformSearchField.searchSuggestionMessage": "{ count, plural, one {Намерено е 1 предложение} other {Намерени са # предложения} }.", + "platformSearchField.searchSuggestionNavigateMessage": "използвайте стрелки нагоре и надолу за навигация", + "platformSmartFilterBar.searchPlaceholder": "Търси", + "platformSmartFilterBar.submitButtonLabel": "Търси", + "platformSmartFilterBar.filtersButtonLabel": "Филтри ({filtersCount})", + "platformSmartFilterBar.showFiltersButtonLabel": "Покажи филтрите", + "platformSmartFilterBar.hideFiltersButtonLabel": "Скрий филтрите", + "platformSmartFilterBar.defineConditionsRemoveConditionButtonTitle": "Премахни Условие", + "platformSmartFilterBar.defineConditionsAddConditionButtonLabel": "Добави Условие", + "platformSmartFilterBar.defineConditionsSubmitButtonLabel": "Търси", + "platformSmartFilterBar.defineConditionsCancelButton": "Отмени", + "platformSmartFilterBar.selectFiltersHeader": "Filters", + "platformSmartFilterBar.selectFiltersAvailableFiltersText": "Налични филтри", + "platformSmartFilterBar.selectFiltersFilterColumnLabel": "Филтър", + "platformSmartFilterBar.selectFiltersActiveColumnLabel": "Активни", + "platformSmartFilterBar.selectFiltersSubmitButtonLabel": "Филтрирай", + "platformSmartFilterBar.selectFiltersCancelButton": "Отмени", + "platformSmartFilterBar.filterConditionContains": "съдържа", + "platformSmartFilterBar.filterConditionEqualTo": "равно на", + "platformSmartFilterBar.filterConditionBetween": "между", + "platformSmartFilterBar.filterConditionBeginsWith": "започна с", + "platformSmartFilterBar.filterConditionEndsWith": "завършва с", + "platformSmartFilterBar.filterConditionLessThan": "по-малко от", + "platformSmartFilterBar.filterConditionLessThanOrEqualTo": "по-малко или равно", + "platformSmartFilterBar.filterConditionGreaterThan": "по-голямо от", + "platformSmartFilterBar.filterConditionGreaterThanOrEqualTo": "по-голямо или равно от", + "platformSmartFilterBar.filterConditionAfter": "след", + "platformSmartFilterBar.filterConditionOnOrAfter": "равно или повече", + "platformSmartFilterBar.filterConditionBefore": "преди", + "platformSmartFilterBar.filterConditionBeforeOrOn": "до или равно", + "platformSmartFilterBar.filterConditionValuePlaceholder": "стойност", + "platformSmartFilterBar.filterConditionValueFromPlaceholder": "от", + "platformSmartFilterBar.filterConditionValueToPlaceholder": "до", + "platformSmartFilterBar.settingsCategoryAll": "Всички", + "platformSmartFilterBar.settingsCategoryVisible": "Видими", + "platformSmartFilterBar.settingsCategoryActive": "Активни", + "platformSmartFilterBar.settingsCategoryVisibleAndActive": "Видими и Активни", + "platformSmartFilterBar.settingsCategoryMandatory": "Задължителни", + "platformSmartFilterBar.manageFieldConditions": "Manage field conditions", + "platformSmartFilterBar.refreshButtonAriaLabel": "Refresh", + "platformTable.headerMenuSortAsc": "Сортирай Възходящо", + "platformTable.headerMenuSortDesc": "Сортирай Нисходящо", + "platformTable.headerMenuGroup": "Групирай", + "platformTable.headerMenuFreeze": "Замрази", + "platformTable.headerMenuEndFreeze": "Freeze to End", + "platformTable.headerMenuUnfreeze": "Размрази", + "platformTable.headerMenuFilter": "Филтър", + "platformTable.defaultEmptyMessage": "Няма намерени данни", + "platformTable.emptyCell": "Празна", + "platformTable.noVisibleColumnsMessage": "В момента в таблицата няма видими колони. Моля, изберете нужните колони в настройките на таблицата.", + "platformTable.resetChangesButtonLabel": "Нулиране", + "platformTable.editableCellNumberPlaceholder": "Въведи стойност", + "platformTable.editableCellDatePlaceholder": "Въведи стойност", + "platformTable.editableCellStringPlaceholder": "Въведи стойност", + "platformTable.P13ColumnsDialogHeader": "Колони", + "platformTable.P13ColumnsDialogSearchPlaceholder": "Търси", + "platformTable.P13ColumnsDialogsShowSelected": "Покажи избраните", + "platformTable.P13ColumnsDialogShowAll": "Покажи всички", + "platformTable.P13ColumnsDialogSelectAll": "Покажи всички ({selectedColumnsCount}/{selectableColumnsCount})", + "platformTable.P13ColumnsDialogConfirmationBtnLabel": "OK", + "platformTable.P13ColumnsDialogCancelBtnLabel": "Отмени", + "platformTable.P13ColumnsDialogMoveToTopBtn": "Измести най-отгоре", + "platformTable.P13ColumnsDialogMoveUpBtn": "Измести нагоре", + "platformTable.P13ColumnsDialogMoveDownBtn": "Измести надолу", + "platformTable.P13ColumnsDialogMoveToBottomBtn": "Измести най-отдолу", + "platformTable.P13FilterStrategyLabelBetween": "между", + "platformTable.P13FilterStrategyLabelContains": "съдържа", + "platformTable.P13FilterStrategyLabelBeginsWith": "започва с", + "platformTable.P13FilterStrategyLabelEndsWith": "завършва с", + "platformTable.P13FilterStrategyLabelEqualTo": "равно на", + "platformTable.P13FilterStrategyLabelGreaterThan": "по-голямо от", + "platformTable.P13FilterStrategyLabelGreaterThanOrEqualTo": "по-голямо или равно от", + "platformTable.P13FilterStrategyLabelLessThan": "по-малко от", + "platformTable.P13FilterStrategyLabelLessThanOrEqualTo": "по-малко или равно от", + "platformTable.P13FilterStrategyLabelAfter": "след", + "platformTable.P13FilterStrategyLabelOnOrAfter": "равно или повече", + "platformTable.P13FilterStrategyLabelBefore": "преди", + "platformTable.P13FilterStrategyLabelBeforeOrOn": "до или равно", + "platformTable.P13FilterStrategyLabelNotDefined": "Недефинирано", + "platformTable.P13FilterBooleanOptionNotDefined": " ", + "platformTable.P13FilterBooleanOptionTrue": "Да", + "platformTable.P13FilterBooleanOptionFalse": "Не", + "platformTable.P13FilterDialogHeader": "Филтрирано от", + "platformTable.P13FilterDialogIncludePanelTitleWithCount": "Добави ({count})", + "platformTable.P13FilterDialogIncludePanelTitleWithoutCount": "Добави", + "platformTable.P13FilterDialogExcludePanelTitleWithCount": "Изключи ({count})", + "platformTable.P13FilterDialogExcludePanelTitleWithoutCount": "Exclude", + "platformTable.P13FilterDialogRemoveFilterBtnTitle": "Премахни Филтър", + "platformTable.P13FilterDialoAddFilterBtnTitle": "Добави Филтър", + "platformTable.P13FilterDialogConfirmationBtnLabel": "OK", + "platformTable.P13FilterDialogCancelBtnLabel": "Отмени", + "platformTable.P13GroupDialogHeader": "Групирай", + "platformTable.P13GroupDialogNoneSelectedColumnSelectPlaceholder": "(нито един)", + "platformTable.P13GroupDialogShowFieldAsColumnCheckboxLabel": "Show Field as Column", + "platformTable.P13GroupDialogRemoveGroupBtnTitle": "Премахни", + "platformTable.P13GroupDialogAddNewGroupBtnTitle": "Добави Нова", + "platformTable.P13GroupDialogConfirmationBtnLabel": "OK", + "platformTable.P13GroupDialogCancelBtnLabel": "Отмени", + "platformTable.P13SortDialogHeader": "Сортирай", + "platformTable.P13SortDialogNoneSelectedColumn": "(нито един)", + "platformTable.P13SortDialogNoneSelectedSorting": "(нито един)", + "platformTable.P13SortDialogSortOrderSelectOptionAsc": "Възходящ", + "platformTable.P13SortDialogSortOrderSelectOptionDesc": "Низходящ", + "platformTable.P13SortDialogRemoveSortBtnTitle": "Премахни", + "platformTable.P13SortDialogAddNewSortBtnTitle": "Добави Ново", + "platformTable.P13SortDialogConfirmationBtnLabel": "OK", + "platformTable.P13SortDialogCancelBtnLabel": "Отмени", + "platformTable.toolbarSearchPlaceholder": "Търси", + "platformTable.toolbarActionCreateButtonLabel": "Създай", + "platformTable.toolbarActionSaveButtonLabel": "Запиши", + "platformTable.toolbarActionCancelButtonLabel": "Отмени", + "platformTable.toolbarActionSortButtonTitle": "Сортирай", + "platformTable.toolbarActionFilterButtonTitle": "Филтрирай", + "platformTable.toolbarActionGroupButtonTitle": "Групирай", + "platformTable.toolbarActionColumnsButtonTitle": "Колони", + "platformTable.toolbarActionExpandAllButtonTitle": "Expand all", + "platformTable.toolbarActionCollapseAllButtonTitle": "Collapse all", + "platformTable.filterDialogNotFilteredLabel": "(Нефилтрирано)", + "platformTable.filterDialogFilterByLabel": "Филтрирано по: {filterLabel}", + "platformTable.filterDialogFilterTitle": "Филтър", + "platformTable.filterDialogFilterBy": "Филтрирано по", + "platformTable.filterDialogConfirmBtnLabel": "OK", + "platformTable.filterDialogCancelBtnLabel": "Отмени", + "platformTable.groupDialogHeader": "Група", + "platformTable.groupDialogGroupOrderHeader": "Ред на групиране", + "platformTable.groupDialogGroupOrderAsc": "Възходяща", + "platformTable.groupDialogGroupOrderDesc": "Низходяща", + "platformTable.groupDialogGroupByHeader": "Групирано по", + "platformTable.groupDialogNotGroupedLabel": "(Негрупирано)", + "platformTable.groupDialogConfirmBtnLabel": "OK", + "platformTable.groupDialogCancelBtnLabel": "Отмени", + "platformTable.sortDialogHeader": "Сортирай", + "platformTable.sortDialogSortOrderHeader": "Сортирано", + "platformTable.sortDialogSortOrderAsc": "Възходяща", + "platformTable.sortDialogSortOrderDesc": "Низходяща", + "platformTable.sortDialogSortByHeader": "Сортирай по", + "platformTable.sortDialogNotSortedLabel": "(Несортирано)", + "platformTable.sortDialogConfirmBtnLabel": "OK", + "platformTable.sortDialogCancelBtnLabel": "Отмени", + "platformTable.selectAllCheckboxLabel": "Select all", + "platformTable.deselectAllCheckboxLabel": "Deselect all", + "platformTable.deselectSingleRow": "To deselect row, press SPACEBAR", + "platformTable.selectSingleRow": "To select row, press SPACEBAR", + "platformTable.deselectSingleRowTitle": "Click to deselect", + "platformTable.selectSingleRowTitle": "Click to select", + "platformThumbnail.detailsGotoPreviousButtonTitle": "Отиди на предишнита", + "platformThumbnail.detailsGotoNextButtonTitle": "Отиди на следващата", + "platformThumbnail.detailsDialogCloseBtnLabel": "Затвори", + "platformThumbnail.roleDescription": "Картинка", + "platformUploadCollection.moveToTitle": "Премести в", + "platformUploadCollection.moveToTitleFolder": "Папка", + "platformUploadCollection.moveToNewFolderBtnLabel": "Нова папка", + "platformUploadCollection.moveToAllFilesSubHeaderLabel": "Всички файлове", + "platformUploadCollection.moveToConfirmBtn": "Премести", + "platformUploadCollection.moveToCloseBtn": "Отмени", + "platformUploadCollection.newFolderTitle": "Нова папка", + "platformUploadCollection.newFolderAtRootInputLabel": "Име на новата папка", + "platformUploadCollection.newFolderAtFolderInputLabel": "Име на новата папка вътре в {folderName}", + "platformUploadCollection.newFolderInputPlaceholder": "Пиши тук...", + "platformUploadCollection.newFolderInputErrorLabel": "Максимум {count} символ(а) позволени", + "platformUploadCollection.newFolderDialogCreateBtnLabel": "Създай", + "platformUploadCollection.newFolderDialogCancelBtnLabel": "Отмени", + "platformUploadCollection.breadcrumbLabelAllFiles": "Всички файлове", + "platformUploadCollection.breadcrumbLabelAllFilesWithTotal": "Всички файлове ({total})", + "platformUploadCollection.searchPlaceholder": "Търси", + "platformUploadCollection.addBtnLabel": "Добави", + "platformUploadCollection.newFolderBtnLabel": "Нова папка", + "platformUploadCollection.moveToBtnLabel": "Премести в", + "platformUploadCollection.downloadBtnLabel": "Изтегли", + "platformUploadCollection.updateVersionBtnLabel": "Актуализирай версията", + "platformUploadCollection.removeBtnLabel": "Премахни", + "platformUploadCollection.folderIconTitle": "Икона на папка", + "platformUploadCollection.fileIconTitle": "Икона на файл", + "platformUploadCollection.editFileNameInputPlaceholder": "Въведи име", + "platformUploadCollection.editFileNameFileAlreadyExistsError": "Файл с това име вече съществува", + "platformUploadCollection.editFileNameFolderAlreadyExistsError": "Папка с това име вече съществува", + "platformUploadCollection.itemStatusSuccessful": "Успешено", + "platformUploadCollection.itemStatusUnsuccessful": "Неуспешно", + "platformUploadCollection.uploadNewFileAfterFailAction": "Изпълни", + "platformUploadCollection.cancelUploadNewFileAction": "Отмени", + "platformUploadCollection.itemMenuBtnTitle": "Повече", + "platformUploadCollection.dragDropAreaText": "Плъзнете файлове за качване", + "platformUploadCollection.noDataText": "Няма намерени файлове", + "platformUploadCollection.noDataDescription": "Пуснете файлове за качване или използвайте бутона „Добави“.", + "platformUploadCollection.paginationTotal": "Показване {from}-{to} от {total}", + "platformUploadCollection.resultsPerPage": "Резултати на страница", + "platformUploadCollection.messageCreateFailed": "Неуспешно създадена {folderName}.", + "platformUploadCollection.messageCreateSuccess": "{folderName} е създаден.", + "platformUploadCollection.messageUpdateVersionFailed": "Неуспешно актуализиране на версията на {folderName}.", + "platformUploadCollection.messageUpdateVersionSuccess": "Версията на {folderName} е актуализирана.", + "platformUploadCollection.messageFileRenameFailed": "Неуспешно преименуване от \"{from}\" на \"{to}.\"", + "platformUploadCollection.messageFileRenameSuccess": "\"{from}\" беще преименуван на \"{to}\".", + "platformUploadCollection.messageRemoveFoldersAndFilesFailed": "Неуспешно премахване на {foldersCount} папки и {filesCount} файлове.", + "platformUploadCollection.messageRemoveFoldersAndFilesSuccess": "{foldersCount} папки и {filesCount} файлове бяха изтрити.", + "platformUploadCollection.messageRemoveFoldersFailed": "Неуспешно премахване на {foldersCount} папки.", + "platformUploadCollection.messageRemoveFoldersSuccess": "{foldersCount} папки са премахнати.", + "platformUploadCollection.messageRemoveFilesFailed": "Неуспешно премахване на {filesCount} файлове.", + "platformUploadCollection.messageRemoveFilesSuccess": "{filesCount} файлове са премахнати.", + "platformUploadCollection.messageRemoveFileOrFolderFailed": "Неуспешно премахване на {name}.", + "platformUploadCollection.messageRemoveFileOrFolderSuccess": "{name} беше изтрита.", + "platformUploadCollection.messageMoveFoldersAndFilesFailed": "Неуспешно преместване {foldersCount} папки и {filesCount} файлове в {to}.", + "platformUploadCollection.messageMoveFoldersAndFilesSuccess": "{foldersCount} папки и {filesCount} файлове са преместени в {to}.", + "platformUploadCollection.messageMoveFoldersFailed": "Неуспешно преместване {foldersCount} папки в {to}.", + "platformUploadCollection.messageMoveFoldersSuccess": "{foldersCount} папки беше преместена в {to}.", + "platformUploadCollection.messageMoveFilesFailed": "Неуспешно преместване {filesCount} файлове в {to}.", + "platformUploadCollection.messageMoveFilesSuccess": "{filesCount} файлове бяха преместени в {to}.", + "platformUploadCollection.messageMoveFileOrFolderFailed": "Неуспешно преместване {name} в {to}.", + "platformUploadCollection.messageMoveFileOrFolderSuccess": "{name} е изместен(а) в {to}.", + "platformUploadCollection.messageMoveRootFoldersAndFilesFailed": "Неуспешно преместване {foldersCount} папки и {filesCount} файлове от всички файлове.", + "platformUploadCollection.messageMoveRootFoldersAndFilesSuccess": "{foldersCount} папки and {filesCount} файлове успешно преместени.", + "platformUploadCollection.messageMoveRootFoldersFailed": "Неуспешно преместване {foldersCount} папки за всички файлове.", + "platformUploadCollection.messageMoveRootFoldersSuccess": "{foldersCount} папки бяха преместени за всички файлове.", + "platformUploadCollection.messageMoveRootFilesFailed": "Неуспешно преместване {filesCount} файлове за всички файлове.", + "platformUploadCollection.messageMoveRootFilesSuccess": "{filesCount} файлове бяха изместени за всички файлове.", + "platformUploadCollection.messageMoveRootFileOrFolderFailed": "Неуспешно преместване {name} за всички файлове.", + "platformUploadCollection.messageMoveRootFileOrFolderSuccess": "{name} е изместен за всички файлове.", + "platformUploadCollection.messageFileTypeMismatchPlural": "{filesCount} файлове имат грешно разширение. Позволени разширения: {allowedTypes}.", + "platformUploadCollection.messageFileTypeMismatchSingular": "Файлът \"{fileName}\" има грешно разширение. Позволени разширения: {allowedTypes}.", + "platformUploadCollection.messageFileSizeExceededPlural": "{filesCount} файлове надвишават максималната големина на файла. Позволен максимален размер на файла: {maxFileSize}.", + "platformUploadCollection.messageFileSizeExceededSingular": "Файлът \"{fileName}\" надвишава максималната големина на файла. Позволен максимален размер на файла: {maxFileSize}.", + "platformUploadCollection.messageFileNameLengthExceededPlural": "{filesCount} файлове надвишават максималната дължина на името на файла. Позволена дължина на името на файла: {maxFilenameLength} символа.", + "platformUploadCollection.messageFileNameLengthExceededSingular": "Името \"{fileName}\" надвишава максималната дължина на името на файла. Позволена дължина на името на файла: {maxFilenameLength} символа.", + "platformWizardGenerator.summarySectionEditStep": "Редактирай", + "platformMessagePopover.allErrors": "All", + "platformMessagePopover.defaultErrors.email": "Email is invalid", + "platformMessagePopover.defaultErrors.max": "The field exceeds maximum value", + "platformMessagePopover.defaultErrors.maxLength": "The field exceeds maximum length", + "platformMessagePopover.defaultErrors.min": "The field value is less than allowed", + "platformMessagePopover.defaultErrors.minLength": "The field length is less than allowed", + "platformMessagePopover.defaultErrors.pattern": "The field value is invalid", + "platformMessagePopover.defaultErrors.required": "The field is mandatory", + "platformMessagePopover.defaultErrors.requiredTrue": "The field is mandatory", + "platformVariantManagement.manage": "Manage", + "platformVariantManagement.saveAs": "Save as", + "platformVariantManagement.saveView": "Save View", + "platformVariantManagement.save": "Save", + "platformVariantManagement.myViews": "My Views", + "platformVariantManagement.view": "View", + "platformVariantManagement.setAsDefault": "Set as Default", + "platformVariantManagement.public": "Public", + "platformVariantManagement.applyAutomatically": "Apply Automatically", + "platformVariantManagement.requiredFieldError": "This field is required.", + "platformVariantManagement.nameTakenFieldError": "Variant with such name already exists. Please chose a different name.", + "platformVariantManagement.cancel": "Cancel", + "platformVariantManagement.manageViews": "Manage Views", + "platformVariantManagement.markAsFavourite": "Mark as Favourite", + "platformVariantManagement.sharing": "Sharing", + "platformVariantManagement.default": "Default", + "platformVariantManagement.createdBy": "Created By", + "platformVariantManagement.removeVariant": "Remove View", + "platformVariantManagement.search": "Search", + "platformVariantManagement.access.public": "Public", + "platformVariantManagement.access.private": "Private", + "platformSelect.selectOptionLabel": "Изберете опция", + "fnSlider.minMaxDetails": "Минималната стойност на плъзгача е {min}, максималната стойност е {max}", + "fnSlider.valueminDetails": "Стойността е {value}", + "fnSlider.valuemaxDetails": "Стойността е {value}", + "fnSlider.valueNowDetails": "Текущата стойност е {value}", + "fnSwitch.semanticAcceptLabel": "Приеми", + "fnSwitch.semanticDeclineLabel": "Отхвърли", + "coreTree.expand": "Expand node", + "coreTree.collapse": "Collapse node", + "coreTree.noData": "No data" +} diff --git a/libs/i18n/src/lib/translations/translations_cs-CZ.json b/libs/i18n/src/lib/translations/translations_cs-CZ.json new file mode 100644 index 00000000000..3d4019a206a --- /dev/null +++ b/libs/i18n/src/lib/translations/translations_cs-CZ.json @@ -0,0 +1,503 @@ +{ + "coreMultiComboBox.selectAllLabel": "Vybrat vše ({selectedItems} z {totalItems})", + "coreCarousel.leftNavigationBtnLabel": "Přejít na předchozí položku", + "coreCarousel.rightNavigationBtnLabel": "Přejít na další položku", + "coreDatePicker.dateInputLabel": "Date input", + "coreDatePicker.dateRangeInputLabel": "Date range input", + "coreDatePicker.displayCalendarToggleLabel": "Otevřete výběr", + "coreDatePicker.valueStateSuccessMessage": "Úspěšný stav hodnoty", + "coreDatePicker.valueStateInformationMessage": "Informativní stav hodnoty", + "coreDatePicker.valueStateWarningMessage": "Varovný stav hodnoty", + "coreDatePicker.valueStateErrorMessage": "Chybný stav hodnoty", + "coreDatetimePicker.datetimeInputLabel": "Datetime input", + "coreDatetimePicker.displayDatetimeToggleLabel": "Přepínač zobrazení kalendáře", + "coreDatetimePicker.displayTypeDateLabel": "Datum", + "coreDatetimePicker.displayTypeTimeLabel": "Čas", + "coreDatetimePicker.datetimeOkLabel": "Ok", + "coreDatetimePicker.datetimeCancelLabel": "Zrušit", + "coreFeedListItem.moreLabel": "Více", + "coreFeedListItem.lessLabel": "Méně", + "coreGridList.filterBarCancelButtonTitle": "Zrušit", + "coreGridList.listItemStatusAriaLabel": "Položka má stav. Stav: {status}", + "coreGridList.listItemCounterAriaLabel": "Položka má {count} potomků.", + "coreGridList.listItemButtonDetailsTitle": "Podrobnosti", + "coreGridList.listItemButtonDeleteTitle": "Vymazat", + "coreGridList.listItemStatusContainsErrors": "Obsahuje chyby", + "coreGridList.listItemStatusLocked": "Zamčený", + "coreGridList.listItemStatusDraft": "Koncept", + "coreMessageStrip.dismissLabel": "Zrušit", + "coreMultiInput.multiInputAriaLabel": "Multi Value Input", + "coreMultiInput.tokensCountText": "Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.", + "coreNavigation.mainNavigation": "Main Navigation", + "coreNavigation.navigationPath": "Navigation Path", + "coreNestedList.linkItemAriaLabel": "Položka stromu {itemDetails}, {index} z {total}{selectedDescription}", + "coreOverflowLayout.moreItemsButton": "{count} více", + "corePagination.pageLabel": "Strana {pageNumber}", + "corePagination.currentPageAriaLabel": "Stránka {pageNumber} je aktuální stránka", + "corePagination.labelBeforeInputMobile": "Strana:", + "corePagination.labelAfterInputMobile": "z {totalCount}", + "corePagination.inputAriaLabel": "Vstup stránky, aktuální stránka, stránka {pageNumber} z {totalCount}", + "corePagination.itemsPerPageLabel": "Výsledky na stránku:", + "corePagination.firstLabel": "První", + "corePagination.previousLabel": "Předchozí", + "corePagination.nextLabel": "Další", + "corePagination.lastLabel": "Poslední", + "corePagination.ariaLabel": "Stránkování", + "corePagination.totalResultsLabel": "{totalCount} Výsledky", + "coreProductSwitch.ariaLabel": "Přepínač produktu", + "coreShellbar.collapsedItemMenuLabel": "Nabídka sbalených položek", + "coreShellbar.cancel": "Cancel", + "coreShellbar.search": "Search", + "coreSlider.singleMinMaxDetails": "Minimální hodnota posuvníku je {min}, maximální hodnota je {max}", + "coreSlider.singleValueminDetails": "Hodnota je {value}", + "coreSlider.singleValuemaxDetails": "Hodnota je {value}", + "coreSlider.singleValueNowDetails": "Aktuální hodnota je {value}", + "coreSlider.multipleHandle1MinMaxDetails": "Minimální hodnota posuvníku rozsahu je {min}, maximální hodnota je {max}", + "coreSlider.multipleHandle1ValueminDetails": "Hodnota je {value}", + "coreSlider.multipleHandle1ValuemaxDetails": "Hodnota je {value}", + "coreSlider.multipleHandle1ValueNowDetails": "Aktuální hodnota je {value}", + "coreSlider.multipleHandle2MinMaxDetails": "Minimální hodnota posuvníku rozsahu je {min}, maximální hodnota je {max}", + "coreSlider.multipleHandle2ValueminDetails": "Hodnota je {value}", + "coreSlider.multipleHandle2ValuemaxDetails": "Hodnota je {value}", + "coreSlider.multipleHandle2ValueNowDetails": "Aktuální hodnota je {value}", + "coreSplitButton.expandButtonAriaLabel": "Více akcí", + "coreSplitButton.arialLabel": "Split button", + "coreSplitter.paginationItemAriaLabel": "Sekce", + "coreStepInput.incrementButtonTitle": "Zvýšit", + "coreStepInput.decrementButtonTitle": "Snížit", + "coreStepInput.ariaRoleDescription": "Step Input", + "coreSwitch.semanticAcceptLabel": "Akceptovat", + "coreSwitch.semanticDeclineLabel": "Odmítnout", + "coreTabs.tabListExpandButtonText": "Více", + "coreText.moreLabel": "Více", + "coreText.lessLabel": "Méně", + "coreTime.componentAriaName": "Time picker", + "coreTime.increaseHoursLabel": "Zvyšit hodiny", + "coreTime.hoursLabel": "Hod", + "coreTime.decreaseHoursLabel": "Snížit hodiny", + "coreTime.increaseMinutesLabel": "Zvyšit minuty", + "coreTime.minutesLabel": "Min", + "coreTime.decreaseMinutesLabel": "Snížit minuty", + "coreTime.increaseSecondsLabel": "Zvyšit sekundy", + "coreTime.secondsLabel": "Sec", + "coreTime.decreaseSecondsLabel": "Snížit sekundy", + "coreTime.increasePeriodLabel": "Zvýšit období", + "coreTime.periodLabel": "Období", + "coreTime.decreasePeriodLabel": "Snížit období", + "coreTime.navigationInstruction": "Chcete-li se pohybovat mezi položkami v tomto seznamu, stiskněte horní nebo dolní šipku. Pro přepínání mezi seznamy stiskněte levou nebo pravou šipku.", + "coreTimePicker.timePickerInputLabel": "Time picker input", + "coreTimePicker.timePickerButtonLabel": "Otevřete výběr", + "coreToken.deleteButtonLabel": "Smazatelné", + "coreToken.ariaRoleDescription": "token", + "coreTokenizer.moreLabel": "{count} více", + "coreUploadCollection.menuOkText": "Ok", + "coreUploadCollection.menuCancelText": "Zrušit", + "coreUploadCollection.menuEditAriaLabel": "Upravit", + "coreUploadCollection.menuDeleteAriaLabel": "Smazat", + "coreUploadCollection.menuOkAriaLabel": "Upravit", + "coreUploadCollection.menuCancelAriaLabel": "Zrušit", + "coreUploadCollection.formItemPlaceholder": "Název souboru", + "coreWizard.ariaLabel": "Wizard", + "coreBreadcrumb.overflowTitleMore": "Více", + "platformActionBar.backButtonLabel": "Vraťit se zpět", + "platformApprovalFlow.defaultWatchersLabel": "Pozorovatelé", + "platformApprovalFlow.defaultTitle": "Schvalovací proces", + "platformApprovalFlow.nextButtonAriaLabel": "Přejít na další část", + "platformApprovalFlow.prevButtonAriaLabel": "Přejít na předchozí část", + "platformApprovalFlow.editModeSaveButtonLabel": "Uložit", + "platformApprovalFlow.editModeExitButtonLabel": "Odejít", + "platformApprovalFlow.emptyTitle": "Začněte přidávat schvalovatele a pozorovatele", + "platformApprovalFlow.emptyHint": "Chcete-li přidat schvalovatele, klikněte na „Přidat krok“. Chcete-li přidat pozorovatele, klikněte na pole Pozorovatele.", + "platformApprovalFlow.addNodeDialogHeaderAddApprovers": "Přidat schvalovatele", + "platformApprovalFlow.addNodeDialogHeaderEditApprover": "Upravit schvalovatele", + "platformApprovalFlow.addNodeDialogHeaderAddApproverTeam": "Uživatel/Tým", + "platformApprovalFlow.addNodeDialogHeaderDetail": "Detail", + "platformApprovalFlow.addNodeDialogNodeType": "Paralelní nebo sériové", + "platformApprovalFlow.addNodeDialogNodeTypeSerial": "Sériové", + "platformApprovalFlow.addNodeDialogNodeTypeParallel": "Paralelní", + "platformApprovalFlow.addNodeDialogApproverType": "Typ schvalovatele", + "platformApprovalFlow.addNodeDialogApproverTypeUser": "A user", + "platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone": "Anyone on the team", + "platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone": "Všichni v týmu", + "platformApprovalFlow.addNodeDialogUserOrTeam": "Uživatel/Tým", + "platformApprovalFlow.addNodeDialogAddToNext": "Přidat k dalšímu sériovému uzlu", + "platformApprovalFlow.addNodeDialogDueDate": "Datum schválení", + "platformApprovalFlow.addNodeSearchPlaceholder": "Hledat", + "platformApprovalFlow.addNodeAddActionBtnLabel": "Přidat", + "platformApprovalFlow.addNodeCancelActionBtnLabel": "Zrušit", + "platformApprovalFlow.addNodeSelectApproverActionBtnLabel": "Select", + "platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel": "Zrušit", + "platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel": "Zavřít", + "platformApprovalFlow.userDetailsHeader": "Detail", + "platformApprovalFlow.userDetailsSendReminderBtnLabel": "Send reminder", + "platformApprovalFlow.userDetailsCancelBtnLabel": "Zrušit", + "platformApprovalFlow.messagesApproverAddedSuccess": "Byl přidán 1 schvalovatel", + "platformApprovalFlow.messagesTeamAddedSuccess": "1 tým byl přidán", + "platformApprovalFlow.messagesNodeEdited": "1 schvalovatel byl upraven", + "platformApprovalFlow.messagesNodeRemovedSingular": "1 schvalovatel byl odebrán", + "platformApprovalFlow.messagesNodeRemovedPlural": "Schvalovatelé byli odebráni", + "platformApprovalFlow.messagesTeamRemoved": "1 tým byl odstraněn", + "platformApprovalFlow.messagesErrorBuildGraph": "There was an error when trying to build graph. Check the initial data.", + "platformApprovalFlow.messagesUndoAction": "Zpět", + "platformApprovalFlow.nodeMembersCount": "{count} členů", + "platformApprovalFlow.nodeVariousTeams": "Různé týmy", + "platformApprovalFlow.nodeStatusDueToday": "Ke schválení dnes", + "platformApprovalFlow.nodeStatusDueInXDays": " Ke schválení za {count} dní", + "platformApprovalFlow.nodeStatusXDaysOverdue": "{count} dní po schválení", + "platformApprovalFlow.nodeActionAddApproversBefore": "Přidejte schvalovatele před", + "platformApprovalFlow.nodeActionAddApproversAfter": "Přidejte schvalovatele za", + "platformApprovalFlow.nodeActionAddApproversParallel": "Přidejte paralelní schvalovatele", + "platformApprovalFlow.nodeActionEditApprover": "Upravit schvalovatele", + "platformApprovalFlow.nodeActionRemove": "Odstranit", + "platformApprovalFlow.selectTypeDialogMoveApproverAs": "Přesunout schvalovatele jako", + "platformApprovalFlow.selectTypeDialogParallelOrSerial": "Paralelní nebo sériové", + "platformApprovalFlow.selectTypeDialogNodeTypeParallel": "Paralelní schvalovatel", + "platformApprovalFlow.selectTypeDialogNodeTypeSerial": "Sériový schvalovatel", + "platformApprovalFlow.selectTypeDialogConfirmButton": "Potvrdit", + "platformApprovalFlow.selectTypeDialogCancelButton": "Zrušit", + "platformApprovalFlow.toolbarAddStepButton": "Přidat krok", + "platformApprovalFlow.toolbarEditButton": "Upravit", + "platformApprovalFlow.toolbarAddApproversBefore": "Přidejte schvalovatele před", + "platformApprovalFlow.toolbarAddApproversAfter": "Přidejte schvalovatele za", + "platformApprovalFlow.toolbarAddApproversParallel": "Přidejte paralelní schvalovatele", + "platformApprovalFlow.toolbarRemove": "Odstranit", + "platformApprovalFlow.toolbarEditApprover": "Upravit schvalovatele", + "platformApprovalFlow.watchersInputPlaceholder": "Hledej tady..", + "platformApprovalFlow.userListSelectedItemsCountSingular": "Vybrána 1 položka", + "platformApprovalFlow.userListSelectedItemsCountPlural": "Počet vybraných položek: {count}", + "platformApprovalFlow.statusApproved": "approved", + "platformApprovalFlow.statusRejected": "rejected", + "platformApprovalFlow.statusInProgress": "in progress", + "platformApprovalFlow.statusNotStarted": "not started", + "platformFeedInput.userTitle": "Uživatel", + "platformVHD.selectionBarLabel": "Vybrané a podmíněné položky", + "platformVHD.selectedAndConditionLabel": "Vybrané položky a podmínky", + "platformVHD.footerClearSelectedTitle": "vymazat vybrané položky", + "platformVHD.footerClearSelectedAriaLabel": "vymazat vybrané položky", + "platformVHD.searchButtonLabel": "Jdi", + "platformVHD.successButtonLabel": "OK", + "platformVHD.cancelButtonLabel": "Zrušit", + "platformVHD.selectedEmptyLabel": "Nejsou vybrány žádné položky ani podmínky", + "platformVHD.searchPlaceholder": "hledat", + "platformVHD.searchAdvancedSearchLabel": "Filtry", + "platformVHD.searchShowAdvancedSearchLabel": "Zobrazit filtry", + "platformVHD.searchHideAdvancedSearchLabel": "Skrýt filtry", + "platformVHD.searchShowAllAdvancedSearchLabel": "Zobrazit všechny filtry", + "platformVHD.searchHideAllAdvancedSearchLabel": "Skrýt všechny filtry", + "platformVHD.selectTabDisplayCountLabel": "Položky ({count})", + "platformVHD.selectTabMoreBtnLabel": "Více", + "platformVHD.selectTabCountHiddenA11yLabel": "obsahuje {rowCount} řádků a {colCount} sloupců", + "platformVHD.selectMobileTabBackBtnTitle": "Zpět", + "platformVHD.selectMobileTabBtnOpenDialogLabel": "Otevřít dialog", + "platformVHD.selectMobileTabTitle": "Karta {title}", + "platformVHD.selectMobileConditionEmpty": "Prázdný", + "platformVHD.defineConditionTitle": "Produkt", + "platformVHD.defineConditionSelectedValueHiddenA11yLabel": "vybraná hodnota {hodnota}", + "platformVHD.defineConditionConditionsGroupHeaderInclude": "Zahrnout", + "platformVHD.defineConditionConditionsGroupHeaderExclude": "Vyloučit", + "platformVHD.defineConditionFromPlaceholder": "od", + "platformVHD.defineConditionToPlaceholder": "do", + "platformVHD.defineConditionValuePlaceholder": "hodnota", + "platformVHD.defineConditionRemoveConditionButtonTitle": "Odebrat podmínku", + "platformVHD.defineConditionAddConditionButtonLabel": "Přidat", + "platformVHD.defineConditionAddConditionButtonTitle": "Přidat podmínku", + "platformVHD.defineConditionConditionStrategyLabelContains": "obsahuje", + "platformVHD.defineConditionConditionStrategyLabelEqualTo": "rovná", + "platformVHD.defineConditionConditionStrategyLabelBetween": "mezi", + "platformVHD.defineConditionConditionStrategyLabelStartsWith": "začíná s", + "platformVHD.defineConditionConditionStrategyLabelEndsWith": "končí s", + "platformVHD.defineConditionConditionStrategyLabelLessThan": "méně než", + "platformVHD.defineConditionConditionStrategyLabelLessThanEqual": "méně než rovné", + "platformVHD.defineConditionConditionStrategyLabelGreaterThan": "větší než", + "platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual": "větší než rovno", + "platformVHD.defineConditionConditionStrategyLabelEmpty": "prázdný", + "platformVHD.defineConditionConditionStrategyLabelNotEqualTo": "nerovná se", + "platformVHD.defineConditionConditionStrategyLabelNotEmpty": "není prázdný", + "platformVHD.defineConditionMaxCountError": "Zadejte hodnotu s maximálně {count} znaků", + "platformVHD.selectTabTitle": "Vyberte ze seznamu", + "platformVHD.searchTableEmptyMessage": "K získání výsledků použijte vyhledávání", + "platformVHD.defineTabTitle": "Definujte podmínky", + "platformCombobox.countListResultsSingular": "1 položka výsledkové listiny", + "platformCombobox.countListResultsPlural": "{count} položek výsledkového seznamu", + "platformMultiCombobox.inputGlyphAriaLabel": "Vyberte Možnosti", + "platformMultiCombobox.inputIconTitle": "Vyberte Možnosti", + "platformMultiCombobox.mobileShowAllItemsButton": "Zobrazit všechny položky", + "platformMultiCombobox.mobileShowSelectedItemsButton": "Zobrazit vybrané položky", + "platformTextarea.counterMessageCharactersOverTheLimitSingular": "1 znak nad limit", + "platformTextarea.counterMessageCharactersOverTheLimitPlural": "{count} znaků překračuje limit", + "platformTextarea.counterMessageCharactersRemainingSingular": "Zbývá 1 znak", + "platformTextarea.counterMessageCharactersRemainingPlural": "Zbývá {count} znaků", + "platformLink.roleDescriptionWithMedia": "Médium: {media}", + "platformList.loadingAriaLabel": "načítání", + "platformObjectListItem.detailsActionAriaLabel": "detail", + "platformObjectListItem.deleteActionAriaLabel": "vymazat", + "platformStandardListItem.detailsActionAriaLabel": "detail", + "platformStandardListItem.deleteActionAriaLabel": "vymazat", + "platformSearchField.clearButtonTitle": "Vymazat", + "platformSearchField.submitButtonTitle": "Search", + "platformSearchField.searchInputLabel": "Search", + "platformSearchField.synchronizeButtonTitle": "Synchronizovat", + "platformSearchField.searchSuggestionMessage": "Počet nalezených návrhů: {count}.", + "platformSearchField.searchSuggestionNavigateMessage": "k navigaci použijte šipky nahoru a dolů", + "platformSmartFilterBar.searchPlaceholder": "Vyhledávání", + "platformSmartFilterBar.submitButtonLabel": "Jdi", + "platformSmartFilterBar.filtersButtonLabel": "Filtry ({filtersCount})", + "platformSmartFilterBar.showFiltersButtonLabel": "Zobrazit filtry", + "platformSmartFilterBar.hideFiltersButtonLabel": "Skrýt filtry", + "platformSmartFilterBar.defineConditionsRemoveConditionButtonTitle": "Odstraňte podmínku", + "platformSmartFilterBar.defineConditionsAddConditionButtonLabel": "Přidat podmínku", + "platformSmartFilterBar.defineConditionsSubmitButtonLabel": "Jdi", + "platformSmartFilterBar.defineConditionsCancelButton": "Zrušit", + "platformSmartFilterBar.selectFiltersHeader": "Filtry", + "platformSmartFilterBar.selectFiltersAvailableFiltersText": "Dostupné filtry", + "platformSmartFilterBar.selectFiltersFilterColumnLabel": "Filtr", + "platformSmartFilterBar.selectFiltersActiveColumnLabel": "Aktivní", + "platformSmartFilterBar.selectFiltersSubmitButtonLabel": "Jdi", + "platformSmartFilterBar.selectFiltersCancelButton": "Zrušit", + "platformSmartFilterBar.filterConditionContains": "obsahuje", + "platformSmartFilterBar.filterConditionEqualTo": "rovná", + "platformSmartFilterBar.filterConditionBetween": "mezi", + "platformSmartFilterBar.filterConditionBeginsWith": "začíná s", + "platformSmartFilterBar.filterConditionEndsWith": "končí s", + "platformSmartFilterBar.filterConditionLessThan": "méně než", + "platformSmartFilterBar.filterConditionLessThanOrEqualTo": "menší nebo rovno", + "platformSmartFilterBar.filterConditionGreaterThan": "větší než", + "platformSmartFilterBar.filterConditionGreaterThanOrEqualTo": "větší nebo rovno", + "platformSmartFilterBar.filterConditionAfter": "po", + "platformSmartFilterBar.filterConditionOnOrAfter": "na nebo po", + "platformSmartFilterBar.filterConditionBefore": "před", + "platformSmartFilterBar.filterConditionBeforeOrOn": "před nebo na", + "platformSmartFilterBar.filterConditionValuePlaceholder": "hodnota", + "platformSmartFilterBar.filterConditionValueFromPlaceholder": "z", + "platformSmartFilterBar.filterConditionValueToPlaceholder": "na", + "platformSmartFilterBar.settingsCategoryAll": "Všechno", + "platformSmartFilterBar.settingsCategoryVisible": "Viditelné", + "platformSmartFilterBar.settingsCategoryActive": "Aktivní", + "platformSmartFilterBar.settingsCategoryVisibleAndActive": "Viditelné a aktivní", + "platformSmartFilterBar.settingsCategoryMandatory": "Povinné", + "platformSmartFilterBar.manageFieldConditions": "Manage field conditions", + "platformSmartFilterBar.refreshButtonAriaLabel": "Refresh", + "platformTable.headerMenuSortAsc": "Seřadit vzestupně", + "platformTable.headerMenuSortDesc": "Seřadit sestupně", + "platformTable.headerMenuGroup": "Skupina", + "platformTable.headerMenuFreeze": "Zmrazit", + "platformTable.headerMenuEndFreeze": "Freeze to End", + "platformTable.headerMenuUnfreeze": "HeaderMenuUnfreeze", + "platformTable.headerMenuFilter": "Filtr", + "platformTable.defaultEmptyMessage": "Nenalezena žádná data", + "platformTable.emptyCell": "Prázdnýyoge", + "platformTable.noVisibleColumnsMessage": "Right now, there are no visible columns in the table. Please select the columns you need in the table settings.", + "platformTable.resetChangesButtonLabel": "Resetovat", + "platformTable.editableCellNumberPlaceholder": "Zadejte hodnotu", + "platformTable.editableCellDatePlaceholder": "Zadejte hodnotu", + "platformTable.editableCellStringPlaceholder": "Zadejte hodnotu", + "platformTable.P13ColumnsDialogHeader": "Sloupce", + "platformTable.P13ColumnsDialogSearchPlaceholder": "Vyhledávání", + "platformTable.P13ColumnsDialogsShowSelected": "Zobrazit vybrané", + "platformTable.P13ColumnsDialogShowAll": "Ukázat vše", + "platformTable.P13ColumnsDialogSelectAll": "Vybrat vše ({selectedColumnsCount}/{selectableColumnsCount})", + "platformTable.P13ColumnsDialogConfirmationBtnLabel": "OK", + "platformTable.P13ColumnsDialogCancelBtnLabel": "Zrušit", + "platformTable.P13ColumnsDialogMoveToTopBtn": "Přejít na začátek", + "platformTable.P13ColumnsDialogMoveUpBtn": "Posunout nahoru", + "platformTable.P13ColumnsDialogMoveDownBtn": "Posunout dolů", + "platformTable.P13ColumnsDialogMoveToBottomBtn": "Přesunout na konec", + "platformTable.P13FilterStrategyLabelBetween": "mezi", + "platformTable.P13FilterStrategyLabelContains": "obsahuje", + "platformTable.P13FilterStrategyLabelBeginsWith": "začíná s", + "platformTable.P13FilterStrategyLabelEndsWith": "končí s", + "platformTable.P13FilterStrategyLabelEqualTo": "rovná", + "platformTable.P13FilterStrategyLabelGreaterThan": "větší než", + "platformTable.P13FilterStrategyLabelGreaterThanOrEqualTo": "větší nebo rovno", + "platformTable.P13FilterStrategyLabelLessThan": "méně než", + "platformTable.P13FilterStrategyLabelLessThanOrEqualTo": "menší nebo rovno", + "platformTable.P13FilterStrategyLabelAfter": "po", + "platformTable.P13FilterStrategyLabelOnOrAfter": "na nebo po", + "platformTable.P13FilterStrategyLabelBefore": "před", + "platformTable.P13FilterStrategyLabelBeforeOrOn": "před nebo na", + "platformTable.P13FilterStrategyLabelNotDefined": "Není definovaný", + "platformTable.P13FilterBooleanOptionNotDefined": " ", + "platformTable.P13FilterBooleanOptionTrue": "Ano", + "platformTable.P13FilterBooleanOptionFalse": "Ne", + "platformTable.P13FilterDialogHeader": "Filtrovat podle", + "platformTable.P13FilterDialogIncludePanelTitleWithCount": "Zahrnout ({count})", + "platformTable.P13FilterDialogIncludePanelTitleWithoutCount": "Zahrnout", + "platformTable.P13FilterDialogExcludePanelTitleWithCount": "Vyloučit ({count})", + "platformTable.P13FilterDialogExcludePanelTitleWithoutCount": "Vyloučit", + "platformTable.P13FilterDialogRemoveFilterBtnTitle": "Odstraňte filtr", + "platformTable.P13FilterDialoAddFilterBtnTitle": "Přidat filtr", + "platformTable.P13FilterDialogConfirmationBtnLabel": "OK", + "platformTable.P13FilterDialogCancelBtnLabel": "Zrušit", + "platformTable.P13GroupDialogHeader": "Skupina", + "platformTable.P13GroupDialogNoneSelectedColumnSelectPlaceholder": "(žádný)", + "platformTable.P13GroupDialogShowFieldAsColumnCheckboxLabel": "Zobrazit pole jako sloupec", + "platformTable.P13GroupDialogRemoveGroupBtnTitle": "Odstranit", + "platformTable.P13GroupDialogAddNewGroupBtnTitle": "Přidat nový", + "platformTable.P13GroupDialogConfirmationBtnLabel": "OK", + "platformTable.P13GroupDialogCancelBtnLabel": "Zrušit", + "platformTable.P13SortDialogHeader": "Seřadit", + "platformTable.P13SortDialogNoneSelectedColumn": "(žádný)", + "platformTable.P13SortDialogNoneSelectedSorting": "(žádný)", + "platformTable.P13SortDialogSortOrderSelectOptionAsc": "Vzestupně", + "platformTable.P13SortDialogSortOrderSelectOptionDesc": "Klesající", + "platformTable.P13SortDialogRemoveSortBtnTitle": "Odstranit", + "platformTable.P13SortDialogAddNewSortBtnTitle": "Přidat nový", + "platformTable.P13SortDialogConfirmationBtnLabel": "OK", + "platformTable.P13SortDialogCancelBtnLabel": "Zrušit", + "platformTable.toolbarSearchPlaceholder": "Vyhledávání", + "platformTable.toolbarActionCreateButtonLabel": "Vytvořit", + "platformTable.toolbarActionSaveButtonLabel": "Uložit", + "platformTable.toolbarActionCancelButtonLabel": "Zrušit", + "platformTable.toolbarActionSortButtonTitle": "Seřadit", + "platformTable.toolbarActionFilterButtonTitle": "Filtr", + "platformTable.toolbarActionGroupButtonTitle": "Skupina", + "platformTable.toolbarActionColumnsButtonTitle": "Sloupce", + "platformTable.toolbarActionExpandAllButtonTitle": "Rozbalit vše", + "platformTable.toolbarActionCollapseAllButtonTitle": "Sbalit vše", + "platformTable.filterDialogNotFilteredLabel": "(Nefiltrováno)", + "platformTable.filterDialogFilterByLabel": "Filtrovat podle: {filterLabel}", + "platformTable.filterDialogFilterTitle": "Filtr", + "platformTable.filterDialogFilterBy": "Filtrovat podle", + "platformTable.filterDialogConfirmBtnLabel": "OK", + "platformTable.filterDialogCancelBtnLabel": "Zrušení", + "platformTable.groupDialogHeader": "Skupina", + "platformTable.groupDialogGroupOrderHeader": "Seřadit Skupinově", + "platformTable.groupDialogGroupOrderAsc": "Vzestupně", + "platformTable.groupDialogGroupOrderDesc": "Klesající", + "platformTable.groupDialogGroupByHeader": "Seskupit podle", + "platformTable.groupDialogNotGroupedLabel": "(Neseskupeno)", + "platformTable.groupDialogConfirmBtnLabel": "OK", + "platformTable.groupDialogCancelBtnLabel": "Zrušit", + "platformTable.sortDialogHeader": "Sort", + "platformTable.sortDialogSortOrderHeader": "Pořadí řazení", + "platformTable.sortDialogSortOrderAsc": "Vzestupně", + "platformTable.sortDialogSortOrderDesc": "Klesající", + "platformTable.sortDialogSortByHeader": "Seřazeno podle", + "platformTable.sortDialogNotSortedLabel": "(Neřazeno)", + "platformTable.sortDialogConfirmBtnLabel": "OK", + "platformTable.sortDialogCancelBtnLabel": "Zrušit", + "platformTable.selectAllCheckboxLabel": "Select all", + "platformTable.deselectAllCheckboxLabel": "Deselect all", + "platformTable.deselectSingleRow": "To deselect row, press SPACEBAR", + "platformTable.selectSingleRow": "To select row, press SPACEBAR", + "platformTable.deselectSingleRowTitle": "Click to deselect", + "platformTable.selectSingleRowTitle": "Click to select", + "platformThumbnail.detailsGotoPreviousButtonTitle": "Go to Previous", + "platformThumbnail.detailsGotoNextButtonTitle": "Přejděte na Další", + "platformThumbnail.detailsDialogCloseBtnLabel": "Zavřít", + "platformThumbnail.roleDescription": "Obraz", + "platformUploadCollection.moveToTitle": "Přesunout do", + "platformUploadCollection.moveToTitleFolder": "Složka", + "platformUploadCollection.moveToNewFolderBtnLabel": "Nová složka", + "platformUploadCollection.moveToAllFilesSubHeaderLabel": "Všechny soubory", + "platformUploadCollection.moveToConfirmBtn": "Přesunout", + "platformUploadCollection.moveToCloseBtn": "Zrušit", + "platformUploadCollection.newFolderTitle": "Nová složka", + "platformUploadCollection.newFolderAtRootInputLabel": "Název nové složky", + "platformUploadCollection.newFolderAtFolderInputLabel": "Název nové složky uvnitř {folderName}", + "platformUploadCollection.newFolderInputPlaceholder": "Napište sem..", + "platformUploadCollection.newFolderInputErrorLabel": "Maximální povolený počet znaků: {count}", + "platformUploadCollection.newFolderDialogCreateBtnLabel": "Vytvořit", + "platformUploadCollection.newFolderDialogCancelBtnLabel": "Zrušit", + "platformUploadCollection.breadcrumbLabelAllFiles": "All files", + "platformUploadCollection.breadcrumbLabelAllFilesWithTotal": "Všechny soubory ({total})", + "platformUploadCollection.searchPlaceholder": "Vyhledávání", + "platformUploadCollection.addBtnLabel": "Přidat", + "platformUploadCollection.newFolderBtnLabel": "Nová složka", + "platformUploadCollection.moveToBtnLabel": "Přesunout do", + "platformUploadCollection.downloadBtnLabel": "Stažení", + "platformUploadCollection.updateVersionBtnLabel": "Aktualizovat verzi", + "platformUploadCollection.removeBtnLabel": "Odstranit", + "platformUploadCollection.folderIconTitle": "Ikona složky", + "platformUploadCollection.fileIconTitle": "Ikona souboru", + "platformUploadCollection.editFileNameInputPlaceholder": "Zadejte jméno", + "platformUploadCollection.editFileNameFileAlreadyExistsError": "Soubor s tímto názvem již existuje", + "platformUploadCollection.editFileNameFolderAlreadyExistsError": "Složka s tímto názvem již existuje", + "platformUploadCollection.itemStatusSuccessful": "Úspěšný", + "platformUploadCollection.itemStatusUnsuccessful": "Neúspěšný", + "platformUploadCollection.uploadNewFileAfterFailAction": "Spustit", + "platformUploadCollection.cancelUploadNewFileAction": "Zrušit", + "platformUploadCollection.itemMenuBtnTitle": "Více", + "platformUploadCollection.dragDropAreaText": "Přetáhněte soubory k nahrání", + "platformUploadCollection.noDataText": "Nebyly nalezeny žádné soubory", + "platformUploadCollection.noDataDescription": "Přetáhněte soubory, které chcete nahrát, nebo použijte tlačítko „Přidat“.", + "platformUploadCollection.paginationTotal": "Zobrazeno {from}-{to} z {to}", + "platformUploadCollection.resultsPerPage": "Výsledky na stránku", + "platformUploadCollection.messageCreateFailed": "Vytvoření {folderName} se nezdařilo.", + "platformUploadCollection.messageCreateSuccess": "{folderName} byl vytvořen.", + "platformUploadCollection.messageUpdateVersionFailed": "Aktualizace verze {folderName} se nezdařila.", + "platformUploadCollection.messageUpdateVersionSuccess": "Verze {folderName} byla aktualizována.", + "platformUploadCollection.messageFileRenameFailed": "Nepodařilo se přejmenovat \"{from}\" na \"{to}.\"", + "platformUploadCollection.messageFileRenameSuccess": "\"{from}\" bylo přejmenováno na \"{to}\".", + "platformUploadCollection.messageRemoveFoldersAndFilesFailed": "Nepodařilo se odstranit {foldersCount} složky a {filesCount} soubory.", + "platformUploadCollection.messageRemoveFoldersAndFilesSuccess": "Bylo odstraněno {foldersCount} složek a {filesCount} souborů.", + "platformUploadCollection.messageRemoveFoldersFailed": "Nepodařilo se odstranit složky ({foldersCount}).", + "platformUploadCollection.messageRemoveFoldersSuccess": "Složky ({foldersCount}) byly odstraněny.", + "platformUploadCollection.messageRemoveFilesFailed": "Nepodařilo se odstranit {filesCount} soubory.", + "platformUploadCollection.messageRemoveFilesSuccess": "Soubory {filesCount} byly odstraněny.", + "platformUploadCollection.messageRemoveFileOrFolderFailed": "Nepodařilo se odstranit {name}.", + "platformUploadCollection.messageRemoveFileOrFolderSuccess": "{name} bylo odstraněno.", + "platformUploadCollection.messageMoveFoldersAndFilesFailed": "Nepodařilo se přesunout {foldersCount} složky a {filesCount} soubory do {to}.", + "platformUploadCollection.messageMoveFoldersAndFilesSuccess": "Složky {foldersCount} a soubory {filesCount} byly přesunuty do {to}.", + "platformUploadCollection.messageMoveFoldersFailed": "Přesunutí {foldersCount} složek do {to} se nezdařilo.", + "platformUploadCollection.messageMoveFoldersSuccess": "Složky {foldersCount} byly přesunuty do {to}.", + "platformUploadCollection.messageMoveFilesFailed": "Přesunutí {filesCount} souborů do {to} se nezdařilo.", + "platformUploadCollection.messageMoveFilesSuccess": "Soubory {filesCount} byly přesunuty do {to}.", + "platformUploadCollection.messageMoveFileOrFolderFailed": "Nepodařilo se přesunout {name} do {do}.", + "platformUploadCollection.messageMoveFileOrFolderSuccess": "{name} bylo přesunuto do {do}.", + "platformUploadCollection.messageMoveRootFoldersAndFilesFailed": "Nepodařilo se přesunout {foldersCount} složky a {filesCount} soubory do všech souborů.", + "platformUploadCollection.messageMoveRootFoldersAndFilesSuccess": "{foldersCount} složky a {filesCount} soubory byly přesunuty do všech souborů.", + "platformUploadCollection.messageMoveRootFoldersFailed": "Přesunutí {foldersCount} složek do všech souborů se nezdařilo.", + "platformUploadCollection.messageMoveRootFoldersSuccess": "Složky {foldersCount} byly přesunuty do všech souborů.", + "platformUploadCollection.messageMoveRootFilesFailed": "Nepodařilo se přesunout {filesCount} soubory do všech souborů.", + "platformUploadCollection.messageMoveRootFilesSuccess": "Soubory {filesCount} byly přesunuty do všech souborů.", + "platformUploadCollection.messageMoveRootFileOrFolderFailed": "Nepodařilo se přesunout {name} do všech souborů.", + "platformUploadCollection.messageMoveRootFileOrFolderSuccess": "{name} bylo přesunuto do všech souborů.", + "platformUploadCollection.messageFileTypeMismatchPlural": "Soubory {filesCount} mají nesprávný typ. Povolené typy: {allowTypes}.", + "platformUploadCollection.messageFileTypeMismatchSingular": "Soubor \"{fileName}\" má nesprávný typ. Povolené typy: {allowTypes}.", + "platformUploadCollection.messageFileSizeExceededPlural": "{filesCount} soubory překročily maximální velikost souboru. Povolená maximální velikost souboru: {maxFileSize}.", + "platformUploadCollection.messageFileSizeExceededSingular": "Soubor \"{fileName}\" překročil maximální velikost souboru. Povolená maximální velikost souboru: {maxFileSize}.", + "platformUploadCollection.messageFileNameLengthExceededPlural": "{filesCount} soubory překročily maximální délku souboru. Povolená délka názvu souboru: {maxFilenameLength} znaků.", + "platformUploadCollection.messageFileNameLengthExceededSingular": "Název \"{fileName}\" překročil maximální délku souboru. Povolená délka názvu souboru: {maxFilenameLength} znaků.", + "platformWizardGenerator.summarySectionEditStep": "Upravit", + "platformMessagePopover.allErrors": "All", + "platformMessagePopover.defaultErrors.email": "Email is invalid", + "platformMessagePopover.defaultErrors.max": "The field exceeds maximum value", + "platformMessagePopover.defaultErrors.maxLength": "The field exceeds maximum length", + "platformMessagePopover.defaultErrors.min": "The field value is less than allowed", + "platformMessagePopover.defaultErrors.minLength": "The field length is less than allowed", + "platformMessagePopover.defaultErrors.pattern": "The field value is invalid", + "platformMessagePopover.defaultErrors.required": "The field is mandatory", + "platformMessagePopover.defaultErrors.requiredTrue": "The field is mandatory", + "platformVariantManagement.manage": "Manage", + "platformVariantManagement.saveAs": "Save as", + "platformVariantManagement.saveView": "Save View", + "platformVariantManagement.save": "Save", + "platformVariantManagement.myViews": "My Views", + "platformVariantManagement.view": "View", + "platformVariantManagement.setAsDefault": "Set as Default", + "platformVariantManagement.public": "Public", + "platformVariantManagement.applyAutomatically": "Apply Automatically", + "platformVariantManagement.requiredFieldError": "This field is required.", + "platformVariantManagement.nameTakenFieldError": "Variant with such name already exists. Please chose a different name.", + "platformVariantManagement.cancel": "Cancel", + "platformVariantManagement.manageViews": "Manage Views", + "platformVariantManagement.markAsFavourite": "Mark as Favourite", + "platformVariantManagement.sharing": "Sharing", + "platformVariantManagement.default": "Default", + "platformVariantManagement.createdBy": "Created By", + "platformVariantManagement.removeVariant": "Remove View", + "platformVariantManagement.search": "Search", + "platformVariantManagement.access.public": "Public", + "platformVariantManagement.access.private": "Private", + "platformSelect.selectOptionLabel": "Vyberte možnost", + "fnSlider.minMaxDetails": "Minimální hodnota posuvníku je {min}, maximální hodnota je {max}", + "fnSlider.valueminDetails": "Hodnota je {hodnota}", + "fnSlider.valuemaxDetails": "Hodnota je {hodnota}", + "fnSlider.valueNowDetails": "Aktuální hodnota je {hodnota}", + "fnSwitch.semanticAcceptLabel": "Akceptovat", + "fnSwitch.semanticDeclineLabel": "Odmítnout", + "coreTree.expand": "Expand node", + "coreTree.collapse": "Collapse node", + "coreTree.noData": "No data" +} diff --git a/libs/i18n/src/lib/translations/translations_en-US.json b/libs/i18n/src/lib/translations/translations_en-US.json new file mode 100644 index 00000000000..a10cd6cac51 --- /dev/null +++ b/libs/i18n/src/lib/translations/translations_en-US.json @@ -0,0 +1,503 @@ +{ + "coreMultiComboBox.selectAllLabel": "Select all ({selectedItems} of {totalItems})", + "coreCarousel.leftNavigationBtnLabel": "Go to previous item", + "coreCarousel.rightNavigationBtnLabel": "Go to next item", + "coreDatePicker.dateInputLabel": "Date input", + "coreDatePicker.dateRangeInputLabel": "Date range input", + "coreDatePicker.displayCalendarToggleLabel": "Open picker", + "coreDatePicker.valueStateSuccessMessage": "Value state Success", + "coreDatePicker.valueStateInformationMessage": "Value state Information", + "coreDatePicker.valueStateWarningMessage": "Value state Warning", + "coreDatePicker.valueStateErrorMessage": "Value state Error", + "coreDatetimePicker.datetimeInputLabel": "Datetime input", + "coreDatetimePicker.displayDatetimeToggleLabel": "Display calendar toggle", + "coreDatetimePicker.displayTypeDateLabel": "Date", + "coreDatetimePicker.displayTypeTimeLabel": "Time", + "coreDatetimePicker.datetimeOkLabel": "Ok", + "coreDatetimePicker.datetimeCancelLabel": "Cancel", + "coreFeedListItem.moreLabel": "{count} more", + "coreFeedListItem.lessLabel": "Less", + "coreGridList.filterBarCancelButtonTitle": "Cancel", + "coreGridList.listItemStatusAriaLabel": "Item has status. Status: {status}.", + "coreGridList.listItemCounterAriaLabel": "Item has {count} children.", + "coreGridList.listItemButtonDetailsTitle": "Details", + "coreGridList.listItemButtonDeleteTitle": "Delete", + "coreGridList.listItemStatusContainsErrors": "Contains errors", + "coreGridList.listItemStatusLocked": "Locked", + "coreGridList.listItemStatusDraft": "Draft", + "coreMessageStrip.dismissLabel": "Dismiss", + "coreMultiInput.multiInputAriaLabel": "Multi Value Input", + "coreMultiInput.tokensCountText": "Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.", + "coreNavigation.mainNavigation": "Main Navigation", + "coreNavigation.navigationPath": "Navigation Path", + "coreNestedList.linkItemAriaLabel": "Tree Item {itemDetails}, {index} of {total}{selectedDescription}", + "coreOverflowLayout.moreItemsButton": "{count} more", + "corePagination.pageLabel": "Page {pageNumber}", + "corePagination.currentPageAriaLabel": "Page {pageNumber} is current page", + "corePagination.labelBeforeInputMobile": "Page:", + "corePagination.labelAfterInputMobile": "of {totalCount}", + "corePagination.inputAriaLabel": "Page input, Current page, Page {pageNumber} of {totalCount}", + "corePagination.itemsPerPageLabel": "Results per Page:", + "corePagination.firstLabel": "First", + "corePagination.previousLabel": "Previous", + "corePagination.nextLabel": "Next", + "corePagination.lastLabel": "Last", + "corePagination.ariaLabel": "Pagination", + "corePagination.totalResultsLabel": "{totalCount} Results", + "coreProductSwitch.ariaLabel": "Product Switch", + "coreShellbar.collapsedItemMenuLabel": "Collapsed Item Menu", + "coreShellbar.cancel": "Cancel", + "coreShellbar.search": "Search", + "coreSlider.singleMinMaxDetails": "Slider minimum value is {min}, maximum value is {max}", + "coreSlider.singleValueminDetails": "Value is {value}", + "coreSlider.singleValuemaxDetails": "Value is {value}", + "coreSlider.singleValueNowDetails": "Current value is {value}", + "coreSlider.multipleHandle1MinMaxDetails": "Range slider minimum value is {min}, maximum value is {max}", + "coreSlider.multipleHandle1ValueminDetails": "Value is {value}", + "coreSlider.multipleHandle1ValuemaxDetails": "Value is {value}", + "coreSlider.multipleHandle1ValueNowDetails": "Current value is {value}", + "coreSlider.multipleHandle2MinMaxDetails": "Range slider minimum value is {min}, maximum value is {max}", + "coreSlider.multipleHandle2ValueminDetails": "Value is {value}", + "coreSlider.multipleHandle2ValuemaxDetails": "Value is {value}", + "coreSlider.multipleHandle2ValueNowDetails": "Current value is {value}", + "coreSplitButton.expandButtonAriaLabel": "More actions", + "coreSplitButton.arialLabel": "Split button", + "coreSplitter.paginationItemAriaLabel": "Section", + "coreStepInput.incrementButtonTitle": "Increment", + "coreStepInput.decrementButtonTitle": "Decrement", + "coreStepInput.ariaRoleDescription": "Step Input", + "coreSwitch.semanticAcceptLabel": "Accept", + "coreSwitch.semanticDeclineLabel": "Decline", + "coreTabs.tabListExpandButtonText": "More", + "coreText.moreLabel": "{count} more", + "coreText.lessLabel": "Less", + "coreTime.componentAriaName": "Time picker", + "coreTime.increaseHoursLabel": "Increase hours", + "coreTime.hoursLabel": "Hrs", + "coreTime.decreaseHoursLabel": "Decrease hours", + "coreTime.increaseMinutesLabel": "Increase minutes", + "coreTime.minutesLabel": "Min", + "coreTime.decreaseMinutesLabel": "Decrease minutes", + "coreTime.increaseSecondsLabel": "Increase seconds", + "coreTime.secondsLabel": "Sec", + "coreTime.decreaseSecondsLabel": "Decrease seconds", + "coreTime.increasePeriodLabel": "Increase period", + "coreTime.periodLabel": "Period", + "coreTime.decreasePeriodLabel": "Decrease period", + "coreTime.navigationInstruction": "To move between items in this list, press top arrow or bottom arrow. To switch between lists press left arrow or right arrow.", + "coreTimePicker.timePickerInputLabel": "Time picker input", + "coreTimePicker.timePickerButtonLabel": "Open picker", + "coreToken.deleteButtonLabel": "Deletable", + "coreToken.ariaRoleDescription": "token", + "coreTokenizer.moreLabel": "{count} more", + "coreUploadCollection.menuOkText": "Ok", + "coreUploadCollection.menuCancelText": "Cancel", + "coreUploadCollection.menuEditAriaLabel": "Edit", + "coreUploadCollection.menuDeleteAriaLabel": "Delete", + "coreUploadCollection.menuOkAriaLabel": "Edit", + "coreUploadCollection.menuCancelAriaLabel": "Cancel", + "coreUploadCollection.formItemPlaceholder": "Filename", + "coreWizard.ariaLabel": "Wizard", + "coreBreadcrumb.overflowTitleMore": "More", + "platformActionBar.backButtonLabel": "Go Back", + "platformApprovalFlow.defaultWatchersLabel": "Watchers", + "platformApprovalFlow.defaultTitle": "Approval process", + "platformApprovalFlow.nextButtonAriaLabel": "Go to next slide", + "platformApprovalFlow.prevButtonAriaLabel": "Go to previous slide", + "platformApprovalFlow.editModeSaveButtonLabel": "Save", + "platformApprovalFlow.editModeExitButtonLabel": "Exit", + "platformApprovalFlow.emptyTitle": "Start adding approvers and watchers", + "platformApprovalFlow.emptyHint": "To add approvers click \"Add a step\". To add watchers, click the Watchers field.", + "platformApprovalFlow.addNodeDialogHeaderAddApprovers": "Add approvers", + "platformApprovalFlow.addNodeDialogHeaderEditApprover": "Edit approver", + "platformApprovalFlow.addNodeDialogHeaderAddApproverTeam": "User/Team", + "platformApprovalFlow.addNodeDialogHeaderDetail": "Detail", + "platformApprovalFlow.addNodeDialogNodeType": "Parallel or serial", + "platformApprovalFlow.addNodeDialogNodeTypeSerial": "Serial", + "platformApprovalFlow.addNodeDialogNodeTypeParallel": "Parallel", + "platformApprovalFlow.addNodeDialogApproverType": "Approver type", + "platformApprovalFlow.addNodeDialogApproverTypeUser": "A user", + "platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone": "Anyone on the team", + "platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone": "Everyone on the team", + "platformApprovalFlow.addNodeDialogUserOrTeam": "User/Team", + "platformApprovalFlow.addNodeDialogAddToNext": "Add to the next serial node", + "platformApprovalFlow.addNodeDialogDueDate": "Due date", + "platformApprovalFlow.addNodeSearchPlaceholder": "Search", + "platformApprovalFlow.addNodeAddActionBtnLabel": "Add", + "platformApprovalFlow.addNodeCancelActionBtnLabel": "Cancel", + "platformApprovalFlow.addNodeSelectApproverActionBtnLabel": "Select", + "platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel": "Cancel", + "platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel": "Close", + "platformApprovalFlow.userDetailsHeader": "Detail", + "platformApprovalFlow.userDetailsSendReminderBtnLabel": "Send reminder", + "platformApprovalFlow.userDetailsCancelBtnLabel": "Cancel", + "platformApprovalFlow.messagesApproverAddedSuccess": "1 approver has been added", + "platformApprovalFlow.messagesTeamAddedSuccess": "1 team has been added", + "platformApprovalFlow.messagesNodeEdited": "1 approver has been edited", + "platformApprovalFlow.messagesNodeRemovedSingular": "1 approver has been removed", + "platformApprovalFlow.messagesNodeRemovedPlural": "Approvers have been removed", + "platformApprovalFlow.messagesTeamRemoved": "1 team has been removed", + "platformApprovalFlow.messagesErrorBuildGraph": "There was an error when trying to build graph. Check the initial data.", + "platformApprovalFlow.messagesUndoAction": "Undo", + "platformApprovalFlow.nodeMembersCount": "{count} members", + "platformApprovalFlow.nodeVariousTeams": "Various teams", + "platformApprovalFlow.nodeStatusDueToday": "Due today", + "platformApprovalFlow.nodeStatusDueInXDays": " Due in {count} days", + "platformApprovalFlow.nodeStatusXDaysOverdue": "{count} days overdue", + "platformApprovalFlow.nodeActionAddApproversBefore": "Add approvers before", + "platformApprovalFlow.nodeActionAddApproversAfter": "Add approvers after", + "platformApprovalFlow.nodeActionAddApproversParallel": "Add parallel approvers", + "platformApprovalFlow.nodeActionEditApprover": "Edit approver", + "platformApprovalFlow.nodeActionRemove": "Remove", + "platformApprovalFlow.selectTypeDialogMoveApproverAs": "Move approver as", + "platformApprovalFlow.selectTypeDialogParallelOrSerial": "Parallel or serial", + "platformApprovalFlow.selectTypeDialogNodeTypeParallel": "Parallel approver", + "platformApprovalFlow.selectTypeDialogNodeTypeSerial": "Serial approver", + "platformApprovalFlow.selectTypeDialogConfirmButton": "Confirm", + "platformApprovalFlow.selectTypeDialogCancelButton": "Cancel", + "platformApprovalFlow.toolbarAddStepButton": "Add a step", + "platformApprovalFlow.toolbarEditButton": "Edit", + "platformApprovalFlow.toolbarAddApproversBefore": "Add approvers before", + "platformApprovalFlow.toolbarAddApproversAfter": "Add approvers after", + "platformApprovalFlow.toolbarAddApproversParallel": "Add parallel approvers", + "platformApprovalFlow.toolbarRemove": "Remove", + "platformApprovalFlow.toolbarEditApprover": "Edit approver", + "platformApprovalFlow.watchersInputPlaceholder": "Search here..", + "platformApprovalFlow.userListSelectedItemsCountSingular": "1 item selected", + "platformApprovalFlow.userListSelectedItemsCountPlural": "{count} items selected", + "platformApprovalFlow.statusApproved": "approved", + "platformApprovalFlow.statusRejected": "rejected", + "platformApprovalFlow.statusInProgress": "in progress", + "platformApprovalFlow.statusNotStarted": "not started", + "platformFeedInput.userTitle": "User", + "platformVHD.selectionBarLabel": "Selected and condition items", + "platformVHD.selectedAndConditionLabel": "Selected Items and Conditions", + "platformVHD.footerClearSelectedTitle": "clear selected items", + "platformVHD.footerClearSelectedAriaLabel": "clear selected items", + "platformVHD.searchButtonLabel": "Go", + "platformVHD.successButtonLabel": "OK", + "platformVHD.cancelButtonLabel": "Cancel", + "platformVHD.selectedEmptyLabel": "No Items or Conditions Selected", + "platformVHD.searchPlaceholder": "Search", + "platformVHD.searchAdvancedSearchLabel": "Filters", + "platformVHD.searchShowAdvancedSearchLabel": "Show filters", + "platformVHD.searchHideAdvancedSearchLabel": "Hide filters", + "platformVHD.searchShowAllAdvancedSearchLabel": "Show all filters", + "platformVHD.searchHideAllAdvancedSearchLabel": "Hide all filters", + "platformVHD.selectTabDisplayCountLabel": "Items ({count})", + "platformVHD.selectTabMoreBtnLabel": "More", + "platformVHD.selectTabCountHiddenA11yLabel": "contains {rowCount} rows and {colCount} columns", + "platformVHD.selectMobileTabBackBtnTitle": "Back", + "platformVHD.selectMobileTabBtnOpenDialogLabel": "Open dialog", + "platformVHD.selectMobileTabTitle": "{title} tab", + "platformVHD.selectMobileConditionEmpty": "Empty", + "platformVHD.defineConditionTitle": "Product", + "platformVHD.defineConditionSelectedValueHiddenA11yLabel": "selected value {value}", + "platformVHD.defineConditionConditionsGroupHeaderInclude": "Include", + "platformVHD.defineConditionConditionsGroupHeaderExclude": "Exclude", + "platformVHD.defineConditionFromPlaceholder": "from", + "platformVHD.defineConditionToPlaceholder": "to", + "platformVHD.defineConditionValuePlaceholder": "value", + "platformVHD.defineConditionRemoveConditionButtonTitle": "Remove Condition", + "platformVHD.defineConditionAddConditionButtonLabel": "Add", + "platformVHD.defineConditionAddConditionButtonTitle": "Add Condition", + "platformVHD.defineConditionConditionStrategyLabelContains": "contains", + "platformVHD.defineConditionConditionStrategyLabelEqualTo": "equal to", + "platformVHD.defineConditionConditionStrategyLabelBetween": "between", + "platformVHD.defineConditionConditionStrategyLabelStartsWith": "starts with", + "platformVHD.defineConditionConditionStrategyLabelEndsWith": "ends with", + "platformVHD.defineConditionConditionStrategyLabelLessThan": "less than", + "platformVHD.defineConditionConditionStrategyLabelLessThanEqual": "less than equal", + "platformVHD.defineConditionConditionStrategyLabelGreaterThan": "greater than", + "platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual": "greater than equal", + "platformVHD.defineConditionConditionStrategyLabelEmpty": "empty", + "platformVHD.defineConditionConditionStrategyLabelNotEqualTo": "not equal to", + "platformVHD.defineConditionConditionStrategyLabelNotEmpty": "not empty", + "platformVHD.defineConditionMaxCountError": "Enter a value with no more than {count} characters", + "platformVHD.selectTabTitle": "Select from list", + "platformVHD.searchTableEmptyMessage": "Use the search to get results", + "platformVHD.defineTabTitle": "Define Conditions", + "platformCombobox.countListResultsSingular": "1 result list item", + "platformCombobox.countListResultsPlural": "{count} result list items", + "platformMultiCombobox.inputGlyphAriaLabel": "Select Options", + "platformMultiCombobox.inputIconTitle": "Select Options", + "platformMultiCombobox.mobileShowAllItemsButton": "Show all items", + "platformMultiCombobox.mobileShowSelectedItemsButton": "Show selected items", + "platformTextarea.counterMessageCharactersOverTheLimitSingular": "1 character over the limit", + "platformTextarea.counterMessageCharactersOverTheLimitPlural": "{count} characters over the limit", + "platformTextarea.counterMessageCharactersRemainingSingular": "1 character remaining", + "platformTextarea.counterMessageCharactersRemainingPlural": "{count} characters remaining", + "platformLink.roleDescriptionWithMedia": "Media: {media}", + "platformList.loadingAriaLabel": "loading", + "platformObjectListItem.detailsActionAriaLabel": "detail", + "platformObjectListItem.deleteActionAriaLabel": "delete", + "platformStandardListItem.detailsActionAriaLabel": "detail", + "platformStandardListItem.deleteActionAriaLabel": "delete", + "platformSearchField.clearButtonTitle": "Clear", + "platformSearchField.submitButtonTitle": "Search", + "platformSearchField.searchInputLabel": "Search", + "platformSearchField.synchronizeButtonTitle": "Synchronize", + "platformSearchField.searchSuggestionMessage": "{count} suggestions found.", + "platformSearchField.searchSuggestionNavigateMessage": "use up and down arrows to navigate", + "platformSmartFilterBar.searchPlaceholder": "Search", + "platformSmartFilterBar.submitButtonLabel": "Go", + "platformSmartFilterBar.filtersButtonLabel": "Filters ({filtersCount})", + "platformSmartFilterBar.showFiltersButtonLabel": "Show filters", + "platformSmartFilterBar.hideFiltersButtonLabel": "Hide filters", + "platformSmartFilterBar.defineConditionsRemoveConditionButtonTitle": "Remove condition", + "platformSmartFilterBar.defineConditionsAddConditionButtonLabel": "Add condition", + "platformSmartFilterBar.defineConditionsSubmitButtonLabel": "Go", + "platformSmartFilterBar.defineConditionsCancelButton": "Cancel", + "platformSmartFilterBar.selectFiltersHeader": "Filters", + "platformSmartFilterBar.selectFiltersAvailableFiltersText": "Available filters", + "platformSmartFilterBar.selectFiltersFilterColumnLabel": "Filter", + "platformSmartFilterBar.selectFiltersActiveColumnLabel": "Active", + "platformSmartFilterBar.selectFiltersSubmitButtonLabel": "Go", + "platformSmartFilterBar.selectFiltersCancelButton": "Cancel", + "platformSmartFilterBar.filterConditionContains": "contains", + "platformSmartFilterBar.filterConditionEqualTo": "equal to", + "platformSmartFilterBar.filterConditionBetween": "between", + "platformSmartFilterBar.filterConditionBeginsWith": "starts with", + "platformSmartFilterBar.filterConditionEndsWith": "ends with", + "platformSmartFilterBar.filterConditionLessThan": "less than", + "platformSmartFilterBar.filterConditionLessThanOrEqualTo": "less than or equal to", + "platformSmartFilterBar.filterConditionGreaterThan": "greater than", + "platformSmartFilterBar.filterConditionGreaterThanOrEqualTo": "greater than or equal to", + "platformSmartFilterBar.filterConditionAfter": "after", + "platformSmartFilterBar.filterConditionOnOrAfter": "on or after", + "platformSmartFilterBar.filterConditionBefore": "before", + "platformSmartFilterBar.filterConditionBeforeOrOn": "before or on", + "platformSmartFilterBar.filterConditionValuePlaceholder": "value", + "platformSmartFilterBar.filterConditionValueFromPlaceholder": "from", + "platformSmartFilterBar.filterConditionValueToPlaceholder": "to", + "platformSmartFilterBar.settingsCategoryAll": "All", + "platformSmartFilterBar.settingsCategoryVisible": "Visible", + "platformSmartFilterBar.settingsCategoryActive": "Active", + "platformSmartFilterBar.settingsCategoryVisibleAndActive": "Visible and active", + "platformSmartFilterBar.settingsCategoryMandatory": "Mandatory", + "platformSmartFilterBar.manageFieldConditions": "Manage field conditions", + "platformSmartFilterBar.refreshButtonAriaLabel": "Refresh", + "platformTable.headerMenuSortAsc": "Sort Ascending", + "platformTable.headerMenuSortDesc": "Sort Descending", + "platformTable.headerMenuGroup": "Group", + "platformTable.headerMenuFreeze": "Freeze", + "platformTable.headerMenuEndFreeze": "Freeze to End", + "platformTable.headerMenuUnfreeze": "Unfreeze", + "platformTable.headerMenuFilter": "Filter", + "platformTable.defaultEmptyMessage": "No data found", + "platformTable.emptyCell": "Empty", + "platformTable.noVisibleColumnsMessage": "Right now, there are no visible columns in the table. Please select the columns you need in the table settings.", + "platformTable.resetChangesButtonLabel": "Reset", + "platformTable.editableCellNumberPlaceholder": "Enter value", + "platformTable.editableCellDatePlaceholder": "Enter value", + "platformTable.editableCellStringPlaceholder": "Enter value", + "platformTable.P13ColumnsDialogHeader": "Columns", + "platformTable.P13ColumnsDialogSearchPlaceholder": "Search", + "platformTable.P13ColumnsDialogsShowSelected": "Show Selected", + "platformTable.P13ColumnsDialogShowAll": "Show all", + "platformTable.P13ColumnsDialogSelectAll": "Select All ({selectedColumnsCount}/{selectableColumnsCount})", + "platformTable.P13ColumnsDialogConfirmationBtnLabel": "OK", + "platformTable.P13ColumnsDialogCancelBtnLabel": "Cancel", + "platformTable.P13ColumnsDialogMoveToTopBtn": "Move to Top", + "platformTable.P13ColumnsDialogMoveUpBtn": "Move Up", + "platformTable.P13ColumnsDialogMoveDownBtn": "Move Down", + "platformTable.P13ColumnsDialogMoveToBottomBtn": "Move to Bottom", + "platformTable.P13FilterStrategyLabelBetween": "between", + "platformTable.P13FilterStrategyLabelContains": "contains", + "platformTable.P13FilterStrategyLabelBeginsWith": "begins with", + "platformTable.P13FilterStrategyLabelEndsWith": "ends with", + "platformTable.P13FilterStrategyLabelEqualTo": "equal to", + "platformTable.P13FilterStrategyLabelGreaterThan": "greater than", + "platformTable.P13FilterStrategyLabelGreaterThanOrEqualTo": "greater than or equal to", + "platformTable.P13FilterStrategyLabelLessThan": "less than", + "platformTable.P13FilterStrategyLabelLessThanOrEqualTo": "less than or equal to", + "platformTable.P13FilterStrategyLabelAfter": "after", + "platformTable.P13FilterStrategyLabelOnOrAfter": "on or after", + "platformTable.P13FilterStrategyLabelBefore": "before", + "platformTable.P13FilterStrategyLabelBeforeOrOn": "before or on", + "platformTable.P13FilterStrategyLabelNotDefined": "Not Defined", + "platformTable.P13FilterBooleanOptionNotDefined": " ", + "platformTable.P13FilterBooleanOptionTrue": "Yes", + "platformTable.P13FilterBooleanOptionFalse": "No", + "platformTable.P13FilterDialogHeader": "Filter By", + "platformTable.P13FilterDialogIncludePanelTitleWithCount": "Include ({count})", + "platformTable.P13FilterDialogIncludePanelTitleWithoutCount": "Include", + "platformTable.P13FilterDialogExcludePanelTitleWithCount": "Exclude ({count})", + "platformTable.P13FilterDialogExcludePanelTitleWithoutCount": "Exclude", + "platformTable.P13FilterDialogRemoveFilterBtnTitle": "Remove Filter", + "platformTable.P13FilterDialoAddFilterBtnTitle": "Add Filter", + "platformTable.P13FilterDialogConfirmationBtnLabel": "OK", + "platformTable.P13FilterDialogCancelBtnLabel": "Cancel", + "platformTable.P13GroupDialogHeader": "Group", + "platformTable.P13GroupDialogNoneSelectedColumnSelectPlaceholder": "(none)", + "platformTable.P13GroupDialogShowFieldAsColumnCheckboxLabel": "Show Field as Column", + "platformTable.P13GroupDialogRemoveGroupBtnTitle": "Remove", + "platformTable.P13GroupDialogAddNewGroupBtnTitle": "Add new", + "platformTable.P13GroupDialogConfirmationBtnLabel": "OK", + "platformTable.P13GroupDialogCancelBtnLabel": "Cancel", + "platformTable.P13SortDialogHeader": "Sort", + "platformTable.P13SortDialogNoneSelectedColumn": "(none)", + "platformTable.P13SortDialogNoneSelectedSorting": "(none)", + "platformTable.P13SortDialogSortOrderSelectOptionAsc": "Ascending", + "platformTable.P13SortDialogSortOrderSelectOptionDesc": "Descending", + "platformTable.P13SortDialogRemoveSortBtnTitle": "Remove", + "platformTable.P13SortDialogAddNewSortBtnTitle": "Add new", + "platformTable.P13SortDialogConfirmationBtnLabel": "OK", + "platformTable.P13SortDialogCancelBtnLabel": "Cancel", + "platformTable.toolbarSearchPlaceholder": "Search", + "platformTable.toolbarActionCreateButtonLabel": "Create", + "platformTable.toolbarActionSaveButtonLabel": "Save", + "platformTable.toolbarActionCancelButtonLabel": "Cancel", + "platformTable.toolbarActionSortButtonTitle": "Sort", + "platformTable.toolbarActionFilterButtonTitle": "Filter", + "platformTable.toolbarActionGroupButtonTitle": "Group", + "platformTable.toolbarActionColumnsButtonTitle": "Columns", + "platformTable.toolbarActionExpandAllButtonTitle": "Expand all", + "platformTable.toolbarActionCollapseAllButtonTitle": "Collapse all", + "platformTable.filterDialogNotFilteredLabel": "(Not Filtered)", + "platformTable.filterDialogFilterByLabel": "Filter by: {filterLabel}", + "platformTable.filterDialogFilterTitle": "Filter", + "platformTable.filterDialogFilterBy": "Filter By", + "platformTable.filterDialogConfirmBtnLabel": "OK", + "platformTable.filterDialogCancelBtnLabel": "Cancel", + "platformTable.groupDialogHeader": "Group", + "platformTable.groupDialogGroupOrderHeader": "Group Order", + "platformTable.groupDialogGroupOrderAsc": "Ascending", + "platformTable.groupDialogGroupOrderDesc": "Descending", + "platformTable.groupDialogGroupByHeader": "Group By", + "platformTable.groupDialogNotGroupedLabel": "(Not Grouped)", + "platformTable.groupDialogConfirmBtnLabel": "OK", + "platformTable.groupDialogCancelBtnLabel": "Cancel", + "platformTable.sortDialogHeader": "Sort", + "platformTable.sortDialogSortOrderHeader": "Sort Order", + "platformTable.sortDialogSortOrderAsc": "Ascending", + "platformTable.sortDialogSortOrderDesc": "Descending", + "platformTable.sortDialogSortByHeader": "Sort By", + "platformTable.sortDialogNotSortedLabel": "(Not Sorted)", + "platformTable.sortDialogConfirmBtnLabel": "OK", + "platformTable.sortDialogCancelBtnLabel": "Cancel", + "platformTable.selectAllCheckboxLabel": "Select all", + "platformTable.deselectAllCheckboxLabel": "Deselect all", + "platformTable.deselectSingleRow": "To deselect row, press SPACEBAR", + "platformTable.selectSingleRow": "To select row, press SPACEBAR", + "platformTable.deselectSingleRowTitle": "Click to deselect", + "platformTable.selectSingleRowTitle": "Click to select", + "platformThumbnail.detailsGotoPreviousButtonTitle": "Go to Previous", + "platformThumbnail.detailsGotoNextButtonTitle": "Go to Next", + "platformThumbnail.detailsDialogCloseBtnLabel": "Close", + "platformThumbnail.roleDescription": "Image", + "platformUploadCollection.moveToTitle": "Move to", + "platformUploadCollection.moveToTitleFolder": "Folder", + "platformUploadCollection.moveToNewFolderBtnLabel": "New Folder", + "platformUploadCollection.moveToAllFilesSubHeaderLabel": "All files", + "platformUploadCollection.moveToConfirmBtn": "Move", + "platformUploadCollection.moveToCloseBtn": "Cancel", + "platformUploadCollection.newFolderTitle": "New folder", + "platformUploadCollection.newFolderAtRootInputLabel": "Name of new folder", + "platformUploadCollection.newFolderAtFolderInputLabel": "Name of new folder inside of {folderName}", + "platformUploadCollection.newFolderInputPlaceholder": "Type here..", + "platformUploadCollection.newFolderInputErrorLabel": "Maximum {count} characters allowed", + "platformUploadCollection.newFolderDialogCreateBtnLabel": "Create", + "platformUploadCollection.newFolderDialogCancelBtnLabel": "Cancel", + "platformUploadCollection.breadcrumbLabelAllFiles": "All files", + "platformUploadCollection.breadcrumbLabelAllFilesWithTotal": "All files ({total})", + "platformUploadCollection.searchPlaceholder": "Search", + "platformUploadCollection.addBtnLabel": "Add", + "platformUploadCollection.newFolderBtnLabel": "New Folder", + "platformUploadCollection.moveToBtnLabel": "Move to", + "platformUploadCollection.downloadBtnLabel": "Download", + "platformUploadCollection.updateVersionBtnLabel": "Update version", + "platformUploadCollection.removeBtnLabel": "Remove", + "platformUploadCollection.folderIconTitle": "Folder icon", + "platformUploadCollection.fileIconTitle": "File icon", + "platformUploadCollection.editFileNameInputPlaceholder": "Enter a name", + "platformUploadCollection.editFileNameFileAlreadyExistsError": "File with this name already exists", + "platformUploadCollection.editFileNameFolderAlreadyExistsError": "Folder with this name already exists", + "platformUploadCollection.itemStatusSuccessful": "Successful", + "platformUploadCollection.itemStatusUnsuccessful": "Unsuccessful", + "platformUploadCollection.uploadNewFileAfterFailAction": "Run", + "platformUploadCollection.cancelUploadNewFileAction": "Cancel", + "platformUploadCollection.itemMenuBtnTitle": "More", + "platformUploadCollection.dragDropAreaText": "Drag files to upload", + "platformUploadCollection.noDataText": "No files found", + "platformUploadCollection.noDataDescription": "Drop files to upload, or use the “Add” button.", + "platformUploadCollection.paginationTotal": "Showing {from}-{to} of {total}", + "platformUploadCollection.resultsPerPage": "Results per page", + "platformUploadCollection.messageCreateFailed": "Failed to create {folderName}.", + "platformUploadCollection.messageCreateSuccess": "{folderName} has been created.", + "platformUploadCollection.messageUpdateVersionFailed": "Failed to update version of {folderName}.", + "platformUploadCollection.messageUpdateVersionSuccess": "{folderName} version has been updated.", + "platformUploadCollection.messageFileRenameFailed": "Failed to rename \"{from}\" to \"{to}.\"", + "platformUploadCollection.messageFileRenameSuccess": "\"{from}\" has been renamed to \"{to}\".", + "platformUploadCollection.messageRemoveFoldersAndFilesFailed": "Failed to remove {foldersCount} folders and {filesCount} files.", + "platformUploadCollection.messageRemoveFoldersAndFilesSuccess": "{foldersCount} folders and {filesCount} files have been removed.", + "platformUploadCollection.messageRemoveFoldersFailed": "Failed to remove {foldersCount} folders.", + "platformUploadCollection.messageRemoveFoldersSuccess": "{foldersCount} folders have been removed.", + "platformUploadCollection.messageRemoveFilesFailed": "Failed to remove {filesCount} files.", + "platformUploadCollection.messageRemoveFilesSuccess": "{filesCount} files have been removed.", + "platformUploadCollection.messageRemoveFileOrFolderFailed": "Failed to remove {name}.", + "platformUploadCollection.messageRemoveFileOrFolderSuccess": "{name} has been removed.", + "platformUploadCollection.messageMoveFoldersAndFilesFailed": "Failed to move {foldersCount} folders and {filesCount} files to {to}.", + "platformUploadCollection.messageMoveFoldersAndFilesSuccess": "{foldersCount} folders and {filesCount} files have been moved to {to}.", + "platformUploadCollection.messageMoveFoldersFailed": "Failed to move {foldersCount} folders to {to}.", + "platformUploadCollection.messageMoveFoldersSuccess": "{foldersCount} folders have been moved to {to}.", + "platformUploadCollection.messageMoveFilesFailed": "Failed to move {filesCount} files to {to}.", + "platformUploadCollection.messageMoveFilesSuccess": "{filesCount} files have been moved to {to}.", + "platformUploadCollection.messageMoveFileOrFolderFailed": "Failed to move {name} to {to}.", + "platformUploadCollection.messageMoveFileOrFolderSuccess": "{name} has been moved to {to}.", + "platformUploadCollection.messageMoveRootFoldersAndFilesFailed": "Failed to move {foldersCount} folders and {filesCount} files to all files.", + "platformUploadCollection.messageMoveRootFoldersAndFilesSuccess": "{foldersCount} folders and {filesCount} files have been moved to all files.", + "platformUploadCollection.messageMoveRootFoldersFailed": "Failed to move {foldersCount} folders to all files.", + "platformUploadCollection.messageMoveRootFoldersSuccess": "{foldersCount} folders have been moved to all files.", + "platformUploadCollection.messageMoveRootFilesFailed": "Failed to move {filesCount} files to all files.", + "platformUploadCollection.messageMoveRootFilesSuccess": "{filesCount} files have been moved to all files.", + "platformUploadCollection.messageMoveRootFileOrFolderFailed": "Failed to move {name} to all files.", + "platformUploadCollection.messageMoveRootFileOrFolderSuccess": "{name} has been moved to all files.", + "platformUploadCollection.messageFileTypeMismatchPlural": "{filesCount} files have the wrong type. Allowed types: {allowedTypes}.", + "platformUploadCollection.messageFileTypeMismatchSingular": "The file \"{fileName}\" has the wrong type. Allowed types: {allowedTypes}.", + "platformUploadCollection.messageFileSizeExceededPlural": "{filesCount} files exceeded the maximum file size. Allowed max file size: {maxFileSize}.", + "platformUploadCollection.messageFileSizeExceededSingular": "The file \"{fileName}\" exceeded the maximum file size. Allowed max file size: {maxFileSize}.", + "platformUploadCollection.messageFileNameLengthExceededPlural": "{filesCount} files exceeded the maximum filename length. Allowed filename length: {maxFilenameLength} characters.", + "platformUploadCollection.messageFileNameLengthExceededSingular": "The name \"{fileName}\" exceeded the maximum filename length. Allowed filename length: {maxFilenameLength} characters.", + "platformWizardGenerator.summarySectionEditStep": "Edit", + "platformMessagePopover.allErrors": "All", + "platformMessagePopover.defaultErrors.email": "Email is invalid", + "platformMessagePopover.defaultErrors.max": "The field exceeds maximum value", + "platformMessagePopover.defaultErrors.maxLength": "The field exceeds maximum length", + "platformMessagePopover.defaultErrors.min": "The field value is less than allowed", + "platformMessagePopover.defaultErrors.minLength": "The field length is less than allowed", + "platformMessagePopover.defaultErrors.pattern": "The field value is invalid", + "platformMessagePopover.defaultErrors.required": "The field is mandatory", + "platformMessagePopover.defaultErrors.requiredTrue": "The field is mandatory", + "platformVariantManagement.manage": "Manage", + "platformVariantManagement.saveAs": "Save as", + "platformVariantManagement.saveView": "Save View", + "platformVariantManagement.save": "Save", + "platformVariantManagement.myViews": "My Views", + "platformVariantManagement.view": "View", + "platformVariantManagement.setAsDefault": "Set as Default", + "platformVariantManagement.public": "Public", + "platformVariantManagement.applyAutomatically": "Apply Automatically", + "platformVariantManagement.requiredFieldError": "This field is required.", + "platformVariantManagement.nameTakenFieldError": "Variant with such name already exists. Please chose a different name.", + "platformVariantManagement.cancel": "Cancel", + "platformVariantManagement.manageViews": "Manage Views", + "platformVariantManagement.markAsFavourite": "Mark as Favourite", + "platformVariantManagement.sharing": "Sharing", + "platformVariantManagement.default": "Default", + "platformVariantManagement.createdBy": "Created By", + "platformVariantManagement.removeVariant": "Remove View", + "platformVariantManagement.search": "Search", + "platformVariantManagement.access.public": "Public", + "platformVariantManagement.access.private": "Private", + "platformSelect.selectOptionLabel": "Select an Option", + "fnSlider.minMaxDetails": "Slider minimum value is {min}, maximum value is {max}", + "fnSlider.valueminDetails": "Value is {value}", + "fnSlider.valuemaxDetails": "Value is {value}", + "fnSlider.valueNowDetails": "Current value is {value}", + "fnSwitch.semanticAcceptLabel": "Accept", + "fnSwitch.semanticDeclineLabel": "Decline", + "coreTree.expand": "Expand node", + "coreTree.collapse": "Collapse node", + "coreTree.noData": "No data" +} diff --git a/libs/i18n/src/lib/translations/translations_fr-FR.json b/libs/i18n/src/lib/translations/translations_fr-FR.json new file mode 100644 index 00000000000..bd9dd3bdccd --- /dev/null +++ b/libs/i18n/src/lib/translations/translations_fr-FR.json @@ -0,0 +1,503 @@ +{ + "coreMultiComboBox.selectAllLabel": "Tout sélectionner ({selectedItems} sur {totalItems})", + "coreCarousel.leftNavigationBtnLabel": "Aller à l'élément précédent", + "coreCarousel.rightNavigationBtnLabel": "Aller à l'élément suivant", + "coreDatePicker.dateInputLabel": "Sélecteur de date", + "coreDatePicker.dateRangeInputLabel": "Sélecteur de la plage de date", + "coreDatePicker.displayCalendarToggleLabel": "Ouvrir la sélection", + "coreDatePicker.valueStateSuccessMessage": "État de la valeur de Succès", + "coreDatePicker.valueStateInformationMessage": "État de la valeur d'Information", + "coreDatePicker.valueStateWarningMessage": "État de la valeur d'Avertissement", + "coreDatePicker.valueStateErrorMessage": "État de la valeur d'Erreur", + "coreDatetimePicker.datetimeInputLabel": "Entrée de la date", + "coreDatetimePicker.displayDatetimeToggleLabel": "Affichage du Calendrier", + "coreDatetimePicker.displayTypeDateLabel": "Date", + "coreDatetimePicker.displayTypeTimeLabel": "Heure", + "coreDatetimePicker.datetimeOkLabel": "Ok", + "coreDatetimePicker.datetimeCancelLabel": "Annuler", + "coreFeedListItem.moreLabel": "Plus", + "coreFeedListItem.lessLabel": "Moins", + "coreGridList.filterBarCancelButtonTitle": "Annuler", + "coreGridList.listItemStatusAriaLabel": "L'élément a un statut. Statut: {status}.", + "coreGridList.listItemCounterAriaLabel": "L'élément a {count} d'enfants.", + "coreGridList.listItemButtonDetailsTitle": "Détails", + "coreGridList.listItemButtonDeleteTitle": "Supprimer", + "coreGridList.listItemStatusContainsErrors": "Comporte des erreurs", + "coreGridList.listItemStatusLocked": "Bloqué", + "coreGridList.listItemStatusDraft": "Brouillon", + "coreMultiInput.multiInputAriaLabel": "Multi Value Input", + "coreMultiInput.tokensCountText": "Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.", + "coreMessageStrip.dismissLabel": "Rejeter", + "coreNavigation.mainNavigation": "Main Navigation", + "coreNavigation.navigationPath": "Navigation Path", + "coreNestedList.linkItemAriaLabel": "Élément de l'arborescence {itemDetails}, {index} of {total}{selectedDescription}", + "coreOverflowLayout.moreItemsButton": "{count} plus", + "corePagination.pageLabel": "Page {pageNumber}", + "corePagination.currentPageAriaLabel": "Page {pageNumber} est la page en cours", + "corePagination.labelBeforeInputMobile": "Page:", + "corePagination.labelAfterInputMobile": "de {totalCount}", + "corePagination.inputAriaLabel": "Entrée de page, Page actuelle, Page {pageNumber} of {totalCount}", + "corePagination.itemsPerPageLabel": "Résultats par pages:", + "corePagination.firstLabel": "Premier", + "corePagination.previousLabel": "Précédent", + "corePagination.nextLabel": "Prochain", + "corePagination.lastLabel": "Dernier", + "corePagination.ariaLabel": "Pagination", + "corePagination.totalResultsLabel": "{totalCount} Résultats", + "coreProductSwitch.ariaLabel": "Échange de produit", + "coreShellbar.collapsedItemMenuLabel": "Menu d'éléments réduit", + "coreShellbar.cancel": "Cancel", + "coreShellbar.search": "Search", + "coreSlider.singleMinMaxDetails": "La valeur minimale du curseur est {min}, la valeur maximale est {max}", + "coreSlider.singleValueminDetails": "La valeur est {value}", + "coreSlider.singleValuemaxDetails": "La valeur est {value}", + "coreSlider.singleValueNowDetails": "La valeur actuelle est {value}", + "coreSlider.multipleHandle1MinMaxDetails": "La valeur minimale du curseur est {min}, la valeur maximale est {max}", + "coreSlider.multipleHandle1ValueminDetails": "La valeur est {value}", + "coreSlider.multipleHandle1ValuemaxDetails": "La valeur est {value}", + "coreSlider.multipleHandle1ValueNowDetails": "La valeur actuelle est {value}", + "coreSlider.multipleHandle2MinMaxDetails": "La valeur minimale du curseur est {min}, la valeur maximale est {max}", + "coreSlider.multipleHandle2ValueminDetails": "La valeur est {value}", + "coreSlider.multipleHandle2ValuemaxDetails": "La valeur est {value}", + "coreSlider.multipleHandle2ValueNowDetails": "La valeur actuelle est {value}", + "coreSplitButton.expandButtonAriaLabel": "Plus d'actions", + "coreSplitButton.arialLabel": "Bouton Fractionner", + "coreSplitter.paginationItemAriaLabel": "Section", + "coreStepInput.incrementButtonTitle": "Incrément", + "coreStepInput.decrementButtonTitle": "Décrément", + "coreStepInput.ariaRoleDescription": "Entrée de l'étape", + "coreSwitch.semanticAcceptLabel": "Accepter", + "coreSwitch.semanticDeclineLabel": "Décliner", + "coreTabs.tabListExpandButtonText": "Plus d'infos", + "coreText.moreLabel": "Plus d'infos", + "coreText.lessLabel": "Moins", + "coreTime.componentAriaName": "Sélecteur de temps", + "coreTime.increaseHoursLabel": "Augmenter les heures", + "coreTime.hoursLabel": "Hrs", + "coreTime.decreaseHoursLabel": "Diminuer les heures", + "coreTime.increaseMinutesLabel": "Augmenter les minutes", + "coreTime.minutesLabel": "Min", + "coreTime.decreaseMinutesLabel": "Diminuer les minutes", + "coreTime.increaseSecondsLabel": "Augmenter les secondes", + "coreTime.secondsLabel": "Sec", + "coreTime.decreaseSecondsLabel": "Diminuer les secondes", + "coreTime.increasePeriodLabel": "Augmenter la durée", + "coreTime.periodLabel": "Period", + "coreTime.decreasePeriodLabel": "Diminuer la durée", + "coreTime.navigationInstruction": "Pour vous déplacer entre les éléments de cette liste, appuyez sur la flèche du haut ou la flèche du bas. Pour passer d'une liste à l'autre, appuyez sur la flèche gauche ou la flèche droite.", + "coreTimePicker.timePickerInputLabel": "Saisie du sélecteur de temps", + "coreTimePicker.timePickerButtonLabel": "Ouvrir le sélecteur", + "coreToken.deleteButtonLabel": "Supprimable", + "coreToken.ariaRoleDescription": "jeton", + "coreTokenizer.moreLabel": "{count} plus", + "coreUploadCollection.menuOkText": "Ok", + "coreUploadCollection.menuCancelText": "Annuler", + "coreUploadCollection.menuEditAriaLabel": "Éditer", + "coreUploadCollection.menuDeleteAriaLabel": "Effacer", + "coreUploadCollection.menuOkAriaLabel": "Éditer", + "coreUploadCollection.menuCancelAriaLabel": "Annuler", + "coreUploadCollection.formItemPlaceholder": "Nom de fichier", + "coreWizard.ariaLabel": "Assistant", + "coreBreadcrumb.overflowTitleMore": "Plus d'infos", + "platformActionBar.backButtonLabel": "Revenir en arrière", + "platformApprovalFlow.defaultWatchersLabel": "Observateurs", + "platformApprovalFlow.defaultTitle": "Procédure d'approbation", + "platformApprovalFlow.nextButtonAriaLabel": "Aller à la diapo suivante", + "platformApprovalFlow.prevButtonAriaLabel": "Aller à la diapo précédente", + "platformApprovalFlow.editModeSaveButtonLabel": "Sauvegarder", + "platformApprovalFlow.editModeExitButtonLabel": "Sortir", + "platformApprovalFlow.emptyTitle": "Commencez à ajouter des approbateurs et des observateurs", + "platformApprovalFlow.emptyHint": "Pour ajouter des approbateurs, cliquez sur \"Ajouter une étape\". Pour ajouter des observateurs, cliquez sur le champ Observateurs", + "platformApprovalFlow.addNodeDialogHeaderAddApprovers": "Ajout d'approbateurs", + "platformApprovalFlow.addNodeDialogHeaderEditApprover": "Editer l'approbateur", + "platformApprovalFlow.addNodeDialogHeaderAddApproverTeam": "Utilisateur/Équipe", + "platformApprovalFlow.addNodeDialogHeaderDetail": "Détail", + "platformApprovalFlow.addNodeDialogNodeType": "Parallèle ou en série", + "platformApprovalFlow.addNodeDialogNodeTypeSerial": "En Série", + "platformApprovalFlow.addNodeDialogNodeTypeParallel": "En Parallèle", + "platformApprovalFlow.addNodeDialogApproverType": "Type d'approuveur", + "platformApprovalFlow.addNodeDialogApproverTypeUser": "Un usager", + "platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone": "Toute personne de l'équipe", + "platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone": "Tout le monde dans l'équipe", + "platformApprovalFlow.addNodeDialogUserOrTeam": "Utilisateur/Équipe", + "platformApprovalFlow.addNodeDialogAddToNext": "Ajouter au nœud de série suivant", + "platformApprovalFlow.addNodeDialogDueDate": "Date limite", + "platformApprovalFlow.addNodeSearchPlaceholder": "Recherchez", + "platformApprovalFlow.addNodeAddActionBtnLabel": "Ajoutez", + "platformApprovalFlow.addNodeCancelActionBtnLabel": "Annuler", + "platformApprovalFlow.addNodeSelectApproverActionBtnLabel": "Sélectionner", + "platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel": "Annuler", + "platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel": "Fermer", + "platformApprovalFlow.userDetailsHeader": "Détail", + "platformApprovalFlow.userDetailsSendReminderBtnLabel": "Envoyer un rappel", + "platformApprovalFlow.userDetailsCancelBtnLabel": "Annuler", + "platformApprovalFlow.messagesApproverAddedSuccess": "1 approbateur a été ajouté", + "platformApprovalFlow.messagesTeamAddedSuccess": "1 équipe a été ajoutée", + "platformApprovalFlow.messagesNodeEdited": "1 approbateur a été modifié", + "platformApprovalFlow.messagesNodeRemovedSingular": "1 approbateur a été supprimé", + "platformApprovalFlow.messagesNodeRemovedPlural": "Les approbateurs ont été supprimés", + "platformApprovalFlow.messagesTeamRemoved": "1 équipe a été retirée", + "platformApprovalFlow.messagesErrorBuildGraph": "Il y a eu une erreur en essayant de construire le graphique. Vérifiez les données initiales", + "platformApprovalFlow.messagesUndoAction": "Annuler", + "platformApprovalFlow.nodeMembersCount": "{nombre} membres", + "platformApprovalFlow.nodeVariousTeams": "Plusieurs équipes", + "platformApprovalFlow.nodeStatusDueToday": "À rendre aujourd'hui", + "platformApprovalFlow.nodeStatusDueInXDays": " Échéance dans {nombre} jours", + "platformApprovalFlow.nodeStatusXDaysOverdue": "{nombre} jours de retard", + "platformApprovalFlow.nodeActionAddApproversBefore": "Ajoutez des approbateurs avant", + "platformApprovalFlow.nodeActionAddApproversAfter": "Ajoutez des approbateurs après", + "platformApprovalFlow.nodeActionAddApproversParallel": "Ajouter des approbateurs en parallèle", + "platformApprovalFlow.nodeActionEditApprover": "Editer l'approbateur", + "platformApprovalFlow.nodeActionRemove": "Supprimer", + "platformApprovalFlow.selectTypeDialogMoveApproverAs": "Déplacer l'approbateur en tant que", + "platformApprovalFlow.selectTypeDialogParallelOrSerial": "Parallèle ou en série", + "platformApprovalFlow.selectTypeDialogNodeTypeParallel": "Approbateur en parallèle", + "platformApprovalFlow.selectTypeDialogNodeTypeSerial": "Approbateur en série", + "platformApprovalFlow.selectTypeDialogConfirmButton": "Confirmer", + "platformApprovalFlow.selectTypeDialogCancelButton": "Annuler", + "platformApprovalFlow.toolbarAddStepButton": "Ajouter une étape", + "platformApprovalFlow.toolbarEditButton": "Modifier", + "platformApprovalFlow.toolbarAddApproversBefore": "Ajoutez des approbateurs avant", + "platformApprovalFlow.toolbarAddApproversAfter": "Ajoutez des approbateurs après", + "platformApprovalFlow.toolbarAddApproversParallel": "Ajouter des approbateurs en parallèle", + "platformApprovalFlow.toolbarRemove": "Supprimer", + "platformApprovalFlow.toolbarEditApprover": "Editer l'approbateur", + "platformApprovalFlow.watchersInputPlaceholder": "Rechercher ici..", + "platformApprovalFlow.userListSelectedItemsCountSingular": "1 élément sélectionné", + "platformApprovalFlow.userListSelectedItemsCountPlural": "{count} éléments sélectionnés", + "platformApprovalFlow.statusApproved": "approved", + "platformApprovalFlow.statusRejected": "rejected", + "platformApprovalFlow.statusInProgress": "in progress", + "platformApprovalFlow.statusNotStarted": "not started", + "platformFeedInput.userTitle": "Utilisateur", + "platformVHD.selectionBarLabel": "Éléments sélectionnés et conditionnés", + "platformVHD.selectedAndConditionLabel": "Éléments et conditions sélectionnés", + "platformVHD.footerClearSelectedTitle": "supprimer les éléments sélectionnés", + "platformVHD.footerClearSelectedAriaLabel": "supprimer les éléments sélectionnés", + "platformVHD.searchButtonLabel": "Aller", + "platformVHD.successButtonLabel": "OK", + "platformVHD.cancelButtonLabel": "Annuler", + "platformVHD.selectedEmptyLabel": "Aucun élément ou condition sélectionné", + "platformVHD.searchPlaceholder": "Recherchez", + "platformVHD.searchAdvancedSearchLabel": "Filtres", + "platformVHD.searchShowAdvancedSearchLabel": "Afficher les filtres", + "platformVHD.searchHideAdvancedSearchLabel": "Masquer les filtres", + "platformVHD.searchShowAllAdvancedSearchLabel": "Afficher tous les filtres", + "platformVHD.searchHideAllAdvancedSearchLabel": "Masquer tous les filtres", + "platformVHD.selectTabDisplayCountLabel": "Articles ({count})", + "platformVHD.selectTabMoreBtnLabel": "Plus d'infos", + "platformVHD.selectTabCountHiddenA11yLabel": "contient {rowCount} lignes et {colCount} colonnes", + "platformVHD.selectMobileTabBackBtnTitle": "Retour", + "platformVHD.selectMobileTabBtnOpenDialogLabel": "Ouvrir la boîte de dialogue", + "platformVHD.selectMobileTabTitle": "{title} onglet", + "platformVHD.selectMobileConditionEmpty": "Vide", + "platformVHD.defineConditionTitle": "Produit", + "platformVHD.defineConditionSelectedValueHiddenA11yLabel": "valeur sélectionnée {value}", + "platformVHD.defineConditionConditionsGroupHeaderInclude": "Inclure", + "platformVHD.defineConditionConditionsGroupHeaderExclude": "Exclure", + "platformVHD.defineConditionFromPlaceholder": "de", + "platformVHD.defineConditionToPlaceholder": "à", + "platformVHD.defineConditionValuePlaceholder": "valeur", + "platformVHD.defineConditionRemoveConditionButtonTitle": "Supprimer la condition", + "platformVHD.defineConditionAddConditionButtonLabel": "Ajouter", + "platformVHD.defineConditionAddConditionButtonTitle": "Ajouter une condition", + "platformVHD.defineConditionConditionStrategyLabelContains": "contient", + "platformVHD.defineConditionConditionStrategyLabelEqualTo": "égal à", + "platformVHD.defineConditionConditionStrategyLabelBetween": "entre", + "platformVHD.defineConditionConditionStrategyLabelStartsWith": "commence par", + "platformVHD.defineConditionConditionStrategyLabelEndsWith": "se termine par", + "platformVHD.defineConditionConditionStrategyLabelLessThan": "moins que", + "platformVHD.defineConditionConditionStrategyLabelLessThanEqual": "inférieur à égal", + "platformVHD.defineConditionConditionStrategyLabelGreaterThan": "supérieur à", + "platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual": "plus grand que égal", + "platformVHD.defineConditionConditionStrategyLabelEmpty": "vide", + "platformVHD.defineConditionConditionStrategyLabelNotEqualTo": "pas égal à", + "platformVHD.defineConditionConditionStrategyLabelNotEmpty": "non vide", + "platformVHD.defineConditionMaxCountError": "Entrez une valeur ne contenant pas plus de {count} caractères", + "platformVHD.selectTabTitle": "Sélectionnez dans la liste", + "platformVHD.searchTableEmptyMessage": "Utilisez la recherche pour obtenir des résultats", + "platformVHD.defineTabTitle": "Définir les conditions", + "platformCombobox.countListResultsSingular": "1 resultat sur la liste d'éléments", + "platformCombobox.countListResultsPlural": "{count} éléments de la liste de résultats", + "platformMultiCombobox.inputGlyphAriaLabel": "Sélectionnez les options", + "platformMultiCombobox.inputIconTitle": "Sélectionnez les options", + "platformMultiCombobox.mobileShowAllItemsButton": "Afficher tous les éléments", + "platformMultiCombobox.mobileShowSelectedItemsButton": "Afficher les éléments sélectionnés", + "platformTextarea.counterMessageCharactersOverTheLimitSingular": "1 caractère au-dessus de la limite", + "platformTextarea.counterMessageCharactersOverTheLimitPlural": "{count} de caractères au-delà de la limite", + "platformTextarea.counterMessageCharactersRemainingSingular": "1 seul caractère restant", + "platformTextarea.counterMessageCharactersRemainingPlural": "{count} de caractères restants", + "platformLink.roleDescriptionWithMedia": "Média: {media}", + "platformList.loadingAriaLabel": "chargement", + "platformObjectListItem.detailsActionAriaLabel": "détail", + "platformObjectListItem.deleteActionAriaLabel": "supprimer", + "platformStandardListItem.detailsActionAriaLabel": "détail", + "platformStandardListItem.deleteActionAriaLabel": "supprimer", + "platformSearchField.clearButtonTitle": "Effacer", + "platformSearchField.submitButtonTitle": "Rechercher", + "platformSearchField.searchInputLabel": "Rechercher", + "platformSearchField.synchronizeButtonTitle": "Synchroniser", + "platformSearchField.searchSuggestionMessage": "{count} de suggestions trouvées", + "platformSearchField.searchSuggestionNavigateMessage": "utiliser les flèches haut et bas pour naviguer", + "platformSmartFilterBar.searchPlaceholder": "Rechercher", + "platformSmartFilterBar.submitButtonLabel": "Aller", + "platformSmartFilterBar.filtersButtonLabel": "Filtres ({filtersCount})", + "platformSmartFilterBar.showFiltersButtonLabel": "Affichez les filtres", + "platformSmartFilterBar.hideFiltersButtonLabel": "Masquer les filtres", + "platformSmartFilterBar.defineConditionsRemoveConditionButtonTitle": "Supprimer la condition", + "platformSmartFilterBar.defineConditionsAddConditionButtonLabel": "Ajouter une condition", + "platformSmartFilterBar.defineConditionsSubmitButtonLabel": "Aller", + "platformSmartFilterBar.defineConditionsCancelButton": "Annuler", + "platformSmartFilterBar.selectFiltersHeader": "Filtres", + "platformSmartFilterBar.selectFiltersAvailableFiltersText": "Filtres disponibles", + "platformSmartFilterBar.selectFiltersFilterColumnLabel": "Filtre", + "platformSmartFilterBar.selectFiltersActiveColumnLabel": "Actif", + "platformSmartFilterBar.selectFiltersSubmitButtonLabel": "Aller", + "platformSmartFilterBar.selectFiltersCancelButton": "Annuler", + "platformSmartFilterBar.filterConditionContains": "contient", + "platformSmartFilterBar.filterConditionEqualTo": "égal à", + "platformSmartFilterBar.filterConditionBetween": "entre", + "platformSmartFilterBar.filterConditionBeginsWith": "commence par", + "platformSmartFilterBar.filterConditionEndsWith": "se termine par", + "platformSmartFilterBar.filterConditionLessThan": "moins de", + "platformSmartFilterBar.filterConditionLessThanOrEqualTo": "inférieur ou égal à", + "platformSmartFilterBar.filterConditionGreaterThan": "plus que", + "platformSmartFilterBar.filterConditionGreaterThanOrEqualTo": "supérieur ou égal à", + "platformSmartFilterBar.filterConditionAfter": "après", + "platformSmartFilterBar.filterConditionOnOrAfter": "à partir de", + "platformSmartFilterBar.filterConditionBefore": "avant", + "platformSmartFilterBar.filterConditionBeforeOrOn": "avant ou à partir de", + "platformSmartFilterBar.filterConditionValuePlaceholder": "valeur", + "platformSmartFilterBar.filterConditionValueFromPlaceholder": "de", + "platformSmartFilterBar.filterConditionValueToPlaceholder": "à", + "platformSmartFilterBar.settingsCategoryAll": "Tous", + "platformSmartFilterBar.settingsCategoryVisible": "Visible", + "platformSmartFilterBar.settingsCategoryActive": "Actif", + "platformSmartFilterBar.settingsCategoryVisibleAndActive": "Visible et actif", + "platformSmartFilterBar.settingsCategoryMandatory": "Obligatoire", + "platformSmartFilterBar.manageFieldConditions": "Manage field conditions", + "platformSmartFilterBar.refreshButtonAriaLabel": "Refresh", + "platformTable.headerMenuSortAsc": "Tri ascendant", + "platformTable.headerMenuSortDesc": "Tri décroissant", + "platformTable.headerMenuGroup": "Grouper", + "platformTable.headerMenuFreeze": "Geler", + "platformTable.headerMenuEndFreeze": "Freeze to End", + "platformTable.headerMenuUnfreeze": "Déverrouillage du menu d'en-tête", + "platformTable.headerMenuFilter": "Filtrer", + "platformTable.defaultEmptyMessage": "Aucune donnée trouvée", + "platformTable.emptyCell": "Vide", + "platformTable.noVisibleColumnsMessage": "Right now, there are no visible columns in the table. Please select the columns you need in the table settings.", + "platformTable.resetChangesButtonLabel": "Réinitialiser", + "platformTable.editableCellNumberPlaceholder": "Entrez une valeur", + "platformTable.editableCellDatePlaceholder": "Entrez une valeur", + "platformTable.editableCellStringPlaceholder": "Entrez une valeur", + "platformTable.P13ColumnsDialogHeader": "Colonnes", + "platformTable.P13ColumnsDialogSearchPlaceholder": "Recherchez", + "platformTable.P13ColumnsDialogsShowSelected": "Afficher la sélection", + "platformTable.P13ColumnsDialogShowAll": "Afficher tout", + "platformTable.P13ColumnsDialogSelectAll": "Sélectionner tout ({selectedColumnsCount}/{selectableColumnsCount})", + "platformTable.P13ColumnsDialogConfirmationBtnLabel": "OK", + "platformTable.P13ColumnsDialogCancelBtnLabel": "Annuler", + "platformTable.P13ColumnsDialogMoveToTopBtn": "Haut de page", + "platformTable.P13ColumnsDialogMoveUpBtn": "Monter", + "platformTable.P13ColumnsDialogMoveDownBtn": "Descendre", + "platformTable.P13ColumnsDialogMoveToBottomBtn": "Déplacer vers le bas", + "platformTable.P13FilterStrategyLabelBetween": "entre", + "platformTable.P13FilterStrategyLabelContains": "contient", + "platformTable.P13FilterStrategyLabelBeginsWith": "commence par", + "platformTable.P13FilterStrategyLabelEndsWith": "se termine par", + "platformTable.P13FilterStrategyLabelEqualTo": "égal à", + "platformTable.P13FilterStrategyLabelGreaterThan": "supérieur à", + "platformTable.P13FilterStrategyLabelGreaterThanOrEqualTo": "supérieur ou égal à", + "platformTable.P13FilterStrategyLabelLessThan": "inférieur à", + "platformTable.P13FilterStrategyLabelLessThanOrEqualTo": "inférieur ou égal à", + "platformTable.P13FilterStrategyLabelAfter": "après", + "platformTable.P13FilterStrategyLabelOnOrAfter": "à partir de", + "platformTable.P13FilterStrategyLabelBefore": "avant", + "platformTable.P13FilterStrategyLabelBeforeOrOn": "avant ou à partir de", + "platformTable.P13FilterStrategyLabelNotDefined": "Non défini", + "platformTable.P13FilterBooleanOptionNotDefined": " ", + "platformTable.P13FilterBooleanOptionTrue": "Oui", + "platformTable.P13FilterBooleanOptionFalse": "Non", + "platformTable.P13FilterDialogHeader": "Filtrer par", + "platformTable.P13FilterDialogIncludePanelTitleWithCount": "Inclure ({count})", + "platformTable.P13FilterDialogIncludePanelTitleWithoutCount": "Inclure", + "platformTable.P13FilterDialogExcludePanelTitleWithCount": "Exclure ({count})", + "platformTable.P13FilterDialogExcludePanelTitleWithoutCount": "Exclure", + "platformTable.P13FilterDialogRemoveFilterBtnTitle": "Supprimer le filtre", + "platformTable.P13FilterDialoAddFilterBtnTitle": "Ajouter un filtre", + "platformTable.P13FilterDialogConfirmationBtnLabel": "OK", + "platformTable.P13FilterDialogCancelBtnLabel": "Annuler", + "platformTable.P13GroupDialogHeader": "Grouper", + "platformTable.P13GroupDialogNoneSelectedColumnSelectPlaceholder": "(aucun)", + "platformTable.P13GroupDialogShowFieldAsColumnCheckboxLabel": "Afficher le champ sous forme de colonne", + "platformTable.P13GroupDialogRemoveGroupBtnTitle": "Supprimer", + "platformTable.P13GroupDialogAddNewGroupBtnTitle": "Ajouter nouveau", + "platformTable.P13GroupDialogConfirmationBtnLabel": "OK", + "platformTable.P13GroupDialogCancelBtnLabel": "Annuler", + "platformTable.P13SortDialogHeader": "Trier", + "platformTable.P13SortDialogNoneSelectedColumn": "(aucun)", + "platformTable.P13SortDialogNoneSelectedSorting": "(aucun)", + "platformTable.P13SortDialogSortOrderSelectOptionAsc": "Ascendant", + "platformTable.P13SortDialogSortOrderSelectOptionDesc": "Descendant", + "platformTable.P13SortDialogRemoveSortBtnTitle": "Supprimer", + "platformTable.P13SortDialogAddNewSortBtnTitle": "Ajouter nouveau", + "platformTable.P13SortDialogConfirmationBtnLabel": "OK", + "platformTable.P13SortDialogCancelBtnLabel": "Annuler", + "platformTable.toolbarSearchPlaceholder": "Recherchez", + "platformTable.toolbarActionCreateButtonLabel": "Créer", + "platformTable.toolbarActionSaveButtonLabel": "Sauvegarder", + "platformTable.toolbarActionCancelButtonLabel": "Annuler", + "platformTable.toolbarActionSortButtonTitle": "Trier", + "platformTable.toolbarActionFilterButtonTitle": "Filtre", + "platformTable.toolbarActionGroupButtonTitle": "Grouper", + "platformTable.toolbarActionColumnsButtonTitle": "Colonnes", + "platformTable.toolbarActionExpandAllButtonTitle": "Expand all", + "platformTable.toolbarActionCollapseAllButtonTitle": "Collapse all", + "platformTable.filterDialogNotFilteredLabel": "(Non filtré)", + "platformTable.filterDialogFilterByLabel": "Filtrer par: {filterLabel}", + "platformTable.filterDialogFilterTitle": "Filtre", + "platformTable.filterDialogFilterBy": "Filtrer par", + "platformTable.filterDialogConfirmBtnLabel": "OK", + "platformTable.filterDialogCancelBtnLabel": "Annuler", + "platformTable.groupDialogHeader": "Grouper", + "platformTable.groupDialogGroupOrderHeader": "Ordre du groupe", + "platformTable.groupDialogGroupOrderAsc": "Ascendant", + "platformTable.groupDialogGroupOrderDesc": "Descendant", + "platformTable.groupDialogGroupByHeader": "Grouper par", + "platformTable.groupDialogNotGroupedLabel": "(Non groupés)", + "platformTable.groupDialogConfirmBtnLabel": "OK", + "platformTable.groupDialogCancelBtnLabel": "Annuler", + "platformTable.sortDialogHeader": "Trier", + "platformTable.sortDialogSortOrderHeader": "Ordre de tri", + "platformTable.sortDialogSortOrderAsc": "Ascendant", + "platformTable.sortDialogSortOrderDesc": "Descendant", + "platformTable.sortDialogSortByHeader": "Trié par", + "platformTable.sortDialogNotSortedLabel": "(Non trié)", + "platformTable.sortDialogConfirmBtnLabel": "OK", + "platformTable.sortDialogCancelBtnLabel": "Annuler", + "platformTable.selectAllCheckboxLabel": "Select all", + "platformTable.deselectAllCheckboxLabel": "Deselect all", + "platformTable.deselectSingleRow": "To deselect row, press SPACEBAR", + "platformTable.selectSingleRow": "To select row, press SPACEBAR", + "platformTable.deselectSingleRowTitle": "Click to deselect", + "platformTable.selectSingleRowTitle": "Click to select", + "platformThumbnail.detailsGotoPreviousButtonTitle": "Aller à la page précédente", + "platformThumbnail.detailsGotoNextButtonTitle": "Aller à la page suivante", + "platformThumbnail.detailsDialogCloseBtnLabel": "Fermer", + "platformThumbnail.roleDescription": "Image", + "platformUploadCollection.moveToTitle": "Déplacer vers", + "platformUploadCollection.moveToTitleFolder": "Dossier", + "platformUploadCollection.moveToNewFolderBtnLabel": "Nouveau dossier", + "platformUploadCollection.moveToAllFilesSubHeaderLabel": "Tous les fichiers", + "platformUploadCollection.moveToConfirmBtn": "Déplacer", + "platformUploadCollection.moveToCloseBtn": "Annuler", + "platformUploadCollection.newFolderTitle": "Nouveau dossier", + "platformUploadCollection.newFolderAtRootInputLabel": "Nom du nouveau dossier", + "platformUploadCollection.newFolderAtFolderInputLabel": "Nom du nouveau dossier dans {folderName}", + "platformUploadCollection.newFolderInputPlaceholder": "Saisissez ici..", + "platformUploadCollection.newFolderInputErrorLabel": "Maximum {count} de caractères autorisés", + "platformUploadCollection.newFolderDialogCreateBtnLabel": "Créer", + "platformUploadCollection.newFolderDialogCancelBtnLabel": "Annuler", + "platformUploadCollection.breadcrumbLabelAllFiles": "Tous les fichiers", + "platformUploadCollection.breadcrumbLabelAllFilesWithTotal": "Tous les fichiers ({total})", + "platformUploadCollection.searchPlaceholder": "Recherchez", + "platformUploadCollection.addBtnLabel": "Ajouter", + "platformUploadCollection.newFolderBtnLabel": "Nouveau dossier", + "platformUploadCollection.moveToBtnLabel": "Déplacer vers", + "platformUploadCollection.downloadBtnLabel": "Télécharger", + "platformUploadCollection.updateVersionBtnLabel": "Version de la mise à jour", + "platformUploadCollection.removeBtnLabel": "Supprimer", + "platformUploadCollection.folderIconTitle": "Icône de dossier", + "platformUploadCollection.fileIconTitle": "Icône de fichier", + "platformUploadCollection.editFileNameInputPlaceholder": "Entrez un nom", + "platformUploadCollection.editFileNameFileAlreadyExistsError": "Un fichier portant ce nom existe déjà", + "platformUploadCollection.editFileNameFolderAlreadyExistsError": "Un dossier avec ce nom existe déjà", + "platformUploadCollection.itemStatusSuccessful": "Succès de l'opération", + "platformUploadCollection.itemStatusUnsuccessful": "Échec de l'opération", + "platformUploadCollection.uploadNewFileAfterFailAction": "Exécuter", + "platformUploadCollection.cancelUploadNewFileAction": "Annuler", + "platformUploadCollection.itemMenuBtnTitle": "Plus d'infos", + "platformUploadCollection.dragDropAreaText": "Faites glisser les fichiers à télécharger", + "platformUploadCollection.noDataText": "Aucun fichier trouvé", + "platformUploadCollection.noDataDescription": "Déposez les fichiers à télécharger, ou utilisez le bouton \"Ajouter\"..", + "platformUploadCollection.paginationTotal": "Affichage de {from}-{ to} de {total}", + "platformUploadCollection.resultsPerPage": "Résultats par page", + "platformUploadCollection.messageCreateFailed": "Échec de la création de {folderName}.", + "platformUploadCollection.messageCreateSuccess": "{folderName} a été créé.", + "platformUploadCollection.messageUpdateVersionFailed": "Impossible de mettre à jour la version de {folderName}.", + "platformUploadCollection.messageUpdateVersionSuccess": "La version de {folderName} a été mise à jour.", + "platformUploadCollection.messageFileRenameFailed": "Impossible de renommer \"{from}\" en \"{to}.\"", + "platformUploadCollection.messageFileRenameSuccess": "\"{from}\" a été renommé en \"{to}\".", + "platformUploadCollection.messageRemoveFoldersAndFilesFailed": "Échec de la suppression des dossiers {foldersCount} et des fichiers {filesCount}.", + "platformUploadCollection.messageRemoveFoldersAndFilesSuccess": "Les dossiers {foldersCount} et les fichiers {filesCount} ont été supprimés", + "platformUploadCollection.messageRemoveFoldersFailed": "Échec de la suppression des dossiers {foldersCount}.", + "platformUploadCollection.messageRemoveFoldersSuccess": "Les dossiers {foldersCount} ont été supprimés", + "platformUploadCollection.messageRemoveFilesFailed": "Échec de la suppression des fichiers {fichiersCount}.", + "platformUploadCollection.messageRemoveFilesSuccess": "Les fichiers {filesCount} ont été supprimés", + "platformUploadCollection.messageRemoveFileOrFolderFailed": "Échec de la suppression de {name}.", + "platformUploadCollection.messageRemoveFileOrFolderSuccess": "{name} a été supprimé", + "platformUploadCollection.messageMoveFoldersAndFilesFailed": "Échec du déplacement des dossiers {foldersCount} et des fichiers {filesCount} vers {to}", + "platformUploadCollection.messageMoveFoldersAndFilesSuccess": "{foldersCount} dossiers et {filesCount} fichiers ont été déplacés vers {to}.", + "platformUploadCollection.messageMoveFoldersFailed": "Échec du déplacement de {foldersCount} dossiers vers {to}.", + "platformUploadCollection.messageMoveFoldersSuccess": "{foldersCount} dossiers ont été déplacés vers {to}.", + "platformUploadCollection.messageMoveFilesFailed": "Échec du déplacement de {filesCount} fichiers vers {to}.", + "platformUploadCollection.messageMoveFilesSuccess": "{filesCount} fichiers ont été déplacés vers {to}.", + "platformUploadCollection.messageMoveFileOrFolderFailed": "Échec du déplacement de {name} vers {to}.", + "platformUploadCollection.messageMoveFileOrFolderSuccess": "{name} a été déplacé vers {to}.", + "platformUploadCollection.messageMoveRootFoldersAndFilesFailed": "Échec du déplacement des {foldersCount} dossiers et des {filesCount} fichiers vers tous les fichiers.", + "platformUploadCollection.messageMoveRootFoldersAndFilesSuccess": "{foldersCount} dossiers et {filesCount} fichiers ont été déplacés vers tous les fichiers.", + "platformUploadCollection.messageMoveRootFoldersFailed": "Impossible de déplacer les dossiers {foldersCount} vers tous les fichiers.", + "platformUploadCollection.messageMoveRootFoldersSuccess": "{foldersCount} dossiers ont été déplacés vers tous les fichiers.", + "platformUploadCollection.messageMoveRootFilesFailed": "Impossible de déplacer les {filesCount} fichiers vers tous les fichiers.", + "platformUploadCollection.messageMoveRootFilesSuccess": "{filesCount} fichiers ont été déplacés vers tous les fichiers.", + "platformUploadCollection.messageMoveRootFileOrFolderFailed": "Impossible de déplacer {name} vers tous les fichiers.", + "platformUploadCollection.messageMoveRootFileOrFolderSuccess": "{name} a été déplacé dans tous les fichiers.", + "platformUploadCollection.messageFileTypeMismatchPlural": "{filesCount} fichiers n'ont pas le bon type. Types autorisés : {allowedTypes}.", + "platformUploadCollection.messageFileTypeMismatchSingular": "Le fichier \"{fileName}\" n'a pas le bon type. Types autorisés : {allowedTypes}.", + "platformUploadCollection.messageFileSizeExceededPlural": "{filesCount} fichiers ont dépassé la taille maximale du fichier. Taille maximale autorisée du fichier : {maxFileSize}.", + "platformUploadCollection.messageFileSizeExceededSingular": "Le fichier \"{fileName}\" a dépassé la taille maximale du fichier. Taille maximale autorisée du fichier : {maxFileSize}.", + "platformUploadCollection.messageFileNameLengthExceededPlural": "{filesCount} fichiers ont dépassé la longueur maximale du nom de fichier. Longueur autorisée du nom de fichier : {maxFilenameLength} caractères.", + "platformUploadCollection.messageFileNameLengthExceededSingular": "Le nom \"{fileName}\" a dépassé la longueur maximale. Longueur autorisée du nom de fichier: {maxFilenameLength} caractères.", + "platformWizardGenerator.summarySectionEditStep": "Editer", + "platformMessagePopover.allErrors": "All", + "platformMessagePopover.defaultErrors.email": "Email is invalid", + "platformMessagePopover.defaultErrors.max": "The field exceeds maximum value", + "platformMessagePopover.defaultErrors.maxLength": "The field exceeds maximum length", + "platformMessagePopover.defaultErrors.min": "The field value is less than allowed", + "platformMessagePopover.defaultErrors.minLength": "The field length is less than allowed", + "platformMessagePopover.defaultErrors.pattern": "The field value is invalid", + "platformMessagePopover.defaultErrors.required": "The field is mandatory", + "platformMessagePopover.defaultErrors.requiredTrue": "The field is mandatory", + "platformVariantManagement.manage": "Manage", + "platformVariantManagement.saveAs": "Save as", + "platformVariantManagement.saveView": "Save View", + "platformVariantManagement.save": "Save", + "platformVariantManagement.myViews": "My Views", + "platformVariantManagement.view": "View", + "platformVariantManagement.setAsDefault": "Set as Default", + "platformVariantManagement.public": "Public", + "platformVariantManagement.applyAutomatically": "Apply Automatically", + "platformVariantManagement.requiredFieldError": "This field is required.", + "platformVariantManagement.nameTakenFieldError": "Variant with such name already exists. Please chose a different name.", + "platformVariantManagement.cancel": "Cancel", + "platformVariantManagement.manageViews": "Manage Views", + "platformVariantManagement.markAsFavourite": "Mark as Favourite", + "platformVariantManagement.sharing": "Sharing", + "platformVariantManagement.default": "Default", + "platformVariantManagement.createdBy": "Created By", + "platformVariantManagement.removeVariant": "Remove View", + "platformVariantManagement.search": "Search", + "platformVariantManagement.access.public": "Public", + "platformVariantManagement.access.private": "Private", + "platformSelect.selectOptionLabel": "Sélectionnez une option", + "fnSlider.minMaxDetails": "La valeur minimale du curseur est {min}, la valeur maximale est {max}", + "fnSlider.valueminDetails": "La valeur est {value}", + "fnSlider.valuemaxDetails": "La valeur est {value}", + "fnSlider.valueNowDetails": "La valeur actuelle est {value}", + "fnSwitch.semanticAcceptLabel": "Accepter", + "fnSwitch.semanticDeclineLabel": "Refuser", + "coreTree.expand": "Expand node", + "coreTree.collapse": "Collapse node", + "coreTree.noData": "No data" +} diff --git a/libs/i18n/src/lib/translations/translations_hi-IN.json b/libs/i18n/src/lib/translations/translations_hi-IN.json new file mode 100644 index 00000000000..eec849a704d --- /dev/null +++ b/libs/i18n/src/lib/translations/translations_hi-IN.json @@ -0,0 +1,503 @@ +{ + "coreMultiComboBox.selectAllLabel": "सबका चयन करें", + "coreCarousel.leftNavigationBtnLabel": "पिछले वस्तु पर जाएं", + "coreCarousel.rightNavigationBtnLabel": "अगले वस्तु पर जाएं", + "coreDatePicker.dateInputLabel": "दिनांक इनपुट", + "coreDatePicker.dateRangeInputLabel": "दिनांक सीमा इनपुट", + "coreDatePicker.displayCalendarToggleLabel": "पिकर खोलें", + "coreDatePicker.valueStateSuccessMessage": "मूल्य स्थिति सफल", + "coreDatePicker.valueStateInformationMessage": "मूल्य स्थिति सूचना", + "coreDatePicker.valueStateWarningMessage": "मूल्य स्थिति चेतावनी", + "coreDatePicker.valueStateErrorMessage": "मूल्य स्थिति गलती", + "coreDatetimePicker.datetimeInputLabel": "दिनांक और समय इनपुट", + "coreDatetimePicker.displayDatetimeToggleLabel": "कैलेंडर टॉगल दिखाएं", + "coreDatetimePicker.displayTypeDateLabel": "दिनांक", + "coreDatetimePicker.displayTypeTimeLabel": "समय", + "coreDatetimePicker.datetimeOkLabel": "ठीक है", + "coreDatetimePicker.datetimeCancelLabel": "रद्द करें", + "coreFeedListItem.moreLabel": "अधिक", + "coreFeedListItem.lessLabel": "कम", + "coreGridList.filterBarCancelButtonTitle": "रद्द करें", + "coreGridList.listItemStatusAriaLabel": "वस्तु की स्थिति है। स्थिति: {status}", + "coreGridList.listItemCounterAriaLabel": "वस्तु के {count} उपसूची है।", + "coreGridList.listItemButtonDetailsTitle": "विवरण", + "coreGridList.listItemButtonDeleteTitle": "मिटायें", + "coreGridList.listItemStatusContainsErrors": "इसमें गलतियां हैं", + "coreGridList.listItemStatusLocked": "बंद", + "coreGridList.listItemStatusDraft": "प्रालेख", + "coreMessageStrip.dismissLabel": "खारिज करें", + "coreMultiInput.multiInputAriaLabel": "Multi Value Input", + "coreMultiInput.tokensCountText": "Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.", + "coreNavigation.mainNavigation": "Main Navigation", + "coreNavigation.navigationPath": "Navigation Path", + "coreNestedList.linkItemAriaLabel": "ट्री वस्तु {itemDetails}, {index} का {total}{selectedDescription}", + "coreOverflowLayout.moreItemsButton": "{count} अधिक", + "corePagination.pageLabel": "पृष्ठ {pageNumber}", + "corePagination.currentPageAriaLabel": "पृष्ठ {pageNumber} वर्तमान पृष्ठ है", + "corePagination.labelBeforeInputMobile": "पृष्ठ :", + "corePagination.labelAfterInputMobile": "का {totalCount}", + "corePagination.inputAriaLabel": "पेज इनपुट, वर्तमान पृष्ठ, पृष्ठ {pageNumber} का {totalCount}", + "corePagination.itemsPerPageLabel": "प्रति पृष्ठ परिणाम :", + "corePagination.firstLabel": "पहला", + "corePagination.previousLabel": "पिछला", + "corePagination.nextLabel": "अगला", + "corePagination.lastLabel": "अंतिम", + "corePagination.ariaLabel": "पृष्ठ अंकन", + "corePagination.totalResultsLabel": "{totalCount} परिणाम", + "coreProductSwitch.ariaLabel": "उत्पाद स्विच", + "coreShellbar.collapsedItemMenuLabel": "छोटा किया गया आइटम मेनू", + "coreShellbar.cancel": "Cancel", + "coreShellbar.search": "Search", + "coreSlider.singleMinMaxDetails": "स्लाइडर न्यूनतम मूल्य है {min}, अधिकतम मूल्य है {max}", + "coreSlider.singleValueminDetails": "मूल्य है {value}", + "coreSlider.singleValuemaxDetails": "मूल्य है {value}", + "coreSlider.singleValueNowDetails": "वर्तमान मूल्य है {value}", + "coreSlider.multipleHandle1MinMaxDetails": "रेंज स्लाइडर न्यूनतम मूल्य है {min}, अधिकतम मूल्य है {max}", + "coreSlider.multipleHandle1ValueminDetails": "मूल्य है {value}", + "coreSlider.multipleHandle1ValuemaxDetails": "मूल्य है {value}", + "coreSlider.multipleHandle1ValueNowDetails": "वर्तमान मूल्य है {value}", + "coreSlider.multipleHandle2MinMaxDetails": "रेंज स्लाइडर न्यूनतम मूल्य है {min}, अधिकतम मूल्य है {max}", + "coreSlider.multipleHandle2ValueminDetails": "मूल्य है {value}", + "coreSlider.multipleHandle2ValuemaxDetails": "मूल्य है {value}", + "coreSlider.multipleHandle2ValueNowDetails": "वर्तमान मूल्य है {value}", + "coreSplitButton.expandButtonAriaLabel": "अधिक क्रियाएं", + "coreSplitButton.arialLabel": "बाँटा हुआ बटन", + "coreSplitter.paginationItemAriaLabel": "भाग", + "coreStepInput.incrementButtonTitle": "इसे बढ़ाएँ", + "coreStepInput.decrementButtonTitle": "इसे घटाएं", + "coreStepInput.ariaRoleDescription": "स्टेप इनपुट", + "coreSwitch.semanticAcceptLabel": "स्वीकार करें", + "coreSwitch.semanticDeclineLabel": "अस्वीकार करें", + "coreTabs.tabListExpandButtonText": "अधिक", + "coreText.moreLabel": "अधिक", + "coreText.lessLabel": "कम", + "coreTime.componentAriaName": "समय चुनने वाला", + "coreTime.increaseHoursLabel": "घंटे बढ़ाएँ", + "coreTime.hoursLabel": "घंटे", + "coreTime.decreaseHoursLabel": "घंटे घटाएं", + "coreTime.increaseMinutesLabel": "मिनट बढ़ाएँ", + "coreTime.minutesLabel": "मिनट", + "coreTime.decreaseMinutesLabel": "मिनट घटाएं", + "coreTime.increaseSecondsLabel": "सेकंड बढ़ाएँ", + "coreTime.secondsLabel": "सेकंड", + "coreTime.decreaseSecondsLabel": "सेकंड घटाएं", + "coreTime.increasePeriodLabel": "अवधि बढ़ाएँ", + "coreTime.periodLabel": "अवधि", + "coreTime.decreasePeriodLabel": "अवधि घटाएं", + "coreTime.navigationInstruction": "इस सूची में वस्तुओं के बीच जाने के लिए, ऊपर तीर या निचला तीर दबाएं। सूचियों के बीच स्विच करने के लिए बायाँ तीर या दायाँ तीर दबाएँ।", + "coreTimePicker.timePickerInputLabel": "समय चुनने वाला इनपुट", + "coreTimePicker.timePickerButtonLabel": "चुनने वाला खोलें", + "coreToken.deleteButtonLabel": "हटाने-योग्य", + "coreToken.ariaRoleDescription": "टोकन", + "coreTokenizer.moreLabel": "{count} अधिक", + "coreUploadCollection.menuOkText": "ठीक है", + "coreUploadCollection.menuCancelText": "रद्द करें", + "coreUploadCollection.menuEditAriaLabel": "संपादित करें", + "coreUploadCollection.menuDeleteAriaLabel": "मिटाऐं", + "coreUploadCollection.menuOkAriaLabel": "संपादित करें", + "coreUploadCollection.menuCancelAriaLabel": "रद्द करें", + "coreUploadCollection.formItemPlaceholder": "फ़ाइल का नाम", + "coreWizard.ariaLabel": "विज़ार्ड", + "coreBreadcrumb.overflowTitleMore": "और", + "platformActionBar.backButtonLabel": "वापस जाएं", + "platformApprovalFlow.defaultWatchersLabel": "नजर रखने वाले", + "platformApprovalFlow.defaultTitle": "अनुमोदन प्रक्रिया", + "platformApprovalFlow.nextButtonAriaLabel": "आगे की स्लाइड पर जाएं", + "platformApprovalFlow.prevButtonAriaLabel": "पिछली स्लाइड पर जाएं", + "platformApprovalFlow.editModeSaveButtonLabel": "सहेजें", + "platformApprovalFlow.editModeExitButtonLabel": "बाहर निकलें", + "platformApprovalFlow.emptyTitle": "अनुमोदक और देखने वालों को जोड़ना शुरू करें", + "platformApprovalFlow.emptyHint": "अनुमोदक को जोड़ने के लिए \"एक चरण जोड़ें\" पर क्लिक करें। देखने वालों को जोड़ने के लिए, नजर रखने वाले फ़ील्ड पर क्लिक करें।", + "platformApprovalFlow.addNodeDialogHeaderAddApprovers": "अनुमोदक जोड़ें", + "platformApprovalFlow.addNodeDialogHeaderEditApprover": "अनुमोदक संपादित करें", + "platformApprovalFlow.addNodeDialogHeaderAddApproverTeam": "उपयोगकर्ता/समूह", + "platformApprovalFlow.addNodeDialogHeaderDetail": "विवरण", + "platformApprovalFlow.addNodeDialogNodeType": "समानांतर या क्रमिक", + "platformApprovalFlow.addNodeDialogNodeTypeSerial": "क्रमिक", + "platformApprovalFlow.addNodeDialogNodeTypeParallel": "समानांतर", + "platformApprovalFlow.addNodeDialogApproverType": "अनुमोदक के प्रकार", + "platformApprovalFlow.addNodeDialogApproverTypeUser": "एक उपयोगकर्ता", + "platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone": "समूह में कोई भी", + "platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone": "समूह में सभी", + "platformApprovalFlow.addNodeDialogUserOrTeam": "उपयोगकर्ता/समूह", + "platformApprovalFlow.addNodeDialogAddToNext": "अगले क्रमिक नोड में जोड़ें", + "platformApprovalFlow.addNodeDialogDueDate": "नियत तिथि", + "platformApprovalFlow.addNodeSearchPlaceholder": "खोजें", + "platformApprovalFlow.addNodeAddActionBtnLabel": "जोड़ें", + "platformApprovalFlow.addNodeCancelActionBtnLabel": "रद्द करें", + "platformApprovalFlow.addNodeSelectApproverActionBtnLabel": "चुने", + "platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel": "रद्द करें", + "platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel": "बंद करें", + "platformApprovalFlow.userDetailsHeader": "विवरण", + "platformApprovalFlow.userDetailsSendReminderBtnLabel": "याद दिलाये", + "platformApprovalFlow.userDetailsCancelBtnLabel": "रद्द करें", + "platformApprovalFlow.messagesApproverAddedSuccess": "1 अनुमोदक जोड़ा गया है", + "platformApprovalFlow.messagesTeamAddedSuccess": "1 समूह जोड़ा गया है", + "platformApprovalFlow.messagesNodeEdited": "1 अनुमोदनकर्ता संपादित किया गया है", + "platformApprovalFlow.messagesNodeRemovedSingular": "1 अनुमोदनकर्ता को हटा दिया गया है", + "platformApprovalFlow.messagesNodeRemovedPlural": "सभी अनुमोदनकर्ता को हटा दिया गया है", + "platformApprovalFlow.messagesTeamRemoved": "1 समूह को हटा दिया गया है", + "platformApprovalFlow.messagesErrorBuildGraph": "ग्राफ़ बनाने का प्रयास करते समय एक गलति हुई| प्रारंभिक डेटा की जाँच करें।", + "platformApprovalFlow.messagesUndoAction": "पूर्ववत करें", + "platformApprovalFlow.nodeMembersCount": "{count} सदस्य", + "platformApprovalFlow.nodeVariousTeams": "विविध समूह", + "platformApprovalFlow.nodeStatusDueToday": "नियत तिथि", + "platformApprovalFlow.nodeStatusDueInXDays": "{count} दिनों में देय है", + "platformApprovalFlow.nodeStatusXDaysOverdue": "{count} दिन अतिदेय", + "platformApprovalFlow.nodeActionAddApproversBefore": "पहले अनुमोदक जोड़ें", + "platformApprovalFlow.nodeActionAddApproversAfter": "बाद में अनुमोदक जोड़ें", + "platformApprovalFlow.nodeActionAddApproversParallel": "समानांतर अनुमोदक जोड़ें", + "platformApprovalFlow.nodeActionEditApprover": "अनुमोदक संपादित करें", + "platformApprovalFlow.nodeActionRemove": "हटाएं", + "platformApprovalFlow.selectTypeDialogMoveApproverAs": "अनुमोदक को इस रूप में ले जाएँ", + "platformApprovalFlow.selectTypeDialogParallelOrSerial": "समानांतर या क्रमिक", + "platformApprovalFlow.selectTypeDialogNodeTypeParallel": "समानांतर अनुमोदक", + "platformApprovalFlow.selectTypeDialogNodeTypeSerial": "क्रमिक समानांतर अनुमोदक", + "platformApprovalFlow.selectTypeDialogConfirmButton": "पुष्टि करें", + "platformApprovalFlow.selectTypeDialogCancelButton": "रद्द करें", + "platformApprovalFlow.toolbarAddStepButton": "एक चरण जोड़ें", + "platformApprovalFlow.toolbarEditButton": "संपादित करें", + "platformApprovalFlow.toolbarAddApproversBefore": "पहले अनुमोदक जोड़ें", + "platformApprovalFlow.toolbarAddApproversAfter": "बाद में अनुमोदक जोड़ें", + "platformApprovalFlow.toolbarAddApproversParallel": "समानांतर अनुमोदक जोड़ें", + "platformApprovalFlow.toolbarRemove": "हटाएं", + "platformApprovalFlow.toolbarEditApprover": "अनुमोदक संपादित करें", + "platformApprovalFlow.watchersInputPlaceholder": "यहां खोजें..", + "platformApprovalFlow.userListSelectedItemsCountSingular": "1 आइटम चुना गया", + "platformApprovalFlow.userListSelectedItemsCountPlural": "{count} आइटम चुने गए", + "platformApprovalFlow.statusApproved": "approved", + "platformApprovalFlow.statusRejected": "rejected", + "platformApprovalFlow.statusInProgress": "in progress", + "platformApprovalFlow.statusNotStarted": "not started", + "platformFeedInput.userTitle": "उपयोगकर्ता", + "platformVHD.selectionBarLabel": "निर्वाचित और शर्त आइटम", + "platformVHD.selectedAndConditionLabel": "चयनित आइटम और शर्तें", + "platformVHD.footerClearSelectedTitle": "चयनित आइटम साफ़ करें", + "platformVHD.footerClearSelectedAriaLabel": "चयनित आइटम साफ़ करें", + "platformVHD.searchButtonLabel": "जाएँ", + "platformVHD.successButtonLabel": "ठीक है", + "platformVHD.cancelButtonLabel": "रद्द करें", + "platformVHD.selectedEmptyLabel": "कोई आइटम या शर्तें चयनित नहीं हैं", + "platformVHD.searchPlaceholder": "खोजें", + "platformVHD.searchAdvancedSearchLabel": "फिल्टर", + "platformVHD.searchShowAdvancedSearchLabel": "फ़िल्टर दिखाएं", + "platformVHD.searchHideAdvancedSearchLabel": "फ़िल्टर छुपाएं", + "platformVHD.searchShowAllAdvancedSearchLabel": "सभी फ़िल्टर दिखाएं", + "platformVHD.searchHideAllAdvancedSearchLabel": "सभी फ़िल्टर छुपाएं", + "platformVHD.selectTabDisplayCountLabel": "({count}) वस्तुएं", + "platformVHD.selectTabMoreBtnLabel": "और", + "platformVHD.selectTabCountHiddenA11yLabel": "इसमें {rowCount} पंक्तियाँ और {colCount} कॉलम हैं", + "platformVHD.selectMobileTabBackBtnTitle": "वापस", + "platformVHD.selectMobileTabBtnOpenDialogLabel": "डायलॉग खोलें", + "platformVHD.selectMobileTabTitle": "{title} टैब", + "platformVHD.selectMobileConditionEmpty": "खाली", + "platformVHD.defineConditionTitle": "उत्पाद", + "platformVHD.defineConditionSelectedValueHiddenA11yLabel": "चयनित मूल्य {value}", + "platformVHD.defineConditionConditionsGroupHeaderInclude": "शामिल करें", + "platformVHD.defineConditionConditionsGroupHeaderExclude": "बहिष्कृत करें", + "platformVHD.defineConditionFromPlaceholder": "से", + "platformVHD.defineConditionToPlaceholder": "तक", + "platformVHD.defineConditionValuePlaceholder": "मूल्य", + "platformVHD.defineConditionRemoveConditionButtonTitle": "शर्त हटाएं", + "platformVHD.defineConditionAddConditionButtonLabel": "जोड़ें", + "platformVHD.defineConditionAddConditionButtonTitle": "शर्त जोड़ें", + "platformVHD.defineConditionConditionStrategyLabelContains": "शामिल काम करता हैं", + "platformVHD.defineConditionConditionStrategyLabelEqualTo": "के बराबर", + "platformVHD.defineConditionConditionStrategyLabelBetween": "के बीच में", + "platformVHD.defineConditionConditionStrategyLabelStartsWith": "से शुरू होता है", + "platformVHD.defineConditionConditionStrategyLabelEndsWith": "के साथ समाप्त होता है", + "platformVHD.defineConditionConditionStrategyLabelLessThan": "से कम", + "platformVHD.defineConditionConditionStrategyLabelLessThanEqual": "बराबर से कम", + "platformVHD.defineConditionConditionStrategyLabelGreaterThan": "से अधिक", + "platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual": "बराबर से अधिक", + "platformVHD.defineConditionConditionStrategyLabelEmpty": "खाली", + "platformVHD.defineConditionConditionStrategyLabelNotEqualTo": "के बराबर नहीं", + "platformVHD.defineConditionConditionStrategyLabelNotEmpty": "खाली नही", + "platformVHD.defineConditionMaxCountError": "{count} से अधिक अक्षरो वाला कोई मूल्य दर्ज करें", + "platformVHD.selectTabTitle": "सूची में से चयन करें", + "platformVHD.searchTableEmptyMessage": "परिणाम प्राप्त करने के लिए खोज का प्रयोग करें", + "platformVHD.defineTabTitle": "शर्तों को परिभाषित करें", + "platformCombobox.countListResultsSingular": "1 परिणाम सूची आइटम", + "platformCombobox.countListResultsPlural": "{count} परिणाम सूची आइटम", + "platformMultiCombobox.inputGlyphAriaLabel": "विकल्प चुनें", + "platformMultiCombobox.inputIconTitle": "विकल्प चुनें", + "platformMultiCombobox.mobileShowAllItemsButton": "सभी आइटम दिखाएं", + "platformMultiCombobox.mobileShowSelectedItemsButton": "सभी आइटम दिखाएं", + "platformTextarea.counterMessageCharactersOverTheLimitSingular": "1 सीमा से अधिक चरित्र", + "platformTextarea.counterMessageCharactersOverTheLimitPlural": "{count} सीमा से अधिक वर्ण", + "platformTextarea.counterMessageCharactersRemainingSingular": "1 चरित्र शेष", + "platformTextarea.counterMessageCharactersRemainingPlural": "{count} शेष वर्ण", + "platformLink.roleDescriptionWithMedia": "मीडिया: {media}", + "platformList.loadingAriaLabel": "लोड हो रहा है", + "platformObjectListItem.detailsActionAriaLabel": "विवरण", + "platformObjectListItem.deleteActionAriaLabel": "हटाएं", + "platformStandardListItem.detailsActionAriaLabel": "विवरण", + "platformStandardListItem.deleteActionAriaLabel": "हटाएं", + "platformSearchField.clearButtonTitle": "साफ़ करें", + "platformSearchField.submitButtonTitle": "खोज करें", + "platformSearchField.searchInputLabel": "खोज करें", + "platformSearchField.synchronizeButtonTitle": "सिंक्रनाइज़ करें", + "platformSearchField.searchSuggestionMessage": "{count} सुझाव मिले", + "platformSearchField.searchSuggestionNavigateMessage": "नेविगेट करने के लिए ऊपर और नीचे तीरों का उपयोग करें", + "platformSmartFilterBar.searchPlaceholder": "खोज करें", + "platformSmartFilterBar.submitButtonLabel": "जाओ", + "platformSmartFilterBar.filtersButtonLabel": "फिल्टर ({filtersCount})", + "platformSmartFilterBar.showFiltersButtonLabel": "फ़िल्टर दिखाएं", + "platformSmartFilterBar.hideFiltersButtonLabel": "फ़िल्टर छुपाएं", + "platformSmartFilterBar.defineConditionsRemoveConditionButtonTitle": "शर्त हटाएं", + "platformSmartFilterBar.defineConditionsAddConditionButtonLabel": "शर्त जोड़ें", + "platformSmartFilterBar.defineConditionsSubmitButtonLabel": "जाओ", + "platformSmartFilterBar.defineConditionsCancelButton": "रद्द करें", + "platformSmartFilterBar.selectFiltersHeader": "फिल्टर", + "platformSmartFilterBar.selectFiltersAvailableFiltersText": "उपलब्ध फिल्टर", + "platformSmartFilterBar.selectFiltersFilterColumnLabel": "फिल्टर", + "platformSmartFilterBar.selectFiltersActiveColumnLabel": "सक्रिय", + "platformSmartFilterBar.selectFiltersSubmitButtonLabel": "जाओ", + "platformSmartFilterBar.selectFiltersCancelButton": "रद्द करें", + "platformSmartFilterBar.filterConditionContains": "रोकना", + "platformSmartFilterBar.filterConditionEqualTo": "के बराबर", + "platformSmartFilterBar.filterConditionBetween": "के बीच", + "platformSmartFilterBar.filterConditionBeginsWith": "आरंभ है", + "platformSmartFilterBar.filterConditionEndsWith": "समाप्त है", + "platformSmartFilterBar.filterConditionLessThan": "से कम", + "platformSmartFilterBar.filterConditionLessThanOrEqualTo": "कम या बराबर", + "platformSmartFilterBar.filterConditionGreaterThan": "अधिक", + "platformSmartFilterBar.filterConditionGreaterThanOrEqualTo": "बड़ा या इसके बराबर", + "platformSmartFilterBar.filterConditionAfter": "बाद में", + "platformSmartFilterBar.filterConditionOnOrAfter": "पर या बाद में", + "platformSmartFilterBar.filterConditionBefore": "इससे पहले", + "platformSmartFilterBar.filterConditionBeforeOrOn": "पहले या आगे", + "platformSmartFilterBar.filterConditionValuePlaceholder": "मूल्य", + "platformSmartFilterBar.filterConditionValueFromPlaceholder": "से", + "platformSmartFilterBar.filterConditionValueToPlaceholder": "प्रति", + "platformSmartFilterBar.settingsCategoryAll": "सभी", + "platformSmartFilterBar.settingsCategoryVisible": "दृश्यमान", + "platformSmartFilterBar.settingsCategoryActive": "सक्रिय", + "platformSmartFilterBar.settingsCategoryVisibleAndActive": "दृश्यमान और सक्रिय", + "platformSmartFilterBar.settingsCategoryMandatory": "अनिवार्य", + "platformSmartFilterBar.manageFieldConditions": "Manage field conditions", + "platformSmartFilterBar.refreshButtonAriaLabel": "Refresh", + "platformTable.headerMenuSortAsc": "छोटे से बड़े क्रम में क्रमबद्ध करें", + "platformTable.headerMenuSortDesc": "घटते क्रम", + "platformTable.headerMenuGroup": "समूह", + "platformTable.headerMenuFreeze": "फ्रीज करें", + "platformTable.headerMenuEndFreeze": "Freeze to End", + "platformTable.headerMenuUnfreeze": "हैडर मेनू अनफ्रीज", + "platformTable.headerMenuFilter": "फिल्टर", + "platformTable.defaultEmptyMessage": "डाटा प्राप्त नहीं हुआ", + "platformTable.emptyCell": "खाली", + "platformTable.noVisibleColumnsMessage": "Right now, there are no visible columns in the table. Please select the columns you need in the table settings.", + "platformTable.resetChangesButtonLabel": "रीसेट करें", + "platformTable.editableCellNumberPlaceholder": "मूल्य दर्ज करें", + "platformTable.editableCellDatePlaceholder": "मूल्य दर्ज करें", + "platformTable.editableCellStringPlaceholder": "मूल्य दर्ज करें", + "platformTable.P13ColumnsDialogHeader": "कॉलम", + "platformTable.P13ColumnsDialogSearchPlaceholder": "खोज", + "platformTable.P13ColumnsDialogsShowSelected": "चयनित दिखाएँ", + "platformTable.P13ColumnsDialogShowAll": "सब दिखाएं", + "platformTable.P13ColumnsDialogSelectAll": "सभी का चयन करे ({selectedColumnsCount}/{selectableColumnsCount})", + "platformTable.P13ColumnsDialogConfirmationBtnLabel": "ठीक है", + "platformTable.P13ColumnsDialogCancelBtnLabel": "रद्द करो", + "platformTable.P13ColumnsDialogMoveToTopBtn": "शीर्ष पर जाएं", + "platformTable.P13ColumnsDialogMoveUpBtn": "बढ़ाना", + "platformTable.P13ColumnsDialogMoveDownBtn": "नीचे की ओर", + "platformTable.P13ColumnsDialogMoveToBottomBtn": "नीचे ले जाएँ", + "platformTable.P13FilterStrategyLabelBetween": "के बीच", + "platformTable.P13FilterStrategyLabelContains": "रोकना", + "platformTable.P13FilterStrategyLabelBeginsWith": "साथ शुरू होता है", + "platformTable.P13FilterStrategyLabelEndsWith": "इसी के साथ समाप्त होता है", + "platformTable.P13FilterStrategyLabelEqualTo": "के बराबर", + "platformTable.P13FilterStrategyLabelGreaterThan": "से अधिक", + "platformTable.P13FilterStrategyLabelGreaterThanOrEqualTo": "इससे बड़ा या इसके बराबर", + "platformTable.P13FilterStrategyLabelLessThan": "से कम", + "platformTable.P13FilterStrategyLabelLessThanOrEqualTo": "से कम या बराबर", + "platformTable.P13FilterStrategyLabelAfter": "बाद में", + "platformTable.P13FilterStrategyLabelOnOrAfter": "पर या बाद में", + "platformTable.P13FilterStrategyLabelBefore": "इससे पहले", + "platformTable.P13FilterStrategyLabelBeforeOrOn": "पहले या आगे", + "platformTable.P13FilterStrategyLabelNotDefined": "परिभाषित नहीं", + "platformTable.P13FilterBooleanOptionNotDefined": " ", + "platformTable.P13FilterBooleanOptionTrue": "हां", + "platformTable.P13FilterBooleanOptionFalse": "नहीं", + "platformTable.P13FilterDialogHeader": "के द्वारा छनित", + "platformTable.P13FilterDialogIncludePanelTitleWithCount": "शामिल ({count})", + "platformTable.P13FilterDialogIncludePanelTitleWithoutCount": "शामिल", + "platformTable.P13FilterDialogExcludePanelTitleWithCount": "निकालना ({count})", + "platformTable.P13FilterDialogExcludePanelTitleWithoutCount": "निकालना", + "platformTable.P13FilterDialogRemoveFilterBtnTitle": "फ़िल्टर हटाएं", + "platformTable.P13FilterDialoAddFilterBtnTitle": "फ़िल्टर जोड़ें", + "platformTable.P13FilterDialogConfirmationBtnLabel": "ठीक है", + "platformTable.P13FilterDialogCancelBtnLabel": "रद्द करें", + "platformTable.P13GroupDialogHeader": "समूह", + "platformTable.P13GroupDialogNoneSelectedColumnSelectPlaceholder": "(कोई भी नहीं)", + "platformTable.P13GroupDialogShowFieldAsColumnCheckboxLabel": "फ़ील्ड को कॉलम के रूप में दिखाएं", + "platformTable.P13GroupDialogRemoveGroupBtnTitle": "हटाना", + "platformTable.P13GroupDialogAddNewGroupBtnTitle": "नया जोड़ें", + "platformTable.P13GroupDialogConfirmationBtnLabel": "ठीक है", + "platformTable.P13GroupDialogCancelBtnLabel": "रद्द करें", + "platformTable.P13SortDialogHeader": "क्रम से लगाना", + "platformTable.P13SortDialogNoneSelectedColumn": "(कोई भी नहीं)", + "platformTable.P13SortDialogNoneSelectedSorting": "(कोई भी नहीं)", + "platformTable.P13SortDialogSortOrderSelectOptionAsc": "बढ़ते क्रम", + "platformTable.P13SortDialogSortOrderSelectOptionDesc": "घटते क्रम", + "platformTable.P13SortDialogRemoveSortBtnTitle": "हटाना", + "platformTable.P13SortDialogAddNewSortBtnTitle": "नया जोड़ें", + "platformTable.P13SortDialogConfirmationBtnLabel": "ठीक है", + "platformTable.P13SortDialogCancelBtnLabel": "रद्द करें", + "platformTable.toolbarSearchPlaceholder": "तलाश", + "platformTable.toolbarActionCreateButtonLabel": "सृजन करें", + "platformTable.toolbarActionSaveButtonLabel": "बचाना", + "platformTable.toolbarActionCancelButtonLabel": "रद्द करें", + "platformTable.toolbarActionSortButtonTitle": "क्रम से लगाना", + "platformTable.toolbarActionFilterButtonTitle": "फ़िल्टर", + "platformTable.toolbarActionGroupButtonTitle": "समूह", + "platformTable.toolbarActionColumnsButtonTitle": "कॉलम", + "platformTable.toolbarActionExpandAllButtonTitle": "Expand all", + "platformTable.toolbarActionCollapseAllButtonTitle": "Collapse all", + "platformTable.filterDialogNotFilteredLabel": "(फ़िल्टर नहीं किया गया)", + "platformTable.filterDialogFilterByLabel": "के द्वारा छनित: {filterLabel}", + "platformTable.filterDialogFilterTitle": "फ़िल्टर", + "platformTable.filterDialogFilterBy": "के द्वारा छनित", + "platformTable.filterDialogConfirmBtnLabel": "अनुमोदन", + "platformTable.filterDialogCancelBtnLabel": "रद्द करें", + "platformTable.groupDialogHeader": "समूह", + "platformTable.groupDialogGroupOrderHeader": "समूह आदेश", + "platformTable.groupDialogGroupOrderAsc": "बढ़ते क्रम", + "platformTable.groupDialogGroupOrderDesc": "घटते क्रम", + "platformTable.groupDialogGroupByHeader": "समूह द्वारा", + "platformTable.groupDialogNotGroupedLabel": "(समूहीकृत नहीं)", + "platformTable.groupDialogConfirmBtnLabel": "अनुमोदन", + "platformTable.groupDialogCancelBtnLabel": "रद्द करें", + "platformTable.sortDialogHeader": "क्रम से लगाना", + "platformTable.sortDialogSortOrderHeader": "क्रमबद्ध करें", + "platformTable.sortDialogSortOrderAsc": "बढ़ते क्रम", + "platformTable.sortDialogSortOrderDesc": "घटते क्रम", + "platformTable.sortDialogSortByHeader": "आधार पर छाँटे", + "platformTable.sortDialogNotSortedLabel": "(क्रमबद्ध नहीं)", + "platformTable.sortDialogConfirmBtnLabel": "अनुमोदन", + "platformTable.sortDialogCancelBtnLabel": "रद्द करें", + "platformTable.selectAllCheckboxLabel": "Select all", + "platformTable.deselectAllCheckboxLabel": "Deselect all", + "platformTable.deselectSingleRow": "To deselect row, press SPACEBAR", + "platformTable.selectSingleRow": "To select row, press SPACEBAR", + "platformTable.deselectSingleRowTitle": "Click to deselect", + "platformTable.selectSingleRowTitle": "Click to select", + "platformThumbnail.detailsGotoPreviousButtonTitle": "पिछले पर जाएं", + "platformThumbnail.detailsGotoNextButtonTitle": "अगले पर जाएं", + "platformThumbnail.detailsDialogCloseBtnLabel": "बंद करें", + "platformThumbnail.roleDescription": "छवि", + "platformUploadCollection.moveToTitle": "करने के लिए कदम", + "platformUploadCollection.moveToTitleFolder": "फ़ोल्डर", + "platformUploadCollection.moveToNewFolderBtnLabel": "नया फोल्डर", + "platformUploadCollection.moveToAllFilesSubHeaderLabel": "सभी फाइलें", + "platformUploadCollection.moveToConfirmBtn": "कदम", + "platformUploadCollection.moveToCloseBtn": "रद्द करें", + "platformUploadCollection.newFolderTitle": "नया फोल्डर", + "platformUploadCollection.newFolderAtRootInputLabel": "नए फोल्डर का नाम", + "platformUploadCollection.newFolderAtFolderInputLabel": "नए फोल्डर का नाम {folderName}", + "platformUploadCollection.newFolderInputPlaceholder": "यहा लिखें..", + "platformUploadCollection.newFolderInputErrorLabel": "अधिकतम {count} पात्र अनुमत", + "platformUploadCollection.newFolderDialogCreateBtnLabel": "सृजन करें", + "platformUploadCollection.newFolderDialogCancelBtnLabel": "रद्द करें", + "platformUploadCollection.breadcrumbLabelAllFiles": "सभी फाइलें", + "platformUploadCollection.breadcrumbLabelAllFilesWithTotal": "सभी फाइलें ({total})", + "platformUploadCollection.searchPlaceholder": "तलाश करें", + "platformUploadCollection.addBtnLabel": "जोड़ें", + "platformUploadCollection.newFolderBtnLabel": "नया फोल्डर", + "platformUploadCollection.moveToBtnLabel": "यहाँ ले जाएँ", + "platformUploadCollection.downloadBtnLabel": "डाउनलोड करें", + "platformUploadCollection.updateVersionBtnLabel": "नया संस्करण", + "platformUploadCollection.removeBtnLabel": "हटाएं", + "platformUploadCollection.folderIconTitle": "फ़ोल्डर आइकन", + "platformUploadCollection.fileIconTitle": "फ़ाइल आइकन", + "platformUploadCollection.editFileNameInputPlaceholder": "नाम डालें", + "platformUploadCollection.editFileNameFileAlreadyExistsError": "इस नाम की फ़ाइल पहले से मौजूद है", + "platformUploadCollection.editFileNameFolderAlreadyExistsError": "इस नाम का फोल्डर पहले से मौजूद है", + "platformUploadCollection.itemStatusSuccessful": "सफल", + "platformUploadCollection.itemStatusUnsuccessful": "असफल", + "platformUploadCollection.uploadNewFileAfterFailAction": "चलाएं", + "platformUploadCollection.cancelUploadNewFileAction": "रद्द करें", + "platformUploadCollection.itemMenuBtnTitle": "अधिक", + "platformUploadCollection.dragDropAreaText": "अपलोड करने के लिए फ़ाइलें खींचें", + "platformUploadCollection.noDataText": "कोई फाइल नहीं मिली", + "platformUploadCollection.noDataDescription": "अपलोड करने के लिए फ़ाइलें छोड़ें, या \"जोड़ें\" बटन का उपयोग करें।", + "platformUploadCollection.paginationTotal": "{from}-{to} of {total} दिखा रहा है", + "platformUploadCollection.resultsPerPage": "प्रति पेज नतीजे", + "platformUploadCollection.messageCreateFailed": "{folderName} बनाने में विफल।", + "platformUploadCollection.messageCreateSuccess": "{folderName} बनाया गया है।", + "platformUploadCollection.messageUpdateVersionFailed": "{folderName}का संस्करण अपडेट करने में विफल।", + "platformUploadCollection.messageUpdateVersionSuccess": "{folderName} संस्करण अद्यतन किया गया है।", + "platformUploadCollection.messageFileRenameFailed": "\"{from}\" तक \"{to}\" नाम बदलने में विफल।", + "platformUploadCollection.messageFileRenameSuccess": "\"{from}\" का नाम बदलकर कर \"{to}\" दिया गया है।", + "platformUploadCollection.messageRemoveFoldersAndFilesFailed": "{foldersCount} फ़ोल्डर्स और {filesCount} फ़ाइलें हटाने में विफल।", + "platformUploadCollection.messageRemoveFoldersAndFilesSuccess": "{foldersCount} फ़ोल्डर्स और {filesCount} फ़ाइलें हटा दी गई हैं।", + "platformUploadCollection.messageRemoveFoldersFailed": "{foldersCount} फ़ोल्डर्स हटाने में विफल ।", + "platformUploadCollection.messageRemoveFoldersSuccess": "{foldersCount} फ़ोल्डर हटा दिए गए हैं।", + "platformUploadCollection.messageRemoveFilesFailed": "{filesCount} फ़ाइलें हटाने में विफल ।", + "platformUploadCollection.messageRemoveFilesSuccess": "{filesCount} फ़ाइलें हटा दी गई हैं।", + "platformUploadCollection.messageRemoveFileOrFolderFailed": "{name} हटाने में विफल ।", + "platformUploadCollection.messageRemoveFileOrFolderSuccess": "{name} निकाल दिया गया है।", + "platformUploadCollection.messageMoveFoldersAndFilesFailed": "{to} तक {foldersCount} फ़ोल्डर्स और {filesCount} फ़ाइलें स्थानांतरित करने में विफल।", + "platformUploadCollection.messageMoveFoldersAndFilesSuccess": "{foldersCount} फ़ोल्डर्स और {filesCount} फ़ाइलें स्थानांतरित कर दी गई हैं {to}।", + "platformUploadCollection.messageMoveFoldersFailed": "{to} तक {foldersCount} फ़ोल्डर्स स्थानांतरित करने में विफल।", + "platformUploadCollection.messageMoveFoldersSuccess": "{foldersCount} फ़ोल्डर्स को स्थानांतरित कर दिया गया है {to}।", + "platformUploadCollection.messageMoveFilesFailed": "{to} तक {filesCount} फ़ाइलें स्थानांतरित करने में विफल।", + "platformUploadCollection.messageMoveFilesSuccess": "{filesCount} फ़ाइलें स्थानांतरित कर दी गई हैं {to}।", + "platformUploadCollection.messageMoveFileOrFolderFailed": "स्थानांतरित करने में विफल {name} प्रति {to}।", + "platformUploadCollection.messageMoveFileOrFolderSuccess": "{name} में ले जाया गया है {to}।", + "platformUploadCollection.messageMoveRootFoldersAndFilesFailed": "स्थानांतरित करने में विफल {foldersCount} फ़ोल्डर्स और {filesCount} सभी फाइलों के लिए फ़ाइलें।", + "platformUploadCollection.messageMoveRootFoldersAndFilesSuccess": "{foldersCount} फ़ोल्डर्स और {filesCount} फ़ाइलें सभी फ़ाइलों में ले जाया गया है।", + "platformUploadCollection.messageMoveRootFoldersFailed": "स्थानांतरित करने में विफल {foldersCount} सभी फाइलों के लिए फ़ोल्डर।", + "platformUploadCollection.messageMoveRootFoldersSuccess": "{foldersCount} फ़ोल्डर्स को सभी फाइलों में ले जाया गया है।", + "platformUploadCollection.messageMoveRootFilesFailed": "स्थानांतरित करने में विफल {filesCount} सभी फाइलों के लिए फ़ाइलें।", + "platformUploadCollection.messageMoveRootFilesSuccess": "{filesCount} फ़ाइलें सभी फ़ाइलों में ले जाया गया है।", + "platformUploadCollection.messageMoveRootFileOrFolderFailed": "स्थानांतरित करने में विफल {name} सभी फाइलों के लिए।", + "platformUploadCollection.messageMoveRootFileOrFolderSuccess": "{name} सभी फाइलों में ले जाया गया है।", + "platformUploadCollection.messageFileTypeMismatchPlural": "{filesCount} फाइलों का प्रकार गलत है। अनुमत प्रकार: {allowedTypes}।", + "platformUploadCollection.messageFileTypeMismatchSingular": "फ़ाइल \"{fileName}\" गलत प्रकार है। अनुमत प्रकार: {allowedTypes}।", + "platformUploadCollection.messageFileSizeExceededPlural": "{filesCount} फ़ाइलें अधिकतम फ़ाइल आकार से अधिक हो गईं। अनुमत अधिकतम फ़ाइल आकार: {maxFileSize}।", + "platformUploadCollection.messageFileSizeExceededSingular": "फ़ाइल \"{fileName}\" अधिकतम फ़ाइल आकार को पार कर गया। अनुमत अधिकतम फ़ाइल आकार: {maxFileSize}।", + "platformUploadCollection.messageFileNameLengthExceededPlural": "{filesCount} फ़ाइलें फ़ाइल नाम की अधिकतम लंबाई को पार कर गई हैं। अनुमत फ़ाइल नाम लंबाई: {maxFilenameLength} पात्र।", + "platformUploadCollection.messageFileNameLengthExceededSingular": "नाम \"{fileName}\" फ़ाइल नाम की अधिकतम लंबाई को पार कर गया। अनुमत फ़ाइल नाम लंबाई: {maxFilenameLength} पात्र।", + "platformWizardGenerator.summarySectionEditStep": "संपादित करें", + "platformMessagePopover.allErrors": "All", + "platformMessagePopover.defaultErrors.email": "Email is invalid", + "platformMessagePopover.defaultErrors.max": "The field exceeds maximum value", + "platformMessagePopover.defaultErrors.maxLength": "The field exceeds maximum length", + "platformMessagePopover.defaultErrors.min": "The field value is less than allowed", + "platformMessagePopover.defaultErrors.minLength": "The field length is less than allowed", + "platformMessagePopover.defaultErrors.pattern": "The field value is invalid", + "platformMessagePopover.defaultErrors.required": "The field is mandatory", + "platformMessagePopover.defaultErrors.requiredTrue": "The field is mandatory", + "platformVariantManagement.manage": "Manage", + "platformVariantManagement.saveAs": "Save as", + "platformVariantManagement.saveView": "Save View", + "platformVariantManagement.save": "Save", + "platformVariantManagement.myViews": "My Views", + "platformVariantManagement.view": "View", + "platformVariantManagement.setAsDefault": "Set as Default", + "platformVariantManagement.public": "Public", + "platformVariantManagement.applyAutomatically": "Apply Automatically", + "platformVariantManagement.requiredFieldError": "This field is required.", + "platformVariantManagement.nameTakenFieldError": "Variant with such name already exists. Please chose a different name.", + "platformVariantManagement.cancel": "Cancel", + "platformVariantManagement.manageViews": "Manage Views", + "platformVariantManagement.markAsFavourite": "Mark as Favourite", + "platformVariantManagement.sharing": "Sharing", + "platformVariantManagement.default": "Default", + "platformVariantManagement.createdBy": "Created By", + "platformVariantManagement.removeVariant": "Remove View", + "platformVariantManagement.search": "Search", + "platformVariantManagement.access.public": "Public", + "platformVariantManagement.access.private": "Private", + "platformSelect.selectOptionLabel": "एक विकल्प चुनें", + "fnSlider.minMaxDetails": "स्लाइडर न्यूनतम मूल्य {min}, अधिकतम मूल्य {max}", + "fnSlider.valueminDetails": "मूल्य {value}", + "fnSlider.valuemaxDetails": "मूल्य {value}", + "fnSlider.valueNowDetails": "वर्तमान मूल्य {value}", + "fnSwitch.semanticAcceptLabel": "स्वीकार करें", + "fnSwitch.semanticDeclineLabel": "अस्वीकार करें", + "coreTree.expand": "Expand node", + "coreTree.collapse": "Collapse node", + "coreTree.noData": "No data" +} diff --git a/libs/i18n/src/lib/translations/translations_it-IT.json b/libs/i18n/src/lib/translations/translations_it-IT.json new file mode 100644 index 00000000000..8668dee6cee --- /dev/null +++ b/libs/i18n/src/lib/translations/translations_it-IT.json @@ -0,0 +1,503 @@ +{ + "coreMultiComboBox.selectAllLabel": "Seleziona tutto ({selectedItems} di {totalItems})", + "coreCarousel.leftNavigationBtnLabel": "Vai all'elemento precedente", + "coreCarousel.rightNavigationBtnLabel": "Vai all'elemento successivo", + "coreDatePicker.dateInputLabel": "Inserimento data", + "coreDatePicker.dateRangeInputLabel": "Inserimento intervallo di date", + "coreDatePicker.displayCalendarToggleLabel": "Selettore aperto", + "coreDatePicker.valueStateSuccessMessage": "Stato valore Success", + "coreDatePicker.valueStateInformationMessage": "Informazioni sullo stato del valore", + "coreDatePicker.valueStateWarningMessage": "Avviso stato valore", + "coreDatePicker.valueStateErrorMessage": "Errore stato valore", + "coreDatetimePicker.datetimeInputLabel": "Inserimento data/ora", + "coreDatetimePicker.displayDatetimeToggleLabel": "Visualizza/disattiva calendario", + "coreDatetimePicker.displayTypeDateLabel": "Data", + "coreDatetimePicker.displayTypeTimeLabel": "Volta", + "coreDatetimePicker.datetimeOkLabel": "Ok", + "coreDatetimePicker.datetimeCancelLabel": "Anulla", + "coreFeedListItem.moreLabel": "Altro", + "coreFeedListItem.lessLabel": "Meno", + "coreGridList.filterBarCancelButtonTitle": "Annulla", + "coreGridList.listItemStatusAriaLabel": "L'articolo ha uno stato. Stato: {status}.", + "coreGridList.listItemCounterAriaLabel": "L'articolo ha {count} sottoarticoli.", + "coreGridList.listItemButtonDetailsTitle": "Dettagli", + "coreGridList.listItemButtonDeleteTitle": "Elimina", + "coreGridList.listItemStatusContainsErrors": "Contiene errori", + "coreGridList.listItemStatusLocked": "Bloccato", + "coreGridList.listItemStatusDraft": "Bozza", + "coreMessageStrip.dismissLabel": "Congedare", + "coreMultiInput.multiInputAriaLabel": "Multi Value Input", + "coreMultiInput.tokensCountText": "Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.", + "coreNavigation.mainNavigation": "Main Navigation", + "coreNavigation.navigationPath": "Navigation Path", + "coreNestedList.linkItemAriaLabel": "Elemento dell'albero {itemDetails}, {index} di {total}{selectedDescription}", + "coreOverflowLayout.moreItemsButton": "{ count, plural, one {1 più} other {Altri #} } articoli", + "corePagination.pageLabel": "Pagina {pageNumber}", + "corePagination.currentPageAriaLabel": "La pagina {pageNumber} è la pagina corrente", + "corePagination.labelBeforeInputMobile": "Pagina:", + "corePagination.labelAfterInputMobile": "di {totalCount}", + "corePagination.inputAriaLabel": "Inserimento pagina, Pagina corrente, Pagina {pageNumber} di {totalCount}", + "corePagination.itemsPerPageLabel": "Risultati per pagina:", + "corePagination.firstLabel": "First", + "corePagination.previousLabel": "Precedente", + "corePagination.nextLabel": "Next", + "corePagination.lastLabel": "Ultimo", + "corePagination.ariaLabel": "Impaginazione", + "corePagination.totalResultsLabel": "{totalCount} Risultati", + "coreProductSwitch.ariaLabel": "Commutatore del prodotto", + "coreShellbar.collapsedItemMenuLabel": "Menu di voci compresso", + "coreShellbar.cancel": "Cancel", + "coreShellbar.search": "Search", + "coreSlider.singleMinMaxDetails": "Il valore minimo del dispositivo di scorrimento è {minimo}, il valore massimo è {max}", + "coreSlider.singleValueminDetails": "Il valore è {value}", + "coreSlider.singleValuemaxDetails": "Il valore è {value}", + "coreSlider.singleValueNowDetails": "Il valore attuale è {value}", + "coreSlider.multipleHandle1MinMaxDetails": "Il valore minimo del dispositivo di scorrimento dell'intervallo è {min}, il valore massimo è {max}", + "coreSlider.multipleHandle1ValueminDetails": "Il valore è {value}", + "coreSlider.multipleHandle1ValuemaxDetails": "Il valore è {value}", + "coreSlider.multipleHandle1ValueNowDetails": "Il valore attuale è {value}", + "coreSlider.multipleHandle2MinMaxDetails": "Il valore minimo del dispositivo di scorrimento dell'intervallo è {min}, il valore massimo è {max}", + "coreSlider.multipleHandle2ValueminDetails": "Il valore è {value}", + "coreSlider.multipleHandle2ValuemaxDetails": "Il valore è {value}", + "coreSlider.multipleHandle2ValueNowDetails": "Il valore attuale è {value}", + "coreSplitButton.expandButtonAriaLabel": "Più azioni", + "coreSplitButton.arialLabel": "Pulsante Dividi", + "coreSplitter.paginationItemAriaLabel": "Sezione", + "coreStepInput.incrementButtonTitle": "Incremento", + "coreStepInput.decrementButtonTitle": "Decremento", + "coreStepInput.ariaRoleDescription": "Ingresso passo", + "coreSwitch.semanticAcceptLabel": "Accettare", + "coreSwitch.semanticDeclineLabel": "Declino", + "coreTabs.tabListExpandButtonText": "Di più", + "coreText.moreLabel": "Di più", + "coreText.lessLabel": "Meno", + "coreTime.componentAriaName": "Selettore tempo", + "coreTime.increaseHoursLabel": "Aumenta le ore", + "coreTime.hoursLabel": "Ore", + "coreTime.decreaseHoursLabel": "Diminuisci ore", + "coreTime.increaseMinutesLabel": "Aumenta minuti", + "coreTime.minutesLabel": "Minimo", + "coreTime.decreaseMinutesLabel": "Diminuisci minuti", + "coreTime.increaseSecondsLabel": "Aumenta i secondi", + "coreTime.secondsLabel": "Sec", + "coreTime.decreaseSecondsLabel": "Diminuisci secondi", + "coreTime.increasePeriodLabel": "Aumento periodo", + "coreTime.periodLabel": "Periodo", + "coreTime.decreasePeriodLabel": "Diminuisci periodo", + "coreTime.navigationInstruction": "Per spostarti tra gli elementi di questo elenco, premi la freccia in alto o in basso. Per passare da un elenco all'altro, premere la freccia sinistra o la freccia destra.", + "coreTimePicker.timePickerInputLabel": "Input per la selezione del tempo", + "coreTimePicker.timePickerButtonLabel": "Selettore aperto", + "coreToken.deleteButtonLabel": "Cancellabile", + "coreToken.ariaRoleDescription": "gettone", + "coreTokenizer.moreLabel": "{ count, plural, one {1 più} other {Altri #} } articoli", + "coreUploadCollection.menuOkText": "Ok", + "coreUploadCollection.menuCancelText": "Annulla", + "coreUploadCollection.menuEditAriaLabel": "Modifica", + "coreUploadCollection.menuDeleteAriaLabel": "Elimina", + "coreUploadCollection.menuOkAriaLabel": "Modifica", + "coreUploadCollection.menuCancelAriaLabel": "Annulla", + "coreUploadCollection.formItemPlaceholder": "Nome file", + "coreWizard.ariaLabel": "Procedura guidata", + "coreBreadcrumb.overflowTitleMore": "Altro", + "platformActionBar.backButtonLabel": "Torna indietro", + "platformApprovalFlow.defaultWatchersLabel": "Osservatori", + "platformApprovalFlow.defaultTitle": "Processo di approvazione", + "platformApprovalFlow.nextButtonAriaLabel": "Vai alla diapositiva successiva", + "platformApprovalFlow.prevButtonAriaLabel": "Vai alla diapositiva precedente", + "platformApprovalFlow.editModeSaveButtonLabel": "Salva", + "platformApprovalFlow.editModeExitButtonLabel": "Uscita", + "platformApprovalFlow.emptyTitle": "Inizia ad aggiungere approvatori e osservatori", + "platformApprovalFlow.emptyHint": "Per aggiungere approvatori, fai clic su \"Aggiungi un passaggio\". Per aggiungere osservatori, fai clic sul campo Osservatori.", + "platformApprovalFlow.addNodeDialogHeaderAddApprovers": "Aggiungi approvatori", + "platformApprovalFlow.addNodeDialogHeaderEditApprover": "Modifica approvatori", + "platformApprovalFlow.addNodeDialogHeaderAddApproverTeam": "Utente/Squadra", + "platformApprovalFlow.addNodeDialogHeaderDetail": "Dettaglio", + "platformApprovalFlow.addNodeDialogNodeType": "Parallelo o seriale", + "platformApprovalFlow.addNodeDialogNodeTypeSerial": "Seriale", + "platformApprovalFlow.addNodeDialogNodeTypeParallel": "Parallelo", + "platformApprovalFlow.addNodeDialogApproverType": "Tipo di approvatore", + "platformApprovalFlow.addNodeDialogApproverTypeUser": "Un utente", + "platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone": "Chiunque nel team", + "platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone": "Tutti in squadra", + "platformApprovalFlow.addNodeDialogUserOrTeam": "Utente/Squadra", + "platformApprovalFlow.addNodeDialogAddToNext": "Aggiungi al nodo seriale successivo", + "platformApprovalFlow.addNodeDialogDueDate": "Data di scadenza", + "platformApprovalFlow.addNodeSearchPlaceholder": "Cerca", + "platformApprovalFlow.addNodeAddActionBtnLabel": "Aggiungi", + "platformApprovalFlow.addNodeCancelActionBtnLabel": "Annulla", + "platformApprovalFlow.addNodeSelectApproverActionBtnLabel": "Seleziona", + "platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel": "Annulla", + "platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel": "Chiudi", + "platformApprovalFlow.userDetailsHeader": "Dettaglio", + "platformApprovalFlow.userDetailsSendReminderBtnLabel": "Invia promemoria", + "platformApprovalFlow.userDetailsCancelBtnLabel": "Annulla", + "platformApprovalFlow.messagesApproverAddedSuccess": "1 approvatore è stato aggiunto", + "platformApprovalFlow.messagesTeamAddedSuccess": "1 squadra è stata aggiunta", + "platformApprovalFlow.messagesNodeEdited": "1 approvatore è stato modificato", + "platformApprovalFlow.messagesNodeRemovedSingular": "1 approvatore è stato rimosso", + "platformApprovalFlow.messagesNodeRemovedPlural": "Gli approvatori sono stati rimossi", + "platformApprovalFlow.messagesTeamRemoved": "1 squadra è stata rimossa", + "platformApprovalFlow.messagesErrorBuildGraph": "Si è verificato un errore durante il tentativo di creare un grafico. Controllare i dati iniziali.", + "platformApprovalFlow.messagesUndoAction": "Anulla", + "platformApprovalFlow.nodeMembersCount": "{count} membri", + "platformApprovalFlow.nodeVariousTeams": "Varie squadre", + "platformApprovalFlow.nodeStatusDueToday": "Scadenza oggi", + "platformApprovalFlow.nodeStatusDueInXDays": " Scadenza tra {count} giorni", + "platformApprovalFlow.nodeStatusXDaysOverdue": "{count} giorni scaduti", + "platformApprovalFlow.nodeActionAddApproversBefore": "Aggiungi prima gli approvatori", + "platformApprovalFlow.nodeActionAddApproversAfter": "Aggiungi approvatori dopo", + "platformApprovalFlow.nodeActionAddApproversParallel": "Aggiungi approvatori paralleli", + "platformApprovalFlow.nodeActionEditApprover": "Modifica approvatore", + "platformApprovalFlow.nodeActionRemove": "Rimuovi", + "platformApprovalFlow.selectTypeDialogMoveApproverAs": "Sposta approvatore come", + "platformApprovalFlow.selectTypeDialogParallelOrSerial": "Parallelo o seriale", + "platformApprovalFlow.selectTypeDialogNodeTypeParallel": "Approvatore parallelo", + "platformApprovalFlow.selectTypeDialogNodeTypeSerial": "Approvatore seriale", + "platformApprovalFlow.selectTypeDialogConfirmButton": "Conferma", + "platformApprovalFlow.selectTypeDialogCancelButton": "Annulla", + "platformApprovalFlow.toolbarAddStepButton": "Aggiungi un passo", + "platformApprovalFlow.toolbarEditButton": "Modifica", + "platformApprovalFlow.toolbarAddApproversBefore": "Aggiungi prima gli approvatori", + "platformApprovalFlow.toolbarAddApproversAfter": "Aggiungi approvatori dopo", + "platformApprovalFlow.toolbarAddApproversParallel": "Aggiungi approvatori paralleli", + "platformApprovalFlow.toolbarRemove": "Rimuovi", + "platformApprovalFlow.toolbarEditApprover": "Modifica approvatore", + "platformApprovalFlow.watchersInputPlaceholder": "Cerca qui..", + "platformApprovalFlow.userListSelectedItemsCountSingular": "1 elemento selezionato", + "platformApprovalFlow.userListSelectedItemsCountPlural": "{count} elementi selezionati", + "platformApprovalFlow.statusApproved": "approved", + "platformApprovalFlow.statusRejected": "rejected", + "platformApprovalFlow.statusInProgress": "in progress", + "platformApprovalFlow.statusNotStarted": "not started", + "platformFeedInput.userTitle": "Utente", + "platformVHD.selectionBarLabel": "Articoli selezionati e condizionati", + "platformVHD.selectedAndConditionLabel": "Articoli e condizioni selezionati", + "platformVHD.footerClearSelectedTitle": "cancella gli elementi selezionati", + "platformVHD.footerClearSelectedAriaLabel": "cancella gli elementi selezionati", + "platformVHD.searchButtonLabel": "Vai", + "platformVHD.successButtonLabel": "OK", + "platformVHD.cancelButtonLabel": "Annulla", + "platformVHD.selectedEmptyLabel": "Nessun articolo o condizione selezionato", + "platformVHD.searchPlaceholder": "Cerca", + "platformVHD.searchAdvancedSearchLabel": "Filtri", + "platformVHD.searchShowAdvancedSearchLabel": "Mostra filtri", + "platformVHD.searchHideAdvancedSearchLabel": "Nascondi filtri", + "platformVHD.searchShowAllAdvancedSearchLabel": "Mostra tutti i filtri", + "platformVHD.searchHideAllAdvancedSearchLabel": "Nascondi tutti i filtri", + "platformVHD.selectTabDisplayCountLabel": "Articoli ({count})", + "platformVHD.selectTabMoreBtnLabel": "Altro", + "platformVHD.selectTabCountHiddenA11yLabel": "contiene {rowCount} righe e {colCount} colonne", + "platformVHD.selectMobileTabBackBtnTitle": "Indietro", + "platformVHD.selectMobileTabBtnOpenDialogLabel": "Apri finestra di dialogo", + "platformVHD.selectMobileTabTitle": "{title} scheda", + "platformVHD.selectMobileConditionEmpty": "Vuoto", + "platformVHD.defineConditionTitle": "Prodotto", + "platformVHD.defineConditionSelectedValueHiddenA11yLabel": "valore selezionato {value}", + "platformVHD.defineConditionConditionsGroupHeaderInclude": "Includi", + "platformVHD.defineConditionConditionsGroupHeaderExclude": "Escludi", + "platformVHD.defineConditionFromPlaceholder": "da", + "platformVHD.defineConditionToPlaceholder": "a", + "platformVHD.defineConditionValuePlaceholder": "valore", + "platformVHD.defineConditionRemoveConditionButtonTitle": "Rimuovi condizione", + "platformVHD.defineConditionAddConditionButtonLabel": "Aggiungi", + "platformVHD.defineConditionAddConditionButtonTitle": "Aggiungi condizione", + "platformVHD.defineConditionConditionStrategyLabelContains": "contiene", + "platformVHD.defineConditionConditionStrategyLabelEqualTo": "uguale a", + "platformVHD.defineConditionConditionStrategyLabelBetween": "fra", + "platformVHD.defineConditionConditionStrategyLabelStartsWith": "inizia con", + "platformVHD.defineConditionConditionStrategyLabelEndsWith": "finisce con", + "platformVHD.defineConditionConditionStrategyLabelLessThan": "meno di", + "platformVHD.defineConditionConditionStrategyLabelLessThanEqual": "meno che uguale", + "platformVHD.defineConditionConditionStrategyLabelGreaterThan": "più grande di", + "platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual": "maggiore di uguale", + "platformVHD.defineConditionConditionStrategyLabelEmpty": "vuoto", + "platformVHD.defineConditionConditionStrategyLabelNotEqualTo": "non uguale a", + "platformVHD.defineConditionConditionStrategyLabelNotEmpty": "no vuoto", + "platformVHD.defineConditionMaxCountError": "Immettere un valore con non più di {count} caratteri", + "platformVHD.selectTabTitle": "Seleziona dall'elenco", + "platformVHD.searchTableEmptyMessage": "Usa la ricerca per ottenere risultati", + "platformVHD.defineTabTitle": "Definisci condizioni", + "platformCombobox.countListResultsSingular": "1 elemento della lista dei risultati", + "platformCombobox.countListResultsPlural": "{count} elementi dell'elenco dei risultati", + "platformMultiCombobox.inputGlyphAriaLabel": "Seleziona Opzioni", + "platformMultiCombobox.inputIconTitle": "Seleziona Opzioni", + "platformMultiCombobox.mobileShowAllItemsButton": "Mostra tutti gli articoli", + "platformMultiCombobox.mobileShowSelectedItemsButton": "Mostra gli articoli selezionati", + "platformTextarea.counterMessageCharactersOverTheLimitSingular": "1 carattere oltre il limite", + "platformTextarea.counterMessageCharactersOverTheLimitPlural": "{count} caratteri oltre il limite", + "platformTextarea.counterMessageCharactersRemainingSingular": "1 carattere rimanente", + "platformTextarea.counterMessageCharactersRemainingPlural": "{count} caratteri rimanenti", + "platformLink.roleDescriptionWithMedia": "Media: {media}", + "platformList.loadingAriaLabel": "caricamento in corso", + "platformObjectListItem.detailsActionAriaLabel": "dettaglio", + "platformObjectListItem.deleteActionAriaLabel": "elimina", + "platformStandardListItem.detailsActionAriaLabel": "dettaglio", + "platformStandardListItem.deleteActionAriaLabel": "elimina", + "platformSearchField.clearButtonTitle": "Cancella", + "platformSearchField.submitButtonTitle": "Cerca", + "platformSearchField.searchInputLabel": "Cerca", + "platformSearchField.synchronizeButtonTitle": "Sincronizza", + "platformSearchField.searchSuggestionMessage": "{count} suggerimenti trovati.", + "platformSearchField.searchSuggestionNavigateMessage": "usa le frecce su e giù per navigare", + "platformSmartFilterBar.searchPlaceholder": "Cerca", + "platformSmartFilterBar.submitButtonLabel": "Vai", + "platformSmartFilterBar.filtersButtonLabel": "Filtri ({filtersCount})", + "platformSmartFilterBar.showFiltersButtonLabel": "Mostra filtri", + "platformSmartFilterBar.hideFiltersButtonLabel": "Nascondi filtri", + "platformSmartFilterBar.defineConditionsRemoveConditionButtonTitle": "Rimuovi condizione", + "platformSmartFilterBar.defineConditionsAddConditionButtonLabel": "Aggiungi condizione", + "platformSmartFilterBar.defineConditionsSubmitButtonLabel": "Vai", + "platformSmartFilterBar.defineConditionsCancelButton": "Annulla", + "platformSmartFilterBar.selectFiltersHeader": "Filtri", + "platformSmartFilterBar.selectFiltersAvailableFiltersText": "Filtri disponibili", + "platformSmartFilterBar.selectFiltersFilterColumnLabel": "Filtro", + "platformSmartFilterBar.selectFiltersActiveColumnLabel": "Attivo", + "platformSmartFilterBar.selectFiltersSubmitButtonLabel": "Vai", + "platformSmartFilterBar.selectFiltersCancelButton": "Annulla", + "platformSmartFilterBar.filterConditionContains": "contiene", + "platformSmartFilterBar.filterConditionEqualTo": "uguale a", + "platformSmartFilterBar.filterConditionBetween": "tra", + "platformSmartFilterBar.filterConditionBeginsWith": "inizia con", + "platformSmartFilterBar.filterConditionEndsWith": "finisce con", + "platformSmartFilterBar.filterConditionLessThan": "minore di", + "platformSmartFilterBar.filterConditionLessThanOrEqualTo": "minore o uguale a", + "platformSmartFilterBar.filterConditionGreaterThan": "maggiore di", + "platformSmartFilterBar.filterConditionGreaterThanOrEqualTo": "maggiore o uguale a", + "platformSmartFilterBar.filterConditionAfter": "dopo", + "platformSmartFilterBar.filterConditionOnOrAfter": "su o dopo", + "platformSmartFilterBar.filterConditionBefore": "prima", + "platformSmartFilterBar.filterConditionBeforeOrOn": "prima o sopra", + "platformSmartFilterBar.filterConditionValuePlaceholder": "valore", + "platformSmartFilterBar.filterConditionValueFromPlaceholder": "da", + "platformSmartFilterBar.filterConditionValueToPlaceholder": "a", + "platformSmartFilterBar.settingsCategoryAll": "Tutto", + "platformSmartFilterBar.settingsCategoryVisible": "Visibile", + "platformSmartFilterBar.settingsCategoryActive": "Attivo", + "platformSmartFilterBar.settingsCategoryVisibleAndActive": "Visibile e attivo", + "platformSmartFilterBar.settingsCategoryMandatory": "Obbligatorio", + "platformSmartFilterBar.manageFieldConditions": "Manage field conditions", + "platformSmartFilterBar.refreshButtonAriaLabel": "Refresh", + "platformTable.headerMenuSortAsc": "Ordine crescente", + "platformTable.headerMenuSortDesc": "Ordine decrescente", + "platformTable.headerMenuGroup": "Gruppo", + "platformTable.headerMenuFreeze": "Congela", + "platformTable.headerMenuEndFreeze": "Freeze to End", + "platformTable.headerMenuUnfreeze": "Sblocca", + "platformTable.headerMenuFilter": "Filtro", + "platformTable.defaultEmptyMessage": "Nessun dato trovato", + "platformTable.emptyCell": "Vuoto", + "platformTable.noVisibleColumnsMessage": "Right now, there are no visible columns in the table. Please select the columns you need in the table settings.", + "platformTable.resetChangesButtonLabel": "Reset", + "platformTable.editableCellNumberPlaceholder": "Inserisci valore", + "platformTable.editableCellDatePlaceholder": "Inserisci valore", + "platformTable.editableCellStringPlaceholder": "Inserisci valoree", + "platformTable.P13ColumnsDialogHeader": "Colonne", + "platformTable.P13ColumnsDialogSearchPlaceholder": "Cerca", + "platformTable.P13ColumnsDialogsShowSelected": "Mostra selezionato", + "platformTable.P13ColumnsDialogShowAll": "Mostra tutto", + "platformTable.P13ColumnsDialogSelectAll": "Seleziona tutto ({selectedColumnsCount}/{selectableColumnsCount})", + "platformTable.P13ColumnsDialogConfirmationBtnLabel": "OK", + "platformTable.P13ColumnsDialogCancelBtnLabel": "Annulla", + "platformTable.P13ColumnsDialogMoveToTopBtn": "Sposta in alto", + "platformTable.P13ColumnsDialogMoveUpBtn": "Sposta su", + "platformTable.P13ColumnsDialogMoveDownBtn": "Sposta su", + "platformTable.P13ColumnsDialogMoveToBottomBtn": "Sposta in basso", + "platformTable.P13FilterStrategyLabelBetween": "fra", + "platformTable.P13FilterStrategyLabelContains": "contiene", + "platformTable.P13FilterStrategyLabelBeginsWith": "inizia con", + "platformTable.P13FilterStrategyLabelEndsWith": "finisce con", + "platformTable.P13FilterStrategyLabelEqualTo": "uguale a", + "platformTable.P13FilterStrategyLabelGreaterThan": "più grande di", + "platformTable.P13FilterStrategyLabelGreaterThanOrEqualTo": "maggiore o uguale a", + "platformTable.P13FilterStrategyLabelLessThan": "meno di", + "platformTable.P13FilterStrategyLabelLessThanOrEqualTo": "minore o uguale a", + "platformTable.P13FilterStrategyLabelAfter": "dopo", + "platformTable.P13FilterStrategyLabelOnOrAfter": "sopra o dopo", + "platformTable.P13FilterStrategyLabelBefore": "prima", + "platformTable.P13FilterStrategyLabelBeforeOrOn": "prima o dopo", + "platformTable.P13FilterStrategyLabelNotDefined": "Non definito", + "platformTable.P13FilterBooleanOptionNotDefined": " ", + "platformTable.P13FilterBooleanOptionTrue": "Si", + "platformTable.P13FilterBooleanOptionFalse": "No", + "platformTable.P13FilterDialogHeader": "Filtra per", + "platformTable.P13FilterDialogIncludePanelTitleWithCount": "Includi ({count})", + "platformTable.P13FilterDialogIncludePanelTitleWithoutCount": "Includi", + "platformTable.P13FilterDialogExcludePanelTitleWithCount": "Escludi ({count})", + "platformTable.P13FilterDialogExcludePanelTitleWithoutCount": "Escludi", + "platformTable.P13FilterDialogRemoveFilterBtnTitle": "Rimuovi filtro", + "platformTable.P13FilterDialoAddFilterBtnTitle": "Aggiungi filtro", + "platformTable.P13FilterDialogConfirmationBtnLabel": "OK", + "platformTable.P13FilterDialogCancelBtnLabel": "Annulla", + "platformTable.P13GroupDialogHeader": "Gruppo", + "platformTable.P13GroupDialogNoneSelectedColumnSelectPlaceholder": "(nessuno)", + "platformTable.P13GroupDialogShowFieldAsColumnCheckboxLabel": "Mostra campo come colonna", + "platformTable.P13GroupDialogRemoveGroupBtnTitle": "Rimuovi", + "platformTable.P13GroupDialogAddNewGroupBtnTitle": "Aggiungi nuovo", + "platformTable.P13GroupDialogConfirmationBtnLabel": "OK", + "platformTable.P13GroupDialogCancelBtnLabel": "Annulla", + "platformTable.P13SortDialogHeader": "Ordina", + "platformTable.P13SortDialogNoneSelectedColumn": "(nessuno)", + "platformTable.P13SortDialogNoneSelectedSorting": "(nessuno)", + "platformTable.P13SortDialogSortOrderSelectOptionAsc": "Crescente", + "platformTable.P13SortDialogSortOrderSelectOptionDesc": "Decrescente", + "platformTable.P13SortDialogRemoveSortBtnTitle": "Rimuovi", + "platformTable.P13SortDialogAddNewSortBtnTitle": "Aggiungi nuovo", + "platformTable.P13SortDialogConfirmationBtnLabel": "OK", + "platformTable.P13SortDialogCancelBtnLabel": "Annulla", + "platformTable.toolbarSearchPlaceholder": "Cerca", + "platformTable.toolbarActionCreateButtonLabel": "Create", + "platformTable.toolbarActionSaveButtonLabel": "Salva", + "platformTable.toolbarActionCancelButtonLabel": "Annulla", + "platformTable.toolbarActionSortButtonTitle": "Ordina", + "platformTable.toolbarActionFilterButtonTitle": "Filtro", + "platformTable.toolbarActionGroupButtonTitle": "Gruppo", + "platformTable.toolbarActionColumnsButtonTitle": "Colonne", + "platformTable.toolbarActionExpandAllButtonTitle": "Expand all", + "platformTable.toolbarActionCollapseAllButtonTitle": "Collapse all", + "platformTable.filterDialogNotFilteredLabel": "(Non filtrato)", + "platformTable.filterDialogFilterByLabel": "Filtra per: {filterLabel}", + "platformTable.filterDialogFilterTitle": "Filtro", + "platformTable.filterDialogFilterBy": "Filtra per", + "platformTable.filterDialogConfirmBtnLabel": "OK", + "platformTable.filterDialogCancelBtnLabel": "Annulla", + "platformTable.groupDialogHeader": "Gruppo", + "platformTable.groupDialogGroupOrderHeader": "Ordine di gruppo", + "platformTable.groupDialogGroupOrderAsc": "Crescente", + "platformTable.groupDialogGroupOrderDesc": "Decrescente", + "platformTable.groupDialogGroupByHeader": "Gruppo per", + "platformTable.groupDialogNotGroupedLabel": "(Non raggruppato)", + "platformTable.groupDialogConfirmBtnLabel": "OK", + "platformTable.groupDialogCancelBtnLabel": "Annulla", + "platformTable.sortDialogHeader": "Ordina", + "platformTable.sortDialogSortOrderHeader": "Ordinamento", + "platformTable.sortDialogSortOrderAsc": "Crescente", + "platformTable.sortDialogSortOrderDesc": "Decrescente", + "platformTable.sortDialogSortByHeader": "Ordinato per", + "platformTable.sortDialogNotSortedLabel": "(Non ordinato)", + "platformTable.sortDialogConfirmBtnLabel": "OK", + "platformTable.sortDialogCancelBtnLabel": "Annulla", + "platformTable.selectAllCheckboxLabel": "Select all", + "platformTable.deselectAllCheckboxLabel": "Deselect all", + "platformTable.deselectSingleRow": "To deselect row, press SPACEBAR", + "platformTable.selectSingleRow": "To select row, press SPACEBAR", + "platformTable.deselectSingleRowTitle": "Click to deselect", + "platformTable.selectSingleRowTitle": "Click to select", + "platformThumbnail.detailsGotoPreviousButtonTitle": "Vai a Precedente", + "platformThumbnail.detailsGotoNextButtonTitle": "Vai a Avanti", + "platformThumbnail.detailsDialogCloseBtnLabel": "Chiudi", + "platformThumbnail.roleDescription": "Immagine", + "platformUploadCollection.moveToTitle": "Sposta a", + "platformUploadCollection.moveToTitleFolder": "Cartella", + "platformUploadCollection.moveToNewFolderBtnLabel": "Nuova cartella", + "platformUploadCollection.moveToAllFilesSubHeaderLabel": "Tutti i files", + "platformUploadCollection.moveToConfirmBtn": "Sposta", + "platformUploadCollection.moveToCloseBtn": "Annulla", + "platformUploadCollection.newFolderTitle": "Nuova cartella", + "platformUploadCollection.newFolderAtRootInputLabel": "Nome della nuova cartella", + "platformUploadCollection.newFolderAtFolderInputLabel": "Nome della nuova cartella all'interno di {folderName}", + "platformUploadCollection.newFolderInputPlaceholder": "Scrivi qui..", + "platformUploadCollection.newFolderInputErrorLabel": "Massimo {count} caratteri consentiti", + "platformUploadCollection.newFolderDialogCreateBtnLabel": "Crea", + "platformUploadCollection.newFolderDialogCancelBtnLabel": "Annulla", + "platformUploadCollection.breadcrumbLabelAllFiles": "Tutti i files", + "platformUploadCollection.breadcrumbLabelAllFilesWithTotal": "Tutti i files ({total})", + "platformUploadCollection.searchPlaceholder": "Cerca", + "platformUploadCollection.addBtnLabel": "Aggiungi", + "platformUploadCollection.newFolderBtnLabel": "Nuova cartella", + "platformUploadCollection.moveToBtnLabel": "Sposta a", + "platformUploadCollection.downloadBtnLabel": "Scarica", + "platformUploadCollection.updateVersionBtnLabel": "Aggiorna versione", + "platformUploadCollection.removeBtnLabel": "Rimuovi", + "platformUploadCollection.folderIconTitle": "Icona cartella", + "platformUploadCollection.fileIconTitle": "Icona file", + "platformUploadCollection.editFileNameInputPlaceholder": "Inserisci un nome", + "platformUploadCollection.editFileNameFileAlreadyExistsError": "Il file con questo nome esiste già", + "platformUploadCollection.editFileNameFolderAlreadyExistsError": "La cartella con questo nome esiste già", + "platformUploadCollection.itemStatusSuccessful": "Successo", + "platformUploadCollection.itemStatusUnsuccessful": "Non successo", + "platformUploadCollection.uploadNewFileAfterFailAction": "Esegui", + "platformUploadCollection.cancelUploadNewFileAction": "Annulla", + "platformUploadCollection.itemMenuBtnTitle": "Altro", + "platformUploadCollection.dragDropAreaText": "Trascina i file per caricarli", + "platformUploadCollection.noDataText": "Nessun file trovato", + "platformUploadCollection.noDataDescription": "Trascina i file da caricare o usa il pulsante \"Aggiungi\".", + "platformUploadCollection.paginationTotal": "Visualizzazione di {from}-{to} di {total}", + "platformUploadCollection.resultsPerPage": "Risultati per pagina", + "platformUploadCollection.messageCreateFailed": "Impossibile creare {folderName}.", + "platformUploadCollection.messageCreateSuccess": "{folderName} è stato creato.", + "platformUploadCollection.messageUpdateVersionFailed": "Impossibile aggiornare la versione di {folderName}.", + "platformUploadCollection.messageUpdateVersionSuccess": "La versione di {folderName} è stata aggiornata.", + "platformUploadCollection.messageFileRenameFailed": "Impossibile rinominare\"{from}\" in \"{to}.\"", + "platformUploadCollection.messageFileRenameSuccess": "\"{from}\" è stato rinominato in \"{to}\".", + "platformUploadCollection.messageRemoveFoldersAndFilesFailed": "Impossibile rimuovere le cartelle {foldersCount} e i file {filesCount}.", + "platformUploadCollection.messageRemoveFoldersAndFilesSuccess": "Le cartelle {foldersCount} e i file {filesCount} sono state rimosse.", + "platformUploadCollection.messageRemoveFoldersFailed": "Impossibile rimuovere le cartelle {foldersount}.", + "platformUploadCollection.messageRemoveFoldersSuccess": "Le cartelle {foldersCount} sono state rimosse.", + "platformUploadCollection.messageRemoveFilesFailed": "Impossibile rimuovere {filesCount} file.", + "platformUploadCollection.messageRemoveFilesSuccess": "I file {filesCount} sono stati rimossi.", + "platformUploadCollection.messageRemoveFileOrFolderFailed": "Impossibile rimuovere {name}.", + "platformUploadCollection.messageRemoveFileOrFolderSuccess": "{nome} è stato rimosso.", + "platformUploadCollection.messageMoveFoldersAndFilesFailed": "Impossibile spostare le cartelle {foldersCount} e i file {filesCount} in {to}.", + "platformUploadCollection.messageMoveFoldersAndFilesSuccess": "{foldersCount} cartelle e {filesCount} file sono stati sposati in {to}.", + "platformUploadCollection.messageMoveFoldersFailed": "Impossibile spostare le cartelle {foldersCount} in {to}.", + "platformUploadCollection.messageMoveFoldersSuccess": "Le cartelle {foldersCount} sono state spostate in {to}.", + "platformUploadCollection.messageMoveFilesFailed": "Impossibile spostare i file {filesCount} in {to}.", + "platformUploadCollection.messageMoveFilesSuccess": "I file {filesCount} sono stati spostati in {to}.", + "platformUploadCollection.messageMoveFileOrFolderFailed": "Impossibile spostare {name} in {to}.", + "platformUploadCollection.messageMoveFileOrFolderSuccess": "{name} è stato spostato in {to}.", + "platformUploadCollection.messageMoveRootFoldersAndFilesFailed": "Impossibile spostare le cartelle {foldersCount} e i file {filesCount} in tutti i file.", + "platformUploadCollection.messageMoveRootFoldersAndFilesSuccess": "Le cartelle {foldersCount} e i file {filesCount} sono state spostate in tutti i file.", + "platformUploadCollection.messageMoveRootFoldersFailed": "Impossibile spostare le cartelle {foldersCount} in tutti i file.", + "platformUploadCollection.messageMoveRootFoldersSuccess": "{foldersCount} le cartelle sono state spostate in tutti i file.", + "platformUploadCollection.messageMoveRootFilesFailed": "Impossibile spostare i file {filesCount} in tutti i file.", + "platformUploadCollection.messageMoveRootFilesSuccess": "{filesCount} file sono stati spostati in tutti i file.", + "platformUploadCollection.messageMoveRootFileOrFolderFailed": "Impossibile spostare {name} in tutti i file.", + "platformUploadCollection.messageMoveRootFileOrFolderSuccess": "{name} è stato spostato in tutti i file.", + "platformUploadCollection.messageFileTypeMismatchPlural": "{filesCount} file hanno il tipo sbagliato. Tipi consentiti: {allowedTypes}", + "platformUploadCollection.messageFileTypeMismatchSingular": "Il file \"{fileName}\" ha il tipo errato. Tipi consentiti: {allowedTypes}.", + "platformUploadCollection.messageFileSizeExceededPlural": "{filesCount} file hanno superato la dimensione massima del file. Dimensione file massima consentita: {maxFileSize}.", + "platformUploadCollection.messageFileSizeExceededSingular": "Il file \"{fileName}\" ha superato le dimensioni massime del file. Dimensione file massima consentita: {maxFileSize}.", + "platformUploadCollection.messageFileNameLengthExceededPlural": "{filesCount} file hanno superato la lunghezza massima del nome file. Lunghezza del nome file consentita: {maxFilenameLength} caratteri.", + "platformUploadCollection.messageFileNameLengthExceededSingular": "Il nome \"{fileName}\" ha superato la lunghezza massima del nome del file. Lunghezza del nome consentita: {maxFilenameLength} caratteri.", + "platformWizardGenerator.summarySectionEditStep": "Edit", + "platformMessagePopover.allErrors": "All", + "platformMessagePopover.defaultErrors.email": "Email is invalid", + "platformMessagePopover.defaultErrors.max": "The field exceeds maximum value", + "platformMessagePopover.defaultErrors.maxLength": "The field exceeds maximum length", + "platformMessagePopover.defaultErrors.min": "The field value is less than allowed", + "platformMessagePopover.defaultErrors.minLength": "The field length is less than allowed", + "platformMessagePopover.defaultErrors.pattern": "The field value is invalid", + "platformMessagePopover.defaultErrors.required": "The field is mandatory", + "platformMessagePopover.defaultErrors.requiredTrue": "The field is mandatory", + "platformVariantManagement.manage": "Manage", + "platformVariantManagement.saveAs": "Save as", + "platformVariantManagement.saveView": "Save View", + "platformVariantManagement.save": "Save", + "platformVariantManagement.myViews": "My Views", + "platformVariantManagement.view": "View", + "platformVariantManagement.setAsDefault": "Set as Default", + "platformVariantManagement.public": "Public", + "platformVariantManagement.applyAutomatically": "Apply Automatically", + "platformVariantManagement.requiredFieldError": "This field is required.", + "platformVariantManagement.nameTakenFieldError": "Variant with such name already exists. Please chose a different name.", + "platformVariantManagement.cancel": "Cancel", + "platformVariantManagement.manageViews": "Manage Views", + "platformVariantManagement.markAsFavourite": "Mark as Favourite", + "platformVariantManagement.sharing": "Sharing", + "platformVariantManagement.default": "Default", + "platformVariantManagement.createdBy": "Created By", + "platformVariantManagement.removeVariant": "Remove View", + "platformVariantManagement.search": "Search", + "platformVariantManagement.access.public": "Public", + "platformVariantManagement.access.private": "Private", + "platformSelect.selectOptionLabel": "Seleziona un opzione", + "fnSlider.minMaxDetails": "Il valore minimo dello slider è {min}, il valore massimo è {max}", + "fnSlider.valueminDetails": "Il valore è {value}", + "fnSlider.valuemaxDetails": "Il valore è {value}", + "fnSlider.valueNowDetails": "Il valore attuale è{value}", + "fnSwitch.semanticAcceptLabel": "Accettare", + "fnSwitch.semanticDeclineLabel": "Declino", + "coreTree.expand": "Expand node", + "coreTree.collapse": "Collapse node", + "coreTree.noData": "No data" +} diff --git a/libs/i18n/src/lib/translations/translations_ka-GE.json b/libs/i18n/src/lib/translations/translations_ka-GE.json new file mode 100644 index 00000000000..7d09efecc13 --- /dev/null +++ b/libs/i18n/src/lib/translations/translations_ka-GE.json @@ -0,0 +1,503 @@ +{ + "coreMultiComboBox.selectAllLabel": "ყველას არჩევა ({selectedItems} {totalItems}-დან)", + "coreCarousel.leftNavigationBtnLabel": "წინა ელემენტზე გადასვლა", + "coreCarousel.rightNavigationBtnLabel": "მომდევნო ელემენტზე გადასვლა", + "coreDatePicker.dateInputLabel": "თარიღის ველი", + "coreDatePicker.dateRangeInputLabel": "თარიღის დიაპაზონის ველი", + "coreDatePicker.displayCalendarToggleLabel": "ასარჩევის გახსნა", + "coreDatePicker.valueStateSuccessMessage": "მნიშვნელობა სწორია", + "coreDatePicker.valueStateInformationMessage": "მნიშვნელობა ინფორმატიულია", + "coreDatePicker.valueStateWarningMessage": "მნიშვნელობა ითხოვს ყურადღებას", + "coreDatePicker.valueStateErrorMessage": "მნიშვნელობა არასწორია", + "coreDatetimePicker.datetimeInputLabel": "თარიღის და დროის შესაყვანი ველი", + "coreDatetimePicker.displayDatetimeToggleLabel": "კალენდრის გახსნა/დახურვა", + "coreDatetimePicker.displayTypeDateLabel": "თარიღი", + "coreDatetimePicker.displayTypeTimeLabel": "დრო", + "coreDatetimePicker.datetimeOkLabel": "კარგი", + "coreDatetimePicker.datetimeCancelLabel": "გაუქმება", + "coreFeedListItem.moreLabel": "მეტი", + "coreFeedListItem.lessLabel": "ნაკლები", + "coreGridList.filterBarCancelButtonTitle": "გაუქმება", + "coreGridList.listItemStatusAriaLabel": "ელემენტის სტატუსია: {status}.", + "coreGridList.listItemCounterAriaLabel": "ელემენტს აქვს {count} შვილი.", + "coreGridList.listItemButtonDetailsTitle": "დეტალები", + "coreGridList.listItemButtonDeleteTitle": "წაშლა", + "coreGridList.listItemStatusContainsErrors": "შეიცავს შეცდომებს", + "coreGridList.listItemStatusLocked": "დაბლოკილი", + "coreGridList.listItemStatusDraft": "დაუსრულებელი", + "coreMessageStrip.dismissLabel": "გაუქმება", + "coreMultiInput.multiInputAriaLabel": "Multi Value Input", + "coreMultiInput.tokensCountText": "Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.", + "coreNavigation.mainNavigation": "მთავარი ნავიგაცია", + "coreNavigation.navigationPath": "ნავიგაციის გზა", + "coreNestedList.linkItemAriaLabel": "სიის ელემენტი {itemDetails}, ინდექსით {index} {total}-დან {selectedDescription}", + "coreOverflowLayout.moreItemsButton": "დანარჩენი {count}", + "corePagination.pageLabel": "გვერდი {pageNumber}", + "corePagination.currentPageAriaLabel": "მიმდინარე გვერდია {pageNumber}", + "corePagination.labelBeforeInputMobile": "გვერდი:", + "corePagination.labelAfterInputMobile": "{totalCount}-დან", + "corePagination.inputAriaLabel": "გვერდის ველი, მიმდინარე გვერდი, გვერდი {pageNumber} {totalCount}-დან", + "corePagination.itemsPerPageLabel": "შედეგები გვერდზე:", + "corePagination.firstLabel": "პირველი", + "corePagination.previousLabel": "წინა", + "corePagination.nextLabel": "შემდეგი", + "corePagination.lastLabel": "ბოლო", + "corePagination.ariaLabel": "გვერდები", + "corePagination.totalResultsLabel": "სულ {totalCount} შედეგი", + "coreProductSwitch.ariaLabel": "გადამრთველი", + "coreShellbar.collapsedItemMenuLabel": "დამალული ელემენტი", + "coreShellbar.cancel": "Cancel", + "coreShellbar.search": "Search", + "coreSlider.singleMinMaxDetails": "სლაიდერის მინიმალური მნიშვნელობაა {min}, მაქსიმუმი - {max}", + "coreSlider.singleValueminDetails": "მნიშვნელობაა {value}", + "coreSlider.singleValuemaxDetails": "მნიშვნელობაა {value}", + "coreSlider.singleValueNowDetails": "მიმდინარე მნიშვნელობაა {value}", + "coreSlider.multipleHandle1MinMaxDetails": "სლაიდერის მინიმალური მნიშვნელობაა {min}, მაქსიმუმი - {max}", + "coreSlider.multipleHandle1ValueminDetails": "მნიშვნელობაა {value}", + "coreSlider.multipleHandle1ValuemaxDetails": "მნიშვნელობაა {value}", + "coreSlider.multipleHandle1ValueNowDetails": "მიმდინარე მნიშვნელობაა {value}", + "coreSlider.multipleHandle2MinMaxDetails": "სლაიდერის მინიმალური მნიშვნელობაა {min}, მაქსიმუმი - {max}", + "coreSlider.multipleHandle2ValueminDetails": "მნიშვნელობაა {value}", + "coreSlider.multipleHandle2ValuemaxDetails": "მნიშვნელობაა {value}", + "coreSlider.multipleHandle2ValueNowDetails": "მიმდინარე მნიშვნელობაა {value}", + "coreSplitButton.expandButtonAriaLabel": "მეტი ქმედებები", + "coreSplitButton.arialLabel": "გამოყოფილი ღილაკები", + "coreSplitter.paginationItemAriaLabel": "სექცია", + "coreStepInput.incrementButtonTitle": "მომატება", + "coreStepInput.decrementButtonTitle": "დაკლება", + "coreStepInput.ariaRoleDescription": "ნაბიჯის შეყვანა", + "coreSwitch.semanticAcceptLabel": "მიღება", + "coreSwitch.semanticDeclineLabel": "უარყოფა", + "coreTabs.tabListExpandButtonText": "მაჩვენე მეტი", + "coreText.moreLabel": "მეტი", + "coreText.lessLabel": "ნაკლები", + "coreTime.componentAriaName": "დროის ველი", + "coreTime.increaseHoursLabel": "საათის გაზრდა", + "coreTime.hoursLabel": "სთ", + "coreTime.decreaseHoursLabel": "საათის შემცირება", + "coreTime.increaseMinutesLabel": "წუთის გაზრდა", + "coreTime.minutesLabel": "წთ", + "coreTime.decreaseMinutesLabel": "წუთის შემცირება", + "coreTime.increaseSecondsLabel": "წამის გაზრდა", + "coreTime.secondsLabel": "წმ", + "coreTime.decreaseSecondsLabel": "წამის შემცირება", + "coreTime.increasePeriodLabel": "პერიოდის გაზრდა", + "coreTime.periodLabel": "პერიოდი", + "coreTime.decreasePeriodLabel": "პერიოდის შემცირება", + "coreTime.navigationInstruction": "სიაში სამოძრაოდ დააჭირეთ ზედა და ქვედა ღილაკებს. სიებს შორის სამოძრაოდ - მარჯვენა და მარცხენა ღილაკებს.", + "coreTimePicker.timePickerInputLabel": "დროის შესაყვანი ველი", + "coreTimePicker.timePickerButtonLabel": "ასარჩევის გახსნა", + "coreToken.deleteButtonLabel": "წაშლადი", + "coreToken.ariaRoleDescription": "ტოკენი", + "coreTokenizer.moreLabel": "{count} სხვა", + "coreUploadCollection.menuOkText": "კარგი", + "coreUploadCollection.menuCancelText": "გაუქმება", + "coreUploadCollection.menuEditAriaLabel": "შესწორება", + "coreUploadCollection.menuDeleteAriaLabel": "წაშლა", + "coreUploadCollection.menuOkAriaLabel": "კარგი", + "coreUploadCollection.menuCancelAriaLabel": "გაუქმება", + "coreUploadCollection.formItemPlaceholder": "ფაილი", + "coreWizard.ariaLabel": "ოსტატი", + "coreBreadcrumb.overflowTitleMore": "მეტი", + "platformActionBar.backButtonLabel": "უკან დაბრუნება", + "platformApprovalFlow.defaultWatchersLabel": "დამკვირვებლები", + "platformApprovalFlow.defaultTitle": "დადასტურების პროცესი", + "platformApprovalFlow.nextButtonAriaLabel": "შემდეგ სლაიდზე გადასვლა", + "platformApprovalFlow.prevButtonAriaLabel": "წინა სლაიდზე დაბრუნება", + "platformApprovalFlow.editModeSaveButtonLabel": "შენახვა", + "platformApprovalFlow.editModeExitButtonLabel": "გასვკა", + "platformApprovalFlow.emptyTitle": "დაიწყე დამდასტურებლების და დამკვირვებლების დამატება", + "platformApprovalFlow.emptyHint": "დამდასტურებლის დასამატებლად დააჭირეთ \"ეტაპის დამატებას\". დამკვირვებლის დასამატებლად დააჭირეთ დამკვირვებლების ველს.", + "platformApprovalFlow.addNodeDialogHeaderAddApprovers": "დამდასტურებლის დამატება", + "platformApprovalFlow.addNodeDialogHeaderEditApprover": "დამდასტურებლის შესწორება", + "platformApprovalFlow.addNodeDialogHeaderAddApproverTeam": "მომხმარებელი/გუნდი", + "platformApprovalFlow.addNodeDialogHeaderDetail": "დეტალური ინფორმაცია", + "platformApprovalFlow.addNodeDialogNodeType": "პარალელური ან თანმიმდევრული", + "platformApprovalFlow.addNodeDialogNodeTypeSerial": "თანმიმდევრული", + "platformApprovalFlow.addNodeDialogNodeTypeParallel": "პარალელური", + "platformApprovalFlow.addNodeDialogApproverType": "დამდასტურებლის ტიპი", + "platformApprovalFlow.addNodeDialogApproverTypeUser": "მომხმარებელი", + "platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone": "ნებისმიერი გუნდში", + "platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone": "ყველა გუნდში", + "platformApprovalFlow.addNodeDialogUserOrTeam": "მომხმარებელი/გუნდი", + "platformApprovalFlow.addNodeDialogAddToNext": "დაამატე შემდეგ თანმიმდევრობაში", + "platformApprovalFlow.addNodeDialogDueDate": "ვადა", + "platformApprovalFlow.addNodeSearchPlaceholder": "ძებნა", + "platformApprovalFlow.addNodeAddActionBtnLabel": "დამატება", + "platformApprovalFlow.addNodeCancelActionBtnLabel": "გაუქმება", + "platformApprovalFlow.addNodeSelectApproverActionBtnLabel": "არჩევა", + "platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel": "გაუქმება", + "platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel": "დახურვა", + "platformApprovalFlow.userDetailsHeader": "დეტალურად", + "platformApprovalFlow.userDetailsSendReminderBtnLabel": "შეხსენების გაგზავნა", + "platformApprovalFlow.userDetailsCancelBtnLabel": "გაუქმება", + "platformApprovalFlow.messagesApproverAddedSuccess": "დამდასტურებელი დაემატა", + "platformApprovalFlow.messagesTeamAddedSuccess": "გუნდი დაემატა", + "platformApprovalFlow.messagesNodeEdited": "დამდასტურებელი შესწორდა", + "platformApprovalFlow.messagesNodeRemovedSingular": "დამდასტურებელი წაიშალა", + "platformApprovalFlow.messagesNodeRemovedPlural": "დამდასტურებლები წაიშალა", + "platformApprovalFlow.messagesTeamRemoved": "გუნდი წაიშალა", + "platformApprovalFlow.messagesErrorBuildGraph": "გრაფის დამუშავებისას წარმოიშვა შეცდომა. შეამოწმეთ საწყისი მონაცემები.", + "platformApprovalFlow.messagesUndoAction": "უკან დაბრუნება", + "platformApprovalFlow.nodeMembersCount": "{count} წევრი", + "platformApprovalFlow.nodeVariousTeams": "სხვადასხვა გუნდი", + "platformApprovalFlow.nodeStatusDueToday": "ვადა იწურება დღეს", + "platformApprovalFlow.nodeStatusDueInXDays": " ვადა იწურება {count} დღეში", + "platformApprovalFlow.nodeStatusXDaysOverdue": "ვადას გადაცდა {count} დღე", + "platformApprovalFlow.nodeActionAddApproversBefore": "დაამატე დამდასტურებელი წინ", + "platformApprovalFlow.nodeActionAddApproversAfter": "დაამატე დამდასტურებელი შემდეგ", + "platformApprovalFlow.nodeActionAddApproversParallel": "დაამატე პარალელური დამდასტურებელი", + "platformApprovalFlow.nodeActionEditApprover": "შეასწორე დამდასტურებელი", + "platformApprovalFlow.nodeActionRemove": "ამოღება", + "platformApprovalFlow.selectTypeDialogMoveApproverAs": "აქციე დამდასტურებელი როგორც", + "platformApprovalFlow.selectTypeDialogParallelOrSerial": "პარალელური ან თანმიმდევრული", + "platformApprovalFlow.selectTypeDialogNodeTypeParallel": "პარალელური დამდასტურებელი", + "platformApprovalFlow.selectTypeDialogNodeTypeSerial": "თანმიმდევრული დამდასტურებელი", + "platformApprovalFlow.selectTypeDialogConfirmButton": "დადასტურება", + "platformApprovalFlow.selectTypeDialogCancelButton": "გაუქმება", + "platformApprovalFlow.toolbarAddStepButton": "ნაბიჯის დამატება", + "platformApprovalFlow.toolbarEditButton": "შესწორება", + "platformApprovalFlow.toolbarAddApproversBefore": "დაამატე დამდასტურებელი წინ", + "platformApprovalFlow.toolbarAddApproversAfter": "დაამატე დამდასტურებელი შემდეგ", + "platformApprovalFlow.toolbarAddApproversParallel": "დაამატე პარალელური დამდასტურებელი", + "platformApprovalFlow.toolbarRemove": "ამოღება", + "platformApprovalFlow.toolbarEditApprover": "შეასწორე დამდასტურებელი", + "platformApprovalFlow.watchersInputPlaceholder": "ძებნა...", + "platformApprovalFlow.userListSelectedItemsCountSingular": "1 ელემენტი არჩეულია", + "platformApprovalFlow.userListSelectedItemsCountPlural": "{count} ელემენტი არჩეულია", + "platformApprovalFlow.statusApproved": "დადასტურებული", + "platformApprovalFlow.statusRejected": "უარყოფილი", + "platformApprovalFlow.statusInProgress": "მიმდინარე", + "platformApprovalFlow.statusNotStarted": "არ დაწყებულა", + "platformFeedInput.userTitle": "მომხმარებელი", + "platformVHD.selectionBarLabel": "არჩეული ელემენტები", + "platformVHD.selectedAndConditionLabel": "არჩეული ელემენტები", + "platformVHD.footerClearSelectedTitle": "არჩეული ელემენტების გასუფთავება", + "platformVHD.footerClearSelectedAriaLabel": "არჩეული ელემენტების გასუფთავება", + "platformVHD.searchButtonLabel": "წინ", + "platformVHD.successButtonLabel": "კარგი", + "platformVHD.cancelButtonLabel": "გაუქმება", + "platformVHD.selectedEmptyLabel": "ელემენტები არ არის არჩეული", + "platformVHD.searchPlaceholder": "ძებნა", + "platformVHD.searchAdvancedSearchLabel": "ფილტრები", + "platformVHD.searchShowAdvancedSearchLabel": "მაჩვენე ფილტრები", + "platformVHD.searchHideAdvancedSearchLabel": "დამალე ფილტრები", + "platformVHD.searchShowAllAdvancedSearchLabel": "მაჩვენე ყველა ფილტრი", + "platformVHD.searchHideAllAdvancedSearchLabel": "დამალე ყველა ფილტრი", + "platformVHD.selectTabDisplayCountLabel": "ელემენტები ({count})", + "platformVHD.selectTabMoreBtnLabel": "მეტი", + "platformVHD.selectTabCountHiddenA11yLabel": "შეიცავს {rowCount} სტრიქონს და {colCount} სვეტს", + "platformVHD.selectMobileTabBackBtnTitle": "უკან", + "platformVHD.selectMobileTabBtnOpenDialogLabel": "დიალოგური ფანჯრის გახსნა", + "platformVHD.selectMobileTabTitle": "{title} ტაბი", + "platformVHD.selectMobileConditionEmpty": "ცარიელი", + "platformVHD.defineConditionTitle": "სახელი", + "platformVHD.defineConditionSelectedValueHiddenA11yLabel": "არჩეული მნიშვნელობა {value}", + "platformVHD.defineConditionConditionsGroupHeaderInclude": "მოცვა", + "platformVHD.defineConditionConditionsGroupHeaderExclude": "გამოყოფა", + "platformVHD.defineConditionFromPlaceholder": "საიდან", + "platformVHD.defineConditionToPlaceholder": "სადამდე", + "platformVHD.defineConditionValuePlaceholder": "მნიშვნელობა", + "platformVHD.defineConditionRemoveConditionButtonTitle": "პირობის ამოღება", + "platformVHD.defineConditionAddConditionButtonLabel": "დამატება", + "platformVHD.defineConditionAddConditionButtonTitle": "პირობის დამატება", + "platformVHD.defineConditionConditionStrategyLabelContains": "შეიცავს", + "platformVHD.defineConditionConditionStrategyLabelEqualTo": "უდრის", + "platformVHD.defineConditionConditionStrategyLabelBetween": "შორის", + "platformVHD.defineConditionConditionStrategyLabelStartsWith": "იწყება", + "platformVHD.defineConditionConditionStrategyLabelEndsWith": "მთავრდება", + "platformVHD.defineConditionConditionStrategyLabelLessThan": "ნაკლებია", + "platformVHD.defineConditionConditionStrategyLabelLessThanEqual": "ნაკლებია ან ტოლია", + "platformVHD.defineConditionConditionStrategyLabelGreaterThan": "მეტია", + "platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual": "მეტია ან ტოლია", + "platformVHD.defineConditionConditionStrategyLabelEmpty": "ცარიელი", + "platformVHD.defineConditionConditionStrategyLabelNotEqualTo": "არ უდრის", + "platformVHD.defineConditionConditionStrategyLabelNotEmpty": "არ არის ცარიელი", + "platformVHD.defineConditionMaxCountError": "შეიყვანეთ მნიშვნელობა, არანაკლებ {count} სიმბოლო", + "platformVHD.selectTabTitle": "სიიდან არჩევა", + "platformVHD.searchTableEmptyMessage": "გამოიყენეთ ძებნა შედეგების მისაღებად", + "platformVHD.defineTabTitle": "პირობის განსაზღვრა", + "platformCombobox.countListResultsSingular": "1 რეზულტატი", + "platformCombobox.countListResultsPlural": "{count} რეზულტატი", + "platformMultiCombobox.inputGlyphAriaLabel": "აირჩიეთ ოფციები", + "platformMultiCombobox.inputIconTitle": "აირჩიეთ ოფციები", + "platformMultiCombobox.mobileShowAllItemsButton": "მაჩვენე ყველა", + "platformMultiCombobox.mobileShowSelectedItemsButton": "მაჩვენე არჩეული", + "platformTextarea.counterMessageCharactersOverTheLimitSingular": "1 სიმბოლო აღემატება ლიმიტს", + "platformTextarea.counterMessageCharactersOverTheLimitPlural": "{count} სიმბოლო აღემატება ლიმიტს", + "platformTextarea.counterMessageCharactersRemainingSingular": "დარჩა 1 სიმბოლო", + "platformTextarea.counterMessageCharactersRemainingPlural": "დარჩა {count} სიმბოლო", + "platformLink.roleDescriptionWithMedia": "მედია: {media}", + "platformList.loadingAriaLabel": "იტვირთება", + "platformObjectListItem.detailsActionAriaLabel": "დეტალები", + "platformObjectListItem.deleteActionAriaLabel": "წაშლა", + "platformStandardListItem.detailsActionAriaLabel": "დეტალები", + "platformStandardListItem.deleteActionAriaLabel": "წაშლა", + "platformSearchField.clearButtonTitle": "გასუფთავება", + "platformSearchField.submitButtonTitle": "ძებნა", + "platformSearchField.searchInputLabel": "ძებნა", + "platformSearchField.synchronizeButtonTitle": "სინქრონიზაცია", + "platformSearchField.searchSuggestionMessage": "ნაპოვნია {count} შემოთავაზება.", + "platformSearchField.searchSuggestionNavigateMessage": "ნავიგაციისთვის გამოიყენეთ ზედა და ქვედა ღილაკები", + "platformSmartFilterBar.searchPlaceholder": "ძებნა", + "platformSmartFilterBar.submitButtonLabel": "წინ", + "platformSmartFilterBar.filtersButtonLabel": "ფილტრები ({filtersCount})", + "platformSmartFilterBar.showFiltersButtonLabel": "მაჩვენე ფილტრები", + "platformSmartFilterBar.hideFiltersButtonLabel": "დამალე ფილტრები", + "platformSmartFilterBar.defineConditionsRemoveConditionButtonTitle": "პირობის ამოღება", + "platformSmartFilterBar.defineConditionsAddConditionButtonLabel": "პირობის დამატება", + "platformSmartFilterBar.defineConditionsSubmitButtonLabel": "წინ", + "platformSmartFilterBar.defineConditionsCancelButton": "გაუქმება", + "platformSmartFilterBar.selectFiltersHeader": "ფილტრები", + "platformSmartFilterBar.selectFiltersAvailableFiltersText": "ხელმისაწვდომი ფილტრები", + "platformSmartFilterBar.selectFiltersFilterColumnLabel": "ფილტრი", + "platformSmartFilterBar.selectFiltersActiveColumnLabel": "აქტიური", + "platformSmartFilterBar.selectFiltersSubmitButtonLabel": "წინ", + "platformSmartFilterBar.selectFiltersCancelButton": "გაუქმება", + "platformSmartFilterBar.filterConditionContains": "შეიცავს", + "platformSmartFilterBar.filterConditionEqualTo": "უდრის", + "platformSmartFilterBar.filterConditionBetween": "შორის", + "platformSmartFilterBar.filterConditionBeginsWith": "იწყება", + "platformSmartFilterBar.filterConditionEndsWith": "მთავრდება", + "platformSmartFilterBar.filterConditionLessThan": "ნაკლებია", + "platformSmartFilterBar.filterConditionLessThanOrEqualTo": "ნაკლებია ან ტოლი", + "platformSmartFilterBar.filterConditionGreaterThan": "მეტია", + "platformSmartFilterBar.filterConditionGreaterThanOrEqualTo": "მეტია ან ტოლი", + "platformSmartFilterBar.filterConditionAfter": "შემდეგ", + "platformSmartFilterBar.filterConditionOnOrAfter": "თარიღი ტოლია ან მეტი", + "platformSmartFilterBar.filterConditionBefore": "ადრე", + "platformSmartFilterBar.filterConditionBeforeOrOn": "ადრე ან თარიღში", + "platformSmartFilterBar.filterConditionValuePlaceholder": "მნიშვნელობა", + "platformSmartFilterBar.filterConditionValueFromPlaceholder": "დან", + "platformSmartFilterBar.filterConditionValueToPlaceholder": "მდე", + "platformSmartFilterBar.settingsCategoryAll": "ყველა", + "platformSmartFilterBar.settingsCategoryVisible": "ხილვადი", + "platformSmartFilterBar.settingsCategoryActive": "აქტიური", + "platformSmartFilterBar.settingsCategoryVisibleAndActive": "ხილვადი და აქტიური", + "platformSmartFilterBar.settingsCategoryMandatory": "სავალდებულო", + "platformSmartFilterBar.manageFieldConditions": "Manage field conditions", + "platformSmartFilterBar.refreshButtonAriaLabel": "Refresh", + "platformTable.headerMenuSortAsc": "ზრდადობით დალაგება", + "platformTable.headerMenuSortDesc": "კლებადობით დალაგება", + "platformTable.headerMenuGroup": "ჯგუფი", + "platformTable.headerMenuFreeze": "გაყინვა", + "platformTable.headerMenuEndFreeze": "Freeze to End", + "platformTable.headerMenuUnfreeze": "მენიუს განბლოკვა", + "platformTable.headerMenuFilter": "ფილტრი", + "platformTable.defaultEmptyMessage": "მონაცემები ვერ მოიძებნა", + "platformTable.emptyCell": "ცარიელი", + "platformTable.noVisibleColumnsMessage": "ამჟამად, ცხრილში არ არის ხილული სვეტები. გთხოვთ, აირჩიოთ თქვენთვის საჭირო სვეტები ცხრილის პარამეტრებში.", + "platformTable.resetChangesButtonLabel": "გააუქმეთ ცვლილებები", + "platformTable.editableCellNumberPlaceholder": "შეიყვანეთ რიცხვი", + "platformTable.editableCellDatePlaceholder": "შეიყვანეთ თარიღი", + "platformTable.editableCellStringPlaceholder": "შეიყვანეთ მნიშვნელობა", + "platformTable.P13ColumnsDialogHeader": "სვეტები", + "platformTable.P13ColumnsDialogSearchPlaceholder": "ძებნა", + "platformTable.P13ColumnsDialogsShowSelected": "მაჩვენე არჩეული", + "platformTable.P13ColumnsDialogShowAll": "მაჩვენე ყველა", + "platformTable.P13ColumnsDialogSelectAll": "აირჩიე ყველა ({selectedColumnsCount}/{selectableColumnsCount})", + "platformTable.P13ColumnsDialogConfirmationBtnLabel": "კარგი", + "platformTable.P13ColumnsDialogCancelBtnLabel": "გაუქმება", + "platformTable.P13ColumnsDialogMoveToTopBtn": "ზემოთ ატანა", + "platformTable.P13ColumnsDialogMoveUpBtn": "ზემოთ ატანა", + "platformTable.P13ColumnsDialogMoveDownBtn": "ქვემოთ ჩატანა", + "platformTable.P13ColumnsDialogMoveToBottomBtn": "ქვემოთ ჩატანა", + "platformTable.P13FilterStrategyLabelBetween": "შორის", + "platformTable.P13FilterStrategyLabelContains": "შეიცავს", + "platformTable.P13FilterStrategyLabelBeginsWith": "იწყება", + "platformTable.P13FilterStrategyLabelEndsWith": "მთავრდება", + "platformTable.P13FilterStrategyLabelEqualTo": "უდრის", + "platformTable.P13FilterStrategyLabelGreaterThan": "მეტია", + "platformTable.P13FilterStrategyLabelGreaterThanOrEqualTo": "მეტია ან ტოლი", + "platformTable.P13FilterStrategyLabelLessThan": "ნაკლებია", + "platformTable.P13FilterStrategyLabelLessThanOrEqualTo": "ნაკლებია ან ტოლი", + "platformTable.P13FilterStrategyLabelAfter": "შემდეგ", + "platformTable.P13FilterStrategyLabelOnOrAfter": "თარიღი ტოლია ან მეტი", + "platformTable.P13FilterStrategyLabelBefore": "ადრე", + "platformTable.P13FilterStrategyLabelBeforeOrOn": "ადრე ან თარიღში", + "platformTable.P13FilterStrategyLabelNotDefined": "არაარის განსაზღვრული", + "platformTable.P13FilterBooleanOptionNotDefined": " ", + "platformTable.P13FilterBooleanOptionTrue": "დიახ", + "platformTable.P13FilterBooleanOptionFalse": "არა", + "platformTable.P13FilterDialogHeader": "ფილტრი", + "platformTable.P13FilterDialogIncludePanelTitleWithCount": "ჩართე ({count})", + "platformTable.P13FilterDialogIncludePanelTitleWithoutCount": "ჩართე", + "platformTable.P13FilterDialogExcludePanelTitleWithCount": "გამოტოვე ({count})", + "platformTable.P13FilterDialogExcludePanelTitleWithoutCount": "გამოტოვე", + "platformTable.P13FilterDialogRemoveFilterBtnTitle": "ფილტრის მოხსნა", + "platformTable.P13FilterDialoAddFilterBtnTitle": "ფილტრის დამატება", + "platformTable.P13FilterDialogConfirmationBtnLabel": "კარგი", + "platformTable.P13FilterDialogCancelBtnLabel": "გაუქმება", + "platformTable.P13GroupDialogHeader": "ჯგუფი", + "platformTable.P13GroupDialogNoneSelectedColumnSelectPlaceholder": "(ცარიელი)", + "platformTable.P13GroupDialogShowFieldAsColumnCheckboxLabel": "მაჩვენე ველი როგორც სვეტი", + "platformTable.P13GroupDialogRemoveGroupBtnTitle": "ამოღება", + "platformTable.P13GroupDialogAddNewGroupBtnTitle": "ახლის დამატება", + "platformTable.P13GroupDialogConfirmationBtnLabel": "კარგი", + "platformTable.P13GroupDialogCancelBtnLabel": "გაუქმება", + "platformTable.P13SortDialogHeader": "დალაგება", + "platformTable.P13SortDialogNoneSelectedColumn": "(ცარიელი)", + "platformTable.P13SortDialogNoneSelectedSorting": "(ცარიელი)", + "platformTable.P13SortDialogSortOrderSelectOptionAsc": "ზრდადი", + "platformTable.P13SortDialogSortOrderSelectOptionDesc": "კლებადი", + "platformTable.P13SortDialogRemoveSortBtnTitle": "ამოღება", + "platformTable.P13SortDialogAddNewSortBtnTitle": "ახლის დამატება", + "platformTable.P13SortDialogConfirmationBtnLabel": "კარგი", + "platformTable.P13SortDialogCancelBtnLabel": "გაუქმება", + "platformTable.toolbarSearchPlaceholder": "ძებნა", + "platformTable.toolbarActionCreateButtonLabel": "შექმნა", + "platformTable.toolbarActionSaveButtonLabel": "შენახვა", + "platformTable.toolbarActionCancelButtonLabel": "გაუქმება", + "platformTable.toolbarActionSortButtonTitle": "დალაგება", + "platformTable.toolbarActionFilterButtonTitle": "ფილტრაცია", + "platformTable.toolbarActionGroupButtonTitle": "დაჯგუფება", + "platformTable.toolbarActionColumnsButtonTitle": "სვეტები", + "platformTable.toolbarActionExpandAllButtonTitle": "Expand all", + "platformTable.toolbarActionCollapseAllButtonTitle": "Collapse all", + "platformTable.filterDialogNotFilteredLabel": "(გაუფილტრავი)", + "platformTable.filterDialogFilterByLabel": "გაფილტრე: {filterLabel}", + "platformTable.filterDialogFilterTitle": "ფილტრი", + "platformTable.filterDialogFilterBy": "გაფილტრე", + "platformTable.filterDialogConfirmBtnLabel": "კარგი", + "platformTable.filterDialogCancelBtnLabel": "გაუქმება", + "platformTable.groupDialogHeader": "ჯგუფი", + "platformTable.groupDialogGroupOrderHeader": "ჯგუფის დალაგება", + "platformTable.groupDialogGroupOrderAsc": "ზრდადი", + "platformTable.groupDialogGroupOrderDesc": "კლებადი", + "platformTable.groupDialogGroupByHeader": "დაჯგუფებულია", + "platformTable.groupDialogNotGroupedLabel": "(დაუჯგუფებელია)", + "platformTable.groupDialogConfirmBtnLabel": "კარგი", + "platformTable.groupDialogCancelBtnLabel": "გაუქმება", + "platformTable.sortDialogHeader": "დალაგება", + "platformTable.sortDialogSortOrderHeader": "დალაგების წესი", + "platformTable.sortDialogSortOrderAsc": "ზრდადი", + "platformTable.sortDialogSortOrderDesc": "კლებადი", + "platformTable.sortDialogSortByHeader": "დალაგებულია", + "platformTable.sortDialogNotSortedLabel": "(დაულაგებელია)", + "platformTable.sortDialogConfirmBtnLabel": "კარგი", + "platformTable.sortDialogCancelBtnLabel": "გაუქმება", + "platformTable.selectAllCheckboxLabel": "Select all", + "platformTable.deselectAllCheckboxLabel": "Deselect all", + "platformTable.deselectSingleRow": "To deselect row, press SPACEBAR", + "platformTable.selectSingleRow": "To select row, press SPACEBAR", + "platformTable.deselectSingleRowTitle": "Click to deselect", + "platformTable.selectSingleRowTitle": "Click to select", + "platformThumbnail.detailsGotoPreviousButtonTitle": "წინაზე გადასვლა", + "platformThumbnail.detailsGotoNextButtonTitle": "მომდევნოზე გადასვლა", + "platformThumbnail.detailsDialogCloseBtnLabel": "დახურვა", + "platformThumbnail.roleDescription": "სურათი", + "platformUploadCollection.moveToTitle": "გადატანა", + "platformUploadCollection.moveToTitleFolder": "საქაღალდე", + "platformUploadCollection.moveToNewFolderBtnLabel": "ახალი საქაღალდე", + "platformUploadCollection.moveToAllFilesSubHeaderLabel": "ყველა ფაილი", + "platformUploadCollection.moveToConfirmBtn": "გადატანა", + "platformUploadCollection.moveToCloseBtn": "გაუქმება", + "platformUploadCollection.newFolderTitle": "ახალი საქაღალდე", + "platformUploadCollection.newFolderAtRootInputLabel": "ახალი საქაღალდის სახელი", + "platformUploadCollection.newFolderAtFolderInputLabel": "{folderName}-ში ახალი საქაღალდის სახელი", + "platformUploadCollection.newFolderInputPlaceholder": "აკრიფეთ აქ...", + "platformUploadCollection.newFolderInputErrorLabel": "ნებადართულია მაქსიმუმ {count} სიმბოლო", + "platformUploadCollection.newFolderDialogCreateBtnLabel": "შექმნა", + "platformUploadCollection.newFolderDialogCancelBtnLabel": "გაუქმება", + "platformUploadCollection.breadcrumbLabelAllFiles": "ყველა ფაილი", + "platformUploadCollection.breadcrumbLabelAllFilesWithTotal": "ყველა ფაილი ({total})", + "platformUploadCollection.searchPlaceholder": "ძებნა", + "platformUploadCollection.addBtnLabel": "დამატება", + "platformUploadCollection.newFolderBtnLabel": "ახალი საქაღალდე", + "platformUploadCollection.moveToBtnLabel": "გადატანა", + "platformUploadCollection.downloadBtnLabel": "ჩამოტვირთვა", + "platformUploadCollection.updateVersionBtnLabel": "ვერსიის განახლება", + "platformUploadCollection.removeBtnLabel": "ამოღება", + "platformUploadCollection.folderIconTitle": "საქაღალდის სურათი", + "platformUploadCollection.fileIconTitle": "ფაილის სურათი", + "platformUploadCollection.editFileNameInputPlaceholder": "შეიყვანეთ სახელი", + "platformUploadCollection.editFileNameFileAlreadyExistsError": "ამ სახელით ფაილი უკვე არსებობს", + "platformUploadCollection.editFileNameFolderAlreadyExistsError": "ამ სახელით საქაღალდე უკვე არსებობს", + "platformUploadCollection.itemStatusSuccessful": "წარმატებული", + "platformUploadCollection.itemStatusUnsuccessful": "წარუმატებელი", + "platformUploadCollection.uploadNewFileAfterFailAction": "გაშვება", + "platformUploadCollection.cancelUploadNewFileAction": "გაუქმება", + "platformUploadCollection.itemMenuBtnTitle": "მეტი", + "platformUploadCollection.dragDropAreaText": "ჩააგდეთ ფაილი ასატვირთად", + "platformUploadCollection.noDataText": "ფაილები არ მოიძებნა", + "platformUploadCollection.noDataDescription": "ჩააგდეთ ფაილი ასატვირთად, ან დააჭირეთ \"დამატებას\"", + "platformUploadCollection.paginationTotal": "ნაჩვენებია {from}-{to} {total}-დან", + "platformUploadCollection.resultsPerPage": "რეზულტატი გვერდზე", + "platformUploadCollection.messageCreateFailed": "{folderName} ვერ შეიქმნა.", + "platformUploadCollection.messageCreateSuccess": "{folderName} შეიქმნა.", + "platformUploadCollection.messageUpdateVersionFailed": "{folderName}-ის ვერსიის განახლება ვერ მოხერხდა.", + "platformUploadCollection.messageUpdateVersionSuccess": "{folderName}-ის ვერსია განახლდა.", + "platformUploadCollection.messageFileRenameFailed": "სახელის გადარქმევა \"{from}\"-დან \"{to}\"-ზე ვერ მოხერხდა.", + "platformUploadCollection.messageFileRenameSuccess": "\"{from}\"-ს დაერქვა \"{to}\".", + "platformUploadCollection.messageRemoveFoldersAndFilesFailed": "{foldersCount} საქაღალდის და {filesCount} ფაილის წაშლა ვერ მოხერხდა.", + "platformUploadCollection.messageRemoveFoldersAndFilesSuccess": "{foldersCount} საქაღალდე და {filesCount} ფაილი წაიშალა.", + "platformUploadCollection.messageRemoveFoldersFailed": "{foldersCount} საქაღალდე ვერ წაიშალა.", + "platformUploadCollection.messageRemoveFoldersSuccess": "{foldersCount} საქაღალდე წაიშალა.", + "platformUploadCollection.messageRemoveFilesFailed": "{filesCount} ფაილი ვერ წაიშალა.", + "platformUploadCollection.messageRemoveFilesSuccess": "{filesCount} ფაილი წაიშალა.", + "platformUploadCollection.messageRemoveFileOrFolderFailed": "{name} ვერ წაიშალა.", + "platformUploadCollection.messageRemoveFileOrFolderSuccess": "{name} წაიშალა.", + "platformUploadCollection.messageMoveFoldersAndFilesFailed": "{foldersCount} საქაღალდის და {filesCount} ფაილის გადატანა ვერ მოხერხდა {to}-ში.", + "platformUploadCollection.messageMoveFoldersAndFilesSuccess": "{foldersCount} საქაღალდე და {filesCount} ფაილი გადატანილია {to}-ში.", + "platformUploadCollection.messageMoveFoldersFailed": "{foldersCount} საქაღალდის გადატანა ვერ მოხერხდა {to}-ში.", + "platformUploadCollection.messageMoveFoldersSuccess": "{foldersCount} საქაღალდე გადატანილია {to}-ში.", + "platformUploadCollection.messageMoveFilesFailed": "{filesCount} ფაილის გადატანა ვერ მოხერხდა {to}-ში.", + "platformUploadCollection.messageMoveFilesSuccess": "{filesCount} ფაილი გადატანილია {to}-ში.", + "platformUploadCollection.messageMoveFileOrFolderFailed": "{name}-ის გადატანა ვერ მოხდა {to}-ში.", + "platformUploadCollection.messageMoveFileOrFolderSuccess": "{name} გადატანილია {to}-ში.", + "platformUploadCollection.messageMoveRootFoldersAndFilesFailed": "{foldersCount} საქაღალდის და {filesCount} ფაილის გადატანა ვერ მოხერხდა.", + "platformUploadCollection.messageMoveRootFoldersAndFilesSuccess": "{foldersCount} საქაღალდე და {filesCount} ფაილი გადატანილია.", + "platformUploadCollection.messageMoveRootFoldersFailed": "{foldersCount} საქაღალდის გადატანა ვერ მოხერხდა.", + "platformUploadCollection.messageMoveRootFoldersSuccess": "{foldersCount} საქაღალდე გადატანილია.", + "platformUploadCollection.messageMoveRootFilesFailed": "{filesCount} ფაილის გადატანა ვერ მოხერხდა.", + "platformUploadCollection.messageMoveRootFilesSuccess": "{filesCount} ფაილი გადატანილია.", + "platformUploadCollection.messageMoveRootFileOrFolderFailed": "{name}-ის გადატანა ვერ მოხერხდა.", + "platformUploadCollection.messageMoveRootFileOrFolderSuccess": "{name} გადატანილია.", + "platformUploadCollection.messageFileTypeMismatchPlural": "{filesCount} ფაილს აქვს აკრძალული გაფართოება. ნებადართული გაფართოებებია: {allowedTypes}.", + "platformUploadCollection.messageFileTypeMismatchSingular": "ფაილს \"{fileName}\" აქვს აკრძალული გაფართოება. ნებადართული გაფართოებებია: {allowedTypes}.", + "platformUploadCollection.messageFileSizeExceededPlural": "{filesCount} ფაილი აჭარბებს მაქსიმალურ მოცულობას. ნებადართული მაქსიმალური ზომაა: {maxFileSize}.", + "platformUploadCollection.messageFileSizeExceededSingular": "ფაილი \"{fileName}\" აჭარბებს მაქსიმალურ მოცულობას. ნებადართული მაქსიმალური ზომაა: {maxFileSize}.", + "platformUploadCollection.messageFileNameLengthExceededPlural": "{filesCount} ფაილი აჭარბებს მაქსიმალურ სახელის სიგრძეს. მაქსიმალური სიგრძეა: {maxFilenameLength} characters.", + "platformUploadCollection.messageFileNameLengthExceededSingular": "ფაილი \"{fileName}\" აჭარბებს მაქსიმალურ სახელის სიგრძეს. მაქსიმალური სიგრძეა: {maxFilenameLength} characters.", + "platformWizardGenerator.summarySectionEditStep": "შესწორება", + "platformMessagePopover.allErrors": "ყველა", + "platformMessagePopover.defaultErrors.email": "ელ-ფოსტა არასწორია", + "platformMessagePopover.defaultErrors.max": "ველის მნიშვნელობა აღემატება დაშვებულ მაქსიმუმს", + "platformMessagePopover.defaultErrors.maxLength": "ველის მოცულობა აღემატება დაშვებულ მაქსიმუმს", + "platformMessagePopover.defaultErrors.min": "ველის მნიშვნელობა აუცილებელ მინიმუმზე ნაკლებია", + "platformMessagePopover.defaultErrors.minLength": "ველის მოცულობა აუცილებელ მინიმუმზე ნაკლებია", + "platformMessagePopover.defaultErrors.pattern": "ველის მნიშვნელობა არასწორია", + "platformMessagePopover.defaultErrors.required": "ველი სავალდებულოა", + "platformMessagePopover.defaultErrors.requiredTrue": "ველის შეყვანა სავალდებულოა", + "platformVariantManagement.manage": "მართვა", + "platformVariantManagement.saveAs": "შენახვა როგორც", + "platformVariantManagement.saveView": "ვარიანტის შენახვა", + "platformVariantManagement.save": "შენახვა", + "platformVariantManagement.myViews": "ჩემი ვარიანტები", + "platformVariantManagement.view": "ვარიანტი", + "platformVariantManagement.setAsDefault": "ნაგულისხმევად გამოყენება", + "platformVariantManagement.public": "საჯარო", + "platformVariantManagement.applyAutomatically": "ავტომატურად გამოყენება", + "platformVariantManagement.requiredFieldError": "ეს ველი სავალდებულოა.", + "platformVariantManagement.nameTakenFieldError": "ვარიანტი ამ სახელით უკვე არსებობს. გთხოვთ, გამოიყენოთ სხვა სახელი.", + "platformVariantManagement.cancel": "გაუქმება", + "platformVariantManagement.manageViews": "ვარიანტების მართვა", + "platformVariantManagement.markAsFavourite": "ფავორიტად მონიშვნა", + "platformVariantManagement.sharing": "ხილვადობა", + "platformVariantManagement.default": "ნაგულისხმევი", + "platformVariantManagement.createdBy": "შემქმნელი", + "platformVariantManagement.removeVariant": "ვარიანტის წაშლა", + "platformVariantManagement.search": "ძებნა", + "platformVariantManagement.access.public": "საჯარო", + "platformVariantManagement.access.private": "პირადი", + "platformSelect.selectOptionLabel": "აირჩიეთ ვარიანტი", + "fnSlider.minMaxDetails": "სლაიდერის მინიმალური მნიშვნელობაა {min}, მაქსიმალური - {max}", + "fnSlider.valueminDetails": "მნიშვნელობა არის {value}", + "fnSlider.valuemaxDetails": "მნიშვნელობა არის {value}", + "fnSlider.valueNowDetails": "მიმდინარე მნიშვნელობა {value}", + "fnSwitch.semanticAcceptLabel": "დათანხმება", + "fnSwitch.semanticDeclineLabel": "უარყოფა", + "coreTree.expand": "Expand node", + "coreTree.collapse": "Collapse node", + "coreTree.noData": "No data" +} diff --git a/libs/i18n/src/lib/translations/translations_pl-PL.json b/libs/i18n/src/lib/translations/translations_pl-PL.json new file mode 100644 index 00000000000..cc760e237a1 --- /dev/null +++ b/libs/i18n/src/lib/translations/translations_pl-PL.json @@ -0,0 +1,503 @@ +{ + "coreMultiComboBox.selectAllLabel": "Zaznacz wszystko ({selectedItems} z {totalItems})", + "coreCarousel.leftNavigationBtnLabel": "Idź do poprzedniego elementu", + "coreCarousel.rightNavigationBtnLabel": "Idź do nestępnego elementu", + "coreDatePicker.dateInputLabel": "Data", + "coreDatePicker.dateRangeInputLabel": "Przedział czasowy", + "coreDatePicker.displayCalendarToggleLabel": "Otwórz selektor", + "coreDatePicker.valueStateSuccessMessage": "Value state Success", + "coreDatePicker.valueStateInformationMessage": "Value state Information", + "coreDatePicker.valueStateWarningMessage": "Value state Warning", + "coreDatePicker.valueStateErrorMessage": "Value state Error", + "coreDatetimePicker.datetimeInputLabel": "Data i czas", + "coreDatetimePicker.displayDatetimeToggleLabel": "Pokaż przełącznik daty", + "coreDatetimePicker.displayTypeDateLabel": "Data", + "coreDatetimePicker.displayTypeTimeLabel": "Czas", + "coreDatetimePicker.datetimeOkLabel": "Ok", + "coreDatetimePicker.datetimeCancelLabel": "Anuluj", + "coreFeedListItem.moreLabel": "Więcej", + "coreFeedListItem.lessLabel": "Mniej", + "coreGridList.filterBarCancelButtonTitle": "Anuluj", + "coreGridList.listItemStatusAriaLabel": "Status elementu: {status} ", + "coreGridList.listItemCounterAriaLabel": "Element posiada {count} subelementów", + "coreGridList.listItemButtonDetailsTitle": "Szczegóły", + "coreGridList.listItemButtonDeleteTitle": "Usuń", + "coreGridList.listItemStatusContainsErrors": "Zawiera błędy", + "coreGridList.listItemStatusLocked": "Zablokowany", + "coreGridList.listItemStatusDraft": "Szkic", + "coreMessageStrip.dismissLabel": "Odrzuć", + "coreMultiInput.multiInputAriaLabel": "Multi Value Input", + "coreMultiInput.tokensCountText": "Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.", + "coreNavigation.mainNavigation": "Main Navigation", + "coreNavigation.navigationPath": "Navigation Path", + "coreNestedList.linkItemAriaLabel": "Element drzewa {itemDetails}, {index} z {total}{selectedDescription}", + "coreOverflowLayout.moreItemsButton": "{count} więcej", + "corePagination.pageLabel": "Strona {pageNumber}", + "corePagination.currentPageAriaLabel": "Aktualna strona {pageNumber}", + "corePagination.labelBeforeInputMobile": "Strona:", + "corePagination.labelAfterInputMobile": "z {totalCount}", + "corePagination.inputAriaLabel": "Dane strony, Aktualna strona, Strona {pageNumber} z {totalCount}", + "corePagination.itemsPerPageLabel": "Liczba wyników na stronę:", + "corePagination.firstLabel": "Pierwszy", + "corePagination.previousLabel": "Poprzedni", + "corePagination.nextLabel": "Następny", + "corePagination.lastLabel": "Ostatni", + "corePagination.ariaLabel": "Stronicowanie", + "corePagination.totalResultsLabel": "Liczba wyników: {totalCount}", + "coreProductSwitch.ariaLabel": "Przełącznik Produktu", + "coreShellbar.collapsedItemMenuLabel": "Ukryty Element Menu", + "coreShellbar.cancel": "Cancel", + "coreShellbar.search": "Search", + "coreSlider.singleMinMaxDetails": "Minimalna wartość {min}, maksymalna wartość {max}", + "coreSlider.singleValueminDetails": "Wartość {value}", + "coreSlider.singleValuemaxDetails": "Wartość {value}", + "coreSlider.singleValueNowDetails": "Aktualna wartość: {value}", + "coreSlider.multipleHandle1MinMaxDetails": "Minimalna wartość {min}, maksymalna wartość {max}", + "coreSlider.multipleHandle1ValueminDetails": "Wartość {value}", + "coreSlider.multipleHandle1ValuemaxDetails": "Wartość {value}", + "coreSlider.multipleHandle1ValueNowDetails": "Aktualna wartość {value}", + "coreSlider.multipleHandle2MinMaxDetails": "Minimalna wartość {min}, maksymalna wartość {max}", + "coreSlider.multipleHandle2ValueminDetails": "Wartość {value}", + "coreSlider.multipleHandle2ValuemaxDetails": "Wartość {value}", + "coreSlider.multipleHandle2ValueNowDetails": "Aktualna wartość {max}", + "coreSplitButton.expandButtonAriaLabel": "Pokaż więcej", + "coreSplitButton.arialLabel": "Przycisk podziału", + "coreSplitter.paginationItemAriaLabel": "Sekcja", + "coreStepInput.incrementButtonTitle": "Zwiększ", + "coreStepInput.decrementButtonTitle": "Zmniejsz", + "coreStepInput.ariaRoleDescription": "Dane kroku", + "coreSwitch.semanticAcceptLabel": "Akceptuj", + "coreSwitch.semanticDeclineLabel": "Zrezygnuj", + "coreTabs.tabListExpandButtonText": "Więcej", + "coreText.moreLabel": "Więcej", + "coreText.lessLabel": "Mniej", + "coreTime.componentAriaName": "Selector godziny", + "coreTime.increaseHoursLabel": "Zwiększ godzinę", + "coreTime.hoursLabel": "Godz.", + "coreTime.decreaseHoursLabel": "Zmniejsz godzinę", + "coreTime.increaseMinutesLabel": "Zwiększ minuty", + "coreTime.minutesLabel": "Min", + "coreTime.decreaseMinutesLabel": "Zmniejsz minuty", + "coreTime.increaseSecondsLabel": "Zwiększ sekundy", + "coreTime.secondsLabel": "Sec", + "coreTime.decreaseSecondsLabel": "Zmniejsz sekundy", + "coreTime.increasePeriodLabel": "Zwiększ zakres", + "coreTime.periodLabel": "Zakres", + "coreTime.decreasePeriodLabel": "Zmniejsz zakres", + "coreTime.navigationInstruction": "Uzyj strzałek góra/dół żeby przechodzić pomiędzy elementami listy. Naciśnij strzłki w lewo/prawo żeby przełączyć się pomiędzy listami.", + "coreTimePicker.timePickerInputLabel": "Pole selectora godziny", + "coreTimePicker.timePickerButtonLabel": "Otwórz selektor", + "coreToken.deleteButtonLabel": "Usuń", + "coreToken.ariaRoleDescription": "token", + "coreTokenizer.moreLabel": "{count} więcej", + "coreUploadCollection.menuOkText": "Ok", + "coreUploadCollection.menuCancelText": "Anuluj", + "coreUploadCollection.menuEditAriaLabel": "Edytuj", + "coreUploadCollection.menuDeleteAriaLabel": "Usuń", + "coreUploadCollection.menuOkAriaLabel": "Edutuj", + "coreUploadCollection.menuCancelAriaLabel": "Anuluj", + "coreUploadCollection.formItemPlaceholder": "Nazwa pliku", + "coreWizard.ariaLabel": "Kreator", + "coreBreadcrumb.overflowTitleMore": "Więcej", + "platformActionBar.backButtonLabel": "Powrót", + "platformApprovalFlow.defaultWatchersLabel": "Obserwatorzy", + "platformApprovalFlow.defaultTitle": "Proces zatwierdzenia", + "platformApprovalFlow.nextButtonAriaLabel": "Idz do nestępnego slajdu", + "platformApprovalFlow.prevButtonAriaLabel": "Idz do poprzedniego slajdu", + "platformApprovalFlow.editModeSaveButtonLabel": "Zapisz", + "platformApprovalFlow.editModeExitButtonLabel": "Wyjdz", + "platformApprovalFlow.emptyTitle": "Zacznij dodawać zatwierdzających oraz obserwatorów", + "platformApprovalFlow.emptyHint": "Żeby dodać zatwierdzających kliknij \"Dodaj krok\". Żeby dodać obserwujących kliknij pole Obserwujący", + "platformApprovalFlow.addNodeDialogHeaderAddApprovers": "Dodaj zatwierdzjących", + "platformApprovalFlow.addNodeDialogHeaderEditApprover": "Edutuj zatwierdzającego", + "platformApprovalFlow.addNodeDialogHeaderAddApproverTeam": "Użytkownik/Zespół", + "platformApprovalFlow.addNodeDialogHeaderDetail": "Cecha", + "platformApprovalFlow.addNodeDialogNodeType": "Równoległy lub seryjny", + "platformApprovalFlow.addNodeDialogNodeTypeSerial": "Seryjny", + "platformApprovalFlow.addNodeDialogNodeTypeParallel": "Równoległy", + "platformApprovalFlow.addNodeDialogApproverType": "Typ zatwierdzenia", + "platformApprovalFlow.addNodeDialogApproverTypeUser": "Użytkownik", + "platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone": "Ktokolwiek z zespółu", + "platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone": "Każdy z zespołu", + "platformApprovalFlow.addNodeDialogUserOrTeam": "Użytkownik/Zespół", + "platformApprovalFlow.addNodeDialogAddToNext": "Dodaj do następnego seryjnego noda", + "platformApprovalFlow.addNodeDialogDueDate": "Termin", + "platformApprovalFlow.addNodeSearchPlaceholder": "Szukaj", + "platformApprovalFlow.addNodeAddActionBtnLabel": "Dodaj", + "platformApprovalFlow.addNodeCancelActionBtnLabel": "Anuluj", + "platformApprovalFlow.addNodeSelectApproverActionBtnLabel": "Zaznacz", + "platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel": "Anuluj", + "platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel": "Zamknij", + "platformApprovalFlow.userDetailsHeader": "Informacje", + "platformApprovalFlow.userDetailsSendReminderBtnLabel": "Wyślij przypomnienie", + "platformApprovalFlow.userDetailsCancelBtnLabel": "Anuluj", + "platformApprovalFlow.messagesApproverAddedSuccess": "1 zatwierdzający dodany", + "platformApprovalFlow.messagesTeamAddedSuccess": "1 zespół dodany", + "platformApprovalFlow.messagesNodeEdited": "1 zatwierdzający zmodyfinowany", + "platformApprovalFlow.messagesNodeRemovedSingular": "1 zatwierdzający usunięty", + "platformApprovalFlow.messagesNodeRemovedPlural": "Zatwierdzający usunięci", + "platformApprovalFlow.messagesTeamRemoved": "1 zespół usuniety", + "platformApprovalFlow.messagesErrorBuildGraph": "Wystąpił błąd podczas budowy grafu. Sprawdź wprowadzone dane.", + "platformApprovalFlow.messagesUndoAction": "Cofnij", + "platformApprovalFlow.nodeMembersCount": "Liczba subnodów {count}", + "platformApprovalFlow.nodeVariousTeams": "Różne zespoły", + "platformApprovalFlow.nodeStatusDueToday": "Do dziś", + "platformApprovalFlow.nodeStatusDueInXDays": "Termin dni {count}", + "platformApprovalFlow.nodeStatusXDaysOverdue": "Liczba dni zaległych {count}", + "platformApprovalFlow.nodeActionAddApproversBefore": "Dodaj zatwierdzających przed", + "platformApprovalFlow.nodeActionAddApproversAfter": "Dodaj zatwierdzających po", + "platformApprovalFlow.nodeActionAddApproversParallel": "Dodaj równolegle zatwierdzających", + "platformApprovalFlow.nodeActionEditApprover": "Edytuj zatwierdzającego", + "platformApprovalFlow.nodeActionRemove": "Usuń", + "platformApprovalFlow.selectTypeDialogMoveApproverAs": "Przesuń zatwierdzjącego jako", + "platformApprovalFlow.selectTypeDialogParallelOrSerial": "Równoległy lub seryjny", + "platformApprovalFlow.selectTypeDialogNodeTypeParallel": "Równoległy zatwierdzający", + "platformApprovalFlow.selectTypeDialogNodeTypeSerial": "Seryjny zatwierdzający", + "platformApprovalFlow.selectTypeDialogConfirmButton": "Potwierdź", + "platformApprovalFlow.selectTypeDialogCancelButton": "Anuluj", + "platformApprovalFlow.toolbarAddStepButton": "Dodaj krok", + "platformApprovalFlow.toolbarEditButton": "Edytuj", + "platformApprovalFlow.toolbarAddApproversBefore": "Dodaj zatwierdzających przed", + "platformApprovalFlow.toolbarAddApproversAfter": "Dodaj zatwierdzających po", + "platformApprovalFlow.toolbarAddApproversParallel": "Dodaj równolegle zatwierdzających", + "platformApprovalFlow.toolbarRemove": "Usuń", + "platformApprovalFlow.toolbarEditApprover": "Edytuj zatwierdzającego", + "platformApprovalFlow.watchersInputPlaceholder": "Szukaj tutaj..", + "platformApprovalFlow.userListSelectedItemsCountSingular": "Liczba zaznaczonych elementów: {count}", + "platformApprovalFlow.userListSelectedItemsCountPlural": "Liczba zaznaczonych elementów: {count}", + "platformApprovalFlow.statusApproved": "approved", + "platformApprovalFlow.statusRejected": "rejected", + "platformApprovalFlow.statusInProgress": "in progress", + "platformApprovalFlow.statusNotStarted": "not started", + "platformFeedInput.userTitle": "Użytkownik", + "platformVHD.selectionBarLabel": "Zaznaczenia i warunki", + "platformVHD.selectedAndConditionLabel": "Zaznaczenia i Warunki", + "platformVHD.footerClearSelectedTitle": "wyczyść zaznaczenie", + "platformVHD.footerClearSelectedAriaLabel": "wyczyść zaznaczenie", + "platformVHD.searchButtonLabel": "Idź", + "platformVHD.successButtonLabel": "OK", + "platformVHD.cancelButtonLabel": "Anuluj", + "platformVHD.selectedEmptyLabel": "Nie zaznaczono żadnych elementów ani warunków", + "platformVHD.searchPlaceholder": "Szukaj", + "platformVHD.searchAdvancedSearchLabel": "Filtry", + "platformVHD.searchShowAdvancedSearchLabel": "Pokaż filtry", + "platformVHD.searchHideAdvancedSearchLabel": "Ukryj filtry", + "platformVHD.searchShowAllAdvancedSearchLabel": "Pokaż wszystkie filtry", + "platformVHD.searchHideAllAdvancedSearchLabel": "Ukryj wszystkie filtry", + "platformVHD.selectTabDisplayCountLabel": "Elementy ({count})", + "platformVHD.selectTabMoreBtnLabel": "Więcej", + "platformVHD.selectTabCountHiddenA11yLabel": "Liczba wierszy {rowCount}, liczba kolumn {colCount}", + "platformVHD.selectMobileTabBackBtnTitle": "Powrót", + "platformVHD.selectMobileTabBtnOpenDialogLabel": "Otwórz dialog", + "platformVHD.selectMobileTabTitle": "{title} zakładka", + "platformVHD.selectMobileConditionEmpty": "Pusty", + "platformVHD.defineConditionTitle": "Produkt", + "platformVHD.defineConditionSelectedValueHiddenA11yLabel": "zaznaczona wartość {value}", + "platformVHD.defineConditionConditionsGroupHeaderInclude": "Zawiera", + "platformVHD.defineConditionConditionsGroupHeaderExclude": "Nie zawiera", + "platformVHD.defineConditionFromPlaceholder": "od", + "platformVHD.defineConditionToPlaceholder": "do", + "platformVHD.defineConditionValuePlaceholder": "wartość", + "platformVHD.defineConditionRemoveConditionButtonTitle": "Usuń warunek", + "platformVHD.defineConditionAddConditionButtonLabel": "Dodaj", + "platformVHD.defineConditionAddConditionButtonTitle": "Dodaj Warunek", + "platformVHD.defineConditionConditionStrategyLabelContains": "zawiera", + "platformVHD.defineConditionConditionStrategyLabelEqualTo": "równy", + "platformVHD.defineConditionConditionStrategyLabelBetween": "pomiędzy", + "platformVHD.defineConditionConditionStrategyLabelStartsWith": "zaczynający się na", + "platformVHD.defineConditionConditionStrategyLabelEndsWith": "kończący się na", + "platformVHD.defineConditionConditionStrategyLabelLessThan": "mniej niż", + "platformVHD.defineConditionConditionStrategyLabelLessThanEqual": "mniej lub równo niż", + "platformVHD.defineConditionConditionStrategyLabelGreaterThan": "więcej niż", + "platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual": "więcej lub równo niż", + "platformVHD.defineConditionConditionStrategyLabelEmpty": "pusty", + "platformVHD.defineConditionConditionStrategyLabelNotEqualTo": "nie równy", + "platformVHD.defineConditionConditionStrategyLabelNotEmpty": "nie pusty", + "platformVHD.defineConditionMaxCountError": "Wprowadź wartość zawierającą nie wiecej niż {count} znaków", + "platformVHD.selectTabTitle": "Wybierz z listy", + "platformVHD.searchTableEmptyMessage": "Użyj wyszukiwania by uzyskać wyniki", + "platformVHD.defineTabTitle": "Zdefinjuj warunki", + "platformCombobox.countListResultsSingular": "Lista 1 elementowa", + "platformCombobox.countListResultsPlural": "Lista {count} elementowa", + "platformMultiCombobox.inputGlyphAriaLabel": "Zaznacz elementy", + "platformMultiCombobox.inputIconTitle": "Zaznacz elementy", + "platformMultiCombobox.mobileShowAllItemsButton": "Pokaż wszystkie elementy", + "platformMultiCombobox.mobileShowSelectedItemsButton": "Pokaż zaznaczone elementy", + "platformTextarea.counterMessageCharactersOverTheLimitSingular": "Liczba znaków powyżej limitu {count}", + "platformTextarea.counterMessageCharactersOverTheLimitPlural": "Liczba znaków powyżej limitu {count}", + "platformTextarea.counterMessageCharactersRemainingSingular": "Liczba pozostających znaków {count}", + "platformTextarea.counterMessageCharactersRemainingPlural": "Liczba pozostających znaków {count}", + "platformLink.roleDescriptionWithMedia": "Media: {media}", + "platformList.loadingAriaLabel": "wczytywanie", + "platformObjectListItem.detailsActionAriaLabel": "cecha", + "platformObjectListItem.deleteActionAriaLabel": "usuń", + "platformStandardListItem.detailsActionAriaLabel": "cecha", + "platformStandardListItem.deleteActionAriaLabel": "usuń", + "platformSearchField.clearButtonTitle": "Wyczyść", + "platformSearchField.submitButtonTitle": "Szukaj", + "platformSearchField.searchInputLabel": "Szukaj", + "platformSearchField.synchronizeButtonTitle": "Synchronizuj", + "platformSearchField.searchSuggestionMessage": "Znaleziono {count} możliwych wyników.", + "platformSearchField.searchSuggestionNavigateMessage": "Poruszaj się za pomocą strzałek góra/dół", + "platformSmartFilterBar.searchPlaceholder": "Szukaj", + "platformSmartFilterBar.submitButtonLabel": "Idź", + "platformSmartFilterBar.filtersButtonLabel": "Filtry ({filtersCount})", + "platformSmartFilterBar.showFiltersButtonLabel": "Pokaż filtry", + "platformSmartFilterBar.hideFiltersButtonLabel": "Ukryj filtry", + "platformSmartFilterBar.defineConditionsRemoveConditionButtonTitle": "Usuń warunek", + "platformSmartFilterBar.defineConditionsAddConditionButtonLabel": "Dodaj warunek", + "platformSmartFilterBar.defineConditionsSubmitButtonLabel": "Idź", + "platformSmartFilterBar.defineConditionsCancelButton": "Anuluj", + "platformSmartFilterBar.selectFiltersHeader": "Filtry", + "platformSmartFilterBar.selectFiltersAvailableFiltersText": "Dostępne filtry", + "platformSmartFilterBar.selectFiltersFilterColumnLabel": "Filtr", + "platformSmartFilterBar.selectFiltersActiveColumnLabel": "Aktywny", + "platformSmartFilterBar.selectFiltersSubmitButtonLabel": "Idź", + "platformSmartFilterBar.selectFiltersCancelButton": "Anuluj", + "platformSmartFilterBar.filterConditionContains": "zawiera", + "platformSmartFilterBar.filterConditionEqualTo": "równy", + "platformSmartFilterBar.filterConditionBetween": "pomiędzy", + "platformSmartFilterBar.filterConditionBeginsWith": "zaczynający się na", + "platformSmartFilterBar.filterConditionEndsWith": "kończący się na", + "platformSmartFilterBar.filterConditionLessThan": "mniej niż", + "platformSmartFilterBar.filterConditionLessThanOrEqualTo": "mniej lub równo niż", + "platformSmartFilterBar.filterConditionGreaterThan": "więcej niż", + "platformSmartFilterBar.filterConditionGreaterThanOrEqualTo": "więcej lub równo niż", + "platformSmartFilterBar.filterConditionAfter": "po", + "platformSmartFilterBar.filterConditionOnOrAfter": "w lub po", + "platformSmartFilterBar.filterConditionBefore": "przed", + "platformSmartFilterBar.filterConditionBeforeOrOn": "przed lub w", + "platformSmartFilterBar.filterConditionValuePlaceholder": "wartość", + "platformSmartFilterBar.filterConditionValueFromPlaceholder": "od", + "platformSmartFilterBar.filterConditionValueToPlaceholder": "do", + "platformSmartFilterBar.settingsCategoryAll": "Wszystko", + "platformSmartFilterBar.settingsCategoryVisible": "Widoczny", + "platformSmartFilterBar.settingsCategoryActive": "Aktywny", + "platformSmartFilterBar.settingsCategoryVisibleAndActive": "Widoczny i aktywny", + "platformSmartFilterBar.settingsCategoryMandatory": "Obowiązkowy", + "platformSmartFilterBar.manageFieldConditions": "Manage field conditions", + "platformSmartFilterBar.refreshButtonAriaLabel": "Refresh", + "platformTable.headerMenuSortAsc": "Sortuj Rosnąco", + "platformTable.headerMenuSortDesc": "Sortuj Malejąco", + "platformTable.headerMenuGroup": "Grupa", + "platformTable.headerMenuFreeze": "Zamrożenie", + "platformTable.headerMenuEndFreeze": "Freeze to End", + "platformTable.headerMenuUnfreeze": "HeaderMenuUnfreeze", + "platformTable.headerMenuFilter": "Filtr", + "platformTable.defaultEmptyMessage": "Brak wyników", + "platformTable.emptyCell": "Pusty", + "platformTable.noVisibleColumnsMessage": "Right now, there are no visible columns in the table. Please select the columns you need in the table settings.", + "platformTable.resetChangesButtonLabel": "Reset", + "platformTable.editableCellNumberPlaceholder": "Wprowadz wartość", + "platformTable.editableCellDatePlaceholder": "Wprowadz wartość", + "platformTable.editableCellStringPlaceholder": "Wprowadz wartość", + "platformTable.P13ColumnsDialogHeader": "Kolumny", + "platformTable.P13ColumnsDialogSearchPlaceholder": "Szukaj", + "platformTable.P13ColumnsDialogsShowSelected": "Pokaż wybrane", + "platformTable.P13ColumnsDialogShowAll": "Pokaż wszystkie", + "platformTable.P13ColumnsDialogSelectAll": "Pokaż wszystkie ({selectedColumnsCount}/{selectableColumnsCount})", + "platformTable.P13ColumnsDialogConfirmationBtnLabel": "OK", + "platformTable.P13ColumnsDialogCancelBtnLabel": "Anuluj", + "platformTable.P13ColumnsDialogMoveToTopBtn": "Przesuń do samej góry", + "platformTable.P13ColumnsDialogMoveUpBtn": "Przesuń do góry", + "platformTable.P13ColumnsDialogMoveDownBtn": "Przesuń na dół", + "platformTable.P13ColumnsDialogMoveToBottomBtn": "Przesuń na sam dół", + "platformTable.P13FilterStrategyLabelBetween": "pomiędzy", + "platformTable.P13FilterStrategyLabelContains": "zawiera", + "platformTable.P13FilterStrategyLabelBeginsWith": "zaczynający się na", + "platformTable.P13FilterStrategyLabelEndsWith": "kończący się na", + "platformTable.P13FilterStrategyLabelEqualTo": "równy", + "platformTable.P13FilterStrategyLabelGreaterThan": "więcej niż", + "platformTable.P13FilterStrategyLabelGreaterThanOrEqualTo": "więcej lub równo niż", + "platformTable.P13FilterStrategyLabelLessThan": "mniej niż", + "platformTable.P13FilterStrategyLabelLessThanOrEqualTo": "mniej lub równo niż", + "platformTable.P13FilterStrategyLabelAfter": "po", + "platformTable.P13FilterStrategyLabelOnOrAfter": "w lub po", + "platformTable.P13FilterStrategyLabelBefore": "przed", + "platformTable.P13FilterStrategyLabelBeforeOrOn": "przed lub w", + "platformTable.P13FilterStrategyLabelNotDefined": "Nie Zdefiniowano", + "platformTable.P13FilterBooleanOptionNotDefined": " ", + "platformTable.P13FilterBooleanOptionTrue": "Tak", + "platformTable.P13FilterBooleanOptionFalse": "Nie", + "platformTable.P13FilterDialogHeader": "Filtruj", + "platformTable.P13FilterDialogIncludePanelTitleWithCount": "Zawiera ({count})", + "platformTable.P13FilterDialogIncludePanelTitleWithoutCount": "Zawiera", + "platformTable.P13FilterDialogExcludePanelTitleWithCount": "Nie zawiera ({count})", + "platformTable.P13FilterDialogExcludePanelTitleWithoutCount": "Nie zawiera", + "platformTable.P13FilterDialogRemoveFilterBtnTitle": "Usuń Filtr", + "platformTable.P13FilterDialoAddFilterBtnTitle": "Dodaj Filtr", + "platformTable.P13FilterDialogConfirmationBtnLabel": "OK", + "platformTable.P13FilterDialogCancelBtnLabel": "Anuluj", + "platformTable.P13GroupDialogHeader": "Grupa", + "platformTable.P13GroupDialogNoneSelectedColumnSelectPlaceholder": "(nic)", + "platformTable.P13GroupDialogShowFieldAsColumnCheckboxLabel": "Pokaż Pole jako Kolumnę", + "platformTable.P13GroupDialogRemoveGroupBtnTitle": "Usuń", + "platformTable.P13GroupDialogAddNewGroupBtnTitle": "Dodaj nową", + "platformTable.P13GroupDialogConfirmationBtnLabel": "OK", + "platformTable.P13GroupDialogCancelBtnLabel": "Anuluj", + "platformTable.P13SortDialogHeader": "Sortuj", + "platformTable.P13SortDialogNoneSelectedColumn": "(nic)", + "platformTable.P13SortDialogNoneSelectedSorting": "(nic)", + "platformTable.P13SortDialogSortOrderSelectOptionAsc": "Rosnąco", + "platformTable.P13SortDialogSortOrderSelectOptionDesc": "Malejąco", + "platformTable.P13SortDialogRemoveSortBtnTitle": "Usuń", + "platformTable.P13SortDialogAddNewSortBtnTitle": "Dodaj nowy", + "platformTable.P13SortDialogConfirmationBtnLabel": "OK", + "platformTable.P13SortDialogCancelBtnLabel": "Anuluj", + "platformTable.toolbarSearchPlaceholder": "Szukaj", + "platformTable.toolbarActionCreateButtonLabel": "Utwórz", + "platformTable.toolbarActionSaveButtonLabel": "Zapisz", + "platformTable.toolbarActionCancelButtonLabel": "Anuluj", + "platformTable.toolbarActionSortButtonTitle": "Sortuj", + "platformTable.toolbarActionFilterButtonTitle": "Filtr", + "platformTable.toolbarActionGroupButtonTitle": "Grupa", + "platformTable.toolbarActionColumnsButtonTitle": "Kolumny", + "platformTable.toolbarActionExpandAllButtonTitle": "Expand all", + "platformTable.toolbarActionCollapseAllButtonTitle": "Collapse all", + "platformTable.filterDialogNotFilteredLabel": "(Nie zastosowano żadnego filtra)", + "platformTable.filterDialogFilterByLabel": "Użyto filtr: {filterLabel}", + "platformTable.filterDialogFilterTitle": "Filtr", + "platformTable.filterDialogFilterBy": "Użyto filtr", + "platformTable.filterDialogConfirmBtnLabel": "OK", + "platformTable.filterDialogCancelBtnLabel": "Anuluj", + "platformTable.groupDialogHeader": "Grupa", + "platformTable.groupDialogGroupOrderHeader": "Kolejność grup", + "platformTable.groupDialogGroupOrderAsc": "Rosnąco", + "platformTable.groupDialogGroupOrderDesc": "Malejąco", + "platformTable.groupDialogGroupByHeader": "Grupuj po", + "platformTable.groupDialogNotGroupedLabel": "(Nie Pogrupowano)", + "platformTable.groupDialogConfirmBtnLabel": "OK", + "platformTable.groupDialogCancelBtnLabel": "Anuluj", + "platformTable.sortDialogHeader": "Sortuj", + "platformTable.sortDialogSortOrderHeader": "Kolejność sortowania", + "platformTable.sortDialogSortOrderAsc": "Rosnąco", + "platformTable.sortDialogSortOrderDesc": "Malejąco", + "platformTable.sortDialogSortByHeader": "Posortowano po", + "platformTable.sortDialogNotSortedLabel": "(Nie Posortowano)", + "platformTable.sortDialogConfirmBtnLabel": "OK", + "platformTable.sortDialogCancelBtnLabel": "Anuluj", + "platformTable.selectAllCheckboxLabel": "Select all", + "platformTable.deselectAllCheckboxLabel": "Deselect all", + "platformTable.deselectSingleRow": "To deselect row, press SPACEBAR", + "platformTable.selectSingleRow": "To select row, press SPACEBAR", + "platformTable.deselectSingleRowTitle": "Click to deselect", + "platformTable.selectSingleRowTitle": "Click to select", + "platformThumbnail.detailsGotoPreviousButtonTitle": "Idź do poprzedniego", + "platformThumbnail.detailsGotoNextButtonTitle": "Idź do następnego", + "platformThumbnail.detailsDialogCloseBtnLabel": "Zamknij", + "platformThumbnail.roleDescription": "Obraz", + "platformUploadCollection.moveToTitle": "Przenieś do", + "platformUploadCollection.moveToTitleFolder": "Folder", + "platformUploadCollection.moveToNewFolderBtnLabel": "Nowy Folder", + "platformUploadCollection.moveToAllFilesSubHeaderLabel": "Wszystkie pliki", + "platformUploadCollection.moveToConfirmBtn": "Przesuń", + "platformUploadCollection.moveToCloseBtn": "Anuluj", + "platformUploadCollection.newFolderTitle": "Nowy folder", + "platformUploadCollection.newFolderAtRootInputLabel": "Nazwa nowego folderu", + "platformUploadCollection.newFolderAtFolderInputLabel": "Nazwa nowego folderu wewnątrz folderu {folderName}", + "platformUploadCollection.newFolderInputPlaceholder": "Pisz tutaj...", + "platformUploadCollection.newFolderInputErrorLabel": "Maksymalna liczba znaków {count}", + "platformUploadCollection.newFolderDialogCreateBtnLabel": "Utwórz", + "platformUploadCollection.newFolderDialogCancelBtnLabel": "Anuluj", + "platformUploadCollection.breadcrumbLabelAllFiles": "Wszystkie pliki", + "platformUploadCollection.breadcrumbLabelAllFilesWithTotal": "Wszystkie pliki ({total})", + "platformUploadCollection.searchPlaceholder": "Szukaj", + "platformUploadCollection.addBtnLabel": "Dodaj`", + "platformUploadCollection.newFolderBtnLabel": "Nowy Folder", + "platformUploadCollection.moveToBtnLabel": "Przenieś do", + "platformUploadCollection.downloadBtnLabel": "Ściągnij", + "platformUploadCollection.updateVersionBtnLabel": "Aktualizuj wersję", + "platformUploadCollection.removeBtnLabel": "Usuń", + "platformUploadCollection.folderIconTitle": "Obrazek folderu", + "platformUploadCollection.fileIconTitle": "Obrazek pliku", + "platformUploadCollection.editFileNameInputPlaceholder": "Wprowadz nazwę", + "platformUploadCollection.editFileNameFileAlreadyExistsError": "Plik o podanej nazwie już istnieje", + "platformUploadCollection.editFileNameFolderAlreadyExistsError": "Folder o podanej nazwie już istnieje", + "platformUploadCollection.itemStatusSuccessful": "Sukces", + "platformUploadCollection.itemStatusUnsuccessful": "Niepowodzenie", + "platformUploadCollection.uploadNewFileAfterFailAction": "Idź", + "platformUploadCollection.cancelUploadNewFileAction": "Anuluj", + "platformUploadCollection.itemMenuBtnTitle": "Więcej", + "platformUploadCollection.dragDropAreaText": "Przeciągnij by przekazać plik", + "platformUploadCollection.noDataText": "Nie znaleziono żadnych plików", + "platformUploadCollection.noDataDescription": "Upuść pliki żeby przekazać lub użyj przycisku “Dodaj” ", + "platformUploadCollection.paginationTotal": "Widoczne {from}-{to} z {total}", + "platformUploadCollection.resultsPerPage": "Liczba wyników na strone", + "platformUploadCollection.messageCreateFailed": "Nie udało się utworzyć {folderName}.", + "platformUploadCollection.messageCreateSuccess": "{folderName} został utworzony.", + "platformUploadCollection.messageUpdateVersionFailed": "Nie udało się zaktualizować wersji {folderName}.", + "platformUploadCollection.messageUpdateVersionSuccess": "{folderName} wersja zaktualizowana.", + "platformUploadCollection.messageFileRenameFailed": "Nie powiodła się zmiana nazwy z \"{from}\" na \"{to}.\"", + "platformUploadCollection.messageFileRenameSuccess": "\"{from}\" został zmieniony na \"{to}\".", + "platformUploadCollection.messageRemoveFoldersAndFilesFailed": "Nie powiodło się usunięcie folderów w liczbie {foldersCount} oraz plików w liczbie {filesCount} .", + "platformUploadCollection.messageRemoveFoldersAndFilesSuccess": "Liczba folderów usunięta {foldersCount} oraz liczba plików usuniętych {filesCount}.", + "platformUploadCollection.messageRemoveFoldersFailed": "Nie powiodło się usunięcie folderów w liczbie {foldersCount}.", + "platformUploadCollection.messageRemoveFoldersSuccess": "Liczba folderów usuniętych {foldersCount}", + "platformUploadCollection.messageRemoveFilesFailed": "Nie powiodło się usunięcie plików w liczbie {foldersCount}.", + "platformUploadCollection.messageRemoveFilesSuccess": "Liczba plików usuniętych {foldersCount}", + "platformUploadCollection.messageRemoveFileOrFolderFailed": "Nie powiodło się usunięcie {name}.", + "platformUploadCollection.messageRemoveFileOrFolderSuccess": "Usunięto {name}.", + "platformUploadCollection.messageMoveFoldersAndFilesFailed": "Nie powiodło się przeniesienie folderów w liczbie {foldersCount} oraz plików w liczbie {filesCount} do {to}.", + "platformUploadCollection.messageMoveFoldersAndFilesSuccess": "Foldery w liczbie {foldersCount} oraz pliki w liczbie {filesCount} zostały przeniesione do {to}.", + "platformUploadCollection.messageMoveFoldersFailed": "Nie powiodło się przeniesienie folderów w liczbie {foldersCount} do {to}.", + "platformUploadCollection.messageMoveFoldersSuccess": "Foldery w liczbie {foldersCount} zostały przeniesione do {to}.", + "platformUploadCollection.messageMoveFilesFailed": "Nie powiodło się przeniesienie plików w liczbie {filesCount} do {to}.", + "platformUploadCollection.messageMoveFilesSuccess": "Pliki w liczbie {filesCount} zostały przeniesione do {to}.", + "platformUploadCollection.messageMoveFileOrFolderFailed": "Nie powiodło się przeniesienie {name} do {to}.", + "platformUploadCollection.messageMoveFileOrFolderSuccess": "{name} przeniesiono do {to}.", + "platformUploadCollection.messageMoveRootFoldersAndFilesFailed": "Nie powiodło się przeniesienie folderów w liczbie {foldersCount} oraz plików w liczbie {filesCount} do wszystkich plików.", + "platformUploadCollection.messageMoveRootFoldersAndFilesSuccess": "Foldery w liczbie {foldersCount} oraz pliki w liczbie {filesCount} zostały przeniesione do wszystkich plików.", + "platformUploadCollection.messageMoveRootFoldersFailed": "Nie powiodło się przeniesienie folderów w liczbie {foldersCount} do wszystkich folderów.", + "platformUploadCollection.messageMoveRootFoldersSuccess": "Foldery w liczbie {foldersCount} zostały przeniesione do wszystkich folderów.", + "platformUploadCollection.messageMoveRootFilesFailed": "Nie powiodło się przeniesienie plików w liczbie {filesCount} do wszystkich plików.", + "platformUploadCollection.messageMoveRootFilesSuccess": "Pliki w liczbie {filesCount} zostały przeniesione do wszystkich plików.", + "platformUploadCollection.messageMoveRootFileOrFolderFailed": "Nie powiodło się przeniesienie {name} do wszystkich plików.", + "platformUploadCollection.messageMoveRootFileOrFolderSuccess": "{name} przeniesiono do wszystkich plików.", + "platformUploadCollection.messageFileTypeMismatchPlural": "Liczba plików ze złym typem {filesCount}. Typy dozwolone: {allowedTypes}.", + "platformUploadCollection.messageFileTypeMismatchSingular": "Plik \"{fileName}\" ma zły typ. Typy dozwolone: {allowedTypes}.", + "platformUploadCollection.messageFileSizeExceededPlural": "Liczba plików przekraczająca maksymalny rozmiar {filesCount}. Maksymalna wielkość pliku do: {maxFileSize}.", + "platformUploadCollection.messageFileSizeExceededSingular": "Plik \"{fileName}\" przekroczył maksymalny rozmiar. Maksymalna wielkość pliku: {maxFileSize}.", + "platformUploadCollection.messageFileNameLengthExceededPlural": "Liczba plików przekraczająca maksymalną długość nazwy {filesCount}. Maksymalna długość: {maxFilenameLength} znaków.", + "platformUploadCollection.messageFileNameLengthExceededSingular": "Nazwa \"{fileName}\" przekroczyła maksymalną długość. Maksymalna długość: {maxFilenameLength} znaków.", + "platformWizardGenerator.summarySectionEditStep": "Edytuj", + "platformMessagePopover.allErrors": "All", + "platformMessagePopover.defaultErrors.email": "Email is invalid", + "platformMessagePopover.defaultErrors.max": "The field exceeds maximum value", + "platformMessagePopover.defaultErrors.maxLength": "The field exceeds maximum length", + "platformMessagePopover.defaultErrors.min": "The field value is less than allowed", + "platformMessagePopover.defaultErrors.minLength": "The field length is less than allowed", + "platformMessagePopover.defaultErrors.pattern": "The field value is invalid", + "platformMessagePopover.defaultErrors.required": "The field is mandatory", + "platformMessagePopover.defaultErrors.requiredTrue": "The field is mandatory", + "platformVariantManagement.manage": "Manage", + "platformVariantManagement.saveAs": "Save as", + "platformVariantManagement.saveView": "Save View", + "platformVariantManagement.save": "Save", + "platformVariantManagement.myViews": "My Views", + "platformVariantManagement.view": "View", + "platformVariantManagement.setAsDefault": "Set as Default", + "platformVariantManagement.public": "Public", + "platformVariantManagement.applyAutomatically": "Apply Automatically", + "platformVariantManagement.requiredFieldError": "This field is required.", + "platformVariantManagement.nameTakenFieldError": "Variant with such name already exists. Please chose a different name.", + "platformVariantManagement.cancel": "Cancel", + "platformVariantManagement.manageViews": "Manage Views", + "platformVariantManagement.markAsFavourite": "Mark as Favourite", + "platformVariantManagement.sharing": "Sharing", + "platformVariantManagement.default": "Default", + "platformVariantManagement.createdBy": "Created By", + "platformVariantManagement.removeVariant": "Remove View", + "platformVariantManagement.search": "Search", + "platformVariantManagement.access.public": "Public", + "platformVariantManagement.access.private": "Private", + "platformSelect.selectOptionLabel": "Wybierz opcję", + "fnSlider.minMaxDetails": "Minimalna wartość {min}, maksymalna wartość {max}", + "fnSlider.valueminDetails": "Wartość {value}", + "fnSlider.valuemaxDetails": "Wartość {value}", + "fnSlider.valueNowDetails": "Aktualna wartość: {value}", + "fnSwitch.semanticAcceptLabel": "Zatwierdz", + "fnSwitch.semanticDeclineLabel": "Odrzuć", + "coreTree.expand": "Expand node", + "coreTree.collapse": "Collapse node", + "coreTree.noData": "No data" +} diff --git a/libs/i18n/src/lib/translations/translations_ru-RU.json b/libs/i18n/src/lib/translations/translations_ru-RU.json new file mode 100644 index 00000000000..26c817eb356 --- /dev/null +++ b/libs/i18n/src/lib/translations/translations_ru-RU.json @@ -0,0 +1,505 @@ +{ + "coreMultiComboBox.selectAllLabel": "Выбрать все ({selectedItems} из {totalItems})", + "coreCarousel.leftNavigationBtnLabel": "Перейти к предыдущему элементу", + "coreCarousel.rightNavigationBtnLabel": "Перейти к следующему элементу", + "coreDatePicker.dateInputLabel": "Поле ввода даты", + "coreDatePicker.dateRangeInputLabel": "Поле ввода диапазона дат", + "coreDatePicker.displayCalendarToggleLabel": "Открыть средство выбора", + "coreDatePicker.valueStateSuccessMessage": "Значение состояния: Успех", + "coreDatePicker.valueStateInformationMessage": "Значение состояния: Информационное", + "coreDatePicker.valueStateWarningMessage": "Значение состояния: Предупреждение", + "coreDatePicker.valueStateErrorMessage": "Значение состояния: Ошибка", + "coreDatetimePicker.datetimeInputLabel": "Поле ввода даты и времени", + "coreDatetimePicker.displayDatetimeToggleLabel": "Показать календарь", + "coreDatetimePicker.displayTypeDateLabel": "Дата", + "coreDatetimePicker.displayTypeTimeLabel": "Время", + "coreDatetimePicker.datetimeOkLabel": "ОК", + "coreDatetimePicker.datetimeCancelLabel": "Отменить", + "coreFeedListItem.moreLabel": "Больше", + "coreFeedListItem.lessLabel": "Меньше", + "coreGridList.filterBarCancelButtonTitle": "Отмена", + "coreGridList.listItemStatusAriaLabel": "Элемент имеет статус. Статус: {status}.", + "coreGridList.listItemCounterAriaLabel": "Элемент имеет { count, plural, one {1 дочерний элемент} few {# дочерних элемента} other {# дочерних элементов} }.", + "coreGridList.listItemButtonDetailsTitle": "Подробности", + "coreGridList.listItemButtonDeleteTitle": "Удалить", + "coreGridList.listItemStatusContainsErrors": "Содержит ошибки", + "coreGridList.listItemStatusLocked": "Заблокировано", + "coreGridList.listItemStatusDraft": "Черновик", + "coreMessageStrip.dismissLabel": "Закрыть", + "coreMultiInput.multiInputAriaLabel": "Multi Value Input", + "coreMultiInput.tokensCountText": "{ length, plural, =0 {Нет выбранных} one {Выбран 1} other {Выбрано #} } { length, plural, one { вариант } few { варианта } other { вариантов } }.", + "coreNavigation.mainNavigation": "Главная Навигация", + "coreNavigation.navigationPath": "Путь навигации", + "coreNestedList.linkItemAriaLabel": "Элемент дерева {itemDetails}, {index} из {total}{selectedDescription}", + "coreOverflowLayout.moreItemsButton": "Еще { count, plural, one {1 елемент} few {# елемента} other {# елементов} }", + "corePagination.pageLabel": "Страница {pageNumber}", + "corePagination.currentPageAriaLabel": "Страница {pageNumber} активна", + "corePagination.labelBeforeInputMobile": "Страница:", + "corePagination.labelAfterInputMobile": "из {totalCount}", + "corePagination.inputAriaLabel": "Поле ввода страницы, Текущая страница, Страница {pageNumber} из {totalCount}", + "corePagination.itemsPerPageLabel": "Результатов на странице:", + "corePagination.firstLabel": "Перейти к первой", + "corePagination.previousLabel": "Перейти к предыдущей", + "corePagination.nextLabel": "Перейти к следующей", + "corePagination.lastLabel": "Перейти к последней", + "corePagination.ariaLabel": "Нумерация страниц", + "corePagination.totalResultsLabel": "{totalCount} результатов", + "coreProductSwitch.ariaLabel": "Переключатель", + "coreShellbar.collapsedItemMenuLabel": "Свернутое меню элементов", + "coreShellbar.cancel": "Отмена", + "coreShellbar.search": "Поиск", + "coreSlider.singleMinMaxDetails": "Минимальное значение слайдера {min}, максимальное значение {max}", + "coreSlider.singleValueminDetails": "Значение равно {value}", + "coreSlider.singleValuemaxDetails": "Значение равно {value}", + "coreSlider.singleValueNowDetails": "Текущее значение: {value}", + "coreSlider.multipleHandle1MinMaxDetails": "Минимальное значение слайдера {min}, максимальное значение {max}", + "coreSlider.multipleHandle1ValueminDetails": "Значение равно {value}", + "coreSlider.multipleHandle1ValuemaxDetails": "Значение равно {value}", + "coreSlider.multipleHandle1ValueNowDetails": "Текущее значение: {value}", + "coreSlider.multipleHandle2MinMaxDetails": "Минимальное значение слайдера {min}, максимальное значение {max}", + "coreSlider.multipleHandle2ValueminDetails": "Значение равно {value}", + "coreSlider.multipleHandle2ValuemaxDetails": "Значение равно {value}", + "coreSlider.multipleHandle2ValueNowDetails": "Текущее значение: {value}", + "coreSplitButton.expandButtonAriaLabel": "Больше действий", + "coreSplitButton.arialLabel": "Кнопка разделения", + "coreSplitter.paginationItemAriaLabel": "Секция", + "coreStepInput.incrementButtonTitle": "Увеличить", + "coreStepInput.decrementButtonTitle": "Уменьшить", + "coreStepInput.ariaRoleDescription": "Шаг ввода", + "coreSwitch.semanticAcceptLabel": "Принять", + "coreSwitch.semanticDeclineLabel": "Отклонить", + "coreTabs.tabListExpandButtonText": "Больше", + "coreText.moreLabel": "Больше", + "coreText.lessLabel": "Меньше", + "coreTime.componentAriaName": "Выбор времени", + "coreTime.increaseHoursLabel": "Увеличить часы", + "coreTime.hoursLabel": "Час", + "coreTime.decreaseHoursLabel": "Уменьшить часы", + "coreTime.increaseMinutesLabel": "Увеличить минуты", + "coreTime.minutesLabel": "Мин", + "coreTime.decreaseMinutesLabel": "Уменьшить минуты", + "coreTime.increaseSecondsLabel": "Увеличить секунды", + "coreTime.secondsLabel": "Сек", + "coreTime.decreaseSecondsLabel": "Уменьшить секунды", + "coreTime.increasePeriodLabel": "Увеличить период", + "coreTime.periodLabel": "Период", + "coreTime.decreasePeriodLabel": "Уменьшить период", + "coreTime.navigationInstruction": "Для перемещения между элементами в этом списке используйте стрелку вверх или вниз. Для переключения между списками используйте стрелку влево или вправо.", + "coreTimePicker.timePickerInputLabel": "Поле ввода времени", + "coreTimePicker.timePickerButtonLabel": "Открыть окно выбора", + "coreToken.deleteButtonLabel": "Удаляемый", + "coreToken.ariaRoleDescription": "токен", + "coreTokenizer.moreLabel": "Еще { count, plural, one {1 елемент} few {# елемента} other {# елементов} }", + "coreUploadCollection.menuOkText": "ОК", + "coreUploadCollection.menuCancelText": "Отменить", + "coreUploadCollection.menuEditAriaLabel": "Редактировать", + "coreUploadCollection.menuDeleteAriaLabel": "Удалить", + "coreUploadCollection.menuOkAriaLabel": "Редактировать", + "coreUploadCollection.menuCancelAriaLabel": "Отменить", + "coreUploadCollection.formItemPlaceholder": "Имя файла", + "coreWizard.ariaLabel": "Мастер", + "coreBreadcrumb.overflowTitleMore": "Больше", + "platformActionBar.backButtonLabel": "Вернуться назад", + "platformApprovalFlow.defaultWatchersLabel": "Наблюдатели", + "platformApprovalFlow.defaultTitle": "Процесс утверждения", + "platformApprovalFlow.nextButtonAriaLabel": "Перейти к следующему слайд", + "platformApprovalFlow.prevButtonAriaLabel": "Перейти к предыдущему слайду", + "platformApprovalFlow.editModeSaveButtonLabel": "Сохранить", + "platformApprovalFlow.editModeExitButtonLabel": "Выйти", + "platformApprovalFlow.emptyTitle": "Начать добавлять утверждающих и наблюдателей", + "platformApprovalFlow.emptyHint": "Чтобы добавить утверждающих, нажмите \"Добавить шаг\". Чтобы добавить наблюдателей, нажмите поле Наблюдатели.", + "platformApprovalFlow.addNodeDialogHeaderAddApprovers": "Добавить утверждающего", + "platformApprovalFlow.addNodeDialogHeaderEditApprover": "Редактировать утверждающего", + "platformApprovalFlow.addNodeDialogHeaderAddApproverTeam": "Пользователь/Команда", + "platformApprovalFlow.addNodeDialogHeaderDetail": "Детали", + "platformApprovalFlow.addNodeDialogNodeType": "Параллельный или последовательный", + "platformApprovalFlow.addNodeDialogNodeTypeSerial": "Последовательный", + "platformApprovalFlow.addNodeDialogNodeTypeParallel": "Параллельный", + "platformApprovalFlow.addNodeDialogApproverType": "Тип утверждающего", + "platformApprovalFlow.addNodeDialogApproverTypeUser": "Пользователь", + "platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone": "Любой из команды", + "platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone": "Все в команде", + "platformApprovalFlow.addNodeDialogUserOrTeam": "Пользователь/Команда", + "platformApprovalFlow.addNodeDialogAddToNext": "Добавить в следующий последовательный узел", + "platformApprovalFlow.addNodeDialogDueDate": "Дата выполнения", + "platformApprovalFlow.addNodeSearchPlaceholder": "Поиск", + "platformApprovalFlow.addNodeAddActionBtnLabel": "Добавить", + "platformApprovalFlow.addNodeCancelActionBtnLabel": "Отмена", + "platformApprovalFlow.addNodeSelectApproverActionBtnLabel": "Выбрать", + "platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel": "Выйти", + "platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel": "Закрыть", + "platformApprovalFlow.userDetailsHeader": "Детали", + "platformApprovalFlow.userDetailsSendReminderBtnLabel": "Отправить напоминание", + "platformApprovalFlow.userDetailsCancelBtnLabel": "Отменить", + "platformApprovalFlow.messagesApproverAddedSuccess": "1 утверждающий добавлен", + "platformApprovalFlow.messagesTeamAddedSuccess": "1 команда добавлена", + "platformApprovalFlow.messagesNodeEdited": "1 утверждающий отредактирован", + "platformApprovalFlow.messagesNodeRemovedSingular": "1 утверждающий удален", + "platformApprovalFlow.messagesNodeRemovedPlural": "Утверждающие удалены", + "platformApprovalFlow.messagesTeamRemoved": "1 команда удалена", + "platformApprovalFlow.messagesErrorBuildGraph": "При попытке построить график произошла ошибка. Проверьте входящие данные.", + "platformApprovalFlow.messagesUndoAction": "Отменить", + "platformApprovalFlow.nodeMembersCount": "{ count, plural, one {1 член} few {# члена} other {# членов} } команды", + "platformApprovalFlow.nodeVariousTeams": "Различные команды", + "platformApprovalFlow.nodeStatusDueToday": "Срок выполнения сегодня", + "platformApprovalFlow.nodeStatusDueInXDays": "Срок выполнения через { count, plural, one {1 день} few {# дня} other {# дней} }", + "platformApprovalFlow.nodeStatusXDaysOverdue": "Просрочено на { count, plural, one {1 день} few {# дня} other {# дней} }", + "platformApprovalFlow.nodeActionAddApproversBefore": "Добавить утверждающих до", + "platformApprovalFlow.nodeActionAddApproversAfter": "Добавить утверждающих после", + "platformApprovalFlow.nodeActionAddApproversParallel": "Добавить параллельных утверждающих", + "platformApprovalFlow.nodeActionEditApprover": "Редактировать утверждающего", + "platformApprovalFlow.nodeActionRemove": "Удалить", + "platformApprovalFlow.selectTypeDialogMoveApproverAs": "Переместить утверждающего как", + "platformApprovalFlow.selectTypeDialogParallelOrSerial": "Параллельный или последовательный", + "platformApprovalFlow.selectTypeDialogNodeTypeParallel": "Параллельный утверждающий", + "platformApprovalFlow.selectTypeDialogNodeTypeSerial": "Последовательный утверждающий", + "platformApprovalFlow.selectTypeDialogConfirmButton": "Подтвердить", + "platformApprovalFlow.selectTypeDialogCancelButton": "Отмена", + "platformApprovalFlow.toolbarAddStepButton": "Добавить шаг", + "platformApprovalFlow.toolbarEditButton": "Редактировать", + "platformApprovalFlow.toolbarAddApproversBefore": "Добавить утверждающих до", + "platformApprovalFlow.toolbarAddApproversAfter": "Добавить утверждающих после", + "platformApprovalFlow.toolbarAddApproversParallel": "Добавить параллельных утверждающих", + "platformApprovalFlow.toolbarRemove": "Удалить", + "platformApprovalFlow.toolbarEditApprover": "Редактировать утверждающего", + "platformApprovalFlow.watchersInputPlaceholder": "Поиск", + "platformApprovalFlow.userListSelectedItemsCountSingular": "Выбран 1 элемент", + "platformApprovalFlow.userListSelectedItemsCountPlural": "Выбрано { count, plural, one {1 элемент} few {# элемента} other {# элементов} }", + "platformApprovalFlow.statusApproved": "approved", + "platformApprovalFlow.statusRejected": "rejected", + "platformApprovalFlow.statusInProgress": "in progress", + "platformApprovalFlow.statusNotStarted": "not started", + "platformFeedInput.userTitle": "Пользователь", + "platformVHD.selectionBarLabel": "Выбранные элементы и условия", + "platformVHD.selectedAndConditionLabel": "Выбранные элементы и условия", + "platformVHD.footerClearSelectedTitle": "очистить выбранные элементы", + "platformVHD.footerClearSelectedAriaLabel": "очистить выбранные элементы", + "platformVHD.searchButtonLabel": "Поиск", + "platformVHD.successButtonLabel": "ОК", + "platformVHD.cancelButtonLabel": "Отменить", + "platformVHD.selectedEmptyLabel": "Не выбрано никаких элементов или условий", + "platformVHD.searchPlaceholder": "Поиск", + "platformVHD.searchAdvancedSearchLabel": "Фильтры", + "platformVHD.searchShowAdvancedSearchLabel": "Показать фильтры", + "platformVHD.searchHideAdvancedSearchLabel": "Скрыть фильтры", + "platformVHD.searchShowAllAdvancedSearchLabel": "Показать все фильтры", + "platformVHD.searchHideAllAdvancedSearchLabel": "Скрыть все фильтры", + "platformVHD.selectTabDisplayCountLabel": "Элементы ({count})", + "platformVHD.selectTabMoreBtnLabel": "Больше", + "platformVHD.selectTabCountHiddenA11yLabel": "содержит { rowCount, plural, one {1 строку} few {# строки} other {# строк} } и { colCount, plural, one {1 столбец} few {# столбца} other {# столбцов} }", + "platformVHD.selectMobileTabBackBtnTitle": "Назад", + "platformVHD.selectMobileTabBtnOpenDialogLabel": "Открыть диалоговое окно", + "platformVHD.selectMobileTabTitle": "{title} вкладка", + "platformVHD.selectMobileConditionEmpty": "Пусто", + "platformVHD.defineConditionTitle": "Продукт", + "platformVHD.defineConditionSelectedValueHiddenA11yLabel": "выбранное значение {value}", + "platformVHD.defineConditionConditionsGroupHeaderInclude": "Включающие условия", + "platformVHD.defineConditionConditionsGroupHeaderExclude": "Исключительные условия", + "platformVHD.defineConditionFromPlaceholder": "от", + "platformVHD.defineConditionToPlaceholder": "до", + "platformVHD.defineConditionValuePlaceholder": "значение", + "platformVHD.defineConditionRemoveConditionButtonTitle": "Удалить условие", + "platformVHD.defineConditionAddConditionButtonLabel": "Добавить", + "platformVHD.defineConditionAddConditionButtonTitle": "Добавить условие", + "platformVHD.defineConditionConditionStrategyLabelContains": "содержит", + "platformVHD.defineConditionConditionStrategyLabelEqualTo": "равно", + "platformVHD.defineConditionConditionStrategyLabelBetween": "между", + "platformVHD.defineConditionConditionStrategyLabelStartsWith": "начинается с", + "platformVHD.defineConditionConditionStrategyLabelEndsWith": "заканчивается на", + "platformVHD.defineConditionConditionStrategyLabelLessThan": "меньше чем", + "platformVHD.defineConditionConditionStrategyLabelLessThanEqual": "меньше чем или равно", + "platformVHD.defineConditionConditionStrategyLabelGreaterThan": "больше чем", + "platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual": "больше чем или равно", + "platformVHD.defineConditionConditionStrategyLabelEmpty": "пусто", + "platformVHD.defineConditionConditionStrategyLabelNotEqualTo": "не равно", + "platformVHD.defineConditionConditionStrategyLabelNotEmpty": "не пусто", + "platformVHD.defineConditionMaxCountError": "Введите значение не более { count, plural, one {1 символа} other {# символов} }", + "platformVHD.selectTabTitle": "Выбрать из списка", + "platformVHD.searchTableEmptyMessage": "Используйте поиск для получения результатов", + "platformVHD.defineTabTitle": "Определить условия", + "platformCombobox.countListResultsSingular": "1 элемент", + "platformCombobox.countListResultsPlural": "{ count, plural, one {1 элемент} few {# элемента} other {# элементов} }", + "platformMultiCombobox.inputGlyphAriaLabel": "Выбрать опции", + "platformMultiCombobox.inputIconTitle": "Выбрать опции", + "platformMultiCombobox.mobileShowAllItemsButton": "Показать все элементы", + "platformMultiCombobox.mobileShowSelectedItemsButton": "Показать выбранные элементы", + "platformTextarea.counterMessageCharactersOverTheLimitSingular": "Превышен лимит на 1 символ", + "platformTextarea.counterMessageCharactersOverTheLimitPlural": "Превышен лимит на { count, plural, one {1 символ} few {# символа} other {# символов} }", + "platformTextarea.counterMessageCharactersRemainingSingular": "Остался 1 символ", + "platformTextarea.counterMessageCharactersRemainingPlural": "{ count, plural, one {Остался 1 символ} few {Осталось # символа} other {Осталось # символов} }", + "platformLink.roleDescriptionWithMedia": "Медиа: {media}", + "platformList.loadingAriaLabel": "загрузка", + "platformObjectListItem.detailsActionAriaLabel": "детали", + "platformObjectListItem.deleteActionAriaLabel": "удалить", + "platformStandardListItem.detailsActionAriaLabel": "детали", + "platformStandardListItem.deleteActionAriaLabel": "удалить", + "platformSearchField.clearButtonTitle": "Очистить", + "platformSearchField.submitButtonTitle": "Поиск", + "platformSearchField.searchInputLabel": "Поиск", + "platformSearchField.synchronizeButtonTitle": "Синхронизировать", + "platformSearchField.searchSuggestionMessage": "{count, plural, one {Найден 1 вариант} few {Найдено # варианта} other {Найдено # вариантов} }", + "platformSearchField.searchSuggestionNavigateMessage": "используйте стрелки вверх и вниз для навигации", + "platformSmartFilterBar.searchPlaceholder": "Поиск", + "platformSmartFilterBar.submitButtonLabel": "Перейти", + "platformSmartFilterBar.filtersButtonLabel": "Фильтры ({filtersCount})", + "platformSmartFilterBar.showFiltersButtonLabel": "Показать фильтры", + "platformSmartFilterBar.hideFiltersButtonLabel": "Скрыть фильтры", + "platformSmartFilterBar.defineConditionsRemoveConditionButtonTitle": "Удалить условие", + "platformSmartFilterBar.defineConditionsAddConditionButtonLabel": "Добавить условие", + "platformSmartFilterBar.defineConditionsSubmitButtonLabel": "Перейти", + "platformSmartFilterBar.defineConditionsCancelButton": "Отменить", + "platformSmartFilterBar.selectFiltersHeader": "Фильтры", + "platformSmartFilterBar.selectFiltersAvailableFiltersText": "Доступные фильтры", + "platformSmartFilterBar.selectFiltersFilterColumnLabel": "Фильтр", + "platformSmartFilterBar.selectFiltersActiveColumnLabel": "Активный", + "platformSmartFilterBar.selectFiltersSubmitButtonLabel": "Перейти", + "platformSmartFilterBar.selectFiltersCancelButton": "Отменить", + "platformSmartFilterBar.filterConditionContains": "содержит", + "platformSmartFilterBar.filterConditionEqualTo": "равно", + "platformSmartFilterBar.filterConditionBetween": "между", + "platformSmartFilterBar.filterConditionBeginsWith": "начинается с", + "platformSmartFilterBar.filterConditionEndsWith": "заканчивается", + "platformSmartFilterBar.filterConditionLessThan": "меньше чем", + "platformSmartFilterBar.filterConditionLessThanOrEqualTo": "меньше или равно", + "platformSmartFilterBar.filterConditionGreaterThan": "больше чем", + "platformSmartFilterBar.filterConditionGreaterThanOrEqualTo": "больше или равно", + "platformSmartFilterBar.filterConditionAfter": "после", + "platformSmartFilterBar.filterConditionOnOrAfter": "равно или после", + "platformSmartFilterBar.filterConditionBefore": "до", + "platformSmartFilterBar.filterConditionBeforeOrOn": "до или равно", + "platformSmartFilterBar.filterConditionValuePlaceholder": "значение", + "platformSmartFilterBar.filterConditionValueFromPlaceholder": "от", + "platformSmartFilterBar.filterConditionValueToPlaceholder": "до", + "platformSmartFilterBar.settingsCategoryAll": "Все", + "platformSmartFilterBar.settingsCategoryVisible": "Видимые", + "platformSmartFilterBar.settingsCategoryActive": "Активные", + "platformSmartFilterBar.settingsCategoryVisibleAndActive": "Видимые и активные", + "platformSmartFilterBar.settingsCategoryMandatory": "Обязательные", + "platformSmartFilterBar.manageFieldConditions": "Показать условия для поля", + "platformSmartFilterBar.refreshButtonAriaLabel": "Обновить", + "platformTable.headerMenuSortAsc": "Сортировать по возрастанию", + "platformTable.headerMenuSortDesc": "Сортировать по убыванию", + "platformTable.headerMenuGroup": "Сгруппировать", + "platformTable.headerMenuFreeze": "Заморозить", + "platformTable.headerMenuEndFreeze": "Freeze to End", + "platformTable.headerMenuUnfreeze": "Разморозить", + "platformTable.headerMenuFilter": "Фильтр", + "platformTable.defaultEmptyMessage": "Ничего не найдено", + "platformTable.emptyCell": "Пусто", + "platformTable.noVisibleColumnsMessage": "Сейчас в таблице нет видимых столбцов. Пожалуйста, выберите нужные столбцы в настройках таблицы.", + "platformTable.resetChangesButtonLabel": "Сбросить", + "platformTable.editableCellNumberPlaceholder": "Введите значение", + "platformTable.editableCellDatePlaceholder": "Введите значение", + "platformTable.editableCellStringPlaceholder": "Введите значение", + "platformTable.P13ColumnsDialogHeader": "Столбцы", + "platformTable.P13ColumnsDialogSearchPlaceholder": "Поиск", + "platformTable.P13ColumnsDialogsShowSelected": "Показать выбранное", + "platformTable.P13ColumnsDialogShowAll": "Показать все", + "platformTable.P13ColumnsDialogSelectAll": "Выбрать все ({selectedColumnsCount}/{selectableColumnsCount})", + "platformTable.P13ColumnsDialogConfirmationBtnLabel": "ОК", + "platformTable.P13ColumnsDialogCancelBtnLabel": "Отмена", + "platformTable.P13ColumnsDialogMoveToTopBtn": "Переместить вверх", + "platformTable.P13ColumnsDialogMoveUpBtn": "Переместить выше", + "platformTable.P13ColumnsDialogMoveDownBtn": "Переместить ниже", + "platformTable.P13ColumnsDialogMoveToBottomBtn": "Переместить вниз", + "platformTable.P13FilterStrategyLabelBetween": "между", + "platformTable.P13FilterStrategyLabelContains": "содержит", + "platformTable.P13FilterStrategyLabelBeginsWith": "начинается с", + "platformTable.P13FilterStrategyLabelEndsWith": "заканчивается на", + "platformTable.P13FilterStrategyLabelEqualTo": "равно", + "platformTable.P13FilterStrategyLabelGreaterThan": "больше чем", + "platformTable.P13FilterStrategyLabelGreaterThanOrEqualTo": "больше или равно", + "platformTable.P13FilterStrategyLabelLessThan": "меньше чем", + "platformTable.P13FilterStrategyLabelLessThanOrEqualTo": "меньше или равно", + "platformTable.P13FilterStrategyLabelAfter": "после", + "platformTable.P13FilterStrategyLabelOnOrAfter": "равно или после", + "platformTable.P13FilterStrategyLabelBefore": "до", + "platformTable.P13FilterStrategyLabelBeforeOrOn": "до или равно", + "platformTable.P13FilterStrategyLabelNotDefined": "Не определено", + "platformTable.P13FilterBooleanOptionNotDefined": " ", + "platformTable.P13FilterBooleanOptionTrue": "Да", + "platformTable.P13FilterBooleanOptionFalse": "Нет", + "platformTable.P13FilterDialogHeader": "Фильтровать по", + "platformTable.P13FilterDialogIncludePanelTitleWithCount": "Включающие условия ({count})", + "platformTable.P13FilterDialogIncludePanelTitleWithoutCount": "Включающие условия", + "platformTable.P13FilterDialogExcludePanelTitleWithCount": "Исключающие условия ({count})", + "platformTable.P13FilterDialogExcludePanelTitleWithoutCount": "Исключающие условия", + "platformTable.P13FilterDialogRemoveFilterBtnTitle": "Удалить фильтр", + "platformTable.P13FilterDialoAddFilterBtnTitle": "Добавить фильтр", + "platformTable.P13FilterDialogConfirmationBtnLabel": "ОК", + "platformTable.P13FilterDialogCancelBtnLabel": "Отмена", + "platformTable.P13GroupDialogHeader": "Группировка", + "platformTable.P13GroupDialogNoneSelectedColumnSelectPlaceholder": "(нету)", + "platformTable.P13GroupDialogShowFieldAsColumnCheckboxLabel": "Показать поле как столбец", + "platformTable.P13GroupDialogRemoveGroupBtnTitle": "Удалить", + "platformTable.P13GroupDialogAddNewGroupBtnTitle": "Добавить", + "platformTable.P13GroupDialogConfirmationBtnLabel": "ОК", + "platformTable.P13GroupDialogCancelBtnLabel": "Отмена", + "platformTable.P13SortDialogHeader": "Сортировка", + "platformTable.P13SortDialogNoneSelectedColumn": "(нету)", + "platformTable.P13SortDialogNoneSelectedSorting": "(нету)", + "platformTable.P13SortDialogSortOrderSelectOptionAsc": "По возрастанию", + "platformTable.P13SortDialogSortOrderSelectOptionDesc": "По убыванию", + "platformTable.P13SortDialogRemoveSortBtnTitle": "Удалить", + "platformTable.P13SortDialogAddNewSortBtnTitle": "Добавить", + "platformTable.P13SortDialogConfirmationBtnLabel": "ОК", + "platformTable.P13SortDialogCancelBtnLabel": "Отмена", + "platformTable.toolbarSearchPlaceholder": "Поиск", + "platformTable.toolbarActionCreateButtonLabel": "Создать", + "platformTable.toolbarActionSaveButtonLabel": "Сохранить", + "platformTable.toolbarActionCancelButtonLabel": "Отменить", + "platformTable.toolbarActionSortButtonTitle": "Сортировать", + "platformTable.toolbarActionFilterButtonTitle": "Фильтр", + "platformTable.toolbarActionGroupButtonTitle": "Группировка", + "platformTable.toolbarActionColumnsButtonTitle": "Столбцы", + "platformTable.toolbarActionExpandAllButtonTitle": "Expand all", + "platformTable.toolbarActionCollapseAllButtonTitle": "Collapse all", + "platformTable.filterDialogNotFilteredLabel": "(Не отфильтровано)", + "platformTable.filterDialogFilterByLabel": "Фильтр: {filterLabel}", + "platformTable.filterDialogFilterTitle": "Фильтр", + "platformTable.filterDialogFilterBy": "Фильтровать по", + "platformTable.filterDialogConfirmBtnLabel": "ОК", + "platformTable.filterDialogCancelBtnLabel": "Отменить", + "platformTable.groupDialogHeader": "Группировка", + "platformTable.groupDialogGroupOrderHeader": "Порядок группировки", + "platformTable.groupDialogGroupOrderAsc": "По возрастанию", + "platformTable.groupDialogGroupOrderDesc": "По убыванию", + "platformTable.groupDialogGroupByHeader": "Группировать по", + "platformTable.groupDialogNotGroupedLabel": "(Не сгруппировано)", + "platformTable.groupDialogConfirmBtnLabel": "ОК", + "platformTable.groupDialogCancelBtnLabel": "Отменить", + "platformTable.sortDialogHeader": "Сортировать", + "platformTable.sortDialogSortOrderHeader": "Порядок сортировки", + "platformTable.sortDialogSortOrderAsc": "По росту", + "platformTable.sortDialogSortOrderDesc": "по убыванию", + "platformTable.sortDialogSortByHeader": "Сортировать по", + "platformTable.sortDialogNotSortedLabel": "(Не отсортировано)", + "platformTable.sortDialogConfirmBtnLabel": "ОК", + "platformTable.sortDialogCancelBtnLabel": "Отменить", + "platformTable.selectAllCheckboxLabel": "Select all", + "platformTable.deselectAllCheckboxLabel": "Deselect all", + "platformTable.deselectSingleRow": "To deselect row, press SPACEBAR", + "platformTable.selectSingleRow": "To select row, press SPACEBAR", + "platformTable.deselectSingleRowTitle": "Click to deselect", + "platformTable.selectSingleRowTitle": "Click to select", + "platformThumbnail.detailsGotoPreviousButtonTitle": "Перейти к предыдущему", + "platformThumbnail.detailsGotoNextButtonTitle": "Перейти к следующему", + "platformThumbnail.detailsDialogCloseBtnLabel": "Закрыть", + "platformThumbnail.roleDescription": "Изображение", + "platformUploadCollection.moveToTitle": "Переместить в", + "platformUploadCollection.moveToTitleFolder": "Папка", + "platformUploadCollection.moveToNewFolderBtnLabel": "Новая папка", + "platformUploadCollection.moveToAllFilesSubHeaderLabel": "Все файлы", + "platformUploadCollection.moveToConfirmBtn": "Переместить", + "platformUploadCollection.moveToCloseBtn": "Отменить", + "platformUploadCollection.newFolderTitle": "Новая папка", + "platformUploadCollection.newFolderAtRootInputLabel": "Название новой папки", + "platformUploadCollection.newFolderAtFolderInputLabel": "Название новой папки внутри {folderName }", + "platformUploadCollection.newFolderInputPlaceholder": "Введите имя..", + "platformUploadCollection.newFolderInputErrorLabel": "Максимально разрешено { count, plural, one {1 символ} few {# символа} other {# символов} }", + "platformUploadCollection.newFolderDialogCreateBtnLabel": "Создать", + "platformUploadCollection.newFolderDialogCancelBtnLabel": "Отменить", + "platformUploadCollection.breadcrumbLabelAllFiles": "Все файлы", + "platformUploadCollection.breadcrumbLabelAllFilesWithTotal": "Все файлы ({total})", + "platformUploadCollection.searchPlaceholder": "Поиск", + "platformUploadCollection.addBtnLabel": "Добавить", + "platformUploadCollection.newFolderBtnLabel": "Новая папка", + "platformUploadCollection.moveToBtnLabel": "Переместить в", + "platformUploadCollection.downloadBtnLabel": "Загрузить", + "platformUploadCollection.updateVersionBtnLabel": "Обновить версию", + "platformUploadCollection.removeBtnLabel": "Удалить", + "platformUploadCollection.folderIconTitle": "Значок папки", + "platformUploadCollection.fileIconTitle": "Значок файла", + "platformUploadCollection.editFileNameInputPlaceholder": "Введите название", + "platformUploadCollection.editFileNameFileAlreadyExistsError": "Файл с таким названием уже существует", + "platformUploadCollection.editFileNameFolderAlreadyExistsError": "Папка с таким именем уже существует", + "platformUploadCollection.itemStatusSuccessful": "Успешно", + "platformUploadCollection.itemStatusUnsuccessful": "Неудачно", + "platformUploadCollection.uploadNewFileAfterFailAction": "Выполнить", + "platformUploadCollection.cancelUploadNewFileAction": "Отменить", + "platformUploadCollection.itemMenuBtnTitle": "Больше", + "platformUploadCollection.dragDropAreaText": "Перетащите файлы для загрузки", + "platformUploadCollection.noDataText": "Файлы не найдены", + "platformUploadCollection.noDataDescription": "Перетащите файлы для загрузки или воспользуйтесь кнопкой «Добавить».", + "platformUploadCollection.paginationTotal": "Показано {from}-{to} из {total}", + "platformUploadCollection.resultsPerPage": "Результаты на странице", + "platformUploadCollection.messageCreateFailed": "Не удалось создать {folderName}.", + "platformUploadCollection.messageCreateSuccess": "{folderName} успешно создано.", + "platformUploadCollection.messageUpdateVersionFailed": "Не удалось обновить версию {folderName}.", + "platformUploadCollection.messageUpdateVersionSuccess": "Версия {folderName} обновлена.", + "platformUploadCollection.messageFileRenameFailed": "Не удалось переименовать \"{from}\" в \"{to}.\"", + "platformUploadCollection.messageFileRenameSuccess": "{from}\" переименовано в \"{to}\".", + "platformUploadCollection.folderNamePluralization": "{ foldersCount, plural, one {1 папку} few {# папки} other {# папок} }", + "platformUploadCollection.fileNamePluralization": "{ filesCount, plural, one {1 файл} few {# файла} other {# файлов} }", + "platformUploadCollection.messageRemoveFoldersAndFilesFailed": "Не удалось удалить {@@platformUploadCollection.folderNamePluralization} и {@@platformUploadCollection.fileNamePluralization}.", + "platformUploadCollection.messageRemoveFoldersAndFilesSuccess": "{@@platformUploadCollection.folderNamePluralization} и {@@platformUploadCollection.fileNamePluralization} удалено.", + "platformUploadCollection.messageRemoveFoldersFailed": "Не удалось удалить {@@platformUploadCollection.folderNamePluralization}.", + "platformUploadCollection.messageRemoveFoldersSuccess": "Удалено {@@platformUploadCollection.folderNamePluralization}.", + "platformUploadCollection.messageRemoveFilesFailed": "Не удалось удалить файлы {filesCount}.", + "platformUploadCollection.messageRemoveFilesSuccess": "Удалено {@@platformUploadCollection.fileNamePluralization}.", + "platformUploadCollection.messageRemoveFileOrFolderFailed": "Не удалось удалить {name}.", + "platformUploadCollection.messageRemoveFileOrFolderSuccess": "{name} удалено.", + "platformUploadCollection.messageMoveFoldersAndFilesFailed": "Не удалось переместить {@@platformUploadCollection.folderNamePluralization} и {@@platformUploadCollection.fileNamePluralization} в {to}.", + "platformUploadCollection.messageMoveFoldersAndFilesSuccess": "{@@platformUploadCollection.folderNamePluralization} и {@@platformUploadCollection.fileNamePluralization} перемещены в {to}.", + "platformUploadCollection.messageMoveFoldersFailed": "Не удалось переместить {@@platformUploadCollection.folderNamePluralization} в {to}.", + "platformUploadCollection.messageMoveFoldersSuccess": "{@@platformUploadCollection.folderNamePluralization} перемещен в {to}.", + "platformUploadCollection.messageMoveFilesFailed": "Не удалось переместить {@@platformUploadCollection.fileNamePluralization} в {to}.", + "platformUploadCollection.messageMoveFilesSuccess": "{@@platformUploadCollection.fileNamePluralization} перемещен в {to}.", + "platformUploadCollection.messageMoveFileOrFolderFailed": "Не удалось переместить {name} в {to}.", + "platformUploadCollection.messageMoveFileOrFolderSuccess": "{name} перемещен в {to}.", + "platformUploadCollection.messageMoveRootFoldersAndFilesFailed": "Не удалось переместить {@@platformUploadCollection.folderNamePluralization} и {@@platformUploadCollection.fileNamePluralization} во все файлы.", + "platformUploadCollection.messageMoveRootFoldersAndFilesSuccess": "{@@platformUploadCollection.folderNamePluralization} и {@@platformUploadCollection.fileNamePluralization} перемещены ко всем файлам.", + "platformUploadCollection.messageMoveRootFoldersFailed": "Не удалось переместить {@@platformUploadCollection.folderNamePluralization} во все файлы.", + "platformUploadCollection.messageMoveRootFoldersSuccess": "{@@platformUploadCollection.folderNamePluralization} перемещен ко всем файлам.", + "platformUploadCollection.messageMoveRootFilesFailed": "Не удалось переместить {@@platformUploadCollection.fileNamePluralization} во все файлы.", + "platformUploadCollection.messageMoveRootFilesSuccess": "{@@platformUploadCollection.fileNamePluralization} перемещены ко всем файлам.", + "platformUploadCollection.messageMoveRootFileOrFolderFailed": "Не удалось переместить {name} во все файлы.", + "platformUploadCollection.messageMoveRootFileOrFolderSuccess": "{name} перемещен ко всем файлам.", + "platformUploadCollection.messageFileTypeMismatchPlural": "{ filesCount, plural, one {1 файл} few {# файла} other {# файлов} } неправильный тип. Разрешенные типы: {allowedTypes}.", + "platformUploadCollection.messageFileTypeMismatchSingular": "Файл \"{fileName}\" имеет неправильный тип. Разрешенные типы: {allowedTypes}.", + "platformUploadCollection.messageFileSizeExceededPlural": "{ filesCount, plural, one {1 файл превышает} few {# файла превышают} other {# файлов превышают} } максимальный размер файла. Разрешен максимальный размер файла: {maxFileSize}.", + "platformUploadCollection.messageFileSizeExceededSingular": "Файл \"{fileName}\" превышает максимальный размер файла. Разрешен максимальный размер файла: {maxFileSize}.", + "platformUploadCollection.messageFileNameLengthExceededPlural": "{ filesCount, plural, one {1 файл превысил} few {# файла превысили} other {# файлов превысили} } максимальную длину имени файла. Разрешена длина имени файла: {maxFilenameLength} символов.", + "platformUploadCollection.messageFileNameLengthExceededSingular": "Имя \"{fileName}\" превышает максимальную длину имени файла. Разрешена длина имени файла: {maxFilenameLength} символов.", + "platformWizardGenerator.summarySectionEditStep": "Редактировать", + "platformMessagePopover.allErrors": "Все", + "platformMessagePopover.defaultErrors.email": "Значение поля не соответствует формату E-mail", + "platformMessagePopover.defaultErrors.max": "Значение поля превышает максимально допустимое", + "platformMessagePopover.defaultErrors.maxLength": "Длина значения поля превышает максимально допустимое", + "platformMessagePopover.defaultErrors.min": "Значение поля меньше минимально допустимого", + "platformMessagePopover.defaultErrors.minLength": "Длина значения поля меньше максимально допустимого", + "platformMessagePopover.defaultErrors.pattern": "Поле не соответствует формату", + "platformMessagePopover.defaultErrors.required": "Обязательное поле", + "platformMessagePopover.defaultErrors.requiredTrue": "Обязательное поле", + "platformVariantManagement.manage": "Управление", + "platformVariantManagement.saveAs": "Сохранить как", + "platformVariantManagement.saveView": "Сохранить Вид", + "platformVariantManagement.save": "Сохранить", + "platformVariantManagement.myViews": "Мои Виды", + "platformVariantManagement.view": "Вид", + "platformVariantManagement.setAsDefault": "Установить по умолчанию", + "platformVariantManagement.public": "Публичный", + "platformVariantManagement.applyAutomatically": "Применять автоматически", + "platformVariantManagement.requiredFieldError": "Обязательное поле.", + "platformVariantManagement.nameTakenFieldError": "Вид с таким именем уже существует. Введите другое имя.", + "platformVariantManagement.cancel": "Отменить", + "platformVariantManagement.manageViews": "Управление видами", + "platformVariantManagement.markAsFavourite": "Отметить как избранное", + "platformVariantManagement.sharing": "Совместное использование", + "platformVariantManagement.default": "По умолчанию", + "platformVariantManagement.createdBy": "Создал(а)", + "platformVariantManagement.removeVariant": "Удалить вид", + "platformVariantManagement.search": "Поиск", + "platformVariantManagement.access.public": "Публичное", + "platformVariantManagement.access.private": "Приватное", + "platformSelect.selectOptionLabel": "Выберите вариант", + "fnSlider.minMaxDetails": "Минимальное значение слайдера {min}, максимальное значение {max}", + "fnSlider.valueminDetails": "Значение равно {value}", + "fnSlider.valuemaxDetails": "Значение равно {value}", + "fnSlider.valueNowDetails": "Текущее значение: {value}", + "fnSwitch.semanticAcceptLabel": "Принять", + "fnSwitch.semanticDeclineLabel": "Отклонить", + "coreTree.expand": "Развернуть узел", + "coreTree.collapse": "Свернуть узел", + "coreTree.noData": "Нет данных" +} diff --git a/libs/i18n/src/lib/translations/translations_sq-AL.json b/libs/i18n/src/lib/translations/translations_sq-AL.json new file mode 100644 index 00000000000..ce282e236b9 --- /dev/null +++ b/libs/i18n/src/lib/translations/translations_sq-AL.json @@ -0,0 +1,503 @@ +{ + "coreMultiComboBox.selectAllLabel": "Selekto të gjitha ({selectedItems} nga {totalItems})", + "coreCarousel.leftNavigationBtnLabel": "Shko te artikulli i mëparshëm", + "coreCarousel.rightNavigationBtnLabel": "Shko te artikulli tjetër", + "coreDatePicker.dateInputLabel": "Hyrja e datës", + "coreDatePicker.dateRangeInputLabel": "Hyrja e diapazonit të datave", + "coreDatePicker.displayCalendarToggleLabel": "Hap zgjedhës", + "coreDatePicker.valueStateSuccessMessage": "Suksesi i gjendjes së vlerës", + "coreDatePicker.valueStateInformationMessage": "Informacioni i gjendjes së vlerës", + "coreDatePicker.valueStateWarningMessage": "Paralajmërimi i gjendjes së vlerës", + "coreDatePicker.valueStateErrorMessage": "Gabim i gjendjes së vlerës", + "coreDatetimePicker.datetimeInputLabel": "Hyrja e datës", + "coreDatetimePicker.displayDatetimeToggleLabel": "Shfaq ndryshimin e kalendarit", + "coreDatetimePicker.displayTypeDateLabel": "Data", + "coreDatetimePicker.displayTypeTimeLabel": "Koha", + "coreDatetimePicker.datetimeOkLabel": "Ok", + "coreDatetimePicker.datetimeCancelLabel": "Anulo", + "coreFeedListItem.moreLabel": "Më shumë", + "coreFeedListItem.lessLabel": "Më pak", + "coreGridList.filterBarCancelButtonTitle": "Anulo", + "coreGridList.listItemStatusAriaLabel": "Artikulli ka status. Statusi: {status}.", + "coreGridList.listItemCounterAriaLabel": "Artikulli ka {count} nënartikuj.", + "coreGridList.listItemButtonDetailsTitle": "Detaje", + "coreGridList.listItemButtonDeleteTitle": "Fshi", + "coreGridList.listItemStatusContainsErrors": "Përmban gabime.", + "coreGridList.listItemStatusLocked": "I kyçur", + "coreGridList.listItemStatusDraft": "Draft", + "coreMessageStrip.dismissLabel": "Largoje", + "coreMultiInput.multiInputAriaLabel": "Multi Value Input", + "coreMultiInput.tokensCountText": "Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.", + "coreNavigation.mainNavigation": "Main Navigation", + "coreNavigation.navigationPath": "Navigation Path", + "coreNestedList.linkItemAriaLabel": "Artikulli i pemës {itemDetails}, {index} nga {total}{selectedDescription}", + "coreOverflowLayout.moreItemsButton": "{count} artikuj { count, plural, one {më shumë} other {të tjerë} }", + "corePagination.pageLabel": "Faqja {pageNumber}", + "corePagination.currentPageAriaLabel": "Faqja {pageNumber} është faqja aktuale", + "corePagination.labelBeforeInputMobile": "Faqja:", + "corePagination.labelAfterInputMobile": "nga {totalCount}", + "corePagination.inputAriaLabel": "Hyrja e faqes, Faqja aktuale, Faqja {pageNumber} nga {TotalCount}", + "corePagination.itemsPerPageLabel": "Rezultatet për faqe:", + "corePagination.firstLabel": "Së pari", + "corePagination.previousLabel": "E mëparshme", + "corePagination.nextLabel": "Tjetër", + "corePagination.lastLabel": "E fundit", + "corePagination.ariaLabel": "Faqimi", + "corePagination.totalResultsLabel": "{totalCount} Rezultate", + "coreProductSwitch.ariaLabel": "Ndërprerësi i produktit", + "coreShellbar.collapsedItemMenuLabel": "Menyja e artikullit të palosur", + "coreShellbar.cancel": "Cancel", + "coreShellbar.search": "Search", + "coreSlider.singleMinMaxDetails": "Vlera minimale e rrëshqitësit është {min}, vlera maksimale është {max}", + "coreSlider.singleValueminDetails": "Vlera është {value}", + "coreSlider.singleValuemaxDetails": "Vlera është {value}", + "coreSlider.singleValueNowDetails": "Vlera aktuale është {value}", + "coreSlider.multipleHandle1MinMaxDetails": "Vlera minimale e rrëshqitësit është {min}, vlera maksimale është {max}", + "coreSlider.multipleHandle1ValueminDetails": "Vlera është {value}", + "coreSlider.multipleHandle1ValuemaxDetails": "Vlera është {value}", + "coreSlider.multipleHandle1ValueNowDetails": "Vlera aktuale është{value}", + "coreSlider.multipleHandle2MinMaxDetails": "Vlera minimale e rrëshqitësit është {min}, vlera maksimale është{max}", + "coreSlider.multipleHandle2ValueminDetails": "Vlera është {value}", + "coreSlider.multipleHandle2ValuemaxDetails": "Vlera është {value}", + "coreSlider.multipleHandle2ValueNowDetails": "Vlera aktuale është {value}", + "coreSplitButton.expandButtonAriaLabel": "Më shumë veprime", + "coreSplitButton.arialLabel": "Butoni i ndarjes", + "coreSplitter.paginationItemAriaLabel": "Seksioni", + "coreStepInput.incrementButtonTitle": "Rritje", + "coreStepInput.decrementButtonTitle": "Zvogëlimi", + "coreStepInput.ariaRoleDescription": "Hyrja në hap", + "coreSwitch.semanticAcceptLabel": "Pranoje", + "coreSwitch.semanticDeclineLabel": "Rënia", + "coreTabs.tabListExpandButtonText": "Më shumë", + "coreText.moreLabel": "Më shumë", + "coreText.lessLabel": "Më pak", + "coreTime.componentAriaName": "Zgjedhësi i kohës", + "coreTime.increaseHoursLabel": "Rritja e orëve", + "coreTime.hoursLabel": "Hrs", + "coreTime.decreaseHoursLabel": "Ul oraret", + "coreTime.increaseMinutesLabel": "Rritja e minutave", + "coreTime.minutesLabel": "Min", + "coreTime.decreaseMinutesLabel": "Zvogëlo minutat", + "coreTime.increaseSecondsLabel": "Rritja e sekondave", + "coreTime.secondsLabel": "Sec", + "coreTime.decreaseSecondsLabel": "Ul sekonda", + "coreTime.increasePeriodLabel": "Rritja e periudhës", + "coreTime.periodLabel": "Periudha", + "coreTime.decreasePeriodLabel": "Periudha e zvogëlimit", + "coreTime.navigationInstruction": "Për të lëvizur midis artikujve në këtë listë, shtypni shigjetën lart ose shigjetën e poshtme. Për të kaluar midis listave, shtypni shigjetën majtas ose shigjetën djathtas.", + "coreTimePicker.timePickerInputLabel": "Hyrja e zgjedhësit të kohës", + "coreTimePicker.timePickerButtonLabel": "Zgjedhësi i hapur", + "coreToken.deleteButtonLabel": "E fshishme", + "coreToken.ariaRoleDescription": "shenjë", + "coreTokenizer.moreLabel": "{count} artikuj { count, plural, one {më shumë} other {të tjerë} }", + "coreUploadCollection.menuOkText": "Ok", + "coreUploadCollection.menuCancelText": "Anulo", + "coreUploadCollection.menuEditAriaLabel": "Ndrysho", + "coreUploadCollection.menuDeleteAriaLabel": "Fshi", + "coreUploadCollection.menuOkAriaLabel": "Ndrysho", + "coreUploadCollection.menuCancelAriaLabel": "Anulo", + "coreUploadCollection.formItemPlaceholder": "Emri i skedarit", + "coreWizard.ariaLabel": "Magjistar", + "coreBreadcrumb.overflowTitleMore": "Më shumë", + "platformActionBar.backButtonLabel": "Kthehu mbrapa", + "platformApprovalFlow.defaultWatchersLabel": "Vrojtuesit", + "platformApprovalFlow.defaultTitle": "Procesi i aprovimit", + "platformApprovalFlow.nextButtonAriaLabel": "Shko te skedari tjetër", + "platformApprovalFlow.prevButtonAriaLabel": "Shko te skedari i mëparshëm", + "platformApprovalFlow.editModeSaveButtonLabel": "Ruaj", + "platformApprovalFlow.editModeExitButtonLabel": "Dalje", + "platformApprovalFlow.emptyTitle": "Shto miratues dhe vëzhgues", + "platformApprovalFlow.emptyHint": "Për të shtuar miratues, kliko në \"Shto një hap\". Për të shtuar vëzhgues, kliko në fushën e Vëzhguesit.", + "platformApprovalFlow.addNodeDialogHeaderAddApprovers": "Shto miratues", + "platformApprovalFlow.addNodeDialogHeaderEditApprover": "Redakto miratuesin", + "platformApprovalFlow.addNodeDialogHeaderAddApproverTeam": "Përdorues/Skuadër", + "platformApprovalFlow.addNodeDialogHeaderDetail": "Detaje", + "platformApprovalFlow.addNodeDialogNodeType": "Paralel ose në seri", + "platformApprovalFlow.addNodeDialogNodeTypeSerial": "Seria", + "platformApprovalFlow.addNodeDialogNodeTypeParallel": "Paralel", + "platformApprovalFlow.addNodeDialogApproverType": "Lloji miratues", + "platformApprovalFlow.addNodeDialogApproverTypeUser": "Përdorues", + "platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone": "Kushdo në skuadër", + "platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone": "Të gjithë në skuadër", + "platformApprovalFlow.addNodeDialogUserOrTeam": "Përdorues/Skuadër", + "platformApprovalFlow.addNodeDialogAddToNext": "Shto në nyjen serike tjetër", + "platformApprovalFlow.addNodeDialogDueDate": "Afati kohor deri në", + "platformApprovalFlow.addNodeSearchPlaceholder": "Kërko", + "platformApprovalFlow.addNodeAddActionBtnLabel": "Shto", + "platformApprovalFlow.addNodeCancelActionBtnLabel": "Anulo", + "platformApprovalFlow.addNodeSelectApproverActionBtnLabel": "Selekto", + "platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel": "Anulo", + "platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel": "Mbyll", + "platformApprovalFlow.userDetailsHeader": "Detaje", + "platformApprovalFlow.userDetailsSendReminderBtnLabel": "Dërgo lajmërim", + "platformApprovalFlow.userDetailsCancelBtnLabel": "Anulo", + "platformApprovalFlow.messagesApproverAddedSuccess": "1 miratues është shtuar", + "platformApprovalFlow.messagesTeamAddedSuccess": "1 skuadër është shtuar", + "platformApprovalFlow.messagesNodeEdited": "1 miratues është shtuar", + "platformApprovalFlow.messagesNodeRemovedSingular": "1 miratues është hequr", + "platformApprovalFlow.messagesNodeRemovedPlural": "Aprovuesit janë hequr", + "platformApprovalFlow.messagesTeamRemoved": "1 skuadër është hequr", + "platformApprovalFlow.messagesErrorBuildGraph": "Pati një gabim gjatë përpjekjes për të ndërtuar grafikun. Kontrolloni të dhënat fillestare.", + "platformApprovalFlow.messagesUndoAction": "Zhbëj", + "platformApprovalFlow.nodeMembersCount": "{count} anëtarë", + "platformApprovalFlow.nodeVariousTeams": "Skuadra të ndryshme", + "platformApprovalFlow.nodeStatusDueToday": "Afati kohor është sot", + "platformApprovalFlow.nodeStatusDueInXDays": " Afati kohor në {count} ditë", + "platformApprovalFlow.nodeStatusXDaysOverdue": "{count} ditë me vonesë", + "platformApprovalFlow.nodeActionAddApproversBefore": "Shto miratues më parë", + "platformApprovalFlow.nodeActionAddApproversAfter": "Shto miratues më pas", + "platformApprovalFlow.nodeActionAddApproversParallel": "Shto miratues paralel", + "platformApprovalFlow.nodeActionEditApprover": "Redakto miratuesin", + "platformApprovalFlow.nodeActionRemove": "Fshi", + "platformApprovalFlow.selectTypeDialogMoveApproverAs": "Zhvendos miratuesin si", + "platformApprovalFlow.selectTypeDialogParallelOrSerial": "Paralel ose në seri", + "platformApprovalFlow.selectTypeDialogNodeTypeParallel": "Aprovues paralel", + "platformApprovalFlow.selectTypeDialogNodeTypeSerial": "Aprovues serial", + "platformApprovalFlow.selectTypeDialogConfirmButton": "Konfirmo", + "platformApprovalFlow.selectTypeDialogCancelButton": "Anulo", + "platformApprovalFlow.toolbarAddStepButton": "Shto një hap", + "platformApprovalFlow.toolbarEditButton": "Redakto", + "platformApprovalFlow.toolbarAddApproversBefore": "Shto miratues më parë", + "platformApprovalFlow.toolbarAddApproversAfter": "Shto miratues më pas", + "platformApprovalFlow.toolbarAddApproversParallel": "Shto miratues paralelë", + "platformApprovalFlow.toolbarRemove": "Fshi", + "platformApprovalFlow.toolbarEditApprover": "Redakto miratuesin", + "platformApprovalFlow.watchersInputPlaceholder": "Kërko këtu..", + "platformApprovalFlow.userListSelectedItemsCountSingular": "1 artikull i zgjedhur", + "platformApprovalFlow.userListSelectedItemsCountPlural": "{count} artikujt të zgjedhur", + "platformApprovalFlow.statusApproved": "approved", + "platformApprovalFlow.statusRejected": "rejected", + "platformApprovalFlow.statusInProgress": "in progress", + "platformApprovalFlow.statusNotStarted": "not started", + "platformFeedInput.userTitle": "Përdoruesi", + "platformVHD.selectionBarLabel": "Artikujt e zgjedhur dhe të gjendjes", + "platformVHD.selectedAndConditionLabel": "Artikujt e zgjedhur dhe të gjendjes", + "platformVHD.footerClearSelectedTitle": "pastro artikujt e zgjedhur", + "platformVHD.footerClearSelectedAriaLabel": "pastro artikujt e zgjedhur", + "platformVHD.searchButtonLabel": "Shko", + "platformVHD.successButtonLabel": "OK", + "platformVHD.cancelButtonLabel": "Anulo", + "platformVHD.selectedEmptyLabel": "Asnjë Artikull ose Kusht i zgjedhur", + "platformVHD.searchPlaceholder": "Kërko", + "platformVHD.searchAdvancedSearchLabel": "Filtrat", + "platformVHD.searchShowAdvancedSearchLabel": "Shfaq filtrat", + "platformVHD.searchHideAdvancedSearchLabel": "Fshih filtrat", + "platformVHD.searchShowAllAdvancedSearchLabel": "Shfaq të gjithë filtrat", + "platformVHD.searchHideAllAdvancedSearchLabel": "Fshih të gjithë filtrat", + "platformVHD.selectTabDisplayCountLabel": "Artikujt ({count})", + "platformVHD.selectTabMoreBtnLabel": "Më shumë", + "platformVHD.selectTabCountHiddenA11yLabel": "përmban {rowCount} rreshta dhe {colCount} kolona", + "platformVHD.selectMobileTabBackBtnTitle": "Pas", + "platformVHD.selectMobileTabBtnOpenDialogLabel": "Hap dialogun", + "platformVHD.selectMobileTabTitle": "{title} skeda", + "platformVHD.selectMobileConditionEmpty": "Bosh", + "platformVHD.defineConditionTitle": "Produkt", + "platformVHD.defineConditionSelectedValueHiddenA11yLabel": "vlera e zgjedhur {value}", + "platformVHD.defineConditionConditionsGroupHeaderInclude": "Përfshij", + "platformVHD.defineConditionConditionsGroupHeaderExclude": "Përjashto", + "platformVHD.defineConditionFromPlaceholder": "nga", + "platformVHD.defineConditionToPlaceholder": "në", + "platformVHD.defineConditionValuePlaceholder": "vlera", + "platformVHD.defineConditionRemoveConditionButtonTitle": "Hiq kushtin", + "platformVHD.defineConditionAddConditionButtonLabel": "Shto", + "platformVHD.defineConditionAddConditionButtonTitle": "Shto kushtin", + "platformVHD.defineConditionConditionStrategyLabelContains": "përmban", + "platformVHD.defineConditionConditionStrategyLabelEqualTo": "e barabartë me", + "platformVHD.defineConditionConditionStrategyLabelBetween": "ndërmjet", + "platformVHD.defineConditionConditionStrategyLabelStartsWith": "fillon me", + "platformVHD.defineConditionConditionStrategyLabelEndsWith": "mbaron me", + "platformVHD.defineConditionConditionStrategyLabelLessThan": "më pak se", + "platformVHD.defineConditionConditionStrategyLabelLessThanEqual": "më pak se e barabartë", + "platformVHD.defineConditionConditionStrategyLabelGreaterThan": "më i madh se", + "platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual": "më i madh ose i barabartë", + "platformVHD.defineConditionConditionStrategyLabelEmpty": "bosh", + "platformVHD.defineConditionConditionStrategyLabelNotEqualTo": "jo e barabartë me", + "platformVHD.defineConditionConditionStrategyLabelNotEmpty": "jo bosh", + "platformVHD.defineConditionMaxCountError": "Shto një vlerë me jo më shumë se {count} karaktere.", + "platformVHD.selectTabTitle": "Zgjidh nga lista", + "platformVHD.searchTableEmptyMessage": "Përdor kërkimin për të marrë rezultate", + "platformVHD.defineTabTitle": "Përcaktoni kushtet", + "platformCombobox.countListResultsSingular": "1 artikull i listës së rezultateve", + "platformCombobox.countListResultsPlural": "{count} artikujt e listës së rezultateve", + "platformMultiCombobox.inputGlyphAriaLabel": "Zgjidhni Opsionet", + "platformMultiCombobox.inputIconTitle": "Zgjidhni Opsionet", + "platformMultiCombobox.mobileShowAllItemsButton": "Shfaq të gjithë artikujt", + "platformMultiCombobox.mobileShowSelectedItemsButton": "Shfaq artikujt e zgjedhur", + "platformTextarea.counterMessageCharactersOverTheLimitSingular": "1 karakter mbi limitin ", + "platformTextarea.counterMessageCharactersOverTheLimitPlural": "{count} karaktere mbi limitin", + "platformTextarea.counterMessageCharactersRemainingSingular": "1 karakter i mbetur", + "platformTextarea.counterMessageCharactersRemainingPlural": "{count} karaktere të mbetur", + "platformLink.roleDescriptionWithMedia": "Media: {media}", + "platformList.loadingAriaLabel": "duke u ngarkuar", + "platformObjectListItem.detailsActionAriaLabel": "detaje", + "platformObjectListItem.deleteActionAriaLabel": "fshi", + "platformStandardListItem.detailsActionAriaLabel": "detaje", + "platformStandardListItem.deleteActionAriaLabel": "fshi", + "platformSearchField.clearButtonTitle": "Pastro", + "platformSearchField.submitButtonTitle": "Kërko", + "platformSearchField.searchInputLabel": "Kërko", + "platformSearchField.synchronizeButtonTitle": "Sinkronizo", + "platformSearchField.searchSuggestionMessage": "{count} sugjerime u gjetën.", + "platformSearchField.searchSuggestionNavigateMessage": "përdor shigjetat lart e poshtë për të lundruar", + "platformSmartFilterBar.searchPlaceholder": "Kërko", + "platformSmartFilterBar.submitButtonLabel": "Shko", + "platformSmartFilterBar.filtersButtonLabel": "Filtrat ({filtersCount})", + "platformSmartFilterBar.showFiltersButtonLabel": "Shfaq filtrat", + "platformSmartFilterBar.hideFiltersButtonLabel": "Fshih filtrat", + "platformSmartFilterBar.defineConditionsRemoveConditionButtonTitle": "Hiq kushtin", + "platformSmartFilterBar.defineConditionsAddConditionButtonLabel": "Shto kushtin", + "platformSmartFilterBar.defineConditionsSubmitButtonLabel": "Shko", + "platformSmartFilterBar.defineConditionsCancelButton": "Anulo", + "platformSmartFilterBar.selectFiltersHeader": "Filtrat", + "platformSmartFilterBar.selectFiltersAvailableFiltersText": "Filtrat e disponueshëm", + "platformSmartFilterBar.selectFiltersFilterColumnLabel": "Filtri", + "platformSmartFilterBar.selectFiltersActiveColumnLabel": "Aktive", + "platformSmartFilterBar.selectFiltersSubmitButtonLabel": "Shko", + "platformSmartFilterBar.selectFiltersCancelButton": "Anulo", + "platformSmartFilterBar.filterConditionContains": "përmban", + "platformSmartFilterBar.filterConditionEqualTo": "e barabartë me", + "platformSmartFilterBar.filterConditionBetween": "ndërmjet", + "platformSmartFilterBar.filterConditionBeginsWith": "fillon me", + "platformSmartFilterBar.filterConditionEndsWith": "mbaron me", + "platformSmartFilterBar.filterConditionLessThan": "më pak se", + "platformSmartFilterBar.filterConditionLessThanOrEqualTo": "më pak se ose e barabartë me", + "platformSmartFilterBar.filterConditionGreaterThan": "më e madhe se", + "platformSmartFilterBar.filterConditionGreaterThanOrEqualTo": "më e madhe se ose e barabartë me", + "platformSmartFilterBar.filterConditionAfter": "pas", + "platformSmartFilterBar.filterConditionOnOrAfter": "në ose pas", + "platformSmartFilterBar.filterConditionBefore": "para", + "platformSmartFilterBar.filterConditionBeforeOrOn": "para ose në", + "platformSmartFilterBar.filterConditionValuePlaceholder": "vlera", + "platformSmartFilterBar.filterConditionValueFromPlaceholder": "nga", + "platformSmartFilterBar.filterConditionValueToPlaceholder": "për", + "platformSmartFilterBar.settingsCategoryAll": "Të gjitha", + "platformSmartFilterBar.settingsCategoryVisible": "E dukshme", + "platformSmartFilterBar.settingsCategoryActive": "Aktiv", + "platformSmartFilterBar.settingsCategoryVisibleAndActive": "E dukshme dhe aktive", + "platformSmartFilterBar.settingsCategoryMandatory": "I detyrueshëm", + "platformSmartFilterBar.manageFieldConditions": "Manage field conditions", + "platformSmartFilterBar.refreshButtonAriaLabel": "Refresh", + "platformTable.headerMenuSortAsc": "Rendit në rritje", + "platformTable.headerMenuSortDesc": "Rendit në zbritje", + "platformTable.headerMenuGroup": "Groupo", + "platformTable.headerMenuFreeze": "Blloko", + "platformTable.headerMenuEndFreeze": "Freeze to End", + "platformTable.headerMenuUnfreeze": "Menuja \"Shkrije\"", + "platformTable.headerMenuFilter": "Filtro", + "platformTable.defaultEmptyMessage": "No data found", + "platformTable.emptyCell": "Bosh", + "platformTable.noVisibleColumnsMessage": "Right now, there are no visible columns in the table. Please select the columns you need in the table settings.", + "platformTable.resetChangesButtonLabel": "Rivendos", + "platformTable.editableCellNumberPlaceholder": "Shto vlerën", + "platformTable.editableCellDatePlaceholder": "Shto vlerën", + "platformTable.editableCellStringPlaceholder": "Shto vlerën", + "platformTable.P13ColumnsDialogHeader": "Kolonat", + "platformTable.P13ColumnsDialogSearchPlaceholder": "Kërko", + "platformTable.P13ColumnsDialogsShowSelected": "Shfaq të zgjedhurat", + "platformTable.P13ColumnsDialogShowAll": "Shfaq të gjitha", + "platformTable.P13ColumnsDialogSelectAll": "Përzgjidh të gjitha ({selectedColumnsCount}/{selectableColumnsCount})", + "platformTable.P13ColumnsDialogConfirmationBtnLabel": "OK", + "platformTable.P13ColumnsDialogCancelBtnLabel": "Anulo", + "platformTable.P13ColumnsDialogMoveToTopBtn": "Kalo në krye", + "platformTable.P13ColumnsDialogMoveUpBtn": "Lëviz lartë", + "platformTable.P13ColumnsDialogMoveDownBtn": "Lëviz poshtë", + "platformTable.P13ColumnsDialogMoveToBottomBtn": "Lëviz në fund", + "platformTable.P13FilterStrategyLabelBetween": "midis", + "platformTable.P13FilterStrategyLabelContains": "përmban", + "platformTable.P13FilterStrategyLabelBeginsWith": "fillon me", + "platformTable.P13FilterStrategyLabelEndsWith": "mbaron me", + "platformTable.P13FilterStrategyLabelEqualTo": "e barabart me", + "platformTable.P13FilterStrategyLabelGreaterThan": "më e madhe se", + "platformTable.P13FilterStrategyLabelGreaterThanOrEqualTo": "më e madhe se ose e barabartë", + "platformTable.P13FilterStrategyLabelLessThan": "më e vogël se", + "platformTable.P13FilterStrategyLabelLessThanOrEqualTo": "më e vogël se ose e barabartë", + "platformTable.P13FilterStrategyLabelAfter": "pas", + "platformTable.P13FilterStrategyLabelOnOrAfter": "mbi ose pas", + "platformTable.P13FilterStrategyLabelBefore": "përpara", + "platformTable.P13FilterStrategyLabelBeforeOrOn": "përpara ose mbi", + "platformTable.P13FilterStrategyLabelNotDefined": "E papërcaktuar", + "platformTable.P13FilterBooleanOptionNotDefined": " ", + "platformTable.P13FilterBooleanOptionTrue": "Po", + "platformTable.P13FilterBooleanOptionFalse": "Jo", + "platformTable.P13FilterDialogHeader": "Filtro sipas", + "platformTable.P13FilterDialogIncludePanelTitleWithCount": "Përfshi ({count})", + "platformTable.P13FilterDialogIncludePanelTitleWithoutCount": "Përfshi", + "platformTable.P13FilterDialogExcludePanelTitleWithCount": "Përjashto ({count})", + "platformTable.P13FilterDialogExcludePanelTitleWithoutCount": "Përjashto", + "platformTable.P13FilterDialogRemoveFilterBtnTitle": "Hiq filtrin", + "platformTable.P13FilterDialoAddFilterBtnTitle": "Shto filtrin", + "platformTable.P13FilterDialogConfirmationBtnLabel": "OK", + "platformTable.P13FilterDialogCancelBtnLabel": "Anulo", + "platformTable.P13GroupDialogHeader": "Grupo", + "platformTable.P13GroupDialogNoneSelectedColumnSelectPlaceholder": "(none)", + "platformTable.P13GroupDialogShowFieldAsColumnCheckboxLabel": "Shfaq Fushën si Kolona", + "platformTable.P13GroupDialogRemoveGroupBtnTitle": "Hiq", + "platformTable.P13GroupDialogAddNewGroupBtnTitle": "Shto një të re", + "platformTable.P13GroupDialogConfirmationBtnLabel": "OK", + "platformTable.P13GroupDialogCancelBtnLabel": "Anulo", + "platformTable.P13SortDialogHeader": "Rendit", + "platformTable.P13SortDialogNoneSelectedColumn": "(none)", + "platformTable.P13SortDialogNoneSelectedSorting": "(none)", + "platformTable.P13SortDialogSortOrderSelectOptionAsc": "Në ngritje", + "platformTable.P13SortDialogSortOrderSelectOptionDesc": "Në zbritje", + "platformTable.P13SortDialogRemoveSortBtnTitle": "Fshi", + "platformTable.P13SortDialogAddNewSortBtnTitle": "Shto një të re", + "platformTable.P13SortDialogConfirmationBtnLabel": "OK", + "platformTable.P13SortDialogCancelBtnLabel": "Anulo", + "platformTable.toolbarSearchPlaceholder": "Kërko", + "platformTable.toolbarActionCreateButtonLabel": "Krijo", + "platformTable.toolbarActionSaveButtonLabel": "Ruaj", + "platformTable.toolbarActionCancelButtonLabel": "Anulo", + "platformTable.toolbarActionSortButtonTitle": "Rendit", + "platformTable.toolbarActionFilterButtonTitle": "Filtro", + "platformTable.toolbarActionGroupButtonTitle": "Group", + "platformTable.toolbarActionColumnsButtonTitle": "Columns", + "platformTable.toolbarActionExpandAllButtonTitle": "Expand all", + "platformTable.toolbarActionCollapseAllButtonTitle": "Collapse all", + "platformTable.filterDialogNotFilteredLabel": "(Not Filtered)", + "platformTable.filterDialogFilterByLabel": "Filtro sipas: {filterLabel}", + "platformTable.filterDialogFilterTitle": "Filtro", + "platformTable.filterDialogFilterBy": "Filtro sipas", + "platformTable.filterDialogConfirmBtnLabel": "OK", + "platformTable.filterDialogCancelBtnLabel": "Anulo", + "platformTable.groupDialogHeader": "Grupo", + "platformTable.groupDialogGroupOrderHeader": "Rendit ne group", + "platformTable.groupDialogGroupOrderAsc": "Në ngritje", + "platformTable.groupDialogGroupOrderDesc": "Në zbritje", + "platformTable.groupDialogGroupByHeader": "Grupo sipas", + "platformTable.groupDialogNotGroupedLabel": "(Not Grouped)", + "platformTable.groupDialogConfirmBtnLabel": "OK", + "platformTable.groupDialogCancelBtnLabel": "Anulo", + "platformTable.sortDialogHeader": "Rendit", + "platformTable.sortDialogSortOrderHeader": "Sort Order", + "platformTable.sortDialogSortOrderAsc": "Në ngritje", + "platformTable.sortDialogSortOrderDesc": "Në zbritje", + "platformTable.sortDialogSortByHeader": "Rendit sipas", + "platformTable.sortDialogNotSortedLabel": "(Not Sorted)", + "platformTable.sortDialogConfirmBtnLabel": "OK", + "platformTable.sortDialogCancelBtnLabel": "Anulo", + "platformTable.selectAllCheckboxLabel": "Select all", + "platformTable.deselectAllCheckboxLabel": "Deselect all", + "platformTable.deselectSingleRow": "To deselect row, press SPACEBAR", + "platformTable.selectSingleRow": "To select row, press SPACEBAR", + "platformTable.deselectSingleRowTitle": "Click to deselect", + "platformTable.selectSingleRowTitle": "Click to select", + "platformThumbnail.detailsGotoPreviousButtonTitle": "Shko te paraardhësja", + "platformThumbnail.detailsGotoNextButtonTitle": "Shko te pasardhëstja", + "platformThumbnail.detailsDialogCloseBtnLabel": "Mbyll", + "platformThumbnail.roleDescription": "Imazhi", + "platformUploadCollection.moveToTitle": "Lëviz te", + "platformUploadCollection.moveToTitleFolder": "Dosje", + "platformUploadCollection.moveToNewFolderBtnLabel": "Dosje e re", + "platformUploadCollection.moveToAllFilesSubHeaderLabel": "Të gjithë skedarët", + "platformUploadCollection.moveToConfirmBtn": "Lëviz", + "platformUploadCollection.moveToCloseBtn": "Anulo", + "platformUploadCollection.newFolderTitle": "Dosje e re", + "platformUploadCollection.newFolderAtRootInputLabel": "Emëro një dosje të re", + "platformUploadCollection.newFolderAtFolderInputLabel": "Emëro një dosje të re brenda {folderName}", + "platformUploadCollection.newFolderInputPlaceholder": "Shkruaj këtu..", + "platformUploadCollection.newFolderInputErrorLabel": "Maksimuni i karaktereve te lejuara është {count}", + "platformUploadCollection.newFolderDialogCreateBtnLabel": "Krijo", + "platformUploadCollection.newFolderDialogCancelBtnLabel": "Anulo", + "platformUploadCollection.breadcrumbLabelAllFiles": "Të gjithë skedarët", + "platformUploadCollection.breadcrumbLabelAllFilesWithTotal": "Të gjithë skedarët ({total})", + "platformUploadCollection.searchPlaceholder": "Kërko", + "platformUploadCollection.addBtnLabel": "Shto", + "platformUploadCollection.newFolderBtnLabel": "Dosje e re", + "platformUploadCollection.moveToBtnLabel": "Lëviz te", + "platformUploadCollection.downloadBtnLabel": "Shkarko", + "platformUploadCollection.updateVersionBtnLabel": "Ngarko versionin", + "platformUploadCollection.removeBtnLabel": "Fshi", + "platformUploadCollection.folderIconTitle": "Ikona e dosjes", + "platformUploadCollection.fileIconTitle": "Ikona e skedarit", + "platformUploadCollection.editFileNameInputPlaceholder": "Shto emrin", + "platformUploadCollection.editFileNameFileAlreadyExistsError": "Skedari me këtë emër ekziston.", + "platformUploadCollection.editFileNameFolderAlreadyExistsError": "Dosja me këtë emër ekziston.", + "platformUploadCollection.itemStatusSuccessful": "Sukses", + "platformUploadCollection.itemStatusUnsuccessful": "Nuk ka sukses", + "platformUploadCollection.uploadNewFileAfterFailAction": "Ekzekuto", + "platformUploadCollection.cancelUploadNewFileAction": "Anulo", + "platformUploadCollection.itemMenuBtnTitle": "Më shumë", + "platformUploadCollection.dragDropAreaText": "Tërhiq skedarët për t`i ngarkuar", + "platformUploadCollection.noDataText": "Nuk u gjet asnjë skedar", + "platformUploadCollection.noDataDescription": "Hidhni skedarët për të ngarkuar ose përdorni butonin \"Shto\".", + "platformUploadCollection.paginationTotal": "Po shfaqen {from}-{to} nga {total}", + "platformUploadCollection.resultsPerPage": "Rezultatet për faqe", + "platformUploadCollection.messageCreateFailed": "Dështoj krijimi i {folderName}.", + "platformUploadCollection.messageCreateSuccess": "{folderName} është krijuar.", + "platformUploadCollection.messageUpdateVersionFailed": "Përditësimi i versionit të dështoi {folderName}.", + "platformUploadCollection.messageUpdateVersionSuccess": "{folderName} versioni është përditësuar.", + "platformUploadCollection.messageFileRenameFailed": "Riemërtimi nga \"{from}\" në \"{to} dështoi.\"", + "platformUploadCollection.messageFileRenameSuccess": "\"{from}\" është riemërtuar në \"{to}\".", + "platformUploadCollection.messageRemoveFoldersAndFilesFailed": "Dështoi për të hequr {foldersCount} dosje dhe {filesCount} skedare.", + "platformUploadCollection.messageRemoveFoldersAndFilesSuccess": "{foldersCount} dojse he {filesCount} skedare janë hequr.", + "platformUploadCollection.messageRemoveFoldersFailed": "Dështoi për të hequr {foldersCount} dosje.", + "platformUploadCollection.messageRemoveFoldersSuccess": "{foldersCount} dosje janë hequr.", + "platformUploadCollection.messageRemoveFilesFailed": "Dështoi për të hequr {filesCount} skedare.", + "platformUploadCollection.messageRemoveFilesSuccess": "{filesCount} skedare janë hequr.", + "platformUploadCollection.messageRemoveFileOrFolderFailed": "Dështoi për të hequr {name}.", + "platformUploadCollection.messageRemoveFileOrFolderSuccess": "{name} ështe hequr.", + "platformUploadCollection.messageMoveFoldersAndFilesFailed": "Zhvendosja e dosjeve {foldersCount} dhe skedarët {filesCount} në {to} dështoi.", + "platformUploadCollection.messageMoveFoldersAndFilesSuccess": "{foldersCount} dosje dhe {filesCount} janë zhvendosur në {to}.", + "platformUploadCollection.messageMoveFoldersFailed": "Zhvendosja e dosjeve {foldersCount} dështoi në {to}.", + "platformUploadCollection.messageMoveFoldersSuccess": "{foldersCount} dosje janë zhvendosur në{to}.", + "platformUploadCollection.messageMoveFilesFailed": "Zhvendosja e {filesCount} skedarëve në {to} ka dështuar.", + "platformUploadCollection.messageMoveFilesSuccess": "{filesCount} dosje janë zhvendosur në {to}.", + "platformUploadCollection.messageMoveFileOrFolderFailed": "Lëvizja e {name} në {to} ka dështuar.", + "platformUploadCollection.messageMoveFileOrFolderSuccess": "{name} është zhvendosur në {to}.", + "platformUploadCollection.messageMoveRootFoldersAndFilesFailed": "Zhvendosja e skedarëve {foldersCount} dhe {filesCount} në të gjithë skedarët ka dështuar.", + "platformUploadCollection.messageMoveRootFoldersAndFilesSuccess": "{foldersCount} dosje dhe {filesCount} skedarë janë zhvendosur në të gjithë skedarët.", + "platformUploadCollection.messageMoveRootFoldersFailed": "Zhvendosja e dosjeve {foldersCount} në të gjithë skedarët dështoi.", + "platformUploadCollection.messageMoveRootFoldersSuccess": "{foldersCount} dosje janë zhvendosur në të gjithë skedarët.", + "platformUploadCollection.messageMoveRootFilesFailed": "Zhvendosja e skedarëve {filesCount} në të gjithë skedarët dështoi.", + "platformUploadCollection.messageMoveRootFilesSuccess": "{filesCount} skedare janë zhvendosur në të gjithë skedarët.", + "platformUploadCollection.messageMoveRootFileOrFolderFailed": "Zhvendosja e {emri} te të gjithë skedarët ka dështuar.", + "platformUploadCollection.messageMoveRootFileOrFolderSuccess": "{name} është zhvendosur në të gjithë skedarët.", + "platformUploadCollection.messageFileTypeMismatchPlural": "{filesCount} skedarët kanë llojin e gabuar. Llojet e lejuara: {allowedTypes}.", + "platformUploadCollection.messageFileTypeMismatchSingular": "Skedari \"{fileName}\" ka llojin e gabuar. Llojet e lejuara: {allowedTypes}.", + "platformUploadCollection.messageFileSizeExceededPlural": "{filesCount} skedarët tejkaluan madhësinë maksimale të skedarit. Madhësia maksimale e lejuar e skedarit:{maxFileSize}.", + "platformUploadCollection.messageFileSizeExceededSingular": "Skedari \"{fileName}\" ka tejkaluar madhësinë maksimale të skedarit. Madhësia maksimale e lejuar e skedarit: {maxFileSize}.", + "platformUploadCollection.messageFileNameLengthExceededPlural": "{filesCount} skedare tejkaluan gjatësinë maksimale të emrit. Gjatësia e lejuar e emrit të skedarit: {maxFilenameLength} karaktere.", + "platformUploadCollection.messageFileNameLengthExceededSingular": "Emri \"{fileName}\" ka tejkaluar gjatësinë maksimale të emrit. Gjatësia e lejuar e emrit të skedarit: {maxFilenameLength} karaktere.", + "platformWizardGenerator.summarySectionEditStep": "Redakto", + "platformMessagePopover.allErrors": "All", + "platformMessagePopover.defaultErrors.email": "Email is invalid", + "platformMessagePopover.defaultErrors.max": "The field exceeds maximum value", + "platformMessagePopover.defaultErrors.maxLength": "The field exceeds maximum length", + "platformMessagePopover.defaultErrors.min": "The field value is less than allowed", + "platformMessagePopover.defaultErrors.minLength": "The field length is less than allowed", + "platformMessagePopover.defaultErrors.pattern": "The field value is invalid", + "platformMessagePopover.defaultErrors.required": "The field is mandatory", + "platformMessagePopover.defaultErrors.requiredTrue": "The field is mandatory", + "platformVariantManagement.manage": "Manage", + "platformVariantManagement.saveAs": "Save as", + "platformVariantManagement.saveView": "Save View", + "platformVariantManagement.save": "Save", + "platformVariantManagement.myViews": "My Views", + "platformVariantManagement.view": "View", + "platformVariantManagement.setAsDefault": "Set as Default", + "platformVariantManagement.public": "Public", + "platformVariantManagement.applyAutomatically": "Apply Automatically", + "platformVariantManagement.requiredFieldError": "This field is required.", + "platformVariantManagement.nameTakenFieldError": "Variant with such name already exists. Please chose a different name.", + "platformVariantManagement.cancel": "Cancel", + "platformVariantManagement.manageViews": "Manage Views", + "platformVariantManagement.markAsFavourite": "Mark as Favourite", + "platformVariantManagement.sharing": "Sharing", + "platformVariantManagement.default": "Default", + "platformVariantManagement.createdBy": "Created By", + "platformVariantManagement.removeVariant": "Remove View", + "platformVariantManagement.search": "Search", + "platformVariantManagement.access.public": "Public", + "platformVariantManagement.access.private": "Private", + "platformSelect.selectOptionLabel": "Zgjidhni një opsion", + "fnSlider.minMaxDetails": "Vlera minimale e rrëshqitësit është {min}, vlera maksimale është {max}", + "fnSlider.valueminDetails": "Vlera është {value}", + "fnSlider.valuemaxDetails": "Vlera është {value}", + "fnSlider.valueNowDetails": "Vlera aktuale është {value}", + "fnSwitch.semanticAcceptLabel": "Pranoje", + "fnSwitch.semanticDeclineLabel": "Rënia", + "coreTree.expand": "Expand node", + "coreTree.collapse": "Collapse node", + "coreTree.noData": "No data" +} diff --git a/libs/i18n/src/lib/translations/translations_tr-TR.json b/libs/i18n/src/lib/translations/translations_tr-TR.json new file mode 100644 index 00000000000..e49f7ea70eb --- /dev/null +++ b/libs/i18n/src/lib/translations/translations_tr-TR.json @@ -0,0 +1,503 @@ +{ + "coreMultiComboBox.selectAllLabel": "Hepsini seç ({selectedItems}/{totalItems})", + "coreCarousel.leftNavigationBtnLabel": "Önceki öğeye git", + "coreCarousel.rightNavigationBtnLabel": "Sonraki öğeye git", + "coreDatePicker.dateInputLabel": "Tarih girişi", + "coreDatePicker.dateRangeInputLabel": "Tarih aralığı girişi", + "coreDatePicker.displayCalendarToggleLabel": "Seçiciyi aç", + "coreDatePicker.valueStateSuccessMessage": "Değer durumu Başarılı", + "coreDatePicker.valueStateInformationMessage": "Değer durumu Bilgisi", + "coreDatePicker.valueStateWarningMessage": "Değer durumu Uyarısı", + "coreDatePicker.valueStateErrorMessage": "Değer durumu Hatası", + "coreDatetimePicker.datetimeInputLabel": "Datetime girişi", + "coreDatetimePicker.displayDatetimeToggleLabel": "Takvim geçişini görüntüle", + "coreDatetimePicker.displayTypeDateLabel": "Tarih", + "coreDatetimePicker.displayTypeTimeLabel": "Zaman", + "coreDatetimePicker.datetimeOkLabel": "Tamam", + "coreDatetimePicker.datetimeCancelLabel": "İptal", + "coreFeedListItem.moreLabel": "Daha fazla", + "coreFeedListItem.lessLabel": "Daha az", + "coreGridList.filterBarCancelButtonTitle": "Vazgeç", + "coreGridList.listItemStatusAriaLabel": "Eşyayı statü var. Statü: {status}.", + "coreGridList.listItemCounterAriaLabel": "Eşyayı {count} alt eşyası var.", + "coreGridList.listItemButtonDetailsTitle": "Detaylar", + "coreGridList.listItemButtonDeleteTitle": "Sil", + "coreGridList.listItemStatusContainsErrors": "Hata içerir", + "coreGridList.listItemStatusLocked": "Kilitli", + "coreGridList.listItemStatusDraft": "Taslak", + "coreMessageStrip.dismissLabel": "Azletmek", + "coreMultiInput.multiInputAriaLabel": "Multi Value Input", + "coreMultiInput.tokensCountText": "Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.", + "coreNavigation.mainNavigation": "Main Navigation", + "coreNavigation.navigationPath": "Navigation Path", + "coreNestedList.linkItemAriaLabel": "Ağaç Öğesi {itemDetails}, {index} / {total}{selectedDescription}", + "coreOverflowLayout.moreItemsButton": "{count} ürün daha", + "corePagination.pageLabel": "Sayfa {pageNumber}", + "corePagination.currentPageAriaLabel": "Sayfa {pageNumber} geçerli sayfadır", + "corePagination.labelBeforeInputMobile": "Sayfa:", + "corePagination.labelAfterInputMobile": "of {totalCount}", + "corePagination.inputAriaLabel": "Sayfa girişi, Geçerli sayfa, Sayfa {pageNumber} / {totalCount}", + "corePagination.itemsPerPageLabel": "Sayfa Başına Sonuçlar:", + "corePagination.firstLabel": "İlk", + "corePagination.previousLabel": "Önceki", + "corePagination.nextLabel": "Sonraki", + "corePagination.lastLabel": "Son", + "corePagination.ariaLabel": "Sayfalandırma", + "corePagination.totalResultsLabel": "{totalCount} Sonuçlar", + "coreProductSwitch.ariaLabel": "Ürün Anahtarı", + "coreShellbar.collapsedItemMenuLabel": "Daraltılmış Öğe Menüsü", + "coreShellbar.cancel": "Cancel", + "coreShellbar.search": "Search", + "coreSlider.singleMinMaxDetails": " Kaydırıcının {min} minimum değeri, {max} maksimum değeri", + "coreSlider.singleValueminDetails": "Değer {value}", + "coreSlider.singleValuemaxDetails": "Değer {value}", + "coreSlider.singleValueNowDetails": "Geçerli değer {value}", + "coreSlider.multipleHandle1MinMaxDetails": " Aralığı kaydırma {min} minimum değeri, {max} maksimum değeri", + "coreSlider.multipleHandle1ValueminDetails": "Değer {value}", + "coreSlider.multipleHandle1ValuemaxDetails": "Değer {value}", + "coreSlider.multipleHandle1ValueNowDetails": "Geçerli değer {value}", + "coreSlider.multipleHandle2MinMaxDetails": " Aralığı kaydırma {min} minimum değeri, {max} maksimum değeri", + "coreSlider.multipleHandle2ValueminDetails": "Değer {value}", + "coreSlider.multipleHandle2ValuemaxDetails": "Değer {value}", + "coreSlider.multipleHandle2ValueNowDetails": "Geçerli değer {value}", + "coreSplitButton.expandButtonAriaLabel": "Daha fazla hareket", + "coreSplitButton.arialLabel": "Böl düğmesi", + "coreSplitter.paginationItemAriaLabel": "Bölüm", + "coreStepInput.incrementButtonTitle": "Artış", + "coreStepInput.decrementButtonTitle": "Azaltma", + "coreStepInput.ariaRoleDescription": "Adım Girişi", + "coreSwitch.semanticAcceptLabel": "Kabul et", + "coreSwitch.semanticDeclineLabel": "Reddet", + "coreTabs.tabListExpandButtonText": "Daha", + "coreText.moreLabel": "Daha", + "coreText.lessLabel": "Az", + "coreTime.componentAriaName": "Zaman seçici", + "coreTime.increaseHoursLabel": "Saatleri artır", + "coreTime.hoursLabel": "Saat", + "coreTime.decreaseHoursLabel": "Saatleri azalt", + "coreTime.increaseMinutesLabel": "Dakikaları artır", + "coreTime.minutesLabel": "Min", + "coreTime.decreaseMinutesLabel": "Dakikaları azalt", + "coreTime.increaseSecondsLabel": "Saniyeyi artır", + "coreTime.secondsLabel": "Sn", + "coreTime.decreaseSecondsLabel": "Saniyeyi azalt", + "coreTime.increasePeriodLabel": "Periyodu artırma", + "coreTime.periodLabel": "Dönem", + "coreTime.decreasePeriodLabel": "Düşüş periyodu", + "coreTime.navigationInstruction": "Bu listedeki öğeler arasında hareket etmek için üst oka veya alt oka basın. Listeler arasında geçiş yapmak için sol ok veya sağ ok tuşuna basın.", + "coreTimePicker.timePickerInputLabel": "Zaman seçici girişi", + "coreTimePicker.timePickerButtonLabel": "Seçiciyi aç", + "coreToken.deleteButtonLabel": "Silinebilir", + "coreToken.ariaRoleDescription": "jeton", + "coreTokenizer.moreLabel": "{count} ürün daha", + "coreUploadCollection.menuOkText": "Tamam", + "coreUploadCollection.menuCancelText": "İptal", + "coreUploadCollection.menuEditAriaLabel": "Düzenle", + "coreUploadCollection.menuDeleteAriaLabel": "Sil", + "coreUploadCollection.menuOkAriaLabel": "Düzenle", + "coreUploadCollection.menuCancelAriaLabel": "İptal", + "coreUploadCollection.formItemPlaceholder": "Dosya adı", + "coreWizard.ariaLabel": "Sihirbaz", + "coreBreadcrumb.overflowTitleMore": "Daha", + "platformActionBar.backButtonLabel": "Geri dön", + "platformApprovalFlow.defaultWatchersLabel": "Gözlemciler", + "platformApprovalFlow.defaultTitle": "Onay süreci", + "platformApprovalFlow.nextButtonAriaLabel": "Sonraki slayta git", + "platformApprovalFlow.prevButtonAriaLabel": "Önceki slayta git", + "platformApprovalFlow.editModeSaveButtonLabel": "Kaydet", + "platformApprovalFlow.editModeExitButtonLabel": "Çıkış", + "platformApprovalFlow.emptyTitle": "Onaylayanlar ve Gözlemciler eklemeye başla", + "platformApprovalFlow.emptyHint": "Onaylayanları eklemek için \"Adım ekle\"yi tıklayın. Gözlemciler eklemek için Gözlemciler alanını tıklayın..", + "platformApprovalFlow.addNodeDialogHeaderAddApprovers": "Onaylayanları ekle", + "platformApprovalFlow.addNodeDialogHeaderEditApprover": "Onaylayanı düzenle", + "platformApprovalFlow.addNodeDialogHeaderAddApproverTeam": "Kullanıcı/Takım", + "platformApprovalFlow.addNodeDialogHeaderDetail": "Detay", + "platformApprovalFlow.addNodeDialogNodeType": "Paralel veya seri", + "platformApprovalFlow.addNodeDialogNodeTypeSerial": "Seri", + "platformApprovalFlow.addNodeDialogNodeTypeParallel": "Paralel", + "platformApprovalFlow.addNodeDialogApproverType": "Onaylayan türü", + "platformApprovalFlow.addNodeDialogApproverTypeUser": "Bir kullanıcı", + "platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone": "Takımdaki herhangi biri", + "platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone": "Takımdaki herkes", + "platformApprovalFlow.addNodeDialogUserOrTeam": "Kullanıcı/Takım", + "platformApprovalFlow.addNodeDialogAddToNext": "Sonraki seri düğüme ekle", + "platformApprovalFlow.addNodeDialogDueDate": "Bitiş tarihi", + "platformApprovalFlow.addNodeSearchPlaceholder": "Ara", + "platformApprovalFlow.addNodeAddActionBtnLabel": "Ekle", + "platformApprovalFlow.addNodeCancelActionBtnLabel": "Vazgeç", + "platformApprovalFlow.addNodeSelectApproverActionBtnLabel": "Seçme", + "platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel": "Vazgeç", + "platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel": "Kapat", + "platformApprovalFlow.userDetailsHeader": "Detay", + "platformApprovalFlow.userDetailsSendReminderBtnLabel": "Hatırlatma gönder", + "platformApprovalFlow.userDetailsCancelBtnLabel": "Vazgeç", + "platformApprovalFlow.messagesApproverAddedSuccess": "1 onaylayıcı eklendi", + "platformApprovalFlow.messagesTeamAddedSuccess": "1 takım eklendi", + "platformApprovalFlow.messagesNodeEdited": "1 onaylayıcı düzenlendi", + "platformApprovalFlow.messagesNodeRemovedSingular": "1 onaylayıcı çıkarıldı", + "platformApprovalFlow.messagesNodeRemovedPlural": "Onaylayanlar kaldırıldı", + "platformApprovalFlow.messagesTeamRemoved": "1 takım kaldırıldı", + "platformApprovalFlow.messagesErrorBuildGraph": "Grafik oluşturulurken bir hata oluştu. İlk verileri kontrol edi.", + "platformApprovalFlow.messagesUndoAction": "Geri almak", + "platformApprovalFlow.nodeMembersCount": "{count} üyeler", + "platformApprovalFlow.nodeVariousTeams": "Çeşitli takımlar", + "platformApprovalFlow.nodeStatusDueToday": "Bugün teslim tarihi", + "platformApprovalFlow.nodeStatusDueInXDays": " {count} gün içinde vadesi doluyor", + "platformApprovalFlow.nodeStatusXDaysOverdue": "{count} gecikmiş gün", + "platformApprovalFlow.nodeActionAddApproversBefore": "Daha önce onaylayanlar ekleme", + "platformApprovalFlow.nodeActionAddApproversAfter": "Onaylayanları afte ekler", + "platformApprovalFlow.nodeActionAddApproversParallel": "Paralel onaylayanlar ekleme", + "platformApprovalFlow.nodeActionEditApprover": "Onaylayanı düzenle", + "platformApprovalFlow.nodeActionRemove": "Kaldır", + "platformApprovalFlow.selectTypeDialogMoveApproverAs": "Onaylayanı şu şekilde taşı:", + "platformApprovalFlow.selectTypeDialogParallelOrSerial": "Paralel veya seri", + "platformApprovalFlow.selectTypeDialogNodeTypeParallel": "Paralel onaylayan", + "platformApprovalFlow.selectTypeDialogNodeTypeSerial": "Seri onaylayan", + "platformApprovalFlow.selectTypeDialogConfirmButton": "Onayla", + "platformApprovalFlow.selectTypeDialogCancelButton": "Vazgeç", + "platformApprovalFlow.toolbarAddStepButton": "Bir adım ekle", + "platformApprovalFlow.toolbarEditButton": "Düzenle ", + "platformApprovalFlow.toolbarAddApproversBefore": "Daha önce onaylayanlar ekleme", + "platformApprovalFlow.toolbarAddApproversAfter": "Onaylayanları afte ekle", + "platformApprovalFlow.toolbarAddApproversParallel": "Paralel onaylayanlar ekleme", + "platformApprovalFlow.toolbarRemove": "Kaldır", + "platformApprovalFlow.toolbarEditApprover": "Onaylayanı düzenle", + "platformApprovalFlow.watchersInputPlaceholder": "Burada ara..", + "platformApprovalFlow.userListSelectedItemsCountSingular": "1 eşyayı seçildi", + "platformApprovalFlow.userListSelectedItemsCountPlural": "{count} eşyayılar seçildi", + "platformApprovalFlow.statusApproved": "approved", + "platformApprovalFlow.statusRejected": "rejected", + "platformApprovalFlow.statusInProgress": "in progress", + "platformApprovalFlow.statusNotStarted": "not started", + "platformFeedInput.userTitle": "kullanıcı", + "platformVHD.selectionBarLabel": "Seçilmiş ve koşullu eşyayılar", + "platformVHD.selectedAndConditionLabel": "Seçilen Eşyayılar ve Koşullar", + "platformVHD.footerClearSelectedTitle": "seçili eşyayı temizle", + "platformVHD.footerClearSelectedAriaLabel": "seçili eşyayılar temile", + "platformVHD.searchButtonLabel": "Git", + "platformVHD.successButtonLabel": "OK", + "platformVHD.cancelButtonLabel": "Vazgeç", + "platformVHD.selectedEmptyLabel": "Hiçbir eşyayı veya Koşul Seçilmedi", + "platformVHD.searchPlaceholder": "Ara", + "platformVHD.searchAdvancedSearchLabel": "Filtreler", + "platformVHD.searchShowAdvancedSearchLabel": "Filtreleri göster", + "platformVHD.searchHideAdvancedSearchLabel": "Filtreleri gizles", + "platformVHD.searchShowAllAdvancedSearchLabel": "Tüm filtreleri göster", + "platformVHD.searchHideAllAdvancedSearchLabel": "Tüm filtreleri gizle", + "platformVHD.selectTabDisplayCountLabel": "Eşyayı ({count})", + "platformVHD.selectTabMoreBtnLabel": "Daha", + "platformVHD.selectTabCountHiddenA11yLabel": "{rowCount} satır ve {colCount} sütun içerir", + "platformVHD.selectMobileTabBackBtnTitle": "Geri", + "platformVHD.selectMobileTabBtnOpenDialogLabel": "İletişim kutusunu aç", + "platformVHD.selectMobileTabTitle": "{title} sekmesi", + "platformVHD.selectMobileConditionEmpty": "Boş", + "platformVHD.defineConditionTitle": "Ürün", + "platformVHD.defineConditionSelectedValueHiddenA11yLabel": " {value} seçilen değer", + "platformVHD.defineConditionConditionsGroupHeaderInclude": "Dahil et", + "platformVHD.defineConditionConditionsGroupHeaderExclude": "Dışla", + "platformVHD.defineConditionFromPlaceholder": "dan", + "platformVHD.defineConditionToPlaceholder": "ile", + "platformVHD.defineConditionValuePlaceholder": "değer", + "platformVHD.defineConditionRemoveConditionButtonTitle": "Koşul Kaldır", + "platformVHD.defineConditionAddConditionButtonLabel": "Ekle", + "platformVHD.defineConditionAddConditionButtonTitle": "Koşul Ekle", + "platformVHD.defineConditionConditionStrategyLabelContains": "içer", + "platformVHD.defineConditionConditionStrategyLabelEqualTo": "eşit", + "platformVHD.defineConditionConditionStrategyLabelBetween": "arasında", + "platformVHD.defineConditionConditionStrategyLabelStartsWith": "ile başlar", + "platformVHD.defineConditionConditionStrategyLabelEndsWith": "ile biter", + "platformVHD.defineConditionConditionStrategyLabelLessThan": "daha az", + "platformVHD.defineConditionConditionStrategyLabelLessThanEqual": "eşitten daha az", + "platformVHD.defineConditionConditionStrategyLabelGreaterThan": "daha büyük", + "platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual": "eşitten büyük", + "platformVHD.defineConditionConditionStrategyLabelEmpty": "boş", + "platformVHD.defineConditionConditionStrategyLabelNotEqualTo": "eşit değil", + "platformVHD.defineConditionConditionStrategyLabelNotEmpty": "boş değil", + "platformVHD.defineConditionMaxCountError": "{count} karakterden fazla olmayan bir değer gir", + "platformVHD.selectTabTitle": "Listeden seç", + "platformVHD.searchTableEmptyMessage": "Sonuçları almak için aramayı kullanın", + "platformVHD.defineTabTitle": "Koşulları Tanımla", + "platformCombobox.countListResultsSingular": "1 sonuç listesi eşyayı", + "platformCombobox.countListResultsPlural": "{count} sonuç listesi eşyayılar", + "platformMultiCombobox.inputGlyphAriaLabel": "Seçenekler'i seçin", + "platformMultiCombobox.inputIconTitle": "Seçenekler'i seçin", + "platformMultiCombobox.mobileShowAllItemsButton": "Tüm eşyayılar göster", + "platformMultiCombobox.mobileShowSelectedItemsButton": "Seçili eşyayılar göster", + "platformTextarea.counterMessageCharactersOverTheLimitSingular": "1 karakter sınırın üzerinde", + "platformTextarea.counterMessageCharactersOverTheLimitPlural": "{count} karakter sınırı aşıyor", + "platformTextarea.counterMessageCharactersRemainingSingular": "1 karakter kaldı", + "platformTextarea.counterMessageCharactersRemainingPlural": "{count} karakterler kaldı", + "platformLink.roleDescriptionWithMedia": "Medya: {media}", + "platformList.loadingAriaLabel": "yükleniyor", + "platformObjectListItem.detailsActionAriaLabel": "detay", + "platformObjectListItem.deleteActionAriaLabel": "sil", + "platformStandardListItem.detailsActionAriaLabel": "detay", + "platformStandardListItem.deleteActionAriaLabel": "sil", + "platformSearchField.clearButtonTitle": "Temiz", + "platformSearchField.submitButtonTitle": "Ara", + "platformSearchField.searchInputLabel": "Ara", + "platformSearchField.synchronizeButtonTitle": "Senkronize", + "platformSearchField.searchSuggestionMessage": "{count} öneri bulundu.", + "platformSearchField.searchSuggestionNavigateMessage": "gezinmek için yukarı ve aşağı okları kullanın", + "platformSmartFilterBar.searchPlaceholder": "Ara", + "platformSmartFilterBar.submitButtonLabel": "Git", + "platformSmartFilterBar.filtersButtonLabel": "Filtreler ({filtersCount})", + "platformSmartFilterBar.showFiltersButtonLabel": "Filtreleri göster", + "platformSmartFilterBar.hideFiltersButtonLabel": "Filtreleri gizle", + "platformSmartFilterBar.defineConditionsRemoveConditionButtonTitle": "Koşullu kaldır", + "platformSmartFilterBar.defineConditionsAddConditionButtonLabel": "Koşul ekle", + "platformSmartFilterBar.defineConditionsSubmitButtonLabel": "Git", + "platformSmartFilterBar.defineConditionsCancelButton": "Vazgeç", + "platformSmartFilterBar.selectFiltersHeader": "Filtreler", + "platformSmartFilterBar.selectFiltersAvailableFiltersText": "Kullanılabilir filtreler", + "platformSmartFilterBar.selectFiltersFilterColumnLabel": "Filtre", + "platformSmartFilterBar.selectFiltersActiveColumnLabel": "Aktif", + "platformSmartFilterBar.selectFiltersSubmitButtonLabel": "Git", + "platformSmartFilterBar.selectFiltersCancelButton": "Vazgeç", + "platformSmartFilterBar.filterConditionContains": "içerir", + "platformSmartFilterBar.filterConditionEqualTo": "eşittir", + "platformSmartFilterBar.filterConditionBetween": "arasında", + "platformSmartFilterBar.filterConditionBeginsWith": "ile başlar", + "platformSmartFilterBar.filterConditionEndsWith": "ile biter", + "platformSmartFilterBar.filterConditionLessThan": "küçüktür", + "platformSmartFilterBar.filterConditionLessThanOrEqualTo": "küçük veya eşittir", + "platformSmartFilterBar.filterConditionGreaterThan": "büyüktür", + "platformSmartFilterBar.filterConditionGreaterThanOrEqualTo": "büyüktür veya eşittir", + "platformSmartFilterBar.filterConditionAfter": "sonra", + "platformSmartFilterBar.filterConditionOnOrAfter": "on veya after", + "platformSmartFilterBar.filterConditionBefore": "önce", + "platformSmartFilterBar.filterConditionBeforeOrOn": "önce veya açık", + "platformSmartFilterBar.filterConditionValuePlaceholder": "değer", + "platformSmartFilterBar.filterConditionValueFromPlaceholder": "from", + "platformSmartFilterBar.filterConditionValueToPlaceholder": "to", + "platformSmartFilterBar.settingsCategoryAll": "Tümü", + "platformSmartFilterBar.settingsCategoryVisible": "Görünür", + "platformSmartFilterBar.settingsCategoryActive": "Etkin", + "platformSmartFilterBar.settingsCategoryVisibleAndActive": "Görünür ve aktif", + "platformSmartFilterBar.settingsCategoryMandatory": "Zorunlu", + "platformSmartFilterBar.manageFieldConditions": "Manage field conditions", + "platformSmartFilterBar.refreshButtonAriaLabel": "Refresh", + "platformTable.headerMenuSortAsc": "Artan Sıralama", + "platformTable.headerMenuSortDesc": "Azalan Sıralama", + "platformTable.headerMenuGroup": "Grup", + "platformTable.headerMenuFreeze": "Donma", + "platformTable.headerMenuEndFreeze": "Freeze to End", + "platformTable.headerMenuUnfreeze": "HeaderMenuUnfreeze", + "platformTable.headerMenuFilter": "Filtre", + "platformTable.defaultEmptyMessage": "Hiçbir veri bulunamadı", + "platformTable.emptyCell": "Boş", + "platformTable.noVisibleColumnsMessage": "Right now, there are no visible columns in the table. Please select the columns you need in the table settings.", + "platformTable.resetChangesButtonLabel": "Sıfırla", + "platformTable.editableCellNumberPlaceholder": "Değer gir", + "platformTable.editableCellDatePlaceholder": "Değer gir", + "platformTable.editableCellStringPlaceholder": "Değer gir", + "platformTable.P13ColumnsDialogHeader": "Kolonlar", + "platformTable.P13ColumnsDialogSearchPlaceholder": "Ara", + "platformTable.P13ColumnsDialogsShowSelected": "Seçilenleri Göster", + "platformTable.P13ColumnsDialogShowAll": "Hepsini Göster", + "platformTable.P13ColumnsDialogSelectAll": "Hepsini ({selectedColumnsCount}/{selectableColumnsCount}) seç", + "platformTable.P13ColumnsDialogConfirmationBtnLabel": "OK", + "platformTable.P13ColumnsDialogCancelBtnLabel": "Vazgeç", + "platformTable.P13ColumnsDialogMoveToTopBtn": "Yukarı Taşı", + "platformTable.P13ColumnsDialogMoveUpBtn": "Yukarı Taşı", + "platformTable.P13ColumnsDialogMoveDownBtn": "Aşağı Taşı", + "platformTable.P13ColumnsDialogMoveToBottomBtn": "Aşağıya Taşı", + "platformTable.P13FilterStrategyLabelBetween": "arasında", + "platformTable.P13FilterStrategyLabelContains": "içerir", + "platformTable.P13FilterStrategyLabelBeginsWith": "İle baş", + "platformTable.P13FilterStrategyLabelEndsWith": "ile bit", + "platformTable.P13FilterStrategyLabelEqualTo": "eşit", + "platformTable.P13FilterStrategyLabelGreaterThan": "daha büyük", + "platformTable.P13FilterStrategyLabelGreaterThanOrEqualTo": "büyük veya eşit", + "platformTable.P13FilterStrategyLabelLessThan": "daha az", + "platformTable.P13FilterStrategyLabelLessThanOrEqualTo": "daha az veya eşittir", + "platformTable.P13FilterStrategyLabelAfter": "sonrasında", + "platformTable.P13FilterStrategyLabelOnOrAfter": "Üzerinde veya sonrasında", + "platformTable.P13FilterStrategyLabelBefore": "önceki", + "platformTable.P13FilterStrategyLabelBeforeOrOn": "önce veya üzerinde", + "platformTable.P13FilterStrategyLabelNotDefined": "Tanımlanmamış", + "platformTable.P13FilterBooleanOptionNotDefined": " ", + "platformTable.P13FilterBooleanOptionTrue": "Evet", + "platformTable.P13FilterBooleanOptionFalse": "Hayır", + "platformTable.P13FilterDialogHeader": "Tarafından filtre", + "platformTable.P13FilterDialogIncludePanelTitleWithCount": "Include ({count})", + "platformTable.P13FilterDialogIncludePanelTitleWithoutCount": "Include", + "platformTable.P13FilterDialogExcludePanelTitleWithCount": "Exclude ({count})", + "platformTable.P13FilterDialogExcludePanelTitleWithoutCount": "Exclude", + "platformTable.P13FilterDialogRemoveFilterBtnTitle": "Filtre kaldır", + "platformTable.P13FilterDialoAddFilterBtnTitle": "Filtre ekle", + "platformTable.P13FilterDialogConfirmationBtnLabel": "OK", + "platformTable.P13FilterDialogCancelBtnLabel": "Vazgeç", + "platformTable.P13GroupDialogHeader": "Grup", + "platformTable.P13GroupDialogNoneSelectedColumnSelectPlaceholder": "(yok)", + "platformTable.P13GroupDialogShowFieldAsColumnCheckboxLabel": "Show Field as Column", + "platformTable.P13GroupDialogRemoveGroupBtnTitle": "Kaldır", + "platformTable.P13GroupDialogAddNewGroupBtnTitle": "Yeni ekle", + "platformTable.P13GroupDialogConfirmationBtnLabel": "OK", + "platformTable.P13GroupDialogCancelBtnLabel": "Vazgeç", + "platformTable.P13SortDialogHeader": " Sıralama", + "platformTable.P13SortDialogNoneSelectedColumn": "(yok)", + "platformTable.P13SortDialogNoneSelectedSorting": "(yok)", + "platformTable.P13SortDialogSortOrderSelectOptionAsc": "Artan", + "platformTable.P13SortDialogSortOrderSelectOptionDesc": "Azalan", + "platformTable.P13SortDialogRemoveSortBtnTitle": "Kaldır", + "platformTable.P13SortDialogAddNewSortBtnTitle": "Yeni ekle", + "platformTable.P13SortDialogConfirmationBtnLabel": "OK", + "platformTable.P13SortDialogCancelBtnLabel": "Vazgeç", + "platformTable.toolbarSearchPlaceholder": "Ara", + "platformTable.toolbarActionCreateButtonLabel": "Oluşturma", + "platformTable.toolbarActionSaveButtonLabel": " Kaydet", + "platformTable.toolbarActionCancelButtonLabel": "Vazgeç", + "platformTable.toolbarActionSortButtonTitle": " Sıralama", + "platformTable.toolbarActionFilterButtonTitle": "Filtre", + "platformTable.toolbarActionGroupButtonTitle": "Grup", + "platformTable.toolbarActionColumnsButtonTitle": "Kolonlar", + "platformTable.toolbarActionExpandAllButtonTitle": "Expand all", + "platformTable.toolbarActionCollapseAllButtonTitle": "Collapse all", + "platformTable.filterDialogNotFilteredLabel": "(Filtrelenmemiş)", + "platformTable.filterDialogFilterByLabel": "Filtreleme ölçütü: {filterLabel}", + "platformTable.filterDialogFilterTitle": "Filtre", + "platformTable.filterDialogFilterBy": "Filtreleme ölçütü", + "platformTable.filterDialogConfirmBtnLabel": "OK", + "platformTable.filterDialogCancelBtnLabel": "Vazgeç", + "platformTable.groupDialogHeader": "Grup", + "platformTable.groupDialogGroupOrderHeader": "Group Order", + "platformTable.groupDialogGroupOrderAsc": "Artan", + "platformTable.groupDialogGroupOrderDesc": "Azalan", + "platformTable.groupDialogGroupByHeader": "Gruplandırma Ölçütü", + "platformTable.groupDialogNotGroupedLabel": "(Gruplandırılmamış)", + "platformTable.groupDialogConfirmBtnLabel": "OK", + "platformTable.groupDialogCancelBtnLabel": "Vazgeç", + "platformTable.sortDialogHeader": " Sıralama", + "platformTable.sortDialogSortOrderHeader": "Sıralama düzeni", + "platformTable.sortDialogSortOrderAsc": "Artan", + "platformTable.sortDialogSortOrderDesc": "Azalan", + "platformTable.sortDialogSortByHeader": "Sıralama Ölçütü", + "platformTable.sortDialogNotSortedLabel": "(Sıralanmadı)", + "platformTable.sortDialogConfirmBtnLabel": "OK", + "platformTable.sortDialogCancelBtnLabel": "Vazgeç", + "platformTable.selectAllCheckboxLabel": "Select all", + "platformTable.deselectAllCheckboxLabel": "Deselect all", + "platformTable.deselectSingleRow": "To deselect row, press SPACEBAR", + "platformTable.selectSingleRow": "To select row, press SPACEBAR", + "platformTable.deselectSingleRowTitle": "Click to deselect", + "platformTable.selectSingleRowTitle": "Click to select", + "platformThumbnail.detailsGotoPreviousButtonTitle": "Öncekine Git", + "platformThumbnail.detailsGotoNextButtonTitle": "Sonrakine Git", + "platformThumbnail.detailsDialogCloseBtnLabel": "Kapat", + "platformThumbnail.roleDescription": "resim", + "platformUploadCollection.moveToTitle": "Taşınma", + "platformUploadCollection.moveToTitleFolder": "Dizin", + "platformUploadCollection.moveToNewFolderBtnLabel": "Yeni Dizin", + "platformUploadCollection.moveToAllFilesSubHeaderLabel": "Tüm dosyalar", + "platformUploadCollection.moveToConfirmBtn": "Move", + "platformUploadCollection.moveToCloseBtn": "Vazgeç", + "platformUploadCollection.newFolderTitle": "Yeni Dizinr", + "platformUploadCollection.newFolderAtRootInputLabel": "Yeni Dizin adı", + "platformUploadCollection.newFolderAtFolderInputLabel": "{folderName} içindeki yeni dizin adı", + "platformUploadCollection.newFolderInputPlaceholder": "Buraya yaz..", + "platformUploadCollection.newFolderInputErrorLabel": "Maksimum {count} karaktere izin verilir", + "platformUploadCollection.newFolderDialogCreateBtnLabel": "Oluşturma", + "platformUploadCollection.newFolderDialogCancelBtnLabel": "Vazgeç", + "platformUploadCollection.breadcrumbLabelAllFiles": "Tüm dosyalar", + "platformUploadCollection.breadcrumbLabelAllFilesWithTotal": "Tüm dosyalar ({total})", + "platformUploadCollection.searchPlaceholder": "Ara", + "platformUploadCollection.addBtnLabel": "Ekle", + "platformUploadCollection.newFolderBtnLabel": "Yeni Dizin", + "platformUploadCollection.moveToBtnLabel": "Taşınma", + "platformUploadCollection.downloadBtnLabel": "İndir", + "platformUploadCollection.updateVersionBtnLabel": "Sürümü güncelle", + "platformUploadCollection.removeBtnLabel": "Kaldır", + "platformUploadCollection.folderIconTitle": "Dizin ikonu", + "platformUploadCollection.fileIconTitle": "Dosya ikonu", + "platformUploadCollection.editFileNameInputPlaceholder": "İsim girin", + "platformUploadCollection.editFileNameFileAlreadyExistsError": "Bu adda dosya zaten var", + "platformUploadCollection.editFileNameFolderAlreadyExistsError": "Bu adda dizin zaten var", + "platformUploadCollection.itemStatusSuccessful": "Başarılı", + "platformUploadCollection.itemStatusUnsuccessful": "Başarısız", + "platformUploadCollection.uploadNewFileAfterFailAction": "Çalıştır", + "platformUploadCollection.cancelUploadNewFileAction": "Vazgeç", + "platformUploadCollection.itemMenuBtnTitle": "Daha", + "platformUploadCollection.dragDropAreaText": "Yüklenecek dosyaları sürükleyin", + "platformUploadCollection.noDataText": "Dosya bulunamadı", + "platformUploadCollection.noDataDescription": "Yüklenecek dosyaları bırakın veya “Ekle” düğmesini kullanın.", + "platformUploadCollection.paginationTotal": "{total}/{from}-{to} arasında gösteriliyor", + "platformUploadCollection.resultsPerPage": "Sayfa başına sonuç", + "platformUploadCollection.messageCreateFailed": "{folderName} oluşturulamadı.", + "platformUploadCollection.messageCreateSuccess": "{folderName} oluşturuladı.", + "platformUploadCollection.messageUpdateVersionFailed": "{folderName} sürümü güncellenemedi.", + "platformUploadCollection.messageUpdateVersionSuccess": "{folderName} sürümü güncellendi.", + "platformUploadCollection.messageFileRenameFailed": "\"{from}\" olarak yeniden adlandırılamadı \"{to}\"", + "platformUploadCollection.messageFileRenameSuccess": "\"{from}\", \"{to}\" olarak yeniden adlandırıldı.", + "platformUploadCollection.messageRemoveFoldersAndFilesFailed": "{foldersCount} dizin ve {filesCout} dosya kaldırılamadı.", + "platformUploadCollection.messageRemoveFoldersAndFilesSuccess": "{foldersCount} dizinleri ve {filesCount} dosyaları kaldırıldı.", + "platformUploadCollection.messageRemoveFoldersFailed": "{foldersCount} dizinleri kaldırılamadı", + "platformUploadCollection.messageRemoveFoldersSuccess": "{foldersCount} dizinleri kaldırıladı.", + "platformUploadCollection.messageRemoveFilesFailed": "{filesCount} dosyaları kaldırılamadı.", + "platformUploadCollection.messageRemoveFilesSuccess": "{filesCount} dosyaları kaldırıldı.", + "platformUploadCollection.messageRemoveFileOrFolderFailed": " {name} kaldırılamadı.", + "platformUploadCollection.messageRemoveFileOrFolderSuccess": "{name} kaldırıldı.", + "platformUploadCollection.messageMoveFoldersAndFilesFailed": "{foldersCount} dizini ve {filesCount} dosyası, {to} taşınamadı.", + "platformUploadCollection.messageMoveFoldersAndFilesSuccess": "{foldersCount} dizini ve {filesCount} dosyası, {to} taşınadı.", + "platformUploadCollection.messageMoveFoldersFailed": "{foldersCount} dizini, {to} taşınamadı.", + "platformUploadCollection.messageMoveFoldersSuccess": "{foldersCount} dizini, {to} taşınadı.", + "platformUploadCollection.messageMoveFilesFailed": "{filesCount} dosyası, {to} taşınamadı.", + "platformUploadCollection.messageMoveFilesSuccess": "{filesCount} dosyası, {to} taşınadı.", + "platformUploadCollection.messageMoveFileOrFolderFailed": "{name}, {to} taşınamadı.", + "platformUploadCollection.messageMoveFileOrFolderSuccess": "{name}, {to} taşınadı.", + "platformUploadCollection.messageMoveRootFoldersAndFilesFailed": "{foldersCount} dizinleri ve {filesCount} dosyaları tüm dosyalara taşınamadı.", + "platformUploadCollection.messageMoveRootFoldersAndFilesSuccess": "{foldersCount} dizinleri ve {filesCount} dosyaları tüm dosyalara taşınadı.", + "platformUploadCollection.messageMoveRootFoldersFailed": "{foldersCount} dizini tüm dosyalara taşınamadı.", + "platformUploadCollection.messageMoveRootFoldersSuccess": "{foldersCount} dizinler tüm dosyalara taşındı.", + "platformUploadCollection.messageMoveRootFilesFailed": "{filesCount} dosyası tüm dosyalara taşınamadı.", + "platformUploadCollection.messageMoveRootFilesSuccess": "{filesCount} dizinler tüm dosyalara taşındı.", + "platformUploadCollection.messageMoveRootFileOrFolderFailed": "{name} tüm dosyalara taşınamadı.", + "platformUploadCollection.messageMoveRootFileOrFolderSuccess": "{name} tüm dosyalara taşındı.", + "platformUploadCollection.messageFileTypeMismatchPlural": "{filesCount} dosyalarının türü yanlış. İzin verilen türler: {allowedTypes}.", + "platformUploadCollection.messageFileTypeMismatchSingular": "\"{fileName}\" dosyasının türü yanlış. İzin verilen türler: {allowedTypes}.", + "platformUploadCollection.messageFileSizeExceededPlural": "{filesCount} dosya maksimum dosya boyutunu aştı. İzin verilen maksimum dosya boyutu: {maxFileSize}.", + "platformUploadCollection.messageFileSizeExceededSingular": "\"{fileName}\" dosyası maksimum dosya boyutunu aştı. İzin verilen maksimum dosya boyutu: {maxFileSize}.", + "platformUploadCollection.messageFileNameLengthExceededPlural": "{filesCount} dosya maksimum dosya adı uzunluğunu aştı. İzin verilen dosya adı uzunluğu: {maxFilenameLength} karakter.", + "platformUploadCollection.messageFileNameLengthExceededSingular": "\"{fileName}\", maksimum dosya adı uzunluğunu aştı. İzin verilen dosya adı uzunluğu: {maxFilenameLength} karakter.", + "platformWizardGenerator.summarySectionEditStep": "Düzenle", + "platformMessagePopover.allErrors": "All", + "platformMessagePopover.defaultErrors.email": "Email is invalid", + "platformMessagePopover.defaultErrors.max": "The field exceeds maximum value", + "platformMessagePopover.defaultErrors.maxLength": "The field exceeds maximum length", + "platformMessagePopover.defaultErrors.min": "The field value is less than allowed", + "platformMessagePopover.defaultErrors.minLength": "The field length is less than allowed", + "platformMessagePopover.defaultErrors.pattern": "The field value is invalid", + "platformMessagePopover.defaultErrors.required": "The field is mandatory", + "platformMessagePopover.defaultErrors.requiredTrue": "The field is mandatory", + "platformVariantManagement.manage": "Manage", + "platformVariantManagement.saveAs": "Save as", + "platformVariantManagement.saveView": "Save View", + "platformVariantManagement.save": "Save", + "platformVariantManagement.myViews": "My Views", + "platformVariantManagement.view": "View", + "platformVariantManagement.setAsDefault": "Set as Default", + "platformVariantManagement.public": "Public", + "platformVariantManagement.applyAutomatically": "Apply Automatically", + "platformVariantManagement.requiredFieldError": "This field is required.", + "platformVariantManagement.nameTakenFieldError": "Variant with such name already exists. Please chose a different name.", + "platformVariantManagement.cancel": "Cancel", + "platformVariantManagement.manageViews": "Manage Views", + "platformVariantManagement.markAsFavourite": "Mark as Favourite", + "platformVariantManagement.sharing": "Sharing", + "platformVariantManagement.default": "Default", + "platformVariantManagement.createdBy": "Created By", + "platformVariantManagement.removeVariant": "Remove View", + "platformVariantManagement.search": "Search", + "platformVariantManagement.access.public": "Public", + "platformVariantManagement.access.private": "Private", + "platformSelect.selectOptionLabel": "Bir seçenek seçin", + "fnSlider.minMaxDetails": "Kaydırıcının {min} minimum değeri, {max} maksimum değeri", + "fnSlider.valueminDetails": "Değer {value}", + "fnSlider.valuemaxDetails": "Değer {value}", + "fnSlider.valueNowDetails": "Geçerli değer {value}", + "fnSwitch.semanticAcceptLabel": "Kabul et", + "fnSwitch.semanticDeclineLabel": "Reddet", + "coreTree.expand": "Expand node", + "coreTree.collapse": "Collapse node", + "coreTree.noData": "No data" +} diff --git a/libs/i18n/src/lib/translations/translations_uk-UA.json b/libs/i18n/src/lib/translations/translations_uk-UA.json new file mode 100644 index 00000000000..0765b2dbfb0 --- /dev/null +++ b/libs/i18n/src/lib/translations/translations_uk-UA.json @@ -0,0 +1,505 @@ +{ + "coreMultiComboBox.selectAllLabel": "Вибрати все ({selectedItems} з {totalItems})", + "coreCarousel.leftNavigationBtnLabel": "Перейти до попереднього елемента", + "coreCarousel.rightNavigationBtnLabel": "Перейти до наступного елемента", + "coreDatePicker.dateInputLabel": "Поле вводу дати", + "coreDatePicker.dateRangeInputLabel": "Поле введення діапазону дат", + "coreDatePicker.displayCalendarToggleLabel": "Відкрити засіб вибору", + "coreDatePicker.valueStateSuccessMessage": "Значення стану: Успіх", + "coreDatePicker.valueStateInformationMessage": "Значення стану: Інформаційний", + "coreDatePicker.valueStateWarningMessage": "Значення стану: Попередження", + "coreDatePicker.valueStateErrorMessage": "Значення стану: Помилка", + "coreDatetimePicker.datetimeInputLabel": "Поле вводу дати та часу", + "coreDatetimePicker.displayDatetimeToggleLabel": "Показати календар", + "coreDatetimePicker.displayTypeDateLabel": "Дата", + "coreDatetimePicker.displayTypeTimeLabel": "Час", + "coreDatetimePicker.datetimeOkLabel": "OK", + "coreDatetimePicker.datetimeCancelLabel": "Відмінити", + "coreFeedListItem.moreLabel": "Більше", + "coreFeedListItem.lessLabel": "Менше", + "coreGridList.filterBarCancelButtonTitle": "Скасувати", + "coreGridList.listItemStatusAriaLabel": "Елемент має статус. Статус: {status}.", + "coreGridList.listItemCounterAriaLabel": "Елемент має {count, plural, one {один дочірній елемент} few {# дочірніх елемента} other {# дочірніх елементів} }.", + "coreGridList.listItemButtonDetailsTitle": "Подробиці", + "coreGridList.listItemButtonDeleteTitle": "Видалити", + "coreGridList.listItemStatusContainsErrors": "Містить помилки", + "coreGridList.listItemStatusLocked": "Заблоковано", + "coreGridList.listItemStatusDraft": "Чернетка", + "coreMessageStrip.dismissLabel": "Закрити", + "coreMultiInput.multiInputAriaLabel": "Multi Value Input", + "coreMultiInput.tokensCountText": "{ length, plural, =0 {Немає вибраних} other {Обрано #} } { length, plural, one {варіант} few {варіанти} other {варіантів} }.", + "coreNavigation.mainNavigation": "Main Navigation", + "coreNavigation.navigationPath": "Navigation Path", + "coreNestedList.linkItemAriaLabel": "Елемент дерева {itemDetails}, {index} із {total}{selectedDescription}", + "coreOverflowLayout.moreItemsButton": "Ще { count, plural, one {елемент} few {елемента} other {елементів} }", + "corePagination.pageLabel": "Сторінка {pageNumber}", + "corePagination.currentPageAriaLabel": "Сторінка {pageNumber} є активною", + "corePagination.labelBeforeInputMobile": "Сторінка:", + "corePagination.labelAfterInputMobile": "із {totalCount}", + "corePagination.inputAriaLabel": "Поле вводу сторінки, Поточна сторінка, Сторінка {pageNumber} із {totalCount}", + "corePagination.itemsPerPageLabel": "Результатів на сторінці:", + "corePagination.firstLabel": "Перейти до першої", + "corePagination.previousLabel": "Перейти до попердньої", + "corePagination.nextLabel": "Перейти до наступної", + "corePagination.lastLabel": "Перейти до останньої", + "corePagination.ariaLabel": "Нумерація сторінок", + "corePagination.totalResultsLabel": "{totalCount} результатів", + "coreProductSwitch.ariaLabel": "Перемикач", + "coreShellbar.collapsedItemMenuLabel": "Згорнуте меню елементів", + "coreShellbar.cancel": "Відміна", + "coreShellbar.search": "Пошук", + "coreSlider.singleMinMaxDetails": "Мінімальне значення слайдера {min}, максимальне значення {max}", + "coreSlider.singleValueminDetails": "Поточне значення: {value}", + "coreSlider.singleValuemaxDetails": "Поточне значення: {value}", + "coreSlider.singleValueNowDetails": "Поточне значення: {value}", + "coreSlider.multipleHandle1MinMaxDetails": "Мінімальне значення слайдера {min}, максимальне значення {max}", + "coreSlider.multipleHandle1ValueminDetails": "Поточне значення: {value}", + "coreSlider.multipleHandle1ValuemaxDetails": "Поточне значення: {value}", + "coreSlider.multipleHandle1ValueNowDetails": "Поточне значення: {value}", + "coreSlider.multipleHandle2MinMaxDetails": "Мінімальне значення слайдера {min}, максимальне значення {max}", + "coreSlider.multipleHandle2ValueminDetails": "Поточне значення: {value}", + "coreSlider.multipleHandle2ValuemaxDetails": "Поточне значення: {value}", + "coreSlider.multipleHandle2ValueNowDetails": "Поточне значення: {value}", + "coreSplitButton.expandButtonAriaLabel": "Більше дій", + "coreSplitButton.arialLabel": "Кнопка розділення", + "coreSplitter.paginationItemAriaLabel": "Секція", + "coreStepInput.incrementButtonTitle": "Збільшити", + "coreStepInput.decrementButtonTitle": "Зменшити", + "coreStepInput.ariaRoleDescription": "Крок вводу", + "coreSwitch.semanticAcceptLabel": "Прийняти", + "coreSwitch.semanticDeclineLabel": "Відхилити", + "coreTabs.tabListExpandButtonText": "Більше", + "coreText.moreLabel": "Більше", + "coreText.lessLabel": "Менше", + "coreTime.componentAriaName": "Вибір часу", + "coreTime.increaseHoursLabel": "Збільшити години", + "coreTime.hoursLabel": "Год", + "coreTime.decreaseHoursLabel": "Зменшити години", + "coreTime.increaseMinutesLabel": "Збільшити хвилини", + "coreTime.minutesLabel": "Хв", + "coreTime.decreaseMinutesLabel": "Зменшити хвилини", + "coreTime.increaseSecondsLabel": "Збільшити секунди", + "coreTime.secondsLabel": "Сек", + "coreTime.decreaseSecondsLabel": "Зменшити секунди", + "coreTime.increasePeriodLabel": "Збільшити період", + "coreTime.periodLabel": "Період", + "coreTime.decreasePeriodLabel": "Зменшити період", + "coreTime.navigationInstruction": "Щоб переміщатися між елементами в цьому списку, використовуйте стрілку вверх або вниз. Для переключення між списками використовуйте стрілку вліво або вправо.", + "coreTimePicker.timePickerInputLabel": "Поле вводу часу", + "coreTimePicker.timePickerButtonLabel": "Відкрити вікно вибору", + "coreToken.deleteButtonLabel": "Може бути видаленим", + "coreToken.ariaRoleDescription": "токен", + "coreTokenizer.moreLabel": "Ще { count, plural, one {# елемент} few {# елемента} other {# елементів} }", + "coreUploadCollection.menuOkText": "ОК", + "coreUploadCollection.menuCancelText": "Відмінити", + "coreUploadCollection.menuEditAriaLabel": "Редагувати", + "coreUploadCollection.menuDeleteAriaLabel": "Видалити", + "coreUploadCollection.menuOkAriaLabel": "Редагувати", + "coreUploadCollection.menuCancelAriaLabel": "Відминити", + "coreUploadCollection.formItemPlaceholder": "Ім'я файлу", + "coreWizard.ariaLabel": "Майстер", + "coreBreadcrumb.overflowTitleMore": "Більше", + "platformActionBar.backButtonLabel": "Повернутися назад", + "platformApprovalFlow.defaultWatchersLabel": "Спостерігачі", + "platformApprovalFlow.defaultTitle": "Процес затвердження", + "platformApprovalFlow.nextButtonAriaLabel": "Перейти до наступного слайду", + "platformApprovalFlow.prevButtonAriaLabel": "Перейти до попереднього слайду", + "platformApprovalFlow.editModeSaveButtonLabel": "Зберегти", + "platformApprovalFlow.editModeExitButtonLabel": "Вийти", + "platformApprovalFlow.emptyTitle": "Почати додавати стверджувачів і спостерігачів", + "platformApprovalFlow.emptyHint": "Щоб додати стверджувачів, натисніть \"Додати крок\". Щоб додати спостерігачів, натисніть поле Спостерігачі.", + "platformApprovalFlow.addNodeDialogHeaderAddApprovers": "Додати стверджувачів", + "platformApprovalFlow.addNodeDialogHeaderEditApprover": "Редагувати стверджувача", + "platformApprovalFlow.addNodeDialogHeaderAddApproverTeam": "Користувач/Команда", + "platformApprovalFlow.addNodeDialogHeaderDetail": "Деталі", + "platformApprovalFlow.addNodeDialogNodeType": "Паралельний або послідовний", + "platformApprovalFlow.addNodeDialogNodeTypeSerial": "Послідовний", + "platformApprovalFlow.addNodeDialogNodeTypeParallel": "Паралельний", + "platformApprovalFlow.addNodeDialogApproverType": "Тип стверджувача", + "platformApprovalFlow.addNodeDialogApproverTypeUser": "Користувач", + "platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone": "Будь-хто в команді", + "platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone": "Усі в команді", + "platformApprovalFlow.addNodeDialogUserOrTeam": "Користувач/Команда", + "platformApprovalFlow.addNodeDialogAddToNext": "Додати до наступного послідовного вузла", + "platformApprovalFlow.addNodeDialogDueDate": "Дата виконання", + "platformApprovalFlow.addNodeSearchPlaceholder": "Пошук", + "platformApprovalFlow.addNodeAddActionBtnLabel": "Додати", + "platformApprovalFlow.addNodeCancelActionBtnLabel": "Скасувати", + "platformApprovalFlow.addNodeSelectApproverActionBtnLabel": "Вибрати", + "platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel": "Вийти", + "platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel": "Закрити", + "platformApprovalFlow.userDetailsHeader": "Деталі", + "platformApprovalFlow.userDetailsSendReminderBtnLabel": "Надіслати нагадування", + "platformApprovalFlow.userDetailsCancelBtnLabel": "Скасувати", + "platformApprovalFlow.messagesApproverAddedSuccess": "1 стверджувач доданий", + "platformApprovalFlow.messagesTeamAddedSuccess": "1 команда додана", + "platformApprovalFlow.messagesNodeEdited": "1 стверджувач відредагований", + "platformApprovalFlow.messagesNodeRemovedSingular": "1 стверджувач видалений", + "platformApprovalFlow.messagesNodeRemovedPlural": "Стверджувачі видалені", + "platformApprovalFlow.messagesTeamRemoved": "1 команду видалено", + "platformApprovalFlow.messagesErrorBuildGraph": "Під час спроби побудувати графік сталася помилка. Перевірте вхідні дані.", + "platformApprovalFlow.messagesUndoAction": "Скасувати", + "platformApprovalFlow.nodeMembersCount": "{ count, plural, one {1 член}, few {# члена}, other {# членів} } команди", + "platformApprovalFlow.nodeVariousTeams": "Різні команди", + "platformApprovalFlow.nodeStatusDueToday": "Термін виконання сьогодні", + "platformApprovalFlow.nodeStatusDueInXDays": "Термін виконання через { count, plural, one {1 день} few {# дні} other {# днів} }", + "platformApprovalFlow.nodeStatusXDaysOverdue": "Прострочено на { count, plural, one {1 день} few {# дні} other {# днів} }", + "platformApprovalFlow.nodeActionAddApproversBefore": "Додати стверджувача до", + "platformApprovalFlow.nodeActionAddApproversAfter": "Додати стверджувача після", + "platformApprovalFlow.nodeActionAddApproversParallel": "Додати паралельних стверджувачів", + "platformApprovalFlow.nodeActionEditApprover": "Редагувати стверджувача", + "platformApprovalFlow.nodeActionRemove": "Видалити", + "platformApprovalFlow.selectTypeDialogMoveApproverAs": "Перемістити стверджувача як", + "platformApprovalFlow.selectTypeDialogParallelOrSerial": "Паралельний або послідовний", + "platformApprovalFlow.selectTypeDialogNodeTypeParallel": "Паралельний стверджувач", + "platformApprovalFlow.selectTypeDialogNodeTypeSerial": "Послідовний стверджувач", + "platformApprovalFlow.selectTypeDialogConfirmButton": "Підтвердити", + "platformApprovalFlow.selectTypeDialogCancelButton": "Скасувати", + "platformApprovalFlow.toolbarAddStepButton": "Додати крок", + "platformApprovalFlow.toolbarEditButton": "Редагувати", + "platformApprovalFlow.toolbarAddApproversBefore": "Додати стверджувачів до", + "platformApprovalFlow.toolbarAddApproversAfter": "Додати стверджувачів після", + "platformApprovalFlow.toolbarAddApproversParallel": "Додати паралельних стверджувачів", + "platformApprovalFlow.toolbarRemove": "Видалити", + "platformApprovalFlow.toolbarEditApprover": "Редагувати стверджувача", + "platformApprovalFlow.watchersInputPlaceholder": "Пошук", + "platformApprovalFlow.userListSelectedItemsCountSingular": "Вибрано 1 елемент", + "platformApprovalFlow.userListSelectedItemsCountPlural": "Вибрано { count, plural, one {1 елемент} few {# елемента} other {# елементів} }", + "platformApprovalFlow.statusApproved": "approved", + "platformApprovalFlow.statusRejected": "rejected", + "platformApprovalFlow.statusInProgress": "in progress", + "platformApprovalFlow.statusNotStarted": "not started", + "platformFeedInput.userTitle": "Користувач", + "platformVHD.selectionBarLabel": "Вибрані елементи та умови", + "platformVHD.selectedAndConditionLabel": "Вибрані елементи та умови", + "platformVHD.footerClearSelectedTitle": "очистити вибрані елементи", + "platformVHD.footerClearSelectedAriaLabel": "очистити вибрані елементи", + "platformVHD.searchButtonLabel": "Пошук", + "platformVHD.successButtonLabel": "OK", + "platformVHD.cancelButtonLabel": "Скасувати", + "platformVHD.selectedEmptyLabel": "Не вибрано жодних елементів або умов", + "platformVHD.searchPlaceholder": "Пошук", + "platformVHD.searchAdvancedSearchLabel": "Фільтри", + "platformVHD.searchShowAdvancedSearchLabel": "Показати фільтри", + "platformVHD.searchHideAdvancedSearchLabel": "Сховати фільтри", + "platformVHD.searchShowAllAdvancedSearchLabel": "Показати всі фільтри", + "platformVHD.searchHideAllAdvancedSearchLabel": "Сховати всі фільтри", + "platformVHD.selectTabDisplayCountLabel": "Елементи ({count})", + "platformVHD.selectTabMoreBtnLabel": "Більше", + "platformVHD.selectTabCountHiddenA11yLabel": "містить { rowCount, plural, one {1 ряд} few {# ряди} other {# рядів} } і { colCount, plural, one {1 колонку} few {# колонки} other {# колонок} }", + "platformVHD.selectMobileTabBackBtnTitle": "Назад", + "platformVHD.selectMobileTabBtnOpenDialogLabel": "Відкрити діалогове вікно", + "platformVHD.selectMobileTabTitle": "{title} вкладка", + "platformVHD.selectMobileConditionEmpty": "Пусто", + "platformVHD.defineConditionTitle": "Продукт", + "platformVHD.defineConditionSelectedValueHiddenA11yLabel": "вибране значення {value}", + "platformVHD.defineConditionConditionsGroupHeaderInclude": "Включні умови", + "platformVHD.defineConditionConditionsGroupHeaderExclude": "Виключні умови", + "platformVHD.defineConditionFromPlaceholder": "від", + "platformVHD.defineConditionToPlaceholder": "до", + "platformVHD.defineConditionValuePlaceholder": "значення", + "platformVHD.defineConditionRemoveConditionButtonTitle": "Видалити умову", + "platformVHD.defineConditionAddConditionButtonLabel": "Додати", + "platformVHD.defineConditionAddConditionButtonTitle": "Додати умову", + "platformVHD.defineConditionConditionStrategyLabelContains": "містить", + "platformVHD.defineConditionConditionStrategyLabelEqualTo": "дорівнює", + "platformVHD.defineConditionConditionStrategyLabelBetween": "між", + "platformVHD.defineConditionConditionStrategyLabelStartsWith": "починається з", + "platformVHD.defineConditionConditionStrategyLabelEndsWith": "закінчується на", + "platformVHD.defineConditionConditionStrategyLabelLessThan": "менше ніж", + "platformVHD.defineConditionConditionStrategyLabelLessThanEqual": "менше ніж або дорівнює", + "platformVHD.defineConditionConditionStrategyLabelGreaterThan": "більше ніж", + "platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual": "більше ніж або дорівнює", + "platformVHD.defineConditionConditionStrategyLabelEmpty": "порожнє", + "platformVHD.defineConditionConditionStrategyLabelNotEqualTo": "не дорівнює", + "platformVHD.defineConditionConditionStrategyLabelNotEmpty": "не порожнє", + "platformVHD.defineConditionMaxCountError": "Введіть значення не більше ніж { count, plural, one {1 символ} few {# символи} other {# символів} }", + "platformVHD.selectTabTitle": "Вибрати зі списку", + "platformVHD.searchTableEmptyMessage": "Використовуйте пошук, щоб отримати результати", + "platformVHD.defineTabTitle": "Визначити умови", + "platformCombobox.countListResultsSingular": "1 елемент", + "platformCombobox.countListResultsPlural": "{ count, plural, one {1 елемент} few {# елементи} other {# елементів} }", + "platformMultiCombobox.inputGlyphAriaLabel": "Вибрати опції", + "platformMultiCombobox.inputIconTitle": "Вибрати опції", + "platformMultiCombobox.mobileShowAllItemsButton": "Показати всі елементи", + "platformMultiCombobox.mobileShowSelectedItemsButton": "Показати вибрані елементи", + "platformTextarea.counterMessageCharactersOverTheLimitSingular": "Перевищено ліміт на 1 символ", + "platformTextarea.counterMessageCharactersOverTheLimitPlural": "Перевищено ліміт на { count, plural, one {1 символ} few {# символи} other {# символів} }", + "platformTextarea.counterMessageCharactersRemainingSingular": "Залишився 1 символ", + "platformTextarea.counterMessageCharactersRemainingPlural": "Залишилось { count, plural, one {1 символ} few {# символи} other {# символів} }", + "platformLink.roleDescriptionWithMedia": "Медіа: {media}", + "platformList.loadingAriaLabel": "завантаження", + "platformObjectListItem.detailsActionAriaLabel": "деталі", + "platformObjectListItem.deleteActionAriaLabel": "видалити", + "platformStandardListItem.detailsActionAriaLabel": "деталі", + "platformStandardListItem.deleteActionAriaLabel": "видалити", + "platformSearchField.clearButtonTitle": "Очистити", + "platformSearchField.submitButtonTitle": "Пошук", + "platformSearchField.searchInputLabel": "Пошук", + "platformSearchField.synchronizeButtonTitle": "Синхронізувати", + "platformSearchField.searchSuggestionMessage": "Знайдено { count, plural, one {1 варіант} few {# варіанти} other {# варіантів} }", + "platformSearchField.searchSuggestionNavigateMessage": "використовуйте стрілки вгору та вниз для навігації", + "platformSmartFilterBar.searchPlaceholder": "Пошук", + "platformSmartFilterBar.submitButtonLabel": "Перейти", + "platformSmartFilterBar.filtersButtonLabel": "Фільтри ({filtersCount})", + "platformSmartFilterBar.showFiltersButtonLabel": "Показати фільтри", + "platformSmartFilterBar.hideFiltersButtonLabel": "Сховати фільтри", + "platformSmartFilterBar.defineConditionsRemoveConditionButtonTitle": "Видалити умову", + "platformSmartFilterBar.defineConditionsAddConditionButtonLabel": "Додати умову", + "platformSmartFilterBar.defineConditionsSubmitButtonLabel": "Перейти", + "platformSmartFilterBar.defineConditionsCancelButton": "Скасувати", + "platformSmartFilterBar.selectFiltersHeader": "Фільтри", + "platformSmartFilterBar.selectFiltersAvailableFiltersText": "Доступні фільтри", + "platformSmartFilterBar.selectFiltersFilterColumnLabel": "Фільтр", + "platformSmartFilterBar.selectFiltersActiveColumnLabel": "Активний", + "platformSmartFilterBar.selectFiltersSubmitButtonLabel": "Перейти", + "platformSmartFilterBar.selectFiltersCancelButton": "Скасувати", + "platformSmartFilterBar.filterConditionContains": "містить", + "platformSmartFilterBar.filterConditionEqualTo": "дорівнює", + "platformSmartFilterBar.filterConditionBetween": "між", + "platformSmartFilterBar.filterConditionBeginsWith": "починається з", + "platformSmartFilterBar.filterConditionEndsWith": "закінчується", + "platformSmartFilterBar.filterConditionLessThan": "менше ніж", + "platformSmartFilterBar.filterConditionLessThanOrEqualTo": "менше або одно", + "platformSmartFilterBar.filterConditionGreaterThan": "більше ніж", + "platformSmartFilterBar.filterConditionGreaterThanOrEqualTo": "більше або дорівнює", + "platformSmartFilterBar.filterConditionAfter": "після", + "platformSmartFilterBar.filterConditionOnOrAfter": "дорівнює або після", + "platformSmartFilterBar.filterConditionBefore": "до", + "platformSmartFilterBar.filterConditionBeforeOrOn": "до або дорівнює", + "platformSmartFilterBar.filterConditionValuePlaceholder": "значення", + "platformSmartFilterBar.filterConditionValueFromPlaceholder": "від", + "platformSmartFilterBar.filterConditionValueToPlaceholder": "до", + "platformSmartFilterBar.settingsCategoryAll": "Всі", + "platformSmartFilterBar.settingsCategoryVisible": "Видимі", + "platformSmartFilterBar.settingsCategoryActive": "Активні", + "platformSmartFilterBar.settingsCategoryVisibleAndActive": "Видимі та активні", + "platformSmartFilterBar.settingsCategoryMandatory": "Обов'язкові", + "platformSmartFilterBar.manageFieldConditions": "Показати умови для поля", + "platformSmartFilterBar.refreshButtonAriaLabel": "Оновити", + "platformTable.headerMenuSortAsc": "Сортувати за зростанням", + "platformTable.headerMenuSortDesc": "Сортувати за спаданням", + "platformTable.headerMenuGroup": "Сгрупувати", + "platformTable.headerMenuFreeze": "Заморозити", + "platformTable.headerMenuEndFreeze": "Freeze to End", + "platformTable.headerMenuUnfreeze": "Розморозити", + "platformTable.headerMenuFilter": "Фільтр", + "platformTable.defaultEmptyMessage": "Нічого не знайдено", + "platformTable.emptyCell": "Empty", + "platformTable.noVisibleColumnsMessage": "На даний момент у таблиці немає видимих стовпців. Виберіть потрібні стовпці в налаштуваннях таблиці.", + "platformTable.resetChangesButtonLabel": "Скинути", + "platformTable.editableCellNumberPlaceholder": "Введіть значення", + "platformTable.editableCellDatePlaceholder": "Введіть значення", + "platformTable.editableCellStringPlaceholder": "Введіть значення", + "platformTable.P13ColumnsDialogHeader": "Стовпці", + "platformTable.P13ColumnsDialogSearchPlaceholder": "Пошук", + "platformTable.P13ColumnsDialogsShowSelected": "Показати вибране", + "platformTable.P13ColumnsDialogShowAll": "Показати все", + "platformTable.P13ColumnsDialogSelectAll": "Вибрати всі ({selectedColumnsCount}/{selectableColumnsCount})", + "platformTable.P13ColumnsDialogConfirmationBtnLabel": "OK", + "platformTable.P13ColumnsDialogCancelBtnLabel": "Скасувати", + "platformTable.P13ColumnsDialogMoveToTopBtn": "Перемістити вгору", + "platformTable.P13ColumnsDialogMoveUpBtn": "Перемістити вище", + "platformTable.P13ColumnsDialogMoveDownBtn": "Перемістити нижче", + "platformTable.P13ColumnsDialogMoveToBottomBtn": "Перемістити вниз", + "platformTable.P13FilterStrategyLabelBetween": "між", + "platformTable.P13FilterStrategyLabelContains": "містить", + "platformTable.P13FilterStrategyLabelBeginsWith": "починається з", + "platformTable.P13FilterStrategyLabelEndsWith": "закінчується на", + "platformTable.P13FilterStrategyLabelEqualTo": "дорівнює", + "platformTable.P13FilterStrategyLabelGreaterThan": "більше ніж", + "platformTable.P13FilterStrategyLabelGreaterThanOrEqualTo": "більше або дорівнює", + "platformTable.P13FilterStrategyLabelLessThan": "менше ніж", + "platformTable.P13FilterStrategyLabelLessThanOrEqualTo": "менше або дорівнює", + "platformTable.P13FilterStrategyLabelAfter": "після", + "platformTable.P13FilterStrategyLabelOnOrAfter": "дорівнює або після", + "platformTable.P13FilterStrategyLabelBefore": "до", + "platformTable.P13FilterStrategyLabelBeforeOrOn": "до або дорівнює", + "platformTable.P13FilterStrategyLabelNotDefined": "Не визначено", + "platformTable.P13FilterBooleanOptionNotDefined": " ", + "platformTable.P13FilterBooleanOptionTrue": "Так", + "platformTable.P13FilterBooleanOptionFalse": "Ні", + "platformTable.P13FilterDialogHeader": "Фільтрувати за", + "platformTable.P13FilterDialogIncludePanelTitleWithCount": "Включні умови ({count})", + "platformTable.P13FilterDialogIncludePanelTitleWithoutCount": "Включні умови", + "platformTable.P13FilterDialogExcludePanelTitleWithCount": "Виключні умови ({count})", + "platformTable.P13FilterDialogExcludePanelTitleWithoutCount": "Виключні умови", + "platformTable.P13FilterDialogRemoveFilterBtnTitle": "Видалити фільтр", + "platformTable.P13FilterDialoAddFilterBtnTitle": "Додати фільтр", + "platformTable.P13FilterDialogConfirmationBtnLabel": "OK", + "platformTable.P13FilterDialogCancelBtnLabel": "Скасувати", + "platformTable.P13GroupDialogHeader": "Групування", + "platformTable.P13GroupDialogNoneSelectedColumnSelectPlaceholder": "(немає)", + "platformTable.P13GroupDialogShowFieldAsColumnCheckboxLabel": "Показати поле як стовпець", + "platformTable.P13GroupDialogRemoveGroupBtnTitle": "Видалити", + "platformTable.P13GroupDialogAddNewGroupBtnTitle": "Додати новий", + "platformTable.P13GroupDialogConfirmationBtnLabel": "OK", + "platformTable.P13GroupDialogCancelBtnLabel": "Скасувати", + "platformTable.P13SortDialogHeader": "Сортування", + "platformTable.P13SortDialogNoneSelectedColumn": "(немає)", + "platformTable.P13SortDialogNoneSelectedSorting": "(немає)", + "platformTable.P13SortDialogSortOrderSelectOptionAsc": "За зростанням", + "platformTable.P13SortDialogSortOrderSelectOptionDesc": "За спаданням", + "platformTable.P13SortDialogRemoveSortBtnTitle": "Видалити", + "platformTable.P13SortDialogAddNewSortBtnTitle": "Додати нове", + "platformTable.P13SortDialogConfirmationBtnLabel": "OK", + "platformTable.P13SortDialogCancelBtnLabel": "Скасувати", + "platformTable.toolbarSearchPlaceholder": "Пошук", + "platformTable.toolbarActionCreateButtonLabel": "Створити", + "platformTable.toolbarActionSaveButtonLabel": "Зберегти", + "platformTable.toolbarActionCancelButtonLabel": "Скасувати", + "platformTable.toolbarActionSortButtonTitle": "Сортувати", + "platformTable.toolbarActionFilterButtonTitle": "Фільтр", + "platformTable.toolbarActionGroupButtonTitle": "Сгрупувати", + "platformTable.toolbarActionColumnsButtonTitle": "Стовпці", + "platformTable.toolbarActionExpandAllButtonTitle": "Expand all", + "platformTable.toolbarActionCollapseAllButtonTitle": "Collapse all", + "platformTable.filterDialogNotFilteredLabel": "(Не відфільтровано)", + "platformTable.filterDialogFilterByLabel": "Фільтрувати за: {filterLabel}", + "platformTable.filterDialogFilterTitle": "Фільтр", + "platformTable.filterDialogFilterBy": "Фільтрувати за", + "platformTable.filterDialogConfirmBtnLabel": "OK", + "platformTable.filterDialogCancelBtnLabel": "Скасувати", + "platformTable.groupDialogHeader": "Сгрупувати", + "platformTable.groupDialogGroupOrderHeader": "Порядок групування", + "platformTable.groupDialogGroupOrderAsc": "За зростанням", + "platformTable.groupDialogGroupOrderDesc": "За спаданням", + "platformTable.groupDialogGroupByHeader": "Групувати за", + "platformTable.groupDialogNotGroupedLabel": "(Не згруповано)", + "platformTable.groupDialogConfirmBtnLabel": "OK", + "platformTable.groupDialogCancelBtnLabel": "Скасувати", + "platformTable.sortDialogHeader": "Сортувати", + "platformTable.sortDialogSortOrderHeader": "Порядок сортування", + "platformTable.sortDialogSortOrderAsc": "За зростанням", + "platformTable.sortDialogSortOrderDesc": "за спаданням", + "platformTable.sortDialogSortByHeader": "Сортувати за", + "platformTable.sortDialogNotSortedLabel": "(Не відсортовано)", + "platformTable.sortDialogConfirmBtnLabel": "OK", + "platformTable.sortDialogCancelBtnLabel": "Скасувати", + "platformTable.selectAllCheckboxLabel": "Вибрати все", + "platformTable.deselectAllCheckboxLabel": "Deselect all", + "platformTable.deselectSingleRow": "Щоб скасувати вибір, натисніть пробіл", + "platformTable.selectSingleRow": "Щоб вибрати рядок, натисніть пробіл", + "platformTable.deselectSingleRowTitle": "Клацніть, щоб зняти виділення", + "platformTable.selectSingleRowTitle": "Клацніть, щоб виділити рядок", + "platformThumbnail.detailsGotoPreviousButtonTitle": "Перейти до попереднього", + "platformThumbnail.detailsGotoNextButtonTitle": "Перейти до наступного", + "platformThumbnail.detailsDialogCloseBtnLabel": "Закрити", + "platformThumbnail.roleDescription": "Зображення", + "platformUploadCollection.moveToTitle": "Перемістити до", + "platformUploadCollection.moveToTitleFolder": "Папка", + "platformUploadCollection.moveToNewFolderBtnLabel": "Нова папка", + "platformUploadCollection.moveToAllFilesSubHeaderLabel": "Усі файли", + "platformUploadCollection.moveToConfirmBtn": "Перемістити", + "platformUploadCollection.moveToCloseBtn": "Скасувати", + "platformUploadCollection.newFolderTitle": "Нова папка", + "platformUploadCollection.newFolderAtRootInputLabel": "Назва нової папки", + "platformUploadCollection.newFolderAtFolderInputLabel": "Назва нової папки усередині {folderName}", + "platformUploadCollection.newFolderInputPlaceholder": "Введіть назву..", + "platformUploadCollection.newFolderInputErrorLabel": "Максимально дозволено { count, plural, one {1 символ} few {# символи} other {# символів} }", + "platformUploadCollection.newFolderDialogCreateBtnLabel": "Створити", + "platformUploadCollection.newFolderDialogCancelBtnLabel": "Скасувати", + "platformUploadCollection.breadcrumbLabelAllFiles": "Усі файли", + "platformUploadCollection.breadcrumbLabelAllFilesWithTotal": "Усі файли ({total})", + "platformUploadCollection.searchPlaceholder": "Пошук", + "platformUploadCollection.addBtnLabel": "Додати", + "platformUploadCollection.newFolderBtnLabel": "Нова папка", + "platformUploadCollection.moveToBtnLabel": "Перемістити до", + "platformUploadCollection.downloadBtnLabel": "Завантажити", + "platformUploadCollection.updateVersionBtnLabel": "Оновити версію", + "platformUploadCollection.removeBtnLabel": "Видалити", + "platformUploadCollection.folderIconTitle": "Значок папки", + "platformUploadCollection.fileIconTitle": "Значок файлу", + "platformUploadCollection.editFileNameInputPlaceholder": "Введіть назву", + "platformUploadCollection.editFileNameFileAlreadyExistsError": "Файл з такою назвою вже існує", + "platformUploadCollection.editFileNameFolderAlreadyExistsError": "Папка з такою назвою вже існує", + "platformUploadCollection.itemStatusSuccessful": "Успішно", + "platformUploadCollection.itemStatusUnsuccessful": "Невдало", + "platformUploadCollection.uploadNewFileAfterFailAction": "Виконати", + "platformUploadCollection.cancelUploadNewFileAction": "Скасувати", + "platformUploadCollection.itemMenuBtnTitle": "Більше", + "platformUploadCollection.dragDropAreaText": "Перетягніть файли для завантаження", + "platformUploadCollection.noDataText": "Файлів не знайдено", + "platformUploadCollection.noDataDescription": "Перетягніть файли для завантаження або скористайтеся кнопкою «Додати».", + "platformUploadCollection.paginationTotal": "Показано {from}-{to} із {total}", + "platformUploadCollection.resultsPerPage": "Результатів на сторінці", + "platformUploadCollection.messageCreateFailed": "Не вдалося створити {folderName}.", + "platformUploadCollection.messageCreateSuccess": "{folderName} успішно створено.", + "platformUploadCollection.messageUpdateVersionFailed": "Не вдалося оновити версію {folderName}.", + "platformUploadCollection.messageUpdateVersionSuccess": "Версія {folderName} оновлена.", + "platformUploadCollection.messageFileRenameFailed": "Не вдалося перейменувати \"{from}\" на \"{to}.\"", + "platformUploadCollection.messageFileRenameSuccess": "{from}\" перейменовано на \"{to}\".", + "platformUploadCollection.folderNamePluralization": "{ foldersCount, plural, one {1 папку} few {# папки} other {# папок} }", + "platformUploadCollection.fileNamePluralization": "{ filesCount, plural, one {1 файл} few {# файли} other {# файлів} }", + "platformUploadCollection.messageRemoveFoldersAndFilesFailed": "Не вдалося видалити {@@platformUploadCollection.folderNamePluralization} і {@@platformUploadCollection.fileNamePluralization}.", + "platformUploadCollection.messageRemoveFoldersAndFilesSuccess": "{@@platformUploadCollection.folderNamePluralization} і {@@platformUploadCollection.fileNamePluralization} видалено.", + "platformUploadCollection.messageRemoveFoldersFailed": "Не вдалося видалити {@@platformUploadCollection.folderNamePluralization}.", + "platformUploadCollection.messageRemoveFoldersSuccess": "Видалено {@@platformUploadCollection.folderNamePluralization}.", + "platformUploadCollection.messageRemoveFilesFailed": "Не вдалося видалити {@@platformUploadCollection.fileNamePluralization}.", + "platformUploadCollection.messageRemoveFilesSuccess": "Видалено {@@platformUploadCollection.fileNamePluralization}.", + "platformUploadCollection.messageRemoveFileOrFolderFailed": "Не вдалося видалити {name}.", + "platformUploadCollection.messageRemoveFileOrFolderSuccess": "{name} видалено.", + "platformUploadCollection.messageMoveFoldersAndFilesFailed": "Не вдалося перемістити {@@platformUploadCollection.folderNamePluralization} і {@@platformUploadCollection.fileNamePluralization} до {to}.", + "platformUploadCollection.messageMoveFoldersAndFilesSuccess": "{@@platformUploadCollection.folderNamePluralization} і {@@platformUploadCollection.fileNamePluralization} переміщено в {to}.", + "platformUploadCollection.messageMoveFoldersFailed": "Не вдалося перемістити {@@platformUploadCollection.folderNamePluralization} до {to}.", + "platformUploadCollection.messageMoveFoldersSuccess": "{@@platformUploadCollection.folderNamePluralization} переміщено до {to}.", + "platformUploadCollection.messageMoveFilesFailed": "Не вдалося перемістити {@@platformUploadCollection.fileNamePluralization} до {to}.", + "platformUploadCollection.messageMoveFilesSuccess": "{@@platformUploadCollection.fileNamePluralization} переміщено до {to}.", + "platformUploadCollection.messageMoveFileOrFolderFailed": "Не вдалося перемістити {name} до {to}.", + "platformUploadCollection.messageMoveFileOrFolderSuccess": "{name} переміщено в {to}.", + "platformUploadCollection.messageMoveRootFoldersAndFilesFailed": "Не вдалося перемістити {@@platformUploadCollection.folderNamePluralization} і {@@platformUploadCollection.fileNamePluralization} до всіх файлів.", + "platformUploadCollection.messageMoveRootFoldersAndFilesSuccess": "{@@platformUploadCollection.folderNamePluralization} і {@@platformUploadCollection.fileNamePluralization} переміщено до всіх файлів.", + "platformUploadCollection.messageMoveRootFoldersFailed": "Не вдалося перемістити {@@platformUploadCollection.folderNamePluralization} до всіх файлів.", + "platformUploadCollection.messageMoveRootFoldersSuccess": "{@@platformUploadCollection.folderNamePluralization} переміщено до всіх файлів.", + "platformUploadCollection.messageMoveRootFilesFailed": "Не вдалося перемістити {@@platformUploadCollection.fileNamePluralization} до всіх файлів.", + "platformUploadCollection.messageMoveRootFilesSuccess": "{@@platformUploadCollection.fileNamePluralization} переміщено до всіх файлів.", + "platformUploadCollection.messageMoveRootFileOrFolderFailed": "Не вдалося перемістити {name} до всіх файлів.", + "platformUploadCollection.messageMoveRootFileOrFolderSuccess": "{name} переміщено до всіх файлів.", + "platformUploadCollection.messageFileTypeMismatchPlural": "{filesCount, plural, one {1 файл}, few {# файли}, other {# файлів} } мають неправильний тип. Дозволені типи: {allowedTypes}.", + "platformUploadCollection.messageFileTypeMismatchSingular": "Файл \"{fileName}\" має неправильний тип. Дозволені типи: {allowedTypes}.", + "platformUploadCollection.messageFileSizeExceededPlural": "{ filesCount, plural, one {1 файл перевищує} few {# файли перевищують} other {# файлів перевищують} } максимальний розмір файлу. Дозволений максимальний розмір файлу: {maxFileSize}.", + "platformUploadCollection.messageFileSizeExceededSingular": "Файл \"{fileName}\" перевищує максимальний розмір файлу. Дозволений максимальний розмір файлу: {maxFileSize}.", + "platformUploadCollection.messageFileNameLengthExceededPlural": "{ filesCount, plural, one {1 файл перевищив} few {# файли перевищили} other {# файлів перевищили} } максимальну довжину імені файлу. Дозволена довжина імені файлу: {maxFilenameLength} символів.", + "platformUploadCollection.messageFileNameLengthExceededSingular": "Назва \"{fileName}\" перевищує максимальну довжину імені файлу. Дозволена довжина імені файлу: {maxFilenameLength} символів.", + "platformWizardGenerator.summarySectionEditStep": "Редагувати", + "platformMessagePopover.allErrors": "Всі", + "platformMessagePopover.defaultErrors.email": "Значення поля не відповідає формату E-mail", + "platformMessagePopover.defaultErrors.max": "Значення поля перевищує максимально допустиме", + "platformMessagePopover.defaultErrors.maxLength": "Довжина значення поля перевищує максимально допустиме", + "platformMessagePopover.defaultErrors.min": "Значення поля менше мінімально допустимого", + "platformMessagePopover.defaultErrors.minLength": "Довжина значення поля менше максимально допустимого", + "platformMessagePopover.defaultErrors.pattern": "Поле не відповідає формату", + "platformMessagePopover.defaultErrors.required": "Обов'язкове поле", + "platformMessagePopover.defaultErrors.requiredTrue": "Обов'язкове поле", + "platformVariantManagement.manage": "Управління", + "platformVariantManagement.saveAs": "Зберегти як", + "platformVariantManagement.saveView": "Зберегти Вид", + "platformVariantManagement.save": "Зберегти", + "platformVariantManagement.myViews": "Мої Види", + "platformVariantManagement.view": "Вид", + "platformVariantManagement.setAsDefault": "Встановити за замовчуванням", + "platformVariantManagement.public": "Публічний", + "platformVariantManagement.applyAutomatically": "Застосовувати автоматично", + "platformVariantManagement.requiredFieldError": "Обов'язкове поле.", + "platformVariantManagement.nameTakenFieldError": "Вид з таким ім'ям вже існує. Введіть інше ім'я.", + "platformVariantManagement.cancel": "Скасувати", + "platformVariantManagement.manageViews": "Управління видами", + "platformVariantManagement.markAsFavourite": "Позначити як обране", + "platformVariantManagement.sharing": "Спільне використання", + "platformVariantManagement.default": "За замовчуванням", + "platformVariantManagement.createdBy": "Створив(ла)", + "platformVariantManagement.removeVariant": "Видалити вид", + "platformVariantManagement.search": "Пошук", + "platformVariantManagement.access.public": "Публічне", + "platformVariantManagement.access.private": "Приватне", + "platformSelect.selectOptionLabel": "Виберіть опцію", + "fnSlider.minMaxDetails": "Мінімальне значення слайдера {min}, максимальне значення {max}", + "fnSlider.valueminDetails": "Поточне значення: {value}", + "fnSlider.valuemaxDetails": "Поточне значення: {value}", + "fnSlider.valueNowDetails": "Поточне значення: {value}", + "fnSwitch.semanticAcceptLabel": "Прийняти", + "fnSwitch.semanticDeclineLabel": "Відхилити", + "coreTree.expand": "Розгорнути вузол", + "coreTree.collapse": "Згорнути вузол", + "coreTree.noData": "Немає даних" +} diff --git a/libs/i18n/src/lib/translations/translations_zh-CN.json b/libs/i18n/src/lib/translations/translations_zh-CN.json new file mode 100644 index 00000000000..3c1fe512f17 --- /dev/null +++ b/libs/i18n/src/lib/translations/translations_zh-CN.json @@ -0,0 +1,503 @@ +{ + "coreMultiComboBox.selectAllLabel": "选择全部({selectedItems},共 {totalItems})", + "coreCarousel.leftNavigationBtnLabel": "上一项", + "coreCarousel.rightNavigationBtnLabel": "下一项", + "coreDatePicker.dateInputLabel": "日期输入", + "coreDatePicker.dateRangeInputLabel": "日期范围输入", + "coreDatePicker.displayCalendarToggleLabel": "打开选择器", + "coreDatePicker.valueStateSuccessMessage": "值状态成功", + "coreDatePicker.valueStateInformationMessage": "值状态信息", + "coreDatePicker.valueStateWarningMessage": "值状态警告", + "coreDatePicker.valueStateErrorMessage": "值状态错误", + "coreDatetimePicker.datetimeInputLabel": "日期与时间选择器", + "coreDatetimePicker.displayDatetimeToggleLabel": "打开选择器", + "coreDatetimePicker.displayTypeDateLabel": "日期", + "coreDatetimePicker.displayTypeTimeLabel": "时间", + "coreDatetimePicker.datetimeOkLabel": "确定", + "coreDatetimePicker.datetimeCancelLabel": "取消", + "coreFeedListItem.moreLabel": "显示更多", + "coreFeedListItem.lessLabel": "显示更少", + "coreGridList.filterBarCancelButtonTitle": "取消", + "coreGridList.listItemStatusAriaLabel": "列表项的状态:{status}。", + "coreGridList.listItemCounterAriaLabel": "列表项有{count}个子项。", + "coreGridList.listItemButtonDetailsTitle": "详情", + "coreGridList.listItemButtonDeleteTitle": "删除", + "coreGridList.listItemStatusContainsErrors": "有错误", + "coreGridList.listItemStatusLocked": "被锁定", + "coreGridList.listItemStatusDraft": "拟稿", + "coreMessageStrip.dismissLabel": "关闭", + "coreMultiInput.multiInputAriaLabel": "Multi Value Input", + "coreMultiInput.tokensCountText": "Contains {length, plural, =0 {no token} =1 {1 token} other {# tokens} }.", + "coreNavigation.mainNavigation": "Main Navigation", + "coreNavigation.navigationPath": "Navigation Path", + "coreNestedList.linkItemAriaLabel": "树项目{itemDetails},{index} / {total} {selectedDescription}", + "coreOverflowLayout.moreItemsButton": "{count}项更多", + "corePagination.pageLabel": "第{pageNumber}页", + "corePagination.currentPageAriaLabel": "目前在第{pageNumber}页", + "corePagination.labelBeforeInputMobile": "页:", + "corePagination.labelAfterInputMobile": " / {totalCount}", + "corePagination.inputAriaLabel": "页输入,目前所在页,页 {pageNumber} / {totalCount}", + "corePagination.itemsPerPageLabel": "每页显示结果:", + "corePagination.firstLabel": "第一页", + "corePagination.previousLabel": "上一页", + "corePagination.nextLabel": "下一页", + "corePagination.lastLabel": "最后一页", + "corePagination.ariaLabel": "分页", + "corePagination.totalResultsLabel": "总共{totalCount}个结果", + "coreProductSwitch.ariaLabel": "产品切换", + "coreShellbar.collapsedItemMenuLabel": "折叠的项目菜单", + "coreShellbar.cancel": "Cancel", + "coreShellbar.search": "Search", + "coreSlider.singleMinMaxDetails": "滑动条最小值为{min},最大值为{max}", + "coreSlider.singleValueminDetails": "值等于{value}", + "coreSlider.singleValuemaxDetails": "值等于{value}", + "coreSlider.singleValueNowDetails": "目前值等于{value}", + "coreSlider.multipleHandle1MinMaxDetails": "范围滑动条最小值为{min},最大值为{max}", + "coreSlider.multipleHandle1ValueminDetails": "值等于{value}", + "coreSlider.multipleHandle1ValuemaxDetails": "值等于{value}", + "coreSlider.multipleHandle1ValueNowDetails": "目前值等于{value}", + "coreSlider.multipleHandle2MinMaxDetails": "范围滑动条最小值为{min},最大值为{max}", + "coreSlider.multipleHandle2ValueminDetails": "值等于{value}", + "coreSlider.multipleHandle2ValuemaxDetails": "值等于{value}", + "coreSlider.multipleHandle2ValueNowDetails": "目前值等于{value}", + "coreSplitButton.expandButtonAriaLabel": "更多动作", + "coreSplitButton.arialLabel": "分体式按钮", + "coreSplitter.paginationItemAriaLabel": "分节", + "coreStepInput.incrementButtonTitle": "增加", + "coreStepInput.decrementButtonTitle": "减少", + "coreStepInput.ariaRoleDescription": "步进输入", + "coreSwitch.semanticAcceptLabel": "接受", + "coreSwitch.semanticDeclineLabel": "拒绝", + "coreTabs.tabListExpandButtonText": "更多", + "coreText.moreLabel": "显示更多", + "coreText.lessLabel": "显示更少", + "coreTime.componentAriaName": "时间选择器", + "coreTime.increaseHoursLabel": "加一小时", + "coreTime.hoursLabel": "小时", + "coreTime.decreaseHoursLabel": "减一小时", + "coreTime.increaseMinutesLabel": "加一分钟", + "coreTime.minutesLabel": "分钟", + "coreTime.decreaseMinutesLabel": "减一分钟", + "coreTime.increaseSecondsLabel": "加一秒", + "coreTime.secondsLabel": "秒", + "coreTime.decreaseSecondsLabel": "减一秒", + "coreTime.increasePeriodLabel": "更换时间范围", + "coreTime.periodLabel": "时间范围", + "coreTime.decreasePeriodLabel": "更换时间范围", + "coreTime.navigationInstruction": "按上下方向键在列表中的项之间移动。按左右方向键切换列表。", + "coreTimePicker.timePickerInputLabel": "时间选择器", + "coreTimePicker.timePickerButtonLabel": "打开选择器", + "coreToken.deleteButtonLabel": "可删除", + "coreToken.ariaRoleDescription": "标签", + "coreTokenizer.moreLabel": "{count}项更多", + "coreUploadCollection.menuOkText": "确定", + "coreUploadCollection.menuCancelText": "取消", + "coreUploadCollection.menuEditAriaLabel": "编辑", + "coreUploadCollection.menuDeleteAriaLabel": "删除", + "coreUploadCollection.menuOkAriaLabel": "确定", + "coreUploadCollection.menuCancelAriaLabel": "取消", + "coreUploadCollection.formItemPlaceholder": "文件名", + "coreWizard.ariaLabel": "向导", + "coreBreadcrumb.overflowTitleMore": "更多", + "platformActionBar.backButtonLabel": "返回", + "platformApprovalFlow.defaultWatchersLabel": "观察者", + "platformApprovalFlow.defaultTitle": "审批流程", + "platformApprovalFlow.nextButtonAriaLabel": "下一张", + "platformApprovalFlow.prevButtonAriaLabel": "上一张", + "platformApprovalFlow.editModeSaveButtonLabel": "保存", + "platformApprovalFlow.editModeExitButtonLabel": "退出", + "platformApprovalFlow.emptyTitle": "开始添加审批者与观察者", + "platformApprovalFlow.emptyHint": "选择\"添加节点\"来添加审批者。选择“观察者”输入框来添加观察者。", + "platformApprovalFlow.addNodeDialogHeaderAddApprovers": "添加审批者", + "platformApprovalFlow.addNodeDialogHeaderEditApprover": "编辑审批者", + "platformApprovalFlow.addNodeDialogHeaderAddApproverTeam": "用户/队", + "platformApprovalFlow.addNodeDialogHeaderDetail": "详情", + "platformApprovalFlow.addNodeDialogNodeType": "并行或串行", + "platformApprovalFlow.addNodeDialogNodeTypeSerial": "串行", + "platformApprovalFlow.addNodeDialogNodeTypeParallel": "并行", + "platformApprovalFlow.addNodeDialogApproverType": "审批者类型", + "platformApprovalFlow.addNodeDialogApproverTypeUser": "指定用户", + "platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone": "队中的任何人", + "platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone": "队中的所有人", + "platformApprovalFlow.addNodeDialogUserOrTeam": "用户/队", + "platformApprovalFlow.addNodeDialogAddToNext": "添加到下一个串行结点", + "platformApprovalFlow.addNodeDialogDueDate": "到期日", + "platformApprovalFlow.addNodeSearchPlaceholder": "搜索…", + "platformApprovalFlow.addNodeAddActionBtnLabel": "添加", + "platformApprovalFlow.addNodeCancelActionBtnLabel": "取消", + "platformApprovalFlow.addNodeSelectApproverActionBtnLabel": "选择", + "platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel": "取消", + "platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel": "关闭", + "platformApprovalFlow.userDetailsHeader": "详情", + "platformApprovalFlow.userDetailsSendReminderBtnLabel": "发送提醒", + "platformApprovalFlow.userDetailsCancelBtnLabel": "取消", + "platformApprovalFlow.messagesApproverAddedSuccess": "添加了1个审批者", + "platformApprovalFlow.messagesTeamAddedSuccess": "添加了1个队", + "platformApprovalFlow.messagesNodeEdited": "编辑了1个审批者", + "platformApprovalFlow.messagesNodeRemovedSingular": "移除了1个审批者", + "platformApprovalFlow.messagesNodeRemovedPlural": "审批者被移除了", + "platformApprovalFlow.messagesTeamRemoved": "移除了1个队", + "platformApprovalFlow.messagesErrorBuildGraph": "在试图建立图表时出现了一个错误。请检查初始数据。", + "platformApprovalFlow.messagesUndoAction": "撤销", + "platformApprovalFlow.nodeMembersCount": "{count}个成员", + "platformApprovalFlow.nodeVariousTeams": "多个队", + "platformApprovalFlow.nodeStatusDueToday": "今天到期", + "platformApprovalFlow.nodeStatusDueInXDays": "{count}日后到期", + "platformApprovalFlow.nodeStatusXDaysOverdue": "已过期{count}日", + "platformApprovalFlow.nodeActionAddApproversBefore": "在此之前添加审批者", + "platformApprovalFlow.nodeActionAddApproversAfter": "在此之后添加审批者", + "platformApprovalFlow.nodeActionAddApproversParallel": "添加并行的审批者", + "platformApprovalFlow.nodeActionEditApprover": "编辑审批者", + "platformApprovalFlow.nodeActionRemove": "移除", + "platformApprovalFlow.selectTypeDialogMoveApproverAs": "将审批者移动为", + "platformApprovalFlow.selectTypeDialogParallelOrSerial": "并行或串行", + "platformApprovalFlow.selectTypeDialogNodeTypeParallel": "并行审批者", + "platformApprovalFlow.selectTypeDialogNodeTypeSerial": "串行审批者", + "platformApprovalFlow.selectTypeDialogConfirmButton": "确认", + "platformApprovalFlow.selectTypeDialogCancelButton": "取消", + "platformApprovalFlow.toolbarAddStepButton": "添加结点", + "platformApprovalFlow.toolbarEditButton": "编辑", + "platformApprovalFlow.toolbarAddApproversBefore": "在此之前添加审批者", + "platformApprovalFlow.toolbarAddApproversAfter": "在此之后添加审批者", + "platformApprovalFlow.toolbarAddApproversParallel": "添加并行审批者", + "platformApprovalFlow.toolbarRemove": "移除", + "platformApprovalFlow.toolbarEditApprover": "编辑审批者", + "platformApprovalFlow.watchersInputPlaceholder": "搜索…", + "platformApprovalFlow.userListSelectedItemsCountSingular": "选择了1个项", + "platformApprovalFlow.userListSelectedItemsCountPlural": "选择了{count}个项", + "platformApprovalFlow.statusApproved": "approved", + "platformApprovalFlow.statusRejected": "rejected", + "platformApprovalFlow.statusInProgress": "in progress", + "platformApprovalFlow.statusNotStarted": "not started", + "platformFeedInput.userTitle": "用户", + "platformVHD.selectionBarLabel": "选定的和有条件的项", + "platformVHD.selectedAndConditionLabel": "选定的项和条件", + "platformVHD.footerClearSelectedTitle": "清空选定的项", + "platformVHD.footerClearSelectedAriaLabel": "清空选定的项", + "platformVHD.searchButtonLabel": "搜索", + "platformVHD.successButtonLabel": "确认", + "platformVHD.cancelButtonLabel": "取消", + "platformVHD.selectedEmptyLabel": "无选定的项和条件", + "platformVHD.searchPlaceholder": "搜索…", + "platformVHD.searchAdvancedSearchLabel": "筛选", + "platformVHD.searchShowAdvancedSearchLabel": "显示筛选", + "platformVHD.searchHideAdvancedSearchLabel": "隐藏筛选", + "platformVHD.searchShowAllAdvancedSearchLabel": "显示所有筛选", + "platformVHD.searchHideAllAdvancedSearchLabel": "隐藏所有筛选", + "platformVHD.selectTabDisplayCountLabel": "项({count})", + "platformVHD.selectTabMoreBtnLabel": "更多", + "platformVHD.selectTabCountHiddenA11yLabel": "包含{rowCount}行和{colCount}列", + "platformVHD.selectMobileTabBackBtnTitle": "返回", + "platformVHD.selectMobileTabBtnOpenDialogLabel": "打开对话框", + "platformVHD.selectMobileTabTitle": "{title}标签页", + "platformVHD.selectMobileConditionEmpty": "空", + "platformVHD.defineConditionTitle": "产品", + "platformVHD.defineConditionSelectedValueHiddenA11yLabel": "选定的值 {value}", + "platformVHD.defineConditionConditionsGroupHeaderInclude": "包含", + "platformVHD.defineConditionConditionsGroupHeaderExclude": "不包含", + "platformVHD.defineConditionFromPlaceholder": "从", + "platformVHD.defineConditionToPlaceholder": "到", + "platformVHD.defineConditionValuePlaceholder": "值", + "platformVHD.defineConditionRemoveConditionButtonTitle": "移除条件", + "platformVHD.defineConditionAddConditionButtonLabel": "添加", + "platformVHD.defineConditionAddConditionButtonTitle": "添加条件", + "platformVHD.defineConditionConditionStrategyLabelContains": "含有", + "platformVHD.defineConditionConditionStrategyLabelEqualTo": "等于", + "platformVHD.defineConditionConditionStrategyLabelBetween": "介于", + "platformVHD.defineConditionConditionStrategyLabelStartsWith": "开头为", + "platformVHD.defineConditionConditionStrategyLabelEndsWith": "结尾为", + "platformVHD.defineConditionConditionStrategyLabelLessThan": "小于", + "platformVHD.defineConditionConditionStrategyLabelLessThanEqual": "小于或等于", + "platformVHD.defineConditionConditionStrategyLabelGreaterThan": "大于", + "platformVHD.defineConditionConditionStrategyLabelGreaterThanEqual": "大于或等于", + "platformVHD.defineConditionConditionStrategyLabelEmpty": "空", + "platformVHD.defineConditionConditionStrategyLabelNotEqualTo": "不等于", + "platformVHD.defineConditionConditionStrategyLabelNotEmpty": "不为空", + "platformVHD.defineConditionMaxCountError": "请最多输入{count}个字符", + "platformVHD.selectTabTitle": "从列表选", + "platformVHD.searchTableEmptyMessage": "使用搜索获取结果", + "platformVHD.defineTabTitle": "定义条件", + "platformCombobox.countListResultsSingular": "1条搜索结果", + "platformCombobox.countListResultsPlural": "{count}条搜索结果", + "platformMultiCombobox.inputGlyphAriaLabel": "选择选项", + "platformMultiCombobox.inputIconTitle": "选择选项", + "platformMultiCombobox.mobileShowAllItemsButton": "显示所有项", + "platformMultiCombobox.mobileShowSelectedItemsButton": "显示选定的项", + "platformTextarea.counterMessageCharactersOverTheLimitSingular": "超出1个字符", + "platformTextarea.counterMessageCharactersOverTheLimitPlural": "超出{count}个字符", + "platformTextarea.counterMessageCharactersRemainingSingular": "还可以输入1个字符", + "platformTextarea.counterMessageCharactersRemainingPlural": "还可以输入{count}个字符", + "platformLink.roleDescriptionWithMedia": "媒体:{media}", + "platformList.loadingAriaLabel": "加载中", + "platformObjectListItem.detailsActionAriaLabel": "详情", + "platformObjectListItem.deleteActionAriaLabel": "删除", + "platformStandardListItem.detailsActionAriaLabel": "详情", + "platformStandardListItem.deleteActionAriaLabel": "删除", + "platformSearchField.clearButtonTitle": "清空", + "platformSearchField.submitButtonTitle": "搜索", + "platformSearchField.searchInputLabel": "搜索", + "platformSearchField.synchronizeButtonTitle": "同步", + "platformSearchField.searchSuggestionMessage": "找到{count}条建议。", + "platformSearchField.searchSuggestionNavigateMessage": "用上下方向键来导航", + "platformSmartFilterBar.searchPlaceholder": "搜索…", + "platformSmartFilterBar.submitButtonLabel": "确认", + "platformSmartFilterBar.filtersButtonLabel": "筛选({filtersCount})", + "platformSmartFilterBar.showFiltersButtonLabel": "显示筛选", + "platformSmartFilterBar.hideFiltersButtonLabel": "隐藏筛选", + "platformSmartFilterBar.defineConditionsRemoveConditionButtonTitle": "移除条件", + "platformSmartFilterBar.defineConditionsAddConditionButtonLabel": "添加条件", + "platformSmartFilterBar.defineConditionsSubmitButtonLabel": "确认", + "platformSmartFilterBar.defineConditionsCancelButton": "取消", + "platformSmartFilterBar.selectFiltersHeader": "筛选", + "platformSmartFilterBar.selectFiltersAvailableFiltersText": "可用的筛选", + "platformSmartFilterBar.selectFiltersFilterColumnLabel": "筛选", + "platformSmartFilterBar.selectFiltersActiveColumnLabel": "使用中", + "platformSmartFilterBar.selectFiltersSubmitButtonLabel": "确认", + "platformSmartFilterBar.selectFiltersCancelButton": "取消", + "platformSmartFilterBar.filterConditionContains": "含有", + "platformSmartFilterBar.filterConditionEqualTo": "等于", + "platformSmartFilterBar.filterConditionBetween": "介于", + "platformSmartFilterBar.filterConditionBeginsWith": "开头为", + "platformSmartFilterBar.filterConditionEndsWith": "结尾为", + "platformSmartFilterBar.filterConditionLessThan": "小于", + "platformSmartFilterBar.filterConditionLessThanOrEqualTo": "小于或等于", + "platformSmartFilterBar.filterConditionGreaterThan": "大于", + "platformSmartFilterBar.filterConditionGreaterThanOrEqualTo": "大于或等于", + "platformSmartFilterBar.filterConditionAfter": "日期之后", + "platformSmartFilterBar.filterConditionOnOrAfter": "此日期或之后", + "platformSmartFilterBar.filterConditionBefore": "日期之前", + "platformSmartFilterBar.filterConditionBeforeOrOn": "此日期或之前", + "platformSmartFilterBar.filterConditionValuePlaceholder": "值", + "platformSmartFilterBar.filterConditionValueFromPlaceholder": "从", + "platformSmartFilterBar.filterConditionValueToPlaceholder": "到", + "platformSmartFilterBar.settingsCategoryAll": "全选", + "platformSmartFilterBar.settingsCategoryVisible": "可见的", + "platformSmartFilterBar.settingsCategoryActive": "使用中的", + "platformSmartFilterBar.settingsCategoryVisibleAndActive": "可见的和使用中的", + "platformSmartFilterBar.settingsCategoryMandatory": "强制性的", + "platformSmartFilterBar.manageFieldConditions": "Manage field conditions", + "platformSmartFilterBar.refreshButtonAriaLabel": "Refresh", + "platformTable.headerMenuSortAsc": "升序排序", + "platformTable.headerMenuSortDesc": "降序排序", + "platformTable.headerMenuGroup": "分组", + "platformTable.headerMenuFreeze": "冻结", + "platformTable.headerMenuEndFreeze": "Freeze to End", + "platformTable.headerMenuUnfreeze": "解冻标题菜单", + "platformTable.headerMenuFilter": "筛选", + "platformTable.defaultEmptyMessage": "没有找到相关数据", + "platformTable.emptyCell": "空", + "platformTable.noVisibleColumnsMessage": "Right now, there are no visible columns in the table. Please select the columns you need in the table settings.", + "platformTable.resetChangesButtonLabel": "重置", + "platformTable.editableCellNumberPlaceholder": "输入值", + "platformTable.editableCellDatePlaceholder": "输入值", + "platformTable.editableCellStringPlaceholder": "输入值", + "platformTable.P13ColumnsDialogHeader": "列", + "platformTable.P13ColumnsDialogSearchPlaceholder": "搜索…", + "platformTable.P13ColumnsDialogsShowSelected": "显示选定的", + "platformTable.P13ColumnsDialogShowAll": "显示全部 ", + "platformTable.P13ColumnsDialogSelectAll": "选择全部({selectedColumnsCount} / {selectableColumnsCount})", + "platformTable.P13ColumnsDialogConfirmationBtnLabel": "确定", + "platformTable.P13ColumnsDialogCancelBtnLabel": "取消", + "platformTable.P13ColumnsDialogMoveToTopBtn": "移至顶部", + "platformTable.P13ColumnsDialogMoveUpBtn": "上移", + "platformTable.P13ColumnsDialogMoveDownBtn": "下移", + "platformTable.P13ColumnsDialogMoveToBottomBtn": "移至底部", + "platformTable.P13FilterStrategyLabelBetween": "介于", + "platformTable.P13FilterStrategyLabelContains": "含有", + "platformTable.P13FilterStrategyLabelBeginsWith": "开头为", + "platformTable.P13FilterStrategyLabelEndsWith": "结尾为", + "platformTable.P13FilterStrategyLabelEqualTo": "等于", + "platformTable.P13FilterStrategyLabelGreaterThan": "大于", + "platformTable.P13FilterStrategyLabelGreaterThanOrEqualTo": "大于或等于", + "platformTable.P13FilterStrategyLabelLessThan": "小于", + "platformTable.P13FilterStrategyLabelLessThanOrEqualTo": "小于或等于", + "platformTable.P13FilterStrategyLabelAfter": "日期之后", + "platformTable.P13FilterStrategyLabelOnOrAfter": "此日期或之后", + "platformTable.P13FilterStrategyLabelBefore": "日期之前", + "platformTable.P13FilterStrategyLabelBeforeOrOn": "此日期或之前", + "platformTable.P13FilterStrategyLabelNotDefined": "未定义", + "platformTable.P13FilterBooleanOptionNotDefined": " ", + "platformTable.P13FilterBooleanOptionTrue": "是", + "platformTable.P13FilterBooleanOptionFalse": "否", + "platformTable.P13FilterDialogHeader": "筛选方式", + "platformTable.P13FilterDialogIncludePanelTitleWithCount": "包括({count})", + "platformTable.P13FilterDialogIncludePanelTitleWithoutCount": "包括", + "platformTable.P13FilterDialogExcludePanelTitleWithCount": "排除({count})", + "platformTable.P13FilterDialogExcludePanelTitleWithoutCount": "排除", + "platformTable.P13FilterDialogRemoveFilterBtnTitle": "移除筛选", + "platformTable.P13FilterDialoAddFilterBtnTitle": "添加筛选", + "platformTable.P13FilterDialogConfirmationBtnLabel": "确定", + "platformTable.P13FilterDialogCancelBtnLabel": "取消", + "platformTable.P13GroupDialogHeader": "分组", + "platformTable.P13GroupDialogNoneSelectedColumnSelectPlaceholder": "(无)", + "platformTable.P13GroupDialogShowFieldAsColumnCheckboxLabel": "显示领域为列", + "platformTable.P13GroupDialogRemoveGroupBtnTitle": "移除", + "platformTable.P13GroupDialogAddNewGroupBtnTitle": "添加", + "platformTable.P13GroupDialogConfirmationBtnLabel": "确定", + "platformTable.P13GroupDialogCancelBtnLabel": "取消", + "platformTable.P13SortDialogHeader": "排序", + "platformTable.P13SortDialogNoneSelectedColumn": "(无)", + "platformTable.P13SortDialogNoneSelectedSorting": "(无)", + "platformTable.P13SortDialogSortOrderSelectOptionAsc": "升序", + "platformTable.P13SortDialogSortOrderSelectOptionDesc": "降序", + "platformTable.P13SortDialogRemoveSortBtnTitle": "移除", + "platformTable.P13SortDialogAddNewSortBtnTitle": "添加", + "platformTable.P13SortDialogConfirmationBtnLabel": "确定", + "platformTable.P13SortDialogCancelBtnLabel": "取消", + "platformTable.toolbarSearchPlaceholder": "搜索…", + "platformTable.toolbarActionCreateButtonLabel": "新建", + "platformTable.toolbarActionSaveButtonLabel": "保存", + "platformTable.toolbarActionCancelButtonLabel": "取消", + "platformTable.toolbarActionSortButtonTitle": "排序", + "platformTable.toolbarActionFilterButtonTitle": "筛选", + "platformTable.toolbarActionGroupButtonTitle": "分组", + "platformTable.toolbarActionColumnsButtonTitle": "列", + "platformTable.toolbarActionExpandAllButtonTitle": "Expand all", + "platformTable.toolbarActionCollapseAllButtonTitle": "Collapse all", + "platformTable.filterDialogNotFilteredLabel": "(未筛选)", + "platformTable.filterDialogFilterByLabel": "筛选方式:{filterLabel}", + "platformTable.filterDialogFilterTitle": "筛选", + "platformTable.filterDialogFilterBy": "筛选方式", + "platformTable.filterDialogConfirmBtnLabel": "确定", + "platformTable.filterDialogCancelBtnLabel": "取消", + "platformTable.groupDialogHeader": "分组", + "platformTable.groupDialogGroupOrderHeader": "分组顺序", + "platformTable.groupDialogGroupOrderAsc": "升序", + "platformTable.groupDialogGroupOrderDesc": "降序", + "platformTable.groupDialogGroupByHeader": "分组方式", + "platformTable.groupDialogNotGroupedLabel": "(未分组)", + "platformTable.groupDialogConfirmBtnLabel": "确定", + "platformTable.groupDialogCancelBtnLabel": "取消", + "platformTable.sortDialogHeader": "排序", + "platformTable.sortDialogSortOrderHeader": "排序顺序", + "platformTable.sortDialogSortOrderAsc": "升序", + "platformTable.sortDialogSortOrderDesc": "降序", + "platformTable.sortDialogSortByHeader": "排序方式", + "platformTable.sortDialogNotSortedLabel": "(未排序)", + "platformTable.sortDialogConfirmBtnLabel": "确定", + "platformTable.sortDialogCancelBtnLabel": "取消", + "platformTable.selectAllCheckboxLabel": "Select all", + "platformTable.deselectAllCheckboxLabel": "Deselect all", + "platformTable.deselectSingleRow": "To deselect row, press SPACEBAR", + "platformTable.selectSingleRow": "To select row, press SPACEBAR", + "platformTable.deselectSingleRowTitle": "Click to deselect", + "platformTable.selectSingleRowTitle": "Click to select", + "platformThumbnail.detailsGotoPreviousButtonTitle": "上一项", + "platformThumbnail.detailsGotoNextButtonTitle": "下一项", + "platformThumbnail.detailsDialogCloseBtnLabel": "关闭", + "platformThumbnail.roleDescription": "图像", + "platformUploadCollection.moveToTitle": "移至", + "platformUploadCollection.moveToTitleFolder": "文件夹", + "platformUploadCollection.moveToNewFolderBtnLabel": "新建文件夹", + "platformUploadCollection.moveToAllFilesSubHeaderLabel": "全部文件", + "platformUploadCollection.moveToConfirmBtn": "移动", + "platformUploadCollection.moveToCloseBtn": "取消", + "platformUploadCollection.newFolderTitle": "新建文件夹", + "platformUploadCollection.newFolderAtRootInputLabel": "新建文件夹名称", + "platformUploadCollection.newFolderAtFolderInputLabel": "{folderName}内的新文件夹名称", + "platformUploadCollection.newFolderInputPlaceholder": "在此输入…", + "platformUploadCollection.newFolderInputErrorLabel": "请最多输入{count}个字符", + "platformUploadCollection.newFolderDialogCreateBtnLabel": "新建", + "platformUploadCollection.newFolderDialogCancelBtnLabel": "取消", + "platformUploadCollection.breadcrumbLabelAllFiles": "全部文件", + "platformUploadCollection.breadcrumbLabelAllFilesWithTotal": "全部文件({total})", + "platformUploadCollection.searchPlaceholder": "搜索…", + "platformUploadCollection.addBtnLabel": "添加", + "platformUploadCollection.newFolderBtnLabel": "新建文件夹", + "platformUploadCollection.moveToBtnLabel": "移至", + "platformUploadCollection.downloadBtnLabel": "下载", + "platformUploadCollection.updateVersionBtnLabel": "更新版本", + "platformUploadCollection.removeBtnLabel": "移除", + "platformUploadCollection.folderIconTitle": "文件夹图标", + "platformUploadCollection.fileIconTitle": "文件图标", + "platformUploadCollection.editFileNameInputPlaceholder": "输入一个名称", + "platformUploadCollection.editFileNameFileAlreadyExistsError": "该名称的文件已经存在", + "platformUploadCollection.editFileNameFolderAlreadyExistsError": "该名称的文件夹已经存在", + "platformUploadCollection.itemStatusSuccessful": "成功", + "platformUploadCollection.itemStatusUnsuccessful": "未能成功", + "platformUploadCollection.uploadNewFileAfterFailAction": "Run", + "platformUploadCollection.cancelUploadNewFileAction": "取消", + "platformUploadCollection.itemMenuBtnTitle": "更多", + "platformUploadCollection.dragDropAreaText": "拖动文件进行上传", + "platformUploadCollection.noDataText": "没有发现文件", + "platformUploadCollection.noDataDescription": "投掷文件进行上传,或使用 \"添加 \"按钮。", + "platformUploadCollection.paginationTotal": "显示{from}-{to}个,总共{total}个", + "platformUploadCollection.resultsPerPage": "每页结果", + "platformUploadCollection.messageCreateFailed": "未能创建{folderName}。", + "platformUploadCollection.messageCreateSuccess": "{folderName}已被成功创建。", + "platformUploadCollection.messageUpdateVersionFailed": "未能更新{folderName}的版本。", + "platformUploadCollection.messageUpdateVersionSuccess": "{folderName}的版本已被更新。", + "platformUploadCollection.messageFileRenameFailed": "未能将\"{from}\"重新命名为\"{to}\"。", + "platformUploadCollection.messageFileRenameSuccess": "\"{from}\"已被重新命名为\"{to}\"。", + "platformUploadCollection.messageRemoveFoldersAndFilesFailed": "未能移除{foldersCount}个文件夹和{filesCount}个文件。", + "platformUploadCollection.messageRemoveFoldersAndFilesSuccess": "{foldersCount}个文件夹和{filesCount}个文件已被移除。", + "platformUploadCollection.messageRemoveFoldersFailed": "未能移除{foldersCount}个文件夹。", + "platformUploadCollection.messageRemoveFoldersSuccess": "{foldersCount}个文件夹已被移除。", + "platformUploadCollection.messageRemoveFilesFailed": "未能移除{filesCount}个文件。", + "platformUploadCollection.messageRemoveFilesSuccess": "{filesCount}个未见已被移除。", + "platformUploadCollection.messageRemoveFileOrFolderFailed": "未能移除{name}。", + "platformUploadCollection.messageRemoveFileOrFolderSuccess": "{name}已被移除。", + "platformUploadCollection.messageMoveFoldersAndFilesFailed": "未能将{foldersCount}个文件夹和{filesCount}个文件移至{to}。", + "platformUploadCollection.messageMoveFoldersAndFilesSuccess": "{foldersCount}个文件夹和{filesCount}个文件已被移至{to}。", + "platformUploadCollection.messageMoveFoldersFailed": "未能将{foldersCount}个文件夹移至{to}。", + "platformUploadCollection.messageMoveFoldersSuccess": "{foldersCount}个文件夹已被移至{to}。", + "platformUploadCollection.messageMoveFilesFailed": "未能将{filesCount}个文件移至{to}。", + "platformUploadCollection.messageMoveFilesSuccess": "{filesCount}个文件已被移至{to}。", + "platformUploadCollection.messageMoveFileOrFolderFailed": "未能将{name}移至{to}。", + "platformUploadCollection.messageMoveFileOrFolderSuccess": "{name}已被移至{to}。", + "platformUploadCollection.messageMoveRootFoldersAndFilesFailed": "未能将{foldersCount}个文件夹和{filesCount}个文件移至全部文件。", + "platformUploadCollection.messageMoveRootFoldersAndFilesSuccess": "{foldersCount}个文件夹和{filesCount}个文件已被移至全部文件。", + "platformUploadCollection.messageMoveRootFoldersFailed": "未能将{foldersCount}个文件夹移至全部文件。", + "platformUploadCollection.messageMoveRootFoldersSuccess": "{foldersCount}个文件夹已被移至到全部文件。", + "platformUploadCollection.messageMoveRootFilesFailed": "未能将{filesCount}个文件移至全部文件。", + "platformUploadCollection.messageMoveRootFilesSuccess": "{filesCount}个文件已被移至全部文件。", + "platformUploadCollection.messageMoveRootFileOrFolderFailed": "未能将{name}移至全部文件。", + "platformUploadCollection.messageMoveRootFileOrFolderSuccess": "{name}已被移至全部文件。", + "platformUploadCollection.messageFileTypeMismatchPlural": "{filesCount}个文件的类型不符合要求。允许的文件类型:{allowedTypes}。", + "platformUploadCollection.messageFileTypeMismatchSingular": "文件\"{fileName}\"的类型不符合要求。允许的文件类型:{allowedTypes}。", + "platformUploadCollection.messageFileSizeExceededPlural": "{filesCount}个文件超过了文件大小限制。允许的最大文件大小:{maxFileSize}。", + "platformUploadCollection.messageFileSizeExceededSingular": "文件\"{fileName}\"超过了文件大小限制。允许的最大文件大小:{maxFileSize}。", + "platformUploadCollection.messageFileNameLengthExceededPlural": "{filesCount}个文件超过了文件名称长度限制。允许的文件名称长度:{maxFilenameLength}个字符。", + "platformUploadCollection.messageFileNameLengthExceededSingular": "名称\"{fileName}\"超过了文件名称长度限制。允许的文件名称长度:{maxFilenameLength}个字符。", + "platformWizardGenerator.summarySectionEditStep": "编辑", + "platformMessagePopover.allErrors": "All", + "platformMessagePopover.defaultErrors.email": "Email is invalid", + "platformMessagePopover.defaultErrors.max": "The field exceeds maximum value", + "platformMessagePopover.defaultErrors.maxLength": "The field exceeds maximum length", + "platformMessagePopover.defaultErrors.min": "The field value is less than allowed", + "platformMessagePopover.defaultErrors.minLength": "The field length is less than allowed", + "platformMessagePopover.defaultErrors.pattern": "The field value is invalid", + "platformMessagePopover.defaultErrors.required": "The field is mandatory", + "platformMessagePopover.defaultErrors.requiredTrue": "The field is mandatory", + "platformVariantManagement.manage": "Manage", + "platformVariantManagement.saveAs": "Save as", + "platformVariantManagement.saveView": "Save View", + "platformVariantManagement.save": "Save", + "platformVariantManagement.myViews": "My Views", + "platformVariantManagement.view": "View", + "platformVariantManagement.setAsDefault": "Set as Default", + "platformVariantManagement.public": "Public", + "platformVariantManagement.applyAutomatically": "Apply Automatically", + "platformVariantManagement.requiredFieldError": "This field is required.", + "platformVariantManagement.nameTakenFieldError": "Variant with such name already exists. Please chose a different name.", + "platformVariantManagement.cancel": "Cancel", + "platformVariantManagement.manageViews": "Manage Views", + "platformVariantManagement.markAsFavourite": "Mark as Favourite", + "platformVariantManagement.sharing": "Sharing", + "platformVariantManagement.default": "Default", + "platformVariantManagement.createdBy": "Created By", + "platformVariantManagement.removeVariant": "Remove View", + "platformVariantManagement.search": "Search", + "platformVariantManagement.access.public": "Public", + "platformVariantManagement.access.private": "Private", + "platformSelect.selectOptionLabel": "选择一个选项", + "fnSlider.minMaxDetails": "滑动条最小值为{min},最大值为{max}", + "fnSlider.valueminDetails": "值等于{value}", + "fnSlider.valuemaxDetails": "值等于{value}", + "fnSlider.valueNowDetails": "目前值等于{value}", + "fnSwitch.semanticAcceptLabel": "接受", + "fnSwitch.semanticDeclineLabel": "拒绝", + "coreTree.expand": "Expand node", + "coreTree.collapse": "Collapse node", + "coreTree.noData": "No data" +} diff --git a/libs/i18n/src/lib/utils/flatten-translations.ts b/libs/i18n/src/lib/utils/flatten-translations.ts new file mode 100644 index 00000000000..fe5d713f309 --- /dev/null +++ b/libs/i18n/src/lib/utils/flatten-translations.ts @@ -0,0 +1,30 @@ +import { FdLanguageKeyFunction, FdLanguagePatch } from '../models'; + +/** + * Transforms hierarchical object into object with flat keys + * every {parent: { child: 'value' } } becomes { 'parent.child': 'value' } + * @param translations + * @param prefix + * @param translationValueTransformer + */ +export function flattenTranslations( + translations: FdLanguagePatch, + prefix: string | null = null, + translationValueTransformer?: (value: string | FdLanguageKeyFunction) => string | FdLanguageKeyFunction +): Record { + if (!translations) { + return {}; + } + return Object.keys(translations).reduce((acc: any, key) => { + const translationValue = translations[key]; + const globalKey = prefix ? `${prefix}.${key}` : key; + if (typeof translationValue === 'string' || typeof translationValue === 'function') { + acc[globalKey] = translationValueTransformer + ? translationValueTransformer(translationValue) + : translationValue; + } else { + Object.assign(acc, flattenTranslations(translationValue, globalKey, translationValueTransformer)); + } + return acc; + }, {}); +} diff --git a/libs/i18n/src/lib/utils/index.ts b/libs/i18n/src/lib/utils/index.ts index 08740f8b38b..7e18c7d3be7 100644 --- a/libs/i18n/src/lib/utils/index.ts +++ b/libs/i18n/src/lib/utils/index.ts @@ -1,3 +1,5 @@ -export * from './tokens'; +export * from './load-json'; export * from './patch-language'; +export * from './resolve-helpers'; +export * from './tokens'; export * from './translation-resolver'; diff --git a/libs/i18n/src/lib/utils/load-json.spec.ts b/libs/i18n/src/lib/utils/load-json.spec.ts new file mode 100644 index 00000000000..6bbc1a9efd7 --- /dev/null +++ b/libs/i18n/src/lib/utils/load-json.spec.ts @@ -0,0 +1,66 @@ +import { loadJson } from './load-json'; + +describe('loadJson', () => { + const testCases = [ + [ + { + 'something.key.1': 'v', + 'something.key.2': 'v', + 'something.key.3': 'v' + }, + { + something: { + key: { + 1: 'v', + 2: 'v', + 3: 'v' + } + } + } + ], + [ + { + 'something.key': 'v', + 'something.else': 'v', + 'something.else2': 'v' + }, + { + something: { + key: 'v', + else: 'v', + else2: 'v' + } + } + ], + [ + { + 'something.key': 'v', + 'something.else': 'v', + 'something.else2': 'v', + 'else.key': 'v', + 'else.else': 'v', + 'else.else2': 'v', + else2: 'v' + }, + { + something: { + key: 'v', + else: 'v', + else2: 'v' + }, + else: { + key: 'v', + else: 'v', + else2: 'v' + }, + else2: 'v' + } + ] + ]; + testCases.forEach(([input, output]) => { + it(`should convert ${JSON.stringify(input)} to ${JSON.stringify(output)}`, () => { + const result = loadJson(input); + expect(result).toEqual(output); + }); + }); +}); diff --git a/libs/i18n/src/lib/utils/load-json.ts b/libs/i18n/src/lib/utils/load-json.ts new file mode 100644 index 00000000000..6047cd3b377 --- /dev/null +++ b/libs/i18n/src/lib/utils/load-json.ts @@ -0,0 +1,30 @@ +import { FdLanguage } from '../models/lang'; + +interface RecursiveRecord { + [key: string]: string | RecursiveRecord; +} + +const set = (obj: RecursiveRecord, path: string, value: string): void => { + const pathParts = path.split('.'); + let pathValue = obj; + for (let i = 0; i < pathParts.length - 1; i++) { + const part = pathParts[i]; + pathValue[part] = pathValue[part] || {}; + pathValue = pathValue[part] as RecursiveRecord; + } + pathValue[pathParts[pathParts.length - 1]] = value; +}; + +/** + * Converts a flat object to a hierarchy object + * in source object { 'key1.key2': value } will be converted to { key1: { key2: value } } + * + * @param source + */ +export function loadJson(source: Record): FdLanguage { + const result = {}; + Object.entries(source).forEach(([key, value]) => { + set(result, key, value); + }); + return result as FdLanguage; +} diff --git a/libs/i18n/src/lib/utils/patch-language.ts b/libs/i18n/src/lib/utils/patch-language.ts index b32e8d1cca8..a1fa432bbf9 100644 --- a/libs/i18n/src/lib/utils/patch-language.ts +++ b/libs/i18n/src/lib/utils/patch-language.ts @@ -3,8 +3,18 @@ import { cloneDeep, merge } from 'lodash-es'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import { FdLanguage, FdLanguagePatch } from '../models'; +import { flattenTranslations } from './flatten-translations'; +import { loadJson } from './load-json'; import { FD_LANGUAGE } from './tokens'; +export const patchedObj = ( + lang: FdLanguage, + patch: FdLanguagePatch | ((lang: FdLanguage) => FdLanguagePatch) +): FdLanguage => { + const patchObj = typeof patch === 'function' ? patch(lang) : patch; + return loadJson(flattenTranslations(patchObj, null)); +}; + /** * DI utility function, that allows to override `FD_LANGUAGE` injection token with part of the language object, that is used globally * @param languagePatch part of the language object to be overriden, or a function that returns such object and receives existing language as a parameter @@ -42,11 +52,7 @@ export function patchLanguage( return { provide: FD_LANGUAGE, useFactory: (lang$: Observable) => - lang$.pipe( - map((lang) => - merge(cloneDeep(lang), typeof languagePatch === 'function' ? languagePatch(lang) : languagePatch) - ) - ), + lang$.pipe(map((lang) => merge(cloneDeep(lang), patchedObj(lang, languagePatch)))), deps: [[new SkipSelf(), FD_LANGUAGE]] }; } diff --git a/libs/i18n/src/lib/utils/replace-double-curly-braces.ts b/libs/i18n/src/lib/utils/replace-double-curly-braces.ts new file mode 100644 index 00000000000..73c8fa137e7 --- /dev/null +++ b/libs/i18n/src/lib/utils/replace-double-curly-braces.ts @@ -0,0 +1,16 @@ +// Regular expression to find and replace double curly braces +import { FdLanguageKeyFunction } from '../models/lang'; + +const regex = /{{\s*([^{}]+?)\s*}}/g; + +/** + * Replaces double curly braces with single curly braces. + */ +export function replaceDoubleCurlyBraces(input: string | FdLanguageKeyFunction): string | FdLanguageKeyFunction { + if (typeof input !== 'string') { + return input; + } + + // Use a callback function to preserve ICU expressions + return input.replace(regex, (_match, group) => `{${group}}`); +} diff --git a/libs/i18n/src/lib/utils/resolve-helpers.ts b/libs/i18n/src/lib/utils/resolve-helpers.ts new file mode 100644 index 00000000000..059f0131192 --- /dev/null +++ b/libs/i18n/src/lib/utils/resolve-helpers.ts @@ -0,0 +1,71 @@ +import { inject } from '@angular/core'; +import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; +import { Nullable } from '@fundamental-ngx/cdk/utils'; +import { Observable, Subject, tap } from 'rxjs'; +import { map, takeUntil } from 'rxjs/operators'; +import { FdLanguage, FdLanguageKeyArgs } from '../models/lang'; +import { FD_LANGUAGE } from './tokens'; +import { TranslationResolver } from './translation-resolver'; + +type ResolveFn = (key: string, args?: Nullable) => ReturnType; + +/** + * Helper utility function for getting translations + */ +export function resolveTranslation(): ResolveFn; +export function resolveTranslation(key: string, args?: Nullable, fdLang?: FdLanguage): string; +// eslint-disable-next-line jsdoc/require-jsdoc +export function resolveTranslation( + key?: string, + args?: Nullable, + fdLang?: FdLanguage +): string | ResolveFn { + let _lang = fdLang; + const _stopUpdating$ = new Subject(); + if (!_lang) { + inject(FD_LANGUAGE) + .pipe( + tap((r) => (_lang = r)), + takeUntilDestroyed(), + takeUntil(_stopUpdating$) + ) + .subscribe(); + } + const resolver = new TranslationResolver(); + const fn = (k: string, ctx?: Nullable): string => + resolver.resolve(_lang || ({} as unknown as FdLanguage), k, ctx || {}); + if (!key) { + return fn; + } + const result = fn(key, args || {}); + _stopUpdating$.next(); + return result; +} + +/** + * Helper utility function for getting translations. + * If no parameters are passed it will return the function which + * is bound to the current DI FD_LANGUAGE instance + */ +export function resolveTranslation$(): ResolveFn>; +export function resolveTranslation$( + key: string, + args?: Nullable, + fdLang?: Observable +): Observable; +// eslint-disable-next-line jsdoc/require-jsdoc +export function resolveTranslation$( + key?: string, + args?: Nullable, + fdLang?: Observable +): Observable | ResolveFn> { + const lang$ = fdLang ? fdLang : (inject(FD_LANGUAGE) as Observable); + const resolver = new TranslationResolver(); + const fn = (k: string, ctx?: Nullable): Observable => + lang$.pipe(map((lang) => resolver.resolve(lang, k, ctx || {}))); + + if (!key) { + return fn; + } + return fn(key, args || {}); +} diff --git a/libs/i18n/src/lib/utils/translation-resolver.spec.ts b/libs/i18n/src/lib/utils/translation-resolver.spec.ts index c4df6676b48..9b578f4636c 100644 --- a/libs/i18n/src/lib/utils/translation-resolver.spec.ts +++ b/libs/i18n/src/lib/utils/translation-resolver.spec.ts @@ -1,45 +1,65 @@ -import { FdLanguageKeyArgs } from '../models'; +import { FdLanguageKeyArgs } from '../models/lang'; import { TranslationResolver } from './translation-resolver'; describe('TranslationResolver', () => { - class TestTranslatioResolver extends TranslationResolver { - // wrapper for internal "_interpolate" method - testInterpolate(expression: string, args?: FdLanguageKeyArgs): string { - return super._interpolate(expression, args); - } - } - - let resolver: TestTranslatioResolver; + let resolver: TranslationResolver; + const lang: any = { + something: 'double braces {{here}}', + internalRef: 'here', + testWithInternalReference: '{@@internalRef} is here', + testWithMultipleInternalReferences: 'Number 1 {@@testWithInternalReference} and {@@internalRef} is here', + testWithMultipleInternalReferencesAndContext: '{content} { @@testWithInternalReference } and { @@internalRef }', + contextualized: '{ content }', + pluralization: 'test {count, plural, =1 {one item} other {# items} }', + internalRefWithContext: 'context is "{content}"', + testWithInternalReferenceAndContext: '{@@internalRefWithContext} right here', + parent: { + child: 'child', + withInternalRef: '{@@parent.child}' + }, + internalRefInIcu: 'test {count, plural, =1 {one item {@@internalRef}} other {# items {@@internalRef}} }' + }; + const resolve = (key: string, args?: FdLanguageKeyArgs): string => resolver.resolve(lang, key, args); beforeEach(() => { - resolver = new TestTranslatioResolver(); + resolver = new TranslationResolver(); }); - - const cases: [unprocessed: string, args: Record | undefined, result: string][] = [ - ['{{ count }} items', { count: 5 }, '5 items'], - ['{{ count }} items', { count: 'some' }, 'some items'], - ['{{ count }} items', { count: {} }, '[object Object] items'], - ['{{ another_count }} items', { another_count: 5 }, '5 items'], - ['{{ anotherCount }} items', { anotherCount: 5 }, '5 items'], - ['{{ anothercount }} items', { anotherCount: 5 }, ' items'], - ['{{ }} items', { count: 5 }, ' items'], - ['{{ count }} items', {}, ' items'], - ['{{ count }} items', undefined, ' items'], - ['{{ count }} items', { count: 5 }, '5 items'], - ['{{count}} items', { count: 5 }, '5 items'], - ['{{count }} items', { count: 5 }, '5 items'], - [' {{ count }} items', { count: 5 }, ' 5 items'], - ['another {{ count }} items', { count: 5 }, 'another 5 items'], - ['{{{ count }}} items', { count: 5 }, '{5} items'], - ['{{{{ count }}}} items', { count: 5 }, '{{5}} items'], - ['{{{ count }} items', { count: 5 }, '{5 items'], - ['{{ count }}} items', { count: 5 }, '5} items'], - ['{{ two words }} items', { two: 5, words: 10 }, '{{ two words }} items'], - ['{{ before }} {{ count }} items', { count: 5, before: 'awesome' }, 'awesome 5 items'] - ]; - - cases.forEach(([unprocessed, args, result]) => { - it(`"${unprocessed}" should be processed as "${result}"`, () => { - expect(resolver.testInterpolate(unprocessed, args)).toBe(result); - }); + it('should resolve internal references', () => { + expect(resolve('testWithInternalReference')).toBe('here is here'); + }); + it('should resolve multiple levels of internal references', () => { + expect(resolve('testWithMultipleInternalReferences')).toBe('Number 1 here is here and here is here'); + }); + it('should respect context', () => { + expect(resolve('contextualized', { content: 'test' })).toBe('test'); + }); + it('should resolve multiple internal references and context at the same time', () => { + expect(resolve('testWithMultipleInternalReferencesAndContext', { content: 'test' })).toBe( + 'test here is here and here' + ); + }); + it('should resolve pluralization', () => { + expect(resolve('pluralization', { count: 1 })).toBe('test one item'); + expect(resolve('pluralization', { count: 2 })).toBe('test 2 items'); + }); + it('should throw error when no context is provided to the contextualized key', () => { + expect(() => resolve('contextualized')).toThrow(); + }); + it('should throw when context does not match the required type', () => { + expect(() => resolve('contextualized', { wrongNameForContent: 5 as any })).toThrow(); + }); + it('should pass down context to the internal references', () => { + expect(resolve('testWithInternalReferenceAndContext', { content: 'test' })).toBe( + 'context is "test" right here' + ); + }); + it('should resolve nested keys', () => { + expect(resolve('parent.child')).toBe('child'); + }); + it('should resolve internal references in nested keys', () => { + expect(resolve('parent.withInternalRef')).toBe('child'); + }); + it('should resolve internal references in ICU', () => { + expect(resolve('internalRefInIcu', { count: 2 })).toBe('test 2 items here'); + expect(resolve('internalRefInIcu', { count: 1 })).toBe('test one item here'); }); }); diff --git a/libs/i18n/src/lib/utils/translation-resolver.ts b/libs/i18n/src/lib/utils/translation-resolver.ts index 5dd937eb01b..c5a009b7efa 100644 --- a/libs/i18n/src/lib/utils/translation-resolver.ts +++ b/libs/i18n/src/lib/utils/translation-resolver.ts @@ -1,54 +1,75 @@ import { isDevMode } from '@angular/core'; +import { Nullable } from '@fundamental-ngx/cdk/utils'; +import { IntlMessageFormat } from 'intl-messageformat'; import { get } from 'lodash-es'; import { FD_LANGUAGE_ENGLISH } from '../languages'; import { FdLanguage, FdLanguageKey, FdLanguageKeyArgs, FdLanguageKeyFunction } from '../models'; +const _internalReferenceRegExp = /\{\s*@@([^{}\s]*)\s*}/g; + /** Utility class, that provides the logic to resolve FdLanguage translations */ export class TranslationResolver { - /** @hidden */ - private readonly _curlyBracesRegExp = /{{\s*([^{}\s]*)\s*}}/g; - /** Resolves the translation for the provided language by key and args */ - resolve(lang: FdLanguage, key: FdLanguageKey, args?: FdLanguageKeyArgs): string { - const resolvedValue = this._getFdLanguageKeyValue(lang, key, args); - if (typeof resolvedValue === 'string') { - return resolvedValue; + resolve( + lang: FdLanguage, + key: FdLanguageKey, + args?: FdLanguageKeyArgs, + fallbackLanguage: Nullable = FD_LANGUAGE_ENGLISH + ): string { + const resolvedValue = this.getRaw(lang, key, args); + if (resolvedValue !== '') { + return this._interpolate(resolvedValue, args); } - if (isDevMode()) { + if (isDevMode() && fallbackLanguage) { console.warn( - `Could not resolve translation by "${key}" key in the provided language file. Falling back to English` + `Could not resolve translation by "${key}" key in the provided language file. Falling back to fallback language.` ); } // not a function, not a string, fall back to english, if possible - return this._getFdLanguageKeyValue(FD_LANGUAGE_ENGLISH, key, args) ?? ''; + return fallbackLanguage ? this.resolve(fallbackLanguage, key, args, null) ?? '' : ''; } /** * @hidden - * "protected" access modified is used in order to be able to reference this method directly in tests */ - protected _interpolate(expression: string, args: FdLanguageKeyArgs = {}): string { - return expression.replace(this._curlyBracesRegExp, (matchingGroup: string, match: string) => { - const key = match?.trim(); - return args[key]?.toString() ?? ''; - }); + private _interpolate(expression: string, args: FdLanguageKeyArgs = {}): string { + if (expression.indexOf('{') === -1) { + return expression; + } + const result = new IntlMessageFormat(expression, 'en-US').format(args); + return Array.isArray(result) ? result.join('') : result.toString(); + } + + /** + * Returns the raw ICU string for the provided language by key and args + **/ + private getRaw(lang: FdLanguage, key: FdLanguageKey, args?: FdLanguageKeyArgs): string { + const val = this._getFdLanguageKeyValue(lang, key, args); + if (typeof val === 'string') { + const internalReferences = val.match(_internalReferenceRegExp); + if (internalReferences) { + const replacements: Array<[string, string]> = internalReferences.map((internalReference) => { + const internalReferenceKey = internalReference.replace(_internalReferenceRegExp, '$1'); + const replacementValue = this.getRaw(lang, internalReferenceKey, args); + return [internalReference, replacementValue]; + }); + return this._applyReplacements(val, replacements); + } + return val; + } + if (isDevMode()) { + console.warn(`Could not resolve translation by "${key}" key in the provided language file`); + } + return val ?? ''; } /** @hidden */ private _getFdLanguageKeyValue(lang: FdLanguage, key: FdLanguageKey, args?: FdLanguageKeyArgs): string | null { const resolvedKey = this._tryResolveKey(lang, key); if (typeof resolvedKey === 'string') { - // if that's a string, return it with interpolation - return this._interpolate(resolvedKey, args); + return resolvedKey; } - if (typeof resolvedKey === 'function') { - // attempt to resolve function - const resolvedFunctionValue = this._tryExecuteLanguageFunction(resolvedKey, args); - if (resolvedFunctionValue) { - return this._interpolate(resolvedFunctionValue, args); - } - } - return null; + return this._tryExecuteLanguageFunction(resolvedKey, args); } /** @hidden */ @@ -66,13 +87,26 @@ export class TranslationResolver { /** @hidden */ private _tryExecuteLanguageFunction( - expression: FdLanguageKeyFunction, + expression?: Nullable, args: FdLanguageKeyArgs = {} ): string | null { + if (!expression) { + return null; + } try { return expression(args) ?? null; } catch { return null; } } + + /** + * Applies replacements to the raw string + * @hidden */ + private _applyReplacements(rawString: string, replacements: Array<[string, string]> = []): string { + (replacements as Array<[string, string]>).forEach(([internalReference, replacementValue]) => { + rawString = rawString.split(internalReference).join(replacementValue); + }); + return rawString; + } } diff --git a/package.json b/package.json index b7f620cc765..cfc83aed7e9 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,7 @@ "fundamental-styles": "0.30.2-rc.30", "highlight.js": "11.7.0", "intl": "1.2.5", + "intl-messageformat": "10.5.2", "lodash-es": "4.17.21", "marked": "4.3.0", "moment": "2.29.4", From 7ac9f9f6126970bc1eb5e60cf6788cc7d80e58ee Mon Sep 17 00:00:00 2001 From: g-cheishvili Date: Wed, 20 Sep 2023 00:52:28 +0400 Subject: [PATCH 03/21] feat: added instructions for the TEW --- translation_v2.json | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 translation_v2.json diff --git a/translation_v2.json b/translation_v2.json new file mode 100644 index 00000000000..a78a64108c8 --- /dev/null +++ b/translation_v2.json @@ -0,0 +1,20 @@ +{ + "comment": "Translation configuration for fundamental-ngx", + "collections": [ + { + "collectionName": "Fundamental-NGX", + "folders": [ + { + "startingFolderPath": "./libs/i18n/src/lib/translations", + "sourceFilters": ["**/*.json"] + } + ] + } + ], + "defaultConfiguration": { + "targetFolderPath": ".", + "pseudoLocFolderPath": ".", + "oneQFolderPath": ".", + "targetFileNamingConvention": "[filename]_[langCode].[extension]" + } +} From b1bd0f1684e7653010527d36c0cff8ff7c6b268d Mon Sep 17 00:00:00 2001 From: g-cheishvili Date: Wed, 20 Sep 2023 14:10:38 +0400 Subject: [PATCH 04/21] fix: fixed scope:cdk eslint rules --- .eslintrc.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.eslintrc.json b/.eslintrc.json index b00ebacdcce..9a7fe81a479 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -9,6 +9,10 @@ { "allow": [], "depConstraints": [ + { + "sourceTag": "scope:cdk", + "onlyDependOnLibsWithTags": ["scope:cdk"] + }, { "sourceTag": "scope:fd", "onlyDependOnLibsWithTags": ["scope:fd", "scope:i18n", "scope:cdk"] From e2b6c742c0126c2cee912875b3f5ebaba3ba998d Mon Sep 17 00:00:00 2001 From: g-cheishvili Date: Wed, 20 Sep 2023 17:57:27 +0400 Subject: [PATCH 05/21] fix(core): fixed absent parameters to the translation strings --- .../components/item/feed-list-item.component.html | 4 +++- libs/i18n/src/lib/translations/translations_en-US.json | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/libs/core/src/lib/feed-list-item/components/item/feed-list-item.component.html b/libs/core/src/lib/feed-list-item/components/item/feed-list-item.component.html index 663bab0aee1..9dc482b2570 100644 --- a/libs/core/src/lib/feed-list-item/components/item/feed-list-item.component.html +++ b/libs/core/src/lib/feed-list-item/components/item/feed-list-item.component.html @@ -58,7 +58,9 @@ *ngIf="!isRichText && hasMore" (click)="toggleTextView()" >{{ - isCollapsed ? ('coreFeedListItem.moreLabel' | fdTranslate) : ('coreFeedListItem.lessLabel' | fdTranslate) + isCollapsed + ? ('coreFeedListItem.moreLabel' | fdTranslate : { count: (text ? text.length : 0) - maxChars }) + : ('coreFeedListItem.lessLabel' | fdTranslate) }} diff --git a/libs/i18n/src/lib/translations/translations_en-US.json b/libs/i18n/src/lib/translations/translations_en-US.json index a10cd6cac51..b0e3925af00 100644 --- a/libs/i18n/src/lib/translations/translations_en-US.json +++ b/libs/i18n/src/lib/translations/translations_en-US.json @@ -69,7 +69,7 @@ "coreSwitch.semanticAcceptLabel": "Accept", "coreSwitch.semanticDeclineLabel": "Decline", "coreTabs.tabListExpandButtonText": "More", - "coreText.moreLabel": "{count} more", + "coreText.moreLabel": "More", "coreText.lessLabel": "Less", "coreTime.componentAriaName": "Time picker", "coreTime.increaseHoursLabel": "Increase hours", From 408ff1988d00bb4377932aa7777d84bbd3d3e3f3 Mon Sep 17 00:00:00 2001 From: g-cheishvili Date: Thu, 21 Sep 2023 02:00:31 +0400 Subject: [PATCH 06/21] feat: added locale and using signal in pipe and added signal resolver --- libs/i18n/src/lib/pipes/fd-translate.pipe.ts | 53 +-------- libs/i18n/src/lib/utils/resolve-helpers.ts | 71 ------------ .../lib/utils/resolve-helpers/common-types.ts | 4 + .../src/lib/utils/resolve-helpers/index.ts | 3 + .../resolve-translations-observable.ts | 90 +++++++++++++++ .../resolve-translations-signal.ts | 103 ++++++++++++++++++ .../resolve-translations-sync.ts | 62 +++++++++++ libs/i18n/src/lib/utils/tokens.ts | 6 +- .../src/lib/utils/translation-resolver.ts | 7 +- 9 files changed, 277 insertions(+), 122 deletions(-) delete mode 100644 libs/i18n/src/lib/utils/resolve-helpers.ts create mode 100644 libs/i18n/src/lib/utils/resolve-helpers/common-types.ts create mode 100644 libs/i18n/src/lib/utils/resolve-helpers/index.ts create mode 100644 libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-observable.ts create mode 100644 libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-signal.ts create mode 100644 libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-sync.ts diff --git a/libs/i18n/src/lib/pipes/fd-translate.pipe.ts b/libs/i18n/src/lib/pipes/fd-translate.pipe.ts index 42edf11e75c..2be47bc0199 100644 --- a/libs/i18n/src/lib/pipes/fd-translate.pipe.ts +++ b/libs/i18n/src/lib/pipes/fd-translate.pipe.ts @@ -1,10 +1,6 @@ -import { ChangeDetectorRef, DestroyRef, Inject, Pipe, PipeTransform } from '@angular/core'; -import { BehaviorSubject, combineLatest, distinctUntilChanged, filter, map, Observable, skip } from 'rxjs'; - -import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; -import { FdLanguage, FdLanguageKeyArgs } from '../models/lang'; -import { FD_LANGUAGE } from '../utils/tokens'; -import { TranslationResolver } from '../utils/translation-resolver'; +import { Pipe, PipeTransform } from '@angular/core'; +import { FdLanguageKeyArgs } from '../models/lang'; +import { resolveTranslationSignal } from '../utils'; @Pipe({ name: 'fdTranslate', @@ -13,48 +9,11 @@ import { TranslationResolver } from '../utils/translation-resolver'; }) export class FdTranslatePipe implements PipeTransform { /** @hidden */ - private readonly _translationResolver = new TranslationResolver(); - - /** @hidden */ - private readonly _key$ = new BehaviorSubject(undefined); - - /** @hidden */ - private readonly _args$ = new BehaviorSubject(undefined); - - /** @hidden */ - private _value: string | undefined; - - /** @hidden */ - constructor( - @Inject(FD_LANGUAGE) private _language$: Observable, - private readonly _destroyRef: DestroyRef, - private _cdr: ChangeDetectorRef - ) { - this._instantiateSubscription(); - } + private resolveTranslationSignal = resolveTranslationSignal(); /** Translate a key with arguments and, optionally, default value */ transform(key: string, args?: FdLanguageKeyArgs | Record, defaultValue = ''): string { - this._key$.next(key); - this._args$.next(args); - - return this._value || defaultValue; - } - - /** @hidden */ - private _instantiateSubscription(): void { - combineLatest([ - this._language$, - this._key$.pipe(skip(1), filter(Boolean), distinctUntilChanged()), - this._args$.pipe(skip(1), distinctUntilChanged()) - ]) - .pipe( - map(([lang, key, args]) => this._translationResolver.resolve(lang, key, args)), - takeUntilDestroyed(this._destroyRef) - ) - .subscribe((value) => { - this._value = value; - this._cdr.markForCheck(); - }); + const translationSignal = this.resolveTranslationSignal(key, args); + return translationSignal() || defaultValue; } } diff --git a/libs/i18n/src/lib/utils/resolve-helpers.ts b/libs/i18n/src/lib/utils/resolve-helpers.ts deleted file mode 100644 index 059f0131192..00000000000 --- a/libs/i18n/src/lib/utils/resolve-helpers.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { inject } from '@angular/core'; -import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; -import { Nullable } from '@fundamental-ngx/cdk/utils'; -import { Observable, Subject, tap } from 'rxjs'; -import { map, takeUntil } from 'rxjs/operators'; -import { FdLanguage, FdLanguageKeyArgs } from '../models/lang'; -import { FD_LANGUAGE } from './tokens'; -import { TranslationResolver } from './translation-resolver'; - -type ResolveFn = (key: string, args?: Nullable) => ReturnType; - -/** - * Helper utility function for getting translations - */ -export function resolveTranslation(): ResolveFn; -export function resolveTranslation(key: string, args?: Nullable, fdLang?: FdLanguage): string; -// eslint-disable-next-line jsdoc/require-jsdoc -export function resolveTranslation( - key?: string, - args?: Nullable, - fdLang?: FdLanguage -): string | ResolveFn { - let _lang = fdLang; - const _stopUpdating$ = new Subject(); - if (!_lang) { - inject(FD_LANGUAGE) - .pipe( - tap((r) => (_lang = r)), - takeUntilDestroyed(), - takeUntil(_stopUpdating$) - ) - .subscribe(); - } - const resolver = new TranslationResolver(); - const fn = (k: string, ctx?: Nullable): string => - resolver.resolve(_lang || ({} as unknown as FdLanguage), k, ctx || {}); - if (!key) { - return fn; - } - const result = fn(key, args || {}); - _stopUpdating$.next(); - return result; -} - -/** - * Helper utility function for getting translations. - * If no parameters are passed it will return the function which - * is bound to the current DI FD_LANGUAGE instance - */ -export function resolveTranslation$(): ResolveFn>; -export function resolveTranslation$( - key: string, - args?: Nullable, - fdLang?: Observable -): Observable; -// eslint-disable-next-line jsdoc/require-jsdoc -export function resolveTranslation$( - key?: string, - args?: Nullable, - fdLang?: Observable -): Observable | ResolveFn> { - const lang$ = fdLang ? fdLang : (inject(FD_LANGUAGE) as Observable); - const resolver = new TranslationResolver(); - const fn = (k: string, ctx?: Nullable): Observable => - lang$.pipe(map((lang) => resolver.resolve(lang, k, ctx || {}))); - - if (!key) { - return fn; - } - return fn(key, args || {}); -} diff --git a/libs/i18n/src/lib/utils/resolve-helpers/common-types.ts b/libs/i18n/src/lib/utils/resolve-helpers/common-types.ts new file mode 100644 index 00000000000..10888e74ec5 --- /dev/null +++ b/libs/i18n/src/lib/utils/resolve-helpers/common-types.ts @@ -0,0 +1,4 @@ +import { Nullable } from '@fundamental-ngx/cdk/utils'; +import { FdLanguageKeyArgs } from '../../models/lang'; + +export type ResolveFn = (key: string, args?: Nullable) => ReturnType; diff --git a/libs/i18n/src/lib/utils/resolve-helpers/index.ts b/libs/i18n/src/lib/utils/resolve-helpers/index.ts new file mode 100644 index 00000000000..e84464d720e --- /dev/null +++ b/libs/i18n/src/lib/utils/resolve-helpers/index.ts @@ -0,0 +1,3 @@ +export * from './resolve-translations-observable'; +export * from './resolve-translations-signal'; +export * from './resolve-translations-sync'; diff --git a/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-observable.ts b/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-observable.ts new file mode 100644 index 00000000000..85d7fec035c --- /dev/null +++ b/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-observable.ts @@ -0,0 +1,90 @@ +import { inject } from '@angular/core'; +import { Nullable } from '@fundamental-ngx/cdk/utils'; +import { combineLatest, isObservable, Observable, of } from 'rxjs'; +import { map } from 'rxjs/operators'; +import { FdLanguage, FdLanguageKeyArgs } from '../../models/lang'; +import { FD_LANGUAGE, FD_LOCALE } from '../tokens'; +import { TranslationResolver } from '../translation-resolver'; +import { ResolveFn } from './common-types'; + +interface ResolveTranslationsObservableOptions { + fdLang?: Nullable>; + fdLocale?: Nullable>; +} + +/** + * Combine the options for the resolve translations observable + */ +function getResolveTranslationsObservableOptions( + keyOrOptions?: string | ResolveTranslationsObservableOptions, + options?: ResolveTranslationsObservableOptions +): ResolveTranslationsObservableOptions { + const optionsFromKey = typeof keyOrOptions === 'string' ? {} : keyOrOptions; + const optionsFromOptions = options || {}; + return { + ...optionsFromKey, + ...optionsFromOptions + }; +} + +/** + * Get the observable for the locale + */ +function getFdLocaleObservable(fdLocale?: Nullable>): Observable { + if (fdLocale) { + if (isObservable(fdLocale)) { + return fdLocale; + } + return of(fdLocale); + } + return inject(FD_LOCALE); +} + +/** + * Get the observable for the language + */ +function getFdLangObservable(fdLang?: Nullable>): Observable { + if (fdLang) { + if (isObservable(fdLang)) { + return fdLang; + } + return of(fdLang); + } + return inject(FD_LANGUAGE); +} + +/** + * Helper utility function for getting translation observable factory + */ +export function resolveTranslationObservable( + options?: ResolveTranslationsObservableOptions +): ResolveFn>; +/** + * Helper utility function for getting translations observable + */ +export function resolveTranslationObservable( + key: string, + args?: Nullable, + options?: ResolveTranslationsObservableOptions +): Observable; +/** + * Helper utility function for getting translations + */ +export function resolveTranslationObservable( + keyOrOptions?: string | ResolveTranslationsObservableOptions, + args?: Nullable, + options?: ResolveTranslationsObservableOptions +): Observable | ResolveFn> { + const { fdLang, fdLocale } = getResolveTranslationsObservableOptions(keyOrOptions, options); + + const langAndLocale$ = combineLatest([getFdLangObservable(fdLang), getFdLocaleObservable(fdLocale)]); + + const resolver = new TranslationResolver(); + const fn = (k: string, ctx?: Nullable): Observable => + langAndLocale$.pipe(map(([lang, locale]) => resolver.resolve(lang, k, ctx || {}, locale))); + + if (!keyOrOptions || typeof keyOrOptions !== 'string') { + return fn; + } + return fn(keyOrOptions, args || {}); +} diff --git a/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-signal.ts b/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-signal.ts new file mode 100644 index 00000000000..2a7f79dea7e --- /dev/null +++ b/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-signal.ts @@ -0,0 +1,103 @@ +import { computed, inject, isSignal, signal, Signal } from '@angular/core'; +import { toSignal } from '@angular/core/rxjs-interop'; +import { Nullable } from '@fundamental-ngx/cdk/utils'; +import { FdLanguage, FdLanguageKeyArgs } from '../../models/lang'; +import { FD_LANGUAGE, FD_LOCALE } from '../tokens'; +import { resolveTranslationSync } from './resolve-translations-sync'; + +type CanBeSignal = T | Signal; +type ResolveSignalFn = ( + key: CanBeSignal, + args?: Nullable> +) => Signal; + +function getFdLocaleSignal(fdLocale?: Nullable>): Signal { + if (fdLocale) { + if (isSignal(fdLocale)) { + return fdLocale; + } + return signal(fdLocale); + } + return toSignal(inject(FD_LOCALE), { requireSync: true }); +} + +function getFdLangSignal(fdLang?: Nullable>): Signal { + if (fdLang) { + if (isSignal(fdLang)) { + return fdLang; + } + return signal(fdLang); + } + return toSignal(inject(FD_LANGUAGE), { requireSync: true }); +} + +interface ResolveTranslationsSignalOptions { + fdLang?: Nullable>; + fdLocale?: Nullable>; +} + +/** + * Determine if the options are of type ResolveTranslationsSignalOptions + * @param options + */ +function isResolveTranslationsSignalOptions( + options?: Nullable | ResolveTranslationsSignalOptions> +): options is ResolveTranslationsSignalOptions { + return !!options && typeof options !== 'string' && !isSignal(options); +} + +/** + * Get the options for the resolve translations signal + * @param keyOrOptions + * @param options + */ +function getResolveTranslationsSignalOptions( + keyOrOptions?: CanBeSignal | ResolveTranslationsSignalOptions, + options?: ResolveTranslationsSignalOptions +): ResolveTranslationsSignalOptions { + const optionsFromKey = isResolveTranslationsSignalOptions(keyOrOptions) ? keyOrOptions : {}; + const optionsFromOptions = isResolveTranslationsSignalOptions(options) ? options : {}; + return { ...optionsFromKey, ...optionsFromOptions }; +} + +/** + * Helper utility which gives you the signal creator for translation resolving. + */ +export function resolveTranslationSignal(options?: ResolveTranslationsSignalOptions): ResolveSignalFn; +/** + * Helper utility which gives you the signal for translation resolving. + * @param key + * @param args + * @param options + */ +export function resolveTranslationSignal( + key: CanBeSignal, + args?: Nullable>, + options?: ResolveTranslationsSignalOptions +): Signal; +// eslint-disable-next-line jsdoc/require-jsdoc +export function resolveTranslationSignal( + keyOrOptions?: CanBeSignal | ResolveTranslationsSignalOptions, + args?: Nullable>, + options?: ResolveTranslationsSignalOptions +): Signal | ResolveSignalFn { + const { fdLang, fdLocale } = getResolveTranslationsSignalOptions(keyOrOptions, options); + const fdLocaleSignal = getFdLocaleSignal(fdLocale); + const fdLangSignal = getFdLangSignal(fdLang); + + const fn = (k: CanBeSignal, ctx?: Nullable>): Signal => { + const kSignal = isSignal(k) ? k : signal(k); + const ctxSignal = isSignal(ctx) ? ctx : signal(ctx || {}); + return computed(() => + resolveTranslationSync(kSignal(), ctxSignal(), { + fdLang: fdLangSignal(), + fdLocale: fdLocaleSignal() + }) + ); + }; + + if (!keyOrOptions || isResolveTranslationsSignalOptions(keyOrOptions)) { + return fn; + } + return fn(keyOrOptions, args); +} diff --git a/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-sync.ts b/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-sync.ts new file mode 100644 index 00000000000..35cf91aad17 --- /dev/null +++ b/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-sync.ts @@ -0,0 +1,62 @@ +import { effect, inject } from '@angular/core'; +import { toSignal } from '@angular/core/rxjs-interop'; +import { Nullable } from '@fundamental-ngx/cdk/utils'; +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; +import { FdLanguage, FdLanguageKeyArgs } from '../../models/lang'; +import { FD_LANGUAGE, FD_LOCALE } from '../tokens'; +import { TranslationResolver } from '../translation-resolver'; +import { ResolveFn } from './common-types'; + +interface ResolveTranslationsSyncOptions { + fdLang?: Nullable; + fdLocale?: Nullable; +} + +function getResolveTranslatiosSyncOptions( + keyOrOptions?: string | ResolveTranslationsSyncOptions, + options?: ResolveTranslationsSyncOptions +): ResolveTranslationsSyncOptions { + const optionsFromKey = typeof keyOrOptions === 'string' ? {} : keyOrOptions; + const optionsFromOptions = options || {}; + return { + ...optionsFromKey, + ...optionsFromOptions + }; +} + +/** + * Helper utility function for getting translations + */ +export function resolveTranslationSync(options?: ResolveTranslationsSyncOptions): ResolveFn; +export function resolveTranslationSync( + key: string, + args?: Nullable, + options?: ResolveTranslationsSyncOptions +): string; +// eslint-disable-next-line jsdoc/require-jsdoc +export function resolveTranslationSync( + keyOrOptions?: string | ResolveTranslationsSyncOptions, + args?: Nullable, + options?: ResolveTranslationsSyncOptions +): string | ResolveFn { + let { fdLang, fdLocale } = getResolveTranslatiosSyncOptions(keyOrOptions, options); + const _stopUpdating$ = new Subject(); + if (!fdLocale) { + const fdLocaleSignal = toSignal(inject(FD_LOCALE).pipe(takeUntil(_stopUpdating$)), { requireSync: true }); + effect(() => (fdLocale = fdLocaleSignal())); + } + if (!fdLang) { + const fdLangSignal = toSignal(inject(FD_LANGUAGE).pipe(takeUntil(_stopUpdating$)), { requireSync: true }); + effect(() => (fdLang = fdLangSignal())); + } + const resolver = new TranslationResolver(); + const fn = (k: string, ctx?: Nullable): string => + resolver.resolve(fdLang || ({} as unknown as FdLanguage), k, ctx || {}, fdLocale); + if (!keyOrOptions || typeof keyOrOptions !== 'string') { + return fn; + } + const result = fn(keyOrOptions, args || {}); + _stopUpdating$.next(); + return result; +} diff --git a/libs/i18n/src/lib/utils/tokens.ts b/libs/i18n/src/lib/utils/tokens.ts index 327fe935f20..77052fe25a5 100644 --- a/libs/i18n/src/lib/utils/tokens.ts +++ b/libs/i18n/src/lib/utils/tokens.ts @@ -1,4 +1,4 @@ -import { InjectionToken } from '@angular/core'; +import { inject, InjectionToken, LOCALE_ID } from '@angular/core'; import { BehaviorSubject, Observable } from 'rxjs'; import { FD_LANGUAGE_ENGLISH } from '../languages/english'; import { FdLanguage } from '../models/lang'; @@ -6,3 +6,7 @@ import { FdLanguage } from '../models/lang'; export const FD_LANGUAGE = new InjectionToken>('Language for @fundamental-ngx packages', { factory: () => new BehaviorSubject(FD_LANGUAGE_ENGLISH) }); + +export const FD_LOCALE = new InjectionToken>('Locale for @fundamental-ngx packages', { + factory: () => new BehaviorSubject(inject(LOCALE_ID)) +}); diff --git a/libs/i18n/src/lib/utils/translation-resolver.ts b/libs/i18n/src/lib/utils/translation-resolver.ts index c5a009b7efa..10636770de2 100644 --- a/libs/i18n/src/lib/utils/translation-resolver.ts +++ b/libs/i18n/src/lib/utils/translation-resolver.ts @@ -14,11 +14,12 @@ export class TranslationResolver { lang: FdLanguage, key: FdLanguageKey, args?: FdLanguageKeyArgs, + locale?: Nullable, fallbackLanguage: Nullable = FD_LANGUAGE_ENGLISH ): string { const resolvedValue = this.getRaw(lang, key, args); if (resolvedValue !== '') { - return this._interpolate(resolvedValue, args); + return this._interpolate(resolvedValue, args, locale); } if (isDevMode() && fallbackLanguage) { console.warn( @@ -32,11 +33,11 @@ export class TranslationResolver { /** * @hidden */ - private _interpolate(expression: string, args: FdLanguageKeyArgs = {}): string { + private _interpolate(expression: string, args: FdLanguageKeyArgs = {}, locale?: Nullable): string { if (expression.indexOf('{') === -1) { return expression; } - const result = new IntlMessageFormat(expression, 'en-US').format(args); + const result = new IntlMessageFormat(expression, locale || 'en-US').format(args); return Array.isArray(result) ? result.join('') : result.toString(); } From 1489f7753b293519c3f718f17e756cdf967d3710 Mon Sep 17 00:00:00 2001 From: g-cheishvili Date: Thu, 21 Sep 2023 02:06:01 +0400 Subject: [PATCH 07/21] chore: removed unnecessary subscriptions and initialization --- .../multi-input/multi-input.component.html | 2 +- .../lib/multi-input/multi-input.component.ts | 24 +-------- libs/core/src/lib/wizard/wizard.component.ts | 23 +++----- libs/i18n/src/lib/models/lang.ts | 3 ++ .../lib/translations/translations_bg-BG.json | 1 + .../lib/translations/translations_cs-CZ.json | 1 + .../lib/translations/translations_en-US.json | 1 + .../lib/translations/translations_fr-FR.json | 1 + .../lib/translations/translations_hi-IN.json | 1 + .../lib/translations/translations_it-IT.json | 1 + .../lib/translations/translations_ka-GE.json | 1 + .../lib/translations/translations_pl-PL.json | 1 + .../lib/translations/translations_ru-RU.json | 1 + .../lib/translations/translations_sq-AL.json | 1 + .../lib/translations/translations_tr-TR.json | 1 + .../lib/translations/translations_uk-UA.json | 1 + .../lib/translations/translations_zh-CN.json | 1 + .../multi-input/multi-input.component.html | 2 +- .../form/multi-input/multi-input.component.ts | 21 ++------ .../form/switch/switch/switch.component.html | 2 +- .../form/switch/switch/switch.component.ts | 11 ++-- .../search-field/search-field.component.ts | 31 +++++------ ...-filter-bar-conditions-dialog.component.ts | 52 ++++--------------- 23 files changed, 60 insertions(+), 124 deletions(-) diff --git a/libs/core/src/lib/multi-input/multi-input.component.html b/libs/core/src/lib/multi-input/multi-input.component.html index 79c15500bc7..8daee683392 100644 --- a/libs/core/src/lib/multi-input/multi-input.component.html +++ b/libs/core/src/lib/multi-input/multi-input.component.html @@ -90,7 +90,7 @@ [placeholder]="placeholder" [formControl]="_searchTermCtrl" [attr.aria-required]="required" - [ariaLabel]="ariaLabel || _defaultAriaLabel" + [ariaLabel]="ariaLabel || ('coreMultiInput.multiInputAriaLabel' | fdTranslate)" [ariaLabelledBy]="ariaLabelledBy" [attr.aria-describedby]="tokenHiddenId" (keydown)="_handleInputKeydown($event)" diff --git a/libs/core/src/lib/multi-input/multi-input.component.ts b/libs/core/src/lib/multi-input/multi-input.component.ts index e5a52474e1a..96c1c342d58 100644 --- a/libs/core/src/lib/multi-input/multi-input.component.ts +++ b/libs/core/src/lib/multi-input/multi-input.component.ts @@ -10,7 +10,6 @@ import { EventEmitter, forwardRef, HostListener, - Inject, Injector, Input, OnChanges, @@ -25,7 +24,7 @@ import { ViewEncapsulation } from '@angular/core'; import { ControlValueAccessor, FormControl, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms'; -import { BehaviorSubject, combineLatest, firstValueFrom, Observable, Subscription } from 'rxjs'; +import { BehaviorSubject, combineLatest, Observable, Subscription } from 'rxjs'; import { distinctUntilChanged, first, map, startWith } from 'rxjs/operators'; import { @@ -56,7 +55,7 @@ import { CheckboxComponent } from '@fundamental-ngx/core/checkbox'; import { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density'; import { InputGroupModule } from '@fundamental-ngx/core/input-group'; import { LinkComponent } from '@fundamental-ngx/core/link'; -import { FD_LANGUAGE, FdLanguage, FdTranslatePipe, TranslationResolver } from '@fundamental-ngx/i18n'; +import { FdTranslatePipe } from '@fundamental-ngx/i18n'; import { MultiInputMobileComponent } from './multi-input-mobile/multi-input-mobile.component'; import { MULTI_INPUT_COMPONENT, MultiInputInterface } from './multi-input.interface'; @@ -386,9 +385,6 @@ export class MultiInputComponent @ViewChild(TokenizerComponent) tokenizer: TokenizerComponent; - /** @hidden */ - _defaultAriaLabel: Nullable; - /** @hidden */ readonly optionItems$ = new BehaviorSubject<_OptionItem[]>([]); @@ -418,9 +414,6 @@ export class MultiInputComponent /** @hidden */ private readonly _rangeSelector = new RangeSelector(); - /** @hidden */ - private readonly _translationResolver = new TranslationResolver(); - /** @hidden */ constructor( readonly _contentDensityObserver: ContentDensityObserver, @@ -429,7 +422,6 @@ export class MultiInputComponent private readonly _dynamicComponentService: DynamicComponentService, private readonly _injector: Injector, private readonly _viewContainerRef: ViewContainerRef, - @Inject(FD_LANGUAGE) private readonly _language: Observable, @Optional() private readonly _rtlService: RtlService, @Optional() private readonly _focusTrapService: FocusTrapService ) {} @@ -496,12 +488,6 @@ export class MultiInputComponent .pipe(map((viewModel) => !viewModel.displayedOptions.some((c) => !c.isSelected))) .subscribe((allItemsSelected) => this.allItemsSelectedChange.emit(allItemsSelected)) ); - - this._subscriptions.add( - this._language.subscribe(() => { - this._getAriaLabel(); - }) - ); } /** @hidden */ @@ -954,12 +940,6 @@ export class MultiInputComponent }) ); } - - /** @hidden */ - private async _getAriaLabel(): Promise { - const lang = await firstValueFrom(this._language); - this._defaultAriaLabel = this._translationResolver.resolve(lang, 'coreMultiInput.multiInputAriaLabel'); - } } interface _OptionItem extends OptionItemBase { diff --git a/libs/core/src/lib/wizard/wizard.component.ts b/libs/core/src/lib/wizard/wizard.component.ts index f1bc63ae388..3ac660ef2b1 100644 --- a/libs/core/src/lib/wizard/wizard.component.ts +++ b/libs/core/src/lib/wizard/wizard.component.ts @@ -23,8 +23,8 @@ import { Nullable, scrollTop } from '@fundamental-ngx/cdk/utils'; import { DialogBodyComponent, FD_DIALOG_BODY_COMPONENT } from '@fundamental-ngx/core/dialog'; import { ScrollSpyDirective } from '@fundamental-ngx/core/scroll-spy'; import { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar'; -import { FD_LANGUAGE, FdLanguage, TranslationResolver } from '@fundamental-ngx/i18n'; -import { Observable, Subscription } from 'rxjs'; +import { resolveTranslationSignal } from '@fundamental-ngx/i18n'; +import { Subscription } from 'rxjs'; import { ACTIVE_STEP_STATUS, COMPLETED_STEP_STATUS, CURRENT_STEP_STATUS, UPCOMING_STEP_STATUS } from './constants'; import { WizardContentComponent } from './wizard-content/wizard-content.component'; import { WIZARD } from './wizard-injection-token'; @@ -70,7 +70,8 @@ export const handleTimeoutReference = (): void => { } ], host: { - role: 'region' + role: 'region', + '[attr.aria-label]': 'ariaLabel || _defaultAriaLabel()' }, standalone: true, imports: [NgIf, ScrollSpyDirective, CdkScrollable, ScrollbarDirective, NgFor, NgTemplateOutlet] @@ -106,7 +107,6 @@ export class WizardComponent implements AfterViewInit, OnDestroy { * If not provided, is being translated by i18n package */ @Input() - @HostBinding('attr.aria-label') ariaLabel: string; /** @hidden */ @@ -139,13 +139,13 @@ export class WizardComponent implements AfterViewInit, OnDestroy { stackedStepsRight: WizardStepComponent[] = []; /** @hidden */ - private _stepEventSubscriptions: Subscription = new Subscription(); + protected _defaultAriaLabel = resolveTranslationSignal('coreWizard.ariaLabel'); /** @hidden */ - private _subscriptions: Subscription = new Subscription(); + private _stepEventSubscriptions: Subscription = new Subscription(); /** @hidden */ - private _translationResolver = new TranslationResolver(); + private _subscriptions: Subscription = new Subscription(); /** @hidden */ private _previousWidth: number; @@ -154,15 +154,8 @@ export class WizardComponent implements AfterViewInit, OnDestroy { constructor( private _elRef: ElementRef, private readonly _cdRef: ChangeDetectorRef, - @Inject(FD_LANGUAGE) _language$: Observable, @Optional() @Inject(FD_DIALOG_BODY_COMPONENT) private _dialogBodyComponent: DialogBodyComponent - ) { - const sub = _language$.subscribe((lang) => { - // set ariaLabel only if it's not applied manually - this.ariaLabel ??= this._translationResolver.resolve(lang, 'coreWizard.ariaLabel'); - }); - this._subscriptions.add(sub); - } + ) {} /** @hidden */ @HostListener('window:resize') diff --git a/libs/i18n/src/lib/models/lang.ts b/libs/i18n/src/lib/models/lang.ts index 2537013eea2..4800cd6f766 100644 --- a/libs/i18n/src/lib/models/lang.ts +++ b/libs/i18n/src/lib/models/lang.ts @@ -420,6 +420,9 @@ export interface FdLanguage { searchSuggestionMessage: FdLanguageKey; searchSuggestionNavigateMessage: FdLanguageKey; }; + platformSwitch: { + ariaLabel: FdLanguageKey; + }; platformSmartFilterBar: { searchPlaceholder: FdLanguageKey; submitButtonLabel: FdLanguageKey; diff --git a/libs/i18n/src/lib/translations/translations_bg-BG.json b/libs/i18n/src/lib/translations/translations_bg-BG.json index 64ec6770bbc..cad5d80f0b5 100644 --- a/libs/i18n/src/lib/translations/translations_bg-BG.json +++ b/libs/i18n/src/lib/translations/translations_bg-BG.json @@ -239,6 +239,7 @@ "platformSearchField.synchronizeButtonTitle": "Синхронизирай", "platformSearchField.searchSuggestionMessage": "{ count, plural, one {Намерено е 1 предложение} other {Намерени са # предложения} }.", "platformSearchField.searchSuggestionNavigateMessage": "използвайте стрелки нагоре и надолу за навигация", + "platformSwitch.ariaLabel": "Превключвател", "platformSmartFilterBar.searchPlaceholder": "Търси", "platformSmartFilterBar.submitButtonLabel": "Търси", "platformSmartFilterBar.filtersButtonLabel": "Филтри ({filtersCount})", diff --git a/libs/i18n/src/lib/translations/translations_cs-CZ.json b/libs/i18n/src/lib/translations/translations_cs-CZ.json index 3d4019a206a..e0544a800c7 100644 --- a/libs/i18n/src/lib/translations/translations_cs-CZ.json +++ b/libs/i18n/src/lib/translations/translations_cs-CZ.json @@ -239,6 +239,7 @@ "platformSearchField.synchronizeButtonTitle": "Synchronizovat", "platformSearchField.searchSuggestionMessage": "Počet nalezených návrhů: {count}.", "platformSearchField.searchSuggestionNavigateMessage": "k navigaci použijte šipky nahoru a dolů", + "platformSwitch.ariaLabel": "Switch", "platformSmartFilterBar.searchPlaceholder": "Vyhledávání", "platformSmartFilterBar.submitButtonLabel": "Jdi", "platformSmartFilterBar.filtersButtonLabel": "Filtry ({filtersCount})", diff --git a/libs/i18n/src/lib/translations/translations_en-US.json b/libs/i18n/src/lib/translations/translations_en-US.json index b0e3925af00..6ae27c8748e 100644 --- a/libs/i18n/src/lib/translations/translations_en-US.json +++ b/libs/i18n/src/lib/translations/translations_en-US.json @@ -239,6 +239,7 @@ "platformSearchField.synchronizeButtonTitle": "Synchronize", "platformSearchField.searchSuggestionMessage": "{count} suggestions found.", "platformSearchField.searchSuggestionNavigateMessage": "use up and down arrows to navigate", + "platformSwitch.ariaLabel": "Switch input", "platformSmartFilterBar.searchPlaceholder": "Search", "platformSmartFilterBar.submitButtonLabel": "Go", "platformSmartFilterBar.filtersButtonLabel": "Filters ({filtersCount})", diff --git a/libs/i18n/src/lib/translations/translations_fr-FR.json b/libs/i18n/src/lib/translations/translations_fr-FR.json index bd9dd3bdccd..0b605d714c1 100644 --- a/libs/i18n/src/lib/translations/translations_fr-FR.json +++ b/libs/i18n/src/lib/translations/translations_fr-FR.json @@ -239,6 +239,7 @@ "platformSearchField.synchronizeButtonTitle": "Synchroniser", "platformSearchField.searchSuggestionMessage": "{count} de suggestions trouvées", "platformSearchField.searchSuggestionNavigateMessage": "utiliser les flèches haut et bas pour naviguer", + "platformSwitch.ariaLabel": "Bouton de commutation", "platformSmartFilterBar.searchPlaceholder": "Rechercher", "platformSmartFilterBar.submitButtonLabel": "Aller", "platformSmartFilterBar.filtersButtonLabel": "Filtres ({filtersCount})", diff --git a/libs/i18n/src/lib/translations/translations_hi-IN.json b/libs/i18n/src/lib/translations/translations_hi-IN.json index eec849a704d..6956d22700c 100644 --- a/libs/i18n/src/lib/translations/translations_hi-IN.json +++ b/libs/i18n/src/lib/translations/translations_hi-IN.json @@ -239,6 +239,7 @@ "platformSearchField.synchronizeButtonTitle": "सिंक्रनाइज़ करें", "platformSearchField.searchSuggestionMessage": "{count} सुझाव मिले", "platformSearchField.searchSuggestionNavigateMessage": "नेविगेट करने के लिए ऊपर और नीचे तीरों का उपयोग करें", + "platformSwitch.ariaLabel": "स्विच", "platformSmartFilterBar.searchPlaceholder": "खोज करें", "platformSmartFilterBar.submitButtonLabel": "जाओ", "platformSmartFilterBar.filtersButtonLabel": "फिल्टर ({filtersCount})", diff --git a/libs/i18n/src/lib/translations/translations_it-IT.json b/libs/i18n/src/lib/translations/translations_it-IT.json index 8668dee6cee..62849a35e42 100644 --- a/libs/i18n/src/lib/translations/translations_it-IT.json +++ b/libs/i18n/src/lib/translations/translations_it-IT.json @@ -239,6 +239,7 @@ "platformSearchField.synchronizeButtonTitle": "Sincronizza", "platformSearchField.searchSuggestionMessage": "{count} suggerimenti trovati.", "platformSearchField.searchSuggestionNavigateMessage": "usa le frecce su e giù per navigare", + "platformSwitch.ariaLabel": "Interruttore", "platformSmartFilterBar.searchPlaceholder": "Cerca", "platformSmartFilterBar.submitButtonLabel": "Vai", "platformSmartFilterBar.filtersButtonLabel": "Filtri ({filtersCount})", diff --git a/libs/i18n/src/lib/translations/translations_ka-GE.json b/libs/i18n/src/lib/translations/translations_ka-GE.json index 7d09efecc13..aaf57967106 100644 --- a/libs/i18n/src/lib/translations/translations_ka-GE.json +++ b/libs/i18n/src/lib/translations/translations_ka-GE.json @@ -239,6 +239,7 @@ "platformSearchField.synchronizeButtonTitle": "სინქრონიზაცია", "platformSearchField.searchSuggestionMessage": "ნაპოვნია {count} შემოთავაზება.", "platformSearchField.searchSuggestionNavigateMessage": "ნავიგაციისთვის გამოიყენეთ ზედა და ქვედა ღილაკები", + "platformSwitch.ariaLabel": "გადამრთველი", "platformSmartFilterBar.searchPlaceholder": "ძებნა", "platformSmartFilterBar.submitButtonLabel": "წინ", "platformSmartFilterBar.filtersButtonLabel": "ფილტრები ({filtersCount})", diff --git a/libs/i18n/src/lib/translations/translations_pl-PL.json b/libs/i18n/src/lib/translations/translations_pl-PL.json index cc760e237a1..8fda9464326 100644 --- a/libs/i18n/src/lib/translations/translations_pl-PL.json +++ b/libs/i18n/src/lib/translations/translations_pl-PL.json @@ -239,6 +239,7 @@ "platformSearchField.synchronizeButtonTitle": "Synchronizuj", "platformSearchField.searchSuggestionMessage": "Znaleziono {count} możliwych wyników.", "platformSearchField.searchSuggestionNavigateMessage": "Poruszaj się za pomocą strzałek góra/dół", + "platformSwitch.ariaLabel": "Przełącznik", "platformSmartFilterBar.searchPlaceholder": "Szukaj", "platformSmartFilterBar.submitButtonLabel": "Idź", "platformSmartFilterBar.filtersButtonLabel": "Filtry ({filtersCount})", diff --git a/libs/i18n/src/lib/translations/translations_ru-RU.json b/libs/i18n/src/lib/translations/translations_ru-RU.json index 26c817eb356..fb52b20c27d 100644 --- a/libs/i18n/src/lib/translations/translations_ru-RU.json +++ b/libs/i18n/src/lib/translations/translations_ru-RU.json @@ -239,6 +239,7 @@ "platformSearchField.synchronizeButtonTitle": "Синхронизировать", "platformSearchField.searchSuggestionMessage": "{count, plural, one {Найден 1 вариант} few {Найдено # варианта} other {Найдено # вариантов} }", "platformSearchField.searchSuggestionNavigateMessage": "используйте стрелки вверх и вниз для навигации", + "platformSwitch.ariaLabel": "Переключатель", "platformSmartFilterBar.searchPlaceholder": "Поиск", "platformSmartFilterBar.submitButtonLabel": "Перейти", "platformSmartFilterBar.filtersButtonLabel": "Фильтры ({filtersCount})", diff --git a/libs/i18n/src/lib/translations/translations_sq-AL.json b/libs/i18n/src/lib/translations/translations_sq-AL.json index ce282e236b9..82b66c1dedf 100644 --- a/libs/i18n/src/lib/translations/translations_sq-AL.json +++ b/libs/i18n/src/lib/translations/translations_sq-AL.json @@ -239,6 +239,7 @@ "platformSearchField.synchronizeButtonTitle": "Sinkronizo", "platformSearchField.searchSuggestionMessage": "{count} sugjerime u gjetën.", "platformSearchField.searchSuggestionNavigateMessage": "përdor shigjetat lart e poshtë për të lundruar", + "platformSwitch.ariaLabel": "Ndërprerësi", "platformSmartFilterBar.searchPlaceholder": "Kërko", "platformSmartFilterBar.submitButtonLabel": "Shko", "platformSmartFilterBar.filtersButtonLabel": "Filtrat ({filtersCount})", diff --git a/libs/i18n/src/lib/translations/translations_tr-TR.json b/libs/i18n/src/lib/translations/translations_tr-TR.json index e49f7ea70eb..b2d54c439c6 100644 --- a/libs/i18n/src/lib/translations/translations_tr-TR.json +++ b/libs/i18n/src/lib/translations/translations_tr-TR.json @@ -239,6 +239,7 @@ "platformSearchField.synchronizeButtonTitle": "Senkronize", "platformSearchField.searchSuggestionMessage": "{count} öneri bulundu.", "platformSearchField.searchSuggestionNavigateMessage": "gezinmek için yukarı ve aşağı okları kullanın", + "platformSwitch.ariaLabel": "Anahtar", "platformSmartFilterBar.searchPlaceholder": "Ara", "platformSmartFilterBar.submitButtonLabel": "Git", "platformSmartFilterBar.filtersButtonLabel": "Filtreler ({filtersCount})", diff --git a/libs/i18n/src/lib/translations/translations_uk-UA.json b/libs/i18n/src/lib/translations/translations_uk-UA.json index 0765b2dbfb0..e44aeb9fff9 100644 --- a/libs/i18n/src/lib/translations/translations_uk-UA.json +++ b/libs/i18n/src/lib/translations/translations_uk-UA.json @@ -239,6 +239,7 @@ "platformSearchField.synchronizeButtonTitle": "Синхронізувати", "platformSearchField.searchSuggestionMessage": "Знайдено { count, plural, one {1 варіант} few {# варіанти} other {# варіантів} }", "platformSearchField.searchSuggestionNavigateMessage": "використовуйте стрілки вгору та вниз для навігації", + "platformSwitch.ariaLabel": "Перемикач", "platformSmartFilterBar.searchPlaceholder": "Пошук", "platformSmartFilterBar.submitButtonLabel": "Перейти", "platformSmartFilterBar.filtersButtonLabel": "Фільтри ({filtersCount})", diff --git a/libs/i18n/src/lib/translations/translations_zh-CN.json b/libs/i18n/src/lib/translations/translations_zh-CN.json index 3c1fe512f17..413e59b8023 100644 --- a/libs/i18n/src/lib/translations/translations_zh-CN.json +++ b/libs/i18n/src/lib/translations/translations_zh-CN.json @@ -239,6 +239,7 @@ "platformSearchField.synchronizeButtonTitle": "同步", "platformSearchField.searchSuggestionMessage": "找到{count}条建议。", "platformSearchField.searchSuggestionNavigateMessage": "用上下方向键来导航", + "platformSwitch.ariaLabel": "开关", "platformSmartFilterBar.searchPlaceholder": "搜索…", "platformSmartFilterBar.submitButtonLabel": "确认", "platformSmartFilterBar.filtersButtonLabel": "筛选({filtersCount})", diff --git a/libs/platform/src/lib/form/multi-input/multi-input.component.html b/libs/platform/src/lib/form/multi-input/multi-input.component.html index 5e0d35cfa8d..44885a6c9f9 100644 --- a/libs/platform/src/lib/form/multi-input/multi-input.component.html +++ b/libs/platform/src/lib/form/multi-input/multi-input.component.html @@ -88,7 +88,7 @@ [readonly]="readonly" aria-haspopup="listbox" [attr.aria-readonly]="readonly" - [ariaLabel]="ariaLabel" + [ariaLabel]="ariaLabel || ('coreMultiInput.multiInputAriaLabel' | fdTranslate)" [ariaLabelledBy]="ariaLabelledBy" [attr.aria-required]="required" [attr.aria-describedby]="tokenHiddenId" diff --git a/libs/platform/src/lib/form/multi-input/multi-input.component.ts b/libs/platform/src/lib/form/multi-input/multi-input.component.ts index e509338597b..cd6f09749bb 100644 --- a/libs/platform/src/lib/form/multi-input/multi-input.component.ts +++ b/libs/platform/src/lib/form/multi-input/multi-input.component.ts @@ -58,9 +58,8 @@ import { FormControlComponent } from '@fundamental-ngx/core/form'; import { InputGroupModule } from '@fundamental-ngx/core/input-group'; import { PopoverBodyComponent, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover'; import { PopoverFillMode } from '@fundamental-ngx/core/shared'; -import { FD_LANGUAGE, FdLanguage, TranslationResolver } from '@fundamental-ngx/i18n'; +import { FdTranslatePipe } from '@fundamental-ngx/i18n'; import equal from 'fast-deep-equal'; -import { Observable, firstValueFrom } from 'rxjs'; import { AutoCompleteDirective, AutoCompleteEvent } from '../auto-complete/auto-complete.directive'; import { InputType } from '../input/input.component'; import { BaseMultiInput } from './base-multi-input'; @@ -115,7 +114,8 @@ export class MultiInputSelectionChangeEvent { PlatformListModule, StandardListItemModule, DisplayFnPipe, - ContentDensityModule + ContentDensityModule, + FdTranslatePipe ] }) export class PlatformMultiInputComponent extends BaseMultiInput implements OnInit, AfterViewInit { @@ -228,9 +228,6 @@ export class PlatformMultiInputComponent extends BaseMultiInput implements OnIni @ViewChildren(BaseListItem) private readonly _listItems: QueryList; - /** @hidden */ - private readonly _translationResolver = new TranslationResolver(); - /** @hidden */ constructor( /** @hidden */ @@ -258,9 +255,7 @@ export class PlatformMultiInputComponent extends BaseMultiInput implements OnIni @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD) formField: PlatformFormField, /** @hidden */ @Optional() @SkipSelf() @Host() @Inject(FD_FORM_FIELD_CONTROL) formControl: PlatformFormFieldControl, - readonly contentDensityObserver: ContentDensityObserver, - /** @hidden */ - @Inject(FD_LANGUAGE) private readonly _language: Observable + readonly contentDensityObserver: ContentDensityObserver ) { super( cd, @@ -291,8 +286,6 @@ export class PlatformMultiInputComponent extends BaseMultiInput implements OnIni if (!this.dataSource && this.entityClass && providers?.has(this.entityClass)) { this.dataSource = new MultiInputDataSource(providers.get(this.entityClass)!); } - - this._getAriaLabel(); } /** @hidden */ @@ -540,10 +533,4 @@ export class PlatformMultiInputComponent extends BaseMultiInput implements OnIni { injector } ); } - - /** @hidden */ - private async _getAriaLabel(): Promise { - const lang = await firstValueFrom(this._language); - this.ariaLabel = this._translationResolver.resolve(lang, 'coreMultiInput.multiInputAriaLabel'); - } } diff --git a/libs/platform/src/lib/form/switch/switch/switch.component.html b/libs/platform/src/lib/form/switch/switch/switch.component.html index 4f6009720b9..0e0c8c2d8e0 100644 --- a/libs/platform/src/lib/form/switch/switch/switch.component.html +++ b/libs/platform/src/lib/form/switch/switch/switch.component.html @@ -4,7 +4,7 @@ [name]="name" [disabled]="disabled" [semantic]="semantic" - [ariaLabel]="ariaLabel" + [ariaLabel]="ariaLabel || ('platformSwitch.ariaLabel' | fdTranslate)" [ariaLabelledBy]="ariaLabelledby" [checked]="switchCurrentValue" (checkedChange)="onValueChange($event)" diff --git a/libs/platform/src/lib/form/switch/switch/switch.component.ts b/libs/platform/src/lib/form/switch/switch/switch.component.ts index c2ca2cebfa5..2d968413af1 100644 --- a/libs/platform/src/lib/form/switch/switch/switch.component.ts +++ b/libs/platform/src/lib/form/switch/switch/switch.component.ts @@ -14,9 +14,10 @@ import { } from '@angular/core'; import { ControlContainer, NgControl, NgForm } from '@angular/forms'; import { FD_FORM_FIELD, FD_FORM_FIELD_CONTROL } from '@fundamental-ngx/cdk/forms'; -import { BaseInput, PlatformFormFieldControl, PlatformFormField } from '@fundamental-ngx/platform/shared'; -import { SwitchConfig } from './switch.config'; import { SwitchModule } from '@fundamental-ngx/core/switch'; +import { FdTranslatePipe } from '@fundamental-ngx/i18n'; +import { BaseInput, PlatformFormField, PlatformFormFieldControl } from '@fundamental-ngx/platform/shared'; +import { SwitchConfig } from './switch.config'; /** Switch change event instance */ export class SwitchChangeEvent { @@ -32,13 +33,9 @@ export class SwitchChangeEvent { changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: FD_FORM_FIELD_CONTROL, useExisting: SwitchComponent, multi: true }], standalone: true, - imports: [SwitchModule] + imports: [SwitchModule, FdTranslatePipe] }) export class SwitchComponent extends BaseInput { - /** aria-label attribute of the inner input element. */ - @Input() - ariaLabel = 'Switch input'; - /** aria-labelledby attribute of the inner input element. */ @Input() ariaLabelledby: string | null = null; diff --git a/libs/platform/src/lib/search-field/search-field.component.ts b/libs/platform/src/lib/search-field/search-field.component.ts index 33cd0184a05..82b952ab3cc 100644 --- a/libs/platform/src/lib/search-field/search-field.component.ts +++ b/libs/platform/src/lib/search-field/search-field.component.ts @@ -32,7 +32,7 @@ import { ViewEncapsulation } from '@angular/core'; -import { firstValueFrom, fromEvent, isObservable, merge, Observable, of, Subject } from 'rxjs'; +import { fromEvent, isObservable, merge, Observable, of, Subject } from 'rxjs'; import { filter, map, take, takeUntil } from 'rxjs/operators'; import { FormsModule } from '@angular/forms'; @@ -50,7 +50,7 @@ import { PopoverComponent } from '@fundamental-ngx/core/popover'; import { OptionComponent, SelectComponent } from '@fundamental-ngx/core/select'; import { SearchComponent } from '@fundamental-ngx/core/shared'; import { FD_SHELLBAR_SEARCH_COMPONENT } from '@fundamental-ngx/core/shellbar'; -import { FD_LANGUAGE, FdLanguage, FdTranslatePipe, TranslationResolver } from '@fundamental-ngx/i18n'; +import { FdTranslatePipe, resolveTranslationSync } from '@fundamental-ngx/i18n'; import { MenuComponent, MenuItemComponent, MenuTriggerDirective } from '@fundamental-ngx/platform/menu'; import { BaseComponent, SearchFieldDataSource } from '@fundamental-ngx/platform/shared'; import equal from 'fast-deep-equal'; @@ -366,7 +366,7 @@ export class SearchFieldComponent private _categories: ValueLabelItem[]; /** @hidden */ - private _currentSearchSuggestionAnnoucementMessage = ''; + private _currentSearchSuggestionAnnouncementMessage = ''; /** @hidden */ private _suggestionOverlayRef: OverlayRef | null; @@ -378,7 +378,7 @@ export class SearchFieldComponent private _suggestionkeyManager: FocusKeyManager; /** @hidden */ - private _translationResolver = new TranslationResolver(); + private resolveTranslation = resolveTranslationSync(); /** @hidden */ private readonly _onDestroy$ = new Subject(); @@ -398,7 +398,6 @@ export class SearchFieldComponent protected readonly _cd: ChangeDetectorRef, @Optional() private readonly _rtl: RtlService, @Inject(DOCUMENT) private readonly _document: Document, - @Inject(FD_LANGUAGE) private readonly _language$: Observable, private readonly _liveAnnouncer: LiveAnnouncer, readonly _dynamicComponentService: DynamicComponentService, readonly contentDensityObserver: ContentDensityObserver @@ -483,7 +482,7 @@ export class SearchFieldComponent onValueChange(event: string): void { // when search result not changed but input text is changed. // again need to announce the result, so clear this message. - setTimeout(() => (this._currentSearchSuggestionAnnoucementMessage = '')); + setTimeout(() => (this._currentSearchSuggestionAnnouncementMessage = '')); this._isSearchDone = false; this._isRefresh = false; @@ -510,7 +509,7 @@ export class SearchFieldComponent this.dataSource.match(match); } - this._updateSearchAnnoucementText(); + this._updateSearchAnnouncementText(); } /** @@ -718,23 +717,19 @@ export class SearchFieldComponent } /** @hidden */ - private async _updateSearchAnnoucementText(): Promise { + private async _updateSearchAnnouncementText(): Promise { // create search suggestion message with count. const suggestionCount = this._getSuggestionsLength(); - const lang = await firstValueFrom(this._language$); - const searchSuggestionMessage = this._translationResolver.resolve( - lang, - 'platformSearchField.searchSuggestionMessage', - { count: suggestionCount } - ); - const searchSuggestionNavigateMessage = this._translationResolver.resolve( - lang, + const searchSuggestionMessage = this.resolveTranslation('platformSearchField.searchSuggestionMessage', { + count: suggestionCount + }); + const searchSuggestionNavigateMessage = this.resolveTranslation( 'platformSearchField.searchSuggestionNavigateMessage' ); - this._currentSearchSuggestionAnnoucementMessage = + this._currentSearchSuggestionAnnouncementMessage = searchSuggestionMessage + (suggestionCount > 0 ? searchSuggestionNavigateMessage : ''); if (this.inputText?.length > 0) { - await this._liveAnnouncer.announce(this._currentSearchSuggestionAnnoucementMessage); + await this._liveAnnouncer.announce(this._currentSearchSuggestionAnnouncementMessage); } } diff --git a/libs/platform/src/lib/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.ts b/libs/platform/src/lib/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.ts index cb75657262c..67ffbdcfb7a 100644 --- a/libs/platform/src/lib/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.ts +++ b/libs/platform/src/lib/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.ts @@ -1,12 +1,4 @@ -import { - ChangeDetectionStrategy, - ChangeDetectorRef, - Component, - Inject, - QueryList, - ViewChildren, - ViewEncapsulation -} from '@angular/core'; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, QueryList, ViewChildren, ViewEncapsulation } from '@angular/core'; import { CdkScrollable } from '@angular/cdk/overlay'; import { NgFor, NgIf } from '@angular/common'; @@ -14,22 +6,15 @@ import { FormsModule } from '@angular/forms'; import { TemplateDirective } from '@fundamental-ngx/cdk/utils'; import { BarElementDirective, BarLeftDirective, ButtonBarComponent } from '@fundamental-ngx/core/bar'; import { BusyIndicatorComponent } from '@fundamental-ngx/core/busy-indicator'; -import { - DialogBodyComponent, - DialogComponent, - DialogFooterComponent, - DialogHeaderComponent, - DialogRef -} from '@fundamental-ngx/core/dialog'; +import { DialogBodyComponent, DialogComponent, DialogFooterComponent, DialogHeaderComponent, DialogRef } from '@fundamental-ngx/core/dialog'; import { LayoutGridColDirective, LayoutGridComponent, LayoutGridRowDirective } from '@fundamental-ngx/core/layout-grid'; import { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar'; import { TitleComponent } from '@fundamental-ngx/core/title'; -import { FD_LANGUAGE, FdLanguage, FdTranslatePipe, TranslationResolver } from '@fundamental-ngx/i18n'; +import { FdTranslatePipe, resolveTranslationSync } from '@fundamental-ngx/i18n'; import { ButtonComponent } from '@fundamental-ngx/platform/button'; import { DynamicFormControl, DynamicFormItem, FormGeneratorComponent } from '@fundamental-ngx/platform/form'; import { SelectItem } from '@fundamental-ngx/platform/shared'; import { FILTER_STRATEGY, FilterAllStrategy } from '@fundamental-ngx/platform/table'; -import { Observable, firstValueFrom } from 'rxjs'; import { getSelectItemValue } from '../../helpers'; import { SmartFilterBarCondition, SmartFilterBarConditionBuilder } from '../../interfaces/smart-filter-bar-condition'; import { SmartFilterBarStrategyLabels } from '../../interfaces/strategy-labels.type'; @@ -105,15 +90,11 @@ export class SmartFilterBarConditionsDialogComponent { private _submittedForms: any[] = []; /** @hidden */ - private _language: FdLanguage; - - /** @hidden */ - private _translationResolver = new TranslationResolver(); + private resolveTranslation = resolveTranslationSync(); /** @hidden */ constructor( private _dialogRef: DialogRef, - @Inject(FD_LANGUAGE) private readonly _language$: Observable, private readonly _cdr: ChangeDetectorRef, private _smartFilterBarService: SmartFilterBarService ) { @@ -121,11 +102,10 @@ export class SmartFilterBarConditionsDialogComponent { } /** @hidden */ - private async _init(): Promise { + private _init(): void { this.config = this._dialogRef.data; - this._language = await firstValueFrom(this._language$); - this.conditionOperatorOptions = await this._getApplicableConditionOperators(); + this.conditionOperatorOptions = this._getApplicableConditionOperators(); this._addExistingConditions(getSelectItemValue(this.config.conditions)); @@ -208,10 +188,7 @@ export class SmartFilterBarConditionsDialogComponent { for (const strategyItem in labelsConfig) { if (Object.prototype.hasOwnProperty.call(labelsConfig, strategyItem)) { const translationKey = labelsConfig[strategyItem]; - labelsConfig[strategyItem] = this._translationResolver.resolve( - this._language, - 'platformSmartFilterBar.' + translationKey - ); + labelsConfig[strategyItem] = this.resolveTranslation('platformSmartFilterBar.' + translationKey); } } @@ -257,10 +234,7 @@ export class SmartFilterBarConditionsDialogComponent { default: condition?.value, type: this.config.filterType, choices: this.config.choices, - placeholder: this._translationResolver.resolve( - this._language, - 'platformSmartFilterBar.filterConditionValuePlaceholder' - ), + placeholder: this.resolveTranslation('platformSmartFilterBar.filterConditionValuePlaceholder'), controlType: this.config.controlType, when: (value) => value.operator !== FILTER_STRATEGY.BETWEEN, onchange: (value, _, control: DynamicFormControl) => { @@ -278,10 +252,7 @@ export class SmartFilterBarConditionsDialogComponent { default: condition?.value, type: this.config.filterType, choices: this.config.choices, - placeholder: this._translationResolver.resolve( - this._language, - 'platformSmartFilterBar.filterConditionValueFromPlaceholder' - ), + placeholder: this.resolveTranslation('platformSmartFilterBar.filterConditionValueFromPlaceholder'), controlType: this.config.controlType, when: (value) => value.operator === FILTER_STRATEGY.BETWEEN, onchange: (value, _, control: DynamicFormControl) => { @@ -299,10 +270,7 @@ export class SmartFilterBarConditionsDialogComponent { default: condition?.value2, type: this.config.filterType, choices: this.config.choices, - placeholder: this._translationResolver.resolve( - this._language, - 'platformSmartFilterBar.filterConditionValueToPlaceholder' - ), + placeholder: this.resolveTranslation('platformSmartFilterBar.filterConditionValueToPlaceholder'), required: true, controlType: this.config.controlType, when: (value) => value?.operator === FILTER_STRATEGY.BETWEEN, From 431a35ab5fd0af689be7af45092e770a6f5577da Mon Sep 17 00:00:00 2001 From: g-cheishvili Date: Thu, 21 Sep 2023 14:55:53 +0400 Subject: [PATCH 08/21] chore: updated example to use locale --- .../i18n-language-change-example.component.ts | 12 ++++++-- ...ing-utility-functions-example.component.ts | 30 +++++++++++++++---- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/libs/docs/i18n/changing-translations/examples/i18n-language-change-example/i18n-language-change-example.component.ts b/libs/docs/i18n/changing-translations/examples/i18n-language-change-example/i18n-language-change-example.component.ts index e5435607c2d..df969f30441 100644 --- a/libs/docs/i18n/changing-translations/examples/i18n-language-change-example/i18n-language-change-example.component.ts +++ b/libs/docs/i18n/changing-translations/examples/i18n-language-change-example/i18n-language-change-example.component.ts @@ -1,9 +1,9 @@ -import { ChangeDetectionStrategy, Component, Inject } from '@angular/core'; +import { ChangeDetectionStrategy, Component, inject, Inject, LOCALE_ID } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { ButtonModule } from '@fundamental-ngx/core/button'; import { FormLabelComponent } from '@fundamental-ngx/core/form'; import { SegmentedButtonModule } from '@fundamental-ngx/core/segmented-button'; -import { FD_LANGUAGE, FD_LANGUAGE_ENGLISH, FD_LANGUAGE_UKRAINIAN, FdLanguage } from '@fundamental-ngx/i18n'; +import { FD_LANGUAGE, FD_LANGUAGE_ENGLISH, FD_LANGUAGE_UKRAINIAN, FD_LOCALE, FdLanguage } from '@fundamental-ngx/i18n'; import { PlatformTextAreaModule } from '@fundamental-ngx/platform/form'; import { BehaviorSubject } from 'rxjs'; @@ -15,12 +15,17 @@ import { BehaviorSubject } from 'rxjs'; { provide: FD_LANGUAGE, useValue: new BehaviorSubject(FD_LANGUAGE_ENGLISH) + }, + { + provide: FD_LOCALE, + useFactory: () => new BehaviorSubject(inject(LOCALE_ID)) } ], standalone: true, imports: [SegmentedButtonModule, FormsModule, ButtonModule, FormLabelComponent, PlatformTextAreaModule] }) export class PlatformLanguageChangeExampleComponent { + fdLocale$ = inject(FD_LOCALE) as BehaviorSubject; lang = 'en'; constructor(@Inject(FD_LANGUAGE) private langSubject$: BehaviorSubject) {} @@ -29,9 +34,11 @@ export class PlatformLanguageChangeExampleComponent { switch (lang) { case 'en': this.langSubject$.next(FD_LANGUAGE_ENGLISH); + this.fdLocale$.next('en-US'); break; case 'ua': this.langSubject$.next(FD_LANGUAGE_UKRAINIAN); + this.fdLocale$.next('uk-UA'); break; case 'custom': { // modify all values of existing English dictionary @@ -44,6 +51,7 @@ export class PlatformLanguageChangeExampleComponent { }) ) as any; this.langSubject$.next(custom); + this.fdLocale$.next('en-US'); break; } } diff --git a/libs/docs/i18n/translation-resolver/examples/using-utility-functions-example.component.ts b/libs/docs/i18n/translation-resolver/examples/using-utility-functions-example.component.ts index c526daeb16d..9b795f21538 100644 --- a/libs/docs/i18n/translation-resolver/examples/using-utility-functions-example.component.ts +++ b/libs/docs/i18n/translation-resolver/examples/using-utility-functions-example.component.ts @@ -1,6 +1,12 @@ import { AsyncPipe } from '@angular/common'; import { Component } from '@angular/core'; -import { FD_LANGUAGE, FD_LANGUAGE_ENGLISH, resolveTranslation, resolveTranslation$ } from '@fundamental-ngx/i18n'; +import { + FD_LANGUAGE, + FD_LANGUAGE_ENGLISH, + resolveTranslationObservable, + resolveTranslationSignal, + resolveTranslationSync +} from '@fundamental-ngx/i18n'; import { BehaviorSubject } from 'rxjs'; @Component({ @@ -20,6 +26,13 @@ import { BehaviorSubject } from 'rxjs'; {{ coreDatePickerDateInputLabel }} +
+ Signal resolve of the translation +
+ + {{ coreDatePickerDateInputLabelSignal() }} + +
@@ -37,7 +50,7 @@ import { BehaviorSubject } from 'rxjs';
- {{ resolveTranslation('coreDatePicker.dateInputLabel') }} + {{ resolveTranslation('coreDatePicker.dateRangeInputLabel') }}
`, @@ -54,23 +67,28 @@ export class UsingUtilityFunctionsExampleComponent { /** * Async resolve of the translation. It takes FD_LANGUAGE from the DI token and returns an observable. */ - coreDatePickerDateInputLabel$ = resolveTranslation$('coreDatePicker.dateInputLabel'); + coreDatePickerDateInputLabel$ = resolveTranslationObservable('coreDatePicker.dateInputLabel'); /** * Sync resolve of the translation. It takes FD_LANGUAGE from the DI token, subscribes to it * and returns a string available at the moment of the function call. */ - coreDatePickerDateInputLabel = resolveTranslation('coreDatePicker.dateInputLabel'); + coreDatePickerDateInputLabel = resolveTranslationSync('coreDatePicker.dateInputLabel'); + /** + * Using signal to resolve the translation. It takes FD_LANGUAGE from the DI token and returns a + * computed signal + */ + coreDatePickerDateInputLabelSignal = resolveTranslationSignal('coreDatePicker.dateInputLabel'); /** * if resolveTranslation$ is called without any parameters, it returns a function, * which can be used outside the injection context and will be bound to the current DI FD_LANGUAGE instance * and will return an observable of the translation. */ - resolveTranslation$ = resolveTranslation$(); + resolveTranslation$ = resolveTranslationObservable(); /** * if resolveTranslation is called without any parameters, it returns a function, * which can be used outside the injection context and will be bound to the current DI FD_LANGUAGE instance * latest value and will return a string of the translation. */ - resolveTranslation = resolveTranslation(); + resolveTranslation = resolveTranslationSync(); } From 0c2777161386d546ac39001bf30d59e53c0636af Mon Sep 17 00:00:00 2001 From: g-cheishvili Date: Thu, 21 Sep 2023 15:18:00 +0400 Subject: [PATCH 09/21] chore: reverted back to using observable pipe --- libs/i18n/src/lib/pipes/fd-translate.pipe.ts | 45 ++++++++++++++++--- .../src/lib/utils/translation-resolver.ts | 22 +++++++-- 2 files changed, 58 insertions(+), 9 deletions(-) diff --git a/libs/i18n/src/lib/pipes/fd-translate.pipe.ts b/libs/i18n/src/lib/pipes/fd-translate.pipe.ts index 2be47bc0199..ccddfa99c32 100644 --- a/libs/i18n/src/lib/pipes/fd-translate.pipe.ts +++ b/libs/i18n/src/lib/pipes/fd-translate.pipe.ts @@ -1,6 +1,9 @@ -import { Pipe, PipeTransform } from '@angular/core'; +import { ChangeDetectorRef, DestroyRef, Pipe, PipeTransform } from '@angular/core'; +import { BehaviorSubject, combineLatest, distinctUntilChanged, filter, skip, switchMap } from 'rxjs'; + +import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { FdLanguageKeyArgs } from '../models/lang'; -import { resolveTranslationSignal } from '../utils'; +import { resolveTranslationObservable } from '../utils'; @Pipe({ name: 'fdTranslate', @@ -9,11 +12,43 @@ import { resolveTranslationSignal } from '../utils'; }) export class FdTranslatePipe implements PipeTransform { /** @hidden */ - private resolveTranslationSignal = resolveTranslationSignal(); + private readonly _translationResolver = resolveTranslationObservable(); + + /** @hidden */ + private readonly _key$ = new BehaviorSubject(undefined); + + /** @hidden */ + private readonly _args$ = new BehaviorSubject(undefined); + + /** @hidden */ + private _value: string | undefined; + + /** @hidden */ + constructor(private readonly _destroyRef: DestroyRef, private _cdr: ChangeDetectorRef) { + this._instantiateSubscription(); + } /** Translate a key with arguments and, optionally, default value */ transform(key: string, args?: FdLanguageKeyArgs | Record, defaultValue = ''): string { - const translationSignal = this.resolveTranslationSignal(key, args); - return translationSignal() || defaultValue; + this._key$.next(key); + this._args$.next(args); + + return this._value || defaultValue; + } + + /** @hidden */ + private _instantiateSubscription(): void { + combineLatest([ + this._key$.pipe(skip(1), filter(Boolean), distinctUntilChanged()), + this._args$.pipe(skip(1), distinctUntilChanged()) + ]) + .pipe( + switchMap(([key, args]) => this._translationResolver(key, args)), + takeUntilDestroyed(this._destroyRef) + ) + .subscribe((value) => { + this._value = value; + this._cdr.markForCheck(); + }); } } diff --git a/libs/i18n/src/lib/utils/translation-resolver.ts b/libs/i18n/src/lib/utils/translation-resolver.ts index 10636770de2..51f388fefdb 100644 --- a/libs/i18n/src/lib/utils/translation-resolver.ts +++ b/libs/i18n/src/lib/utils/translation-resolver.ts @@ -15,11 +15,11 @@ export class TranslationResolver { key: FdLanguageKey, args?: FdLanguageKeyArgs, locale?: Nullable, - fallbackLanguage: Nullable = FD_LANGUAGE_ENGLISH + fallbackLanguage: FdLanguage = FD_LANGUAGE_ENGLISH ): string { - const resolvedValue = this.getRaw(lang, key, args); + const resolvedValue = this._resolveWithoutFallback(lang, key, args, locale); if (resolvedValue !== '') { - return this._interpolate(resolvedValue, args, locale); + return resolvedValue; } if (isDevMode() && fallbackLanguage) { console.warn( @@ -27,7 +27,21 @@ export class TranslationResolver { ); } // not a function, not a string, fall back to english, if possible - return fallbackLanguage ? this.resolve(fallbackLanguage, key, args, null) ?? '' : ''; + return this._resolveWithoutFallback(fallbackLanguage, key, args, locale); + } + + /** @hidden */ + private _resolveWithoutFallback( + lang: FdLanguage, + key: FdLanguageKey, + args?: FdLanguageKeyArgs, + locale?: Nullable + ): string { + const resolvedValue = this.getRaw(lang, key, args); + if (resolvedValue !== '') { + return this._interpolate(resolvedValue, args, locale); + } + return ''; } /** From 451ba3a3d082a9f0fed375dce49ad8a345bbc89b Mon Sep 17 00:00:00 2001 From: g-cheishvili Date: Thu, 21 Sep 2023 17:14:06 +0400 Subject: [PATCH 10/21] chore: fixed workspace tags test --- libs/nx-plugin/src/verify-nx-tags.spec.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/libs/nx-plugin/src/verify-nx-tags.spec.ts b/libs/nx-plugin/src/verify-nx-tags.spec.ts index 38cd68e7d44..d223a1dac12 100644 --- a/libs/nx-plugin/src/verify-nx-tags.spec.ts +++ b/libs/nx-plugin/src/verify-nx-tags.spec.ts @@ -1,7 +1,18 @@ import { readCachedProjectGraph } from 'nx/src/project-graph/project-graph'; const knownTypes = new Set(['app', 'e2e', 'tools', 'lib']); -const knownScopes = new Set(['docs', 'fd', 'fdp', 'fn', 'cx', 'tools', 'datetime-adapter', 'components-e2e', 'i18n']); +const knownScopes = new Set([ + 'docs', + 'fd', + 'fdp', + 'cdk', + 'fn', + 'cx', + 'tools', + 'datetime-adapter', + 'components-e2e', + 'i18n' +]); // For some reason this test hangs. TODO: investigate whats wrong. describe('Nx projects (nx.json)', () => { From 2baf298dbcb08d8b127187ae5f87bf4daabef35b Mon Sep 17 00:00:00 2001 From: g-cheishvili Date: Fri, 22 Sep 2023 01:39:23 +0400 Subject: [PATCH 11/21] feat: added type safety to the translation resolution keys --- libs/i18n/src/lib/models/lang.ts | 20 +++++++++++++ libs/i18n/src/lib/pipes/fd-translate.pipe.ts | 4 +-- .../src/lib/utils/flatten-translations.ts | 20 +++++++++++-- libs/i18n/src/lib/utils/load-json.ts | 28 ++++++++++++++----- libs/i18n/src/lib/utils/patch-language.ts | 19 ++++++++----- .../lib/utils/resolve-helpers/common-types.ts | 4 +-- .../resolve-translations-observable.ts | 8 +++--- .../resolve-translations-signal.ts | 15 ++++++---- .../resolve-translations-sync.ts | 14 +++++----- .../src/lib/utils/translation-resolver.ts | 25 +++++++++++++---- 10 files changed, 113 insertions(+), 44 deletions(-) diff --git a/libs/i18n/src/lib/models/lang.ts b/libs/i18n/src/lib/models/lang.ts index 4800cd6f766..36126e4faca 100644 --- a/libs/i18n/src/lib/models/lang.ts +++ b/libs/i18n/src/lib/models/lang.ts @@ -4,6 +4,26 @@ export type FdLanguageKeyFunction = (args: FdLanguageKeyArgs) => string; export type FdLanguageKey = string | FdLanguageKeyFunction; +export type NestedKeyOf = { + [Key in keyof ObjectType & (string | number)]: ObjectType[Key] extends object + ? `${Key}` | `${Key}.${NestedKeyOf}` + : `${Key}`; +}[keyof ObjectType & (string | number)]; + +type _FdLanguageKeyIdentifierUnion = `${NestedKeyOf}`; + +export type FdLanguageKeyIdentifier = { + [Key in _FdLanguageKeyIdentifierUnion]: ObjectPathType extends FdLanguageKey ? Key : never; +}[_FdLanguageKeyIdentifierUnion]; + +export type ObjectPathType = K extends keyof T + ? T[K] + : K extends `${infer First}.${infer Rest}` + ? First extends keyof T + ? ObjectPathType + : never + : never; + /** * Representation of the dictionary per UI component */ diff --git a/libs/i18n/src/lib/pipes/fd-translate.pipe.ts b/libs/i18n/src/lib/pipes/fd-translate.pipe.ts index ccddfa99c32..b8d14fdd644 100644 --- a/libs/i18n/src/lib/pipes/fd-translate.pipe.ts +++ b/libs/i18n/src/lib/pipes/fd-translate.pipe.ts @@ -2,7 +2,7 @@ import { ChangeDetectorRef, DestroyRef, Pipe, PipeTransform } from '@angular/cor import { BehaviorSubject, combineLatest, distinctUntilChanged, filter, skip, switchMap } from 'rxjs'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; -import { FdLanguageKeyArgs } from '../models/lang'; +import { FdLanguageKeyArgs, FdLanguageKeyIdentifier } from '../models/lang'; import { resolveTranslationObservable } from '../utils'; @Pipe({ @@ -29,7 +29,7 @@ export class FdTranslatePipe implements PipeTransform { } /** Translate a key with arguments and, optionally, default value */ - transform(key: string, args?: FdLanguageKeyArgs | Record, defaultValue = ''): string { + transform(key: FdLanguageKeyIdentifier, args?: FdLanguageKeyArgs | Record, defaultValue = ''): string { this._key$.next(key); this._args$.next(args); diff --git a/libs/i18n/src/lib/utils/flatten-translations.ts b/libs/i18n/src/lib/utils/flatten-translations.ts index fe5d713f309..b0f99379206 100644 --- a/libs/i18n/src/lib/utils/flatten-translations.ts +++ b/libs/i18n/src/lib/utils/flatten-translations.ts @@ -1,4 +1,5 @@ -import { FdLanguageKeyFunction, FdLanguagePatch } from '../models'; +import { Nullable } from '@fundamental-ngx/cdk/utils'; +import { FdLanguage, FdLanguageKeyFunction, FdLanguageKeyIdentifier, FdLanguagePatch } from '../models'; /** * Transforms hierarchical object into object with flat keys @@ -7,11 +8,24 @@ import { FdLanguageKeyFunction, FdLanguagePatch } from '../models'; * @param prefix * @param translationValueTransformer */ +export function flattenTranslations( + translations: FdLanguage, + prefix?: Nullable, + translationValueTransformer?: (value: string | FdLanguageKeyFunction) => string | FdLanguageKeyFunction +): Record; export function flattenTranslations( translations: FdLanguagePatch, - prefix: string | null = null, + prefix?: Nullable, + translationValueTransformer?: (value: string | FdLanguageKeyFunction) => string | FdLanguageKeyFunction +): Partial>; +// eslint-disable-next-line jsdoc/require-jsdoc +export function flattenTranslations( + translations: FdLanguagePatch | FdLanguage, + prefix?: Nullable, translationValueTransformer?: (value: string | FdLanguageKeyFunction) => string | FdLanguageKeyFunction -): Record { +): + | Partial> + | Record { if (!translations) { return {}; } diff --git a/libs/i18n/src/lib/utils/load-json.ts b/libs/i18n/src/lib/utils/load-json.ts index 6047cd3b377..bbb53079e3c 100644 --- a/libs/i18n/src/lib/utils/load-json.ts +++ b/libs/i18n/src/lib/utils/load-json.ts @@ -1,19 +1,19 @@ -import { FdLanguage } from '../models/lang'; +import { FdLanguage, FdLanguageKey, FdLanguageKeyIdentifier } from '../models/lang'; -interface RecursiveRecord { - [key: string]: string | RecursiveRecord; +interface RecursiveRecord { + [key: string]: V | RecursiveRecord; } -const set = (obj: RecursiveRecord, path: string, value: string): void => { +function set(obj: RecursiveRecord, path: string, value: V): void { const pathParts = path.split('.'); let pathValue = obj; for (let i = 0; i < pathParts.length - 1; i++) { const part = pathParts[i]; pathValue[part] = pathValue[part] || {}; - pathValue = pathValue[part] as RecursiveRecord; + pathValue = pathValue[part] as RecursiveRecord; } pathValue[pathParts[pathParts.length - 1]] = value; -}; +} /** * Converts a flat object to a hierarchy object @@ -21,10 +21,24 @@ const set = (obj: RecursiveRecord, path: string, value: string): void => { * * @param source */ -export function loadJson(source: Record): FdLanguage { +export function loadJson(source: Partial>): FdLanguage { const result = {}; Object.entries(source).forEach(([key, value]) => { set(result, key, value); }); return result as FdLanguage; } + +/** + * Converts a flat object to a hierarchy object + * in source object { 'key1.key2': value } will be converted to { key1: { key2: value } } + * + * @param source + */ +export function flatToHierarchy(source: Record): FdLanguage { + const result = {}; + Object.entries(source).forEach(([key, value]) => { + set(result, key, value); + }); + return result as FdLanguage; +} diff --git a/libs/i18n/src/lib/utils/patch-language.ts b/libs/i18n/src/lib/utils/patch-language.ts index a1fa432bbf9..2c2f69021b6 100644 --- a/libs/i18n/src/lib/utils/patch-language.ts +++ b/libs/i18n/src/lib/utils/patch-language.ts @@ -1,19 +1,15 @@ import { FactoryProvider, SkipSelf } from '@angular/core'; -import { cloneDeep, merge } from 'lodash-es'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import { FdLanguage, FdLanguagePatch } from '../models'; import { flattenTranslations } from './flatten-translations'; -import { loadJson } from './load-json'; +import { flatToHierarchy } from './load-json'; import { FD_LANGUAGE } from './tokens'; export const patchedObj = ( lang: FdLanguage, patch: FdLanguagePatch | ((lang: FdLanguage) => FdLanguagePatch) -): FdLanguage => { - const patchObj = typeof patch === 'function' ? patch(lang) : patch; - return loadJson(flattenTranslations(patchObj, null)); -}; +): FdLanguagePatch => (typeof patch === 'function' ? patch(lang) : patch); /** * DI utility function, that allows to override `FD_LANGUAGE` injection token with part of the language object, that is used globally @@ -52,7 +48,16 @@ export function patchLanguage( return { provide: FD_LANGUAGE, useFactory: (lang$: Observable) => - lang$.pipe(map((lang) => merge(cloneDeep(lang), patchedObj(lang, languagePatch)))), + lang$.pipe( + map((lang) => { + const original = flattenTranslations(lang); + const patch = flattenTranslations(patchedObj(lang, languagePatch)); + return flatToHierarchy({ + ...original, + ...patch + }); + }) + ), deps: [[new SkipSelf(), FD_LANGUAGE]] }; } diff --git a/libs/i18n/src/lib/utils/resolve-helpers/common-types.ts b/libs/i18n/src/lib/utils/resolve-helpers/common-types.ts index 10888e74ec5..270b49ff07e 100644 --- a/libs/i18n/src/lib/utils/resolve-helpers/common-types.ts +++ b/libs/i18n/src/lib/utils/resolve-helpers/common-types.ts @@ -1,4 +1,4 @@ import { Nullable } from '@fundamental-ngx/cdk/utils'; -import { FdLanguageKeyArgs } from '../../models/lang'; +import { FdLanguageKeyArgs, FdLanguageKeyIdentifier } from '../../models/lang'; -export type ResolveFn = (key: string, args?: Nullable) => ReturnType; +export type ResolveFn = (key: FdLanguageKeyIdentifier, args?: Nullable) => ReturnType; diff --git a/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-observable.ts b/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-observable.ts index 85d7fec035c..00b1bc6a5d1 100644 --- a/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-observable.ts +++ b/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-observable.ts @@ -2,7 +2,7 @@ import { inject } from '@angular/core'; import { Nullable } from '@fundamental-ngx/cdk/utils'; import { combineLatest, isObservable, Observable, of } from 'rxjs'; import { map } from 'rxjs/operators'; -import { FdLanguage, FdLanguageKeyArgs } from '../../models/lang'; +import { FdLanguage, FdLanguageKeyArgs, FdLanguageKeyIdentifier } from '../../models/lang'; import { FD_LANGUAGE, FD_LOCALE } from '../tokens'; import { TranslationResolver } from '../translation-resolver'; import { ResolveFn } from './common-types'; @@ -63,7 +63,7 @@ export function resolveTranslationObservable( * Helper utility function for getting translations observable */ export function resolveTranslationObservable( - key: string, + key: FdLanguageKeyIdentifier, args?: Nullable, options?: ResolveTranslationsObservableOptions ): Observable; @@ -71,7 +71,7 @@ export function resolveTranslationObservable( * Helper utility function for getting translations */ export function resolveTranslationObservable( - keyOrOptions?: string | ResolveTranslationsObservableOptions, + keyOrOptions?: FdLanguageKeyIdentifier | ResolveTranslationsObservableOptions, args?: Nullable, options?: ResolveTranslationsObservableOptions ): Observable | ResolveFn> { @@ -80,7 +80,7 @@ export function resolveTranslationObservable( const langAndLocale$ = combineLatest([getFdLangObservable(fdLang), getFdLocaleObservable(fdLocale)]); const resolver = new TranslationResolver(); - const fn = (k: string, ctx?: Nullable): Observable => + const fn = (k: FdLanguageKeyIdentifier, ctx?: Nullable): Observable => langAndLocale$.pipe(map(([lang, locale]) => resolver.resolve(lang, k, ctx || {}, locale))); if (!keyOrOptions || typeof keyOrOptions !== 'string') { diff --git a/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-signal.ts b/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-signal.ts index 2a7f79dea7e..fd3fbc4980a 100644 --- a/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-signal.ts +++ b/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-signal.ts @@ -1,13 +1,13 @@ import { computed, inject, isSignal, signal, Signal } from '@angular/core'; import { toSignal } from '@angular/core/rxjs-interop'; import { Nullable } from '@fundamental-ngx/cdk/utils'; -import { FdLanguage, FdLanguageKeyArgs } from '../../models/lang'; +import { FdLanguage, FdLanguageKeyArgs, FdLanguageKeyIdentifier } from '../../models/lang'; import { FD_LANGUAGE, FD_LOCALE } from '../tokens'; import { resolveTranslationSync } from './resolve-translations-sync'; type CanBeSignal = T | Signal; type ResolveSignalFn = ( - key: CanBeSignal, + key: CanBeSignal, args?: Nullable> ) => Signal; @@ -52,7 +52,7 @@ function isResolveTranslationsSignalOptions( * @param options */ function getResolveTranslationsSignalOptions( - keyOrOptions?: CanBeSignal | ResolveTranslationsSignalOptions, + keyOrOptions?: CanBeSignal | ResolveTranslationsSignalOptions, options?: ResolveTranslationsSignalOptions ): ResolveTranslationsSignalOptions { const optionsFromKey = isResolveTranslationsSignalOptions(keyOrOptions) ? keyOrOptions : {}; @@ -71,13 +71,13 @@ export function resolveTranslationSignal(options?: ResolveTranslationsSignalOpti * @param options */ export function resolveTranslationSignal( - key: CanBeSignal, + key: CanBeSignal, args?: Nullable>, options?: ResolveTranslationsSignalOptions ): Signal; // eslint-disable-next-line jsdoc/require-jsdoc export function resolveTranslationSignal( - keyOrOptions?: CanBeSignal | ResolveTranslationsSignalOptions, + keyOrOptions?: CanBeSignal | ResolveTranslationsSignalOptions, args?: Nullable>, options?: ResolveTranslationsSignalOptions ): Signal | ResolveSignalFn { @@ -85,7 +85,10 @@ export function resolveTranslationSignal( const fdLocaleSignal = getFdLocaleSignal(fdLocale); const fdLangSignal = getFdLangSignal(fdLang); - const fn = (k: CanBeSignal, ctx?: Nullable>): Signal => { + const fn = ( + k: CanBeSignal, + ctx?: Nullable> + ): Signal => { const kSignal = isSignal(k) ? k : signal(k); const ctxSignal = isSignal(ctx) ? ctx : signal(ctx || {}); return computed(() => diff --git a/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-sync.ts b/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-sync.ts index 35cf91aad17..b4f4250e4f0 100644 --- a/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-sync.ts +++ b/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-sync.ts @@ -3,7 +3,7 @@ import { toSignal } from '@angular/core/rxjs-interop'; import { Nullable } from '@fundamental-ngx/cdk/utils'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; -import { FdLanguage, FdLanguageKeyArgs } from '../../models/lang'; +import { FdLanguage, FdLanguageKeyArgs, FdLanguageKeyIdentifier } from '../../models/lang'; import { FD_LANGUAGE, FD_LOCALE } from '../tokens'; import { TranslationResolver } from '../translation-resolver'; import { ResolveFn } from './common-types'; @@ -13,8 +13,8 @@ interface ResolveTranslationsSyncOptions { fdLocale?: Nullable; } -function getResolveTranslatiosSyncOptions( - keyOrOptions?: string | ResolveTranslationsSyncOptions, +function getResolveTranslationSyncOptions( + keyOrOptions?: FdLanguageKeyIdentifier | ResolveTranslationsSyncOptions, options?: ResolveTranslationsSyncOptions ): ResolveTranslationsSyncOptions { const optionsFromKey = typeof keyOrOptions === 'string' ? {} : keyOrOptions; @@ -30,17 +30,17 @@ function getResolveTranslatiosSyncOptions( */ export function resolveTranslationSync(options?: ResolveTranslationsSyncOptions): ResolveFn; export function resolveTranslationSync( - key: string, + key: FdLanguageKeyIdentifier, args?: Nullable, options?: ResolveTranslationsSyncOptions ): string; // eslint-disable-next-line jsdoc/require-jsdoc export function resolveTranslationSync( - keyOrOptions?: string | ResolveTranslationsSyncOptions, + keyOrOptions?: FdLanguageKeyIdentifier | ResolveTranslationsSyncOptions, args?: Nullable, options?: ResolveTranslationsSyncOptions ): string | ResolveFn { - let { fdLang, fdLocale } = getResolveTranslatiosSyncOptions(keyOrOptions, options); + let { fdLang, fdLocale } = getResolveTranslationSyncOptions(keyOrOptions, options); const _stopUpdating$ = new Subject(); if (!fdLocale) { const fdLocaleSignal = toSignal(inject(FD_LOCALE).pipe(takeUntil(_stopUpdating$)), { requireSync: true }); @@ -51,7 +51,7 @@ export function resolveTranslationSync( effect(() => (fdLang = fdLangSignal())); } const resolver = new TranslationResolver(); - const fn = (k: string, ctx?: Nullable): string => + const fn = (k: FdLanguageKeyIdentifier, ctx?: Nullable): string => resolver.resolve(fdLang || ({} as unknown as FdLanguage), k, ctx || {}, fdLocale); if (!keyOrOptions || typeof keyOrOptions !== 'string') { return fn; diff --git a/libs/i18n/src/lib/utils/translation-resolver.ts b/libs/i18n/src/lib/utils/translation-resolver.ts index 51f388fefdb..9b764356f8f 100644 --- a/libs/i18n/src/lib/utils/translation-resolver.ts +++ b/libs/i18n/src/lib/utils/translation-resolver.ts @@ -3,7 +3,13 @@ import { Nullable } from '@fundamental-ngx/cdk/utils'; import { IntlMessageFormat } from 'intl-messageformat'; import { get } from 'lodash-es'; import { FD_LANGUAGE_ENGLISH } from '../languages'; -import { FdLanguage, FdLanguageKey, FdLanguageKeyArgs, FdLanguageKeyFunction } from '../models'; +import { + FdLanguage, + FdLanguageKey, + FdLanguageKeyArgs, + FdLanguageKeyFunction, + FdLanguageKeyIdentifier +} from '../models'; const _internalReferenceRegExp = /\{\s*@@([^{}\s]*)\s*}/g; @@ -12,7 +18,7 @@ export class TranslationResolver { /** Resolves the translation for the provided language by key and args */ resolve( lang: FdLanguage, - key: FdLanguageKey, + key: FdLanguageKeyIdentifier, args?: FdLanguageKeyArgs, locale?: Nullable, fallbackLanguage: FdLanguage = FD_LANGUAGE_ENGLISH @@ -33,7 +39,7 @@ export class TranslationResolver { /** @hidden */ private _resolveWithoutFallback( lang: FdLanguage, - key: FdLanguageKey, + key: FdLanguageKeyIdentifier, args?: FdLanguageKeyArgs, locale?: Nullable ): string { @@ -58,13 +64,16 @@ export class TranslationResolver { /** * Returns the raw ICU string for the provided language by key and args **/ - private getRaw(lang: FdLanguage, key: FdLanguageKey, args?: FdLanguageKeyArgs): string { + private getRaw(lang: FdLanguage, key: FdLanguageKeyIdentifier, args?: FdLanguageKeyArgs): string { const val = this._getFdLanguageKeyValue(lang, key, args); if (typeof val === 'string') { const internalReferences = val.match(_internalReferenceRegExp); if (internalReferences) { const replacements: Array<[string, string]> = internalReferences.map((internalReference) => { - const internalReferenceKey = internalReference.replace(_internalReferenceRegExp, '$1'); + const internalReferenceKey = internalReference.replace( + _internalReferenceRegExp, + '$1' + ) as FdLanguageKeyIdentifier; const replacementValue = this.getRaw(lang, internalReferenceKey, args); return [internalReference, replacementValue]; }); @@ -79,7 +88,11 @@ export class TranslationResolver { } /** @hidden */ - private _getFdLanguageKeyValue(lang: FdLanguage, key: FdLanguageKey, args?: FdLanguageKeyArgs): string | null { + private _getFdLanguageKeyValue( + lang: FdLanguage, + key: FdLanguageKeyIdentifier, + args?: FdLanguageKeyArgs + ): string | null { const resolvedKey = this._tryResolveKey(lang, key); if (typeof resolvedKey === 'string') { return resolvedKey; From 7be8ca287f80cf515e8c71304db1a1c3c122709f Mon Sep 17 00:00:00 2001 From: g-cheishvili Date: Fri, 22 Sep 2023 01:44:06 +0400 Subject: [PATCH 12/21] fix: fixed ts issues on tests --- libs/i18n/src/lib/pipes/fd-translate.pipe.spec.ts | 7 ++++--- libs/i18n/src/lib/pipes/fd-translate.pipe.ts | 2 +- libs/i18n/src/lib/utils/load-json.spec.ts | 1 + libs/i18n/src/lib/utils/translation-resolver.spec.ts | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/libs/i18n/src/lib/pipes/fd-translate.pipe.spec.ts b/libs/i18n/src/lib/pipes/fd-translate.pipe.spec.ts index 7ff91c10ef8..41ccdf6535e 100644 --- a/libs/i18n/src/lib/pipes/fd-translate.pipe.spec.ts +++ b/libs/i18n/src/lib/pipes/fd-translate.pipe.spec.ts @@ -2,7 +2,7 @@ import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { BehaviorSubject, delay } from 'rxjs'; import { FD_LANGUAGE_ENGLISH } from '../languages'; -import { FdLanguage, FdLanguageKeyArgs } from '../models'; +import { FdLanguage, FdLanguageKeyArgs, FdLanguageKeyIdentifier } from '../models'; import { FD_LANGUAGE } from '../utils/tokens'; import { FdTranslatePipe } from './fd-translate.pipe'; @@ -21,7 +21,7 @@ const lang: FdLanguage = { changeDetection: ChangeDetectionStrategy.OnPush }) class TestComponent { - @Input() testKey: string; + @Input() testKey: FdLanguageKeyIdentifier; @Input() testArgs: FdLanguageKeyArgs; } @@ -33,7 +33,7 @@ describe('FdTranslate pipe', () => { return testComponentFixture.nativeElement.textContent.trim(); } - function setCtx(key: string, args?: FdLanguageKeyArgs): void { + function setCtx(key: FdLanguageKeyIdentifier, args?: FdLanguageKeyArgs): void { testComponentFixture.componentRef.setInput('testKey', key); testComponentFixture.componentRef.setInput('testArgs', args); testComponentFixture.detectChanges(); @@ -70,6 +70,7 @@ describe('FdTranslate pipe', () => { }); it('should return empty string if value is not found', () => { + // @ts-expect-error: testing wrong key setCtx('wrong'); expectValueToBe(''); }); diff --git a/libs/i18n/src/lib/pipes/fd-translate.pipe.ts b/libs/i18n/src/lib/pipes/fd-translate.pipe.ts index b8d14fdd644..7f57dbc5128 100644 --- a/libs/i18n/src/lib/pipes/fd-translate.pipe.ts +++ b/libs/i18n/src/lib/pipes/fd-translate.pipe.ts @@ -15,7 +15,7 @@ export class FdTranslatePipe implements PipeTransform { private readonly _translationResolver = resolveTranslationObservable(); /** @hidden */ - private readonly _key$ = new BehaviorSubject(undefined); + private readonly _key$ = new BehaviorSubject(undefined); /** @hidden */ private readonly _args$ = new BehaviorSubject(undefined); diff --git a/libs/i18n/src/lib/utils/load-json.spec.ts b/libs/i18n/src/lib/utils/load-json.spec.ts index 6bbc1a9efd7..79f2a05d103 100644 --- a/libs/i18n/src/lib/utils/load-json.spec.ts +++ b/libs/i18n/src/lib/utils/load-json.spec.ts @@ -59,6 +59,7 @@ describe('loadJson', () => { ]; testCases.forEach(([input, output]) => { it(`should convert ${JSON.stringify(input)} to ${JSON.stringify(output)}`, () => { + // @ts-expect-error: testing wrong key const result = loadJson(input); expect(result).toEqual(output); }); diff --git a/libs/i18n/src/lib/utils/translation-resolver.spec.ts b/libs/i18n/src/lib/utils/translation-resolver.spec.ts index 9b578f4636c..9d6133644bd 100644 --- a/libs/i18n/src/lib/utils/translation-resolver.spec.ts +++ b/libs/i18n/src/lib/utils/translation-resolver.spec.ts @@ -19,7 +19,7 @@ describe('TranslationResolver', () => { }, internalRefInIcu: 'test {count, plural, =1 {one item {@@internalRef}} other {# items {@@internalRef}} }' }; - const resolve = (key: string, args?: FdLanguageKeyArgs): string => resolver.resolve(lang, key, args); + const resolve = (key: any, args?: FdLanguageKeyArgs): string => resolver.resolve(lang, key, args); beforeEach(() => { resolver = new TranslationResolver(); }); From 8898f6efadcc6ac9bfcbe4712e850b28299e5980 Mon Sep 17 00:00:00 2001 From: g-cheishvili Date: Fri, 22 Sep 2023 02:43:54 +0400 Subject: [PATCH 13/21] feat: improved i18n typing across libraries --- .../lib/date-picker/date-picker.component.ts | 4 +- .../core/src/lib/slider/slider.component.html | 6 +- .../split-button/split-button.component.html | 2 +- .../time/time-column/time-column-config.ts | 10 +-- .../search-field/search-field.component.html | 2 +- ...-filter-bar-conditions-dialog.component.ts | 7 ++- ...rt-filter-bar-settings-dialog.component.ts | 62 +++---------------- .../smart-filter-bar-visibility-category.ts | 13 +++- .../interfaces/strategy-labels.type.ts | 10 ++- 9 files changed, 48 insertions(+), 68 deletions(-) diff --git a/libs/core/src/lib/date-picker/date-picker.component.ts b/libs/core/src/lib/date-picker/date-picker.component.ts index 99f7608fd5f..6abe89fe62f 100644 --- a/libs/core/src/lib/date-picker/date-picker.component.ts +++ b/libs/core/src/lib/date-picker/date-picker.component.ts @@ -49,7 +49,7 @@ import { InputGroupInputDirective, InputGroupModule } from '@fundamental-ngx/cor import { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode'; import { PopoverModule, PopoverService } from '@fundamental-ngx/core/popover'; import { Placement, SpecialDayRule } from '@fundamental-ngx/core/shared'; -import { FdTranslatePipe } from '@fundamental-ngx/i18n'; +import { FdLanguageKeyIdentifier, FdTranslatePipe } from '@fundamental-ngx/i18n'; import { Subject, Subscription } from 'rxjs'; import { startWith, takeUntil } from 'rxjs/operators'; import { DatePickerMobileComponent } from './date-picker-mobile/date-picker-mobile.component'; @@ -451,7 +451,7 @@ export class DatePickerComponent * Date input aria label key based on type * @hidden */ - get _dateInputArialLabelKey(): string { + get _dateInputArialLabelKey(): FdLanguageKeyIdentifier { // return either input value or a key for "fdTranslate" pipe return this.type === 'range' ? 'coreDatePicker.dateRangeInputLabel' : 'coreDatePicker.dateInputLabel'; } diff --git a/libs/core/src/lib/slider/slider.component.html b/libs/core/src/lib/slider/slider.component.html index e4deb8853eb..cb6120eef69 100644 --- a/libs/core/src/lib/slider/slider.component.html +++ b/libs/core/src/lib/slider/slider.component.html @@ -78,7 +78,7 @@ [attr.tabindex]="disabled ? -1 : 0" role="slider" [attr.aria-label]=" - ariaLabel || 'coreSlider.singleMinMaxDetails' | fdTranslate : { min: minValue, max: maxValue } + ariaLabel || ('coreSlider.singleMinMaxDetails' | fdTranslate : { min: minValue, max: maxValue }) " [attr.aria-labelledby]="ariaLabelledBy" [fdPopoverTrigger]="tooltipMode ? singleSliderPopover : null" @@ -132,7 +132,7 @@ [attr.tabindex]="disabled ? -1 : 0" role="slider" [attr.aria-label]=" - ariaLabel || 'coreSlider.multipleHandle1MinMaxDetails' | fdTranslate : { min: minValue, max: maxValue } + ariaLabel || ('coreSlider.multipleHandle1MinMaxDetails' | fdTranslate : { min: minValue, max: maxValue }) " [attr.aria-labelledby]="ariaLabelledBy" [fdPopoverTrigger]="tooltipMode ? rangeSliderPopover1 : null" @@ -166,7 +166,7 @@ [attr.tabindex]="disabled ? -1 : 0" role="slider" [attr.aria-label]=" - ariaLabel || 'coreSlider.multipleHandle2MinMaxDetails' | fdTranslate : { min: minValue, max: maxValue } + ariaLabel || ('coreSlider.multipleHandle2MinMaxDetails' | fdTranslate : { min: minValue, max: maxValue }) " [attr.aria-labelledby]="ariaLabelledBy" [fdPopoverTrigger]="tooltipMode ? rangeSliderPopover2 : null" diff --git a/libs/core/src/lib/split-button/split-button.component.html b/libs/core/src/lib/split-button/split-button.component.html index e314dd77a27..027c8318036 100644 --- a/libs/core/src/lib/split-button/split-button.component.html +++ b/libs/core/src/lib/split-button/split-button.component.html @@ -26,7 +26,7 @@ [fdType]="fdType" [disabled]="disabled" [ariaLabel]="'coreSplitButton.expandButtonAriaLabel' | fdTranslate" - [attr.title]="expandButtonTitle || 'coreSplitButton.expandButtonAriaLabel' | fdTranslate" + [attr.title]="expandButtonTitle || ('coreSplitButton.expandButtonAriaLabel' | fdTranslate)" [class.is-active]="menu.isOpen" > diff --git a/libs/core/src/lib/time/time-column/time-column-config.ts b/libs/core/src/lib/time/time-column/time-column-config.ts index 6015775250d..182555447a6 100644 --- a/libs/core/src/lib/time/time-column/time-column-config.ts +++ b/libs/core/src/lib/time/time-column/time-column-config.ts @@ -1,6 +1,8 @@ +import { FdLanguageKeyIdentifier } from '@fundamental-ngx/i18n'; + export interface TimeColumnConfig { - decreaseLabel: string; - increaseLabel: string; - label: string; - navigationInstruction: string; + decreaseLabel: FdLanguageKeyIdentifier; + increaseLabel: FdLanguageKeyIdentifier; + label: FdLanguageKeyIdentifier; + navigationInstruction: FdLanguageKeyIdentifier; } diff --git a/libs/platform/src/lib/search-field/search-field.component.html b/libs/platform/src/lib/search-field/search-field.component.html index a1fcf0b7c1c..b6ce5f88b03 100644 --- a/libs/platform/src/lib/search-field/search-field.component.html +++ b/libs/platform/src/lib/search-field/search-field.component.html @@ -61,7 +61,7 @@ class="fdp-search-field__input fd-input fd-input-group__input {{ appearance?.searchFieldClass }}" [attr.id]="_inputId" [attr.disabled]="disabled ? '' : null" - [attr.aria-label]="ariaLabel || 'platformSearchField.searchInputLabel' | fdTranslate" + [attr.aria-label]="ariaLabel || ('platformSearchField.searchInputLabel' | fdTranslate)" [attr.aria-labelledby]="ariaLabelledBy" [attr.aria-controls]="_menuId" [attr.aria-expanded]=" diff --git a/libs/platform/src/lib/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.ts b/libs/platform/src/lib/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.ts index 67ffbdcfb7a..8842b2f1252 100644 --- a/libs/platform/src/lib/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.ts +++ b/libs/platform/src/lib/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.ts @@ -10,7 +10,7 @@ import { DialogBodyComponent, DialogComponent, DialogFooterComponent, DialogHead import { LayoutGridColDirective, LayoutGridComponent, LayoutGridRowDirective } from '@fundamental-ngx/core/layout-grid'; import { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar'; import { TitleComponent } from '@fundamental-ngx/core/title'; -import { FdTranslatePipe, resolveTranslationSync } from '@fundamental-ngx/i18n'; +import { FdLanguageKeyIdentifier, FdTranslatePipe, resolveTranslationSync } from '@fundamental-ngx/i18n'; import { ButtonComponent } from '@fundamental-ngx/platform/button'; import { DynamicFormControl, DynamicFormItem, FormGeneratorComponent } from '@fundamental-ngx/platform/form'; import { SelectItem } from '@fundamental-ngx/platform/shared'; @@ -187,8 +187,9 @@ export class SmartFilterBarConditionsDialogComponent { const labelsConfig = { ...this._conditionLabelKeys }; for (const strategyItem in labelsConfig) { if (Object.prototype.hasOwnProperty.call(labelsConfig, strategyItem)) { - const translationKey = labelsConfig[strategyItem]; - labelsConfig[strategyItem] = this.resolveTranslation('platformSmartFilterBar.' + translationKey); + const translationKey = ('platformSmartFilterBar.' + + labelsConfig[strategyItem]) as FdLanguageKeyIdentifier; + labelsConfig[strategyItem] = this.resolveTranslation(translationKey); } } diff --git a/libs/platform/src/lib/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.ts b/libs/platform/src/lib/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.ts index 41fcd4ec8fc..87a4329fbf0 100644 --- a/libs/platform/src/lib/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.ts +++ b/libs/platform/src/lib/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.ts @@ -1,62 +1,22 @@ -import { - AfterViewInit, - ChangeDetectionStrategy, - ChangeDetectorRef, - Component, - Inject, - OnDestroy, - ViewChild, - ViewEncapsulation -} from '@angular/core'; +import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, OnDestroy, ViewChild, ViewEncapsulation } from '@angular/core'; import { asyncScheduler, BehaviorSubject, firstValueFrom, Observable, Subject, Subscription } from 'rxjs'; import { observeOn, takeUntil } from 'rxjs/operators'; -import { DialogRef } from '@fundamental-ngx/core/dialog'; -import { FdpSelectionChangeEvent } from '@fundamental-ngx/platform/form'; +import { DialogBodyComponent, DialogComponent, DialogFooterComponent, DialogHeaderComponent, DialogRef } from '@fundamental-ngx/core/dialog'; +import { FdpSelectionChangeEvent, SelectComponent } from '@fundamental-ngx/platform/form'; import { SelectItem } from '@fundamental-ngx/platform/shared'; -import { - Resettable, - RESETTABLE_TOKEN, - Table, - TableDataSource, - TableRowSelectionChangeEvent -} from '@fundamental-ngx/platform/table'; +import { ResetButtonComponent, Resettable, RESETTABLE_TOKEN, Table, TableColumnComponent, TableComponent, TableDataSource, TableRowSelectionChangeEvent, TableToolbarActionsComponent, TableToolbarComponent } from '@fundamental-ngx/platform/table'; +import { FD_LANGUAGE, FdLanguage, FdLanguageKeyIdentifier, FdTranslatePipe, TranslationResolver } from '@fundamental-ngx/i18n'; import { CdkScrollable } from '@angular/cdk/overlay'; import { NgIf } from '@angular/common'; import { TemplateDirective } from '@fundamental-ngx/cdk/utils'; -import { - BarElementDirective, - BarLeftDirective, - BarRightDirective, - ButtonBarComponent -} from '@fundamental-ngx/core/bar'; +import { BarElementDirective, BarLeftDirective, BarRightDirective, ButtonBarComponent } from '@fundamental-ngx/core/bar'; import { BusyIndicatorComponent } from '@fundamental-ngx/core/busy-indicator'; -import { - DialogBodyComponent, - DialogComponent, - DialogFooterComponent, - DialogHeaderComponent -} from '@fundamental-ngx/core/dialog'; import { IconComponent } from '@fundamental-ngx/core/icon'; import { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar'; import { TitleComponent } from '@fundamental-ngx/core/title'; -import { FD_LANGUAGE, FdLanguage, FdTranslatePipe, TranslationResolver } from '@fundamental-ngx/i18n'; -import { SelectComponent } from '@fundamental-ngx/platform/form'; -import { - ResetButtonComponent, - TableColumnComponent, - TableComponent, - TableToolbarActionsComponent, - TableToolbarComponent -} from '@fundamental-ngx/platform/table'; -import { - FdpCellDef, - FdpTableCell, - TableDataSourceDirective, - TableHeaderResizerDirective, - TableInitialStateDirective -} from '@fundamental-ngx/platform/table-helpers'; +import { FdpCellDef, FdpTableCell, TableDataSourceDirective, TableHeaderResizerDirective, TableInitialStateDirective } from '@fundamental-ngx/platform/table-helpers'; import { SmartFilterBarFieldDefinition } from '../../interfaces/smart-filter-bar-field-definition'; import { FieldFilterItem } from '../../interfaces/smart-filter-bar-field-filter-item'; import { SmartFilterSettingsDialogConfig } from '../../interfaces/smart-filter-bar-settings-dialog-config'; @@ -255,11 +215,9 @@ export class SmartFilterBarSettingsDialogComponent implements Resettable, AfterV const labels = { ...this._categoryLabelKeys }; for (const strategyItem in labels) { if (Object.prototype.hasOwnProperty.call(labels, strategyItem)) { - const translationKey = labels[strategyItem]; - labels[strategyItem] = this._translationResolver.resolve( - lang, - 'platformSmartFilterBar.' + translationKey - ); + const translationKey = ('platformSmartFilterBar.' + + labels[strategyItem as keyof SmartFilterBarVisibilityCategoryLabels]) as FdLanguageKeyIdentifier; + labels[strategyItem] = this._translationResolver.resolve(lang, translationKey); } } for (const [selectValue, selectLabel] of Object.entries(labels)) { diff --git a/libs/platform/src/lib/smart-filter-bar/interfaces/smart-filter-bar-visibility-category.ts b/libs/platform/src/lib/smart-filter-bar/interfaces/smart-filter-bar-visibility-category.ts index 0ce3c92de0d..e35169c5938 100644 --- a/libs/platform/src/lib/smart-filter-bar/interfaces/smart-filter-bar-visibility-category.ts +++ b/libs/platform/src/lib/smart-filter-bar/interfaces/smart-filter-bar-visibility-category.ts @@ -1,2 +1,13 @@ +import { FdLanguage } from '@fundamental-ngx/i18n'; + export type SmartFilterBarVisibilityCategory = 'all' | 'visible' | 'active' | 'visibleAndActive' | 'mandatory'; -export type SmartFilterBarVisibilityCategoryLabels = { [key in SmartFilterBarVisibilityCategory]: string }; + +type SmartFilterBarCategoryLabelI18nKey = { + [Key in keyof FdLanguage['platformSmartFilterBar']]: Key extends `settingsCategory${Capitalize}` + ? Key + : never; +}; + +export type SmartFilterBarVisibilityCategoryLabels = { + [key in SmartFilterBarVisibilityCategory]: SmartFilterBarCategoryLabelI18nKey[`settingsCategory${Capitalize}`]; +}; diff --git a/libs/platform/src/lib/smart-filter-bar/interfaces/strategy-labels.type.ts b/libs/platform/src/lib/smart-filter-bar/interfaces/strategy-labels.type.ts index ea24e0db387..8a4ebbb8301 100644 --- a/libs/platform/src/lib/smart-filter-bar/interfaces/strategy-labels.type.ts +++ b/libs/platform/src/lib/smart-filter-bar/interfaces/strategy-labels.type.ts @@ -1,5 +1,13 @@ +import { FdLanguage } from '@fundamental-ngx/i18n'; import { FILTER_STRATEGY } from '@fundamental-ngx/platform/table'; +type SmartFilterBarStrategy = (typeof FILTER_STRATEGY)[keyof typeof FILTER_STRATEGY]; + +type SmartFilterBarStrategyLabelI18nKey = { + [Key in keyof FdLanguage['platformSmartFilterBar']]: Key extends `filterCondition${Capitalize}` + ? Key + : never; +}; export type SmartFilterBarStrategyLabels = { - [key in (typeof FILTER_STRATEGY)[keyof typeof FILTER_STRATEGY]]: string; + [key in SmartFilterBarStrategy]: SmartFilterBarStrategyLabelI18nKey[`filterCondition${Capitalize}`]; }; From f8b7ed3fc6b989bc8faa70c7542958c86cceae87 Mon Sep 17 00:00:00 2001 From: g-cheishvili Date: Tue, 26 Sep 2023 00:30:17 +0400 Subject: [PATCH 14/21] feat: added type safety on helper functions --- libs/i18n/src/lib/models/lang.ts | 189 ++++++++++-------- libs/i18n/src/lib/pipes/fd-translate.pipe.ts | 6 +- .../src/lib/utils/flatten-translations.ts | 23 +-- libs/i18n/src/lib/utils/load-json.ts | 6 +- libs/i18n/src/lib/utils/patch-language.ts | 4 +- .../lib/utils/replace-double-curly-braces.ts | 16 -- .../lib/utils/resolve-helpers/common-types.ts | 11 +- .../resolve-translations-observable.ts | 68 +++---- .../resolve-translations-signal.ts | 94 +++------ .../resolve-translations-sync.ts | 68 +++---- .../src/lib/utils/translation-resolver.ts | 4 +- .../search-field/search-field.component.ts | 17 +- ...-filter-bar-conditions-dialog.component.ts | 19 +- .../interfaces/strategy-labels.type.ts | 2 +- yarn.lock | 49 +++++ 15 files changed, 279 insertions(+), 297 deletions(-) delete mode 100644 libs/i18n/src/lib/utils/replace-double-curly-braces.ts diff --git a/libs/i18n/src/lib/models/lang.ts b/libs/i18n/src/lib/models/lang.ts index 36126e4faca..fc2eebe309b 100644 --- a/libs/i18n/src/lib/models/lang.ts +++ b/libs/i18n/src/lib/models/lang.ts @@ -1,8 +1,10 @@ -export type FdLanguageKeyArgs = Record; +import { Nullable } from '@fundamental-ngx/cdk/utils'; -export type FdLanguageKeyFunction = (args: FdLanguageKeyArgs) => string; +export type FdLanguageKeyArgs = Nullable>; -export type FdLanguageKey = string | FdLanguageKeyFunction; +export type FdLanguageKeyFunction = T extends undefined ? () => string : (args: T) => string; + +export type FdLanguageKey = string | FdLanguageKeyFunction; export type NestedKeyOf = { [Key in keyof ObjectType & (string | number)]: ObjectType[Key] extends object @@ -13,9 +15,15 @@ export type NestedKeyOf = { type _FdLanguageKeyIdentifierUnion = `${NestedKeyOf}`; export type FdLanguageKeyIdentifier = { - [Key in _FdLanguageKeyIdentifierUnion]: ObjectPathType extends FdLanguageKey ? Key : never; + [Key in _FdLanguageKeyIdentifierUnion]: ObjectPathType extends FdLanguageKey ? Key : never; }[_FdLanguageKeyIdentifierUnion]; +export type FdLanguageKeyCtx = ObjectPathType extends FdLanguageKey< + infer Args +> + ? Args + : undefined; + export type ObjectPathType = K extends keyof T ? T[K] : K extends `${infer First}.${infer Rest}` @@ -24,6 +32,10 @@ export type ObjectPathType = K extends keyof T : never : never; +export type FlatFdLanguage = { + [Key in FdLanguageKeyIdentifier]: FdLanguageKey>; +}; + /** * Representation of the dictionary per UI component */ @@ -59,9 +71,9 @@ export interface FdLanguage { coreGridList: { filterBarCancelButtonTitle: FdLanguageKey; /** @param status */ - listItemStatusAriaLabel: FdLanguageKey; + listItemStatusAriaLabel: FdLanguageKey<{ status: string }>; /** @param count */ - listItemCounterAriaLabel: FdLanguageKey; + listItemCounterAriaLabel: FdLanguageKey<{ count: number }>; listItemButtonDetailsTitle: FdLanguageKey; listItemButtonDeleteTitle: FdLanguageKey; listItemStatusContainsErrors: FdLanguageKey; @@ -86,35 +98,40 @@ export interface FdLanguage { * @param total * @param selectedDescription */ - linkItemAriaLabel: FdLanguageKey; + linkItemAriaLabel: FdLanguageKey<{ + itemDetails: string; + index: number; + total: number; + selectedDescription: string; + }>; }; coreOverflowLayout: { /** @param count */ - moreItemsButton: FdLanguageKey; + moreItemsButton: FdLanguageKey<{ count: number }>; }; corePagination: { /** @param pageNumber */ - pageLabel: FdLanguageKey; + pageLabel: FdLanguageKey<{ pageNumber: number }>; /** * @param pageNumber * @param totalCount */ - currentPageAriaLabel: FdLanguageKey; + currentPageAriaLabel: FdLanguageKey<{ pageNumber: number; totalCount: number }>; /** * @param pageNumber * @param totalCount */ - labelBeforeInputMobile: FdLanguageKey; + labelBeforeInputMobile: FdLanguageKey<{ pageNumber: number; totalCount: number }>; /** * @param pageNumber * @param totalCount */ - labelAfterInputMobile: FdLanguageKey; + labelAfterInputMobile: FdLanguageKey<{ pageNumber: number; totalCount: number }>; /** * @param pageNumber * @param totalCount */ - inputAriaLabel: FdLanguageKey; + inputAriaLabel: FdLanguageKey<{ pageNumber: number; totalCount: number }>; itemsPerPageLabel: FdLanguageKey; firstLabel: FdLanguageKey; previousLabel: FdLanguageKey; @@ -126,7 +143,7 @@ export interface FdLanguage { * @param from * @param to */ - totalResultsLabel: FdLanguageKey; + totalResultsLabel: FdLanguageKey<{ totalCount: number; from: number; to: number }>; }; coreProductSwitch: { ariaLabel: FdLanguageKey; @@ -141,35 +158,35 @@ export interface FdLanguage { * @param min * @param max */ - singleMinMaxDetails: FdLanguageKey; + singleMinMaxDetails: FdLanguageKey<{ min: number; max: number }>; /** @param value */ - singleValueminDetails: FdLanguageKey; + singleValueminDetails: FdLanguageKey<{ value: number | string }>; /** @param value */ - singleValuemaxDetails: FdLanguageKey; + singleValuemaxDetails: FdLanguageKey<{ value: number | string }>; /** @param value */ - singleValueNowDetails: FdLanguageKey; + singleValueNowDetails: FdLanguageKey<{ value: number | string }>; /** * @param min * @param max */ - multipleHandle1MinMaxDetails: FdLanguageKey; + multipleHandle1MinMaxDetails: FdLanguageKey<{ min: number; max: number }>; /** @param value */ - multipleHandle1ValueminDetails: FdLanguageKey; + multipleHandle1ValueminDetails: FdLanguageKey<{ value: number | string }>; /** @param value */ - multipleHandle1ValuemaxDetails: FdLanguageKey; + multipleHandle1ValuemaxDetails: FdLanguageKey<{ value: number | string }>; /** @param value */ - multipleHandle1ValueNowDetails: FdLanguageKey; + multipleHandle1ValueNowDetails: FdLanguageKey<{ value: number | string }>; /** * @param min * @param max */ - multipleHandle2MinMaxDetails: FdLanguageKey; + multipleHandle2MinMaxDetails: FdLanguageKey<{ min: number; max: number }>; /** @param value */ - multipleHandle2ValueminDetails: FdLanguageKey; + multipleHandle2ValueminDetails: FdLanguageKey<{ value: number | string }>; /** @param value */ - multipleHandle2ValuemaxDetails: FdLanguageKey; + multipleHandle2ValuemaxDetails: FdLanguageKey<{ value: number | string }>; /** @param value */ - multipleHandle2ValueNowDetails: FdLanguageKey; + multipleHandle2ValueNowDetails: FdLanguageKey<{ value: number | string }>; }; coreSplitButton: { expandButtonAriaLabel: FdLanguageKey; @@ -302,13 +319,13 @@ export interface FdLanguage { messagesErrorBuildGraph: FdLanguageKey; messagesUndoAction: FdLanguageKey; /** @param count */ - nodeMembersCount: FdLanguageKey; + nodeMembersCount: FdLanguageKey<{ count: number }>; nodeVariousTeams: FdLanguageKey; nodeStatusDueToday: FdLanguageKey; /** @param count */ - nodeStatusDueInXDays: FdLanguageKey; + nodeStatusDueInXDays: FdLanguageKey<{ count: number }>; /** @param count */ - nodeStatusXDaysOverdue: FdLanguageKey; + nodeStatusXDaysOverdue: FdLanguageKey<{ count: number }>; nodeActionAddApproversBefore: FdLanguageKey; nodeActionAddApproversAfter: FdLanguageKey; nodeActionAddApproversParallel: FdLanguageKey; @@ -330,7 +347,7 @@ export interface FdLanguage { watchersInputPlaceholder: FdLanguageKey; userListSelectedItemsCountSingular: FdLanguageKey; /** @param count */ - userListSelectedItemsCountPlural: FdLanguageKey; + userListSelectedItemsCountPlural: FdLanguageKey<{ count: number }>; statusApproved: FdLanguageKey; statusRejected: FdLanguageKey; statusInProgress: FdLanguageKey; @@ -355,20 +372,20 @@ export interface FdLanguage { searchShowAllAdvancedSearchLabel: FdLanguageKey; searchHideAllAdvancedSearchLabel: FdLanguageKey; /** @param count */ - selectTabDisplayCountLabel: FdLanguageKey; + selectTabDisplayCountLabel: FdLanguageKey<{ count: number }>; selectTabMoreBtnLabel: FdLanguageKey; /** * @param rowCount * @param colCount */ - selectTabCountHiddenA11yLabel: FdLanguageKey; + selectTabCountHiddenA11yLabel: FdLanguageKey<{ rowCount: number; colCount: number }>; selectMobileTabBackBtnTitle: FdLanguageKey; selectMobileTabBtnOpenDialogLabel: FdLanguageKey; selectMobileTabTitle: FdLanguageKey; selectMobileConditionEmpty: FdLanguageKey; defineConditionTitle: FdLanguageKey; /** @param value */ - defineConditionSelectedValueHiddenA11yLabel: FdLanguageKey; + defineConditionSelectedValueHiddenA11yLabel: FdLanguageKey<{ value: string }>; defineConditionConditionsGroupHeaderInclude: FdLanguageKey; defineConditionConditionsGroupHeaderExclude: FdLanguageKey; defineConditionFromPlaceholder: FdLanguageKey; @@ -390,7 +407,7 @@ export interface FdLanguage { defineConditionConditionStrategyLabelNotEqualTo: FdLanguageKey; defineConditionConditionStrategyLabelNotEmpty: FdLanguageKey; /** @param count */ - defineConditionMaxCountError: FdLanguageKey; + defineConditionMaxCountError: FdLanguageKey<{ count: number }>; selectTabTitle: FdLanguageKey; searchTableEmptyMessage: FdLanguageKey; defineTabTitle: FdLanguageKey; @@ -398,7 +415,7 @@ export interface FdLanguage { platformCombobox: { countListResultsSingular: FdLanguageKey; /** @param count */ - countListResultsPlural: FdLanguageKey; + countListResultsPlural: FdLanguageKey<{ count: number }>; }; platformMultiCombobox: { inputGlyphAriaLabel: FdLanguageKey; @@ -409,14 +426,14 @@ export interface FdLanguage { platformTextarea: { counterMessageCharactersOverTheLimitSingular: FdLanguageKey; /** @param count */ - counterMessageCharactersOverTheLimitPlural: FdLanguageKey; + counterMessageCharactersOverTheLimitPlural: FdLanguageKey<{ count: number }>; counterMessageCharactersRemainingSingular: FdLanguageKey; /** @param count */ - counterMessageCharactersRemainingPlural: FdLanguageKey; + counterMessageCharactersRemainingPlural: FdLanguageKey<{ count: number }>; }; platformLink: { /** @param media */ - roleDescriptionWithMedia: FdLanguageKey; + roleDescriptionWithMedia: FdLanguageKey<{ media: string }>; }; platformList: { loadingAriaLabel: FdLanguageKey; @@ -437,7 +454,7 @@ export interface FdLanguage { /** * @param count */ - searchSuggestionMessage: FdLanguageKey; + searchSuggestionMessage: FdLanguageKey<{ count: number }>; searchSuggestionNavigateMessage: FdLanguageKey; }; platformSwitch: { @@ -447,7 +464,7 @@ export interface FdLanguage { searchPlaceholder: FdLanguageKey; submitButtonLabel: FdLanguageKey; /** @param filtersCount */ - filtersButtonLabel: FdLanguageKey; + filtersButtonLabel: FdLanguageKey<{ filtersCount: number }>; showFiltersButtonLabel: FdLanguageKey; hideFiltersButtonLabel: FdLanguageKey; defineConditionsRemoveConditionButtonTitle: FdLanguageKey; @@ -507,7 +524,7 @@ export interface FdLanguage { * @param selectedColumnsCount * @param selectableColumnsCount */ - P13ColumnsDialogSelectAll: FdLanguageKey; + P13ColumnsDialogSelectAll: FdLanguageKey<{ selectedColumnsCount: number; selectableColumnsCount: number }>; P13ColumnsDialogConfirmationBtnLabel: FdLanguageKey; P13ColumnsDialogCancelBtnLabel: FdLanguageKey; P13ColumnsDialogMoveToTopBtn: FdLanguageKey; @@ -533,10 +550,10 @@ export interface FdLanguage { P13FilterBooleanOptionFalse: FdLanguageKey; P13FilterDialogHeader: FdLanguageKey; /** @param count */ - P13FilterDialogIncludePanelTitleWithCount: FdLanguageKey; + P13FilterDialogIncludePanelTitleWithCount: FdLanguageKey<{ count: number }>; P13FilterDialogIncludePanelTitleWithoutCount: FdLanguageKey; /** @param count */ - P13FilterDialogExcludePanelTitleWithCount: FdLanguageKey; + P13FilterDialogExcludePanelTitleWithCount: FdLanguageKey<{ count: number }>; P13FilterDialogExcludePanelTitleWithoutCount: FdLanguageKey; P13FilterDialogConfirmationBtnLabel: FdLanguageKey; P13FilterDialogRemoveFilterBtnTitle: FdLanguageKey; @@ -570,7 +587,7 @@ export interface FdLanguage { toolbarActionCollapseAllButtonTitle: FdLanguageKey; filterDialogNotFilteredLabel: FdLanguageKey; /** @param filterLabel */ - filterDialogFilterByLabel: FdLanguageKey; + filterDialogFilterByLabel: FdLanguageKey<{ filterLabel: string }>; filterDialogFilterTitle: FdLanguageKey; filterDialogFilterBy: FdLanguageKey; filterDialogConfirmBtnLabel: FdLanguageKey; @@ -614,15 +631,15 @@ export interface FdLanguage { newFolderTitle: FdLanguageKey; newFolderAtRootInputLabel: FdLanguageKey; /** @param folderName */ - newFolderAtFolderInputLabel: FdLanguageKey; + newFolderAtFolderInputLabel: FdLanguageKey<{ folderName: string }>; newFolderInputPlaceholder: FdLanguageKey; /** @param count */ - newFolderInputErrorLabel: FdLanguageKey; + newFolderInputErrorLabel: FdLanguageKey<{ count: number }>; newFolderDialogCreateBtnLabel: FdLanguageKey; newFolderDialogCancelBtnLabel: FdLanguageKey; breadcrumbLabelAllFiles: FdLanguageKey; /** @param total */ - breadcrumbLabelAllFilesWithTotal: FdLanguageKey; + breadcrumbLabelAllFilesWithTotal: FdLanguageKey<{ total: number }>; searchPlaceholder: FdLanguageKey; addBtnLabel: FdLanguageKey; newFolderBtnLabel: FdLanguageKey; @@ -648,146 +665,146 @@ export interface FdLanguage { * @param to * @param total */ - paginationTotal: FdLanguageKey; + paginationTotal: FdLanguageKey<{ from: number; to: number; total: number }>; resultsPerPage: FdLanguageKey; /** @param folderName */ - messageCreateFailed: FdLanguageKey; + messageCreateFailed: FdLanguageKey<{ folderName: string }>; /** @param folderName */ - messageCreateSuccess: FdLanguageKey; + messageCreateSuccess: FdLanguageKey<{ folderName: string }>; /** @param folderName */ - messageUpdateVersionFailed: FdLanguageKey; + messageUpdateVersionFailed: FdLanguageKey<{ folderName: string }>; /** @param folderName */ - messageUpdateVersionSuccess: FdLanguageKey; + messageUpdateVersionSuccess: FdLanguageKey<{ folderName: string }>; /** @param foldersCount */ - folderNamePluralization?: FdLanguageKey; + folderNamePluralization?: FdLanguageKey<{ foldersCount: number }>; /** @param filesCount */ - fileNamePluralization?: FdLanguageKey; + fileNamePluralization?: FdLanguageKey<{ filesCount: number }>; /** * @param from * @param to */ - messageFileRenameFailed: FdLanguageKey; + messageFileRenameFailed: FdLanguageKey<{ from: string; to: string }>; /** * @param from * @param to */ - messageFileRenameSuccess: FdLanguageKey; + messageFileRenameSuccess: FdLanguageKey<{ from: string; to: string }>; /** * @param foldersCount * @param filesCount */ - messageRemoveFoldersAndFilesFailed: FdLanguageKey; + messageRemoveFoldersAndFilesFailed: FdLanguageKey<{ foldersCount: number; filesCount: number }>; /** * @param foldersCount * @param filesCount */ - messageRemoveFoldersAndFilesSuccess: FdLanguageKey; + messageRemoveFoldersAndFilesSuccess: FdLanguageKey<{ foldersCount: number; filesCount: number }>; /** @param foldersCount */ - messageRemoveFoldersFailed: FdLanguageKey; + messageRemoveFoldersFailed: FdLanguageKey<{ foldersCount: number }>; /** @param foldersCount */ - messageRemoveFoldersSuccess: FdLanguageKey; + messageRemoveFoldersSuccess: FdLanguageKey<{ foldersCount: number }>; /** @param filesCount */ - messageRemoveFilesFailed: FdLanguageKey; + messageRemoveFilesFailed: FdLanguageKey<{ filesCount: number }>; /** @param filesCount */ - messageRemoveFilesSuccess: FdLanguageKey; + messageRemoveFilesSuccess: FdLanguageKey<{ filesCount: number }>; /** @param name */ - messageRemoveFileOrFolderFailed: FdLanguageKey; + messageRemoveFileOrFolderFailed: FdLanguageKey<{ name: string }>; /** @param name */ - messageRemoveFileOrFolderSuccess: FdLanguageKey; + messageRemoveFileOrFolderSuccess: FdLanguageKey<{ name: string }>; /** * @param foldersCount * @param filesCount * @param to */ - messageMoveFoldersAndFilesFailed: FdLanguageKey; + messageMoveFoldersAndFilesFailed: FdLanguageKey<{ foldersCount: number; filesCount: number; to: string }>; /** * @param foldersCount * @param filesCount * @param to */ - messageMoveFoldersAndFilesSuccess: FdLanguageKey; + messageMoveFoldersAndFilesSuccess: FdLanguageKey<{ foldersCount: number; filesCount: number; to: string }>; /** * @param foldersCount * @param to */ - messageMoveFoldersFailed: FdLanguageKey; + messageMoveFoldersFailed: FdLanguageKey<{ foldersCount: number; to: string }>; /** * @param foldersCount * @param to */ - messageMoveFoldersSuccess: FdLanguageKey; + messageMoveFoldersSuccess: FdLanguageKey<{ foldersCount: number; to: string }>; /** * @param filesCount * @param to */ - messageMoveFilesFailed: FdLanguageKey; + messageMoveFilesFailed: FdLanguageKey<{ filesCount: number; to: string }>; /** * @param filesCount * @param to */ - messageMoveFilesSuccess: FdLanguageKey; + messageMoveFilesSuccess: FdLanguageKey<{ filesCount: number; to: string }>; /** * @param name * @param to */ - messageMoveFileOrFolderFailed: FdLanguageKey; + messageMoveFileOrFolderFailed: FdLanguageKey<{ name: string; to: string }>; /** * @param name * @param to */ - messageMoveFileOrFolderSuccess: FdLanguageKey; + messageMoveFileOrFolderSuccess: FdLanguageKey<{ name: string; to: string }>; /** * @param foldersCount * @param filesCount */ - messageMoveRootFoldersAndFilesFailed: FdLanguageKey; + messageMoveRootFoldersAndFilesFailed: FdLanguageKey<{ foldersCount: number; filesCount: number }>; /** * @param foldersCount * @param filesCount */ - messageMoveRootFoldersAndFilesSuccess: FdLanguageKey; + messageMoveRootFoldersAndFilesSuccess: FdLanguageKey<{ foldersCount: number; filesCount: number }>; /** @param foldersCount */ - messageMoveRootFoldersFailed: FdLanguageKey; + messageMoveRootFoldersFailed: FdLanguageKey<{ foldersCount: number }>; /** @param foldersCount */ - messageMoveRootFoldersSuccess: FdLanguageKey; + messageMoveRootFoldersSuccess: FdLanguageKey<{ foldersCount: number }>; /** @param filesCount */ - messageMoveRootFilesFailed: FdLanguageKey; + messageMoveRootFilesFailed: FdLanguageKey<{ filesCount: number }>; /** @param filesCount */ - messageMoveRootFilesSuccess: FdLanguageKey; + messageMoveRootFilesSuccess: FdLanguageKey<{ filesCount: number }>; /** @param name */ - messageMoveRootFileOrFolderFailed: FdLanguageKey; + messageMoveRootFileOrFolderFailed: FdLanguageKey<{ name: string }>; /** @param name */ - messageMoveRootFileOrFolderSuccess: FdLanguageKey; + messageMoveRootFileOrFolderSuccess: FdLanguageKey<{ name: string }>; /** * @param filesCount * @param allowedTypes */ - messageFileTypeMismatchPlural: FdLanguageKey; + messageFileTypeMismatchPlural: FdLanguageKey<{ filesCount: number; allowedTypes: string }>; /** * @param fileName * @param allowedTypes */ - messageFileTypeMismatchSingular: FdLanguageKey; + messageFileTypeMismatchSingular: FdLanguageKey<{ fileName: string; allowedTypes: string }>; /** * @param filesCount * @param maxFileSize */ - messageFileSizeExceededPlural: FdLanguageKey; + messageFileSizeExceededPlural: FdLanguageKey<{ filesCount: number; maxFileSize: string | number }>; /** * @param fileName * @param maxFileSize */ - messageFileSizeExceededSingular: FdLanguageKey; + messageFileSizeExceededSingular: FdLanguageKey<{ fileName: string; maxFileSize: string | number }>; /** * @param filesCount * @param maxFilenameLength */ - messageFileNameLengthExceededPlural: FdLanguageKey; + messageFileNameLengthExceededPlural: FdLanguageKey<{ filesCount: number; maxFilenameLength: number }>; /** * @param fileName * @param maxFilenameLength */ - messageFileNameLengthExceededSingular: FdLanguageKey; + messageFileNameLengthExceededSingular: FdLanguageKey<{ fileName: string; maxFilenameLength: number }>; }; platformWizardGenerator: { summarySectionEditStep: FdLanguageKey; diff --git a/libs/i18n/src/lib/pipes/fd-translate.pipe.ts b/libs/i18n/src/lib/pipes/fd-translate.pipe.ts index 7f57dbc5128..bb02c71e43e 100644 --- a/libs/i18n/src/lib/pipes/fd-translate.pipe.ts +++ b/libs/i18n/src/lib/pipes/fd-translate.pipe.ts @@ -3,7 +3,7 @@ import { BehaviorSubject, combineLatest, distinctUntilChanged, filter, skip, swi import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { FdLanguageKeyArgs, FdLanguageKeyIdentifier } from '../models/lang'; -import { resolveTranslationObservable } from '../utils'; +import { resolveTranslationObservableFn } from '../utils'; @Pipe({ name: 'fdTranslate', @@ -12,7 +12,7 @@ import { resolveTranslationObservable } from '../utils'; }) export class FdTranslatePipe implements PipeTransform { /** @hidden */ - private readonly _translationResolver = resolveTranslationObservable(); + private readonly _translationResolver = resolveTranslationObservableFn(); /** @hidden */ private readonly _key$ = new BehaviorSubject(undefined); @@ -43,7 +43,7 @@ export class FdTranslatePipe implements PipeTransform { this._args$.pipe(skip(1), distinctUntilChanged()) ]) .pipe( - switchMap(([key, args]) => this._translationResolver(key, args)), + switchMap(([key, args]) => this._translationResolver(key, args as any)), takeUntilDestroyed(this._destroyRef) ) .subscribe((value) => { diff --git a/libs/i18n/src/lib/utils/flatten-translations.ts b/libs/i18n/src/lib/utils/flatten-translations.ts index b0f99379206..3db6d86e881 100644 --- a/libs/i18n/src/lib/utils/flatten-translations.ts +++ b/libs/i18n/src/lib/utils/flatten-translations.ts @@ -1,5 +1,5 @@ import { Nullable } from '@fundamental-ngx/cdk/utils'; -import { FdLanguage, FdLanguageKeyFunction, FdLanguageKeyIdentifier, FdLanguagePatch } from '../models'; +import { FdLanguageKey, FdLanguageKeyCtx, FdLanguageKeyIdentifier, FdLanguagePatch, FlatFdLanguage } from '../models'; /** * Transforms hierarchical object into object with flat keys @@ -8,28 +8,17 @@ import { FdLanguage, FdLanguageKeyFunction, FdLanguageKeyIdentifier, FdLanguageP * @param prefix * @param translationValueTransformer */ -export function flattenTranslations( - translations: FdLanguage, - prefix?: Nullable, - translationValueTransformer?: (value: string | FdLanguageKeyFunction) => string | FdLanguageKeyFunction -): Record; export function flattenTranslations( translations: FdLanguagePatch, prefix?: Nullable, - translationValueTransformer?: (value: string | FdLanguageKeyFunction) => string | FdLanguageKeyFunction -): Partial>; -// eslint-disable-next-line jsdoc/require-jsdoc -export function flattenTranslations( - translations: FdLanguagePatch | FdLanguage, - prefix?: Nullable, - translationValueTransformer?: (value: string | FdLanguageKeyFunction) => string | FdLanguageKeyFunction -): - | Partial> - | Record { + translationValueTransformer?: ( + value: FdLanguageKey> + ) => FdLanguageKey> +): Partial { if (!translations) { return {}; } - return Object.keys(translations).reduce((acc: any, key) => { + return Object.keys(translations).reduce((acc: Partial, key: string) => { const translationValue = translations[key]; const globalKey = prefix ? `${prefix}.${key}` : key; if (typeof translationValue === 'string' || typeof translationValue === 'function') { diff --git a/libs/i18n/src/lib/utils/load-json.ts b/libs/i18n/src/lib/utils/load-json.ts index bbb53079e3c..202ebf46be4 100644 --- a/libs/i18n/src/lib/utils/load-json.ts +++ b/libs/i18n/src/lib/utils/load-json.ts @@ -1,4 +1,4 @@ -import { FdLanguage, FdLanguageKey, FdLanguageKeyIdentifier } from '../models/lang'; +import { FdLanguage, FdLanguageKeyIdentifier, FlatFdLanguage } from '../models/lang'; interface RecursiveRecord { [key: string]: V | RecursiveRecord; @@ -35,10 +35,10 @@ export function loadJson(source: Partial * * @param source */ -export function flatToHierarchy(source: Record): FdLanguage { +export function flatToHierarchy(source: FlatFdLanguage): FdLanguage { const result = {}; Object.entries(source).forEach(([key, value]) => { - set(result, key, value); + set(result, key, value); }); return result as FdLanguage; } diff --git a/libs/i18n/src/lib/utils/patch-language.ts b/libs/i18n/src/lib/utils/patch-language.ts index 2c2f69021b6..99844e036cb 100644 --- a/libs/i18n/src/lib/utils/patch-language.ts +++ b/libs/i18n/src/lib/utils/patch-language.ts @@ -1,7 +1,7 @@ import { FactoryProvider, SkipSelf } from '@angular/core'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { FdLanguage, FdLanguagePatch } from '../models'; +import { FdLanguage, FdLanguagePatch, FlatFdLanguage } from '../models'; import { flattenTranslations } from './flatten-translations'; import { flatToHierarchy } from './load-json'; import { FD_LANGUAGE } from './tokens'; @@ -50,7 +50,7 @@ export function patchLanguage( useFactory: (lang$: Observable) => lang$.pipe( map((lang) => { - const original = flattenTranslations(lang); + const original = flattenTranslations(lang) as FlatFdLanguage; const patch = flattenTranslations(patchedObj(lang, languagePatch)); return flatToHierarchy({ ...original, diff --git a/libs/i18n/src/lib/utils/replace-double-curly-braces.ts b/libs/i18n/src/lib/utils/replace-double-curly-braces.ts deleted file mode 100644 index 73c8fa137e7..00000000000 --- a/libs/i18n/src/lib/utils/replace-double-curly-braces.ts +++ /dev/null @@ -1,16 +0,0 @@ -// Regular expression to find and replace double curly braces -import { FdLanguageKeyFunction } from '../models/lang'; - -const regex = /{{\s*([^{}]+?)\s*}}/g; - -/** - * Replaces double curly braces with single curly braces. - */ -export function replaceDoubleCurlyBraces(input: string | FdLanguageKeyFunction): string | FdLanguageKeyFunction { - if (typeof input !== 'string') { - return input; - } - - // Use a callback function to preserve ICU expressions - return input.replace(regex, (_match, group) => `{${group}}`); -} diff --git a/libs/i18n/src/lib/utils/resolve-helpers/common-types.ts b/libs/i18n/src/lib/utils/resolve-helpers/common-types.ts index 270b49ff07e..9bdebc7c05b 100644 --- a/libs/i18n/src/lib/utils/resolve-helpers/common-types.ts +++ b/libs/i18n/src/lib/utils/resolve-helpers/common-types.ts @@ -1,4 +1,9 @@ -import { Nullable } from '@fundamental-ngx/cdk/utils'; -import { FdLanguageKeyArgs, FdLanguageKeyIdentifier } from '../../models/lang'; +import { FdLanguageKeyCtx, FdLanguageKeyIdentifier } from '../../models/lang'; -export type ResolveFn = (key: FdLanguageKeyIdentifier, args?: Nullable) => ReturnType; +export type ResolveFnArgs = FdLanguageKeyCtx extends undefined + ? [K] + : [K, FdLanguageKeyCtx]; + +export type ResolveTranslationFn = ( + ...args: ResolveFnArgs +) => ReturnType; diff --git a/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-observable.ts b/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-observable.ts index 00b1bc6a5d1..d06e0b44988 100644 --- a/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-observable.ts +++ b/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-observable.ts @@ -2,31 +2,16 @@ import { inject } from '@angular/core'; import { Nullable } from '@fundamental-ngx/cdk/utils'; import { combineLatest, isObservable, Observable, of } from 'rxjs'; import { map } from 'rxjs/operators'; -import { FdLanguage, FdLanguageKeyArgs, FdLanguageKeyIdentifier } from '../../models/lang'; +import { FdLanguage, FdLanguageKeyCtx, FdLanguageKeyIdentifier } from '../../models/lang'; import { FD_LANGUAGE, FD_LOCALE } from '../tokens'; import { TranslationResolver } from '../translation-resolver'; -import { ResolveFn } from './common-types'; +import { ResolveFnArgs, ResolveTranslationFn } from './common-types'; interface ResolveTranslationsObservableOptions { fdLang?: Nullable>; fdLocale?: Nullable>; } -/** - * Combine the options for the resolve translations observable - */ -function getResolveTranslationsObservableOptions( - keyOrOptions?: string | ResolveTranslationsObservableOptions, - options?: ResolveTranslationsObservableOptions -): ResolveTranslationsObservableOptions { - const optionsFromKey = typeof keyOrOptions === 'string' ? {} : keyOrOptions; - const optionsFromOptions = options || {}; - return { - ...optionsFromKey, - ...optionsFromOptions - }; -} - /** * Get the observable for the locale */ @@ -54,37 +39,32 @@ function getFdLangObservable(fdLang?: Nullable>; -/** - * Helper utility function for getting translations observable - */ -export function resolveTranslationObservable( - key: FdLanguageKeyIdentifier, - args?: Nullable, - options?: ResolveTranslationsObservableOptions -): Observable; -/** - * Helper utility function for getting translations - */ -export function resolveTranslationObservable( - keyOrOptions?: FdLanguageKeyIdentifier | ResolveTranslationsObservableOptions, - args?: Nullable, - options?: ResolveTranslationsObservableOptions -): Observable | ResolveFn> { - const { fdLang, fdLocale } = getResolveTranslationsObservableOptions(keyOrOptions, options); - +): ResolveTranslationFn> { + const { fdLang, fdLocale } = options || {}; const langAndLocale$ = combineLatest([getFdLangObservable(fdLang), getFdLocaleObservable(fdLocale)]); const resolver = new TranslationResolver(); - const fn = (k: FdLanguageKeyIdentifier, ctx?: Nullable): Observable => - langAndLocale$.pipe(map(([lang, locale]) => resolver.resolve(lang, k, ctx || {}, locale))); + return function (...args: ResolveFnArgs): Observable { + const [k, ctx] = args; + return langAndLocale$.pipe(map(([lang, locale]) => resolver.resolve(lang, k, ctx || {}, locale))); + }; +} - if (!keyOrOptions || typeof keyOrOptions !== 'string') { - return fn; - } - return fn(keyOrOptions, args || {}); +type ResolveTranslationArgs = FdLanguageKeyCtx extends undefined + ? [Key] | [Key, ResolveTranslationsObservableOptions] + : [Key, FdLanguageKeyCtx] | [Key, FdLanguageKeyCtx, ResolveTranslationsObservableOptions]; + +/** + * Helper utility function for getting translations observable + */ +export function resolveTranslationObservable( + ...args: ResolveTranslationArgs +): Observable { + const [key, ctxOrOptions, options] = args; + const observableCreator = resolveTranslationObservableFn({ ...(ctxOrOptions || {}), ...(options || {}) }); + return observableCreator(...([key, ctxOrOptions] as ResolveFnArgs)); } diff --git a/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-signal.ts b/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-signal.ts index fd3fbc4980a..dc3522f563d 100644 --- a/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-signal.ts +++ b/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-signal.ts @@ -1,14 +1,16 @@ import { computed, inject, isSignal, signal, Signal } from '@angular/core'; import { toSignal } from '@angular/core/rxjs-interop'; import { Nullable } from '@fundamental-ngx/cdk/utils'; -import { FdLanguage, FdLanguageKeyArgs, FdLanguageKeyIdentifier } from '../../models/lang'; +import { FdLanguage, FdLanguageKeyCtx, FdLanguageKeyIdentifier } from '../../models/lang'; import { FD_LANGUAGE, FD_LOCALE } from '../tokens'; -import { resolveTranslationSync } from './resolve-translations-sync'; +import { TranslationResolver } from '../translation-resolver'; type CanBeSignal = T | Signal; -type ResolveSignalFn = ( - key: CanBeSignal, - args?: Nullable> +type ResolveTranslationSignalFnArgs = FdLanguageKeyCtx extends undefined + ? [CanBeSignal] + : [CanBeSignal, CanBeSignal>]; +type ResolveSignalFn = ( + ...args: ResolveTranslationSignalFnArgs ) => Signal; function getFdLocaleSignal(fdLocale?: Nullable>): Signal { @@ -36,71 +38,41 @@ interface ResolveTranslationsSignalOptions { fdLocale?: Nullable>; } -/** - * Determine if the options are of type ResolveTranslationsSignalOptions - * @param options - */ -function isResolveTranslationsSignalOptions( - options?: Nullable | ResolveTranslationsSignalOptions> -): options is ResolveTranslationsSignalOptions { - return !!options && typeof options !== 'string' && !isSignal(options); -} - -/** - * Get the options for the resolve translations signal - * @param keyOrOptions - * @param options - */ -function getResolveTranslationsSignalOptions( - keyOrOptions?: CanBeSignal | ResolveTranslationsSignalOptions, - options?: ResolveTranslationsSignalOptions -): ResolveTranslationsSignalOptions { - const optionsFromKey = isResolveTranslationsSignalOptions(keyOrOptions) ? keyOrOptions : {}; - const optionsFromOptions = isResolveTranslationsSignalOptions(options) ? options : {}; - return { ...optionsFromKey, ...optionsFromOptions }; -} - /** * Helper utility which gives you the signal creator for translation resolving. */ -export function resolveTranslationSignal(options?: ResolveTranslationsSignalOptions): ResolveSignalFn; -/** - * Helper utility which gives you the signal for translation resolving. - * @param key - * @param args - * @param options - */ -export function resolveTranslationSignal( - key: CanBeSignal, - args?: Nullable>, - options?: ResolveTranslationsSignalOptions -): Signal; -// eslint-disable-next-line jsdoc/require-jsdoc -export function resolveTranslationSignal( - keyOrOptions?: CanBeSignal | ResolveTranslationsSignalOptions, - args?: Nullable>, - options?: ResolveTranslationsSignalOptions -): Signal | ResolveSignalFn { - const { fdLang, fdLocale } = getResolveTranslationsSignalOptions(keyOrOptions, options); +function resolveTranslationSignalFn(options?: ResolveTranslationsSignalOptions): ResolveSignalFn { + const { fdLang, fdLocale } = options || {}; const fdLocaleSignal = getFdLocaleSignal(fdLocale); const fdLangSignal = getFdLangSignal(fdLang); + const resolver = new TranslationResolver(); - const fn = ( - k: CanBeSignal, - ctx?: Nullable> - ): Signal => { + return (...args) => { + const [k, ctx] = args; const kSignal = isSignal(k) ? k : signal(k); - const ctxSignal = isSignal(ctx) ? ctx : signal(ctx || {}); + const ctxSignal = ctx ? (isSignal(ctx) ? ctx : signal(ctx)) : undefined; return computed(() => - resolveTranslationSync(kSignal(), ctxSignal(), { - fdLang: fdLangSignal(), - fdLocale: fdLocaleSignal() - }) + resolver.resolve(fdLangSignal(), kSignal(), (ctxSignal ? ctxSignal() : {}) as any, fdLocaleSignal()) ); }; +} - if (!keyOrOptions || isResolveTranslationsSignalOptions(keyOrOptions)) { - return fn; - } - return fn(keyOrOptions, args); +type TranslationSignalArgs = FdLanguageKeyCtx extends undefined + ? [CanBeSignal] | [CanBeSignal, ResolveTranslationsSignalOptions] + : + | [CanBeSignal, CanBeSignal>] + | [CanBeSignal, CanBeSignal>, ResolveTranslationsSignalOptions]; + +/** + * Helper utility which gives you the signal for translation resolving. + */ +export function resolveTranslationSignal( + ...args: TranslationSignalArgs +): Signal { + const [key, ctxOrOptions, options] = args; + const signalCreator = resolveTranslationSignalFn({ + ...(ctxOrOptions || {}), + ...(options || {}) + }); + return signalCreator(...([key, ctxOrOptions] as ResolveTranslationSignalFnArgs)); } diff --git a/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-sync.ts b/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-sync.ts index b4f4250e4f0..fdd7f0ab469 100644 --- a/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-sync.ts +++ b/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-sync.ts @@ -3,45 +3,27 @@ import { toSignal } from '@angular/core/rxjs-interop'; import { Nullable } from '@fundamental-ngx/cdk/utils'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; -import { FdLanguage, FdLanguageKeyArgs, FdLanguageKeyIdentifier } from '../../models/lang'; +import { FdLanguage, FdLanguageKeyCtx, FdLanguageKeyIdentifier } from '../../models/lang'; import { FD_LANGUAGE, FD_LOCALE } from '../tokens'; import { TranslationResolver } from '../translation-resolver'; -import { ResolveFn } from './common-types'; +import { ResolveFnArgs, ResolveTranslationFn } from './common-types'; -interface ResolveTranslationsSyncOptions { +export interface ResolveTranslationsSyncOptions { fdLang?: Nullable; fdLocale?: Nullable; } -function getResolveTranslationSyncOptions( - keyOrOptions?: FdLanguageKeyIdentifier | ResolveTranslationsSyncOptions, - options?: ResolveTranslationsSyncOptions -): ResolveTranslationsSyncOptions { - const optionsFromKey = typeof keyOrOptions === 'string' ? {} : keyOrOptions; - const optionsFromOptions = options || {}; - return { - ...optionsFromKey, - ...optionsFromOptions - }; -} - /** - * Helper utility function for getting translations + * Get the options for the resolve translations sync + * @param options + * @param _stopUpdating$ */ -export function resolveTranslationSync(options?: ResolveTranslationsSyncOptions): ResolveFn; -export function resolveTranslationSync( - key: FdLanguageKeyIdentifier, - args?: Nullable, - options?: ResolveTranslationsSyncOptions -): string; -// eslint-disable-next-line jsdoc/require-jsdoc -export function resolveTranslationSync( - keyOrOptions?: FdLanguageKeyIdentifier | ResolveTranslationsSyncOptions, - args?: Nullable, - options?: ResolveTranslationsSyncOptions -): string | ResolveFn { - let { fdLang, fdLocale } = getResolveTranslationSyncOptions(keyOrOptions, options); - const _stopUpdating$ = new Subject(); +export function resolveTranslationSyncFn( + options?: ResolveTranslationsSyncOptions, + _stopUpdating$?: Subject +): ResolveTranslationFn { + let { fdLang, fdLocale } = options || {}; + _stopUpdating$ = _stopUpdating$ || new Subject(); if (!fdLocale) { const fdLocaleSignal = toSignal(inject(FD_LOCALE).pipe(takeUntil(_stopUpdating$)), { requireSync: true }); effect(() => (fdLocale = fdLocaleSignal())); @@ -51,12 +33,26 @@ export function resolveTranslationSync( effect(() => (fdLang = fdLangSignal())); } const resolver = new TranslationResolver(); - const fn = (k: FdLanguageKeyIdentifier, ctx?: Nullable): string => - resolver.resolve(fdLang || ({} as unknown as FdLanguage), k, ctx || {}, fdLocale); - if (!keyOrOptions || typeof keyOrOptions !== 'string') { - return fn; - } - const result = fn(keyOrOptions, args || {}); + return (...args) => { + const [k, ctx] = args; + return resolver.resolve(fdLang || ({} as unknown as FdLanguage), k, ctx || {}, fdLocale); + }; +} + +type ResolveTranslationArgs = FdLanguageKeyCtx extends undefined + ? [Key] | [Key, ResolveTranslationsSyncOptions] + : [Key, FdLanguageKeyCtx] | [Key, FdLanguageKeyCtx, ResolveTranslationsSyncOptions]; + +/** + * Helper utility function for getting translations + */ +export function resolveTranslationSync( + ...args: ResolveTranslationArgs +): string { + const [key, ctxOrOptions, options] = args; + const _stopUpdating$ = new Subject(); + const fn = resolveTranslationSyncFn({ ...(ctxOrOptions || {}), ...(options || {}) }, _stopUpdating$); + const result = fn(...([key, ctxOrOptions] as ResolveFnArgs)); _stopUpdating$.next(); return result; } diff --git a/libs/i18n/src/lib/utils/translation-resolver.ts b/libs/i18n/src/lib/utils/translation-resolver.ts index 9b764356f8f..d188e658433 100644 --- a/libs/i18n/src/lib/utils/translation-resolver.ts +++ b/libs/i18n/src/lib/utils/translation-resolver.ts @@ -57,7 +57,7 @@ export class TranslationResolver { if (expression.indexOf('{') === -1) { return expression; } - const result = new IntlMessageFormat(expression, locale || 'en-US').format(args); + const result = new IntlMessageFormat(expression, locale || 'en-US').format(args || {}); return Array.isArray(result) ? result.join('') : result.toString(); } @@ -115,7 +115,7 @@ export class TranslationResolver { /** @hidden */ private _tryExecuteLanguageFunction( - expression?: Nullable, + expression?: Nullable>, args: FdLanguageKeyArgs = {} ): string | null { if (!expression) { diff --git a/libs/platform/src/lib/search-field/search-field.component.ts b/libs/platform/src/lib/search-field/search-field.component.ts index 82b952ab3cc..3f1826940eb 100644 --- a/libs/platform/src/lib/search-field/search-field.component.ts +++ b/libs/platform/src/lib/search-field/search-field.component.ts @@ -36,13 +36,7 @@ import { fromEvent, isObservable, merge, Observable, of, Subject } from 'rxjs'; import { filter, map, take, takeUntil } from 'rxjs/operators'; import { FormsModule } from '@angular/forms'; -import { - DynamicComponentService, - KeyUtil, - Nullable, - RtlService, - SearchHighlightPipe -} from '@fundamental-ngx/cdk/utils'; +import { DynamicComponentService, KeyUtil, Nullable, RtlService, SearchHighlightPipe } from '@fundamental-ngx/cdk/utils'; import { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density'; import { IconComponent } from '@fundamental-ngx/core/icon'; import { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode'; @@ -50,14 +44,11 @@ import { PopoverComponent } from '@fundamental-ngx/core/popover'; import { OptionComponent, SelectComponent } from '@fundamental-ngx/core/select'; import { SearchComponent } from '@fundamental-ngx/core/shared'; import { FD_SHELLBAR_SEARCH_COMPONENT } from '@fundamental-ngx/core/shellbar'; -import { FdTranslatePipe, resolveTranslationSync } from '@fundamental-ngx/i18n'; +import { FdTranslatePipe, resolveTranslationSyncFn } from '@fundamental-ngx/i18n'; import { MenuComponent, MenuItemComponent, MenuTriggerDirective } from '@fundamental-ngx/platform/menu'; import { BaseComponent, SearchFieldDataSource } from '@fundamental-ngx/platform/shared'; import equal from 'fast-deep-equal'; -import { - SEARCH_FIELD_COMPONENT, - SearchFieldMobileInterface -} from './search-field-mobile/search-field-mobile.interface'; +import { SEARCH_FIELD_COMPONENT, SearchFieldMobileInterface } from './search-field-mobile/search-field-mobile.interface'; import { PlatformSearchFieldMobileModule } from './search-field-mobile/search-field-mobile.module'; import { SearchFieldMobileComponent } from './search-field-mobile/search-field/search-field-mobile.component'; @@ -378,7 +369,7 @@ export class SearchFieldComponent private _suggestionkeyManager: FocusKeyManager; /** @hidden */ - private resolveTranslation = resolveTranslationSync(); + private resolveTranslation = resolveTranslationSyncFn(); /** @hidden */ private readonly _onDestroy$ = new Subject(); diff --git a/libs/platform/src/lib/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.ts b/libs/platform/src/lib/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.ts index 8842b2f1252..0620d8ea10a 100644 --- a/libs/platform/src/lib/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.ts +++ b/libs/platform/src/lib/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.ts @@ -10,14 +10,14 @@ import { DialogBodyComponent, DialogComponent, DialogFooterComponent, DialogHead import { LayoutGridColDirective, LayoutGridComponent, LayoutGridRowDirective } from '@fundamental-ngx/core/layout-grid'; import { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar'; import { TitleComponent } from '@fundamental-ngx/core/title'; -import { FdLanguageKeyIdentifier, FdTranslatePipe, resolveTranslationSync } from '@fundamental-ngx/i18n'; +import { FdTranslatePipe, resolveTranslationSyncFn } from '@fundamental-ngx/i18n'; import { ButtonComponent } from '@fundamental-ngx/platform/button'; import { DynamicFormControl, DynamicFormItem, FormGeneratorComponent } from '@fundamental-ngx/platform/form'; import { SelectItem } from '@fundamental-ngx/platform/shared'; import { FILTER_STRATEGY, FilterAllStrategy } from '@fundamental-ngx/platform/table'; import { getSelectItemValue } from '../../helpers'; import { SmartFilterBarCondition, SmartFilterBarConditionBuilder } from '../../interfaces/smart-filter-bar-condition'; -import { SmartFilterBarStrategyLabels } from '../../interfaces/strategy-labels.type'; +import { SmartFilterBarStrategy, SmartFilterBarStrategyLabels } from '../../interfaces/strategy-labels.type'; import { SmartFilterBarService } from '../../smart-filter-bar.service'; @Component({ @@ -90,7 +90,7 @@ export class SmartFilterBarConditionsDialogComponent { private _submittedForms: any[] = []; /** @hidden */ - private resolveTranslation = resolveTranslationSync(); + private resolveTranslation = resolveTranslationSyncFn(); /** @hidden */ constructor( @@ -184,13 +184,12 @@ export class SmartFilterBarConditionsDialogComponent { this.config.dataType ); - const labelsConfig = { ...this._conditionLabelKeys }; - for (const strategyItem in labelsConfig) { - if (Object.prototype.hasOwnProperty.call(labelsConfig, strategyItem)) { - const translationKey = ('platformSmartFilterBar.' + - labelsConfig[strategyItem]) as FdLanguageKeyIdentifier; - labelsConfig[strategyItem] = this.resolveTranslation(translationKey); - } + const labelsConfig: Record = { ...this._conditionLabelKeys }; + for (const strategyItem of Object.keys(this._conditionLabelKeys) as SmartFilterBarStrategy[]) { + const translationKey = 'platformSmartFilterBar.' + labelsConfig[strategyItem]; + labelsConfig[strategyItem] = this.resolveTranslation( + translationKey as `platformSmartFilterBar.${SmartFilterBarStrategyLabels[SmartFilterBarStrategy]}` + ); } return strategy.map((s: FilterAllStrategy) => ({ diff --git a/libs/platform/src/lib/smart-filter-bar/interfaces/strategy-labels.type.ts b/libs/platform/src/lib/smart-filter-bar/interfaces/strategy-labels.type.ts index 8a4ebbb8301..0e8dd7ab6f0 100644 --- a/libs/platform/src/lib/smart-filter-bar/interfaces/strategy-labels.type.ts +++ b/libs/platform/src/lib/smart-filter-bar/interfaces/strategy-labels.type.ts @@ -1,7 +1,7 @@ import { FdLanguage } from '@fundamental-ngx/i18n'; import { FILTER_STRATEGY } from '@fundamental-ngx/platform/table'; -type SmartFilterBarStrategy = (typeof FILTER_STRATEGY)[keyof typeof FILTER_STRATEGY]; +export type SmartFilterBarStrategy = (typeof FILTER_STRATEGY)[keyof typeof FILTER_STRATEGY]; type SmartFilterBarStrategyLabelI18nKey = { [Key in keyof FdLanguage['platformSmartFilterBar']]: Key extends `filterCondition${Capitalize}` diff --git a/yarn.lock b/yarn.lock index 7228144a380..5e7e983dcb3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2220,6 +2220,45 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@formatjs/ecma402-abstract@1.17.2": + version "1.17.2" + resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.17.2.tgz#d197c6e26b9fd96ff7ba3b3a0cc2f25f1f2dcac3" + integrity sha512-k2mTh0m+IV1HRdU0xXM617tSQTi53tVR2muvYOsBeYcUgEAyxV1FOC7Qj279th3fBVQ+Dj6muvNJZcHSPNdbKg== + dependencies: + "@formatjs/intl-localematcher" "0.4.2" + tslib "^2.4.0" + +"@formatjs/fast-memoize@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz#33bd616d2e486c3e8ef4e68c99648c196887802b" + integrity sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA== + dependencies: + tslib "^2.4.0" + +"@formatjs/icu-messageformat-parser@2.6.2": + version "2.6.2" + resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.6.2.tgz#9bbb29099416e4ce2c7df50029c48985d4f901b3" + integrity sha512-nF/Iww7sc5h+1MBCDRm68qpHTCG4xvGzYs/x9HFcDETSGScaJ1Fcadk5U/NXjXeCtzD+DhN4BAwKFVclHfKMdA== + dependencies: + "@formatjs/ecma402-abstract" "1.17.2" + "@formatjs/icu-skeleton-parser" "1.6.2" + tslib "^2.4.0" + +"@formatjs/icu-skeleton-parser@1.6.2": + version "1.6.2" + resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.6.2.tgz#00303034dc08583973c8aa67b96534c49c0bad8d" + integrity sha512-VtB9Slo4ZL6QgtDFJ8Injvscf0xiDd4bIV93SOJTBjUF4xe2nAWOoSjLEtqIG+hlIs1sNrVKAaFo3nuTI4r5ZA== + dependencies: + "@formatjs/ecma402-abstract" "1.17.2" + tslib "^2.4.0" + +"@formatjs/intl-localematcher@0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.4.2.tgz#7e6e596dbaf2f0c5a7c22da5a01d5c55f4c37e9a" + integrity sha512-BGdtJFmaNJy5An/Zan4OId/yR9Ih1OojFjcduX/xOvq798OgWSyDtd6Qd5jqJXwJs1ipe4Fxu9+cshic5Ox2tA== + dependencies: + tslib "^2.4.0" + "@fundamental-styles/common-css@0.30.1": version "0.30.1" resolved "https://registry.yarnpkg.com/@fundamental-styles/common-css/-/common-css-0.30.1.tgz#9f3b3b1703626977c543baadbdbe7f44d4996f77" @@ -9820,6 +9859,16 @@ internal-slot@^1.0.4, internal-slot@^1.0.5: resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009" integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== +intl-messageformat@10.5.2: + version "10.5.2" + resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.5.2.tgz#eb746b4b895bd37e8ef91be7b488e450aa4e9d7b" + integrity sha512-X4rlUNbgCc8/RdMhmvUEEZ38yNDn5S4r0u8n8yQH2OOdhsR46SmOuQsCKG35nRXmL5u2nxPsNN6qNhHoMm6FMQ== + dependencies: + "@formatjs/ecma402-abstract" "1.17.2" + "@formatjs/fast-memoize" "2.2.0" + "@formatjs/icu-messageformat-parser" "2.6.2" + tslib "^2.4.0" + intl@1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/intl/-/intl-1.2.5.tgz#82244a2190c4e419f8371f5aa34daa3420e2abde" From 98ee896537bf88e3146b75ab5dcead2ab4c45ea4 Mon Sep 17 00:00:00 2001 From: g-cheishvili Date: Tue, 26 Sep 2023 00:35:39 +0400 Subject: [PATCH 15/21] chore(docs): added missing parts --- ...ing-utility-functions-example.component.ts | 55 +++++++++++++------ .../resolve-translations-signal.ts | 2 +- 2 files changed, 40 insertions(+), 17 deletions(-) diff --git a/libs/docs/i18n/translation-resolver/examples/using-utility-functions-example.component.ts b/libs/docs/i18n/translation-resolver/examples/using-utility-functions-example.component.ts index 9b795f21538..c17ca1feb19 100644 --- a/libs/docs/i18n/translation-resolver/examples/using-utility-functions-example.component.ts +++ b/libs/docs/i18n/translation-resolver/examples/using-utility-functions-example.component.ts @@ -4,8 +4,11 @@ import { FD_LANGUAGE, FD_LANGUAGE_ENGLISH, resolveTranslationObservable, + resolveTranslationObservableFn, resolveTranslationSignal, - resolveTranslationSync + resolveTranslationSignalFn, + resolveTranslationSync, + resolveTranslationSyncFn } from '@fundamental-ngx/i18n'; import { BehaviorSubject } from 'rxjs'; @@ -40,7 +43,7 @@ import { BehaviorSubject } from 'rxjs';
- {{ resolveTranslation$('coreDatePicker.dateInputLabel') | async }} + {{ dateInputLabelObservable | async }} @@ -50,7 +53,17 @@ import { BehaviorSubject } from 'rxjs';
- {{ resolveTranslation('coreDatePicker.dateRangeInputLabel') }} + {{ dateRangeInputLabelSync }} + + + +
+ + signal resolve of the translation with a function call after injection context + +
+ + {{ dateRangeInputLabelSignal() }}
`, @@ -65,30 +78,40 @@ import { BehaviorSubject } from 'rxjs'; }) export class UsingUtilityFunctionsExampleComponent { /** - * Async resolve of the translation. It takes FD_LANGUAGE from the DI token and returns an observable. + * Async resolve of the translation */ coreDatePickerDateInputLabel$ = resolveTranslationObservable('coreDatePicker.dateInputLabel'); /** - * Sync resolve of the translation. It takes FD_LANGUAGE from the DI token, subscribes to it - * and returns a string available at the moment of the function call. + * Sync resolve of the translation */ + coreDatePickerDateInputLabel = resolveTranslationSync('coreDatePicker.dateInputLabel'); + /** - * Using signal to resolve the translation. It takes FD_LANGUAGE from the DI token and returns a - * computed signal + * Using signal to resolve the translation */ coreDatePickerDateInputLabelSignal = resolveTranslationSignal('coreDatePicker.dateInputLabel'); /** - * if resolveTranslation$ is called without any parameters, it returns a function, - * which can be used outside the injection context and will be bound to the current DI FD_LANGUAGE instance - * and will return an observable of the translation. + * You can also call a factory function to get the observable resolver */ - resolveTranslation$ = resolveTranslationObservable(); + translationObservableResolver = resolveTranslationObservableFn(); + + /** + * You can also call a factory function to get the sync resolver, + * with this, you can use the resolver later on, without the need to + * call it in injection context + */ + translationSyncResolver = resolveTranslationSyncFn(); + /** - * if resolveTranslation is called without any parameters, it returns a function, - * which can be used outside the injection context and will be bound to the current DI FD_LANGUAGE instance - * latest value and will return a string of the translation. + * You can also call a factory function to get the signal resolver */ - resolveTranslation = resolveTranslationSync(); + translationSignalResolver = resolveTranslationSignalFn(); + + dateInputLabelObservable = this.translationObservableResolver('coreDatePicker.dateRangeInputLabel'); + + dateRangeInputLabelSync = this.translationSyncResolver('coreDatePicker.dateRangeInputLabel'); + + dateRangeInputLabelSignal = this.translationSignalResolver('coreDatePicker.dateRangeInputLabel'); } diff --git a/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-signal.ts b/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-signal.ts index dc3522f563d..765a89a034b 100644 --- a/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-signal.ts +++ b/libs/i18n/src/lib/utils/resolve-helpers/resolve-translations-signal.ts @@ -41,7 +41,7 @@ interface ResolveTranslationsSignalOptions { /** * Helper utility which gives you the signal creator for translation resolving. */ -function resolveTranslationSignalFn(options?: ResolveTranslationsSignalOptions): ResolveSignalFn { +export function resolveTranslationSignalFn(options?: ResolveTranslationsSignalOptions): ResolveSignalFn { const { fdLang, fdLocale } = options || {}; const fdLocaleSignal = getFdLocaleSignal(fdLocale); const fdLangSignal = getFdLangSignal(fdLang); From babe582b270e2e42da68c120dd85a190a9c07aa6 Mon Sep 17 00:00:00 2001 From: g-cheishvili Date: Tue, 26 Sep 2023 11:39:49 +0400 Subject: [PATCH 16/21] chore: added i18n serve point --- apps/docs/project.json | 13 +++++++++++++ apps/docs/src/environments/i18n.routes.ts | 10 ++++++++++ 2 files changed, 23 insertions(+) create mode 100644 apps/docs/src/environments/i18n.routes.ts diff --git a/apps/docs/project.json b/apps/docs/project.json index bd101f84f85..e9de137b6ad 100644 --- a/apps/docs/project.json +++ b/apps/docs/project.json @@ -240,6 +240,14 @@ "with": "apps/docs/src/environments/cx.routes.ts" } ] + }, + "i18n": { + "fileReplacements": [ + { + "replace": "apps/docs/src/environments/app.routes.ts", + "with": "apps/docs/src/environments/i18n.routes.ts" + } + ] } }, "outputs": ["{options.outputPath}"], @@ -275,6 +283,11 @@ "port": 4204, "hmr": true }, + "i18n": { + "browserTarget": "docs:build:i18n", + "port": 4205, + "hmr": true + }, "hot-module-replacement": { "hmr": true }, diff --git a/apps/docs/src/environments/i18n.routes.ts b/apps/docs/src/environments/i18n.routes.ts new file mode 100644 index 00000000000..f3925c2ad90 --- /dev/null +++ b/apps/docs/src/environments/i18n.routes.ts @@ -0,0 +1,10 @@ +// eslint-disable-next-line @nx/enforce-module-boundaries +import ROUTES from '@fundamental-ngx/docs/i18n'; + +ROUTES[0].path = 'i18n'; +ROUTES.push({ + path: '**', + redirectTo: 'i18n' +}); + +export { ROUTES }; From 0c4733a93ed8ddada4b86b401d713e967c0f87c1 Mon Sep 17 00:00:00 2001 From: g-cheishvili Date: Tue, 26 Sep 2023 13:09:48 +0400 Subject: [PATCH 17/21] chore: added example for locale --- .../changing-translations-docs.component.html | 22 ++++++++++- .../changing-translations-docs.component.ts | 26 ++++++++++--- ...=> language-change-example.component.html} | 0 ...s => language-change-example.component.ts} | 6 +-- .../locale-change-example.component.html | 10 +++++ .../locale-change-example.component.ts | 39 +++++++++++++++++++ libs/i18n/src/lib/models/lang.ts | 8 ++-- .../platform/src/lib/link/link.component.html | 2 +- 8 files changed, 100 insertions(+), 13 deletions(-) rename libs/docs/i18n/changing-translations/examples/i18n-language-change-example/{i18n-language-change-example.component.html => language-change-example.component.html} (100%) rename libs/docs/i18n/changing-translations/examples/i18n-language-change-example/{i18n-language-change-example.component.ts => language-change-example.component.ts} (93%) create mode 100644 libs/docs/i18n/changing-translations/examples/i18n-locale-change-example/locale-change-example.component.html create mode 100644 libs/docs/i18n/changing-translations/examples/i18n-locale-change-example/locale-change-example.component.ts diff --git a/libs/docs/i18n/changing-translations/changing-translations-docs.component.html b/libs/docs/i18n/changing-translations/changing-translations-docs.component.html index 2967cdf15d2..1e5f19792b7 100644 --- a/libs/docs/i18n/changing-translations/changing-translations-docs.component.html +++ b/libs/docs/i18n/changing-translations/changing-translations-docs.component.html @@ -6,12 +6,32 @@

- + + Changing locales at runtime + +

+ Translations have a concept of locale, which is a combination of language and region. For example, English + language has different locales for US, UK, Australia, etc. The locale is used to determine the correct + translations for the given language. For example, in English there are two plural forms: one for singular and + one for plural. In Russian, there are three plural forms: one for singular, one for few and one for plural. +

+

+ To control the locale, you can provide FD_LOCALE token with the locale you want to use. The locale + should be in the format of language-region. For example, en-US or uk-UA. +

+
+ + + + + + + Creating custom translations diff --git a/libs/docs/i18n/changing-translations/changing-translations-docs.component.ts b/libs/docs/i18n/changing-translations/changing-translations-docs.component.ts index 002ae99d4fe..b348c7fd7c6 100644 --- a/libs/docs/i18n/changing-translations/changing-translations-docs.component.ts +++ b/libs/docs/i18n/changing-translations/changing-translations-docs.component.ts @@ -10,7 +10,8 @@ import { getAssetFromModuleAssets } from '@fundamental-ngx/docs/shared'; import { PlatformI18nTranslationCustomizationExampleComponent } from '../patching-translations/examples/i18n-translation-customization-example/i18n-translation-customization-example.component'; -import { PlatformLanguageChangeExampleComponent } from './examples/i18n-language-change-example/i18n-language-change-example.component'; +import { LanguageChangeExampleComponent } from './examples/i18n-language-change-example/language-change-example.component'; +import { LocaleChangeExampleComponent } from './examples/i18n-locale-change-example/locale-change-example.component'; @Component({ templateUrl: './changing-translations-docs.component.html', @@ -24,7 +25,8 @@ import { PlatformLanguageChangeExampleComponent } from './examples/i18n-language ComponentExampleComponent, PlatformI18nTranslationCustomizationExampleComponent, CodeExampleComponent, - PlatformLanguageChangeExampleComponent + LanguageChangeExampleComponent, + LocaleChangeExampleComponent ] }) export class ChangingTranslationsDocsComponent { @@ -72,14 +74,28 @@ export const CUSTOM_LANGUAGE: FdLanguage = { languageChangeExample: ExampleFile[] = [ { language: 'html', - code: getAssetFromModuleAssets('i18n-language-change-example/i18n-language-change-example.component.html'), + code: getAssetFromModuleAssets('i18n-language-change-example/language-change-example.component.html'), fileName: 'i18n-language-change-example-example' }, { language: 'typescript', - component: 'PlatformLanguageChangeExampleComponent', - code: getAssetFromModuleAssets('i18n-language-change-example/i18n-language-change-example.component.ts'), + component: 'LanguageChangeExampleComponent', + code: getAssetFromModuleAssets('i18n-language-change-example/language-change-example.component.ts'), fileName: 'i18n-language-change-example-example' } ]; + + localeChangeExample: ExampleFile[] = [ + { + language: 'html', + code: getAssetFromModuleAssets('i18n-locale-change-example/locale-change-example.component.html'), + fileName: 'locale-change-example' + }, + { + language: 'typescript', + component: 'LocaleChangeExampleComponent', + code: getAssetFromModuleAssets('i18n-locale-change-example/locale-change-example.component.ts'), + fileName: 'locale-change-example' + } + ]; } diff --git a/libs/docs/i18n/changing-translations/examples/i18n-language-change-example/i18n-language-change-example.component.html b/libs/docs/i18n/changing-translations/examples/i18n-language-change-example/language-change-example.component.html similarity index 100% rename from libs/docs/i18n/changing-translations/examples/i18n-language-change-example/i18n-language-change-example.component.html rename to libs/docs/i18n/changing-translations/examples/i18n-language-change-example/language-change-example.component.html diff --git a/libs/docs/i18n/changing-translations/examples/i18n-language-change-example/i18n-language-change-example.component.ts b/libs/docs/i18n/changing-translations/examples/i18n-language-change-example/language-change-example.component.ts similarity index 93% rename from libs/docs/i18n/changing-translations/examples/i18n-language-change-example/i18n-language-change-example.component.ts rename to libs/docs/i18n/changing-translations/examples/i18n-language-change-example/language-change-example.component.ts index df969f30441..d75fc687924 100644 --- a/libs/docs/i18n/changing-translations/examples/i18n-language-change-example/i18n-language-change-example.component.ts +++ b/libs/docs/i18n/changing-translations/examples/i18n-language-change-example/language-change-example.component.ts @@ -8,8 +8,8 @@ import { PlatformTextAreaModule } from '@fundamental-ngx/platform/form'; import { BehaviorSubject } from 'rxjs'; @Component({ - selector: 'app-language-change-example', - templateUrl: './i18n-language-change-example.component.html', + selector: 'fd-language-change-example', + templateUrl: './language-change-example.component.html', changeDetection: ChangeDetectionStrategy.OnPush, providers: [ { @@ -24,7 +24,7 @@ import { BehaviorSubject } from 'rxjs'; standalone: true, imports: [SegmentedButtonModule, FormsModule, ButtonModule, FormLabelComponent, PlatformTextAreaModule] }) -export class PlatformLanguageChangeExampleComponent { +export class LanguageChangeExampleComponent { fdLocale$ = inject(FD_LOCALE) as BehaviorSubject; lang = 'en'; diff --git a/libs/docs/i18n/changing-translations/examples/i18n-locale-change-example/locale-change-example.component.html b/libs/docs/i18n/changing-translations/examples/i18n-locale-change-example/locale-change-example.component.html new file mode 100644 index 00000000000..eed4fce1c64 --- /dev/null +++ b/libs/docs/i18n/changing-translations/examples/i18n-locale-change-example/locale-change-example.component.html @@ -0,0 +1,10 @@ +
+ + + + + + +
+ +
{{ pluralizationExample() }}
diff --git a/libs/docs/i18n/changing-translations/examples/i18n-locale-change-example/locale-change-example.component.ts b/libs/docs/i18n/changing-translations/examples/i18n-locale-change-example/locale-change-example.component.ts new file mode 100644 index 00000000000..a1649f6947f --- /dev/null +++ b/libs/docs/i18n/changing-translations/examples/i18n-locale-change-example/locale-change-example.component.ts @@ -0,0 +1,39 @@ +import { AsyncPipe } from '@angular/common'; +import { Component, computed, inject, LOCALE_ID, signal } from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { ButtonComponent } from '@fundamental-ngx/core/button'; +import { FormControlComponent } from '@fundamental-ngx/core/form'; +import { SegmentedButtonComponent } from '@fundamental-ngx/core/segmented-button'; +import { FD_LOCALE, FdLanguage, resolveTranslationSignalFn } from '@fundamental-ngx/i18n'; +import { BehaviorSubject } from 'rxjs'; + +@Component({ + selector: 'fd-locale-change-example', + templateUrl: './locale-change-example.component.html', + standalone: true, + imports: [ButtonComponent, SegmentedButtonComponent, FormsModule, AsyncPipe, FormControlComponent], + providers: [ + { + provide: FD_LOCALE, + useFactory: () => new BehaviorSubject(inject(LOCALE_ID)) + } + ] +}) +export class LocaleChangeExampleComponent { + translationResolver = resolveTranslationSignalFn({ + fdLang: { + pluralizationExample: + 'translated "{count}" as "{count, plural, =0 {ZERO} one {ONE} few {FEW} other {MANY}}"' + } as unknown as FdLanguage + }); + locale$ = inject(FD_LOCALE) as BehaviorSubject; + initialLocaleValue = this.locale$.value; + locale = this.initialLocaleValue; + count = signal(0); + pluralizationContext = computed(() => ({ count: this.count() })); + pluralizationExample = this.translationResolver('pluralizationExample' as any, this.pluralizationContext); + + changeLocale($event: string): void { + this.locale$.next($event); + } +} diff --git a/libs/i18n/src/lib/models/lang.ts b/libs/i18n/src/lib/models/lang.ts index fc2eebe309b..6f38cac7e78 100644 --- a/libs/i18n/src/lib/models/lang.ts +++ b/libs/i18n/src/lib/models/lang.ts @@ -15,7 +15,9 @@ export type NestedKeyOf = { type _FdLanguageKeyIdentifierUnion = `${NestedKeyOf}`; export type FdLanguageKeyIdentifier = { - [Key in _FdLanguageKeyIdentifierUnion]: ObjectPathType extends FdLanguageKey ? Key : never; + [Key in _FdLanguageKeyIdentifierUnion]: ObjectPathType extends FdLanguageKey | undefined + ? Key + : never; }[_FdLanguageKeyIdentifierUnion]; export type FdLanguageKeyCtx = ObjectPathType extends FdLanguageKey< @@ -676,9 +678,9 @@ export interface FdLanguage { /** @param folderName */ messageUpdateVersionSuccess: FdLanguageKey<{ folderName: string }>; /** @param foldersCount */ - folderNamePluralization?: FdLanguageKey<{ foldersCount: number }>; + folderNamePluralization: FdLanguageKey<{ foldersCount: number }>; /** @param filesCount */ - fileNamePluralization?: FdLanguageKey<{ filesCount: number }>; + fileNamePluralization: FdLanguageKey<{ filesCount: number }>; /** * @param from * @param to diff --git a/libs/platform/src/lib/link/link.component.html b/libs/platform/src/lib/link/link.component.html index 4f9ccc30135..2d17c6d8c5e 100644 --- a/libs/platform/src/lib/link/link.component.html +++ b/libs/platform/src/lib/link/link.component.html @@ -22,7 +22,7 @@ (mouseleave)="onMouseLeave($event)" (click)="clicked($event)" [attr.aria-roledescription]=" - media ? ('platformLink.roleDescriptionWithMedia' | fdTranslate : { media: media }) : null + media ? ($any('platformLink.roleDescriptionWithMedia') | fdTranslate : { media: media }) : null " > From 8ee69f83c8be58a4130ef93a4a3b6a43ec60f5f8 Mon Sep 17 00:00:00 2001 From: g-cheishvili Date: Tue, 26 Sep 2023 13:11:46 +0400 Subject: [PATCH 18/21] chore: removed wrong alert --- .../translation-resolver-docs.component.html | 4 ---- .../translation-resolver-docs.component.ts | 2 -- 2 files changed, 6 deletions(-) diff --git a/libs/docs/i18n/translation-resolver/translation-resolver-docs.component.html b/libs/docs/i18n/translation-resolver/translation-resolver-docs.component.html index 88c731640c6..267a19e14c4 100644 --- a/libs/docs/i18n/translation-resolver/translation-resolver-docs.component.html +++ b/libs/docs/i18n/translation-resolver/translation-resolver-docs.component.html @@ -19,10 +19,6 @@ dependency injection context

- - The observable, returned by the resolveTranslation$ function will get automatically unsubscribed - when the injection context, where it was used, gets destroyed. - diff --git a/libs/docs/i18n/translation-resolver/translation-resolver-docs.component.ts b/libs/docs/i18n/translation-resolver/translation-resolver-docs.component.ts index aec9fb09257..123aeb7fcd8 100644 --- a/libs/docs/i18n/translation-resolver/translation-resolver-docs.component.ts +++ b/libs/docs/i18n/translation-resolver/translation-resolver-docs.component.ts @@ -1,6 +1,5 @@ import { ChangeDetectionStrategy, Component } from '@angular/core'; import { LinkComponent } from '@fundamental-ngx/core/link'; -import { MessageStripComponent } from '@fundamental-ngx/core/message-strip'; import { CodeExampleComponent, CodeSnippetComponent, @@ -29,7 +28,6 @@ import { UsingUtilityFunctionsExampleComponent } from './examples/using-utility- BasicUsageExampleComponent, UsingUtilityFunctionsExampleComponent, LinkComponent, - MessageStripComponent, UsingTranslationPipeExampleComponent ] }) From 8eecaed537142d030c4e4f2f1e2672d9c78978cf Mon Sep 17 00:00:00 2001 From: g-cheishvili Date: Tue, 26 Sep 2023 16:13:06 +0400 Subject: [PATCH 19/21] chore: nx format write --- .../search-field/search-field.component.ts | 13 ++++- ...-filter-bar-conditions-dialog.component.ts | 17 +++++- ...rt-filter-bar-settings-dialog.component.ts | 57 ++++++++++++++++--- 3 files changed, 76 insertions(+), 11 deletions(-) diff --git a/libs/platform/src/lib/search-field/search-field.component.ts b/libs/platform/src/lib/search-field/search-field.component.ts index 3f1826940eb..deac5147604 100644 --- a/libs/platform/src/lib/search-field/search-field.component.ts +++ b/libs/platform/src/lib/search-field/search-field.component.ts @@ -36,7 +36,13 @@ import { fromEvent, isObservable, merge, Observable, of, Subject } from 'rxjs'; import { filter, map, take, takeUntil } from 'rxjs/operators'; import { FormsModule } from '@angular/forms'; -import { DynamicComponentService, KeyUtil, Nullable, RtlService, SearchHighlightPipe } from '@fundamental-ngx/cdk/utils'; +import { + DynamicComponentService, + KeyUtil, + Nullable, + RtlService, + SearchHighlightPipe +} from '@fundamental-ngx/cdk/utils'; import { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density'; import { IconComponent } from '@fundamental-ngx/core/icon'; import { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode'; @@ -48,7 +54,10 @@ import { FdTranslatePipe, resolveTranslationSyncFn } from '@fundamental-ngx/i18n import { MenuComponent, MenuItemComponent, MenuTriggerDirective } from '@fundamental-ngx/platform/menu'; import { BaseComponent, SearchFieldDataSource } from '@fundamental-ngx/platform/shared'; import equal from 'fast-deep-equal'; -import { SEARCH_FIELD_COMPONENT, SearchFieldMobileInterface } from './search-field-mobile/search-field-mobile.interface'; +import { + SEARCH_FIELD_COMPONENT, + SearchFieldMobileInterface +} from './search-field-mobile/search-field-mobile.interface'; import { PlatformSearchFieldMobileModule } from './search-field-mobile/search-field-mobile.module'; import { SearchFieldMobileComponent } from './search-field-mobile/search-field/search-field-mobile.component'; diff --git a/libs/platform/src/lib/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.ts b/libs/platform/src/lib/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.ts index 0620d8ea10a..377231a9058 100644 --- a/libs/platform/src/lib/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.ts +++ b/libs/platform/src/lib/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.ts @@ -1,4 +1,11 @@ -import { ChangeDetectionStrategy, ChangeDetectorRef, Component, QueryList, ViewChildren, ViewEncapsulation } from '@angular/core'; +import { + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + QueryList, + ViewChildren, + ViewEncapsulation +} from '@angular/core'; import { CdkScrollable } from '@angular/cdk/overlay'; import { NgFor, NgIf } from '@angular/common'; @@ -6,7 +13,13 @@ import { FormsModule } from '@angular/forms'; import { TemplateDirective } from '@fundamental-ngx/cdk/utils'; import { BarElementDirective, BarLeftDirective, ButtonBarComponent } from '@fundamental-ngx/core/bar'; import { BusyIndicatorComponent } from '@fundamental-ngx/core/busy-indicator'; -import { DialogBodyComponent, DialogComponent, DialogFooterComponent, DialogHeaderComponent, DialogRef } from '@fundamental-ngx/core/dialog'; +import { + DialogBodyComponent, + DialogComponent, + DialogFooterComponent, + DialogHeaderComponent, + DialogRef +} from '@fundamental-ngx/core/dialog'; import { LayoutGridColDirective, LayoutGridComponent, LayoutGridRowDirective } from '@fundamental-ngx/core/layout-grid'; import { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar'; import { TitleComponent } from '@fundamental-ngx/core/title'; diff --git a/libs/platform/src/lib/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.ts b/libs/platform/src/lib/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.ts index 87a4329fbf0..58a4f4128bc 100644 --- a/libs/platform/src/lib/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.ts +++ b/libs/platform/src/lib/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.ts @@ -1,22 +1,65 @@ -import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, OnDestroy, ViewChild, ViewEncapsulation } from '@angular/core'; -import { asyncScheduler, BehaviorSubject, firstValueFrom, Observable, Subject, Subscription } from 'rxjs'; +import { + AfterViewInit, + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + Inject, + OnDestroy, + ViewChild, + ViewEncapsulation +} from '@angular/core'; +import { BehaviorSubject, Observable, Subject, Subscription, asyncScheduler, firstValueFrom } from 'rxjs'; import { observeOn, takeUntil } from 'rxjs/operators'; -import { DialogBodyComponent, DialogComponent, DialogFooterComponent, DialogHeaderComponent, DialogRef } from '@fundamental-ngx/core/dialog'; +import { + DialogBodyComponent, + DialogComponent, + DialogFooterComponent, + DialogHeaderComponent, + DialogRef +} from '@fundamental-ngx/core/dialog'; import { FdpSelectionChangeEvent, SelectComponent } from '@fundamental-ngx/platform/form'; import { SelectItem } from '@fundamental-ngx/platform/shared'; -import { ResetButtonComponent, Resettable, RESETTABLE_TOKEN, Table, TableColumnComponent, TableComponent, TableDataSource, TableRowSelectionChangeEvent, TableToolbarActionsComponent, TableToolbarComponent } from '@fundamental-ngx/platform/table'; +import { + RESETTABLE_TOKEN, + ResetButtonComponent, + Resettable, + Table, + TableColumnComponent, + TableComponent, + TableDataSource, + TableRowSelectionChangeEvent, + TableToolbarActionsComponent, + TableToolbarComponent +} from '@fundamental-ngx/platform/table'; -import { FD_LANGUAGE, FdLanguage, FdLanguageKeyIdentifier, FdTranslatePipe, TranslationResolver } from '@fundamental-ngx/i18n'; import { CdkScrollable } from '@angular/cdk/overlay'; import { NgIf } from '@angular/common'; import { TemplateDirective } from '@fundamental-ngx/cdk/utils'; -import { BarElementDirective, BarLeftDirective, BarRightDirective, ButtonBarComponent } from '@fundamental-ngx/core/bar'; +import { + BarElementDirective, + BarLeftDirective, + BarRightDirective, + ButtonBarComponent +} from '@fundamental-ngx/core/bar'; import { BusyIndicatorComponent } from '@fundamental-ngx/core/busy-indicator'; import { IconComponent } from '@fundamental-ngx/core/icon'; import { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar'; import { TitleComponent } from '@fundamental-ngx/core/title'; -import { FdpCellDef, FdpTableCell, TableDataSourceDirective, TableHeaderResizerDirective, TableInitialStateDirective } from '@fundamental-ngx/platform/table-helpers'; +import { + FD_LANGUAGE, + FdLanguage, + FdLanguageKeyIdentifier, + FdTranslatePipe, + TranslationResolver +} from '@fundamental-ngx/i18n'; +import { + FdpCellDef, + FdpTableCell, + TableDataSourceDirective, + TableHeaderResizerDirective, + TableInitialStateDirective +} from '@fundamental-ngx/platform/table-helpers'; import { SmartFilterBarFieldDefinition } from '../../interfaces/smart-filter-bar-field-definition'; import { FieldFilterItem } from '../../interfaces/smart-filter-bar-field-filter-item'; import { SmartFilterSettingsDialogConfig } from '../../interfaces/smart-filter-bar-settings-dialog-config'; From bc91bb77c635ea6001501112a48f529bd93717c6 Mon Sep 17 00:00:00 2001 From: g-cheishvili Date: Tue, 26 Sep 2023 16:17:46 +0400 Subject: [PATCH 20/21] chore: extracted writing translations html to separate file --- .../i18n/writing-translations.component.html | 76 +++++++++++++++++ .../i18n/writing-translations.component.ts | 81 +------------------ 2 files changed, 77 insertions(+), 80 deletions(-) create mode 100644 libs/docs/i18n/writing-translations.component.html diff --git a/libs/docs/i18n/writing-translations.component.html b/libs/docs/i18n/writing-translations.component.html new file mode 100644 index 00000000000..d50cf75f1de --- /dev/null +++ b/libs/docs/i18n/writing-translations.component.html @@ -0,0 +1,76 @@ +
Writing translations
+ +

+ Translations consist of two parts: the translation identifier and the translation itself. The translation + identifier is a string that is used to identify the translation. The translation itself is the string that is + displayed to the user. +

+

+ The format in which the translation is written depends on the type of the loader. If you are loading + translations from a JavaScript object, then it can be a function too, along with a string. +

+

+ Let's take example from Platform Upload collection translation identifiers. They have a prefix + platformUploadCollection. Whole list of the identifiers can be found in the + upload collection i18n documentation page. For the + sake of the example, let's take a small list of them from English translations file: +

+ +

+ Here, in the list above, we see 4 translation variants: a simple string, a string with a placeholder, with + internal references and + ICU expression +

+

+ If you'd loaded translation strings using the JavaScript object, you'd have access to functions as well and + above example would take the following form: +

+ +

+ The JavaScript object is a valid translation source, but it is not the most convenient one if you want to + translate your application using a translation service. For that, you need to use format, which is represented + by the raw strings in the example above. The format is called + ICU Message Syntax, and + it is a standard for the translation strings. It is supported by most of the translation services, and it is the + recommended format for the translations. +

+

+ Our translation interpolations are using + formatjs + library, which is the most popular ICU Message Syntax implementation for JavaScript. +

+
+ + How does internal references work? + + +

+ Internal references are used to reference other translations. When our translations resolver finds a reference, + it tries to find the translation for the reference and replace the reference with the translation, if it is + found. Then it assembles one big ICU Message Syntax string and passes it to the formatjs library for the + interpolation. One thing to note is that if referenced translation needs some context, then the context is also + needed for the referee translation. For example, if we have a translation + platformUploadCollection.folderNamePluralization + and it is referenced in another translation + platformUploadCollection.messageRemoveFoldersAndFilesFailed + , then the + platformUploadCollection.messageRemoveFoldersAndFilesFailed + translation needs to have minimum the same context as the + platformUploadCollection.folderNamePluralization + translation, otherwise the interpolation will fail. +

+
+ + How to escape {{ '{' }} and {{ '}' }} characters? + + +

+ If you need to use {{ '{' }} or {{ '}' }} characters in your translation, you need to + wrap them in single or double quotes. +

+

+ For example, if your translation needs to be {{ fromToCodeTranslation }} and your contexts are + from and to, then your translation will look like this: + {{ fromToCode }} +

+
diff --git a/libs/docs/i18n/writing-translations.component.ts b/libs/docs/i18n/writing-translations.component.ts index 9ef06c35c7e..f25e1efb5ad 100644 --- a/libs/docs/i18n/writing-translations.component.ts +++ b/libs/docs/i18n/writing-translations.component.ts @@ -12,86 +12,7 @@ import { } from '@fundamental-ngx/docs/shared'; @Component({ - template: ` -
Writing translations
- -

- Translations consist of two parts: the translation identifier and the translation itself. The - translation identifier is a string that is used to identify the translation. The translation itself is - the string that is displayed to the user. -

-

- The format in which the translation is written depends on the type of the loader. If you are loading - translations from a JavaScript object, then it can be a function too, along with a string. -

-

- Let's take example from Platform Upload collection translation identifiers. They have a prefix - platformUploadCollection. Whole list of the identifiers can be found in the - upload collection i18n documentation page. - For the sake of the example, let's take a small list of them from English translations file: -

- -

- Here, in the list above, we see 4 translation variants: a simple string, a string with a placeholder, - with internal references and - ICU expression -

-

- If you'd loaded translation strings using the JavaScript object, you'd have access to functions as well - and above example would take the following form: -

- -

- The JavaScript object is a valid translation source, but it is not the most convenient one if you want - to translate your application using a translation service. For that, you need to use format, which is - represented by the raw strings in the example above. The format is called - ICU Message Syntax, and it is a standard for the translation strings. It is supported by most of the translation - services, and it is the recommended format for the translations. -

-

- Our translation interpolations are using - formatjs - library, which is the most popular ICU Message Syntax implementation for JavaScript. -

-
- - How does internal references work? - - -

- Internal references are used to reference other translations. When our translations resolver finds a - reference, it tries to find the translation for the reference and replace the reference with the - translation, if it is found. Then it assembles one big ICU Message Syntax string and passes it to the - formatjs library for the interpolation. One thing to note is that if referenced translation needs some - context, then the context is also needed for the referee translation. For example, if we have a - translation - platformUploadCollection.folderNamePluralization - and it is referenced in another translation - platformUploadCollection.messageRemoveFoldersAndFilesFailed - , then the - platformUploadCollection.messageRemoveFoldersAndFilesFailed - translation needs to have minimum the same context as the - platformUploadCollection.folderNamePluralization - translation, otherwise the interpolation will fail. -

-
- - How to escape {{ '{' }} and {{ '}' }} characters? - - -

- If you need to use {{ '{' }} or {{ '}' }} characters in your translation, you - need to wrap them in single or double quotes. -

-

- For example, if your translation needs to be {{ fromToCodeTranslation }} and your contexts - are from and to, then your translation will look like this: - {{ fromToCode }} -

-
- `, + templateUrl: './writing-translations.component.html', imports: [ HeaderComponent, DescriptionComponent, From 89d075cf7b31020258742382b44dc11e3532f4a3 Mon Sep 17 00:00:00 2001 From: g-cheishvili Date: Tue, 26 Sep 2023 16:18:53 +0400 Subject: [PATCH 21/21] chore: code styling --- libs/i18n/src/lib/utils/translation-resolver.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libs/i18n/src/lib/utils/translation-resolver.ts b/libs/i18n/src/lib/utils/translation-resolver.ts index d188e658433..e7f031c6190 100644 --- a/libs/i18n/src/lib/utils/translation-resolver.ts +++ b/libs/i18n/src/lib/utils/translation-resolver.ts @@ -43,7 +43,7 @@ export class TranslationResolver { args?: FdLanguageKeyArgs, locale?: Nullable ): string { - const resolvedValue = this.getRaw(lang, key, args); + const resolvedValue = this._getRaw(lang, key, args); if (resolvedValue !== '') { return this._interpolate(resolvedValue, args, locale); } @@ -64,7 +64,7 @@ export class TranslationResolver { /** * Returns the raw ICU string for the provided language by key and args **/ - private getRaw(lang: FdLanguage, key: FdLanguageKeyIdentifier, args?: FdLanguageKeyArgs): string { + private _getRaw(lang: FdLanguage, key: FdLanguageKeyIdentifier, args?: FdLanguageKeyArgs): string { const val = this._getFdLanguageKeyValue(lang, key, args); if (typeof val === 'string') { const internalReferences = val.match(_internalReferenceRegExp); @@ -74,7 +74,7 @@ export class TranslationResolver { _internalReferenceRegExp, '$1' ) as FdLanguageKeyIdentifier; - const replacementValue = this.getRaw(lang, internalReferenceKey, args); + const replacementValue = this._getRaw(lang, internalReferenceKey, args); return [internalReference, replacementValue]; }); return this._applyReplacements(val, replacements);