Files
FixIt/i18n/sr.toml
T
Cell a96ba665ac refactor(assets)!: rewrite content encryption with AES-256-GCM and PBKDF2 (#806)
* 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
2026-07-05 23:26:11 +08:00

265 lines
8.7 KiB
TOML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Translations for Serbian
# Превод на Српски
# https://gohugo.io/content-management/multilingual/#translation-of-strings
# === Init ===
[init]
hugoVersionError = "Верзија Hugo-а је прениска.\n\nТренутна верзија Hugo-а је {{ .Current }}, а минимална подржана верзија за FixIt је {{ .Minimal }}.\n\nАко покрећете Hugo на свом рачунару, погледајте https://gohugo.io/getting-started/installing/#upgrade-hugo за водич за надоградњу.\n\nАко постављате на платформу треће стране, конфигуришите верзију Hugo-а у складу с тим."
hugoExtendedWarn = "Верзија Hugo Extended је неопходна за подршку SCSS-а."
configurationError = "Грешка у конфигурацији\nНисте правилно конфигурисали параметар верзије FixIt. Погледајте https://fixit.lruihao.cn/documentation/basics/#theme-configuration"
compatibilityError = "Грешка у компатибилности ({{ .From }} -> {{ .To }}):\nИмате некомпатибилно ажурирање. Погледајте https://github.com/hugo-fixit/FixIt/releases"
devVersionWarn = "Користите развојну верзију FixIt. Размотрите коришћење стабилне верзије.\nПогледајте https://github.com/hugo-fixit/FixIt/releases"
devEnvWarn = "Тренутно окружење је \"развојно\". \"Систем коментара\", \"PWA\", \"CDN\", \"отисак прста\" и \"аналитика\" ће бити онемогућени."
quicklyUpgrade = "Брзо ажурирање користите команду: "
# === Init ===
# === Base Layout ===
[baseof]
backToTop = "Назад на Врх"
viewComments = "Погледај Коментаре"
noscript = "Овај сајт најбоље ради са омогућеним JavaScript-ом."
# === Base Layout ===
# === Taxonomy ===
[archives]
other = "Остало"
[allSome]
other = "Све {{ .Some }}"
[category]
other = "Категорија"
[categories]
other = "Категорије"
[collection]
other = "Collection"
[collections]
other = "Collections"
[tag]
other = "Таг"
[tags]
other = "Тагови"
[posts]
other = "Постови"
# === Taxonomy ===
# === Section ===
[section]
recentlyUpdated = "Недавно Ажурирано"
[section.totalWordCount]
one = "Једна реч"
other = "Укупно {{ .Count }} речи"
[section.archiveCounter]
one = "Само један чланак"
other = "{{ .Count }} чланака укупно"
# === Section ===
# === Pagination ===
[pagination]
more = "Више"
# === Pagination ===
# === Header ===
[header]
selectLanguage = "Изабери Језик"
noMoretTranslations = "Нема више превода"
switchTheme = "Промени Тему"
# === Header ===
# === Footer ===
[footer]
poweredBySome = "Покреће {{ .Hugo }} | Тема - {{ .Theme }}"
siteUV = "Укупно посетилаца"
sitePV = "Укупно посета"
siteRunning = "Website running ..."
# === Footer ===
# === Comment ===
[comment]
valinePlaceholder = "Ваш коментар ..."
# === Comment ===
# === Assets ===
[assets]
search = "Претрага"
searchPlaceholder = "Претражи наслове или садржај..."
searchIn = "Претражи у {{ . }}"
searchBy = "Претражи преко"
gotoResultsPage = "Иди на страницу резултата претраге ..."
clear = "Очисти"
cancel = "Поништи"
navigate = "Навигација"
select = "Изабери"
close = "Затвори"
refresh = "Освежи"
noResultsFound = "Резултати нису пронађени"
copyToClipboard = "Копирај на радну таблу"
copyText = "Копирај"
copiedText = "Копирано"
toggleLineNumbers = "Прекидач за бројеве линија"
toggleLineWrap = "Прекидач за оматање линија"
toggleCodeEditable = "Пребаци уређивање блока кода"
downloadCode = "Преузми код"
expandCode = "Прошири или смањи блок кода"
fullscreen = "Цео екран"
exitFullscreen = "Изађи из целог екрана"
cookieconsentMessage = "Ова веб локација користи Cookies да би побољшала ваше искуство."
cookieconsentDismiss = "Договорити се"
cookieconsentLink = "Сазнајте више"
# === Assets ===
# === Share ===
[shareOn]
other = "Подели на"
# === Share ===
# === Single Post ===
[single]
contents = "Садржаји"
pin = "Закачи"
repost = "Поново објави"
publishedOnDate = "објављено {{ .Date }}"
views = "прегледа"
comments = "коментари"
author = "Аутор"
updatedOnDate = "Ажурирано {{ .Date }}"
readMarkdown = "Читај Markdown"
viewSource = "Погледај извор"
editThisPage = "Уреди ову страницу"
reportIssue = "Пријави проблем"
openInEditor = "Отвори у уреднику"
back = "Назад"
home = "Почетна"
readMore = "Прочитај више"
expirationReminder = "Овај чланак је последњи пут ажуриран {{ .Date }}, садржај је можда застарео."
encryptedAbstract = "Овај чланак је шифрован."
encryptedMessage = "Унесите лозинку да бисте видели садржај."
password = "Паролица"
enterBtn = "Унеси"
encryptyAgain = "Поново шифруј"
encryptionWarning = "Детектовано је шифровање садржаја, али су и даље у обичном тексту!"
encryptionCommand = "Покрените `npx @hugo-fixit/post-encrypt` након изградње да бисте их заиста шифровали."
relatedContent = "Повезани садржај"
[single.includedIn]
categories = "укључено {{ .Categories }}"
collections = "укључено {{ .Collections }}"
both = "укључено {{ .Categories }} и {{ .Collections }}"
[single.wordCount]
one = "Једна реч"
other = "{{ .Count }} речи"
[single.fuzzyWordCount]
other = "Око {{ .Count }} речи"
[single.readingTime]
one = "Један минут"
other = "{{ .Count }} минута"
[single.reward]
donate = "Донирај"
wechatpay = "WeChat Pay"
alipay = "Alipay"
paypal = "PayPal"
bitcoin = "Bitcoin"
# === Single Post ===
# === Error Pages ===
[pageNotFound]
other = "Страница није пронађена"
[pageNotFoundText]
other = "Страница коју тражите не постоји. Жао нам је."
# === Error Pages ===
# === Offline ===
[offlineTitle]
other = "Оффлине"
[offlineText]
other = "Нисте повезани на Интернет, биће доступне само кеширане странице."
# === Offline ===
# === Service Worker ===
[serviceWorker]
updateTitle = "Ажурирање доступно"
updateText = "Нова верзија овог сајта је доступна."
# === Service Worker ===
# === Link Redirection ===
[linkRedirection]
title = "Обавештење о преусмеравању"
message = "Управо ћете напустити {{ .Title }}. Обратите пажњу на безбедност свог налога и имовине."
confirm = "Настави посету"
# === Link Redirection ===
# === Alert ===
[alert]
note = "Напомена"
tip = "Савет"
important = "Важно"
warning = "Упозорење"
caution = "Опрез"
# === Alert ===
# === Task List ===
[taskList]
x = "Проверено"
" " = "Непроверено"
"/" = "У току"
"-" = "Отказано"
"<" = "Планирано"
">" = "Преустановљено"
"!" = "Важно"
"!x" = "Важно Проверено"
"?" = "Питање"
# === Task List ===
# === Admonition ===
[admonition]
note = "Напомена"
abstract = "Сажетак"
info = "Инфо"
todo = "То-до"
tip = "Савет"
success = "Успех"
question = "Питање"
warning = "Упозорење"
failure = "Неуспех"
danger = "Опасност"
bug = "Грешка"
example = "Пример"
quote = "Цитат"
# === Admonition ===
# === Version ===
[version]
new = "НОВО"
changed = "ПРОМЕЊЕНО"
deleted = "ОБРИСАНО"
deprecated = "ЗАСТАРЕЛО"
# === Version ===
# === Diagram ===
[diagram]
zoomIn = "Увећај"
zoomOut = "Умањи"
reset = "Ресетуј"
download = "Преузми SVG"
# === Diagram ===
# === Tabs ===
[tabs]
diagram = "Дијаграм"
code = "Код"
# === Tabs ===