mirror of
https://github.com/langgenius/dify.git
synced 2026-04-15 09:57:03 +08:00
refactor: remove base ui i18n dependency (#34921)
This commit is contained in:
parent
d5104a4268
commit
c960f7ae48
@ -27,7 +27,7 @@ describe('NumberInputField', () => {
|
||||
|
||||
it('should update value when users click increment', () => {
|
||||
render(<NumberInputField label="Count" />)
|
||||
fireEvent.click(screen.getByRole('button', { name: 'common.operation.increment' }))
|
||||
fireEvent.click(screen.getByRole('button', { name: 'Increment value' }))
|
||||
expect(mockField.handleChange).toHaveBeenCalledWith(3)
|
||||
})
|
||||
|
||||
|
||||
@ -172,13 +172,13 @@ describe('NumberField wrapper', () => {
|
||||
|
||||
// Increment and decrement buttons should preserve accessible naming, icon fallbacks, and spacing variants.
|
||||
describe('Control buttons', () => {
|
||||
it('should provide localized aria labels and default icons when labels are not provided', () => {
|
||||
it('should provide english fallback aria labels and default icons when labels are not provided', () => {
|
||||
renderNumberField({
|
||||
controlsProps: {},
|
||||
})
|
||||
|
||||
const increment = screen.getByRole('button', { name: 'common.operation.increment' })
|
||||
const decrement = screen.getByRole('button', { name: 'common.operation.decrement' })
|
||||
const increment = screen.getByRole('button', { name: 'Increment value' })
|
||||
const decrement = screen.getByRole('button', { name: 'Decrement value' })
|
||||
|
||||
expect(increment.querySelector('.i-ri-arrow-up-s-line')).toBeInTheDocument()
|
||||
expect(decrement.querySelector('.i-ri-arrow-down-s-line')).toBeInTheDocument()
|
||||
@ -217,11 +217,11 @@ describe('NumberField wrapper', () => {
|
||||
},
|
||||
})
|
||||
|
||||
expect(screen.getByRole('button', { name: 'common.operation.increment' })).toBeInTheDocument()
|
||||
expect(screen.getByRole('button', { name: 'common.operation.decrement' })).toBeInTheDocument()
|
||||
expect(screen.getByRole('button', { name: 'Increment value' })).toBeInTheDocument()
|
||||
expect(screen.getByRole('button', { name: 'Decrement value' })).toBeInTheDocument()
|
||||
})
|
||||
|
||||
it('should rely on aria-labelledby when provided instead of injecting a translated aria-label', () => {
|
||||
it('should rely on aria-labelledby when provided instead of injecting a fallback aria-label', () => {
|
||||
render(
|
||||
<>
|
||||
<span id="increment-label">Increment from label</span>
|
||||
|
||||
@ -4,7 +4,6 @@ import type { VariantProps } from 'class-variance-authority'
|
||||
import { NumberField as BaseNumberField } from '@base-ui/react/number-field'
|
||||
import { cva } from 'class-variance-authority'
|
||||
import * as React from 'react'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import { cn } from '@/utils/classnames'
|
||||
|
||||
export const NumberField = BaseNumberField.Root
|
||||
@ -188,18 +187,19 @@ type NumberFieldButtonVariantProps = Omit<
|
||||
|
||||
export type NumberFieldButtonProps = React.ComponentPropsWithoutRef<typeof BaseNumberField.Increment> & NumberFieldButtonVariantProps
|
||||
|
||||
const incrementAriaLabel = 'Increment value'
|
||||
const decrementAriaLabel = 'Decrement value'
|
||||
|
||||
export function NumberFieldIncrement({
|
||||
className,
|
||||
children,
|
||||
size = 'regular',
|
||||
...props
|
||||
}: NumberFieldButtonProps) {
|
||||
const { t } = useTranslation()
|
||||
|
||||
return (
|
||||
<BaseNumberField.Increment
|
||||
{...props}
|
||||
aria-label={props['aria-label'] ?? (props['aria-labelledby'] ? undefined : t('operation.increment', { ns: 'common' }))}
|
||||
aria-label={props['aria-label'] ?? (props['aria-labelledby'] ? undefined : incrementAriaLabel)}
|
||||
className={cn(numberFieldControlButtonVariants({ size, direction: 'increment' }), className)}
|
||||
>
|
||||
{children ?? <span aria-hidden="true" className="i-ri-arrow-up-s-line size-3" />}
|
||||
@ -213,12 +213,10 @@ export function NumberFieldDecrement({
|
||||
size = 'regular',
|
||||
...props
|
||||
}: NumberFieldButtonProps) {
|
||||
const { t } = useTranslation()
|
||||
|
||||
return (
|
||||
<BaseNumberField.Decrement
|
||||
{...props}
|
||||
aria-label={props['aria-label'] ?? (props['aria-labelledby'] ? undefined : t('operation.decrement', { ns: 'common' }))}
|
||||
aria-label={props['aria-label'] ?? (props['aria-labelledby'] ? undefined : decrementAriaLabel)}
|
||||
className={cn(numberFieldControlButtonVariants({ size, direction: 'decrement' }), className)}
|
||||
>
|
||||
{children ?? <span aria-hidden="true" className="i-ri-arrow-down-s-line size-3" />}
|
||||
|
||||
@ -31,13 +31,13 @@ describe('base/ui/toast', () => {
|
||||
|
||||
expect(await screen.findByText('Saved')).toBeInTheDocument()
|
||||
expect(screen.getByText('Your changes are available now.')).toBeInTheDocument()
|
||||
const viewport = screen.getByRole('region', { name: 'common.toast.notifications' })
|
||||
const viewport = screen.getByRole('region', { name: 'Notifications' })
|
||||
expect(viewport).toHaveAttribute('aria-live', 'polite')
|
||||
expect(viewport).toHaveClass('z-1101')
|
||||
expect(viewport.firstElementChild).toHaveClass('top-4')
|
||||
expect(screen.getByRole('dialog')).not.toHaveClass('outline-hidden')
|
||||
expect(document.body.querySelector('[aria-hidden="true"].i-ri-checkbox-circle-fill')).toBeInTheDocument()
|
||||
expect(document.body.querySelector('button[aria-label="common.toast.close"][aria-hidden="true"]')).toBeInTheDocument()
|
||||
expect(document.body.querySelector('button[aria-label="Close notification"][aria-hidden="true"]')).toBeInTheDocument()
|
||||
})
|
||||
|
||||
// Collapsed stacks should keep multiple toast roots mounted for smooth stack animation.
|
||||
@ -57,12 +57,12 @@ describe('base/ui/toast', () => {
|
||||
|
||||
expect(await screen.findByText('Third toast')).toBeInTheDocument()
|
||||
expect(screen.getAllByRole('dialog')).toHaveLength(3)
|
||||
expect(document.body.querySelectorAll('button[aria-label="common.toast.close"][aria-hidden="true"]')).toHaveLength(3)
|
||||
expect(document.body.querySelectorAll('button[aria-label="Close notification"][aria-hidden="true"]')).toHaveLength(3)
|
||||
|
||||
fireEvent.mouseEnter(screen.getByRole('region', { name: 'common.toast.notifications' }))
|
||||
fireEvent.mouseEnter(screen.getByRole('region', { name: 'Notifications' }))
|
||||
|
||||
await waitFor(() => {
|
||||
expect(document.body.querySelector('button[aria-label="common.toast.close"][aria-hidden="true"]')).not.toBeInTheDocument()
|
||||
expect(document.body.querySelector('button[aria-label="Close notification"][aria-hidden="true"]')).not.toBeInTheDocument()
|
||||
})
|
||||
})
|
||||
|
||||
@ -126,9 +126,9 @@ describe('base/ui/toast', () => {
|
||||
})
|
||||
})
|
||||
|
||||
fireEvent.mouseEnter(screen.getByRole('region', { name: 'common.toast.notifications' }))
|
||||
fireEvent.mouseEnter(screen.getByRole('region', { name: 'Notifications' }))
|
||||
|
||||
const dismissButton = await screen.findByRole('button', { name: 'common.toast.close' })
|
||||
const dismissButton = await screen.findByRole('button', { name: 'Close notification' })
|
||||
|
||||
act(() => {
|
||||
dismissButton.click()
|
||||
|
||||
@ -7,7 +7,6 @@ import type {
|
||||
} from '@base-ui/react/toast'
|
||||
import type { ReactNode } from 'react'
|
||||
import { Toast as BaseToast } from '@base-ui/react/toast'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import { cn } from '@/utils/classnames'
|
||||
|
||||
type ToastData = Record<string, never>
|
||||
@ -35,6 +34,9 @@ const TOAST_TONE_STYLES = {
|
||||
},
|
||||
} satisfies Record<string, ToastToneStyle>
|
||||
|
||||
const toastCloseLabel = 'Close notification'
|
||||
const toastViewportLabel = 'Notifications'
|
||||
|
||||
type ToastType = keyof typeof TOAST_TONE_STYLES
|
||||
|
||||
type ToastAddOptions = Omit<ToastManagerAddOptions<ToastData>, 'data' | 'positionerProps' | 'type'> & {
|
||||
@ -145,7 +147,6 @@ function ToastCard({
|
||||
}: {
|
||||
toast: ToastObject<ToastData>
|
||||
}) {
|
||||
const { t } = useTranslation('common')
|
||||
const toastType = getToastType(toastItem.type)
|
||||
|
||||
return (
|
||||
@ -200,7 +201,7 @@ function ToastCard({
|
||||
</div>
|
||||
<div className="flex shrink-0 items-center justify-center rounded-md p-0.5">
|
||||
<BaseToast.Close
|
||||
aria-label={t('toast.close')}
|
||||
aria-label={toastCloseLabel}
|
||||
className={cn(
|
||||
'flex h-5 w-5 items-center justify-center rounded-md hover:bg-state-base-hover focus-visible:bg-state-base-hover focus-visible:ring-1 focus-visible:ring-components-input-border-hover focus-visible:outline-hidden disabled:cursor-not-allowed disabled:opacity-50',
|
||||
)}
|
||||
@ -215,12 +216,11 @@ function ToastCard({
|
||||
}
|
||||
|
||||
function ToastViewport() {
|
||||
const { t } = useTranslation('common')
|
||||
const { toasts } = BaseToast.useToastManager<ToastData>()
|
||||
|
||||
return (
|
||||
<BaseToast.Viewport
|
||||
aria-label={t('toast.notifications')}
|
||||
aria-label={toastViewportLabel}
|
||||
className={cn(
|
||||
// During overlay migration, toast must stay above legacy highPriority modals (z-[1100]).
|
||||
'inset-0 group/toast-viewport pointer-events-none fixed z-1101 overflow-visible',
|
||||
|
||||
@ -486,7 +486,6 @@
|
||||
"operation.copyImage": "نسخ الصورة",
|
||||
"operation.create": "إنشاء",
|
||||
"operation.deSelectAll": "إلغاء تحديد الكل",
|
||||
"operation.decrement": "تقليل",
|
||||
"operation.delete": "حذف",
|
||||
"operation.deleteApp": "حذف التطبيق",
|
||||
"operation.deleteConfirmTitle": "حذف؟",
|
||||
@ -500,7 +499,6 @@
|
||||
"operation.imageCopied": "تم نسخ الصورة",
|
||||
"operation.imageDownloaded": "تم تنزيل الصورة",
|
||||
"operation.in": "في",
|
||||
"operation.increment": "زيادة",
|
||||
"operation.learnMore": "تعرف على المزيد",
|
||||
"operation.lineBreak": "فاصل أسطر",
|
||||
"operation.log": "سجل",
|
||||
@ -637,8 +635,6 @@
|
||||
"theme.dark": "داكن",
|
||||
"theme.light": "فاتح",
|
||||
"theme.theme": "السمة",
|
||||
"toast.close": "إغلاق الإشعار",
|
||||
"toast.notifications": "الإشعارات",
|
||||
"unit.char": "أحرف",
|
||||
"userProfile.about": "حول",
|
||||
"userProfile.community": "المجتمع",
|
||||
|
||||
@ -486,7 +486,6 @@
|
||||
"operation.copyImage": "Bild kopieren",
|
||||
"operation.create": "Erstellen",
|
||||
"operation.deSelectAll": "Alle abwählen",
|
||||
"operation.decrement": "Verringern",
|
||||
"operation.delete": "Löschen",
|
||||
"operation.deleteApp": "App löschen",
|
||||
"operation.deleteConfirmTitle": "Löschen?",
|
||||
@ -500,7 +499,6 @@
|
||||
"operation.imageCopied": "Kopiertes Bild",
|
||||
"operation.imageDownloaded": "Bild heruntergeladen",
|
||||
"operation.in": "in",
|
||||
"operation.increment": "Erhöhen",
|
||||
"operation.learnMore": "Mehr erfahren",
|
||||
"operation.lineBreak": "Zeilenumbruch",
|
||||
"operation.log": "Protokoll",
|
||||
@ -637,8 +635,6 @@
|
||||
"theme.dark": "dunkel",
|
||||
"theme.light": "Licht",
|
||||
"theme.theme": "Thema",
|
||||
"toast.close": "Benachrichtigung schließen",
|
||||
"toast.notifications": "Benachrichtigungen",
|
||||
"unit.char": "Zeichen",
|
||||
"userProfile.about": "Über",
|
||||
"userProfile.community": "Gemeinschaft",
|
||||
|
||||
@ -486,7 +486,6 @@
|
||||
"operation.copyImage": "Copy Image",
|
||||
"operation.create": "Create",
|
||||
"operation.deSelectAll": "Deselect All",
|
||||
"operation.decrement": "Decrement",
|
||||
"operation.delete": "Delete",
|
||||
"operation.deleteApp": "Delete App",
|
||||
"operation.deleteConfirmTitle": "Delete?",
|
||||
@ -500,7 +499,6 @@
|
||||
"operation.imageCopied": "Image copied",
|
||||
"operation.imageDownloaded": "Image downloaded",
|
||||
"operation.in": "in",
|
||||
"operation.increment": "Increment",
|
||||
"operation.learnMore": "Learn More",
|
||||
"operation.lineBreak": "Line break",
|
||||
"operation.log": "Log",
|
||||
@ -637,8 +635,6 @@
|
||||
"theme.dark": "dark",
|
||||
"theme.light": "light",
|
||||
"theme.theme": "Theme",
|
||||
"toast.close": "Dismiss notification",
|
||||
"toast.notifications": "Notifications",
|
||||
"unit.char": "chars",
|
||||
"userProfile.about": "About",
|
||||
"userProfile.community": "Community",
|
||||
|
||||
@ -486,7 +486,6 @@
|
||||
"operation.copyImage": "Copiar imagen",
|
||||
"operation.create": "Crear",
|
||||
"operation.deSelectAll": "Deseleccionar todo",
|
||||
"operation.decrement": "Disminuir",
|
||||
"operation.delete": "Eliminar",
|
||||
"operation.deleteApp": "Eliminar aplicación",
|
||||
"operation.deleteConfirmTitle": "¿Eliminar?",
|
||||
@ -500,7 +499,6 @@
|
||||
"operation.imageCopied": "Imagen copiada",
|
||||
"operation.imageDownloaded": "Imagen descargada",
|
||||
"operation.in": "en",
|
||||
"operation.increment": "Incrementar",
|
||||
"operation.learnMore": "Aprender más",
|
||||
"operation.lineBreak": "Salto de línea",
|
||||
"operation.log": "Registro",
|
||||
@ -637,8 +635,6 @@
|
||||
"theme.dark": "noche",
|
||||
"theme.light": "luz",
|
||||
"theme.theme": "Tema",
|
||||
"toast.close": "Cerrar notificación",
|
||||
"toast.notifications": "Notificaciones",
|
||||
"unit.char": "caracteres",
|
||||
"userProfile.about": "Acerca de",
|
||||
"userProfile.community": "Comunidad",
|
||||
|
||||
@ -486,7 +486,6 @@
|
||||
"operation.copyImage": "کپی تصویر",
|
||||
"operation.create": "ایجاد",
|
||||
"operation.deSelectAll": "همه را انتخاب نکنید",
|
||||
"operation.decrement": "کاهش",
|
||||
"operation.delete": "حذف",
|
||||
"operation.deleteApp": "حذف برنامه",
|
||||
"operation.deleteConfirmTitle": "حذف شود؟",
|
||||
@ -500,7 +499,6 @@
|
||||
"operation.imageCopied": "تصویر کپی شده",
|
||||
"operation.imageDownloaded": "تصویر دانلود شد",
|
||||
"operation.in": "در",
|
||||
"operation.increment": "افزایش",
|
||||
"operation.learnMore": "اطلاعات بیشتر",
|
||||
"operation.lineBreak": "خط جدید",
|
||||
"operation.log": "گزارش",
|
||||
@ -637,8 +635,6 @@
|
||||
"theme.dark": "تاریک",
|
||||
"theme.light": "نور",
|
||||
"theme.theme": "تم",
|
||||
"toast.close": "بستن اعلان",
|
||||
"toast.notifications": "اعلانها",
|
||||
"unit.char": "کاراکتر",
|
||||
"userProfile.about": "درباره",
|
||||
"userProfile.community": "انجمن",
|
||||
|
||||
@ -486,7 +486,6 @@
|
||||
"operation.copyImage": "Copier l’image",
|
||||
"operation.create": "Créer",
|
||||
"operation.deSelectAll": "Désélectionner tout",
|
||||
"operation.decrement": "Décrémenter",
|
||||
"operation.delete": "Supprimer",
|
||||
"operation.deleteApp": "Supprimer l’application",
|
||||
"operation.deleteConfirmTitle": "Supprimer ?",
|
||||
@ -500,7 +499,6 @@
|
||||
"operation.imageCopied": "Image copied",
|
||||
"operation.imageDownloaded": "Image téléchargée",
|
||||
"operation.in": "dans",
|
||||
"operation.increment": "Incrémenter",
|
||||
"operation.learnMore": "En savoir plus",
|
||||
"operation.lineBreak": "Saut de ligne",
|
||||
"operation.log": "Journal",
|
||||
@ -637,8 +635,6 @@
|
||||
"theme.dark": "sombre",
|
||||
"theme.light": "lumière",
|
||||
"theme.theme": "Thème",
|
||||
"toast.close": "Fermer la notification",
|
||||
"toast.notifications": "Notifications",
|
||||
"unit.char": "caractères",
|
||||
"userProfile.about": "À propos",
|
||||
"userProfile.community": "Communauté",
|
||||
|
||||
@ -486,7 +486,6 @@
|
||||
"operation.copyImage": "छवि कॉपी करें",
|
||||
"operation.create": "बनाएं",
|
||||
"operation.deSelectAll": "सभी चयन हटाएँ",
|
||||
"operation.decrement": "घटाएं",
|
||||
"operation.delete": "हटाएं",
|
||||
"operation.deleteApp": "ऐप हटाएं",
|
||||
"operation.deleteConfirmTitle": "हटाएं?",
|
||||
@ -500,7 +499,6 @@
|
||||
"operation.imageCopied": "कॉपी की गई छवि",
|
||||
"operation.imageDownloaded": "छवि डाउनलोड की गई",
|
||||
"operation.in": "में",
|
||||
"operation.increment": "बढ़ाएं",
|
||||
"operation.learnMore": "अधिक जानें",
|
||||
"operation.lineBreak": "लाइन ब्रेक",
|
||||
"operation.log": "लॉग",
|
||||
@ -637,8 +635,6 @@
|
||||
"theme.dark": "अंधेरा",
|
||||
"theme.light": "रोशनी",
|
||||
"theme.theme": "थीम",
|
||||
"toast.close": "सूचना बंद करें",
|
||||
"toast.notifications": "सूचनाएं",
|
||||
"unit.char": "वर्ण",
|
||||
"userProfile.about": "के बारे में",
|
||||
"userProfile.community": "समुदाय",
|
||||
|
||||
@ -486,7 +486,6 @@
|
||||
"operation.copyImage": "Salin Gambar",
|
||||
"operation.create": "Menciptakan",
|
||||
"operation.deSelectAll": "Batalkan pilihan Semua",
|
||||
"operation.decrement": "Kurangi",
|
||||
"operation.delete": "Menghapus",
|
||||
"operation.deleteApp": "Hapus Aplikasi",
|
||||
"operation.deleteConfirmTitle": "Hapus?",
|
||||
@ -500,7 +499,6 @@
|
||||
"operation.imageCopied": "Gambar yang disalin",
|
||||
"operation.imageDownloaded": "Gambar diunduh",
|
||||
"operation.in": "di",
|
||||
"operation.increment": "Tambah",
|
||||
"operation.learnMore": "Pelajari lebih lanjut",
|
||||
"operation.lineBreak": "Baris Baru",
|
||||
"operation.log": "Batang",
|
||||
@ -637,8 +635,6 @@
|
||||
"theme.dark": "Gelap",
|
||||
"theme.light": "Terang",
|
||||
"theme.theme": "Tema",
|
||||
"toast.close": "Tutup notifikasi",
|
||||
"toast.notifications": "Notifikasi",
|
||||
"unit.char": "karakter",
|
||||
"userProfile.about": "Tentang",
|
||||
"userProfile.community": "Masyarakat",
|
||||
|
||||
@ -486,7 +486,6 @@
|
||||
"operation.copyImage": "Copia immagine",
|
||||
"operation.create": "Crea",
|
||||
"operation.deSelectAll": "Deseleziona tutto",
|
||||
"operation.decrement": "Decrementa",
|
||||
"operation.delete": "Elimina",
|
||||
"operation.deleteApp": "Elimina app",
|
||||
"operation.deleteConfirmTitle": "Eliminare?",
|
||||
@ -500,7 +499,6 @@
|
||||
"operation.imageCopied": "Immagine copiata",
|
||||
"operation.imageDownloaded": "Immagine scaricata",
|
||||
"operation.in": "in",
|
||||
"operation.increment": "Incrementa",
|
||||
"operation.learnMore": "Scopri di più",
|
||||
"operation.lineBreak": "A capo",
|
||||
"operation.log": "Log",
|
||||
@ -637,8 +635,6 @@
|
||||
"theme.dark": "scuro",
|
||||
"theme.light": "luce",
|
||||
"theme.theme": "Tema",
|
||||
"toast.close": "Chiudi notifica",
|
||||
"toast.notifications": "Notifiche",
|
||||
"unit.char": "caratteri",
|
||||
"userProfile.about": "Informazioni",
|
||||
"userProfile.community": "Comunità",
|
||||
|
||||
@ -486,7 +486,6 @@
|
||||
"operation.copyImage": "画像をコピー",
|
||||
"operation.create": "作成",
|
||||
"operation.deSelectAll": "すべて選択解除",
|
||||
"operation.decrement": "減らす",
|
||||
"operation.delete": "削除",
|
||||
"operation.deleteApp": "アプリを削除",
|
||||
"operation.deleteConfirmTitle": "削除しますか?",
|
||||
@ -500,7 +499,6 @@
|
||||
"operation.imageCopied": "コピーした画像",
|
||||
"operation.imageDownloaded": "画像がダウンロードされました",
|
||||
"operation.in": "中",
|
||||
"operation.increment": "増やす",
|
||||
"operation.learnMore": "詳細はこちら",
|
||||
"operation.lineBreak": "改行",
|
||||
"operation.log": "ログ",
|
||||
@ -637,8 +635,6 @@
|
||||
"theme.dark": "暗い",
|
||||
"theme.light": "明るい",
|
||||
"theme.theme": "テーマ",
|
||||
"toast.close": "通知を閉じる",
|
||||
"toast.notifications": "通知",
|
||||
"unit.char": "文字",
|
||||
"userProfile.about": "Dify について",
|
||||
"userProfile.community": "コミュニティ",
|
||||
|
||||
@ -486,7 +486,6 @@
|
||||
"operation.copyImage": "이미지 복사",
|
||||
"operation.create": "생성",
|
||||
"operation.deSelectAll": "모두 선택 해제",
|
||||
"operation.decrement": "감소",
|
||||
"operation.delete": "삭제",
|
||||
"operation.deleteApp": "앱 삭제",
|
||||
"operation.deleteConfirmTitle": "삭제하시겠습니까?",
|
||||
@ -500,7 +499,6 @@
|
||||
"operation.imageCopied": "복사된 이미지",
|
||||
"operation.imageDownloaded": "이미지 다운로드됨",
|
||||
"operation.in": "안으로",
|
||||
"operation.increment": "증가",
|
||||
"operation.learnMore": "자세히 알아보기",
|
||||
"operation.lineBreak": "줄 바꿈",
|
||||
"operation.log": "로그",
|
||||
@ -637,8 +635,6 @@
|
||||
"theme.dark": "어두운",
|
||||
"theme.light": "밝은",
|
||||
"theme.theme": "테마",
|
||||
"toast.close": "알림 닫기",
|
||||
"toast.notifications": "알림",
|
||||
"unit.char": "문자",
|
||||
"userProfile.about": "Dify 소개",
|
||||
"userProfile.community": "커뮤니티",
|
||||
|
||||
@ -486,7 +486,6 @@
|
||||
"operation.copyImage": "Copy Image",
|
||||
"operation.create": "Create",
|
||||
"operation.deSelectAll": "Deselect All",
|
||||
"operation.decrement": "Verlagen",
|
||||
"operation.delete": "Delete",
|
||||
"operation.deleteApp": "Delete App",
|
||||
"operation.deleteConfirmTitle": "Delete?",
|
||||
@ -500,7 +499,6 @@
|
||||
"operation.imageCopied": "Image copied",
|
||||
"operation.imageDownloaded": "Image downloaded",
|
||||
"operation.in": "in",
|
||||
"operation.increment": "Verhogen",
|
||||
"operation.learnMore": "Learn More",
|
||||
"operation.lineBreak": "Line break",
|
||||
"operation.log": "Log",
|
||||
@ -637,8 +635,6 @@
|
||||
"theme.dark": "dark",
|
||||
"theme.light": "light",
|
||||
"theme.theme": "Theme",
|
||||
"toast.close": "Melding sluiten",
|
||||
"toast.notifications": "Meldingen",
|
||||
"unit.char": "chars",
|
||||
"userProfile.about": "About",
|
||||
"userProfile.community": "Community",
|
||||
|
||||
@ -486,7 +486,6 @@
|
||||
"operation.copyImage": "Kopiuj obraz",
|
||||
"operation.create": "Utwórz",
|
||||
"operation.deSelectAll": "Odznacz wszystkie",
|
||||
"operation.decrement": "Zmniejsz",
|
||||
"operation.delete": "Usuń",
|
||||
"operation.deleteApp": "Usuń aplikację",
|
||||
"operation.deleteConfirmTitle": "Usunąć?",
|
||||
@ -500,7 +499,6 @@
|
||||
"operation.imageCopied": "Skopiowany obraz",
|
||||
"operation.imageDownloaded": "Obraz pobrany",
|
||||
"operation.in": "w",
|
||||
"operation.increment": "Zwiększ",
|
||||
"operation.learnMore": "Dowiedz się więcej",
|
||||
"operation.lineBreak": "Złamanie linii",
|
||||
"operation.log": "Dziennik",
|
||||
@ -637,8 +635,6 @@
|
||||
"theme.dark": "ciemny",
|
||||
"theme.light": "światło",
|
||||
"theme.theme": "Temat",
|
||||
"toast.close": "Odrzuć powiadomienie",
|
||||
"toast.notifications": "Powiadomienia",
|
||||
"unit.char": "znaki",
|
||||
"userProfile.about": "O",
|
||||
"userProfile.community": "Społeczność",
|
||||
|
||||
@ -486,7 +486,6 @@
|
||||
"operation.copyImage": "Copiar imagem",
|
||||
"operation.create": "Criar",
|
||||
"operation.deSelectAll": "Desmarcar tudo",
|
||||
"operation.decrement": "Diminuir",
|
||||
"operation.delete": "Excluir",
|
||||
"operation.deleteApp": "Excluir aplicativo",
|
||||
"operation.deleteConfirmTitle": "Excluir?",
|
||||
@ -500,7 +499,6 @@
|
||||
"operation.imageCopied": "Imagem copiada",
|
||||
"operation.imageDownloaded": "Imagem baixada",
|
||||
"operation.in": "em",
|
||||
"operation.increment": "Aumentar",
|
||||
"operation.learnMore": "Saiba Mais",
|
||||
"operation.lineBreak": "Quebra de linha",
|
||||
"operation.log": "Log",
|
||||
@ -637,8 +635,6 @@
|
||||
"theme.dark": "escuro",
|
||||
"theme.light": "luz",
|
||||
"theme.theme": "Tema",
|
||||
"toast.close": "Dispensar notificação",
|
||||
"toast.notifications": "Notificações",
|
||||
"unit.char": "caracteres",
|
||||
"userProfile.about": "Sobre",
|
||||
"userProfile.community": "Comunidade",
|
||||
|
||||
@ -486,7 +486,6 @@
|
||||
"operation.copyImage": "Copiere imagine",
|
||||
"operation.create": "Creează",
|
||||
"operation.deSelectAll": "Deselectați tot",
|
||||
"operation.decrement": "Decrementare",
|
||||
"operation.delete": "Șterge",
|
||||
"operation.deleteApp": "Ștergeți aplicația",
|
||||
"operation.deleteConfirmTitle": "Ștergere?",
|
||||
@ -500,7 +499,6 @@
|
||||
"operation.imageCopied": "Imagine copiată",
|
||||
"operation.imageDownloaded": "Imagine descărcată",
|
||||
"operation.in": "în",
|
||||
"operation.increment": "Incrementare",
|
||||
"operation.learnMore": "Află mai multe",
|
||||
"operation.lineBreak": "Linie nouă",
|
||||
"operation.log": "Jurnal",
|
||||
@ -637,8 +635,6 @@
|
||||
"theme.dark": "întunecat",
|
||||
"theme.light": "lumina",
|
||||
"theme.theme": "Temă",
|
||||
"toast.close": "Închide notificarea",
|
||||
"toast.notifications": "Notificări",
|
||||
"unit.char": "caractere",
|
||||
"userProfile.about": "Despre",
|
||||
"userProfile.community": "Comunitate",
|
||||
|
||||
@ -486,7 +486,6 @@
|
||||
"operation.copyImage": "Скопировать изображение",
|
||||
"operation.create": "Создать",
|
||||
"operation.deSelectAll": "Снять выделение со всех",
|
||||
"operation.decrement": "Уменьшить",
|
||||
"operation.delete": "Удалить",
|
||||
"operation.deleteApp": "Удалить приложение",
|
||||
"operation.deleteConfirmTitle": "Удалить?",
|
||||
@ -500,7 +499,6 @@
|
||||
"operation.imageCopied": "Скопированное изображение",
|
||||
"operation.imageDownloaded": "Изображение загружено",
|
||||
"operation.in": "в",
|
||||
"operation.increment": "Увеличить",
|
||||
"operation.learnMore": "Узнать больше",
|
||||
"operation.lineBreak": "Разрыв строки",
|
||||
"operation.log": "Журнал",
|
||||
@ -637,8 +635,6 @@
|
||||
"theme.dark": "темный",
|
||||
"theme.light": "свет",
|
||||
"theme.theme": "Тема",
|
||||
"toast.close": "Закрыть уведомление",
|
||||
"toast.notifications": "Уведомления",
|
||||
"unit.char": "символов",
|
||||
"userProfile.about": "О нас",
|
||||
"userProfile.community": "Сообщество",
|
||||
|
||||
@ -486,7 +486,6 @@
|
||||
"operation.copyImage": "Kopiraj sliko",
|
||||
"operation.create": "Ustvari",
|
||||
"operation.deSelectAll": "Odberi vse",
|
||||
"operation.decrement": "Zmanjšaj",
|
||||
"operation.delete": "Izbriši",
|
||||
"operation.deleteApp": "Izbriši aplikacijo",
|
||||
"operation.deleteConfirmTitle": "Izbrisati?",
|
||||
@ -500,7 +499,6 @@
|
||||
"operation.imageCopied": "Kopirana slika",
|
||||
"operation.imageDownloaded": "Slika prenesena",
|
||||
"operation.in": "v",
|
||||
"operation.increment": "Povečaj",
|
||||
"operation.learnMore": "Izvedi več",
|
||||
"operation.lineBreak": "Prelom vrstice",
|
||||
"operation.log": "Dnevnik",
|
||||
@ -637,8 +635,6 @@
|
||||
"theme.dark": "temno",
|
||||
"theme.light": "svetloba",
|
||||
"theme.theme": "Tema",
|
||||
"toast.close": "Zapri obvestilo",
|
||||
"toast.notifications": "Obvestila",
|
||||
"unit.char": "znaki",
|
||||
"userProfile.about": "O nas",
|
||||
"userProfile.community": "Skupnost",
|
||||
|
||||
@ -486,7 +486,6 @@
|
||||
"operation.copyImage": "คัดลอกรูปภาพ",
|
||||
"operation.create": "สร้าง",
|
||||
"operation.deSelectAll": "ยกเลิกการเลือกทั้งหมด",
|
||||
"operation.decrement": "ลดลง",
|
||||
"operation.delete": "ลบ",
|
||||
"operation.deleteApp": "ลบแอพ",
|
||||
"operation.deleteConfirmTitle": "ลบหรือไม่?",
|
||||
@ -500,7 +499,6 @@
|
||||
"operation.imageCopied": "ภาพที่คัดลอก",
|
||||
"operation.imageDownloaded": "ดาวน์โหลดรูปภาพแล้ว",
|
||||
"operation.in": "ใน",
|
||||
"operation.increment": "เพิ่มขึ้น",
|
||||
"operation.learnMore": "ศึกษาเพิ่มเติม",
|
||||
"operation.lineBreak": "ตัวแบ่งบรรทัด",
|
||||
"operation.log": "ซุง",
|
||||
@ -637,8 +635,6 @@
|
||||
"theme.dark": "มืด",
|
||||
"theme.light": "แสง",
|
||||
"theme.theme": "ธีม",
|
||||
"toast.close": "ปิดการแจ้งเตือน",
|
||||
"toast.notifications": "การแจ้งเตือน",
|
||||
"unit.char": "รถ ถัง",
|
||||
"userProfile.about": "ประมาณ",
|
||||
"userProfile.community": "ชุมชน",
|
||||
|
||||
@ -486,7 +486,6 @@
|
||||
"operation.copyImage": "Resmi Kopyala",
|
||||
"operation.create": "Oluştur",
|
||||
"operation.deSelectAll": "Hepsini Seçme",
|
||||
"operation.decrement": "Azalt",
|
||||
"operation.delete": "Sil",
|
||||
"operation.deleteApp": "Uygulamayı Sil",
|
||||
"operation.deleteConfirmTitle": "Silinsin mi?",
|
||||
@ -500,7 +499,6 @@
|
||||
"operation.imageCopied": "Kopyalanan görüntü",
|
||||
"operation.imageDownloaded": "Resim indirildi",
|
||||
"operation.in": "içinde",
|
||||
"operation.increment": "Artır",
|
||||
"operation.learnMore": "Daha Fazla Bilgi",
|
||||
"operation.lineBreak": "Satır sonu",
|
||||
"operation.log": "log",
|
||||
@ -637,8 +635,6 @@
|
||||
"theme.dark": "koyu",
|
||||
"theme.light": "açık",
|
||||
"theme.theme": "Tema",
|
||||
"toast.close": "Bildirimi kapat",
|
||||
"toast.notifications": "Bildirimler",
|
||||
"unit.char": "karakter",
|
||||
"userProfile.about": "Hakkında",
|
||||
"userProfile.community": "Topluluk",
|
||||
|
||||
@ -486,7 +486,6 @@
|
||||
"operation.copyImage": "Скопіювати зображення",
|
||||
"operation.create": "Створити",
|
||||
"operation.deSelectAll": "Вимкнути все",
|
||||
"operation.decrement": "Зменшити",
|
||||
"operation.delete": "Видалити",
|
||||
"operation.deleteApp": "Видалити програму",
|
||||
"operation.deleteConfirmTitle": "Видалити?",
|
||||
@ -500,7 +499,6 @@
|
||||
"operation.imageCopied": "Скопійоване зображення",
|
||||
"operation.imageDownloaded": "Зображення завантажено",
|
||||
"operation.in": "В",
|
||||
"operation.increment": "Збільшити",
|
||||
"operation.learnMore": "Дізнатися більше",
|
||||
"operation.lineBreak": "Перенесення рядка",
|
||||
"operation.log": "Журнал",
|
||||
@ -637,8 +635,6 @@
|
||||
"theme.dark": "темний",
|
||||
"theme.light": "світло",
|
||||
"theme.theme": "Тема",
|
||||
"toast.close": "Закрити сповіщення",
|
||||
"toast.notifications": "Сповіщення",
|
||||
"unit.char": "символів",
|
||||
"userProfile.about": "Про нас",
|
||||
"userProfile.community": "Спільнота",
|
||||
|
||||
@ -486,7 +486,6 @@
|
||||
"operation.copyImage": "Sao chép hình ảnh",
|
||||
"operation.create": "Tạo mới",
|
||||
"operation.deSelectAll": "Bỏ chọn tất cả",
|
||||
"operation.decrement": "Giảm",
|
||||
"operation.delete": "Xóa",
|
||||
"operation.deleteApp": "Xóa ứng dụng",
|
||||
"operation.deleteConfirmTitle": "Xóa?",
|
||||
@ -500,7 +499,6 @@
|
||||
"operation.imageCopied": "Hình ảnh sao chép",
|
||||
"operation.imageDownloaded": "Hình ảnh đã được tải xuống",
|
||||
"operation.in": "trong",
|
||||
"operation.increment": "Tăng",
|
||||
"operation.learnMore": "Tìm hiểu thêm",
|
||||
"operation.lineBreak": "Ngắt dòng",
|
||||
"operation.log": "Nhật ký",
|
||||
@ -637,8 +635,6 @@
|
||||
"theme.dark": "tối",
|
||||
"theme.light": "ánh sáng",
|
||||
"theme.theme": "Chủ đề",
|
||||
"toast.close": "Bỏ qua thông báo",
|
||||
"toast.notifications": "Thông báo",
|
||||
"unit.char": "ký tự",
|
||||
"userProfile.about": "Về chúng tôi",
|
||||
"userProfile.community": "Cộng đồng",
|
||||
|
||||
@ -486,7 +486,6 @@
|
||||
"operation.copyImage": "复制图片",
|
||||
"operation.create": "创建",
|
||||
"operation.deSelectAll": "取消全选",
|
||||
"operation.decrement": "减少",
|
||||
"operation.delete": "删除",
|
||||
"operation.deleteApp": "删除应用",
|
||||
"operation.deleteConfirmTitle": "删除?",
|
||||
@ -500,7 +499,6 @@
|
||||
"operation.imageCopied": "图片已复制",
|
||||
"operation.imageDownloaded": "图片已下载",
|
||||
"operation.in": "在",
|
||||
"operation.increment": "增加",
|
||||
"operation.learnMore": "了解更多",
|
||||
"operation.lineBreak": "换行",
|
||||
"operation.log": "日志",
|
||||
@ -637,8 +635,6 @@
|
||||
"theme.dark": "深色",
|
||||
"theme.light": "浅色",
|
||||
"theme.theme": "主题",
|
||||
"toast.close": "关闭通知",
|
||||
"toast.notifications": "通知",
|
||||
"unit.char": "个字符",
|
||||
"userProfile.about": "关于",
|
||||
"userProfile.community": "社区",
|
||||
|
||||
@ -486,7 +486,6 @@
|
||||
"operation.copyImage": "複製圖像",
|
||||
"operation.create": "建立",
|
||||
"operation.deSelectAll": "全不選",
|
||||
"operation.decrement": "減少",
|
||||
"operation.delete": "刪除",
|
||||
"operation.deleteApp": "刪除應用程式",
|
||||
"operation.deleteConfirmTitle": "刪除?",
|
||||
@ -500,7 +499,6 @@
|
||||
"operation.imageCopied": "複製的圖片",
|
||||
"operation.imageDownloaded": "圖片已下載",
|
||||
"operation.in": "在",
|
||||
"operation.increment": "增加",
|
||||
"operation.learnMore": "瞭解更多",
|
||||
"operation.lineBreak": "換行",
|
||||
"operation.log": "日誌",
|
||||
@ -637,8 +635,6 @@
|
||||
"theme.dark": "黑暗",
|
||||
"theme.light": "光",
|
||||
"theme.theme": "主題",
|
||||
"toast.close": "關閉通知",
|
||||
"toast.notifications": "通知",
|
||||
"unit.char": "個字元",
|
||||
"userProfile.about": "關於",
|
||||
"userProfile.community": "社群",
|
||||
|
||||
Loading…
Reference in New Issue
Block a user