diff options
Diffstat (limited to 'apps/web/lib')
46 files changed, 2983 insertions, 372 deletions
diff --git a/apps/web/lib/attachments.tsx b/apps/web/lib/attachments.tsx index 67941098..5d7175ec 100644 --- a/apps/web/lib/attachments.tsx +++ b/apps/web/lib/attachments.tsx @@ -2,8 +2,10 @@ import { Archive, Camera, FileCode, + FileText, Image, Paperclip, + SquareUser, Upload, Video, } from "lucide-react"; @@ -12,6 +14,7 @@ import { ZAssetType } from "@karakeep/shared/types/bookmarks"; export const ASSET_TYPE_TO_ICON: Record<ZAssetType, React.ReactNode> = { screenshot: <Camera className="size-4" />, + pdf: <FileText className="size-4" />, assetScreenshot: <Camera className="size-4" />, fullPageArchive: <Archive className="size-4" />, precrawledArchive: <Archive className="size-4" />, @@ -20,5 +23,6 @@ export const ASSET_TYPE_TO_ICON: Record<ZAssetType, React.ReactNode> = { bookmarkAsset: <Paperclip className="size-4" />, linkHtmlContent: <FileCode className="size-4" />, userUploaded: <Upload className="size-4" />, + avatar: <SquareUser className="size-4" />, unknown: <Paperclip className="size-4" />, }; diff --git a/apps/web/lib/auth/client.ts b/apps/web/lib/auth/client.ts new file mode 100644 index 00000000..7e13f798 --- /dev/null +++ b/apps/web/lib/auth/client.ts @@ -0,0 +1,11 @@ +"use client"; + +/** + * Centralized client-side auth utilities. + * This module re-exports next-auth/react functions to allow for easier + * future migration to a different auth provider. + */ + +export { SessionProvider, signIn, signOut, useSession } from "next-auth/react"; + +export type { Session } from "next-auth"; diff --git a/apps/web/lib/bookmark-drag.ts b/apps/web/lib/bookmark-drag.ts new file mode 100644 index 00000000..8ae4a499 --- /dev/null +++ b/apps/web/lib/bookmark-drag.ts @@ -0,0 +1,5 @@ +/** + * MIME type used in HTML5 drag-and-drop dataTransfer to identify + * bookmark card drags (as opposed to file drops). + */ +export const BOOKMARK_DRAG_MIME = "application/x-karakeep-bookmark"; diff --git a/apps/web/lib/bulkActions.ts b/apps/web/lib/bulkActions.ts index 34a236c6..ef814331 100644 --- a/apps/web/lib/bulkActions.ts +++ b/apps/web/lib/bulkActions.ts @@ -2,6 +2,7 @@ import { create } from "zustand"; import type { ZBookmark } from "@karakeep/shared/types/bookmarks"; +import { ZBookmarkList } from "@karakeep/shared/types/lists"; interface BookmarkState { selectedBookmarks: ZBookmark[]; @@ -13,12 +14,15 @@ interface BookmarkState { selectAll: () => void; unSelectAll: () => void; isEverythingSelected: () => boolean; + setListContext: (listContext: ZBookmarkList | undefined) => void; + listContext: ZBookmarkList | undefined; } const useBulkActionsStore = create<BookmarkState>((set, get) => ({ selectedBookmarks: [], visibleBookmarks: [], isBulkEditEnabled: false, + listContext: undefined, toggleBookmark: (bookmark: ZBookmark) => { const selectedBookmarks = get().selectedBookmarks; @@ -57,6 +61,9 @@ const useBulkActionsStore = create<BookmarkState>((set, get) => ({ visibleBookmarks, }); }, + setListContext: (listContext: ZBookmarkList | undefined) => { + set({ listContext }); + }, })); export default useBulkActionsStore; diff --git a/apps/web/lib/clientConfig.tsx b/apps/web/lib/clientConfig.tsx index 9331a7af..ab367be0 100644 --- a/apps/web/lib/clientConfig.tsx +++ b/apps/web/lib/clientConfig.tsx @@ -14,6 +14,8 @@ export const ClientConfigCtx = createContext<ClientConfig>({ inference: { isConfigured: false, inferredTagLang: "english", + enableAutoTagging: false, + enableAutoSummarization: false, }, serverVersion: undefined, disableNewReleaseCheck: true, diff --git a/apps/web/lib/hooks/bookmark-search.ts b/apps/web/lib/hooks/bookmark-search.ts index f94e4691..32882006 100644 --- a/apps/web/lib/hooks/bookmark-search.ts +++ b/apps/web/lib/hooks/bookmark-search.ts @@ -1,9 +1,9 @@ import { useEffect, useMemo, useRef } from "react"; import { useRouter, useSearchParams } from "next/navigation"; import { useSortOrderStore } from "@/lib/store/useSortOrderStore"; -import { api } from "@/lib/trpc"; -import { keepPreviousData } from "@tanstack/react-query"; +import { keepPreviousData, useInfiniteQuery } from "@tanstack/react-query"; +import { useTRPC } from "@karakeep/shared-react/trpc"; import { parseSearchQuery } from "@karakeep/shared/searchQueryParser"; import { useInSearchPageStore } from "../store/useInSearchPageStore"; @@ -55,6 +55,7 @@ export function useDoBookmarkSearch() { } export function useBookmarkSearch() { + const api = useTRPC(); const { searchQuery } = useSearchQuery(); const sortOrder = useSortOrderStore((state) => state.sortOrder); @@ -67,17 +68,19 @@ export function useBookmarkSearch() { fetchNextPage, isFetchingNextPage, refetch, - } = api.bookmarks.searchBookmarks.useInfiniteQuery( - { - text: searchQuery, - sortOrder, - }, - { - placeholderData: keepPreviousData, - gcTime: 0, - initialCursor: null, - getNextPageParam: (lastPage) => lastPage.nextCursor, - }, + } = useInfiniteQuery( + api.bookmarks.searchBookmarks.infiniteQueryOptions( + { + text: searchQuery, + sortOrder, + }, + { + placeholderData: keepPreviousData, + gcTime: 0, + initialCursor: null, + getNextPageParam: (lastPage) => lastPage.nextCursor, + }, + ), ); useEffect(() => { diff --git a/apps/web/lib/hooks/relative-time.ts b/apps/web/lib/hooks/relative-time.ts index f7c38497..8fefa233 100644 --- a/apps/web/lib/hooks/relative-time.ts +++ b/apps/web/lib/hooks/relative-time.ts @@ -1,8 +1,5 @@ import { useEffect, useState } from "react"; -import dayjs from "dayjs"; -import relativeTime from "dayjs/plugin/relativeTime"; - -dayjs.extend(relativeTime); +import { formatDistanceToNow } from "date-fns"; export default function useRelativeTime(date: Date) { const [state, setState] = useState({ @@ -13,7 +10,7 @@ export default function useRelativeTime(date: Date) { // This is to avoid hydration errors when server and clients are in different timezones useEffect(() => { setState({ - fromNow: dayjs(date).fromNow(), + fromNow: formatDistanceToNow(date, { addSuffix: true }), localCreatedAt: date.toLocaleString(), }); }, [date]); diff --git a/apps/web/lib/hooks/useBookmarkImport.ts b/apps/web/lib/hooks/useBookmarkImport.ts index 0d9bbaaf..35c04c1b 100644 --- a/apps/web/lib/hooks/useBookmarkImport.ts +++ b/apps/web/lib/hooks/useBookmarkImport.ts @@ -1,29 +1,17 @@ "use client"; import { useState } from "react"; -import { toast } from "@/components/ui/use-toast"; +import { toast } from "@/components/ui/sonner"; import { useTranslation } from "@/lib/i18n/client"; -import { useMutation } from "@tanstack/react-query"; +import { useMutation, useQueryClient } from "@tanstack/react-query"; -import { - useCreateBookmarkWithPostHook, - useUpdateBookmarkTags, -} from "@karakeep/shared-react/hooks/bookmarks"; -import { - useAddBookmarkToList, - useCreateBookmarkList, -} from "@karakeep/shared-react/hooks/lists"; -import { api } from "@karakeep/shared-react/trpc"; +import { useCreateBookmarkList } from "@karakeep/shared-react/hooks/lists"; +import { useTRPC } from "@karakeep/shared-react/trpc"; import { importBookmarksFromFile, ImportSource, - ParsedBookmark, parseImportFile, } from "@karakeep/shared/import-export"; -import { - BookmarkTypes, - MAX_BOOKMARK_TITLE_LENGTH, -} from "@karakeep/shared/types/bookmarks"; import { useCreateImportSession } from "./useImportSessions"; @@ -34,18 +22,22 @@ export interface ImportProgress { export function useBookmarkImport() { const { t } = useTranslation(); + const api = useTRPC(); const [importProgress, setImportProgress] = useState<ImportProgress | null>( null, ); const [quotaError, setQuotaError] = useState<string | null>(null); - const apiUtils = api.useUtils(); + const queryClient = useQueryClient(); const { mutateAsync: createImportSession } = useCreateImportSession(); - const { mutateAsync: createBookmark } = useCreateBookmarkWithPostHook(); const { mutateAsync: createList } = useCreateBookmarkList(); - const { mutateAsync: addToList } = useAddBookmarkToList(); - const { mutateAsync: updateTags } = useUpdateBookmarkTags(); + const { mutateAsync: stageImportedBookmarks } = useMutation( + api.importSessions.stageImportedBookmarks.mutationOptions(), + ); + const { mutateAsync: finalizeImportStaging } = useMutation( + api.importSessions.finalizeImportStaging.mutationOptions(), + ); const uploadBookmarkFileMutation = useMutation({ mutationFn: async ({ @@ -65,8 +57,9 @@ export function useBookmarkImport() { // Check quota before proceeding if (bookmarkCount > 0) { - const quotaUsage = - await apiUtils.client.subscriptions.getQuotaUsage.query(); + const quotaUsage = await queryClient.fetchQuery( + api.subscriptions.getQuotaUsage.queryOptions(), + ); if ( !quotaUsage.bookmarks.unlimited && @@ -84,7 +77,6 @@ export function useBookmarkImport() { } // Proceed with import if quota check passes - // Use a custom parser to avoid re-parsing the file const result = await importBookmarksFromFile( { file, @@ -93,65 +85,9 @@ export function useBookmarkImport() { deps: { createImportSession, createList, - createBookmark: async ( - bookmark: ParsedBookmark, - sessionId: string, - ) => { - if (bookmark.content === undefined) { - throw new Error("Content is undefined"); - } - const created = await createBookmark({ - crawlPriority: "low", - title: bookmark.title.substring(0, MAX_BOOKMARK_TITLE_LENGTH), - createdAt: bookmark.addDate - ? new Date(bookmark.addDate * 1000) - : undefined, - note: bookmark.notes, - archived: bookmark.archived, - importSessionId: sessionId, - source: "import", - ...(bookmark.content.type === BookmarkTypes.LINK - ? { - type: BookmarkTypes.LINK, - url: bookmark.content.url, - } - : { - type: BookmarkTypes.TEXT, - text: bookmark.content.text, - }), - }); - return created as { id: string; alreadyExists?: boolean }; - }, - addBookmarkToLists: async ({ - bookmarkId, - listIds, - }: { - bookmarkId: string; - listIds: string[]; - }) => { - await Promise.all( - listIds.map((listId) => - addToList({ - bookmarkId, - listId, - }), - ), - ); - }, - updateBookmarkTags: async ({ - bookmarkId, - tags, - }: { - bookmarkId: string; - tags: string[]; - }) => { - if (tags.length > 0) { - await updateTags({ - bookmarkId, - attach: tags.map((t) => ({ tagName: t })), - detach: [], - }); - } + stageImportedBookmarks, + finalizeImportStaging: async (sessionId: string) => { + await finalizeImportStaging({ importSessionId: sessionId }); }, }, onProgress: (done, total) => setImportProgress({ done, total }), @@ -172,19 +108,11 @@ export function useBookmarkImport() { toast({ description: "No bookmarks found in the file." }); return; } - const { successes, failures, alreadyExisted } = result.counts; - if (successes > 0 || alreadyExisted > 0) { - toast({ - description: `Imported ${successes} bookmarks into import session. Background processing will start automatically.`, - variant: "default", - }); - } - if (failures > 0) { - toast({ - description: `Failed to import ${failures} bookmarks. Check console for details.`, - variant: "destructive", - }); - } + + toast({ + description: `Staged ${result.counts.total} bookmarks for import. Background processing will start automatically.`, + variant: "default", + }); }, onError: (error) => { setImportProgress(null); diff --git a/apps/web/lib/hooks/useImportSessions.ts b/apps/web/lib/hooks/useImportSessions.ts index cee99bbc..2cc632ad 100644 --- a/apps/web/lib/hooks/useImportSessions.ts +++ b/apps/web/lib/hooks/useImportSessions.ts @@ -1,62 +1,151 @@ "use client"; -import { toast } from "@/components/ui/use-toast"; +import { toast } from "@/components/ui/sonner"; +import { + useInfiniteQuery, + useMutation, + useQuery, + useQueryClient, +} from "@tanstack/react-query"; -import { api } from "@karakeep/shared-react/trpc"; +import { useTRPC } from "@karakeep/shared-react/trpc"; export function useCreateImportSession() { - const apiUtils = api.useUtils(); + const api = useTRPC(); + const queryClient = useQueryClient(); - return api.importSessions.createImportSession.useMutation({ - onSuccess: () => { - apiUtils.importSessions.listImportSessions.invalidate(); - }, - onError: (error) => { - toast({ - description: error.message || "Failed to create import session", - variant: "destructive", - }); - }, - }); + return useMutation( + api.importSessions.createImportSession.mutationOptions({ + onSuccess: () => { + queryClient.invalidateQueries( + api.importSessions.listImportSessions.pathFilter(), + ); + }, + onError: (error) => { + toast({ + description: error.message || "Failed to create import session", + variant: "destructive", + }); + }, + }), + ); } export function useListImportSessions() { - return api.importSessions.listImportSessions.useQuery( - {}, - { - select: (data) => data.sessions, - }, + const api = useTRPC(); + return useQuery( + api.importSessions.listImportSessions.queryOptions( + {}, + { + select: (data) => data.sessions, + }, + ), ); } export function useImportSessionStats(importSessionId: string) { - return api.importSessions.getImportSessionStats.useQuery( - { - importSessionId, - }, - { - refetchInterval: 5000, // Refetch every 5 seconds to show progress - enabled: !!importSessionId, - }, + const api = useTRPC(); + return useQuery( + api.importSessions.getImportSessionStats.queryOptions( + { + importSessionId, + }, + { + refetchInterval: (q) => + !q.state.data || + !["completed", "failed"].includes(q.state.data.status) + ? 5000 + : false, // Refetch every 5 seconds to show progress + enabled: !!importSessionId, + }, + ), ); } export function useDeleteImportSession() { - const apiUtils = api.useUtils(); + const api = useTRPC(); + const queryClient = useQueryClient(); + + return useMutation( + api.importSessions.deleteImportSession.mutationOptions({ + onSuccess: () => { + queryClient.invalidateQueries( + api.importSessions.listImportSessions.pathFilter(), + ); + toast({ + description: "Import session deleted successfully", + variant: "default", + }); + }, + onError: (error) => { + toast({ + description: error.message || "Failed to delete import session", + variant: "destructive", + }); + }, + }), + ); +} - return api.importSessions.deleteImportSession.useMutation({ - onSuccess: () => { - apiUtils.importSessions.listImportSessions.invalidate(); - toast({ - description: "Import session deleted successfully", - variant: "default", - }); - }, - onError: (error) => { - toast({ - description: error.message || "Failed to delete import session", - variant: "destructive", - }); - }, - }); +export function usePauseImportSession() { + const api = useTRPC(); + const queryClient = useQueryClient(); + + return useMutation( + api.importSessions.pauseImportSession.mutationOptions({ + onSuccess: () => { + queryClient.invalidateQueries( + api.importSessions.listImportSessions.pathFilter(), + ); + toast({ + description: "Import session paused", + variant: "default", + }); + }, + onError: (error) => { + toast({ + description: error.message || "Failed to pause import session", + variant: "destructive", + }); + }, + }), + ); +} + +export function useResumeImportSession() { + const api = useTRPC(); + const queryClient = useQueryClient(); + + return useMutation( + api.importSessions.resumeImportSession.mutationOptions({ + onSuccess: () => { + queryClient.invalidateQueries( + api.importSessions.listImportSessions.pathFilter(), + ); + toast({ + description: "Import session resumed", + variant: "default", + }); + }, + onError: (error) => { + toast({ + description: error.message || "Failed to resume import session", + variant: "destructive", + }); + }, + }), + ); +} + +export function useImportSessionResults( + importSessionId: string, + filter: "all" | "accepted" | "rejected" | "skipped_duplicate" | "pending", +) { + const api = useTRPC(); + return useInfiniteQuery( + api.importSessions.getImportSessionResults.infiniteQueryOptions( + { importSessionId, filter, limit: 50 }, + { getNextPageParam: (lastPage) => lastPage.nextCursor }, + ), + ); } diff --git a/apps/web/lib/i18n/client.ts b/apps/web/lib/i18n/client.ts index 1c56a88a..0704ce87 100644 --- a/apps/web/lib/i18n/client.ts +++ b/apps/web/lib/i18n/client.ts @@ -4,6 +4,7 @@ import i18next from "i18next"; import resourcesToBackend from "i18next-resources-to-backend"; import { initReactI18next, + Trans as TransOrg, useTranslation as useTranslationOrg, } from "react-i18next"; @@ -30,4 +31,5 @@ i18next }); export const useTranslation = useTranslationOrg; +export const Trans = TransOrg; export const i18n = i18next; diff --git a/apps/web/lib/i18n/locales/ar/translation.json b/apps/web/lib/i18n/locales/ar/translation.json index 023d6f15..e2d9eb7e 100644 --- a/apps/web/lib/i18n/locales/ar/translation.json +++ b/apps/web/lib/i18n/locales/ar/translation.json @@ -39,7 +39,9 @@ "updated_at": "تم التحديث في", "quota": "حصة", "bookmarks": "الإشارات المرجعية", - "storage": "تخزين" + "storage": "تخزين", + "pdf": "نسخة PDF مؤرشفة", + "default": "افتراضي" }, "layouts": { "masonry": "متعدد الأعمدة", @@ -90,7 +92,9 @@ "confirm": "تأكيد", "regenerate": "تجديد", "load_more": "المزيد", - "edit_notes": "تحرير الملاحظات" + "edit_notes": "تحرير الملاحظات", + "preserve_as_pdf": "حفظ كملف PDF", + "offline_copies": "نسخ غير متصلة بالإنترنت" }, "highlights": { "no_highlights": "ليس لديك أي تمييزات بعد." @@ -119,6 +123,49 @@ "show": "اعرض الإشارات المرجعية المؤرشفة في العلامات والقوائم", "hide": "إخفاء الإشارات المرجعية المؤرشفة في العلامات والقوائم" } + }, + "reader_settings": { + "local_overrides_title": "إعدادات خاصة بالجهاز مُفعلة", + "using_default": "استخدام الإعدادات الافتراضية للعميل", + "clear_override_hint": "امسح تجاوز الجهاز لاستخدام الإعداد العام ({{value}})", + "font_size": "حجم الخط", + "font_family": "نوع الخط", + "preview_inline": "(معاينة)", + "tooltip_preview": "تغييرات المعاينة غير المحفوظة", + "save_to_all_devices": "كل الأجهزة", + "tooltip_local": "إعدادات الجهاز تختلف عن الإعدادات العامة", + "reset_preview": "إعادة ضبط المعاينة", + "mono": "Monospace", + "line_height": "ارتفاع السطر", + "tooltip_default": "إعدادات القراءة", + "title": "إعدادات القارئ", + "serif": "Serif", + "preview": "معاينة", + "not_set": "غير مضبوط", + "clear_local_overrides": "مسح إعدادات الجهاز", + "preview_text": "الـ quick brown fox jumps over the lazy dog. ستظهر نصوص عرض القارئ بهذه الطريقة.", + "local_overrides_cleared": "تم مسح إعدادات الجهاز المخصصة", + "local_overrides_description": "يحتوي هذا الجهاز على إعدادات قارئ مختلفة عن الإعدادات الافتراضية العامة:", + "clear_defaults": "مسح كل الإعدادات الافتراضية", + "description": "اضبط إعدادات النص الافتراضية لعرض القارئ. تتم مزامنة هذه الإعدادات عبر جميع أجهزتك.", + "defaults_cleared": "تم مسح الإعدادات الافتراضية للقارئ", + "save_hint": "احفظ الإعدادات لهذا الجهاز فقط أو قم بمزامنتها عبر جميع الأجهزة", + "save_as_default": "حفظ كافتراضي", + "save_to_device": "هذا الجهاز", + "sans": "Sans Serif", + "tooltip_preview_and_local": "تغييرات المعاينة غير المحفوظة؛ إعدادات الجهاز تختلف عن الإعدادات العامة", + "adjust_hint": "اضبط الإعدادات أعلاه لمعاينة التغييرات" + }, + "avatar": { + "upload": "ارفع الصورة الرمزية", + "change": "غير الصورة الرمزية", + "remove_confirm_title": "تشيل الصورة الرمزية؟", + "updated": "تم تحديث الصورة الرمزية", + "removed": "تمت إزالة الصورة الرمزية", + "description": "ارفع صورة مربعة عشان تستخدمها كصورة رمزية.", + "remove_confirm_description": "ده هيمسح صورة ملفك الشخصي الحالية.", + "title": "صورة الملف الشخصي", + "remove": "شيل الصورة الرمزية" } }, "ai": { @@ -132,7 +179,21 @@ "all_tagging": "التوسيم الشامل", "text_tagging": "توسيم النصوص", "image_tagging": "توسيم الصور", - "summarization": "التلخيص" + "summarization": "التلخيص", + "tag_style": "نمط العلامة", + "auto_summarization_description": "إنشاء ملخصات تلقائيًا لعلاماتك المرجعية باستخدام الذكاء الاصطناعي.", + "auto_tagging": "وضع العلامات التلقائي", + "titlecase_spaces": "أحرف استهلالية مع مسافات", + "lowercase_underscores": "أحرف صغيرة مع شرطات سفلية", + "inference_language": "لُغة الاستنتاج", + "titlecase_hyphens": "أحرف استهلالية مع واصلات", + "lowercase_hyphens": "أحرف صغيرة مع واصلات", + "lowercase_spaces": "أحرف صغيرة مع مسافات", + "inference_language_description": "اختر اللغة الخاصة بالعلامات والملخصات التي تم إنشاؤها بواسطة الذكاء الاصطناعي.", + "tag_style_description": "اختر كيف ينبغي تنسيق علاماتك التي تم إنشاؤها تلقائيًا.", + "auto_tagging_description": "إنشاء علامات تلقائيًا لعلاماتك المرجعية باستخدام الذكاء الاصطناعي.", + "camelCase": "camelCase", + "auto_summarization": "التلخيص التلقائي" }, "feeds": { "rss_subscriptions": "اشتراكات RSS", @@ -163,6 +224,7 @@ "import_export_bookmarks": "استيراد / تصدير الإشارات المرجعية", "import_bookmarks_from_html_file": "استيراد إشارات مرجعية من ملف HTML", "import_bookmarks_from_pocket_export": "استيراد إشارات مرجعية من تصدير Pocket", + "import_bookmarks_from_matter_export": "استيراد إشارات مرجعية من تصدير Matter", "import_bookmarks_from_omnivore_export": "استيراد إشارات مرجعية من تصدير Omnivore", "import_bookmarks_from_linkwarden_export": "استيراد إشارات مرجعية من تصدير Linkwarden", "import_bookmarks_from_karakeep_export": "استيراد إشارات مرجعية من تصدير Karakeep", @@ -680,7 +742,14 @@ "week_s_ago": " منذ أسبوع (أسابيع)", "history": "عمليات البحث الأخيرة", "title_contains": "العنوان يحتوي على", - "title_does_not_contain": "العنوان لا يحتوي على" + "title_does_not_contain": "العنوان لا يحتوي على", + "is_broken_link": "لديه رابط معطّل", + "tags": "العلامات", + "no_suggestions": "لا توجد اقتراحات", + "filters": "الفلاتر", + "is_not_broken_link": "لديه رابط صالح", + "lists": "القوائم", + "feeds": "خلاصات الأخبار" }, "preview": { "view_original": "عرض النسخة الأصلية", @@ -689,7 +758,8 @@ "tabs": { "content": "المحتوى", "details": "التفاصيل" - } + }, + "archive_info": "قد لا يتم عرض الأرشيفات بشكل صحيح في السطر إذا كانت تتطلب Javascript. للحصول على أفضل النتائج، <1>قم بتنزيلها وافتحها في متصفحك</1>." }, "editor": { "quickly_focus": "يمكنك التركيز سريعاً على هذا الحقل بالضغط على ⌘ + E", @@ -763,7 +833,8 @@ "refetch": "تم إضافة إعادة الجلب إلى قائمة الانتظار!", "full_page_archive": "تم بدء إنشاء أرشيف الصفحة الكامل", "delete_from_list": "تم حذف الإشارة المرجعية من القائمة", - "clipboard_copied": "تم نسخ الرابط إلى الحافظة!" + "clipboard_copied": "تم نسخ الرابط إلى الحافظة!", + "preserve_pdf": "تم تشغيل حفظ PDF" }, "lists": { "created": "تم إنشاء القائمة!", diff --git a/apps/web/lib/i18n/locales/cs/translation.json b/apps/web/lib/i18n/locales/cs/translation.json index b0df5dab..f13b2100 100644 --- a/apps/web/lib/i18n/locales/cs/translation.json +++ b/apps/web/lib/i18n/locales/cs/translation.json @@ -39,7 +39,9 @@ }, "quota": "Kvóta", "bookmarks": "Záložky", - "storage": "Úložiště" + "storage": "Úložiště", + "pdf": "Archivovaný PDF", + "default": "Výchozí" }, "actions": { "close": "Zavřít", @@ -84,7 +86,9 @@ "confirm": "Potvrdit", "regenerate": "Regenerovat", "load_more": "Načíst další", - "edit_notes": "Upravit poznámky" + "edit_notes": "Upravit poznámky", + "preserve_as_pdf": "Uložit jako PDF", + "offline_copies": "Offline kopie" }, "settings": { "ai": { @@ -98,7 +102,21 @@ "all_tagging": "Všechny štítky", "text_tagging": "Označování textu", "image_tagging": "Označování obrázků", - "summarization": "Shrnutí" + "summarization": "Shrnutí", + "tag_style": "Styl štítků", + "auto_summarization_description": "Automaticky generovat shrnutí pro tvoje záložky pomocí umělý inteligence.", + "auto_tagging": "Automatický štítkování", + "titlecase_spaces": "Velká písmena s mezerami", + "lowercase_underscores": "Malá písmena s podtržítky", + "inference_language": "Jazyk pro odvozování", + "titlecase_hyphens": "Velká písmena s pomlčkami", + "lowercase_hyphens": "Malá písmena s pomlčkami", + "lowercase_spaces": "Malá písmena s mezerami", + "inference_language_description": "Vyber jazyk pro štítky a souhrny generované AI.", + "tag_style_description": "Vyber si, jakým způsobem se mají automaticky generované štítky formátovat.", + "auto_tagging_description": "Automaticky generovat štítky pro tvoje záložky pomocí umělý inteligence.", + "camelCase": "camelCase", + "auto_summarization": "Automatický shrnutí" }, "webhooks": { "webhooks": "Webhooky", @@ -210,7 +228,50 @@ "new_password": "Nový heslo", "confirm_new_password": "Potvrďte nový heslo", "options": "Možnosti", - "interface_lang": "Jazyk rozhraní" + "interface_lang": "Jazyk rozhraní", + "reader_settings": { + "local_overrides_title": "Aktivní nastavení specifická pro zařízení", + "using_default": "Používám výchozí nastavení klienta", + "clear_override_hint": "Vymažte přepsání zařízení, abyste použili globální nastavení ({{value}})", + "font_size": "Velikost písma", + "font_family": "Rodina písem", + "preview_inline": "(náhled)", + "tooltip_preview": "Neuložené změny náhledu", + "save_to_all_devices": "Všechna zařízení", + "tooltip_local": "Nastavení zařízení se liší od globálních", + "reset_preview": "Obnovit náhled", + "mono": "Neproporcionální", + "line_height": "Výška řádku", + "tooltip_default": "Nastavení čtení", + "title": "Nastavení čtečky", + "serif": "Patkové", + "preview": "Náhled", + "not_set": "Nenastaveno", + "clear_local_overrides": "Vymazat nastavení zařízení", + "preview_text": "Příliš žluťoučký kůň úpěl ďábelské ódy. Takto bude vypadat text v zobrazení čtečky.", + "local_overrides_cleared": "Nastavení specifická pro zařízení byla vymazána", + "local_overrides_description": "Toto zařízení má nastavení čtečky, která se liší od výchozích:", + "clear_defaults": "Smazat všechna výchozí nastavení", + "description": "Nastav výchozí nastavení textu pro zobrazení v čtečce. Tato nastavení se synchronizují na všech tvých zařízeních.", + "defaults_cleared": "Výchozí nastavení čtečky byla vymazána", + "save_hint": "Uložit nastavení jen pro toto zařízení, nebo synchronizovat na všech zařízeních", + "save_as_default": "Uložit jako výchozí", + "save_to_device": "Toto zařízení", + "sans": "Bezpatkové", + "tooltip_preview_and_local": "Neuložené změny náhledu; nastavení zařízení se liší od globálních", + "adjust_hint": "Upravte nastavení výše, abyste si prohlédli změny" + }, + "avatar": { + "upload": "Nahrát avatara", + "change": "Změnit avatara", + "remove_confirm_title": "Odebrat avatara?", + "updated": "Avatar aktualizován", + "removed": "Avatar byl odebrán", + "description": "Nahrajte čtvercový obrázek, který se použije jako váš avatar.", + "remove_confirm_description": "Tímto vymažete vaši aktuální profilovou fotku.", + "title": "Profilová fotka", + "remove": "Odebrat avatara" + } }, "feeds": { "rss_subscriptions": "RSS odběry", @@ -223,6 +284,7 @@ "import_export_bookmarks": "Import / Export záložek", "import_bookmarks_from_html_file": "Importovat záložky z HTML souboru", "import_bookmarks_from_pocket_export": "Importovat záložky z exportu Pocket", + "import_bookmarks_from_matter_export": "Importovat záložky z exportu Matter", "import_bookmarks_from_omnivore_export": "Importovat záložky z Omnivore exportu", "import_bookmarks_from_linkwarden_export": "Importovat záložky z exportu Linkwarden", "import_bookmarks_from_karakeep_export": "Importovat záložky z exportu Karakeep", @@ -537,7 +599,14 @@ "or": "Nebo", "history": "Poslední hledání", "title_contains": "Název obsahuje", - "title_does_not_contain": "Název neobsahuje" + "title_does_not_contain": "Název neobsahuje", + "is_broken_link": "Má nefunkční odkaz", + "tags": "Štítky", + "no_suggestions": "Žádné návrhy", + "filters": "Filtry", + "is_not_broken_link": "Má funkční odkaz", + "lists": "Seznamy", + "feeds": "Kanály" }, "editor": { "disabled_submissions": "Odesílání příspěvků je zakázáno", @@ -605,7 +674,8 @@ "refetch": "Opětovné načtení bylo zařazeno do fronty!", "full_page_archive": "Vytváření archivu celé stránky bylo spuštěno", "delete_from_list": "Záložka byla ze seznamu smazána", - "clipboard_copied": "Odkaz byl přidán do schránky!" + "clipboard_copied": "Odkaz byl přidán do schránky!", + "preserve_pdf": "Ukládání do PDF spuštěno" }, "lists": { "created": "Seznam byl vytvořen!", @@ -778,7 +848,8 @@ "tabs": { "content": "Obsah", "details": "Podrobnosti" - } + }, + "archive_info": "Archivy se nemusí vykreslovat správně inline, pokud vyžadují Javascript. Pro nejlepší výsledky si <1>stáhněte a otevřete v prohlížeči</1>." }, "dialogs": { "bookmarks": { diff --git a/apps/web/lib/i18n/locales/da/translation.json b/apps/web/lib/i18n/locales/da/translation.json index 0026b4d3..be382f86 100644 --- a/apps/web/lib/i18n/locales/da/translation.json +++ b/apps/web/lib/i18n/locales/da/translation.json @@ -42,7 +42,9 @@ "confirm": "Bekræft", "regenerate": "Regenerér", "load_more": "Indlæs mere", - "edit_notes": "Rediger noter" + "edit_notes": "Rediger noter", + "preserve_as_pdf": "Bevar som PDF", + "offline_copies": "Offline kopier" }, "settings": { "import": { @@ -53,6 +55,7 @@ "import_export_bookmarks": "Import / eksport bogmærker", "import_bookmarks_from_html_file": "Importer bogmærker fra HTML-fil", "import_bookmarks_from_pocket_export": "Importer bogmærker fra Pocket-eksport", + "import_bookmarks_from_matter_export": "Importer bogmærker fra Matter-eksport", "imported_bookmarks": "Importerede bogmærker", "import_bookmarks_from_linkwarden_export": "Importer bogmærker fra Linkwarden-eksport", "import_bookmarks_from_tab_session_manager_export": "Importer bogmærker fra Tab Session Manager", @@ -80,6 +83,49 @@ "show": "Vis arkiverede bogmærker i tags og lister", "hide": "Skjul arkiverede bogmærker i tags og lister" } + }, + "reader_settings": { + "local_overrides_title": "Apparatspecifikke indstillinger er aktive", + "using_default": "Bruger klientstandard", + "clear_override_hint": "Ryd tilsidesættelsen af enheden for at bruge den globale indstilling ({{value}})", + "font_size": "Skriftstørrelse", + "font_family": "Skrifttype", + "preview_inline": "(forhåndsvisning)", + "tooltip_preview": "Ikke-gemte ændringer i forhåndsvisning", + "save_to_all_devices": "Alle enheder", + "tooltip_local": "Enhedsindstillinger adskiller sig fra globale", + "reset_preview": "Nulstil forhåndsvisning", + "mono": "Monospace", + "line_height": "Linjehøjde", + "tooltip_default": "Læseindstillinger", + "title": "Læserindstillinger", + "serif": "Serif", + "preview": "Forhåndsvisning", + "not_set": "Ikke angivet", + "clear_local_overrides": "Ryd enhedsindstillinger", + "preview_text": "\"The quick brown fox jumps over the lazy dog.\" Sådan vises din tekst i læsevisning.", + "local_overrides_cleared": "Apparatspecifikke indstillinger er blevet ryddet", + "local_overrides_description": "Denne enhed har læserindstillinger, der afviger fra dine globale standardindstillinger:", + "clear_defaults": "Ryd alle standarder", + "description": "Konfigurer standard tekstindstillinger for læsevisningen. Disse indstillinger synkroniseres på tværs af alle dine enheder.", + "defaults_cleared": "Læserstandarder er blevet ryddet", + "save_hint": "Gem indstillinger kun for denne enhed eller synkroniser på tværs af alle enheder", + "save_as_default": "Gem som standard", + "save_to_device": "Denne enhed", + "sans": "Sans Serif", + "tooltip_preview_and_local": "Ikke-gemte ændringer i forhåndsvisning; enhedsindstillinger adskiller sig fra globale", + "adjust_hint": "Juster indstillingerne ovenfor for at se et eksempel på ændringerne" + }, + "avatar": { + "upload": "Upload avatar", + "change": "Skift avatar", + "remove_confirm_title": "Fjern avatar?", + "updated": "Avatar opdateret", + "removed": "Avatar fjernet", + "description": "Upload et firkantet billede, som du kan bruge som din avatar.", + "remove_confirm_description": "Dette vil fjerne dit nuværende profilbillede.", + "title": "Profilbillede", + "remove": "Fjern avatar" } }, "feeds": { @@ -99,7 +145,21 @@ "summarization": "Opsummering", "all_tagging": "Tagging for alle typer", "text_tagging": "Tekst-tagging", - "image_tagging": "Billede-tagging" + "image_tagging": "Billede-tagging", + "tag_style": "Tag-stil", + "auto_summarization_description": "Generér automatisk opsummeringer til dine bogmærker ved hjælp af AI.", + "auto_tagging": "Automatisk taggning", + "titlecase_spaces": "Store forbogstaver med mellemrum", + "lowercase_underscores": "Små bogstaver med understregninger", + "inference_language": "Inferenssprog", + "titlecase_hyphens": "Store forbogstaver med bindestreger", + "lowercase_hyphens": "Små bogstaver med bindestreger", + "lowercase_spaces": "Små bogstaver med mellemrum", + "inference_language_description": "Vælg sprog for AI-genererede tags og opsummeringer.", + "tag_style_description": "Vælg, hvordan dine automatisk genererede tags skal formateres.", + "auto_tagging_description": "Generér automatisk tags til dine bogmærker ved hjælp af AI.", + "camelCase": "camelCase", + "auto_summarization": "Automatisk opsummering" }, "broken_links": { "crawling_status": "Gennemsøgningsstatus", @@ -604,7 +664,9 @@ "summary": "Opsummering", "quota": "Kvote", "bookmarks": "Bogmærker", - "storage": "Lagring" + "storage": "Lagring", + "pdf": "Arkiveret PDF", + "default": "Standard" }, "layouts": { "masonry": "Fliser", @@ -705,7 +767,8 @@ "tabs": { "content": "Indhold", "details": "Detaljer" - } + }, + "archive_info": "Arkiver gengives muligvis ikke korrekt inline, hvis de kræver Javascript. For at opnå de bedste resultater skal du <1>downloade den og åbne den i din browser</1>." }, "toasts": { "bookmarks": { @@ -714,7 +777,8 @@ "delete_from_list": "Bogmærket er blevet slettet fra listen", "deleted": "Bogmærket er blevet slettet!", "clipboard_copied": "Linket er kopieret til din udklipsholder!", - "updated": "Bogmærket er blevet opdateret!" + "updated": "Bogmærket er blevet opdateret!", + "preserve_pdf": "PDF-bevaring er blevet udløst" }, "lists": { "created": "Listen er oprettet!", @@ -775,7 +839,14 @@ "year_s_ago": " År siden", "history": "Seneste søgninger", "title_contains": "Titel indeholder", - "title_does_not_contain": "Titel indeholder ikke" + "title_does_not_contain": "Titel indeholder ikke", + "is_broken_link": "Har Beskadet Link", + "tags": "Tags", + "no_suggestions": "Ingen forslag", + "filters": "Filtre", + "is_not_broken_link": "Har Fungerende Link", + "lists": "Lister", + "feeds": "Feeds" }, "dialogs": { "bookmarks": { diff --git a/apps/web/lib/i18n/locales/de/translation.json b/apps/web/lib/i18n/locales/de/translation.json index 88bbe275..7192b89e 100644 --- a/apps/web/lib/i18n/locales/de/translation.json +++ b/apps/web/lib/i18n/locales/de/translation.json @@ -39,7 +39,9 @@ "summary": "Zusammenfassung", "quota": "Kontingent", "bookmarks": "Lesezeichen", - "storage": "Speicher" + "storage": "Speicher", + "pdf": "Archivierte PDF-Datei", + "default": "Standard" }, "layouts": { "masonry": "Verschachtelt", @@ -90,7 +92,9 @@ "confirm": "Bestätigen", "regenerate": "Regenerieren", "load_more": "Mehr laden", - "edit_notes": "Notizen bearbeiten" + "edit_notes": "Notizen bearbeiten", + "preserve_as_pdf": "Als PDF speichern", + "offline_copies": "Offline-Kopien" }, "settings": { "back_to_app": "Zurück zur App", @@ -116,6 +120,49 @@ "show": "Archivierte Lesezeichen in Tags und Listen anzeigen", "hide": "Archivierte Lesezeichen in Tags und Listen ausblenden" } + }, + "reader_settings": { + "local_overrides_title": "Gerätespezifische Einstellungen aktiv", + "using_default": "Client-Standard verwenden", + "clear_override_hint": "Geräteüberschreibung löschen, um die globale Einstellung zu verwenden ({{value}})", + "font_size": "Schriftgröße", + "font_family": "Schriftfamilie", + "preview_inline": "(Vorschau)", + "tooltip_preview": "Nicht gespeicherte Vorschaueinstellungen", + "save_to_all_devices": "Alle Geräte", + "tooltip_local": "Geräteeinstellungen weichen von den globalen Einstellungen ab", + "reset_preview": "Vorschau zurücksetzen", + "mono": "Monospace", + "line_height": "Zeilenhöhe", + "tooltip_default": "Leseeinstellungen", + "title": "Lesereinstellungen", + "serif": "Serif", + "preview": "Vorschau", + "not_set": "Nicht festgelegt", + "clear_local_overrides": "Geräteeinstellungen löschen", + "preview_text": "The quick brown fox jumps over the lazy dog. So wird der Text Ihrer Leseransicht aussehen.", + "local_overrides_cleared": "Gerätespezifische Einstellungen wurden gelöscht", + "local_overrides_description": "Dieses Gerät hat Lesereinstellungen, die von Ihren globalen Standardeinstellungen abweichen:", + "clear_defaults": "Alle Standardeinstellungen löschen", + "description": "Standard-Texteinstellungen für die Leseransicht konfigurieren. Diese Einstellungen werden auf allen Ihren Geräten synchronisiert.", + "defaults_cleared": "Die Standardeinstellungen des Readers wurden gelöscht", + "save_hint": "Einstellungen nur für dieses Gerät speichern oder über alle Geräte synchronisieren", + "save_as_default": "Als Standard speichern", + "save_to_device": "Dieses Gerät", + "sans": "Sans Serif", + "tooltip_preview_and_local": "Nicht gespeicherte Vorschaueinstellungen; Geräteeinstellungen weichen von den globalen Einstellungen ab", + "adjust_hint": "Passe die Einstellungen oben an, um eine Vorschau der Änderungen zu sehen" + }, + "avatar": { + "upload": "Avatar hochladen", + "change": "Avatar ändern", + "remove_confirm_title": "Avatar entfernen?", + "updated": "Avatar aktualisiert", + "removed": "Avatar entfernt", + "description": "Lade ein quadratisches Bild hoch, das du als Avatar verwenden möchtest.", + "remove_confirm_description": "Dadurch wird dein aktuelles Profilfoto gelöscht.", + "title": "Profilfoto", + "remove": "Avatar entfernen" } }, "ai": { @@ -129,7 +176,21 @@ "all_tagging": "Gesamtes Tagging", "text_tagging": "Text-Tagging", "image_tagging": "Bild-Tagging", - "summarization": "Zusammenfassung" + "summarization": "Zusammenfassung", + "tag_style": "Tag-Stil", + "auto_summarization_description": "Automatische Zusammenfassung deiner Lesezeichen mithilfe von KI.", + "auto_tagging": "Automatisches Tagging", + "titlecase_spaces": "Titel-Schreibweise mit Leerzeichen", + "lowercase_underscores": "Kleinbuchstaben mit Unterstrichen", + "inference_language": "Schlussfolgerungs-Sprache", + "titlecase_hyphens": "Titel-Schreibweise mit Bindestrichen", + "lowercase_hyphens": "Kleinbuchstaben mit Bindestrichen", + "lowercase_spaces": "Kleinbuchstaben mit Leerzeichen", + "inference_language_description": "Sprache für von KI generierte Tags und Zusammenfassungen auswählen.", + "tag_style_description": "Wähle, wie deine automatisch generierten Tags formatiert werden sollen.", + "auto_tagging_description": "Automatische Tag-Generierung für deine Lesezeichen mithilfe von KI.", + "camelCase": "camelCase", + "auto_summarization": "Automatische Zusammenfassung" }, "feeds": { "rss_subscriptions": "RSS-Abonnements", @@ -142,6 +203,7 @@ "import_export_bookmarks": "Lesezeichen importieren / exportieren", "import_bookmarks_from_html_file": "Lesezeichen aus HTML-Datei importieren", "import_bookmarks_from_pocket_export": "Lesezeichen aus Pocket-Export importieren", + "import_bookmarks_from_matter_export": "Lesezeichen aus Matter-Export importieren", "import_bookmarks_from_omnivore_export": "Lesezeichen aus Omnivore-Export importieren", "import_bookmarks_from_karakeep_export": "Lesezeichen aus Karakeep-Export importieren", "export_links_and_notes": "Links und Notizen exportieren", @@ -646,7 +708,8 @@ "tabs": { "content": "Inhalt", "details": "Details" - } + }, + "archive_info": "Archive werden möglicherweise nicht korrekt inline dargestellt, wenn sie Javascript benötigen. Die besten Ergebnisse erzielst du, wenn du sie <1>herunterlädst und in deinem Browser öffnest</1>." }, "editor": { "quickly_focus": "Sie können schnell auf dieses Feld fokussieren, indem Sie ⌘ + E drücken", @@ -714,7 +777,8 @@ "refetch": "Neuabruf wurde in die Warteschlange gestellt!", "full_page_archive": "Erstellung des vollständigen Seitenarchivs wurde ausgelöst", "delete_from_list": "Das Lesezeichen wurde aus der Liste gelöscht", - "clipboard_copied": "Link wurde in Ihre Zwischenablage kopiert!" + "clipboard_copied": "Link wurde in Ihre Zwischenablage kopiert!", + "preserve_pdf": "Die PDF-Speicherung wurde ausgelöst" }, "lists": { "created": "Liste wurde erstellt!", @@ -781,7 +845,14 @@ "year_s_ago": " Vor Jahr(en)", "history": "Letzte Suchanfragen", "title_contains": "Titel enthält", - "title_does_not_contain": "Titel enthält nicht" + "title_does_not_contain": "Titel enthält nicht", + "is_broken_link": "Hat defekten Link", + "tags": "Schlagwörter", + "no_suggestions": "Keine Vorschläge", + "filters": "Filter", + "is_not_broken_link": "Hat funktionierenden Link", + "lists": "Listen", + "feeds": "Feeds" }, "bookmark_editor": { "subtitle": "Ändere die Details des Lesezeichens. Klicke auf Speichern, wenn du fertig bist.", diff --git a/apps/web/lib/i18n/locales/el/translation.json b/apps/web/lib/i18n/locales/el/translation.json index 203e0f55..6fea6c6e 100644 --- a/apps/web/lib/i18n/locales/el/translation.json +++ b/apps/web/lib/i18n/locales/el/translation.json @@ -39,7 +39,9 @@ }, "quota": "Ποσόστωση", "bookmarks": "Σελιδοδείκτες", - "storage": "Αποθήκευση" + "storage": "Αποθήκευση", + "pdf": "Αρχειοθετημένο PDF", + "default": "Προεπιλογή" }, "layouts": { "masonry": "Πλινθοδομή", @@ -90,7 +92,9 @@ "confirm": "Επιβεβαίωση", "regenerate": "Ανανέωση", "load_more": "Φόρτωσε περισσότερα", - "edit_notes": "Επεξεργασία σημειώσεων" + "edit_notes": "Επεξεργασία σημειώσεων", + "preserve_as_pdf": "Διατήρηση ως PDF", + "offline_copies": "Αντίγραφα εκτός σύνδεσης" }, "highlights": { "no_highlights": "Δεν έχετε ακόμα επιλογές." @@ -119,6 +123,49 @@ "show": "Εμφάνιση αρχειοθετημένων σελιδοδεικτών σε ετικέτες και λίστες", "hide": "Απόκρυψη αρχειοθετημένων σελιδοδεικτών από ετικέτες και λίστες" } + }, + "reader_settings": { + "local_overrides_title": "Ενεργές ρυθμίσεις για συγκεκριμένη συσκευή", + "using_default": "Χρήση της προεπιλογής του πελάτη", + "clear_override_hint": "Εκκαθαρίστε την παράκαμψη συσκευής για να χρησιμοποιήσετε την καθολική ρύθμιση ({{value}})", + "font_size": "Μέγεθος γραμματοσειράς", + "font_family": "Οικογένεια γραμματοσειράς", + "preview_inline": "(προεπισκόπηση)", + "tooltip_preview": "Μη αποθηκευμένες αλλαγές προεπισκόπησης", + "save_to_all_devices": "Όλες οι συσκευές", + "tooltip_local": "Οι ρυθμίσεις της συσκευής διαφέρουν από τις καθολικές ρυθμίσεις", + "reset_preview": "Επαναφορά προεπισκόπησης", + "mono": "Monospace", + "line_height": "Ύψος γραμμής", + "tooltip_default": "Ρυθμίσεις ανάγνωσης", + "title": "Ρυθμίσεις ανάγνωσης", + "serif": "Serif", + "preview": "Προεπισκόπηση", + "not_set": "Δεν έχει οριστεί", + "clear_local_overrides": "Εκκαθάριση ρυθμίσεων συσκευής", + "preview_text": "Η γρήγορη καφέ αλεπού πηδάει πάνω από τον τεμπέλη σκύλο. Έτσι θα φαίνεται το κείμενό σου στην προβολή ανάγνωσης.", + "local_overrides_cleared": "Οι ρυθμίσεις για συγκεκριμένη συσκευή έχουν εκκαθαριστεί", + "local_overrides_description": "Αυτή η συσκευή έχει ρυθμίσεις ανάγνωσης που διαφέρουν από τις καθολικές προεπιλογές σου:", + "clear_defaults": "Εκκαθάριση όλων των προεπιλογών", + "description": "Ρύθμισε τις προεπιλεγμένες ρυθμίσεις κειμένου για την προβολή ανάγνωσης. Αυτές οι ρυθμίσεις συγχρονίζονται απ' όλες τις συσκευές σου.", + "defaults_cleared": "Οι προεπιλογές ανάγνωσης έχουν εκκαθαριστεί", + "save_hint": "Αποθηκεύστε τις ρυθμίσεις μόνο για αυτή τη συσκευή ή συγχρονίστε σε όλες τις συσκευές", + "save_as_default": "Αποθήκευση ως προεπιλογή", + "save_to_device": "Αυτή η συσκευή", + "sans": "Sans Serif", + "tooltip_preview_and_local": "Μη αποθηκευμένες αλλαγές προεπισκόπησης; οι ρυθμίσεις της συσκευής διαφέρουν από τις καθολικές", + "adjust_hint": "Προσαρμόστε τις παραπάνω ρυθμίσεις για να κάνετε προεπισκόπηση των αλλαγών" + }, + "avatar": { + "upload": "Ανέβασε avatar", + "change": "Άλλαξε avatar", + "remove_confirm_title": "Να αφαιρεθεί το avatar;", + "updated": "Το avatar ανανεώθηκε", + "removed": "Το avatar αφαιρέθηκε", + "description": "Ανέβασε μια τετράγωνη εικόνα για να τη χρησιμοποιήσεις ως avatar.", + "remove_confirm_description": "Αυτό θα διαγράψει την τρέχουσα φωτογραφία προφίλ σου.", + "title": "Φωτογραφία Προφίλ", + "remove": "Αφαίρεσε avatar" } }, "ai": { @@ -132,7 +179,21 @@ "all_tagging": "Όλη η Ετικετοποίηση", "text_tagging": "Ετικετοποίηση Κειμένου", "image_tagging": "Ετικετοποίηση Εικόνων", - "summarization": "Περίληψη" + "summarization": "Περίληψη", + "tag_style": "Στυλ ετικέτας", + "auto_summarization_description": "Δημιουργήστε αυτόματα περιλήψεις για τους σελιδοδείκτες σας χρησιμοποιώντας AI.", + "auto_tagging": "Αυτόματη προσθήκη ετικετών", + "titlecase_spaces": "Κεφαλαία ανά λέξη με κενά", + "lowercase_underscores": "Μικρά με κάτω παύλες", + "inference_language": "Γλώσσα εξαγωγής συμπερασμάτων", + "titlecase_hyphens": "Κεφαλαία ανά λέξη με παύλες", + "lowercase_hyphens": "Μικρά με παύλες", + "lowercase_spaces": "Μικρά με κενά", + "inference_language_description": "Διάλεξε γλώσσα για τις ετικέτες και τις περιλήψεις που δημιουργούνται από την AI.", + "tag_style_description": "Διάλεξε πώς να μορφοποιηθούν οι αυτόματα δημιουργημένες ετικέτες σου.", + "auto_tagging_description": "Δημιουργήστε αυτόματα ετικέτες για τους σελιδοδείκτες σας χρησιμοποιώντας AI.", + "camelCase": "camelCase", + "auto_summarization": "Αυτόματη δημιουργία περιλήψεων" }, "feeds": { "rss_subscriptions": "Συνδρομές RSS", @@ -163,6 +224,7 @@ "import_export_bookmarks": "Εισαγωγή / Εξαγωγή Σελιδοδεικτών", "import_bookmarks_from_html_file": "Εισαγωγή Σελιδοδεικτών από αρχείο HTML", "import_bookmarks_from_pocket_export": "Εισαγωγή Σελιδοδεικτών από εξαγωγή Pocket", + "import_bookmarks_from_matter_export": "Εισαγωγή Σελιδοδεικτών από εξαγωγή Matter", "import_bookmarks_from_omnivore_export": "Εισαγωγή Σελιδοδεικτών από εξαγωγή Omnivore", "import_bookmarks_from_linkwarden_export": "Εισαγωγή Σελιδοδεικτών από εξαγωγή Linkwarden", "import_bookmarks_from_karakeep_export": "Εισαγωγή Σελιδοδεικτών από εξαγωγή Karakeep", @@ -680,7 +742,14 @@ "or": "Ή", "history": "Πρόσφατες αναζητήσεις", "title_contains": "Ο τίτλος περιέχει", - "title_does_not_contain": "Ο τίτλος δεν περιέχει" + "title_does_not_contain": "Ο τίτλος δεν περιέχει", + "is_broken_link": "Έχει κατεστραμμένο σύνδεσμο", + "tags": "Ετικέτες", + "no_suggestions": "Χωρίς προτάσεις", + "filters": "Φίλτρα", + "is_not_broken_link": "Έχει σύνδεσμο που λειτουργεί", + "lists": "Λίστες", + "feeds": "Ροές" }, "preview": { "view_original": "Προβολή Πρωτότυπου", @@ -689,7 +758,8 @@ "tabs": { "content": "Περιεχόμενο", "details": "Λεπτομέρειες" - } + }, + "archive_info": "Τα αρχεία ενδέχεται να μην αποδίδονται σωστά ενσωματωμένα, εάν απαιτούν Javascript. Για καλύτερα αποτελέσματα, <1>κατεβάστε το και ανοίξτε το στο πρόγραμμα περιήγησής σας</1>." }, "editor": { "quickly_focus": "Μπορείτε να εστιάσετε γρήγορα σε αυτό το πεδίο πατώντας ⌘ + E", @@ -763,7 +833,8 @@ "refetch": "Η επαναφόρτωση μπήκε στην ουρά!", "full_page_archive": "Η δημιουργία Πλήρους Αρχείου Σελίδας ενεργοποιήθηκε", "delete_from_list": "Ο σελιδοδείκτης διαγράφηκε από τη λίστα", - "clipboard_copied": "Ο σύνδεσμος προστέθηκε στο πρόχειρό σας!" + "clipboard_copied": "Ο σύνδεσμος προστέθηκε στο πρόχειρό σας!", + "preserve_pdf": "Η διατήρηση PDF έχει ενεργοποιηθεί" }, "lists": { "created": "Η λίστα δημιουργήθηκε!", diff --git a/apps/web/lib/i18n/locales/en/translation.json b/apps/web/lib/i18n/locales/en/translation.json index 33c7d6e2..37212ede 100644 --- a/apps/web/lib/i18n/locales/en/translation.json +++ b/apps/web/lib/i18n/locales/en/translation.json @@ -1,5 +1,7 @@ { "common": { + "default": "Default", + "id": "ID", "url": "URL", "name": "Name", "email": "Email", @@ -8,6 +10,7 @@ "actions": "Actions", "created_at": "Created At", "updated_at": "Updated At", + "last_used": "Last Used", "key": "Key", "role": "Role", "type": "Type", @@ -25,6 +28,7 @@ "highlights": "Highlights", "source": "Source", "screenshot": "Screenshot", + "pdf": "Archived PDF", "video": "Video", "archive": "Archive", "home": "Home", @@ -69,7 +73,11 @@ "toggle_show_archived": "Show Archived", "refresh": "Refresh", "recrawl": "Recrawl", - "download_full_page_archive": "Download Full Page Archive", + "offline_copies": "Offline Copies", + "preserve_offline_archive": "Preserve Offline Archive", + "download_full_page_archive_file": "Download Archive File", + "preserve_as_pdf": "Preserve as PDF", + "download_pdf_file": "Download PDF File", "edit_tags": "Edit Tags", "edit_notes": "Edit Notes", "add_to_list": "Add to List", @@ -82,6 +90,7 @@ "remove_from_list": "Remove from List", "save": "Save", "add": "Add", + "remove": "Remove", "edit": "Edit", "confirm": "Confirm", "open_editor": "Open Editor", @@ -96,6 +105,9 @@ "regenerate": "Regenerate", "apply_all": "Apply All", "ignore": "Ignore", + "more": "More", + "replace_banner": "Replace Banner", + "add_banner": "Add Banner", "sort": { "title": "Sort", "relevant_first": "Most Relevant First", @@ -119,6 +131,17 @@ "confirm_new_password": "Confirm New Password", "options": "Options", "interface_lang": "Interface Language", + "avatar": { + "title": "Profile Photo", + "description": "Upload a square image to use as your avatar.", + "upload": "Upload avatar", + "change": "Change avatar", + "remove": "Remove avatar", + "remove_confirm_title": "Remove avatar?", + "remove_confirm_description": "This will clear your current profile photo.", + "updated": "Avatar updated", + "removed": "Avatar removed" + }, "user_settings": { "user_settings_updated": "User settings have been updated!", "bookmark_click_action": { @@ -131,6 +154,38 @@ "show": "Show archived bookmarks in tags and lists", "hide": "Hide archived bookmarks in tags and lists" } + }, + "reader_settings": { + "title": "Reader Settings", + "description": "Configure default text settings for the reader view. These settings sync across all your devices.", + "font_family": "Font Family", + "font_size": "Font Size", + "line_height": "Line Height", + "save_as_default": "Save as default", + "clear_defaults": "Clear all defaults", + "not_set": "Not set", + "using_default": "Using client default", + "preview": "Preview", + "preview_text": "The quick brown fox jumps over the lazy dog. This is how your reader view text will appear.", + "defaults_cleared": "Reader defaults have been cleared", + "local_overrides_title": "Device-specific settings active", + "local_overrides_description": "This device has reader settings that differ from your global defaults:", + "local_overrides_cleared": "Device-specific settings have been cleared", + "clear_local_overrides": "Clear device settings", + "serif": "Serif", + "sans": "Sans Serif", + "mono": "Monospace", + "tooltip_default": "Reading settings", + "tooltip_preview": "Unsaved preview changes", + "tooltip_local": "Device settings differ from global", + "tooltip_preview_and_local": "Unsaved preview changes; device settings differ from global", + "reset_preview": "Reset preview", + "save_to_device": "This device", + "save_to_all_devices": "All devices", + "save_hint": "Save settings for this device only or sync across all devices", + "adjust_hint": "Adjust settings above to preview changes", + "clear_override_hint": "Clear device override to use global setting ({{value}})", + "preview_inline": "(preview)" } }, "stats": { @@ -189,6 +244,10 @@ }, "ai": { "ai_settings": "AI Settings", + "auto_tagging": "Auto-tagging", + "auto_tagging_description": "Automatically generate tags for your bookmarks using AI.", + "auto_summarization": "Auto-summarization", + "auto_summarization_description": "Automatically generate summaries for your bookmarks using AI.", "tagging_rules": "Tagging Rules", "tagging_rule_description": "Prompts that you add here will be included as rules to the model during tag generation. You can view the final prompts in the prompt preview section.", "prompt_preview": "Prompt Preview", @@ -198,7 +257,22 @@ "all_tagging": "All Tagging", "text_tagging": "Text Tagging", "image_tagging": "Image Tagging", - "summarization": "Summarization" + "summarization": "Summarization", + "tag_style": "Tag Style", + "tag_style_description": "Choose how your auto-generated tags should be formatted.", + "lowercase_hyphens": "Lowercase with hyphens", + "lowercase_spaces": "Lowercase with spaces", + "lowercase_underscores": "Lowercase with underscores", + "titlecase_spaces": "Title case with spaces", + "titlecase_hyphens": "Title case with hyphens", + "camelCase": "camelCase", + "no_preference": "No preference", + "inference_language": "Inference Language", + "inference_language_description": "Choose language for AI-generated tags and summaries.", + "curated_tags": "Curated Tags", + "curated_tags_description": "Optionally restrict AI tagging to only use tags from this list. When no tags are selected, the AI generates tags freely.", + "curated_tags_updated": "Curated tags updated successfully!", + "curated_tags_update_failed": "Failed to update curated tags" }, "feeds": { "rss_subscriptions": "RSS Subscriptions", @@ -229,11 +303,13 @@ "import_export_bookmarks": "Import / Export Bookmarks", "import_bookmarks_from_html_file": "Import Bookmarks from HTML file", "import_bookmarks_from_pocket_export": "Import Bookmarks from Pocket export", + "import_bookmarks_from_matter_export": "Import Bookmarks from Matter export", "import_bookmarks_from_omnivore_export": "Import Bookmarks from Omnivore export", "import_bookmarks_from_linkwarden_export": "Import Bookmarks from Linkwarden export", "import_bookmarks_from_karakeep_export": "Import Bookmarks from Karakeep export", "import_bookmarks_from_tab_session_manager_export": "Import Bookmarks from Tab Session Manager", "import_bookmarks_from_mymind_export": "Import Bookmarks from mymind export", + "import_bookmarks_from_instapaper_export": "Import Bookmarks from Instapaper export", "export_links_and_notes": "Export Links and Notes", "imported_bookmarks": "Imported Bookmarks" }, @@ -285,6 +361,9 @@ "conditions_types": { "always": "Always", "url_contains": "URL Contains", + "url_does_not_contain": "URL Does Not Contain", + "title_contains": "Title Contains", + "title_does_not_contain": "Title Does Not Contain", "imported_from_feed": "Imported From Feed", "bookmark_type_is": "Bookmark Type Is", "has_tag": "Has Tag", @@ -342,11 +421,12 @@ "created_at": "Created {{time}}", "progress": "Progress", "status": { + "staging": "Staging", "pending": "Pending", - "in_progress": "In progress", + "running": "Running", + "paused": "Paused", "completed": "Completed", - "failed": "Failed", - "processing": "Processing" + "failed": "Failed" }, "badges": { "pending": "{{count}} pending", @@ -358,7 +438,33 @@ "view_list": "View List", "delete_dialog_title": "Delete Import Session", "delete_dialog_description": "Are you sure you want to delete \"{{name}}\"? This action cannot be undone. The bookmarks themselves will not be deleted.", - "delete_session": "Delete Session" + "delete_session": "Delete Session", + "pause_session": "Pause", + "resume_session": "Resume", + "view_details": "View Details", + "detail": { + "page_title": "Import Session Details", + "back_to_import": "Back to Import", + "filter_all": "All", + "filter_accepted": "Accepted", + "filter_rejected": "Rejected", + "filter_duplicates": "Duplicates", + "filter_pending": "Pending", + "table_title": "Title / URL", + "table_type": "Type", + "table_result": "Result", + "table_reason": "Reason", + "table_bookmark": "Bookmark", + "result_accepted": "Accepted", + "result_rejected": "Rejected", + "result_skipped_duplicate": "Duplicate", + "result_pending": "Pending", + "result_processing": "Processing", + "no_results": "No results found for this filter.", + "view_bookmark": "View Bookmark", + "load_more": "Load More", + "no_title": "No title" + } }, "backups": { "backups": "Backups", @@ -485,11 +591,14 @@ } }, "actions": { + "recrawl_pending_links_only": "Recrawl Pending Links Only", "recrawl_failed_links_only": "Recrawl Failed Links Only", "recrawl_all_links": "Recrawl All Links", "without_inference": "Without Inference", + "regenerate_ai_tags_for_pending_bookmarks_only": "Regenerate AI Tags for Pending Bookmarks Only", "regenerate_ai_tags_for_failed_bookmarks_only": "Regenerate AI Tags for Failed Bookmarks Only", "regenerate_ai_tags_for_all_bookmarks": "Regenerate AI Tags for All Bookmarks", + "regenerate_ai_summaries_for_pending_bookmarks_only": "Regenerate AI Summaries for Pending Bookmarks Only", "regenerate_ai_summaries_for_failed_bookmarks_only": "Regenerate AI Summaries for Failed Bookmarks Only", "regenerate_ai_summaries_for_all_bookmarks": "Regenerate AI Summaries for All Bookmarks", "reindex_all_bookmarks": "Reindex All Bookmarks", @@ -510,11 +619,50 @@ "local_user": "Local User", "confirm_password": "Confirm Password", "unlimited": "Unlimited" + }, + "admin_tools": { + "admin_tools": "Admin Tools", + "bookmark_debugger": "Bookmark Debugger", + "bookmark_id": "Bookmark ID", + "bookmark_id_placeholder": "Enter bookmark ID", + "lookup": "Lookup", + "debug_info": "Debug Information", + "basic_info": "Basic Information", + "status": "Status", + "content": "Content", + "html_preview": "HTML Preview (First 1000 chars)", + "summary": "Summary", + "url": "URL", + "source_url": "Source URL", + "asset_type": "Asset Type", + "file_name": "File Name", + "owner_user_id": "Owner User ID", + "tagging_status": "Tagging Status", + "summarization_status": "Summarization Status", + "crawl_status": "Crawl Status", + "crawl_status_code": "HTTP Status Code", + "crawled_at": "Crawled At", + "recrawl": "Re-crawl", + "reindex": "Re-index", + "retag": "Re-tag", + "resummarize": "Re-summarize", + "bookmark_not_found": "Bookmark not found", + "action_success": "Action completed successfully", + "action_failed": "Action failed", + "recrawl_queued": "Re-crawl job has been queued", + "reindex_queued": "Re-index job has been queued", + "retag_queued": "Re-tag job has been queued", + "resummarize_queued": "Re-summarize job has been queued", + "view": "View", + "fetch_error": "Error fetching bookmark" } }, "options": { "dark_mode": "Dark Mode", - "light_mode": "Light Mode" + "light_mode": "Light Mode", + "apps_extensions": "Apps & Extensions", + "documentation": "Documentation", + "follow_us_on_x": "Follow us on X" }, "lists": { "all_lists": "All Lists", @@ -620,6 +768,8 @@ "create_tag_description": "Create a new tag without attaching it to any bookmark", "tag_name": "Tag Name", "enter_tag_name": "Enter tag name", + "search_placeholder": "Search tags...", + "search_or_create_placeholder": "Search or create tags...", "no_custom_tags": "No custom tags yet", "no_ai_tags": "No AI tags yet", "no_unused_tags": "You don't have any unused tags", @@ -662,6 +812,8 @@ "type_is_not": "Type is not", "is_from_feed": "Is from RSS Feed", "is_not_from_feed": "Is not from RSS Feed", + "is_from_source": "Source is", + "is_not_from_source": "Source is not", "is_broken_link": "Has Broken Link", "is_not_broken_link": "Has Working Link", "and": "And", @@ -677,6 +829,9 @@ "view_original": "View Original", "cached_content": "Cached Content", "reader_view": "Reader View", + "archive_info": "Archives may not render correctly inline if they require Javascript. For best results, <1>download it and open in your browser</1>.", + "fetch_error_title": "Content Unavailable", + "fetch_error_description": "We couldn't fetch the content for this link. The page may be protected, require authentication, or be temporarily unavailable.", "tabs": { "content": "Content", "details": "Details" @@ -752,8 +907,11 @@ "deleted": "The bookmark has been deleted!", "refetch": "Re-fetch has been enqueued!", "full_page_archive": "Full Page Archive creation has been triggered", + "preserve_pdf": "PDF preservation has been triggered", "delete_from_list": "The bookmark has been deleted from the list", - "clipboard_copied": "Link has been added to your clipboard!" + "clipboard_copied": "Link has been added to your clipboard!", + "update_banner": "Banner has been updated!", + "uploading_banner": "Uploading banner..." }, "lists": { "created": "List has been created!", @@ -798,5 +956,54 @@ "no_release_notes": "No release notes were published for this version.", "release_notes_synced": "Release notes are synced from GitHub.", "view_on_github": "View on GitHub" + }, + "wrapped": { + "title": "Your {{year}} Wrapped", + "subtitle": "A Year in Karakeep", + "banner": { + "title": "Your 2025 Wrapped is ready!", + "description": "See your year in bookmarks", + "view_now": "View Now" + }, + "button": "2025 Wrapped", + "loading": "Loading your Wrapped...", + "failed_to_load": "Failed to load your Wrapped stats", + "sections": { + "total_saves": { + "prefix": "You saved", + "suffix": "items this year", + "suffix_singular": "item this year" + }, + "first_bookmark": { + "title": "Your Journey Started", + "description": "First save of {{year}}:" + }, + "top_domains": "Your Top Sites", + "top_tags": "Your Top Tags", + "monthly_activity": "Your Year in Saves", + "most_active_day": "Your Most Active Day", + "peak_times": { + "title": "When You Save", + "peak_hour": "Peak Hour", + "peak_day": "Peak Day" + }, + "how_you_save": "How You Save", + "what_you_saved": "What You Saved", + "summary": { + "favorites": "Favorites", + "tags_created": "Tags Created", + "highlights": "Highlights" + }, + "types": { + "links": "Links", + "notes": "Notes", + "assets": "Assets" + } + }, + "footer": "Made with Karakeep", + "share": "Share", + "download": "Download", + "close": "Close", + "generating": "Generating..." } } diff --git a/apps/web/lib/i18n/locales/en_US/translation.json b/apps/web/lib/i18n/locales/en_US/translation.json index 12af64e8..9e98b09e 100644 --- a/apps/web/lib/i18n/locales/en_US/translation.json +++ b/apps/web/lib/i18n/locales/en_US/translation.json @@ -25,6 +25,7 @@ "admin": "Admin" }, "screenshot": "Screenshot", + "pdf": "Archived PDF", "video": "Video", "archive": "Archive", "home": "Home", @@ -39,7 +40,8 @@ }, "quota": "Quota", "bookmarks": "Bookmarks", - "storage": "Storage" + "storage": "Storage", + "default": "Default" }, "layouts": { "masonry": "Masonry", @@ -62,7 +64,9 @@ "delete": "Delete", "refresh": "Refresh", "recrawl": "Recrawl", + "offline_copies": "Offline Copies", "download_full_page_archive": "Download Full Page Archive", + "preserve_as_pdf": "Preserve as PDF", "edit_tags": "Edit Tags", "add_to_list": "Add to List", "select_all": "Select All", @@ -200,6 +204,17 @@ "confirm_new_password": "Confirm New Password", "options": "Options", "interface_lang": "Interface Language", + "avatar": { + "title": "Profile Photo", + "description": "Upload a square image to use as your avatar.", + "upload": "Upload avatar", + "change": "Change avatar", + "remove": "Remove avatar", + "remove_confirm_title": "Remove avatar?", + "remove_confirm_description": "This will clear your current profile photo.", + "updated": "Avatar updated", + "removed": "Avatar removed" + }, "user_settings": { "user_settings_updated": "User settings have been updated!", "bookmark_click_action": { @@ -212,6 +227,38 @@ "show": "Show archived bookmarks in tags and lists", "hide": "Hide archived bookmarks in tags and lists" } + }, + "reader_settings": { + "local_overrides_title": "Device-specific settings active", + "using_default": "Using client default", + "clear_override_hint": "Clear device override to use global setting ({{value}})", + "font_size": "Font Size", + "font_family": "Font Family", + "preview_inline": "(preview)", + "tooltip_preview": "Unsaved preview changes", + "save_to_all_devices": "All devices", + "tooltip_local": "Device settings differ from global", + "reset_preview": "Reset preview", + "mono": "Monospace", + "line_height": "Line Height", + "tooltip_default": "Reading settings", + "title": "Reader Settings", + "serif": "Serif", + "preview": "Preview", + "not_set": "Not set", + "clear_local_overrides": "Clear device settings", + "preview_text": "The quick brown fox jumps over the lazy dog. This is how your reader view text will appear.", + "local_overrides_cleared": "Device-specific settings have been cleared", + "local_overrides_description": "This device has reader settings that differ from your global defaults:", + "clear_defaults": "Clear all defaults", + "description": "Configure default text settings for the reader view. These settings sync across all your devices.", + "defaults_cleared": "Reader defaults have been cleared", + "save_hint": "Save settings for this device only or sync across all devices", + "save_as_default": "Save as default", + "save_to_device": "This device", + "sans": "Sans Serif", + "tooltip_preview_and_local": "Unsaved preview changes; device settings differ from global", + "adjust_hint": "Adjust settings above to preview changes" } }, "ai": { @@ -225,7 +272,21 @@ "all_tagging": "All Tagging", "text_tagging": "Text Tagging", "image_tagging": "Image Tagging", - "summarization": "Summarization" + "summarization": "Summarization", + "tag_style": "Tag Style", + "auto_summarization_description": "Automatically generate summaries for your bookmarks using AI.", + "auto_tagging": "Auto-tagging", + "titlecase_spaces": "Title case with spaces", + "lowercase_underscores": "Lowercase with underscores", + "inference_language": "Inference Language", + "titlecase_hyphens": "Title case with hyphens", + "lowercase_hyphens": "Lowercase with hyphens", + "lowercase_spaces": "Lowercase with spaces", + "inference_language_description": "Choose language for AI-generated tags and summaries.", + "tag_style_description": "Choose how your auto-generated tags should be formatted.", + "auto_tagging_description": "Automatically generate tags for your bookmarks using AI.", + "camelCase": "camelCase", + "auto_summarization": "Auto-summarization" }, "feeds": { "rss_subscriptions": "RSS Subscriptions", @@ -257,6 +318,7 @@ "import_export_bookmarks": "Import / Export Bookmarks", "import_bookmarks_from_html_file": "Import Bookmarks from HTML file", "import_bookmarks_from_pocket_export": "Import Bookmarks from Pocket export", + "import_bookmarks_from_matter_export": "Import Bookmarks from Matter export", "import_bookmarks_from_omnivore_export": "Import Bookmarks from Omnivore export", "import_bookmarks_from_linkwarden_export": "Import Bookmarks from Linkwarden export", "import_bookmarks_from_karakeep_export": "Import Bookmarks from Karakeep export", @@ -754,7 +816,10 @@ "filters": "Filters", "tags": "Tags", "lists": "Lists", - "no_suggestions": "No suggestions" + "no_suggestions": "No suggestions", + "is_broken_link": "Has Broken Link", + "is_not_broken_link": "Has Working Link", + "feeds": "Feeds" }, "preview": { "view_original": "View Original", @@ -763,13 +828,15 @@ "tabs": { "content": "Content", "details": "Details" - } + }, + "archive_info": "Archives may not render correctly inline if they require Javascript. For best results, <1>download it and open in your browser</1>." }, "toasts": { "bookmarks": { "deleted": "The bookmark has been deleted!", "refetch": "Re-fetch has been enqueued!", "full_page_archive": "Full Page Archive creation has been triggered", + "preserve_pdf": "PDF preservation has been triggered", "delete_from_list": "The bookmark has been deleted from the list", "clipboard_copied": "Link has been added to your clipboard!", "updated": "The bookmark has been updated!" diff --git a/apps/web/lib/i18n/locales/es/translation.json b/apps/web/lib/i18n/locales/es/translation.json index 6b2b78a4..6dd2aa78 100644 --- a/apps/web/lib/i18n/locales/es/translation.json +++ b/apps/web/lib/i18n/locales/es/translation.json @@ -39,7 +39,9 @@ "description": "Descripción", "quota": "Cuota", "bookmarks": "Marcadores", - "storage": "Almacenamiento" + "storage": "Almacenamiento", + "pdf": "PDF archivado", + "default": "Predeterminado" }, "settings": { "info": { @@ -63,6 +65,49 @@ "show": "Mostrar marcadores archivados en etiquetas y listas", "hide": "Ocultar marcadores archivados en etiquetas y listas" } + }, + "reader_settings": { + "local_overrides_title": "Ajustes específicos del dispositivo activos", + "using_default": "Usando el valor predeterminado del cliente", + "clear_override_hint": "Borra la configuración específica del dispositivo para usar la configuración global ({{value}})", + "font_size": "Tamaño de fuente", + "font_family": "Familia de fuentes", + "preview_inline": "(vista previa)", + "tooltip_preview": "Cambios de la vista previa sin guardar", + "save_to_all_devices": "Todos los dispositivos", + "tooltip_local": "Los ajustes del dispositivo difieren de los globales", + "reset_preview": "Restablecer vista previa", + "mono": "Monoespacio", + "line_height": "Altura de la línea", + "tooltip_default": "Ajustes de lectura", + "title": "Ajustes del lector", + "serif": "Con gracias", + "preview": "Vista previa", + "not_set": "No configurado", + "clear_local_overrides": "Borrar la configuración del dispositivo", + "preview_text": "El veloz murciélago hindú comía feliz cardillo y kiwi. Así es como aparecerá el texto en tu vista de lectura.", + "local_overrides_cleared": "Se han borrado los ajustes específicos del dispositivo", + "local_overrides_description": "Este dispositivo tiene ajustes de lector que difieren de los valores predeterminados globales:", + "clear_defaults": "Borrar todos los valores predeterminados", + "description": "Configura los ajustes de texto predeterminados para la vista de lectura. Estos ajustes se sincronizan en todos tus dispositivos.", + "defaults_cleared": "Se han borrado los valores predeterminados del lector", + "save_hint": "Guarda la configuración sólo para este dispositivo o sincronízala en todos los dispositivos", + "save_as_default": "Guardar como predeterminado", + "save_to_device": "Este dispositivo", + "sans": "Sin gracias", + "tooltip_preview_and_local": "Cambios de la vista previa sin guardar; los ajustes del dispositivo difieren de los globales", + "adjust_hint": "Just the tip: ajusta la configuración de arriba para previsualizar los cambios" + }, + "avatar": { + "upload": "Subir avatar", + "change": "Cambiar avatar", + "remove_confirm_title": "¿Eliminar avatar?", + "updated": "Avatar actualizado", + "removed": "Avatar eliminado", + "description": "Sube una imagen cuadrada para usarla como tu avatar.", + "remove_confirm_description": "Esto borrará tu foto de perfil actual.", + "title": "Foto de perfil", + "remove": "Eliminar avatar" } }, "back_to_app": "Volver a la aplicación", @@ -77,7 +122,21 @@ "summarization_prompt": "Indicación de resumen", "all_tagging": "Todo el etiquetado", "text_tagging": "Etiquetado de texto", - "image_tagging": "Etiquetado de imágenes" + "image_tagging": "Etiquetado de imágenes", + "tag_style": "Estilo de etiqueta", + "auto_summarization_description": "Genera resúmenes automáticamente para tus marcadores usando IA.", + "auto_tagging": "Etiquetado automático", + "titlecase_spaces": "Mayúsculas y minúsculas con espacios", + "lowercase_underscores": "Minúsculas con guiones bajos", + "inference_language": "Idioma de Inferencia", + "titlecase_hyphens": "Mayúsculas y minúsculas con guiones", + "lowercase_hyphens": "Minúsculas con guiones", + "lowercase_spaces": "Minúsculas con espacios", + "inference_language_description": "Elige el idioma para las etiquetas y los resúmenes generados por la IA.", + "tag_style_description": "Elige cómo quieres que se formateen las etiquetas que se generan automáticamente.", + "auto_tagging_description": "Genera etiquetas automáticamente para tus marcadores usando IA.", + "camelCase": "camelCase", + "auto_summarization": "Resumen automático" }, "user_settings": "Ajustes de usuario", "feeds": { @@ -90,6 +149,7 @@ "import_export": "Importar / Exportar", "import_export_bookmarks": "Importar / Exportar marcadores", "import_bookmarks_from_pocket_export": "Importar marcadores desde exportación de Pocket", + "import_bookmarks_from_matter_export": "Importar marcadores desde exportación de Matter", "export_links_and_notes": "Exportar links y notas", "imported_bookmarks": "Marcadores importados", "import_bookmarks_from_karakeep_export": "Importar marcadores desde exportación de Karakeep", @@ -387,7 +447,9 @@ "confirm": "Confirmar", "regenerate": "Regenerar", "load_more": "Cargar más", - "edit_notes": "Editar notas" + "edit_notes": "Editar notas", + "preserve_as_pdf": "Conservar como PDF", + "offline_copies": "Copias sin conexión" }, "layouts": { "compact": "Compacto", @@ -646,7 +708,8 @@ "tabs": { "content": "Contenido", "details": "Detalles" - } + }, + "archive_info": "Es posible que los archivos no se rendericen correctamente en línea si requieren Javascript. Para obtener mejores resultados, <1>descárgalo y ábrelo en tu navegador</1>." }, "editor": { "multiple_urls_dialog_title": "¿Importar URLs como marcadores independientes?", @@ -714,7 +777,8 @@ "deleted": "¡El marcador se ha eliminado!", "full_page_archive": "Se ha pedido un Archivo de Página Completa", "delete_from_list": "El marcador se ha borrado de la lista", - "clipboard_copied": "¡El enlace se ha copiado en tu portapapeles!" + "clipboard_copied": "¡El enlace se ha copiado en tu portapapeles!", + "preserve_pdf": "Se ha activado la preservación en PDF" }, "lists": { "created": "¡Enlace creado correctamente!", @@ -775,7 +839,14 @@ "year_s_ago": " Hace año(s)", "history": "Búsquedas recientes", "title_contains": "El título contiene", - "title_does_not_contain": "El título no contiene" + "title_does_not_contain": "El título no contiene", + "is_broken_link": "Tiene enlace roto", + "tags": "Etiquetas", + "no_suggestions": "Sin sugerencias", + "filters": "Filtros", + "is_not_broken_link": "Tiene enlace que funciona", + "lists": "Listas", + "feeds": "Feeds" }, "dialogs": { "bookmarks": { diff --git a/apps/web/lib/i18n/locales/fa/translation.json b/apps/web/lib/i18n/locales/fa/translation.json index 5136e368..6bd97788 100644 --- a/apps/web/lib/i18n/locales/fa/translation.json +++ b/apps/web/lib/i18n/locales/fa/translation.json @@ -39,7 +39,9 @@ "text": "متن", "media": "رسانه" }, - "quota": "سهمیه" + "quota": "سهمیه", + "pdf": "پیدیاف بایگانیشده", + "default": "پیشفرض" }, "layouts": { "grid": "شبکهای", @@ -90,7 +92,9 @@ "oldest_first": "قدیمیترینها ابتدا" }, "load_more": "بارگذاری بیشتر", - "edit_notes": "ویرایش یادداشتها" + "edit_notes": "ویرایش یادداشتها", + "preserve_as_pdf": "به عنوان پیدیاف نگهداریاش کن", + "offline_copies": "نسخههای آفلاین" }, "settings": { "stats": { @@ -169,6 +173,49 @@ "show": "نمایش نشانکهای بایگانیشده در برچسبها و فهرستها", "hide": "مخفیکردن نشانکهای بایگانیشده در برچسبها و فهرستها" } + }, + "reader_settings": { + "local_overrides_title": "تنظیمات مختص دستگاه فعال هستن", + "using_default": "در حال استفاده از پیشفرض مشتری", + "clear_override_hint": "پاک کردن لغو دستگاه برای استفاده از تنظیمات سراسری ({{value}})", + "font_size": "اندازه فونت", + "font_family": "خانواده فونت", + "preview_inline": "(پیشنمایش)", + "tooltip_preview": "تغییرات پیش نمایش ذخیره نشده", + "save_to_all_devices": "همه دستگاهها", + "tooltip_local": "تنظیمات دستگاه با تنظیمات سراسری فرق داره", + "reset_preview": "بازنشانی پیشنمایش", + "mono": "تکفاصله", + "line_height": "ارتفاع خط", + "tooltip_default": "تنظیمات خواندن", + "title": "تنظیمات خواننده", + "serif": "سریدار", + "preview": "پیشنمایش", + "not_set": "تنظیم نشده", + "clear_local_overrides": "تنظیمات دستگاه رو پاک کن", + "preview_text": "روباه قهوهای زرنگ از روی سگ تنبل میپره. متن قسمت خواننده اینجوری نمایش داده میشه.", + "local_overrides_cleared": "تنظیمات دستگاه پاک شدن", + "local_overrides_description": "این دستگاه تنظیمات خوانندهای داره که با تنظیمات پیشفرض کلیت فرق دارن:", + "clear_defaults": "همه پیشفرضها رو پاک کن", + "description": "تنظیم متن پیشفرض برای بخش خواننده رو پیکربندی کن. این تنظیمات با بقیه دستگاههات هماهنگ میشه.", + "defaults_cleared": "پیشفرضهای قسمت خواننده پاک شدن", + "save_hint": "ذخیره تنظیمات فقط برای این دستگاه یا همگام سازی بین همه دستگاه ها", + "save_as_default": "به عنوان پیشفرض ذخیره کن", + "save_to_device": "این دستگاه", + "sans": "بدون سری", + "tooltip_preview_and_local": "تغییرات پیشنمایش ذخیره نشده؛ تنظیمات دستگاه با تنظیمات کلی فرق داره", + "adjust_hint": "برای پیش نمایش تغییرات، تنظیمات بالا را تنظیم کنید" + }, + "avatar": { + "upload": "بارگذاری آواتار", + "change": "تغییر آواتار", + "remove_confirm_title": "آواتار حذف بشه؟", + "updated": "آواتار بهروز شد", + "removed": "آواتار حذف شد", + "description": "یه عکس مربع بارگذاری کن تا به عنوان آواتارت استفاده بشه.", + "remove_confirm_description": "این کار عکس پروفایل فعلیتو پاک میکنه.", + "title": "عکس پروفایل", + "remove": "حذف آواتار" } }, "user_settings": "تنظیمات کاربر", @@ -183,7 +230,21 @@ "text_prompt": "پرامپت متنی", "text_tagging": "برچسبگذاری متن", "summarization_prompt": "پرامپت خلاصهسازی", - "summarization": "خلاصهسازی" + "summarization": "خلاصهسازی", + "tag_style": "استایل برچسب", + "auto_summarization_description": "بهطور خودکار با استفاده از هوش مصنوعی برای نشانکهایت خلاصه تولید کن.", + "auto_tagging": "برچسبگذاری خودکار", + "titlecase_spaces": "حالت عنوان با فاصلهها", + "lowercase_underscores": "حروف کوچک با زیرخطها", + "inference_language": "زبان استنباطی", + "titlecase_hyphens": "حالت عنوان با خط تیره", + "lowercase_hyphens": "حروف کوچک با خط تیره", + "lowercase_spaces": "حروف کوچک با فاصلهها", + "inference_language_description": "زبانی را برای برچسبها و خلاصههای تولید شده توسط هوش مصنوعی انتخاب کنید.", + "tag_style_description": "انتخاب کنید که برچسبهای تولیدشده خودکار شما چگونه قالببندی شوند.", + "auto_tagging_description": "بهطور خودکار با استفاده از هوش مصنوعی برای نشانکهایت برچسب تولید کن.", + "camelCase": "camelCase", + "auto_summarization": "خلاصهسازی خودکار" }, "feeds": { "feed_enabled": "خوراک RSS فعال شد", @@ -214,6 +275,7 @@ "import_bookmarks_from_html_file": "درونریزی نشانکها از فایل HTML", "import_export_bookmarks": "درونریزی / برونبری نشانکها", "import_bookmarks_from_pocket_export": "درونریزی نشانکها از خروجی Pocket", + "import_bookmarks_from_matter_export": "درونریزی نشانکها از خروجی Matter", "import_bookmarks_from_omnivore_export": "درونریزی نشانکها از خروجی Omnivore", "import_bookmarks_from_linkwarden_export": "درونریزی نشانکها از خروجی Linkwarden", "import_bookmarks_from_tab_session_manager_export": "درونریزی نشانکها از Tab Session Manager", @@ -656,7 +718,14 @@ "is_not_from_feed": "از فید RSS نیست", "and": "و", "or": "یا", - "history": "جستجوهای اخیر" + "history": "جستجوهای اخیر", + "is_broken_link": "لینک خراب دارد", + "tags": "برچسبها", + "no_suggestions": "بدون پیشنهادها", + "filters": "فیلترها", + "is_not_broken_link": "لینک درست دارد", + "lists": "فهرستها", + "feeds": "فیدها" }, "preview": { "view_original": "مشاهدهی اصلی", @@ -665,7 +734,8 @@ "tabs": { "content": "محتوا", "details": "جزئیات" - } + }, + "archive_info": "ممکنه آرشیوها اگه نیاز به جاوااسکریپت داشته باشن، درست نشون داده نشن. برای بهترین نتیجه، <1>اونو دانلود و تو مرورگر بازش کن</1>." }, "editor": { "quickly_focus": "با فشردن ⌘ + E میتوانید به سرعت روی این فیلد تمرکز کنید", @@ -739,7 +809,8 @@ "refetch": "دوباره واکشی به صف اضافه شد!", "full_page_archive": "ایجاد بایگانی کامل صفحه آغاز شد", "delete_from_list": "نشانک از فهرست حذف شد", - "clipboard_copied": "لینک به کلیپبورد شما اضافه شد!" + "clipboard_copied": "لینک به کلیپبورد شما اضافه شد!", + "preserve_pdf": "نگهداری پیدیاف فعال شدهاست" }, "lists": { "created": "فهرست درست شد!", diff --git a/apps/web/lib/i18n/locales/fi/translation.json b/apps/web/lib/i18n/locales/fi/translation.json index 33717a24..06660ccd 100644 --- a/apps/web/lib/i18n/locales/fi/translation.json +++ b/apps/web/lib/i18n/locales/fi/translation.json @@ -39,7 +39,9 @@ "url": "URL", "quota": "Kiintiö", "bookmarks": "Kirjanmerkit", - "storage": "Tallennustila" + "storage": "Tallennustila", + "pdf": "Arkistoitu PDF", + "default": "Oletus" }, "layouts": { "masonry": "Tiililadonta", @@ -90,7 +92,9 @@ "confirm": "Vahvista", "regenerate": "Uudista", "load_more": "Lataa lisää", - "edit_notes": "Muokkaa muistiinpanoja" + "edit_notes": "Muokkaa muistiinpanoja", + "preserve_as_pdf": "Säilytä PDF-muodossa", + "offline_copies": "Offline-kopiot" }, "highlights": { "no_highlights": "Sulla ei oo vielä yhtään korostusta." @@ -119,6 +123,49 @@ "show": "Näytä arkistoidut kirjanmerkit tunnisteissa ja listoissa", "hide": "Piilota arkistoidut kirjanmerkit tunnisteissa ja listoissa" } + }, + "reader_settings": { + "local_overrides_title": "Laitteen omat asetukset ovat käytössä", + "using_default": "Käytetään asiakkaan oletusarvoa", + "clear_override_hint": "Tyhjennä laitteen ohitus, jotta voit käyttää globaalia asetusta ({{value}})", + "font_size": "Fonttikoko", + "font_family": "Fonttiperhe", + "preview_inline": "(esikatselu)", + "tooltip_preview": "Tallentamattomia esikatselun muutoksia", + "save_to_all_devices": "Kaikissa laitteissa", + "tooltip_local": "Laitteen asetukset poikkeavat globaaleista", + "reset_preview": "Nollaa esikatselu", + "mono": "Monospace", + "line_height": "Rivikorkeus", + "tooltip_default": "Lukemisen asetukset", + "title": "Lukijan asetukset", + "serif": "Serif", + "preview": "Esikatselu", + "not_set": "Ei asetettu", + "clear_local_overrides": "Tyhjennä laitteen asetukset", + "preview_text": "The quick brown fox jumps over the lazy dog. Näin lukijanäkymän tekstisi näkyy.", + "local_overrides_cleared": "Laitteen omat asetukset on tyhjennetty", + "local_overrides_description": "Tässä laitteessa on lukija-asetukset, jotka poikkeavat yleisistä oletusarvoistasi:", + "clear_defaults": "Tyhjennä kaikki oletusarvot", + "description": "Määritä lukijanäkymän oletustekstiasetukset. Nämä asetukset synkronoidaan kaikkien laitteidesi välillä.", + "defaults_cleared": "Lukijan oletusarvot on tyhjennetty", + "save_hint": "Tallenna asetukset vain tälle laitteelle tai synkronoi kaikkiin laitteisiin", + "save_as_default": "Tallenna oletusarvoksi", + "save_to_device": "Tällä laitteella", + "sans": "Sans Serif", + "tooltip_preview_and_local": "Tallentamattomia esikatselun muutoksia; laitteen asetukset poikkeavat globaaleista", + "adjust_hint": "Säädä yllä olevia asetuksia, jotta näet muutokset" + }, + "avatar": { + "upload": "Lataa avatar", + "change": "Vaihda avatar", + "remove_confirm_title": "Poistetaanko avatar?", + "updated": "Avatar päivitetty", + "removed": "Avatar poistettu", + "description": "Lataa neliön muotoinen kuva, jota käytetään avatarinasi.", + "remove_confirm_description": "Tämä poistaa nykyisen profiilikuvasi.", + "title": "Profiilikuva", + "remove": "Poista avatar" } }, "ai": { @@ -132,7 +179,21 @@ "all_tagging": "Kaikki tägääminen", "text_tagging": "Tekstin merkitseminen", "image_tagging": "Kuvien merkitseminen", - "summarization": "Yhteenvedon luonti" + "summarization": "Yhteenvedon luonti", + "tag_style": "Tagityyli", + "auto_summarization_description": "Luo kirjanmerkeillesi automaattisesti tiivistelmiä tekoälyn avulla.", + "auto_tagging": "Automaattinen tägääminen", + "titlecase_spaces": "Isot alkukirjaimet ja välilyönnit", + "lowercase_underscores": "Pienet kirjaimet ja alleviivat", + "inference_language": "Päättelykieli", + "titlecase_hyphens": "Isot alkukirjaimet ja yhdysmerkit", + "lowercase_hyphens": "Pienet kirjaimet ja yhdysmerkit", + "lowercase_spaces": "Pienet kirjaimet ja välilyönnit", + "inference_language_description": "Valitse kieli AI-generoiduille tunnisteille ja yhteenvedoille.", + "tag_style_description": "Valitse, miten automaattisesti luotujen tunnisteiden muoto tulisi olla.", + "auto_tagging_description": "Luo kirjanmerkeillesi automaattisesti tägejä tekoälyn avulla.", + "camelCase": "camelCase", + "auto_summarization": "Automaattinen tiivistys" }, "feeds": { "rss_subscriptions": "RSS-tilaukset", @@ -163,6 +224,7 @@ "import_export_bookmarks": "Kirjanmerkkien tuonti / vienti", "import_bookmarks_from_html_file": "Tuo kirjanmerkkejä HTML-tiedostosta", "import_bookmarks_from_pocket_export": "Tuo kirjanmerkit Pocket-viennistä", + "import_bookmarks_from_matter_export": "Tuo kirjanmerkit Matter-viennistä", "import_bookmarks_from_omnivore_export": "Tuo kirjanmerkit Omnivore-viennistä", "import_bookmarks_from_linkwarden_export": "Tuo kirjanmerkit Linkwarden-viennistä", "import_bookmarks_from_hoarder_export": "Tuo kirjanmerkit Hoarder-viennistä", @@ -681,7 +743,14 @@ "year_s_ago": " Vuosi(a) sitten", "history": "Viimeaikaiset haut", "title_contains": "Otsikko sisältää", - "title_does_not_contain": "Otsikko ei sisällä" + "title_does_not_contain": "Otsikko ei sisällä", + "is_broken_link": "On rikkinäinen linkki", + "tags": "Tunnisteet", + "no_suggestions": "Ei ehdotuksia", + "filters": "Suodattimet", + "is_not_broken_link": "On toimiva linkki", + "lists": "Listat", + "feeds": "Syötteet" }, "preview": { "view_original": "Näytä alkuperäinen", @@ -690,7 +759,8 @@ "tabs": { "content": "Sisältö", "details": "Tiedot" - } + }, + "archive_info": "Arkistot eivät välttämättä hahmotu oikein, jos ne vaativat Javascriptiä. Parhaan tuloksen saat, kun <1>lataat sen ja avaat sen selaimessasi</1>." }, "editor": { "quickly_focus": "Voit nopeasti kohdistaa tähän kenttään painamalla ⌘ + E", @@ -764,7 +834,8 @@ "refetch": "Uudelleennouto on jonossa!", "full_page_archive": "Koko sivun arkiston luonti on käynnistetty", "delete_from_list": "Kirjanmerkki on poistettu luettelosta", - "clipboard_copied": "Linkki on lisätty leikepöydälle!" + "clipboard_copied": "Linkki on lisätty leikepöydälle!", + "preserve_pdf": "PDF:nä säilytys on käynnistetty" }, "lists": { "created": "Lista on luotu!", diff --git a/apps/web/lib/i18n/locales/fr/translation.json b/apps/web/lib/i18n/locales/fr/translation.json index 3028d91d..94cb7b03 100644 --- a/apps/web/lib/i18n/locales/fr/translation.json +++ b/apps/web/lib/i18n/locales/fr/translation.json @@ -39,7 +39,9 @@ "summary": "Résumé", "quota": "Quota", "bookmarks": "Marque-pages", - "storage": "Stockage" + "storage": "Stockage", + "pdf": "PDF archivé", + "default": "Par défaut" }, "layouts": { "masonry": "Mosaïque", @@ -90,7 +92,9 @@ "confirm": "Confirmer", "regenerate": "Régénérer", "load_more": "En charger plus", - "edit_notes": "Modifier les notes" + "edit_notes": "Modifier les notes", + "preserve_as_pdf": "Conserver en PDF", + "offline_copies": "Copies hors ligne" }, "settings": { "back_to_app": "Retour à l'application", @@ -116,6 +120,49 @@ "open_external_url": "Ouvrir l’URL d’origine", "open_bookmark_details": "Ouvrir les détails du marque-page" } + }, + "reader_settings": { + "local_overrides_title": "Paramètres spécifiques à l’appareil actifs", + "using_default": "Utilisation des paramètres par défaut du client", + "clear_override_hint": "Effacer la substitution de l’appareil pour utiliser le paramètre général ({{value}})", + "font_size": "Taille de la police", + "font_family": "Famille de polices", + "preview_inline": "(aperçu)", + "tooltip_preview": "Modifications de l’aperçu non enregistrées", + "save_to_all_devices": "Tous les appareils", + "tooltip_local": "Les paramètres de l’appareil diffèrent des paramètres généraux", + "reset_preview": "Réinitialiser l’aperçu", + "mono": "Monospace", + "line_height": "Hauteur de ligne", + "tooltip_default": "Paramètres de lecture", + "title": "Paramètres du lecteur", + "serif": "Avec empattement", + "preview": "Aperçu", + "not_set": "Non défini", + "clear_local_overrides": "Effacer les paramètres de l’appareil", + "preview_text": "Le rapide renard brun saute par-dessus le chien paresseux. Voici comment apparaîtra le texte de votre affichage de lecteur.", + "local_overrides_cleared": "Les paramètres spécifiques à l’appareil ont été effacés", + "local_overrides_description": "Cet appareil a des paramètres de lecteur qui diffèrent de vos paramètres par défaut globaux :", + "clear_defaults": "Effacer toutes les valeurs par défaut", + "description": "Configurez les paramètres de texte par défaut pour l’affichage du lecteur. Ces paramètres sont synchronisés sur tous vos appareils.", + "defaults_cleared": "Les paramètres par défaut du lecteur ont été supprimés", + "save_hint": "Enregistrer les paramètres pour cet appareil uniquement ou synchroniser avec tous les appareils", + "save_as_default": "Enregistrer comme valeurs par défaut", + "save_to_device": "Cet appareil", + "sans": "Sans empattement", + "tooltip_preview_and_local": "Modifications de l’aperçu non enregistrées ; les paramètres de l’appareil diffèrent des paramètres généraux", + "adjust_hint": "Ajustez les paramètres ci-dessus pour prévisualiser les modifications" + }, + "avatar": { + "upload": "Téléverser un avatar", + "change": "Changer d’avatar", + "remove_confirm_title": "Supprimer l’avatar ?", + "updated": "Avatar mis à jour", + "removed": "Avatar supprimé", + "description": "Téléversez une image carrée à utiliser comme avatar.", + "remove_confirm_description": "Cela supprimera votre photo de profil actuelle.", + "title": "Photo de profil", + "remove": "Supprimer l’avatar" } }, "ai": { @@ -129,7 +176,21 @@ "all_tagging": "Tout le tagging", "text_tagging": "Balises de texte", "image_tagging": "Marquage d'image", - "summarization": "Résumer" + "summarization": "Résumer", + "tag_style": "Style des balises", + "auto_summarization_description": "Générez automatiquement des résumés pour vos favoris à l’aide de l’IA.", + "auto_tagging": "Attribution automatique de balises", + "titlecase_spaces": "Majuscule en début de mot avec espaces", + "lowercase_underscores": "Minuscules avec traits de soulignement", + "inference_language": "Langue d’inférence", + "titlecase_hyphens": "Majuscule en début de mot avec tirets", + "lowercase_hyphens": "Minuscules avec tirets", + "lowercase_spaces": "Minuscules avec espaces", + "inference_language_description": "Choisissez la langue pour les balises et les résumés générés par l’IA.", + "tag_style_description": "Choisissez le format de vos balises générées automatiquement.", + "auto_tagging_description": "Générez automatiquement des balises pour vos favoris à l’aide de l’IA.", + "camelCase": "camelCase", + "auto_summarization": "Résumés automatiques" }, "feeds": { "rss_subscriptions": "Abonnements RSS", @@ -142,6 +203,7 @@ "import_export_bookmarks": "Importer / Exporter des favoris", "import_bookmarks_from_html_file": "Importer des favoris depuis un fichier HTML", "import_bookmarks_from_pocket_export": "Importer des favoris depuis une exportation Pocket", + "import_bookmarks_from_matter_export": "Importer des favoris depuis une exportation Matter", "import_bookmarks_from_omnivore_export": "Importer des favoris depuis une exportation Omnivore", "import_bookmarks_from_karakeep_export": "Importer des favoris depuis une exportation Karakeep", "export_links_and_notes": "Exporter les liens et les notes", @@ -646,7 +708,8 @@ "tabs": { "details": "Détails", "content": "Contenu" - } + }, + "archive_info": "Les archives peuvent ne pas s'afficher correctement en ligne si elles nécessitent Javascript. Pour de meilleurs résultats, <1>téléchargez-les et ouvrez-les dans votre navigateur</1>." }, "editor": { "quickly_focus": "Vous pouvez rapidement vous concentrer sur ce champ en appuyant sur ⌘ + E", @@ -714,7 +777,8 @@ "refetch": "Re-fetch a été mis en file d'attente !", "full_page_archive": "La création de l'archive de la page complète a été déclenchée", "delete_from_list": "Le favori a été supprimé de la liste", - "clipboard_copied": "Le lien a été ajouté à votre presse-papiers !" + "clipboard_copied": "Le lien a été ajouté à votre presse-papiers !", + "preserve_pdf": "La conservation en PDF a été déclenchée" }, "lists": { "created": "La liste a été créée !", @@ -772,7 +836,14 @@ "year_s_ago": " Il y a {years} an(s)", "history": "Recherches récentes", "title_contains": "Le titre contient", - "title_does_not_contain": "Le titre ne contient pas" + "title_does_not_contain": "Le titre ne contient pas", + "is_broken_link": "A un lien brisé", + "tags": "Balises", + "no_suggestions": "Pas de suggestions", + "filters": "Filtres", + "is_not_broken_link": "A un lien fonctionnel", + "lists": "Listes", + "feeds": "Flux" }, "dialogs": { "bookmarks": { diff --git a/apps/web/lib/i18n/locales/ga/translation.json b/apps/web/lib/i18n/locales/ga/translation.json index abf4ecaf..b132ca45 100644 --- a/apps/web/lib/i18n/locales/ga/translation.json +++ b/apps/web/lib/i18n/locales/ga/translation.json @@ -39,7 +39,9 @@ }, "quota": "Cuóta", "bookmarks": "Leabhair mharcála", - "storage": "Stóráil" + "storage": "Stóráil", + "pdf": "PDF Cartlainne", + "default": "Réamhshocrú" }, "actions": { "close": "Dún", @@ -84,7 +86,9 @@ "confirm": "Deimhnigh", "regenerate": "Athghinigh", "load_more": "Luchtaigh Níos Mó", - "edit_notes": "Nótaí a Chur in Eagar" + "edit_notes": "Nótaí a Chur in Eagar", + "preserve_as_pdf": "Caomhnaigh mar PDF", + "offline_copies": "Cóipeanna As Líne" }, "settings": { "ai": { @@ -98,7 +102,21 @@ "all_tagging": "Gach Clibeáil", "text_tagging": "Clibeáil Téacs", "image_tagging": "Clibeáil Íomhá", - "summarization": "Achoimre" + "summarization": "Achoimre", + "tag_style": "Stíl Clibe", + "auto_summarization_description": "Achoimrí a ghiniúint go huathoibríoch do do leabharmharcanna ag úsáid AI.", + "auto_tagging": "Uathchlibeáil", + "titlecase_spaces": "Cás teidil le spásanna", + "lowercase_underscores": "Cás íseal le fostríocaí", + "inference_language": "Teanga Inbhainte", + "titlecase_hyphens": "Cás teidil le fleiscíní", + "lowercase_hyphens": "Cás íseal le fleiscíní", + "lowercase_spaces": "Cás íseal le spásanna", + "inference_language_description": "Roghnaigh teanga do chlibeanna agus achoimrí arna nginiúint ag AI.", + "tag_style_description": "Roghnaigh conas ar cheart do chlibeanna uathghinte a bheith formáidithe.", + "auto_tagging_description": "Clibeanna a ghiniúint go huathoibríoch do do leabharmharcanna ag úsáid AI.", + "camelCase": "camelCase", + "auto_summarization": "Uathachoimriú" }, "webhooks": { "webhooks": "Crúcaí Gréasáin", @@ -210,6 +228,49 @@ "show": "Taispeáin leabhair mharcáilte atá cartlannaithe i gclibeanna agus i liostaí", "hide": "Folaigh leabharmharcanna cartlannaithe i gclibeanna agus i liostaí" } + }, + "reader_settings": { + "local_overrides_title": "Socruithe gléas-sonracha gníomhach", + "using_default": "Ag baint úsáide as réamhshocrú an chliaint", + "clear_override_hint": "Glan sárú gléis chun socrú ginearálta a úsáid ({{value}})", + "font_size": "Méid Cló", + "font_family": "Cló-Aicme", + "preview_inline": "(réamhamharc)", + "tooltip_preview": "Athruithe réamhamhairc neamhshábháilte", + "save_to_all_devices": "Gach gléas", + "tooltip_local": "Tá socruithe gléis difriúil ó shocruithe ginearálta", + "reset_preview": "Athshocraigh réamhamharc", + "mono": "Monaspás", + "line_height": "Airde Líne", + "tooltip_default": "Socruithe léitheoireachta", + "title": "Socruithe Léitheora", + "serif": "Searif", + "preview": "Réamhamharc", + "not_set": "Níl sé socraithe", + "clear_local_overrides": "Glan socruithe gléis", + "preview_text": "Léimeann an sionnach rua tapa thar an madra leisciúil. Seo an chuma a bheidh ar théacs do radhairc léitheora.", + "local_overrides_cleared": "Tá socruithe gléas-sonracha glanta", + "local_overrides_description": "Tá socruithe léitheora ag an ngléas seo atá difriúil ó do réamhshocruithe domhanda:", + "clear_defaults": "Glan gach réamhshocrú", + "description": "Cumraigh socruithe téacs réamhshocraithe do radharc an léitheora. Déantar na socruithe seo a shioncronú ar fud do ghléasanna go léir.", + "defaults_cleared": "Tá réamhshocruithe léitheora glanta", + "save_hint": "Sábháil socruithe don ghléas seo amháin nó sioncronaigh ar gach gléas", + "save_as_default": "Sábháil mar réamhshocrú", + "save_to_device": "An gléas seo", + "sans": "Sans Searif", + "tooltip_preview_and_local": "Athruithe réamhamhairc neamhshábháilte; tá socruithe gléis difriúil ó shocruithe ginearálta", + "adjust_hint": "Coigeartaigh na socruithe thuas chun athruithe a réamhamharc" + }, + "avatar": { + "upload": "Uaslódáil avatar", + "change": "Athraigh avatar", + "remove_confirm_title": "Bain avatar?", + "updated": "Nuashonraíodh avatar", + "removed": "Baineadh avatar", + "description": "Uaslódáil íomhá chearnach le húsáid mar avatar.", + "remove_confirm_description": "Glanfaidh sé seo an grianghraf próifíle atá agat faoi láthair.", + "title": "Grianghraf Próifíle", + "remove": "Bain avatar" } }, "feeds": { @@ -223,6 +284,7 @@ "import_export_bookmarks": "Iompórtáil / Easpórtáil Leabharmharcanna", "import_bookmarks_from_html_file": "Iompórtáil Leabharmharcanna ó chomhad HTML", "import_bookmarks_from_pocket_export": "Iompórtáil Leabharmharcanna ó onnmhairiú Pocket", + "import_bookmarks_from_matter_export": "Iompórtáil Leabharmharcanna ó onnmhairiú Matter", "import_bookmarks_from_omnivore_export": "Iompórtáil Leabharcmharcanna ó onnmhairiú Omnivore", "import_bookmarks_from_linkwarden_export": "Iompórtáil Leabharmharcanna ó onnmhairiú Linkwarden", "import_bookmarks_from_karakeep_export": "Iompórtáil Leabharmharcanna ó onnmhairiú Karakeep", @@ -537,7 +599,14 @@ "or": "Nó", "history": "Cuardaigh Déanaí", "title_contains": "Tá Teideal I Láthair", - "title_does_not_contain": "Níl Teideal I Láthair" + "title_does_not_contain": "Níl Teideal I Láthair", + "is_broken_link": "Tá Nasc Briste Ann", + "tags": "Clibeanna", + "no_suggestions": "Níl moltaí ar bith ann", + "filters": "Scagairí", + "is_not_broken_link": "Tá Nasc Oibre Ann", + "lists": "Liostaí", + "feeds": "Fothaí" }, "editor": { "disabled_submissions": "Tá aighneachtaí díchumasaithe", @@ -605,7 +674,8 @@ "refetch": "Cuireadh atógáil sa scuaine!", "full_page_archive": "Tá cruthú Cartlainne Leathanach Iomlán tosaithe", "delete_from_list": "Scriosadh an leabharmharc ón liosta", - "clipboard_copied": "Tá an nasc curtha le do ghearrthaisce!" + "clipboard_copied": "Tá an nasc curtha le do ghearrthaisce!", + "preserve_pdf": "Tá caomhnú PDF tosaithe" }, "lists": { "created": "Cruthaíodh liosta!", @@ -778,7 +848,8 @@ "tabs": { "content": "Ábhar", "details": "Sonraí" - } + }, + "archive_info": "Seans nach ndéanfaidh cartlanna rindreáil i gceart inline má tá Javascript ag teastáil uathu. Chun na torthaí is fearr a fháil, <1>íoslódáil é agus oscail i do bhrabhsálaí</1>." }, "dialogs": { "bookmarks": { diff --git a/apps/web/lib/i18n/locales/gl/translation.json b/apps/web/lib/i18n/locales/gl/translation.json index 40dcc3a6..9fe11f1a 100644 --- a/apps/web/lib/i18n/locales/gl/translation.json +++ b/apps/web/lib/i18n/locales/gl/translation.json @@ -39,7 +39,9 @@ "summary": "Resumo", "quota": "Cota", "bookmarks": "Marcadores", - "storage": "Almacenamento" + "storage": "Almacenamento", + "pdf": "PDF Arquivado", + "default": "Predeterminado" }, "actions": { "favorite": "Marcar como favorito", @@ -84,7 +86,9 @@ "confirm": "Confirmar", "regenerate": "Rexenerar", "load_more": "Cargar máis", - "edit_notes": "Editar notas" + "edit_notes": "Editar notas", + "preserve_as_pdf": "Gardar como PDF", + "offline_copies": "Copias sen conexión" }, "tags": { "drag_and_drop_merging_info": "Arrastra e solta etiquetas sobre outras para unilas", @@ -117,7 +121,8 @@ "refetch": "Solicitouse a actualización!", "full_page_archive": "Pediuse un Arquivo de Páxina Completa", "delete_from_list": "O marcador borrouse da lista", - "clipboard_copied": "A ligazón copiouse no teu portapapeis!" + "clipboard_copied": "A ligazón copiouse no teu portapapeis!", + "preserve_pdf": "Activouse a preservación en PDF" }, "lists": { "updated": "A lista foi actualizada!", @@ -149,6 +154,7 @@ "import_export_bookmarks": "Importar / Exportar marcadores", "import_bookmarks_from_html_file": "Importar marcadores desde arquivo HTML", "import_bookmarks_from_pocket_export": "Importar marcadores desde Pocket", + "import_bookmarks_from_matter_export": "Importar marcadores desde Matter", "import_bookmarks_from_omnivore_export": "Importar marcadores desde Omnivore", "import_bookmarks_from_linkwarden_export": "Importar marcadores desde Linkwarden", "import_bookmarks_from_karakeep_export": "Importar marcadores desde Karakeep", @@ -180,6 +186,49 @@ "show": "Mostrar os marcadores arquivados en etiquetas e listas", "hide": "Ocultar os marcadores arquivados en etiquetas e listas" } + }, + "reader_settings": { + "local_overrides_title": "Axustes específicos do dispositivo activos", + "using_default": "Usando o predeterminado do cliente", + "clear_override_hint": "Limpa a anulación do dispositivo para usar a configuración global ({{value}})", + "font_size": "Tamaño da letra", + "font_family": "Familia tipográfica", + "preview_inline": "(vista previa)", + "tooltip_preview": "Cambios da vista previa sen gardar", + "save_to_all_devices": "Todos os dispositivos", + "tooltip_local": "Os axustes do dispositivo difiren dos globais", + "reset_preview": "Restabelecer a vista previa", + "mono": "Monoespazo", + "line_height": "Alto de liña", + "tooltip_default": "Axustes de lectura", + "title": "Axustes do Reader", + "serif": "Con serifas", + "preview": "Vista previa", + "not_set": "Sen axustar", + "clear_local_overrides": "Eliminar axustes do dispositivo", + "preview_text": "A raposa marrón rápida salta sobre o can preguiceiro. Así é como aparecerá o texto da vista do lector.", + "local_overrides_cleared": "Elimináronse os axustes específicos do dispositivo", + "local_overrides_description": "Este dispositivo ten parámetros de lector que difieren dos teus predeterminados globais:", + "clear_defaults": "Borrar todos os predeterminados", + "description": "Configure os axustes de texto predeterminados para a vista do lector. Estes axustes sincronízanse en todos os teus dispositivos.", + "defaults_cleared": "Elimináronse os valores predeterminados do lector", + "save_hint": "Garda os axustes só para este dispositivo ou sincronízaos en todos os dispositivos", + "save_as_default": "Gardar como predeterminado", + "save_to_device": "Este dispositivo", + "sans": "Sen serifas", + "tooltip_preview_and_local": "Cambios da vista previa sen gardar; os axustes do dispositivo difiren dos globais", + "adjust_hint": "Axusta os axustes de arriba para previsualizar os cambios" + }, + "avatar": { + "upload": "Subir avatar", + "change": "Cambiar o avatar", + "remove_confirm_title": "Queres eliminar o avatar?", + "updated": "Avatar actualizado", + "removed": "Avatar eliminado", + "description": "Sube unha imaxe cadrada para usar como avatar.", + "remove_confirm_description": "Isto borrará a túa foto de perfil actual.", + "title": "Foto de perfil", + "remove": "Eliminar o avatar" } }, "ai": { @@ -193,7 +242,21 @@ "all_tagging": "Todas as etiquetas", "text_tagging": "Etiquetaxe de texto", "image_tagging": "Etiquetaxe de imaxes", - "summarization": "Resumo" + "summarization": "Resumo", + "tag_style": "Estilo da etiqueta", + "auto_summarization_description": "Xera automaticamente resumos para os teus marcadores usando a intelixencia artificial.", + "auto_tagging": "Etiquetado automático", + "titlecase_spaces": "Maiúsculas e minúsculas con espazos", + "lowercase_underscores": "Minúsculas con guións baixos", + "inference_language": "Linguaxe dedución", + "titlecase_hyphens": "Maiúsculas só na primeira palabra con guións", + "lowercase_hyphens": "Minúsculas con guións", + "lowercase_spaces": "Minúsculas con espazos", + "inference_language_description": "Elixe a lingua para as etiquetas e os resumos xerados pola IA.", + "tag_style_description": "Elixe como se deben formatar as etiquetas xeradas automaticamente.", + "auto_tagging_description": "Xera automaticamente etiquetas para os teus marcadores usando a intelixencia artificial.", + "camelCase": "camelCase (a primeira palabra en minúsculas e as seguintes en maiúsculas)", + "auto_summarization": "Resumo automático" }, "feeds": { "rss_subscriptions": "Subscricións RSS", @@ -676,7 +739,8 @@ "tabs": { "content": "Contido", "details": "Detalles" - } + }, + "archive_info": "É posible que os arquivos non se representen correctamente en liña se requiren Javascript. Para obter os mellores resultados, <1>descárgueo e ábreo no navegador</1>." }, "editor": { "quickly_focus": "Podes enfocar este campo pulsando ⌘ + E", @@ -775,7 +839,14 @@ "year_s_ago": " Hai anos", "history": "Buscas recentes", "title_contains": "O título contén", - "title_does_not_contain": "O título non contén" + "title_does_not_contain": "O título non contén", + "is_broken_link": "Ten Ligazón Rota", + "tags": "Etiquetas", + "no_suggestions": "Sen suxestións", + "filters": "Filtros", + "is_not_broken_link": "Ten Ligazón Válida", + "lists": "Listas", + "feeds": "Fontes" }, "dialogs": { "bookmarks": { diff --git a/apps/web/lib/i18n/locales/hr/translation.json b/apps/web/lib/i18n/locales/hr/translation.json index bd7a7a9d..7ef093d0 100644 --- a/apps/web/lib/i18n/locales/hr/translation.json +++ b/apps/web/lib/i18n/locales/hr/translation.json @@ -175,7 +175,9 @@ "summary": "Sažetak", "quota": "Kvota", "bookmarks": "Oznake", - "storage": "Pohrana" + "storage": "Pohrana", + "pdf": "Arhivirani PDF", + "default": "Zadano" }, "settings": { "ai": { @@ -189,7 +191,21 @@ "text_tagging": "Označavanje teksta", "image_tagging": "Označavanje slika", "summarization": "Sažetak", - "all_tagging": "Sve oznake" + "all_tagging": "Sve oznake", + "tag_style": "Stil oznake", + "auto_summarization_description": "Automatski generiraj sažetke za svoje knjižne oznake pomoću AI-ja.", + "auto_tagging": "Automatsko označavanje", + "titlecase_spaces": "Veliko početno slovo s razmacima", + "lowercase_underscores": "Mala slova s podvlakama", + "inference_language": "Jezik zaključka", + "titlecase_hyphens": "Veliko početno slovo s crticama", + "lowercase_hyphens": "Mala slova s crticama", + "lowercase_spaces": "Mala slova s razmacima", + "inference_language_description": "Odaberi jezik za oznake i sažetke generirane pomoću AI-a.", + "tag_style_description": "Odaberi kako će tvoje automatski generirane oznake biti formatirane.", + "auto_tagging_description": "Automatski generiraj oznake za svoje knjižne oznake pomoću AI-ja.", + "camelCase": "camelCase", + "auto_summarization": "Automatsko sažimanje" }, "import": { "import_bookmarks_from_html_file": "Import knjižnih oznaka iz HTML datoteke", @@ -197,6 +213,7 @@ "import_export_bookmarks": "Import / Export knjižnih oznaka", "import_bookmarks_from_linkwarden_export": "Import oznaka iz Linkwarden exporta", "import_bookmarks_from_pocket_export": "Import oznaka iz Pocket exporta", + "import_bookmarks_from_matter_export": "Import oznaka iz Matter exporta", "import_bookmarks_from_karakeep_export": "Import oznaka iz Karakeep exporta", "export_links_and_notes": "Export veza i bilješki", "imported_bookmarks": "Importirane oznake", @@ -227,6 +244,49 @@ "show": "Prikaži arhivirane oznake u oznakama i popisima", "hide": "Sakrij arhivirane oznake u oznakama i popisima" } + }, + "reader_settings": { + "local_overrides_title": "Aktivne postavke specifične za uređaj", + "using_default": "Korištenje zadanih postavki klijenta", + "clear_override_hint": "Obriši nadjačavanje uređaja za korištenje globalne postavke ({{value}})", + "font_size": "Veličina fonta", + "font_family": "Vrsta fonta", + "preview_inline": "(pregled)", + "tooltip_preview": "Nespremljene promjene pregleda", + "save_to_all_devices": "Svi uređaji", + "tooltip_local": "Postavke uređaja razlikuju se od globalnih", + "reset_preview": "Resetiraj pregled", + "mono": "Monospace", + "line_height": "Visina retka", + "tooltip_default": "Postavke čitanja", + "title": "Postavke čitača", + "serif": "Serif", + "preview": "Pregled", + "not_set": "Nije postavljeno", + "clear_local_overrides": "Očisti postavke uređaja", + "preview_text": "Smeđi lisac brzo skače preko lijenog psa. Ovako će izgledati tekst u prikazu čitača.", + "local_overrides_cleared": "Postavke specifične za uređaj su očišćene", + "local_overrides_description": "Ovaj uređaj ima postavke čitanja koje se razlikuju od tvojih globalnih zadanih postavki:", + "clear_defaults": "Očisti sve zadane vrijednosti", + "description": "Konfiguriraj zadane postavke teksta za prikaz čitača. Ove se postavke sinkroniziraju na svim tvojim uređajima.", + "defaults_cleared": "Zadane postavke čitača su očišćene", + "save_hint": "Spremi postavke samo za ovaj uređaj ili sinkroniziraj na svim uređajima", + "save_as_default": "Spremi kao zadane", + "save_to_device": "Ovaj uređaj", + "sans": "Sans Serif", + "tooltip_preview_and_local": "Nespremljene promjene pregleda; postavke uređaja razlikuju se od globalnih", + "adjust_hint": "Prilagodite postavke iznad za pregled promjena" + }, + "avatar": { + "upload": "Učitaj avatar", + "change": "Promijeni avatar", + "remove_confirm_title": "Ukloniti avatar?", + "updated": "Avatar ažuriran", + "removed": "Avatar uklonjen", + "description": "Učitaj kvadratnu sliku koju ćeš koristiti kao avatar.", + "remove_confirm_description": "Ovim ćeš ukloniti trenutnu fotku profila.", + "title": "Fotka profila", + "remove": "Ukloni avatar" } }, "api_keys": { @@ -523,7 +583,9 @@ "confirm": "Potvrdi", "regenerate": "Ponovo stvori", "load_more": "Učitaj više", - "edit_notes": "Uredi bilješke" + "edit_notes": "Uredi bilješke", + "preserve_as_pdf": "Spremi kao PDF", + "offline_copies": "Izvanmrežne kopije" }, "highlights": { "no_highlights": "Još nemate nijednu istaknutu stavku." @@ -649,7 +711,8 @@ "tabs": { "content": "Sadržaj", "details": "Detalji" - } + }, + "archive_info": "Arhive se možda neće ispravno prikazati inline ako zahtijevaju Javascript. Za najbolje rezultate, <1>preuzmite ih i otvorite u svom pregledniku</1>." }, "editor": { "quickly_focus": "Možete brzo fokusirati ovo polje pritiskanjem ⌘ + E", @@ -717,7 +780,8 @@ "refetch": "Ponovno preuzimanje je stavljeno u čekanje!", "full_page_archive": "Pokrenuto je stvaranje potpune arhive stranice", "delete_from_list": "Oznaka je izbrisana s popisa", - "clipboard_copied": "Veza je dodana u vaš međuspremnik!" + "clipboard_copied": "Veza je dodana u vaš međuspremnik!", + "preserve_pdf": "Spremanje u PDF formatu je pokrenuto" }, "lists": { "created": "Popis je kreiran!", @@ -775,7 +839,14 @@ "year_s_ago": " Godina(e) prije", "history": "Nedavne pretrage", "title_contains": "Naslov sadrži", - "title_does_not_contain": "Naslov ne sadrži" + "title_does_not_contain": "Naslov ne sadrži", + "is_broken_link": "Ima pokvareni link", + "tags": "Oznake", + "no_suggestions": "Nema prijedloga", + "filters": "Filtri", + "is_not_broken_link": "Ima radni link", + "lists": "Popisi", + "feeds": "Kanali" }, "dialogs": { "bookmarks": { diff --git a/apps/web/lib/i18n/locales/hu/translation.json b/apps/web/lib/i18n/locales/hu/translation.json index 72439434..1399e4a8 100644 --- a/apps/web/lib/i18n/locales/hu/translation.json +++ b/apps/web/lib/i18n/locales/hu/translation.json @@ -42,7 +42,9 @@ "confirm": "Megerősít", "regenerate": "Újragenerálás", "load_more": "Továbbiak betöltése", - "edit_notes": "Jegyzetek szerkesztése" + "edit_notes": "Jegyzetek szerkesztése", + "preserve_as_pdf": "Mentés PDF-ként", + "offline_copies": "Offline példányok" }, "settings": { "user_settings": "Felhasználói beállítások", @@ -73,6 +75,49 @@ "show": "Archivált könyvjelzők megjelenítése címkékben és listákban", "hide": "Archivált könyvjelzők elrejtése címkékben és listákban" } + }, + "reader_settings": { + "local_overrides_title": "Eszközspecifikus beállítások aktívak", + "using_default": "Ügyfél alapértelmezettjének használata", + "clear_override_hint": "Eszközfelülírás törlése a globális beállítás ({{value}}) használatához", + "font_size": "Betűméret", + "font_family": "Betűtípus családja", + "preview_inline": "(előnézet)", + "tooltip_preview": "El nem mentett előnézeti módosítások", + "save_to_all_devices": "Minden eszköz", + "tooltip_local": "Az eszköz beállításai eltérnek a globálistól", + "reset_preview": "Előnézet visszaállítása", + "mono": "Monospace", + "line_height": "Sortávolság", + "tooltip_default": "Olvasási beállítások", + "title": "Olvasó beállításai", + "serif": "Serif", + "preview": "Előnézet", + "not_set": "Nincs beállítva", + "clear_local_overrides": "Eszközbeállítások törlése", + "preview_text": "A gyors barna róka átugorja a lusta kutyát. Így fog megjelenni az olvasónézeti szöveg.", + "local_overrides_cleared": "Az eszközspecifikus beállítások törölve lettek", + "local_overrides_description": "Ennek az eszköznek az olvasási beállításai eltérnek a globális alapértelmezésektől:", + "clear_defaults": "Összes alapértelmezett törlése", + "description": "Az olvasónézet alapértelmezett szövegbeállításainak konfigurálása. Ezek a beállítások szinkronizálva vannak az összes eszközén.", + "defaults_cleared": "Az olvasó alapértelmezései törölve", + "save_hint": "Beállítások mentése csak ehhez az eszközhöz, vagy szinkronizálás minden eszközre", + "save_as_default": "Mentés alapértelmezettként", + "save_to_device": "Ez az eszköz", + "sans": "Sans Serif", + "tooltip_preview_and_local": "El nem mentett előnézeti módosítások; az eszköz beállításai eltérnek a globálistól", + "adjust_hint": "A módosítások előnézetéhez állítsa be a fenti beállításokat" + }, + "avatar": { + "upload": "Avatár feltöltése", + "change": "Avatár módosítása", + "remove_confirm_title": "Avatár eltávolítása?", + "updated": "Avatár frissítve", + "removed": "Avatár eltávolítva", + "description": "Tölts fel egy négyzet alakú képet, amit avatárként használhatsz.", + "remove_confirm_description": "Ezzel törlöd a jelenlegi profilképed.", + "title": "Profilkép", + "remove": "Avatár eltávolítása" } }, "webhooks": { @@ -104,7 +149,21 @@ "images_prompt": "Utasítás képpel", "text_tagging": "Szöveg címkézés", "image_tagging": "Kép címkézés", - "summarization": "Összesítés" + "summarization": "Összesítés", + "tag_style": "Címke stílusa", + "auto_summarization_description": "A MI használatával automatikusan összefoglalókat generálhatsz a könyvjelzőidhez.", + "auto_tagging": "Automatikus címkézés", + "titlecase_spaces": "Címzett nagybetűs, szóközökkel", + "lowercase_underscores": "Kisbetűs, aláhúzásokkal", + "inference_language": "Következtetési nyelv", + "titlecase_hyphens": "Címzett nagybetűs, kötőjelekkel", + "lowercase_hyphens": "Kisbetűs, kötőjelekkel", + "lowercase_spaces": "Kisbetűs, szóközökkel", + "inference_language_description": "Válaszd ki az AI által generált címkék és összefoglalók nyelvét.", + "tag_style_description": "Válaszd ki, hogyan legyenek formázva az automatikusan létrehozott címkék.", + "auto_tagging_description": "A MI használatával automatikusan címkéket generálhatsz a könyvjelzőidhez.", + "camelCase": "camelCase", + "auto_summarization": "Automatikus összefoglalás" }, "api_keys": { "new_api_key": "Új API kulcs", @@ -125,6 +184,7 @@ "import_export_bookmarks": "Könyvjelző importálása / exportálása", "import_bookmarks_from_html_file": "Könyvjelző importálása HTML fájlból", "import_bookmarks_from_pocket_export": "Könyvjelző importálása Pocket-ből", + "import_bookmarks_from_matter_export": "Könyvjelző importálása Matter-ből", "import_bookmarks_from_linkwarden_export": "Könyvjelző importálása Linkwarden-ből", "export_links_and_notes": "Jegyzetek és hivatkozások exportálása", "imported_bookmarks": "Importált könyvjelzők", @@ -387,7 +447,9 @@ "summary": "Összegzés", "quota": "Keret", "bookmarks": "Könyvjelzők", - "storage": "Tárhely" + "storage": "Tárhely", + "pdf": "Archivált PDF", + "default": "Alapértelmezett" }, "editor": { "import_as_text": "Importálás szöveges könyvjelzőként", @@ -486,7 +548,14 @@ "year_s_ago": " Év(ek)kel ezelőtt", "history": "Legutóbbi keresések", "title_contains": "A cím tartalmazza", - "title_does_not_contain": "A cím nem tartalmazza" + "title_does_not_contain": "A cím nem tartalmazza", + "is_broken_link": "Van hibás link", + "tags": "Címkék", + "no_suggestions": "Nincsenek javaslatok", + "filters": "Szűrők", + "is_not_broken_link": "Van működő link", + "lists": "Listák", + "feeds": "Hírcsatornák" }, "lists": { "manual_list": "Manuális lista", @@ -745,7 +814,8 @@ "tabs": { "content": "Tartalom", "details": "Részletek" - } + }, + "archive_info": "Lehetséges, hogy a JavaScriptet igénylő archívumok nem jelennek meg helyesen beágyazva. A legjobb eredmény érdekében <1>töltsd le és nyisd meg a böngésződben</1>." }, "dialogs": { "bookmarks": { @@ -760,7 +830,8 @@ "refetch": "Újra begyűjtés beütemezve!", "full_page_archive": "Minden oldal lecserélése beütemezésre került", "delete_from_list": "A könyvjelző törlődött a listából", - "clipboard_copied": "A hivatkozás kimásolva a memóriába!" + "clipboard_copied": "A hivatkozás kimásolva a memóriába!", + "preserve_pdf": "A PDF archiválás elindult." }, "lists": { "created": "A hivatkozás létrejött!", diff --git a/apps/web/lib/i18n/locales/it/translation.json b/apps/web/lib/i18n/locales/it/translation.json index f154466d..d7fa773d 100644 --- a/apps/web/lib/i18n/locales/it/translation.json +++ b/apps/web/lib/i18n/locales/it/translation.json @@ -42,7 +42,9 @@ "confirm": "Conferma", "regenerate": "Rigenera", "load_more": "Carica altro", - "edit_notes": "Modifica note" + "edit_notes": "Modifica note", + "preserve_as_pdf": "Salva come PDF", + "offline_copies": "Copie offline" }, "common": { "attachments": "Allegati", @@ -84,7 +86,9 @@ "summary": "Riepilogo", "quota": "Quota", "bookmarks": "Segnalibri", - "storage": "Archiviazione" + "storage": "Archiviazione", + "pdf": "PDF archiviato", + "default": "Predefinito" }, "settings": { "broken_links": { @@ -114,6 +118,49 @@ "show": "Mostra i segnalibri archiviati in tag e liste", "hide": "Nascondi i segnalibri archiviati in tag e liste" } + }, + "reader_settings": { + "local_overrides_title": "Impostazioni specifiche del dispositivo attive", + "using_default": "Utilizzo predefinito del client", + "clear_override_hint": "Cancella la sostituzione del dispositivo per utilizzare l'impostazione globale ({{value}})", + "font_size": "Dimensione del font", + "font_family": "Famiglia di caratteri", + "preview_inline": "(anteprima)", + "tooltip_preview": "Modifiche all'anteprima non salvate", + "save_to_all_devices": "Tutti i dispositivi", + "tooltip_local": "Le impostazioni del dispositivo differiscono da quelle globali", + "reset_preview": "Ripristina l'anteprima", + "mono": "Monospace", + "line_height": "Altezza della linea", + "tooltip_default": "Impostazioni di lettura", + "title": "Impostazioni lettore", + "serif": "Serif", + "preview": "Anteprima", + "not_set": "Non impostato", + "clear_local_overrides": "Cancella impostazioni del dispositivo", + "preview_text": "The quick brown fox jumps over the lazy dog. Ecco come apparirà il testo nella visualizzazione del lettore.", + "local_overrides_cleared": "Le impostazioni specifiche del dispositivo sono state cancellate", + "local_overrides_description": "Questo dispositivo ha impostazioni del lettore diverse da quelle predefinite globali:", + "clear_defaults": "Cancella tutti i predefiniti", + "description": "Configura le impostazioni di testo predefinite per la visualizzazione del lettore. Queste impostazioni si sincronizzano su tutti i tuoi dispositivi.", + "defaults_cleared": "Le impostazioni predefinite del lettore sono state cancellate", + "save_hint": "Salva le impostazioni solo per questo dispositivo o sincronizza su tutti i dispositivi", + "save_as_default": "Salva come predefinito", + "save_to_device": "Questo dispositivo", + "sans": "Sans Serif", + "tooltip_preview_and_local": "Modifiche all'anteprima non salvate; le impostazioni del dispositivo differiscono da quelle globali", + "adjust_hint": "Regola le impostazioni sopra per visualizzare l'anteprima delle modifiche" + }, + "avatar": { + "upload": "Carica avatar", + "change": "Cambia avatar", + "remove_confirm_title": "Rimuovere l'avatar?", + "updated": "Avatar aggiornato", + "removed": "Avatar rimosso", + "description": "Carica un'immagine quadrata da usare come avatar.", + "remove_confirm_description": "Ehm... rimuoverai la tua attuale foto del profilo.", + "title": "Foto profilo", + "remove": "Rimuovi avatar" } }, "back_to_app": "Torna all'App", @@ -129,7 +176,21 @@ "image_tagging": "Tagging immagini", "text_tagging": "Tagging testo", "all_tagging": "Tutte le etichette", - "summarization": "Riassunto" + "summarization": "Riassunto", + "tag_style": "Stile etichetta", + "auto_summarization_description": "Genera automaticamente riassunti per i tuoi segnalibri usando l'AI.", + "auto_tagging": "Tagging automatico", + "titlecase_spaces": "Maiuscola con spazi", + "lowercase_underscores": "Minuscolo con trattini bassi", + "inference_language": "Lingua di inferenza", + "titlecase_hyphens": "Maiuscola con trattini", + "lowercase_hyphens": "Minuscolo con trattini", + "lowercase_spaces": "Minuscolo con spazi", + "inference_language_description": "Scegli la lingua per i tag e i riepiloghi generati dall'AI.", + "tag_style_description": "Scegli come formattare le etichette generate automaticamente.", + "auto_tagging_description": "Genera automaticamente i tag per i tuoi segnalibri usando l'AI.", + "camelCase": "camelCase", + "auto_summarization": "Riassunto automatico" }, "feeds": { "rss_subscriptions": "Iscrizione RSS", @@ -140,6 +201,7 @@ "import": { "import_export": "Importa / Esporta", "import_bookmarks_from_pocket_export": "Importa segnalibri da esportazione Pocket", + "import_bookmarks_from_matter_export": "Importa segnalibri da esportazione Matter", "import_bookmarks_from_karakeep_export": "Importa segnalibri da esportazione Karakeep", "export_links_and_notes": "Esporta link e note", "imported_bookmarks": "Segnalibri importati", @@ -705,7 +767,8 @@ "tabs": { "content": "Contenuto", "details": "Dettagli" - } + }, + "archive_info": "Gli archivi potrebbero non essere visualizzati correttamente in linea se richiedono Javascript. Per risultati ottimali, <1>scaricalo e aprilo nel tuo browser</1>." }, "toasts": { "bookmarks": { @@ -714,7 +777,8 @@ "refetch": "L'aggiornamento è stato messo in coda!", "full_page_archive": "L'archivio della pagina completa è stato attivato", "delete_from_list": "Il segnalibro è stato eliminato dalla lista", - "clipboard_copied": "Il link è stato copiato!" + "clipboard_copied": "Il link è stato copiato!", + "preserve_pdf": "È stato attivato il salvataggio in PDF" }, "lists": { "created": "Lista creata!", @@ -772,7 +836,14 @@ "year_s_ago": " Anni fa", "history": "Ricerche recenti", "title_contains": "Il titolo contiene", - "title_does_not_contain": "Il titolo non contiene" + "title_does_not_contain": "Il titolo non contiene", + "is_broken_link": "Ha Link Non Funzionante", + "tags": "Tag", + "no_suggestions": "Nessun suggerimento", + "filters": "Filtri", + "is_not_broken_link": "Ha Link Funzionante", + "lists": "Elenchi", + "feeds": "Feed" }, "dialogs": { "bookmarks": { diff --git a/apps/web/lib/i18n/locales/ja/translation.json b/apps/web/lib/i18n/locales/ja/translation.json index b6c350e2..58315b3e 100644 --- a/apps/web/lib/i18n/locales/ja/translation.json +++ b/apps/web/lib/i18n/locales/ja/translation.json @@ -42,7 +42,9 @@ "confirm": "確認", "regenerate": "再生成", "load_more": "もっと読み込む", - "edit_notes": "注釈を編集" + "edit_notes": "注釈を編集", + "preserve_as_pdf": "PDFとして保存する", + "offline_copies": "オフラインコピー" }, "admin": { "actions": { @@ -196,6 +198,49 @@ "title": "アーカイブされたブックマーク", "hide": "タグとリストにアーカイブされたブックマークを非表示にする" } + }, + "reader_settings": { + "local_overrides_title": "デバイス固有の設定が有効", + "using_default": "クライアントの既定を使用中", + "clear_override_hint": "デバイスのオーバーライドをクリアして、全体設定 ({{value}}) を使用します", + "font_size": "フォントサイズ", + "font_family": "フォントファミリー", + "preview_inline": "(プレビュー)", + "tooltip_preview": "未保存のプレビュー変更", + "save_to_all_devices": "すべてのデバイス", + "tooltip_local": "デバイス設定が全体設定と異なります", + "reset_preview": "プレビューをリセット", + "mono": "等幅", + "line_height": "行の高さ", + "tooltip_default": "リーディング設定", + "title": "リーダー設定", + "serif": "セリフ", + "preview": "プレビュー", + "not_set": "未設定", + "clear_local_overrides": "デバイス設定をクリア", + "preview_text": "すばやい茶色のキツネがのろまな犬を飛び越えます。リーダー表示のテキストはこんな感じになります。", + "local_overrides_cleared": "デバイス固有の設定がクリアされました", + "local_overrides_description": "このデバイスには、グローバル既定と異なるリーダー設定があります。", + "clear_defaults": "すべての既定をクリア", + "description": "リーダー表示の既定のテキスト設定を構成します。これらの設定は、すべてのデバイス間で同期されます。", + "defaults_cleared": "リーダーの既定がクリアされました", + "save_hint": "このデバイスのみの設定を保存するか、すべてのデバイス間で同期します", + "save_as_default": "既定として保存", + "save_to_device": "このデバイス", + "sans": "サンセリフ", + "tooltip_preview_and_local": "未保存のプレビュー変更; デバイス設定が全体設定と異なります", + "adjust_hint": "変更をプレビューするには、上記の設定を調整してください" + }, + "avatar": { + "upload": "アバターをアップロードする", + "change": "アバターを変更する", + "remove_confirm_title": "アバターを削除する?", + "updated": "アバターを更新したで", + "removed": "アバターを削除したで", + "description": "アバターとして使う正方形の画像をアップロードしてちょ。", + "remove_confirm_description": "現在のプロフィール写真が消去されるけど、ええんか?", + "title": "プロフィール画像", + "remove": "アバターを削除する" } }, "ai": { @@ -209,7 +254,21 @@ "all_tagging": "すべてのタグ付け", "text_tagging": "テキストタグ付け", "image_tagging": "画像タグ付け", - "summarization": "要約" + "summarization": "要約", + "tag_style": "タグのスタイル", + "auto_summarization_description": "AIを使ってブックマークの要約を自動生成する。", + "auto_tagging": "自動タグ付け", + "titlecase_spaces": "タイトルケース、スペース区切り", + "lowercase_underscores": "小文字、アンダースコア区切り", + "inference_language": "推論言語", + "titlecase_hyphens": "タイトルケース、ハイフン区切り", + "lowercase_hyphens": "小文字、ハイフン区切り", + "lowercase_spaces": "小文字、スペース区切り", + "inference_language_description": "AIが生成するタグや概要の言語を選んでくれ。", + "tag_style_description": "自動生成されるタグの書式を選んでくれ。", + "auto_tagging_description": "AIを使ってブックマークのタグを自動生成する。", + "camelCase": "camelCase", + "auto_summarization": "自動要約" }, "import": { "import_export_bookmarks": "ブックマークのインポート/エクスポート", @@ -217,6 +276,7 @@ "import_bookmarks_from_karakeep_export": "Karakeep エクスポートからブックマークをインポート", "imported_bookmarks": "インポートされたブックマーク", "import_bookmarks_from_pocket_export": "Pocketのエクスポートからブックマークをインポート", + "import_bookmarks_from_matter_export": "Matterのエクスポートからブックマークをインポート", "import_bookmarks_from_omnivore_export": "Omnivoreエクスポートからブックマークをインポート", "export_links_and_notes": "リンクとメモをエクスポートする", "import_export": "インポート/エクスポート", @@ -517,7 +577,9 @@ "summary": "概要", "quota": "割り当て", "bookmarks": "ブックマーク", - "storage": "ストレージ" + "storage": "ストレージ", + "pdf": "PDFをアーカイブしたよ", + "default": "既定" }, "layouts": { "grid": "グリッド", @@ -677,7 +739,14 @@ "year_s_ago": " ~年前", "history": "最近の検索", "title_contains": "タイトルに含む", - "title_does_not_contain": "タイトルに含まない" + "title_does_not_contain": "タイトルに含まない", + "is_broken_link": "リンク切れ", + "tags": "タグ", + "no_suggestions": "サジェストはありません", + "filters": "フィルター", + "is_not_broken_link": "リンクは有効です", + "lists": "リスト", + "feeds": "フィード" }, "preview": { "cached_content": "キャッシュされたコンテンツ", @@ -686,7 +755,8 @@ "tabs": { "content": "コンテンツ", "details": "詳細" - } + }, + "archive_info": "アーカイブは Javascript を必要とする場合、インラインで正しく表示されないことがあります。最良の結果を得るには、<1>ダウンロードしてブラウザで開いてください</1>。" }, "editor": { "quickly_focus": "⌘ + E を押すと、このフィールドにすばやくフォーカスできます", @@ -760,7 +830,8 @@ "full_page_archive": "フルページアーカイブの作成が開始されました", "delete_from_list": "ブックマークがリストから削除されました", "deleted": "ブックマークが削除されたよ!", - "refetch": "再取得をエンキューしたぞ!" + "refetch": "再取得をエンキューしたぞ!", + "preserve_pdf": "PDF保存が開始されたよ" }, "lists": { "created": "リストが作成されました!", diff --git a/apps/web/lib/i18n/locales/ko/translation.json b/apps/web/lib/i18n/locales/ko/translation.json index 7af4fd3e..52be7917 100644 --- a/apps/web/lib/i18n/locales/ko/translation.json +++ b/apps/web/lib/i18n/locales/ko/translation.json @@ -39,7 +39,9 @@ "description": "설명", "quota": "할당량", "bookmarks": "북마크", - "storage": "저장 공간" + "storage": "저장 공간", + "pdf": "보관된 PDF", + "default": "기본값" }, "layouts": { "list": "목록", @@ -90,7 +92,9 @@ "confirm": "확인", "regenerate": "다시 생성", "load_more": "더 불러오기", - "edit_notes": "노트 편집" + "edit_notes": "노트 편집", + "preserve_as_pdf": "PDF로 보존", + "offline_copies": "오프라인 사본" }, "tags": { "unused_tags": "사용되지 않은 태그", @@ -154,7 +158,14 @@ "year_s_ago": " 년 전", "history": "최근 검색어", "title_contains": "제목에 다음 내용이 포함됨", - "title_does_not_contain": "제목에 다음 내용이 포함되지 않음" + "title_does_not_contain": "제목에 다음 내용이 포함되지 않음", + "is_broken_link": "깨진 링크 있음", + "tags": "태그", + "no_suggestions": "추천 항목 없음", + "filters": "필터", + "is_not_broken_link": "작동하는 링크 있음", + "lists": "목록", + "feeds": "피드" }, "preview": { "view_original": "원본 보기", @@ -163,7 +174,8 @@ "tabs": { "content": "콘텐츠", "details": "세부 정보" - } + }, + "archive_info": "보관 파일은 Javascript가 필요한 경우 인라인으로 올바르게 렌더링되지 않을 수 있습니다. 최상의 결과를 얻으려면 <1>다운로드하여 브라우저에서 여세요</1>." }, "editor": { "quickly_focus": "⌘ + E를 누르면 이 필드에 초점이 옮겨집니다", @@ -237,7 +249,8 @@ "refetch": "다시 가져오기가 큐에 추가 되었습니다!", "full_page_archive": "전체 페이지 보관 생성이 요청되었습니다", "delete_from_list": "북마크를 목록에서 삭제했습니다", - "clipboard_copied": "링크를 클립보드에 복사했습니다!" + "clipboard_copied": "링크를 클립보드에 복사했습니다!", + "preserve_pdf": "PDF 보존이 시작되었습니다" }, "lists": { "created": "목록이 생성 되었습니다!", @@ -309,6 +322,49 @@ "show": "보관된 북마크를 태그 및 목록에 표시", "hide": "보관된 북마크를 태그 및 목록에서 숨기기" } + }, + "reader_settings": { + "local_overrides_title": "장치별 설정 활성화됨", + "using_default": "클라이언트 기본값 사용", + "clear_override_hint": "전역 설정을 사용하려면 기기 재정의를 지우세요 ({{value}})", + "font_size": "글꼴 크기", + "font_family": "글꼴", + "preview_inline": "(미리보기)", + "tooltip_preview": "저장되지 않은 미리 보기 변경 사항", + "save_to_all_devices": "모든 기기", + "tooltip_local": "기기 설정이 전역 설정과 다름", + "reset_preview": "미리 보기 초기화", + "mono": "고정폭", + "line_height": "줄 높이", + "tooltip_default": "읽기 설정", + "title": "글 뷰어 설정", + "serif": "세리프", + "preview": "미리 보기", + "not_set": "설정 안 됨", + "clear_local_overrides": "장치 설정 삭제", + "preview_text": "The quick brown fox jumps over the lazy dog. 글 뷰어 텍스트는 다음과 같이 표시됩니다.", + "local_overrides_cleared": "장치별 설정이 삭제됨", + "local_overrides_description": "이 장치에는 글로벌 기본값과 다른 글 뷰어 설정이 있습니다.", + "clear_defaults": "모든 기본값 삭제", + "description": "글 뷰어의 기본 텍스트 설정을 구성합니다. 이 설정은 모든 장치에서 동기화됩니다.", + "defaults_cleared": "글 뷰어 기본값이 삭제됨", + "save_hint": "이 기기 설정만 저장하거나 모든 기기에서 동기화", + "save_as_default": "기본값으로 저장", + "save_to_device": "이 기기", + "sans": "산세리프", + "tooltip_preview_and_local": "저장되지 않은 미리 보기 변경 사항, 기기 설정이 전역 설정과 다름", + "adjust_hint": "위에 설정을 조정하여 변경 사항 미리 보기" + }, + "avatar": { + "upload": "아바타 올려", + "change": "아바타 바꿔", + "remove_confirm_title": "아바타 지울까?", + "updated": "아바타 업데이트 완료", + "removed": "아바타 삭제 완료", + "description": "프로필 사진으로 쓸 정사각형 이미지를 올려 줘.", + "remove_confirm_description": "지금 프로필 사진이 싹 날아갈 텐데.", + "title": "프로필 사진", + "remove": "아바타 삭제" } }, "ai": { @@ -322,7 +378,21 @@ "all_tagging": "모든 태깅", "text_tagging": "텍스트 태깅", "image_tagging": "이미지 태깅", - "summarization": "요약" + "summarization": "요약", + "tag_style": "태그 스타일", + "auto_summarization_description": "AI를 사용하여 책갈피에 대한 요약을 자동으로 생성합니다.", + "auto_tagging": "자동 태그 지정", + "titlecase_spaces": "공백을 넣은 제목 케이스", + "lowercase_underscores": "밑줄을 넣은 소문자", + "inference_language": "추론 언어", + "titlecase_hyphens": "하이픈을 넣은 제목 케이스", + "lowercase_hyphens": "하이픈을 넣은 소문자", + "lowercase_spaces": "공백을 넣은 소문자", + "inference_language_description": "AI가 생성한 태그 및 요약에 사용할 언어를 선택합니다.", + "tag_style_description": "자동 생성 태그 형식을 선택하세요.", + "auto_tagging_description": "AI를 사용하여 책갈피에 대한 태그를 자동으로 생성합니다.", + "camelCase": "camelCase", + "auto_summarization": "자동 요약" }, "feeds": { "add_a_subscription": "구독 추가", @@ -336,6 +406,7 @@ "import_export_bookmarks": "북마크 가져오기 / 내보내기", "import_bookmarks_from_html_file": "HTML 파일에서 북마크 가져오기", "import_bookmarks_from_pocket_export": "Pocket 내보내기에서 북마크 가져오기", + "import_bookmarks_from_matter_export": "Matter 내보내기에서 북마크 가져오기", "import_bookmarks_from_omnivore_export": "Omnivore 내보내기에서 북마크 가져오기", "import_bookmarks_from_karakeep_export": "Karakeep 내보내기에서 북마크 가져오기", "export_links_and_notes": "링크와 주석 내보내기", diff --git a/apps/web/lib/i18n/locales/nb_NO/translation.json b/apps/web/lib/i18n/locales/nb_NO/translation.json index 6cfebfc3..8f1fde21 100644 --- a/apps/web/lib/i18n/locales/nb_NO/translation.json +++ b/apps/web/lib/i18n/locales/nb_NO/translation.json @@ -39,7 +39,9 @@ "title": "Tittel", "quota": "Kvote", "bookmarks": "Bokmerker", - "storage": "Lagring" + "storage": "Lagring", + "pdf": "Arkivert PDF", + "default": "Standard" }, "admin": { "users_list": { @@ -214,7 +216,9 @@ "confirm": "Bekreft", "regenerate": "Regenerer", "load_more": "Last inn mer", - "edit_notes": "Rediger notater" + "edit_notes": "Rediger notater", + "preserve_as_pdf": "Bevar som PDF", + "offline_copies": "Offline kopier" }, "settings": { "info": { @@ -238,6 +242,49 @@ "show": "Vis arkiverte bokmerker i tagger og lister", "hide": "Skjul arkiverte bokmerker i tagger og lister" } + }, + "reader_settings": { + "local_overrides_title": "Enhetsspesifikke innstillinger er aktive", + "using_default": "Bruker klientstandard", + "clear_override_hint": "Fjern overstyring av enhet for å bruke global innstilling ({{value}})", + "font_size": "Skriftstørrelse", + "font_family": "Skrifttype", + "preview_inline": "(forhåndsvisning)", + "tooltip_preview": "Ulagrede forhåndsvisningsendringer", + "save_to_all_devices": "Alle enheter", + "tooltip_local": "Enhetsinnstillingene er forskjellige fra de globale", + "reset_preview": "Tilbakestill forhåndsvisning", + "mono": "Monospace", + "line_height": "Linjehøyde", + "tooltip_default": "Leseinnstillinger", + "title": "Leserinnstillinger", + "serif": "Serif", + "preview": "Forhåndsvisning", + "not_set": "Ikke angitt", + "clear_local_overrides": "Fjern enhetsinnstillinger", + "preview_text": "Den rappe, brune reven hopper over den late hunden. Slik vil teksten i leservisningen din se ut.", + "local_overrides_cleared": "Enhetsspesifikke innstillinger er fjernet", + "local_overrides_description": "Denne enheten har leserinnstillinger som er forskjellige fra dine globale standardinnstillinger:", + "clear_defaults": "Fjern alle standarder", + "description": "Konfigurer standard tekstinnstillinger for leservisningen. Disse innstillingene synkroniseres på tvers av alle enhetene dine.", + "defaults_cleared": "Leserstandarder er fjernet", + "save_hint": "Lagre innstillinger bare for denne enheten eller synkroniser på tvers av alle enheter", + "save_as_default": "Lagre som standard", + "save_to_device": "Denne enheten", + "sans": "Sans Serif", + "tooltip_preview_and_local": "Ulagrede forhåndsvisningsendringer; enhetsinnstillingene er forskjellige fra de globale", + "adjust_hint": "Juster innstillingene ovenfor for å forhåndsvise endringer" + }, + "avatar": { + "upload": "Last opp avatar", + "change": "Endre avatar", + "remove_confirm_title": "Fjerne avatar?", + "updated": "Avatar oppdatert", + "removed": "Avatar fjernet", + "description": "Last opp et kvadratisk bilde som avatar.", + "remove_confirm_description": "Dette vil fjerne ditt nåværende profilbilde.", + "title": "Profilbilde", + "remove": "Fjern avatar" } }, "ai": { @@ -251,7 +298,21 @@ "text_tagging": "Teksttagging", "image_tagging": "Bilde-tagging", "summarization": "Oppsummering", - "images_prompt": "Bildeledetekst" + "images_prompt": "Bildeledetekst", + "tag_style": "Stil for merkelapper", + "auto_summarization_description": "Generer automatisk sammendrag for bokmerkene dine ved hjelp av AI.", + "auto_tagging": "Automatisk merking", + "titlecase_spaces": "Tittel-case med mellomrom", + "lowercase_underscores": "Små bokstaver med understreker", + "inference_language": "Språk for inferens", + "titlecase_hyphens": "Tittel-case med bindestreker", + "lowercase_hyphens": "Små bokstaver med bindestreker", + "lowercase_spaces": "Små bokstaver med mellomrom", + "inference_language_description": "Velg språk for AI-genererte merkelapper og sammendrag.", + "tag_style_description": "Velg hvordan de automatisk genererte merkelappene dine skal formateres.", + "auto_tagging_description": "Generer automatisk tagger for bokmerkene dine ved hjelp av AI.", + "camelCase": "camelCase", + "auto_summarization": "Automatisk oppsummering" }, "import": { "import_bookmarks_from_omnivore_export": "Importer bokmerker fra Omnivore-eksport", @@ -259,6 +320,7 @@ "import_export_bookmarks": "Importer / eksporter bokmerker", "import_bookmarks_from_html_file": "Importer bokmerker fra HTML-fil", "import_bookmarks_from_pocket_export": "Importer bokmerker fra Pocket-eksport", + "import_bookmarks_from_matter_export": "Importer bokmerker fra Matter-eksport", "import_bookmarks_from_linkwarden_export": "Importer bokmerker fra Linkwarden-eksport", "import_bookmarks_from_karakeep_export": "Importer bokmerker fra Karakeepp-eksport", "export_links_and_notes": "Eksporter lenker og notater", @@ -671,7 +733,14 @@ "year_s_ago": " År siden", "history": "Nylige søk", "title_contains": "Tittel inneholder", - "title_does_not_contain": "Tittel inneholder ikke" + "title_does_not_contain": "Tittel inneholder ikke", + "is_broken_link": "Har ødelagt lenke", + "tags": "Merker", + "no_suggestions": "Ingen forslag", + "filters": "Filtere", + "is_not_broken_link": "Har fungerende lenke", + "lists": "Lister", + "feeds": "Feeder" }, "editor": { "text_toolbar": { @@ -739,7 +808,8 @@ "delete_from_list": "Bokmerket er sletta fra lista", "clipboard_copied": "Lenken er lagt til utklippstavlen din!", "updated": "Bokmerket er oppdatert!", - "deleted": "Bokmerket er slettet!" + "deleted": "Bokmerket er slettet!", + "preserve_pdf": "PDF-bevaring er trigget" }, "lists": { "created": "Liste er opprettet!", @@ -775,7 +845,8 @@ "tabs": { "content": "Innhold", "details": "Detaljer" - } + }, + "archive_info": "Det kan hende at arkiver ikke gjengis riktig direkte hvis de krever Javascript. For best resultat, <1>last ned og åpne i nettleseren din</1>." }, "dialogs": { "bookmarks": { diff --git a/apps/web/lib/i18n/locales/nl/translation.json b/apps/web/lib/i18n/locales/nl/translation.json index 9510d215..c4987872 100644 --- a/apps/web/lib/i18n/locales/nl/translation.json +++ b/apps/web/lib/i18n/locales/nl/translation.json @@ -39,7 +39,9 @@ "summary": "Samenvatting", "quota": "Quota", "bookmarks": "Bladwijzers", - "storage": "Opslag" + "storage": "Opslag", + "pdf": "Gearchiveerde PDF", + "default": "Standaard" }, "layouts": { "list": "Lijst", @@ -90,7 +92,9 @@ "confirm": "Bevestigen", "regenerate": "Opnieuw genereren", "load_more": "Laad meer", - "edit_notes": "Notities bewerken" + "edit_notes": "Notities bewerken", + "preserve_as_pdf": "Opslaan als PDF", + "offline_copies": "Offline kopieën" }, "settings": { "ai": { @@ -104,7 +108,21 @@ "all_tagging": "Alle tags", "text_tagging": "Tekst taggen", "image_tagging": "Afbeeldingen taggen", - "tagging_rule_description": "Prompts die je hier toevoegt, worden opgenomen als regels voor het model tijdens het genereren van tags. Je kunt de uiteindelijke prompts bekijken in het promptvoorbeeldgedeelte." + "tagging_rule_description": "Prompts die je hier toevoegt, worden opgenomen als regels voor het model tijdens het genereren van tags. Je kunt de uiteindelijke prompts bekijken in het promptvoorbeeldgedeelte.", + "tag_style": "Tagstijl", + "auto_summarization_description": "Genereer automatisch samenvattingen voor je bladwijzers met behulp van AI.", + "auto_tagging": "Automatisch labelen", + "titlecase_spaces": "Hoofdletters met spaties", + "lowercase_underscores": "Kleine letters met underscores", + "inference_language": "Inferentietalen", + "titlecase_hyphens": "Hoofdletters met koppeltekens", + "lowercase_hyphens": "Kleine letters met koppeltekens", + "lowercase_spaces": "Kleine letters met spaties", + "inference_language_description": "Kies taal voor door AI gegenereerde tags en samenvattingen.", + "tag_style_description": "Kies hoe je automatisch gegenereerde tags moeten worden opgemaakt.", + "auto_tagging_description": "Genereer automatisch tags voor je bladwijzers met behulp van AI.", + "camelCase": "camelCase", + "auto_summarization": "Automatische samenvatting" }, "import": { "import_export": "Importeren / Exporteren", @@ -112,6 +130,7 @@ "import_export_bookmarks": "Importeer / Exporteer Bladwijzers", "import_bookmarks_from_html_file": "Importeer Bladwijzers van HTML bestand", "import_bookmarks_from_pocket_export": "Importeer Bladwijzers van Pocket export", + "import_bookmarks_from_matter_export": "Importeer Bladwijzers van Matter export", "import_bookmarks_from_omnivore_export": "Bladwijzers importeren uit Omnivore export", "import_bookmarks_from_linkwarden_export": "Bladwijzers importeren uit Linkwarden-export", "import_bookmarks_from_karakeep_export": "Bladwijzers importeren uit Karakeep-export", @@ -158,6 +177,49 @@ "show": "Gearchiveerde bladwijzers weergeven in tags en lijsten", "hide": "Gearchiveerde bladwijzers verbergen in tags en lijsten" } + }, + "reader_settings": { + "local_overrides_title": "Apparaatspecifieke instellingen actief", + "using_default": "Standaardinstelling van de client gebruiken", + "clear_override_hint": "Apparaatoverschrijving wissen om algemene instelling te gebruiken ({{value}})", + "font_size": "Lettergrootte", + "font_family": "Lettertypefamilie", + "preview_inline": "(voorbeeld)", + "tooltip_preview": "Niet-opgeslagen voorbeeldwijzigingen", + "save_to_all_devices": "Alle apparaten", + "tooltip_local": "Apparaatinstellingen verschillen van algemene instellingen", + "reset_preview": "Voorbeeld resetten", + "mono": "Monospace", + "line_height": "Regelhoogte", + "tooltip_default": "Leesinstellingen", + "title": "Lezerinstellingen", + "serif": "Serif", + "preview": "Voorbeeld", + "not_set": "Niet ingesteld", + "clear_local_overrides": "Apparaatinstellingen wissen", + "preview_text": "The quick brown fox jumps over the lazy dog. Zo ziet de tekst in je lezerweergave eruit.", + "local_overrides_cleared": "Apparaatspecifieke instellingen zijn gewist", + "local_overrides_description": "Dit apparaat heeft lezerinstellingen die afwijken van je globale standaardwaarden:", + "clear_defaults": "Alle standaarden wissen", + "description": "Configureer de standaard tekstinstellingen voor de lezerweergave. Deze instellingen worden gesynchroniseerd op al je apparaten.", + "defaults_cleared": "Standaardwaarden van de lezer zijn gewist", + "save_hint": "Instellingen opslaan alleen voor dit apparaat of synchroniseren op alle apparaten", + "save_as_default": "Opslaan als standaard", + "save_to_device": "Dit apparaat", + "sans": "Sans Serif", + "tooltip_preview_and_local": "Niet-opgeslagen voorbeeldwijzigingen; apparaatinstellingen verschillen van algemene instellingen", + "adjust_hint": "Pas de bovenstaande instellingen aan om een voorbeeld van de wijzigingen te bekijken" + }, + "avatar": { + "upload": "Avatar uploaden", + "change": "Avatar wijzigen", + "remove_confirm_title": "Avatar verwijderen?", + "updated": "Avatar bijgewerkt", + "removed": "Avatar verwijderd", + "description": "Upload een vierkante afbeelding om als je avatar te gebruiken.", + "remove_confirm_description": "Hiermee verwijder je je huidige profielfoto.", + "title": "Profielfoto", + "remove": "Avatar verwijderen" } }, "back_to_app": "Terug Naar App", @@ -556,7 +618,8 @@ "tabs": { "content": "Inhoud", "details": "Details" - } + }, + "archive_info": "Archieven worden mogelijk niet correct inline weergegeven als ze Javascript vereisen. Voor de beste resultaten kun je het <1>downloaden en openen in je browser</1>." }, "editor": { "text_toolbar": { @@ -745,7 +808,14 @@ "year_s_ago": " Jaar geleden", "history": "Recente zoekopdrachten", "title_contains": "Titel bevat", - "title_does_not_contain": "Titel bevat niet" + "title_does_not_contain": "Titel bevat niet", + "is_broken_link": "Heeft een verbroken link", + "tags": "Labels", + "no_suggestions": "Geen suggesties", + "filters": "Filters", + "is_not_broken_link": "Heeft een werkende link", + "lists": "Lijsten", + "feeds": "Feeds" }, "dialogs": { "bookmarks": { @@ -760,7 +830,8 @@ "updated": "De bladwijzer is bijgewerkt!", "deleted": "De bladwijzer is verwijderd!", "delete_from_list": "De bladwijzer is uit de lijst verwijderd", - "clipboard_copied": "Link is naar je klembord gekopieerd!" + "clipboard_copied": "Link is naar je klembord gekopieerd!", + "preserve_pdf": "PDF-opslag is geactiveerd" }, "lists": { "updated": "Lijst is bijgewerkt!", diff --git a/apps/web/lib/i18n/locales/pl/translation.json b/apps/web/lib/i18n/locales/pl/translation.json index e82e8921..8cb621e7 100644 --- a/apps/web/lib/i18n/locales/pl/translation.json +++ b/apps/web/lib/i18n/locales/pl/translation.json @@ -39,7 +39,9 @@ "summary": "Podsumowanie", "quota": "Limit", "bookmarks": "Zakładki", - "storage": "Miejsce na dane" + "storage": "Miejsce na dane", + "pdf": "Zarchiwizowane PDF", + "default": "Domyślne" }, "actions": { "remove_from_list": "Usuń z listy", @@ -84,7 +86,9 @@ "confirm": "Potwierdź", "regenerate": "Wygeneruj ponownie", "load_more": "Załaduj więcej", - "edit_notes": "Edytuj notatki" + "edit_notes": "Edytuj notatki", + "preserve_as_pdf": "Zachowaj jako PDF", + "offline_copies": "Kopie offline" }, "settings": { "info": { @@ -108,11 +112,55 @@ "open_external_url": "Otwórz oryginalny URL", "open_bookmark_details": "Otwórz szczegóły zakładki" } + }, + "reader_settings": { + "local_overrides_title": "Aktywne ustawienia specyficzne dla urządzenia", + "using_default": "Użyj ustawień domyślnych klienta", + "clear_override_hint": "Wyczyść ustawienia urządzenia, aby użyć ustawień globalnych ({{value}})", + "font_size": "Rozmiar czcionki", + "font_family": "Rodzina czcionek", + "preview_inline": "(podgląd)", + "tooltip_preview": "Niezapisane zmiany podglądu", + "save_to_all_devices": "Wszystkie urządzenia", + "tooltip_local": "Ustawienia urządzenia różnią się od globalnych", + "reset_preview": "Zresetuj podgląd", + "mono": "Monospace", + "line_height": "Wysokość linii", + "tooltip_default": "Ustawienia czytania", + "title": "Ustawienia czytnika", + "serif": "Z szeryfami", + "preview": "Podgląd", + "not_set": "Nie ustawiono", + "clear_local_overrides": "Wyczyść ustawienia urządzenia", + "preview_text": "The quick brown fox jumps over the lazy dog. Tak będzie wyglądał tekst w widoku czytnika.", + "local_overrides_cleared": "Ustawienia specyficzne dla urządzenia zostały wyczyszczone", + "local_overrides_description": "To urządzenie ma ustawienia czytnika, które różnią się od globalnych ustawień domyślnych:", + "clear_defaults": "Wyczyść wszystkie ustawienia domyślne", + "description": "Skonfiguruj domyślne ustawienia tekstu dla widoku czytnika. Ustawienia te synchronizują się na wszystkich Twoich urządzeniach.", + "defaults_cleared": "Ustawienia domyślne czytnika zostały wyczyszczone", + "save_hint": "Zapisz ustawienia tylko dla tego urządzenia lub synchronizuj na wszystkich urządzeniach", + "save_as_default": "Zapisz jako domyślne", + "save_to_device": "To urządzenie", + "sans": "Bezszeryfowa", + "tooltip_preview_and_local": "Nie zapisano zmian w podglądzie; ustawienia urządzenia różnią się od globalnych", + "adjust_hint": "Dostosuj powyższe ustawienia, aby wyświetlić zmiany w podglądzie" + }, + "avatar": { + "upload": "Wrzuć awatar", + "change": "Zmień awatar", + "remove_confirm_title": "Usunąć awatar?", + "updated": "Awatar zaktualizowany", + "removed": "Awatar usunięty", + "description": "Wrzuć kwadratowy obrazek, który będzie Twoim awatarem.", + "remove_confirm_description": "To wyczyści Twoje aktualne zdjęcie profilowe.", + "title": "Zdjęcie profilowe", + "remove": "Usuń awatar" } }, "import": { "import_bookmarks_from_html_file": "Importuj zakładki z pliku HTML", "import_bookmarks_from_pocket_export": "Importuj zakładki z eksportu Pocket", + "import_bookmarks_from_matter_export": "Importuj zakładki z eksportu Matter", "import_export": "Import / Eksport", "import_export_bookmarks": "Import / Eksport zakładek", "import_bookmarks_from_omnivore_export": "Importuj zakładki z eksportu Omnivore", @@ -136,7 +184,21 @@ "summarization_prompt": "Monit o podsumowanie", "all_tagging": "Wszystkie tagi", "text_tagging": "Tagowanie tekstu", - "image_tagging": "Tagowanie obrazów" + "image_tagging": "Tagowanie obrazów", + "tag_style": "Styl tagów", + "auto_summarization_description": "Automatycznie generuj streszczenia dla zakładek za pomocą AI.", + "auto_tagging": "Automatyczne tagowanie", + "titlecase_spaces": "Wielkie litery ze spacjami", + "lowercase_underscores": "Małe litery z podkreślnikami", + "inference_language": "Język wnioskowania", + "titlecase_hyphens": "Wielkie litery z myślnikami", + "lowercase_hyphens": "Małe litery z myślnikami", + "lowercase_spaces": "Małe litery ze spacjami", + "inference_language_description": "Wybierz język dla tagów i podsumowań generowanych przez AI.", + "tag_style_description": "Wybierz, jak powinny być formatowane autogenerowane tagi.", + "auto_tagging_description": "Automatycznie generuj tagi dla zakładek za pomocą AI.", + "camelCase": "camelCase", + "auto_summarization": "Automatyczne podsumowywanie" }, "feeds": { "rss_subscriptions": "Subskrypcje RSS", @@ -622,7 +684,8 @@ "refetch": "Pobieranie ponownie zostało zaplanowane!", "full_page_archive": "Tworzenie pełnego archiwum strony zostało rozpoczęte", "delete_from_list": "Zakładka została usunięta z listy", - "clipboard_copied": "Link został skopiowany do schowka!" + "clipboard_copied": "Link został skopiowany do schowka!", + "preserve_pdf": "Zapis PDF został uruchomiony" }, "tags": { "created": "Etykieta została utworzona!", @@ -732,7 +795,8 @@ "tabs": { "content": "Treść", "details": "Szczegóły" - } + }, + "archive_info": "Archiwa mogą się nie wyświetlać poprawnie w wierszu, jeśli wymagają Javascript. Dla najlepszych rezultatów, <1>pobierz i otwórz w przeglądarce</1>." }, "highlights": { "no_highlights": "Nie masz jeszcze żadnych wyróżnień." @@ -775,7 +839,14 @@ "year_s_ago": " Lat(a) temu", "history": "Ostatnie wyszukiwania", "title_contains": "Tytuł zawiera", - "title_does_not_contain": "Tytuł nie zawiera" + "title_does_not_contain": "Tytuł nie zawiera", + "is_broken_link": "Ma Zepsuty Link", + "tags": "Tagi", + "no_suggestions": "Brak propozycji", + "filters": "Filtry", + "is_not_broken_link": "Ma Działający Link", + "lists": "Listy", + "feeds": "Kanały" }, "dialogs": { "bookmarks": { diff --git a/apps/web/lib/i18n/locales/pt/translation.json b/apps/web/lib/i18n/locales/pt/translation.json index a154726c..7bf1ccae 100644 --- a/apps/web/lib/i18n/locales/pt/translation.json +++ b/apps/web/lib/i18n/locales/pt/translation.json @@ -39,7 +39,9 @@ "summary": "Resumo", "quota": "Quota", "bookmarks": "Favoritos", - "storage": "Armazenamento" + "storage": "Armazenamento", + "pdf": "PDF arquivado", + "default": "Padrão" }, "actions": { "close": "Fechar", @@ -84,7 +86,9 @@ "confirm": "Confirmar", "regenerate": "Regenerar", "load_more": "Carregar mais", - "edit_notes": "Editar notas" + "edit_notes": "Editar notas", + "preserve_as_pdf": "Preservar como PDF", + "offline_copies": "Cópias offline" }, "settings": { "webhooks": { @@ -107,6 +111,7 @@ }, "import": { "import_bookmarks_from_pocket_export": "Importar marcadores da exportação do Pocket", + "import_bookmarks_from_matter_export": "Importar marcadores da exportação do Matter", "import_bookmarks_from_omnivore_export": "Importar marcadores da exportação do Omnivore", "import_export": "Importar / Exportar", "import_export_bookmarks": "Importar/Exportar Marcadores", @@ -139,6 +144,49 @@ "show": "Mostrar marcadores arquivados em tags e listas", "hide": "Ocultar marcadores arquivados em tags e listas" } + }, + "reader_settings": { + "local_overrides_title": "Configurações específicas do dispositivo ativas", + "using_default": "Usando o padrão do cliente", + "clear_override_hint": "Limpar a substituição do dispositivo para usar a configuração global ({{value}})", + "font_size": "Tamanho da fonte", + "font_family": "Família da fonte", + "preview_inline": "(visualização)", + "tooltip_preview": "Alterações não salvas na pré-visualização", + "save_to_all_devices": "Todos os dispositivos", + "tooltip_local": "Configurações do dispositivo são diferentes das globais", + "reset_preview": "Redefinir pré-visualização", + "mono": "Monoespaçada", + "line_height": "Altura da linha", + "tooltip_default": "Configurações de leitura", + "title": "Configurações do Leitor", + "serif": "Com serifa", + "preview": "Pré-visualização", + "not_set": "Não definido", + "clear_local_overrides": "Limpar configurações do dispositivo", + "preview_text": "A raposa marrom rápida pula sobre o cachorro preguiçoso. É assim que o texto da visualização do leitor será exibido.", + "local_overrides_cleared": "As configurações específicas do dispositivo foram apagadas", + "local_overrides_description": "Este dispositivo tem configurações de leitor que diferem de suas configurações padrão globais:", + "clear_defaults": "Limpar todos os padrões", + "description": "Configure as configurações de texto padrão para a visualização do leitor. Essas configurações são sincronizadas em todos os seus dispositivos.", + "defaults_cleared": "Os padrões do leitor foram apagados", + "save_hint": "Salvar configurações apenas para este dispositivo ou sincronizar entre todos os dispositivos", + "save_as_default": "Salvar como padrão", + "save_to_device": "Este dispositivo", + "sans": "Sem serifa", + "tooltip_preview_and_local": "Alterações não salvas na pré-visualização; as configurações do dispositivo são diferentes das globais", + "adjust_hint": "Ajuste as configurações acima para visualizar as alterações" + }, + "avatar": { + "upload": "Mandar avatar", + "change": "Trocar avatar", + "remove_confirm_title": "Remover avatar?", + "updated": "Avatar atualizado", + "removed": "Avatar removido", + "description": "Manda uma imagem quadrada para usar como teu avatar.", + "remove_confirm_description": "Isso vai apagar tua foto de perfil atual.", + "title": "Foto do perfil", + "remove": "Remover avatar" } }, "ai": { @@ -152,7 +200,21 @@ "text_tagging": "Marcação de texto", "image_tagging": "Marcação de imagem", "summarization": "Sumarização", - "ai_settings": "Configurações de IA" + "ai_settings": "Configurações de IA", + "tag_style": "Estilo da etiqueta", + "auto_summarization_description": "Gerar automaticamente resumos para seus favoritos usando IA.", + "auto_tagging": "Marcação automática", + "titlecase_spaces": "Maiúsculas e minúsculas com espaços", + "lowercase_underscores": "Minúsculas com underscores", + "inference_language": "Linguagem de Inferência", + "titlecase_hyphens": "Maiúsculas e minúsculas com hífens", + "lowercase_hyphens": "Minúsculas com hífens", + "lowercase_spaces": "Minúsculas com espaços", + "inference_language_description": "Escolha o idioma para as tags e resumos gerados por IA.", + "tag_style_description": "Escolha como as suas etiquetas geradas automaticamente devem ser formatadas.", + "auto_tagging_description": "Gerar automaticamente tags para seus favoritos usando IA.", + "camelCase": "camelCase", + "auto_summarization": "Resumo automático" }, "api_keys": { "new_api_key": "Nova chave da API", @@ -671,7 +733,14 @@ "year_s_ago": " Ano(s) atrás", "history": "Pesquisas recentes", "title_contains": "O título contém…", - "title_does_not_contain": "O título não contém…" + "title_does_not_contain": "O título não contém…", + "is_broken_link": "Tem link quebrado", + "tags": "Etiquetas", + "no_suggestions": "Sem sugestões", + "filters": "Filtros", + "is_not_broken_link": "Tem link funcionando", + "lists": "Listas", + "feeds": "Feeds" }, "preview": { "cached_content": "Conteúdo em cache", @@ -680,7 +749,8 @@ "tabs": { "content": "Conteúdo", "details": "Detalhes" - } + }, + "archive_info": "Os arquivos podem não ser renderizados corretamente embutidos se exigirem Javascript. Para obter melhores resultados, <1>baixe-o e abra-o no seu navegador</1>." }, "editor": { "new_item": "NOVO ITEM", @@ -748,7 +818,8 @@ "clipboard_copied": "Link foi adicionado à sua área de transferência!", "updated": "O marcador foi atualizado!", "deleted": "O marcador foi excluído!", - "refetch": "A nova busca foi enfileirada!" + "refetch": "A nova busca foi enfileirada!", + "preserve_pdf": "A preservação em PDF foi acionada" }, "lists": { "updated": "A lista foi atualizada!", diff --git a/apps/web/lib/i18n/locales/pt_BR/translation.json b/apps/web/lib/i18n/locales/pt_BR/translation.json index 881c9783..2d1a7f8a 100644 --- a/apps/web/lib/i18n/locales/pt_BR/translation.json +++ b/apps/web/lib/i18n/locales/pt_BR/translation.json @@ -39,7 +39,9 @@ "summary": "Resumo", "quota": "Cota", "bookmarks": "Favoritos", - "storage": "Armazenamento" + "storage": "Armazenamento", + "pdf": "PDF Arquivado", + "default": "Padrão" }, "actions": { "unarchive": "Desarquivar", @@ -84,7 +86,9 @@ "confirm": "Confirmar", "regenerate": "Regenerar", "load_more": "Carregar mais", - "edit_notes": "Editar notas" + "edit_notes": "Editar notas", + "preserve_as_pdf": "Preservar como PDF", + "offline_copies": "Cópias Offline" }, "settings": { "info": { @@ -108,6 +112,49 @@ "open_external_url": "Abrir URL original", "open_bookmark_details": "Abrir detalhes do favorito" } + }, + "reader_settings": { + "local_overrides_title": "Configurações específicas do dispositivo ativas", + "using_default": "Usando o padrão do cliente", + "clear_override_hint": "Limpar substituição do dispositivo para usar a configuração global ({{value}})", + "font_size": "Tamanho da Fonte", + "font_family": "Família da Fonte", + "preview_inline": "(visualização)", + "tooltip_preview": "Alterações de visualização não salvas", + "save_to_all_devices": "Todos os dispositivos", + "tooltip_local": "Configurações do dispositivo diferentes das globais", + "reset_preview": "Redefinir visualização", + "mono": "Monoespaçado", + "line_height": "Altura da Linha", + "tooltip_default": "Configurações de leitura", + "title": "Configurações do Leitor", + "serif": "Serifa", + "preview": "Visualização", + "not_set": "Não definido", + "clear_local_overrides": "Limpar configurações do dispositivo", + "preview_text": "A raposa marrom rápida pula sobre o cão preguiçoso. É assim que o texto da sua visualização do leitor aparecerá.", + "local_overrides_cleared": "As configurações específicas do dispositivo foram apagadas", + "local_overrides_description": "Este dispositivo tem configurações de leitor que diferem de suas configurações padrão globais:", + "clear_defaults": "Limpar todos os padrões", + "description": "Configure as configurações de texto padrão para a visualização do leitor. Essas configurações são sincronizadas em todos os seus dispositivos.", + "defaults_cleared": "Os padrões do leitor foram apagados", + "save_hint": "Salvar configurações apenas para este dispositivo ou sincronizar entre todos os dispositivos", + "save_as_default": "Salvar como padrão", + "save_to_device": "Este dispositivo", + "sans": "Sem serifa", + "tooltip_preview_and_local": "Alterações de visualização não salvas; configurações do dispositivo diferentes das globais", + "adjust_hint": "Ajuste as configurações acima para visualizar as alterações" + }, + "avatar": { + "upload": "Enviar avatar", + "change": "Mudar avatar", + "remove_confirm_title": "Remover avatar?", + "updated": "Avatar atualizado", + "removed": "Avatar removido", + "description": "Envie uma imagem quadrada para usar como seu avatar.", + "remove_confirm_description": "Isso vai apagar a foto do seu perfil atual.", + "title": "Foto do perfil", + "remove": "Remover avatar" } }, "back_to_app": "Voltar ao App", @@ -123,7 +170,21 @@ "all_tagging": "Todas as Tags", "text_tagging": "Tags de Texto", "image_tagging": "Tags de Imagem", - "summarization": "Resumo" + "summarization": "Resumo", + "tag_style": "Estilo da etiqueta", + "auto_summarization_description": "Gere automaticamente resumos para seus favoritos usando IA.", + "auto_tagging": "Marcação automática", + "titlecase_spaces": "Maiúsculas e minúsculas com espaços", + "lowercase_underscores": "Minúsculas com sublinhados", + "inference_language": "Linguagem de inferência", + "titlecase_hyphens": "Maiúsculas e minúsculas com hífens", + "lowercase_hyphens": "Minúsculas com hífens", + "lowercase_spaces": "Minúsculas com espaços", + "inference_language_description": "Escolha o idioma para tags e resumos gerados por IA.", + "tag_style_description": "Escolha como suas tags auto-geradas devem ser formatadas.", + "auto_tagging_description": "Gere automaticamente tags para seus favoritos usando IA.", + "camelCase": "camelCase", + "auto_summarization": "Resumo automático" }, "feeds": { "rss_subscriptions": "Assinaturas de RSS", @@ -154,6 +215,7 @@ "import_export_bookmarks": "Importar / Exportar Favoritos", "import_bookmarks_from_html_file": "Importar Favoritos de arquivo HTML", "import_bookmarks_from_pocket_export": "Importar Favoritos de exportação do Pocket", + "import_bookmarks_from_matter_export": "Importar Favoritos de exportação do Matter", "import_bookmarks_from_omnivore_export": "Importar Favoritos de exportação do Omnivore", "import_bookmarks_from_linkwarden_export": "Importar Favoritos de exportação do Linkwarden", "import_bookmarks_from_karakeep_export": "Importar Favoritos de exportação do Karakeep", @@ -680,7 +742,14 @@ "year_s_ago": " Ano(s) atrás", "history": "Pesquisas recentes", "title_contains": "Título Contém", - "title_does_not_contain": "Título Não Contém" + "title_does_not_contain": "Título Não Contém", + "is_broken_link": "Possui link quebrado", + "tags": "Tags", + "no_suggestions": "Sem sugestões", + "filters": "Filtros", + "is_not_broken_link": "Possui link funcionando", + "lists": "Listas", + "feeds": "Feeds" }, "preview": { "view_original": "Ver Original", @@ -689,7 +758,8 @@ "tabs": { "content": "Conteúdo", "details": "Detalhes" - } + }, + "archive_info": "Arquivos podem não renderizar corretamente embutidos se eles exigirem Javascript. Para obter melhores resultados, <1>baixe-o e abra-o no seu navegador</1>." }, "editor": { "quickly_focus": "Você pode acessar rapidamente este campo pressionando ⌘ + E", @@ -763,7 +833,8 @@ "refetch": "A nova busca foi enfileirada!", "full_page_archive": "A criação do arquivo de página inteira foi acionada", "delete_from_list": "O favorito foi excluído da lista", - "clipboard_copied": "O link foi adicionado à sua área de transferência!" + "clipboard_copied": "O link foi adicionado à sua área de transferência!", + "preserve_pdf": "A preservação em PDF foi acionada" }, "lists": { "created": "A lista foi criada!", diff --git a/apps/web/lib/i18n/locales/ru/translation.json b/apps/web/lib/i18n/locales/ru/translation.json index 05a82088..f3da6169 100644 --- a/apps/web/lib/i18n/locales/ru/translation.json +++ b/apps/web/lib/i18n/locales/ru/translation.json @@ -39,7 +39,9 @@ "summary": "Краткое содержание", "quota": "Квота", "bookmarks": "Закладки", - "storage": "Хранилище" + "storage": "Хранилище", + "pdf": "Архивированный PDF", + "default": "По умолчанию" }, "lists": { "new_list": "Новый список", @@ -150,6 +152,49 @@ "title": "Архивированные закладки", "show": "Показывать архивированные закладки в тегах и списках" } + }, + "reader_settings": { + "local_overrides_title": "Активны настройки для этого устройства", + "using_default": "Используются настройки клиента по умолчанию", + "clear_override_hint": "Удалите переопределение устройства, чтобы использовать глобальную настройку ({{value}})", + "font_size": "Размер шрифта", + "font_family": "Тип шрифта", + "preview_inline": "(предпросмотр)", + "tooltip_preview": "Несохраненные изменения предпросмотра", + "save_to_all_devices": "Все устройства", + "tooltip_local": "Настройки устройства отличаются от глобальных", + "reset_preview": "Сбросить предпросмотр", + "mono": "Моноширинный", + "line_height": "Высота строки", + "tooltip_default": "Настройки чтения", + "title": "Настройки читалки", + "serif": "С засечками", + "preview": "Предварительный просмотр", + "not_set": "Не задано", + "clear_local_overrides": "Сбросить настройки для устройства", + "preview_text": "Шустрая бурая лиса перепрыгивает ленивого пса. Вот так будет выглядеть текст в режиме чтения.", + "local_overrides_cleared": "Настройки для устройства сброшены", + "local_overrides_description": "На этом устройстве параметры читалки отличаются от ваших глобальных настроек:", + "clear_defaults": "Сбросить все значения по умолчанию", + "description": "Настройте параметры текста по умолчанию для режима чтения. Эти параметры синхронизируются на всех ваших устройствах.", + "defaults_cleared": "Настройки читалки по умолчанию сброшены", + "save_hint": "Сохранить настройки только для этого устройства или синхронизировать на всех устройствах", + "save_as_default": "Сохранить как значения по умолчанию", + "save_to_device": "Это устройство", + "sans": "Без засечек", + "tooltip_preview_and_local": "Несохраненные изменения предпросмотра; настройки устройства отличаются от глобальных", + "adjust_hint": "Отрегулируйте настройки выше, чтобы просмотреть изменения" + }, + "avatar": { + "upload": "Загрузить аватар", + "change": "Сменить аватар", + "remove_confirm_title": "Удалить аватар?", + "updated": "Аватар обновлён", + "removed": "Аватар удалён", + "description": "Загрузи квадратное изображение, которое будет твоим аватаром.", + "remove_confirm_description": "Текущее фото профиля будет удалено.", + "title": "Фото профиля", + "remove": "Удалить аватар" } }, "import": { @@ -157,13 +202,14 @@ "import_export": "Импорт / Экспорт", "import_export_bookmarks": "Импорт / Экспорт закладок", "import_bookmarks_from_pocket_export": "Импортировать закладки из экспорта Pocket", + "import_bookmarks_from_matter_export": "Импортировать закладки из экспорта Matter", "import_bookmarks_from_omnivore_export": "Импортировать закладки из экспорта Omnivore", "imported_bookmarks": "Импортировано закладок", "import_bookmarks_from_html_file": "Импортировать закладки из HTML файла", "export_links_and_notes": "Экспортировать ссылки и заметки", "import_bookmarks_from_linkwarden_export": "Импортировать закладки из экспорта Linkwarden", "import_bookmarks_from_tab_session_manager_export": "Импортировать закладки из Tab Session Manager", - "import_bookmarks_from_mymind_export": "Импортируй закладки из экспорта mymind." + "import_bookmarks_from_mymind_export": "Импортировать закладки из экспорта mymind" }, "api_keys": { "key_success": "Ключ был успешно создан", @@ -188,7 +234,21 @@ "image_tagging": "Пометка изображений тегами", "summarization": "Суммирование", "summarization_prompt": "Подсказка для суммирования", - "all_tagging": "Все теги" + "all_tagging": "Все теги", + "tag_style": "Стиль тегов", + "auto_summarization_description": "Автоматически генерируйте сводки для своих закладок с помощью ИИ.", + "auto_tagging": "Автоматическая расстановка тегов", + "titlecase_spaces": "Заглавные с пробелами", + "lowercase_underscores": "Строчные с подчеркиваниями", + "inference_language": "Язык логического вывода", + "titlecase_hyphens": "Заглавные с дефисами", + "lowercase_hyphens": "Строчные с дефисами", + "lowercase_spaces": "Строчные с пробелами", + "inference_language_description": "Выбери язык для тегов и саммари, которые генерит ИИ.", + "tag_style_description": "Выбери, как форматировать автосгенерированные теги.", + "auto_tagging_description": "Автоматически генерируйте теги для ваших закладок с помощью ИИ.", + "camelCase": "camelCase", + "auto_summarization": "Автоматическое создание сводок" }, "feeds": { "rss_subscriptions": "RSS подписки", @@ -473,7 +533,9 @@ "confirm": "Подтвердить", "regenerate": "Обновить", "load_more": "Загрузить еще", - "edit_notes": "Редактировать заметки" + "edit_notes": "Редактировать заметки", + "preserve_as_pdf": "Сохранить как PDF", + "offline_copies": "Автономные копии" }, "editor": { "text_toolbar": { @@ -705,7 +767,8 @@ "tabs": { "content": "Содержание", "details": "Подробности" - } + }, + "archive_info": "Архивы могут неправильно отображаться во встроенном режиме, если для них требуется Javascript. Для достижения наилучших результатов <1>загрузите их и откройте в браузере</1>." }, "toasts": { "bookmarks": { @@ -714,7 +777,8 @@ "delete_from_list": "Закладка была удалена из списка", "clipboard_copied": "Ссылка была скопирована в буфер обмена!", "deleted": "Закладка была удалена!", - "updated": "Закладка была обновлена!" + "updated": "Закладка была обновлена!", + "preserve_pdf": "Сохранение в формате PDF было запущено" }, "lists": { "created": "Список был создан!", @@ -772,12 +836,19 @@ "year_s_ago": " Год(а) назад", "history": "Недавние поиски", "title_contains": "Содержит в заголовке", - "title_does_not_contain": "Не содержит в заголовке" + "title_does_not_contain": "Не содержит в заголовке", + "is_broken_link": "Битые ссылки", + "tags": "Теги", + "no_suggestions": "Нет предложений", + "filters": "Фильтры", + "is_not_broken_link": "Рабочие ссылки", + "lists": "Списки", + "feeds": "Ленты" }, "dialogs": { "bookmarks": { "delete_confirmation_title": "Удалить закладку?", - "delete_confirmation_description": "Ты уверен, что хочешь удалить эту закладку?" + "delete_confirmation_description": "Вы уверены, что хотите удалить эту закладку?" } }, "highlights": { diff --git a/apps/web/lib/i18n/locales/sk/translation.json b/apps/web/lib/i18n/locales/sk/translation.json index 4fbcb06b..00196d26 100644 --- a/apps/web/lib/i18n/locales/sk/translation.json +++ b/apps/web/lib/i18n/locales/sk/translation.json @@ -39,7 +39,9 @@ "summary": "Zhrnutie", "quota": "Kvóta", "bookmarks": "Záložky", - "storage": "Úložisko" + "storage": "Úložisko", + "pdf": "Archivované PDF", + "default": "Predvolené" }, "actions": { "cancel": "Zrušiť", @@ -84,7 +86,9 @@ "confirm": "Potvrdiť", "regenerate": "Obnoviť", "load_more": "Načítať viac", - "edit_notes": "Upraviť poznámky" + "edit_notes": "Upraviť poznámky", + "preserve_as_pdf": "Uložiť ako PDF", + "offline_copies": "Offline kópie" }, "lists": { "favourites": "Obľúbené", @@ -178,6 +182,7 @@ "import_export_bookmarks": "Importovať / exportovať záložky", "import_bookmarks_from_html_file": "Importovať záložky z HTML súboru", "import_bookmarks_from_pocket_export": "Importovať záložky z Pocket exportu", + "import_bookmarks_from_matter_export": "Importovať záložky z Matter exportu", "import_bookmarks_from_linkwarden_export": "Importovať záložky z Linkwarden exportu", "import_bookmarks_from_karakeep_export": "Importovať záložky z Karakeep exportu", "export_links_and_notes": "Exportovať odkazy a poznámky", @@ -209,6 +214,49 @@ "hide": "Skryť archivované záložky v tagoch a zoznamoch", "show": "Zobraziť archivované záložky v tagoch a zoznamoch" } + }, + "reader_settings": { + "local_overrides_title": "Sú aktívne nastavenia špecifické pre zariadenie", + "using_default": "Používa sa predvolené nastavenie pre klienta", + "clear_override_hint": "Vymažte prepísanie zariadenia a použite globálne nastavenie ({{value}})", + "font_size": "Veľkosť písma", + "font_family": "Rodina písma", + "preview_inline": "(Náhľad)", + "tooltip_preview": "Neuložené zmeny ukážky", + "save_to_all_devices": "Všetky zariadenia", + "tooltip_local": "Nastavenia zariadenia sa líšia od globálnych", + "reset_preview": "Resetovať ukážku", + "mono": "Neproporcionálne", + "line_height": "Výška riadku", + "tooltip_default": "Nastavenia čítania", + "title": "Nastavenia čítačky", + "serif": "Pätkové", + "preview": "Náhľad", + "not_set": "Nenastavené", + "clear_local_overrides": "Vymazať nastavenia zariadenia", + "preview_text": "The quick brown fox jumps over the lazy dog. Takto sa bude zobrazovať text v režime čítačky.", + "local_overrides_cleared": "Nastavenia špecifické pre zariadenie boli vymazané", + "local_overrides_description": "Toto zariadenie má nastavenia čítačky, ktoré sa líšia od tvojich globálnych predvolených nastavení:", + "clear_defaults": "Vymazať všetky predvolené", + "description": "Konfigurácia predvolených nastavení textu pre zobrazenie čítačky. Tieto nastavenia sa synchronizujú medzi všetkými tvojimi zariadeniami.", + "defaults_cleared": "Predvolené nastavenia čítačky boli vymazané", + "save_hint": "Uložte nastavenia iba pre toto zariadenie alebo ich synchronizujte na všetkých zariadeniach", + "save_as_default": "Uložiť ako predvolené", + "save_to_device": "Toto zariadenie", + "sans": "Bez pätiek", + "tooltip_preview_and_local": "Neuložené zmeny ukážky; nastavenia zariadenia sa líšia od globálnych", + "adjust_hint": "Upravte nastavenia vyššie, aby ste si prezreli zmeny" + }, + "avatar": { + "upload": "Nahrať avatara", + "change": "Zmeniť avatara", + "remove_confirm_title": "Odstrániť avatara?", + "updated": "Avatar aktualizovaný", + "removed": "Avatar odstránený", + "description": "Nahraj štvorcový obrázok, ktorý sa použije ako tvoj avatar.", + "remove_confirm_description": "Týmto sa vymaže tvoja aktuálna profilová fotka.", + "title": "Profilová fotka", + "remove": "Odstrániť avatara" } }, "ai": { @@ -222,7 +270,21 @@ "image_tagging": "Označovanie obrázkov", "summarization": "Zhrnutie", "images_prompt": "Výzva obrázka", - "summarization_prompt": "Výzva na sumarizáciu" + "summarization_prompt": "Výzva na sumarizáciu", + "tag_style": "Štýl tagov", + "auto_summarization_description": "Automaticky generujte zhrnutia pre vaše záložky pomocou AI.", + "auto_tagging": "Automatické označovanie štítkami", + "titlecase_spaces": "Veľké začiatočné písmená s medzerami", + "lowercase_underscores": "Malé písmená s podčiarkovníkmi", + "inference_language": "Jazyk inferencie", + "titlecase_hyphens": "Veľké začiatočné písmená s pomlčkami", + "lowercase_hyphens": "Malé písmená s pomlčkami", + "lowercase_spaces": "Malé písmená s medzerami", + "inference_language_description": "Vyber jazyk pre tagy a súhrny generované AI.", + "tag_style_description": "Vyber si, ako majú byť formátované automaticky generované tagy.", + "auto_tagging_description": "Automaticky generujte štítky pre vaše záložky pomocou AI.", + "camelCase": "camelCase", + "auto_summarization": "Automatické zhrnutie" }, "webhooks": { "add_auth_token": "Pridať autorizačný token", @@ -513,7 +575,14 @@ "year_s_ago": " Rok(y) dozadu", "history": "Nedávne vyhľadávania", "title_contains": "Názov obsahuje", - "title_does_not_contain": "Názov neobsahuje" + "title_does_not_contain": "Názov neobsahuje", + "is_broken_link": "Má nefunkčný odkaz", + "tags": "Značky", + "no_suggestions": "Žiadne návrhy", + "filters": "Filtre", + "is_not_broken_link": "Má funkčný odkaz", + "lists": "Zoznamy", + "feeds": "Kanály" }, "layouts": { "masonry": "Dlaždice", @@ -745,7 +814,8 @@ "tabs": { "content": "Obsah", "details": "Podrobnosti" - } + }, + "archive_info": "Archívy sa nemusia vykresľovať správne priamo, ak vyžadujú Javascript. Pre dosiahnutie najlepších výsledkov si ich <1>stiahni a otvor v prehliadači</1>." }, "toasts": { "bookmarks": { @@ -754,7 +824,8 @@ "delete_from_list": "Záložka bola odstránená zo zoznamu", "deleted": "Záložka bola zmazaná!", "refetch": "Opätovné načítanie bolo zaradené do frontu!", - "full_page_archive": "Bolo spustené vytváranie archívu celej stránky" + "full_page_archive": "Bolo spustené vytváranie archívu celej stránky", + "preserve_pdf": "Ukladanie do PDF bolo spustené" }, "lists": { "updated": "Zoznam bol aktualizovaný!", diff --git a/apps/web/lib/i18n/locales/sl/translation.json b/apps/web/lib/i18n/locales/sl/translation.json index 671f34ca..8b99a153 100644 --- a/apps/web/lib/i18n/locales/sl/translation.json +++ b/apps/web/lib/i18n/locales/sl/translation.json @@ -17,6 +17,7 @@ "import_bookmarks_from_linkwarden_export": "Uvozi zaznamke iz Linkwarden izvoza", "imported_bookmarks": "Uvoženi zaznamki", "import_bookmarks_from_pocket_export": "Uvozi zaznamke iz Pocket izvoza", + "import_bookmarks_from_matter_export": "Uvozi zaznamke iz Matter izvoza", "import_export_bookmarks": "Uvoz / Izvoz zaznamkov", "import_bookmarks_from_omnivore_export": "Uvozi zaznamke iz Omnivore izvoza", "export_links_and_notes": "Izvozi povezave in zapiske", @@ -46,6 +47,49 @@ "show": "Prikaži arhivirane zaznamke v oznakah in seznamih", "hide": "Skrij arhivirane zaznamke v oznakah in seznamih" } + }, + "reader_settings": { + "local_overrides_title": "Aktivne nastavitve, specifične za napravo", + "using_default": "Uporaba privzete vrednosti odjemalca", + "clear_override_hint": "Počisti preglasitev naprave, da uporabiš globalno nastavitev ({{value}})", + "font_size": "Velikost pisave", + "font_family": "Družina pisav", + "preview_inline": "(predogled)", + "tooltip_preview": "Neshranjene spremembe predogleda", + "save_to_all_devices": "Vse naprave", + "tooltip_local": "Nastavitve naprave se razlikujejo od globalnih", + "reset_preview": "Ponastavi predogled", + "mono": "Enoprostorska", + "line_height": "Višina vrstice", + "tooltip_default": "Nastavitve branja", + "title": "Nastavitve bralnika", + "serif": "Serif", + "preview": "Predogled", + "not_set": "Ni nastavljeno", + "clear_local_overrides": "Počisti nastavitve naprave", + "preview_text": "Rjava lisica skoči čez lenega psa. Tako bo videti vaše besedilo v pogledu bralnika.", + "local_overrides_cleared": "Nastavitve, specifične za napravo, so bile počiscene", + "local_overrides_description": "Ta naprava ima nastavitve bralnika, ki se razlikujejo od vaših splošnih privzetih nastavitev:", + "clear_defaults": "Počisti vse privzete nastavitve", + "description": "Nastavite privzete nastavitve besedila za pogled bralnika. Te nastavitve se sinhronizirajo v vseh vaših napravah.", + "defaults_cleared": "Privzeti bralnik je bil počiščen", + "save_hint": "Shrani nastavitve samo za to napravo ali sinhroniziraj med vsemi napravami", + "save_as_default": "Shrani kot privzeto", + "save_to_device": "Ta naprava", + "sans": "Sans Serif", + "tooltip_preview_and_local": "Neshranjene spremembe predogleda; nastavitve naprave se razlikujejo od globalnih", + "adjust_hint": "Prilagodite nastavitve zgoraj za predogled sprememb" + }, + "avatar": { + "upload": "Naloži avatar", + "change": "Spremeni avatar", + "remove_confirm_title": "Odstranim avatar?", + "updated": "Avatar posodobljen", + "removed": "Avatar odstranjen", + "description": "Naloži kvadratno sliko, ki jo boš uporabil kot svoj avatar.", + "remove_confirm_description": "S tem boš odstranil svojo trenutno sliko profila.", + "title": "Fotka profila", + "remove": "Odstrani avatar" } }, "ai": { @@ -59,7 +103,21 @@ "summarization_prompt": "Povzemni ukaz", "all_tagging": "Vse oznake", "tagging_rules": "Pravila za označevanje", - "tagging_rule_description": "Pozivi, ki jih dodaš tukaj, bodo vključeni kot pravila za model med ustvarjanjem oznak. Končne pozive si lahko ogledaš v razdelku za predogled pozivov." + "tagging_rule_description": "Pozivi, ki jih dodaš tukaj, bodo vključeni kot pravila za model med ustvarjanjem oznak. Končne pozive si lahko ogledaš v razdelku za predogled pozivov.", + "tag_style": "Slog oznake", + "auto_summarization_description": "Samodejno ustvari povzetke za tvoje zaznamke z uporabo UI.", + "auto_tagging": "Samodejno označevanje", + "titlecase_spaces": "Velike začetnice s presledki", + "lowercase_underscores": "Male črke s podčrtaji", + "inference_language": "Jezik sklepanja", + "titlecase_hyphens": "Velike začetnice s povezaji", + "lowercase_hyphens": "Male črke s povezaji", + "lowercase_spaces": "Male črke s presledki", + "inference_language_description": "Izberi jezik za oznake in povzetke, ustvarjene z umetno inteligenco.", + "tag_style_description": "Izberi obliko samodejno ustvarjenih oznak.", + "auto_tagging_description": "Samodejno ustvari oznake za tvoje zaznamke z uporabo UI.", + "camelCase": "camelCase", + "auto_summarization": "Samodejno povzemanje" }, "back_to_app": "Nazaj v aplikacijo", "webhooks": { @@ -470,7 +528,14 @@ "year_s_ago": " Let(a) nazaj", "history": "Nedavna iskanja", "title_contains": "Naslov vsebuje", - "title_does_not_contain": "Naslov ne vsebuje" + "title_does_not_contain": "Naslov ne vsebuje", + "is_broken_link": "Ima polomljeno povezavo", + "tags": "Oznake", + "no_suggestions": "Ni predlogov", + "filters": "Filtri", + "is_not_broken_link": "Ima delujočo povezavo", + "lists": "Seznami", + "feeds": "Viri" }, "tags": { "your_tags_info": "Oznake, ki si jih dodelil/a vsaj enkrat", @@ -536,7 +601,9 @@ "summary": "Povzetek", "quota": "Količina", "bookmarks": "Zaznamki", - "storage": "Shranjevanje" + "storage": "Shranjevanje", + "pdf": "Arhiviran PDF", + "default": "Privzeto" }, "actions": { "close_bulk_edit": "Zapri množično urejanje", @@ -581,7 +648,9 @@ "confirm": "Potrdi", "regenerate": "Osveži", "load_more": "Naloži več", - "edit_notes": "Uredi opombe" + "edit_notes": "Uredi opombe", + "preserve_as_pdf": "Shrani kot PDF", + "offline_copies": "Kopije brez povezave" }, "layouts": { "compact": "Kompaktno", @@ -745,7 +814,8 @@ "clipboard_copied": "Povezava je bila kopirana v odložišče!", "updated": "Zaznamek je bil posodobljen!", "refetch": "Ponovno pridobivanje je bilo dodano v čakalno vrsto!", - "full_page_archive": "Ustvarjanje arhiva celotne strani je bilo sproženo" + "full_page_archive": "Ustvarjanje arhiva celotne strani je bilo sproženo", + "preserve_pdf": "Ohranjanje PDF je bilo sproženo" }, "lists": { "created": "Seznam je bil ustvarjen!", @@ -778,7 +848,8 @@ "tabs": { "content": "Vsebina", "details": "Podrobnosti" - } + }, + "archive_info": "Arhivi se morda ne bodo pravilno izrisali v vrstici, če zahtevajo Javascript. Za najboljše rezultate <1>jih prenesi in odpri v brskalniku</1>." }, "highlights": { "no_highlights": "Še nimaš nobenih poudarkov." diff --git a/apps/web/lib/i18n/locales/sv/translation.json b/apps/web/lib/i18n/locales/sv/translation.json index f97949b7..b03c3d2e 100644 --- a/apps/web/lib/i18n/locales/sv/translation.json +++ b/apps/web/lib/i18n/locales/sv/translation.json @@ -39,7 +39,9 @@ "summary": "Sammanfattning", "quota": "Kvot", "bookmarks": "Bokmärken", - "storage": "Lagring" + "storage": "Lagring", + "pdf": "Arkiverad PDF", + "default": "Standard" }, "layouts": { "grid": "Rutnät", @@ -90,7 +92,9 @@ "confirm": "Bekräfta", "regenerate": "Återskapa", "load_more": "Ladda mer", - "edit_notes": "Redigera anteckningar" + "edit_notes": "Redigera anteckningar", + "preserve_as_pdf": "Spara som PDF", + "offline_copies": "Offlinelagrade kopior" }, "settings": { "back_to_app": "Tillbaka till app", @@ -115,6 +119,49 @@ "show": "Visa arkiverade bokmärken i taggar och listor", "hide": "Dölj arkiverade bokmärken i taggar och listor" } + }, + "reader_settings": { + "local_overrides_title": "Enhetsspecifika inställningar aktiva", + "using_default": "Använder klientstandard", + "clear_override_hint": "Rensa enhetsåsidosättning för att använda global inställning ({{value}})", + "font_size": "Teckenstorlek", + "font_family": "Typsnittsfamilj", + "preview_inline": "(förhandsvisning)", + "tooltip_preview": "Osparade förhandsvisningsändringar", + "save_to_all_devices": "Alla enheter", + "tooltip_local": "Enhetsinställningar skiljer sig från globala", + "reset_preview": "Återställ förhandsvisning", + "mono": "Monospace", + "line_height": "Radhöjd", + "tooltip_default": "Läsningsinställningar", + "title": "Läsarinställningar", + "serif": "Serif", + "preview": "Förhandsgranskning", + "not_set": "Ej inställt", + "clear_local_overrides": "Rensa enhetsinställningar", + "preview_text": "The quick brown fox jumps over the lazy dog. Så här kommer din läsarvytext att se ut.", + "local_overrides_cleared": "Enhetsspecifika inställningar har rensats", + "local_overrides_description": "Den här enheten har läsarinställningar som skiljer sig från dina globala standardinställningar:", + "clear_defaults": "Rensa alla standardvärden", + "description": "Konfigurera standardtextinställningar för läsarvyn. Dessa inställningar synkroniseras mellan alla dina enheter.", + "defaults_cleared": "Läsarstandardvärden har rensats", + "save_hint": "Spara inställningar endast för den här enheten eller synkronisera över alla enheter", + "save_as_default": "Spara som standard", + "save_to_device": "Den här enheten", + "sans": "Sans Serif", + "tooltip_preview_and_local": "Osparade ändringar i förhandsvisningen; enhetsinställningarna skiljer sig från de globala", + "adjust_hint": "Justera inställningarna ovan för att förhandsvisa ändringarna" + }, + "avatar": { + "upload": "Ladda upp avatar", + "change": "Ändra avatar", + "remove_confirm_title": "Ta bort avatar?", + "updated": "Avatar uppdaterad", + "removed": "Avatar borttagen", + "description": "Ladda upp en kvadratisk bild för att använda som din avatar.", + "remove_confirm_description": "Detta kommer att ta bort ditt nuvarande profilfoto.", + "title": "Profilbild", + "remove": "Ta bort avatar" } }, "feeds": { @@ -134,7 +181,21 @@ "image_tagging": "Bildtaggning", "summarization": "Sammanfattning", "summarization_prompt": "Sammanfattningsprompt", - "all_tagging": "All taggning" + "all_tagging": "All taggning", + "tag_style": "Taggstil", + "auto_summarization_description": "Generera automatisk sammanfattning för dina bokmärken genom att använda AI.", + "auto_tagging": "Automatisk taggning", + "titlecase_spaces": "Versala inledande bokstäver med mellanslag", + "lowercase_underscores": "Små bokstäver med understreck", + "inference_language": "Språk för inferens", + "titlecase_hyphens": "Versala inledande bokstäver med bindestreck", + "lowercase_hyphens": "Små bokstäver med bindestreck", + "lowercase_spaces": "Små bokstäver med mellanslag", + "inference_language_description": "Välj språk för AI-genererade taggar och sammanfattningar.", + "tag_style_description": "Välj hur dina automatiskt genererade taggar ska formateras.", + "auto_tagging_description": "Generera automatiskt taggar för dina bokmärken genom att använda AI.", + "camelCase": "camelCase", + "auto_summarization": "Automatisk sammanfattning" }, "import": { "import_export": "Importera / exportera", @@ -144,6 +205,7 @@ "import_bookmarks_from_karakeep_export": "Importera bokmärken från Karakeep-export", "import_bookmarks_from_html_file": "Importera bokmärken från HTML-fil", "import_bookmarks_from_pocket_export": "Importera bokmärken från Pocket-export", + "import_bookmarks_from_matter_export": "Importera bokmärken från Matter-export", "export_links_and_notes": "Exportera länkar och anteckningar", "import_bookmarks_from_linkwarden_export": "Importera bokmärken från Linkwarden-export", "import_bookmarks_from_tab_session_manager_export": "Importera bokmärken från Tab Session Manager", @@ -705,7 +767,8 @@ "deleted": "Bokmärket har raderats!", "delete_from_list": "Bokmärket har raderats från listan", "clipboard_copied": "Länken har lags till i ditt urklipp!", - "refetch": "Hämtning har köats!" + "refetch": "Hämtning har köats!", + "preserve_pdf": "PDF-sparande har triggats" }, "lists": { "created": "Listan har skapats!", @@ -732,7 +795,8 @@ "tabs": { "content": "Innehåll", "details": "Detaljer" - } + }, + "archive_info": "Arkiv kanske inte återges korrekt inbäddade om de kräver Javascript. För bästa resultat, <1>ladda ner den och öppna den i din webbläsare</1>." }, "dialogs": { "bookmarks": { @@ -778,7 +842,14 @@ "year_s_ago": " År sedan", "history": "Senaste sökningar", "title_contains": "Titeln innehåller", - "title_does_not_contain": "Titeln innehåller inte" + "title_does_not_contain": "Titeln innehåller inte", + "is_broken_link": "Har trasig länk", + "tags": "Taggar", + "no_suggestions": "Inga förslag", + "filters": "Filter", + "is_not_broken_link": "Har fungerande länk", + "lists": "Listor", + "feeds": "Feeds" }, "highlights": { "no_highlights": "Du har inga markeringar ännu." diff --git a/apps/web/lib/i18n/locales/tr/translation.json b/apps/web/lib/i18n/locales/tr/translation.json index 97af51e0..8cd31dc0 100644 --- a/apps/web/lib/i18n/locales/tr/translation.json +++ b/apps/web/lib/i18n/locales/tr/translation.json @@ -39,7 +39,9 @@ "summary": "Özet", "quota": "Kota", "bookmarks": "Yer İmleri", - "storage": "Depolama" + "storage": "Depolama", + "pdf": "Arşivlenmiş PDF", + "default": "Varsayılan" }, "layouts": { "masonry": "Döşeme", @@ -90,7 +92,9 @@ "confirm": "Onayla", "regenerate": "Yeniden oluştur", "load_more": "Daha Fazla Yükle", - "edit_notes": "Notları Düzenle" + "edit_notes": "Notları Düzenle", + "preserve_as_pdf": "PDF olarak sakla", + "offline_copies": "Çevrimdışı Kopyalar" }, "highlights": { "no_highlights": "Henüz hiçbir öne çıkarılmış içeriğiniz yok." @@ -119,6 +123,49 @@ "show": "Arşivlenmiş yer imlerini etiketlerde ve listelerde göster", "hide": "Arşivlenmiş yer imlerini etiketlerde ve listelerde gizle" } + }, + "reader_settings": { + "local_overrides_title": "Cihaza özel ayarlar etkin", + "using_default": "İstemci varsayılanı kullanılıyor", + "clear_override_hint": "Genel ayarı ({{value}}) kullanmak için cihaz geçersiz kılmasını temizle", + "font_size": "Yazı Tipi Boyutu", + "font_family": "Yazı Tipi Ailesi", + "preview_inline": "(önizleme)", + "tooltip_preview": "Kaydedilmemiş önizleme değişiklikleri", + "save_to_all_devices": "Tüm cihazlar", + "tooltip_local": "Cihaz ayarları, genel ayarlardan farklı", + "reset_preview": "Önizlemeyi sıfırla", + "mono": "Tek Aralık", + "line_height": "Satır Yüksekliği", + "tooltip_default": "Okuma ayarları", + "title": "Okuyucu Ayarları", + "serif": "Serif", + "preview": "Önizleme", + "not_set": "Ayarlanmadı", + "clear_local_overrides": "Cihaz ayarlarını temizle", + "preview_text": "Hızlı kahverengi tilki tembel köpeğin üzerinden atlar. Okuyucu görünümü metniniz bu şekilde görünecek.", + "local_overrides_cleared": "Cihaza özel ayarlar temizlendi", + "local_overrides_description": "Bu cihaz, genel varsayılanlarınızdan farklı okuyucu ayarlarına sahiptir:", + "clear_defaults": "Tüm varsayılanları temizle", + "description": "Okuyucu görünümü için varsayılan metin ayarlarını yapılandır. Bu ayarlar tüm cihazlarınızda senkronize edilir.", + "defaults_cleared": "Okuyucu varsayılanları temizlendi", + "save_hint": "Ayarları yalnızca bu cihaz için kaydet veya tüm cihazlarda senkronize et", + "save_as_default": "Varsayılan olarak kaydet", + "save_to_device": "Bu cihaz", + "sans": "Sans Serif", + "tooltip_preview_and_local": "Kaydedilmemiş önizleme değişiklikleri; cihaz ayarları genel ayarlardan farklı", + "adjust_hint": "Değişiklikleri önizlemek için yukarıdaki ayarları düzenle" + }, + "avatar": { + "upload": "Avatar yükle", + "change": "Avatarı değiştir", + "remove_confirm_title": "Avatarı kaldırılsın mı?", + "updated": "Avatar güncellendi", + "removed": "Avatar silindi", + "description": "Avatarınız olarak kullanmak için kare bir resim yükleyin.", + "remove_confirm_description": "Bu, mevcut profil fotoğrafınızı temizleyecek.", + "title": "Profil Fotoğrafı", + "remove": "Avatarı kaldır" } }, "ai": { @@ -132,7 +179,21 @@ "summarization_prompt": "Özetleme İstemi", "all_tagging": "Tüm Etiketleme", "text_tagging": "Metin Etiketleme", - "summarization": "Özetleme" + "summarization": "Özetleme", + "tag_style": "Etiket Stili", + "auto_summarization_description": "Yapay zeka kullanarak yer işaretlerin için otomatik olarak özet oluştur.", + "auto_tagging": "Otomatik etiketleme", + "titlecase_spaces": "Büyük harf ve boşluklu", + "lowercase_underscores": "Küçük harf ve alt çizgili", + "inference_language": "Çıkarım Dili", + "titlecase_hyphens": "Büyük harf ve tireli", + "lowercase_hyphens": "Küçük harf ve tireli", + "lowercase_spaces": "Küçük harf ve boşluklu", + "inference_language_description": "Yapay zeka tarafından oluşturulan etiketler ve özetler için dili seç.", + "tag_style_description": "Otomatik oluşturulan etiketlerinin nasıl biçimlendirileceğini seç.", + "auto_tagging_description": "Yapay zeka kullanarak yer işaretlerin için otomatik olarak etiket oluştur.", + "camelCase": "camelCase", + "auto_summarization": "Otomatik özetleme" }, "feeds": { "rss_subscriptions": "RSS Abonelikleri", @@ -145,6 +206,7 @@ "import_export_bookmarks": "Yer İşaretlerini İçe / Dışa Aktar", "import_bookmarks_from_html_file": "HTML Dosyasından Yer İşaretlerini İçe Aktar", "import_bookmarks_from_pocket_export": "Pocket Dışa Aktarımından Yer İşaretlerini İçe Aktar", + "import_bookmarks_from_matter_export": "Matter Dışa Aktarımından Yer İşaretlerini İçe Aktar", "import_bookmarks_from_omnivore_export": "Omnivore Dışa Aktarımından Yer İşaretlerini İçe Aktar", "import_bookmarks_from_karakeep_export": "Karakeep Dışa Aktarımından Yer İşaretlerini İçe Aktar", "export_links_and_notes": "Bağlantı ve Notları Dışa Aktar", @@ -649,7 +711,8 @@ "tabs": { "content": "İçerik", "details": "Ayrıntılar" - } + }, + "archive_info": "Arşivler Javascript gerektiriyorsa satır içi olarak doğru şekilde işlenmeyebilir. En iyi sonuçlar için, <1>indirin ve tarayıcınızda açın</1>." }, "editor": { "quickly_focus": "Bu alana hızlıca odaklanmak için ⌘ + E tuşlarına basabilirsiniz", @@ -717,7 +780,8 @@ "refetch": "Yeniden getir kuyruğa alındı!", "full_page_archive": "Tüm Sayfa Arşivi oluşturma başlatıldı", "delete_from_list": "Yer işareti listeden silindi", - "clipboard_copied": "Bağlantı panonuza eklendi!" + "clipboard_copied": "Bağlantı panonuza eklendi!", + "preserve_pdf": "PDF olarak saklama tetiklendi" }, "lists": { "created": "Liste oluşturuldu!", @@ -775,7 +839,14 @@ "month_s_ago": " Ay Önce", "history": "Son Aramalar", "title_contains": "Başlık İçeriyor", - "title_does_not_contain": "Başlık İçermiyor" + "title_does_not_contain": "Başlık İçermiyor", + "is_broken_link": "Bozuk Bağlantısı Var", + "tags": "Etiketler", + "no_suggestions": "Öneri yok", + "filters": "Filtreler", + "is_not_broken_link": "Çalışan Bağlantısı Var", + "lists": "Listeler", + "feeds": "Akışlar" }, "dialogs": { "bookmarks": { diff --git a/apps/web/lib/i18n/locales/uk/translation.json b/apps/web/lib/i18n/locales/uk/translation.json index 819584ef..1329db9c 100644 --- a/apps/web/lib/i18n/locales/uk/translation.json +++ b/apps/web/lib/i18n/locales/uk/translation.json @@ -39,7 +39,9 @@ "summary": "Короткий зміст", "quota": "Квота", "bookmarks": "Закладки", - "storage": "Сховище" + "storage": "Сховище", + "pdf": "Архівні PDF", + "default": "За замовчуванням" }, "actions": { "sign_out": "Вийти", @@ -84,7 +86,9 @@ "confirm": "Підтвердити", "regenerate": "Відновити", "load_more": "Завантажити більше", - "edit_notes": "Редагувати примітки" + "edit_notes": "Редагувати примітки", + "preserve_as_pdf": "Зберегти як PDF", + "offline_copies": "Офлайн копії" }, "settings": { "webhooks": { @@ -128,6 +132,49 @@ "show": "Показувати заархівовані закладки в тегах і списках", "hide": "Приховувати заархівовані закладки в тегах і списках" } + }, + "reader_settings": { + "local_overrides_title": "Активні налаштування для конкретного пристрою", + "using_default": "Використовується типове значення клієнта", + "clear_override_hint": "Очистити переналаштування пристрою, щоб використовувати глобальні налаштування ({{value}})", + "font_size": "Розмір шрифту", + "font_family": "Сімейство шрифтів", + "preview_inline": "(попередній перегляд)", + "tooltip_preview": "Не збережені зміни попереднього перегляду", + "save_to_all_devices": "Усі пристрої", + "tooltip_local": "Налаштування пристрою відрізняються від глобальних", + "reset_preview": "Скинути попередній перегляд", + "mono": "Моноширинний", + "line_height": "міжрядковий інтервал", + "tooltip_default": "Налаштування читання", + "title": "Параметри читання", + "serif": "Serif", + "preview": "Перегляд", + "not_set": "Не встановлено", + "clear_local_overrides": "Очистити налаштування пристрою", + "preview_text": "Швидкий бурий лис стрибає через ледачого пса. Ось як виглядатиме ваш текст у режимі читання.", + "local_overrides_cleared": "Налаштування для конкретного пристрою очищено", + "local_overrides_description": "На цьому пристрої параметри читання відрізняються від ваших глобальних типових значень:", + "clear_defaults": "Очистити всі типові налаштування", + "description": "Налаштуйте параметри тексту для перегляду в режимі читання. Ці параметри синхронізуються на всіх ваших пристроях.", + "defaults_cleared": "Типові значення читання очищено", + "save_hint": "Зберегти налаштування тільки для цього пристрою або синхронізувати на всіх пристроях", + "save_as_default": "Зберегти як типові", + "save_to_device": "Цей пристрій", + "sans": "Sans Serif", + "tooltip_preview_and_local": "Не збережені зміни попереднього перегляду; налаштування пристрою відрізняються від глобальних", + "adjust_hint": "Налаштуйте параметри вище, щоб попередньо переглянути зміни" + }, + "avatar": { + "upload": "Завантажити аватар", + "change": "Змінити аватар", + "remove_confirm_title": "Видалити аватар?", + "updated": "Аватар оновлено", + "removed": "Аватар видалено", + "description": "Завантаж квадратне зображення, щоб використовувати його як свій аватар.", + "remove_confirm_description": "Це видалить поточне фото профілю.", + "title": "Фото профілю", + "remove": "Видалити аватар" } }, "ai": { @@ -141,7 +188,21 @@ "image_tagging": "Тегування зображень", "summarization": "Підсумовування", "prompt_preview": "Попередній перегляд підказки", - "tagging_rules": "Правила тегів" + "tagging_rules": "Правила тегів", + "tag_style": "Стиль тегів", + "auto_summarization_description": "Автоматично створюйте підсумки для закладок, використовуючи штучний інтелект.", + "auto_tagging": "Автоматичне тегування", + "titlecase_spaces": "З великої літери з пробілами", + "lowercase_underscores": "З маленької літери з підкресленнями", + "inference_language": "Мова висновування", + "titlecase_hyphens": "З великої літери з дефісами", + "lowercase_hyphens": "З маленької літери з дефісами", + "lowercase_spaces": "З маленької літери з пробілами", + "inference_language_description": "Вибери мову для тегів і підсумків, згенерованих ШІ.", + "tag_style_description": "Обери, як форматуватимуться твої автоматично створені теги.", + "auto_tagging_description": "Автоматично генеруйте теги для своїх закладок за допомогою штучного інтелекту.", + "camelCase": "camelCase", + "auto_summarization": "Автоматичне підсумовування" }, "feeds": { "rss_subscriptions": "RSS-підписки", @@ -154,6 +215,7 @@ "import_export_bookmarks": "Імпорт / Експорт закладок", "import_bookmarks_from_html_file": "Імпортувати закладки з HTML-файлу", "import_bookmarks_from_pocket_export": "Імпортувати закладки з експорту Pocket", + "import_bookmarks_from_matter_export": "Імпортувати закладки з експорту Matter", "import_bookmarks_from_omnivore_export": "Імпорт закладок з експорту Omnivore", "import_bookmarks_from_linkwarden_export": "Імпортувати закладки з експорту Linkwarden", "import_bookmarks_from_karakeep_export": "Імпортувати закладки з експорту Karakeep", @@ -427,7 +489,14 @@ "year_s_ago": " Років тому", "history": "Нещодавні пошуки", "title_contains": "Назва містить", - "title_does_not_contain": "Назва не містить" + "title_does_not_contain": "Назва не містить", + "is_broken_link": "Має недійсне посилання", + "tags": "Теги", + "no_suggestions": "Немає пропозицій", + "filters": "Фільтри", + "is_not_broken_link": "Має дійсне посилання", + "lists": "Списки", + "feeds": "Стрічки новин" }, "preview": { "cached_content": "Кешований вміст", @@ -436,7 +505,8 @@ "tabs": { "details": "Деталі", "content": "Вміст" - } + }, + "archive_info": "Архіви можуть неправильно відображатися вбудовано, якщо їм потрібен Javascript. Для кращого результату, <1>завантажте їх і відкрийте у своєму браузері</1>." }, "layouts": { "masonry": "Кам'яна кладка", @@ -763,7 +833,8 @@ "delete_from_list": "Закладку видалено зі списку", "clipboard_copied": "Посилання додано до вашого буфера обміну!", "updated": "Закладку оновлено!", - "deleted": "Закладку видалено!" + "deleted": "Закладку видалено!", + "preserve_pdf": "Збереження PDF ініційовано" }, "lists": { "created": "Список створено!", diff --git a/apps/web/lib/i18n/locales/vi/translation.json b/apps/web/lib/i18n/locales/vi/translation.json index 920f3435..06993802 100644 --- a/apps/web/lib/i18n/locales/vi/translation.json +++ b/apps/web/lib/i18n/locales/vi/translation.json @@ -42,7 +42,9 @@ "confirm": "Xác nhận", "regenerate": "Tạo lại", "load_more": "Tải thêm", - "edit_notes": "Sửa ghi chú" + "edit_notes": "Sửa ghi chú", + "preserve_as_pdf": "Lưu giữ dưới dạng PDF", + "offline_copies": "Bản sao ngoại tuyến" }, "layouts": { "list": "Danh sách", @@ -65,6 +67,7 @@ "import_export_bookmarks": "Nhập / Xuất đánh dấu trang", "import_bookmarks_from_linkwarden_export": "Nhập dấu trang từ bản xuất Linkwarden", "import_bookmarks_from_pocket_export": "Nhập dấu trang từ bản xuất Pocket", + "import_bookmarks_from_matter_export": "Nhập dấu trang từ bản xuất Matter", "import_bookmarks_from_omnivore_export": "Nhập dấu trang từ xuất Omnivore", "import_bookmarks_from_karakeep_export": "Nhập dấu trang từ bản xuất Karakeep", "import_bookmarks_from_tab_session_manager_export": "Nhập dấu trang từ Tab Session Manager", @@ -111,7 +114,21 @@ "summarization": "Tóm tắt", "all_tagging": "Tất cả nhãn", "image_tagging": "Nhãn cho hình ảnh", - "text_tagging": "Nhãn cho văn bản" + "text_tagging": "Nhãn cho văn bản", + "tag_style": "Kiểu Thẻ", + "auto_summarization_description": "Tự động tạo bản tóm tắt cho dấu trang bằng AI.", + "auto_tagging": "Tự động gắn thẻ", + "titlecase_spaces": "Tiêu đề viết hoa có dấu cách", + "lowercase_underscores": "Chữ thường có dấu gạch dưới", + "inference_language": "Ngôn ngữ Suy luận", + "titlecase_hyphens": "Tiêu đề viết hoa có dấu gạch ngang", + "lowercase_hyphens": "Chữ thường có dấu gạch ngang", + "lowercase_spaces": "Chữ thường có dấu cách", + "inference_language_description": "Chọn ngôn ngữ cho các thẻ và tóm tắt do AI tạo.", + "tag_style_description": "Chọn cách định dạng các thẻ tự động tạo của bạn.", + "auto_tagging_description": "Tự động tạo thẻ cho dấu trang bằng AI.", + "camelCase": "camelCase", + "auto_summarization": "Tự động tóm tắt" }, "info": { "basic_details": "Thông tin cơ bản", @@ -134,6 +151,49 @@ "show": "Hiển thị các bookmark đã lưu trữ trong tag và danh sách", "hide": "Ẩn các bookmark đã lưu trữ trong tag và danh sách" } + }, + "reader_settings": { + "local_overrides_title": "Đã kích hoạt cài đặt dành riêng cho thiết bị", + "using_default": "Sử dụng mặc định của ứng dụng", + "clear_override_hint": "Xóa ghi đè thiết bị để sử dụng cài đặt chung ({{value}})", + "font_size": "Cỡ chữ", + "font_family": "Họ phông chữ", + "preview_inline": "(xem trước)", + "tooltip_preview": "Các thay đổi xem trước chưa được lưu", + "save_to_all_devices": "Tất cả các thiết bị", + "tooltip_local": "Cài đặt thiết bị khác với cài đặt chung", + "reset_preview": "Đặt lại bản xem trước", + "mono": "Đơn cách", + "line_height": "Chiều cao dòng", + "tooltip_default": "Cài đặt đọc", + "title": "Cài đặt Trình đọc", + "serif": "Chân phương", + "preview": "Xem trước", + "not_set": "Chưa đặt", + "clear_local_overrides": "Xóa cài đặt thiết bị", + "preview_text": "Một con cáo nâu nhanh chóng nhảy qua con chó lười biếng. Đây là cách mà văn bản chế độ xem trình đọc của bạn sẽ hiển thị.", + "local_overrides_cleared": "Đã xóa cài đặt cho thiết bị", + "local_overrides_description": "Thiết bị này có các cài đặt trình đọc khác với cài đặt mặc định toàn cầu của bạn:", + "clear_defaults": "Xóa tất cả mặc định", + "description": "Cấu hình cài đặt văn bản mặc định cho chế độ xem trình đọc. Các cài đặt này đồng bộ hóa trên tất cả các thiết bị của bạn.", + "defaults_cleared": "Đã xóa các mặc định của trình đọc", + "save_hint": "Lưu cài đặt chỉ cho thiết bị này hoặc đồng bộ hóa trên tất cả các thiết bị", + "save_as_default": "Lưu làm mặc định", + "save_to_device": "Thiết bị này", + "sans": "Không chân phương", + "tooltip_preview_and_local": "Các thay đổi xem trước chưa được lưu; cài đặt thiết bị khác với cài đặt chung", + "adjust_hint": "Điều chỉnh các cài đặt ở trên để xem trước các thay đổi" + }, + "avatar": { + "upload": "Tải lên ảnh đại diện", + "change": "Đổi ảnh đại diện", + "remove_confirm_title": "Xóa ảnh đại diện?", + "updated": "Đã cập nhật ảnh đại diện", + "removed": "Đã xóa ảnh đại diện", + "description": "Tải lên ảnh vuông để dùng làm ảnh đại diện nha.", + "remove_confirm_description": "Hành động này sẽ xóa ảnh hồ sơ hiện tại của bạn đó.", + "title": "Ảnh hồ sơ", + "remove": "Xóa ảnh đại diện" } }, "user_settings": "Cài đặt người dùng", @@ -523,7 +583,9 @@ "summary": "Tóm tắt", "quota": "Hạn ngạch", "bookmarks": "Dấu trang", - "storage": "Lưu trữ" + "storage": "Lưu trữ", + "pdf": "PDF đã lưu trữ", + "default": "Mặc định" }, "highlights": { "no_highlights": "Bạn chưa có đánh dấu nào." @@ -652,7 +714,14 @@ "year_s_ago": " Năm trước", "history": "Tìm kiếm gần đây", "title_contains": "Chứa trong tiêu đề", - "title_does_not_contain": "Không chứa trong tiêu đề" + "title_does_not_contain": "Không chứa trong tiêu đề", + "is_broken_link": "Có liên kết hỏng", + "tags": "Thẻ", + "no_suggestions": "Không có đề xuất nào", + "filters": "Bộ lọc", + "is_not_broken_link": "Có liên kết hoạt động", + "lists": "Danh sách", + "feeds": "Nguồn cấp dữ liệu" }, "tags": { "all_tags": "Tất cả nhãn", @@ -761,7 +830,8 @@ "refetch": "Đã xếp hàng tìm nạp lại!", "full_page_archive": "Đã kích hoạt tạo bản lưu trữ toàn trang", "delete_from_list": "Đã xóa dấu trang khỏi danh sách", - "clipboard_copied": "Liên kết đã được thêm vào bảng nhớ tạm của bạn!" + "clipboard_copied": "Liên kết đã được thêm vào bảng nhớ tạm của bạn!", + "preserve_pdf": "Đã kích hoạt lưu giữ PDF" }, "lists": { "created": "Đã tạo danh sách!", @@ -781,7 +851,8 @@ "tabs": { "content": "Nội dung", "details": "Chi tiết" - } + }, + "archive_info": "Các bản lưu trữ có thể không hiển thị chính xác nội dòng nếu chúng yêu cầu Javascript. Để có kết quả tốt nhất, <1>hãy tải xuống và mở trong trình duyệt của bạn</1>." }, "bookmark_editor": { "title": "Sửa dấu trang", diff --git a/apps/web/lib/i18n/locales/zh/translation.json b/apps/web/lib/i18n/locales/zh/translation.json index 771f47f8..7f16a5f6 100644 --- a/apps/web/lib/i18n/locales/zh/translation.json +++ b/apps/web/lib/i18n/locales/zh/translation.json @@ -39,7 +39,9 @@ "summary": "摘要", "quota": "配额", "bookmarks": "书签", - "storage": "存储" + "storage": "存储", + "pdf": "已存档的 PDF", + "default": "默认" }, "layouts": { "masonry": "砌体", @@ -90,7 +92,9 @@ "confirm": "确认", "regenerate": "重新生成", "load_more": "加载更多", - "edit_notes": "编辑备注" + "edit_notes": "编辑备注", + "preserve_as_pdf": "另存为 PDF", + "offline_copies": "离线副本" }, "settings": { "back_to_app": "返回应用", @@ -116,6 +120,49 @@ "show": "在标签和列表中显示已存档的书签", "hide": "在标签和列表中隐藏已存档的书签" } + }, + "reader_settings": { + "local_overrides_title": "设备特定的设置已激活", + "using_default": "正在使用客户端默认值", + "clear_override_hint": "清除设备覆盖以使用全局设置({{value}})", + "font_size": "字体大小", + "font_family": "字体系列", + "preview_inline": "(预览)", + "tooltip_preview": "未保存的预览更改", + "save_to_all_devices": "所有设备", + "tooltip_local": "设备设置与全局设置不同", + "reset_preview": "重置预览", + "mono": "等宽", + "line_height": "行高", + "tooltip_default": "阅读设置", + "title": "阅读器设置", + "serif": "衬线", + "preview": "预览", + "not_set": "未设置", + "clear_local_overrides": "清除设备设置", + "preview_text": "敏捷的棕色狐狸跳过懒惰的狗。这是您的阅读器视图文本的显示方式。", + "local_overrides_cleared": "设备特定的设置已清除", + "local_overrides_description": "此设备上的阅读器设置与您的全局默认值不同:", + "clear_defaults": "清除所有默认值", + "description": "配置阅读器视图的默认文本设置。这些设置将在您的所有设备上同步。", + "defaults_cleared": "阅读器默认值已清除", + "save_hint": "仅保存此设备的设置,还是在所有设备同步", + "save_as_default": "保存为默认值", + "save_to_device": "此设备", + "sans": "无衬线", + "tooltip_preview_and_local": "未保存的预览更改;设备设置与全局设置不同", + "adjust_hint": "调整以上设置以预览更改" + }, + "avatar": { + "upload": "上传虚拟形象", + "change": "更改虚拟形象", + "remove_confirm_title": "移除虚拟形象?", + "updated": "虚拟形象已更新", + "removed": "虚拟形象已移除", + "description": "上传一张方形图片作为您的虚拟形象。", + "remove_confirm_description": "这会清除您当前的头像照片。", + "title": "头像照片", + "remove": "移除虚拟形象" } }, "ai": { @@ -129,7 +176,21 @@ "image_tagging": "图片标记", "text_tagging": "文字标记", "all_tagging": "所有标记", - "summarization_prompt": "摘要生成提示" + "summarization_prompt": "摘要生成提示", + "tag_style": "标签样式", + "auto_summarization_description": "使用 AI 自动为你的书签生成摘要。", + "auto_tagging": "自动添加标签", + "titlecase_spaces": "带空格的首字母大写", + "lowercase_underscores": "带下划线的小写", + "inference_language": "推理语言", + "titlecase_hyphens": "带连字符的首字母大写", + "lowercase_hyphens": "带连字符的小写", + "lowercase_spaces": "带空格的小写", + "inference_language_description": "为 AI 生成的标签和摘要选择语言。", + "tag_style_description": "选择自动生成的标签应如何格式化。", + "auto_tagging_description": "使用 AI 自动为你的书签生成标签。", + "camelCase": "驼峰式命名", + "auto_summarization": "自动摘要" }, "feeds": { "rss_subscriptions": "RSS订阅", @@ -142,6 +203,7 @@ "import_export_bookmarks": "导入/导出书签", "import_bookmarks_from_html_file": "从HTML文件导入书签", "import_bookmarks_from_pocket_export": "从Pocket导出导入书签", + "import_bookmarks_from_matter_export": "从Matter导出导入书签", "import_bookmarks_from_omnivore_export": "从Omnivore导出导入书签", "import_bookmarks_from_karakeep_export": "从Karakeep导出导入书签", "export_links_and_notes": "导出链接和笔记", @@ -646,7 +708,8 @@ "tabs": { "content": "内容", "details": "详情" - } + }, + "archive_info": "如果存档需要 Javascript,则可能无法正确地以内联方式呈现。为了获得最佳效果,<1>请下载并在浏览器中打开它</1>。" }, "editor": { "quickly_focus": "您可以按⌘ + E快速聚焦到此字段", @@ -714,7 +777,8 @@ "refetch": "重新获取已排队!", "full_page_archive": "已触发完整页面归档创建", "delete_from_list": "书签已从列表中删除", - "clipboard_copied": "链接已添加到您的剪贴板!" + "clipboard_copied": "链接已添加到您的剪贴板!", + "preserve_pdf": "已触发 PDF 保存" }, "lists": { "created": "列表已创建!", @@ -772,7 +836,14 @@ "week_s_ago": " {weeks} 周前", "history": "最近搜索", "title_contains": "标题包含", - "title_does_not_contain": "标题不包含" + "title_does_not_contain": "标题不包含", + "is_broken_link": "有损坏的链接", + "tags": "标签", + "no_suggestions": "没有建议", + "filters": "筛选器", + "is_not_broken_link": "有可用的链接", + "lists": "列表", + "feeds": "订阅" }, "dialogs": { "bookmarks": { diff --git a/apps/web/lib/i18n/locales/zhtw/translation.json b/apps/web/lib/i18n/locales/zhtw/translation.json index 92c4f41b..cafa02d6 100644 --- a/apps/web/lib/i18n/locales/zhtw/translation.json +++ b/apps/web/lib/i18n/locales/zhtw/translation.json @@ -39,7 +39,9 @@ "summary": "摘要", "quota": "配額", "bookmarks": "書籤", - "storage": "儲存空間" + "storage": "儲存空間", + "pdf": "已封存的 PDF", + "default": "預設" }, "layouts": { "masonry": "瀑布式", @@ -90,7 +92,9 @@ "confirm": "確認", "regenerate": "重新產生", "load_more": "載入更多", - "edit_notes": "編輯註解" + "edit_notes": "編輯註解", + "preserve_as_pdf": "儲存為 PDF", + "offline_copies": "離線副本" }, "settings": { "back_to_app": "返回應用程式", @@ -116,6 +120,49 @@ "open_external_url": "開啟原始網址", "open_bookmark_details": "開啟書籤詳細資訊" } + }, + "reader_settings": { + "local_overrides_title": "裝置專用設定已啟動", + "using_default": "使用用戶端預設值", + "clear_override_hint": "清除裝置覆寫以使用全域設定({{value}})", + "font_size": "字型大小", + "font_family": "字型", + "preview_inline": "(預覽)", + "tooltip_preview": "未儲存的預覽變更", + "save_to_all_devices": "所有裝置", + "tooltip_local": "裝置設定與全域不同", + "reset_preview": "重設預覽", + "mono": "等寬字體", + "line_height": "行高", + "tooltip_default": "閱讀設定", + "title": "閱讀器設定", + "serif": "襯線體", + "preview": "預覽", + "not_set": "未設定", + "clear_local_overrides": "清除裝置設定", + "preview_text": "敏捷的棕色狐狸跳過懶惰的狗。您的閱讀器檢視文字會像這樣顯示。", + "local_overrides_cleared": "裝置專用設定已清除", + "local_overrides_description": "此裝置具有與全域預設值不同的閱讀器設定:", + "clear_defaults": "清除所有預設值", + "description": "設定閱讀器檢視的預設文字設定。這些設定會在您的所有裝置之間同步。", + "defaults_cleared": "閱讀器預設值已清除", + "save_hint": "僅儲存此裝置的設定,或跨所有裝置同步", + "save_as_default": "儲存為預設值", + "save_to_device": "此裝置", + "sans": "無襯線體", + "tooltip_preview_and_local": "未儲存的預覽變更數目;裝置設定與全域不同", + "adjust_hint": "調整以上設定以預覽變更" + }, + "avatar": { + "upload": "上傳頭像", + "change": "變更頭像", + "remove_confirm_title": "要移除頭像嗎?", + "updated": "頭像已更新", + "removed": "頭像已移除", + "description": "上傳一張正方形圖片做為您的頭像。", + "remove_confirm_description": "這會清除您目前的個人資料相片。", + "title": "個人資料相片", + "remove": "移除頭像" } }, "ai": { @@ -129,7 +176,21 @@ "text_tagging": "文字標籤", "image_tagging": "圖片標籤", "summarization": "摘要", - "summarization_prompt": "摘要提示詞" + "summarization_prompt": "摘要提示詞", + "tag_style": "標籤樣式", + "auto_summarization_description": "使用 AI 自動為你的書籤產生摘要。", + "auto_tagging": "自動標記", + "titlecase_spaces": "首字大寫,含空格", + "lowercase_underscores": "小寫,含底線", + "inference_language": "推論語言", + "titlecase_hyphens": "首字大寫,含連字號", + "lowercase_hyphens": "小寫,含連字號", + "lowercase_spaces": "小寫,含空格", + "inference_language_description": "選擇 AI 產生的標籤和摘要的語言。", + "tag_style_description": "選擇自動產生的標籤應如何格式化。", + "auto_tagging_description": "使用 AI 自動為你的書籤產生標籤。", + "camelCase": "駝峰式大小寫", + "auto_summarization": "自動摘要" }, "feeds": { "rss_subscriptions": "RSS 訂閱", @@ -142,6 +203,7 @@ "import_export_bookmarks": "匯入/匯出書籤", "import_bookmarks_from_html_file": "從 HTML 檔案匯入書籤", "import_bookmarks_from_pocket_export": "從 Pocket 匯出檔案匯入書籤", + "import_bookmarks_from_matter_export": "從 Matter 匯出檔案匯入書籤", "import_bookmarks_from_omnivore_export": "從 Omnivore 匯出檔案匯入書籤", "import_bookmarks_from_karakeep_export": "從 Karakeep 匯出檔案匯入書籤", "export_links_and_notes": "匯出連結和筆記", @@ -646,7 +708,8 @@ "tabs": { "content": "內容", "details": "詳細資訊" - } + }, + "archive_info": "如果封存檔需要 Javascript,可能無法正確地內嵌呈現。為了獲得最佳效果,<1>請下載並在瀏覽器中開啟</1>。" }, "editor": { "quickly_focus": "您可以按下 ⌘ + E 快速聚焦此欄位", @@ -714,7 +777,8 @@ "refetch": "已將重新抓取加入佇列!", "full_page_archive": "已觸發完整網頁封存建立", "delete_from_list": "已從清單中移除書籤", - "clipboard_copied": "連結已複製到剪貼簿!" + "clipboard_copied": "連結已複製到剪貼簿!", + "preserve_pdf": "已觸發 PDF 儲存" }, "lists": { "created": "清單已建立!", @@ -772,7 +836,14 @@ "year_s_ago": " 幾年前", "history": "近期搜尋", "title_contains": "標題包含", - "title_does_not_contain": "標題不包含" + "title_does_not_contain": "標題不包含", + "is_broken_link": "連結已損毀", + "tags": "標籤", + "no_suggestions": "沒有任何建議", + "filters": "篩選器", + "is_not_broken_link": "擁有可用的連結", + "lists": "清單", + "feeds": "動態饋給" }, "dialogs": { "bookmarks": { diff --git a/apps/web/lib/providers.tsx b/apps/web/lib/providers.tsx index a3debdb9..8e247f6f 100644 --- a/apps/web/lib/providers.tsx +++ b/apps/web/lib/providers.tsx @@ -1,21 +1,21 @@ "use client"; import type { UserLocalSettings } from "@/lib/userLocalSettings/types"; -import type { Session } from "next-auth"; import React, { useState } from "react"; import { ThemeProvider } from "@/components/theme-provider"; import { TooltipProvider } from "@/components/ui/tooltip"; +import { Session, SessionProvider } from "@/lib/auth/client"; import { UserLocalSettingsCtx } from "@/lib/userLocalSettings/bookmarksLayout"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; -import { httpBatchLink, loggerLink } from "@trpc/client"; -import { SessionProvider } from "next-auth/react"; +import { createTRPCClient, httpBatchLink, loggerLink } from "@trpc/client"; import superjson from "superjson"; import type { ClientConfig } from "@karakeep/shared/config"; +import type { AppRouter } from "@karakeep/trpc/routers/_app"; +import { TRPCProvider } from "@karakeep/shared-react/trpc"; import { ClientConfigCtx } from "./clientConfig"; import CustomI18nextProvider from "./i18n/provider"; -import { api } from "./trpc"; function makeQueryClient() { return new QueryClient({ @@ -59,7 +59,7 @@ export default function Providers({ const queryClient = getQueryClient(); const [trpcClient] = useState(() => - api.createClient({ + createTRPCClient<AppRouter>({ links: [ loggerLink({ enabled: (op) => @@ -80,8 +80,8 @@ export default function Providers({ <ClientConfigCtx.Provider value={clientConfig}> <UserLocalSettingsCtx.Provider value={userLocalSettings}> <SessionProvider session={session}> - <api.Provider client={trpcClient} queryClient={queryClient}> - <QueryClientProvider client={queryClient}> + <QueryClientProvider client={queryClient}> + <TRPCProvider trpcClient={trpcClient} queryClient={queryClient}> <CustomI18nextProvider lang={userLocalSettings.lang}> <ThemeProvider attribute="class" @@ -94,8 +94,8 @@ export default function Providers({ </TooltipProvider> </ThemeProvider> </CustomI18nextProvider> - </QueryClientProvider> - </api.Provider> + </TRPCProvider> + </QueryClientProvider> </SessionProvider> </UserLocalSettingsCtx.Provider> </ClientConfigCtx.Provider> diff --git a/apps/web/lib/readerSettings.tsx b/apps/web/lib/readerSettings.tsx new file mode 100644 index 00000000..5966f287 --- /dev/null +++ b/apps/web/lib/readerSettings.tsx @@ -0,0 +1,155 @@ +"use client"; + +import { + createContext, + useCallback, + useContext, + useMemo, + useState, +} from "react"; + +import { + ReaderSettingsProvider as BaseReaderSettingsProvider, + useReaderSettingsContext, +} from "@karakeep/shared-react/hooks/reader-settings"; +import { + ReaderSettings, + ReaderSettingsPartial, +} from "@karakeep/shared/types/readers"; + +const LOCAL_STORAGE_KEY = "karakeep-reader-settings"; + +function getLocalOverridesFromStorage(): ReaderSettingsPartial { + if (typeof window === "undefined") return {}; + try { + const stored = localStorage.getItem(LOCAL_STORAGE_KEY); + return stored ? JSON.parse(stored) : {}; + } catch { + return {}; + } +} + +function saveLocalOverridesToStorage(overrides: ReaderSettingsPartial): void { + if (typeof window === "undefined") return; + localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(overrides)); +} + +// Session overrides context - web-specific feature for live preview +interface SessionOverridesContextValue { + sessionOverrides: ReaderSettingsPartial; + setSessionOverrides: React.Dispatch< + React.SetStateAction<ReaderSettingsPartial> + >; +} + +const SessionOverridesContext = + createContext<SessionOverridesContextValue | null>(null); + +export function ReaderSettingsProvider({ + children, +}: { + children: React.ReactNode; +}) { + const [sessionOverrides, setSessionOverrides] = + useState<ReaderSettingsPartial>({}); + + const sessionValue = useMemo( + () => ({ + sessionOverrides, + setSessionOverrides, + }), + [sessionOverrides], + ); + + // Memoize callbacks to prevent unnecessary re-renders + const getLocalOverrides = useCallback(getLocalOverridesFromStorage, []); + const saveLocalOverrides = useCallback(saveLocalOverridesToStorage, []); + const onClearSessionOverrides = useCallback(() => { + setSessionOverrides({}); + }, []); + + return ( + <BaseReaderSettingsProvider + getLocalOverrides={getLocalOverrides} + saveLocalOverrides={saveLocalOverrides} + sessionOverrides={sessionOverrides} + onClearSessionOverrides={onClearSessionOverrides} + > + <SessionOverridesContext.Provider value={sessionValue}> + {children} + </SessionOverridesContext.Provider> + </BaseReaderSettingsProvider> + ); +} + +export function useReaderSettings() { + const sessionContext = useContext(SessionOverridesContext); + if (!sessionContext) { + throw new Error( + "useReaderSettings must be used within a ReaderSettingsProvider", + ); + } + + const { sessionOverrides, setSessionOverrides } = sessionContext; + const baseSettings = useReaderSettingsContext(); + + // Update session override (live preview, not persisted) + const updateSession = useCallback( + (updates: ReaderSettingsPartial) => { + setSessionOverrides((prev) => ({ ...prev, ...updates })); + }, + [setSessionOverrides], + ); + + // Clear all session overrides + const clearSession = useCallback(() => { + setSessionOverrides({}); + }, [setSessionOverrides]); + + // Save current settings to local storage (this device only) + const saveToDevice = useCallback(() => { + const newLocalOverrides = { + ...baseSettings.localOverrides, + ...sessionOverrides, + }; + baseSettings.setLocalOverrides(newLocalOverrides); + saveLocalOverridesToStorage(newLocalOverrides); + setSessionOverrides({}); + }, [baseSettings, sessionOverrides, setSessionOverrides]); + + // Clear a single local override + const clearLocalOverride = useCallback( + (key: keyof ReaderSettings) => { + baseSettings.clearLocal(key); + }, + [baseSettings], + ); + + // Check if there are unsaved session changes + const hasSessionChanges = Object.keys(sessionOverrides).length > 0; + + return { + // Current effective settings (what should be displayed) + settings: baseSettings.settings, + + // Raw values for UI indicators + serverSettings: baseSettings.serverDefaults, + localOverrides: baseSettings.localOverrides, + sessionOverrides, + + // State indicators + hasSessionChanges, + hasLocalOverrides: baseSettings.hasLocalOverrides, + isSaving: baseSettings.isSaving, + + // Actions + updateSession, + clearSession, + saveToDevice, + clearLocalOverrides: baseSettings.clearAllLocal, + clearLocalOverride, + saveToServer: baseSettings.saveAsDefault, + updateServerSetting: baseSettings.saveAsDefault, + clearServerDefaults: baseSettings.clearAllDefaults, + }; +} diff --git a/apps/web/lib/trpc.tsx b/apps/web/lib/trpc.tsx deleted file mode 100644 index 1478684f..00000000 --- a/apps/web/lib/trpc.tsx +++ /dev/null @@ -1,7 +0,0 @@ -"use client"; - -import { createTRPCReact } from "@trpc/react-query"; - -import type { AppRouter } from "@karakeep/trpc/routers/_app"; - -export const api = createTRPCReact<AppRouter>(); diff --git a/apps/web/lib/userSettings.tsx b/apps/web/lib/userSettings.tsx index c7a133b7..105e258e 100644 --- a/apps/web/lib/userSettings.tsx +++ b/apps/web/lib/userSettings.tsx @@ -1,11 +1,11 @@ "use client"; import { createContext, useContext } from "react"; +import { useQuery } from "@tanstack/react-query"; +import { useTRPC } from "@karakeep/shared-react/trpc"; import { ZUserSettings } from "@karakeep/shared/types/users"; -import { api } from "./trpc"; - export const UserSettingsContext = createContext<ZUserSettings>({ bookmarkClickAction: "open_original_link", archiveDisplayBehaviour: "show", @@ -13,6 +13,14 @@ export const UserSettingsContext = createContext<ZUserSettings>({ backupsEnabled: false, backupsFrequency: "daily", backupsRetentionDays: 7, + readerFontSize: null, + readerLineHeight: null, + readerFontFamily: null, + autoTaggingEnabled: null, + autoSummarizationEnabled: null, + tagStyle: "as-generated", + curatedTagIds: null, + inferredTagLang: null, }); export function UserSettingsContextProvider({ @@ -22,9 +30,12 @@ export function UserSettingsContextProvider({ userSettings: ZUserSettings; children: React.ReactNode; }) { - const { data } = api.users.settings.useQuery(undefined, { - initialData: userSettings, - }); + const api = useTRPC(); + const { data } = useQuery( + api.users.settings.queryOptions(undefined, { + initialData: userSettings, + }), + ); return ( <UserSettingsContext.Provider value={data}> |
