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
7.1 KiB
TOML
265 lines
7.1 KiB
TOML
# Translations for Romanian
|
|
# Traduceri pentru limba română
|
|
# https://gohugo.io/content-management/multilingual/#translation-of-strings
|
|
|
|
# === Init ===
|
|
[init]
|
|
hugoVersionError = "Versiunea Hugo este prea veche.\n\nVersiunea curentă Hugo este {{ .Current }}, versiunea minimă compatibilă cu FixIt este {{ .Minimal }}.\n\nDacă rulați Hugo pe propriul computer, consultați https://gohugo.io/getting-started/installing/#upgrade-hugo pentru ghidul de actualizare.\n\nDacă implementați pe o platformă terță, configurați versiunea Hugo corespunzător."
|
|
hugoExtendedWarn = "Versiunea Hugo Extended este necesară pentru suportul SCSS."
|
|
configurationError = "Eroare de configurare\nNu ați configurat corect parametrul versiunii FixIt. Consultați https://fixit.lruihao.cn/documentation/basics/#theme-configuration"
|
|
compatibilityError = "Eroare de compatibilitate ({{ .From }} -> {{ .To }}):\nAveți o actualizare incompatibilă. Consultați https://github.com/hugo-fixit/FixIt/releases"
|
|
devVersionWarn = "Utilizați o versiune de dezvoltare a FixIt. Vă rugăm să luați în considerare utilizarea unei versiuni stabile.\nConsultați https://github.com/hugo-fixit/FixIt/releases"
|
|
devEnvWarn = "Mediul curent este \"dezvoltare\". \"Sistemul de comentarii\", \"PWA\", \"CDN\", \"amprentă\" și \"analize\" vor fi dezactivate."
|
|
quicklyUpgrade = "Actualizare rapidă utilizați comanda: "
|
|
# === Init ===
|
|
|
|
# === Base Layout ===
|
|
[baseof]
|
|
backToTop = "Înapoi Sus"
|
|
viewComments = "Vizualizare Comentarii"
|
|
noscript = "Acest site funcționează cel mai bine cu JavaScript activat."
|
|
# === Base Layout ===
|
|
|
|
# === Taxonomy ===
|
|
[archives]
|
|
other = "Arhive"
|
|
|
|
[allSome]
|
|
other = "Toate {{ .Some }}"
|
|
|
|
[category]
|
|
other = "Categorie"
|
|
|
|
[categories]
|
|
other = "Categorii"
|
|
|
|
[collection]
|
|
other = "Colecție"
|
|
|
|
[collections]
|
|
other = "Colecții"
|
|
|
|
[tag]
|
|
other = "Etichetă"
|
|
|
|
[tags]
|
|
other = "Etichete"
|
|
|
|
[posts]
|
|
other = "Articole"
|
|
# === Taxonomy ===
|
|
|
|
# === Section ===
|
|
[section]
|
|
recentlyUpdated = "Actualizat recent"
|
|
|
|
[section.totalWordCount]
|
|
one = "Un cuvânt"
|
|
other = "Total {{ .Count }} cuvinte"
|
|
|
|
[section.archiveCounter]
|
|
one = "Un singur articol"
|
|
other = "{{ .Count }} articole în total"
|
|
# === Section ===
|
|
|
|
# === Pagination ===
|
|
[pagination]
|
|
more = "Mai mult"
|
|
# === Pagination ===
|
|
|
|
# === Header ===
|
|
[header]
|
|
selectLanguage = "Selectare Limbă"
|
|
noMoretTranslations = "Nu mai sunt traduceri disponibile"
|
|
switchTheme = "Schimbare Temă"
|
|
# === Header ===
|
|
|
|
# === Footer ===
|
|
[footer]
|
|
poweredBySome = "Realizat de către {{ .Hugo }} | Temă - {{ .Theme }}"
|
|
siteUV = "Total vizitatori"
|
|
sitePV = "Total vizite"
|
|
siteRunning = "Site-ul rulează ..."
|
|
# === Footer ===
|
|
|
|
# === Comment ===
|
|
[comment]
|
|
valinePlaceholder = "Comentariul dvs ..."
|
|
# === Comment ===
|
|
|
|
# === Assets ===
|
|
[assets]
|
|
search = "Căutare"
|
|
searchPlaceholder = "Căutarea titlului sau conținutului articolului ..."
|
|
searchIn = "Căutare în {{ . }}"
|
|
searchBy = "Căutare prin"
|
|
gotoResultsPage = "Mergi la pagina de rezultate a căutării ..."
|
|
clear = "Golire"
|
|
cancel = "Anulare"
|
|
navigate = "Navigare"
|
|
select = "Selectare"
|
|
close = "Închide"
|
|
refresh = "Reîmprospătare"
|
|
noResultsFound = "Nici un rezultat gasit"
|
|
copyToClipboard = "Copiați în clipboard"
|
|
copyText = "Copiază"
|
|
copiedText = "Copiat"
|
|
toggleLineNumbers = "Comută numerele de linie"
|
|
toggleLineWrap = "Comută înfășurarea liniei"
|
|
toggleCodeEditable = "Comută blocul de cod editabil"
|
|
downloadCode = "Descarcă codul"
|
|
expandCode = "Extinde sau restrânge blocul de cod"
|
|
fullscreen = "Ecran complet"
|
|
exitFullscreen = "Ieși din ecran complet"
|
|
cookieconsentMessage = "Acest site web utilizează Cookies pentru a vă îmbunătăți experiența."
|
|
cookieconsentDismiss = "De acord"
|
|
cookieconsentLink = "Aflați mai multe"
|
|
# === Assets ===
|
|
|
|
# === Share ===
|
|
[shareOn]
|
|
other = "Distribuie pe"
|
|
# === Share ===
|
|
|
|
# === Single Post ===
|
|
[single]
|
|
contents = "Cuprins"
|
|
pin = "Fixează în partea de sus"
|
|
repost = "Repostează"
|
|
publishedOnDate = "publicat la {{ .Date }}"
|
|
views = "vizualizări"
|
|
comments = "comentarii"
|
|
author = "Autor"
|
|
updatedOnDate = "Actualizat la {{ .Date }}"
|
|
readMarkdown = "Citire Markdown"
|
|
viewSource = "Vezi sursa"
|
|
editThisPage = "Editați această pagină"
|
|
reportIssue = "Raportează o problemă"
|
|
openInEditor = "Deschide în editor"
|
|
back = "Înapoi"
|
|
home = "Acasă"
|
|
readMore = "Citește mai mult"
|
|
expirationReminder = "Acest articol a fost actualizat ultima dată pe {{ .Date }}, conținutul poate fi depășit."
|
|
encryptedAbstract = "Acest articol a fost criptat, astfel încât conținutul său brut este invizibil!"
|
|
encryptedMessage = "Vă rugăm să introduceți parola"
|
|
password = "Parolă"
|
|
enterBtn = "Intră"
|
|
encryptyAgain = "Criptează din nou"
|
|
encryptionWarning = "Criptarea conținutului a fost detectată, dar sunt încă în text clar!"
|
|
encryptionCommand = "Rulați `npx @hugo-fixit/post-encrypt` după compilare pentru a le cripta efectiv."
|
|
relatedContent = "Conținut înrudit"
|
|
|
|
[single.includedIn]
|
|
categories = "inclus în {{ .Categories }}"
|
|
collections = "inclus în {{ .Collections }}"
|
|
both = "inclus în {{ .Categories }} și {{ .Collections }}"
|
|
|
|
[single.wordCount]
|
|
one = "Un cuvânt"
|
|
other = "{{ .Count }} cuvinte"
|
|
|
|
[single.fuzzyWordCount]
|
|
other = "Aproximativ {{ .Count }} cuvinte"
|
|
|
|
[single.readingTime]
|
|
one = "Un minut"
|
|
other = "{{ .Count }} minute"
|
|
|
|
[single.reward]
|
|
# donate = "Donați"
|
|
wechatpay = "WeChat Pay"
|
|
alipay = "Alipay"
|
|
paypal = "PayPal"
|
|
bitcoin = "Bitcoin"
|
|
# === Single Post ===
|
|
|
|
# === Error Pages ===
|
|
[pageNotFound]
|
|
other = "Pagina nu a fost găsită"
|
|
|
|
[pageNotFoundText]
|
|
other = "Pagina pe care o căutați nu există. Ne cerem scuze."
|
|
# === Error Pages ===
|
|
|
|
# === Offline ===
|
|
[offlineTitle]
|
|
other = "Deconectat"
|
|
|
|
[offlineText]
|
|
other = "Nu sunteți conectat la Internet, vor fi disponibile doar paginile stocate în cache."
|
|
# === Offline ===
|
|
|
|
# === Service Worker ===
|
|
[serviceWorker]
|
|
updateTitle = "Actualizare disponibilă"
|
|
updateText = "O nouă versiune a acestui site este disponibilă."
|
|
# === Service Worker ===
|
|
|
|
# === Link Redirection ===
|
|
[linkRedirection]
|
|
title = "Notificare de redirecționare"
|
|
message = "Urmează să părăsiți {{ .Title }}. Vă rugăm să acordați atenție securității contului și bunurilor dvs."
|
|
confirm = "Continuă vizitarea"
|
|
# === Link Redirection ===
|
|
|
|
# === Alert ===
|
|
[alert]
|
|
note = "Notă"
|
|
tip = "Sfat"
|
|
important = "Important"
|
|
warning = "Avertisment"
|
|
caution = "Atenție"
|
|
# === Alert ===
|
|
|
|
# === Task List ===
|
|
[taskList]
|
|
x = "Controlat"
|
|
" " = "Necontrolat"
|
|
"/" = "În progres"
|
|
"-" = "Anulat"
|
|
"<" = "Programat"
|
|
">" = "Reprogramat"
|
|
"!" = "Important"
|
|
"!x" = "Important Verificat"
|
|
"?" = "Întrebare"
|
|
# === Task List ===
|
|
|
|
# === Admonition ===
|
|
[admonition]
|
|
note = "Notă"
|
|
abstract = "Rezumat"
|
|
info = "Info"
|
|
todo = "De făcut"
|
|
tip = "Sfat"
|
|
success = "Succes"
|
|
question = "Întrebare"
|
|
warning = "Avertizare"
|
|
failure = "Eșec"
|
|
danger = "Pericol"
|
|
bug = "Bug"
|
|
example = "Exemplu"
|
|
quote = "Citat"
|
|
# === Admonition ===
|
|
|
|
# === Version ===
|
|
[version]
|
|
new = "NOU"
|
|
changed = "SCHIMBAT"
|
|
deleted = "ȘTERS"
|
|
deprecated = "DEPRECIAȚI"
|
|
# === Version ===
|
|
|
|
# === Diagram ===
|
|
[diagram]
|
|
zoomIn = "Mărește"
|
|
zoomOut = "Micșorează"
|
|
reset = "Resetează"
|
|
download = "Descarcă SVG"
|
|
# === Diagram ===
|
|
|
|
# === Tabs ===
|
|
[tabs]
|
|
diagram = "Diagramă"
|
|
code = "Cod"
|
|
# === Tabs ===
|