aboutsummaryrefslogtreecommitdiffstats
path: root/apps/web/lib
diff options
context:
space:
mode:
Diffstat (limited to 'apps/web/lib')
-rw-r--r--apps/web/lib/attachments.tsx4
-rw-r--r--apps/web/lib/auth/client.ts11
-rw-r--r--apps/web/lib/bookmark-drag.ts5
-rw-r--r--apps/web/lib/bulkActions.ts7
-rw-r--r--apps/web/lib/clientConfig.tsx2
-rw-r--r--apps/web/lib/hooks/bookmark-search.ts29
-rw-r--r--apps/web/lib/hooks/relative-time.ts7
-rw-r--r--apps/web/lib/hooks/useBookmarkImport.ts118
-rw-r--r--apps/web/lib/hooks/useImportSessions.ts175
-rw-r--r--apps/web/lib/i18n/client.ts2
-rw-r--r--apps/web/lib/i18n/locales/ar/translation.json83
-rw-r--r--apps/web/lib/i18n/locales/cs/translation.json85
-rw-r--r--apps/web/lib/i18n/locales/da/translation.json83
-rw-r--r--apps/web/lib/i18n/locales/de/translation.json83
-rw-r--r--apps/web/lib/i18n/locales/el/translation.json83
-rw-r--r--apps/web/lib/i18n/locales/en/translation.json223
-rw-r--r--apps/web/lib/i18n/locales/en_US/translation.json75
-rw-r--r--apps/web/lib/i18n/locales/es/translation.json83
-rw-r--r--apps/web/lib/i18n/locales/fa/translation.json83
-rw-r--r--apps/web/lib/i18n/locales/fi/translation.json83
-rw-r--r--apps/web/lib/i18n/locales/fr/translation.json83
-rw-r--r--apps/web/lib/i18n/locales/ga/translation.json83
-rw-r--r--apps/web/lib/i18n/locales/gl/translation.json83
-rw-r--r--apps/web/lib/i18n/locales/hr/translation.json83
-rw-r--r--apps/web/lib/i18n/locales/hu/translation.json83
-rw-r--r--apps/web/lib/i18n/locales/it/translation.json83
-rw-r--r--apps/web/lib/i18n/locales/ja/translation.json83
-rw-r--r--apps/web/lib/i18n/locales/ko/translation.json83
-rw-r--r--apps/web/lib/i18n/locales/nb_NO/translation.json83
-rw-r--r--apps/web/lib/i18n/locales/nl/translation.json83
-rw-r--r--apps/web/lib/i18n/locales/pl/translation.json83
-rw-r--r--apps/web/lib/i18n/locales/pt/translation.json83
-rw-r--r--apps/web/lib/i18n/locales/pt_BR/translation.json83
-rw-r--r--apps/web/lib/i18n/locales/ru/translation.json87
-rw-r--r--apps/web/lib/i18n/locales/sk/translation.json83
-rw-r--r--apps/web/lib/i18n/locales/sl/translation.json83
-rw-r--r--apps/web/lib/i18n/locales/sv/translation.json83
-rw-r--r--apps/web/lib/i18n/locales/tr/translation.json83
-rw-r--r--apps/web/lib/i18n/locales/uk/translation.json83
-rw-r--r--apps/web/lib/i18n/locales/vi/translation.json83
-rw-r--r--apps/web/lib/i18n/locales/zh/translation.json83
-rw-r--r--apps/web/lib/i18n/locales/zhtw/translation.json83
-rw-r--r--apps/web/lib/providers.tsx18
-rw-r--r--apps/web/lib/readerSettings.tsx155
-rw-r--r--apps/web/lib/trpc.tsx7
-rw-r--r--apps/web/lib/userSettings.tsx21
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}>