refactor: remove base ui i18n dependency (#34921)

This commit is contained in:
yyh 2026-04-11 20:10:30 +08:00 committed by GitHub
parent d5104a4268
commit c960f7ae48
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
28 changed files with 24 additions and 118 deletions

View File

@ -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)
})

View File

@ -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>

View File

@ -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" />}

View File

@ -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()

View File

@ -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',

View File

@ -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": "المجتمع",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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": "انجمن",

View File

@ -486,7 +486,6 @@
"operation.copyImage": "Copier limage",
"operation.create": "Créer",
"operation.deSelectAll": "Désélectionner tout",
"operation.decrement": "Décrémenter",
"operation.delete": "Supprimer",
"operation.deleteApp": "Supprimer lapplication",
"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é",

View File

@ -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": "समुदाय",

View File

@ -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",

View File

@ -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à",

View File

@ -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": "コミュニティ",

View File

@ -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": "커뮤니티",

View File

@ -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",

View File

@ -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ść",

View File

@ -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",

View File

@ -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",

View File

@ -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": "Сообщество",

View File

@ -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",

View File

@ -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": "ชุมชน",

View File

@ -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",

View File

@ -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": "Спільнота",

View File

@ -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",

View File

@ -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": "社区",

View File

@ -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": "社群",