mirror of
https://github.com/hugo-fixit/FixIt.git
synced 2026-08-24 15:28:57 +00:00
a96ba665ac
* refactor(assets)!: rewrite content encryption with AES-256-GCM and PBKDF2
- Remove legacy Base64 obfuscation layer (content-encryption.html)
- Replace <cipher-text> with <template> for inert content storage
- Single-layer AES-256-GCM encryption via post-build script
- PBKDF2 key derivation (100k iterations) for encryption
- PBKDF2-protected password verification (data-verify-salt)
- Depth-tracking parser for nested shortcode support
- Dev mode: plaintext content used directly without encryption
- Remove crypto-js and xxhash-wasm vendored dependencies
* feat(post-encrypt): prepare package for npm publishing
- Add bin entry, build script, and dist output for npx usage
- Replace @hugo-fixit/shared with standalone implementations
- Add CLI shebang for direct execution
- Add package README with usage documentation
- Remove FIXIT_ENCRYPT_INPUT env var (redundant with --input)
- Add encryption detection warning in assets.html
- Remove Post-build Encryption sections from READMEs
* chore: integrate post-encrypt into build pipeline and use consola
- Replace console with consola for post-encrypt logging
- Improve verification messages (no templates, count, etc.)
- Simplify build scripts: encrypt runs as part of main build
- Update encryption detection warning to use npx command
* feat(assets): add encryption dev warning admonition
- Add danger admonition in single.html for full-page encryption (dev mode only)
- Add encryption detection warning in assets.html console
- Improve post-encrypt verification messages with template count
* feat(assets): improve encryption i18n, cache security, and error handling
- Add encryptionWarning and encryptionCommand i18n keys for all 16 languages
- Store PBKDF2 verification hash in localStorage cache for better security
- Show decryption errors via flashTooltip instead of console only
- Add FixItDecryptor type definitions in global.ts
- Move encryption detection to init/detection-encryption.html with batched warning
- Remove redundant per-page warning from assets.html
* feat(assets): redesign fixit-decryptor UI with card layout
- Page-level: card form with lock icon header, password input with key icon, primary-colored unlock button, circular re-encrypt button
- Shortcode-level: connected input+button design (search bar style) with focus ring sync
- Remove loading spinner, use display:none/flex toggle via .initialized class
- Move lock icon styling to UnoCSS (text-primary text-xl)
- Initialize CellTooltip on re-encrypt button
- Fix JSDoc @param warnings in global.ts
* refactor(assets): unify TOC template and decryptor animations
- TOC always rendered in `<template data-toc>`, containers populated by initToc()
- Moved TOC scroll/resize handling from events.ts to toc.ts (syncTocLayout, syncTocActiveState)
- Removed EventsModule toc dependency, updated public-api.ts constructor
- Removed visibility:hidden from #toc-auto
- Decryptor: form always visible, @starting-style for fade-in on init
- Decryptor: content expand/collapse animation using height + opacity
- Removed encrypted-hidden from TOC elements in single.html
* refactor(assets): add target to fixit:decrypted event and simplify handlers
- Add { target: Element } payload to fixit:decrypted in event-bus.ts
- Remove $content closure from fixit-decryptor init(), use detail.target
- Update content.ts and toc.ts to use detail.target from event
* fix(assets): use eventBus for TOC scroll/resize listeners and eliminate redundant template parsing
- Replace raw window scroll/resize listeners in TocModule with eventBus
subscriptions (fixit:scroll/fixit:resize), reusing EventsModule's
throttle and debounce instead of duplicating un-throttled handlers.
- Refactor hasUnencryptedTemplate in post-encrypt to accept the already-
computed matches array, avoiding a redundant findEncryptionTemplates
call on the same HTML content.
- Remove crypto-js and xxhash-wasm from README credits.
* style(assets): soften decryptor button background and add form hover shadow
* build(workflow): add post-encrypt step to build script
265 lines
6.5 KiB
TOML
265 lines
6.5 KiB
TOML
# Translations for English
|
|
# https://gohugo.io/content-management/multilingual/#translation-of-strings
|
|
|
|
# === Init ===
|
|
[init]
|
|
hugoVersionError = "Hugo version is too low.\n\nCurrent Hugo version is {{ .Current }}, the minimum supported version for FixIt is {{ .Minimal }}.\n\nIf you are running Hugo on your own computer, check out https://gohugo.io/getting-started/installing/#upgrade-hugo for upgrading guide.\n\nIf you are deploying on a third-party platform, please configure Hugo version accordingly."
|
|
hugoExtendedWarn = "The Hugo Extended version is necessary for SCSS support."
|
|
configurationError = "Configuration Error\nYou haven't configured the FixIt version param correctly yet. See https://fixit.lruihao.cn/documentation/basics/#theme-configuration"
|
|
compatibilityError = "Compatibility Error ({{ .From }} -> {{ .To }}):\nYou have an incompatible update. See https://github.com/hugo-fixit/FixIt/releases"
|
|
devVersionWarn = "You are using a development version of FixIt. Please consider using a stable version.\nSee https://github.com/hugo-fixit/FixIt/releases"
|
|
devEnvWarn = "Current environment is \"development\". The \"comment system\", \"PWA\", \"CDN\", \"fingerprint\" and \"analytics\" will be disabled."
|
|
quicklyUpgrade = "Quickly upgrade use command: "
|
|
# === Init ===
|
|
|
|
# === Base Layout ===
|
|
[baseof]
|
|
backToTop = "Back to Top"
|
|
viewComments = "View Comments"
|
|
noscript = "This website works best with JavaScript enabled."
|
|
# === Base Layout ===
|
|
|
|
# === Taxonomy ===
|
|
[archives]
|
|
other = "Archives"
|
|
|
|
[allSome]
|
|
other = "All {{ .Some }}"
|
|
|
|
[category]
|
|
other = "Category"
|
|
|
|
[categories]
|
|
other = "Categories"
|
|
|
|
[collection]
|
|
other = "Collection"
|
|
|
|
[collections]
|
|
other = "Collections"
|
|
|
|
[tag]
|
|
other = "Tag"
|
|
|
|
[tags]
|
|
other = "Tags"
|
|
|
|
[posts]
|
|
other = "Posts"
|
|
|
|
# === Taxonomy ===
|
|
|
|
# === Section ===
|
|
[section]
|
|
recentlyUpdated = "Recently Updated"
|
|
|
|
[section.totalWordCount]
|
|
one = "Total one word"
|
|
other = "Total {{ .Count }} words"
|
|
|
|
[section.archiveCounter]
|
|
one = "Only one article"
|
|
other = "{{ .Count }} articles in total"
|
|
# === Section ===
|
|
|
|
# === Pagination ===
|
|
[pagination]
|
|
more = "More"
|
|
# === Pagination ===
|
|
|
|
# === Header ===
|
|
[header]
|
|
selectLanguage = "Select Language"
|
|
noMoretTranslations = "No more translations"
|
|
switchTheme = "Switch Theme"
|
|
# === Header ===
|
|
|
|
# === Footer ===
|
|
[footer]
|
|
poweredBySome = "Powered by {{ .Hugo }} | Theme - {{ .Theme }}"
|
|
siteUV = "Total visitors"
|
|
sitePV = "Total visits"
|
|
siteRunning = "Website running ..."
|
|
# === Footer ===
|
|
|
|
# === Comment ===
|
|
[comment]
|
|
valinePlaceholder = "Your comment ..."
|
|
# === Comment ===
|
|
|
|
# === Assets ===
|
|
[assets]
|
|
search = "Search"
|
|
searchPlaceholder = "Search titles or contents ..."
|
|
searchIn = "Search in {{ . }}"
|
|
searchBy = "Search by"
|
|
gotoResultsPage = "Go to search results page ..."
|
|
clear = "Clear"
|
|
cancel = "Cancel"
|
|
navigate = "Navigate"
|
|
select = "Select"
|
|
close = "Close"
|
|
refresh = "Refresh"
|
|
noResultsFound = "No results found"
|
|
copyToClipboard = "Copy to clipboard"
|
|
copyText = "Copy"
|
|
copiedText = "Copied"
|
|
toggleLineNumbers = "Toggle line numbers"
|
|
toggleLineWrap = "Toggle code wrap"
|
|
toggleCodeEditable = "Toggle code block editable"
|
|
downloadCode = "Download code"
|
|
expandCode = "Expand or collapse code block"
|
|
fullscreen = "Fullscreen"
|
|
exitFullscreen = "Exit fullscreen"
|
|
cookieconsentMessage = "This website uses Cookies to improve your experience."
|
|
cookieconsentDismiss = "Got it!"
|
|
cookieconsentLink = "Learn more"
|
|
# === Assets ===
|
|
|
|
# === Share ===
|
|
[shareOn]
|
|
other = "Share on"
|
|
# === Share ===
|
|
|
|
# === Single Post ===
|
|
[single]
|
|
contents = "Contents"
|
|
pin = "Pin to top"
|
|
repost = "Repost"
|
|
publishedOnDate = "published on {{ .Date }}"
|
|
views = "views"
|
|
comments = "comments"
|
|
author = "Author"
|
|
updatedOnDate = "Updated on {{ .Date }}"
|
|
readMarkdown = "Read Markdown"
|
|
viewSource = "View source"
|
|
editThisPage = "Edit this page"
|
|
reportIssue = "Report issue"
|
|
openInEditor = "Open in editor"
|
|
back = "Back"
|
|
home = "Home"
|
|
readMore = "Read More"
|
|
expirationReminder = "This article was last updated on {{ .Date }}, the content may be out of date."
|
|
encryptedAbstract = "This article has been encrypted, so its raw content is invisible!"
|
|
encryptedMessage = "Please enter the password"
|
|
password = "Password"
|
|
enterBtn = "Enter"
|
|
encryptyAgain = "Encrypt again"
|
|
encryptionWarning = "Content encryption detected, but they are still in plaintext!"
|
|
encryptionCommand = "Run `npx @hugo-fixit/post-encrypt` after building to actually encrypt them."
|
|
relatedContent = "Related Content"
|
|
|
|
[single.includedIn]
|
|
categories = "included in {{ .Categories }}"
|
|
collections = "included in {{ .Collections }}"
|
|
both = "included in {{ .Categories }} and {{ .Collections }}"
|
|
|
|
[single.wordCount]
|
|
one = "One word"
|
|
other = "{{ .Count }} words"
|
|
|
|
[single.fuzzyWordCount]
|
|
other = "About {{ .Count }} words"
|
|
|
|
[single.readingTime]
|
|
one = "One minute"
|
|
other = "{{ .Count }} minutes"
|
|
|
|
[single.reward]
|
|
donate = "Donate"
|
|
wechatpay = "WeChat Pay"
|
|
alipay = "Alipay"
|
|
paypal = "PayPal"
|
|
bitcoin = "Bitcoin"
|
|
# === Single Post ===
|
|
|
|
# === Error Pages ===
|
|
[pageNotFound]
|
|
other = "Page not found"
|
|
|
|
[pageNotFoundText]
|
|
other = "The page you're looking for doesn't exist. Sorry."
|
|
# === Error Pages ===
|
|
|
|
# === Offline ===
|
|
[offlineTitle]
|
|
other = "Offline"
|
|
|
|
[offlineText]
|
|
other = "You are not connected to the Internet, only cached pages will be available."
|
|
# === Offline ===
|
|
|
|
# === Service Worker ===
|
|
[serviceWorker]
|
|
updateTitle = "Update Available"
|
|
updateText = "A new version of this site is available."
|
|
# === Service Worker ===
|
|
|
|
# === Link Redirection ===
|
|
[linkRedirection]
|
|
title = "Redirection Notice"
|
|
message = "You are about to leave {{ .Title }}, please be aware of your account and property security."
|
|
confirm = "Continue visiting"
|
|
# === Link Redirection ===
|
|
|
|
# === Alert ===
|
|
[alert]
|
|
note = "Note"
|
|
tip = "Tip"
|
|
important = "Important"
|
|
warning = "Warning"
|
|
caution = "Caution"
|
|
# === Alert ===
|
|
|
|
# === Task List ===
|
|
[taskList]
|
|
x = "Checked"
|
|
" " = "Unchecked"
|
|
"/" = "In Progress"
|
|
"-" = "Cancelled"
|
|
"<" = "Scheduled"
|
|
">" = "Rescheduled"
|
|
"!" = "Important"
|
|
"!x" = "Important Checked"
|
|
"?" = "Question"
|
|
# === Task List ===
|
|
|
|
# === Admonition ===
|
|
[admonition]
|
|
note = "Note"
|
|
abstract = "Abstract"
|
|
info = "Info"
|
|
todo = "Todo"
|
|
tip = "Tip"
|
|
success = "Success"
|
|
question = "Question"
|
|
warning = "Warning"
|
|
failure = "Failure"
|
|
danger = "Danger"
|
|
bug = "Bug"
|
|
example = "Example"
|
|
quote = "Quote"
|
|
# === Admonition ===
|
|
|
|
# === Version ===
|
|
[version]
|
|
new = "NEW"
|
|
changed = "CHANGED"
|
|
deleted = "DELETED"
|
|
deprecated = "DEPRECATED"
|
|
# === Version ===
|
|
|
|
# === Diagram ===
|
|
[diagram]
|
|
zoomIn = "Zoom in"
|
|
zoomOut = "Zoom out"
|
|
reset = "Reset"
|
|
download = "Download SVG"
|
|
# === Diagram ===
|
|
|
|
# === Tabs ===
|
|
[tabs]
|
|
diagram = "Diagram"
|
|
code = "Code"
|
|
# === Tabs ===
|