mirror of https://github.com/usememos/memos
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
851 lines
39 KiB
JSON
851 lines
39 KiB
JSON
{
|
|
"about": {
|
|
"blogs": "Blogs",
|
|
"description": "A privacy-first, lightweight note-taking service. Easily capture and share your great thoughts.",
|
|
"documents": "Documents",
|
|
"media": "Media",
|
|
"github-repository": "GitHub Repo",
|
|
"official-website": "Official Website"
|
|
},
|
|
"auth": {
|
|
"create-your-account": "Create your account",
|
|
"host-tip": "You are registering as the Site Host.",
|
|
"new-password": "New password",
|
|
"protected-memo-notice": "This memo is not public. Sign in to continue.",
|
|
"repeat-new-password": "Repeat the new password",
|
|
"sign-in-tip": "Already have an account?",
|
|
"sign-up-tip": "Don't have an account yet?"
|
|
},
|
|
"demo": {
|
|
"banner-description": "Changes are temporary and may be reset.",
|
|
"banner-title": "Memos demo",
|
|
"deploy-link": "Deploy your Memos"
|
|
},
|
|
"attachment-library": {
|
|
"actions": {
|
|
"open": "Open",
|
|
"retry": "Retry"
|
|
},
|
|
"empty": {
|
|
"audio": "No audio attachments yet.",
|
|
"documents": "No document attachments yet.",
|
|
"media": "No media attachments yet."
|
|
},
|
|
"errors": {
|
|
"load": "Failed to load attachments."
|
|
},
|
|
"labels": {
|
|
"live": "Live",
|
|
"live-photo": "Live Photo",
|
|
"memo": "Memo",
|
|
"not-linked": "Not linked",
|
|
"unknown-date": "Unknown date",
|
|
"unused": "Unused"
|
|
},
|
|
"tabs": {
|
|
"audio": "Audio",
|
|
"documents": "Documents",
|
|
"media": "Media"
|
|
},
|
|
"unused": {
|
|
"confirm-description": "This removes every uploaded file that is not linked to a memo.",
|
|
"description": "These uploads were never attached to a memo. Review or remove them here.",
|
|
"title": "Unlinked uploads"
|
|
}
|
|
},
|
|
"common": {
|
|
"about": "About",
|
|
"add": "Add",
|
|
"admin": "Admin",
|
|
"all": "All",
|
|
"archive": "Archive",
|
|
"archived": "Archived",
|
|
"attachments": "Attachments",
|
|
"auto-expand": "Auto expand",
|
|
"avatar": "Avatar",
|
|
"basic": "Basic",
|
|
"beta": "Beta",
|
|
"calendar": "Calendar",
|
|
"cancel": "Cancel",
|
|
"change": "Change",
|
|
"clear": "Clear",
|
|
"close": "Close",
|
|
"collapse": "Collapse",
|
|
"confirm": "Confirm",
|
|
"copy": "Copy",
|
|
"create": "Create",
|
|
"created-at": "Created at",
|
|
"database": "Database",
|
|
"day": "Day",
|
|
"days": {
|
|
"fri": "Fri",
|
|
"mon": "Mon",
|
|
"sat": "Sat",
|
|
"sun": "Sun",
|
|
"thu": "Thu",
|
|
"tue": "Tue",
|
|
"wed": "Wed"
|
|
},
|
|
"delete": "Delete",
|
|
"description": "Description",
|
|
"edit": "Edit",
|
|
"empty-placeholder": "Empty",
|
|
"email": "Email",
|
|
"expand": "Expand",
|
|
"explore": "Explore",
|
|
"file": "File",
|
|
"filter": "Filter",
|
|
"home": "Home",
|
|
"image": "Image",
|
|
"in": "In",
|
|
"inbox": "Inbox",
|
|
"input": "Input",
|
|
"language": "Language",
|
|
"last-updated-at": "Last updated at",
|
|
"learn-more": "Learn more",
|
|
"link": "Link",
|
|
"map": "Map",
|
|
"mark": "Mark",
|
|
"memo": "Memo",
|
|
"memos": "Memos",
|
|
"more": "More",
|
|
"name": "Name",
|
|
"new": "New",
|
|
"nickname": "Nickname",
|
|
"null": "Null",
|
|
"or": "or",
|
|
"password": "Password",
|
|
"pin": "Pin",
|
|
"pinned": "Pinned",
|
|
"preview": "Preview",
|
|
"profile": "Profile",
|
|
"properties": "Properties",
|
|
"referenced-by": "Referenced by",
|
|
"referencing": "Referencing",
|
|
"relations": "Relations",
|
|
"remember-me": "Remember me",
|
|
"rename": "Rename",
|
|
"reset": "Reset",
|
|
"resources": "Resources",
|
|
"restore": "Restore",
|
|
"role": "Role",
|
|
"save": "Save",
|
|
"search": "Search",
|
|
"select": "Select",
|
|
"settings": "Settings",
|
|
"share": "Share",
|
|
"shortcut-filter": "Shortcut filter",
|
|
"shortcuts": "Shortcuts",
|
|
"sign-in": "Sign in",
|
|
"sign-in-with": "Sign in with {{provider}}",
|
|
"sign-out": "Sign out",
|
|
"sign-up": "Sign up",
|
|
"statistics": "Statistics",
|
|
"tags": "Tags",
|
|
"title": "Title",
|
|
"today": "Today",
|
|
"tree-mode": "Tree mode",
|
|
"type": "Type",
|
|
"unlink": "Unlink",
|
|
"unpin": "Unpin",
|
|
"update": "Update",
|
|
"upload": "Upload",
|
|
"user": "User",
|
|
"username": "Username",
|
|
"version": "Version",
|
|
"visibility": "Visibility",
|
|
"yourself": "Yourself"
|
|
},
|
|
"locale-picker": {
|
|
"no-language-feedback": "Language not found? Submit feedback"
|
|
},
|
|
"editor": {
|
|
"add-your-comment-here": "Add your comment here...",
|
|
"any-thoughts": "Any thoughts...",
|
|
"exit-focus-mode": "Exit Focus Mode",
|
|
"focus-mode": "Focus Mode",
|
|
"formatting-toolbar": "Formatting toolbar",
|
|
"format": {
|
|
"heading": "Heading",
|
|
"paragraph": "Paragraph",
|
|
"heading-1": "Heading 1",
|
|
"heading-2": "Heading 2",
|
|
"heading-3": "Heading 3",
|
|
"bold": "Bold",
|
|
"italic": "Italic",
|
|
"code": "Inline code",
|
|
"bullet-list": "Bullet list",
|
|
"ordered-list": "Numbered list",
|
|
"task-list": "To-do list",
|
|
"link": "Link",
|
|
"link-prompt": "Enter a URL",
|
|
"more": "More formatting"
|
|
},
|
|
"insert-menu": {
|
|
"add-location": "Add location",
|
|
"link-memo": "Link memo",
|
|
"upload-file": "Upload file"
|
|
},
|
|
"no-changes-detected": "No changes detected",
|
|
"save": "Save",
|
|
"saving": "Saving...",
|
|
"unsupported-syntax-raw-mode": "This memo contains syntax the rich-text editor can't safely edit, so it opened in raw Markdown mode.",
|
|
"wysiwyg-editor": "WYSIWYG Editor",
|
|
"audio-recorder": {
|
|
"attachment-label": "Audio recording",
|
|
"attachment-label-with-time": "Audio recording {{time}}",
|
|
"configure-ai-provider": "Configure an AI provider first",
|
|
"discard": "Discard",
|
|
"error": "Microphone unavailable",
|
|
"error-description": "Try again after checking microphone access for this site.",
|
|
"idle-description": "Start recording to add an audio recording as an attachment.",
|
|
"keep": "Keep recording",
|
|
"pause-recording": "Pause audio recording",
|
|
"play-recording": "Play audio recording",
|
|
"ready": "Recording ready",
|
|
"ready-description": "Preview the clip, then keep it as an audio attachment or discard it.",
|
|
"record-again": "Record again",
|
|
"recording": "Recording audio",
|
|
"recording-description": "Capture a quick audio attachment. Current length: {{duration}}",
|
|
"requesting": "Requesting access...",
|
|
"requesting-permission": "Requesting microphone access",
|
|
"requesting-permission-description": "Allow microphone access in your browser to start recording.",
|
|
"start": "Start recording",
|
|
"stop": "Stop recording",
|
|
"title": "Audio recorder",
|
|
"transcribe": "Transcribe",
|
|
"transcribe-empty": "No speech detected",
|
|
"transcribe-error": "Failed to transcribe audio",
|
|
"transcribe-success": "Transcription added",
|
|
"transcribing": "Transcribing...",
|
|
"trigger": "Record audio",
|
|
"unsupported": "Audio recording unsupported",
|
|
"unsupported-description": "This browser cannot record audio from the memo composer."
|
|
}
|
|
},
|
|
"inbox": {
|
|
"failed-to-load": "Failed to load inbox item",
|
|
"memo-comment": "{{user}} has a comment on your {{memo}}.",
|
|
"no-archived": "No archived notifications",
|
|
"no-unread": "No unread notifications",
|
|
"unread": "Unread"
|
|
},
|
|
"live-update": {
|
|
"connected": "Live updates active",
|
|
"connecting": "Connecting to live updates...",
|
|
"disconnected": "Live updates unavailable"
|
|
},
|
|
"markdown": {
|
|
"checkbox": "Checkbox",
|
|
"code-block": "Code block",
|
|
"content-syntax": "Content syntax"
|
|
},
|
|
"memo": {
|
|
"archived-at": "Archived at",
|
|
"click-to-hide-sensitive-content": "Click to hide sensitive content",
|
|
"click-to-show-sensitive-content": "Click to show sensitive content",
|
|
"code": "Code",
|
|
"comment": {
|
|
"self": "Comments",
|
|
"write-a-comment": "Write a comment"
|
|
},
|
|
"copy-content": "Copy Content",
|
|
"copy-link": "Copy Link",
|
|
"count-memos-in-date": "{{count}} {{memos}} in {{date}}",
|
|
"count-memos-updated-in-date": "{{count}} {{memos}} updated on {{date}}",
|
|
"delete-confirm": "Are you sure you want to delete this memo?",
|
|
"delete-confirm-description": "This action is irreversible. Attachments, links, and references will also be removed.",
|
|
"direction": "Direction",
|
|
"direction-asc": "Ascending",
|
|
"direction-desc": "Descending",
|
|
"display-time": "Display Time",
|
|
"filters": {
|
|
"has-code": "hasCode",
|
|
"has-link": "hasLink",
|
|
"has-task-list": "hasTaskList",
|
|
"label": "Filters"
|
|
},
|
|
"compact-mode": "Compact mode",
|
|
"link-preview": "Link preview",
|
|
"links": "Links",
|
|
"load-more": "Load more",
|
|
"no-archived-memos": "No archived memos.",
|
|
"no-memos": "No memos.",
|
|
"new-badge": "New",
|
|
"newest-first": "Newest first",
|
|
"oldest-first": "Oldest first",
|
|
"order": "Order",
|
|
"order-by": "Order By",
|
|
"outline": "Outline",
|
|
"search-placeholder": "Search memos...",
|
|
"shown-time": "Shown time",
|
|
"share": {
|
|
"active-links": "Active share links",
|
|
"copied": "Copied!",
|
|
"copy": "Copy link",
|
|
"create-failed": "Failed to create share link",
|
|
"create-link": "Create new link",
|
|
"creating": "Creating…",
|
|
"expiry-1-day": "1 day",
|
|
"expiry-30-days": "30 days",
|
|
"expiry-7-days": "7 days",
|
|
"expiry-label": "Expires",
|
|
"expiry-never": "Never",
|
|
"image-description": "Preview rendered at your current device width ({{width}}px).",
|
|
"image-download": "Download PNG",
|
|
"image-download-failed": "Failed to export image",
|
|
"image-downloaded": "Image saved",
|
|
"image-footer": "Shared from Memos",
|
|
"image-share": "Share image",
|
|
"image-share-failed": "Failed to share image",
|
|
"image-title": "Share as image",
|
|
"expires-on": "Expires {{date}}",
|
|
"invalid-link": "This link is invalid or has expired.",
|
|
"never-expires": "Never expires",
|
|
"no-links": "No share links yet. Create one below.",
|
|
"open-image": "Share as image",
|
|
"open-panel": "Manage share links",
|
|
"revoke": "Revoke",
|
|
"revoke-failed": "Failed to revoke link",
|
|
"revoked": "Share link revoked",
|
|
"section-label": "Sharing",
|
|
"share": "Share",
|
|
"shared-by": "Shared by {{creator}}",
|
|
"title": "Share this memo"
|
|
},
|
|
"show-less": "Show less",
|
|
"show-more": "Show more",
|
|
"to-do": "To-do",
|
|
"task-actions": {
|
|
"check-all": "Check all tasks",
|
|
"title": "Tasks",
|
|
"uncheck-all": "Uncheck all tasks",
|
|
"updated": "Tasks updated"
|
|
},
|
|
"view-detail": "View Detail",
|
|
"visibility": {
|
|
"disabled": "Public memos are disabled",
|
|
"private": "Private",
|
|
"protected": "Protected",
|
|
"public": "Public"
|
|
}
|
|
},
|
|
"message": {
|
|
"archived-successfully": "Archived successfully",
|
|
"change-memo-created-time": "Change memo created time",
|
|
"copied": "Copied",
|
|
"deleted-successfully": "Memo deleted successfully",
|
|
"description-is-required": "Description is required",
|
|
"failed-to-embed-memo": "Failed to embed memo",
|
|
"fill-all": "Please fill in all fields.",
|
|
"fill-all-required-fields": "Please fill all required fields",
|
|
"maximum-upload-size-is": "Maximum allowed upload size is {{size}} MiB",
|
|
"memo-not-found": "Memo not found.",
|
|
"new-password-not-match": "New passwords do not match.",
|
|
"no-data": "No data found.",
|
|
"password-changed": "Password Changed",
|
|
"password-not-match": "Passwords do not match.",
|
|
"restored-successfully": "Restored successfully",
|
|
"succeed-copy-content": "Content copied successfully.",
|
|
"succeed-copy-link": "Link copied successfully.",
|
|
"update-succeed": "Update succeeded",
|
|
"user-not-found": "User not found"
|
|
},
|
|
"reference": {
|
|
"add-references": "Add references",
|
|
"embedded-usage": "Use as Embedded Content",
|
|
"no-memos-found": "No memos found",
|
|
"search-placeholder": "Search content"
|
|
},
|
|
"resource": {
|
|
"clear": "Clear",
|
|
"copy-link": "Copy Link",
|
|
"create-dialog": {
|
|
"external-link": {
|
|
"file-name": "File name",
|
|
"file-name-placeholder": "File name",
|
|
"link": "Link",
|
|
"link-placeholder": "https://the.link.to/your/resource",
|
|
"option": "External link",
|
|
"type": "Type",
|
|
"type-placeholder": "File type"
|
|
},
|
|
"local-file": {
|
|
"choose": "Choose a file…",
|
|
"option": "Local file"
|
|
},
|
|
"title": "Create Resource",
|
|
"upload-method": "Upload method"
|
|
},
|
|
"delete-all-unused": "Delete all unused",
|
|
"delete-all-unused-confirm": "Are you sure you want to delete all unused resources? THIS ACTION IS IRREVERSIBLE",
|
|
"delete-all-unused-error": "Failed to delete unused resources",
|
|
"delete-all-unused-success": "Resources deleted successfully",
|
|
"delete-resource": "Delete Resource",
|
|
"delete-selected-resources": "Delete Selected Resources",
|
|
"fetching-data": "Fetching data…",
|
|
"file-drag-drop-prompt": "Drag and drop your file here to upload file",
|
|
"linked-amount": "Linked amount",
|
|
"no-files-selected": "No files selected",
|
|
"no-resources": "No resources.",
|
|
"no-unused-resources": "No unused resources",
|
|
"reset-link": "Reset Link",
|
|
"reset-link-prompt": "Are you sure you want to reset the link? This will break all current link usages. THIS ACTION IS IRREVERSIBLE",
|
|
"reset-resource-link": "Reset Resource Link",
|
|
"unused-resources": "Unused resources"
|
|
},
|
|
"router": {
|
|
"back-to-top": "Back to Top",
|
|
"go-to-home": "Go to Home"
|
|
},
|
|
"setting": {
|
|
"access-token": {
|
|
"access-token-copied-to-clipboard": "Access token copied to clipboard",
|
|
"access-token-deleted": "Access token `{{description}}` deleted",
|
|
"access-token-deletion": "Are you sure you want to delete access token `{{description}}`?",
|
|
"access-token-deletion-description": "This action is irreversible. You will need to update any services using this token to use a new token.",
|
|
"create-dialog": {
|
|
"access-token-created": "Access token `{{description}}` created",
|
|
"create-access-token": "Create Access Token",
|
|
"created-at": "Created At",
|
|
"description": "Description",
|
|
"duration-1m": "1 Month",
|
|
"duration-8h": "8 Hours",
|
|
"duration-never": "Never",
|
|
"expiration": "Expiration",
|
|
"expires-at": "Expires At",
|
|
"some-description": "Some description..."
|
|
},
|
|
"description": "A list of all access tokens for your account.",
|
|
"title": "Access Tokens",
|
|
"token": "Token",
|
|
"no-tokens-found": "No access tokens found"
|
|
},
|
|
"account": {
|
|
"change-password": "Change password",
|
|
"danger-area": "Danger area",
|
|
"danger-area-description": "Irreversible account actions live here. Review them carefully before continuing.",
|
|
"delete-account": "Delete account",
|
|
"delete-account-description": "Permanently remove this account and all associated access from this instance. This action cannot be undone.",
|
|
"email-note": "Optional",
|
|
"export-memos": "Export Memos",
|
|
"nickname-note": "Displayed in the banner",
|
|
"openapi-reset": "Reset OpenAPI Key",
|
|
"openapi-sample-post": "Hello #memos from {{url}}",
|
|
"openapi-title": "OpenAPI",
|
|
"reset-api": "Reset API",
|
|
"title": "Account Information",
|
|
"update-information": "Update Information",
|
|
"username-note": "Used to sign in"
|
|
},
|
|
"ai": {
|
|
"add-provider": "Add provider",
|
|
"api-key": "API key",
|
|
"api-key-required": "API key is required.",
|
|
"byok-description": "Connect OpenAI or Gemini with an API key from your own account. Memos calls the provider directly from this server.",
|
|
"byok-key-note": "Use a key from your provider account; Memos does not bundle shared AI credentials.",
|
|
"byok-label": "BYOK",
|
|
"byok-model-note": "Memos selects supported models for features like audio transcription.",
|
|
"byok-storage-note": "Keys stay on this instance and are masked when settings are loaded.",
|
|
"byok-title": "Use your own AI account",
|
|
"configured": "Configured",
|
|
"current-key": "Current key: {{key}}",
|
|
"default-endpoint": "Default endpoint",
|
|
"delete-provider": "Delete AI provider `{{title}}`?",
|
|
"description": "Provider keys are supplied by the instance owner and used by server-side AI features.",
|
|
"dialog-description": "Add a key from your own provider account. Memos uses built-in models for each provider; leave the API key blank while editing to keep the stored key.",
|
|
"edit-provider": "Edit provider",
|
|
"endpoint": "Endpoint",
|
|
"endpoint-hint": "Leave empty to use the official provider endpoint.",
|
|
"integrations-description": "Provider keys are supplied by the instance owner and used by server-side AI features.",
|
|
"integrations-title": "AI integrations",
|
|
"keep-api-key": "Leave blank to keep the existing key",
|
|
"label": "AI",
|
|
"no-providers": "No AI providers configured.",
|
|
"provider-title": "Provider name",
|
|
"provider-title-required": "Provider name is required.",
|
|
"provider-type": "Provider type",
|
|
"providers": "Providers",
|
|
"transcription-description": "Speech-to-text settings used when recording audio in the memo composer.",
|
|
"transcription-empty-providers": "Add an AI integration first to enable transcription.",
|
|
"transcription-language-help": "ISO 639-1 short code (e.g. en, de, zh). Leave empty to auto-detect.",
|
|
"transcription-language-placeholder": "auto-detect",
|
|
"transcription-language": "Default language",
|
|
"transcription-model-help": "Free text. Use the provider's model identifier — e.g. whisper-1, gpt-4o-transcribe, whisper-large-v3-turbo.",
|
|
"transcription-model-placeholder-gemini": "gemini-2.5-flash, gemini-2.5-pro",
|
|
"transcription-model-placeholder-openai": "whisper-1, gpt-4o-transcribe, gpt-4o-mini-transcribe, gpt-4o-transcribe-diarize",
|
|
"transcription-model": "Model",
|
|
"transcription-no-provider": "None — transcription disabled",
|
|
"transcription-prompt-help": "Improves spelling of proper nouns and jargon. OpenAI Whisper treats this as a soft hint (Whisper limit is roughly 224 tokens). Gemini treats it as a literal instruction inside the generation prompt.",
|
|
"transcription-prompt-placeholder": "Names: Alice, Bob. Glossary: kubernetes, OAuth.",
|
|
"transcription-prompt": "Prompt hints",
|
|
"transcription-provider": "Provider",
|
|
"transcription-title": "Transcription",
|
|
"transcription-warning-no-key": "The selected provider has no API key set. Edit the integration above to add one."
|
|
},
|
|
"instance": {
|
|
"access-description": "Control sign-up, authentication, profile editing, and calendar defaults for this instance.",
|
|
"access-title": "Access and policies",
|
|
"disallow-change-nickname-description": "Prevent users from changing their display name.",
|
|
"disallow-change-nickname": "Disallow changing nickname",
|
|
"disallow-change-username-description": "Prevent users from changing their login username.",
|
|
"disallow-change-username": "Disallow changing username",
|
|
"disallow-password-auth-description": "Require users to sign in through an identity provider instead of password login.",
|
|
"disallow-password-auth": "Disallow password auth",
|
|
"disallow-user-registration-description": "Prevent new users from creating accounts from the sign-up page.",
|
|
"disallow-user-registration": "Disallow user registration",
|
|
"monday": "Monday",
|
|
"saturday": "Saturday",
|
|
"sunday": "Sunday",
|
|
"week-start-day-description": "Controls the first day shown in calendar-style views.",
|
|
"week-start-day": "Week start day"
|
|
},
|
|
"member": {
|
|
"active": "Active",
|
|
"admin": "Admin",
|
|
"archive-member": "Archive member",
|
|
"archived": "Archived",
|
|
"archive-success": "{{username}} archived successfully",
|
|
"archive-warning": "Are you sure you want to archive {{username}}?",
|
|
"archive-warning-description": "Archiving disables the account. You can restore or delete it later.",
|
|
"create-a-member": "Create a member",
|
|
"delete-member": "Delete Member",
|
|
"delete-success": "{{username}} deleted successfully",
|
|
"delete-warning": "Are you sure you want to delete {{username}}?",
|
|
"delete-warning-description": "THIS ACTION IS IRREVERSIBLE",
|
|
"label": "Member",
|
|
"list-title": "Member list",
|
|
"member-column": "Member",
|
|
"restore-success": "{{username}} restored successfully",
|
|
"summary-column": "Summary",
|
|
"user": "User",
|
|
"no-members-found": "No members found"
|
|
},
|
|
"memo": {
|
|
"add-reaction": "Add reaction",
|
|
"bytes-unit": "bytes",
|
|
"configured-reactions": "Configured reactions",
|
|
"content-length-limit": "Content length limit (Byte)",
|
|
"content-length-limit-description": "Maximum memo body size accepted by the server.",
|
|
"double-click-edit-description": "Allow users to open memo editing by double-clicking a memo.",
|
|
"editing-description": "Control memo editing behavior and server-side content limits.",
|
|
"editing-title": "Editing",
|
|
"enable-blur-sensitive-content": "Enable sensitive content blurring",
|
|
"enable-memo-comments": "Enable memo comments",
|
|
"enable-memo-location": "Enable memo location",
|
|
"label": "Memo",
|
|
"reaction-placeholder": "e.g. 👍",
|
|
"reactions-description": "Define the reaction options users can apply to memos.",
|
|
"remove-reaction": "Remove reaction",
|
|
"reactions": "Reactions",
|
|
"title": "Memo related settings",
|
|
"reactions-required": "Reactions list must not be empty"
|
|
},
|
|
"my-account": {
|
|
"label": "My Account"
|
|
},
|
|
"notification": {
|
|
"email-description": "Send email copies for memo comments and mentions. Gmail works with smtp.gmail.com, port 587, STARTTLS, and an app password.",
|
|
"email-enabled": "Enable email notifications",
|
|
"email-enabled-description": "Email is sent in addition to the in-app inbox notification. Fill the required fields before enabling this for users.",
|
|
"email-title": "Email delivery",
|
|
"from-email": "From email",
|
|
"from-email-description": "Sender address shown in notification emails. For Gmail, use the same Gmail account as the SMTP username.",
|
|
"from-name": "From name",
|
|
"from-name-description": "Display name shown next to the sender address. Leave blank to show only the email address.",
|
|
"label": "Notifications",
|
|
"reply-to": "Reply-To",
|
|
"reply-to-description": "Address for replies to notification emails. Leave blank to receive replies at the From email address.",
|
|
"requirement-gmail": "Required for Gmail",
|
|
"requirement-optional": "Optional",
|
|
"requirement-recommended": "Recommended",
|
|
"requirement-required": "Required",
|
|
"smtp-host": "SMTP host",
|
|
"smtp-host-description": "SMTP server hostname. Use smtp.gmail.com for Gmail.",
|
|
"smtp-password": "SMTP password",
|
|
"smtp-password-description": "SMTP password or app-specific token. Gmail requires a Google app password, not your regular account password.",
|
|
"smtp-password-placeholder-existing": "Leave blank to keep current password",
|
|
"smtp-password-preserve-description": "Leave blank to keep the existing SMTP password. Enter a new app password only when rotating credentials.",
|
|
"smtp-port": "SMTP port",
|
|
"smtp-port-description": "Use 587 with STARTTLS for Gmail and most providers. Use 465 only when enabling SSL/TLS.",
|
|
"smtp-username": "SMTP username",
|
|
"smtp-username-description": "Authentication username. Gmail requires your full Gmail address.",
|
|
"test-email": "Send test email",
|
|
"test-email-missing-recipient": "Set an email address on your account before sending a test email.",
|
|
"test-email-sending": "Sending test email...",
|
|
"test-email-success": "Test email sent to {{email}}.",
|
|
"use-ssl": "Use SSL/TLS",
|
|
"use-ssl-description": "Use implicit TLS, usually with port 465. Turn this off when using STARTTLS on port 587.",
|
|
"use-tls": "Use STARTTLS",
|
|
"use-tls-description": "Upgrade the SMTP connection with STARTTLS. Keep this on for Gmail with port 587."
|
|
},
|
|
"preference": {
|
|
"appearance-description": "Choose how the app looks and which language it uses for your account.",
|
|
"appearance-title": "Appearance",
|
|
"default-memo-sort-option": "Memo display time",
|
|
"default-memo-visibility": "Default memo visibility",
|
|
"default-memo-visibility-description": "Visibility applied to newly created memos unless changed in the editor.",
|
|
"label": "Preferences",
|
|
"language-description": "Updates the interface language immediately and saves it to your account.",
|
|
"memo-defaults-description": "Set the defaults used when composing new memos.",
|
|
"memo-defaults-title": "Memo defaults",
|
|
"theme-description": "Applies the selected theme immediately on this device.",
|
|
"theme": "Theme"
|
|
},
|
|
"shortcut": {
|
|
"delete-confirm": "Are you sure you want to delete shortcut `{{title}}`?",
|
|
"delete-success": "Shortcut `{{title}}` deleted successfully"
|
|
},
|
|
"sso": {
|
|
"account": "Account",
|
|
"accounts-description": "Review each identity provider, see the current link state, and connect or disconnect external identities from this account.",
|
|
"accounts-title": "SSO Accounts",
|
|
"authorization-endpoint": "Authorization endpoint",
|
|
"avatar-url": "Avatar URL",
|
|
"basic-settings": "Basic settings",
|
|
"basic-settings-description": "Set the provider identity, display name, and optional identifier rules before filling in the OAuth details.",
|
|
"client-id": "Client ID",
|
|
"client-secret": "Client secret",
|
|
"client-secret-optional-description": "Leave blank to keep the existing client secret unchanged.",
|
|
"configuration": "Configuration",
|
|
"configuration-summary-description": "Show the essentials that help identify and audit a provider without exposing the full configuration inline.",
|
|
"confirm-delete": "Are you sure you want to delete `{{name}}` SSO configuration? THIS ACTION IS IRREVERSIBLE",
|
|
"create-sso": "Create SSO",
|
|
"create-sso-description": "Create a new identity provider for administrator-managed single sign-on.",
|
|
"custom": "Custom",
|
|
"delete-sso": "Confirm delete",
|
|
"disabled-password-login-warning": "Password-login is disabled, be extra careful when removing identity providers",
|
|
"endpoints": "Endpoints",
|
|
"display-name": "Display Name",
|
|
"extern-uid": "External ID",
|
|
"extern-uid-description": "This is the provider-side identity currently linked to your account.",
|
|
"filter-disabled": "Disabled",
|
|
"identifier": "Identifier",
|
|
"identifier-filter": "Identifier Filter",
|
|
"identifier-filter-description": "Optional regex used to allow or restrict which external identifiers may sign in.",
|
|
"field-mapping": "Claims mapping",
|
|
"field-mapping-description": "Map the upstream profile fields used to identify the user and prefill profile data.",
|
|
"field-mapping-identifier-description": "Used as the stable external identifier when signing in or linking an account.",
|
|
"linked": "Linked",
|
|
"label": "SSO",
|
|
"mapping": "Mapping",
|
|
"mapping-avatar-short": "avatar",
|
|
"mapping-display-name-short": "name",
|
|
"mapping-email-short": "email",
|
|
"mapping-identifier-short": "id",
|
|
"mapping-none": "Not configured",
|
|
"no-sso-found": "No SSO found.",
|
|
"not-linked": "Not linked",
|
|
"not-linked-description": "No external identity is linked yet. You can connect this provider to sign in with it later.",
|
|
"oauth-configuration": "OAuth configuration",
|
|
"oauth-configuration-description": "Fill in the OAuth client credentials and the provider endpoints used during sign-in.",
|
|
"provider": "Provider",
|
|
"provider-id": "Provider ID",
|
|
"provider-id-description": "Lowercase letters, numbers, and hyphens only. This value becomes part of the provider resource name.",
|
|
"provider-uid": "UID",
|
|
"redirect-url": "Redirect URL",
|
|
"redirect-url-description": "Register this callback URL with your identity provider so the authorization code flow can complete.",
|
|
"scope-count_one": "{{count}} scope",
|
|
"scope-count_other": "{{count}} scopes",
|
|
"scopes": "Scopes",
|
|
"scopes-description": "Separate scopes with spaces. Most providers only need a small set such as profile or email access.",
|
|
"single-sign-on": "Configuring Single Sign-On (SSO) for Authentication",
|
|
"sso-created": "SSO {{name}} created",
|
|
"sso-list": "SSO List",
|
|
"sso-updated": "SSO {{name}} updated",
|
|
"template": "Template",
|
|
"template-description": "Start from a provider preset, then adjust the credentials and endpoints for your tenant.",
|
|
"unlink-success": "Unlinked {{name}}.",
|
|
"token-endpoint": "Token endpoint",
|
|
"update-sso": "Update SSO",
|
|
"update-sso-description": "Review the provider configuration, then save the fields that should change.",
|
|
"user-endpoint": "User endpoint"
|
|
},
|
|
"storage": {
|
|
"accesskey": "Access key",
|
|
"accesskey-description": "Access key ID for the bucket or S3-compatible service.",
|
|
"accesskey-placeholder": "Access key / Access ID",
|
|
"badge-default": "Default",
|
|
"badge-recommended": "Recommended",
|
|
"bucket": "Bucket",
|
|
"bucket-description": "Bucket where new attachment objects will be stored.",
|
|
"bucket-placeholder": "Bucket name",
|
|
"create-a-service": "Create a service",
|
|
"create-storage": "Create Storage",
|
|
"current-storage": "Attachment storage",
|
|
"current-storage-description": "Choose where new attachments are stored. Existing attachments remain in their current storage location.",
|
|
"database-description": "Store attachment blobs directly in the application database.",
|
|
"database-note-backup": "Simple to back up together with notes on small instances.",
|
|
"database-note-size": "The database can grow quickly with many or large attachments.",
|
|
"delete-storage": "Delete Storage",
|
|
"endpoint": "Endpoint",
|
|
"endpoint-description": "Service endpoint, such as an AWS S3, Cloudflare R2, MinIO, or other compatible URL.",
|
|
"filepath-template": "Filepath template",
|
|
"filepath-template-description": "Used by local and S3 storage. Supports {timestamp}, {uuid}, and {filename}. Default: assets/{timestamp}_{uuid}_{filename}.",
|
|
"insecure-skip-tls-verify": "Skip TLS verification",
|
|
"insecure-skip-tls-verify-description": "Disable TLS certificate verification for the S3 endpoint. Enable only for trusted endpoints using a self-signed certificate; this removes protection against man-in-the-middle attacks.",
|
|
"label": "Storage",
|
|
"local-description": "Store new attachments on the server file system. This is the default for new instances.",
|
|
"local-note-backup": "Persist and back up the attachment directory, especially in Docker or container deployments.",
|
|
"local-note-path": "Relative paths are written under the instance profile data directory.",
|
|
"local-storage-path": "Local storage path",
|
|
"path": "Storage Path",
|
|
"path-description": "You can use the same dynamic variables from local storage, like {filename}",
|
|
"path-placeholder": "custom/path",
|
|
"presign-placeholder": "Pre-sign URL, optional",
|
|
"region": "Region",
|
|
"region-description": "Region required by the provider. For some compatible services, any provider-accepted region string is enough.",
|
|
"region-placeholder": "Region name",
|
|
"s3-configuration": "S3 configuration",
|
|
"s3-configuration-description": "Configure an S3-compatible bucket for new attachments.",
|
|
"s3-description": "Store new attachments in an S3-compatible object storage service.",
|
|
"s3-note-config": "Requires a valid endpoint, region, bucket, credentials, permissions, and server network access.",
|
|
"s3-note-scale": "Best for large attachment libraries, cloud deployments, or multiple application instances.",
|
|
"s3-compatible-url": "S3 Compatible URL",
|
|
"secretkey": "Secret key",
|
|
"secretkey-description": "Secret access key for the bucket or S3-compatible service.",
|
|
"secretkey-preserve-description": "Leave blank to keep the existing secret key.",
|
|
"secretkey-placeholder": "Secret key / Access Key",
|
|
"selected-backend": "Selected",
|
|
"storage-services": "Storage services",
|
|
"type-database": "Database",
|
|
"type-local": "Local file system",
|
|
"type-s3": "S3-compatible storage",
|
|
"update-a-service": "Update a service",
|
|
"update-local-path": "Update Local Storage Path",
|
|
"update-local-path-description": "Local storage path is a relative path to your database file",
|
|
"update-storage": "Update Storage",
|
|
"url-prefix": "URL prefix",
|
|
"url-prefix-placeholder": "Custom URL prefix, optional",
|
|
"url-suffix": "URL suffix",
|
|
"url-suffix-placeholder": "Custom URL suffix, optional",
|
|
"use-path-style": "Use path-style URLs",
|
|
"use-path-style-description": "Enable this for providers such as MinIO or some S3-compatible services that do not support virtual-hosted-style buckets.",
|
|
"warning-text": "Are you sure you want to delete storage service `{{name}}`? THIS ACTION IS IRREVERSIBLE"
|
|
},
|
|
"system": {
|
|
"additional-script": "Additional script",
|
|
"additional-script-description": "Inject JavaScript into every web page. Use only trusted code.",
|
|
"additional-script-placeholder": "Additional JavaScript code",
|
|
"additional-style": "Additional style",
|
|
"additional-style-description": "Inject CSS into the web app to adjust instance-wide presentation.",
|
|
"additional-style-placeholder": "Additional CSS code",
|
|
"allow-user-signup": "Allow user signup",
|
|
"basic-description": "Configure the public identity shown by this instance.",
|
|
"customize-server": {
|
|
"description": "Description",
|
|
"icon-url": "Icon URL",
|
|
"locale": "Server Locale",
|
|
"title": "Customize Server"
|
|
},
|
|
"custom-code-description": "Optional instance-wide CSS and JavaScript applied to the frontend.",
|
|
"custom-code-title": "Custom code",
|
|
"disable-password-login": "Disable password login",
|
|
"disable-password-login-final-warning": "Please type `CONFIRM` if you know what you are doing.",
|
|
"disable-password-login-warning": "This will disable password login for all users. It is not possible to log in without reverting this setting in the database if your configured identity providers fail. You'll also have to be extra careful when removing an identity provider",
|
|
"display-with-updated-time": "Display with updated time",
|
|
"enable-auto-compact": "Enable auto compact",
|
|
"enable-double-click-to-edit": "Enable double click to edit",
|
|
"enable-password-login": "Enable password login",
|
|
"enable-password-login-warning": "This will enable password login for all users. Continue only if you want to users to be able to log in using both SSO and password",
|
|
"label": "System",
|
|
"max-upload-size": "Maximum upload size (MiB)",
|
|
"max-upload-size-hint": "Recommended value is 32 MiB.",
|
|
"removed-completed-task-list-items": "Enable removal of completed task list items",
|
|
"server-name": "Server Name",
|
|
"title": "General"
|
|
},
|
|
"select-section": "Select section",
|
|
"version": "Version",
|
|
"webhook": {
|
|
"create-dialog": {
|
|
"an-easy-to-remember-name": "An easy-to-remember name",
|
|
"copy-secret": "Copy signing secret",
|
|
"create-webhook": "Create webhook",
|
|
"create-webhook-success": "Webhook `{{name}}` created",
|
|
"edit-webhook": "Edit webhook",
|
|
"generate-secret": "Generate",
|
|
"payload-url": "Payload URL",
|
|
"reveal-secret": "Reveal",
|
|
"signing-secret": "Signing Secret",
|
|
"signing-secret-auto-note": "A signing secret is generated automatically. You can reveal it after creating.",
|
|
"signing-secret-configured": "Configured",
|
|
"signing-secret-created-note": "Webhook created. Copy the signing secret now — you can also reveal it later from Edit.",
|
|
"signing-secret-not-configured": "Not configured",
|
|
"title": "Title",
|
|
"url-example-post-receive": "https://example.com/postreceive"
|
|
},
|
|
"delete-dialog": {
|
|
"delete-webhook-description": "This action is irreversible.",
|
|
"delete-webhook-success": "Webhook `{{name}}` deleted successfully",
|
|
"delete-webhook-title": "Are you sure you want to delete webhook `{{name}}`?"
|
|
},
|
|
"no-webhooks-found": "No webhooks found.",
|
|
"title": "Webhooks",
|
|
"url": "URL",
|
|
"label": "Webhooks"
|
|
},
|
|
"tags": {
|
|
"label": "Tags",
|
|
"title": "Tag metadata",
|
|
"description": "Assign optional display colors to tags instance-wide, or blur matching memo content. Tag names are treated as anchored regex patterns.",
|
|
"add-rule": "Add rule",
|
|
"background-color": "Background color",
|
|
"blur-content": "Blur content",
|
|
"configured-rules": "Configured rules",
|
|
"default-color": "Default",
|
|
"matching-rule": "Anchored regex",
|
|
"no-tags-configured": "No tag metadata configured.",
|
|
"tag-name": "Tag name",
|
|
"tag-name-placeholder": "e.g. work or project/.*",
|
|
"tag-already-exists": "Tag already exists.",
|
|
"tag-pattern-hint": "Tag name or regex pattern (e.g. project/.* matches all project/ tags)",
|
|
"invalid-regex": "Invalid or unsafe regex pattern.",
|
|
"used-count": "{{count}} memos",
|
|
"using-default-color": "Using default color."
|
|
},
|
|
"resource-stats": {
|
|
"label": "Resources",
|
|
"title": "Resource Statistics",
|
|
"description": "Resource usage for this instance.",
|
|
"database": {
|
|
"title": "Database",
|
|
"driver": "Driver",
|
|
"size": "Size"
|
|
},
|
|
"local-storage": {
|
|
"title": "Local Storage",
|
|
"size": "Data directory size"
|
|
},
|
|
"unknown": "Unknown",
|
|
"last-updated": "Last updated {{ago}}",
|
|
"refresh": "Refresh",
|
|
"load-error": "Failed to load statistics"
|
|
}
|
|
},
|
|
"tag": {
|
|
"all-tags": "All Tags",
|
|
"create-tag": "Create Tag",
|
|
"create-tags-guide": "You can create tags by inputting `#tag`.",
|
|
"delete-confirm": "Are you sure you want to delete this tag? All related memos will be archived.",
|
|
"delete-success": "Tag deleted successfully",
|
|
"delete-tag": "Delete Tag",
|
|
"new-name": "New Name",
|
|
"no-tag-found": "No tag found",
|
|
"old-name": "Old Name",
|
|
"rename-error-empty": "Tag name cannot be empty or contain spaces",
|
|
"rename-error-repeat": "New name cannot be the same as the old name",
|
|
"rename-success": "Renamed tag successfully",
|
|
"rename-tag": "Rename tag",
|
|
"rename-tip": "All your memos with this tag will be updated."
|
|
},
|
|
"tooltip": {
|
|
"link-memo": "Link Memo",
|
|
"markdown-menu": "Markdown",
|
|
"select-location": "Location",
|
|
"select-visibility": "Visibility",
|
|
"tags": "Tags",
|
|
"upload-attachment": "Upload Attachment(s)"
|
|
}
|
|
}
|